style(legacy): format (#2039)

This commit is contained in:
Jonas L 2022-08-10 13:38:19 +02:00 committed by GitHub
parent 7082c9693d
commit 1550d44ac5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
122 changed files with 18369 additions and 15819 deletions

View File

@ -32,7 +32,7 @@ repos:
hooks: hooks:
- id: prettier - id: prettier
files: \.(md|mdx|yml|yaml|js|jsx|ts|tsx|json|css)$ files: \.(md|mdx|yml|yaml|js|jsx|ts|tsx|json|css)$
exclude: ^legacy/public exclude: ^legacy/public(?!/js/airtime)
- repo: https://github.com/asottile/pyupgrade - repo: https://github.com/asottile/pyupgrade
rev: v2.34.0 rev: v2.34.0

View File

@ -21,7 +21,10 @@
$scs = $this->SourceConnectionStatus(); $scs = $this->SourceConnectionStatus();
?> ?>
<?php echo $this->partial('partialviews/header.phtml', array( <?php echo $this->partial('partialviews/header.phtml', array(
"live_dj_switch" => $sss['live_dj'], "live_dj_connection" => $scs['live_dj'], "master_dj_switch" => $sss['master_dj'], "master_dj_connection" => $scs['master_dj'], "live_dj_switch" => $sss['live_dj'],
"live_dj_connection" => $scs['live_dj'],
"master_dj_switch" => $sss['master_dj'],
"master_dj_connection" => $scs['master_dj'],
"scheduled_play_switch" => $sss['scheduled_play'] "scheduled_play_switch" => $sss['scheduled_play']
)) ?> )) ?>
<?php $partial = array('menu.phtml', 'default'); <?php $partial = array('menu.phtml', 'default');

View File

@ -1,28 +1,28 @@
<div id="jquery_jplayer_1" class="jp-jplayer"></div> <div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio"> <div id="jp_container_1" class="jp-audio">
<?php if (isset($this->playlistID)): ?> <?php if (isset($this->playlistID)) : ?>
<span class='playlistID'><?php echo "$this->playlistID" ?></span> <span class='playlistID'><?php echo "$this->playlistID" ?></span>
<span class='playlistIndex'><?php echo "$this->playlistIndex" ?></span> <span class='playlistIndex'><?php echo "$this->playlistIndex" ?></span>
<?php elseif (isset($this->blockId)): ?> <?php elseif (isset($this->blockId)) : ?>
<span class='blockId' style="display: none;"><?php echo "$this->blockId" ?></span> <span class='blockId' style="display: none;"><?php echo "$this->blockId" ?></span>
<span class='blockIndex' style="display: none;"><?php echo "$this->blockIndex" ?></span> <span class='blockIndex' style="display: none;"><?php echo "$this->blockIndex" ?></span>
<?php elseif (isset($this->uri)): ?> <?php elseif (isset($this->uri)) : ?>
<span class='audioUri' style="display: none;"><?php echo "$this->uri" ?></span> <span class='audioUri' style="display: none;"><?php echo "$this->uri" ?></span>
<span class='audioMime' style="display: none;"><?php echo "$this->mime" ?></span> <span class='audioMime' style="display: none;"><?php echo "$this->mime" ?></span>
<span class='audioFileTitle'><?php echo "$this->audioFileTitle" ?></span> <span class='audioFileTitle'><?php echo "$this->audioFileTitle" ?></span>
<span class='audioFileArtist'><?php echo "$this->audioFileArtist" ?></span> <span class='audioFileArtist'><?php echo "$this->audioFileArtist" ?></span>
<?php elseif (isset($this->showID)): ?> <?php elseif (isset($this->showID)) : ?>
<span class='showID'><?php echo "$this->showID" ?></span> <span class='showID'><?php echo "$this->showID" ?></span>
<span class='showIndex'><?php echo "$this->showIndex" ?></span> <span class='showIndex'><?php echo "$this->showIndex" ?></span>
<?php endif;?> <?php endif; ?>
<div class="jp-type-playlist"> <div class="jp-type-playlist">
<div class="jp-gui jp-interface"> <div class="jp-gui jp-interface">
<ul class="jp-controls"> <ul class="jp-controls">
<?php if ($this->type != "audioclip"): ?> <?php if ($this->type != "audioclip") : ?>
<li class="ui-state-default ui-corner-all jp-previous"> <li class="ui-state-default ui-corner-all jp-previous">
<span class="ui-icon ui-icon-seek-prev" tabindex="1"><?php echo _("previous") ?></span> <span class="ui-icon ui-icon-seek-prev" tabindex="1"><?php echo _("previous") ?></span>
</li> </li>
<?php endif;?> <?php endif; ?>
<li class="ui-state-default ui-corner-all jp-play"> <li class="ui-state-default ui-corner-all jp-play">
<span class="ui-icon ui-icon-play" tabindex="1"><?php echo _("play") ?></span> <span class="ui-icon ui-icon-play" tabindex="1"><?php echo _("play") ?></span>
@ -32,11 +32,11 @@
<span class="ui-icon ui-icon-pause" tabindex="1"><?php echo _("pause") ?></span> <span class="ui-icon ui-icon-pause" tabindex="1"><?php echo _("pause") ?></span>
</li> </li>
<?php if ($this->type != "audioclip"): ?> <?php if ($this->type != "audioclip") : ?>
<li class="ui-state-default ui-corner-all jp-next"> <li class="ui-state-default ui-corner-all jp-next">
<span class="ui-icon ui-icon-seek-next" tabindex="1"><?php echo _("next") ?></span> <span class="ui-icon ui-icon-seek-next" tabindex="1"><?php echo _("next") ?></span>
</li> </li>
<?php endif;?> <?php endif; ?>
<li class="ui-state-default ui-corner-all jp-stop"> <li class="ui-state-default ui-corner-all jp-stop">
<span class="ui-icon ui-icon-stop" tabindex="1"><?php echo _("stop") ?></span> <span class="ui-icon ui-icon-stop" tabindex="1"><?php echo _("stop") ?></span>
@ -50,9 +50,9 @@
</div> </div>
<div class="jp-time-holder"> <div class="jp-time-holder">
<div class="jp-current-time"></div> <div class="jp-current-time"></div>
<?php if ($this->type == "audioclip"): ?> <?php if ($this->type == "audioclip") : ?>
<div class="jp-duration"></div> <div class="jp-duration"></div>
<?php endif;?> <?php endif; ?>
</div> </div>
</div> </div>
<div class="jp-volume-block"> <div class="jp-volume-block">
@ -77,9 +77,11 @@
</div> </div>
<div class="jp-no-solution"> <div class="jp-no-solution">
<span><?php echo _("Update Required") ?></span> <span><?php echo _("Update Required") ?></span>
<?php sprintf(_("To play the media you will need to either update your browser to a recent version or update your %sFlash plugin%s."), <?php sprintf(
_("To play the media you will need to either update your browser to a recent version or update your %sFlash plugin%s."),
"<a href='http://get.adobe.com/flashplayer/' target='_blank'>", "<a href='http://get.adobe.com/flashplayer/' target='_blank'>",
"</a>") ?> "</a>"
) ?>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,28 +1,34 @@
<div class="text-content"> <div class="text-content">
<h2><?php echo _("About") ?></h2> <h2><?php echo _("About") ?></h2>
<p> <p>
<?php <?php
$productSiteAnchor = "<a href='" . PRODUCT_SITE_URL . "' target='_blank'>" $productSiteAnchor = "<a href='" . PRODUCT_SITE_URL . "' target='_blank'>"
. PRODUCT_NAME . PRODUCT_NAME
. "</a>"; . "</a>";
echo sprintf(_('%1$s %2$s, the open radio software for scheduling and remote station management.'), echo sprintf(
_('%1$s %2$s, the open radio software for scheduling and remote station management.'),
$productSiteAnchor, $productSiteAnchor,
$this->airtime_version) $this->airtime_version
?> )
<br /> ?>
<br />© <?php echo(gmdate('Y')); ?> <br />
<?php <br />© <?php echo (gmdate('Y')); ?>
$companySiteAnchor = "<a href='" . COMPANY_SITE_URL . "' target='_blank'>" <?php
$companySiteAnchor = "<a href='" . COMPANY_SITE_URL . "' target='_blank'>"
. COMPANY_NAME . " " . COMPANY_SUFFIX . COMPANY_NAME . " " . COMPANY_SUFFIX
. "</a>"; . "</a>";
$licenseAnchor = "<a href='" . LICENSE_URL . "' target='_blank'>" $licenseAnchor = "<a href='" . LICENSE_URL . "' target='_blank'>"
. LICENSE_VERSION . LICENSE_VERSION
. "</a>"; . "</a>";
echo sprintf(_('%1$s %2$s is distributed under the %3$s'), echo sprintf(
$companySiteAnchor, PRODUCT_NAME, $licenseAnchor) _('%1$s %2$s is distributed under the %3$s'),
?> $companySiteAnchor,
</p> PRODUCT_NAME,
$licenseAnchor
)
?>
</p>
</div> </div>
<br> <br>
<br> <br>

View File

@ -1,24 +1,32 @@
<div class="text-content"> <div class="text-content">
<h2><?php echo sprintf(_("Welcome to %s!"), PRODUCT_NAME) ?></h2> <h2><?php echo sprintf(_("Welcome to %s!"), PRODUCT_NAME) ?></h2>
<p><?php echo sprintf(_("Here's how you can get started using %s to automate your broadcasts: "), PRODUCT_NAME)?></p> <p><?php echo sprintf(_("Here's how you can get started using %s to automate your broadcasts: "), PRODUCT_NAME) ?></p>
<ol> <ol>
<li><h4><?php echo _("Upload audio tracks");?></h4> <li>
<?php echo _("Click the 'Upload' button in the left corner to upload tracks to your library.")?></li> <h4><?php echo _("Upload audio tracks"); ?></h4>
<li><h4><?php echo _("Schedule a show");?></h4> <?php echo _("Click the 'Upload' button in the left corner to upload tracks to your library.") ?>
<?php echo _("Click on 'Calendar' in the navigation bar on the left. From there click the '+ New Show' button and fill out the required fields.")?></li> </li>
<li><h4><?php echo _("Add tracks to your show"); ?></h4> <li>
<h4><?php echo _("Schedule a show"); ?></h4>
<?php echo _("Click on 'Calendar' in the navigation bar on the left. From there click the '+ New Show' button and fill out the required fields.") ?>
</li>
<li>
<h4><?php echo _("Add tracks to your show"); ?></h4>
<?php echo _("Click on your show in the calendar and select 'Schedule Show'. In the popup window drag tracks into your show."); ?> <?php echo _("Click on your show in the calendar and select 'Schedule Show'. In the popup window drag tracks into your show."); ?>
</li> </li>
</ol> </ol>
<p><strong><?php echo _("Now you're good to go!")?></strong><br /> <p><strong><?php echo _("Now you're good to go!") ?></strong><br />
<?php <?php
$userManualAnchorOpen = "<a href='" . USER_MANUAL_URL . "' target='_blank'>"; $userManualAnchorOpen = "<a href='" . USER_MANUAL_URL . "' target='_blank'>";
echo sprintf(_("For more detailed help, read the %suser manual%s."), echo sprintf(
$userManualAnchorOpen, "</a>") _("For more detailed help, read the %suser manual%s."),
$userManualAnchorOpen,
"</a>"
)
?> ?>
</p> </p>
</div> </div>

View File

@ -1,42 +1,42 @@
<div id="content" class="jp-container"> <div id="content" class="jp-container">
<h1><?php echo _("Live stream") ?></h1> <h1><?php echo _("Live stream") ?></h1>
<a id="popup-link" href="#"><?php echo _("Share") ?></a> <a id="popup-link" href="#"><?php echo _("Share") ?></a>
<?php $ids = Application_Model_StreamSetting::getEnabledStreamIds(); ?> <?php $ids = Application_Model_StreamSetting::getEnabledStreamIds(); ?>
<script> <script>
function setjPlayer(url, type, serverType){ function setjPlayer(url, type, serverType) {
var obj = new Object(); var obj = new Object();
obj[type] = url; obj[type] = url;
if(serverType == 'shoutcast'){ if (serverType == 'shoutcast') {
obj[type] = url + ";stream/1"; obj[type] = url + ";stream/1";
} }
$("#jquery_jplayer_1").jPlayer("destroy"); $("#jquery_jplayer_1").jPlayer("destroy");
$("#jquery_jplayer_1").jPlayer({ $("#jquery_jplayer_1").jPlayer({
ready: function () { ready: function() {
$(this).jPlayer("setMedia", obj).jPlayer("play"); $(this).jPlayer("setMedia", obj).jPlayer("play");
}, },
ended: function (event) { ended: function(event) {
$(this).jPlayer("play"); $(this).jPlayer("play");
}, },
swfPath: "/js/jplayer/", swfPath: "/js/jplayer/",
supplied: type, supplied: type,
wmode: "window" wmode: "window"
}); });
} }
$(document).ready(function(){ $(document).ready(function() {
$("#combo-box").change(function(eventObject){ $("#combo-box").change(function(eventObject) {
var elem = $("#combo-box option:selected"); var elem = $("#combo-box option:selected");
setjPlayer(elem.attr("data-url"), elem.attr("data-type"), elem.attr("server-type")); setjPlayer(elem.attr("data-url"), elem.attr("data-type"), elem.attr("server-type"));
}); });
<?php <?php
if (count($ids) > 0){ if (count($ids) > 0) {
$id = $ids[0]; $id = $ids[0];
$streamData = Application_Model_StreamSetting::getStreamData($id); $streamData = Application_Model_StreamSetting::getStreamData($id);
$url = "http://".$streamData["${id}_host"].":".$streamData["${id}_port"]."/".$streamData["${id}_mount"]; $url = "http://" . $streamData["${id}_host"] . ":" . $streamData["${id}_port"] . "/" . $streamData["${id}_mount"];
$type = $streamData["${id}_type"]; $type = $streamData["${id}_type"];
$serverType = $streamData["${id}_output"]; $serverType = $streamData["${id}_output"];
if ($type == "ogg") if ($type == "ogg")
@ -53,12 +53,12 @@ $(document).ready(function(){
$("#popup-close").click(function() { $("#popup-close").click(function() {
$("#popup-share").hide("slow"); $("#popup-share").hide("slow");
}); });
}); });
</script> </script>
<div class="jp-logo"><img id="logo-img" onload='resizeToMaxHeight(this, 40);' src="<?php echo $this->logo ?>" /></div> <div class="jp-logo"><img id="logo-img" onload='resizeToMaxHeight(this, 40);' src="<?php echo $this->logo ?>" /></div>
<div id="popup-share"> <div id="popup-share">
<a class="close-round" href="#" id="popup-close"></a> <a class="close-round" href="#" id="popup-close"></a>
<input id="popup-share-link" type="text" readonly="readonly"/> <input id="popup-share-link" type="text" readonly="readonly" />
</div> </div>
<div class="jp-stream stream-player-label"> <div class="jp-stream stream-player-label">
<div class="jp-stream-text"><?php echo _("Select stream:"); ?></div> <div class="jp-stream-text"><?php echo _("Select stream:"); ?></div>
@ -66,15 +66,15 @@ $(document).ready(function(){
<form id="form1" method="post" action=""> <form id="form1" method="post" action="">
<select id="combo-box"> <select id="combo-box">
<?php <?php
foreach($ids as $id) { foreach ($ids as $id) {
$streamData = Application_Model_StreamSetting::getStreamData($id); $streamData = Application_Model_StreamSetting::getStreamData($id);
$url = "http://".$streamData["${id}_host"].":".$streamData["${id}_port"]."/".$streamData["${id}_mount"]; $url = "http://" . $streamData["${id}_host"] . ":" . $streamData["${id}_port"] . "/" . $streamData["${id}_mount"];
$type = $streamData["${id}_type"]; $type = $streamData["${id}_type"];
$serverType = $streamData["${id}_output"]; $serverType = $streamData["${id}_output"];
if ($type == "ogg") if ($type == "ogg")
$type = "oga"; $type = "oga";
$label = "(".$streamData["${id}_host"].") ".$streamData["${id}_description"]." - ".$streamData["${id}_bitrate"]." kbit/s"; $label = "(" . $streamData["${id}_host"] . ") " . $streamData["${id}_description"] . " - " . $streamData["${id}_bitrate"] . " kbit/s";
echo sprintf("<option class='stream' value='%s' data-url='%s' data-type='%s' server-type='%s'>%s</option>", $id, $url, $type, $serverType, $label); echo sprintf("<option class='stream' value='%s' data-url='%s' data-type='%s' server-type='%s'>%s</option>", $id, $url, $type, $serverType, $label);
} }
?> ?>
@ -83,7 +83,7 @@ $(document).ready(function(){
</div> </div>
<div id="jquery_jplayer_1" class="jp-jplayer"></div> <div id="jquery_jplayer_1" class="jp-jplayer"></div>
<div id="jp_container_1" class="jp-audio"> <div id="jp_container_1" class="jp-audio">
<div class="jp-type-single"> <div class="jp-type-single">
<div id="jp_interface_1" class="jp-gui jp-interface"> <div id="jp_interface_1" class="jp-gui jp-interface">
<ul class="jp-controls"> <ul class="jp-controls">
@ -96,4 +96,4 @@ $(document).ready(function(){
</div> </div>
<div id="jp_playlist_1" class="jp-playlist"></div> <div id="jp_playlist_1" class="jp-playlist"></div>
</div> </div>
</div> </div>

View File

@ -2,11 +2,11 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<link rel="stylesheet" href="<?php echo $this->css?>" type="text/css"> <link rel="stylesheet" href="<?php echo $this->css ?>" type="text/css">
<script src="<?php echo $this->playerhtml5_js?>" type="text/javascript"></script> <script src="<?php echo $this->playerhtml5_js ?>" type="text/javascript"></script>
<script src="<?php echo $this->jquery?>" type="text/javascript"></script> <script src="<?php echo $this->jquery ?>" type="text/javascript"></script>
<script src="<?php echo $this->jquery_i18n?>" type="text/javascript"></script> <script src="<?php echo $this->jquery_i18n ?>" type="text/javascript"></script>
<script src="/locale/general-translation-table" type="text/javascript"></script> <script src="/locale/general-translation-table" type="text/javascript"></script>
<link href='https://fonts.googleapis.com/css?family=Roboto:400,100,300,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Roboto:400,100,300,700' rel='stylesheet' type='text/css'>
<script type="text/javascript"> <script type="text/javascript">
@ -15,7 +15,7 @@
var MAX_MOBILE_SCREEN_WIDTH = 760; var MAX_MOBILE_SCREEN_WIDTH = 760;
var Html5Player = function() { var Html5Player = function() {
var id_element=getRandomIdPlayer(3000); var id_element = getRandomIdPlayer(3000);
this.mobileDetect = this.mobileDetect(); this.mobileDetect = this.mobileDetect();
this.playerMode = "<?php echo $this->playerMode ?>"; this.playerMode = "<?php echo $this->playerMode ?>";
this.settings = { this.settings = {
@ -33,8 +33,8 @@
this.settings.url = <?php echo $this->streamURL ?>; this.settings.url = <?php echo $this->streamURL ?>;
this.settings.codec = "<?php echo $this->codec ?>"; this.settings.codec = "<?php echo $this->codec ?>";
} else if (this.playerMode == "auto") { } else if (this.playerMode == "auto") {
this.availableMobileStreamQueue = <?php echo $this->availableMobileStreams?>; this.availableMobileStreamQueue = <?php echo $this->availableMobileStreams ?>;
this.availableDesktopStreamQueue = <?php echo $this->availableDesktopStreams?>; this.availableDesktopStreamQueue = <?php echo $this->availableDesktopStreams ?>;
var stream = this.getNextAvailableStream(); var stream = this.getNextAvailableStream();
this.settings.url = stream["url"]; this.settings.url = stream["url"];
this.settings.codec = stream["codec"]; this.settings.codec = stream["codec"];
@ -43,10 +43,10 @@
// Create the Muses player object // Create the Muses player object
playerhtml5_insert(this.settings); playerhtml5_insert(this.settings);
playerhtml5_audio = document.getElementById(id_element); playerhtml5_audio = document.getElementById(id_element);
if(playerhtml5_audio.played==true) togglePlayStopButton(); if (playerhtml5_audio.played == true) togglePlayStopButton();
// Configure player title // Configure player title
var player_title = <?php echo $this->player_title?>; var player_title = <?php echo $this->player_title ?>;
if (player_title === null) { if (player_title === null) {
$(".airtime_header").hide(); $(".airtime_header").hide();
$(".airtime_player").css('height', '150px'); $(".airtime_player").css('height', '150px');
@ -119,13 +119,14 @@
playerhtml5_audio.pause(); playerhtml5_audio.pause();
togglePlayStopButton(); togglePlayStopButton();
}; };
function togglePlayStopButton() { function togglePlayStopButton() {
document.getElementById("play_button").classList.toggle("hide_button"); document.getElementById("play_button").classList.toggle("hide_button");
document.getElementById("stop_button").classList.toggle("hide_button"); document.getElementById("stop_button").classList.toggle("hide_button");
} }
$(document).ready(function() { $(document).ready(function() {
$(".play").click(function () { $(".play").click(function() {
if ($(this).hasClass("pause")) { if ($(this).hasClass("pause")) {
html5Player.stop(); html5Player.stop();
} else { } else {
@ -144,9 +145,13 @@
// and attaches it to the player UI. // and attaches it to the player UI.
// //
// The metadata is fetched when the current track is about to end. // The metadata is fetched when the current track is about to end.
function attachStreamMetadataToPlayer(){ function attachStreamMetadataToPlayer() {
$.ajax({url: "<?php echo $this->metadata_api_url?>", $.ajax({
data: {type:"interval",limit:"5"}, url: "<?php echo $this->metadata_api_url ?>",
data: {
type: "interval",
limit: "5"
},
dataType: "jsonp", dataType: "jsonp",
success: function(data) { success: function(data) {
@ -155,7 +160,7 @@
//Master/show source have no current track but they do have a current show. //Master/show source have no current track but they do have a current show.
$("p.now_playing").html($.i18n._("On Air") + "<span>" + data.currentShow[0].name + "</span>"); $("p.now_playing").html($.i18n._("On Air") + "<span>" + data.currentShow[0].name + "</span>");
} else { } else {
$("p.now_playing").html($.i18n._("Off Air") + "<span>"+ $.i18n._("Offline") + "</span>"); $("p.now_playing").html($.i18n._("Off Air") + "<span>" + $.i18n._("Offline") + "</span>");
} }
time_to_next_track_starts = 20000; time_to_next_track_starts = 20000;
} else { } else {
@ -197,12 +202,10 @@
} }
// Add 3 seconds to the timeout so Airtime has time to update the metadata before we fetch it // Add 3 seconds to the timeout so Airtime has time to update the metadata before we fetch it
metadataTimer = setTimeout(attachStreamMetadataToPlayer, time_to_next_track_starts+3000); metadataTimer = setTimeout(attachStreamMetadataToPlayer, time_to_next_track_starts + 3000);
} }
</script> </script>
<style type="text/css"> <style type="text/css">
@ -212,14 +215,19 @@
not work. It has to be "visible" on the page. As a hacky work around we not work. It has to be "visible" on the page. As a hacky work around we
set the height and width to 1px so users will not see it. set the height and width to 1px so users will not see it.
*/ */
#html5player_skin{width:0; height:0; overflow: hidden;} #html5player_skin {
width: 0;
height: 0;
overflow: hidden;
}
</style> </style>
</head> </head>
<body> <body>
<div id="player" <?php if ($this->player_style == "basic") echo "style='display:block;'"; else echo "style='display:none'"; ?>> <div id="player" <?php if ($this->player_style == "basic") echo "style='display:block;'";
else echo "style='display:none'"; ?>>
<div class="airtime_player"> <div class="airtime_player">
<div class="airtime_header"> <div class="airtime_header">
@ -247,9 +255,10 @@
<a class="airtime_pro" target="_blank" href="<?php echo PRODUCT_SITE_URL; ?>"><?php printf(_('Powered by %s'), PRODUCT_NAME); ?></a> <a class="airtime_pro" target="_blank" href="<?php echo PRODUCT_SITE_URL; ?>"><?php printf(_('Powered by %s'), PRODUCT_NAME); ?></a>
</div> </div>
</div> </div>
<div id="premium_player" <?php if ($this->player_style == "premium") echo "style='display:block;'"; else echo "style='display:none'"; ?>> <div id="premium_player" <?php if ($this->player_style == "premium") echo "style='display:block;'";
else echo "style='display:none'"; ?>>
<div class="bottom_bar"> <div class="bottom_bar">
<div class="play cont_btn"></div> <div class="play cont_btn"></div>
@ -258,13 +267,14 @@
</div> </div>
</div> </div>
</div> </div>
<div id="html5player_skin"> <div id="html5player_skin">
<script type="text/javascript"> <script type="text/javascript">
var html5Player = new Html5Player(); var html5Player = new Html5Player();
</script> </script>
</div> </div>
</body> </body>
</html> </html>

View File

@ -2,14 +2,14 @@
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<link rel="stylesheet" href="<?php echo $this->css?>" type="text/css"> <link rel="stylesheet" href="<?php echo $this->css ?>" type="text/css">
<script src="<?php echo $this->jquery ?>" type="text/javascript"></script> <script src="<?php echo $this->jquery ?>" type="text/javascript"></script>
<link href='https://fonts.googleapis.com/css?family=Roboto:400,100,300,700' rel='stylesheet' type='text/css'> <link href='https://fonts.googleapis.com/css?family=Roboto:400,100,300,700' rel='stylesheet' type='text/css'>
<script src="/js/libs/handlebars.min.js"></script> <script src="/js/libs/handlebars.min.js"></script>
</head> </head>
<body> <body>
<div id="wpBody" class="schedule tab_content current"> <div id="wpBody" class="schedule tab_content current">
<script id="wpWidget" type="text/x-handlebars-template"> <script id="wpWidget" type="text/x-handlebars-template">
<ul class="tabs"> <ul class="tabs">
{{#each this}} {{#each this}}
@ -40,9 +40,9 @@
<a href="<?php echo PRODUCT_SITE_URL; ?>" target="_blank"><?php printf(_('Powered by %s'), PRODUCT_NAME); ?></a> <a href="<?php echo PRODUCT_SITE_URL; ?>" target="_blank"><?php printf(_('Powered by %s'), PRODUCT_NAME); ?></a>
</div> </div>
</script> </script>
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
let importSchedule = <?php echo $this->schedule_data; ?>; // Object prepared in JSON, w/o API call let importSchedule = <?php echo $this->schedule_data; ?>; // Object prepared in JSON, w/o API call
let cleanSchedule = []; let cleanSchedule = [];
@ -50,16 +50,21 @@
let importShows = importSchedule["shows"]; let importShows = importSchedule["shows"];
importShows.forEach(element => { importShows.forEach(element => {
// Convert timestamps to JS (sec -> millisec) // Convert timestamps to JS (sec -> millisec)
var start_date = new Date(element.starts_timestamp*1000); var start_date = new Date(element.starts_timestamp * 1000);
var end_date = new Date(element.ends_timestamp*1000); var end_date = new Date(element.ends_timestamp * 1000);
// Check date of show so we know where to assign it to // Check date of show so we know where to assign it to
var format_start_date = start_date.getFullYear() + "-" + (start_date.getMonth()+1) + "-" + start_date.getDate(); var format_start_date = start_date.getFullYear() + "-" + (start_date.getMonth() + 1) + "-" + start_date.getDate();
// Assign show to correct location // Assign show to correct location
if (importSchedule["weekDays"][format_start_date] !== undefined) { if (importSchedule["weekDays"][format_start_date] !== undefined) {
importSchedule["weekDays"][format_start_date]["shows"].push( importSchedule["weekDays"][format_start_date]["shows"].push({
{ "show_start_hour": start_date.toLocaleTimeString([], {
"show_start_hour": start_date.toLocaleTimeString([], { hour: 'numeric', minute : 'numeric' }), hour: 'numeric',
"show_end_hour": end_date.toLocaleTimeString([], { hour: 'numeric', minute : 'numeric' }), minute: 'numeric'
}),
"show_end_hour": end_date.toLocaleTimeString([], {
hour: 'numeric',
minute: 'numeric'
}),
"name": element.name "name": element.name
}); });
} }
@ -71,7 +76,7 @@
} }
// Checker // Checker
Handlebars.registerHelper('noShowsCheck', function(obj){ Handlebars.registerHelper('noShowsCheck', function(obj) {
return obj.length == 0; return obj.length == 0;
}); });
@ -87,18 +92,18 @@
$('.tabs').find("li").first().addClass("active"); $('.tabs').find("li").first().addClass("active");
$('.schedule_content').find('.schedule_item').first().addClass("active"); $('.schedule_content').find('.schedule_item').first().addClass("active");
$('.tabs li').click(function(){ $('.tabs li').click(function() {
//var tab_id = $(this).attr('data-tab'); //var tab_id = $(this).attr('data-tab');
var tab_id = "day-"+$(this).find('span').text(); var tab_id = "day-" + $(this).find('span').text();
$('.tabs li').removeClass('active'); $('.tabs li').removeClass('active');
$('.schedule_item').removeClass('active'); $('.schedule_item').removeClass('active');
$(this).addClass('active'); $(this).addClass('active');
$("#"+tab_id).addClass('active'); $("#" + tab_id).addClass('active');
}); });
}); });
</script>
</script>
</body> </body>
</html> </html>

View File

@ -1,17 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title> <title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?> <?php echo $this->headLink(); ?>
</head> </head>
<body> <body>
<div class="error-content" id="error-400"> <div class="error-content" id="error-400">
<h2><?php echo _("Bad Request!")?></h2> <h2><?php echo _("Bad Request!") ?></h2>
<p><?php echo _("The requested action is not supported!")?></p> <p><?php echo _("The requested action is not supported!") ?></p>
<div class="button-bar"> <div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a> <a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,17 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title> <title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?> <?php echo $this->headLink(); ?>
</head> </head>
<body> <body>
<div class="error-content" id="error-403"> <div class="error-content" id="error-403">
<h2><?php echo _("Access Denied!")?></h2> <h2><?php echo _("Access Denied!") ?></h2>
<p><?php echo _("You do not have permission to access this page!")?></p> <p><?php echo _("You do not have permission to access this page!") ?></p>
<div class="button-bar"> <div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a> <a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,17 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title> <title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?> <?php echo $this->headLink(); ?>
</head> </head>
<body> <body>
<div class="error-content" id="error-404"> <div class="error-content" id="error-404">
<h2><?php echo _("Page not found!")?></h2> <h2><?php echo _("Page not found!") ?></h2>
<p><?php echo _("We couldn't find the page you were looking for.")?></p> <p><?php echo _("We couldn't find the page you were looking for.") ?></p>
<div class="button-bar"> <div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a> <a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,17 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"> <html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title> <title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?> <?php echo $this->headLink(); ?>
</head> </head>
<body> <body>
<div class="error-content" id="error-500"> <div class="error-content" id="error-500">
<h2><?php echo _("Oops!")?></h2> <h2><?php echo _("Oops!") ?></h2>
<p><?php echo _("Something went wrong!")?></p> <p><?php echo _("Something went wrong!") ?></p>
<div class="button-bar"> <div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a> <a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -1,18 +1,20 @@
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"; <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" ; "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd>
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd> <html xmlns=" http://www.w3.org/1999/xhtml">
<html xmlns="http://www.w3.org/1999/xhtml">
<head> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title> <title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?> <?php echo $this->headLink(); ?>
</head> </head>
<body> <body>
<div class="error-content"> <div class="error-content">
<h2><?php echo $this->escape($this->message)?></h2> <h2><?php echo $this->escape($this->message) ?></h2>
<p><?php echo _("Looks like the page you were looking for doesn't exist!")?></p> <p><?php echo _("Looks like the page you were looking for doesn't exist!") ?></p>
<div class="button-bar"> <div class="button-bar">
<a class="toggle-button" href="<?php echo $this->baseUrl('dashboard/help'); ?>"><?php echo _("Help") ?></a> <a class="toggle-button" href="<?php echo $this->baseUrl('dashboard/help'); ?>"><?php echo _("Help") ?></a>
</div> </div>
</div> </div>
</body> </body>
</html> </html>

View File

@ -2,7 +2,7 @@
<dl> <dl>
<dt id="add_show_has_autoplaylist_label"> <dt id="add_show_has_autoplaylist_label">
<label for="add_show_has_autoplaylist_label"> <label for="add_show_has_autoplaylist_label">
<?php echo $this->element->getElement('add_show_has_autoplaylist')->getLabel()?> <?php echo $this->element->getElement('add_show_has_autoplaylist')->getLabel() ?>
</label> </label>
</dt> </dt>
<dd> <dd>
@ -14,7 +14,7 @@
<p><?php echo _("Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/docs/playlists'>More information</a>"); ?></p> <p><?php echo _("Autoloading playlists' contents are added to shows one hour before the show airs. <a target='_blank' href='http://libretime.org/docs/playlists'>More information</a>"); ?></p>
<dt id="add_show_autoplaylist_id"> <dt id="add_show_autoplaylist_id">
<label for="add_show_autoplaylist_id" class="required"> <label for="add_show_autoplaylist_id" class="required">
<?php echo $this->element->getElement('add_show_autoplaylist_id')->getLabel()?> <?php echo $this->element->getElement('add_show_autoplaylist_id')->getLabel() ?>
</label> </label>
</dt> </dt>
<dd> <dd>
@ -23,7 +23,7 @@
<div id="add_show_autoplaylist_repeat"> <div id="add_show_autoplaylist_repeat">
<dt id="add_show_autoplaylist_repeat_label"> <dt id="add_show_autoplaylist_repeat_label">
<label for="add_show_autoplaylist_repeat_label"> <label for="add_show_autoplaylist_repeat_label">
<?php echo $this->element->getElement('add_show_autoplaylist_repeat')->getLabel()?> <?php echo $this->element->getElement('add_show_autoplaylist_repeat')->getLabel() ?>
</label> </label>
</dt> </dt>
<dd> <dd>

View File

@ -1,6 +1,8 @@
<dt id="<?php echo $this->element->getName() ?>-label" class="<?php echo $this->class ?>"> <dt id="<?php echo $this->element->getName() ?>-label" class="<?php echo $this->class ?>">
<?php echo $this->formLabel($this->element->getName(), <?php echo $this->formLabel(
$this->element->getLabel()) ?> $this->element->getName(),
$this->element->getLabel()
) ?>
</dt> </dt>
<dd id="<?php echo $this->element->getName() ?>-element" class="<?php echo $this->class ?>"> <dd id="<?php echo $this->element->getName() ?>-element" class="<?php echo $this->class ?>">
<?php echo $this->{$this->element->helper}( <?php echo $this->{$this->element->helper}(
@ -8,7 +10,7 @@
$this->element->getValue(), $this->element->getValue(),
$this->element->getAttribs() $this->element->getAttribs()
) ?> ) ?>
<?php if($this->element->hasErrors()) { <?php if ($this->element->hasErrors()) {
echo $this->formErrors($this->element->getMessages()); echo $this->formErrors($this->element->getMessages());
} }
?> ?>

View File

@ -5,29 +5,33 @@
</dt> </dt>
<dd id="add_show_rebroadcast_day-element" class="block-display clearfix"> <dd id="add_show_rebroadcast_day-element" class="block-display clearfix">
<ul class="formrow-repeat"> <ul class="formrow-repeat">
<?php for($i=1; $i<=10; $i++): ?> <?php for ($i = 1; $i <= 10; $i++) : ?>
<li <?php if(($i > 1) <li <?php if (($i > 1)
&& ($this->element->getElement('add_show_rebroadcast_date_absolute_'.$i)->getValue() == "" && ($this->element->getElement('add_show_rebroadcast_date_absolute_' . $i)->getValue() == ""
&& $this->element->getElement('add_show_rebroadcast_time_absolute_'.$i)->getValue() == "")){echo 'style=display:none';} ?>> && $this->element->getElement('add_show_rebroadcast_time_absolute_' . $i)->getValue() == "")
<?php echo $this->element->getElement('add_show_rebroadcast_date_absolute_'.$i) ?> ) {
echo 'style=display:none';
} ?>>
<?php echo $this->element->getElement('add_show_rebroadcast_date_absolute_' . $i) ?>
<span class="inline-text">@</span> <span class="inline-text">@</span>
<?php echo $this->element->getElement('add_show_rebroadcast_time_absolute_'.$i) ?> <?php echo $this->element->getElement('add_show_rebroadcast_time_absolute_' . $i) ?>
<?php if($i > 1): ?> <?php if ($i > 1) : ?>
<a class="ui-button ui-button-icon-only ui-widget ui-state-default" id="remove_rebroadcast_absolute_<?php echo $i ?>"> <a class="ui-button ui-button-icon-only ui-widget ui-state-default" id="remove_rebroadcast_absolute_<?php echo $i ?>">
<span class="ui-icon ui-icon-closethick"></span> <span class="ui-icon ui-icon-closethick"></span>
<span class="ui-button-text"><?php echo _("Remove") ?></span> <span class="ui-button-text"><?php echo _("Remove") ?></span>
</a> </a>
<?php endif; ?> <?php endif; ?>
<?php if(($this->element->getElement('add_show_rebroadcast_date_absolute_'.$i)->hasErrors()) <?php if (($this->element->getElement('add_show_rebroadcast_date_absolute_' . $i)->hasErrors())
|| ($this->element->getElement('add_show_rebroadcast_time_absolute_'.$i)->hasErrors())) : ?> || ($this->element->getElement('add_show_rebroadcast_time_absolute_' . $i)->hasErrors())
) : ?>
<ul class='errors'> <ul class='errors'>
<?php $errors = array_merge( <?php $errors = array_merge(
$this->element->getElement('add_show_rebroadcast_date_absolute_'.$i)->getMessages(), $this->element->getElement('add_show_rebroadcast_date_absolute_' . $i)->getMessages(),
$this->element->getElement('add_show_rebroadcast_time_absolute_'.$i)->getMessages() $this->element->getElement('add_show_rebroadcast_time_absolute_' . $i)->getMessages()
); );
?> ?>
<?php foreach($errors as $error): ?> <?php foreach ($errors as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>

View File

@ -5,29 +5,33 @@
</dt> </dt>
<dd id="add_show_rebroadcast_repeat_day-element" class="block-display clearfix"> <dd id="add_show_rebroadcast_repeat_day-element" class="block-display clearfix">
<ul class="formrow-repeat"> <ul class="formrow-repeat">
<?php for($i=1; $i<=10; $i++): ?> <?php for ($i = 1; $i <= 10; $i++) : ?>
<li <?php if(($i > 1) <li <?php if (($i > 1)
&& ($this->element->getElement('add_show_rebroadcast_date_'.$i)->getValue() == "" && ($this->element->getElement('add_show_rebroadcast_date_' . $i)->getValue() == ""
&& $this->element->getElement('add_show_rebroadcast_time_'.$i)->getValue() == "")){echo 'style=display:none';} ?>> && $this->element->getElement('add_show_rebroadcast_time_' . $i)->getValue() == "")
<?php echo $this->element->getElement('add_show_rebroadcast_date_'.$i) ?> ) {
echo 'style=display:none';
} ?>>
<?php echo $this->element->getElement('add_show_rebroadcast_date_' . $i) ?>
<span class="inline-text">@</span> <span class="inline-text">@</span>
<?php echo $this->element->getElement('add_show_rebroadcast_time_'.$i) ?> <?php echo $this->element->getElement('add_show_rebroadcast_time_' . $i) ?>
<?php if($i > 1): ?> <?php if ($i > 1) : ?>
<a class="ui-button ui-button-icon-only ui-widget ui-state-default" id="remove_rebroadcast_<?php echo $i ?>"> <a class="ui-button ui-button-icon-only ui-widget ui-state-default" id="remove_rebroadcast_<?php echo $i ?>">
<span class="ui-icon ui-icon-closethick"></span> <span class="ui-icon ui-icon-closethick"></span>
<span class="ui-button-text"><?php echo _("Remove") ?></span> <span class="ui-button-text"><?php echo _("Remove") ?></span>
</a> </a>
<?php endif; ?> <?php endif; ?>
<?php if(($this->element->getElement('add_show_rebroadcast_date_'.$i)->hasErrors()) <?php if (($this->element->getElement('add_show_rebroadcast_date_' . $i)->hasErrors())
|| ($this->element->getElement('add_show_rebroadcast_time_'.$i)->hasErrors())) : ?> || ($this->element->getElement('add_show_rebroadcast_time_' . $i)->hasErrors())
) : ?>
<ul class='errors'> <ul class='errors'>
<?php $errors = array_merge( <?php $errors = array_merge(
$this->element->getElement('add_show_rebroadcast_date_'.$i)->getMessages(), $this->element->getElement('add_show_rebroadcast_date_' . $i)->getMessages(),
$this->element->getElement('add_show_rebroadcast_time_'.$i)->getMessages() $this->element->getElement('add_show_rebroadcast_time_' . $i)->getMessages()
); );
?> ?>
<?php foreach($errors as $error): ?> <?php foreach ($errors as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>

View File

@ -1,6 +1,8 @@
<dt id="<?php echo $this->element->getName() ?>-label" class="<?php echo $this->class ?>"> <dt id="<?php echo $this->element->getName() ?>-label" class="<?php echo $this->class ?>">
<?php echo $this->formLabel($this->element->getName(), <?php echo $this->formLabel(
$this->element->getLabel()) ?> $this->element->getName(),
$this->element->getLabel()
) ?>
</dt> </dt>
<dd id="<?php echo $this->element->getName() ?>-element"> <dd id="<?php echo $this->element->getName() ?>-element">
<?php echo $this->{$this->element->helper}( <?php echo $this->{$this->element->helper}(
@ -9,5 +11,7 @@
$this->element->getAttribs() $this->element->getAttribs()
) ?> ) ?>
<?php if($this->element->hasErrors()) { echo $this->formErrors($this->element->getMessages());} ?> <?php if ($this->element->hasErrors()) {
echo $this->formErrors($this->element->getMessages());
} ?>
</dd> </dd>

View File

@ -2,7 +2,7 @@
<dl> <dl>
<dt id="add_show_start_now-label"> <dt id="add_show_start_now-label">
<label for="add_show_start_now"> <label for="add_show_start_now">
<?php echo $this->element->getElement('add_show_start_now')->getLabel()?> <?php echo $this->element->getElement('add_show_start_now')->getLabel() ?>
</label> </label>
</dt> </dt>
<dd> <dd>
@ -12,19 +12,20 @@
<dt id="add_show_start_date-label"> <dt id="add_show_start_date-label">
<label for="add_show_start_date" class="required"> <label for="add_show_start_date" class="required">
<?php //echo $this->element->getElement('add_show_start_date')->getLabel()?> <?php //echo $this->element->getElement('add_show_start_date')->getLabel()
?>
</label> </label>
</dt> </dt>
<dd> <dd>
<?php echo $this->element->getElement('add_show_start_date') ?> <?php echo $this->element->getElement('add_show_start_date') ?>
<?php echo $this->element->getElement('add_show_start_time') ?> <?php echo $this->element->getElement('add_show_start_time') ?>
</dd> </dd>
<?php if($this->element->getElement('add_show_start_date')->hasErrors() || $this->element->getElement('add_show_start_time')->hasErrors()){ ?> <?php if ($this->element->getElement('add_show_start_date')->hasErrors() || $this->element->getElement('add_show_start_time')->hasErrors()) { ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('add_show_start_date')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('add_show_start_date')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
<?php foreach($this->element->getElement('add_show_start_time')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('add_show_start_time')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -34,7 +35,7 @@
<dt id="add_show_end_date_no_repeat-label"> <dt id="add_show_end_date_no_repeat-label">
<label for="add_show_end_date_no_repeat" class="required"> <label for="add_show_end_date_no_repeat" class="required">
<?php echo $this->element->getElement('add_show_end_date_no_repeat')->getLabel()?> <?php echo $this->element->getElement('add_show_end_date_no_repeat')->getLabel() ?>
</label> </label>
</dt> </dt>
@ -42,12 +43,12 @@
<?php echo $this->element->getElement('add_show_end_date_no_repeat') ?> <?php echo $this->element->getElement('add_show_end_date_no_repeat') ?>
<?php echo $this->element->getElement('add_show_end_time') ?> <?php echo $this->element->getElement('add_show_end_time') ?>
</dd> </dd>
<?php if($this->element->getElement('add_show_end_date_no_repeat')->hasErrors() || $this->element->getElement('add_show_end_time')->hasErrors()){ ?> <?php if ($this->element->getElement('add_show_end_date_no_repeat')->hasErrors() || $this->element->getElement('add_show_end_time')->hasErrors()) { ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('add_show_end_date_no_repeat')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('add_show_end_date_no_repeat')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
<?php foreach($this->element->getElement('add_show_end_time')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('add_show_end_time')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -59,11 +60,11 @@
</dt> </dt>
<dd id="add_show_duration-element"> <dd id="add_show_duration-element">
<?php echo $this->element->getElement('add_show_duration') ?> <?php echo $this->element->getElement('add_show_duration') ?>
<img id="icon-loader-small"/> <img id="icon-loader-small" />
</dd> </dd>
<?php if($this->element->getElement('add_show_duration')->hasErrors()){ ?> <?php if ($this->element->getElement('add_show_duration')->hasErrors()) { ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('add_show_duration')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('add_show_duration')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>

View File

@ -3,7 +3,7 @@
<?php echo $this->element->getElement('his_time_start') ?> <?php echo $this->element->getElement('his_time_start') ?>
<?php echo $this->element->getElement('his_date_end') ?> <?php echo $this->element->getElement('his_date_end') ?>
<?php echo $this->element->getElement('his_time_end') ?> <?php echo $this->element->getElement('his_time_end') ?>
<div id="his_submit" class=" btn btn-small" title="<?php echo _("Filter History")?>"> <div id="his_submit" class=" btn btn-small" title="<?php echo _("Filter History") ?>">
<i class="icon-white icon-search"></i><span><?php echo _("Filter History")?></span> <i class="icon-white icon-search"></i><span><?php echo _("Filter History") ?></span>
</div> </div>
</div> </div>

View File

@ -1,37 +1,37 @@
<form> <form>
<?php $form = $this->element ?> <?php $form = $this->element ?>
<dl class="zend_form"> <dl class="zend_form">
<?php $name = "his_file_id"; ?> <?php $name = "his_file_id"; ?>
<dd id="<?php echo $name;?>-element"> <dd id="<?php echo $name; ?>-element">
<?php echo $form->getElement($name); ?> <?php echo $form->getElement($name); ?>
</dd> </dd>
<?php foreach ($form->getSubForm('his_file_template') as $index=>$el): ?> <?php foreach ($form->getSubForm('his_file_template') as $index => $el) : ?>
<?php $name = $el->getName(); ?> <?php $name = $el->getName(); ?>
<dt id="<?php echo $name;?>-label"> <dt id="<?php echo $name; ?>-label">
<label for="<?php echo $name;?>"><?php echo $el->getLabel() ?></label> <label for="<?php echo $name; ?>"><?php echo $el->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $name;?>-element"> <dd id="<?php echo $name; ?>-element">
<?php echo $el ?> <?php echo $el ?>
<?php if ($el->hasErrors()): ?> <?php if ($el->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($el->getMessages() as $error): ?> <?php foreach ($el->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<?php endforeach; ?> <?php endforeach; ?>
<dd id="submitButtons-element"> <dd id="submitButtons-element">
<?php foreach (array("his_file_save", "his_file_cancel") as $name): ?> <?php foreach (array("his_file_save", "his_file_cancel") as $name) : ?>
<?php echo $form->getElement($name); ?> <?php echo $form->getElement($name); ?>
<?php endforeach;?> <?php endforeach; ?>
</dd> </dd>
</dl> </dl>
</form> </form>

View File

@ -1,29 +1,29 @@
<form> <form>
<?php $form = $this->element ?> <?php $form = $this->element ?>
<dl class="zend_form"> <dl class="zend_form">
<?php $formErrors = $form->getErrorMessages() ?> <?php $formErrors = $form->getErrorMessages() ?>
<?php if (count($formErrors) > 0) : ?> <?php if (count($formErrors) > 0) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach ($formErrors as $error): ?> <?php foreach ($formErrors as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
<?php $name = "his_item_id"; ?> <?php $name = "his_item_id"; ?>
<dd id="<?php echo $name;?>-element"> <dd id="<?php echo $name; ?>-element">
<?php echo $form->getElement($name); ?> <?php echo $form->getElement($name); ?>
</dd> </dd>
<?php foreach (array("his_item_starts", "his_item_ends") as $name): ?> <?php foreach (array("his_item_starts", "his_item_ends") as $name) : ?>
<dt id="<?php echo $name;?>-label"> <dt id="<?php echo $name; ?>-label">
<label for="<?php echo $name;?>"><?php echo $form->getElement($name)->getLabel() ?></label> <label for="<?php echo $name; ?>"><?php echo $form->getElement($name)->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $name;?>-element"> <dd id="<?php echo $name; ?>-element">
<div class="well"> <div class="well">
<div id="<?php echo $name;?>_datetimepicker" class="input-append date"> <div id="<?php echo $name; ?>_datetimepicker" class="input-append date">
<?php echo $form->getElement($name) ?> <?php echo $form->getElement($name) ?>
<span class="add-on"> <span class="add-on">
<i data-time-icon="icon-time" data-date-icon="icon-calendar"></i> <i data-time-icon="icon-time" data-date-icon="icon-calendar"></i>
@ -32,23 +32,23 @@
</div> </div>
<?php if ($form->getElement($name)->hasErrors()) : ?> <?php if ($form->getElement($name)->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach ($form->getElement($name)->getMessages() as $error): ?> <?php foreach ($form->getElement($name)->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<?php endforeach;?> <?php endforeach; ?>
<dd id="his_choose_instance"> <dd id="his_choose_instance">
<div> <div>
<label for="<?php echo $name;?>"><?php echo _("Choose Show Instance") ?></label> <label for="<?php echo $name; ?>"><?php echo _("Choose Show Instance") ?></label>
</div> </div>
<div> <div>
<?php $select = $form->getElement("his_instance_select"); ?> <?php $select = $form->getElement("his_instance_select"); ?>
<?php if (isset($select)): ?> <?php if (isset($select)) : ?>
<?php echo $select; ?> <?php echo $select; ?>
<?php else: ?> <?php else : ?>
<select id="his_instance_select"> <select id="his_instance_select">
<option value="0"><?php echo _("No Show") ?></option> <option value="0"><?php echo _("No Show") ?></option>
</select> </select>
@ -57,30 +57,30 @@
</div> </div>
</dd> </dd>
<?php foreach ($form->getSubForm('his_item_template') as $index=>$el): ?> <?php foreach ($form->getSubForm('his_item_template') as $index => $el) : ?>
<?php $name = $el->getName(); ?> <?php $name = $el->getName(); ?>
<dt id="<?php echo $name;?>-label"> <dt id="<?php echo $name; ?>-label">
<label for="<?php echo $name;?>"><?php echo $el->getLabel() ?></label> <label for="<?php echo $name; ?>"><?php echo $el->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $name;?>-element"> <dd id="<?php echo $name; ?>-element">
<?php echo $el ?> <?php echo $el ?>
<?php if ($el->hasErrors()): ?> <?php if ($el->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($el->getMessages() as $error): ?> <?php foreach ($el->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<?php endforeach; ?> <?php endforeach; ?>
<dd id="submitButtons-element"> <dd id="submitButtons-element">
<?php foreach (array("his_item_save", "his_item_cancel") as $name): ?> <?php foreach (array("his_item_save", "his_item_cancel") as $name) : ?>
<?php echo $form->getElement($name); ?> <?php echo $form->getElement($name); ?>
<?php endforeach;?> <?php endforeach; ?>
</dd> </dd>
</dl> </dl>
</form> </form>

View File

@ -1,7 +1,7 @@
<h2><?php echo _("My Profile") ?></h2> <h2><?php echo _("My Profile") ?></h2>
<div id="current-user-container"> <div id="current-user-container">
<form id="current-user-form" class="edit-user-global" method="post" enctype="application/x-www-form-urlencoded"> <form id="current-user-form" class="edit-user-global" method="post" enctype="application/x-www-form-urlencoded">
<dl class="zend_form"> <dl class="zend_form">
<?php echo $this->element->getElement('cu_user_id') ?> <?php echo $this->element->getElement('cu_user_id') ?>
<dt id="cu-username-label"> <dt id="cu-username-label">
@ -10,9 +10,9 @@
</dt> </dt>
<dd id="cu-username-element"> <dd id="cu-username-element">
<?php echo $this->element->getElement('cu_login') ?> <?php echo $this->element->getElement('cu_login') ?>
<?php if($this->element->getElement('cu_login')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_login')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_login')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_login')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -24,9 +24,9 @@
</dt> </dt>
<dd id="cu-password-element"> <dd id="cu-password-element">
<?php echo $this->element->getElement('cu_password') ?> <?php echo $this->element->getElement('cu_password') ?>
<?php if($this->element->getElement('cu_password')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_password')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_password')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_password')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -38,9 +38,9 @@
</dt> </dt>
<dd id="cu-passwordVerify-element"> <dd id="cu-passwordVerify-element">
<?php echo $this->element->getElement('cu_passwordVerify') ?> <?php echo $this->element->getElement('cu_passwordVerify') ?>
<?php if($this->element->getElement('cu_passwordVerify')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_passwordVerify')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_passwordVerify')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_passwordVerify')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -52,9 +52,9 @@
</dt> </dt>
<dd id="cu-firstname-element"> <dd id="cu-firstname-element">
<?php echo $this->element->getElement('cu_first_name') ?> <?php echo $this->element->getElement('cu_first_name') ?>
<?php if($this->element->getElement('cu_first_name')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_first_name')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_first_name')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_first_name')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -66,9 +66,9 @@
</dt> </dt>
<dd id="cu-lastname-element"> <dd id="cu-lastname-element">
<?php echo $this->element->getElement('cu_last_name') ?> <?php echo $this->element->getElement('cu_last_name') ?>
<?php if($this->element->getElement('cu_last_name')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_last_name')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_last_name')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_last_name')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -80,9 +80,9 @@
</dt> </dt>
<dd id="cu-email-element"> <dd id="cu-email-element">
<?php echo $this->element->getElement('cu_email') ?> <?php echo $this->element->getElement('cu_email') ?>
<?php if($this->element->getElement('cu_email')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_email')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_email')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_email')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -94,9 +94,9 @@
</dt> </dt>
<dd id="cu-cell_phone-element"> <dd id="cu-cell_phone-element">
<?php echo $this->element->getElement('cu_cell_phone') ?> <?php echo $this->element->getElement('cu_cell_phone') ?>
<?php if($this->element->getElement('cu_cell_phone')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_cell_phone')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_cell_phone')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_cell_phone')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -108,9 +108,9 @@
</dt> </dt>
<dd id="cu-skype-element"> <dd id="cu-skype-element">
<?php echo $this->element->getElement('cu_skype') ?> <?php echo $this->element->getElement('cu_skype') ?>
<?php if($this->element->getElement('cu_skype')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_skype')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_skype')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_skype')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -122,9 +122,9 @@
</dt> </dt>
<dd id="cu-jabber-element"> <dd id="cu-jabber-element">
<?php echo $this->element->getElement('cu_jabber') ?> <?php echo $this->element->getElement('cu_jabber') ?>
<?php if($this->element->getElement('cu_jabber')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_jabber')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_jabber')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_jabber')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -136,9 +136,9 @@
</dt> </dt>
<dd id="cu-locale-element"> <dd id="cu-locale-element">
<?php echo $this->element->getElement('cu_locale') ?> <?php echo $this->element->getElement('cu_locale') ?>
<?php if($this->element->getElement('cu_locale')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_locale')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_locale')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_locale')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -150,9 +150,9 @@
</dt> </dt>
<dd id="cu-timezone-element"> <dd id="cu-timezone-element">
<?php echo $this->element->getElement('cu_timezone') ?> <?php echo $this->element->getElement('cu_timezone') ?>
<?php if($this->element->getElement('cu_timezone')->hasErrors()) : ?> <?php if ($this->element->getElement('cu_timezone')->hasErrors()) : ?>
<ul class='errors edit-user-errors'> <ul class='errors edit-user-errors'>
<?php foreach($this->element->getElement('cu_timezone')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('cu_timezone')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -160,6 +160,6 @@
</dd> </dd>
<?php echo $this->element->getElement('csrf') ?> <?php echo $this->element->getElement('csrf') ?>
</dl> </dl>
<button type="submit" id="cu_save_user" class="btn right-floated"><?php echo _("Save")?></button> <button type="submit" id="cu_save_user" class="btn right-floated"><?php echo _("Save") ?></button>
</form> </form>
</div> </div>

View File

@ -8,9 +8,9 @@
<dd id="new-password-element"> <dd id="new-password-element">
<?php echo $this->element->getElement('password') ?> <?php echo $this->element->getElement('password') ?>
</dd> </dd>
<?php if($this->element->getElement('password')->hasErrors()): ?> <?php if ($this->element->getElement('password')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('password')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('password')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -24,9 +24,9 @@
<dd id="confirm-password-element"> <dd id="confirm-password-element">
<?php echo $this->element->getElement('password_confirm') ?> <?php echo $this->element->getElement('password_confirm') ?>
</dd> </dd>
<?php if($this->element->getElement('password_confirm')->hasErrors()): ?> <?php if ($this->element->getElement('password_confirm')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('password_confirm')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('password_confirm')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>

View File

@ -2,7 +2,7 @@
<form enctype="application/x-www-form-urlencoded" method="post" action=""> <form enctype="application/x-www-form-urlencoded" method="post" action="">
<dl class="zend_form"> <dl class="zend_form">
<p><?php echo(_("Please enter both your username and email address.")); ?></p> <p><?php echo (_("Please enter both your username and email address.")); ?></p>
<dt id="username-label"> <dt id="username-label">
<label for="username" class="required"> <label for="username" class="required">
<?php echo $this->element->getElement('username')->getLabel() ?> <?php echo $this->element->getElement('username')->getLabel() ?>
@ -21,9 +21,9 @@
<dd id="email-element"> <dd id="email-element">
<?php echo $this->element->getElement('email') ?> <?php echo $this->element->getElement('email') ?>
</dd> </dd>
<?php if ($this->element->getElement('email')->hasErrors()): ?> <?php if ($this->element->getElement('email')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach ($this->element->getElement('email')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('email')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -36,8 +36,8 @@
<dd id="cancel-element"> <dd id="cancel-element">
<a href="<?php echo($this->baseUrl('login')); ?>"> <a href="<?php echo ($this->baseUrl('login')); ?>">
<button name="cancel" type="button" class="ui-button ui-widget ui-state-default ui-button-text-only center"><?php echo(_("Back")); ?></button> <button name="cancel" type="button" class="ui-button ui-widget ui-state-default ui-button-text-only center"><?php echo (_("Back")); ?></button>
</a> </a>
</dd> </dd>
</dl> </dl>

View File

@ -1,19 +1,15 @@
<style type="text/css"> <style type="text/css">
.player-title {
.player-title {
width: 70px; width: 70px;
border-style: none border-style: none float: left;
float: left;
} }
.preview-label { .preview-label {
line-height: 60px; line-height: 60px;
border-style: none border-style: none float: left;
float: left;
font-size: 20px; font-size: 20px;
color: #fff color: #fff
} }
</style> </style>
<fieldset class="padded"> <fieldset class="padded">
<dl class="zend_form"> <dl class="zend_form">
@ -38,7 +34,8 @@
<?php echo $this->element->getElement('player_embed_src')->render(); ?> <?php echo $this->element->getElement('player_embed_src')->render(); ?>
<?php //echo $this->element->getElement('player_display_track_metadata'); ?> <?php //echo $this->element->getElement('player_display_track_metadata');
?>
<table id="player_compatibility_chart" style="text-align:center; position:relative; top:40px;"> <table id="player_compatibility_chart" style="text-align:center; position:relative; top:40px;">
<th colspan="5" style="text-align:center"><?php echo _("Stream Compatibility") ?></th> <th colspan="5" style="text-align:center"><?php echo _("Stream Compatibility") ?></th>

View File

@ -9,12 +9,12 @@
<?php echo $this->element->getElement('stationLogoRemove')->render() ?> <?php echo $this->element->getElement('stationLogoRemove')->render() ?>
<!-- <button id="logo-remove-btn" value="Remove" class="btn">Remove</button>--> <!-- <button id="logo-remove-btn" value="Remove" class="btn">Remove</button>-->
<div id="Logo-img-container"> <div id="Logo-img-container">
<?php <?php
$logoImg = $this->element->getView()->logoImg; $logoImg = $this->element->getView()->logoImg;
$src = "data:image/png;base64,".$logoImg; $src = "data:image/png;base64," . $logoImg;
?> ?>
<img onError="this.onerror = '';this.style.visibility='hidden';$('#logo-remove-btn').hide();$('[id^=stationLogoRemove]').each(function(i,v){v.style.width=v.style.height=v.style.margin=v.style.padding='0px';});" id="logo-img" onload='/*resizeImg(this, 450, 450);*/' src="<?php echo $src ?>" /> <img onError="this.onerror = '';this.style.visibility='hidden';$('#logo-remove-btn').hide();$('[id^=stationLogoRemove]').each(function(i,v){v.style.width=v.style.height=v.style.margin=v.style.padding='0px';});" id="logo-img" onload='/*resizeImg(this, 450, 450);*/' src="<?php echo $src ?>" />
</div> </div>

View File

@ -1,7 +1,7 @@
<fieldset class="padded"> <fieldset class="padded">
<dl class="zend_form"> <dl class="zend_form">
<?php if($this->element->getElement("enable_tunein")->hasErrors()) { <?php if ($this->element->getElement("enable_tunein")->hasErrors()) {
echo $this->element->getElement('enable_tunein')->renderErrors(); echo $this->element->getElement('enable_tunein')->renderErrors();
} }
?> ?>

View File

@ -6,17 +6,18 @@
</dt> </dt>
<dd id="storageFolder-element" class="block-display"> <dd id="storageFolder-element" class="block-display">
<?php echo $this->element->getElement('storageFolder') ?> <?php echo $this->element->getElement('storageFolder') ?>
<input id="storageFolder-selection" type="button" value="<?php echo _("Choose folder")?>"></input> <input id="storageFolder-selection" type="button" value="<?php echo _("Choose folder") ?>"></input>
<input id="storageFolder-ok" type="button" value="<?php echo _("Set")?>"></input> <input id="storageFolder-ok" type="button" value="<?php echo _("Set") ?>"></input>
<?php if($this->element->getElement('storageFolder')->hasErrors()) : ?> <?php if ($this->element->getElement('storageFolder')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('storageFolder')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('storageFolder')->getMessages() as $error) : ?>
<li><?php echo $this->escape($error); ?></li> <li><?php echo $this->escape($error); ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dd class="block-display selected-item"><strong><?php echo _("Current Import Folder:"); ?></strong><?php $stor = Application_Model_MusicDir::getStorDir(); echo $stor->getDirectory(); ?></dd> <dd class="block-display selected-item"><strong><?php echo _("Current Import Folder:"); ?></strong><?php $stor = Application_Model_MusicDir::getStorDir();
echo $stor->getDirectory(); ?></dd>
<dt id="watchedFolder-label" class="block-display"> <dt id="watchedFolder-label" class="block-display">
<label class="required" for="watchedFolder"><?php echo $this->element->getElement('watchedFolder')->getLabel() ?></label> <label class="required" for="watchedFolder"><?php echo $this->element->getElement('watchedFolder')->getLabel() ?></label>
@ -24,11 +25,11 @@
</dt> </dt>
<dd id="watchedFolder-element" class="block-display"> <dd id="watchedFolder-element" class="block-display">
<?php echo $this->element->getElement('watchedFolder') ?> <?php echo $this->element->getElement('watchedFolder') ?>
<input id="watchedFolder-selection" type="button" value="<?php echo _("Choose folder")?>"></input> <input id="watchedFolder-selection" type="button" value="<?php echo _("Choose folder") ?>"></input>
<input id="watchedFolder-ok" type="button" value="<?php echo _("Add")?>"></input> <input id="watchedFolder-ok" type="button" value="<?php echo _("Add") ?>"></input>
<?php if($this->element->getElement('watchedFolder')->hasErrors()) : ?> <?php if ($this->element->getElement('watchedFolder')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('watchedFolder')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('watchedFolder')->getMessages() as $error) : ?>
<li><?php echo $this->escape($error); ?></li> <li><?php echo $this->escape($error); ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -36,15 +37,15 @@
</dd> </dd>
<?php $watched_dirs = Application_Model_MusicDir::getWatchedDirs(null, true); ?> <?php $watched_dirs = Application_Model_MusicDir::getWatchedDirs(null, true); ?>
<?php if (count($watched_dirs) > 0): ?> <?php if (count($watched_dirs) > 0) : ?>
<?php foreach($watched_dirs as $watched_dir): ?> <?php foreach ($watched_dirs as $watched_dir) : ?>
<dd class="block-display selected-item"> <dd class="block-display selected-item">
<?php echo ($watched_dir->getExistsFlag())?"":"<span class='ui-icon-alert'><img src='/css/images/warning-icon.png'></span>"?><span id="folderPath" style="display:block; width:350px"><?php echo htmlspecialchars($watched_dir->getDirectory());?></span></span> <?php echo ($watched_dir->getExistsFlag()) ? "" : "<span class='ui-icon-alert'><img src='/css/images/warning-icon.png'></span>" ?><span id="folderPath" style="display:block; width:350px"><?php echo htmlspecialchars($watched_dir->getDirectory()); ?></span></span>
<span title="<?php echo sprintf(_("Rescan watched directory (This is useful if it is network mount and may be out of sync with %s)"), PRODUCT_NAME)?>" class="ui-icon ui-icon-refresh"></span> <span title="<?php echo sprintf(_("Rescan watched directory (This is useful if it is network mount and may be out of sync with %s)"), PRODUCT_NAME) ?>" class="ui-icon ui-icon-refresh"></span>
<span title="<?php echo _("Remove watched directory")?>" class="ui-icon ui-icon-close"></span> <span title="<?php echo _("Remove watched directory") ?>" class="ui-icon ui-icon-close"></span>
</dd> </dd>
<?php endforeach; ?> <?php endforeach; ?>
<?php else: ?> <?php else : ?>
<dd class="block-display selected-item"> <dd class="block-display selected-item">
<span><?php echo _("You are not watching any media folders."); ?></span> <span><?php echo _("You are not watching any media folders."); ?></span>
</dd> </dd>

View File

@ -9,7 +9,7 @@
<?php echo $this->element->getElement('setup_timezone')->render(); ?> <?php echo $this->element->getElement('setup_timezone')->render(); ?>
</dl> </dl>
</fieldset> </fieldset>
<p style="margin-bottom: 0px; text-align: center;"><?php echo _("You can change these later in your preferences and user settings.");?></p> <p style="margin-bottom: 0px; text-align: center;"><?php echo _("You can change these later in your preferences and user settings."); ?></p>
</form> </form>
</div> </div>

View File

@ -9,8 +9,13 @@
<?php echo $this->element->getElement('sb_show_filter') ?> <?php echo $this->element->getElement('sb_show_filter') ?>
<!-- --><?php //if ($this->element->getElement('sb_my_shows')):?> <!-- --><?php //if ($this->element->getElement('sb_my_shows')):
<!-- <label>--><?php //echo $this->element->getElement('sb_my_shows')->getLabel(); ?><!--</label>--> ?>
<!-- --><?php //echo $this->element->getElement('sb_my_shows'); ?> <!-- <label>--><?php //echo $this->element->getElement('sb_my_shows')->getLabel();
<!-- --><?php //endif;?> ?>
<!--</label>-->
<!-- --><?php //echo $this->element->getElement('sb_my_shows');
?>
<!-- --><?php //endif;
?>
</div> </div>

View File

@ -1,7 +1,7 @@
<form class="smart-block-form" method="post" action=""> <form class="smart-block-form" method="post" action="">
<dl class='zend_form search-criteria'> <dl class='zend_form search-criteria'>
<div id='sp-success' class='success' style='display:none'></div> <div id='sp-success' class='success' style='display:none'></div>
<dt><label><?php echo(_("Search Criteria:"));?></label></dt> <dt><label><?php echo (_("Search Criteria:")); ?></label></dt>
<dd id='sp_criteria-element' class='criteria-element'> <dd id='sp_criteria-element' class='criteria-element'>
<?php for ($i = 0; $i < $this->criteriasLength; $i++) { <?php for ($i = 0; $i < $this->criteriasLength; $i++) {
// modRowMap holds the number of modifier rows for each criteria element // modRowMap holds the number of modifier rows for each criteria element
@ -10,46 +10,47 @@
?> ?>
<?php for ($j = 0; $j < $this->modRowMap[$i]; $j++) { <?php for ($j = 0; $j < $this->modRowMap[$i]; $j++) {
// determine if logic label should be 'and' or 'or' // determine if logic label should be 'and' or 'or'
if ($this->modRowMap[$i] > 1 && $j != $this->modRowMap[$i]-1) $logicLabel = _('or'); if ($this->modRowMap[$i] > 1 && $j != $this->modRowMap[$i] - 1) $logicLabel = _('or');
else $logicLabel = _('and'); else $logicLabel = _('and');
$disabled = $this->element->getElement("sp_criteria_field_".$i."_".$j)->getAttrib('disabled') == 'disabled'?true:false; $disabled = $this->element->getElement("sp_criteria_field_" . $i . "_" . $j)->getAttrib('disabled') == 'disabled' ? true : false;
// determine if the next row is disabled and only display the logic label if it isn't // determine if the next row is disabled and only display the logic label if it isn't
if ($j == $this->modRowMap[$i]-1 && $i < 25) { if ($j == $this->modRowMap[$i] - 1 && $i < 25) {
$n = $i+1; $n = $i + 1;
$nextIndex = $n."_0"; $nextIndex = $n . "_0";
} elseif ($j+1 <= $this->modRowMap[$i]-1) { } elseif ($j + 1 <= $this->modRowMap[$i] - 1) {
$n = $j+1; $n = $j + 1;
$nextIndex = $i."_".$n; $nextIndex = $i . "_" . $n;
} }
$nextDisabled = $this->element->getElement("sp_criteria_field_".$nextIndex)->getAttrib('disabled') == 'disabled'?true:false; $nextDisabled = $this->element->getElement("sp_criteria_field_" . $nextIndex)->getAttrib('disabled') == 'disabled' ? true : false;
?> ?>
<div <?php if (/*($i > 0) && */ $disabled) { <div <?php if (/*($i > 0) && */$disabled) {
echo 'style="display:none"'; echo 'style="display:none"';
}?> class="search-row-<?php echo $logicLabel ?>"> } ?> class="search-row-<?php echo $logicLabel ?>">
<?php echo $this->element->getElement("sp_criteria_field_".$i."_".$j) ?> <?php echo $this->element->getElement("sp_criteria_field_" . $i . "_" . $j) ?>
<?php echo $this->element->getElement("sp_criteria_modifier_".$i."_".$j) /* @todo finish this */?> <?php echo $this->element->getElement("sp_criteria_modifier_" . $i . "_" . $j) /* @todo finish this */ ?>
<?php echo $this->element->getElement("sp_criteria_value_".$i."_".$j) ?> <?php echo $this->element->getElement("sp_criteria_value_" . $i . "_" . $j) ?>
<span class='sp_text_font' id="datetime_select" <?php echo $this->element->getElement("sp_criteria_datetime_select_".$i."_".$j)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>><?php echo $this->element->getElement('sp_criteria_datetime_select_'.$i."_".$j) ?><?php echo _(" ago "); ?></span> <span class='sp_text_font' id="datetime_select" <?php echo $this->element->getElement("sp_criteria_datetime_select_" . $i . "_" . $j)->getAttrib("disabled") == "disabled" ? 'style="display:none;"' : "" ?>><?php echo $this->element->getElement('sp_criteria_datetime_select_' . $i . "_" . $j) ?><?php echo _(" ago "); ?></span>
<a <?php if ($disabled) { echo 'style=display:none'; } ?> class='modifier_add_link' id='modifier_add_<?php echo $i ?>'> <a <?php if ($disabled) {
+ <?php echo(_("New Modifier")); ?> echo 'style=display:none';
} ?> class='modifier_add_link' id='modifier_add_<?php echo $i ?>'>
+ <?php echo (_("New Modifier")); ?>
</a> </a>
<span class='sp_text_font' id="extra_criteria" <?php echo $this->element->getElement("sp_criteria_extra_".$i."_".$j)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>><?php echo _(" to "); ?><?php echo $this->element->getElement('sp_criteria_extra_'.$i."_".$j) ?></span> <span class='sp_text_font' id="extra_criteria" <?php echo $this->element->getElement("sp_criteria_extra_" . $i . "_" . $j)->getAttrib("disabled") == "disabled" ? 'style="display:none;"' : "" ?>><?php echo _(" to "); ?><?php echo $this->element->getElement('sp_criteria_extra_' . $i . "_" . $j) ?></span>
<span class='sp_text_font' id="extra_datetime_select" <?php echo $this->element->getElement("sp_criteria_extra_datetime_select_".$i."_".$j)->getAttrib("disabled") == "disabled"?'style="display:none;"':""?>><?php echo $this->element->getElement('sp_criteria_extra_datetime_select_'.$i."_".$j) ?><?php echo _(" ago "); ?></span> <span class='sp_text_font' id="extra_datetime_select" <?php echo $this->element->getElement("sp_criteria_extra_datetime_select_" . $i . "_" . $j)->getAttrib("disabled") == "disabled" ? 'style="display:none;"' : "" ?>><?php echo $this->element->getElement('sp_criteria_extra_datetime_select_' . $i . "_" . $j) ?><?php echo _(" ago "); ?></span>
<a style='margin-right:3px' class='btn btn-small btn-danger' id='criteria_remove_<?php echo $i ?>'> <a style='margin-right:3px' class='btn btn-small btn-danger' id='criteria_remove_<?php echo $i ?>'>
<i class='icon-white icon-remove spl-no-r-margin'></i> <i class='icon-white icon-remove spl-no-r-margin'></i>
</a> </a>
<span class='db-logic-label' <?php if ($nextDisabled) echo 'style="display:none"';?>> <span class='db-logic-label' <?php if ($nextDisabled) echo 'style="display:none"'; ?>>
<?php echo $logicLabel;?> <?php echo $logicLabel; ?>
</span> </span>
<?php if($this->element->getElement("sp_criteria_field_".$i."_".$j)->hasErrors()) : ?> <?php if ($this->element->getElement("sp_criteria_field_" . $i . "_" . $j)->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_criteria_field_".$i."_".$j)->getMessages() as $error): ?> <?php foreach ($this->element->getElement("sp_criteria_field_" . $i . "_" . $j)->getMessages() as $error) : ?>
<span class='errors sp-errors'> <span class='errors sp-errors'>
<?php echo $error; ?> <?php echo $error; ?>
</span> </span>
@ -59,7 +60,7 @@
<?php } ?> <?php } ?>
<?php } ?> <?php } ?>
<a class='btn btn-small btn-new' id='criteria_add'><i class='icon-white icon-plus'></i><?php echo(_("New Criteria")); ?></a> <a class='btn btn-small btn-new' id='criteria_add'><i class='icon-white icon-plus'></i><?php echo (_("New Criteria")); ?></a>
</dd> </dd>
</dl> </dl>
<dl> <dl>
@ -67,10 +68,10 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></label> <label class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></label>
</dt> </dt>
<dd id='sp_limit-element'> <dd id='sp_limit-element'>
<?php echo $this->element->getElement('sp_limit_value')?> <?php echo $this->element->getElement('sp_limit_value') ?>
<?php echo $this->element->getElement('sp_limit_options') ?> <?php echo $this->element->getElement('sp_limit_options') ?>
<?php if($this->element->getElement("sp_limit_value")->hasErrors()) : ?> <?php if ($this->element->getElement("sp_limit_value")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_limit_value")->getMessages() as $error): ?> <?php foreach ($this->element->getElement("sp_limit_value")->getMessages() as $error) : ?>
<span class='errors sp-errors'> <span class='errors sp-errors'>
<?php echo $error; ?> <?php echo $error; ?>
</span> </span>
@ -88,12 +89,14 @@
</label> </label>
</dt> </dt>
<dd id='sp_type-element'> <dd id='sp_type-element'>
<?php $i=0; <?php $i = 0;
$value = $this->element->getElement('sp_type')->getValue(); $value = $this->element->getElement('sp_type')->getValue();
foreach ($this->element->getElement('sp_type')->getMultiOptions() as $radio) : ?> foreach ($this->element->getElement('sp_type')->getMultiOptions() as $radio) : ?>
<label class='sp-label' for='sp_type-<?php echo $i?>'> <label class='sp-label' for='sp_type-<?php echo $i ?>'>
<input type="radio" value="<?php echo $i ?>" id="sp_type-<?php echo $i ?>" name="sp_type" <?php if($i == $value){echo 'checked="checked"';}?> ><?php echo $radio ?> <input type="radio" value="<?php echo $i ?>" id="sp_type-<?php echo $i ?>" name="sp_type" <?php if ($i == $value) {
echo 'checked="checked"';
} ?>><?php echo $radio ?>
</label> </label>
<?php $i = $i + 1; ?> <?php $i = $i + 1; ?>
<?php endforeach; ?> <?php endforeach; ?>
@ -105,9 +108,9 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_repeat_tracks')->getLabel() ?></label> <label class='sp_text_font'><?php echo $this->element->getElement('sp_repeat_tracks')->getLabel() ?></label>
</dt> </dt>
<dd id='sp_repeat_tracks-element'> <dd id='sp_repeat_tracks-element'>
<?php echo $this->element->getElement('sp_repeat_tracks')?> <?php echo $this->element->getElement('sp_repeat_tracks') ?>
<?php if($this->element->getElement("sp_repeat_tracks")->hasErrors()) : ?> <?php if ($this->element->getElement("sp_repeat_tracks")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_repeat_tracks")->getMessages() as $error): ?> <?php foreach ($this->element->getElement("sp_repeat_tracks")->getMessages() as $error) : ?>
<span class='errors sp-errors'> <span class='errors sp-errors'>
<?php echo $error; ?> <?php echo $error; ?>
</span> </span>
@ -121,9 +124,9 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_overflow_tracks')->getLabel() ?></label> <label class='sp_text_font'><?php echo $this->element->getElement('sp_overflow_tracks')->getLabel() ?></label>
</dt> </dt>
<dd id='sp_overflow_tracks-element'> <dd id='sp_overflow_tracks-element'>
<?php echo $this->element->getElement('sp_overflow_tracks')?> <?php echo $this->element->getElement('sp_overflow_tracks') ?>
<?php if($this->element->getElement("sp_overflow_tracks")->hasErrors()) : ?> <?php if ($this->element->getElement("sp_overflow_tracks")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_overflow_tracks")->getMessages() as $error): ?> <?php foreach ($this->element->getElement("sp_overflow_tracks")->getMessages() as $error) : ?>
<span class='errors sp-errors'> <span class='errors sp-errors'>
<?php echo $error; ?> <?php echo $error; ?>
</span> </span>
@ -134,12 +137,12 @@
</dl> </dl>
<dl> <dl>
<dt> <dt>
<label class='sp_text_font'><?php echo $this->element->getElement('sp_sort_options')->getLabel();?></label> <label class='sp_text_font'><?php echo $this->element->getElement('sp_sort_options')->getLabel(); ?></label>
</dt> </dt>
<dd id='sp_sort-element'> <dd id='sp_sort-element'>
<?php echo $this->element->getElement('sp_sort_options') ?> <?php echo $this->element->getElement('sp_sort_options') ?>
<?php if($this->element->getElement("sp_sort_options")->hasErrors()) : ?> <?php if ($this->element->getElement("sp_sort_options")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_sort_options")->getMessages() as $error): ?> <?php foreach ($this->element->getElement("sp_sort_options")->getMessages() as $error) : ?>
<span class='errors sp-errors'> <span class='errors sp-errors'>
<?php echo $error; ?> <?php echo $error; ?>
</span> </span>

View File

@ -1,209 +1,209 @@
<?php <?php
$s_name = "s".$this->stream_number; $s_name = "s" . $this->stream_number;
?> ?>
<h3 class="collapsible-header <?php echo $this->enabled == 0?"closed":""?>"><span class="arrow-icon"></span><?php echo _("Stream "); ?><?php echo $this->stream_number?></h3> <h3 class="collapsible-header <?php echo $this->enabled == 0 ? "closed" : "" ?>"><span class="arrow-icon"></span><?php echo _("Stream "); ?><?php echo $this->stream_number ?></h3>
<div class="stream-setting-content" <?php echo $this->enabled == 0?'style="display: none;':''?> id="<?php echo $s_name?>-config"> <div class="stream-setting-content" <?php echo $this->enabled == 0 ? 'style="display: none;' : '' ?> id="<?php echo $s_name ?>-config">
<fieldset class="padded"> <fieldset class="padded">
<dl class="zend_form clearfix"> <dl class="zend_form clearfix">
<dd id="<?php echo $s_name?>Liquidsoap-error-msg-element" class="liquidsoap_status"> <dd id="<?php echo $s_name ?>Liquidsoap-error-msg-element" class="liquidsoap_status">
<?php echo $this->liquidsoap_error_msg?> <?php echo $this->liquidsoap_error_msg ?>
</dd> </dd>
<dt id="<?php echo $s_name?>Enabled-label"> <dt id="<?php echo $s_name ?>Enabled-label">
<label for="<?php echo $s_name?>Enabled"><?php echo $this->element->getElement('enable')->getLabel() ?></label> <label for="<?php echo $s_name ?>Enabled"><?php echo $this->element->getElement('enable')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Enabled-element"> <dd id="<?php echo $s_name ?>Enabled-element">
<?php echo $this->element->getElement('enable')?> <?php echo $this->element->getElement('enable') ?>
</dd> </dd>
<dt id="<?php echo $s_name?>Mobile-label"> <dt id="<?php echo $s_name ?>Mobile-label">
<label for="<?php echo $s_name?>Mobile"><?php echo $this->element->getElement('mobile')->getLabel() ?></label> <label for="<?php echo $s_name ?>Mobile"><?php echo $this->element->getElement('mobile')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Mobile-element"> <dd id="<?php echo $s_name ?>Mobile-element">
<?php echo $this->element->getElement('mobile')?> <?php echo $this->element->getElement('mobile') ?>
</dd> </dd>
<dt id="<?php echo $s_name?>Type-label"> <dt id="<?php echo $s_name ?>Type-label">
<label for="<?php echo $s_name?>Type"><?php echo $this->element->getElement('type')->getLabel()?></label> <label for="<?php echo $s_name ?>Type"><?php echo $this->element->getElement('type')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Type-element"> <dd id="<?php echo $s_name ?>Type-element">
<?php echo $this->element->getElement('type')?> <?php echo $this->element->getElement('type') ?>
<span class='stream_type_help_icon'></span> <span class='stream_type_help_icon'></span>
</dd> </dd>
<dt id="<?php echo $s_name?>Bitrate-label"> <dt id="<?php echo $s_name ?>Bitrate-label">
<label for="<?php echo $s_name?>Bitrate"><?php echo $this->element->getElement('bitrate')->getLabel()?></label> <label for="<?php echo $s_name ?>Bitrate"><?php echo $this->element->getElement('bitrate')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Bitrate-element"> <dd id="<?php echo $s_name ?>Bitrate-element">
<?php echo $this->element->getElement('bitrate')?> <?php echo $this->element->getElement('bitrate') ?>
</dd> </dd>
<dt id="outputServer-label"> <dt id="outputServer-label">
<label for="outputServer"><?php echo $this->element->getElement('host')->getLabel()?><span class="info-text-small"> <label for="outputServer"><?php echo $this->element->getElement('host')->getLabel() ?><span class="info-text-small">
<?php echo _("(Required)")?></span> :</label> <?php echo _("(Required)") ?></span> :</label>
</dt> </dt>
<dd id="outputServer-element"> <dd id="outputServer-element">
<?php echo $this->element->getElement('host')?> <?php echo $this->element->getElement('host') ?>
<?php if($this->element->getElement('host')->hasErrors()) : ?> <?php if ($this->element->getElement('host')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('host')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('host')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="outputPort-label"> <dt id="outputPort-label">
<label for="outputPort"><?php echo $this->element->getElement('port')->getLabel()?><span class="info-text-small"> <label for="outputPort"><?php echo $this->element->getElement('port')->getLabel() ?><span class="info-text-small">
<?php echo _("(Required)")?></span> :</label> <?php echo _("(Required)") ?></span> :</label>
</dt> </dt>
<dd id="outputPort-element"> <dd id="outputPort-element">
<?php echo $this->element->getElement('port')?> <?php echo $this->element->getElement('port') ?>
<?php if($this->element->getElement('port')->hasErrors()) : ?> <?php if ($this->element->getElement('port')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('port')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('port')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="<?php echo $s_name?>Output-label"> <dt id="<?php echo $s_name ?>Output-label">
<label for="<?php echo $s_name?>Output"><?php echo $this->element->getElement('output')->getLabel()?></label> <label for="<?php echo $s_name ?>Output"><?php echo $this->element->getElement('output')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Output-element"> <dd id="<?php echo $s_name ?>Output-element">
<?php echo $this->element->getElement('output')?> <?php echo $this->element->getElement('output') ?>
</dd> </dd>
<dt id="<?php echo $s_name?>Channels-label"> <dt id="<?php echo $s_name ?>Channels-label">
<label for="<?php echo $s_name?>Channels"><?php echo $this->element->getElement('channels')->getLabel()?></label> <label for="<?php echo $s_name ?>Channels"><?php echo $this->element->getElement('channels')->getLabel() ?></label>
</dt> </dt>
<dd id="<?php echo $s_name?>Channels-element"> <dd id="<?php echo $s_name ?>Channels-element">
<?php echo $this->element->getElement('channels')?> <?php echo $this->element->getElement('channels') ?>
</dd> </dd>
<fieldset class="padded top-margin display_field toggle closed" id="output_setting"> <fieldset class="padded top-margin display_field toggle closed" id="output_setting">
<legend style="cursor: pointer;"> <legend style="cursor: pointer;">
<span class="ui-icon ui-icon-triangle-2-n-s"></span> <span class="ui-icon ui-icon-triangle-2-n-s"></span>
<?php echo _("Additional Options")?> <?php echo _("Additional Options") ?>
</legend> </legend>
<dl class="zend_form"> <dl class="zend_form">
<dt id="outputUser-label"> <dt id="outputUser-label">
<label for="outputUser"><?php echo $this->element->getElement('user')->getLabel()?> : <label for="outputUser"><?php echo $this->element->getElement('user')->getLabel() ?> :
<span class='stream_username_help_icon'></span> <span class='stream_username_help_icon'></span>
</label> </label>
</dt> </dt>
<dd id="outputUser-element"> <dd id="outputUser-element">
<?php echo $this->element->getElement('user')?> <?php echo $this->element->getElement('user') ?>
<?php if($this->element->getElement('user')->hasErrors()) : ?> <?php if ($this->element->getElement('user')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('user')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('user')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="outputPassword-label"> <dt id="outputPassword-label">
<label class="optional" for="outputPassword"><?php echo $this->element->getElement('pass')->getLabel()?> :</label> <label class="optional" for="outputPassword"><?php echo $this->element->getElement('pass')->getLabel() ?> :</label>
</dt> </dt>
<dd id="outputPassword-element" class="clearfix"> <dd id="outputPassword-element" class="clearfix">
<?php echo $this->element->getElement('pass')?> <?php echo $this->element->getElement('pass') ?>
<?php if($this->element->getElement('pass')->hasErrors()) : ?> <?php if ($this->element->getElement('pass')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('pass')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('pass')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="adminUser-label"> <dt id="adminUser-label">
<label for="outputUser"><?php echo $this->element->getElement('admin_user')->getLabel()?> : <label for="outputUser"><?php echo $this->element->getElement('admin_user')->getLabel() ?> :
<span class='admin_username_help_icon'></span> <span class='admin_username_help_icon'></span>
</label> </label>
</dt> </dt>
<dd id="adminUser-element"> <dd id="adminUser-element">
<?php echo $this->element->getElement('admin_user')?> <?php echo $this->element->getElement('admin_user') ?>
<?php if($this->element->getElement('admin_user')->hasErrors()) : ?> <?php if ($this->element->getElement('admin_user')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('admin_user')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('admin_user')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="adminPassword-label"> <dt id="adminPassword-label">
<label class="optional" for="outputPassword"><?php echo $this->element->getElement('admin_pass')->getLabel()?> :</label> <label class="optional" for="outputPassword"><?php echo $this->element->getElement('admin_pass')->getLabel() ?> :</label>
</dt> </dt>
<dd id="adminPassword-element" class="clearfix"> <dd id="adminPassword-element" class="clearfix">
<?php echo $this->element->getElement('admin_pass')?> <?php echo $this->element->getElement('admin_pass') ?>
<?php if($this->element->getElement('admin_pass')->hasErrors()) : ?> <?php if ($this->element->getElement('admin_pass')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('admin_pass')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('admin_pass')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt class="block-display info-block"> <dt class="block-display info-block">
<?php echo _("The following info will be displayed to listeners in their media player:")?> <?php echo _("The following info will be displayed to listeners in their media player:") ?>
</dt> </dt>
<dt id="stationName-label"> <dt id="stationName-label">
<label for="stationName"><?php echo $this->element->getElement('name')->getLabel()?> :</label> <label for="stationName"><?php echo $this->element->getElement('name')->getLabel() ?> :</label>
</dt> </dt>
<dd id="stationName-element" class="clearfix"> <dd id="stationName-element" class="clearfix">
<?php echo $this->element->getElement('name')?> <?php echo $this->element->getElement('name') ?>
<?php if($this->element->getElement('name')->hasErrors()) : ?> <?php if ($this->element->getElement('name')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('name')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('name')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="stationDescription-label"> <dt id="stationDescription-label">
<label for="stationDescription"><?php echo $this->element->getElement('description')->getLabel()?> :</label> <label for="stationDescription"><?php echo $this->element->getElement('description')->getLabel() ?> :</label>
</dt> </dt>
<dd id="stationDescription-element" class="clearfix"> <dd id="stationDescription-element" class="clearfix">
<?php echo $this->element->getElement('description')?> <?php echo $this->element->getElement('description') ?>
<?php if($this->element->getElement('description')->hasErrors()) : ?> <?php if ($this->element->getElement('description')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('description')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('description')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="stationURL-label"> <dt id="stationURL-label">
<label for="stationURL"><?php echo $this->element->getElement('url')->getLabel()?> :</label> <label for="stationURL"><?php echo $this->element->getElement('url')->getLabel() ?> :</label>
</dt> </dt>
<dd id="stationURL-element" class="clearfix"> <dd id="stationURL-element" class="clearfix">
<?php echo $this->element->getElement('url')?> <?php echo $this->element->getElement('url') ?>
<span class="info-text-small"><?php echo _("(Your radio station website)")?></span> <span class="info-text-small"><?php echo _("(Your radio station website)") ?></span>
<?php if($this->element->getElement('url')->hasErrors()) : ?> <?php if ($this->element->getElement('url')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('url')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('url')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="outputGenre-label"> <dt id="outputGenre-label">
<label for="outputGenre"><?php echo $this->element->getElement('genre')->getLabel()?> :</label> <label for="outputGenre"><?php echo $this->element->getElement('genre')->getLabel() ?> :</label>
</dt> </dt>
<dd id="outputGenre-element"> <dd id="outputGenre-element">
<?php echo $this->element->getElement('genre')?> <?php echo $this->element->getElement('genre') ?>
<?php if($this->element->getElement('genre')->hasErrors()) : ?> <?php if ($this->element->getElement('genre')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('genre')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('genre')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php endif; ?> <?php endif; ?>
</dd> </dd>
<dt id="outputMountpoint-label"> <dt id="outputMountpoint-label">
<label for="outputMountpoint"><?php echo $this->element->getElement('mount')->getLabel()?> :</label> <label for="outputMountpoint"><?php echo $this->element->getElement('mount')->getLabel() ?> :</label>
</dt> </dt>
<dd id="outputMountpoint-element"> <dd id="outputMountpoint-element">
<?php echo $this->element->getElement('mount')?> <?php echo $this->element->getElement('mount') ?>
<?php if($this->element->getElement('mount')->hasErrors()) : ?> <?php if ($this->element->getElement('mount')->hasErrors()) : ?>
<ul class='errors'> <ul class='errors'>
<?php foreach($this->element->getElement('mount')->getMessages() as $error): ?> <?php foreach ($this->element->getElement('mount')->getMessages() as $error) : ?>
<li><?php echo $error; ?></li> <li><?php echo $error; ?></li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
@ -219,4 +219,4 @@
</dd> </dd>
</dl> </dl>
</fieldset> </fieldset>
</div> </div>

View File

@ -1,16 +1,16 @@
<script language="JavaScript"> <script language="JavaScript">
function autoResize(id){ function autoResize(id) {
var newheight; var newheight;
var newwidth; var newwidth;
if(document.getElementById){ if (document.getElementById) {
newheight=document.getElementById(id).contentWindow.document.body.scrollHeight; newheight = document.getElementById(id).contentWindow.document.body.scrollHeight;
// Hack to get height in Firefox // Hack to get height in Firefox
if (newheight == 0) newheight = newheight = document.getElementById(id).contentWindow.document.documentElement.scrollHeight; if (newheight == 0) newheight = newheight = document.getElementById(id).contentWindow.document.documentElement.scrollHeight;
newwidth=document.getElementById(id).contentWindow.document.body.scrollWidth; newwidth = document.getElementById(id).contentWindow.document.body.scrollWidth;
} }
document.getElementById(id).height= (newheight) + "px"; document.getElementById(id).height = (newheight) + "px";
document.getElementById(id).width= (newwidth) + "px"; document.getElementById(id).width = (newwidth) + "px";
} }
</script> </script>
@ -19,12 +19,12 @@
<div class="bck_cover"></div> <div class="bck_cover"></div>
<?php if ($this->stationLogo === DEFAULT_LOGO_PLACEHOLDER) { <?php if ($this->stationLogo === DEFAULT_LOGO_PLACEHOLDER) {
echo "<a href='#' class='logo'><img src='".DEFAULT_LOGO_FILE."'></a>"; echo "<a href='#' class='logo'><img src='" . DEFAULT_LOGO_FILE . "'></a>";
} else { } else {
echo "<a href='#' class='logo'><img src='data:image/png;base64," . $this->stationLogo . "'></a>"; echo "<a href='#' class='logo'><img src='data:image/png;base64," . $this->stationLogo . "'></a>";
} ?> } ?>
<?php if ($this->displayLoginButton): ?> <?php if ($this->displayLoginButton) : ?>
<div class='login-btn'> <div class='login-btn'>
<a href='/login' target='_parent'> <a href='/login' target='_parent'>
<span><?php echo _('Login'); ?></span> <span><?php echo _('Login'); ?></span>
@ -53,7 +53,7 @@
</div> </div>
<?php <?php
if ($this->displayRssTab) {?> if ($this->displayRssTab) { ?>
<div id="tab-4" class="podcast tab_content"> <div id="tab-4" class="podcast tab_content">
<div class="rss-title-wrapper"> <div class="rss-title-wrapper">
<div id="rss-subscribe"> <div id="rss-subscribe">
@ -75,14 +75,14 @@
<div class="playbar playbar-buttons"> <div class="playbar playbar-buttons">
<ul class="jp-controls rss-buttons"> <ul class="jp-controls rss-buttons">
<li class="ui-corner-all jp-play"> <li class="ui-corner-all jp-play">
<span class="icon-play icon-white" tabindex="1"><?php /*echo _("play") */?></span> <span class="icon-play icon-white" tabindex="1"><?php /*echo _("play") */ ?></span>
</li> </li>
<li class="ui-corner-all jp-pause"> <li class="ui-corner-all jp-pause">
<span class="icon-pause icon-white" tabindex="1"><?php /*echo _("pause") */?></span> <span class="icon-pause icon-white" tabindex="1"><?php /*echo _("pause") */ ?></span>
</li> </li>
<li class="ui-corner-all jp-stop"> <li class="ui-corner-all jp-stop">
<span class="icon-stop icon-white" tabindex="1"><?php /*echo _("stop") */?></span> <span class="icon-stop icon-white" tabindex="1"><?php /*echo _("stop") */ ?></span>
</li> </li>
</ul> </ul>
</div> </div>
@ -102,16 +102,16 @@
<div class="playbar playbar-progress"> <div class="playbar playbar-progress">
<div class="jp-volume-block"> <div class="jp-volume-block">
<div class="jp-mute"> <div class="jp-mute">
<span class="ui-icon" tabindex="1" title="mute"><?php /*echo _("mute") */?></span> <span class="ui-icon" tabindex="1" title="mute"><?php /*echo _("mute") */ ?></span>
</div> </div>
<div class="jp-unmute"> <div class="jp-unmute">
<span class="ui-icon" tabindex="1" title="unmute"><?php /*echo _("unmute") */?></span> <span class="ui-icon" tabindex="1" title="unmute"><?php /*echo _("unmute") */ ?></span>
</div> </div>
<div class="jp-volume-bar"> <div class="jp-volume-bar">
<div class="jp-volume-bar-value"></div> <div class="jp-volume-bar-value"></div>
</div> </div>
<div class="jp-volume-max"> <div class="jp-volume-max">
<span class="ui-icon" tabindex="1" title="max volume"><?php /*echo _("max volume") */?></span> <span class="ui-icon" tabindex="1" title="max volume"><?php /*echo _("max volume") */ ?></span>
</div> </div>
</div> </div>
</div> </div>
@ -133,12 +133,13 @@
<script type="text/javascript"> <script type="text/javascript">
var playlist; var playlist;
function buildJplayerPlaylist(page, data) { function buildJplayerPlaylist(page, data) {
playlist = new Array(); playlist = new Array();
var media; var media;
$('.rss-tracks ul').html(''); $('.rss-tracks ul').html('');
$.each(data[Object.keys(data)[page]], function (index, value) { $.each(data[Object.keys(data)[page]], function(index, value) {
var media_mime_supported = true; var media_mime_supported = true;
media = { media = {
title: value.CcFiles.track_title, title: value.CcFiles.track_title,
@ -157,12 +158,12 @@
media_mime_supported = false; media_mime_supported = false;
} }
var podcast_title_link = "<a class='podcast_title jp-playlist-item' tabindex='0' href='#'>"+value.CcFiles.track_title+"</a>"; var podcast_title_link = "<a class='podcast_title jp-playlist-item' tabindex='0' href='#'>" + value.CcFiles.track_title + "</a>";
var podcast_title_no_link = "<div class='podcast_title'>"+value.CcFiles.track_title+"</div>"; var podcast_title_no_link = "<div class='podcast_title'>" + value.CcFiles.track_title + "</div>";
var playlist_metadata = "<span class='podcast_date'>"+value.publication_date+"</span>" + var playlist_metadata = "<span class='podcast_date'>" + value.publication_date + "</span>" +
"<span class='podcast_length'>"+value.CcFiles.length+"</span>" + "<span class='podcast_length'>" + value.CcFiles.length + "</span>" +
"<span class='podcast_desc_btn'>Description</span>" + "<span class='podcast_desc_btn'>Description</span>" +
"<div class='podcast_desc'>"+value.CcFiles.description+"</div>"; "<div class='podcast_desc'>" + value.CcFiles.description + "</div>";
if (media_mime_supported) { if (media_mime_supported) {
playlist.push(media); playlist.push(media);
@ -171,9 +172,9 @@
playlist_item += podcast_title_link + playlist_metadata; playlist_item += podcast_title_link + playlist_metadata;
playlist_item += "<div class='podcast_btn_group'>"+ playlist_item += "<div class='podcast_btn_group'>" +
"<span class='podcast_play podcast_action_btn'><a href='#' id='rss-track' data-rss-playlist-id='"+index+"'><img src='css/radio-page/img/podcast_play.png'></a></span>" + "<span class='podcast_play podcast_action_btn'><a href='#' id='rss-track' data-rss-playlist-id='" + index + "'><img src='css/radio-page/img/podcast_play.png'></a></span>" +
"<span class='podcast_download podcast_action_btn'><a id='rss-download-link' href='"+value.download_url+"'><img src='css/radio-page/img/podcast_download.png'></a></span> </div></div></li>"; "<span class='podcast_download podcast_action_btn'><a id='rss-download-link' href='" + value.download_url + "'><img src='css/radio-page/img/podcast_download.png'></a></span> </div></div></li>";
} else { } else {
// add empty media item to playlist so indexes stay inline with the corret // add empty media item to playlist so indexes stay inline with the corret
@ -182,9 +183,9 @@
var playlist_item = "<div class='playlist-item-no-preview podcast_info'>"; var playlist_item = "<div class='playlist-item-no-preview podcast_info'>";
playlist_item += podcast_title_no_link + playlist_metadata; playlist_item += podcast_title_no_link + playlist_metadata;
playlist_item += "<div class='podcast_btn_group'>"+ playlist_item += "<div class='podcast_btn_group'>" +
"<span class='podcast_no_play'><img src='css/radio-page/img/podcast_no_play.png'></span>" + "<span class='podcast_no_play'><img src='css/radio-page/img/podcast_no_play.png'></span>" +
"<span class='podcast_download podcast_action_btn'><a id='rss-download-link' href='"+value.download_url+"'><img src='css/radio-page/img/podcast_download.png'></a></span> </div></div>"; "<span class='podcast_download podcast_action_btn'><a id='rss-download-link' href='" + value.download_url + "'><img src='css/radio-page/img/podcast_download.png'></a></span> </div></div>";
} }
$('.rss-tracks ul').append(playlist_item); $('.rss-tracks ul').append(playlist_item);
@ -196,7 +197,7 @@
// we have to set the player to play the first track on page load // we have to set the player to play the first track on page load
// or else the play button won't work at first. make sure nothing // or else the play button won't work at first. make sure nothing
// is playing first // is playing first
if($("#jquery_jplayer_1").data().jPlayer.status.paused == true){ if ($("#jquery_jplayer_1").data().jPlayer.status.paused == true) {
// jPlayer is not currently playing // jPlayer is not currently playing
_playlist_jplayer.play(0); _playlist_jplayer.play(0);
$("#jquery_jplayer_1").jPlayer("stop"); $("#jquery_jplayer_1").jPlayer("stop");
@ -211,7 +212,7 @@
return false; return false;
}); });
$('.podcast_desc_btn').click(function(){ $('.podcast_desc_btn').click(function() {
$(this).toggleClass('current'); $(this).toggleClass('current');
$(this).next('.podcast_desc').slideToggle(); $(this).next('.podcast_desc').slideToggle();
}); });
@ -221,7 +222,7 @@
_playlist_jplayer = new jPlayerPlaylist({ _playlist_jplayer = new jPlayerPlaylist({
jPlayer: "#jquery_jplayer_1", jPlayer: "#jquery_jplayer_1",
cssSelectorAncestor: "#jp_container_1" cssSelectorAncestor: "#jp_container_1"
},[], //array of songs will be filled with below's json call }, [], //array of songs will be filled with below's json call
{ {
swfPath: baseUrl + "js/jplayer", swfPath: baseUrl + "js/jplayer",
supplied: "oga, mp3, m4v, m4a, wav", supplied: "oga, mp3, m4v, m4a, wav",
@ -240,7 +241,7 @@
removeTime: 0, removeTime: 0,
shuffleTime: 0 shuffleTime: 0
}, },
ready: function () { ready: function() {
var episodes = <?php echo $this->episodes ?>; var episodes = <?php echo $this->episodes ?>;
var empty_podcast_message = "<?php echo $this->emptyPodcastMessage ?>"; var empty_podcast_message = "<?php echo $this->emptyPodcastMessage ?>";
@ -252,14 +253,14 @@
// update current track metadata on player bar // update current track metadata on player bar
$("#jquery_jplayer_1").bind(jQuery.jPlayer.event.play, function (event) { $("#jquery_jplayer_1").bind(jQuery.jPlayer.event.play, function(event) {
var current = _playlist_jplayer.current; var current = _playlist_jplayer.current;
$('.current-track span').html(playlist[current].title); $('.current-track span').html(playlist[current].title);
}); });
// build pagination menu // build pagination menu
var pages = "<li data-page-index='0'><</li>"; var pages = "<li data-page-index='0'><</li>";
$.each(episodes, function (index, value) { $.each(episodes, function(index, value) {
var page_number = +index + 1; var page_number = +index + 1;
pages += "<li data-page-index='" + index + "'>" + page_number + "</li>"; pages += "<li data-page-index='" + index + "'>" + page_number + "</li>";
}); });
@ -269,7 +270,7 @@
$("ul.pagination").find("li:contains('1')").addClass('current'); $("ul.pagination").find("li:contains('1')").addClass('current');
// pagination click // pagination click
$("ul.pagination li").click(function () { $("ul.pagination li").click(function() {
buildJplayerPlaylist($(this).attr("data-page-index"), episodes); buildJplayerPlaylist($(this).attr("data-page-index"), episodes);
$(this).siblings().removeClass('current'); $(this).siblings().removeClass('current');
if ($(this).text() === "<") { if ($(this).text() === "<") {
@ -283,7 +284,7 @@
}); });
//turn off player bar when podcast track is played //turn off player bar when podcast track is played
$("a.jp-playlist-item, .jp-play, .podcast_play").click(function () { $("a.jp-playlist-item, .jp-play, .podcast_play").click(function() {
if ($("#player_iframe").contents().find('.play').hasClass('pause')) { if ($("#player_iframe").contents().find('.play').hasClass('pause')) {
$("#player_iframe").contents().find('.play').click(); $("#player_iframe").contents().find('.play').click();
} }
@ -292,7 +293,6 @@
} }
} }
); );
</script> </script>
</div> </div>
<?php <?php
@ -304,11 +304,11 @@
</div> </div>
<script type="text/javascript"> <script type="text/javascript">
$(document).ready(function () { $(document).ready(function() {
$("#player_iframe").load(function () { $("#player_iframe").load(function() {
$("#player_iframe").contents().find('.bottom_bar').append("<div class='flex_spacer' data-tab='tab-1'></div>"); $("#player_iframe").contents().find('.bottom_bar').append("<div class='flex_spacer' data-tab='tab-1'></div>");
$("#player_iframe").contents().find('.bottom_bar').append("<div class='schedule_btn button current' data-tab='tab-1'></div>"); $("#player_iframe").contents().find('.bottom_bar').append("<div class='schedule_btn button current' data-tab='tab-1'></div>");
@ -316,26 +316,26 @@
<?php <?php
// Is there a better way to do this? // Is there a better way to do this?
if ($this->displayRssTab) {?> if ($this->displayRssTab) { ?>
$("#player_iframe").contents().find('.bottom_bar').append("<div class='station_rss_btn button' data-tab='tab-4'></div>"); $("#player_iframe").contents().find('.bottom_bar').append("<div class='station_rss_btn button' data-tab='tab-4'></div>");
<?php <?php
} }
?> ?>
$("#player_iframe").contents().find('.bottom_bar .button').click(function(){ $("#player_iframe").contents().find('.bottom_bar .button').click(function() {
var tab_id = $(this).attr('data-tab'); var tab_id = $(this).attr('data-tab');
$("#player_iframe").contents().find('.bottom_bar .button').removeClass('current'); $("#player_iframe").contents().find('.bottom_bar .button').removeClass('current');
$('.tab_content').removeClass('current'); $('.tab_content').removeClass('current');
window.scrollTo(0,0); window.scrollTo(0, 0);
$(this).addClass('current'); $(this).addClass('current');
$("#"+tab_id).addClass('current'); $("#" + tab_id).addClass('current');
}); });
//turn off jplayer if it's playing and someone clicks to play the player bar //turn off jplayer if it's playing and someone clicks to play the player bar
$("#player_iframe").contents().find('.play').click(function () { $("#player_iframe").contents().find('.play').click(function() {
if ($('.jp-play').is(':hidden')) { if ($('.jp-play').is(':hidden')) {
$('.jp-pause').click(); $('.jp-pause').click();
} }
@ -343,16 +343,15 @@
}); });
// schedule widget tabs // schedule widget tabs
$('.tabs li').click(function(){ $('.tabs li').click(function() {
var tab_id = $(this).attr('data-tab'); var tab_id = $(this).attr('data-tab');
$('.tabs li').removeClass('active'); $('.tabs li').removeClass('active');
$('.schedule_item').removeClass('active'); $('.schedule_item').removeClass('active');
$(this).addClass('active'); $(this).addClass('active');
$("#"+tab_id).addClass('active'); $("#" + tab_id).addClass('active');
}); });
}); });
</script> </script>

View File

@ -13,24 +13,24 @@
<div class="track-edit-right-wrapper"> <div class="track-edit-right-wrapper">
<div class="track-edit-right"> <div class="track-edit-right">
<div class="inner_track_editor_title" style="width: 100%;"> <div class="inner_track_editor_title" style="width: 100%;">
<h2 style="line-height: 26px !important;"><span class="title_obj_name"><?php echo($this->title); ?></span></h2> <h2 style="line-height: 26px !important;"><span class="title_obj_name"><?php echo ($this->title); ?></span></h2>
<h3 style="line-height: 2px !important;"><span class=""><?php echo($this->artist_name); ?></span></h3> <h3 style="line-height: 2px !important;"><span class=""><?php echo ($this->artist_name); ?></span></h3>
</div> </div>
</div> </div>
</div> </div>
<div class="track-edit-left"> <div class="track-edit-left">
<div class="artwork-upload" data-id="<?php echo($this->id); ?>"> <div class="artwork-upload" data-id="<?php echo ($this->id); ?>">
<div class="artwork-edit"> <div class="artwork-edit">
<input type='file' class="artworkUpload artwork-uploaded-<?php echo($this->id); ?>" id="artworkUpload-<?php echo ($this->id); ?>" data-id="<?php echo($this->id); ?>" accept=".png, .jpg, .jpeg" /> <input type='file' class="artworkUpload artwork-uploaded-<?php echo ($this->id); ?>" id="artworkUpload-<?php echo ($this->id); ?>" data-id="<?php echo ($this->id); ?>" accept=".png, .jpg, .jpeg" />
<label for="artworkUpload-<?php echo ($this->id); ?>"></label> <label for="artworkUpload-<?php echo ($this->id); ?>"></label>
</div> </div>
<div id="artwork-preview" class="artwork-preview"> <div id="artwork-preview" class="artwork-preview">
<div class="artwork-preview-<?php echo($this->id); ?>" id="artworkPreview" style="background-image: url(<?php echo $get_artwork; ?>);"> <div class="artwork-preview-<?php echo ($this->id); ?>" id="artworkPreview" style="background-image: url(<?php echo $get_artwork; ?>);">
</div> </div>
</div> </div>
</div> </div>
<div> <div>
<a href="#" class="delete-artwork" data-id="<?php echo($this->id); ?>" style="font-size: 11px;">Remove</a> <a href="#" class="delete-artwork" data-id="<?php echo ($this->id); ?>" style="font-size: 11px;">Remove</a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -4,56 +4,122 @@ foreach ($this->md as $key => &$value) {
$value = $this->escape($value); $value = $this->escape($value);
} }
?> ?>
<?php if($this->type == "audioclip") : ?> <?php if ($this->type == "audioclip") : ?>
<table class='library-track-md'> <table class='library-track-md'>
<tr><td><?php echo _("Title:"); ?></td><td><?php echo ($this->md["MDATA_KEY_TITLE"]);?></td></tr> <tr>
<tr><td><?php echo _("Creator:"); ?></td><td><?php echo ($this->md["MDATA_KEY_CREATOR"]);?></td></tr> <td><?php echo _("Title:"); ?></td>
<tr><td><?php echo _("Album:"); ?></td><td><?php echo ($this->md["MDATA_KEY_SOURCE"]);?></td></tr> <td><?php echo ($this->md["MDATA_KEY_TITLE"]); ?></td>
<tr><td><?php echo _("Track:"); ?></td><td><?php echo ($this->md["MDATA_KEY_TRACKNUMBER"]);?></td></tr> </tr>
<tr><td><?php echo _("Length:"); ?></td><td><?php echo ($this->md["MDATA_KEY_DURATION"]);?></td></tr> <tr>
<tr><td class='file-md-qtip-nowrap'><?php echo _("Sample Rate:"); ?></td><td><?php echo ($this->md["MDATA_KEY_SAMPLERATE"]);?></td></tr> <td><?php echo _("Creator:"); ?></td>
<tr><td><?php echo _("Bit Rate:"); ?></td><td><?php echo ($this->md["MDATA_KEY_BITRATE"]);?></td></tr> <td><?php echo ($this->md["MDATA_KEY_CREATOR"]); ?></td>
<tr><td><?php echo _("Mood:"); ?></td><td><?php echo ($this->md["MDATA_KEY_MOOD"]);?></td></tr> </tr>
<tr><td><?php echo _("Genre:"); ?></td><td><?php echo ($this->md["MDATA_KEY_GENRE"]);?></td></tr> <tr>
<tr><td><?php echo _("Year:"); ?></td><td><?php echo ($this->md["MDATA_KEY_YEAR"]);?></td></tr> <td><?php echo _("Album:"); ?></td>
<tr><td><?php echo _("Label:"); ?></td><td><?php echo ($this->md["MDATA_KEY_LABEL"]);?></td></tr> <td><?php echo ($this->md["MDATA_KEY_SOURCE"]); ?></td>
<tr><td><?php echo _("BPM:"); ?></td><td><?php echo ($this->md["MDATA_KEY_BPM"]);?></td></tr> </tr>
<tr><td><?php echo _("Composer:"); ?></td><td><?php echo ($this->md["MDATA_KEY_COMPOSER"]);?></td></tr> <tr>
<tr><td><?php echo _("Conductor:"); ?></td><td><?php echo ($this->md["MDATA_KEY_CONDUCTOR"]);?></td></tr> <td><?php echo _("Track:"); ?></td>
<tr><td><?php echo _("Copyright:"); ?></td><td><?php echo ($this->md["MDATA_KEY_COPYRIGHT"]);?></td></tr> <td><?php echo ($this->md["MDATA_KEY_TRACKNUMBER"]); ?></td>
<tr><td><?php echo _("Isrc Number:"); ?></td><td><?php echo ($this->md["MDATA_KEY_ISRC"]);?></td></tr> </tr>
<tr><td><?php echo _("Website:"); ?></td><td><?php echo ($this->md["MDATA_KEY_URL"]);?></td></tr> <tr>
<tr><td><?php echo _("Artwork:"); ?></td><td><?php echo ($this->md["MDATA_KEY_ARTWORK"]);?></td></tr> <td><?php echo _("Length:"); ?></td>
<tr><td><?php echo _("Artwork Data:"); ?></td><td><?php echo ($this->md["MDATA_KEY_ARTWORK_DATA"]);?></td></tr> <td><?php echo ($this->md["MDATA_KEY_DURATION"]); ?></td>
<tr><td><?php echo _("Language:"); ?></td><td><?php echo ($this->md["MDATA_KEY_LANGUAGE"]);?></td></tr> </tr>
<tr><td><?php echo _("Track Type:"); ?></td><td><?php echo ($this->md["MDATA_KEY_TRACK_TYPE"]);?></td></tr> <tr>
<tr><td class='file-md-qtip-nowrap'><?php echo _("File Path:"); ?></td><td><?php echo ($this->md["MDATA_KEY_FILEPATH"]);?></td></tr> <td class='file-md-qtip-nowrap'><?php echo _("Sample Rate:"); ?></td>
</table> <td><?php echo ($this->md["MDATA_KEY_SAMPLERATE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Bit Rate:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_BITRATE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Mood:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_MOOD"]); ?></td>
</tr>
<tr>
<td><?php echo _("Genre:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_GENRE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Year:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_YEAR"]); ?></td>
</tr>
<tr>
<td><?php echo _("Label:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_LABEL"]); ?></td>
</tr>
<tr>
<td><?php echo _("BPM:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_BPM"]); ?></td>
</tr>
<tr>
<td><?php echo _("Composer:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_COMPOSER"]); ?></td>
</tr>
<tr>
<td><?php echo _("Conductor:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_CONDUCTOR"]); ?></td>
</tr>
<tr>
<td><?php echo _("Copyright:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_COPYRIGHT"]); ?></td>
</tr>
<tr>
<td><?php echo _("Isrc Number:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_ISRC"]); ?></td>
</tr>
<tr>
<td><?php echo _("Website:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_URL"]); ?></td>
</tr>
<tr>
<td><?php echo _("Artwork:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_ARTWORK"]); ?></td>
</tr>
<tr>
<td><?php echo _("Artwork Data:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_ARTWORK_DATA"]); ?></td>
</tr>
<tr>
<td><?php echo _("Language:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_LANGUAGE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Track Type:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_TRACK_TYPE"]); ?></td>
</tr>
<tr>
<td class='file-md-qtip-nowrap'><?php echo _("File Path:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_FILEPATH"]); ?></td>
</tr>
</table>
<?php endif; ?> <?php endif; ?>
<?php if($this->type == "playlist" || $this->type == "block") : ?> <?php if ($this->type == "playlist" || $this->type == "block") : ?>
<div class='file-md-qtip-left'> <div class='file-md-qtip-left'>
<span><?php echo _("Name:"); ?></span><span><?php echo ($this->md["dc:title"]);?></span><br /> <span><?php echo _("Name:"); ?></span><span><?php echo ($this->md["dc:title"]); ?></span><br />
<span><?php echo _("Creator:"); ?></span><span><?php echo ($this->md["dc:creator"]);?></span><br /> <span><?php echo _("Creator:"); ?></span><span><?php echo ($this->md["dc:creator"]); ?></span><br />
<?php if ($this->type == "block" && $this->blType == "Dynamic") { ?> <?php if ($this->type == "block" && $this->blType == "Dynamic") { ?>
<span><?php echo _("Length:"); ?></span><span><?php echo $this->block->getLength();?></span><br /> <span><?php echo _("Length:"); ?></span><span><?php echo $this->block->getLength(); ?></span><br />
<?php } else { ?> <?php } else { ?>
<span><?php echo _("Length:"); ?></span><span><?php echo ($this->md["dcterms:extent"]);?></span><br /> <span><?php echo _("Length:"); ?></span><span><?php echo ($this->md["dcterms:extent"]); ?></span><br />
<?php } ?> <?php } ?>
<span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["dc:description"]);?></span> <span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["dc:description"]); ?></span>
</div> </div>
<?php if ($this->type == "playlist") { ?> <?php if ($this->type == "playlist") { ?>
<div class='file-md-qtip-legend'> <div class='file-md-qtip-legend'>
<span class='webstream'>o</span> <span><?php echo _("Web Stream"); ?></span><br /> <span class='webstream'>o</span> <span><?php echo _("Web Stream"); ?></span><br />
<span class='dynamic'>o</span> <span><?php echo _("Dynamic Smart Block"); ?></span><br /> <span class='dynamic'>o</span> <span><?php echo _("Dynamic Smart Block"); ?></span><br />
<span class='static'>o</span> <span><?php echo _("Static Smart Block"); ?></span><br /> <span class='static'>o</span> <span><?php echo _("Static Smart Block"); ?></span><br />
<span>o</span> <span><?php echo _("Audio Track"); ?></span> <span>o</span> <span><?php echo _("Audio Track"); ?></span>
</div> </div>
<?php } ?> <?php } ?>
<?php if ($this->type == "playlist" || ($this->type == "block" && $this->blType == "Static")) {?> <?php if ($this->type == "playlist" || ($this->type == "block" && $this->blType == "Static")) { ?>
<?php <?php
//XSS exploit prevention //XSS exploit prevention
/*foreach ($this->contents as &$item) { /*foreach ($this->contents as &$item) {
@ -68,26 +134,27 @@ foreach ($this->md as $key => &$value) {
<div class='file-md-qtip-left'><span><?php echo _("Static Smart Block Contents: "); ?></span></div> <div class='file-md-qtip-left'><span><?php echo _("Static Smart Block Contents: "); ?></span></div>
<?php } ?> <?php } ?>
<table class='library-get-file-md'> <table class='library-get-file-md'>
<?php foreach($this->contents as $row) : ?> <?php foreach ($this->contents as $row) : ?>
<?php <?php
$titleMaxStrLen = 35; $titleMaxStrLen = 35;
if (mb_strlen($row["track_title"], 'UTF-8') > $titleMaxStrLen) { if (mb_strlen($row["track_title"], 'UTF-8') > $titleMaxStrLen) {
$row["track_title"] = mb_substr($row["track_title"], 0, 34, 'UTF-8')."..."; $row["track_title"] = mb_substr($row["track_title"], 0, 34, 'UTF-8') . "...";
} }
$artistMaxStrLen = 22; $artistMaxStrLen = 22;
if (mb_strlen($row["creator"], 'UTF-8') > $artistMaxStrLen) { if (mb_strlen($row["creator"], 'UTF-8') > $artistMaxStrLen) {
$row["creator"] = mb_substr($row["creator"], 0, 21, 'UTF-8')."..."; $row["creator"] = mb_substr($row["creator"], 0, 21, 'UTF-8') . "...";
} }
?> ?>
<?php if ($row["type"] == 2) { <?php if ($row["type"] == 2) {
$bl = new Application_Model_Block($row["item_id"]); $bl = new Application_Model_Block($row["item_id"]);
$isStatic = $bl->isStatic(); ?> $isStatic = $bl->isStatic(); ?>
<tr class='file-md-qtip-playlist <?php if ($isStatic) echo 'static'; else echo 'dynamic';?>'> <tr class='file-md-qtip-playlist <?php if ($isStatic) echo 'static';
else echo 'dynamic'; ?>'>
<td class='file-md-qtip-row-width-title file-md-qtip-nowrap'><?php echo $row["track_title"] ?></td> <td class='file-md-qtip-row-width-title file-md-qtip-nowrap'><?php echo $row["track_title"] ?></td>
<td class='file-md-qtip-row-width-artist file-md-qtip-nowrap'><?php echo $row["creator"] ?></td> <td class='file-md-qtip-row-width-artist file-md-qtip-nowrap'><?php echo $row["creator"] ?></td>
<td class='file-md-qtip-row-width-small'><?php echo $bl->getLength(); ?></td> <td class='file-md-qtip-row-width-small'><?php echo $bl->getLength(); ?></td>
</tr> </tr>
<?php } else if ($row["type"] == 1) {?> <?php } else if ($row["type"] == 1) { ?>
<tr class='file-md-qtip-playlist webstream'> <tr class='file-md-qtip-playlist webstream'>
<td class='file-md-qtip-row-width-title file-md-qtip-nowrap'><?php echo $row["track_title"] ?></td> <td class='file-md-qtip-row-width-title file-md-qtip-nowrap'><?php echo $row["track_title"] ?></td>
<td class='file-md-qtip-row-width-artist file-md-qtip-nowrap'><?php echo $row["creator"] ?></td> <td class='file-md-qtip-row-width-artist file-md-qtip-nowrap'><?php echo $row["creator"] ?></td>
@ -107,7 +174,7 @@ foreach ($this->md as $key => &$value) {
<div class='file-md-qtip-left'><span><?php echo _("Dynamic Smart Block Criteria: "); ?></span></div> <div class='file-md-qtip-left'><span><?php echo _("Dynamic Smart Block Criteria: "); ?></span></div>
<table class='library-get-file-md table-small'> <table class='library-get-file-md table-small'>
<?php foreach ($this->contents["crit"] as &$criterias) : ?> <?php foreach ($this->contents["crit"] as &$criterias) : ?>
<?php foreach ($criterias as &$crit ) : ?> <?php foreach ($criterias as &$crit) : ?>
<?php <?php
// XSS exploit prevention // XSS exploit prevention
//$crit["value"] = htmlspecialchars($crit["value"]); //$crit["value"] = htmlspecialchars($crit["value"]);
@ -115,15 +182,15 @@ foreach ($this->md as $key => &$value) {
$valMaxStrLen = 25; $valMaxStrLen = 25;
if (strlen($crit["value"]) > $valMaxStrLen) { if (strlen($crit["value"]) > $valMaxStrLen) {
$crit["value"] = substr($crit["value"], 0, 24)."..."; $crit["value"] = substr($crit["value"], 0, 24) . "...";
} }
$critMaxStrLen = 13; $critMaxStrLen = 13;
if (strlen($crit["display_name"]) > $critMaxStrLen) { if (strlen($crit["display_name"]) > $critMaxStrLen) {
$crit["display_name"] = substr($crit["display_name"], 0, 12)."..."; $crit["display_name"] = substr($crit["display_name"], 0, 12) . "...";
} }
$modMaxStrLen = 16; $modMaxStrLen = 16;
if (strlen($crit["modifier"]) > $modMaxStrLen) { if (strlen($crit["modifier"]) > $modMaxStrLen) {
$crit["modifier"] = substr($crit["modifier"], 0, 15)."..."; $crit["modifier"] = substr($crit["modifier"], 0, 15) . "...";
} }
?> ?>
<tr> <tr>
@ -146,11 +213,11 @@ foreach ($this->md as $key => &$value) {
<?php if ($this->type == "stream") : ?> <?php if ($this->type == "stream") : ?>
<div><span><?php echo _("Name:"); ?></span><span><?php echo ($this->md["name"]);?></span></div> <div><span><?php echo _("Name:"); ?></span><span><?php echo ($this->md["name"]); ?></span></div>
<div><span><?php echo _("Length:"); ?></span><span><?php echo ($this->md["length"]);?></span></div> <div><span><?php echo _("Length:"); ?></span><span><?php echo ($this->md["length"]); ?></span></div>
<div><span><?php echo _("Creator:"); ?></span><span><?php echo ($this->md["login"]);?></span></div> <div><span><?php echo _("Creator:"); ?></span><span><?php echo ($this->md["login"]); ?></span></div>
<div><span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["description"]);?></span></div> <div><span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["description"]); ?></span></div>
<div><span><?php echo _("URL:"); ?></span><span><?php echo ($this->md["url"]);?></span></div> <div><span><?php echo _("URL:"); ?></span><span><?php echo ($this->md["url"]); ?></span></div>
<?php endif; ?> <?php endif; ?>

View File

@ -9,7 +9,7 @@ if ($this->showPlaylist) {
$display = "display:none"; $display = "display:none";
} }
?> ?>
<div class="side_playlist pl-content ui-widget ui-widget-content block-shadow omega-block padded" style="height:697px; width:720px;<?php echo $display?>"> <div class="side_playlist pl-content ui-widget ui-widget-content block-shadow omega-block padded" style="height:697px; width:720px;<?php echo $display ?>">
<?php if ($this->type == 'block') { <?php if ($this->type == 'block') {
echo $this->render('playlist/smart-block.phtml'); echo $this->render('playlist/smart-block.phtml');
} else if ($this->type == 'playlist') { } else if ($this->type == 'playlist') {
@ -22,5 +22,5 @@ if ($this->showPlaylist) {
} }
?> ?>
</div> </div>

View File

@ -7,12 +7,12 @@
</div> </div>
<div class="inner_editor_wrapper"> <div class="inner_editor_wrapper">
<form class="media-metadata"> <form class="media-metadata">
<input ng-value="media.id" class="obj_id" type="hidden"/> <input ng-value="media.id" class="obj_id" type="hidden" />
<label class="publish-md-field"><?php echo _("Title:") ?></label> <label class="publish-md-field"><?php echo _("Title:") ?></label>
<input disabled ng-model="media.track_title" type="text"/> <input disabled ng-model="media.track_title" type="text" />
<label class="publish-md-field"><?php echo _("Creator:") ?></label> <label class="publish-md-field"><?php echo _("Creator:") ?></label>
<input disabled ng-model="media.artist_name" type="text"/> <input disabled ng-model="media.artist_name" type="text" />
<label class="publish-md-field"><?php echo _("Description:") ?></label> <label class="publish-md-field"><?php echo _("Description:") ?></label>
<textarea disabled ng-model="media.description"></textarea> <textarea disabled ng-model="media.description"></textarea>

View File

@ -1,5 +1,5 @@
<div id="listenerstat_content" class="alpha-block padded"> <div id="listenerstat_content" class="alpha-block padded">
<H2><?php echo _("Listeners")?></H2> <H2><?php echo _("Listeners") ?></H2>
<div id="flot_placeholder" style="height:300px;margin:0px 50px 0px 50px"></div> <div id="flot_placeholder" style="height:300px;margin:0px 50px 0px 50px"></div>
<div id="legend" style="width:600px;height:70px;margin:0px 50px 0px 50px"></div> <div id="legend" style="width:600px;height:70px;margin:0px 50px 0px 50px"></div>
<div id="date_form" style="float:left; margin:0px 0px"> <div id="date_form" style="float:left; margin:0px 0px">
@ -7,11 +7,13 @@
<?php echo $this->date_form; ?> <?php echo $this->date_form; ?>
</div> </div>
<div id="errorStatus" style="float:right; width: 400px"> <div id="errorStatus" style="float:right; width: 400px">
<h3><?php echo _("Stream Data Collection Status")?></h3> <h3><?php echo _("Stream Data Collection Status") ?></h3>
<fieldset class="padded stream-setting-global"> <fieldset class="padded stream-setting-global">
<?php foreach ($this->errorStatus as $k=>$v) {?> <?php foreach ($this->errorStatus as $k => $v) { ?>
<div class='stream-status <?php echo ($v == 'OK')? 'status-good' : 'status-error' ?>'><p><?php echo $k?>: <?php echo $v?></p></div> <div class='stream-status <?php echo ($v == 'OK') ? 'status-good' : 'status-error' ?>'>
<?php }?> <p><?php echo $k ?>: <?php echo $v ?></p>
</div>
<?php } ?>
</fieldset> </fieldset>
</div> </div>
<div style="clear: both;"></div> <div style="clear: both;"></div>

View File

@ -1,5 +1,5 @@
<div id="showlistenerstat_content" class="alpha-block padded"> <div id="showlistenerstat_content" class="alpha-block padded">
<H2><?php echo _("Listeners")?></H2> <H2><?php echo _("Listeners") ?></H2>
<div class="error_window"></div> <div class="error_window"></div>
<div id="date_form" style="float:left; margin:0px 0px"> <div id="date_form" style="float:left; margin:0px 0px">
<h3 style="padding-left: 0px"><?php echo _("Date Range") ?></h3> <h3 style="padding-left: 0px"><?php echo _("Date Range") ?></h3>
@ -12,8 +12,8 @@
<tr> <tr>
<th><?php echo _("Show Name") ?></th> <th><?php echo _("Show Name") ?></th>
<th><?php echo _("Air Date") ?></th> <th><?php echo _("Air Date") ?></th>
<th><?php echo _("Average Listeners")?></th> <th><?php echo _("Average Listeners") ?></th>
<th><?php echo _("Maximum Number of Listeners")?></th> <th><?php echo _("Maximum Number of Listeners") ?></th>
</tr> </tr>
</thead> </thead>
<tbody> <tbody>

View File

@ -2,12 +2,12 @@
<div class="logobox">&nbsp;</div> <div class="logobox">&nbsp;</div>
<h2><?php echo _("Login") ?></h2> <h2><?php echo _("Login") ?></h2>
<div id="login" class="login-content clearfix"> <div id="login" class="login-content clearfix">
<?php if(isset($this->demo) && $this->demo == 1){?> <?php if (isset($this->demo) && $this->demo == 1) { ?>
<p style="font-weight:bold"> <p style="font-weight:bold">
<?php echo sprintf(_("Welcome to the %s demo! You can log in using the username 'admin' and the password 'admin'."), PRODUCT_NAME)?> <?php echo sprintf(_("Welcome to the %s demo! You can log in using the username 'admin' and the password 'admin'."), PRODUCT_NAME) ?>
</p> </p>
<?php }?> <?php } ?>
<p class="light" style='<?php echo $this->error?"color:#902d2d;font-size:11px;padding:2px 4px;background:#c6b4b4;margin-bottom:2px;border:1px solid #c83f3f;":""?>'><?php echo $this->message; ?></p> <p class="light" style='<?php echo $this->error ? "color:#902d2d;font-size:11px;padding:2px 4px;background:#c6b4b4;margin-bottom:2px;border:1px solid #c83f3f;" : "" ?>'><?php echo $this->message; ?></p>
<?php echo $this->form; ?> <?php echo $this->form; ?>
</div> </div>
</div> </div>

View File

@ -7,8 +7,8 @@
<br> <br>
<dl class="zend-form"> <dl class="zend-form">
<dd id="cancel-element"> <dd id="cancel-element">
<a href="<?php echo($this->baseUrl('login')); ?>"> <a href="<?php echo ($this->baseUrl('login')); ?>">
<button name="cancel" type="button" class="ui-button ui-widget ui-state-default ui-button-text-only center"><?php echo(_("Back")); ?></button> <button name="cancel" type="button" class="ui-button ui-widget ui-state-default ui-button-text-only center"><?php echo (_("Back")); ?></button>
</a> </a>
</dd> </dd>
</dl> </dl>

View File

@ -1,5 +1,5 @@
<ol class="navigation"> <ol class="navigation">
<?php foreach ($this->container as $page) : ?> <?php foreach ($this->container as $page) : ?>
<?php <?php
// Host users do not have access to the General Preferences // Host users do not have access to the General Preferences
// therefor we need to manually change the page parameters // therefor we need to manually change the page parameters
@ -10,36 +10,41 @@
if ($isHost && $page->getTitle() === 'Settings') { if ($isHost && $page->getTitle() === 'Settings') {
$page->set('resource', 'usersettings'); $page->set('resource', 'usersettings');
$page->set('controller', 'user'); $page->set('controller', 'user');
$page->set('action','edit-user'); $page->set('action', 'edit-user');
} }
?> ?>
<?php if($this->navigation()->accept($page)) : ?> <?php if ($this->navigation()->accept($page)) : ?>
<li class="top <?php if($page->isActive(true)){echo 'active';} ?>"> <li class="top <?php if ($page->isActive(true)) {
<?php if($page->hasPages()) : ?> echo 'active';
} ?>">
<?php if ($page->hasPages()) : ?>
<a class="top_link" href="<?php echo $page->getHref(); ?>"> <a class="top_link" href="<?php echo $page->getHref(); ?>">
<span class="down"><?php echo $page->getClass(); echo _($page->getLabel()); ?></span> <span class="down"><?php echo $page->getClass();
echo _($page->getLabel()); ?></span>
</a> </a>
<ul class="sub"> <ul class="sub">
<?php foreach ($page->getPages() as $sub) : <?php foreach ($page->getPages() as $sub) :
if($sub->getId() == "manage_folder"){ if ($sub->getId() == "manage_folder") {
continue; continue;
} ?> } ?>
<?php if($this->navigation()->accept($sub)) : ?> <?php if ($this->navigation()->accept($sub)) : ?>
<li> <li>
<a href="<?php echo $sub->getHref(); ?>" <?php echo ($sub->getTarget() != "")?"target=\"".$sub->getTarget()."\"":""; ?>><?php echo $page->getClass(); echo _($sub->getLabel()); ?></a> <a href="<?php echo $sub->getHref(); ?>" <?php echo ($sub->getTarget() != "") ? "target=\"" . $sub->getTarget() . "\"" : ""; ?>><?php echo $page->getClass();
echo _($sub->getLabel()); ?></a>
</li> </li>
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php else: ?> <?php else : ?>
<a class="top_link" href="<?php echo $page->getHref(); ?>"> <a class="top_link" href="<?php echo $page->getHref(); ?>">
<span><?php echo $page->getClass(); echo _($page->getLabel()); ?></span> <span><?php echo $page->getClass();
echo _($page->getLabel()); ?></span>
</a> </a>
<?php endif; ?> <?php endif; ?>
</li> </li>
<?php endif; ?> <?php endif; ?>
<?php endforeach; ?> <?php endforeach; ?>
</ol> </ol>

View File

@ -9,7 +9,8 @@
<div class="text-row"><strong><?php echo _("Previous:"); ?></strong> <span id='previous'></span> <span id='prev-length'></span></div> <div class="text-row"><strong><?php echo _("Previous:"); ?></strong> <span id='previous'></span> <span id='prev-length'></span></div>
<div class="now-playing-info song"> <div class="now-playing-info song">
<div class="time-flow"><span class="song-length" id="song-length"></span><span class="time-elapsed" id="time-elapsed"></span><span class="time-remaining" id="time-remaining"></span></div> <div class="time-flow"><span class="song-length" id="song-length"></span><span class="time-elapsed" id="time-elapsed"></span><span class="time-remaining" id="time-remaining"></span></div>
<span id='current'></span></div> <span id='current'></span>
</div>
<div class="progressbar"> <div class="progressbar">
<div class="progress-song" id="progress-bar" style="width:0%;"></div> <div class="progress-song" id="progress-bar" style="width:0%;"></div>
</div> </div>
@ -35,16 +36,16 @@
<?php echo _("Master Source") ?> <?php echo _("Master Source") ?>
</div> </div>
<div class="line-to-switch"></div> <div class="line-to-switch"></div>
<a href="#" id="master_dj" class="source-switch-button" onclick="setSwitchListener(this);"><span><?php echo $this->master_dj_switch?></span></a> <a href="#" id="master_dj" class="source-switch-button" onclick="setSwitchListener(this);"><span><?php echo $this->master_dj_switch ?></span></a>
<div class="line-to-on-air"></div> <div class="line-to-on-air"></div>
</li> </li>
<li> <li>
<div id="live_dj_div" class="source-label"> <div id="live_dj_div" class="source-label">
<a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a> <a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a>
<?php echo _("Show Source")?> <?php echo _("Show Source") ?>
</div> </div>
<div class="line-to-switch"></div> <div class="line-to-switch"></div>
<a href="#" id="live_dj" class="source-switch-button" onclick="setSwitchListener(this);"><span><?php echo $this->live_dj_switch?></span></a> <a href="#" id="live_dj" class="source-switch-button" onclick="setSwitchListener(this);"><span><?php echo $this->live_dj_switch ?></span></a>
<div class="line-to-on-air"></div> <div class="line-to-on-air"></div>
</li> </li>
</ul> </ul>
@ -57,9 +58,9 @@
<div class="time-info-block pull-right"> <div class="time-info-block pull-right">
<div class="time" id="time"></div> <div class="time" id="time"></div>
<div class="personal-block"> <div class="personal-block">
<a id="current-user" href=<?php echo $this->baseUrl . "/user/edit-user"?>><span class="name"><?php echo $this->escape($this->loggedInAs()); ?></span></a> <a id="current-user" href=<?php echo $this->baseUrl . "/user/edit-user" ?>><span class="name"><?php echo $this->escape($this->loggedInAs()); ?></span></a>
<span>|</span> <span>|</span>
<a href=<?php echo $this->baseUrl . "/login/logout"?>><?php echo _("Logout")?></a> <a href=<?php echo $this->baseUrl . "/login/logout" ?>><?php echo _("Logout") ?></a>
</div> </div>
</div> </div>
</div> </div>

View File

@ -1,5 +1,9 @@
<?php if ($this->objType == "block") { $displayText = "smart block"; } else { $displayText = $this->escape($this->objType); } ?> <?php if ($this->objType == "block") {
$displayText = "smart block";
} else {
$displayText = $this->escape($this->objType);
} ?>
<h3>You do not have permission to edit this <?php echo $displayText; ?>.</h3> <h3>You do not have permission to edit this <?php echo $displayText; ?>.</h3>
<input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>"/> <input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>" />
<input class='obj_type' type='hidden' value="<?php echo $this->escape($this->objType); ?>"/> <input class='obj_type' type='hidden' value="<?php echo $this->escape($this->objType); ?>" />
<input type="hidden" class="playlist_name_display" contenteditable="true" value="<?php echo $this->escape($this->obj->getName()); ?>"> <input type="hidden" class="playlist_name_display" contenteditable="true" value="<?php echo $this->escape($this->obj->getName()); ?>">

View File

@ -7,17 +7,17 @@ if (isset($this->obj)) {
<?php if (isset($this->obj)) : ?> <?php if (isset($this->obj)) : ?>
<div class="inner_editor_title"> <div class="inner_editor_title">
<H2><?php echo(_("Editing "));?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName; <H2><?php echo (_("Editing ")); ?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName;
else echo $this->escape($this->obj->getName());?></span>"</H2> else echo $this->escape($this->obj->getName()); ?></span>"</H2>
</div> </div>
<div class="inner_editor_wrapper"> <div class="inner_editor_wrapper">
<input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>"/> <input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>" />
<input class="obj_lastMod" type="hidden" value="<?php echo $this->obj->getLastModified('U'); ?>"/> <input class="obj_lastMod" type="hidden" value="<?php echo $this->obj->getLastModified('U'); ?>" />
<input class='obj_type' type='hidden' value='playlist'/> <input class='obj_type' type='hidden' value='playlist' />
<dl class="zend_form playlist_editor"> <dl class="zend_form playlist_editor">
<dt> <dt>
<label><?php echo(_("Name:")); ?></label> <label><?php echo (_("Name:")); ?></label>
</dt> </dt>
<dd> <dd>
<input type="text" class="playlist_name_display" contenteditable="true" value="<?php echo $this->escape($this->obj->getName()); ?>"> <input type="text" class="playlist_name_display" contenteditable="true" value="<?php echo $this->escape($this->obj->getName()); ?>">
@ -28,13 +28,14 @@ if (isset($this->obj)) {
</dd> </dd>
</dl> </dl>
<?php //echo $this->form; ?> <?php //echo $this->form;
?>
</div> </div>
<div class="ui-widget-header fg-toolbar btn-toolbar clearfix"> <div class="ui-widget-header fg-toolbar btn-toolbar clearfix">
<h4 class="obj_length"><?php echo($this->length); ?></h4> <h4 class="obj_length"><?php echo ($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo(_("Duration:"));?></h4> <h4 class="obj_length_label"><?php echo (_("Duration:")); ?></h4>
<div class='btn-group'> <div class='btn-group'>
<button class="btn toggle-editor-form" title='<?php echo _("Toggle Details") ?>' type="button"><span class="icon-white spl-no-r-margin icon-chevron-up"></span></button> <button class="btn toggle-editor-form" title='<?php echo _("Toggle Details") ?>' type="button"><span class="icon-white spl-no-r-margin icon-chevron-up"></span></button>

View File

@ -1,18 +1,14 @@
<dl id="spl_cue_editor" class="inline-list"> <dl id="spl_cue_editor" class="inline-list">
<dd data-uri="<?php echo $this->uri; ?>"> <dd data-uri="<?php echo $this->uri; ?>">
<input type="button" class="pl-waveform-cues-btn" value="<?php echo _("Show Waveform")?>"></input> <input type="button" class="pl-waveform-cues-btn" value="<?php echo _("Show Waveform") ?>"></input>
</dd> </dd>
<dt><?php echo _("Cue In: "); ?><span class='spl_cue_hint'><?php echo _("(hh:mm:ss.t)")?></span></dt> <dt><?php echo _("Cue In: "); ?><span class='spl_cue_hint'><?php echo _("(hh:mm:ss.t)") ?></span></dt>
<dd id="spl_cue_in_<?php echo $this->id; ?>" class="spl_cue_in" <dd id="spl_cue_in_<?php echo $this->id; ?>" class="spl_cue_in" data-cue-in="<?php echo $this->cueIn; ?>" data-cue-sec="<?php echo $this->cueInSec; ?>">
data-cue-in="<?php echo $this->cueIn; ?>"
data-cue-sec="<?php echo $this->cueInSec; ?>">
<span contenteditable="true" class="spl_text_input"><?php echo $this->cueIn; ?></span> <span contenteditable="true" class="spl_text_input"><?php echo $this->cueIn; ?></span>
</dd> </dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>
<dt><?php echo _("Cue Out: "); ?><span class='spl_cue_hint'><?php echo _("(hh:mm:ss.t)")?></span></dt> <dt><?php echo _("Cue Out: "); ?><span class='spl_cue_hint'><?php echo _("(hh:mm:ss.t)") ?></span></dt>
<dd id="spl_cue_out_<?php echo $this->id; ?>" class="spl_cue_out" <dd id="spl_cue_out_<?php echo $this->id; ?>" class="spl_cue_out" data-cue-out="<?php echo $this->cueOut; ?>" data-cue-sec="<?php echo $this->cueOutSec; ?>">
data-cue-out="<?php echo $this->cueOut; ?>"
data-cue-sec="<?php echo $this->cueOutSec; ?>">
<span contenteditable="true" class="spl_text_input"><?php echo $this->cueOut; ?></span> <span contenteditable="true" class="spl_text_input"><?php echo $this->cueOut; ?></span>
</dd> </dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>

View File

@ -1,31 +1,23 @@
<dl id="spl_editor" class="inline-list"> <dl id="spl_editor" class="inline-list">
<dd> <dd>
<input type="button" class="pl-waveform-fades-btn" value="<?php echo _("Show Waveform")?>"></input> <input type="button" class="pl-waveform-fades-btn" value="<?php echo _("Show Waveform") ?>"></input>
</dd> </dd>
<?php if ($this->item1Type == 0) {?> <?php if ($this->item1Type == 0) { ?>
<dt><?php echo _("Fade out: "); ?><span class='spl_cue_hint'><?php echo _("(ss.t)")?></span></dt> <dt><?php echo _("Fade out: "); ?><span class='spl_cue_hint'><?php echo _("(ss.t)") ?></span></dt>
<dd id="spl_fade_out_<?php echo $this->item1; ?>" class="spl_fade_out" <dd id="spl_fade_out_<?php echo $this->item1; ?>" class="spl_fade_out" data-fadeout="<?php echo $this->item1Url; ?>" data-cuein="<?php echo $this->cueIn1; ?>" data-cueout="<?php echo $this->cueOut1; ?>" data-length="<?php echo $this->fadeOut; ?>" data-type="logarithmic" data-item="<?php echo $this->item1; ?>">
data-fadeout="<?php echo $this->item1Url; ?>"
data-cuein="<?php echo $this->cueIn1; ?>"
data-cueout="<?php echo $this->cueOut1; ?>"
data-length="<?php echo $this->fadeOut; ?>"
data-type="logarithmic"
data-item="<?php echo $this->item1; ?>">
<span contenteditable="true" class="spl_text_input"><?php echo $this->fadeOut; ?></span> <span contenteditable="true" class="spl_text_input"><?php echo $this->fadeOut; ?></span>
</dd> </dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>
<?php } <?php }
if (isset($this->item2Url)) {?> if (isset($this->item2Url)) { ?>
<dt><?php echo _("Fade in: "); ?><span class='spl_cue_hint'><?php echo _("(ss.t)")?></span></dt> <dt><?php echo _("Fade in: "); ?><span class='spl_cue_hint'><?php echo _("(ss.t)") ?></span></dt>
<dd id="spl_fade_in_<?php echo $this->item2; ?>" class="spl_fade_in" <dd id="spl_fade_in_<?php echo $this->item2; ?>" class="spl_fade_in" data-fadein="<?php echo $this->item2Url; ?>" data-offset="<?php if ($this->item1Type == 0) {
data-fadein="<?php echo $this->item2Url; ?>" echo $this->offset;
data-offset="<?php if ($this->item1Type == 0) { echo $this->offset; } else { echo 0; } ?>" } else {
data-cuein="<?php echo $this->cueIn2; ?>" echo 0;
data-cueout="<?php echo $this->cueOut2; ?>" data-length="<?php echo $this->fadeIn; ?>" } ?>" data-cuein="<?php echo $this->cueIn2; ?>" data-cueout="<?php echo $this->cueOut2; ?>" data-length="<?php echo $this->fadeIn; ?>" data-type="logarithmic" data-item="<?php echo $this->item2; ?>">
data-type="logarithmic"
data-item="<?php echo $this->item2; ?>">
<span contenteditable="true" class="spl_text_input"><?php echo $this->fadeIn; ?></span> <span contenteditable="true" class="spl_text_input"><?php echo $this->fadeIn; ?></span>
</dd> </dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>
<?php }?> <?php } ?>
</dl> </dl>

View File

@ -7,17 +7,17 @@ if (isset($this->obj)) {
<?php if (isset($this->obj)) : ?> <?php if (isset($this->obj)) : ?>
<div class="inner_editor_title"> <div class="inner_editor_title">
<H2><?php echo(_("Editing "));?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName; <H2><?php echo (_("Editing ")); ?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName;
else echo $this->escape($this->obj->getName());?></span>"</H2> else echo $this->escape($this->obj->getName()); ?></span>"</H2>
</div> </div>
<div class="inner_editor_wrapper smart-block-form"> <div class="inner_editor_wrapper smart-block-form">
<input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>"/> <input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>" />
<input class="obj_lastMod" type="hidden" value="<?php echo $this->obj->getLastModified('U'); ?>"/> <input class="obj_lastMod" type="hidden" value="<?php echo $this->obj->getLastModified('U'); ?>" />
<input class='obj_type' type='hidden' value='block'/> <input class='obj_type' type='hidden' value='block' />
<dl class="zend_form playlist_editor"> <dl class="zend_form playlist_editor">
<dt> <dt>
<label><?php echo(_("Name:")); ?></label> <label><?php echo (_("Name:")); ?></label>
</dt> </dt>
<dd> <dd>
<input type="text" class="playlist_name_display" contenteditable="true" value="<?php <input type="text" class="playlist_name_display" contenteditable="true" value="<?php
@ -44,17 +44,17 @@ if (isset($this->obj)) {
</div> </div>
<div class="ui-widget-header fg-toolbar btn-toolbar clearfix"> <div class="ui-widget-header fg-toolbar btn-toolbar clearfix">
<h4 class="obj_length"><?php echo($this->length); ?></h4> <h4 class="obj_length"><?php echo ($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo(_("Duration:"));?></h4> <h4 class="obj_length_label"><?php echo (_("Duration:")); ?></h4>
<div class='btn-group'> <div class='btn-group'>
<button class="btn toggle-editor-form" title='<?php echo _("Toggle Details") ?>' type="button"><span class="icon-white spl-no-r-margin icon-chevron-up"></span></button> <button class="btn toggle-editor-form" title='<?php echo _("Toggle Details") ?>' type="button"><span class="icon-white spl-no-r-margin icon-chevron-up"></span></button>
</div> </div>
<div class='btn-group'> <div class='btn-group'>
<?php echo $this->form->getElement('generate_button');?> <?php echo $this->form->getElement('generate_button'); ?>
</div> </div>
<div class='btn-group'> <div class='btn-group'>
<?php echo $this->form->getElement('shuffle_button');?> <?php echo $this->form->getElement('shuffle_button'); ?>
</div> </div>
<div class='btn-group'> <div class='btn-group'>
<button id="spl_crossfade" class="btn crossfade-main-button"> <button id="spl_crossfade" class="btn crossfade-main-button">
@ -72,10 +72,12 @@ if (isset($this->obj)) {
<dl id="spl_editor-main" class="inline-list"> <dl id="spl_editor-main" class="inline-list">
<dt><?php echo _("Fade in: "); ?></dt> <dt><?php echo _("Fade in: "); ?></dt>
<dd> <dd>
<input class="spl_main_fade_in playlist_main_fade_input" value="0" /><span class='spl_cue_hint'> seconds</span></dd> <input class="spl_main_fade_in playlist_main_fade_input" value="0" /><span class='spl_cue_hint'> seconds</span>
</dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>
<dt><?php echo _("Fade out: "); ?></dt> <dt><?php echo _("Fade out: "); ?></dt>
<dd><input class="spl_main_fade_out playlist_main_fade_input" value="0" /><span class='spl_cue_hint'> seconds</span></dd></dd> <dd><input class="spl_main_fade_out playlist_main_fade_input" value="0" /><span class='spl_cue_hint'> seconds</span></dd>
</dd>
<dd class="edit-error"></dd> <dd class="edit-error"></dd>
</dl> </dl>
</div> </div>
@ -91,9 +93,10 @@ if (isset($this->obj)) {
<div class='btn-group pull-right'> <div class='btn-group pull-right'>
<button class="btn" title='Save smart block&#39s title, description, and criteria' type="button" id="save_button"><?php echo _("Save") ?></button> <button class="btn" title='Save smart block&#39s title, description, and criteria' type="button" id="save_button"><?php echo _("Save") ?></button>
</div> </div>
<div id='sp-success-saved' class='success' style='display:none'><span</div> <div id='sp-success-saved' class='success' style='display:none'>
<span< /div>
</div> </div>
<?php else : ?> <?php else : ?>
<div><?php echo _("No smart block currently open") ?></div> <div><?php echo _("No smart block currently open") ?></div>
<?php endif; ?> <?php endif; ?>

View File

@ -12,73 +12,71 @@ if ($isSmartBlock && $this->showPoolCount) { ?>
</span> </span>
<?php if ($this->poolCount > 0) { ?> <?php if ($this->poolCount > 0) { ?>
<span class='checked-icon sp-checked-icon' id='sp_pool_count_icon'></span> <span class='checked-icon sp-checked-icon' id='sp_pool_count_icon'></span>
<?php } <?php } else { ?>
else { ?>
<span class='sp-warning-icon' id='sp_pool_count_icon'></span> <span class='sp-warning-icon' id='sp_pool_count_icon'></span>
<?php } ?> <?php } ?>
</div> </div>
<?php <?php
} }
if (count($items) && ($isSmartBlock || $isPlaylist)) : ?> if (count($items) && ($isSmartBlock || $isPlaylist)) : ?>
<?php $i = 0; ?> <?php $i = 0; ?>
<?php if ($isSmartBlock && !($this->obj->isStatic())) { <?php if ($isSmartBlock && !($this->obj->isStatic())) {
echo _("</br>This is only a preview of possible content generated by the smart block based upon the above criteria.");} echo _("</br>This is only a preview of possible content generated by the smart block based upon the above criteria.");
?> }
<?php foreach($items as $item) : ?>
$staticBlock = null; <?php foreach ($items as $item) :
$nextFileUrl = null; $staticBlock = null;
if ($item['type'] == 2) { $nextFileUrl = null;
$bl= new Application_Model_Block($item['item_id']); if ($item['type'] == 2) {
$bl = new Application_Model_Block($item['item_id']);
$staticBlock = $bl->isStatic(); $staticBlock = $bl->isStatic();
$fileUrl = null; $fileUrl = null;
} } else if ($item['type'] == 1) {
else if ($item['type'] == 1) {
$fileUrl = null; $fileUrl = null;
} } else if ($item['type'] == 0) {
else if ($item['type'] == 0) {
$audiofile = Application_Model_StoredFile::RecallById($item['item_id']); $audiofile = Application_Model_StoredFile::RecallById($item['item_id']);
$fileUrl = $audiofile->getFileUrl(); $fileUrl = $audiofile->getFileUrl();
} }
if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) { if (($i < count($items) - 1) && ($items[$i + 1]['type'] == 0)) {
$nextAudiofile = Application_Model_StoredFile::RecallById($items[$i+1]['item_id']); $nextAudiofile = Application_Model_StoredFile::RecallById($items[$i + 1]['item_id']);
$nextFileUrl = $nextAudiofile->getFileUrl(); $nextFileUrl = $nextAudiofile->getFileUrl();
} }
?> ?>
<li class="ui-state-default" id="spl_<?php echo $item["id"] ?>" unqid="<?php echo $item["id"]; ?>"> <li class="ui-state-default" id="spl_<?php echo $item["id"] ?>" unqid="<?php echo $item["id"]; ?>">
<div class="list-item-container"> <div class="list-item-container">
<?php if ($item['type'] == 0 && $item['exists']):?> <?php if ($item['type'] == 0 && $item['exists']) : ?>
<div class="big_play" audioFile="<?php echo $item["id"]; ?>" data-mime-type="<?php echo $item["mime"]; ?>"> <div class="big_play" audioFile="<?php echo $item["id"]; ?>" data-mime-type="<?php echo $item["mime"]; ?>">
<span class="ui-icon ui-icon-play"></span> <span class="ui-icon ui-icon-play"></span>
</div> </div>
<?php elseif ($item['type'] == 1 && $item['exists']): ?> <?php elseif ($item['type'] == 1 && $item['exists']) : ?>
<div class="big_play" data-mime-type="<?php echo $item["mime"]; ?>"> <div class="big_play" data-mime-type="<?php echo $item["mime"]; ?>">
<span class="ui-icon ui-icon-play"></span> <span class="ui-icon ui-icon-play"></span>
</div> </div>
<?php elseif ($item['type'] == 2 && $item['exists']): ?> <?php elseif ($item['type'] == 2 && $item['exists']) : ?>
<div class="big_play" blockId="<?php echo $item["item_id"]; ?>" blocktype="<?php echo $staticBlock?"static":"dynamic"?>"> <div class="big_play" blockId="<?php echo $item["item_id"]; ?>" blocktype="<?php echo $staticBlock ? "static" : "dynamic" ?>">
<span class="ui-icon ui-icon-play"></span> <span class="ui-icon ui-icon-play"></span>
</div> </div>
<?php else:?> <?php else : ?>
<div class="big_play ui-state-hover"> <div class="big_play ui-state-hover">
<span class="ui-icon ui-icon-alert"></span> <span class="ui-icon ui-icon-alert"></span>
</div> </div>
<?php endif; ?> <?php endif; ?>
<div class="text-row top"> <div class="text-row top">
<span class="spl_playlength"><?php echo $item["length"] ?></span> <span class="spl_playlength"><?php echo $item["length"] ?></span>
<?php if ($item['type'] == 0) {?> <?php if ($item['type'] == 0) { ?>
<!-- <span class="spl_cue ui-state-default"></span> --> <!-- <span class="spl_cue ui-state-default"></span> -->
<?php } else if ($item['type'] == 2) { <?php } else if ($item['type'] == 2) {
if ($staticBlock) {?> if ($staticBlock) { ?>
<span class="spl_block_expand close" blockId="<?php echo $item["item_id"]; ?>" id="expand_block_<?php echo $item["id"]?>"> <span class="spl_block_expand close" blockId="<?php echo $item["item_id"]; ?>" id="expand_block_<?php echo $item["id"] ?>">
<span class="ui-icon ui-icon-triangle-2-n-s"></span> <span class="ui-icon ui-icon-triangle-2-n-s"></span>
<?php echo _("Expand Static Block")?> <?php echo _("Expand Static Block") ?>
</span> </span>
<?php } else { ?> <?php } else { ?>
<span class="spl_block_expand close" blockId="<?php echo $item["item_id"]; ?>" id="expand_block_<?php echo $item["id"]?>"> <span class="spl_block_expand close" blockId="<?php echo $item["item_id"]; ?>" id="expand_block_<?php echo $item["id"] ?>">
<span class="ui-icon ui-icon-triangle-2-n-s"></span> <span class="ui-icon ui-icon-triangle-2-n-s"></span>
<?php echo _("Expand Dynamic Block")?> <?php echo _("Expand Dynamic Block") ?>
</span> </span>
<?php } <?php }
} ?> } ?>
@ -86,16 +84,16 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
</div> </div>
<div class="text-row"> <div class="text-row">
<span class="spl_artist"><?php echo $item['creator'] ?></span> <span class="spl_artist"><?php echo $item['creator'] ?></span>
<span class="spl_offset"><?php echo $item["offset"]?></span> <span class="spl_offset"><?php echo $item["offset"] ?></span>
</div> </div>
<?php //create the crossfade icon. <?php //create the crossfade icon.
if (($i < count($items) -1) && !($items[$i]['type'] == 2 && $items[$i+1]['type'])): if (($i < count($items) - 1) && !($items[$i]['type'] == 2 && $items[$i + 1]['type'])) :
?> ?>
<!-- <div id="fade_<?php echo $i ?>" class="spl_fade_control ui-state-default"></div> --> <!-- <div id="fade_<?php echo $i ?>" class="spl_fade_control ui-state-default"></div> -->
<?php endif; ?> <?php endif; ?>
<span id="remove_<?php echo $item["id"] ?>" class="ui-icon ui-icon-closethick"></span> <span id="remove_<?php echo $item["id"] ?>" class="ui-icon ui-icon-closethick"></span>
</div> </div>
<?php if ($item['type'] == 0) {?> <?php if ($item['type'] == 0) { ?>
<div id="cues_<?php echo $i ?>" class="cue-edit clearfix" style="display: none"> <div id="cues_<?php echo $i ?>" class="cue-edit clearfix" style="display: none">
<?php echo $this->partial('playlist/set-cue.phtml', array( <?php echo $this->partial('playlist/set-cue.phtml', array(
'id' => $item["id"], 'id' => $item["id"],
@ -104,22 +102,23 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
'cueInSec' => $item['cueInSec'], 'cueInSec' => $item['cueInSec'],
'cueOutSec' => $item['cueOutSec'], 'cueOutSec' => $item['cueOutSec'],
'uri' => $fileUrl, 'uri' => $fileUrl,
'origLength' => $item['orig_length'])); ?> 'origLength' => $item['orig_length']
)); ?>
</div> </div>
<?php }?> <?php } ?>
<?php //create a fade editor box <?php //create a fade editor box
//(fadeout of current position + fade in of next position) //(fadeout of current position + fade in of next position)
if(($i < count($items) -1) && !($items[$i]['type'] == 2 && $items[$i+1]['type'])): if (($i < count($items) - 1) && !($items[$i]['type'] == 2 && $items[$i + 1]['type'])) :
?> ?>
<div id="crossfade_<?php echo $i ?>-<?php echo $i+1 ?>" class="crossfade clearfix" style="display: none"> <div id="crossfade_<?php echo $i ?>-<?php echo $i + 1 ?>" class="crossfade clearfix" style="display: none">
<?php <?php
$vars = array( $vars = array(
'item1' => $items[$i]['id'], 'item1' => $items[$i]['id'],
'fadeOut' => $items[$i]['fadeout'], 'fadeOut' => $items[$i]['fadeout'],
'fadeIn' => $items[$i+1]['fadein'], 'fadeIn' => $items[$i + 1]['fadein'],
'item1Type' => $items[$i]['type'], 'item1Type' => $items[$i]['type'],
'cueIn1' => $items[$i]['cueInSec'], 'cueIn1' => $items[$i]['cueInSec'],
'cueOut1' => $items[$i]['cueOutSec'], 'cueOut1' => $items[$i]['cueOutSec'],
@ -128,11 +127,11 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
$item2 = array( $item2 = array(
'item2Url' => $nextFileUrl, 'item2Url' => $nextFileUrl,
'item2' => $items[$i+1]['id'], 'item2' => $items[$i + 1]['id'],
'item2Type' => $items[$i+1]['type'], 'item2Type' => $items[$i + 1]['type'],
'offset' => $items[$i]['trackSec'] - $items[$i+1]['trackoffset'], 'offset' => $items[$i]['trackSec'] - $items[$i + 1]['trackoffset'],
'cueIn2' => $items[$i+1]['cueInSec'], 'cueIn2' => $items[$i + 1]['cueInSec'],
'cueOut2' => $items[$i+1]['cueOutSec'] 'cueOut2' => $items[$i + 1]['cueOutSec']
); );
if (isset($nextFileUrl)) { if (isset($nextFileUrl)) {
@ -144,16 +143,16 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
?> ?>
</div> </div>
<?php endif; ?> <?php endif; ?>
<?php if ($item['type'] == 2) {?> <?php if ($item['type'] == 2) { ?>
<ul style='display:none' id="block_<?php echo $item["id"]?>_info" class="smart-block-info expand-block-separate"></ul> <ul style='display:none' id="block_<?php echo $item["id"] ?>_info" class="smart-block-info expand-block-separate"></ul>
<?php } ?> <?php } ?>
</li> </li>
<?php $i = $i+1; ?> <?php $i = $i + 1; ?>
<?php endforeach; ?> <?php endforeach; ?>
<?php else : ?> <?php else : ?>
<div class="spl_empty"> <div class="spl_empty">
<?php <?php
if ($this->obj instanceof Application_Model_Block) { if ($this->obj instanceof Application_Model_Block) {
if ($this->obj->isStatic()) { if ($this->obj->isStatic()) {
echo _("Choose some search criteria above and click Generate to create this playlist."); echo _("Choose some search criteria above and click Generate to create this playlist.");
@ -163,6 +162,6 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
} else { } else {
echo _("Drag tracks here from your library to add them to the playlist"); echo _("Drag tracks here from your library to add them to the playlist");
} }
?> ?>
</div> </div>
<?php endif; ?> <?php endif; ?>

View File

@ -1 +1 @@
<?php echo $this->form; ?> <?php echo $this->form;

View File

@ -1,16 +1,16 @@
<div id="history_content" class=" alpha-block padded"> <div id="history_content" class=" alpha-block padded">
<h2><?php echo(_("Playout History"));?></h2> <h2><?php echo (_("Playout History")); ?></h2>
<?php echo $this->date_form; ?> <?php echo $this->date_form; ?>
<div id="his-tabs"> <div id="his-tabs">
<ul> <ul>
<?php if ($this->userType != UTYPE_HOST): ?> <?php if ($this->userType != UTYPE_HOST) : ?>
<li><a href="#his-tabs-1"><?php echo _("Log Sheet"); ?></a></li> <li><a href="#his-tabs-1"><?php echo _("Log Sheet"); ?></a></li>
<li><a href="#his-tabs-2"><?php echo _("File Summary"); ?></a></li> <li><a href="#his-tabs-2"><?php echo _("File Summary"); ?></a></li>
<?php endif; ?> <?php endif; ?>
<li><a href="#his-tabs-3"><?php echo _("Show Summary"); ?></a></li> <li><a href="#his-tabs-3"><?php echo _("Show Summary"); ?></a></li>
</ul> </ul>
<?php if ($this->userType != UTYPE_HOST): ?> <?php if ($this->userType != UTYPE_HOST) : ?>
<div id="his-tabs-1"> <div id="his-tabs-1">
<table id="history_table_list" cellpadding="0" cellspacing="0" class="datatable"></table> <table id="history_table_list" cellpadding="0" cellspacing="0" class="datatable"></table>
</div> </div>

View File

@ -1,21 +1,23 @@
<div id="history_template" class="prefpanel alpha-block padded-strong"> <div id="history_template" class="prefpanel alpha-block padded-strong">
<div> <div>
<h2><?php echo(_("Playout History Templates"));?></h2> <h2><?php echo (_("Playout History Templates")); ?></h2>
<div><h4><?php echo _("Log Sheet Templates") ?></h4></div> <div>
<h4><?php echo _("Log Sheet Templates") ?></h4>
</div>
<button id="new_item_template" class="btn btn-new"><?php echo _("New Log Sheet Template") ?></button> <button id="new_item_template" class="btn btn-new"><?php echo _("New Log Sheet Template") ?></button>
<ul id="template_list"> <ul id="template_list">
<?php if (count($this->template_list) == 0): ?> <?php if (count($this->template_list) == 0) : ?>
<li><?php echo _("No Log Sheet Templates") ?></li> <li><?php echo _("No Log Sheet Templates") ?></li>
<?php endif; ?> <?php endif; ?>
<?php foreach ($this->template_list as $id=>$name): ?> <?php foreach ($this->template_list as $id => $name) : ?>
<?php if (in_array($id, $this->configured)): ?> <?php if (in_array($id, $this->configured)) : ?>
<li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>" class="template_configured"> <li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>" class="template_configured">
<a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>"> <a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>">
<?php echo $name; ?> <?php echo $name; ?>
</a> </a>
<i class="icon icon-ok"></i> <i class="icon icon-ok"></i>
<?php else: ?> <?php else : ?>
<li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>"> <li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>">
<a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>"> <a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>">
<?php echo $name; ?> <?php echo $name; ?>
@ -33,20 +35,22 @@
</div> </div>
<br><br> <br><br>
<div> <div>
<div><h4><?php echo _("File Summary Templates") ?></h4></div> <div>
<h4><?php echo _("File Summary Templates") ?></h4>
</div>
<button id="new_file_template" class="btn btn-new"><?php echo _("New File Summary Template") ?></button> <button id="new_file_template" class="btn btn-new"><?php echo _("New File Summary Template") ?></button>
<ul id="template_file"> <ul id="template_file">
<?php if (count($this->template_file) == 0): ?> <?php if (count($this->template_file) == 0) : ?>
<li><?php echo _("No File Summary Templates") ?></li> <li><?php echo _("No File Summary Templates") ?></li>
<?php endif; ?> <?php endif; ?>
<?php foreach ($this->template_file as $id=>$name): ?> <?php foreach ($this->template_file as $id => $name) : ?>
<?php if (in_array($id, $this->configured)): ?> <?php if (in_array($id, $this->configured)) : ?>
<li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>" class="template_configured"> <li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>" class="template_configured">
<a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>"> <a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>">
<?php echo $name; ?> <?php echo $name; ?>
</a> </a>
<i class="icon icon-ok"></i> <i class="icon icon-ok"></i>
<?php else: ?> <?php else : ?>
<li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>"> <li data-template="<?php echo $id; ?>" data-name="<?php echo $name; ?>">
<a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>"> <a class="template_name" href="<?php echo $this->baseUrl("Playouthistorytemplate/configure-template/id/{$id}"); ?>">
<?php echo $name; ?> <?php echo $name; ?>

View File

@ -1,7 +1,7 @@
<?php if ($this->template_type == Application_Service_HistoryService::TEMPLATE_TYPE_FILE): ?> <?php if ($this->template_type == Application_Service_HistoryService::TEMPLATE_TYPE_FILE) : ?>
<h4><?php echo _("Creating File Summary Template") ?></h4> <h4><?php echo _("Creating File Summary Template") ?></h4>
<?php else: ?> <?php else : ?>
<h4><?php echo _("Creating Log Sheet Template") ?></h4> <h4><?php echo _("Creating Log Sheet Template") ?></h4>
<?php endif; ?> <?php endif; ?>
<div class="template_name_wrap"> <div class="template_name_wrap">
@ -15,22 +15,16 @@
?> ?>
<ul class="template_item_list"> <ul class="template_item_list">
<?php foreach ($this->template_fields as $field): ?> <?php foreach ($this->template_fields as $field) : ?>
<?php if($field["isFileMd"]) { <?php if ($field["isFileMd"]) {
$usedFileMD[] = $field["name"]; $usedFileMD[] = $field["name"];
} ?> } ?>
<li id="<?php echo "field_".$i?>" <li id="<?php echo "field_" . $i ?>" data-id="<?php echo isset($field["id"]) ? $field["id"] : ""; ?>" data-name="<?php echo $field["name"] ?>" data-label="<?php echo $field["label"] ?>" data-type="<?php echo $field["type"] ?>" data-filemd="<?php echo var_export($field["isFileMd"], true) ?>" class="<?php echo ($field["isFileMd"]) ? 'field_filemd' : 'field_other' ?>">
data-id="<?php echo isset($field["id"]) ? $field["id"] : ""; ?>" <span><?php echo $field["label"] ?></span>
data-name="<?php echo $field["name"]?>" <span><?php echo $field["type"] ?></span>
data-label="<?php echo $field["label"]?>" <?php if (!in_array($field["name"], $this->required_fields)) : ?>
data-type="<?php echo $field["type"]?>"
data-filemd="<?php echo var_export($field["isFileMd"], true)?>"
class="<?php echo ($field["isFileMd"]) ? 'field_filemd' : 'field_other' ?>">
<span><?php echo $field["label"]?></span>
<span><?php echo $field["type"]?></span>
<?php if(!in_array($field["name"], $this->required_fields)): ?>
<span class="template_item_remove"> <span class="template_item_remove">
<i class="icon icon-trash"></i> <i class="icon icon-trash"></i>
</span> </span>
@ -46,27 +40,24 @@
<p><?php echo _("Add more elements") ?>:</p> <p><?php echo _("Add more elements") ?>:</p>
<ul class="template_file_md"> <ul class="template_file_md">
<?php foreach ($this->fileMD as $md): ?> <?php foreach ($this->fileMD as $md) : ?>
<?php if(in_array($md["name"], $usedFileMD)) { <?php if (in_array($md["name"], $usedFileMD)) {
continue; continue;
} ?> } ?>
<li id="<?php echo "md_".$md["name"]?>" <li id="<?php echo "md_" . $md["name"] ?>" data-name="<?php echo $md["name"] ?>" data-type="<?php echo $md["type"] ?>" data-label="<?php echo $md["label"] ?>">
data-name="<?php echo $md["name"]?>"
data-type="<?php echo $md["type"]?>"
data-label="<?php echo $md["label"]?>">
<?php echo $md["label"] ?> <?php echo $md["label"] ?>
<a class="field_add" href="#"><i class="icon icon-plus"></i></a> <a class="field_add" href="#"><i class="icon icon-plus"></i></a>
</li> </li>
<?php endforeach; ?> <?php endforeach; ?>
</ul> </ul>
<?php if ($this->template_type !== Application_Service_HistoryService::TEMPLATE_TYPE_FILE): ?> <?php if ($this->template_type !== Application_Service_HistoryService::TEMPLATE_TYPE_FILE) : ?>
<div class="template_item_add"> <div class="template_item_add">
<input type="text" placeholder="<?php echo _("Add New Field") ?>"> <input type="text" placeholder="<?php echo _("Add New Field") ?>">
<select> <select>
<?php foreach ($this->fields as $field): ?> <?php foreach ($this->fields as $field) : ?>
<option value="<?php echo $field; ?>"><?php echo _($field); ?></option> <option value="<?php echo $field; ?>"><?php echo _($field); ?></option>
<?php endforeach; ?> <?php endforeach; ?>
</select> </select>
@ -79,7 +70,7 @@
</div> </div>
<div> <div>
<?php if (!in_array($this->template_id, $this->configured)): ?> <?php if (!in_array($this->template_id, $this->configured)) : ?>
<button id="template_set_default" data-template="<?php echo $this->template_id; ?>" class="btn"><?php echo _("Set Default Template") ?></button> <button id="template_set_default" data-template="<?php echo $this->template_id; ?>" class="btn"><?php echo _("Set Default Template") ?></button>
<?php endif; ?> <?php endif; ?>
<button id="template_item_save" data-template="<?php echo $this->template_id; ?>" class="btn"><?php echo _("Save") ?></button> <button id="template_item_save" data-template="<?php echo $this->template_id; ?>" class="btn"><?php echo _("Save") ?></button>

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* Created by PhpStorm. * Created by PhpStorm.
* User: asantoni * User: asantoni
@ -8,6 +9,6 @@
?> ?>
<div class="content-pane" style="width: 100%"> <div class="content-pane" style="width: 100%">
<?php require(__DIR__."/featureupgrade.phtml"); ?> <?php require(__DIR__ . "/featureupgrade.phtml"); ?>
</div> </div>

View File

@ -1,4 +1,5 @@
<?php <?php
/** /**
* Created by PhpStorm. * Created by PhpStorm.
* User: asantoni * User: asantoni
@ -7,7 +8,7 @@
*/ */
?> ?>
<?php require(__DIR__."/featureupgrade.phtml"); ?> <?php require(__DIR__ . "/featureupgrade.phtml"); ?>
<div class="angular_wrapper" ng-controller="Publish"> <div class="angular_wrapper" ng-controller="Publish">

View File

@ -6,10 +6,10 @@
</div> </div>
<div class="inner_editor_wrapper"> <div class="inner_editor_wrapper">
<form class="podcast-metadata"> <form class="podcast-metadata">
<input ng-value="podcast.id" class="obj_id" type="hidden"/> <input ng-value="podcast.id" class="obj_id" type="hidden" />
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label for="podcast_name"><?php echo _("Podcast Name: ") ?></label> <label for="podcast_name"><?php echo _("Podcast Name: ") ?></label>
<input name="podcast_name" type="text" ng-model="podcast.title" value={{podcast.title}} > <input name="podcast_name" type="text" ng-model="podcast.title" value={{podcast.title}}>
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label for="podcast_url"><?php echo _("Podcast URL: ") ?></label> <label for="podcast_url"><?php echo _("Podcast URL: ") ?></label>
@ -18,10 +18,10 @@
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label for="podcast_auto_ingest"><?php echo _("Download latest episodes:") ?></label> <label for="podcast_auto_ingest"><?php echo _("Download latest episodes:") ?></label>
<div> <div>
<input name="podcast_auto_ingest" id="podcast_auto_ingest" ng-model="podcast.auto_ingest" type="checkbox"/> <input name="podcast_auto_ingest" id="podcast_auto_ingest" ng-model="podcast.auto_ingest" type="checkbox" />
</div> </div>
</div> </div>
<div class="podcast-metadata-row" > <div class="podcast-metadata-row">
<label><?php echo _("Scheduling:") ?></label> <label><?php echo _("Scheduling:") ?></label>
<div> <div>
<button ng-click="createSmartblock()" class="btn" type="button" name="smartblock"> <button ng-click="createSmartblock()" class="btn" type="button" name="smartblock">

View File

@ -9,7 +9,7 @@
</label> </label>
</td> </td>
<td style="text-align: right"> <td style="text-align: right">
<input id="podcast_url_field" type="url" name="url" size="40" style="margin-left: 10px; margin-bottom: 10px;" placeholder="http://example.com/podcast.xml"/> <input id="podcast_url_field" type="url" name="url" size="40" style="margin-left: 10px; margin-bottom: 10px;" placeholder="http://example.com/podcast.xml" />
</td> </td>
</tr> </tr>
</table> </table>

View File

@ -15,18 +15,18 @@
</div> </div>
<form class="podcast-metadata"> <form class="podcast-metadata">
<?php echo $this->form->getElement('csrf') ?> <?php echo $this->form->getElement('csrf') ?>
<input ng-value="podcast.id" class="obj_id" type="hidden"/> <input ng-value="podcast.id" class="obj_id" type="hidden" />
<h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("General Fields") ?></h3> <h3 class="collapsible-header"><span class="arrow-icon"></span><?php echo _("General Fields") ?></h3>
<div class="collapsible-content"> <div class="collapsible-content">
<fieldset class="padded"> <fieldset class="padded">
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Name") ?></label> <label><?php echo _("Name") ?></label>
<input name="podcast_name" ng-model="podcast.title" type="text"/> <input name="podcast_name" ng-model="podcast.title" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Creator") ?></label> <label><?php echo _("Creator") ?></label>
<input name="podcast_creator" ng-model="podcast.creator" type="text"/> <input name="podcast_creator" ng-model="podcast.creator" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
@ -37,7 +37,7 @@
<label><?php echo _("Language") ?></label> <label><?php echo _("Language") ?></label>
<select name="podcast_language" ng-model="podcast.language"> <select name="podcast_language" ng-model="podcast.language">
<?php <?php
foreach(Application_Common_LocaleHelper::getISO6391LanguageCodes() as $code=>$lang) { foreach (Application_Common_LocaleHelper::getISO6391LanguageCodes() as $code => $lang) {
echo "<option value='$code'>$lang</option>"; echo "<option value='$code'>$lang</option>";
} }
?> ?>
@ -46,11 +46,11 @@
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Copyright") ?></label> <label><?php echo _("Copyright") ?></label>
<input name="podcast_copyright" ng-model="podcast.copyright" type="text"/> <input name="podcast_copyright" ng-model="podcast.copyright" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Link") ?></label> <label><?php echo _("Link") ?></label>
<input name="podcast_link" ng-model="podcast.link" type="url"/> <input name="podcast_link" ng-model="podcast.link" type="url" />
</div> </div>
</fieldset> </fieldset>
</div> </div>
@ -60,12 +60,12 @@
<fieldset class="padded"> <fieldset class="padded">
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Author") ?></label> <label><?php echo _("Author") ?></label>
<input name="podcast_itunes_author" ng-model="podcast.itunes_author" type="text"/> <input name="podcast_itunes_author" ng-model="podcast.itunes_author" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Keywords") ?></label> <label><?php echo _("Keywords") ?></label>
<input name="podcast_itunes_keywords" ng-model="podcast.itunes_keywords" type="text"/> <input name="podcast_itunes_keywords" ng-model="podcast.itunes_keywords" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
@ -80,12 +80,12 @@
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Category") ?></label> <label><?php echo _("Category") ?></label>
<input name="podcast_itunes_category" ng-model="podcast.itunes_category" type="text"/> <input name="podcast_itunes_category" ng-model="podcast.itunes_category" type="text" />
</div> </div>
<div class="podcast-metadata-row"> <div class="podcast-metadata-row">
<label><?php echo _("Explicit") ?></label> <label><?php echo _("Explicit") ?></label>
<input name="podcast_itunes_explicit" ng-model="podcast.itunes_explicit" type="checkbox"/> <input name="podcast_itunes_explicit" ng-model="podcast.itunes_explicit" type="checkbox" />
</div> </div>
</fieldset> </fieldset>
</div> </div>
@ -114,10 +114,14 @@
</div> </div>
<p id="station_podcast_help_text"> <p id="station_podcast_help_text">
<?php echo(sprintf(_("For detailed information on what these metadata fields mean, please see the %sRSS specification%s <?php echo (sprintf(
_("For detailed information on what these metadata fields mean, please see the %sRSS specification%s
or %sApple's podcasting documentation%s."), or %sApple's podcasting documentation%s."),
'<a href="http://cyber.law.harvard.edu/rss/rss.html#requiredChannelElements">', '</a>', '<a href="http://cyber.law.harvard.edu/rss/rss.html#requiredChannelElements">',
'<a target="_blank" href="http://www.apple.com/ca/itunes/podcasts/specs.html">', "</a>")); ?> '</a>',
'<a target="_blank" href="http://www.apple.com/ca/itunes/podcasts/specs.html">',
"</a>"
)); ?>
</p> </p>
</form> </form>
@ -135,7 +139,7 @@
</div> </div>
</div> </div>
<script> <script>
$(document).ready(function () { $(document).ready(function() {
<?php echo "var podcast = " . $this->podcast . ";" ?> <?php echo "var podcast = " . $this->podcast . ";" ?>
AIRTIME.podcast.podcastApp.value('podcast', podcast); AIRTIME.podcast.podcastApp.value('podcast', podcast);
AIRTIME.podcast.podcastApp.value('tab', null); AIRTIME.podcast.podcastApp.value('tab', null);

View File

@ -1,4 +1,4 @@
<div id="watched-folder-section" class="ui-widget ui-widget-content block-shadow simple-formblock clearfix padded-strong manage-folders"> <div id="watched-folder-section" class="ui-widget ui-widget-content block-shadow simple-formblock clearfix padded-strong manage-folders">
<h2><?php echo _("Manage Media Folders") ?></h2> <h2><?php echo _("Manage Media Folders") ?></h2>
<?php echo $this->form; ?> <?php echo $this->form; ?>
</div> </div>

View File

@ -17,7 +17,7 @@
if (!$this->addNewShow) { if (!$this->addNewShow) {
$this->when->getElement('add_show_timezone')->setOptions(array('disabled' => true)); $this->when->getElement('add_show_timezone')->setOptions(array('disabled' => true));
?> ?>
<input type="hidden" name="add_show_timezone" id="add_show_timezone" value=<?php echo $this->when->getElement('add_show_timezone')->getValue()?>> <input type="hidden" name="add_show_timezone" id="add_show_timezone" value=<?php echo $this->when->getElement('add_show_timezone')->getValue() ?>>
<?php <?php
} }
?> ?>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->entries; echo $this->entries;
?>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->data; echo $this->data;
?>

View File

@ -1,11 +1,10 @@
<table id="schedule_block_table"> <table id="schedule_block_table">
<tr> <tr>
<td> <td>
<form id="add-show-form" method="post" action="" style="display:none;"> <form id="add-show-form" method="post" action="" style="display:none;">
<?php if($this->preloadShowForm){ <?php if ($this->preloadShowForm) {
echo $this->render('schedule/add-show-form.phtml'); echo $this->render('schedule/add-show-form.phtml');
}?> } ?>
</form> </form>
</td> </td>
<td id="schedule_calendar_cell"> <td id="schedule_calendar_cell">

View File

@ -1,6 +1,6 @@
<div id="show_content_dialog"> <div id="show_content_dialog">
<div><?php echo $this->additionalShowInfo; ?></div> <div><?php echo $this->additionalShowInfo; ?></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="datatable"> <table width="100%" border="0" cellspacing="0" cellpadding="0" class="datatable">
<tr> <tr>
<th><?php echo _("Start") ?></th> <th><?php echo _("Start") ?></th>
<th><?php echo _("Title") ?></th> <th><?php echo _("Title") ?></th>
@ -9,9 +9,13 @@
<th><?php echo _("Length") ?></th> <th><?php echo _("Length") ?></th>
<th><?php echo _("Genre") ?></th> <th><?php echo _("Genre") ?></th>
</tr> </tr>
<?php $i=0; ?> <?php $i = 0; ?>
<?php foreach($this->showContent as $row): ?> <?php foreach ($this->showContent as $row) : ?>
<tr id="au_<?php echo $row["item_id"] ?>" class="<?php if($i&1){echo "even";}else{echo "odd";}?>"> <tr id="au_<?php echo $row["item_id"] ?>" class="<?php if ($i & 1) {
echo "even";
} else {
echo "odd";
} ?>">
<td><?php echo $row["starts"] ?></td> <td><?php echo $row["starts"] ?></td>
<td><?php echo $this->escape($row["track_title"]) ?></td> <td><?php echo $this->escape($row["track_title"]) ?></td>
<td><?php echo $this->escape($row["creator"]) ?></td> <td><?php echo $this->escape($row["creator"]) ?></td>
@ -19,13 +23,13 @@
<td class="library_length"><?php echo $row["length"] ?></td> <td class="library_length"><?php echo $row["length"] ?></td>
<td><?php echo $row["genre"] ?></td> <td><?php echo $row["genre"] ?></td>
</tr> </tr>
<?php $i=$i+1; ?> <?php $i = $i + 1; ?>
<?php endforeach; ?> <?php endforeach; ?>
</table> </table>
<br/> <br />
<div id="show_time_info"> <div id="show_time_info">
<span id="show_time_filled" class="time"><?php echo $this->timeFilled; ?></span> <span id="show_time_filled" class="time"><?php echo $this->timeFilled; ?></span>
<div id="show_progressbar"></div> <div id="show_progressbar"></div>
<span id="show_length" class="time"><?php echo $this->showLength; ?></span> <span id="show_length" class="time"><?php echo $this->showLength; ?></span>
</div> </div>
</div> </div>

View File

@ -1,13 +1,15 @@
<div><!-- jQuery UI changes the styling on the outermost div; use a blank div so as not to break the .wrapper styling--> <div>
<!-- jQuery UI changes the styling on the outermost div; use a blank div so as not to break the .wrapper styling-->
<div class="wrapper"> <div class="wrapper">
<div id="media_selector_wrapper"> <div id="media_selector_wrapper">
<?php $subnavPrefix = ""; require_once APPLICATION_PATH . "/views/scripts/partialviews/dashboard-sub-nav.php"; ?> <?php $subnavPrefix = "";
require_once APPLICATION_PATH . "/views/scripts/partialviews/dashboard-sub-nav.php"; ?>
</div> </div>
<?php echo $this->csrf ?> <?php echo $this->csrf ?>
<div id="library_content" class="lib-content tabs content-pane wide-panel"> <div id="library_content" class="lib-content tabs content-pane wide-panel">
<div> <div>
<h2 id="library_title"><?php echo _("Dashboard")." - " ?><span id="library_filter"></span></h2> <h2 id="library_title"><?php echo _("Dashboard") . " - " ?><span id="library_filter"></span></h2>
</div> </div>
<div class="panel-header-calendar"> <div class="panel-header-calendar">
<div id="advanced-options" class="btn-group"> <div id="advanced-options" class="btn-group">

View File

@ -2,7 +2,7 @@
<div id="library_content" class="lib-content tabs content-pane wide-panel"> <div id="library_content" class="lib-content tabs content-pane wide-panel">
<div> <div>
<h2 id="library_title"><?php echo _("Dashboard")." - " ?><span id="library_filter"></span></h2> <h2 id="library_title"><?php echo _("Dashboard") . " - " ?><span id="library_filter"></span></h2>
</div> </div>
<div class="panel-header"> <div class="panel-header">
<div id="advanced-options" class="btn-group"> <div id="advanced-options" class="btn-group">

View File

@ -3,22 +3,22 @@
</head> </head>
<?php <?php
$phpDependencies = checkPhpDependencies(); $phpDependencies = checkPhpDependencies();
$externalServices = checkExternalServices(); $externalServices = checkExternalServices();
$postgres = $phpDependencies["postgres"]; $postgres = $phpDependencies["postgres"];
$database = $externalServices["database"]; $database = $externalServices["database"];
$rabbitmq = $externalServices["rabbitmq"]; $rabbitmq = $externalServices["rabbitmq"];
$pypo = $externalServices["pypo"]; $pypo = $externalServices["pypo"];
$liquidsoap = $externalServices["liquidsoap"]; $liquidsoap = $externalServices["liquidsoap"];
$analyzer = $externalServices["analyzer"]; $analyzer = $externalServices["analyzer"];
$celery = $externalServices['celery']; $celery = $externalServices['celery'];
$api = $externalServices['api']; $api = $externalServices['api'];
$r1 = array_reduce($phpDependencies, "booleanReduce", true); $r1 = array_reduce($phpDependencies, "booleanReduce", true);
$r2 = array_reduce($externalServices, "booleanReduce", true); $r2 = array_reduce($externalServices, "booleanReduce", true);
$result = $r1 && $r2; $result = $r1 && $r2;
?> ?>
<table width="60%" cellpadding="0" cellspacing="0" border="0" class="statustable"> <table width="60%" cellpadding="0" cellspacing="0" border="0" class="statustable">
@ -41,7 +41,8 @@
<td class="description"> <td class="description">
<?php echo _("PDO and PostgreSQL libraries") ?> <?php echo _("PDO and PostgreSQL libraries") ?>
</td> </td>
<td class="solution <?php if ($postgres) {echo 'check';?>"> <td class="solution <?php if ($postgres) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
@ -58,7 +59,8 @@
<td class="description"> <td class="description">
<?php echo _("Database configuration for LibreTime") ?> <?php echo _("Database configuration for LibreTime") ?>
</td> </td>
<td class="solution <?php if ($database) {echo 'check';?>"> <td class="solution <?php if ($database) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
@ -77,7 +79,8 @@
<td class="description"> <td class="description">
<?php echo _("RabbitMQ configuration for LibreTime") ?> <?php echo _("RabbitMQ configuration for LibreTime") ?>
</td> </td>
<td class="solution <?php if ($rabbitmq) {echo 'check';?>"> <td class="solution <?php if ($rabbitmq) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
@ -98,14 +101,15 @@
<td class="description"> <td class="description">
<?php echo _("LibreTime media analyzer service") ?> <?php echo _("LibreTime media analyzer service") ?>
</td> </td>
<td class="solution <?php if ($analyzer) {echo 'check';?>"> <td class="solution <?php if ($analyzer) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
<?php echo _("Check that the libretime-analyzer service is installed correctly in ") ?><code>/etc/systemd/system/</code>, <?php echo _("Check that the libretime-analyzer service is installed correctly in ") ?><code>/etc/systemd/system/</code>,
<?php echo _(" and ensure that it's running with ") ?> <?php echo _(" and ensure that it's running with ") ?>
<br/><code>systemctl status libretime-analyzer</code><br/> <br /><code>systemctl status libretime-analyzer</code><br />
<?php echo _("If not, try ") ?><br/><code>sudo systemctl restart libretime-analyzer</code> <?php echo _("If not, try ") ?><br /><code>sudo systemctl restart libretime-analyzer</code>
<?php <?php
} }
?> ?>
@ -118,14 +122,15 @@
<td class="description"> <td class="description">
<?php echo _("LibreTime playout service") ?> <?php echo _("LibreTime playout service") ?>
</td> </td>
<td class="solution <?php if ($pypo) {echo 'check';?>"> <td class="solution <?php if ($pypo) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
<?php echo _("Check that the libretime-playout service is installed correctly in ") ?><code>/etc/systemd/system/</code>, <?php echo _("Check that the libretime-playout service is installed correctly in ") ?><code>/etc/systemd/system/</code>,
<?php echo _(" and ensure that it's running with ") ?> <?php echo _(" and ensure that it's running with ") ?>
<br/><code>systemctl status libretime-playout</code><br/> <br /><code>systemctl status libretime-playout</code><br />
<?php echo _("If not, try ") ?><br/><code>sudo systemctl restart libretime-playout</code> <?php echo _("If not, try ") ?><br /><code>sudo systemctl restart libretime-playout</code>
<?php <?php
} }
?> ?>
@ -138,14 +143,15 @@
<td class="description"> <td class="description">
<?php echo _("LibreTime liquidsoap service") ?> <?php echo _("LibreTime liquidsoap service") ?>
</td> </td>
<td class="solution <?php if ($liquidsoap) {echo 'check';?>" > <td class="solution <?php if ($liquidsoap) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
<?php echo _("Check that the libretime-liquidsoap service is installed correctly in ") ?><code>/etc/systemd/system/</code>, <?php echo _("Check that the libretime-liquidsoap service is installed correctly in ") ?><code>/etc/systemd/system/</code>,
<?php echo _(" and ensure that it's running with ") ?> <?php echo _(" and ensure that it's running with ") ?>
<br/><code>systemctl status libretime-liquidsoap</code><br/> <br /><code>systemctl status libretime-liquidsoap</code><br />
<?php echo _("If not, try ") ?><br/><code>sudo systemctl restart libretime-liquidsoap</code> <?php echo _("If not, try ") ?><br /><code>sudo systemctl restart libretime-liquidsoap</code>
<?php <?php
} }
?> ?>
@ -158,14 +164,15 @@
<td class="description"> <td class="description">
<?php echo _("LibreTime Celery Task service") ?> <?php echo _("LibreTime Celery Task service") ?>
</td> </td>
<td class="solution <?php if ($celery) {echo 'check';?>" > <td class="solution <?php if ($celery) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
<?php echo _("Check that the libretime-celery service is installed correctly in ") ?><code>/etc/systemd/system/</code>, <?php echo _("Check that the libretime-celery service is installed correctly in ") ?><code>/etc/systemd/system/</code>,
<?php echo _(" and ensure that it's running with ") ?> <?php echo _(" and ensure that it's running with ") ?>
<br/><code>systemctl status libretime-celery</code><br/> <br /><code>systemctl status libretime-celery</code><br />
<?php echo _("If not, try ") ?><br/><code>sudo systemctl restart libretime-celery</code> <?php echo _("If not, try ") ?><br /><code>sudo systemctl restart libretime-celery</code>
<?php <?php
} }
?> ?>
@ -178,14 +185,15 @@
<td class="description"> <td class="description">
<?php echo _("LibreTime API service") ?> <?php echo _("LibreTime API service") ?>
</td> </td>
<td class="solution <?php if ($api) {echo 'check';?>" > <td class="solution <?php if ($api) {
echo 'check'; ?>">
<?php <?php
} else { } else {
?>"> ?>">
<?php echo _("Check that the libretime-api service is installed correctly in ") ?><code>/etc/systemd/system/</code>, <?php echo _("Check that the libretime-api service is installed correctly in ") ?><code>/etc/systemd/system/</code>,
<?php echo _(" and ensure that it's running with ") ?> <?php echo _(" and ensure that it's running with ") ?>
<br/><code>systemctl status libretime-api</code><br/> <br /><code>systemctl status libretime-api</code><br />
<?php echo _("If not, try ") ?><br/><code>sudo systemctl restart libretime-api</code> <?php echo _("If not, try ") ?><br /><code>sudo systemctl restart libretime-api</code>
<?php <?php
} }
?> ?>

View File

@ -1,4 +1,3 @@
<div class="ui-widget prefpanel clearfix padded-strong tracktype-management"> <div class="ui-widget prefpanel clearfix padded-strong tracktype-management">
<h2><?php echo _("Manage Track Types") ?></h2> <h2><?php echo _("Manage Track Types") ?></h2>
@ -8,7 +7,7 @@
<div class="button-holder"> <div class="button-holder">
<button type="button" id="add_tracktype_button" name="search_add_group" class="ui-button ui-widget ui-button-text-icon-primary btn"> <button type="button" id="add_tracktype_button" name="search_add_group" class="ui-button ui-widget ui-button-text-icon-primary btn">
<span class="ui-icon ui-icon-plusthick"></span> <span class="ui-icon ui-icon-plusthick"></span>
<span class="ui-button-text"><?php echo _("New Track Type")?></span> <span class="ui-button-text"><?php echo _("New Track Type") ?></span>
</button> </button>
</div> </div>
@ -17,9 +16,9 @@
<tr> <tr>
<th><?php echo _("id") ?></th> <th><?php echo _("id") ?></th>
<th><?php echo _("Code") ?></th> <th><?php echo _("Code") ?></th>
<th><?php echo _("Label")?></th> <th><?php echo _("Label") ?></th>
<th><?php echo _("Description")?></th> <th><?php echo _("Description") ?></th>
<th><?php echo _("Visibility")?></th> <th><?php echo _("Visibility") ?></th>
<th>&nbsp;</th> <th>&nbsp;</th>
</tr> </tr>
</thead> </thead>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->entries; echo $this->entries;
?>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->entries; echo $this->entries;
?>

View File

@ -7,7 +7,7 @@
<div class="button-holder"> <div class="button-holder">
<button type="button" id="add_user_button" name="search_add_group" class="ui-button ui-widget ui-button-text-icon-primary btn"> <button type="button" id="add_user_button" name="search_add_group" class="ui-button ui-widget ui-button-text-icon-primary btn">
<span class="ui-icon ui-icon-plusthick"></span> <span class="ui-icon ui-icon-plusthick"></span>
<span class="ui-button-text"><?php echo _("New User")?></span> <span class="ui-button-text"><?php echo _("New User") ?></span>
</button> </button>
</div> </div>
@ -16,9 +16,9 @@
<tr> <tr>
<th><?php echo _("id") ?></th> <th><?php echo _("id") ?></th>
<th><?php echo _("Username") ?></th> <th><?php echo _("Username") ?></th>
<th><?php echo _("First Name")?></th> <th><?php echo _("First Name") ?></th>
<th><?php echo _("Last Name")?></th> <th><?php echo _("Last Name") ?></th>
<th><?php echo _("User Type")?></th> <th><?php echo _("User Type") ?></th>
<th>&nbsp;</th> <th>&nbsp;</th>
</tr> </tr>
</thead> </thead>

View File

@ -1,4 +1,4 @@
<div class="prefpanel clearfix padded-strong edit-current-user"> <div class="prefpanel clearfix padded-strong edit-current-user">
<?php echo $this->successMessage ?> <?php echo $this->successMessage ?>
<?php echo $this->form?> <?php echo $this->form ?>
</div> </div>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->entries; echo $this->entries;
?>

View File

@ -1,3 +1,2 @@
<?php <?php
echo $this->entries; echo $this->entries;
?>

View File

@ -1,20 +1,21 @@
<?php if (isset($this->obj)) : ?> <?php if (isset($this->obj)) : ?>
<input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>"/> <input class="obj_id" type="hidden" value="<?php echo $this->obj->getId(); ?>" />
<input class="obj_lastMod" type="hidden" value="<?php echo "1";//$this->obj->getLastModified('U'); ?>"/> <input class="obj_lastMod" type="hidden" value="<?php echo "1"; //$this->obj->getLastModified('U');
<input class="obj_type" type="hidden" value="webstream"/> ?>" />
<input class="obj_type" type="hidden" value="webstream" />
<div class="status" style="display:none;"></div> <div class="status" style="display:none;"></div>
<div class="inner_editor_title"> <div class="inner_editor_title">
<H2><?php echo(_("Editing "));?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName; <H2><?php echo (_("Editing ")); ?>"<span class="title_obj_name"><?php if (isset($this->unsavedName)) echo $this->unsavedName;
else echo $this->escape($this->obj->getName());?></span>"</H2> else echo $this->escape($this->obj->getName()); ?></span>"</H2>
</div> </div>
<div class="inner_editor_wrapper"> <div class="inner_editor_wrapper">
<dl class="zend_form side_playlist playlist_editor"> <dl class="zend_form side_playlist playlist_editor">
<dt> <dt>
<label><?php echo(_("Name:")); ?></label> <label><?php echo (_("Name:")); ?></label>
</dt> </dt>
<dd> <dd>
<div id="name-error" class="errors" style="display:none;"></div> <div id="name-error" class="errors" style="display:none;"></div>
@ -29,15 +30,15 @@
<div id="url-error" class="errors" style="display:none;"></div> <div id="url-error" class="errors" style="display:none;"></div>
<dt id="streamurl-label"><label for="streamurl"><?php echo _("Stream URL:"); ?></label></dt> <dt id="streamurl-label"><label for="streamurl"><?php echo _("Stream URL:"); ?></label></dt>
<dd id="streamurl-element"> <dd id="streamurl-element">
<input type="url" value="<?php echo $this->obj->getUrl(); ?>" size="40"/> <input type="url" value="<?php echo $this->obj->getUrl(); ?>" size="40" />
</dd> </dd>
<div id="length-error" class="errors" style="display:none;"></div> <div id="length-error" class="errors" style="display:none;"></div>
<dt id="streamlength-label"><label for="streamlength"><?php echo _("Default Length:"); ?></label></dt> <dt id="streamlength-label"><label for="streamlength"><?php echo _("Default Length:"); ?></label></dt>
<dd id="streamlength-element"> <dd id="streamlength-element">
<input type="text" value="<?php echo $this->obj->getDefaultLength() ?>"/> <input type="text" value="<?php echo $this->obj->getDefaultLength() ?>" />
</dd> </dd>
</dl> </dl>
</div> </div>
<div class="btn-toolbar clearfix"> <div class="btn-toolbar clearfix">

View File

@ -1,5 +1,5 @@
$(document).ready(function() { $(document).ready(function () {
$.ajaxSetup({ $.ajaxSetup({
cache: false cache: false,
}); });
}); });

View File

@ -3,34 +3,35 @@ var _idToPostionLookUp;
var URL_BAR_HEIGHT = 32; var URL_BAR_HEIGHT = 32;
/** /**
*When the page loads the ready function will get all the data it can from the hidden span elements *When the page loads the ready function will get all the data it can from the hidden span elements
*and call one of three functions depending on weather the window was open to play an audio file, *and call one of three functions depending on weather the window was open to play an audio file,
*or a playlist or a show. *or a playlist or a show.
*/ */
$(document).ready(function(){ $(document).ready(function () {
$.jPlayer.timeFormat.showHour = true; $.jPlayer.timeFormat.showHour = true;
var audioUri = $('.audioUri').text(); var audioUri = $(".audioUri").text();
var audioMime = $('.audioMime').text(); var audioMime = $(".audioMime").text();
var playlistID = $('.playlistID').text(); var playlistID = $(".playlistID").text();
var playlistIndex = $('.playlistIndex').text(); var playlistIndex = $(".playlistIndex").text();
var showID = $('.showID').text(); var showID = $(".showID").text();
var showIndex = $('.showIndex').text(); var showIndex = $(".showIndex").text();
var blockId = $('.blockId').text(); var blockId = $(".blockId").text();
var blockIndex = $('.blockIndex').text(); var blockIndex = $(".blockIndex").text();
_playlist_jplayer = new jPlayerPlaylist({ _playlist_jplayer = new jPlayerPlaylist(
jPlayer: "#jquery_jplayer_1",
cssSelectorAncestor: "#jp_container_1"
},[], //array of songs will be filled with below's json call
{ {
swfPath: baseUrl+"js/jplayer", jPlayer: "#jquery_jplayer_1",
supplied:"oga, mp3, m4v, m4a, wav", cssSelectorAncestor: "#jp_container_1",
},
[], //array of songs will be filled with below's json call
{
swfPath: baseUrl + "js/jplayer",
supplied: "oga, mp3, m4v, m4a, wav",
size: { size: {
width: "0px", width: "0px",
height: "0px", height: "0px",
cssClass: "jp-video-270p" cssClass: "jp-video-270p",
}, },
playlistOptions: { playlistOptions: {
autoPlay: false, autoPlay: false,
@ -40,113 +41,125 @@ $(document).ready(function(){
displayTime: 0, displayTime: 0,
addTime: 0, addTime: 0,
removeTime: 0, removeTime: 0,
shuffleTime: 0 shuffleTime: 0,
}, },
ready: function(){ ready: function () {
if (playlistID != "" && playlistID !== ""){ if (playlistID != "" && playlistID !== "") {
playAllPlaylist(playlistID, playlistIndex); playAllPlaylist(playlistID, playlistIndex);
}else if (audioUri != "") { } else if (audioUri != "") {
playOne(audioUri, audioMime); playOne(audioUri, audioMime);
}else if (showID != "") { } else if (showID != "") {
playAllShow(showID, showIndex); playAllShow(showID, showIndex);
}else if(blockId != "" && blockIndex != ""){ } else if (blockId != "" && blockIndex != "") {
playBlock(blockId, blockIndex); playBlock(blockId, blockIndex);
} }
},
} }
}); );
$("#jp_container_1").on("mouseenter", "ul.jp-controls li", function(ev) { $("#jp_container_1").on("mouseenter", "ul.jp-controls li", function (ev) {
$(this).addClass("ui-state-hover"); $(this).addClass("ui-state-hover");
}); });
$("#jp_container_1").on("mouseleave", "ul.jp-controls li", function(ev) { $("#jp_container_1").on("mouseleave", "ul.jp-controls li", function (ev) {
$(this).removeClass("ui-state-hover"); $(this).removeClass("ui-state-hover");
}); });
}); });
/** /**
* Sets up the jPlayerPlaylist to play. * Sets up the jPlayerPlaylist to play.
* - Get the playlist info based on the playlistID give. * - Get the playlist info based on the playlistID give.
* - Update the playlistIndex to the position in the pllist to start playing. * - Update the playlistIndex to the position in the pllist to start playing.
* - Select the element played from and start playing. If playlist is null then start at index 0. * - Select the element played from and start playing. If playlist is null then start at index 0.
**/ **/
function playAllPlaylist(p_playlistID, p_playlistIndex) { function playAllPlaylist(p_playlistID, p_playlistIndex) {
var viewsPlaylistID = $('.playlistID').text(); var viewsPlaylistID = $(".playlistID").text();
if ( _idToPostionLookUp !== undefined && viewsPlaylistID == p_playlistID ) { if (_idToPostionLookUp !== undefined && viewsPlaylistID == p_playlistID) {
play(p_playlistIndex); play(p_playlistIndex);
}else { } else {
buildplaylist(baseUrl+"audiopreview/get-playlist/playlistID/"+p_playlistID, p_playlistIndex); buildplaylist(
baseUrl + "audiopreview/get-playlist/playlistID/" + p_playlistID,
p_playlistIndex
);
} }
} }
function playBlock(p_blockId, p_blockIndex) function playBlock(p_blockId, p_blockIndex) {
{ var viewsBlockId = $(".blockId").text();
var viewsBlockId = $('.blockId').text();
if ( _idToPostionLookUp !== undefined && viewsBlockId == p_blockId ) { if (_idToPostionLookUp !== undefined && viewsBlockId == p_blockId) {
play(p_blockIndex); play(p_blockIndex);
} else { } else {
buildplaylist(baseUrl+"audiopreview/get-block/blockId/"+p_blockId, p_blockIndex); buildplaylist(
baseUrl + "audiopreview/get-block/blockId/" + p_blockId,
p_blockIndex
);
} }
} }
/** /**
* Sets up the show to play. * Sets up the show to play.
* checks with the show id given to the show id on the page/view * checks with the show id given to the show id on the page/view
* if the show id and the page or views show id are the same it means the user clicked another * if the show id and the page or views show id are the same it means the user clicked another
* file in the same show, so don't refresh the show content tust play the track from the preloaded show. * file in the same show, so don't refresh the show content tust play the track from the preloaded show.
* if the the ids are different they we'll need to get the show's context so create the uri * if the the ids are different they we'll need to get the show's context so create the uri
* and call the controller. * and call the controller.
**/ **/
function playAllShow(p_showID, p_index) { function playAllShow(p_showID, p_index) {
var viewsShowID = $(".showID").text();
var viewsShowID = $('.showID').text(); if (_idToPostionLookUp !== undefined && viewsShowID == p_showID) {
if ( _idToPostionLookUp !== undefined && viewsShowID == p_showID ) {
play(p_index); play(p_index);
}else { } else {
buildplaylist(baseUrl+"audiopreview/get-show/showID/"+p_showID, p_index); buildplaylist(
baseUrl + "audiopreview/get-show/showID/" + p_showID,
p_index
);
} }
} }
/** /**
* This function will call the AudiopreviewController to get the contents of * This function will call the AudiopreviewController to get the contents of
* either a show or playlist Looping throught the returned contents and * either a show or playlist Looping throught the returned contents and
* creating media for each track. * creating media for each track.
* *
* Then trigger the jplayer to play the list. * Then trigger the jplayer to play the list.
*/ */
function buildplaylist(p_url, p_playIndex) { function buildplaylist(p_url, p_playIndex) {
_idToPostionLookUp = Array(); _idToPostionLookUp = Array();
$.getJSON(p_url, function(data){ // get the JSON array produced by my PHP $.getJSON(p_url, function (data) {
// get the JSON array produced by my PHP
var myPlaylist = new Array(); var myPlaylist = new Array();
var media; var media;
var index; var index;
var total = 0; var total = 0;
var skipped = 0; var skipped = 0;
for(index in data) { for (index in data) {
if (data[index]['type'] == 0) { if (data[index]["type"] == 0) {
if (data[index]['element_mp3'] != undefined){ if (data[index]["element_mp3"] != undefined) {
media = {title: data[index]['element_title'], media = {
artist: data[index]['element_artist'], title: data[index]["element_title"],
mp3:data[index]['uri'] artist: data[index]["element_artist"],
mp3: data[index]["uri"],
}; };
} else if (data[index]['element_oga'] != undefined) { } else if (data[index]["element_oga"] != undefined) {
media = {title: data[index]['element_title'], media = {
artist: data[index]['element_artist'], title: data[index]["element_title"],
oga:data[index]['uri'] artist: data[index]["element_artist"],
oga: data[index]["uri"],
}; };
} else if (data[index]['element_m4a'] != undefined) { } else if (data[index]["element_m4a"] != undefined) {
media = {title: data[index]['element_title'], media = {
artist: data[index]['element_artist'], title: data[index]["element_title"],
m4a:data[index]['uri'] artist: data[index]["element_artist"],
m4a: data[index]["uri"],
}; };
} else if (data[index]['element_wav'] != undefined) { } else if (data[index]["element_wav"] != undefined) {
media = {title: data[index]['element_title'], media = {
artist: data[index]['element_artist'], title: data[index]["element_title"],
wav:data[index]['uri'] artist: data[index]["element_artist"],
wav: data[index]["uri"],
}; };
} else { } else {
// skip this track since it's not supported // skip this track since it's not supported
@ -154,8 +167,8 @@ function buildplaylist(p_url, p_playIndex) {
skipped++; skipped++;
continue; continue;
} }
} else if (data[index]['type'] == 1) { } else if (data[index]["type"] == 1) {
var mime = data[index]['mime']; var mime = data[index]["mime"];
if (mime.search(/mp3/i) > 0 || mime.search(/mpeg/i) > 0) { if (mime.search(/mp3/i) > 0 || mime.search(/mpeg/i) > 0) {
key = "mp3"; key = "mp3";
} else if (mime.search(/og(g|a)/i) > 0 || mime.search(/vorbis/i) > 0) { } else if (mime.search(/og(g|a)/i) > 0 || mime.search(/vorbis/i) > 0) {
@ -167,21 +180,22 @@ function buildplaylist(p_url, p_playIndex) {
} }
if (key) { if (key) {
media = {title: data[index]['element_title'], media = {
artist: data[index]['element_artist'] title: data[index]["element_title"],
artist: data[index]["element_artist"],
}; };
media[key] = data[index]['uri'] media[key] = data[index]["uri"];
} }
} }
if (media && isAudioSupported(data[index]['mime'])) { if (media && isAudioSupported(data[index]["mime"])) {
// javascript doesn't support associative array with numeric key // javascript doesn't support associative array with numeric key
// so we need to remove the gap if we skip any of tracks due to // so we need to remove the gap if we skip any of tracks due to
// browser incompatibility. // browser incompatibility.
myPlaylist[index-skipped] = media; myPlaylist[index - skipped] = media;
} }
// we should create a map according to the new position in the // we should create a map according to the new position in the
// player itself total is the index on the player // player itself total is the index on the player
_idToPostionLookUp[data[index]['element_id']] = total; _idToPostionLookUp[data[index]["element_id"]] = total;
total++; total++;
} }
_playlist_jplayer.setPlaylist(myPlaylist); _playlist_jplayer.setPlaylist(myPlaylist);
@ -192,27 +206,30 @@ function buildplaylist(p_url, p_playIndex) {
var container = $("#jp_container_1"); var container = $("#jp_container_1");
// Add 2px to account for borders // Add 2px to account for borders
window.resizeTo(container.width() + 2, container.height() + URL_BAR_HEIGHT + 2); window.resizeTo(
container.width() + 2,
container.height() + URL_BAR_HEIGHT + 2
);
}); });
} }
/** /**
*Function simply plays the given index, for playlists index can be different so need to look up the *Function simply plays the given index, for playlists index can be different so need to look up the
*right index. *right index.
*/ */
function play(p_playlistIndex){ function play(p_playlistIndex) {
playlistIndex = _idToPostionLookUp[p_playlistIndex]; playlistIndex = _idToPostionLookUp[p_playlistIndex];
if(playlistIndex == undefined){ if (playlistIndex == undefined) {
playlistIndex = 0 playlistIndex = 0;
} }
//_playlist_jplayer.select(playlistIndex); //_playlist_jplayer.select(playlistIndex);
_playlist_jplayer.play(playlistIndex); _playlist_jplayer.play(playlistIndex);
} }
/** /**
* Playing one audio track occurs from the library. This function will create the media, setup * Playing one audio track occurs from the library. This function will create the media, setup
* jplayer and play the track. * jplayer and play the track.
*/ */
function playOne(uri, mime) { function playOne(uri, mime) {
var playlist = new Array(); var playlist = new Array();
@ -229,8 +246,15 @@ function playOne(uri, mime) {
} }
if (key) { if (key) {
media = {title: $('.audioFileTitle').text() != 'null' ?$('.audioFileTitle').text():"", media = {
artist: $('.audioFileArtist').text() != 'null' ?$('.audioFileArtist').text():"" title:
$(".audioFileTitle").text() != "null"
? $(".audioFileTitle").text()
: "",
artist:
$(".audioFileArtist").text() != "null"
? $(".audioFileArtist").text()
: "",
}; };
media[key] = uri; media[key] = uri;
} }
@ -244,5 +268,8 @@ function playOne(uri, mime) {
var container = $("#jp_container_1"); var container = $("#jp_container_1");
// Add 2px to account for borders // Add 2px to account for borders
window.resizeTo(container.width() + 2, container.height() + URL_BAR_HEIGHT + 2); window.resizeTo(
container.width() + 2,
container.height() + URL_BAR_HEIGHT + 2
);
} }

View File

@ -1,12 +1,14 @@
var AIRTIME = (function(AIRTIME) { var AIRTIME = (function (AIRTIME) {
var mod, DEFAULT_CLASS = 'ui-button ui-state-default', DISABLED_CLASS = 'ui-state-disabled'; var mod,
DEFAULT_CLASS = "ui-button ui-state-default",
DISABLED_CLASS = "ui-state-disabled";
if (AIRTIME.button === undefined) { if (AIRTIME.button === undefined) {
AIRTIME.button = {}; AIRTIME.button = {};
} }
mod = AIRTIME.button; mod = AIRTIME.button;
mod.isDisabled = function(c, useParent) { mod.isDisabled = function (c, useParent) {
var button = $("." + c); var button = $("." + c);
if (useParent) { if (useParent) {
button = button.parent(); button = button.parent();
@ -19,7 +21,7 @@ var AIRTIME = (function(AIRTIME) {
return false; return false;
}; };
mod.enableButton = function(c, useParent) { mod.enableButton = function (c, useParent) {
if (useParent) { if (useParent) {
var button = $("." + c).parent(); var button = $("." + c).parent();
} else { } else {
@ -28,11 +30,11 @@ var AIRTIME = (function(AIRTIME) {
if (button.hasClass(DISABLED_CLASS)) { if (button.hasClass(DISABLED_CLASS)) {
button.removeClass(DISABLED_CLASS); button.removeClass(DISABLED_CLASS);
button.removeAttr('disabled'); button.removeAttr("disabled");
} }
}; };
mod.disableButton = function(c, useParent) { mod.disableButton = function (c, useParent) {
if (useParent) { if (useParent) {
var button = $("." + c).parent(); var button = $("." + c).parent();
} else { } else {
@ -41,10 +43,9 @@ var AIRTIME = (function(AIRTIME) {
if (!button.hasClass(DISABLED_CLASS)) { if (!button.hasClass(DISABLED_CLASS)) {
button.addClass(DISABLED_CLASS); button.addClass(DISABLED_CLASS);
button.attr('disabled', 'disabled'); button.attr("disabled", "disabled");
} }
}; };
return AIRTIME; return AIRTIME;
})(AIRTIME || {});
}(AIRTIME || {}));

View File

@ -1,8 +1,7 @@
function isAudioSupported(mime) {
function isAudioSupported(mime){
var audio = new Audio(); var audio = new Audio();
if ((typeof mime) !== "string" || (mime === null)) { if (typeof mime !== "string" || mime === null) {
return false; return false;
} }
@ -17,8 +16,13 @@ function isAudioSupported(mime){
//file is an mp3 and flash is installed (jPlayer will fall back to flash to play mp3s). //file is an mp3 and flash is installed (jPlayer will fall back to flash to play mp3s).
//Note that checking the navigator.mimeTypes value does not work for IE7, but the alternative //Note that checking the navigator.mimeTypes value does not work for IE7, but the alternative
//is adding a javascript library to do the work for you, which seems like overkill.... //is adding a javascript library to do the work for you, which seems like overkill....
return (!!audio.canPlayType && audio.canPlayType(bMime) != "") || return (
(mime.indexOf("mp3") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) || (!!audio.canPlayType && audio.canPlayType(bMime) != "") ||
(mime.indexOf("mp4") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined) || (mime.indexOf("mp3") != -1 &&
(mime.indexOf("mpeg") != -1 && navigator.mimeTypes ["application/x-shockwave-flash"] != undefined); navigator.mimeTypes["application/x-shockwave-flash"] != undefined) ||
(mime.indexOf("mp4") != -1 &&
navigator.mimeTypes["application/x-shockwave-flash"] != undefined) ||
(mime.indexOf("mpeg") != -1 &&
navigator.mimeTypes["application/x-shockwave-flash"] != undefined)
);
} }

View File

@ -1,8 +1,7 @@
var previewWidth = 482, var previewWidth = 482,
previewHeight = 110; previewHeight = 110;
$(document).ready(function() { $(document).ready(function () {
/* Removed as this is now (hopefully) unnecessary */ /* Removed as this is now (hopefully) unnecessary */
//$("#Panel").stickyPanel({ //$("#Panel").stickyPanel({
// topPadding: 1, // topPadding: 1,
@ -11,7 +10,9 @@ $(document).ready(function() {
//}); //});
//this statement tells the browser to fade out any success message after 5 seconds //this statement tells the browser to fade out any success message after 5 seconds
setTimeout(function(){$(".success").fadeOut("slow")}, 5000); setTimeout(function () {
$(".success").fadeOut("slow");
}, 5000);
}); });
/* /*
@ -30,7 +31,7 @@ var i18n_months = [
$.i18n._("September"), $.i18n._("September"),
$.i18n._("October"), $.i18n._("October"),
$.i18n._("November"), $.i18n._("November"),
$.i18n._("December") $.i18n._("December"),
]; ];
var i18n_months_short = [ var i18n_months_short = [
@ -45,7 +46,7 @@ var i18n_months_short = [
$.i18n._("Sep"), $.i18n._("Sep"),
$.i18n._("Oct"), $.i18n._("Oct"),
$.i18n._("Nov"), $.i18n._("Nov"),
$.i18n._("Dec") $.i18n._("Dec"),
]; ];
var i18n_days_short = [ var i18n_days_short = [
@ -55,7 +56,7 @@ var i18n_days_short = [
$.i18n._("We"), $.i18n._("We"),
$.i18n._("Th"), $.i18n._("Th"),
$.i18n._("Fr"), $.i18n._("Fr"),
$.i18n._("Sa") $.i18n._("Sa"),
]; ];
var HTTPMethods = Object.freeze({ var HTTPMethods = Object.freeze({
@ -64,7 +65,7 @@ var HTTPMethods = Object.freeze({
PUT: "PUT", PUT: "PUT",
PATCH: "PATCH", PATCH: "PATCH",
DELETE: "DELETE", DELETE: "DELETE",
OPTIONS: "OPTIONS" OPTIONS: "OPTIONS",
}); });
var dateStartId = "#sb_date_start", var dateStartId = "#sb_date_start",
@ -73,25 +74,24 @@ var dateStartId = "#sb_date_start",
timeEndId = "#sb_time_end"; timeEndId = "#sb_time_end";
function getDatatablesStrings(overrideDict) { function getDatatablesStrings(overrideDict) {
var dict = { var dict = {
"sEmptyTable": $.i18n._("No data available in table"), sEmptyTable: $.i18n._("No data available in table"),
"sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ entries"), sInfo: $.i18n._("Showing _START_ to _END_ of _TOTAL_ entries"),
"sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 entries"), sInfoEmpty: $.i18n._("Showing 0 to 0 of 0 entries"),
"sInfoFiltered": "", // $.i18n._("(filtered from _MAX_ total entries)"), sInfoFiltered: "", // $.i18n._("(filtered from _MAX_ total entries)"),
"sInfoPostFix": $.i18n._(""), sInfoPostFix: $.i18n._(""),
"sInfoThousands": $.i18n._(","), sInfoThousands: $.i18n._(","),
"sLengthMenu": $.i18n._("Show _MENU_"), sLengthMenu: $.i18n._("Show _MENU_"),
"sLoadingRecords": $.i18n._("Loading..."), sLoadingRecords: $.i18n._("Loading..."),
//"sProcessing": $.i18n._("Processing..."), //"sProcessing": $.i18n._("Processing..."),
"sProcessing": $.i18n._(""), sProcessing: $.i18n._(""),
"sSearch": $.i18n._(""), sSearch: $.i18n._(""),
"sZeroRecords": $.i18n._("No matching records found"), sZeroRecords: $.i18n._("No matching records found"),
"oPaginate": { oPaginate: {
"sFirst": "&laquo;", sFirst: "&laquo;",
"sLast": "&raquo;", sLast: "&raquo;",
"sNext": "&rsaquo;", sNext: "&rsaquo;",
"sPrevious": "&lsaquo;" sPrevious: "&lsaquo;",
}, },
//"oPaginate": { //"oPaginate": {
// "sFirst": $.i18n._("First"), // "sFirst": $.i18n._("First"),
@ -99,21 +99,21 @@ function getDatatablesStrings(overrideDict) {
// "sNext": $.i18n._("Next"), // "sNext": $.i18n._("Next"),
// "sPrevious": $.i18n._("Previous") // "sPrevious": $.i18n._("Previous")
//}, //},
"oAria": { oAria: {
"sSortAscending": $.i18n._(": activate to sort column ascending"), sSortAscending: $.i18n._(": activate to sort column ascending"),
"sSortDescending": $.i18n._(": activate to sort column descending") sSortDescending: $.i18n._(": activate to sort column descending"),
} },
}; };
return $.extend({}, dict, overrideDict); return $.extend({}, dict, overrideDict);
} }
function adjustDateToServerDate(date, serverTimezoneOffset){ function adjustDateToServerDate(date, serverTimezoneOffset) {
//date object stores time in the browser's localtime. We need to artificially shift //date object stores time in the browser's localtime. We need to artificially shift
//it to //it to
var timezoneOffset = date.getTimezoneOffset()*60*1000; var timezoneOffset = date.getTimezoneOffset() * 60 * 1000;
date.setTime(date.getTime() + timezoneOffset + serverTimezoneOffset*1000); date.setTime(date.getTime() + timezoneOffset + serverTimezoneOffset * 1000);
/* date object has been shifted to artificial UTC time. Now let's /* date object has been shifted to artificial UTC time. Now let's
* shift it to the server's timezone */ * shift it to the server's timezone */
@ -131,10 +131,10 @@ var _preview_window = null;
function openAudioPreview(p_event) { function openAudioPreview(p_event) {
p_event.stopPropagation(); p_event.stopPropagation();
var audioFileID = $(this).attr('audioFile'); var audioFileID = $(this).attr("audioFile");
var objId = $('.obj_id:first').attr('value'); var objId = $(".obj_id:first").attr("value");
var objType = $('.obj_type:first').attr('value'); var objType = $(".obj_type:first").attr("value");
var playIndex = $(this).parent().parent().attr('id'); var playIndex = $(this).parent().parent().attr("id");
playIndex = playIndex.substring(4); //remove the spl_ playIndex = playIndex.substring(4); //remove the spl_
if (objType == "playlist") { if (objType == "playlist") {
@ -148,7 +148,11 @@ function open_audio_preview(type, id) {
// The reason that we need to encode artist and title string is that // The reason that we need to encode artist and title string is that
// sometime they contain '/' or '\' and apache reject %2f or %5f // sometime they contain '/' or '\' and apache reject %2f or %5f
// so the work around is to encode it twice. // so the work around is to encode it twice.
openPreviewWindow(baseUrl+'audiopreview/audio-preview/audioFileID/'+id+'/type/'+type, previewWidth, previewHeight); openPreviewWindow(
baseUrl + "audiopreview/audio-preview/audioFileID/" + id + "/type/" + type,
previewWidth,
previewHeight
);
_preview_window.focus(); _preview_window.focus();
} }
@ -159,25 +163,42 @@ function open_audio_preview(type, id) {
*given index. *given index.
*/ */
function open_playlist_preview(p_playlistID, p_playlistIndex) { function open_playlist_preview(p_playlistID, p_playlistIndex) {
if (p_playlistIndex == undefined) //Use a resonable default. if (p_playlistIndex == undefined)
//Use a resonable default.
p_playlistIndex = 0; p_playlistIndex = 0;
if (_preview_window != null && !_preview_window.closed) if (_preview_window != null && !_preview_window.closed)
_preview_window.playAllPlaylist(p_playlistID, p_playlistIndex); _preview_window.playAllPlaylist(p_playlistID, p_playlistIndex);
else else
openPreviewWindow(baseUrl+'audiopreview/playlist-preview/playlistIndex/'+p_playlistIndex+'/playlistID/'+p_playlistID, previewWidth, previewHeight); openPreviewWindow(
baseUrl +
"audiopreview/playlist-preview/playlistIndex/" +
p_playlistIndex +
"/playlistID/" +
p_playlistID,
previewWidth,
previewHeight
);
_preview_window.focus(); _preview_window.focus();
} }
function open_block_preview(p_blockId, p_blockIndex) { function open_block_preview(p_blockId, p_blockIndex) {
if (p_blockIndex == undefined) //Use a resonable default. if (p_blockIndex == undefined)
//Use a resonable default.
p_blockIndex = 0; p_blockIndex = 0;
if (_preview_window != null && !_preview_window.closed) if (_preview_window != null && !_preview_window.closed)
_preview_window.playBlock(p_blockId, p_blockIndex); _preview_window.playBlock(p_blockId, p_blockIndex);
else else
openPreviewWindow(baseUrl+'audiopreview/block-preview/blockIndex/'+p_blockIndex+'/blockId/'+p_blockId, previewWidth, previewHeight); openPreviewWindow(
baseUrl +
"audiopreview/block-preview/blockIndex/" +
p_blockIndex +
"/blockId/" +
p_blockId,
previewWidth,
previewHeight
);
_preview_window.focus(); _preview_window.focus();
} }
@ -191,61 +212,80 @@ function open_show_preview(p_showID, p_showIndex) {
if (_preview_window != null && !_preview_window.closed) if (_preview_window != null && !_preview_window.closed)
_preview_window.playAllShow(p_showID, p_showIndex); _preview_window.playAllShow(p_showID, p_showIndex);
else else
openPreviewWindow(baseUrl+'audiopreview/show-preview/showID/'+p_showID+'/showIndex/'+p_showIndex, previewWidth, previewHeight); openPreviewWindow(
baseUrl +
"audiopreview/show-preview/showID/" +
p_showID +
"/showIndex/" +
p_showIndex,
previewWidth,
previewHeight
);
_preview_window.focus(); _preview_window.focus();
} }
function openPreviewWindow(url, w, h) { function openPreviewWindow(url, w, h) {
var dim = (w && h) ? 'width=' + w + ',height=' + h + ',' : ''; var dim = w && h ? "width=" + w + ",height=" + h + "," : "";
// Hardcoding this here is kinda gross, but the alternatives aren't much better... // Hardcoding this here is kinda gross, but the alternatives aren't much better...
_preview_window = window.open(url, $.i18n._('Audio Player'), dim + 'scrollbars=yes'); _preview_window = window.open(
url,
$.i18n._("Audio Player"),
dim + "scrollbars=yes"
);
return false; return false;
} }
function validateTimeRange() { function validateTimeRange() {
var oRange, var oRange,
inputs = $('.sb-timerange > input'), inputs = $(".sb-timerange > input"),
start, end; start,
end;
oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
start = oRange.start; start = oRange.start;
end = oRange.end; end = oRange.end;
if (end >= start) { if (end >= start) {
inputs.removeClass('error'); inputs.removeClass("error");
} else { } else {
if (!inputs.hasClass('error')) { if (!inputs.hasClass("error")) {
inputs.addClass('error'); inputs.addClass("error");
} }
} }
return { return {
start: start, start: start,
end: end, end: end,
isValid: end >= start isValid: end >= start,
}; };
} }
// validate uploaded images // validate uploaded images
function validateImage(img, el) { function validateImage(img, el) {
// remove any existing error messages // remove any existing error messages
if ($("#img-err")) { $("#img-err").remove(); } if ($("#img-err")) {
$("#img-err").remove();
}
if (img.size > 2048000) { // 2MB - pull this from somewhere instead? if (img.size > 2048000) {
// 2MB - pull this from somewhere instead?
// hack way of inserting an error message // hack way of inserting an error message
var err = $.i18n._("Selected file is too large"); var err = $.i18n._("Selected file is too large");
el.parent().after( el.parent().after(
"<ul id='img-err' class='errors'>" + "<ul id='img-err' class='errors'>" + "<li>" + err + "</li>" + "</ul>"
"<li>" + err + "</li>" + );
"</ul>");
return false; return false;
} else if (validateMimeType(img.type) < 0) { } else if (validateMimeType(img.type) < 0) {
var err = $.i18n._("File format is not supported"); var err = $.i18n._("File format is not supported");
el.parent().after( el.parent().after(
"<ul id='img-err' class='errors'>" + "<ul id='img-err' class='errors'>" + "<li>" + err + "</li>" + "</ul>"
"<li>" + err + "</li>" + );
"</ul>");
return false; return false;
} }
return true; return true;
@ -254,22 +294,24 @@ function validateImage(img, el) {
// validate image mime type // validate image mime type
function validateMimeType(mime) { function validateMimeType(mime) {
var extensions = [ var extensions = [
'image/jpeg', "image/jpeg",
'image/png', "image/png",
'image/gif' "image/gif",
// BMP? // BMP?
]; ];
return $.inArray(mime, extensions); return $.inArray(mime, extensions);
} }
function pad(number, length) { function pad(number, length) {
return sprintf("%'0"+length+"d", number); return sprintf("%'0" + length + "d", number);
} }
function removeSuccessMsg() { function removeSuccessMsg() {
var $status = $('.success'); var $status = $(".success");
$status.fadeOut("slow", function(){$status.empty()}); $status.fadeOut("slow", function () {
$status.empty();
});
} }
function hideHint(h) { function hideHint(h) {
@ -282,8 +324,11 @@ function showHint(h) {
function getUsabilityHint() { function getUsabilityHint() {
var pathname = window.location.pathname; var pathname = window.location.pathname;
$.getJSON(baseUrl + "api/get-usability-hint", {"format": "json", "userPath": pathname}, function(json) { $.getJSON(
var $hint_div = $('.usability_hint'); baseUrl + "api/get-usability-hint",
{ format: "json", userPath: pathname },
function (json) {
var $hint_div = $(".usability_hint");
var current_hint = $hint_div.html(); var current_hint = $hint_div.html();
if (json === "") { if (json === "") {
// there are no more hints to display to the user // there are no more hints to display to the user
@ -301,7 +346,8 @@ function getUsabilityHint() {
showHint($hint_div); showHint($hint_div);
} }
} }
}); }
);
} }
// TODO: build this out so we can use it as a fallback in fail cases // TODO: build this out so we can use it as a fallback in fail cases
@ -314,7 +360,7 @@ function buildErrorDialog(message) {
resizable: false, resizable: false,
modal: true, modal: true,
width: "auto", width: "auto",
height: "auto" height: "auto",
}); });
} }
@ -324,8 +370,8 @@ function buildErrorDialog(message) {
* @param selector jQuery selector to search descendants * @param selector jQuery selector to search descendants
* @returns {jQuery} * @returns {jQuery}
*/ */
jQuery.fn.addTitles = function(selector) { jQuery.fn.addTitles = function (selector) {
this.each(function() { this.each(function () {
// Put this in a mouseenter event handler so it's dynamic // Put this in a mouseenter event handler so it's dynamic
// (newly created elements will have the title applied on hover) // (newly created elements will have the title applied on hover)
$(this).on("mouseenter", selector, function () { $(this).on("mouseenter", selector, function () {
@ -337,20 +383,29 @@ jQuery.fn.addTitles = function(selector) {
}; };
// XXX: Old code to pan selector text; keeping this around in case we want to use it later - Duncan // XXX: Old code to pan selector text; keeping this around in case we want to use it later - Duncan
jQuery.fn.scrollText = function(selector) { jQuery.fn.scrollText = function (selector) {
this.each(function () { this.each(function () {
$(this).on("mouseenter", selector, function () { $(this).on("mouseenter", selector, function () {
var sw = $(this)[0].scrollWidth - parseFloat($(this).css("textIndent")), iw = $(this).innerWidth(); var sw = $(this)[0].scrollWidth - parseFloat($(this).css("textIndent")),
iw = $(this).innerWidth();
if (sw > iw) { if (sw > iw) {
$(this).stop().animate({ $(this)
textIndent: "-" + (sw + 1 - iw) + "px" .stop()
}, sw * 8); .animate(
{
textIndent: "-" + (sw + 1 - iw) + "px",
},
sw * 8
);
} }
}); });
$(this).on("mouseleave", selector, function () { $(this).on("mouseleave", selector, function () {
$(this).stop().animate({ $(this).stop().animate(
textIndent: "0" {
}, 500); textIndent: "0",
},
500
);
}); });
}); });

View File

@ -1,21 +1,18 @@
$(document).ready(function () {
$(document).ready(function() { $("#facebook-login").click(function () {
$("#facebook-login").click(function() {
AIRTIME.facebook.promptForFacebookPage(); AIRTIME.facebook.promptForFacebookPage();
}); });
}); });
window.fbAsyncInit = function () {
window.fbAsyncInit = function() {
FB.init({ FB.init({
appId : FACEBOOK_APP_ID, appId: FACEBOOK_APP_ID,
xfbml : true, xfbml: true,
version : 'v2.4' version: "v2.4",
}); });
}; };
var AIRTIME = (function(AIRTIME) { var AIRTIME = (function (AIRTIME) {
//Module initialization //Module initialization
if (AIRTIME.facebook === undefined) { if (AIRTIME.facebook === undefined) {
AIRTIME.facebook = {}; AIRTIME.facebook = {};
@ -24,7 +21,8 @@ var AIRTIME = (function(AIRTIME) {
var mod = AIRTIME.facebook; var mod = AIRTIME.facebook;
(function (d, s, id) { (function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0]; var js,
fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) { if (d.getElementById(id)) {
return; return;
} }
@ -32,47 +30,62 @@ var AIRTIME = (function(AIRTIME) {
js.id = id; js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js"; js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs); fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk')); })(document, "script", "facebook-jssdk");
mod.promptForFacebookPage = function() { mod.promptForFacebookPage = function () {
FB.login(function (response) { FB.login(
function (response) {
if (response.authResponse) { if (response.authResponse) {
mod.getPagesOwnedByUser(response.authResponse.userID, response.authResponse.accessToken); mod.getPagesOwnedByUser(
response.authResponse.userID,
response.authResponse.accessToken
);
mod.addPageTab(); mod.addPageTab();
} else { } else {
console.log('Authorization failed.'); console.log("Authorization failed.");
}
}, {scope: 'manage_pages'});
} }
},
{ scope: "manage_pages" }
);
};
mod.getPagesOwnedByUser = function(userId, accessToken) { mod.getPagesOwnedByUser = function (userId, accessToken) {
FB.api('/' + userId + '/accounts', function (response) { FB.api(
"/" + userId + "/accounts",
function (response) {
console.log(response); console.log(response);
}, {access_token: accessToken}); },
} { access_token: accessToken }
);
};
mod.addPageTab = function() { mod.addPageTab = function () {
FB.ui( FB.ui(
{ method: 'pagetab' }, { method: "pagetab" },
function (resp) { function (resp) {
console.log("response:"); console.log("response:");
console.log(resp); console.log(resp);
var pageIdList = []; var pageIdList = [];
var tabs = resp["tabs_added"]; var tabs = resp["tabs_added"];
if ((tabs != undefined) && (Object.keys(tabs).length > 0)) { if (tabs != undefined && Object.keys(tabs).length > 0) {
for (var pageId in tabs) { for (var pageId in tabs) {
pageIdList.push(pageId); pageIdList.push(pageId);
} }
//POST these back to Airtime, which will then proxy it over to our social app. (multiple requests from Airtime) //POST these back to Airtime, which will then proxy it over to our social app. (multiple requests from Airtime)
$.post('facebook-tab-success', { "pages" : JSON.stringify(pageIdList) }, function() { $.post(
"facebook-tab-success",
{ pages: JSON.stringify(pageIdList) },
function () {
alert("Successfully added to your Facebook page!"); alert("Successfully added to your Facebook page!");
}).done(function() { }
)
}).fail(function() { .done(function () {})
alert("Sorry, an error occurred and we were unable to add the widget to your Facebook page."); .fail(function () {
alert(
"Sorry, an error occurred and we were unable to add the widget to your Facebook page."
);
}); });
} }
}, },
@ -81,8 +94,7 @@ var AIRTIME = (function(AIRTIME) {
//redirect_uri: 'https://localhost' //redirect_uri: 'https://localhost'
} }
); );
} };
return AIRTIME; return AIRTIME;
})(AIRTIME || {});
}(AIRTIME || {}));

View File

@ -22,7 +22,6 @@ var live_dj_on_air = false;
var scheduled_play_on_air = false; var scheduled_play_on_air = false;
var scheduled_play_source = false; var scheduled_play_source = false;
//a reference returned by setTimeout. Useful for when we want clearTimeout() //a reference returned by setTimeout. Useful for when we want clearTimeout()
var newSongTimeoutId = null; var newSongTimeoutId = null;
@ -40,10 +39,10 @@ var onAirOffIterations = 0;
var nextSongPrepare = true; var nextSongPrepare = true;
var nextShowPrepare = true; var nextShowPrepare = true;
function secondsTimer(){ function secondsTimer() {
/* This function constantly calls itself every 'uiUpdateInterval' /* This function constantly calls itself every 'uiUpdateInterval'
* micro-seconds and is responsible for updating the UI. */ * micro-seconds and is responsible for updating the UI. */
if (localRemoteTimeOffset !== null){ if (localRemoteTimeOffset !== null) {
var date = new Date(); var date = new Date();
approximateServerTime = date.getTime() - localRemoteTimeOffset; approximateServerTime = date.getTime() - localRemoteTimeOffset;
updateProgressBarValue(); updateProgressBarValue();
@ -54,39 +53,47 @@ function secondsTimer(){
setTimeout(secondsTimer, uiUpdateInterval); setTimeout(secondsTimer, uiUpdateInterval);
} }
function newSongStart(){ function newSongStart() {
nextSongPrepare = true; nextSongPrepare = true;
if (nextSong.type == 'track') { if (nextSong.type == "track") {
currentSong = nextSong; currentSong = nextSong;
nextSong = null; nextSong = null;
} }
} }
function nextShowStart(){ function nextShowStart() {
nextShowPrepare = true; nextShowPrepare = true;
currentShow[0] = nextShow.shift(); currentShow[0] = nextShow.shift();
} }
/* Called every "uiUpdateInterval" mseconds. */ /* Called every "uiUpdateInterval" mseconds. */
function updateProgressBarValue(){ function updateProgressBarValue() {
var showPercentDone = 0; var showPercentDone = 0;
if (currentShow.length > 0){ if (currentShow.length > 0) {
showPercentDone = (approximateServerTime - currentShow[0].showStartPosixTime)/currentShow[0].showLengthMs*100; showPercentDone =
if (showPercentDone < 0 || showPercentDone > 100){ ((approximateServerTime - currentShow[0].showStartPosixTime) /
currentShow[0].showLengthMs) *
100;
if (showPercentDone < 0 || showPercentDone > 100) {
showPercentDone = 0; showPercentDone = 0;
currentShow = new Array(); currentShow = new Array();
currentSong = null; currentSong = null;
} }
} }
$('#progress-show').attr("style", "width:"+showPercentDone+"%"); $("#progress-show").attr("style", "width:" + showPercentDone + "%");
var songPercentDone = 0; var songPercentDone = 0;
var scheduled_play_div = $("#scheduled_play_div"); var scheduled_play_div = $("#scheduled_play_div");
var scheduled_play_line_to_switch = scheduled_play_div.parent().find(".line-to-switch"); var scheduled_play_line_to_switch = scheduled_play_div
.parent()
.find(".line-to-switch");
if (currentSong !== null){ if (currentSong !== null) {
var songElapsedTime = 0; var songElapsedTime = 0;
songPercentDone = (approximateServerTime - currentSong.songStartPosixTime)/currentSong.songLengthMs*100; songPercentDone =
((approximateServerTime - currentSong.songStartPosixTime) /
currentSong.songLengthMs) *
100;
songElapsedTime = approximateServerTime - currentSong.songStartPosixTime; songElapsedTime = approximateServerTime - currentSong.songStartPosixTime;
if (songPercentDone < 0) { if (songPercentDone < 0) {
songPercentDone = 0; songPercentDone = 0;
@ -94,134 +101,188 @@ function updateProgressBarValue(){
} else if (songPercentDone > 100) { } else if (songPercentDone > 100) {
songPercentDone = 100; songPercentDone = 100;
} else { } else {
if ((currentSong.media_item_played == true && currentShow.length > 0) || (songElapsedTime < 5000 && currentShow[0].record != 1)) { if (
(currentSong.media_item_played == true && currentShow.length > 0) ||
(songElapsedTime < 5000 && currentShow[0].record != 1)
) {
scheduled_play_line_to_switch.attr("class", "line-to-switch on"); scheduled_play_line_to_switch.attr("class", "line-to-switch on");
scheduled_play_div.addClass("ready"); scheduled_play_div.addClass("ready");
scheduled_play_source = true; scheduled_play_source = true;
} } else {
else{
scheduled_play_source = false; scheduled_play_source = false;
scheduled_play_line_to_switch.attr("class", "line-to-switch off"); scheduled_play_line_to_switch.attr("class", "line-to-switch off");
scheduled_play_div.removeClass("ready"); scheduled_play_div.removeClass("ready");
} }
$('#progress-show').attr("class", "progress-show"); $("#progress-show").attr("class", "progress-show");
} }
} else { } else {
scheduled_play_source = false; scheduled_play_source = false;
scheduled_play_line_to_switch.attr("class", "line-to-switch off"); scheduled_play_line_to_switch.attr("class", "line-to-switch off");
scheduled_play_div.removeClass("ready"); scheduled_play_div.removeClass("ready");
$('#progress-show').attr("class", "progress-show-error"); $("#progress-show").attr("class", "progress-show-error");
} }
$('#progress-bar').attr("style", "width:"+songPercentDone+"%"); $("#progress-bar").attr("style", "width:" + songPercentDone + "%");
} }
function updatePlaybar(){ function updatePlaybar() {
/* Column 0 update */ /* Column 0 update */
if (previousSong !== null){ if (previousSong !== null) {
$('#previous').text(previousSong.name+","); $("#previous").text(previousSong.name + ",");
$('#prev-length').text(convertToHHMMSSmm(previousSong.songLengthMs)); $("#prev-length").text(convertToHHMMSSmm(previousSong.songLengthMs));
}else{ } else {
$('#previous').empty(); $("#previous").empty();
$('#prev-length').empty(); $("#prev-length").empty();
} }
if (currentSong !== null && !master_dj_on_air && !live_dj_on_air){ if (currentSong !== null && !master_dj_on_air && !live_dj_on_air) {
if (currentSong.record == "1") { if (currentSong.record == "1") {
$('#current').html("<span style='color:red; font-weight:bold'>"+$.i18n._("Recording:")+"</span>"+currentSong.name+","); $("#current").html(
"<span style='color:red; font-weight:bold'>" +
$.i18n._("Recording:") +
"</span>" +
currentSong.name +
","
);
} else { } else {
$('#current').text(currentSong.name+","); $("#current").text(currentSong.name + ",");
if (currentSong.metadata && currentSong.metadata.artwork_data) { if (currentSong.metadata && currentSong.metadata.artwork_data) {
var check_current_song = Cookies.get("current_track");
var check_current_song = Cookies.get('current_track'); var loaded = Cookies.get("loaded");
var loaded = Cookies.get('loaded');
if (check_current_song != currentSong.name) { if (check_current_song != currentSong.name) {
$('#now-playing-artwork_containter').html("<img height='75' width='75' class'artwork' src='"+ currentSong.metadata.artwork_data +"' />"); $("#now-playing-artwork_containter").html(
Cookies.remove('current_track'); "<img height='75' width='75' class'artwork' src='" +
Cookies.set('current_track', currentSong.name); currentSong.metadata.artwork_data +
"' />"
);
Cookies.remove("current_track");
Cookies.set("current_track", currentSong.name);
} }
// makes sure it stays updated with current track if page loads // makes sure it stays updated with current track if page loads
if (loaded != UNIQID) { if (loaded != UNIQID) {
Cookies.remove('current_track'); Cookies.remove("current_track");
Cookies.remove('loaded'); Cookies.remove("loaded");
Cookies.set('loaded', UNIQID); Cookies.set("loaded", UNIQID);
} }
} }
} }
}else{ } else {
if (master_dj_on_air) { if (master_dj_on_air) {
if (showName) { if (showName) {
$('#current').html($.i18n._("Current")+": <span style='color:red; font-weight:bold'>"+showName+" - "+$.i18n._("Master Stream")+"</span>"); $("#current").html(
$.i18n._("Current") +
": <span style='color:red; font-weight:bold'>" +
showName +
" - " +
$.i18n._("Master Stream") +
"</span>"
);
} else { } else {
$('#current').html($.i18n._("Current")+": <span style='color:red; font-weight:bold'>"+$.i18n._("Master Stream")+"</span>"); $("#current").html(
$.i18n._("Current") +
": <span style='color:red; font-weight:bold'>" +
$.i18n._("Master Stream") +
"</span>"
);
} }
} else if (live_dj_on_air) { } else if (live_dj_on_air) {
if (showName) { if (showName) {
$('#current').html($.i18n._("Current")+": <span style='color:red; font-weight:bold'>"+showName+" - "+$.i18n._("Live Stream")+"</span>"); $("#current").html(
$.i18n._("Current") +
": <span style='color:red; font-weight:bold'>" +
showName +
" - " +
$.i18n._("Live Stream") +
"</span>"
);
} else { } else {
$('#current').html($.i18n._("Current")+": <span style='color:red; font-weight:bold'>"+$.i18n._("Live Stream")+"</span>"); $("#current").html(
$.i18n._("Current") +
": <span style='color:red; font-weight:bold'>" +
$.i18n._("Live Stream") +
"</span>"
);
} }
} else { } else {
$('#current').html($.i18n._("Current")+": <span style='color:red; font-weight:bold'>"+$.i18n._("Nothing Scheduled")+"</span>"); $("#current").html(
$.i18n._("Current") +
": <span style='color:red; font-weight:bold'>" +
$.i18n._("Nothing Scheduled") +
"</span>"
);
} }
} }
if (nextSong !== null){ if (nextSong !== null) {
$('#next').text(nextSong.name+","); $("#next").text(nextSong.name + ",");
$('#next-length').text(convertToHHMMSSmm(nextSong.songLengthMs)); $("#next-length").text(convertToHHMMSSmm(nextSong.songLengthMs));
}else{ } else {
$('#next').empty(); $("#next").empty();
$('#next-length').empty(); $("#next-length").empty();
} }
$('#start').empty(); $("#start").empty();
$('#end').empty(); $("#end").empty();
$('#time-elapsed').empty(); $("#time-elapsed").empty();
$('#time-remaining').empty(); $("#time-remaining").empty();
$('#song-length').empty(); $("#song-length").empty();
if (currentSong !== null && !master_dj_on_air && !live_dj_on_air){ if (currentSong !== null && !master_dj_on_air && !live_dj_on_air) {
$('#start').text(currentSong.starts.split(' ')[1]); $("#start").text(currentSong.starts.split(" ")[1]);
$('#end').text(currentSong.ends.split(' ')[1]); $("#end").text(currentSong.ends.split(" ")[1]);
/* Get rid of the millisecond accuracy so that the second counters for both /* Get rid of the millisecond accuracy so that the second counters for both
* show and song change at the same time. */ * show and song change at the same time. */
var songStartRoughly = parseInt(Math.round(currentSong.songStartPosixTime/1000), 10)*1000; var songStartRoughly =
var songEndRoughly = parseInt(Math.round(currentSong.songEndPosixTime/1000), 10)*1000; parseInt(Math.round(currentSong.songStartPosixTime / 1000), 10) * 1000;
var songEndRoughly =
parseInt(Math.round(currentSong.songEndPosixTime / 1000), 10) * 1000;
$('#time-elapsed').text(convertToHHMMSS(approximateServerTime - songStartRoughly)); $("#time-elapsed").text(
$('#time-remaining').text(convertToHHMMSS(songEndRoughly - approximateServerTime)); convertToHHMMSS(approximateServerTime - songStartRoughly)
$('#song-length').text(convertToHHMMSS(currentSong.songLengthMs)); );
$("#time-remaining").text(
convertToHHMMSS(songEndRoughly - approximateServerTime)
);
$("#song-length").text(convertToHHMMSS(currentSong.songLengthMs));
} }
/* Column 1 update */ /* Column 1 update */
$('#playlist').text($.i18n._("Current Show:")); $("#playlist").text($.i18n._("Current Show:"));
var recElem = $('.recording-show'); var recElem = $(".recording-show");
if (currentShow.length > 0){ if (currentShow.length > 0) {
$('#playlist').text(currentShow[0].name); $("#playlist").text(currentShow[0].name);
(currentShow[0].record == "1") ? recElem.show(): recElem.hide(); currentShow[0].record == "1" ? recElem.show() : recElem.hide();
} else { } else {
recElem.hide(); recElem.hide();
} }
$('#show-length').empty(); $("#show-length").empty();
if (currentShow.length > 0){ if (currentShow.length > 0) {
$('#show-length').text(convertDateToHHMM(currentShow[0].showStartPosixTime) + " - " + convertDateToHHMM(currentShow[0].showEndPosixTime)); $("#show-length").text(
convertDateToHHMM(currentShow[0].showStartPosixTime) +
" - " +
convertDateToHHMM(currentShow[0].showEndPosixTime)
);
} }
/* Column 2 update */ /* Column 2 update */
$('#time').text(convertDateToHHMMSS(approximateServerTime)); $("#time").text(convertDateToHHMMSS(approximateServerTime));
} }
function calcAdditionalData(currentItem){ function calcAdditionalData(currentItem) {
currentItem.songStartPosixTime = convertDateToPosixTime(currentItem.starts); currentItem.songStartPosixTime = convertDateToPosixTime(currentItem.starts);
currentItem.songEndPosixTime = convertDateToPosixTime(currentItem.ends); currentItem.songEndPosixTime = convertDateToPosixTime(currentItem.ends);
currentItem.songLengthMs = currentItem.songEndPosixTime - currentItem.songStartPosixTime; currentItem.songLengthMs =
currentItem.songEndPosixTime - currentItem.songStartPosixTime;
} }
function calcAdditionalShowData(show){ function calcAdditionalShowData(show) {
if (show.length > 0){ if (show.length > 0) {
show[0].showStartPosixTime = convertDateToPosixTime(show[0].start_timestamp); show[0].showStartPosixTime = convertDateToPosixTime(
show[0].start_timestamp
);
show[0].showEndPosixTime = convertDateToPosixTime(show[0].end_timestamp); show[0].showEndPosixTime = convertDateToPosixTime(show[0].end_timestamp);
show[0].showLengthMs = show[0].showEndPosixTime - show[0].showStartPosixTime; show[0].showLengthMs =
show[0].showEndPosixTime - show[0].showStartPosixTime;
} }
} }
@ -237,9 +298,9 @@ function calculateTimeToNextSong() {
} }
var diff = nextSong.songStartPosixTime - approximateServerTime; var diff = nextSong.songStartPosixTime - approximateServerTime;
if (diff < 0) diff=0; if (diff < 0) diff = 0;
nextSongPrepare = false; nextSongPrepare = false;
newSongTimeoutId= setTimeout(newSongStart, diff); newSongTimeoutId = setTimeout(newSongStart, diff);
} }
function calculateTimeToNextShow() { function calculateTimeToNextShow() {
@ -254,12 +315,12 @@ function calculateTimeToNextShow() {
} }
var diff = nextShow[0].showStartPosixTime - approximateServerTime; var diff = nextShow[0].showStartPosixTime - approximateServerTime;
if (diff < 0) diff=0; if (diff < 0) diff = 0;
nextShowPrepare = false; nextShowPrepare = false;
newShowTimeoutId= setTimeout(nextShowStart, diff); newShowTimeoutId = setTimeout(nextShowStart, diff);
} }
function parseItems(obj){ function parseItems(obj) {
previousSong = obj.previous; previousSong = obj.previous;
currentSong = obj.current; currentSong = obj.current;
nextSong = obj.next; nextSong = obj.next;
@ -288,52 +349,50 @@ function parseItems(obj){
calculateTimeToNextShow(); calculateTimeToNextShow();
} }
var schedulePosixTime = convertDateToPosixTime(obj.schedulerTime); var schedulePosixTime = convertDateToPosixTime(obj.schedulerTime);
var date = new Date(); var date = new Date();
localRemoteTimeOffset = date.getTime() - schedulePosixTime; localRemoteTimeOffset = date.getTime() - schedulePosixTime;
} }
function parseSourceStatus(obj){ function parseSourceStatus(obj) {
var live_div = $("#live_dj_div"); var live_div = $("#live_dj_div");
var master_div = $("#master_dj_div"); var master_div = $("#master_dj_div");
var live_li = live_div.parent(); var live_li = live_div.parent();
var master_li = master_div.parent(); var master_li = master_div.parent();
if(obj.live_dj_source == false){ if (obj.live_dj_source == false) {
live_li.find(".line-to-switch").attr("class", "line-to-switch off"); live_li.find(".line-to-switch").attr("class", "line-to-switch off");
live_div.removeClass("ready"); live_div.removeClass("ready");
}else{ } else {
live_li.find(".line-to-switch").attr("class", "line-to-switch on"); live_li.find(".line-to-switch").attr("class", "line-to-switch on");
live_div.addClass("ready"); live_div.addClass("ready");
} }
if(obj.master_dj_source == false){ if (obj.master_dj_source == false) {
master_li.find(".line-to-switch").attr("class", "line-to-switch off"); master_li.find(".line-to-switch").attr("class", "line-to-switch off");
master_div.removeClass("ready"); master_div.removeClass("ready");
}else{ } else {
master_li.find(".line-to-switch").attr("class", "line-to-switch on"); master_li.find(".line-to-switch").attr("class", "line-to-switch on");
master_div.addClass("ready"); master_div.addClass("ready");
} }
} }
function parseSwitchStatus(obj){ function parseSwitchStatus(obj) {
if (obj.live_dj_source == "on") {
if(obj.live_dj_source == "on"){
live_dj_on_air = true; live_dj_on_air = true;
}else{ } else {
live_dj_on_air = false; live_dj_on_air = false;
} }
if(obj.master_dj_source == "on"){ if (obj.master_dj_source == "on") {
master_dj_on_air = true; master_dj_on_air = true;
}else{ } else {
master_dj_on_air = false; master_dj_on_air = false;
} }
if(obj.scheduled_play == "on"){ if (obj.scheduled_play == "on") {
scheduled_play_on_air = true; scheduled_play_on_air = true;
}else{ } else {
scheduled_play_on_air = false; scheduled_play_on_air = false;
} }
@ -342,30 +401,34 @@ function parseSwitchStatus(obj){
var master_dj_switch = $("#master_dj.source-switch-button"); var master_dj_switch = $("#master_dj.source-switch-button");
scheduled_play_switch.find("span").html(obj.scheduled_play); scheduled_play_switch.find("span").html(obj.scheduled_play);
if(scheduled_play_on_air){ if (scheduled_play_on_air) {
scheduled_play_switch.addClass("active"); scheduled_play_switch.addClass("active");
}else{ } else {
scheduled_play_switch.removeClass("active"); scheduled_play_switch.removeClass("active");
} }
live_dj_switch.find("span").html(obj.live_dj_source); live_dj_switch.find("span").html(obj.live_dj_source);
if(live_dj_on_air){ if (live_dj_on_air) {
live_dj_switch.addClass("active"); live_dj_switch.addClass("active");
}else{ } else {
live_dj_switch.removeClass("active"); live_dj_switch.removeClass("active");
} }
master_dj_switch.find("span").html(obj.master_dj_source) master_dj_switch.find("span").html(obj.master_dj_source);
if(master_dj_on_air){ if (master_dj_on_air) {
master_dj_switch.addClass("active"); master_dj_switch.addClass("active");
}else{ } else {
master_dj_switch.removeClass("active"); master_dj_switch.removeClass("active");
} }
} }
function controlOnAirLight(){ function controlOnAirLight() {
if ((scheduled_play_on_air && scheduled_play_source) || live_dj_on_air || master_dj_on_air) { if (
$('#on-air-info').attr("class", "on-air-info on"); (scheduled_play_on_air && scheduled_play_source) ||
live_dj_on_air ||
master_dj_on_air
) {
$("#on-air-info").attr("class", "on-air-info on");
onAirOffIterations = 0; onAirOffIterations = 0;
} else if (onAirOffIterations < 20) { } else if (onAirOffIterations < 20) {
//if less than 4 seconds have gone by (< 20 executions of this function) //if less than 4 seconds have gone by (< 20 executions of this function)
@ -374,96 +437,124 @@ function controlOnAirLight(){
//off between tracks: CC-3725 //off between tracks: CC-3725
onAirOffIterations++; onAirOffIterations++;
} else { } else {
$('#on-air-info').attr("class", "on-air-info off"); $("#on-air-info").attr("class", "on-air-info off");
} }
} }
function controlSwitchLight(){ function controlSwitchLight() {
var live_li= $("#live_dj_div").parent(); var live_li = $("#live_dj_div").parent();
var master_li = $("#master_dj_div").parent(); var master_li = $("#master_dj_div").parent();
var scheduled_play_li = $("#scheduled_play_div").parent(); var scheduled_play_li = $("#scheduled_play_div").parent();
if((scheduled_play_on_air && scheduled_play_source) && !live_dj_on_air && !master_dj_on_air){ if (
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air on"); scheduled_play_on_air &&
scheduled_play_source &&
!live_dj_on_air &&
!master_dj_on_air
) {
scheduled_play_li
.find(".line-to-on-air")
.attr("class", "line-to-on-air on");
live_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); live_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); master_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
}else if(live_dj_on_air && !master_dj_on_air){ } else if (live_dj_on_air && !master_dj_on_air) {
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); scheduled_play_li
.find(".line-to-on-air")
.attr("class", "line-to-on-air off");
live_li.find(".line-to-on-air").attr("class", "line-to-on-air on"); live_li.find(".line-to-on-air").attr("class", "line-to-on-air on");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); master_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
}else if(master_dj_on_air){ } else if (master_dj_on_air) {
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); scheduled_play_li
.find(".line-to-on-air")
.attr("class", "line-to-on-air off");
live_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); live_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air on"); master_li.find(".line-to-on-air").attr("class", "line-to-on-air on");
}else{ } else {
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); scheduled_play_li
.find(".line-to-on-air")
.attr("class", "line-to-on-air off");
live_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); live_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air off"); master_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
} }
} }
function getScheduleFromServer(){ function getScheduleFromServer() {
$.ajax({ url: baseUrl+"Schedule/get-current-playlist/format/json", $.ajax({
dataType:"json", url: baseUrl + "Schedule/get-current-playlist/format/json",
success:function(data){ dataType: "json",
success: function (data) {
parseItems(data.entries); parseItems(data.entries);
parseSourceStatus(data.source_status); parseSourceStatus(data.source_status);
parseSwitchStatus(data.switch_status); parseSwitchStatus(data.switch_status);
showName = data.show_name; showName = data.show_name;
}, error:function(jqXHR, textStatus, errorThrown){}}); },
error: function (jqXHR, textStatus, errorThrown) {},
});
} }
function setupQtip(){ function setupQtip() {
var qtipElem = $('#about-link'); var qtipElem = $("#about-link");
if (qtipElem.length > 0){ if (qtipElem.length > 0) {
qtipElem.qtip({ qtipElem.qtip({
content: $('#about-txt').html(), content: $("#about-txt").html(),
show: 'mouseover', show: "mouseover",
hide: { when: 'mouseout', fixed: true }, hide: { when: "mouseout", fixed: true },
position: { position: {
corner: { corner: {
target: 'center', target: "center",
tooltip: 'topRight' tooltip: "topRight",
} },
}, },
style: { style: {
border: { border: {
width: 0, width: 0,
radius: 4 radius: 4,
},
name: "light", // Use the default light style
}, },
name: 'light' // Use the default light style
}
}); });
} }
} }
function setSwitchListener(ele){ function setSwitchListener(ele) {
var sourcename = $(ele).attr('id'); var sourcename = $(ele).attr("id");
var status_span = $(ele).find("span"); var status_span = $(ele).find("span");
var status = status_span.html(); var status = status_span.html();
$.get(baseUrl+"Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){ $.get(
if(data.error){ baseUrl +
"Dashboard/switch-source/format/json/sourcename/" +
sourcename +
"/status/" +
status,
function (data) {
if (data.error) {
alert(data.error); alert(data.error);
}else{ } else {
if(data.status == "ON"){ if (data.status == "ON") {
$(ele).addClass("active"); $(ele).addClass("active");
}else{ } else {
$(ele).removeClass("active"); $(ele).removeClass("active");
} }
status_span.html(data.status); status_span.html(data.status);
} }
}); }
);
} }
function kickSource(ele){ function kickSource(ele) {
var sourcename = $(ele).attr('id'); var sourcename = $(ele).attr("id");
$.get(baseUrl+"Dashboard/disconnect-source/format/json/sourcename/"+sourcename, function(data){ $.get(
if(data.error){ baseUrl +
"Dashboard/disconnect-source/format/json/sourcename/" +
sourcename,
function (data) {
if (data.error) {
alert(data.error); alert(data.error);
} }
}); }
);
} }
var stream_window = null; var stream_window = null;
@ -477,9 +568,13 @@ function init() {
setupQtip(); setupQtip();
$('.listen-control-button').click(function() { $(".listen-control-button").click(function () {
if (stream_window == null || stream_window.closed) if (stream_window == null || stream_window.closed)
stream_window=window.open(baseUrl+"Dashboard/stream-player", 'name', 'width=400,height=158'); stream_window = window.open(
baseUrl + "Dashboard/stream-player",
"name",
"width=400,height=158"
);
stream_window.focus(); stream_window.focus();
return false; return false;
}); });
@ -491,38 +586,37 @@ function init() {
* field. Therefore, we fill the password field with 6 x's * field. Therefore, we fill the password field with 6 x's
*/ */
function setCurrentUserPseudoPassword() { function setCurrentUserPseudoPassword() {
$('#cu_password').val("xxxxxx"); $("#cu_password").val("xxxxxx");
$('#cu_passwordVerify').val("xxxxxx"); $("#cu_passwordVerify").val("xxxxxx");
} }
/*$(window).resize(function() { /*$(window).resize(function() {
*//* If we don't do this, the menu can stay hidden after resizing *//* */ /* If we don't do this, the menu can stay hidden after resizing */ /*
if ($(this).width() > 970) { if ($(this).width() > 970) {
$("#nav .responsive-menu").show(); $("#nav .responsive-menu").show();
} }
});*/ });*/
$(document).ready(function() { $(document).ready(function () {
if ($('#master-panel').length > 0) if ($("#master-panel").length > 0) init();
init(); if ($(".errors").length === 0) {
if ($('.errors').length === 0) {
setCurrentUserPseudoPassword(); setCurrentUserPseudoPassword();
} }
$('body').on('click','#current-user', function() { $("body").on("click", "#current-user", function () {
$.ajax({ $.ajax({
url: baseUrl+'user/edit-user/format/json' url: baseUrl + "user/edit-user/format/json",
}); });
}); });
$('body').on('click', '#cu_save_user', function() { $("body").on("click", "#cu_save_user", function () {
Cookies.set('airtime_locale', $('#cu_locale').val(), {path: '/'}); Cookies.set("airtime_locale", $("#cu_locale").val(), { path: "/" });
}); });
// When the 'Listen' button is clicked we set the width // When the 'Listen' button is clicked we set the width
// of the share button to the width of the 'Live Stream' // of the share button to the width of the 'Live Stream'
// text. This differs depending on the language setting // text. This differs depending on the language setting
$('#popup-link').css('width', $('.jp-container h1').css('width')); $("#popup-link").css("width", $(".jp-container h1").css("width"));
/*$('#menu-btn').click(function() { /*$('#menu-btn').click(function() {
$('#nav .responsive-menu').slideToggle(); $('#nav .responsive-menu').slideToggle();

View File

@ -1,65 +1,60 @@
/* function to create popup window */ /* function to create popup window */
function popup(mylink){ function popup(mylink) {
if (!window.focus) if (!window.focus) return true;
return true;
var href; var href;
if (typeof(mylink) == 'string') if (typeof mylink == "string") href = mylink;
href=mylink; else href = mylink.href;
else window.open(href, "player", "width=300,height=100,scrollbars=yes");
href=mylink.href;
window.open(href, "player", 'width=300,height=100,scrollbars=yes');
return false; return false;
} }
/* Take a string representing a date in the format 2012-04-25 and return /* Take a string representing a date in the format 2012-04-25 and return
* a javascript date object representing this date. */ * a javascript date object representing this date. */
function getDateFromString(time){ function getDateFromString(time) {
var date = time.split("-"); var date = time.split("-");
if (date.length != 3){ if (date.length != 3) {
return null; return null;
} }
var year = parseInt(date[0], 10); var year = parseInt(date[0], 10);
var month = parseInt(date[1], 10) -1; var month = parseInt(date[1], 10) - 1;
var day = parseInt(date[2], 10); var day = parseInt(date[2], 10);
if (isNaN(year) || isNaN(month) || isNaN(day)){ if (isNaN(year) || isNaN(month) || isNaN(day)) {
return null; return null;
} }
return new Date(year, month, day); return new Date(year, month, day);
} }
function convertSecondsToDaysHoursMinutesSeconds(seconds){ function convertSecondsToDaysHoursMinutesSeconds(seconds) {
if (seconds < 0) if (seconds < 0) seconds = 0;
seconds = 0;
seconds = parseInt(seconds, 10); seconds = parseInt(seconds, 10);
var days = parseInt(seconds / 86400); var days = parseInt(seconds / 86400);
seconds -= days*86400; seconds -= days * 86400;
var hours = parseInt(seconds / 3600); var hours = parseInt(seconds / 3600);
seconds -= hours*3600; seconds -= hours * 3600;
var minutes = parseInt(seconds / 60); var minutes = parseInt(seconds / 60);
seconds -= minutes*60; seconds -= minutes * 60;
return {days:days, hours:hours, minutes:minutes, seconds:seconds}; return { days: days, hours: hours, minutes: minutes, seconds: seconds };
} }
/* Takes an input parameter of milliseconds and converts these into /* Takes an input parameter of milliseconds and converts these into
* the format HH:MM:SS */ * the format HH:MM:SS */
function convertToHHMMSS(timeInMS){ function convertToHHMMSS(timeInMS) {
var time = parseInt(timeInMS); var time = parseInt(timeInMS);
var hours = parseInt(time / 3600000); var hours = parseInt(time / 3600000);
time -= 3600000*hours; time -= 3600000 * hours;
var minutes = parseInt(time / 60000); var minutes = parseInt(time / 60000);
time -= 60000*minutes; time -= 60000 * minutes;
var seconds = parseInt(time / 1000); var seconds = parseInt(time / 1000);
@ -67,26 +62,23 @@ function convertToHHMMSS(timeInMS){
minutes = minutes.toString(); minutes = minutes.toString();
seconds = seconds.toString(); seconds = seconds.toString();
if (hours.length == 1) if (hours.length == 1) hours = "0" + hours;
hours = "0" + hours; if (minutes.length == 1) minutes = "0" + minutes;
if (minutes.length == 1) if (seconds.length == 1) seconds = "0" + seconds;
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
return hours + ":" + minutes + ":" + seconds; return hours + ":" + minutes + ":" + seconds;
} }
function convertToHHMMSSmm(timeInMS){ function convertToHHMMSSmm(timeInMS) {
var time = parseInt(timeInMS); var time = parseInt(timeInMS);
var hours = parseInt(time / 3600000); var hours = parseInt(time / 3600000);
time -= 3600000*hours; time -= 3600000 * hours;
var minutes = parseInt(time / 60000); var minutes = parseInt(time / 60000);
time -= 60000*minutes; time -= 60000 * minutes;
var seconds = parseInt(time / 1000); var seconds = parseInt(time / 1000);
time -= 1000*seconds; time -= 1000 * seconds;
var ms = parseInt(time); var ms = parseInt(time);
@ -95,60 +87,46 @@ function convertToHHMMSSmm(timeInMS){
seconds = seconds.toString(); seconds = seconds.toString();
ms = ms.toString(); ms = ms.toString();
if (hours.length == 1) if (hours.length == 1) hours = "0" + hours;
hours = "0" + hours; if (minutes.length == 1) minutes = "0" + minutes;
if (minutes.length == 1) if (seconds.length == 1) seconds = "0" + seconds;
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
if (ms.length == 3) if (ms.length == 3) ms = ms.substring(0, 2);
ms = ms.substring(0, 2); else if (ms.length == 2) ms = "0" + ms.substring(0, 1);
else if (ms.length == 2) else if (ms.length == 1) ms = "00";
ms = "0" + ms.substring(0,1);
else if (ms.length == 1)
ms = "00";
if (hours == "00") if (hours == "00") return minutes + ":" + seconds + "." + ms;
return minutes + ":" + seconds + "." + ms; else return hours + ":" + minutes + ":" + seconds + "." + ms;
else
return hours + ":" + minutes + ":" + seconds+ "." + ms;
} }
function convertDateToHHMM(epochTime){ function convertDateToHHMM(epochTime) {
var d = new Date(epochTime); var d = new Date(epochTime);
var hours = d.getUTCHours().toString(); var hours = d.getUTCHours().toString();
var minutes = d.getUTCMinutes().toString(); var minutes = d.getUTCMinutes().toString();
if (hours.length == 1) if (hours.length == 1) hours = "0" + hours;
hours = "0" + hours; if (minutes.length == 1) minutes = "0" + minutes;
if (minutes.length == 1)
minutes = "0" + minutes;
return hours + ":" + minutes; return hours + ":" + minutes;
} }
function convertDateToHHMMSS(epochTime){ function convertDateToHHMMSS(epochTime) {
var d = new Date(epochTime); var d = new Date(epochTime);
var hours = d.getUTCHours().toString(); var hours = d.getUTCHours().toString();
var minutes = d.getUTCMinutes().toString(); var minutes = d.getUTCMinutes().toString();
var seconds = d.getUTCSeconds().toString(); var seconds = d.getUTCSeconds().toString();
if (hours.length == 1) if (hours.length == 1) hours = "0" + hours;
hours = "0" + hours; if (minutes.length == 1) minutes = "0" + minutes;
if (minutes.length == 1) if (seconds.length == 1) seconds = "0" + seconds;
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
return hours + ":" + minutes + ":" + seconds; return hours + ":" + minutes + ":" + seconds;
} }
/* Takes in a string of format similar to 2011-02-07 02:59:57, /* Takes in a string of format similar to 2011-02-07 02:59:57,
* and converts this to epoch/posix time. */ * and converts this to epoch/posix time. */
function convertDateToPosixTime(s){ function convertDateToPosixTime(s) {
var datetime = s.split(" "); var datetime = s.split(" ");
var date = datetime[0].split("-"); var date = datetime[0].split("-");
@ -162,55 +140,54 @@ function convertDateToPosixTime(s){
var sec = 0; var sec = 0;
var msec = 0; var msec = 0;
if (time[2].indexOf(".") != -1){ if (time[2].indexOf(".") != -1) {
var temp = time[2].split("."); var temp = time[2].split(".");
sec = temp[0]; sec = temp[0];
msec = temp[1]; msec = temp[1];
} else } else sec = time[2];
sec = time[2];
return Date.UTC(year, month-1, day, hour, minute, sec, msec); return Date.UTC(year, month - 1, day, hour, minute, sec, msec);
} }
function getFileExt(filename){ function getFileExt(filename) {
return filename.split('.').pop(); return filename.split(".").pop();
} }
function resizeImg(ele, targetWidth, targetHeight){ function resizeImg(ele, targetWidth, targetHeight) {
var img = $(ele); var img = $(ele);
var width = ele.width; var width = ele.width;
var height = ele.height; var height = ele.height;
// resize img proportionaly // resize img proportionaly
if( width > height && width > targetWidth){ if (width > height && width > targetWidth) {
var ratio = targetWidth/width; var ratio = targetWidth / width;
img.css("width", targetHeight+"px"); img.css("width", targetHeight + "px");
var newHeight = height * ratio; var newHeight = height * ratio;
img.css("height", newHeight+"px"); img.css("height", newHeight + "px");
}else if( width < height && height > targetHeight){ } else if (width < height && height > targetHeight) {
var ratio = targetHeight/height; var ratio = targetHeight / height;
img.css("height", targetHeight+"px"); img.css("height", targetHeight + "px");
var newWidth = width * ratio; var newWidth = width * ratio;
img.css("width", newWidth+"px"); img.css("width", newWidth + "px");
}else if( width == height && width > targetWidth){ } else if (width == height && width > targetWidth) {
img.css("height", targetHeight+"px"); img.css("height", targetHeight + "px");
img.css("width", targetWidth+"px" ); img.css("width", targetWidth + "px");
} }
} }
function resizeToMaxHeight(ele, targetHeight){ function resizeToMaxHeight(ele, targetHeight) {
var img = $(ele); var img = $(ele);
var width = ele.width; var width = ele.width;
var height = ele.height; var height = ele.height;
// resize img proportionaly // resize img proportionaly
if( height > targetHeight){ if (height > targetHeight) {
var ratio = targetHeight/height; var ratio = targetHeight / height;
img.css("height", targetHeight+"px"); img.css("height", targetHeight + "px");
var newWidth = width * ratio; var newWidth = width * ratio;
img.css("width", newWidth+"px"); img.css("width", newWidth + "px");
} }
} }
@ -226,7 +203,11 @@ function isInView(el) {
return ( return (
rect.top >= 0 && rect.top >= 0 &&
rect.left >= 0 && rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */ rect.bottom <=
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */ (window.innerHeight ||
document.documentElement.clientHeight) /*or $(window).height() */ &&
rect.right <=
(window.innerWidth ||
document.documentElement.clientWidth) /*or $(window).width() */
); );
} }

View File

@ -11,26 +11,44 @@ function getContent() {
var msg = ""; var msg = "";
// See file legacy/application/views/helpers/VersionNotify.php for more info // See file legacy/application/views/helpers/VersionNotify.php for more info
if(isUpToDate()) { if (isUpToDate()) {
msg = $.i18n._("You are running the latest version"); msg = $.i18n._("You are running the latest version");
} else { } else {
msg = $.i18n._("New version available: ") + link + '<ul>'; msg = $.i18n._("New version available: ") + link + "<ul>";
if (isPreRelease) { if (isPreRelease) {
msg += '<li>'+$.i18n._("You have a pre-release version of LibreTime intalled."); msg +=
"<li>" +
$.i18n._("You have a pre-release version of LibreTime intalled.");
} }
if (hasPatch) { if (hasPatch) {
msg += '<li>'+$.i18n._("A patch update for your LibreTime installation is available."); msg +=
"<li>" +
$.i18n._(
"A patch update for your LibreTime installation is available."
);
} }
if (hasMinor) { if (hasMinor) {
msg += '<li>'+$.i18n._("A feature update for your LibreTime installation is available."); msg +=
"<li>" +
$.i18n._(
"A feature update for your LibreTime installation is available."
);
} }
if (hasMajor && !hasMultiMajor) { if (hasMajor && !hasMultiMajor) {
msg += '<li>'+$.i18n._("A major update for your LibreTime installation is available."); msg +=
"<li>" +
$.i18n._(
"A major update for your LibreTime installation is available."
);
} }
if (hasMultiMajor) { if (hasMultiMajor) {
msg += '<li>'+$.i18n._("Multiple major updates for LibreTime installation are available. Please upgrade as soon as possible."); msg +=
"<li>" +
$.i18n._(
"Multiple major updates for LibreTime installation are available. Please upgrade as soon as possible."
);
} }
msg += '</ul>'; msg += "</ul>";
} }
return msg; return msg;
@ -41,7 +59,6 @@ function getContent() {
*/ */
function getHasPatch() { function getHasPatch() {
return versionNotifyInfo.hasPatch; return versionNotifyInfo.hasPatch;
} }
/** /**
@ -72,9 +89,6 @@ function getIsPreRelease() {
return versionNotifyInfo.isPreRelease; return versionNotifyInfo.isPreRelease;
} }
/** /**
* Get the current version * Get the current version
*/ */
@ -93,7 +107,9 @@ function getLatestVersion() {
* Returns the download link to latest release in HTML * Returns the download link to latest release in HTML
*/ */
function getLatestLink() { function getLatestLink() {
return "<a href='' onclick='openLatestLink();'>" + getLatestVersion() + "</a>"; return (
"<a href='' onclick='openLatestLink();'>" + getLatestVersion() + "</a>"
);
} }
/** /**
@ -113,38 +129,38 @@ function openLatestLink() {
/** /**
* Sets up the tooltip for version notification * Sets up the tooltip for version notification
*/ */
function setupVersionQtip(){ function setupVersionQtip() {
var qtipElem = $('#version-icon'); var qtipElem = $("#version-icon");
if (qtipElem.length > 0){ if (qtipElem.length > 0) {
qtipElem.qtip({ qtipElem.qtip({
id: 'version', id: "version",
content: { content: {
text: getContent(), text: getContent(),
title: { title: {
text: getCurrentVersion(), text: getCurrentVersion(),
button: isUpToDate() ? false : true button: isUpToDate() ? false : true,
} },
}, },
hide: { hide: {
event: isUpToDate() ? 'mouseleave' : 'unfocus' event: isUpToDate() ? "mouseleave" : "unfocus",
}, },
position: { position: {
my: "top right", my: "top right",
at: "bottom left" at: "bottom left",
}, },
style: { style: {
border: { border: {
width: 0, width: 0,
radius: 4 radius: 4,
},
classes: "ui-tooltip-dark ui-tooltip-rounded",
}, },
classes: "ui-tooltip-dark ui-tooltip-rounded"
}
}); });
} }
} }
$(document).ready(function() { $(document).ready(function () {
if($('#version-icon').length > 0) { if ($("#version-icon").length > 0) {
setupVersionQtip(); setupVersionQtip();
} }
}); });

View File

@ -1,4 +1,4 @@
var AIRTIME = (function(AIRTIME) { var AIRTIME = (function (AIRTIME) {
var mod; var mod;
if (AIRTIME.library === undefined) { if (AIRTIME.library === undefined) {
@ -7,12 +7,11 @@ var AIRTIME = (function(AIRTIME) {
mod = AIRTIME.library; mod = AIRTIME.library;
mod.checkAddButton = function() { mod.checkAddButton = function () {
var selected = mod.getChosenItemsLength(), var selected = mod.getChosenItemsLength(),
sortable = $('.spl_sortable:visible'), sortable = $(".spl_sortable:visible"),
check = false, check = false,
blockType = $('input[name=sp_type]:checked', '#smart-block-form').val(); blockType = $("input[name=sp_type]:checked", "#smart-block-form").val();
// make sure audioclips are selected and a playlist or static block is currently open. // make sure audioclips are selected and a playlist or static block is currently open.
// static blocks have value of 0 // static blocks have value of 0
@ -27,23 +26,26 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.button.disableButton("btn-group #library-plus", false); AIRTIME.button.disableButton("btn-group #library-plus", false);
} }
var objType = $('.obj_type').val(), var objType = $(".obj_type").val(),
btnText; btnText;
if (objType === 'playlist') { if (objType === "playlist") {
btnText = ' '+$.i18n._('Add to current playlist'); btnText = " " + $.i18n._("Add to current playlist");
} else if (objType === 'block') { } else if (objType === "block") {
btnText = ' '+$.i18n._('Add to current smart block'); btnText = " " + $.i18n._("Add to current smart block");
} else { } else {
btnText = ' '+$.i18n._('Add to current playlist'); btnText = " " + $.i18n._("Add to current playlist");
} }
AIRTIME.library.changeAddButtonText($('.btn-group #library-plus #lib-plus-text'), btnText); AIRTIME.library.changeAddButtonText(
$(".btn-group #library-plus #lib-plus-text"),
btnText
);
}; };
mod.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { mod.fnRowCallback = function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
var $nRow = $(nRow); var $nRow = $(nRow);
if (aData.ftype === "audioclip") { if (aData.ftype === "audioclip") {
$nRow.addClass("lib-audio"); $nRow.addClass("lib-audio");
$image = $nRow.find('td.library_type'); $image = $nRow.find("td.library_type");
if (!isAudioSupported(aData.mime)) { if (!isAudioSupported(aData.mime)) {
$image.html('<span class="ui-icon ui-icon-locked"></span>'); $image.html('<span class="ui-icon ui-icon-locked"></span>');
aData.image = '<span class="ui-icon ui-icon-locked"></span>'; aData.image = '<span class="ui-icon ui-icon-locked"></span>';
@ -56,27 +58,31 @@ var AIRTIME = (function(AIRTIME) {
$nRow.addClass("lib-pl"); $nRow.addClass("lib-pl");
} }
$nRow.attr("id", aData["tr_id"]).data("aData", aData).data("screen", $nRow
"playlist"); .attr("id", aData["tr_id"])
.data("aData", aData)
.data("screen", "playlist");
if (aData["bl_type"] !== undefined) { if (aData["bl_type"] !== undefined) {
$nRow.attr("bl_type", aData["bl_type"]); $nRow.attr("bl_type", aData["bl_type"]);
} }
}; };
mod.fnDrawCallback = function() { mod.fnDrawCallback = function () {
mod.redrawChosen(); mod.redrawChosen();
mod.checkToolBarIcons(); mod.checkToolBarIcons();
$('#library_display tr.lib-audio, tr.lib-stream, tr.lib-pl, tr.lib-block') $(
.draggable( "#library_display tr.lib-audio, tr.lib-stream, tr.lib-pl, tr.lib-block"
{ ).draggable({
helper : function() { helper: function () {
var $el = $(this),
var $el = $(this), selected = mod selected = mod.getChosenAudioFilesLength(),
.getChosenAudioFilesLength(), container, message, li = $(".side_playlist ul[id='spl_sortable'] li:first"), container,
width = li.width(), height = 55; message,
li = $(".side_playlist ul[id='spl_sortable'] li:first"),
width = li.width(),
height = 55;
if (width > 798) width = 798; if (width > 798) width = 798;
// dragging an element that has an unselected // dragging an element that has an unselected
@ -91,84 +97,100 @@ var AIRTIME = (function(AIRTIME) {
message = sprintf($.i18n._("Adding %s Items"), selected); message = sprintf($.i18n._("Adding %s Items"), selected);
} }
container = $('<div class="helper"/>').append( container = $('<div class="helper"/>')
"<li/>").find("li").addClass( .append("<li/>")
"ui-state-default").append("<div/>") .find("li")
.find("div").addClass( .addClass("ui-state-default")
"list-item-container").append( .append("<div/>")
message).end().width(width) .find("div")
.height(height).end(); .addClass("list-item-container")
.append(message)
.end()
.width(width)
.height(height)
.end();
return container; return container;
}, },
cursor : 'pointer', cursor: "pointer",
cursorAt: { cursorAt: {
top: 30, top: 30,
left: 100 left: 100,
}, },
connectToSortable : '.spl_sortable' connectToSortable: ".spl_sortable",
}); });
}; };
mod.dblClickAdd = function(data, type) { mod.dblClickAdd = function (data, type) {
var i, aMediaIds = []; var i,
aMediaIds = [];
// process selected files/playlists. // process selected files/playlists.
aMediaIds.push(new Array(data.id, data.ftype)); aMediaIds.push(new Array(data.id, data.ftype));
// check if a playlist/block is open before adding items // check if a playlist/block is open before adding items
if ($('input[id="obj_type"]').val() == 'playlist' if (
|| $('input[id="obj_type"]').val() == 'block') { $('input[id="obj_type"]').val() == "playlist" ||
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after'); $('input[id="obj_type"]').val() == "block"
) {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, "after");
} }
}; };
mod.setupLibraryToolbar = function() { mod.setupLibraryToolbar = function () {
var $toolbar = $(".lib-content .fg-toolbar:first"); var $toolbar = $(".lib-content .fg-toolbar:first");
mod.createToolbarButtons(); mod.createToolbarButtons();
$toolbar.append($menu); $toolbar.append($menu);
// add to playlist button // add to playlist button
$toolbar $toolbar
.find('.icon-plus').parent() .find(".icon-plus")
.click(function() { .parent()
.click(function () {
if (AIRTIME.button.isDisabled('btn-group #library-plus') === true) { if (AIRTIME.button.isDisabled("btn-group #library-plus") === true) {
return; return;
} }
var aData = AIRTIME.library.getSelectedData(), i, temp, length, aMediaIds = []; var aData = AIRTIME.library.getSelectedData(),
i,
temp,
length,
aMediaIds = [];
// process selected files/playlists. // process selected files/playlists.
for (i = 0, length = aData.length; i < length; i++) { for (i = 0, length = aData.length; i < length; i++) {
temp = aData[i]; temp = aData[i];
if (temp.ftype === "audioclip" if (
|| temp.ftype === "block" temp.ftype === "audioclip" ||
|| (temp.ftype === "stream" && $( temp.ftype === "block" ||
".obj_type").val() === "playlist")) { (temp.ftype === "stream" && $(".obj_type").val() === "playlist")
aMediaIds.push(new Array(temp.id, ) {
temp.ftype)); aMediaIds.push(new Array(temp.id, temp.ftype));
} }
} }
if (aMediaIds.length > 0) { if (aMediaIds.length > 0) {
AIRTIME.playlist.fnAddItems(aMediaIds, AIRTIME.playlist.fnAddItems(aMediaIds, undefined, "after");
undefined, 'after');
} else { } else {
if ($('.obj_type').val() == 'block') { if ($(".obj_type").val() == "block") {
alert($.i18n._('You can only add tracks to smart blocks.')); alert($.i18n._("You can only add tracks to smart blocks."));
} else if ($('.obj_type').val() == 'playlist') { } else if ($(".obj_type").val() == "playlist") {
alert($.i18n._('You can only add tracks, smart blocks, and webstreams to playlists.')); alert(
$.i18n._(
"You can only add tracks, smart blocks, and webstreams to playlists."
)
);
} }
} }
}); });
// delete from library. // delete from library.
$toolbar.find('.icon-trash').parent().click(function() { $toolbar
.find(".icon-trash")
if (AIRTIME.button.isDisabled('icon-trash') === true) { .parent()
.click(function () {
if (AIRTIME.button.isDisabled("icon-trash") === true) {
return; return;
} }
@ -179,5 +201,4 @@ var AIRTIME = (function(AIRTIME) {
}; };
return AIRTIME; return AIRTIME;
})(AIRTIME || {});
}(AIRTIME || {}));

View File

@ -1,4 +1,4 @@
var AIRTIME = (function(AIRTIME) { var AIRTIME = (function (AIRTIME) {
var mod; var mod;
if (AIRTIME.library === undefined) { if (AIRTIME.library === undefined) {
@ -7,11 +7,17 @@ var AIRTIME = (function(AIRTIME) {
mod = AIRTIME.library; mod = AIRTIME.library;
mod.checkAddButton = function() { mod.checkAddButton = function () {
var selected = mod.getChosenItemsLength(), $cursor = $('tr.sb-selected'), check = false, var selected = mod.getChosenItemsLength(),
shows = $('tr.sb-header'), current = $('tr.sb-current-show'), $cursor = $("tr.sb-selected"),
check = false,
shows = $("tr.sb-header"),
current = $("tr.sb-current-show"),
// TODO: this is an ugly way of doing this... we should find a more robust way of checking which view we're in. // TODO: this is an ugly way of doing this... we should find a more robust way of checking which view we're in.
btnText = (window.location.href.toLowerCase().indexOf("schedule") > -1) ? $.i18n._('Add to show') : $.i18n._('Add to next show'); btnText =
window.location.href.toLowerCase().indexOf("schedule") > -1
? $.i18n._("Add to show")
: $.i18n._("Add to next show");
// make sure library items are selected and a cursor is selected. // make sure library items are selected and a cursor is selected.
if (selected !== 0) { if (selected !== 0) {
@ -25,16 +31,16 @@ var AIRTIME = (function(AIRTIME) {
} }
if ($cursor.length !== 0) { if ($cursor.length !== 0) {
btnText = $.i18n._('Add after selected items'); btnText = $.i18n._("Add after selected items");
} else if (current.length !== 0) { } else if (current.length !== 0) {
btnText = $.i18n._('Add to current show'); btnText = $.i18n._("Add to current show");
} }
} else if (sortable.length > 0 && sortable.is(":visible")) { } else if (sortable.length > 0 && sortable.is(":visible")) {
var objType = $('.active-tab .obj_type').val(); var objType = $(".active-tab .obj_type").val();
if (objType === 'block') { if (objType === "block") {
btnText = $.i18n._('Add to current smart block'); btnText = $.i18n._("Add to current smart block");
} else { } else {
btnText = $.i18n._('Add to current playlist'); btnText = $.i18n._("Add to current playlist");
} }
} else { } else {
check = false; check = false;
@ -46,15 +52,18 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.button.disableButton("btn-group #library-plus", false); AIRTIME.button.disableButton("btn-group #library-plus", false);
} }
AIRTIME.library.changeAddButtonText($('.btn-group #library-plus #lib-plus-text'), btnText); AIRTIME.library.changeAddButtonText(
$(".btn-group #library-plus #lib-plus-text"),
btnText
);
}; };
mod.fnRowCallback = function(nRow, aData, iDisplayIndex, iDisplayIndexFull) { mod.fnRowCallback = function (nRow, aData, iDisplayIndex, iDisplayIndexFull) {
var $nRow = $(nRow); var $nRow = $(nRow);
if (aData.ftype === "audioclip") { if (aData.ftype === "audioclip") {
$nRow.addClass("lib-audio"); $nRow.addClass("lib-audio");
$image = $nRow.find('td.library_type'); $image = $nRow.find("td.library_type");
if (!isAudioSupported(aData.mime)) { if (!isAudioSupported(aData.mime)) {
$image.html('<span class="ui-icon ui-icon-locked"></span>'); $image.html('<span class="ui-icon ui-icon-locked"></span>');
aData.image = '<span class="ui-icon ui-icon-locked"></span>'; aData.image = '<span class="ui-icon ui-icon-locked"></span>';
@ -65,8 +74,10 @@ var AIRTIME = (function(AIRTIME) {
$nRow.addClass("lib-pl"); $nRow.addClass("lib-pl");
} }
$nRow.attr("id", aData["tr_id"]).data("aData", aData).data("screen", $nRow
"timeline"); .attr("id", aData["tr_id"])
.data("aData", aData)
.data("screen", "timeline");
}; };
/** /**
@ -83,29 +94,40 @@ var AIRTIME = (function(AIRTIME) {
return; return;
} }
} }
var emptyRow = table.find('tr:has(td.dataTables_empty)'), var emptyRow = table.find("tr:has(td.dataTables_empty)"),
wrapper = table.closest(".dataTables_wrapper"), wrapper = table.closest(".dataTables_wrapper"),
libEmpty = wrapper.find('.empty_placeholder'); libEmpty = wrapper.find(".empty_placeholder");
if (emptyRow.length > 0) { if (emptyRow.length > 0) {
emptyRow.hide(); emptyRow.hide();
var mediaType = parseInt($('.media_type_selector.selected').data('selection-id')), var mediaType = parseInt(
img = wrapper.find('.empty_placeholder_image'); $(".media_type_selector.selected").data("selection-id")
),
img = wrapper.find(".empty_placeholder_image");
if (!opts && isNaN(mediaType)) { if (!opts && isNaN(mediaType)) {
return; return;
} }
// Remove all classes for when we change between empty media types // Remove all classes for when we change between empty media types
img.removeClass(function() { return $(this).attr("class"); }); img.removeClass(function () {
return $(this).attr("class");
});
if (opts) { if (opts) {
img.addClass("empty_placeholder_image " + opts.iconClass); img.addClass("empty_placeholder_image " + opts.iconClass);
wrapper.find('.empty_placeholder_text').html(opts.html); wrapper.find(".empty_placeholder_text").html(opts.html);
} else { } else {
opts = AIRTIME.library.placeholder(mediaType); opts = AIRTIME.library.placeholder(mediaType);
img.addClass("empty_placeholder_image icon-white " + opts.icon); img.addClass("empty_placeholder_image icon-white " + opts.icon);
wrapper.find('.empty_placeholder_text').html( wrapper
$.i18n._("You haven't added any " + opts.media) .find(".empty_placeholder_text")
+ "<br/>" + $.i18n._(opts.subtext) .html(
+ "<br/><a target='_blank' href='" + opts.href + "'>" + $.i18n._("Learn about " + opts.media) + "</a>" $.i18n._("You haven't added any " + opts.media) +
"<br/>" +
$.i18n._(opts.subtext) +
"<br/><a target='_blank' href='" +
opts.href +
"'>" +
$.i18n._("Learn about " + opts.media) +
"</a>"
); );
} }
@ -116,7 +138,7 @@ var AIRTIME = (function(AIRTIME) {
}; };
mod.fnDrawCallback = function fnLibDrawCallback() { mod.fnDrawCallback = function fnLibDrawCallback() {
var table = $('#library_display'), var table = $("#library_display"),
cb = table.find('th[class*="checkbox"]'); cb = table.find('th[class*="checkbox"]');
if (cb.find("input").length == 0) { if (cb.find("input").length == 0) {
cb.append("<input id='super-checkbox' type='checkbox'>"); cb.append("<input id='super-checkbox' type='checkbox'>");
@ -135,14 +157,15 @@ var AIRTIME = (function(AIRTIME) {
sortable = ".active-tab .spl_sortable"; sortable = ".active-tab .spl_sortable";
} }
$('#library_display tr[class*="lib-"]') $('#library_display tr[class*="lib-"]').draggable({
.draggable(
{
helper: function () { helper: function () {
var $el = $(this),
var $el = $(this), selected = mod selected = mod.getChosenItemsLength(),
.getChosenItemsLength(), container, thead = $("#show_builder_table thead"), colspan = thead container,
.find("th").length, width = $el.width(), message; thead = $("#show_builder_table thead"),
colspan = thead.find("th").length,
width = $el.width(),
message;
// dragging an element that has an unselected // dragging an element that has an unselected
// checkbox. // checkbox.
@ -156,36 +179,47 @@ var AIRTIME = (function(AIRTIME) {
message = sprintf($.i18n._("Adding %s Items"), selected); message = sprintf($.i18n._("Adding %s Items"), selected);
} }
container = $('<div/>').attr('id', container = $("<div/>")
'draggingContainer').append('<tr/>') .attr("id", "draggingContainer")
.find("tr").append('<td/>').find("td") .append("<tr/>")
.attr("colspan", colspan).width(width) .find("tr")
.addClass("ui-state-highlight").append( .append("<td/>")
message).end().end(); .find("td")
.attr("colspan", colspan)
.width(width)
.addClass("ui-state-highlight")
.append(message)
.end()
.end();
return container; return container;
}, },
create: function(event, ui) { create: function (event, ui) {
$(this).draggable("option", "cursorAt", { $(this).draggable("option", "cursorAt", {
top: 20, top: 20,
left: Math.floor($(this).outerWidth() / 2) left: Math.floor($(this).outerWidth() / 2),
}); });
}, },
tolerance: 'pointer', tolerance: "pointer",
cursor: 'move', cursor: "move",
distance: 25, // min-distance for dragging distance: 25, // min-distance for dragging
connectToSortable: sortable connectToSortable: sortable,
}); });
}; };
mod.dblClickAdd = function(data, type) { mod.dblClickAdd = function (data, type) {
var i, length, temp, aMediaIds = [], aSchedIds = [], aData = []; var i,
length,
temp,
aMediaIds = [],
aSchedIds = [],
aData = [];
if ($("#show_builder_table").is(":visible")) { if ($("#show_builder_table").is(":visible")) {
// process selected files/playlists. // process selected files/playlists.
aMediaIds.push({ aMediaIds.push({
"id": data.id, id: data.id,
"type": type type: type,
}); });
$("#show_builder_table tr.sb-selected").each(function (i, el) { $("#show_builder_table tr.sb-selected").each(function (i, el) {
@ -196,9 +230,9 @@ var AIRTIME = (function(AIRTIME) {
for (i = 0, length = aData.length; i < length; i++) { for (i = 0, length = aData.length; i < length; i++) {
temp = aData[i]; temp = aData[i];
aSchedIds.push({ aSchedIds.push({
"id": temp.id, id: temp.id,
"instance": temp.instance, instance: temp.instance,
"timestamp": temp.timestamp timestamp: temp.timestamp,
}); });
} }
@ -214,9 +248,11 @@ var AIRTIME = (function(AIRTIME) {
aMediaIds.push(new Array(data.id, data.ftype)); aMediaIds.push(new Array(data.id, data.ftype));
// check if a playlist/block is open before adding items // check if a playlist/block is open before adding items
if ($('.active-tab .obj_type').val() == 'playlist' if (
|| $('.active-tab .obj_type').val() == 'block') { $(".active-tab .obj_type").val() == "playlist" ||
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after'); $(".active-tab .obj_type").val() == "block"
) {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, "after");
} }
} }
}; };
@ -228,20 +264,25 @@ var AIRTIME = (function(AIRTIME) {
var data = el.prev().data("aData"); var data = el.prev().data("aData");
if (data === undefined) { if (data === undefined) {
alert($.i18n._("Cannot schedule outside a show.\nTry creating a show first.")); alert(
$.i18n._("Cannot schedule outside a show.\nTry creating a show first.")
);
return false; return false;
} }
arr.push({ arr.push({
"id" : data.id, id: data.id,
"instance" : data.instance, instance: data.instance,
"timestamp" : data.timestamp timestamp: data.timestamp,
}); });
if (!isInView(el)) { if (!isInView(el)) {
$('.dataTables_scrolling.sb-padded').animate({ $(".dataTables_scrolling.sb-padded").animate(
scrollTop: el.offset().top {
}, 0); scrollTop: el.offset().top,
},
0
);
} }
return true; return true;
@ -249,26 +290,30 @@ var AIRTIME = (function(AIRTIME) {
mod.addToSchedule = function (selected) { mod.addToSchedule = function (selected) {
console.log(selected); console.log(selected);
var aMediaIds = [], aSchedIds = [], aData = []; var aMediaIds = [],
aSchedIds = [],
aData = [];
$.each(selected, function () { $.each(selected, function () {
aMediaIds.push({ aMediaIds.push({
"id": this.id, id: this.id,
"type": this.ftype type: this.ftype,
}); });
}); });
// process selected files/playlists. // process selected files/playlists.
$("#show_builder_table").find("tr.sb-selected").each(function (i, el) { $("#show_builder_table")
.find("tr.sb-selected")
.each(function (i, el) {
aData.push($(el).data("aData")); aData.push($(el).data("aData"));
}); });
// process selected schedule rows to add media after. // process selected schedule rows to add media after.
$.each(aData, function () { $.each(aData, function () {
aSchedIds.push({ aSchedIds.push({
"id": this.id, id: this.id,
"instance": this.instance, instance: this.instance,
"timestamp": this.timestamp timestamp: this.timestamp,
}); });
}); });
@ -281,28 +326,25 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.showbuilder.fnAdd(aMediaIds, aSchedIds); AIRTIME.showbuilder.fnAdd(aMediaIds, aSchedIds);
}; };
mod.setupLibraryToolbar = function() { mod.setupLibraryToolbar = function () {
var $toolbar = $(".lib-content .fg-toolbar:first"); var $toolbar = $(".lib-content .fg-toolbar:first");
mod.createToolbarButtons(); mod.createToolbarButtons();
//mod.moveSearchBarToHeader(); //mod.moveSearchBarToHeader();
$("#advanced_search").click(function(e) { $("#advanced_search").click(function (e) {
e.stopPropagation(); e.stopPropagation();
}); });
if (localStorage.getItem('user-type') != 'G') { if (localStorage.getItem("user-type") != "G") {
$toolbar.append($menu); $toolbar.append($menu);
// add to timeline button // add to timeline button
$toolbar $toolbar.find("#library-plus").click(function () {
.find('#library-plus') if (AIRTIME.button.isDisabled("btn-group #library-plus") === true) {
.click(
function () {
if (AIRTIME.button.isDisabled('btn-group #library-plus') === true) {
return; return;
} }
var selected = AIRTIME.library.getSelectedData(), aMediaIds = []; var selected = AIRTIME.library.getSelectedData(),
aMediaIds = [];
if ($("#show_builder_table").is(":visible")) { if ($("#show_builder_table").is(":visible")) {
mod.addToSchedule(selected); mod.addToSchedule(selected);
@ -312,15 +354,17 @@ var AIRTIME = (function(AIRTIME) {
}); });
// check if a playlist/block is open before adding items // check if a playlist/block is open before adding items
if ($('.active-tab .obj_type').val() == 'playlist' if (
|| $('.active-tab .obj_type').val() == 'block') { $(".active-tab .obj_type").val() == "playlist" ||
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after'); $(".active-tab .obj_type").val() == "block"
) {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, "after");
} }
} }
}); });
$toolbar.find('#publish-btn').click(function () { $toolbar.find("#publish-btn").click(function () {
if (AIRTIME.button.isDisabled('btn-group #publish-btn') === true) { if (AIRTIME.button.isDisabled("btn-group #publish-btn") === true) {
return; return;
} }
@ -333,16 +377,16 @@ var AIRTIME = (function(AIRTIME) {
}); });
// delete from library. // delete from library.
$toolbar.find('#sb-delete').click(function () { $toolbar.find("#sb-delete").click(function () {
if (AIRTIME.button.isDisabled('btn-group #sb-delete') === true) { if (AIRTIME.button.isDisabled("btn-group #sb-delete") === true) {
return; return;
} }
AIRTIME.library.fnDeleteSelectedItems(); AIRTIME.library.fnDeleteSelectedItems();
}); });
$toolbar.find('#sb-new').click(function () { $toolbar.find("#sb-new").click(function () {
if (AIRTIME.button.isDisabled('btn-group #sb-new') === true) { if (AIRTIME.button.isDisabled("btn-group #sb-new") === true) {
return; return;
} }
@ -352,14 +396,15 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.playlist.fnNew(); AIRTIME.playlist.fnNew();
} else if (selection == AIRTIME.library.MediaTypeIntegerEnum.BLOCK) { } else if (selection == AIRTIME.library.MediaTypeIntegerEnum.BLOCK) {
AIRTIME.playlist.fnNewBlock(); AIRTIME.playlist.fnNewBlock();
} else if (selection == AIRTIME.library.MediaTypeIntegerEnum.WEBSTREAM) { } else if (
selection == AIRTIME.library.MediaTypeIntegerEnum.WEBSTREAM
) {
AIRTIME.playlist.fnWsNew(); AIRTIME.playlist.fnWsNew();
} }
}); });
$toolbar.find("#sb-edit").click(function () {
$toolbar.find('#sb-edit').click(function () { if (AIRTIME.button.isDisabled("btn-group #sb-edit") === true) {
if (AIRTIME.button.isDisabled('btn-group #sb-edit') === true) {
return; return;
} }
@ -369,15 +414,19 @@ var AIRTIME = (function(AIRTIME) {
var data = $(el).data("aData"); var data = $(el).data("aData");
if (data.ftype === "audioclip") { if (data.ftype === "audioclip") {
$.get(baseUrl + "library/edit-file-md/id/" + data.id, {format: "json"}, function (json) { $.get(
baseUrl + "library/edit-file-md/id/" + data.id,
{ format: "json" },
function (json) {
AIRTIME.playlist.fileMdEdit(json, data.tr_id); AIRTIME.playlist.fileMdEdit(json, data.tr_id);
//buildEditMetadataDialog(json); //buildEditMetadataDialog(json);
}); }
);
} else if (data.ftype === "playlist" || data.ftype === "block") { } else if (data.ftype === "playlist" || data.ftype === "block") {
AIRTIME.playlist.fnEdit(data, baseUrl + 'playlist/edit'); AIRTIME.playlist.fnEdit(data, baseUrl + "playlist/edit");
AIRTIME.playlist.validatePlaylistElements(); AIRTIME.playlist.validatePlaylistElements();
} else if (data.ftype === "stream") { } else if (data.ftype === "stream") {
AIRTIME.playlist.fnEdit(data, baseUrl + 'webstream/edit'); AIRTIME.playlist.fnEdit(data, baseUrl + "webstream/edit");
} }
}); });
}); });
@ -387,5 +436,4 @@ var AIRTIME = (function(AIRTIME) {
}; };
return AIRTIME; return AIRTIME;
})(AIRTIME || {});
}(AIRTIME || {}));

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,25 @@
$(document).ready(function () { $(document).ready(function () {
var uploadProgress; var uploadProgress;
var self = this; var self = this;
self.uploadFilter = "all"; self.uploadFilter = "all";
self.IMPORT_STATUS_CODES = { self.IMPORT_STATUS_CODES = {
0: {message: $.i18n._("Successfully imported")}, 0: { message: $.i18n._("Successfully imported") },
1: {message: $.i18n._("Pending import")}, 1: { message: $.i18n._("Pending import") },
2: {message: $.i18n._("Import failed.")}, 2: { message: $.i18n._("Import failed.") },
UNKNOWN: {message: $.i18n._("Unknown")} UNKNOWN: { message: $.i18n._("Unknown") },
}; };
if (Object.freeze) { if (Object.freeze) {
Object.freeze(self.IMPORT_STATUS_CODES); Object.freeze(self.IMPORT_STATUS_CODES);
} }
Dropzone.options.addMediaDropzone = { Dropzone.options.addMediaDropzone = {
url: '/rest/media', url: "/rest/media",
//clickable: false, //clickable: false,
acceptedFiles: acceptedMimeTypes.join(), acceptedFiles: acceptedMimeTypes.join(),
addRemoveLinks: true, addRemoveLinks: true,
dictRemoveFile: $.i18n._("Remove"), dictRemoveFile: $.i18n._("Remove"),
maxFilesize:LIBRETIME_PLUPLOAD_MAX_FILE_SIZE, //Megabytes maxFilesize: LIBRETIME_PLUPLOAD_MAX_FILE_SIZE, //Megabytes
init: function () { init: function () {
this.on("sending", function (file, xhr, data) { this.on("sending", function (file, xhr, data) {
data.append("csrf_token", $("#csrf").val()); data.append("csrf_token", $("#csrf").val());
@ -39,16 +38,21 @@ $(document).ready(function () {
//In DataTables 1.10 and greater, we can use .fnAjaxReload() //In DataTables 1.10 and greater, we can use .fnAjaxReload()
}); });
this.on("queuecomplete", function() { this.on("queuecomplete", function () {
uploadProgress = false; uploadProgress = false;
}); });
} },
}; };
$(window).bind('beforeunload', function () { $(window).bind("beforeunload", function () {
if (uploadProgress) { if (uploadProgress) {
return sprintf($.i18n._("You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?"), return sprintf(
"\n", "\n"); $.i18n._(
"You are currently uploading files. %sGoing to another screen will cancel the upload process. %sAre you sure you want to leave the page?"
),
"\n",
"\n"
);
} }
}); });
@ -68,12 +72,17 @@ $(document).ready(function () {
self.renderFileActions = function (data, type, full) { self.renderFileActions = function (data, type, full) {
if (full.import_status == 0) { if (full.import_status == 0) {
return '<a class="deleteFileAction">' + $.i18n._('Delete from Library') + '</a>'; return (
'<a class="deleteFileAction">' +
$.i18n._("Delete from Library") +
"</a>"
);
} else if (full.import_status == 1) { } else if (full.import_status == 1) {
//No actions for pending files //No actions for pending files
return $.i18n._('N/A'); return $.i18n._("N/A");
} else { //Failed downloads } else {
return '<a class="deleteFileAction">' + $.i18n._('Clear') + '</a>'; //Failed downloads
return '<a class="deleteFileAction">' + $.i18n._("Clear") + "</a>";
} }
}; };
@ -82,58 +91,66 @@ $(document).ready(function () {
// Some tips from the DataTables forums: // Some tips from the DataTables forums:
// fnGetData is used to get the object behind the row - you can also use // fnGetData is used to get the object behind the row - you can also use
// fnGetPosition if you need to get the index instead // fnGetPosition if you need to get the index instead
file = $("#recent_uploads_table").dataTable().fnGetData($(this).closest("tr")[0]); file = $("#recent_uploads_table")
.dataTable()
.fnGetData($(this).closest("tr")[0]);
$.ajax({ $.ajax({
type: 'DELETE', type: "DELETE",
url: 'rest/media/' + file.id + "?csrf_token=" + $("#csrf").attr('value'), url: "rest/media/" + file.id + "?csrf_token=" + $("#csrf").attr("value"),
success: function (resp) { success: function (resp) {
self.recentUploadsTable.fnDraw(); self.recentUploadsTable.fnDraw();
}, },
error: function () { error: function () {
alert($.i18n._("Error: The file could not be deleted. Please try again later.")); alert(
} $.i18n._(
"Error: The file could not be deleted. Please try again later."
)
);
},
}); });
}); });
self.setupRecentUploadsTable = function () { self.setupRecentUploadsTable = function () {
return $("#recent_uploads_table").dataTable({ return $("#recent_uploads_table").dataTable({
"bJQueryUI": true, bJQueryUI: true,
"bProcessing": false, bProcessing: false,
"bServerSide": true, bServerSide: true,
"sAjaxSource": '/plupload/recent-uploads/format/json', sAjaxSource: "/plupload/recent-uploads/format/json",
"sAjaxDataProp": 'files', sAjaxDataProp: "files",
"bSearchable": false, bSearchable: false,
"bInfo": true, bInfo: true,
//"sScrollY": "200px", //"sScrollY": "200px",
"bFilter": false, bFilter: false,
"bSort": false, bSort: false,
//"sDom": '<"H">frtip<"F"l>', //"sDom": '<"H">frtip<"F"l>',
"sDom": '<"dataTables_scrolling"frt><"F"lip>', sDom: '<"dataTables_scrolling"frt><"F"lip>',
"bPaginate": true, bPaginate: true,
"sPaginationType": "full_numbers", sPaginationType: "full_numbers",
"oLanguage": getDatatablesStrings({ oLanguage: getDatatablesStrings({
"sEmptyTable": $.i18n._("No files have been uploaded yet."), sEmptyTable: $.i18n._("No files have been uploaded yet."),
"sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 uploads"), sInfoEmpty: $.i18n._("Showing 0 to 0 of 0 uploads"),
"sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ uploads"), sInfo: $.i18n._("Showing _START_ to _END_ of _TOTAL_ uploads"),
"sInfoFiltered": $.i18n._("(filtered from _MAX_ total uploads)"), sInfoFiltered: $.i18n._("(filtered from _MAX_ total uploads)"),
}), }),
"aoColumns": [ aoColumns: [
{"mData": "artist_name", "sTitle": $.i18n._("Creator")}, { mData: "artist_name", sTitle: $.i18n._("Creator") },
{"mData": "track_title", "sTitle": $.i18n._("Title")}, { mData: "track_title", sTitle: $.i18n._("Title") },
{ {
"mData": "import_status", "sTitle": $.i18n._("Import Status"), mData: "import_status",
"mRender": self.renderImportStatus sTitle: $.i18n._("Import Status"),
mRender: self.renderImportStatus,
}, },
{"mData": "utime", "sTitle": $.i18n._("Uploaded")}, { mData: "utime", sTitle: $.i18n._("Uploaded") },
{ {
"mData": "id", "sTitle": $.i18n._("Actions"), mData: "id",
"mRender": self.renderFileActions sTitle: $.i18n._("Actions"),
} mRender: self.renderFileActions,
},
], ],
"fnServerData": function (sSource, aoData, fnCallback) { fnServerData: function (sSource, aoData, fnCallback) {
/* Add some extra data to the sender */ /* Add some extra data to the sender */
aoData.push({"name": "uploadFilter", "value": self.uploadFilter}); aoData.push({ name: "uploadFilter", value: self.uploadFilter });
$.getJSON(sSource, aoData, function (json) { $.getJSON(sSource, aoData, function (json) {
fnCallback(json); fnCallback(json);
if (json.files) { if (json.files) {
@ -158,7 +175,7 @@ $(document).ready(function () {
getUsabilityHint(); getUsabilityHint();
} }
}); });
} },
}); });
}; };
@ -167,8 +184,9 @@ $(document).ready(function () {
self.isRecentUploadsRefreshTimerActive = false; self.isRecentUploadsRefreshTimerActive = false;
self.startRefreshingRecentUploads = function () { self.startRefreshingRecentUploads = function () {
if (!self.isRecentUploadsRefreshTimerActive) { //Prevent multiple timers from running if (!self.isRecentUploadsRefreshTimerActive) {
self.recentUploadsRefreshTimer = setInterval(function() { //Prevent multiple timers from running
self.recentUploadsRefreshTimer = setInterval(function () {
self.recentUploadsTable.fnDraw(); self.recentUploadsTable.fnDraw();
}, 3000); }, 3000);
self.isRecentUploadsRefreshTimerActive = true; self.isRecentUploadsRefreshTimerActive = true;
@ -204,16 +222,16 @@ $(document).ready(function () {
//$("#recent_uploads_table.div.fg-toolbar").prepend('<b>Custom tool bar! Text/images etc.</b>'); //$("#recent_uploads_table.div.fg-toolbar").prepend('<b>Custom tool bar! Text/images etc.</b>');
$("#select_type").on("change",function(){ $("#select_type").on("change", function () {
var ttValue = $("#select_type").val(); var ttValue = $("#select_type").val();
var ttText = $('#select_type option[value="'+ttValue+'"]').text(); var ttText = $('#select_type option[value="' + ttValue + '"]').text();
if (ttValue != ""){ if (ttValue != "") {
$("#upload_type").text(" " + ttText); $("#upload_type").text(" " + ttText);
$("#upload_type").css("color", "#ff611f"); $("#upload_type").css("color", "#ff611f");
} else { } else {
$("#upload_type").text(" Tracks"); $("#upload_type").text(" Tracks");
$("#upload_type").css("color", "#ffffff"); $("#upload_type").css("color", "#ffffff");
} }
Cookies.set('tt_upload', ttValue); Cookies.set("tt_upload", ttValue);
}); });
}); });

View File

@ -8,7 +8,8 @@ var AIRTIME = (function (AIRTIME) {
mod = AIRTIME.podcast; mod = AIRTIME.podcast;
mod.episodeTables = {}; mod.episodeTables = {};
var endpoint = '/rest/podcast/', PodcastEpisodeTable; var endpoint = "/rest/podcast/",
PodcastEpisodeTable;
/** /**
* PodcastController constructor. * PodcastController constructor.
@ -36,7 +37,7 @@ var AIRTIME = (function (AIRTIME) {
view.find("table").attr("id", "podcast_episodes_" + podcast.id); view.find("table").attr("id", "podcast_episodes_" + podcast.id);
self.onSaveCallback = function () { self.onSaveCallback = function () {
var successMsg = $('.active-tab .btn-toolbar .success') var successMsg = $(".active-tab .btn-toolbar .success");
successMsg.text($.i18n._("Podcast settings saved")).show("fast"); successMsg.text($.i18n._("Podcast settings saved")).show("fast");
setTimeout(function () { setTimeout(function () {
successMsg.hide("fast"); successMsg.hide("fast");
@ -49,13 +50,16 @@ var AIRTIME = (function (AIRTIME) {
* Save and update the podcast object. * Save and update the podcast object.
*/ */
$scope.savePodcast = function () { $scope.savePodcast = function () {
$http.put(endpoint + $scope.podcast.id, {csrf_token: $scope.csrf, podcast: $scope.podcast}) $http
.put(endpoint + $scope.podcast.id, {
csrf_token: $scope.csrf,
podcast: $scope.podcast,
})
.success(function () { .success(function () {
self.onSaveCallback(); self.onSaveCallback();
}); });
}; };
/** /**
* Generate a smartblock and playlist for this smartblock. * Generate a smartblock and playlist for this smartblock.
*/ */
@ -66,21 +70,21 @@ var AIRTIME = (function (AIRTIME) {
{ {
csrf_token: $("#csrf").val(), csrf_token: $("#csrf").val(),
id: $scope.podcast.id, id: $scope.podcast.id,
title: $scope.podcast.title title: $scope.podcast.title,
}, },
function() { function () {
// show success message // show success message
var successMsg = $('.active-tab .pc-sb-success') var successMsg = $(".active-tab .pc-sb-success");
successMsg.show("fast"); successMsg.show("fast");
setTimeout(function(){ setTimeout(function () {
successMsg.hide("fast"); successMsg.hide("fast");
}, 5000); }, 5000);
// save podcast but do not display notification beside save button below // save podcast but do not display notification beside save button below
$http.put(endpoint + $scope.podcast.id, $http
{ .put(endpoint + $scope.podcast.id, {
csrf_token: $scope.csrf, csrf_token: $scope.csrf,
podcast: $scope.podcast podcast: $scope.podcast,
}) })
.success(function () { .success(function () {
AIRTIME.library.podcastDataTable.fnDraw(); AIRTIME.library.podcastDataTable.fnDraw();
@ -108,15 +112,12 @@ var AIRTIME = (function (AIRTIME) {
return self; return self;
} }
/** /**
* Initialize the controller. * Initialize the controller.
* *
* Sets up the internal datatable. * Sets up the internal datatable.
*/ */
PodcastController.prototype.initialize = function() { PodcastController.prototype.initialize = function () {
var self = this; var self = this;
// TODO: this solves a race condition, but we should look for the root cause // TODO: this solves a race condition, but we should look for the root cause
AIRTIME.tabs.onResize(); AIRTIME.tabs.onResize();
@ -125,7 +126,7 @@ var AIRTIME = (function (AIRTIME) {
// import listener so we don't cause memory leaks. // import listener so we don't cause memory leaks.
var podcastId = self.$scope.podcast.id.toString(); var podcastId = self.$scope.podcast.id.toString();
self.$scope.tab.assignOnCloseHandler(function () { self.$scope.tab.assignOnCloseHandler(function () {
if ( AIRTIME.podcast.episodeTables.hasOwnProperty(podcastId) ) { if (AIRTIME.podcast.episodeTables.hasOwnProperty(podcastId)) {
AIRTIME.podcast.episodeTables[podcastId].destroy(); AIRTIME.podcast.episodeTables[podcastId].destroy();
AIRTIME.podcast.episodeTables[podcastId] = null; AIRTIME.podcast.episodeTables[podcastId] = null;
self.$scope.$destroy(); self.$scope.$destroy();
@ -150,13 +151,19 @@ var AIRTIME = (function (AIRTIME) {
PodcastController.call(this, $scope, $http, podcast, tab); PodcastController.call(this, $scope, $http, podcast, tab);
this.onSaveCallback = function () { this.onSaveCallback = function () {
$http({ $http({
method: 'POST', method: "POST",
url: '/preference/station-podcast-settings', url: "/preference/station-podcast-settings",
headers: {'Content-Type': 'application/x-www-form-urlencoded'}, headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: { stationPodcastPrivacy: $("#podcast-settings").find("input:checked").val() } data: {
stationPodcastPrivacy: $("#podcast-settings")
.find("input:checked")
.val(),
},
}).success(function (data) { }).success(function (data) {
jQuery.extend($scope.podcast, data); jQuery.extend($scope.podcast, data);
$(".success").text($.i18n._("Podcast settings saved")).slideDown("fast"); $(".success")
.text($.i18n._("Podcast settings saved"))
.slideDown("fast");
setTimeout(function () { setTimeout(function () {
$(".success").slideUp("fast"); $(".success").slideUp("fast");
}, 2000); }, 2000);
@ -170,16 +177,27 @@ var AIRTIME = (function (AIRTIME) {
* *
* @type {PodcastController} * @type {PodcastController}
*/ */
StationPodcastController.prototype = Object.create(PodcastController.prototype); StationPodcastController.prototype = Object.create(
PodcastController.prototype
);
/** /**
* Remove the selected episodes from the station podcast feed. * Remove the selected episodes from the station podcast feed.
*/ */
StationPodcastController.prototype.unpublishSelectedEpisodes = function () { StationPodcastController.prototype.unpublishSelectedEpisodes = function () {
var self = this, $scope = self.$scope, var self = this,
$scope = self.$scope,
episodes = self.episodeTable.getSelectedRows(); episodes = self.episodeTable.getSelectedRows();
jQuery.each(episodes, function () { jQuery.each(episodes, function () {
self.$http.delete(endpoint + $scope.podcast.id + '/episodes/' + this.id + '?csrf_token=' + $scope.csrf) self.$http
.delete(
endpoint +
$scope.podcast.id +
"/episodes/" +
this.id +
"?csrf_token=" +
$scope.csrf
)
.success(function () { .success(function () {
self.reloadEpisodeTable(); self.reloadEpisodeTable();
}); });
@ -191,33 +209,44 @@ var AIRTIME = (function (AIRTIME) {
* *
* @private * @private
*/ */
StationPodcastController.prototype._initTable = function() { StationPodcastController.prototype._initTable = function () {
var self = this, $scope = this.$scope, var self = this,
$scope = this.$scope,
buttons = { buttons = {
deleteBtn: { deleteBtn: {
title : $.i18n._('Unpublish'), title: $.i18n._("Unpublish"),
iconClass : 'icon-trash', iconClass: "icon-trash",
extraBtnClass : 'btn-danger', extraBtnClass: "btn-danger",
elementId : '', elementId: "",
eventHandlers : { eventHandlers: {
click: self.unpublishSelectedEpisodes.bind(self) click: self.unpublishSelectedEpisodes.bind(self),
}, },
validateConstraints: function () { validateConstraints: function () {
return this.getSelectedRows().length >= 1; return this.getSelectedRows().length >= 1;
} },
} },
}, },
params = { params = {
sAjaxSource : endpoint + $scope.podcast.id + '/episodes', sAjaxSource: endpoint + $scope.podcast.id + "/episodes",
aoColumns: [ aoColumns: [
// TODO: it might be wrong to use CcFiles here? We should alias this instead // TODO: it might be wrong to use CcFiles here? We should alias this instead
/* Title */ { "sTitle" : $.i18n._("Title") , "mDataProp" : "CcFiles.track_title" , "sClass" : "podcast_episodes_title" , "sWidth" : "170px" }, /* Title */ {
/* Description */ { "sTitle" : $.i18n._("Description") , "mDataProp" : "CcFiles.description" , "sClass" : "podcast_episodes_description" , "sWidth" : "300px" } sTitle: $.i18n._("Title"),
] mDataProp: "CcFiles.track_title",
sClass: "podcast_episodes_title",
sWidth: "170px",
},
/* Description */ {
sTitle: $.i18n._("Description"),
mDataProp: "CcFiles.description",
sClass: "podcast_episodes_description",
sWidth: "300px",
},
],
}; };
this.episodeTable = AIRTIME.podcast.initPodcastEpisodeDatatable( this.episodeTable = AIRTIME.podcast.initPodcastEpisodeDatatable(
$('.podcast_episodes'), $(".podcast_episodes"),
params, params,
buttons, buttons,
{ {
@ -225,10 +254,16 @@ var AIRTIME = (function (AIRTIME) {
podcastId: $scope.podcast.id, podcastId: $scope.podcast.id,
emptyPlaceholder: { emptyPlaceholder: {
iconClass: "icon-white icon-th-list", iconClass: "icon-white icon-th-list",
html: $.i18n._("You haven't published any episodes!") html:
+ "<br/>" + $.i18n._("You can publish your uploaded content from the 'Tracks' view.") $.i18n._("You haven't published any episodes!") +
+ "<br/><a target='_parent' href='/showbuilder#tracks'>" + $.i18n._("Try it now") + "</a>" "<br/>" +
} $.i18n._(
"You can publish your uploaded content from the 'Tracks' view."
) +
"<br/><a target='_parent' href='/showbuilder#tracks'>" +
$.i18n._("Try it now") +
"</a>",
},
} }
); );
@ -238,7 +273,7 @@ var AIRTIME = (function (AIRTIME) {
/** /**
* Initialize the Station podcast. * Initialize the Station podcast.
*/ */
StationPodcastController.prototype.initialize = function() { StationPodcastController.prototype.initialize = function () {
// We want to override the default tab name behaviour and use "My Podcast" for clarity // We want to override the default tab name behaviour and use "My Podcast" for clarity
this._initTable(); this._initTable();
}; };
@ -248,7 +283,7 @@ var AIRTIME = (function (AIRTIME) {
* *
* Reload the Station podcast episode table. * Reload the Station podcast episode table.
*/ */
StationPodcastController.prototype.reloadEpisodeTable = function() { StationPodcastController.prototype.reloadEpisodeTable = function () {
this.episodeTable.getDatatable().fnDraw(); this.episodeTable.getDatatable().fnDraw();
}; };
@ -257,9 +292,22 @@ var AIRTIME = (function (AIRTIME) {
* *
* Bootstrapped for each podcast or Station podcast tab. * Bootstrapped for each podcast or Station podcast tab.
*/ */
mod.podcastApp = angular.module('podcast', []) mod.podcastApp = angular
.controller('Podcast', ['$scope', '$http', 'podcast', 'tab', PodcastController]) .module("podcast", [])
.controller('StationPodcast', ['$scope', '$http', 'podcast', 'tab', StationPodcastController]); .controller("Podcast", [
"$scope",
"$http",
"podcast",
"tab",
PodcastController,
])
.controller("StationPodcast", [
"$scope",
"$http",
"podcast",
"tab",
StationPodcastController,
]);
/** /**
* Implement bulk editing of podcasts in order to accommodate the existing selection * Implement bulk editing of podcasts in order to accommodate the existing selection
@ -274,8 +322,8 @@ var AIRTIME = (function (AIRTIME) {
*/ */
function _bulkAction(selectedData, method, callback) { function _bulkAction(selectedData, method, callback) {
var ids = []; var ids = [];
selectedData.forEach(function(el) { selectedData.forEach(function (el) {
var uid = AIRTIME.library.MediaTypeStringEnum.PODCAST+"_"+el.id, var uid = AIRTIME.library.MediaTypeStringEnum.PODCAST + "_" + el.id,
t = AIRTIME.tabs.get(uid); t = AIRTIME.tabs.get(uid);
if (t && method == HTTPMethods.DELETE) { if (t && method == HTTPMethods.DELETE) {
t.close(); t.close();
@ -288,7 +336,11 @@ var AIRTIME = (function (AIRTIME) {
}); });
if (ids.length > 0) { if (ids.length > 0) {
$.post(endpoint + "bulk", {csrf_token: $("#csrf").val(), method: method, ids: ids}, callback); $.post(
endpoint + "bulk",
{ csrf_token: $("#csrf").val(), method: method, ids: ids },
callback
);
} }
} }
@ -300,8 +352,8 @@ var AIRTIME = (function (AIRTIME) {
* @private * @private
*/ */
function _bootstrapAngularApp(podcast, tab) { function _bootstrapAngularApp(podcast, tab) {
mod.podcastApp.value('podcast', podcast); mod.podcastApp.value("podcast", podcast);
mod.podcastApp.value('tab', tab); mod.podcastApp.value("tab", tab);
var wrapper = tab.contents.find(".angular_wrapper"); var wrapper = tab.contents.find(".angular_wrapper");
angular.bootstrap(wrapper.get(0), ["podcast"]); angular.bootstrap(wrapper.get(0), ["podcast"]);
} }
@ -323,38 +375,41 @@ var AIRTIME = (function (AIRTIME) {
*/ */
function _initAppFromResponse(data) { function _initAppFromResponse(data) {
var podcast = JSON.parse(data.podcast), var podcast = JSON.parse(data.podcast),
uid = AIRTIME.library.MediaTypeStringEnum.PODCAST+"_"+podcast.id, uid = AIRTIME.library.MediaTypeStringEnum.PODCAST + "_" + podcast.id,
tab = AIRTIME.tabs.openTab(data.html, uid, null); tab = AIRTIME.tabs.openTab(data.html, uid, null);
_bootstrapAngularApp(podcast, tab); _bootstrapAngularApp(podcast, tab);
$(".album_names.help_icon").qtip({ $(".album_names.help_icon").qtip({
content: { content: {
text: $.i18n._('Overwrite downloaded podcast episodes\' "Album" and "Creator" metadata tag with the Podcast Name specified above and set the track title to the title of the Podcast Episode. This album name can then be used as a search criteria by a smartblock. ') text: $.i18n._(
'Overwrite downloaded podcast episodes\' "Album" and "Creator" metadata tag with the Podcast Name specified above and set the track title to the title of the Podcast Episode. This album name can then be used as a search criteria by a smartblock. '
),
}, },
hide: { hide: {
delay: 500, delay: 500,
fixed: true fixed: true,
}, },
style: { style: {
border: { border: {
width: 0, width: 0,
radius: 4 radius: 4,
}, },
classes: "ui-tooltip-dark ui-tooltip-rounded" classes: "ui-tooltip-dark ui-tooltip-rounded",
}, },
position: { position: {
my: "left bottom", my: "left bottom",
at: "right center" at: "right center",
} },
}); });
// Add podcast episode table in right-side panel below podcast edit form // Add podcast episode table in right-side panel below podcast edit form
var episodeTable = AIRTIME.podcast.initPodcastEpisodeDatatableWithButtonEvents( var episodeTable =
AIRTIME.podcast.initPodcastEpisodeDatatableWithButtonEvents(
$("#podcast_episodes_" + podcast.id), $("#podcast_episodes_" + podcast.id),
podcast.id.toString() podcast.id.toString()
); );
episodeTable.reload(podcast.id); episodeTable.reload(podcast.id);
episodeTable.clearSelection() episodeTable.clearSelection();
} }
/** /**
@ -365,17 +420,32 @@ var AIRTIME = (function (AIRTIME) {
* @private * @private
*/ */
function _initPodcastEpisodeTable() { function _initPodcastEpisodeTable() {
PodcastEpisodeTable = function(wrapperDOMNode, bItemSelection, toolbarButtons, dataTablesOptions, config) { PodcastEpisodeTable = function (
wrapperDOMNode,
bItemSelection,
toolbarButtons,
dataTablesOptions,
config
) {
this.config = config; // Internal configuration object this.config = config; // Internal configuration object
this._setupImportListener(); this._setupImportListener();
// Call the superconstructor // Call the superconstructor
return AIRTIME.widgets.Table.call(this, wrapperDOMNode, bItemSelection, toolbarButtons, dataTablesOptions, config.emptyPlaceholder); return AIRTIME.widgets.Table.call(
this,
wrapperDOMNode,
bItemSelection,
toolbarButtons,
dataTablesOptions,
config.emptyPlaceholder
);
}; // Subclass AIRTIME.widgets.Table }; // Subclass AIRTIME.widgets.Table
PodcastEpisodeTable.prototype = Object.create(AIRTIME.widgets.Table.prototype); PodcastEpisodeTable.prototype = Object.create(
AIRTIME.widgets.Table.prototype
);
PodcastEpisodeTable.prototype.constructor = PodcastEpisodeTable; PodcastEpisodeTable.prototype.constructor = PodcastEpisodeTable;
PodcastEpisodeTable.prototype._SELECTORS = Object.freeze({ PodcastEpisodeTable.prototype._SELECTORS = Object.freeze({
SELECTION_CHECKBOX: ".airtime_table_checkbox:has(input)", SELECTION_CHECKBOX: ".airtime_table_checkbox:has(input)",
SELECTION_TABLE_ROW: "tr:has(td.airtime_table_checkbox > input)" SELECTION_TABLE_ROW: "tr:has(td.airtime_table_checkbox > input)",
}); });
/** /**
@ -392,15 +462,34 @@ var AIRTIME = (function (AIRTIME) {
* @returns {string} * @returns {string}
* @private * @private
*/ */
PodcastEpisodeTable.prototype._datatablesCheckboxDataDelegate = function(rowData, callType, dataToSave) { PodcastEpisodeTable.prototype._datatablesCheckboxDataDelegate = function (
rowData,
callType,
dataToSave
) {
var defaultIcon = "<span class='icon icon-circle-arrow-down'></span>", var defaultIcon = "<span class='icon icon-circle-arrow-down'></span>",
importIcon = "<span class='sp-checked-icon checked-icon imported-flag'></span>", importIcon =
"<span class='sp-checked-icon checked-icon imported-flag'></span>",
pendingIcon = "<span class='loading-icon'></span>"; pendingIcon = "<span class='loading-icon'></span>";
if (this.config.hideIngestCheckboxes && rowData.ingested && rowData.ingested != 0) { if (
this.config.hideIngestCheckboxes &&
rowData.ingested &&
rowData.ingested != 0
) {
return rowData.ingested > 0 ? importIcon : pendingIcon; return rowData.ingested > 0 ? importIcon : pendingIcon;
} }
rowData.importIcon = (rowData.ingested != 0) ? (rowData.ingested > 0 ? importIcon : pendingIcon) : defaultIcon; rowData.importIcon =
return AIRTIME.widgets.Table.prototype._datatablesCheckboxDataDelegate.call(this, rowData, callType, dataToSave); rowData.ingested != 0
? rowData.ingested > 0
? importIcon
: pendingIcon
: defaultIcon;
return AIRTIME.widgets.Table.prototype._datatablesCheckboxDataDelegate.call(
this,
rowData,
callType,
dataToSave
);
}; };
/** /**
@ -414,13 +503,14 @@ var AIRTIME = (function (AIRTIME) {
// When using static source data, we instantiate an empty table // When using static source data, we instantiate an empty table
// and pass this function the ID of the podcast we want to display. // and pass this function the ID of the podcast we want to display.
if (id) this.config.podcastId = id; if (id) this.config.podcastId = id;
var self = this, dt = self._datatable; var self = this,
dt = self._datatable;
dt.block({ dt.block({
message: "", message: "",
theme: true, theme: true,
applyPlatformOpacityRules: false applyPlatformOpacityRules: false,
}); });
$.get(endpoint + self.config.podcastId + '/episodes', function (json) { $.get(endpoint + self.config.podcastId + "/episodes", function (json) {
dt.fnClearTable(false); dt.fnClearTable(false);
dt.fnAddData(JSON.parse(json)); dt.fnAddData(JSON.parse(json));
}).done(function () { }).done(function () {
@ -439,9 +529,11 @@ var AIRTIME = (function (AIRTIME) {
PodcastEpisodeTable.prototype._setupImportListener = function () { PodcastEpisodeTable.prototype._setupImportListener = function () {
var self = this; var self = this;
self.importListener = setInterval(function () { self.importListener = setInterval(function () {
var podcastId = self.config.podcastId, pendingRows = []; var podcastId = self.config.podcastId,
pendingRows = [];
if (!podcastId) return false; if (!podcastId) return false;
var dt = self.getDatatable(), data = dt.fnGetData(); var dt = self.getDatatable(),
data = dt.fnGetData();
// Iterate over the table data to check for any rows pending import // Iterate over the table data to check for any rows pending import
$.each(data, function () { $.each(data, function () {
if (this.ingested == -1) { if (this.ingested == -1) {
@ -451,11 +543,11 @@ var AIRTIME = (function (AIRTIME) {
if (pendingRows.length > 0) { if (pendingRows.length > 0) {
// Manually trigger the Celery task to update the internal // Manually trigger the Celery task to update the internal
// task reference because the upload will often finish quickly // task reference because the upload will often finish quickly
$.get('/api/poll-celery'); $.get("/api/poll-celery");
// Fetch the table data if there are pending rows, // Fetch the table data if there are pending rows,
// then check if any of the pending rows have // then check if any of the pending rows have
// succeeded or failed before reloading the table. // succeeded or failed before reloading the table.
$.get(endpoint + podcastId + '/episodes', function (json) { $.get(endpoint + podcastId + "/episodes", function (json) {
data = JSON.parse(json); data = JSON.parse(json);
var delta = false; var delta = false;
$.each(data, function () { $.each(data, function () {
@ -465,7 +557,8 @@ var AIRTIME = (function (AIRTIME) {
pendingRows.slice(idx, 0); pendingRows.slice(idx, 0);
} }
}); });
if (delta) { // Has there been a change? if (delta) {
// Has there been a change?
// We already have the data, so there's no reason to call // We already have the data, so there's no reason to call
// reload() here; this also provides a smoother transition // reload() here; this also provides a smoother transition
dt.fnClearTable(false); dt.fnClearTable(false);
@ -481,24 +574,24 @@ var AIRTIME = (function (AIRTIME) {
*/ */
PodcastEpisodeTable.prototype.destroy = function () { PodcastEpisodeTable.prototype.destroy = function () {
clearInterval(this.importListener); clearInterval(this.importListener);
} };
} }
/** /**
* Create and show the URL dialog for podcast creation. * Create and show the URL dialog for podcast creation.
*/ */
mod.createUrlDialog = function () { mod.createUrlDialog = function () {
$.get('/render/podcast-url-dialog', function(json) { $.get("/render/podcast-url-dialog", function (json) {
$(document.body).append(json.html); $(document.body).append(json.html);
$("#podcast_url_dialog").dialog({ $("#podcast_url_dialog").dialog({
title: $.i18n._("Add New Podcast"), title: $.i18n._("Add New Podcast"),
resizable: false, resizable: false,
modal: true, modal: true,
width: '450px', width: "450px",
height: 129, height: 129,
close: function () { close: function () {
$(this).remove(); $(this).remove();
} },
}); });
}); });
}; };
@ -510,7 +603,10 @@ var AIRTIME = (function (AIRTIME) {
* FIXME: we should probably be passing the serialized form into this function instead * FIXME: we should probably be passing the serialized form into this function instead
*/ */
mod.addPodcast = function () { mod.addPodcast = function () {
$.post(endpoint, $("#podcast_url_dialog").find("form").serialize(), function(json) { $.post(
endpoint,
$("#podcast_url_dialog").find("form").serialize(),
function (json) {
// Refresh left-side library pane to show newly created podcast // Refresh left-side library pane to show newly created podcast
AIRTIME.library.podcastDataTable.fnDraw(); AIRTIME.library.podcastDataTable.fnDraw();
@ -519,7 +615,8 @@ var AIRTIME = (function (AIRTIME) {
// open newly created podcast in right-side edit pane // open newly created podcast in right-side edit pane
_initAppFromResponse(json); _initAppFromResponse(json);
}).fail(function (e) { }
).fail(function (e) {
var errors = $("#podcast_url_dialog").find(".errors"); var errors = $("#podcast_url_dialog").find(".errors");
errors.show(200).text(e.responseText); errors.show(200).text(e.responseText);
setTimeout(function () { setTimeout(function () {
@ -532,21 +629,35 @@ var AIRTIME = (function (AIRTIME) {
* Create a bulk request to edit all currently selected podcasts. * Create a bulk request to edit all currently selected podcasts.
*/ */
mod.editSelectedPodcasts = function () { mod.editSelectedPodcasts = function () {
_bulkAction(AIRTIME.library.podcastTableWidget.getSelectedRows(), HTTPMethods.GET, function(json) { _bulkAction(
json.forEach(function(data) { AIRTIME.library.podcastTableWidget.getSelectedRows(),
HTTPMethods.GET,
function (json) {
json.forEach(function (data) {
_initAppFromResponse(data); _initAppFromResponse(data);
}); });
}); }
);
}; };
/** /**
* Create a bulk request to delete all currently selected podcasts. * Create a bulk request to delete all currently selected podcasts.
*/ */
mod.deleteSelectedPodcasts = function () { mod.deleteSelectedPodcasts = function () {
if (confirm($.i18n._("Are you sure you want to delete the selected podcasts from your library?"))) { if (
_bulkAction(AIRTIME.library.podcastTableWidget.getSelectedRows(), HTTPMethods.DELETE, function () { confirm(
$.i18n._(
"Are you sure you want to delete the selected podcasts from your library?"
)
)
) {
_bulkAction(
AIRTIME.library.podcastTableWidget.getSelectedRows(),
HTTPMethods.DELETE,
function () {
AIRTIME.library.podcastDataTable.fnDraw(); AIRTIME.library.podcastDataTable.fnDraw();
}); }
);
} }
}; };
@ -558,10 +669,15 @@ var AIRTIME = (function (AIRTIME) {
mod.editSelectedEpisodes = function (episodes) { mod.editSelectedEpisodes = function (episodes) {
$.each(episodes, function () { $.each(episodes, function () {
if (this.file && !Object.keys(this.file).length > 0) return false; if (this.file && !Object.keys(this.file).length > 0) return false;
var fileId = this.file_id || this.file.id, uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + fileId; var fileId = this.file_id || this.file.id,
$.get(baseUrl + "library/edit-file-md/id/" + fileId, {format: "json"}, function (json) { uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + fileId;
$.get(
baseUrl + "library/edit-file-md/id/" + fileId,
{ format: "json" },
function (json) {
AIRTIME.playlist.fileMdEdit(json, uid); AIRTIME.playlist.fileMdEdit(json, uid);
}); }
);
}); });
}; };
@ -579,12 +695,16 @@ var AIRTIME = (function (AIRTIME) {
return false; return false;
} }
if (this.file && Object.keys(this.file).length > 0) return false; if (this.file && Object.keys(this.file).length > 0) return false;
$.post(endpoint + this.podcast_id + '/episodes', JSON.stringify({ $.post(
endpoint + this.podcast_id + "/episodes",
JSON.stringify({
csrf_token: $("#csrf").val(), csrf_token: $("#csrf").val(),
episode: this episode: this,
}), function () { }),
function () {
dt.reload(dt.config.podcastId); dt.reload(dt.config.podcastId);
}); }
);
remainingDiskSpace -= this.enclosure.length; remainingDiskSpace -= this.enclosure.length;
}); });
@ -607,8 +727,10 @@ var AIRTIME = (function (AIRTIME) {
/** /**
* Initialize the podcast episode table with working buttons * Initialize the podcast episode table with working buttons
*/ */
mod.initPodcastEpisodeDatatableWithButtonEvents = function (domNode, podcastId) { mod.initPodcastEpisodeDatatableWithButtonEvents = function (
domNode,
podcastId
) {
/** /**
* Check the import statuses of each selected episode to see which * Check the import statuses of each selected episode to see which
* buttons should be enabled or disabled. * buttons should be enabled or disabled.
@ -620,7 +742,8 @@ var AIRTIME = (function (AIRTIME) {
* the button should be enabled, otherwise false. * the button should be enabled, otherwise false.
*/ */
var checkSelectedEpisodeImportStatus = function (shouldBeImported) { var checkSelectedEpisodeImportStatus = function (shouldBeImported) {
var selected = this.getSelectedRows(), isValid = true; var selected = this.getSelectedRows(),
isValid = true;
if (selected.length == 0) return false; if (selected.length == 0) return false;
$.each(selected, function () { $.each(selected, function () {
if (this.ingested < 0) isValid = false; if (this.ingested < 0) isValid = false;
@ -634,87 +757,109 @@ var AIRTIME = (function (AIRTIME) {
// Setup the default buttons (new, edit, delete) // Setup the default buttons (new, edit, delete)
podcastEpisodeButtons = AIRTIME.widgets.Table.getStandardToolbarButtons(); podcastEpisodeButtons = AIRTIME.widgets.Table.getStandardToolbarButtons();
$.extend(true, podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW], $.extend(
true,
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW],
{ {
title: $.i18n._("Import"), title: $.i18n._("Import"),
eventHandlers: { eventHandlers: {
click: function () { click: function () {
var episodes = mod.episodeTables[podcastId].getSelectedRows(); var episodes = mod.episodeTables[podcastId].getSelectedRows();
AIRTIME.podcast.importSelectedEpisodes(episodes, mod.episodeTables[podcastId]); AIRTIME.podcast.importSelectedEpisodes(
} episodes,
mod.episodeTables[podcastId]
);
},
}, },
validateConstraints: function () { validateConstraints: function () {
return checkSelectedEpisodeImportStatus.call(this, false); return checkSelectedEpisodeImportStatus.call(this, false);
},
} }
}); );
$.extend(true, podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT], $.extend(
true,
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT],
{ {
eventHandlers: { eventHandlers: {
click: function () { click: function () {
var episodes = mod.episodeTables[podcastId].getSelectedRows(); var episodes = mod.episodeTables[podcastId].getSelectedRows();
AIRTIME.podcast.editSelectedEpisodes(episodes); AIRTIME.podcast.editSelectedEpisodes(episodes);
} },
}, },
validateConstraints: function () { validateConstraints: function () {
return checkSelectedEpisodeImportStatus.call(this, true); return checkSelectedEpisodeImportStatus.call(this, true);
},
} }
}); );
$.extend(true, podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE], $.extend(
true,
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE],
{ {
eventHandlers: { eventHandlers: {
click: function () { click: function () {
var data = [], episodes = mod.episodeTables[podcastId].getSelectedRows(); var data = [],
episodes = mod.episodeTables[podcastId].getSelectedRows();
$.each(episodes, function () { $.each(episodes, function () {
data.push({id: this.file.id, type: this.file.ftype}); data.push({ id: this.file.id, type: this.file.ftype });
}); });
AIRTIME.podcast.deleteSelectedEpisodes(data, podcastId); AIRTIME.podcast.deleteSelectedEpisodes(data, podcastId);
} },
}, },
validateConstraints: function () { validateConstraints: function () {
return checkSelectedEpisodeImportStatus.call(this, true); return checkSelectedEpisodeImportStatus.call(this, true);
},
} }
}); );
// Reassign these because integer keys take precedence in iteration order - we want to order based on insertion // Reassign these because integer keys take precedence in iteration order - we want to order based on insertion
// FIXME: this is a pretty flimsy way to try to set up iteration order (possibly not xbrowser compatible?) // FIXME: this is a pretty flimsy way to try to set up iteration order (possibly not xbrowser compatible?)
podcastEpisodeButtons = { podcastEpisodeButtons = {
newBtn : podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW], newBtn:
editBtn: podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT], podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW],
delBtn : podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE] editBtn:
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT],
delBtn:
podcastEpisodeButtons[
AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE
],
}; };
$.extend(true, podcastEpisodeButtons, { $.extend(true, podcastEpisodeButtons, {
addToScheduleBtn: { addToScheduleBtn: {
title : $.i18n._('Add to Schedule'), title: $.i18n._("Add to Schedule"),
iconClass : 'icon-plus', iconClass: "icon-plus",
extraBtnClass : 'btn-small', extraBtnClass: "btn-small",
elementId : '', elementId: "",
eventHandlers : { eventHandlers: {
click: function () { click: function () {
var data = [], selected = AIRTIME.podcast.episodeTables[podcastId].getSelectedRows(); var data = [],
$.each(selected, function () { data.push(this.file); }); selected =
AIRTIME.podcast.episodeTables[podcastId].getSelectedRows();
$.each(selected, function () {
data.push(this.file);
});
AIRTIME.library.addToSchedule(data); AIRTIME.library.addToSchedule(data);
} },
}, },
validateConstraints: function () { validateConstraints: function () {
// TODO: change text + behaviour for playlists, smart blocks, etc. // TODO: change text + behaviour for playlists, smart blocks, etc.
return checkSelectedEpisodeImportStatus.call(this, true); return checkSelectedEpisodeImportStatus.call(this, true);
} },
}, },
viewDescBtn: { viewDescBtn: {
title : $.i18n._("View"), title: $.i18n._("View"),
iconClass : "icon-globe", iconClass: "icon-globe",
extraBtnClass : "btn-small", extraBtnClass: "btn-small",
elementId : "", elementId: "",
eventHandlers : { eventHandlers: {
click: function () { click: function () {
AIRTIME.library.openPodcastEpisodeDialog(podcastId); AIRTIME.library.openPodcastEpisodeDialog(podcastId);
} },
}, },
validateConstraints: function () { validateConstraints: function () {
return this.getSelectedRows().length == 1; return this.getSelectedRows().length == 1;
} },
} },
}); });
mod.episodeTables[podcastId] = AIRTIME.podcast.initPodcastEpisodeDatatable( mod.episodeTables[podcastId] = AIRTIME.podcast.initPodcastEpisodeDatatable(
@ -725,10 +870,16 @@ var AIRTIME = (function (AIRTIME) {
hideIngestCheckboxes: false, hideIngestCheckboxes: false,
emptyPlaceholder: { emptyPlaceholder: {
iconClass: "icon-white icon-th-list", iconClass: "icon-white icon-th-list",
html: $.i18n._("This podcast doesn't have any episodes!") html:
+ "<br/>" + $.i18n._("Make sure the RSS feed contains audio items (with enclosure tags).") $.i18n._("This podcast doesn't have any episodes!") +
+ "<br/><a target='_blank' href='http://www.apple.com/ca/itunes/podcasts/specs.html'>" + $.i18n._("Learn about podcasts") + "</a>" "<br/>" +
} $.i18n._(
"Make sure the RSS feed contains audio items (with enclosure tags)."
) +
"<br/><a target='_blank' href='http://www.apple.com/ca/itunes/podcasts/specs.html'>" +
$.i18n._("Learn about podcasts") +
"</a>",
},
} }
); );
@ -738,8 +889,12 @@ var AIRTIME = (function (AIRTIME) {
if (!$.isEmptyObject(data.file)) { if (!$.isEmptyObject(data.file)) {
mod.dblClickAdd(data.file, data.file.ftype); mod.dblClickAdd(data.file, data.file.ftype);
} else { } else {
if (data.ingested >= 0) { // Only import if the file isn't pending if (data.ingested >= 0) {
AIRTIME.podcast.importSelectedEpisodes([data], mod.episodeTables[podcastId]); // Only import if the file isn't pending
AIRTIME.podcast.importSelectedEpisodes(
[data],
mod.episodeTables[podcastId]
);
} }
} }
}); });
@ -759,58 +914,122 @@ var AIRTIME = (function (AIRTIME) {
* *
* @returns {Table} the created Table object * @returns {Table} the created Table object
*/ */
mod.initPodcastEpisodeDatatable = function (domNode, params, buttons, config) { mod.initPodcastEpisodeDatatable = function (
domNode,
params,
buttons,
config
) {
params = $.extend(true, params, { params = $.extend(true, params, {
aoColumns : [ aoColumns: [
/* GUID */ { "sTitle" : "" , "mDataProp" : "guid" , "sClass" : "podcast_episodes_guid" , "bVisible" : false }, /* GUID */ {
/* Ingested */ { "sTitle" : $.i18n._("Imported?") , "mDataProp" : "importIcon" , "sClass" : "podcast_episodes_imported" , "sWidth" : "120px" }, sTitle: "",
/* Title */ { "sTitle" : $.i18n._("Title") , "mDataProp" : "title" , "sClass" : "podcast_episodes_title" , "sWidth" : "170px" }, mDataProp: "guid",
/* Author */ { "sTitle" : $.i18n._("Author") , "mDataProp" : "author" , "sClass" : "podcast_episodes_author" , "sWidth" : "170px" }, sClass: "podcast_episodes_guid",
/* Description */ { "sTitle" : $.i18n._("Description") , "mDataProp" : "description" , "sClass" : "podcast_episodes_description" , "sWidth" : "300px" }, bVisible: false,
/* Link */ { "sTitle" : $.i18n._("Link") , "mDataProp" : "link" , "sClass" : "podcast_episodes_link" , "sWidth" : "170px" }, },
/* Publication Date */ { "sTitle" : $.i18n._("Publication Date") , "mDataProp" : "pub_date" , "sClass" : "podcast_episodes_pub_date" , "sWidth" : "170px" } /* Ingested */ {
sTitle: $.i18n._("Imported?"),
mDataProp: "importIcon",
sClass: "podcast_episodes_imported",
sWidth: "120px",
},
/* Title */ {
sTitle: $.i18n._("Title"),
mDataProp: "title",
sClass: "podcast_episodes_title",
sWidth: "170px",
},
/* Author */ {
sTitle: $.i18n._("Author"),
mDataProp: "author",
sClass: "podcast_episodes_author",
sWidth: "170px",
},
/* Description */ {
sTitle: $.i18n._("Description"),
mDataProp: "description",
sClass: "podcast_episodes_description",
sWidth: "300px",
},
/* Link */ {
sTitle: $.i18n._("Link"),
mDataProp: "link",
sClass: "podcast_episodes_link",
sWidth: "170px",
},
/* Publication Date */ {
sTitle: $.i18n._("Publication Date"),
mDataProp: "pub_date",
sClass: "podcast_episodes_pub_date",
sWidth: "170px",
},
], ],
bServerSide : false, bServerSide: false,
sAjaxSource : null, sAjaxSource: null,
// Initialize the table with empty data so we can defer loading // Initialize the table with empty data so we can defer loading
// If we load sequentially there's a delay before the table appears // If we load sequentially there's a delay before the table appears
aaData : {}, aaData: {},
oColVis : { oColVis: {
buttonText: $.i18n._("Columns"), buttonText: $.i18n._("Columns"),
iOverlayFade: 0, iOverlayFade: 0,
aiExclude: [0, 1, 2] aiExclude: [0, 1, 2],
}, },
bDeferRender: true, bDeferRender: true,
oColReorder: { oColReorder: {
iFixedColumns: 3 // Checkbox + imported iFixedColumns: 3, // Checkbox + imported
}, },
fnCreatedRow: function(nRow, aData, iDataIndex) { fnCreatedRow: function (nRow, aData, iDataIndex) {
var self = this; var self = this;
if (aData.file && Object.keys(aData.file).length > 0) { if (aData.file && Object.keys(aData.file).length > 0) {
$(nRow).draggable({ $(nRow).draggable({
helper: function () { helper: function () {
var $row = $(this), data = self._datatable.fnGetData(nRow); var $row = $(this),
data = self._datatable.fnGetData(nRow);
$row.data("aData", data.file); $row.data("aData", data.file);
self.selectRow(this, data, self.SELECTION_MODE.SINGLE, $row.index()); self.selectRow(
var selected = self.getSelectedRows().length, container, this,
width = self._$wrapperDOMNode.closest(".dataTables_wrapper").outerWidth(), message; data,
self.SELECTION_MODE.SINGLE,
$row.index()
);
var selected = self.getSelectedRows().length,
container,
width = self._$wrapperDOMNode
.closest(".dataTables_wrapper")
.outerWidth(),
message;
message = sprintf($.i18n._(selected > 1 ? "Adding %s Items" : "Adding %s Item"), selected); message = sprintf(
container = $('<div/>').attr('id', 'draggingContainer').append('<tr/>') $.i18n._(selected > 1 ? "Adding %s Items" : "Adding %s Item"),
.find("tr").append('<td/>').find("td") selected
.attr("colspan", 100).width(width).css("max-width", "none") );
.addClass("ui-state-highlight").append(message).end().end(); container = $("<div/>")
.attr("id", "draggingContainer")
.append("<tr/>")
.find("tr")
.append("<td/>")
.find("td")
.attr("colspan", 100)
.width(width)
.css("max-width", "none")
.addClass("ui-state-highlight")
.append(message)
.end()
.end();
return container; return container;
}, },
tolerance: 'pointer', tolerance: "pointer",
cursor: 'move', cursor: "move",
cursorAt: { cursorAt: {
top: 20, top: 20,
left: Math.floor(self._datatable.outerWidth() / 2) left: Math.floor(self._datatable.outerWidth() / 2),
}, },
distance: 25, // min-distance for dragging distance: 25, // min-distance for dragging
connectToSortable: $("#show_builder_table, .active-tab .spl_sortable") connectToSortable: $(
"#show_builder_table, .active-tab .spl_sortable"
),
}); });
} }
}, },
@ -818,11 +1037,15 @@ var AIRTIME = (function (AIRTIME) {
AIRTIME.library.drawEmptyPlaceholder(this); AIRTIME.library.drawEmptyPlaceholder(this);
// Hide the processing div // Hide the processing div
var dt = this.getDatatable(); var dt = this.getDatatable();
!dt || dt.closest(".dataTables_wrapper").find(".dataTables_processing").css("visibility", "hidden"); !dt ||
} dt
.closest(".dataTables_wrapper")
.find(".dataTables_processing")
.css("visibility", "hidden");
},
}); });
if (typeof PodcastEpisodeTable === 'undefined') { if (typeof PodcastEpisodeTable === "undefined") {
_initPodcastEpisodeTable(); _initPodcastEpisodeTable();
} }
@ -839,9 +1062,9 @@ var AIRTIME = (function (AIRTIME) {
}; };
return AIRTIME; return AIRTIME;
}(AIRTIME || {})); })(AIRTIME || {});
$(document).ready(function() { $(document).ready(function () {
$(document).on("submit", "#podcast_url_form", function (e) { $(document).on("submit", "#podcast_url_form", function (e) {
e.preventDefault(); e.preventDefault();
AIRTIME.podcast.addPodcast(); AIRTIME.podcast.addPodcast();

View File

@ -1,4 +1,3 @@
var AIRTIME = (function (AIRTIME) { var AIRTIME = (function (AIRTIME) {
var mod; var mod;
@ -8,13 +7,14 @@ var AIRTIME = (function (AIRTIME) {
mod = AIRTIME.publish; mod = AIRTIME.publish;
var endpoint = 'rest/media/'; var endpoint = "rest/media/";
var dialogUrl = 'library/publish-dialog'; var dialogUrl = "library/publish-dialog";
var PUBLISH_APP_NAME = 'publish'; var PUBLISH_APP_NAME = "publish";
//AngularJS app //AngularJS app
var publishApp = angular.module(PUBLISH_APP_NAME, []) var publishApp = angular
.controller('Publish', function ($sce, $scope, $http, mediaId, tab) { .module(PUBLISH_APP_NAME, [])
.controller("Publish", function ($sce, $scope, $http, mediaId, tab) {
$scope.publishData = {}; $scope.publishData = {};
var sourceInterval; var sourceInterval;
@ -30,7 +30,8 @@ var AIRTIME = (function (AIRTIME) {
function fetchSourceData() { function fetchSourceData() {
var csrfToken = jQuery("#csrf").val(); var csrfToken = jQuery("#csrf").val();
$http.get(endpoint + mediaId, {csrf_token: csrfToken}) $http
.get(endpoint + mediaId, { csrf_token: csrfToken })
.success(function (json) { .success(function (json) {
$scope.media = json; $scope.media = json;
tab.setName($scope.media.track_title); tab.setName($scope.media.track_title);
@ -38,9 +39,12 @@ var AIRTIME = (function (AIRTIME) {
// Get an object containing all sources, their translated labels, // Get an object containing all sources, their translated labels,
// and their publication state for the file with the given ID // and their publication state for the file with the given ID
$http.get(endpoint + mediaId + '/publish-sources', {csrf_token: csrfToken}) $http
.get(endpoint + mediaId + "/publish-sources", {
csrf_token: csrfToken,
})
.success(function (json) { .success(function (json) {
$scope.sources = { toPublish: [], published: []}; $scope.sources = { toPublish: [], published: [] };
$.each(json, function () { $.each(json, function () {
if (Math.abs(this.status) == 1) { if (Math.abs(this.status) == 1) {
$scope.sources.published.push(this); $scope.sources.published.push(this);
@ -53,7 +57,7 @@ var AIRTIME = (function (AIRTIME) {
function init() { function init() {
fetchSourceData(); fetchSourceData();
sourceInterval = setInterval(function() { sourceInterval = setInterval(function () {
fetchSourceData(); fetchSourceData();
}, 5000); }, 5000);
@ -63,24 +67,31 @@ var AIRTIME = (function (AIRTIME) {
}); });
} }
$scope.openEditDialog = function () {
$scope.openEditDialog = function() {
var uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + mediaId; var uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + mediaId;
$.get(baseUrl + "library/edit-file-md/id/" + mediaId, {format: "json"}, function (json) { $.get(
baseUrl + "library/edit-file-md/id/" + mediaId,
{ format: "json" },
function (json) {
AIRTIME.playlist.fileMdEdit(json, uid); AIRTIME.playlist.fileMdEdit(json, uid);
}); }
);
}; };
$scope.publish = function () { $scope.publish = function () {
var data = {}; var data = {};
jQuery.each($scope.publishData, function (k, v) { jQuery.each($scope.publishData, function (k, v) {
if (v) { if (v) {
data[k] = 'publish'; // FIXME: should be more robust data[k] = "publish"; // FIXME: should be more robust
} }
}); });
if (data && Object.keys(data).length > 0) { if (data && Object.keys(data).length > 0) {
$http.put(endpoint + mediaId + '/publish', {csrf_token: jQuery("#csrf").val(), sources: data}) $http
.put(endpoint + mediaId + "/publish", {
csrf_token: jQuery("#csrf").val(),
sources: data,
})
.success(function () { .success(function () {
tab.contents.find(".publish-btn").prop("disabled", true); tab.contents.find(".publish-btn").prop("disabled", true);
fetchSourceData(); fetchSourceData();
@ -92,8 +103,12 @@ var AIRTIME = (function (AIRTIME) {
$scope.remove = function (source) { $scope.remove = function (source) {
var data = {}; var data = {};
data[source] = 'unpublish'; // FIXME: should be more robust data[source] = "unpublish"; // FIXME: should be more robust
$http.put(endpoint + mediaId + '/publish', {csrf_token: jQuery("#csrf").val(), sources: data}) $http
.put(endpoint + mediaId + "/publish", {
csrf_token: jQuery("#csrf").val(),
sources: data,
})
.success(function () { .success(function () {
fetchSourceData(); fetchSourceData();
}); });
@ -107,7 +122,6 @@ var AIRTIME = (function (AIRTIME) {
init(); init();
}); });
/* /*
var selected = $("#podcast_table").find(".selected"), var selected = $("#podcast_table").find(".selected"),
ids = []; ids = [];
@ -117,13 +131,13 @@ var AIRTIME = (function (AIRTIME) {
});*/ });*/
function _bootstrapAngularApp(mediaId, tab) { function _bootstrapAngularApp(mediaId, tab) {
publishApp.value('mediaId', mediaId); publishApp.value("mediaId", mediaId);
publishApp.value('tab', tab); publishApp.value("tab", tab);
var wrapper = AIRTIME.tabs.getActiveTab().contents.find(".angular_wrapper"); var wrapper = AIRTIME.tabs.getActiveTab().contents.find(".angular_wrapper");
angular.bootstrap(wrapper.get(0), [PUBLISH_APP_NAME]); angular.bootstrap(wrapper.get(0), [PUBLISH_APP_NAME]);
} }
mod.publishSelectedTracks = function() { mod.publishSelectedTracks = function () {
/* /*
_bulkAction("GET", function(json) { _bulkAction("GET", function(json) {
json.forEach(function(el) { json.forEach(function(el) {
@ -138,14 +152,17 @@ var AIRTIME = (function (AIRTIME) {
}); });
}); });
});*/ });*/
}; };
mod.openPublishDialog = function(mediaId) { mod.openPublishDialog = function (mediaId) {
jQuery
jQuery.get(dialogUrl, { csrf_token: jQuery("#csrf").val() }) .get(dialogUrl, { csrf_token: jQuery("#csrf").val() })
.success(function(html) { .success(function (html) {
var tab = AIRTIME.tabs.openTab(html, PUBLISH_APP_NAME+"_"+mediaId, null); var tab = AIRTIME.tabs.openTab(
html,
PUBLISH_APP_NAME + "_" + mediaId,
null
);
_bootstrapAngularApp(mediaId, tab); _bootstrapAngularApp(mediaId, tab);
}); });
@ -165,4 +182,4 @@ var AIRTIME = (function (AIRTIME) {
}; };
return AIRTIME; return AIRTIME;
}(AIRTIME || {})); })(AIRTIME || {});

File diff suppressed because it is too large Load Diff

View File

@ -1,20 +1,25 @@
$(document).ready(function() { $(document).ready(function () {
listenerstat_content = $("#listenerstat_content") listenerstat_content = $("#listenerstat_content");
dateStartId = "#his_date_start", (dateStartId = "#his_date_start"),
timeStartId = "#his_time_start", (timeStartId = "#his_time_start"),
dateEndId = "#his_date_end", (dateEndId = "#his_date_end"),
timeEndId = "#his_time_end"; (timeEndId = "#his_time_end");
// set width dynamically // set width dynamically
var width = $("#listenerstat_content").width(); var width = $("#listenerstat_content").width();
width = width * .91; width = width * 0.91;
$("#listenerstat_content").find("#flot_placeholder").width(width); $("#listenerstat_content").find("#flot_placeholder").width(width);
$("#listenerstat_content").find("#legend").width(width); $("#listenerstat_content").find("#legend").width(width);
getDataAndPlot(); getDataAndPlot();
listenerstat_content.find("#his_submit").click(function(){ listenerstat_content.find("#his_submit").click(function () {
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); var oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
var start = oRange.start; var start = oRange.start;
var end = oRange.end; var end = oRange.end;
getDataAndPlot(start, end); getDataAndPlot(start, end);
@ -25,7 +30,7 @@ $(document).ready(function() {
* Toggle a spinner overlay so the user knows the page is processing * Toggle a spinner overlay so the user knows the page is processing
*/ */
function toggleOverlay() { function toggleOverlay() {
$('#flot_placeholder').toggleClass('processing'); $("#flot_placeholder").toggleClass("processing");
} }
function getDataAndPlot(startTimestamp, endTimestamp) { function getDataAndPlot(startTimestamp, endTimestamp) {
@ -33,115 +38,135 @@ function getDataAndPlot(startTimestamp, endTimestamp) {
toggleOverlay(); toggleOverlay();
// get data // get data
$.get(baseUrl+'Listenerstat/get-data', {start: startTimestamp, end: endTimestamp}, function(data){ $.get(
baseUrl + "Listenerstat/get-data",
{ start: startTimestamp, end: endTimestamp },
function (data) {
out = new Object(); out = new Object();
$.each(data, function(mpName, v){ $.each(data, function (mpName, v) {
plotData = new Object(); plotData = new Object();
plotData.data = new Array(); plotData.data = new Array();
$.each(v, function(i, ele){ $.each(v, function (i, ele) {
plotData.label = mpName; plotData.label = mpName;
var d = new Date(0); var d = new Date(0);
d.setUTCSeconds(ele.timestamp); d.setUTCSeconds(ele.timestamp);
plotData.data.push([d, ele.listener_count]); plotData.data.push([d, ele.listener_count]);
}) });
out[mpName] = plotData; out[mpName] = plotData;
}); });
plot(out); plot(out);
// Turn off the processing overlay // Turn off the processing overlay
toggleOverlay(); toggleOverlay();
}) }
);
} }
function plot(datasets){ function plot(datasets) {
var plot; var plot;
data = null; data = null;
function plotByChoice(doAll) function plotByChoice(doAll) {
{
// largest date object that you can set // largest date object that you can set
firstTimestamp = new Date(8640000000000000); firstTimestamp = new Date(8640000000000000);
// smallest // smallest
lastTimestamp = new Date(0); lastTimestamp = new Date(0);
data = []; data = [];
if (doAll != null) if (doAll != null) {
{ $.each(datasets, function (key, val) {
$.each(datasets, function(key, val) {
if (firstTimestamp.getTime() > val.data[0][0].getTime()) { if (firstTimestamp.getTime() > val.data[0][0].getTime()) {
firstTimestamp = val.data[0][0]; firstTimestamp = val.data[0][0];
} }
if (lastTimestamp.getTime() < val.data[val.data.length-1][0].getTime()) { if (
lastTimestamp = val.data[val.data.length-1][0]; lastTimestamp.getTime() < val.data[val.data.length - 1][0].getTime()
) {
lastTimestamp = val.data[val.data.length - 1][0];
} }
data.push(val); data.push(val);
}); });
} } else {
else $("#legend .legendCB").each(function () {
{ if (this.checked) {
$('#legend .legendCB').each(
function(){
if (this.checked)
{
data.push(datasets[this.id]); data.push(datasets[this.id]);
if (firstTimestamp.getTime() > datasets[this.id].data[0][0].getTime()) { if (
firstTimestamp.getTime() > datasets[this.id].data[0][0].getTime()
) {
firstTimestamp = datasets[this.id].data[0][0]; firstTimestamp = datasets[this.id].data[0][0];
} }
if (lastTimestamp.getTime() < datasets[this.id].data[datasets[this.id].data.length-1][0].getTime()) { if (
lastTimestamp = datasets[this.id].data[datasets[this.id].data.length-1][0]; lastTimestamp.getTime() <
datasets[this.id].data[
datasets[this.id].data.length - 1
][0].getTime()
) {
lastTimestamp =
datasets[this.id].data[datasets[this.id].data.length - 1][0];
} }
} else {
data.push({ label: this.id, data: [] });
} }
else });
{
data.push({label: this.id, data: []})
}
}
);
} }
numOfTicks = 10; numOfTicks = 10;
tickSize = (lastTimestamp.getTime() - firstTimestamp.getTime())/1000/numOfTicks; tickSize =
(lastTimestamp.getTime() - firstTimestamp.getTime()) / 1000 / numOfTicks;
plot = $.plot($("#flot_placeholder"), data, { plot = $.plot($("#flot_placeholder"), data, {
yaxis: { min: 0, tickDecimals: 0, color: '#d6d6d6', tickColor: '#d6d6d6' }, yaxis: {
xaxis: { mode: "time", timeformat:"%y/%m/%0d %H:%M", tickSize: [tickSize, "second"], min: 0,
color: '#d6d6d6', tickColor: '#d6d6d6' }, tickDecimals: 0,
color: "#d6d6d6",
tickColor: "#d6d6d6",
},
xaxis: {
mode: "time",
timeformat: "%y/%m/%0d %H:%M",
tickSize: [tickSize, "second"],
color: "#d6d6d6",
tickColor: "#d6d6d6",
},
grid: { grid: {
hoverable: true, hoverable: true,
backgroundColor: { colors: ["#333", "#555"] } backgroundColor: { colors: ["#333", "#555"] },
}, },
series: { series: {
lines: { lines: {
show: true, show: true,
fill: 0.3 fill: 0.3,
}, },
points: { show: true } points: { show: true },
}, },
legend: { legend: {
container: $('#legend'), container: $("#legend"),
noColumns: 5, noColumns: 5,
color: '#c0c0c0', color: "#c0c0c0",
labelFormatter: function (label, series) { labelFormatter: function (label, series) {
var cb = '<input style="float:left;" class="legendCB" type="checkbox" '; var cb =
if (series.data.length > 0){ '<input style="float:left;" class="legendCB" type="checkbox" ';
if (series.data.length > 0) {
cb += 'checked="true" '; cb += 'checked="true" ';
} }
cb += 'id="'+label+'" /> '; cb += 'id="' + label + '" /> ';
cb += label; cb += label;
return cb; return cb;
} },
} },
}); });
function showTooltip(x, y, contents) { function showTooltip(x, y, contents) {
$('<div id="tooltip">' + contents + '</div>').css( { $('<div id="tooltip">' + contents + "</div>")
position: 'absolute', .css({
display: 'none', position: "absolute",
display: "none",
top: y + 5, top: y + 5,
left: x + 5, left: x + 5,
border: '1px solid #fdd', border: "1px solid #fdd",
padding: '2px', padding: "2px",
'background-color': '#fee', "background-color": "#fee",
opacity: 0.80 opacity: 0.8,
}).appendTo("body").fadeIn(200); })
.appendTo("body")
.fadeIn(200);
} }
var previousPoint = null; var previousPoint = null;
@ -153,28 +178,38 @@ function plot(datasets){
$("#tooltip").remove(); $("#tooltip").remove();
var y = item.datapoint[1].toFixed(2); var y = item.datapoint[1].toFixed(2);
showTooltip(item.pageX, item.pageY, showTooltip(
sprintf($.i18n._("Listener Count on %s: %s"), item.series.label, Math.floor(y))); item.pageX,
item.pageY,
sprintf(
$.i18n._("Listener Count on %s: %s"),
item.series.label,
Math.floor(y)
)
);
} }
} } else {
else {
$("#tooltip").remove(); $("#tooltip").remove();
previousPoint = null; previousPoint = null;
} }
}); });
$('#legend').find("input").click(function(){setTimeout(plotByChoice,100);}); $("#legend")
.find("input")
.click(function () {
setTimeout(plotByChoice, 100);
});
} }
plotByChoice(true); plotByChoice(true);
oBaseDatePickerSettings = { oBaseDatePickerSettings = {
dateFormat: 'yy-mm-dd', dateFormat: "yy-mm-dd",
//i18n_months, i18n_days_short are in common.js //i18n_months, i18n_days_short are in common.js
monthNames: i18n_months, monthNames: i18n_months,
dayNamesMin: i18n_days_short, dayNamesMin: i18n_days_short,
onSelect: function(sDate, oDatePicker) { onSelect: function (sDate, oDatePicker) {
$(this).datepicker( "setDate", sDate ); $(this).datepicker("setDate", sDate);
} },
}; };
oBaseTimePickerSettings = { oBaseTimePickerSettings = {
@ -182,9 +217,9 @@ function plot(datasets){
showCloseButton: true, showCloseButton: true,
closeButtonText: $.i18n._("Done"), closeButtonText: $.i18n._("Done"),
showLeadingZero: false, showLeadingZero: false,
defaultTime: '0:00', defaultTime: "0:00",
hourText: $.i18n._("Hour"), hourText: $.i18n._("Hour"),
minuteText: $.i18n._("Minute") minuteText: $.i18n._("Minute"),
}; };
listenerstat_content.find(dateStartId).datepicker(oBaseDatePickerSettings); listenerstat_content.find(dateStartId).datepicker(oBaseDatePickerSettings);

View File

@ -1,19 +1,24 @@
$(document).ready(function() { $(document).ready(function () {
showlistenerstat_content = $("#showlistenerstat_content") showlistenerstat_content = $("#showlistenerstat_content");
dateStartId = "#his_date_start", (dateStartId = "#his_date_start"),
timeStartId = "#his_time_start", (timeStartId = "#his_time_start"),
dateEndId = "#his_date_end", (dateEndId = "#his_date_end"),
timeEndId = "#his_time_end", (timeEndId = "#his_time_end"),
show_id = "#his_show_filter"; (show_id = "#his_show_filter");
// set width dynamically // set width dynamically
var width = $("#showlistenerstat_content").width(); var width = $("#showlistenerstat_content").width();
width = width * .91; width = width * 0.91;
addDatePicker(); addDatePicker();
showlistenerstat_content.find("#his_submit").click(function(){ showlistenerstat_content.find("#his_submit").click(function () {
// var show_id = $("#sb_show_filter").val(); // var show_id = $("#sb_show_filter").val();
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); var oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
var start = oRange.start; var start = oRange.start;
var end = oRange.end; var end = oRange.end;
showListenerDataTable(); showListenerDataTable();
@ -22,106 +27,145 @@ $(document).ready(function() {
function getShowData(startTimestamp, endTimestamp, show_id) { function getShowData(startTimestamp, endTimestamp, show_id) {
// get data // get data
$.get(baseUrl+'Listenerstat/get-all-show-data', {start: startTimestamp, end: endTimestamp }, function(data) { $.get(
baseUrl + "Listenerstat/get-all-show-data",
{ start: startTimestamp, end: endTimestamp },
function (data) {
return data; return data;
}); }
);
} }
function addDatePicker() { function addDatePicker() {
oBaseDatePickerSettings = { oBaseDatePickerSettings = {
dateFormat: 'yy-mm-dd', dateFormat: "yy-mm-dd",
//i18n_months, i18n_days_short are in common.js //i18n_months, i18n_days_short are in common.js
monthNames: i18n_months, monthNames: i18n_months,
dayNamesMin: i18n_days_short, dayNamesMin: i18n_days_short,
onSelect: function(sDate, oDatePicker) { onSelect: function (sDate, oDatePicker) {
$(this).datepicker( "setDate", sDate ); $(this).datepicker("setDate", sDate);
}, },
onClose: validateTimeRange onClose: validateTimeRange,
}; };
oBaseTimePickerSettings = { oBaseTimePickerSettings = {
showPeriodLabels: false, showPeriodLabels: false,
showCloseButton: true, showCloseButton: true,
closeButtonText: $.i18n._("Done"), closeButtonText: $.i18n._("Done"),
showLeadingZero: false, showLeadingZero: false,
defaultTime: '0:00', defaultTime: "0:00",
hourText: $.i18n._("Hour"), hourText: $.i18n._("Hour"),
minuteText: $.i18n._("Minute"), minuteText: $.i18n._("Minute"),
onClose: validateTimeRange onClose: validateTimeRange,
}; };
showlistenerstat_content.find(dateStartId).datepicker(oBaseDatePickerSettings).blur(validateTimeRange()); showlistenerstat_content
showlistenerstat_content.find(timeStartId).timepicker(oBaseTimePickerSettings).blur(validateTimeRange()); .find(dateStartId)
showlistenerstat_content.find(dateEndId).datepicker(oBaseDatePickerSettings).blur(validateTimeRange()); .datepicker(oBaseDatePickerSettings)
showlistenerstat_content.find(timeEndId).timepicker(oBaseTimePickerSettings).blur(validateTimeRange()); .blur(validateTimeRange());
showlistenerstat_content
.find(timeStartId)
.timepicker(oBaseTimePickerSettings)
.blur(validateTimeRange());
showlistenerstat_content
.find(dateEndId)
.datepicker(oBaseDatePickerSettings)
.blur(validateTimeRange());
showlistenerstat_content
.find(timeEndId)
.timepicker(oBaseTimePickerSettings)
.blur(validateTimeRange());
} }
function getStartEnd() { function getStartEnd() {
return AIRTIME.utilities.fnGetScheduleRange(
return AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); dateStartId,
timeStartId,
dateEndId,
timeEndId
);
} }
function validateTimeRange() { function validateTimeRange() {
var oRange, var oRange,
inputs = $('.date_form > input'), inputs = $(".date_form > input"),
error_window = $('.error_window'), error_window = $(".error_window"),
start, end; start,
end;
oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
start = oRange.start; start = oRange.start;
end = oRange.end; end = oRange.end;
if (end >= start) { if (end >= start) {
error_window.removeClass('error'); error_window.removeClass("error");
$('.error_window').html(''); $(".error_window").html("");
} } else {
else { error_window.addClass("error");
error_window.addClass('error'); console.log("bad");
console.log('bad') $(".error_window").html("Your start date time is after your end date time");
$('.error_window').html('Your start date time is after your end date time');
} }
return { return {
start: start, start: start,
end: end, end: end,
isValid: end >= start isValid: end >= start,
}; };
} }
function showListenerDataTable() { function showListenerDataTable() {
var oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId); var oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
var start = oRange.start; var start = oRange.start;
var lengthMenu = [[10, 25, 50, 100, 500, -1], [10, 25, 50, 100, 500, $.i18n._("All")]]; var lengthMenu = [
[10, 25, 50, 100, 500, -1],
[10, 25, 50, 100, 500, $.i18n._("All")],
];
var end = oRange.end; var end = oRange.end;
var sDom = 'l<"dt-process-rel"r><"H"T><"dataTables_scrolling"t><"F"ip>'; var sDom = 'l<"dt-process-rel"r><"H"T><"dataTables_scrolling"t><"F"ip>';
var show_id = $("#sb_show_filter").val(); var show_id = $("#sb_show_filter").val();
var dt = $('#show_stats_datatable'); var dt = $("#show_stats_datatable");
info = getStartEnd(); info = getStartEnd();
dt.dataTable({ dt.dataTable({
"aoColumns": [ aoColumns: [
/* first name */ {"sName": "show", "mDataProp": "show"}, /* first name */ { sName: "show", mDataProp: "show" },
/* air date */ {"sName": "time", "mDataProp": "time"}, /* air date */ { sName: "time", mDataProp: "time" },
/* last name */ {"sName": "average_number_of_listeners", "mDataProp": "average_number_of_listeners"}, /* last name */ {
/* last name */ {"sName": "maximum_number_of_listeners", "mDataProp": "maximum_number_of_listeners"}], sName: "average_number_of_listeners",
"sAjaxSource": baseUrl+'Listenerstat/get-all-show-data', mDataProp: "average_number_of_listeners",
"sAjaxDataProp": "", },
"bDestroy": true, /* last name */ {
"aLengthMenu": lengthMenu, sName: "maximum_number_of_listeners",
"iDisplayLength": 25, mDataProp: "maximum_number_of_listeners",
"sPaginationType": "full_numbers", },
"bJQueryUI": true, ],
"bAutoWidth": true, sAjaxSource: baseUrl + "Listenerstat/get-all-show-data",
"sDom": sDom, sAjaxDataProp: "",
"fnServerData": function ( sSource, aoData, fnCallback ) { bDestroy: true,
aoData.push({"start": start, "end": end}); aLengthMenu: lengthMenu,
$.ajax( { iDisplayLength: 25,
"dataType": 'json', sPaginationType: "full_numbers",
"type": "POST", bJQueryUI: true,
"url": sSource, bAutoWidth: true,
"data": {"start": start, "end": end}, sDom: sDom,
"success": fnCallback fnServerData: function (sSource, aoData, fnCallback) {
} ); aoData.push({ start: start, end: end });
$.ajax({
dataType: "json",
type: "POST",
url: sSource,
data: { start: start, end: end },
success: fnCallback,
});
}, },
}); });
} }

View File

@ -1,9 +1,9 @@
$(window).load(function() { $(window).load(function () {
$("#username").focus(); $("#username").focus();
}); });
$(document).ready(function() { $(document).ready(function () {
$("#submit").click(function() { $("#submit").click(function () {
Cookies.set('airtime_locale', $('#locale').val(), {path: '/'}); Cookies.set("airtime_locale", $("#locale").val(), { path: "/" });
}); });
}); });

View File

@ -1,5 +1,4 @@
$(document).ready(function() { $(document).ready(function () {
var dialog = $("#lang-timezone-popup"); var dialog = $("#lang-timezone-popup");
dialog.dialog({ dialog.dialog({
@ -8,8 +7,8 @@ $(document).ready(function() {
resizable: false, resizable: false,
modal: true, modal: true,
closeOnEscape: false, closeOnEscape: false,
position:['center','center'], position: ["center", "center"],
dialogClass: 'no-close', dialogClass: "no-close",
buttons: [ buttons: [
/* Testing removing the Not Now button for higher engagement /* Testing removing the Not Now button for higher engagement
{ {
@ -23,12 +22,12 @@ $(document).ready(function() {
{ {
id: "help_airtime", id: "help_airtime",
text: $.i18n._("OK"), text: $.i18n._("OK"),
"class": "btn", class: "btn",
click: function() { click: function () {
$("#lang-timezone-form").submit(); $("#lang-timezone-form").submit();
} },
} },
] ],
}); });
var language = window.navigator.userLanguage || window.navigator.language; var language = window.navigator.userLanguage || window.navigator.language;
@ -38,8 +37,8 @@ $(document).ready(function() {
language = language.replace("-", "_"); language = language.replace("-", "_");
$("#setup_language").val(language); $("#setup_language").val(language);
dayjs.extend(utc) dayjs.extend(utc);
dayjs.extend(timezone) dayjs.extend(timezone);
var timezone_name = dayjs.tz.guess(); var timezone_name = dayjs.tz.guess();
if (timezone_name === undefined) { if (timezone_name === undefined) {
@ -47,5 +46,5 @@ $(document).ready(function() {
} }
$("#setup_timezone").val(timezone_name); $("#setup_timezone").val(timezone_name);
dialog.dialog('open'); dialog.dialog("open");
}); });

View File

@ -1,7 +1,8 @@
$(document).ready(function(){ $(document).ready(function () {
function doNotShowPopup() {
function doNotShowPopup(){ $.get(baseUrl + "Usersettings/donotshowregistrationpopup", {
$.get(baseUrl+"Usersettings/donotshowregistrationpopup", {format:"json"}); format: "json",
});
} }
var dialog = $("#register_popup"); var dialog = $("#register_popup");
@ -11,113 +12,118 @@ $(document).ready(function(){
width: 500, width: 500,
resizable: false, resizable: false,
modal: true, modal: true,
position:['center',50], position: ["center", 50],
close: doNotShowPopup, close: doNotShowPopup,
buttons: [ buttons: [
{ {
id: "remind_me", id: "remind_me",
text: $.i18n._("Remind me in 1 week"), text: $.i18n._("Remind me in 1 week"),
"class": "btn", class: "btn",
click: function() { click: function () {
var url = baseUrl+'Usersettings/remindme'; var url = baseUrl + "Usersettings/remindme";
$.ajax({ $.ajax({
url: url, url: url,
data: {format:"json"} data: { format: "json" },
}); });
$(this).dialog("close"); $(this).dialog("close");
} },
}, },
{ {
id: "remind_never", id: "remind_never",
text: $.i18n._("Remind me never"), text: $.i18n._("Remind me never"),
"class": "btn", class: "btn",
click: function() { click: function () {
var url =baseUrl+'Usersettings/remindme-never'; var url = baseUrl + "Usersettings/remindme-never";
$.ajax({ $.ajax({
url: url, url: url,
data: {format:"json"} data: { format: "json" },
}); });
$(this).dialog("close"); $(this).dialog("close");
} },
}, },
{ {
id: "help_airtime", id: "help_airtime",
text: sprintf($.i18n._("Yes, help %s"), PRODUCT_NAME), text: sprintf($.i18n._("Yes, help %s"), PRODUCT_NAME),
"class": "btn", class: "btn",
click: function() { click: function () {
$("#register-form").submit(); $("#register-form").submit();
} },
} },
] ],
}); });
var button = $("#help_airtime"); var button = $("#help_airtime");
if($("#link_to_terms_and_condition").length > 0 ){ if ($("#link_to_terms_and_condition").length > 0) {
button.removeAttr('disabled').removeClass('ui-state-disabled'); button.removeAttr("disabled").removeClass("ui-state-disabled");
}else{ } else {
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled'); button.attr("disabled", "disabled").addClass("ui-state-disabled");
} }
dialog.dialog('open'); dialog.dialog("open");
$(".collapsible-header")
$('.collapsible-header').live('click',function() { .live("click", function () {
$(this).next().toggle('fast'); $(this).next().toggle("fast");
$(this).toggleClass("close"); $(this).toggleClass("close");
return false; return false;
}).next().hide(); })
.next()
.hide();
$("#SupportFeedback").live('click', function(){ $("#SupportFeedback").live("click", function () {
var pub = $("#Publicise"); var pub = $("#Publicise");
var privacy = $("#Privacy"); var privacy = $("#Privacy");
var button = $("#help_airtime"); var button = $("#help_airtime");
if( !$(this).is(':checked') ){ if (!$(this).is(":checked")) {
pub.removeAttr("checked"); pub.removeAttr("checked");
pub.attr("disabled", true); pub.attr("disabled", true);
$("#public-info").hide(); $("#public-info").hide();
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled'); button.attr("disabled", "disabled").addClass("ui-state-disabled");
}else{ } else {
pub.removeAttr("disabled"); pub.removeAttr("disabled");
if(privacy.length == 0 || privacy.is(':checked')){ if (privacy.length == 0 || privacy.is(":checked")) {
button.removeAttr('disabled').removeClass('ui-state-disabled'); button.removeAttr("disabled").removeClass("ui-state-disabled");
} }
} }
}); });
var promote = $("#Publicise"); var promote = $("#Publicise");
promote.live('click', function(){ promote.live("click", function () {
if($(this).is(':checked')){ if ($(this).is(":checked")) {
$("#public-info").show(); $("#public-info").show();
}else{ } else {
$("#public-info").hide(); $("#public-info").hide();
} }
}); });
if( promote.is(":checked")){ if (promote.is(":checked")) {
$("#public-info").show(); $("#public-info").show();
} }
$("#Privacy").live('click', function(){ $("#Privacy").live("click", function () {
var support = $("#SupportFeedback"); var support = $("#SupportFeedback");
var button = $("#help_airtime"); var button = $("#help_airtime");
if($(this).is(':checked') && support.is(':checked')){ if ($(this).is(":checked") && support.is(":checked")) {
button.removeAttr('disabled').removeClass('ui-state-disabled'); button.removeAttr("disabled").removeClass("ui-state-disabled");
}else{ } else {
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled'); button.attr("disabled", "disabled").addClass("ui-state-disabled");
} }
}); });
if($("#SupportFeedback").is(':checked') && ($("#Privacy").length == 0 || $("#Privacy").is(':checked'))){ if (
button.removeAttr('disabled').removeClass('ui-state-disabled'); $("#SupportFeedback").is(":checked") &&
}else{ ($("#Privacy").length == 0 || $("#Privacy").is(":checked"))
button.attr('disabled', 'disabled' ).addClass('ui-state-disabled'); ) {
button.removeAttr("disabled").removeClass("ui-state-disabled");
} else {
button.attr("disabled", "disabled").addClass("ui-state-disabled");
} }
$('.toggle legend').live('click',function() { $(".toggle legend").live("click", function () {
$('.toggle').toggleClass('closed'); $(".toggle").toggleClass("closed");
return false; return false;
}); });
$("#Logo").live('change', function(ev){ $("#Logo").live("change", function (ev) {
var content, res, logoEl; var content, res, logoEl;
content = $(this).val(); content = $(this).val();
@ -128,48 +134,44 @@ $(document).ready(function(){
if (!res) { if (!res) {
var ul, li; var ul, li;
ul = logoEl.find('.errors'); ul = logoEl.find(".errors");
li = $("<li/>").append($.i18n._("Image must be one of jpg, jpeg, png, or gif")); li = $("<li/>").append(
$.i18n._("Image must be one of jpg, jpeg, png, or gif")
);
//errors ul has already been created. //errors ul has already been created.
if (ul.length > 0) { if (ul.length > 0) {
ul.empty() ul.empty().append(li);
.append(li); } else {
} logoEl.append('<ul class="errors"></ul>').find(".errors").append(li);
else {
logoEl
.append('<ul class="errors"></ul>')
.find(".errors")
.append(li);
} }
$(this).val(""); $(this).val("");
} } else {
else {
logoEl.find(".errors").remove(); logoEl.find(".errors").remove();
} }
}); });
}); });
function resizeImg(ele, targetWidth, targetHeight){ function resizeImg(ele, targetWidth, targetHeight) {
var img = $(ele); var img = $(ele);
var width = ele.width; var width = ele.width;
var height = ele.height; var height = ele.height;
// resize img proportionaly // resize img proportionaly
if( width > height && width > targetWidth){ if (width > height && width > targetWidth) {
var ratio = targetWidth/width; var ratio = targetWidth / width;
img.css("width", targetHeight+"px"); img.css("width", targetHeight + "px");
var newHeight = height * ratio; var newHeight = height * ratio;
img.css("height", newHeight); img.css("height", newHeight);
}else if( width < height && height > targetHeight){ } else if (width < height && height > targetHeight) {
var ratio = targetHeight/height; var ratio = targetHeight / height;
img.css("height", targetHeight+"px"); img.css("height", targetHeight + "px");
var newWidth = width * ratio; var newWidth = width * ratio;
img.css("width", newWidth); img.css("width", newWidth);
}else if( width == height && width > targetWidth){ } else if (width == height && width > targetWidth) {
img.css("height", targetHeight+"px"); img.css("height", targetHeight + "px");
img.css("width", targetWidth+"px" ); img.css("width", targetWidth + "px");
} }
} }

View File

@ -1,19 +1,18 @@
function updateEmbedSrcParams() function updateEmbedSrcParams() {
{
var $embedCodeParams = "?"; var $embedCodeParams = "?";
var $streamMode = getStreamMode(); var $streamMode = getStreamMode();
if ($streamMode == "manual") { if ($streamMode == "manual") {
var $stream = $("input[name=player_stream_url]:radio:checked").val(); var $stream = $("input[name=player_stream_url]:radio:checked").val();
$embedCodeParams += "stream="+$stream; $embedCodeParams += "stream=" + $stream;
} else if ($streamMode == "auto") { } else if ($streamMode == "auto") {
$embedCodeParams += "stream=auto"; $embedCodeParams += "stream=auto";
} }
$embedCodeParams += "&title="+getPlayerTitle(); $embedCodeParams += "&title=" + getPlayerTitle();
$embedCodeParams += "\""; $embedCodeParams += '"';
$("textarea[name=player_embed_src]").val(function(index, value) { $("textarea[name=player_embed_src]").val(function (index, value) {
return value.replace(/\?.*?"/, $embedCodeParams); return value.replace(/\?.*?"/, $embedCodeParams);
}); });
@ -23,7 +22,7 @@ function updateEmbedSrcParams()
function updatePlayerIframeSrc(iframe_text) { function updatePlayerIframeSrc(iframe_text) {
var $player_iframe = $("#player_form iframe"); var $player_iframe = $("#player_form iframe");
var player_iframe_src = iframe_text.match(/http.*?"/)[0].slice(0, -1); var player_iframe_src = iframe_text.match(/http.*?"/)[0].slice(0, -1);
$player_iframe.attr('src', player_iframe_src); $player_iframe.attr("src", player_iframe_src);
} }
function getStreamMode() { function getStreamMode() {
@ -34,21 +33,19 @@ function getPlayerTitle() {
return $("input[name=player_title]").val(); return $("input[name=player_title]").val();
} }
$(document).ready(function() { $(document).ready(function () {
$("#player_stream_url-element").hide(); $("#player_stream_url-element").hide();
// stream mode change event // stream mode change event
$("#player_stream_mode-element").change(function() { $("#player_stream_mode-element").change(function () {
var $streamMode = getStreamMode(); var $streamMode = getStreamMode();
if ($streamMode == "auto") { if ($streamMode == "auto") {
$("#player_stream_url-element").hide(); $("#player_stream_url-element").hide();
} else if ($streamMode == "manual") { } else if ($streamMode == "manual") {
$("#player_stream_url-element").show(); $("#player_stream_url-element").show();
$("input[name=player_stream_url]").each(function(i, obj) { $("input[name=player_stream_url]").each(function (i, obj) {
if ($(this).parent().text().toLowerCase().indexOf("opus") >= 0) { if ($(this).parent().text().toLowerCase().indexOf("opus") >= 0) {
$(this).attr("disabled", "disabled"); $(this).attr("disabled", "disabled");
} }
@ -59,12 +56,12 @@ $(document).ready(function() {
}); });
// stream url change event // stream url change event
$("#player_stream_url-element").change(function() { $("#player_stream_url-element").change(function () {
updateEmbedSrcParams(); updateEmbedSrcParams();
}); });
// display title checkbox change event // display title checkbox change event
$("#player_display_title").change(function() { $("#player_display_title").change(function () {
if ($(this).prop("checked")) { if ($(this).prop("checked")) {
$("#player_title-label").show(); $("#player_title-label").show();
$("#player_title-element").show(); $("#player_title-element").show();
@ -81,13 +78,13 @@ $(document).ready(function() {
var doneTypingInterval = 3000; var doneTypingInterval = 3000;
// on keyup, start the countdown // on keyup, start the countdown
$("input[name=player_title]").keyup(function(){ $("input[name=player_title]").keyup(function () {
clearTimeout(typingTimer); clearTimeout(typingTimer);
typingTimer = setTimeout(updateEmbedSrcParams, doneTypingInterval); typingTimer = setTimeout(updateEmbedSrcParams, doneTypingInterval);
}); });
// on keydown, clear the countdown // on keydown, clear the countdown
$("input[name=player_title]").keydown(function(){ $("input[name=player_title]").keydown(function () {
clearTimeout(typingTimer); clearTimeout(typingTimer);
}); });
}); });

View File

@ -1,19 +1,37 @@
function getRandomIdPlayer(max) { function getRandomIdPlayer(max) {
return "playerHtml5Libretime_"+Math.floor(Math.random() * Math.floor(max)); return "playerHtml5Libretime_" + Math.floor(Math.random() * Math.floor(max));
} }
function playerhtml5_insert(settings) function playerhtml5_insert(settings) {
{ atp = "";
atp=''; if (settings.autoplay == true) atp = "autoplay";
if(settings.autoplay==true) atp='autoplay'; if (settings.forceHTTPS == true && settings.url.indexOf("https") == -1)
if(settings.forceHTTPS==true&&settings.url.indexOf('https')==-1) settings.url=settings.url.replace(/http/g, 'https'); settings.url = settings.url.replace(/http/g, "https");
if(settings.replacePort!=''&&settings.replacePort!=false&&settings.replacePort!='false') if (
{ settings.replacePort != "" &&
if(settings.replacePortTo!='') settings.replacePortTo=':'+settings.replacePortTo; settings.replacePort != false &&
settings.url=settings.url.replace(':'+settings.replacePort, settings.replacePortTo); settings.replacePort != "false"
} ) {
if(settings.codec=='mp3') settings.codec='mpeg'; if (settings.replacePortTo != "")
document.getElementById('html5player_skin').innerHTML += '<div id="div_'+settings.elementId+'" style="" ><audio loop controls id="'+settings.elementId+'" src="'+settings.url+'" '+atp+' type="audio/'+settings.codec+'" >' settings.replacePortTo = ":" + settings.replacePortTo;
+'Ihr Browser unterstützt das Element <code>audio</code> nicht.' settings.url = settings.url.replace(
+'<\/audio><\/div>'; ":" + settings.replacePort,
settings.replacePortTo
);
} }
if (settings.codec == "mp3") settings.codec = "mpeg";
document.getElementById("html5player_skin").innerHTML +=
'<div id="div_' +
settings.elementId +
'" style="" ><audio loop controls id="' +
settings.elementId +
'" src="' +
settings.url +
'" ' +
atp +
' type="audio/' +
settings.codec +
'" >' +
"Ihr Browser unterstützt das Element <code>audio</code> nicht." +
"</audio></div>";
}

File diff suppressed because it is too large Load Diff

Some files were not shown because too many files have changed in this diff Show More