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:
- id: prettier
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
rev: v2.34.0

View File

@ -21,7 +21,10 @@
$scs = $this->SourceConnectionStatus();
?>
<?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']
)) ?>
<?php $partial = array('menu.phtml', 'default');

View File

@ -1,28 +1,28 @@
<div id="jquery_jplayer_1" class="jp-jplayer"></div>
<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='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='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='audioMime' style="display: none;"><?php echo "$this->mime" ?></span>
<span class='audioFileTitle'><?php echo "$this->audioFileTitle" ?></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='showIndex'><?php echo "$this->showIndex" ?></span>
<?php endif;?>
<?php endif; ?>
<div class="jp-type-playlist">
<div class="jp-gui jp-interface">
<ul class="jp-controls">
<?php if ($this->type != "audioclip"): ?>
<?php if ($this->type != "audioclip") : ?>
<li class="ui-state-default ui-corner-all jp-previous">
<span class="ui-icon ui-icon-seek-prev" tabindex="1"><?php echo _("previous") ?></span>
</li>
<?php endif;?>
<?php endif; ?>
<li class="ui-state-default ui-corner-all jp-play">
<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>
</li>
<?php if ($this->type != "audioclip"): ?>
<?php if ($this->type != "audioclip") : ?>
<li class="ui-state-default ui-corner-all jp-next">
<span class="ui-icon ui-icon-seek-next" tabindex="1"><?php echo _("next") ?></span>
</li>
<?php endif;?>
<?php endif; ?>
<li class="ui-state-default ui-corner-all jp-stop">
<span class="ui-icon ui-icon-stop" tabindex="1"><?php echo _("stop") ?></span>
@ -50,9 +50,9 @@
</div>
<div class="jp-time-holder">
<div class="jp-current-time"></div>
<?php if ($this->type == "audioclip"): ?>
<?php if ($this->type == "audioclip") : ?>
<div class="jp-duration"></div>
<?php endif;?>
<?php endif; ?>
</div>
</div>
<div class="jp-volume-block">
@ -77,9 +77,11 @@
</div>
<div class="jp-no-solution">
<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>") ?>
"</a>"
) ?>
</div>
</div>
</div>

View File

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

View File

@ -1,24 +1,32 @@
<div class="text-content">
<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>
<li><h4><?php echo _("Upload audio tracks");?></h4>
<?php echo _("Click the 'Upload' button in the left corner to upload tracks to your library.")?></li>
<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>
<ol>
<li>
<h4><?php echo _("Upload audio tracks"); ?></h4>
<?php echo _("Click the 'Upload' button in the left corner to upload tracks to your library.") ?>
</li>
<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."); ?>
</li>
</ol>
<p><strong><?php echo _("Now you're good to go!")?></strong><br />
<?php
$userManualAnchorOpen = "<a href='" . USER_MANUAL_URL . "' target='_blank'>";
echo sprintf(_("For more detailed help, read the %suser manual%s."),
$userManualAnchorOpen, "</a>")
</ol>
<p><strong><?php echo _("Now you're good to go!") ?></strong><br />
<?php
$userManualAnchorOpen = "<a href='" . USER_MANUAL_URL . "' target='_blank'>";
echo sprintf(
_("For more detailed help, read the %suser manual%s."),
$userManualAnchorOpen,
"</a>"
)
?>
</p>
?>
</p>
</div>

View File

@ -1,42 +1,42 @@
<div id="content" class="jp-container">
<h1><?php echo _("Live stream") ?></h1>
<a id="popup-link" href="#"><?php echo _("Share") ?></a>
<?php $ids = Application_Model_StreamSetting::getEnabledStreamIds(); ?>
<script>
function setjPlayer(url, type, serverType){
<h1><?php echo _("Live stream") ?></h1>
<a id="popup-link" href="#"><?php echo _("Share") ?></a>
<?php $ids = Application_Model_StreamSetting::getEnabledStreamIds(); ?>
<script>
function setjPlayer(url, type, serverType) {
var obj = new Object();
obj[type] = url;
if(serverType == 'shoutcast'){
if (serverType == 'shoutcast') {
obj[type] = url + ";stream/1";
}
$("#jquery_jplayer_1").jPlayer("destroy");
$("#jquery_jplayer_1").jPlayer({
ready: function () {
ready: function() {
$(this).jPlayer("setMedia", obj).jPlayer("play");
},
ended: function (event) {
ended: function(event) {
$(this).jPlayer("play");
},
swfPath: "/js/jplayer/",
supplied: type,
wmode: "window"
});
}
}
$(document).ready(function(){
$(document).ready(function() {
$("#combo-box").change(function(eventObject){
$("#combo-box").change(function(eventObject) {
var elem = $("#combo-box option:selected");
setjPlayer(elem.attr("data-url"), elem.attr("data-type"), elem.attr("server-type"));
});
<?php
if (count($ids) > 0){
if (count($ids) > 0) {
$id = $ids[0];
$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"];
$serverType = $streamData["${id}_output"];
if ($type == "ogg")
@ -53,12 +53,12 @@ $(document).ready(function(){
$("#popup-close").click(function() {
$("#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 id="popup-share">
<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 class="jp-stream stream-player-label">
<div class="jp-stream-text"><?php echo _("Select stream:"); ?></div>
@ -66,15 +66,15 @@ $(document).ready(function(){
<form id="form1" method="post" action="">
<select id="combo-box">
<?php
foreach($ids as $id) {
foreach ($ids as $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"];
$serverType = $streamData["${id}_output"];
if ($type == "ogg")
$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);
}
?>
@ -83,7 +83,7 @@ $(document).ready(function(){
</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 id="jp_interface_1" class="jp-gui jp-interface">
<ul class="jp-controls">
@ -96,4 +96,4 @@ $(document).ready(function(){
</div>
<div id="jp_playlist_1" class="jp-playlist"></div>
</div>
</div>
</div>

View File

@ -2,11 +2,11 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<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->jquery?>" type="text/javascript"></script>
<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->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>
<link href='https://fonts.googleapis.com/css?family=Roboto:400,100,300,700' rel='stylesheet' type='text/css'>
<script type="text/javascript">
@ -15,7 +15,7 @@
var MAX_MOBILE_SCREEN_WIDTH = 760;
var Html5Player = function() {
var id_element=getRandomIdPlayer(3000);
var id_element = getRandomIdPlayer(3000);
this.mobileDetect = this.mobileDetect();
this.playerMode = "<?php echo $this->playerMode ?>";
this.settings = {
@ -33,8 +33,8 @@
this.settings.url = <?php echo $this->streamURL ?>;
this.settings.codec = "<?php echo $this->codec ?>";
} else if (this.playerMode == "auto") {
this.availableMobileStreamQueue = <?php echo $this->availableMobileStreams?>;
this.availableDesktopStreamQueue = <?php echo $this->availableDesktopStreams?>;
this.availableMobileStreamQueue = <?php echo $this->availableMobileStreams ?>;
this.availableDesktopStreamQueue = <?php echo $this->availableDesktopStreams ?>;
var stream = this.getNextAvailableStream();
this.settings.url = stream["url"];
this.settings.codec = stream["codec"];
@ -43,10 +43,10 @@
// Create the Muses player object
playerhtml5_insert(this.settings);
playerhtml5_audio = document.getElementById(id_element);
if(playerhtml5_audio.played==true) togglePlayStopButton();
if (playerhtml5_audio.played == true) togglePlayStopButton();
// Configure player title
var player_title = <?php echo $this->player_title?>;
var player_title = <?php echo $this->player_title ?>;
if (player_title === null) {
$(".airtime_header").hide();
$(".airtime_player").css('height', '150px');
@ -119,13 +119,14 @@
playerhtml5_audio.pause();
togglePlayStopButton();
};
function togglePlayStopButton() {
document.getElementById("play_button").classList.toggle("hide_button");
document.getElementById("stop_button").classList.toggle("hide_button");
}
$(document).ready(function() {
$(".play").click(function () {
$(".play").click(function() {
if ($(this).hasClass("pause")) {
html5Player.stop();
} else {
@ -144,9 +145,13 @@
// and attaches it to the player UI.
//
// The metadata is fetched when the current track is about to end.
function attachStreamMetadataToPlayer(){
$.ajax({url: "<?php echo $this->metadata_api_url?>",
data: {type:"interval",limit:"5"},
function attachStreamMetadataToPlayer() {
$.ajax({
url: "<?php echo $this->metadata_api_url ?>",
data: {
type: "interval",
limit: "5"
},
dataType: "jsonp",
success: function(data) {
@ -155,7 +160,7 @@
//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>");
} 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;
} else {
@ -197,12 +202,10 @@
}
// 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>
<style type="text/css">
@ -212,14 +215,19 @@
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.
*/
#html5player_skin{width:0; height:0; overflow: hidden;}
#html5player_skin {
width: 0;
height: 0;
overflow: hidden;
}
</style>
</head>
<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_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>
</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="play cont_btn"></div>
@ -258,13 +267,14 @@
</div>
</div>
</div>
</div>
<div id="html5player_skin">
<div id="html5player_skin">
<script type="text/javascript">
var html5Player = new Html5Player();
</script>
</div>
</div>
</body>
</html>

View File

@ -2,14 +2,14 @@
<html xmlns="http://www.w3.org/1999/xhtml">
<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>
<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>
</head>
<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">
<ul class="tabs">
{{#each this}}
@ -40,9 +40,9 @@
<a href="<?php echo PRODUCT_SITE_URL; ?>" target="_blank"><?php printf(_('Powered by %s'), PRODUCT_NAME); ?></a>
</div>
</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 cleanSchedule = [];
@ -50,16 +50,21 @@
let importShows = importSchedule["shows"];
importShows.forEach(element => {
// Convert timestamps to JS (sec -> millisec)
var start_date = new Date(element.starts_timestamp*1000);
var end_date = new Date(element.ends_timestamp*1000);
var start_date = new Date(element.starts_timestamp * 1000);
var end_date = new Date(element.ends_timestamp * 1000);
// 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
if (importSchedule["weekDays"][format_start_date] !== undefined) {
importSchedule["weekDays"][format_start_date]["shows"].push(
{
"show_start_hour": start_date.toLocaleTimeString([], { hour: 'numeric', minute : 'numeric' }),
"show_end_hour": end_date.toLocaleTimeString([], { hour: 'numeric', minute : 'numeric' }),
importSchedule["weekDays"][format_start_date]["shows"].push({
"show_start_hour": start_date.toLocaleTimeString([], {
hour: 'numeric',
minute: 'numeric'
}),
"show_end_hour": end_date.toLocaleTimeString([], {
hour: 'numeric',
minute: 'numeric'
}),
"name": element.name
});
}
@ -71,7 +76,7 @@
}
// Checker
Handlebars.registerHelper('noShowsCheck', function(obj){
Handlebars.registerHelper('noShowsCheck', function(obj) {
return obj.length == 0;
});
@ -87,18 +92,18 @@
$('.tabs').find("li").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 = "day-"+$(this).find('span').text();
var tab_id = "day-" + $(this).find('span').text();
$('.tabs li').removeClass('active');
$('.schedule_item').removeClass('active');
$(this).addClass('active');
$("#"+tab_id).addClass('active');
$("#" + tab_id).addClass('active');
});
});
</script>
</script>
</body>
</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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?>
</head>
<body>
<div class="error-content" id="error-400">
<h2><?php echo _("Bad Request!")?></h2>
<p><?php echo _("The requested action is not supported!")?></p>
<h2><?php echo _("Bad Request!") ?></h2>
<p><?php echo _("The requested action is not supported!") ?></p>
<div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div>
</div>
</body>
</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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?>
</head>
<body>
<div class="error-content" id="error-403">
<h2><?php echo _("Access Denied!")?></h2>
<p><?php echo _("You do not have permission to access this page!")?></p>
<h2><?php echo _("Access Denied!") ?></h2>
<p><?php echo _("You do not have permission to access this page!") ?></p>
<div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div>
</div>
</body>
</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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?>
</head>
<body>
<div class="error-content" id="error-404">
<h2><?php echo _("Page not found!")?></h2>
<p><?php echo _("We couldn't find the page you were looking for.")?></p>
<h2><?php echo _("Page not found!") ?></h2>
<p><?php echo _("We couldn't find the page you were looking for.") ?></p>
<div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div>
</div>
</body>
</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">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?>
</head>
<body>
<div class="error-content" id="error-500">
<h2><?php echo _("Oops!")?></h2>
<p><?php echo _("Something went wrong!")?></p>
<h2><?php echo _("Oops!") ?></h2>
<p><?php echo _("Something went wrong!") ?></p>
<div class="button-bar">
<a class="toggle-button" href="<?php echo $this->helpUrl; ?>"><?php echo _("Help") ?></a>
</div>
</div>
</body>
</html>

View File

@ -1,18 +1,20 @@
<!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">
<!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">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title><?php echo _("An error has occurred.") ?></title>
<?php echo $this->headLink(); ?>
</head>
<body>
<div class="error-content">
<h2><?php echo $this->escape($this->message)?></h2>
<p><?php echo _("Looks like the page you were looking for doesn't exist!")?></p>
<h2><?php echo $this->escape($this->message) ?></h2>
<p><?php echo _("Looks like the page you were looking for doesn't exist!") ?></p>
<div class="button-bar">
<a class="toggle-button" href="<?php echo $this->baseUrl('dashboard/help'); ?>"><?php echo _("Help") ?></a>
</div>
</div>
</body>
</html>

View File

@ -2,7 +2,7 @@
<dl>
<dt id="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>
</dt>
<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>
<dt id="add_show_autoplaylist_id">
<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>
</dt>
<dd>
@ -23,7 +23,7 @@
<div id="add_show_autoplaylist_repeat">
<dt id="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>
</dt>
<dd>

View File

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

View File

@ -5,29 +5,33 @@
</dt>
<dd id="add_show_rebroadcast_day-element" class="block-display clearfix">
<ul class="formrow-repeat">
<?php for($i=1; $i<=10; $i++): ?>
<li <?php if(($i > 1)
&& ($this->element->getElement('add_show_rebroadcast_date_absolute_'.$i)->getValue() == ""
&& $this->element->getElement('add_show_rebroadcast_time_absolute_'.$i)->getValue() == "")){echo 'style=display:none';} ?>>
<?php echo $this->element->getElement('add_show_rebroadcast_date_absolute_'.$i) ?>
<?php for ($i = 1; $i <= 10; $i++) : ?>
<li <?php if (($i > 1)
&& ($this->element->getElement('add_show_rebroadcast_date_absolute_' . $i)->getValue() == ""
&& $this->element->getElement('add_show_rebroadcast_time_absolute_' . $i)->getValue() == "")
) {
echo 'style=display:none';
} ?>>
<?php echo $this->element->getElement('add_show_rebroadcast_date_absolute_' . $i) ?>
<span class="inline-text">@</span>
<?php echo $this->element->getElement('add_show_rebroadcast_time_absolute_'.$i) ?>
<?php if($i > 1): ?>
<?php echo $this->element->getElement('add_show_rebroadcast_time_absolute_' . $i) ?>
<?php if ($i > 1) : ?>
<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-button-text"><?php echo _("Remove") ?></span>
</a>
<?php endif; ?>
<?php if(($this->element->getElement('add_show_rebroadcast_date_absolute_'.$i)->hasErrors())
|| ($this->element->getElement('add_show_rebroadcast_time_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())
) : ?>
<ul class='errors'>
<?php $errors = array_merge(
$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_date_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>
<?php endforeach; ?>
</ul>

View File

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

View File

@ -1,6 +1,8 @@
<dt id="<?php echo $this->element->getName() ?>-label" class="<?php echo $this->class ?>">
<?php echo $this->formLabel($this->element->getName(),
$this->element->getLabel()) ?>
<?php echo $this->formLabel(
$this->element->getName(),
$this->element->getLabel()
) ?>
</dt>
<dd id="<?php echo $this->element->getName() ?>-element">
<?php echo $this->{$this->element->helper}(
@ -9,5 +11,7 @@
$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>

View File

@ -2,7 +2,7 @@
<dl>
<dt id="add_show_start_now-label">
<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>
</dt>
<dd>
@ -12,19 +12,20 @@
<dt id="add_show_start_date-label">
<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>
</dt>
<dd>
<?php echo $this->element->getElement('add_show_start_date') ?>
<?php echo $this->element->getElement('add_show_start_time') ?>
</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'>
<?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>
<?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>
<?php endforeach; ?>
</ul>
@ -34,7 +35,7 @@
<dt id="add_show_end_date_no_repeat-label">
<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>
</dt>
@ -42,12 +43,12 @@
<?php echo $this->element->getElement('add_show_end_date_no_repeat') ?>
<?php echo $this->element->getElement('add_show_end_time') ?>
</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'>
<?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>
<?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>
<?php endforeach; ?>
</ul>
@ -59,11 +60,11 @@
</dt>
<dd id="add_show_duration-element">
<?php echo $this->element->getElement('add_show_duration') ?>
<img id="icon-loader-small"/>
<img id="icon-loader-small" />
</dd>
<?php if($this->element->getElement('add_show_duration')->hasErrors()){ ?>
<?php if ($this->element->getElement('add_show_duration')->hasErrors()) { ?>
<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>
<?php endforeach; ?>
</ul>

View File

@ -3,7 +3,7 @@
<?php echo $this->element->getElement('his_time_start') ?>
<?php echo $this->element->getElement('his_date_end') ?>
<?php echo $this->element->getElement('his_time_end') ?>
<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>
<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>
</div>
</div>

View File

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

View File

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

View File

@ -1,7 +1,7 @@
<h2><?php echo _("My Profile") ?></h2>
<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">
<?php echo $this->element->getElement('cu_user_id') ?>
<dt id="cu-username-label">
@ -10,9 +10,9 @@
</dt>
<dd id="cu-username-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -24,9 +24,9 @@
</dt>
<dd id="cu-password-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -38,9 +38,9 @@
</dt>
<dd id="cu-passwordVerify-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -52,9 +52,9 @@
</dt>
<dd id="cu-firstname-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -66,9 +66,9 @@
</dt>
<dd id="cu-lastname-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -80,9 +80,9 @@
</dt>
<dd id="cu-email-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -94,9 +94,9 @@
</dt>
<dd id="cu-cell_phone-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -108,9 +108,9 @@
</dt>
<dd id="cu-skype-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -122,9 +122,9 @@
</dt>
<dd id="cu-jabber-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -136,9 +136,9 @@
</dt>
<dd id="cu-locale-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -150,9 +150,9 @@
</dt>
<dd id="cu-timezone-element">
<?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'>
<?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>
<?php endforeach; ?>
</ul>
@ -160,6 +160,6 @@
</dd>
<?php echo $this->element->getElement('csrf') ?>
</dl>
<button type="submit" id="cu_save_user" class="btn right-floated"><?php echo _("Save")?></button>
</form>
<button type="submit" id="cu_save_user" class="btn right-floated"><?php echo _("Save") ?></button>
</form>
</div>

View File

@ -8,9 +8,9 @@
<dd id="new-password-element">
<?php echo $this->element->getElement('password') ?>
</dd>
<?php if($this->element->getElement('password')->hasErrors()): ?>
<?php if ($this->element->getElement('password')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
@ -24,9 +24,9 @@
<dd id="confirm-password-element">
<?php echo $this->element->getElement('password_confirm') ?>
</dd>
<?php if($this->element->getElement('password_confirm')->hasErrors()): ?>
<?php if ($this->element->getElement('password_confirm')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>

View File

@ -2,7 +2,7 @@
<form enctype="application/x-www-form-urlencoded" method="post" action="">
<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">
<label for="username" class="required">
<?php echo $this->element->getElement('username')->getLabel() ?>
@ -21,9 +21,9 @@
<dd id="email-element">
<?php echo $this->element->getElement('email') ?>
</dd>
<?php if ($this->element->getElement('email')->hasErrors()): ?>
<?php if ($this->element->getElement('email')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
@ -36,8 +36,8 @@
<dd id="cancel-element">
<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>
<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>
</a>
</dd>
</dl>

View File

@ -1,19 +1,15 @@
<style type="text/css">
.player-title {
.player-title {
width: 70px;
border-style: none
float: left;
border-style: none float: left;
}
.preview-label {
.preview-label {
line-height: 60px;
border-style: none
float: left;
border-style: none float: left;
font-size: 20px;
color: #fff
}
</style>
<fieldset class="padded">
<dl class="zend_form">
@ -38,7 +34,8 @@
<?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;">
<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() ?>
<!-- <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">
<?php
$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 ?>" />
</div>

View File

@ -1,7 +1,7 @@
<fieldset class="padded">
<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();
}
?>

View File

@ -6,17 +6,18 @@
</dt>
<dd id="storageFolder-element" class="block-display">
<?php echo $this->element->getElement('storageFolder') ?>
<input id="storageFolder-selection" type="button" value="<?php echo _("Choose folder")?>"></input>
<input id="storageFolder-ok" type="button" value="<?php echo _("Set")?>"></input>
<?php if($this->element->getElement('storageFolder')->hasErrors()) : ?>
<input id="storageFolder-selection" type="button" value="<?php echo _("Choose folder") ?>"></input>
<input id="storageFolder-ok" type="button" value="<?php echo _("Set") ?>"></input>
<?php if ($this->element->getElement('storageFolder')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</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">
<label class="required" for="watchedFolder"><?php echo $this->element->getElement('watchedFolder')->getLabel() ?></label>
@ -24,11 +25,11 @@
</dt>
<dd id="watchedFolder-element" class="block-display">
<?php echo $this->element->getElement('watchedFolder') ?>
<input id="watchedFolder-selection" type="button" value="<?php echo _("Choose folder")?>"></input>
<input id="watchedFolder-ok" type="button" value="<?php echo _("Add")?>"></input>
<?php if($this->element->getElement('watchedFolder')->hasErrors()) : ?>
<input id="watchedFolder-selection" type="button" value="<?php echo _("Choose folder") ?>"></input>
<input id="watchedFolder-ok" type="button" value="<?php echo _("Add") ?>"></input>
<?php if ($this->element->getElement('watchedFolder')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
@ -36,15 +37,15 @@
</dd>
<?php $watched_dirs = Application_Model_MusicDir::getWatchedDirs(null, true); ?>
<?php if (count($watched_dirs) > 0): ?>
<?php foreach($watched_dirs as $watched_dir): ?>
<?php if (count($watched_dirs) > 0) : ?>
<?php foreach ($watched_dirs as $watched_dir) : ?>
<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>
<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>
<?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 _("Remove watched directory") ?>" class="ui-icon ui-icon-close"></span>
</dd>
<?php endforeach; ?>
<?php else: ?>
<?php else : ?>
<dd class="block-display selected-item">
<span><?php echo _("You are not watching any media folders."); ?></span>
</dd>

View File

@ -9,7 +9,7 @@
<?php echo $this->element->getElement('setup_timezone')->render(); ?>
</dl>
</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>
</div>

View File

@ -9,8 +9,13 @@
<?php echo $this->element->getElement('sb_show_filter') ?>
<!-- --><?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'); ?>
<!-- --><?php //endif;?>
<!-- --><?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');
?>
<!-- --><?php //endif;
?>
</div>

View File

@ -1,7 +1,7 @@
<form class="smart-block-form" method="post" action="">
<dl class='zend_form search-criteria'>
<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'>
<?php for ($i = 0; $i < $this->criteriasLength; $i++) {
// modRowMap holds the number of modifier rows for each criteria element
@ -10,46 +10,47 @@
?>
<?php for ($j = 0; $j < $this->modRowMap[$i]; $j++) {
// 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');
$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
if ($j == $this->modRowMap[$i]-1 && $i < 25) {
$n = $i+1;
$nextIndex = $n."_0";
} elseif ($j+1 <= $this->modRowMap[$i]-1) {
$n = $j+1;
$nextIndex = $i."_".$n;
if ($j == $this->modRowMap[$i] - 1 && $i < 25) {
$n = $i + 1;
$nextIndex = $n . "_0";
} elseif ($j + 1 <= $this->modRowMap[$i] - 1) {
$n = $j + 1;
$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"';
}?> class="search-row-<?php echo $logicLabel ?>">
<?php echo $this->element->getElement("sp_criteria_field_".$i."_".$j) ?>
<?php echo $this->element->getElement("sp_criteria_modifier_".$i."_".$j) /* @todo finish this */?>
} ?> class="search-row-<?php echo $logicLabel ?>">
<?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_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>
<?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>
<a <?php if ($disabled) { echo 'style=display:none'; } ?> class='modifier_add_link' id='modifier_add_<?php echo $i ?>'>
+ <?php echo(_("New Modifier")); ?>
<a <?php if ($disabled) {
echo 'style=display:none';
} ?> class='modifier_add_link' id='modifier_add_<?php echo $i ?>'>
+ <?php echo (_("New Modifier")); ?>
</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_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_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>
<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>
</a>
<span class='db-logic-label' <?php if ($nextDisabled) echo 'style="display:none"';?>>
<?php echo $logicLabel;?>
<span class='db-logic-label' <?php if ($nextDisabled) echo 'style="display:none"'; ?>>
<?php echo $logicLabel; ?>
</span>
<?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 if ($this->element->getElement("sp_criteria_field_" . $i . "_" . $j)->hasErrors()) : ?>
<?php foreach ($this->element->getElement("sp_criteria_field_" . $i . "_" . $j)->getMessages() as $error) : ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
@ -59,7 +60,7 @@
<?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>
</dl>
<dl>
@ -67,10 +68,10 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_limit_value')->getLabel() ?></label>
</dt>
<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 if($this->element->getElement("sp_limit_value")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_limit_value")->getMessages() as $error): ?>
<?php if ($this->element->getElement("sp_limit_value")->hasErrors()) : ?>
<?php foreach ($this->element->getElement("sp_limit_value")->getMessages() as $error) : ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
@ -88,12 +89,14 @@
</label>
</dt>
<dd id='sp_type-element'>
<?php $i=0;
<?php $i = 0;
$value = $this->element->getElement('sp_type')->getValue();
foreach ($this->element->getElement('sp_type')->getMultiOptions() as $radio) : ?>
<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 ?>
<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 ?>
</label>
<?php $i = $i + 1; ?>
<?php endforeach; ?>
@ -105,9 +108,9 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_repeat_tracks')->getLabel() ?></label>
</dt>
<dd id='sp_repeat_tracks-element'>
<?php echo $this->element->getElement('sp_repeat_tracks')?>
<?php if($this->element->getElement("sp_repeat_tracks")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_repeat_tracks")->getMessages() as $error): ?>
<?php echo $this->element->getElement('sp_repeat_tracks') ?>
<?php if ($this->element->getElement("sp_repeat_tracks")->hasErrors()) : ?>
<?php foreach ($this->element->getElement("sp_repeat_tracks")->getMessages() as $error) : ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
@ -121,9 +124,9 @@
<label class='sp_text_font'><?php echo $this->element->getElement('sp_overflow_tracks')->getLabel() ?></label>
</dt>
<dd id='sp_overflow_tracks-element'>
<?php echo $this->element->getElement('sp_overflow_tracks')?>
<?php if($this->element->getElement("sp_overflow_tracks")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_overflow_tracks")->getMessages() as $error): ?>
<?php echo $this->element->getElement('sp_overflow_tracks') ?>
<?php if ($this->element->getElement("sp_overflow_tracks")->hasErrors()) : ?>
<?php foreach ($this->element->getElement("sp_overflow_tracks")->getMessages() as $error) : ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>
@ -134,12 +137,12 @@
</dl>
<dl>
<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>
<dd id='sp_sort-element'>
<?php echo $this->element->getElement('sp_sort_options') ?>
<?php if($this->element->getElement("sp_sort_options")->hasErrors()) : ?>
<?php foreach($this->element->getElement("sp_sort_options")->getMessages() as $error): ?>
<?php if ($this->element->getElement("sp_sort_options")->hasErrors()) : ?>
<?php foreach ($this->element->getElement("sp_sort_options")->getMessages() as $error) : ?>
<span class='errors sp-errors'>
<?php echo $error; ?>
</span>

View File

@ -1,209 +1,209 @@
<?php
$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>
<div class="stream-setting-content" <?php echo $this->enabled == 0?'style="display: none;':''?> id="<?php echo $s_name?>-config">
<?php
$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>
<div class="stream-setting-content" <?php echo $this->enabled == 0 ? 'style="display: none;' : '' ?> id="<?php echo $s_name ?>-config">
<fieldset class="padded">
<dl class="zend_form clearfix">
<dd id="<?php echo $s_name?>Liquidsoap-error-msg-element" class="liquidsoap_status">
<?php echo $this->liquidsoap_error_msg?>
<dd id="<?php echo $s_name ?>Liquidsoap-error-msg-element" class="liquidsoap_status">
<?php echo $this->liquidsoap_error_msg ?>
</dd>
<dt id="<?php echo $s_name?>Enabled-label">
<label for="<?php echo $s_name?>Enabled"><?php echo $this->element->getElement('enable')->getLabel() ?></label>
<dt id="<?php echo $s_name ?>Enabled-label">
<label for="<?php echo $s_name ?>Enabled"><?php echo $this->element->getElement('enable')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Enabled-element">
<?php echo $this->element->getElement('enable')?>
<dd id="<?php echo $s_name ?>Enabled-element">
<?php echo $this->element->getElement('enable') ?>
</dd>
<dt id="<?php echo $s_name?>Mobile-label">
<label for="<?php echo $s_name?>Mobile"><?php echo $this->element->getElement('mobile')->getLabel() ?></label>
<dt id="<?php echo $s_name ?>Mobile-label">
<label for="<?php echo $s_name ?>Mobile"><?php echo $this->element->getElement('mobile')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Mobile-element">
<?php echo $this->element->getElement('mobile')?>
<dd id="<?php echo $s_name ?>Mobile-element">
<?php echo $this->element->getElement('mobile') ?>
</dd>
<dt id="<?php echo $s_name?>Type-label">
<label for="<?php echo $s_name?>Type"><?php echo $this->element->getElement('type')->getLabel()?></label>
<dt id="<?php echo $s_name ?>Type-label">
<label for="<?php echo $s_name ?>Type"><?php echo $this->element->getElement('type')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Type-element">
<?php echo $this->element->getElement('type')?>
<dd id="<?php echo $s_name ?>Type-element">
<?php echo $this->element->getElement('type') ?>
<span class='stream_type_help_icon'></span>
</dd>
<dt id="<?php echo $s_name?>Bitrate-label">
<label for="<?php echo $s_name?>Bitrate"><?php echo $this->element->getElement('bitrate')->getLabel()?></label>
<dt id="<?php echo $s_name ?>Bitrate-label">
<label for="<?php echo $s_name ?>Bitrate"><?php echo $this->element->getElement('bitrate')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Bitrate-element">
<?php echo $this->element->getElement('bitrate')?>
<dd id="<?php echo $s_name ?>Bitrate-element">
<?php echo $this->element->getElement('bitrate') ?>
</dd>
<dt id="outputServer-label">
<label for="outputServer"><?php echo $this->element->getElement('host')->getLabel()?><span class="info-text-small">
<?php echo _("(Required)")?></span> :</label>
<label for="outputServer"><?php echo $this->element->getElement('host')->getLabel() ?><span class="info-text-small">
<?php echo _("(Required)") ?></span> :</label>
</dt>
<dd id="outputServer-element">
<?php echo $this->element->getElement('host')?>
<?php if($this->element->getElement('host')->hasErrors()) : ?>
<?php echo $this->element->getElement('host') ?>
<?php if ($this->element->getElement('host')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="outputPort-label">
<label for="outputPort"><?php echo $this->element->getElement('port')->getLabel()?><span class="info-text-small">
<?php echo _("(Required)")?></span> :</label>
<label for="outputPort"><?php echo $this->element->getElement('port')->getLabel() ?><span class="info-text-small">
<?php echo _("(Required)") ?></span> :</label>
</dt>
<dd id="outputPort-element">
<?php echo $this->element->getElement('port')?>
<?php if($this->element->getElement('port')->hasErrors()) : ?>
<?php echo $this->element->getElement('port') ?>
<?php if ($this->element->getElement('port')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<dt id="<?php echo $s_name?>Output-label">
<label for="<?php echo $s_name?>Output"><?php echo $this->element->getElement('output')->getLabel()?></label>
<dt id="<?php echo $s_name ?>Output-label">
<label for="<?php echo $s_name ?>Output"><?php echo $this->element->getElement('output')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Output-element">
<?php echo $this->element->getElement('output')?>
<dd id="<?php echo $s_name ?>Output-element">
<?php echo $this->element->getElement('output') ?>
</dd>
<dt id="<?php echo $s_name?>Channels-label">
<label for="<?php echo $s_name?>Channels"><?php echo $this->element->getElement('channels')->getLabel()?></label>
<dt id="<?php echo $s_name ?>Channels-label">
<label for="<?php echo $s_name ?>Channels"><?php echo $this->element->getElement('channels')->getLabel() ?></label>
</dt>
<dd id="<?php echo $s_name?>Channels-element">
<?php echo $this->element->getElement('channels')?>
<dd id="<?php echo $s_name ?>Channels-element">
<?php echo $this->element->getElement('channels') ?>
</dd>
<fieldset class="padded top-margin display_field toggle closed" id="output_setting">
<legend style="cursor: pointer;">
<span class="ui-icon ui-icon-triangle-2-n-s"></span>
<?php echo _("Additional Options")?>
<?php echo _("Additional Options") ?>
</legend>
<dl class="zend_form">
<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>
</label>
</dt>
<dd id="outputUser-element">
<?php echo $this->element->getElement('user')?>
<?php if($this->element->getElement('user')->hasErrors()) : ?>
<?php echo $this->element->getElement('user') ?>
<?php if ($this->element->getElement('user')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="outputPassword-element" class="clearfix">
<?php echo $this->element->getElement('pass')?>
<?php if($this->element->getElement('pass')->hasErrors()) : ?>
<?php echo $this->element->getElement('pass') ?>
<?php if ($this->element->getElement('pass')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
</label>
</dt>
<dd id="adminUser-element">
<?php echo $this->element->getElement('admin_user')?>
<?php if($this->element->getElement('admin_user')->hasErrors()) : ?>
<?php echo $this->element->getElement('admin_user') ?>
<?php if ($this->element->getElement('admin_user')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="adminPassword-element" class="clearfix">
<?php echo $this->element->getElement('admin_pass')?>
<?php if($this->element->getElement('admin_pass')->hasErrors()) : ?>
<?php echo $this->element->getElement('admin_pass') ?>
<?php if ($this->element->getElement('admin_pass')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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 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>
<dd id="stationName-element" class="clearfix">
<?php echo $this->element->getElement('name')?>
<?php if($this->element->getElement('name')->hasErrors()) : ?>
<?php echo $this->element->getElement('name') ?>
<?php if ($this->element->getElement('name')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="stationDescription-element" class="clearfix">
<?php echo $this->element->getElement('description')?>
<?php if($this->element->getElement('description')->hasErrors()) : ?>
<?php echo $this->element->getElement('description') ?>
<?php if ($this->element->getElement('description')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="stationURL-element" class="clearfix">
<?php echo $this->element->getElement('url')?>
<span class="info-text-small"><?php echo _("(Your radio station website)")?></span>
<?php if($this->element->getElement('url')->hasErrors()) : ?>
<?php echo $this->element->getElement('url') ?>
<span class="info-text-small"><?php echo _("(Your radio station website)") ?></span>
<?php if ($this->element->getElement('url')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="outputGenre-element">
<?php echo $this->element->getElement('genre')?>
<?php if($this->element->getElement('genre')->hasErrors()) : ?>
<?php echo $this->element->getElement('genre') ?>
<?php if ($this->element->getElement('genre')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
<?php endif; ?>
</dd>
<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>
<dd id="outputMountpoint-element">
<?php echo $this->element->getElement('mount')?>
<?php if($this->element->getElement('mount')->hasErrors()) : ?>
<?php echo $this->element->getElement('mount') ?>
<?php if ($this->element->getElement('mount')->hasErrors()) : ?>
<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>
<?php endforeach; ?>
</ul>
@ -219,4 +219,4 @@
</dd>
</dl>
</fieldset>
</div>
</div>

View File

@ -1,16 +1,16 @@
<script language="JavaScript">
function autoResize(id){
function autoResize(id) {
var newheight;
var newwidth;
if(document.getElementById){
newheight=document.getElementById(id).contentWindow.document.body.scrollHeight;
if (document.getElementById) {
newheight = document.getElementById(id).contentWindow.document.body.scrollHeight;
// Hack to get height in Firefox
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).width= (newwidth) + "px";
document.getElementById(id).height = (newheight) + "px";
document.getElementById(id).width = (newwidth) + "px";
}
</script>
@ -19,12 +19,12 @@
<div class="bck_cover"></div>
<?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 {
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'>
<a href='/login' target='_parent'>
<span><?php echo _('Login'); ?></span>
@ -53,7 +53,7 @@
</div>
<?php
if ($this->displayRssTab) {?>
if ($this->displayRssTab) { ?>
<div id="tab-4" class="podcast tab_content">
<div class="rss-title-wrapper">
<div id="rss-subscribe">
@ -75,14 +75,14 @@
<div class="playbar playbar-buttons">
<ul class="jp-controls rss-buttons">
<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 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 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>
</ul>
</div>
@ -102,16 +102,16 @@
<div class="playbar playbar-progress">
<div class="jp-volume-block">
<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 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 class="jp-volume-bar">
<div class="jp-volume-bar-value"></div>
</div>
<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>
@ -133,12 +133,13 @@
<script type="text/javascript">
var playlist;
function buildJplayerPlaylist(page, data) {
playlist = new Array();
var media;
$('.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;
media = {
title: value.CcFiles.track_title,
@ -157,12 +158,12 @@
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_no_link = "<div class='podcast_title'>"+value.CcFiles.track_title+"</div>";
var playlist_metadata = "<span class='podcast_date'>"+value.publication_date+"</span>" +
"<span class='podcast_length'>"+value.CcFiles.length+"</span>" +
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 playlist_metadata = "<span class='podcast_date'>" + value.publication_date + "</span>" +
"<span class='podcast_length'>" + value.CcFiles.length + "</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) {
playlist.push(media);
@ -171,9 +172,9 @@
playlist_item += podcast_title_link + playlist_metadata;
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_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>";
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_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 {
// 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'>";
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_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);
@ -196,7 +197,7 @@
// 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
// 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
_playlist_jplayer.play(0);
$("#jquery_jplayer_1").jPlayer("stop");
@ -211,7 +212,7 @@
return false;
});
$('.podcast_desc_btn').click(function(){
$('.podcast_desc_btn').click(function() {
$(this).toggleClass('current');
$(this).next('.podcast_desc').slideToggle();
});
@ -221,7 +222,7 @@
_playlist_jplayer = new jPlayerPlaylist({
jPlayer: "#jquery_jplayer_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",
supplied: "oga, mp3, m4v, m4a, wav",
@ -240,7 +241,7 @@
removeTime: 0,
shuffleTime: 0
},
ready: function () {
ready: function() {
var episodes = <?php echo $this->episodes ?>;
var empty_podcast_message = "<?php echo $this->emptyPodcastMessage ?>";
@ -252,14 +253,14 @@
// 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;
$('.current-track span').html(playlist[current].title);
});
// build pagination menu
var pages = "<li data-page-index='0'><</li>";
$.each(episodes, function (index, value) {
$.each(episodes, function(index, value) {
var page_number = +index + 1;
pages += "<li data-page-index='" + index + "'>" + page_number + "</li>";
});
@ -269,7 +270,7 @@
$("ul.pagination").find("li:contains('1')").addClass('current');
// pagination click
$("ul.pagination li").click(function () {
$("ul.pagination li").click(function() {
buildJplayerPlaylist($(this).attr("data-page-index"), episodes);
$(this).siblings().removeClass('current');
if ($(this).text() === "<") {
@ -283,7 +284,7 @@
});
//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')) {
$("#player_iframe").contents().find('.play').click();
}
@ -292,7 +293,6 @@
}
}
);
</script>
</div>
<?php
@ -304,11 +304,11 @@
</div>
<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='schedule_btn button current' data-tab='tab-1'></div>");
@ -316,26 +316,26 @@
<?php
// 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>");
<?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');
$("#player_iframe").contents().find('.bottom_bar .button').removeClass('current');
$('.tab_content').removeClass('current');
window.scrollTo(0,0);
window.scrollTo(0, 0);
$(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
$("#player_iframe").contents().find('.play').click(function () {
$("#player_iframe").contents().find('.play').click(function() {
if ($('.jp-play').is(':hidden')) {
$('.jp-pause').click();
}
@ -343,16 +343,15 @@
});
// schedule widget tabs
$('.tabs li').click(function(){
$('.tabs li').click(function() {
var tab_id = $(this).attr('data-tab');
$('.tabs li').removeClass('active');
$('.schedule_item').removeClass('active');
$(this).addClass('active');
$("#"+tab_id).addClass('active');
$("#" + tab_id).addClass('active');
});
});
</script>

View File

@ -13,24 +13,24 @@
<div class="track-edit-right-wrapper">
<div class="track-edit-right">
<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>
<h3 style="line-height: 2px !important;"><span class=""><?php echo($this->artist_name); ?></span></h3>
<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>
</div>
</div>
</div>
<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">
<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>
</div>
<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>
<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>

View File

@ -4,56 +4,122 @@ foreach ($this->md as $key => &$value) {
$value = $this->escape($value);
}
?>
<?php if($this->type == "audioclip") : ?>
<table class='library-track-md'>
<tr><td><?php echo _("Title:"); ?></td><td><?php echo ($this->md["MDATA_KEY_TITLE"]);?></td></tr>
<tr><td><?php echo _("Creator:"); ?></td><td><?php echo ($this->md["MDATA_KEY_CREATOR"]);?></td></tr>
<tr><td><?php echo _("Album:"); ?></td><td><?php echo ($this->md["MDATA_KEY_SOURCE"]);?></td></tr>
<tr><td><?php echo _("Track:"); ?></td><td><?php echo ($this->md["MDATA_KEY_TRACKNUMBER"]);?></td></tr>
<tr><td><?php echo _("Length:"); ?></td><td><?php echo ($this->md["MDATA_KEY_DURATION"]);?></td></tr>
<tr><td class='file-md-qtip-nowrap'><?php echo _("Sample Rate:"); ?></td><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 if ($this->type == "audioclip") : ?>
<table class='library-track-md'>
<tr>
<td><?php echo _("Title:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_TITLE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Creator:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_CREATOR"]); ?></td>
</tr>
<tr>
<td><?php echo _("Album:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_SOURCE"]); ?></td>
</tr>
<tr>
<td><?php echo _("Track:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_TRACKNUMBER"]); ?></td>
</tr>
<tr>
<td><?php echo _("Length:"); ?></td>
<td><?php echo ($this->md["MDATA_KEY_DURATION"]); ?></td>
</tr>
<tr>
<td class='file-md-qtip-nowrap'><?php echo _("Sample Rate:"); ?></td>
<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 if($this->type == "playlist" || $this->type == "block") : ?>
<div class='file-md-qtip-left'>
<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 />
<?php if ($this->type == "playlist" || $this->type == "block") : ?>
<div class='file-md-qtip-left'>
<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 />
<?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 { ?>
<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 } ?>
<span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["dc:description"]);?></span>
</div>
<span><?php echo _("Description:"); ?></span><span><?php echo ($this->md["dc:description"]); ?></span>
</div>
<?php if ($this->type == "playlist") { ?>
<div class='file-md-qtip-legend'>
<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='static'>o</span> <span><?php echo _("Static Smart Block"); ?></span><br />
<span>o</span> <span><?php echo _("Audio Track"); ?></span>
</div>
<?php if ($this->type == "playlist") { ?>
<div class='file-md-qtip-legend'>
<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='static'>o</span> <span><?php echo _("Static Smart Block"); ?></span><br />
<span>o</span> <span><?php echo _("Audio Track"); ?></span>
</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
//XSS exploit prevention
/*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>
<?php } ?>
<table class='library-get-file-md'>
<?php foreach($this->contents as $row) : ?>
<?php foreach ($this->contents as $row) : ?>
<?php
$titleMaxStrLen = 35;
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;
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) {
$bl = new Application_Model_Block($row["item_id"]);
$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-artist file-md-qtip-nowrap'><?php echo $row["creator"] ?></td>
<td class='file-md-qtip-row-width-small'><?php echo $bl->getLength(); ?></td>
</tr>
<?php } else if ($row["type"] == 1) {?>
<?php } else if ($row["type"] == 1) { ?>
<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-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>
<table class='library-get-file-md table-small'>
<?php foreach ($this->contents["crit"] as &$criterias) : ?>
<?php foreach ($criterias as &$crit ) : ?>
<?php foreach ($criterias as &$crit) : ?>
<?php
// XSS exploit prevention
//$crit["value"] = htmlspecialchars($crit["value"]);
@ -115,15 +182,15 @@ foreach ($this->md as $key => &$value) {
$valMaxStrLen = 25;
if (strlen($crit["value"]) > $valMaxStrLen) {
$crit["value"] = substr($crit["value"], 0, 24)."...";
$crit["value"] = substr($crit["value"], 0, 24) . "...";
}
$critMaxStrLen = 13;
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;
if (strlen($crit["modifier"]) > $modMaxStrLen) {
$crit["modifier"] = substr($crit["modifier"], 0, 15)."...";
$crit["modifier"] = substr($crit["modifier"], 0, 15) . "...";
}
?>
<tr>
@ -146,11 +213,11 @@ foreach ($this->md as $key => &$value) {
<?php if ($this->type == "stream") : ?>
<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 _("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 _("URL:"); ?></span><span><?php echo ($this->md["url"]);?></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 _("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 _("URL:"); ?></span><span><?php echo ($this->md["url"]); ?></span></div>
<?php endif; ?>

View File

@ -9,7 +9,7 @@ if ($this->showPlaylist) {
$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') {
echo $this->render('playlist/smart-block.phtml');
} else if ($this->type == 'playlist') {
@ -22,5 +22,5 @@ if ($this->showPlaylist) {
}
?>
?>
</div>

View File

@ -7,12 +7,12 @@
</div>
<div class="inner_editor_wrapper">
<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>
<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>
<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>
<textarea disabled ng-model="media.description"></textarea>

View File

@ -1,5 +1,5 @@
<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="legend" style="width:600px;height:70px;margin:0px 50px 0px 50px"></div>
<div id="date_form" style="float:left; margin:0px 0px">
@ -7,11 +7,13 @@
<?php echo $this->date_form; ?>
</div>
<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">
<?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>
<?php }?>
<?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>
<?php } ?>
</fieldset>
</div>
<div style="clear: both;"></div>

View File

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

View File

@ -2,12 +2,12 @@
<div class="logobox">&nbsp;</div>
<h2><?php echo _("Login") ?></h2>
<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">
<?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>
<?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>
<?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>
<?php echo $this->form; ?>
</div>
</div>

View File

@ -7,8 +7,8 @@
<br>
<dl class="zend-form">
<dd id="cancel-element">
<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>
<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>
</a>
</dd>
</dl>

View File

@ -1,5 +1,5 @@
<ol class="navigation">
<?php foreach ($this->container as $page) : ?>
<?php foreach ($this->container as $page) : ?>
<?php
// Host users do not have access to the General Preferences
// therefor we need to manually change the page parameters
@ -10,36 +10,41 @@
if ($isHost && $page->getTitle() === 'Settings') {
$page->set('resource', 'usersettings');
$page->set('controller', 'user');
$page->set('action','edit-user');
$page->set('action', 'edit-user');
}
?>
<?php if($this->navigation()->accept($page)) : ?>
<li class="top <?php if($page->isActive(true)){echo 'active';} ?>">
<?php if($page->hasPages()) : ?>
<?php if ($this->navigation()->accept($page)) : ?>
<li class="top <?php if ($page->isActive(true)) {
echo 'active';
} ?>">
<?php if ($page->hasPages()) : ?>
<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>
<ul class="sub">
<?php foreach ($page->getPages() as $sub) :
if($sub->getId() == "manage_folder"){
if ($sub->getId() == "manage_folder") {
continue;
} ?>
<?php if($this->navigation()->accept($sub)) : ?>
<?php if ($this->navigation()->accept($sub)) : ?>
<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>
<?php endif; ?>
<?php endforeach; ?>
</ul>
<?php else: ?>
<?php else : ?>
<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>
<?php endif; ?>
</li>
<?php endif; ?>
<?php endforeach; ?>
<?php endforeach; ?>
</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="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>
<span id='current'></span></div>
<span id='current'></span>
</div>
<div class="progressbar">
<div class="progress-song" id="progress-bar" style="width:0%;"></div>
</div>
@ -35,16 +36,16 @@
<?php echo _("Master Source") ?>
</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>
</li>
<li>
<div id="live_dj_div" class="source-label">
<a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a>
<?php echo _("Show Source")?>
<?php echo _("Show Source") ?>
</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>
</li>
</ul>
@ -57,9 +58,9 @@
<div class="time-info-block pull-right">
<div class="time" id="time"></div>
<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>
<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>

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>
<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_id" type="hidden" value="<?php echo $this->obj->getId(); ?>" />
<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()); ?>">

View File

@ -7,17 +7,17 @@ if (isset($this->obj)) {
<?php if (isset($this->obj)) : ?>
<div class="inner_editor_title">
<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>
<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>
</div>
<div class="inner_editor_wrapper">
<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_type' type='hidden' value='playlist'/>
<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_type' type='hidden' value='playlist' />
<dl class="zend_form playlist_editor">
<dt>
<label><?php echo(_("Name:")); ?></label>
<label><?php echo (_("Name:")); ?></label>
</dt>
<dd>
<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>
</dl>
<?php //echo $this->form; ?>
<?php //echo $this->form;
?>
</div>
<div class="ui-widget-header fg-toolbar btn-toolbar clearfix">
<h4 class="obj_length"><?php echo($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo(_("Duration:"));?></h4>
<h4 class="obj_length"><?php echo ($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo (_("Duration:")); ?></h4>
<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>

View File

@ -1,18 +1,14 @@
<dl id="spl_cue_editor" class="inline-list">
<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>
<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"
data-cue-in="<?php echo $this->cueIn; ?>"
data-cue-sec="<?php echo $this->cueInSec; ?>">
<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" 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>
</dd>
<dd class="edit-error"></dd>
<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"
data-cue-out="<?php echo $this->cueOut; ?>"
data-cue-sec="<?php echo $this->cueOutSec; ?>">
<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" 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>
</dd>
<dd class="edit-error"></dd>

View File

@ -1,31 +1,23 @@
<dl id="spl_editor" class="inline-list">
<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>
<?php if ($this->item1Type == 0) {?>
<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"
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; ?>">
<?php if ($this->item1Type == 0) { ?>
<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" 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>
</dd>
<dd class="edit-error"></dd>
<?php }
if (isset($this->item2Url)) {?>
<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"
data-fadein="<?php echo $this->item2Url; ?>"
data-offset="<?php if ($this->item1Type == 0) { echo $this->offset; } else { echo 0; } ?>"
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; ?>">
if (isset($this->item2Url)) { ?>
<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" data-fadein="<?php echo $this->item2Url; ?>" data-offset="<?php if ($this->item1Type == 0) {
echo $this->offset;
} else {
echo 0;
} ?>" 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; ?>">
<span contenteditable="true" class="spl_text_input"><?php echo $this->fadeIn; ?></span>
</dd>
<dd class="edit-error"></dd>
<?php }?>
<?php } ?>
</dl>

View File

@ -7,17 +7,17 @@ if (isset($this->obj)) {
<?php if (isset($this->obj)) : ?>
<div class="inner_editor_title">
<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>
<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>
</div>
<div class="inner_editor_wrapper smart-block-form">
<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_type' type='hidden' value='block'/>
<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_type' type='hidden' value='block' />
<dl class="zend_form playlist_editor">
<dt>
<label><?php echo(_("Name:")); ?></label>
<label><?php echo (_("Name:")); ?></label>
</dt>
<dd>
<input type="text" class="playlist_name_display" contenteditable="true" value="<?php
@ -44,17 +44,17 @@ if (isset($this->obj)) {
</div>
<div class="ui-widget-header fg-toolbar btn-toolbar clearfix">
<h4 class="obj_length"><?php echo($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo(_("Duration:"));?></h4>
<h4 class="obj_length"><?php echo ($this->length); ?></h4>
<h4 class="obj_length_label"><?php echo (_("Duration:")); ?></h4>
<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>
</div>
<div class='btn-group'>
<?php echo $this->form->getElement('generate_button');?>
<?php echo $this->form->getElement('generate_button'); ?>
</div>
<div class='btn-group'>
<?php echo $this->form->getElement('shuffle_button');?>
<?php echo $this->form->getElement('shuffle_button'); ?>
</div>
<div class='btn-group'>
<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">
<dt><?php echo _("Fade in: "); ?></dt>
<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>
<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>
</dl>
</div>
@ -91,9 +93,10 @@ if (isset($this->obj)) {
<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>
</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>
<?php else : ?>
<?php else : ?>
<div><?php echo _("No smart block currently open") ?></div>
<?php endif; ?>
<?php endif; ?>

View File

@ -12,73 +12,71 @@ if ($isSmartBlock && $this->showPoolCount) { ?>
</span>
<?php if ($this->poolCount > 0) { ?>
<span class='checked-icon sp-checked-icon' id='sp_pool_count_icon'></span>
<?php }
else { ?>
<?php } else { ?>
<span class='sp-warning-icon' id='sp_pool_count_icon'></span>
<?php } ?>
</div>
<?php
<?php
}
if (count($items) && ($isSmartBlock || $isPlaylist)) : ?>
<?php $i = 0; ?>
<?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.");}
?>
<?php foreach($items as $item) :
$staticBlock = null;
$nextFileUrl = null;
if ($item['type'] == 2) {
$bl= new Application_Model_Block($item['item_id']);
<?php $i = 0; ?>
<?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.");
}
?>
<?php foreach ($items as $item) :
$staticBlock = null;
$nextFileUrl = null;
if ($item['type'] == 2) {
$bl = new Application_Model_Block($item['item_id']);
$staticBlock = $bl->isStatic();
$fileUrl = null;
}
else if ($item['type'] == 1) {
} else if ($item['type'] == 1) {
$fileUrl = null;
}
else if ($item['type'] == 0) {
} else if ($item['type'] == 0) {
$audiofile = Application_Model_StoredFile::RecallById($item['item_id']);
$fileUrl = $audiofile->getFileUrl();
}
}
if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
$nextAudiofile = Application_Model_StoredFile::RecallById($items[$i+1]['item_id']);
if (($i < count($items) - 1) && ($items[$i + 1]['type'] == 0)) {
$nextAudiofile = Application_Model_StoredFile::RecallById($items[$i + 1]['item_id']);
$nextFileUrl = $nextAudiofile->getFileUrl();
}
?>
}
?>
<li class="ui-state-default" id="spl_<?php echo $item["id"] ?>" unqid="<?php echo $item["id"]; ?>">
<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"]; ?>">
<span class="ui-icon ui-icon-play"></span>
</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"]; ?>">
<span class="ui-icon ui-icon-play"></span>
</div>
<?php elseif ($item['type'] == 2 && $item['exists']): ?>
<div class="big_play" blockId="<?php echo $item["item_id"]; ?>" blocktype="<?php echo $staticBlock?"static":"dynamic"?>">
<?php elseif ($item['type'] == 2 && $item['exists']) : ?>
<div class="big_play" blockId="<?php echo $item["item_id"]; ?>" blocktype="<?php echo $staticBlock ? "static" : "dynamic" ?>">
<span class="ui-icon ui-icon-play"></span>
</div>
<?php else:?>
<?php else : ?>
<div class="big_play ui-state-hover">
<span class="ui-icon ui-icon-alert"></span>
</div>
<?php endif; ?>
<div class="text-row top">
<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> -->
<?php } else if ($item['type'] == 2) {
if ($staticBlock) {?>
<span class="spl_block_expand close" blockId="<?php echo $item["item_id"]; ?>" id="expand_block_<?php echo $item["id"]?>">
if ($staticBlock) { ?>
<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>
<?php echo _("Expand Static Block")?>
<?php echo _("Expand Static Block") ?>
</span>
<?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>
<?php echo _("Expand Dynamic Block")?>
<?php echo _("Expand Dynamic Block") ?>
</span>
<?php }
} ?>
@ -86,16 +84,16 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
</div>
<div class="text-row">
<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>
<?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> -->
<?php endif; ?>
<span id="remove_<?php echo $item["id"] ?>" class="ui-icon ui-icon-closethick"></span>
</div>
<?php if ($item['type'] == 0) {?>
<?php if ($item['type'] == 0) { ?>
<div id="cues_<?php echo $i ?>" class="cue-edit clearfix" style="display: none">
<?php echo $this->partial('playlist/set-cue.phtml', array(
'id' => $item["id"],
@ -104,22 +102,23 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
'cueInSec' => $item['cueInSec'],
'cueOutSec' => $item['cueOutSec'],
'uri' => $fileUrl,
'origLength' => $item['orig_length'])); ?>
'origLength' => $item['orig_length']
)); ?>
</div>
<?php }?>
<?php } ?>
<?php //create a fade editor box
//(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
$vars = array(
'item1' => $items[$i]['id'],
'fadeOut' => $items[$i]['fadeout'],
'fadeIn' => $items[$i+1]['fadein'],
'fadeIn' => $items[$i + 1]['fadein'],
'item1Type' => $items[$i]['type'],
'cueIn1' => $items[$i]['cueInSec'],
'cueOut1' => $items[$i]['cueOutSec'],
@ -128,11 +127,11 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
$item2 = array(
'item2Url' => $nextFileUrl,
'item2' => $items[$i+1]['id'],
'item2Type' => $items[$i+1]['type'],
'offset' => $items[$i]['trackSec'] - $items[$i+1]['trackoffset'],
'cueIn2' => $items[$i+1]['cueInSec'],
'cueOut2' => $items[$i+1]['cueOutSec']
'item2' => $items[$i + 1]['id'],
'item2Type' => $items[$i + 1]['type'],
'offset' => $items[$i]['trackSec'] - $items[$i + 1]['trackoffset'],
'cueIn2' => $items[$i + 1]['cueInSec'],
'cueOut2' => $items[$i + 1]['cueOutSec']
);
if (isset($nextFileUrl)) {
@ -144,16 +143,16 @@ if (($i < count($items) -1) && ($items[$i+1]['type'] == 0)) {
?>
</div>
<?php endif; ?>
<?php if ($item['type'] == 2) {?>
<ul style='display:none' id="block_<?php echo $item["id"]?>_info" class="smart-block-info expand-block-separate"></ul>
<?php if ($item['type'] == 2) { ?>
<ul style='display:none' id="block_<?php echo $item["id"] ?>_info" class="smart-block-info expand-block-separate"></ul>
<?php } ?>
</li>
<?php $i = $i+1; ?>
<?php endforeach; ?>
<?php $i = $i + 1; ?>
<?php endforeach; ?>
<?php else : ?>
<div class="spl_empty">
<?php
<div class="spl_empty">
<?php
if ($this->obj instanceof Application_Model_Block) {
if ($this->obj->isStatic()) {
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 {
echo _("Drag tracks here from your library to add them to the playlist");
}
?>
</div>
?>
</div>
<?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">
<h2><?php echo(_("Playout History"));?></h2>
<h2><?php echo (_("Playout History")); ?></h2>
<?php echo $this->date_form; ?>
<div id="his-tabs">
<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-2"><?php echo _("File Summary"); ?></a></li>
<?php endif; ?>
<li><a href="#his-tabs-3"><?php echo _("Show Summary"); ?></a></li>
</ul>
<?php if ($this->userType != UTYPE_HOST): ?>
<?php if ($this->userType != UTYPE_HOST) : ?>
<div id="his-tabs-1">
<table id="history_table_list" cellpadding="0" cellspacing="0" class="datatable"></table>
</div>

View File

@ -1,21 +1,23 @@
<div id="history_template" class="prefpanel alpha-block padded-strong">
<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>
<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>
<?php endif; ?>
<?php foreach ($this->template_list as $id=>$name): ?>
<?php if (in_array($id, $this->configured)): ?>
<?php foreach ($this->template_list as $id => $name) : ?>
<?php if (in_array($id, $this->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}"); ?>">
<?php echo $name; ?>
</a>
<i class="icon icon-ok"></i>
<?php else: ?>
<?php else : ?>
<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}"); ?>">
<?php echo $name; ?>
@ -33,20 +35,22 @@
</div>
<br><br>
<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>
<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>
<?php endif; ?>
<?php foreach ($this->template_file as $id=>$name): ?>
<?php if (in_array($id, $this->configured)): ?>
<?php foreach ($this->template_file as $id => $name) : ?>
<?php if (in_array($id, $this->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}"); ?>">
<?php echo $name; ?>
</a>
<i class="icon icon-ok"></i>
<?php else: ?>
<?php else : ?>
<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}"); ?>">
<?php echo $name; ?>

View File

@ -1,7 +1,7 @@
<?php if ($this->template_type == Application_Service_HistoryService::TEMPLATE_TYPE_FILE): ?>
<h4><?php echo _("Creating File Summary Template") ?></h4>
<?php else: ?>
<h4><?php echo _("Creating Log Sheet Template") ?></h4>
<?php if ($this->template_type == Application_Service_HistoryService::TEMPLATE_TYPE_FILE) : ?>
<h4><?php echo _("Creating File Summary Template") ?></h4>
<?php else : ?>
<h4><?php echo _("Creating Log Sheet Template") ?></h4>
<?php endif; ?>
<div class="template_name_wrap">
@ -15,22 +15,16 @@
?>
<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"];
} ?>
<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' ?>">
<span><?php echo $field["label"]?></span>
<span><?php echo $field["type"]?></span>
<?php if(!in_array($field["name"], $this->required_fields)): ?>
<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' ?>">
<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">
<i class="icon icon-trash"></i>
</span>
@ -46,27 +40,24 @@
<p><?php echo _("Add more elements") ?>:</p>
<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;
} ?>
<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"]?>">
<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"] ?>">
<?php echo $md["label"] ?>
<a class="field_add" href="#"><i class="icon icon-plus"></i></a>
</li>
<?php endforeach; ?>
</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">
<input type="text" placeholder="<?php echo _("Add New Field") ?>">
<select>
<?php foreach ($this->fields as $field): ?>
<?php foreach ($this->fields as $field) : ?>
<option value="<?php echo $field; ?>"><?php echo _($field); ?></option>
<?php endforeach; ?>
</select>
@ -79,7 +70,7 @@
</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>
<?php endif; ?>
<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
/**
* Created by PhpStorm.
* User: asantoni
@ -8,6 +9,6 @@
?>
<div class="content-pane" style="width: 100%">
<?php require(__DIR__."/featureupgrade.phtml"); ?>
<?php require(__DIR__ . "/featureupgrade.phtml"); ?>
</div>

View File

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

View File

@ -6,10 +6,10 @@
</div>
<div class="inner_editor_wrapper">
<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">
<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 class="podcast-metadata-row">
<label for="podcast_url"><?php echo _("Podcast URL: ") ?></label>
@ -18,10 +18,10 @@
<div class="podcast-metadata-row">
<label for="podcast_auto_ingest"><?php echo _("Download latest episodes:") ?></label>
<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 class="podcast-metadata-row" >
<div class="podcast-metadata-row">
<label><?php echo _("Scheduling:") ?></label>
<div>
<button ng-click="createSmartblock()" class="btn" type="button" name="smartblock">

View File

@ -9,7 +9,7 @@
</label>
</td>
<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>
</tr>
</table>

View File

@ -15,18 +15,18 @@
</div>
<form class="podcast-metadata">
<?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>
<div class="collapsible-content">
<fieldset class="padded">
<div class="podcast-metadata-row">
<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 class="podcast-metadata-row">
<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 class="podcast-metadata-row">
@ -37,7 +37,7 @@
<label><?php echo _("Language") ?></label>
<select name="podcast_language" ng-model="podcast.language">
<?php
foreach(Application_Common_LocaleHelper::getISO6391LanguageCodes() as $code=>$lang) {
foreach (Application_Common_LocaleHelper::getISO6391LanguageCodes() as $code => $lang) {
echo "<option value='$code'>$lang</option>";
}
?>
@ -46,11 +46,11 @@
<div class="podcast-metadata-row">
<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 class="podcast-metadata-row">
<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>
</fieldset>
</div>
@ -60,12 +60,12 @@
<fieldset class="padded">
<div class="podcast-metadata-row">
<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 class="podcast-metadata-row">
<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 class="podcast-metadata-row">
@ -80,12 +80,12 @@
<div class="podcast-metadata-row">
<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 class="podcast-metadata-row">
<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>
</fieldset>
</div>
@ -114,10 +114,14 @@
</div>
<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."),
'<a href="http://cyber.law.harvard.edu/rss/rss.html#requiredChannelElements">', '</a>',
'<a target="_blank" href="http://www.apple.com/ca/itunes/podcasts/specs.html">', "</a>")); ?>
'<a href="http://cyber.law.harvard.edu/rss/rss.html#requiredChannelElements">',
'</a>',
'<a target="_blank" href="http://www.apple.com/ca/itunes/podcasts/specs.html">',
"</a>"
)); ?>
</p>
</form>
@ -135,7 +139,7 @@
</div>
</div>
<script>
$(document).ready(function () {
$(document).ready(function() {
<?php echo "var podcast = " . $this->podcast . ";" ?>
AIRTIME.podcast.podcastApp.value('podcast', podcast);
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">
<h2><?php echo _("Manage Media Folders") ?></h2>
<?php echo $this->form; ?>
<h2><?php echo _("Manage Media Folders") ?></h2>
<?php echo $this->form; ?>
</div>

View File

@ -17,7 +17,7 @@
if (!$this->addNewShow) {
$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
}
?>

View File

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

View File

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

View File

@ -1,11 +1,10 @@
<table id="schedule_block_table">
<tr>
<td>
<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');
}?>
} ?>
</form>
</td>
<td id="schedule_calendar_cell">

View File

@ -1,6 +1,6 @@
<div id="show_content_dialog">
<div><?php echo $this->additionalShowInfo; ?></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="datatable">
<div><?php echo $this->additionalShowInfo; ?></div>
<table width="100%" border="0" cellspacing="0" cellpadding="0" class="datatable">
<tr>
<th><?php echo _("Start") ?></th>
<th><?php echo _("Title") ?></th>
@ -9,9 +9,13 @@
<th><?php echo _("Length") ?></th>
<th><?php echo _("Genre") ?></th>
</tr>
<?php $i=0; ?>
<?php foreach($this->showContent as $row): ?>
<tr id="au_<?php echo $row["item_id"] ?>" class="<?php if($i&1){echo "even";}else{echo "odd";}?>">
<?php $i = 0; ?>
<?php foreach ($this->showContent as $row) : ?>
<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 $this->escape($row["track_title"]) ?></td>
<td><?php echo $this->escape($row["creator"]) ?></td>
@ -19,13 +23,13 @@
<td class="library_length"><?php echo $row["length"] ?></td>
<td><?php echo $row["genre"] ?></td>
</tr>
<?php $i=$i+1; ?>
<?php endforeach; ?>
</table>
<br/>
<div id="show_time_info">
<?php $i = $i + 1; ?>
<?php endforeach; ?>
</table>
<br />
<div id="show_time_info">
<span id="show_time_filled" class="time"><?php echo $this->timeFilled; ?></span>
<div id="show_progressbar"></div>
<span id="show_length" class="time"><?php echo $this->showLength; ?></span>
</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 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>
<?php echo $this->csrf ?>
<div id="library_content" class="lib-content tabs content-pane wide-panel">
<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 class="panel-header-calendar">
<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>
<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 class="panel-header">
<div id="advanced-options" class="btn-group">

View File

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

View File

@ -1,4 +1,3 @@
<div class="ui-widget prefpanel clearfix padded-strong tracktype-management">
<h2><?php echo _("Manage Track Types") ?></h2>
@ -8,7 +7,7 @@
<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">
<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>
</div>
@ -17,9 +16,9 @@
<tr>
<th><?php echo _("id") ?></th>
<th><?php echo _("Code") ?></th>
<th><?php echo _("Label")?></th>
<th><?php echo _("Description")?></th>
<th><?php echo _("Visibility")?></th>
<th><?php echo _("Label") ?></th>
<th><?php echo _("Description") ?></th>
<th><?php echo _("Visibility") ?></th>
<th>&nbsp;</th>
</tr>
</thead>

View File

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

View File

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

View File

@ -7,7 +7,7 @@
<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">
<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>
</div>
@ -16,9 +16,9 @@
<tr>
<th><?php echo _("id") ?></th>
<th><?php echo _("Username") ?></th>
<th><?php echo _("First Name")?></th>
<th><?php echo _("Last Name")?></th>
<th><?php echo _("User Type")?></th>
<th><?php echo _("First Name") ?></th>
<th><?php echo _("Last Name") ?></th>
<th><?php echo _("User Type") ?></th>
<th>&nbsp;</th>
</tr>
</thead>

View File

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

View File

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

View File

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

View File

@ -1,20 +1,21 @@
<?php if (isset($this->obj)) : ?>
<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_type" type="hidden" value="webstream"/>
<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_type" type="hidden" value="webstream" />
<div class="status" style="display:none;"></div>
<div class="inner_editor_title">
<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>
<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>
</div>
<div class="inner_editor_wrapper">
<div class="inner_editor_wrapper">
<dl class="zend_form side_playlist playlist_editor">
<dt>
<label><?php echo(_("Name:")); ?></label>
<label><?php echo (_("Name:")); ?></label>
</dt>
<dd>
<div id="name-error" class="errors" style="display:none;"></div>
@ -29,15 +30,15 @@
<div id="url-error" class="errors" style="display:none;"></div>
<dt id="streamurl-label"><label for="streamurl"><?php echo _("Stream URL:"); ?></label></dt>
<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>
<div id="length-error" class="errors" style="display:none;"></div>
<dt id="streamlength-label"><label for="streamlength"><?php echo _("Default Length:"); ?></label></dt>
<dd id="streamlength-element">
<input type="text" value="<?php echo $this->obj->getDefaultLength() ?>"/>
<input type="text" value="<?php echo $this->obj->getDefaultLength() ?>" />
</dd>
</dl>
</div>
</div>
<div class="btn-toolbar clearfix">

View File

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

View File

@ -3,34 +3,35 @@ var _idToPostionLookUp;
var URL_BAR_HEIGHT = 32;
/**
*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,
*or a playlist or a show.
*/
$(document).ready(function(){
*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,
*or a playlist or a show.
*/
$(document).ready(function () {
$.jPlayer.timeFormat.showHour = true;
var audioUri = $('.audioUri').text();
var audioMime = $('.audioMime').text();
var playlistID = $('.playlistID').text();
var playlistIndex = $('.playlistIndex').text();
var showID = $('.showID').text();
var showIndex = $('.showIndex').text();
var blockId = $('.blockId').text();
var blockIndex = $('.blockIndex').text();
var audioUri = $(".audioUri").text();
var audioMime = $(".audioMime").text();
var playlistID = $(".playlistID").text();
var playlistIndex = $(".playlistIndex").text();
var showID = $(".showID").text();
var showIndex = $(".showIndex").text();
var blockId = $(".blockId").text();
var blockIndex = $(".blockIndex").text();
_playlist_jplayer = new jPlayerPlaylist({
jPlayer: "#jquery_jplayer_1",
cssSelectorAncestor: "#jp_container_1"
},[], //array of songs will be filled with below's json call
_playlist_jplayer = new jPlayerPlaylist(
{
swfPath: baseUrl+"js/jplayer",
supplied:"oga, mp3, m4v, m4a, wav",
jPlayer: "#jquery_jplayer_1",
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: {
width: "0px",
height: "0px",
cssClass: "jp-video-270p"
cssClass: "jp-video-270p",
},
playlistOptions: {
autoPlay: false,
@ -40,113 +41,125 @@ $(document).ready(function(){
displayTime: 0,
addTime: 0,
removeTime: 0,
shuffleTime: 0
shuffleTime: 0,
},
ready: function(){
if (playlistID != "" && playlistID !== ""){
ready: function () {
if (playlistID != "" && playlistID !== "") {
playAllPlaylist(playlistID, playlistIndex);
}else if (audioUri != "") {
} else if (audioUri != "") {
playOne(audioUri, audioMime);
}else if (showID != "") {
} else if (showID != "") {
playAllShow(showID, showIndex);
}else if(blockId != "" && blockIndex != ""){
} else if (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");
});
$("#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");
});
});
/**
* Sets up the jPlayerPlaylist to play.
* - Get the playlist info based on the playlistID give.
* - 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.
**/
* Sets up the jPlayerPlaylist to play.
* - Get the playlist info based on the playlistID give.
* - 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.
**/
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);
}else {
buildplaylist(baseUrl+"audiopreview/get-playlist/playlistID/"+p_playlistID, p_playlistIndex);
} else {
buildplaylist(
baseUrl + "audiopreview/get-playlist/playlistID/" + p_playlistID,
p_playlistIndex
);
}
}
function playBlock(p_blockId, p_blockIndex)
{
var viewsBlockId = $('.blockId').text();
function playBlock(p_blockId, p_blockIndex) {
var viewsBlockId = $(".blockId").text();
if ( _idToPostionLookUp !== undefined && viewsBlockId == p_blockId ) {
if (_idToPostionLookUp !== undefined && viewsBlockId == p_blockId) {
play(p_blockIndex);
} 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.
* 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
* 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
* and call the controller.
**/
* Sets up the show to play.
* 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
* 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
* and call the controller.
**/
function playAllShow(p_showID, p_index) {
var viewsShowID = $('.showID').text();
if ( _idToPostionLookUp !== undefined && viewsShowID == p_showID ) {
var viewsShowID = $(".showID").text();
if (_idToPostionLookUp !== undefined && viewsShowID == p_showID) {
play(p_index);
}else {
buildplaylist(baseUrl+"audiopreview/get-show/showID/"+p_showID, p_index);
} else {
buildplaylist(
baseUrl + "audiopreview/get-show/showID/" + p_showID,
p_index
);
}
}
/**
* This function will call the AudiopreviewController to get the contents of
* either a show or playlist Looping throught the returned contents and
* creating media for each track.
*
* Then trigger the jplayer to play the list.
*/
* This function will call the AudiopreviewController to get the contents of
* either a show or playlist Looping throught the returned contents and
* creating media for each track.
*
* Then trigger the jplayer to play the list.
*/
function buildplaylist(p_url, p_playIndex) {
_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 media;
var index;
var total = 0;
var skipped = 0;
for(index in data) {
if (data[index]['type'] == 0) {
if (data[index]['element_mp3'] != undefined){
media = {title: data[index]['element_title'],
artist: data[index]['element_artist'],
mp3:data[index]['uri']
for (index in data) {
if (data[index]["type"] == 0) {
if (data[index]["element_mp3"] != undefined) {
media = {
title: data[index]["element_title"],
artist: data[index]["element_artist"],
mp3: data[index]["uri"],
};
} else if (data[index]['element_oga'] != undefined) {
media = {title: data[index]['element_title'],
artist: data[index]['element_artist'],
oga:data[index]['uri']
} else if (data[index]["element_oga"] != undefined) {
media = {
title: data[index]["element_title"],
artist: data[index]["element_artist"],
oga: data[index]["uri"],
};
} else if (data[index]['element_m4a'] != undefined) {
media = {title: data[index]['element_title'],
artist: data[index]['element_artist'],
m4a:data[index]['uri']
} else if (data[index]["element_m4a"] != undefined) {
media = {
title: data[index]["element_title"],
artist: data[index]["element_artist"],
m4a: data[index]["uri"],
};
} else if (data[index]['element_wav'] != undefined) {
media = {title: data[index]['element_title'],
artist: data[index]['element_artist'],
wav:data[index]['uri']
} else if (data[index]["element_wav"] != undefined) {
media = {
title: data[index]["element_title"],
artist: data[index]["element_artist"],
wav: data[index]["uri"],
};
} else {
// skip this track since it's not supported
@ -154,8 +167,8 @@ function buildplaylist(p_url, p_playIndex) {
skipped++;
continue;
}
} else if (data[index]['type'] == 1) {
var mime = data[index]['mime'];
} else if (data[index]["type"] == 1) {
var mime = data[index]["mime"];
if (mime.search(/mp3/i) > 0 || mime.search(/mpeg/i) > 0) {
key = "mp3";
} 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) {
media = {title: data[index]['element_title'],
artist: data[index]['element_artist']
media = {
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
// so we need to remove the gap if we skip any of tracks due to
// browser incompatibility.
myPlaylist[index-skipped] = media;
myPlaylist[index - skipped] = media;
}
// we should create a map according to the new position in the
// player itself total is the index on the player
_idToPostionLookUp[data[index]['element_id']] = total;
_idToPostionLookUp[data[index]["element_id"]] = total;
total++;
}
_playlist_jplayer.setPlaylist(myPlaylist);
@ -192,27 +206,30 @@ function buildplaylist(p_url, p_playIndex) {
var container = $("#jp_container_1");
// 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
*right index.
*/
function play(p_playlistIndex){
*Function simply plays the given index, for playlists index can be different so need to look up the
*right index.
*/
function play(p_playlistIndex) {
playlistIndex = _idToPostionLookUp[p_playlistIndex];
if(playlistIndex == undefined){
playlistIndex = 0
if (playlistIndex == undefined) {
playlistIndex = 0;
}
//_playlist_jplayer.select(playlistIndex);
_playlist_jplayer.play(playlistIndex);
}
/**
* Playing one audio track occurs from the library. This function will create the media, setup
* jplayer and play the track.
*/
* Playing one audio track occurs from the library. This function will create the media, setup
* jplayer and play the track.
*/
function playOne(uri, mime) {
var playlist = new Array();
@ -229,8 +246,15 @@ function playOne(uri, mime) {
}
if (key) {
media = {title: $('.audioFileTitle').text() != 'null' ?$('.audioFileTitle').text():"",
artist: $('.audioFileArtist').text() != 'null' ?$('.audioFileArtist').text():""
media = {
title:
$(".audioFileTitle").text() != "null"
? $(".audioFileTitle").text()
: "",
artist:
$(".audioFileArtist").text() != "null"
? $(".audioFileArtist").text()
: "",
};
media[key] = uri;
}
@ -244,5 +268,8 @@ function playOne(uri, mime) {
var container = $("#jp_container_1");
// 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 mod, DEFAULT_CLASS = 'ui-button ui-state-default', DISABLED_CLASS = 'ui-state-disabled';
var AIRTIME = (function (AIRTIME) {
var mod,
DEFAULT_CLASS = "ui-button ui-state-default",
DISABLED_CLASS = "ui-state-disabled";
if (AIRTIME.button === undefined) {
AIRTIME.button = {};
}
mod = AIRTIME.button;
mod.isDisabled = function(c, useParent) {
mod.isDisabled = function (c, useParent) {
var button = $("." + c);
if (useParent) {
button = button.parent();
@ -19,7 +21,7 @@ var AIRTIME = (function(AIRTIME) {
return false;
};
mod.enableButton = function(c, useParent) {
mod.enableButton = function (c, useParent) {
if (useParent) {
var button = $("." + c).parent();
} else {
@ -28,11 +30,11 @@ var AIRTIME = (function(AIRTIME) {
if (button.hasClass(DISABLED_CLASS)) {
button.removeClass(DISABLED_CLASS);
button.removeAttr('disabled');
button.removeAttr("disabled");
}
};
mod.disableButton = function(c, useParent) {
mod.disableButton = function (c, useParent) {
if (useParent) {
var button = $("." + c).parent();
} else {
@ -41,10 +43,9 @@ var AIRTIME = (function(AIRTIME) {
if (!button.hasClass(DISABLED_CLASS)) {
button.addClass(DISABLED_CLASS);
button.attr('disabled', 'disabled');
button.attr("disabled", "disabled");
}
};
return AIRTIME;
}(AIRTIME || {}));
})(AIRTIME || {});

View File

@ -1,8 +1,7 @@
function isAudioSupported(mime){
function isAudioSupported(mime) {
var audio = new Audio();
if ((typeof mime) !== "string" || (mime === null)) {
if (typeof mime !== "string" || mime === null) {
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).
//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....
return (!!audio.canPlayType && audio.canPlayType(bMime) != "") ||
(mime.indexOf("mp3") != -1 && 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);
return (
(!!audio.canPlayType && audio.canPlayType(bMime) != "") ||
(mime.indexOf("mp3") != -1 &&
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,
previewHeight = 110;
$(document).ready(function() {
$(document).ready(function () {
/* Removed as this is now (hopefully) unnecessary */
//$("#Panel").stickyPanel({
// topPadding: 1,
@ -11,7 +10,9 @@ $(document).ready(function() {
//});
//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._("October"),
$.i18n._("November"),
$.i18n._("December")
$.i18n._("December"),
];
var i18n_months_short = [
@ -45,7 +46,7 @@ var i18n_months_short = [
$.i18n._("Sep"),
$.i18n._("Oct"),
$.i18n._("Nov"),
$.i18n._("Dec")
$.i18n._("Dec"),
];
var i18n_days_short = [
@ -55,7 +56,7 @@ var i18n_days_short = [
$.i18n._("We"),
$.i18n._("Th"),
$.i18n._("Fr"),
$.i18n._("Sa")
$.i18n._("Sa"),
];
var HTTPMethods = Object.freeze({
@ -64,7 +65,7 @@ var HTTPMethods = Object.freeze({
PUT: "PUT",
PATCH: "PATCH",
DELETE: "DELETE",
OPTIONS: "OPTIONS"
OPTIONS: "OPTIONS",
});
var dateStartId = "#sb_date_start",
@ -73,25 +74,24 @@ var dateStartId = "#sb_date_start",
timeEndId = "#sb_time_end";
function getDatatablesStrings(overrideDict) {
var dict = {
"sEmptyTable": $.i18n._("No data available in table"),
"sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ entries"),
"sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 entries"),
"sInfoFiltered": "", // $.i18n._("(filtered from _MAX_ total entries)"),
"sInfoPostFix": $.i18n._(""),
"sInfoThousands": $.i18n._(","),
"sLengthMenu": $.i18n._("Show _MENU_"),
"sLoadingRecords": $.i18n._("Loading..."),
sEmptyTable: $.i18n._("No data available in table"),
sInfo: $.i18n._("Showing _START_ to _END_ of _TOTAL_ entries"),
sInfoEmpty: $.i18n._("Showing 0 to 0 of 0 entries"),
sInfoFiltered: "", // $.i18n._("(filtered from _MAX_ total entries)"),
sInfoPostFix: $.i18n._(""),
sInfoThousands: $.i18n._(","),
sLengthMenu: $.i18n._("Show _MENU_"),
sLoadingRecords: $.i18n._("Loading..."),
//"sProcessing": $.i18n._("Processing..."),
"sProcessing": $.i18n._(""),
"sSearch": $.i18n._(""),
"sZeroRecords": $.i18n._("No matching records found"),
"oPaginate": {
"sFirst": "&laquo;",
"sLast": "&raquo;",
"sNext": "&rsaquo;",
"sPrevious": "&lsaquo;"
sProcessing: $.i18n._(""),
sSearch: $.i18n._(""),
sZeroRecords: $.i18n._("No matching records found"),
oPaginate: {
sFirst: "&laquo;",
sLast: "&raquo;",
sNext: "&rsaquo;",
sPrevious: "&lsaquo;",
},
//"oPaginate": {
// "sFirst": $.i18n._("First"),
@ -99,21 +99,21 @@ function getDatatablesStrings(overrideDict) {
// "sNext": $.i18n._("Next"),
// "sPrevious": $.i18n._("Previous")
//},
"oAria": {
"sSortAscending": $.i18n._(": activate to sort column ascending"),
"sSortDescending": $.i18n._(": activate to sort column descending")
}
oAria: {
sSortAscending: $.i18n._(": activate to sort column ascending"),
sSortDescending: $.i18n._(": activate to sort column descending"),
},
};
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
//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
* shift it to the server's timezone */
@ -131,10 +131,10 @@ var _preview_window = null;
function openAudioPreview(p_event) {
p_event.stopPropagation();
var audioFileID = $(this).attr('audioFile');
var objId = $('.obj_id:first').attr('value');
var objType = $('.obj_type:first').attr('value');
var playIndex = $(this).parent().parent().attr('id');
var audioFileID = $(this).attr("audioFile");
var objId = $(".obj_id:first").attr("value");
var objType = $(".obj_type:first").attr("value");
var playIndex = $(this).parent().parent().attr("id");
playIndex = playIndex.substring(4); //remove the spl_
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
// sometime they contain '/' or '\' and apache reject %2f or %5f
// 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();
}
@ -159,25 +163,42 @@ function open_audio_preview(type, id) {
*given index.
*/
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;
if (_preview_window != null && !_preview_window.closed)
_preview_window.playAllPlaylist(p_playlistID, p_playlistIndex);
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();
}
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;
if (_preview_window != null && !_preview_window.closed)
_preview_window.playBlock(p_blockId, p_blockIndex);
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();
}
@ -191,61 +212,80 @@ function open_show_preview(p_showID, p_showIndex) {
if (_preview_window != null && !_preview_window.closed)
_preview_window.playAllShow(p_showID, p_showIndex);
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();
}
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...
_preview_window = window.open(url, $.i18n._('Audio Player'), dim + 'scrollbars=yes');
_preview_window = window.open(
url,
$.i18n._("Audio Player"),
dim + "scrollbars=yes"
);
return false;
}
function validateTimeRange() {
var oRange,
inputs = $('.sb-timerange > input'),
start, end;
inputs = $(".sb-timerange > input"),
start,
end;
oRange = AIRTIME.utilities.fnGetScheduleRange(dateStartId, timeStartId, dateEndId, timeEndId);
oRange = AIRTIME.utilities.fnGetScheduleRange(
dateStartId,
timeStartId,
dateEndId,
timeEndId
);
start = oRange.start;
end = oRange.end;
if (end >= start) {
inputs.removeClass('error');
inputs.removeClass("error");
} else {
if (!inputs.hasClass('error')) {
inputs.addClass('error');
if (!inputs.hasClass("error")) {
inputs.addClass("error");
}
}
return {
start: start,
end: end,
isValid: end >= start
isValid: end >= start,
};
}
// validate uploaded images
function validateImage(img, el) {
// 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
var err = $.i18n._("Selected file is too large");
el.parent().after(
"<ul id='img-err' class='errors'>" +
"<li>" + err + "</li>" +
"</ul>");
"<ul id='img-err' class='errors'>" + "<li>" + err + "</li>" + "</ul>"
);
return false;
} else if (validateMimeType(img.type) < 0) {
var err = $.i18n._("File format is not supported");
el.parent().after(
"<ul id='img-err' class='errors'>" +
"<li>" + err + "</li>" +
"</ul>");
"<ul id='img-err' class='errors'>" + "<li>" + err + "</li>" + "</ul>"
);
return false;
}
return true;
@ -254,22 +294,24 @@ function validateImage(img, el) {
// validate image mime type
function validateMimeType(mime) {
var extensions = [
'image/jpeg',
'image/png',
'image/gif'
"image/jpeg",
"image/png",
"image/gif",
// BMP?
];
return $.inArray(mime, extensions);
}
function pad(number, length) {
return sprintf("%'0"+length+"d", number);
return sprintf("%'0" + length + "d", number);
}
function removeSuccessMsg() {
var $status = $('.success');
var $status = $(".success");
$status.fadeOut("slow", function(){$status.empty()});
$status.fadeOut("slow", function () {
$status.empty();
});
}
function hideHint(h) {
@ -282,8 +324,11 @@ function showHint(h) {
function getUsabilityHint() {
var pathname = window.location.pathname;
$.getJSON(baseUrl + "api/get-usability-hint", {"format": "json", "userPath": pathname}, function(json) {
var $hint_div = $('.usability_hint');
$.getJSON(
baseUrl + "api/get-usability-hint",
{ format: "json", userPath: pathname },
function (json) {
var $hint_div = $(".usability_hint");
var current_hint = $hint_div.html();
if (json === "") {
// there are no more hints to display to the user
@ -301,7 +346,8 @@ function getUsabilityHint() {
showHint($hint_div);
}
}
});
}
);
}
// TODO: build this out so we can use it as a fallback in fail cases
@ -314,7 +360,7 @@ function buildErrorDialog(message) {
resizable: false,
modal: true,
width: "auto",
height: "auto"
height: "auto",
});
}
@ -324,8 +370,8 @@ function buildErrorDialog(message) {
* @param selector jQuery selector to search descendants
* @returns {jQuery}
*/
jQuery.fn.addTitles = function(selector) {
this.each(function() {
jQuery.fn.addTitles = function (selector) {
this.each(function () {
// Put this in a mouseenter event handler so it's dynamic
// (newly created elements will have the title applied on hover)
$(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
jQuery.fn.scrollText = function(selector) {
jQuery.fn.scrollText = function (selector) {
this.each(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) {
$(this).stop().animate({
textIndent: "-" + (sw + 1 - iw) + "px"
}, sw * 8);
$(this)
.stop()
.animate(
{
textIndent: "-" + (sw + 1 - iw) + "px",
},
sw * 8
);
}
});
$(this).on("mouseleave", selector, function () {
$(this).stop().animate({
textIndent: "0"
}, 500);
$(this).stop().animate(
{
textIndent: "0",
},
500
);
});
});

View File

@ -1,21 +1,18 @@
$(document).ready(function() {
$("#facebook-login").click(function() {
$(document).ready(function () {
$("#facebook-login").click(function () {
AIRTIME.facebook.promptForFacebookPage();
});
});
window.fbAsyncInit = function() {
window.fbAsyncInit = function () {
FB.init({
appId : FACEBOOK_APP_ID,
xfbml : true,
version : 'v2.4'
appId: FACEBOOK_APP_ID,
xfbml: true,
version: "v2.4",
});
};
var AIRTIME = (function(AIRTIME) {
var AIRTIME = (function (AIRTIME) {
//Module initialization
if (AIRTIME.facebook === undefined) {
AIRTIME.facebook = {};
@ -24,7 +21,8 @@ var AIRTIME = (function(AIRTIME) {
var mod = AIRTIME.facebook;
(function (d, s, id) {
var js, fjs = d.getElementsByTagName(s)[0];
var js,
fjs = d.getElementsByTagName(s)[0];
if (d.getElementById(id)) {
return;
}
@ -32,47 +30,62 @@ var AIRTIME = (function(AIRTIME) {
js.id = id;
js.src = "//connect.facebook.net/en_US/sdk.js";
fjs.parentNode.insertBefore(js, fjs);
}(document, 'script', 'facebook-jssdk'));
})(document, "script", "facebook-jssdk");
mod.promptForFacebookPage = function() {
FB.login(function (response) {
mod.promptForFacebookPage = function () {
FB.login(
function (response) {
if (response.authResponse) {
mod.getPagesOwnedByUser(response.authResponse.userID, response.authResponse.accessToken);
mod.getPagesOwnedByUser(
response.authResponse.userID,
response.authResponse.accessToken
);
mod.addPageTab();
} else {
console.log('Authorization failed.');
}
}, {scope: 'manage_pages'});
console.log("Authorization failed.");
}
},
{ scope: "manage_pages" }
);
};
mod.getPagesOwnedByUser = function(userId, accessToken) {
FB.api('/' + userId + '/accounts', function (response) {
mod.getPagesOwnedByUser = function (userId, accessToken) {
FB.api(
"/" + userId + "/accounts",
function (response) {
console.log(response);
}, {access_token: accessToken});
}
},
{ access_token: accessToken }
);
};
mod.addPageTab = function() {
mod.addPageTab = function () {
FB.ui(
{ method: 'pagetab' },
{ method: "pagetab" },
function (resp) {
console.log("response:");
console.log(resp);
var pageIdList = [];
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) {
pageIdList.push(pageId);
}
//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!");
}).done(function() {
}).fail(function() {
alert("Sorry, an error occurred and we were unable to add the widget to your Facebook page.");
}
)
.done(function () {})
.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'
}
);
}
};
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_source = false;
//a reference returned by setTimeout. Useful for when we want clearTimeout()
var newSongTimeoutId = null;
@ -40,10 +39,10 @@ var onAirOffIterations = 0;
var nextSongPrepare = true;
var nextShowPrepare = true;
function secondsTimer(){
function secondsTimer() {
/* This function constantly calls itself every 'uiUpdateInterval'
* micro-seconds and is responsible for updating the UI. */
if (localRemoteTimeOffset !== null){
if (localRemoteTimeOffset !== null) {
var date = new Date();
approximateServerTime = date.getTime() - localRemoteTimeOffset;
updateProgressBarValue();
@ -54,39 +53,47 @@ function secondsTimer(){
setTimeout(secondsTimer, uiUpdateInterval);
}
function newSongStart(){
function newSongStart() {
nextSongPrepare = true;
if (nextSong.type == 'track') {
if (nextSong.type == "track") {
currentSong = nextSong;
nextSong = null;
}
}
function nextShowStart(){
function nextShowStart() {
nextShowPrepare = true;
currentShow[0] = nextShow.shift();
}
/* Called every "uiUpdateInterval" mseconds. */
function updateProgressBarValue(){
function updateProgressBarValue() {
var showPercentDone = 0;
if (currentShow.length > 0){
showPercentDone = (approximateServerTime - currentShow[0].showStartPosixTime)/currentShow[0].showLengthMs*100;
if (showPercentDone < 0 || showPercentDone > 100){
if (currentShow.length > 0) {
showPercentDone =
((approximateServerTime - currentShow[0].showStartPosixTime) /
currentShow[0].showLengthMs) *
100;
if (showPercentDone < 0 || showPercentDone > 100) {
showPercentDone = 0;
currentShow = new Array();
currentSong = null;
}
}
$('#progress-show').attr("style", "width:"+showPercentDone+"%");
$("#progress-show").attr("style", "width:" + showPercentDone + "%");
var songPercentDone = 0;
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;
songPercentDone = (approximateServerTime - currentSong.songStartPosixTime)/currentSong.songLengthMs*100;
songPercentDone =
((approximateServerTime - currentSong.songStartPosixTime) /
currentSong.songLengthMs) *
100;
songElapsedTime = approximateServerTime - currentSong.songStartPosixTime;
if (songPercentDone < 0) {
songPercentDone = 0;
@ -94,134 +101,188 @@ function updateProgressBarValue(){
} else if (songPercentDone > 100) {
songPercentDone = 100;
} 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_div.addClass("ready");
scheduled_play_source = true;
}
else{
} else {
scheduled_play_source = false;
scheduled_play_line_to_switch.attr("class", "line-to-switch off");
scheduled_play_div.removeClass("ready");
}
$('#progress-show').attr("class", "progress-show");
$("#progress-show").attr("class", "progress-show");
}
} else {
scheduled_play_source = false;
scheduled_play_line_to_switch.attr("class", "line-to-switch off");
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 */
if (previousSong !== null){
$('#previous').text(previousSong.name+",");
$('#prev-length').text(convertToHHMMSSmm(previousSong.songLengthMs));
}else{
$('#previous').empty();
$('#prev-length').empty();
if (previousSong !== null) {
$("#previous").text(previousSong.name + ",");
$("#prev-length").text(convertToHHMMSSmm(previousSong.songLengthMs));
} else {
$("#previous").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") {
$('#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 {
$('#current').text(currentSong.name+",");
$("#current").text(currentSong.name + ",");
if (currentSong.metadata && currentSong.metadata.artwork_data) {
var check_current_song = Cookies.get('current_track');
var loaded = Cookies.get('loaded');
var check_current_song = Cookies.get("current_track");
var loaded = Cookies.get("loaded");
if (check_current_song != currentSong.name) {
$('#now-playing-artwork_containter').html("<img height='75' width='75' class'artwork' src='"+ currentSong.metadata.artwork_data +"' />");
Cookies.remove('current_track');
Cookies.set('current_track', currentSong.name);
$("#now-playing-artwork_containter").html(
"<img height='75' width='75' class'artwork' src='" +
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
if (loaded != UNIQID) {
Cookies.remove('current_track');
Cookies.remove('loaded');
Cookies.set('loaded', UNIQID);
Cookies.remove("current_track");
Cookies.remove("loaded");
Cookies.set("loaded", UNIQID);
}
}
}
}else{
} else {
if (master_dj_on_air) {
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 {
$('#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) {
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 {
$('#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 {
$('#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){
$('#next').text(nextSong.name+",");
$('#next-length').text(convertToHHMMSSmm(nextSong.songLengthMs));
}else{
$('#next').empty();
$('#next-length').empty();
if (nextSong !== null) {
$("#next").text(nextSong.name + ",");
$("#next-length").text(convertToHHMMSSmm(nextSong.songLengthMs));
} else {
$("#next").empty();
$("#next-length").empty();
}
$('#start').empty();
$('#end').empty();
$('#time-elapsed').empty();
$('#time-remaining').empty();
$('#song-length').empty();
if (currentSong !== null && !master_dj_on_air && !live_dj_on_air){
$('#start').text(currentSong.starts.split(' ')[1]);
$('#end').text(currentSong.ends.split(' ')[1]);
$("#start").empty();
$("#end").empty();
$("#time-elapsed").empty();
$("#time-remaining").empty();
$("#song-length").empty();
if (currentSong !== null && !master_dj_on_air && !live_dj_on_air) {
$("#start").text(currentSong.starts.split(" ")[1]);
$("#end").text(currentSong.ends.split(" ")[1]);
/* Get rid of the millisecond accuracy so that the second counters for both
* show and song change at the same time. */
var songStartRoughly = parseInt(Math.round(currentSong.songStartPosixTime/1000), 10)*1000;
var songEndRoughly = parseInt(Math.round(currentSong.songEndPosixTime/1000), 10)*1000;
var songStartRoughly =
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-remaining').text(convertToHHMMSS(songEndRoughly - approximateServerTime));
$('#song-length').text(convertToHHMMSS(currentSong.songLengthMs));
$("#time-elapsed").text(
convertToHHMMSS(approximateServerTime - songStartRoughly)
);
$("#time-remaining").text(
convertToHHMMSS(songEndRoughly - approximateServerTime)
);
$("#song-length").text(convertToHHMMSS(currentSong.songLengthMs));
}
/* Column 1 update */
$('#playlist').text($.i18n._("Current Show:"));
var recElem = $('.recording-show');
if (currentShow.length > 0){
$('#playlist').text(currentShow[0].name);
(currentShow[0].record == "1") ? recElem.show(): recElem.hide();
$("#playlist").text($.i18n._("Current Show:"));
var recElem = $(".recording-show");
if (currentShow.length > 0) {
$("#playlist").text(currentShow[0].name);
currentShow[0].record == "1" ? recElem.show() : recElem.hide();
} else {
recElem.hide();
}
$('#show-length').empty();
if (currentShow.length > 0){
$('#show-length').text(convertDateToHHMM(currentShow[0].showStartPosixTime) + " - " + convertDateToHHMM(currentShow[0].showEndPosixTime));
$("#show-length").empty();
if (currentShow.length > 0) {
$("#show-length").text(
convertDateToHHMM(currentShow[0].showStartPosixTime) +
" - " +
convertDateToHHMM(currentShow[0].showEndPosixTime)
);
}
/* Column 2 update */
$('#time').text(convertDateToHHMMSS(approximateServerTime));
$("#time").text(convertDateToHHMMSS(approximateServerTime));
}
function calcAdditionalData(currentItem){
function calcAdditionalData(currentItem) {
currentItem.songStartPosixTime = convertDateToPosixTime(currentItem.starts);
currentItem.songEndPosixTime = convertDateToPosixTime(currentItem.ends);
currentItem.songLengthMs = currentItem.songEndPosixTime - currentItem.songStartPosixTime;
currentItem.songLengthMs =
currentItem.songEndPosixTime - currentItem.songStartPosixTime;
}
function calcAdditionalShowData(show){
if (show.length > 0){
show[0].showStartPosixTime = convertDateToPosixTime(show[0].start_timestamp);
function calcAdditionalShowData(show) {
if (show.length > 0) {
show[0].showStartPosixTime = convertDateToPosixTime(
show[0].start_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;
if (diff < 0) diff=0;
if (diff < 0) diff = 0;
nextSongPrepare = false;
newSongTimeoutId= setTimeout(newSongStart, diff);
newSongTimeoutId = setTimeout(newSongStart, diff);
}
function calculateTimeToNextShow() {
@ -254,12 +315,12 @@ function calculateTimeToNextShow() {
}
var diff = nextShow[0].showStartPosixTime - approximateServerTime;
if (diff < 0) diff=0;
if (diff < 0) diff = 0;
nextShowPrepare = false;
newShowTimeoutId= setTimeout(nextShowStart, diff);
newShowTimeoutId = setTimeout(nextShowStart, diff);
}
function parseItems(obj){
function parseItems(obj) {
previousSong = obj.previous;
currentSong = obj.current;
nextSong = obj.next;
@ -288,52 +349,50 @@ function parseItems(obj){
calculateTimeToNextShow();
}
var schedulePosixTime = convertDateToPosixTime(obj.schedulerTime);
var date = new Date();
localRemoteTimeOffset = date.getTime() - schedulePosixTime;
}
function parseSourceStatus(obj){
function parseSourceStatus(obj) {
var live_div = $("#live_dj_div");
var master_div = $("#master_dj_div");
var live_li = live_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_div.removeClass("ready");
}else{
} else {
live_li.find(".line-to-switch").attr("class", "line-to-switch on");
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_div.removeClass("ready");
}else{
} else {
master_li.find(".line-to-switch").attr("class", "line-to-switch on");
master_div.addClass("ready");
}
}
function parseSwitchStatus(obj){
if(obj.live_dj_source == "on"){
function parseSwitchStatus(obj) {
if (obj.live_dj_source == "on") {
live_dj_on_air = true;
}else{
} else {
live_dj_on_air = false;
}
if(obj.master_dj_source == "on"){
if (obj.master_dj_source == "on") {
master_dj_on_air = true;
}else{
} else {
master_dj_on_air = false;
}
if(obj.scheduled_play == "on"){
if (obj.scheduled_play == "on") {
scheduled_play_on_air = true;
}else{
} else {
scheduled_play_on_air = false;
}
@ -342,30 +401,34 @@ function parseSwitchStatus(obj){
var master_dj_switch = $("#master_dj.source-switch-button");
scheduled_play_switch.find("span").html(obj.scheduled_play);
if(scheduled_play_on_air){
if (scheduled_play_on_air) {
scheduled_play_switch.addClass("active");
}else{
} else {
scheduled_play_switch.removeClass("active");
}
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");
}else{
} else {
live_dj_switch.removeClass("active");
}
master_dj_switch.find("span").html(obj.master_dj_source)
if(master_dj_on_air){
master_dj_switch.find("span").html(obj.master_dj_source);
if (master_dj_on_air) {
master_dj_switch.addClass("active");
}else{
} else {
master_dj_switch.removeClass("active");
}
}
function controlOnAirLight(){
if ((scheduled_play_on_air && scheduled_play_source) || live_dj_on_air || master_dj_on_air) {
$('#on-air-info').attr("class", "on-air-info on");
function controlOnAirLight() {
if (
(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;
} else if (onAirOffIterations < 20) {
//if less than 4 seconds have gone by (< 20 executions of this function)
@ -374,96 +437,124 @@ function controlOnAirLight(){
//off between tracks: CC-3725
onAirOffIterations++;
} else {
$('#on-air-info').attr("class", "on-air-info off");
$("#on-air-info").attr("class", "on-air-info off");
}
}
function controlSwitchLight(){
var live_li= $("#live_dj_div").parent();
function controlSwitchLight() {
var live_li = $("#live_dj_div").parent();
var master_li = $("#master_dj_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){
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air on");
if (
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");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
}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");
} 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");
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");
}else if(master_dj_on_air){
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
} else if (master_dj_on_air) {
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");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air on");
}else{
scheduled_play_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
} else {
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");
master_li.find(".line-to-on-air").attr("class", "line-to-on-air off");
}
}
function getScheduleFromServer(){
$.ajax({ url: baseUrl+"Schedule/get-current-playlist/format/json",
dataType:"json",
success:function(data){
function getScheduleFromServer() {
$.ajax({
url: baseUrl + "Schedule/get-current-playlist/format/json",
dataType: "json",
success: function (data) {
parseItems(data.entries);
parseSourceStatus(data.source_status);
parseSwitchStatus(data.switch_status);
showName = data.show_name;
}, error:function(jqXHR, textStatus, errorThrown){}});
},
error: function (jqXHR, textStatus, errorThrown) {},
});
}
function setupQtip(){
var qtipElem = $('#about-link');
function setupQtip() {
var qtipElem = $("#about-link");
if (qtipElem.length > 0){
if (qtipElem.length > 0) {
qtipElem.qtip({
content: $('#about-txt').html(),
show: 'mouseover',
hide: { when: 'mouseout', fixed: true },
content: $("#about-txt").html(),
show: "mouseover",
hide: { when: "mouseout", fixed: true },
position: {
corner: {
target: 'center',
tooltip: 'topRight'
}
target: "center",
tooltip: "topRight",
},
},
style: {
border: {
width: 0,
radius: 4
radius: 4,
},
name: "light", // Use the default light style
},
name: 'light' // Use the default light style
}
});
}
}
function setSwitchListener(ele){
var sourcename = $(ele).attr('id');
function setSwitchListener(ele) {
var sourcename = $(ele).attr("id");
var status_span = $(ele).find("span");
var status = status_span.html();
$.get(baseUrl+"Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){
if(data.error){
$.get(
baseUrl +
"Dashboard/switch-source/format/json/sourcename/" +
sourcename +
"/status/" +
status,
function (data) {
if (data.error) {
alert(data.error);
}else{
if(data.status == "ON"){
} else {
if (data.status == "ON") {
$(ele).addClass("active");
}else{
} else {
$(ele).removeClass("active");
}
status_span.html(data.status);
}
});
}
);
}
function kickSource(ele){
var sourcename = $(ele).attr('id');
function kickSource(ele) {
var sourcename = $(ele).attr("id");
$.get(baseUrl+"Dashboard/disconnect-source/format/json/sourcename/"+sourcename, function(data){
if(data.error){
$.get(
baseUrl +
"Dashboard/disconnect-source/format/json/sourcename/" +
sourcename,
function (data) {
if (data.error) {
alert(data.error);
}
});
}
);
}
var stream_window = null;
@ -477,9 +568,13 @@ function init() {
setupQtip();
$('.listen-control-button').click(function() {
$(".listen-control-button").click(function () {
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();
return false;
});
@ -491,38 +586,37 @@ function init() {
* field. Therefore, we fill the password field with 6 x's
*/
function setCurrentUserPseudoPassword() {
$('#cu_password').val("xxxxxx");
$('#cu_passwordVerify').val("xxxxxx");
$("#cu_password").val("xxxxxx");
$("#cu_passwordVerify").val("xxxxxx");
}
/*$(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) {
$("#nav .responsive-menu").show();
}
});*/
$(document).ready(function() {
if ($('#master-panel').length > 0)
init();
if ($('.errors').length === 0) {
$(document).ready(function () {
if ($("#master-panel").length > 0) init();
if ($(".errors").length === 0) {
setCurrentUserPseudoPassword();
}
$('body').on('click','#current-user', function() {
$("body").on("click", "#current-user", function () {
$.ajax({
url: baseUrl+'user/edit-user/format/json'
url: baseUrl + "user/edit-user/format/json",
});
});
$('body').on('click', '#cu_save_user', function() {
Cookies.set('airtime_locale', $('#cu_locale').val(), {path: '/'});
$("body").on("click", "#cu_save_user", function () {
Cookies.set("airtime_locale", $("#cu_locale").val(), { path: "/" });
});
// When the 'Listen' button is clicked we set the width
// of the share button to the width of the 'Live Stream'
// 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() {
$('#nav .responsive-menu').slideToggle();

View File

@ -1,65 +1,60 @@
/* function to create popup window */
function popup(mylink){
if (!window.focus)
return true;
function popup(mylink) {
if (!window.focus) return true;
var href;
if (typeof(mylink) == 'string')
href=mylink;
else
href=mylink.href;
window.open(href, "player", 'width=300,height=100,scrollbars=yes');
if (typeof mylink == "string") href = mylink;
else href = mylink.href;
window.open(href, "player", "width=300,height=100,scrollbars=yes");
return false;
}
/* Take a string representing a date in the format 2012-04-25 and return
* a javascript date object representing this date. */
function getDateFromString(time){
function getDateFromString(time) {
var date = time.split("-");
if (date.length != 3){
if (date.length != 3) {
return null;
}
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);
if (isNaN(year) || isNaN(month) || isNaN(day)){
if (isNaN(year) || isNaN(month) || isNaN(day)) {
return null;
}
return new Date(year, month, day);
}
function convertSecondsToDaysHoursMinutesSeconds(seconds){
if (seconds < 0)
seconds = 0;
function convertSecondsToDaysHoursMinutesSeconds(seconds) {
if (seconds < 0) seconds = 0;
seconds = parseInt(seconds, 10);
var days = parseInt(seconds / 86400);
seconds -= days*86400;
seconds -= days * 86400;
var hours = parseInt(seconds / 3600);
seconds -= hours*3600;
seconds -= hours * 3600;
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
* the format HH:MM:SS */
function convertToHHMMSS(timeInMS){
function convertToHHMMSS(timeInMS) {
var time = parseInt(timeInMS);
var hours = parseInt(time / 3600000);
time -= 3600000*hours;
time -= 3600000 * hours;
var minutes = parseInt(time / 60000);
time -= 60000*minutes;
time -= 60000 * minutes;
var seconds = parseInt(time / 1000);
@ -67,26 +62,23 @@ function convertToHHMMSS(timeInMS){
minutes = minutes.toString();
seconds = seconds.toString();
if (hours.length == 1)
hours = "0" + hours;
if (minutes.length == 1)
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
if (hours.length == 1) hours = "0" + hours;
if (minutes.length == 1) minutes = "0" + minutes;
if (seconds.length == 1) seconds = "0" + seconds;
return hours + ":" + minutes + ":" + seconds;
}
function convertToHHMMSSmm(timeInMS){
function convertToHHMMSSmm(timeInMS) {
var time = parseInt(timeInMS);
var hours = parseInt(time / 3600000);
time -= 3600000*hours;
time -= 3600000 * hours;
var minutes = parseInt(time / 60000);
time -= 60000*minutes;
time -= 60000 * minutes;
var seconds = parseInt(time / 1000);
time -= 1000*seconds;
time -= 1000 * seconds;
var ms = parseInt(time);
@ -95,60 +87,46 @@ function convertToHHMMSSmm(timeInMS){
seconds = seconds.toString();
ms = ms.toString();
if (hours.length == 1)
hours = "0" + hours;
if (minutes.length == 1)
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
if (hours.length == 1) hours = "0" + hours;
if (minutes.length == 1) minutes = "0" + minutes;
if (seconds.length == 1) seconds = "0" + seconds;
if (ms.length == 3)
ms = ms.substring(0, 2);
else if (ms.length == 2)
ms = "0" + ms.substring(0,1);
else if (ms.length == 1)
ms = "00";
if (ms.length == 3) ms = ms.substring(0, 2);
else if (ms.length == 2) ms = "0" + ms.substring(0, 1);
else if (ms.length == 1) ms = "00";
if (hours == "00")
return minutes + ":" + seconds + "." + ms;
else
return hours + ":" + minutes + ":" + seconds+ "." + ms;
if (hours == "00") return minutes + ":" + seconds + "." + ms;
else return hours + ":" + minutes + ":" + seconds + "." + ms;
}
function convertDateToHHMM(epochTime){
function convertDateToHHMM(epochTime) {
var d = new Date(epochTime);
var hours = d.getUTCHours().toString();
var minutes = d.getUTCMinutes().toString();
if (hours.length == 1)
hours = "0" + hours;
if (minutes.length == 1)
minutes = "0" + minutes;
if (hours.length == 1) hours = "0" + hours;
if (minutes.length == 1) minutes = "0" + minutes;
return hours + ":" + minutes;
}
function convertDateToHHMMSS(epochTime){
function convertDateToHHMMSS(epochTime) {
var d = new Date(epochTime);
var hours = d.getUTCHours().toString();
var minutes = d.getUTCMinutes().toString();
var seconds = d.getUTCSeconds().toString();
if (hours.length == 1)
hours = "0" + hours;
if (minutes.length == 1)
minutes = "0" + minutes;
if (seconds.length == 1)
seconds = "0" + seconds;
if (hours.length == 1) hours = "0" + hours;
if (minutes.length == 1) minutes = "0" + minutes;
if (seconds.length == 1) seconds = "0" + seconds;
return hours + ":" + minutes + ":" + seconds;
}
/* Takes in a string of format similar to 2011-02-07 02:59:57,
* and converts this to epoch/posix time. */
function convertDateToPosixTime(s){
function convertDateToPosixTime(s) {
var datetime = s.split(" ");
var date = datetime[0].split("-");
@ -162,55 +140,54 @@ function convertDateToPosixTime(s){
var sec = 0;
var msec = 0;
if (time[2].indexOf(".") != -1){
if (time[2].indexOf(".") != -1) {
var temp = time[2].split(".");
sec = temp[0];
msec = temp[1];
} else
sec = time[2];
} else 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){
return filename.split('.').pop();
function getFileExt(filename) {
return filename.split(".").pop();
}
function resizeImg(ele, targetWidth, targetHeight){
function resizeImg(ele, targetWidth, targetHeight) {
var img = $(ele);
var width = ele.width;
var height = ele.height;
// resize img proportionaly
if( width > height && width > targetWidth){
var ratio = targetWidth/width;
img.css("width", targetHeight+"px");
if (width > height && width > targetWidth) {
var ratio = targetWidth / width;
img.css("width", targetHeight + "px");
var newHeight = height * ratio;
img.css("height", newHeight+"px");
}else if( width < height && height > targetHeight){
var ratio = targetHeight/height;
img.css("height", targetHeight+"px");
img.css("height", newHeight + "px");
} else if (width < height && height > targetHeight) {
var ratio = targetHeight / height;
img.css("height", targetHeight + "px");
var newWidth = width * ratio;
img.css("width", newWidth+"px");
}else if( width == height && width > targetWidth){
img.css("height", targetHeight+"px");
img.css("width", targetWidth+"px" );
img.css("width", newWidth + "px");
} else if (width == height && width > targetWidth) {
img.css("height", targetHeight + "px");
img.css("width", targetWidth + "px");
}
}
function resizeToMaxHeight(ele, targetHeight){
function resizeToMaxHeight(ele, targetHeight) {
var img = $(ele);
var width = ele.width;
var height = ele.height;
// resize img proportionaly
if( height > targetHeight){
var ratio = targetHeight/height;
img.css("height", targetHeight+"px");
if (height > targetHeight) {
var ratio = targetHeight / height;
img.css("height", targetHeight + "px");
var newWidth = width * ratio;
img.css("width", newWidth+"px");
img.css("width", newWidth + "px");
}
}
@ -226,7 +203,11 @@ function isInView(el) {
return (
rect.top >= 0 &&
rect.left >= 0 &&
rect.bottom <= (window.innerHeight || document.documentElement.clientHeight) && /*or $(window).height() */
rect.right <= (window.innerWidth || document.documentElement.clientWidth) /*or $(window).width() */
rect.bottom <=
(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 = "";
// See file legacy/application/views/helpers/VersionNotify.php for more info
if(isUpToDate()) {
if (isUpToDate()) {
msg = $.i18n._("You are running the latest version");
} else {
msg = $.i18n._("New version available: ") + link + '<ul>';
msg = $.i18n._("New version available: ") + link + "<ul>";
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) {
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) {
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) {
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) {
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;
@ -41,7 +59,6 @@ function getContent() {
*/
function getHasPatch() {
return versionNotifyInfo.hasPatch;
}
/**
@ -72,9 +89,6 @@ function getIsPreRelease() {
return versionNotifyInfo.isPreRelease;
}
/**
* Get the current version
*/
@ -93,7 +107,9 @@ function getLatestVersion() {
* Returns the download link to latest release in HTML
*/
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
*/
function setupVersionQtip(){
var qtipElem = $('#version-icon');
if (qtipElem.length > 0){
function setupVersionQtip() {
var qtipElem = $("#version-icon");
if (qtipElem.length > 0) {
qtipElem.qtip({
id: 'version',
id: "version",
content: {
text: getContent(),
title: {
text: getCurrentVersion(),
button: isUpToDate() ? false : true
}
button: isUpToDate() ? false : true,
},
},
hide: {
event: isUpToDate() ? 'mouseleave' : 'unfocus'
event: isUpToDate() ? "mouseleave" : "unfocus",
},
position: {
my: "top right",
at: "bottom left"
at: "bottom left",
},
style: {
border: {
width: 0,
radius: 4
radius: 4,
},
classes: "ui-tooltip-dark ui-tooltip-rounded",
},
classes: "ui-tooltip-dark ui-tooltip-rounded"
}
});
}
}
$(document).ready(function() {
if($('#version-icon').length > 0) {
$(document).ready(function () {
if ($("#version-icon").length > 0) {
setupVersionQtip();
}
});

View File

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

View File

@ -1,4 +1,4 @@
var AIRTIME = (function(AIRTIME) {
var AIRTIME = (function (AIRTIME) {
var mod;
if (AIRTIME.library === undefined) {
@ -7,11 +7,17 @@ var AIRTIME = (function(AIRTIME) {
mod = AIRTIME.library;
mod.checkAddButton = function() {
var selected = mod.getChosenItemsLength(), $cursor = $('tr.sb-selected'), check = false,
shows = $('tr.sb-header'), current = $('tr.sb-current-show'),
mod.checkAddButton = function () {
var selected = mod.getChosenItemsLength(),
$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.
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.
if (selected !== 0) {
@ -25,16 +31,16 @@ var AIRTIME = (function(AIRTIME) {
}
if ($cursor.length !== 0) {
btnText = $.i18n._('Add after selected items');
btnText = $.i18n._("Add after selected items");
} 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")) {
var objType = $('.active-tab .obj_type').val();
if (objType === 'block') {
btnText = $.i18n._('Add to current smart block');
var objType = $(".active-tab .obj_type").val();
if (objType === "block") {
btnText = $.i18n._("Add to current smart block");
} else {
btnText = $.i18n._('Add to current playlist');
btnText = $.i18n._("Add to current playlist");
}
} else {
check = false;
@ -46,15 +52,18 @@ var AIRTIME = (function(AIRTIME) {
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);
if (aData.ftype === "audioclip") {
$nRow.addClass("lib-audio");
$image = $nRow.find('td.library_type');
$image = $nRow.find("td.library_type");
if (!isAudioSupported(aData.mime)) {
$image.html('<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.attr("id", aData["tr_id"]).data("aData", aData).data("screen",
"timeline");
$nRow
.attr("id", aData["tr_id"])
.data("aData", aData)
.data("screen", "timeline");
};
/**
@ -83,29 +94,40 @@ var AIRTIME = (function(AIRTIME) {
return;
}
}
var emptyRow = table.find('tr:has(td.dataTables_empty)'),
var emptyRow = table.find("tr:has(td.dataTables_empty)"),
wrapper = table.closest(".dataTables_wrapper"),
libEmpty = wrapper.find('.empty_placeholder');
libEmpty = wrapper.find(".empty_placeholder");
if (emptyRow.length > 0) {
emptyRow.hide();
var mediaType = parseInt($('.media_type_selector.selected').data('selection-id')),
img = wrapper.find('.empty_placeholder_image');
var mediaType = parseInt(
$(".media_type_selector.selected").data("selection-id")
),
img = wrapper.find(".empty_placeholder_image");
if (!opts && isNaN(mediaType)) {
return;
}
// 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) {
img.addClass("empty_placeholder_image " + opts.iconClass);
wrapper.find('.empty_placeholder_text').html(opts.html);
wrapper.find(".empty_placeholder_text").html(opts.html);
} else {
opts = AIRTIME.library.placeholder(mediaType);
img.addClass("empty_placeholder_image icon-white " + opts.icon);
wrapper.find('.empty_placeholder_text').html(
$.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>"
wrapper
.find(".empty_placeholder_text")
.html(
$.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() {
var table = $('#library_display'),
var table = $("#library_display"),
cb = table.find('th[class*="checkbox"]');
if (cb.find("input").length == 0) {
cb.append("<input id='super-checkbox' type='checkbox'>");
@ -135,14 +157,15 @@ var AIRTIME = (function(AIRTIME) {
sortable = ".active-tab .spl_sortable";
}
$('#library_display tr[class*="lib-"]')
.draggable(
{
$('#library_display tr[class*="lib-"]').draggable({
helper: function () {
var $el = $(this), selected = mod
.getChosenItemsLength(), container, thead = $("#show_builder_table thead"), colspan = thead
.find("th").length, width = $el.width(), message;
var $el = $(this),
selected = mod.getChosenItemsLength(),
container,
thead = $("#show_builder_table thead"),
colspan = thead.find("th").length,
width = $el.width(),
message;
// dragging an element that has an unselected
// checkbox.
@ -156,36 +179,47 @@ var AIRTIME = (function(AIRTIME) {
message = sprintf($.i18n._("Adding %s Items"), selected);
}
container = $('<div/>').attr('id',
'draggingContainer').append('<tr/>')
.find("tr").append('<td/>').find("td")
.attr("colspan", colspan).width(width)
.addClass("ui-state-highlight").append(
message).end().end();
container = $("<div/>")
.attr("id", "draggingContainer")
.append("<tr/>")
.find("tr")
.append("<td/>")
.find("td")
.attr("colspan", colspan)
.width(width)
.addClass("ui-state-highlight")
.append(message)
.end()
.end();
return container;
},
create: function(event, ui) {
create: function (event, ui) {
$(this).draggable("option", "cursorAt", {
top: 20,
left: Math.floor($(this).outerWidth() / 2)
left: Math.floor($(this).outerWidth() / 2),
});
},
tolerance: 'pointer',
cursor: 'move',
tolerance: "pointer",
cursor: "move",
distance: 25, // min-distance for dragging
connectToSortable: sortable
connectToSortable: sortable,
});
};
mod.dblClickAdd = function(data, type) {
var i, length, temp, aMediaIds = [], aSchedIds = [], aData = [];
mod.dblClickAdd = function (data, type) {
var i,
length,
temp,
aMediaIds = [],
aSchedIds = [],
aData = [];
if ($("#show_builder_table").is(":visible")) {
// process selected files/playlists.
aMediaIds.push({
"id": data.id,
"type": type
id: data.id,
type: type,
});
$("#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++) {
temp = aData[i];
aSchedIds.push({
"id": temp.id,
"instance": temp.instance,
"timestamp": temp.timestamp
id: temp.id,
instance: temp.instance,
timestamp: temp.timestamp,
});
}
@ -214,9 +248,11 @@ var AIRTIME = (function(AIRTIME) {
aMediaIds.push(new Array(data.id, data.ftype));
// check if a playlist/block is open before adding items
if ($('.active-tab .obj_type').val() == 'playlist'
|| $('.active-tab .obj_type').val() == 'block') {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after');
if (
$(".active-tab .obj_type").val() == "playlist" ||
$(".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");
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;
}
arr.push({
"id" : data.id,
"instance" : data.instance,
"timestamp" : data.timestamp
id: data.id,
instance: data.instance,
timestamp: data.timestamp,
});
if (!isInView(el)) {
$('.dataTables_scrolling.sb-padded').animate({
scrollTop: el.offset().top
}, 0);
$(".dataTables_scrolling.sb-padded").animate(
{
scrollTop: el.offset().top,
},
0
);
}
return true;
@ -249,26 +290,30 @@ var AIRTIME = (function(AIRTIME) {
mod.addToSchedule = function (selected) {
console.log(selected);
var aMediaIds = [], aSchedIds = [], aData = [];
var aMediaIds = [],
aSchedIds = [],
aData = [];
$.each(selected, function () {
aMediaIds.push({
"id": this.id,
"type": this.ftype
id: this.id,
type: this.ftype,
});
});
// 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"));
});
// process selected schedule rows to add media after.
$.each(aData, function () {
aSchedIds.push({
"id": this.id,
"instance": this.instance,
"timestamp": this.timestamp
id: this.id,
instance: this.instance,
timestamp: this.timestamp,
});
});
@ -281,28 +326,25 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.showbuilder.fnAdd(aMediaIds, aSchedIds);
};
mod.setupLibraryToolbar = function() {
mod.setupLibraryToolbar = function () {
var $toolbar = $(".lib-content .fg-toolbar:first");
mod.createToolbarButtons();
//mod.moveSearchBarToHeader();
$("#advanced_search").click(function(e) {
$("#advanced_search").click(function (e) {
e.stopPropagation();
});
if (localStorage.getItem('user-type') != 'G') {
if (localStorage.getItem("user-type") != "G") {
$toolbar.append($menu);
// add to timeline button
$toolbar
.find('#library-plus')
.click(
function () {
if (AIRTIME.button.isDisabled('btn-group #library-plus') === true) {
$toolbar.find("#library-plus").click(function () {
if (AIRTIME.button.isDisabled("btn-group #library-plus") === true) {
return;
}
var selected = AIRTIME.library.getSelectedData(), aMediaIds = [];
var selected = AIRTIME.library.getSelectedData(),
aMediaIds = [];
if ($("#show_builder_table").is(":visible")) {
mod.addToSchedule(selected);
@ -312,15 +354,17 @@ var AIRTIME = (function(AIRTIME) {
});
// check if a playlist/block is open before adding items
if ($('.active-tab .obj_type').val() == 'playlist'
|| $('.active-tab .obj_type').val() == 'block') {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, 'after');
if (
$(".active-tab .obj_type").val() == "playlist" ||
$(".active-tab .obj_type").val() == "block"
) {
AIRTIME.playlist.fnAddItems(aMediaIds, undefined, "after");
}
}
});
$toolbar.find('#publish-btn').click(function () {
if (AIRTIME.button.isDisabled('btn-group #publish-btn') === true) {
$toolbar.find("#publish-btn").click(function () {
if (AIRTIME.button.isDisabled("btn-group #publish-btn") === true) {
return;
}
@ -333,16 +377,16 @@ var AIRTIME = (function(AIRTIME) {
});
// delete from library.
$toolbar.find('#sb-delete').click(function () {
if (AIRTIME.button.isDisabled('btn-group #sb-delete') === true) {
$toolbar.find("#sb-delete").click(function () {
if (AIRTIME.button.isDisabled("btn-group #sb-delete") === true) {
return;
}
AIRTIME.library.fnDeleteSelectedItems();
});
$toolbar.find('#sb-new').click(function () {
if (AIRTIME.button.isDisabled('btn-group #sb-new') === true) {
$toolbar.find("#sb-new").click(function () {
if (AIRTIME.button.isDisabled("btn-group #sb-new") === true) {
return;
}
@ -352,14 +396,15 @@ var AIRTIME = (function(AIRTIME) {
AIRTIME.playlist.fnNew();
} else if (selection == AIRTIME.library.MediaTypeIntegerEnum.BLOCK) {
AIRTIME.playlist.fnNewBlock();
} else if (selection == AIRTIME.library.MediaTypeIntegerEnum.WEBSTREAM) {
} else if (
selection == AIRTIME.library.MediaTypeIntegerEnum.WEBSTREAM
) {
AIRTIME.playlist.fnWsNew();
}
});
$toolbar.find('#sb-edit').click(function () {
if (AIRTIME.button.isDisabled('btn-group #sb-edit') === true) {
$toolbar.find("#sb-edit").click(function () {
if (AIRTIME.button.isDisabled("btn-group #sb-edit") === true) {
return;
}
@ -369,15 +414,19 @@ var AIRTIME = (function(AIRTIME) {
var data = $(el).data("aData");
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);
//buildEditMetadataDialog(json);
});
}
);
} 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();
} 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;
}(AIRTIME || {}));
})(AIRTIME || {});

File diff suppressed because it is too large Load Diff

View File

@ -1,26 +1,25 @@
$(document).ready(function () {
var uploadProgress;
var self = this;
self.uploadFilter = "all";
self.IMPORT_STATUS_CODES = {
0: {message: $.i18n._("Successfully imported")},
1: {message: $.i18n._("Pending import")},
2: {message: $.i18n._("Import failed.")},
UNKNOWN: {message: $.i18n._("Unknown")}
0: { message: $.i18n._("Successfully imported") },
1: { message: $.i18n._("Pending import") },
2: { message: $.i18n._("Import failed.") },
UNKNOWN: { message: $.i18n._("Unknown") },
};
if (Object.freeze) {
Object.freeze(self.IMPORT_STATUS_CODES);
}
Dropzone.options.addMediaDropzone = {
url: '/rest/media',
url: "/rest/media",
//clickable: false,
acceptedFiles: acceptedMimeTypes.join(),
addRemoveLinks: true,
dictRemoveFile: $.i18n._("Remove"),
maxFilesize:LIBRETIME_PLUPLOAD_MAX_FILE_SIZE, //Megabytes
maxFilesize: LIBRETIME_PLUPLOAD_MAX_FILE_SIZE, //Megabytes
init: function () {
this.on("sending", function (file, xhr, data) {
data.append("csrf_token", $("#csrf").val());
@ -39,16 +38,21 @@ $(document).ready(function () {
//In DataTables 1.10 and greater, we can use .fnAjaxReload()
});
this.on("queuecomplete", function() {
this.on("queuecomplete", function () {
uploadProgress = false;
});
}
},
};
$(window).bind('beforeunload', function () {
$(window).bind("beforeunload", function () {
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?"),
"\n", "\n");
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?"
),
"\n",
"\n"
);
}
});
@ -68,12 +72,17 @@ $(document).ready(function () {
self.renderFileActions = function (data, type, full) {
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) {
//No actions for pending files
return $.i18n._('N/A');
} else { //Failed downloads
return '<a class="deleteFileAction">' + $.i18n._('Clear') + '</a>';
return $.i18n._("N/A");
} else {
//Failed downloads
return '<a class="deleteFileAction">' + $.i18n._("Clear") + "</a>";
}
};
@ -82,58 +91,66 @@ $(document).ready(function () {
// Some tips from the DataTables forums:
// fnGetData is used to get the object behind the row - you can also use
// 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({
type: 'DELETE',
url: 'rest/media/' + file.id + "?csrf_token=" + $("#csrf").attr('value'),
type: "DELETE",
url: "rest/media/" + file.id + "?csrf_token=" + $("#csrf").attr("value"),
success: function (resp) {
self.recentUploadsTable.fnDraw();
},
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 () {
return $("#recent_uploads_table").dataTable({
"bJQueryUI": true,
"bProcessing": false,
"bServerSide": true,
"sAjaxSource": '/plupload/recent-uploads/format/json',
"sAjaxDataProp": 'files',
"bSearchable": false,
"bInfo": true,
bJQueryUI: true,
bProcessing: false,
bServerSide: true,
sAjaxSource: "/plupload/recent-uploads/format/json",
sAjaxDataProp: "files",
bSearchable: false,
bInfo: true,
//"sScrollY": "200px",
"bFilter": false,
"bSort": false,
bFilter: false,
bSort: false,
//"sDom": '<"H">frtip<"F"l>',
"sDom": '<"dataTables_scrolling"frt><"F"lip>',
"bPaginate": true,
"sPaginationType": "full_numbers",
"oLanguage": getDatatablesStrings({
"sEmptyTable": $.i18n._("No files have been uploaded yet."),
"sInfoEmpty": $.i18n._("Showing 0 to 0 of 0 uploads"),
"sInfo": $.i18n._("Showing _START_ to _END_ of _TOTAL_ uploads"),
"sInfoFiltered": $.i18n._("(filtered from _MAX_ total uploads)"),
sDom: '<"dataTables_scrolling"frt><"F"lip>',
bPaginate: true,
sPaginationType: "full_numbers",
oLanguage: getDatatablesStrings({
sEmptyTable: $.i18n._("No files have been uploaded yet."),
sInfoEmpty: $.i18n._("Showing 0 to 0 of 0 uploads"),
sInfo: $.i18n._("Showing _START_ to _END_ of _TOTAL_ uploads"),
sInfoFiltered: $.i18n._("(filtered from _MAX_ total uploads)"),
}),
"aoColumns": [
{"mData": "artist_name", "sTitle": $.i18n._("Creator")},
{"mData": "track_title", "sTitle": $.i18n._("Title")},
aoColumns: [
{ mData: "artist_name", sTitle: $.i18n._("Creator") },
{ mData: "track_title", sTitle: $.i18n._("Title") },
{
"mData": "import_status", "sTitle": $.i18n._("Import Status"),
"mRender": self.renderImportStatus
mData: "import_status",
sTitle: $.i18n._("Import Status"),
mRender: self.renderImportStatus,
},
{"mData": "utime", "sTitle": $.i18n._("Uploaded")},
{ mData: "utime", sTitle: $.i18n._("Uploaded") },
{
"mData": "id", "sTitle": $.i18n._("Actions"),
"mRender": self.renderFileActions
}
mData: "id",
sTitle: $.i18n._("Actions"),
mRender: self.renderFileActions,
},
],
"fnServerData": function (sSource, aoData, fnCallback) {
fnServerData: function (sSource, aoData, fnCallback) {
/* 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) {
fnCallback(json);
if (json.files) {
@ -158,7 +175,7 @@ $(document).ready(function () {
getUsabilityHint();
}
});
}
},
});
};
@ -167,8 +184,9 @@ $(document).ready(function () {
self.isRecentUploadsRefreshTimerActive = false;
self.startRefreshingRecentUploads = function () {
if (!self.isRecentUploadsRefreshTimerActive) { //Prevent multiple timers from running
self.recentUploadsRefreshTimer = setInterval(function() {
if (!self.isRecentUploadsRefreshTimerActive) {
//Prevent multiple timers from running
self.recentUploadsRefreshTimer = setInterval(function () {
self.recentUploadsTable.fnDraw();
}, 3000);
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>');
$("#select_type").on("change",function(){
$("#select_type").on("change", function () {
var ttValue = $("#select_type").val();
var ttText = $('#select_type option[value="'+ttValue+'"]').text();
if (ttValue != ""){
var ttText = $('#select_type option[value="' + ttValue + '"]').text();
if (ttValue != "") {
$("#upload_type").text(" " + ttText);
$("#upload_type").css("color", "#ff611f");
} else {
$("#upload_type").text(" Tracks");
$("#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.episodeTables = {};
var endpoint = '/rest/podcast/', PodcastEpisodeTable;
var endpoint = "/rest/podcast/",
PodcastEpisodeTable;
/**
* PodcastController constructor.
@ -36,7 +37,7 @@ var AIRTIME = (function (AIRTIME) {
view.find("table").attr("id", "podcast_episodes_" + podcast.id);
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");
setTimeout(function () {
successMsg.hide("fast");
@ -49,13 +50,16 @@ var AIRTIME = (function (AIRTIME) {
* Save and update the podcast object.
*/
$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 () {
self.onSaveCallback();
});
};
/**
* Generate a smartblock and playlist for this smartblock.
*/
@ -66,21 +70,21 @@ var AIRTIME = (function (AIRTIME) {
{
csrf_token: $("#csrf").val(),
id: $scope.podcast.id,
title: $scope.podcast.title
title: $scope.podcast.title,
},
function() {
function () {
// show success message
var successMsg = $('.active-tab .pc-sb-success')
var successMsg = $(".active-tab .pc-sb-success");
successMsg.show("fast");
setTimeout(function(){
setTimeout(function () {
successMsg.hide("fast");
}, 5000);
// 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,
podcast: $scope.podcast
podcast: $scope.podcast,
})
.success(function () {
AIRTIME.library.podcastDataTable.fnDraw();
@ -108,15 +112,12 @@ var AIRTIME = (function (AIRTIME) {
return self;
}
/**
* Initialize the controller.
*
* Sets up the internal datatable.
*/
PodcastController.prototype.initialize = function() {
PodcastController.prototype.initialize = function () {
var self = this;
// TODO: this solves a race condition, but we should look for the root cause
AIRTIME.tabs.onResize();
@ -125,7 +126,7 @@ var AIRTIME = (function (AIRTIME) {
// import listener so we don't cause memory leaks.
var podcastId = self.$scope.podcast.id.toString();
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] = null;
self.$scope.$destroy();
@ -150,13 +151,19 @@ var AIRTIME = (function (AIRTIME) {
PodcastController.call(this, $scope, $http, podcast, tab);
this.onSaveCallback = function () {
$http({
method: 'POST',
url: '/preference/station-podcast-settings',
headers: {'Content-Type': 'application/x-www-form-urlencoded'},
data: { stationPodcastPrivacy: $("#podcast-settings").find("input:checked").val() }
method: "POST",
url: "/preference/station-podcast-settings",
headers: { "Content-Type": "application/x-www-form-urlencoded" },
data: {
stationPodcastPrivacy: $("#podcast-settings")
.find("input:checked")
.val(),
},
}).success(function (data) {
jQuery.extend($scope.podcast, data);
$(".success").text($.i18n._("Podcast settings saved")).slideDown("fast");
$(".success")
.text($.i18n._("Podcast settings saved"))
.slideDown("fast");
setTimeout(function () {
$(".success").slideUp("fast");
}, 2000);
@ -170,16 +177,27 @@ var AIRTIME = (function (AIRTIME) {
*
* @type {PodcastController}
*/
StationPodcastController.prototype = Object.create(PodcastController.prototype);
StationPodcastController.prototype = Object.create(
PodcastController.prototype
);
/**
* Remove the selected episodes from the station podcast feed.
*/
StationPodcastController.prototype.unpublishSelectedEpisodes = function () {
var self = this, $scope = self.$scope,
var self = this,
$scope = self.$scope,
episodes = self.episodeTable.getSelectedRows();
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 () {
self.reloadEpisodeTable();
});
@ -191,33 +209,44 @@ var AIRTIME = (function (AIRTIME) {
*
* @private
*/
StationPodcastController.prototype._initTable = function() {
var self = this, $scope = this.$scope,
StationPodcastController.prototype._initTable = function () {
var self = this,
$scope = this.$scope,
buttons = {
deleteBtn: {
title : $.i18n._('Unpublish'),
iconClass : 'icon-trash',
extraBtnClass : 'btn-danger',
elementId : '',
eventHandlers : {
click: self.unpublishSelectedEpisodes.bind(self)
title: $.i18n._("Unpublish"),
iconClass: "icon-trash",
extraBtnClass: "btn-danger",
elementId: "",
eventHandlers: {
click: self.unpublishSelectedEpisodes.bind(self),
},
validateConstraints: function () {
return this.getSelectedRows().length >= 1;
}
}
},
},
},
params = {
sAjaxSource : endpoint + $scope.podcast.id + '/episodes',
sAjaxSource: endpoint + $scope.podcast.id + "/episodes",
aoColumns: [
// 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" },
/* Description */ { "sTitle" : $.i18n._("Description") , "mDataProp" : "CcFiles.description" , "sClass" : "podcast_episodes_description" , "sWidth" : "300px" }
]
/* Title */ {
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(
$('.podcast_episodes'),
$(".podcast_episodes"),
params,
buttons,
{
@ -225,10 +254,16 @@ var AIRTIME = (function (AIRTIME) {
podcastId: $scope.podcast.id,
emptyPlaceholder: {
iconClass: "icon-white icon-th-list",
html: $.i18n._("You haven't published any episodes!")
+ "<br/>" + $.i18n._("You can publish your uploaded content from the 'Tracks' view.")
+ "<br/><a target='_parent' href='/showbuilder#tracks'>" + $.i18n._("Try it now") + "</a>"
}
html:
$.i18n._("You haven't published any episodes!") +
"<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.
*/
StationPodcastController.prototype.initialize = function() {
StationPodcastController.prototype.initialize = function () {
// We want to override the default tab name behaviour and use "My Podcast" for clarity
this._initTable();
};
@ -248,7 +283,7 @@ var AIRTIME = (function (AIRTIME) {
*
* Reload the Station podcast episode table.
*/
StationPodcastController.prototype.reloadEpisodeTable = function() {
StationPodcastController.prototype.reloadEpisodeTable = function () {
this.episodeTable.getDatatable().fnDraw();
};
@ -257,9 +292,22 @@ var AIRTIME = (function (AIRTIME) {
*
* Bootstrapped for each podcast or Station podcast tab.
*/
mod.podcastApp = angular.module('podcast', [])
.controller('Podcast', ['$scope', '$http', 'podcast', 'tab', PodcastController])
.controller('StationPodcast', ['$scope', '$http', 'podcast', 'tab', StationPodcastController]);
mod.podcastApp = angular
.module("podcast", [])
.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
@ -274,8 +322,8 @@ var AIRTIME = (function (AIRTIME) {
*/
function _bulkAction(selectedData, method, callback) {
var ids = [];
selectedData.forEach(function(el) {
var uid = AIRTIME.library.MediaTypeStringEnum.PODCAST+"_"+el.id,
selectedData.forEach(function (el) {
var uid = AIRTIME.library.MediaTypeStringEnum.PODCAST + "_" + el.id,
t = AIRTIME.tabs.get(uid);
if (t && method == HTTPMethods.DELETE) {
t.close();
@ -288,7 +336,11 @@ var AIRTIME = (function (AIRTIME) {
});
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
*/
function _bootstrapAngularApp(podcast, tab) {
mod.podcastApp.value('podcast', podcast);
mod.podcastApp.value('tab', tab);
mod.podcastApp.value("podcast", podcast);
mod.podcastApp.value("tab", tab);
var wrapper = tab.contents.find(".angular_wrapper");
angular.bootstrap(wrapper.get(0), ["podcast"]);
}
@ -323,38 +375,41 @@ var AIRTIME = (function (AIRTIME) {
*/
function _initAppFromResponse(data) {
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);
_bootstrapAngularApp(podcast, tab);
$(".album_names.help_icon").qtip({
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: {
delay: 500,
fixed: true
fixed: true,
},
style: {
border: {
width: 0,
radius: 4
radius: 4,
},
classes: "ui-tooltip-dark ui-tooltip-rounded"
classes: "ui-tooltip-dark ui-tooltip-rounded",
},
position: {
my: "left bottom",
at: "right center"
}
at: "right center",
},
});
// 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.id.toString()
);
episodeTable.reload(podcast.id);
episodeTable.clearSelection()
episodeTable.clearSelection();
}
/**
@ -365,17 +420,32 @@ var AIRTIME = (function (AIRTIME) {
* @private
*/
function _initPodcastEpisodeTable() {
PodcastEpisodeTable = function(wrapperDOMNode, bItemSelection, toolbarButtons, dataTablesOptions, config) {
PodcastEpisodeTable = function (
wrapperDOMNode,
bItemSelection,
toolbarButtons,
dataTablesOptions,
config
) {
this.config = config; // Internal configuration object
this._setupImportListener();
// 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
PodcastEpisodeTable.prototype = Object.create(AIRTIME.widgets.Table.prototype);
PodcastEpisodeTable.prototype = Object.create(
AIRTIME.widgets.Table.prototype
);
PodcastEpisodeTable.prototype.constructor = PodcastEpisodeTable;
PodcastEpisodeTable.prototype._SELECTORS = Object.freeze({
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}
* @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>",
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>";
if (this.config.hideIngestCheckboxes && rowData.ingested && rowData.ingested != 0) {
if (
this.config.hideIngestCheckboxes &&
rowData.ingested &&
rowData.ingested != 0
) {
return rowData.ingested > 0 ? importIcon : pendingIcon;
}
rowData.importIcon = (rowData.ingested != 0) ? (rowData.ingested > 0 ? importIcon : pendingIcon) : defaultIcon;
return AIRTIME.widgets.Table.prototype._datatablesCheckboxDataDelegate.call(this, rowData, callType, dataToSave);
rowData.importIcon =
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
// and pass this function the ID of the podcast we want to display.
if (id) this.config.podcastId = id;
var self = this, dt = self._datatable;
var self = this,
dt = self._datatable;
dt.block({
message: "",
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.fnAddData(JSON.parse(json));
}).done(function () {
@ -439,9 +529,11 @@ var AIRTIME = (function (AIRTIME) {
PodcastEpisodeTable.prototype._setupImportListener = function () {
var self = this;
self.importListener = setInterval(function () {
var podcastId = self.config.podcastId, pendingRows = [];
var podcastId = self.config.podcastId,
pendingRows = [];
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
$.each(data, function () {
if (this.ingested == -1) {
@ -451,11 +543,11 @@ var AIRTIME = (function (AIRTIME) {
if (pendingRows.length > 0) {
// Manually trigger the Celery task to update the internal
// 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,
// then check if any of the pending rows have
// succeeded or failed before reloading the table.
$.get(endpoint + podcastId + '/episodes', function (json) {
$.get(endpoint + podcastId + "/episodes", function (json) {
data = JSON.parse(json);
var delta = false;
$.each(data, function () {
@ -465,7 +557,8 @@ var AIRTIME = (function (AIRTIME) {
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
// reload() here; this also provides a smoother transition
dt.fnClearTable(false);
@ -481,24 +574,24 @@ var AIRTIME = (function (AIRTIME) {
*/
PodcastEpisodeTable.prototype.destroy = function () {
clearInterval(this.importListener);
}
};
}
/**
* Create and show the URL dialog for podcast creation.
*/
mod.createUrlDialog = function () {
$.get('/render/podcast-url-dialog', function(json) {
$.get("/render/podcast-url-dialog", function (json) {
$(document.body).append(json.html);
$("#podcast_url_dialog").dialog({
title: $.i18n._("Add New Podcast"),
resizable: false,
modal: true,
width: '450px',
width: "450px",
height: 129,
close: function () {
$(this).remove();
}
},
});
});
};
@ -510,7 +603,10 @@ var AIRTIME = (function (AIRTIME) {
* FIXME: we should probably be passing the serialized form into this function instead
*/
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
AIRTIME.library.podcastDataTable.fnDraw();
@ -519,7 +615,8 @@ var AIRTIME = (function (AIRTIME) {
// open newly created podcast in right-side edit pane
_initAppFromResponse(json);
}).fail(function (e) {
}
).fail(function (e) {
var errors = $("#podcast_url_dialog").find(".errors");
errors.show(200).text(e.responseText);
setTimeout(function () {
@ -532,21 +629,35 @@ var AIRTIME = (function (AIRTIME) {
* Create a bulk request to edit all currently selected podcasts.
*/
mod.editSelectedPodcasts = function () {
_bulkAction(AIRTIME.library.podcastTableWidget.getSelectedRows(), HTTPMethods.GET, function(json) {
json.forEach(function(data) {
_bulkAction(
AIRTIME.library.podcastTableWidget.getSelectedRows(),
HTTPMethods.GET,
function (json) {
json.forEach(function (data) {
_initAppFromResponse(data);
});
});
}
);
};
/**
* Create a bulk request to delete all currently selected podcasts.
*/
mod.deleteSelectedPodcasts = function () {
if (confirm($.i18n._("Are you sure you want to delete the selected podcasts from your library?"))) {
_bulkAction(AIRTIME.library.podcastTableWidget.getSelectedRows(), HTTPMethods.DELETE, function () {
if (
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();
});
}
);
}
};
@ -558,10 +669,15 @@ var AIRTIME = (function (AIRTIME) {
mod.editSelectedEpisodes = function (episodes) {
$.each(episodes, function () {
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;
$.get(baseUrl + "library/edit-file-md/id/" + fileId, {format: "json"}, function (json) {
var fileId = this.file_id || this.file.id,
uid = AIRTIME.library.MediaTypeStringEnum.FILE + "_" + fileId;
$.get(
baseUrl + "library/edit-file-md/id/" + fileId,
{ format: "json" },
function (json) {
AIRTIME.playlist.fileMdEdit(json, uid);
});
}
);
});
};
@ -579,12 +695,16 @@ var AIRTIME = (function (AIRTIME) {
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(),
episode: this
}), function () {
episode: this,
}),
function () {
dt.reload(dt.config.podcastId);
});
}
);
remainingDiskSpace -= this.enclosure.length;
});
@ -607,8 +727,10 @@ var AIRTIME = (function (AIRTIME) {
/**
* 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
* buttons should be enabled or disabled.
@ -620,7 +742,8 @@ var AIRTIME = (function (AIRTIME) {
* the button should be enabled, otherwise false.
*/
var checkSelectedEpisodeImportStatus = function (shouldBeImported) {
var selected = this.getSelectedRows(), isValid = true;
var selected = this.getSelectedRows(),
isValid = true;
if (selected.length == 0) return false;
$.each(selected, function () {
if (this.ingested < 0) isValid = false;
@ -634,87 +757,109 @@ var AIRTIME = (function (AIRTIME) {
// Setup the default buttons (new, edit, delete)
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"),
eventHandlers: {
click: function () {
var episodes = mod.episodeTables[podcastId].getSelectedRows();
AIRTIME.podcast.importSelectedEpisodes(episodes, mod.episodeTables[podcastId]);
}
AIRTIME.podcast.importSelectedEpisodes(
episodes,
mod.episodeTables[podcastId]
);
},
},
validateConstraints: function () {
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: {
click: function () {
var episodes = mod.episodeTables[podcastId].getSelectedRows();
AIRTIME.podcast.editSelectedEpisodes(episodes);
}
},
},
validateConstraints: function () {
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: {
click: function () {
var data = [], episodes = mod.episodeTables[podcastId].getSelectedRows();
var data = [],
episodes = mod.episodeTables[podcastId].getSelectedRows();
$.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);
}
},
},
validateConstraints: function () {
return checkSelectedEpisodeImportStatus.call(this, true);
},
}
});
);
// 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?)
podcastEpisodeButtons = {
newBtn : podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW],
editBtn: podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT],
delBtn : podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE]
newBtn:
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.NEW],
editBtn:
podcastEpisodeButtons[AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.EDIT],
delBtn:
podcastEpisodeButtons[
AIRTIME.widgets.Table.TOOLBAR_BUTTON_ROLES.DELETE
],
};
$.extend(true, podcastEpisodeButtons, {
addToScheduleBtn: {
title : $.i18n._('Add to Schedule'),
iconClass : 'icon-plus',
extraBtnClass : 'btn-small',
elementId : '',
eventHandlers : {
title: $.i18n._("Add to Schedule"),
iconClass: "icon-plus",
extraBtnClass: "btn-small",
elementId: "",
eventHandlers: {
click: function () {
var data = [], selected = AIRTIME.podcast.episodeTables[podcastId].getSelectedRows();
$.each(selected, function () { data.push(this.file); });
var data = [],
selected =
AIRTIME.podcast.episodeTables[podcastId].getSelectedRows();
$.each(selected, function () {
data.push(this.file);
});
AIRTIME.library.addToSchedule(data);
}
},
},
validateConstraints: function () {
// TODO: change text + behaviour for playlists, smart blocks, etc.
return checkSelectedEpisodeImportStatus.call(this, true);
}
},
},
viewDescBtn: {
title : $.i18n._("View"),
iconClass : "icon-globe",
extraBtnClass : "btn-small",
elementId : "",
eventHandlers : {
title: $.i18n._("View"),
iconClass: "icon-globe",
extraBtnClass: "btn-small",
elementId: "",
eventHandlers: {
click: function () {
AIRTIME.library.openPodcastEpisodeDialog(podcastId);
}
},
},
validateConstraints: function () {
return this.getSelectedRows().length == 1;
}
}
},
},
});
mod.episodeTables[podcastId] = AIRTIME.podcast.initPodcastEpisodeDatatable(
@ -725,10 +870,16 @@ var AIRTIME = (function (AIRTIME) {
hideIngestCheckboxes: false,
emptyPlaceholder: {
iconClass: "icon-white icon-th-list",
html: $.i18n._("This podcast doesn't have any episodes!")
+ "<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>"
}
html:
$.i18n._("This podcast doesn't have any episodes!") +
"<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)) {
mod.dblClickAdd(data.file, data.file.ftype);
} else {
if (data.ingested >= 0) { // Only import if the file isn't pending
AIRTIME.podcast.importSelectedEpisodes([data], mod.episodeTables[podcastId]);
if (data.ingested >= 0) {
// 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
*/
mod.initPodcastEpisodeDatatable = function (domNode, params, buttons, config) {
mod.initPodcastEpisodeDatatable = function (
domNode,
params,
buttons,
config
) {
params = $.extend(true, params, {
aoColumns : [
/* GUID */ { "sTitle" : "" , "mDataProp" : "guid" , "sClass" : "podcast_episodes_guid" , "bVisible" : false },
/* 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" }
aoColumns: [
/* GUID */ {
sTitle: "",
mDataProp: "guid",
sClass: "podcast_episodes_guid",
bVisible: false,
},
/* 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,
sAjaxSource : null,
bServerSide: false,
sAjaxSource: null,
// Initialize the table with empty data so we can defer loading
// If we load sequentially there's a delay before the table appears
aaData : {},
oColVis : {
aaData: {},
oColVis: {
buttonText: $.i18n._("Columns"),
iOverlayFade: 0,
aiExclude: [0, 1, 2]
aiExclude: [0, 1, 2],
},
bDeferRender: true,
oColReorder: {
iFixedColumns: 3 // Checkbox + imported
iFixedColumns: 3, // Checkbox + imported
},
fnCreatedRow: function(nRow, aData, iDataIndex) {
fnCreatedRow: function (nRow, aData, iDataIndex) {
var self = this;
if (aData.file && Object.keys(aData.file).length > 0) {
$(nRow).draggable({
helper: function () {
var $row = $(this), data = self._datatable.fnGetData(nRow);
var $row = $(this),
data = self._datatable.fnGetData(nRow);
$row.data("aData", data.file);
self.selectRow(this, data, self.SELECTION_MODE.SINGLE, $row.index());
var selected = self.getSelectedRows().length, container,
width = self._$wrapperDOMNode.closest(".dataTables_wrapper").outerWidth(), message;
self.selectRow(
this,
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);
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();
message = sprintf(
$.i18n._(selected > 1 ? "Adding %s Items" : "Adding %s Item"),
selected
);
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;
},
tolerance: 'pointer',
cursor: 'move',
tolerance: "pointer",
cursor: "move",
cursorAt: {
top: 20,
left: Math.floor(self._datatable.outerWidth() / 2)
left: Math.floor(self._datatable.outerWidth() / 2),
},
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);
// Hide the processing div
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();
}
@ -839,9 +1062,9 @@ var AIRTIME = (function (AIRTIME) {
};
return AIRTIME;
}(AIRTIME || {}));
})(AIRTIME || {});
$(document).ready(function() {
$(document).ready(function () {
$(document).on("submit", "#podcast_url_form", function (e) {
e.preventDefault();
AIRTIME.podcast.addPodcast();

View File

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

File diff suppressed because it is too large Load Diff

View File

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

View File

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

View File

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

View File

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

View File

@ -1,19 +1,18 @@
function updateEmbedSrcParams()
{
function updateEmbedSrcParams() {
var $embedCodeParams = "?";
var $streamMode = getStreamMode();
if ($streamMode == "manual") {
var $stream = $("input[name=player_stream_url]:radio:checked").val();
$embedCodeParams += "stream="+$stream;
$embedCodeParams += "stream=" + $stream;
} else if ($streamMode == "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);
});
@ -23,7 +22,7 @@ function updateEmbedSrcParams()
function updatePlayerIframeSrc(iframe_text) {
var $player_iframe = $("#player_form iframe");
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() {
@ -34,21 +33,19 @@ function getPlayerTitle() {
return $("input[name=player_title]").val();
}
$(document).ready(function() {
$(document).ready(function () {
$("#player_stream_url-element").hide();
// stream mode change event
$("#player_stream_mode-element").change(function() {
$("#player_stream_mode-element").change(function () {
var $streamMode = getStreamMode();
if ($streamMode == "auto") {
$("#player_stream_url-element").hide();
} else if ($streamMode == "manual") {
$("#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) {
$(this).attr("disabled", "disabled");
}
@ -59,12 +56,12 @@ $(document).ready(function() {
});
// stream url change event
$("#player_stream_url-element").change(function() {
$("#player_stream_url-element").change(function () {
updateEmbedSrcParams();
});
// display title checkbox change event
$("#player_display_title").change(function() {
$("#player_display_title").change(function () {
if ($(this).prop("checked")) {
$("#player_title-label").show();
$("#player_title-element").show();
@ -81,13 +78,13 @@ $(document).ready(function() {
var doneTypingInterval = 3000;
// on keyup, start the countdown
$("input[name=player_title]").keyup(function(){
$("input[name=player_title]").keyup(function () {
clearTimeout(typingTimer);
typingTimer = setTimeout(updateEmbedSrcParams, doneTypingInterval);
});
// on keydown, clear the countdown
$("input[name=player_title]").keydown(function(){
$("input[name=player_title]").keydown(function () {
clearTimeout(typingTimer);
});
});

View File

@ -1,19 +1,37 @@
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)
{
atp='';
if(settings.autoplay==true) atp='autoplay';
if(settings.forceHTTPS==true&&settings.url.indexOf('https')==-1) settings.url=settings.url.replace(/http/g, 'https');
if(settings.replacePort!=''&&settings.replacePort!=false&&settings.replacePort!='false')
{
if(settings.replacePortTo!='') settings.replacePortTo=':'+settings.replacePortTo;
settings.url=settings.url.replace(':'+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>';
function playerhtml5_insert(settings) {
atp = "";
if (settings.autoplay == true) atp = "autoplay";
if (settings.forceHTTPS == true && settings.url.indexOf("https") == -1)
settings.url = settings.url.replace(/http/g, "https");
if (
settings.replacePort != "" &&
settings.replacePort != false &&
settings.replacePort != "false"
) {
if (settings.replacePortTo != "")
settings.replacePortTo = ":" + settings.replacePortTo;
settings.url = settings.url.replace(
":" + 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