From 2ee4b227fccdafa83fc7bb3e792acbe069c9c0e6 Mon Sep 17 00:00:00 2001 From: James Date: Wed, 14 Mar 2012 10:34:44 -0400 Subject: [PATCH] CC-3439: Live Stream: Only admin should be able to turn on/of switch and able to see kick out button - done --- .../application/layouts/scripts/builder.phtml | 12 +- .../application/layouts/scripts/layout.phtml | 3 +- .../application/layouts/scripts/library.phtml | 10 +- .../layouts/scripts/playouthistory.phtml | 10 +- .../application/views/helpers/IsAdmin.php | 11 ++ .../views/scripts/partialviews/header.phtml | 29 ++++- .../public/js/airtime/dashboard/playlist.js | 104 +++++++++--------- .../pypo/liquidsoap_scripts/ls_script.liq | 2 +- 8 files changed, 113 insertions(+), 68 deletions(-) create mode 100644 airtime_mvc/application/views/helpers/IsAdmin.php diff --git a/airtime_mvc/application/layouts/scripts/builder.phtml b/airtime_mvc/application/layouts/scripts/builder.phtml index 782681d50..5f13b0f67 100644 --- a/airtime_mvc/application/layouts/scripts/builder.phtml +++ b/airtime_mvc/application/layouts/scripts/builder.phtml @@ -12,11 +12,13 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); - $scs = $this->SourceConnectionStatus();?> - partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), - "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'])) ?> - + $scs = $this->SourceConnectionStatus(); + $isAdmin = $this->isAdmin(); + ?> + partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), + "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'], "isAdmin"=>$isAdmin)) ?> + navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/layout.phtml b/airtime_mvc/application/layouts/scripts/layout.phtml index 39afbc8a9..d074b921d 100644 --- a/airtime_mvc/application/layouts/scripts/layout.phtml +++ b/airtime_mvc/application/layouts/scripts/layout.phtml @@ -14,10 +14,11 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); $scs = $this->SourceConnectionStatus(); + $isAdmin = $this->isAdmin(); ?> partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), "live_dj_switch"=>$sss['live_dj'], "live_dj_connection"=>$scs['live_dj'], "master_dj_switch"=>$sss['master_dj'], "master_dj_connection"=>$scs['master_dj'], - "scheduled_play_switch"=>$sss['scheduled_play'])) ?> + "scheduled_play_switch"=>$sss['scheduled_play'], "isAdmin"=>$isAdmin)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/library.phtml b/airtime_mvc/application/layouts/scripts/library.phtml index 2fa4a1d42..e3a2748e1 100644 --- a/airtime_mvc/application/layouts/scripts/library.phtml +++ b/airtime_mvc/application/layouts/scripts/library.phtml @@ -13,10 +13,12 @@ versionNotify(); $sss = $this->SourceSwitchStatus(); - $scs = $this->SourceConnectionStatus(); ?> - partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), - "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'])) ?> + $scs = $this->SourceConnectionStatus(); + $isAdmin = $this->isAdmin(); + ?> + partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), + "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'], "isAdmin"=>$isAdmin)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/layouts/scripts/playouthistory.phtml b/airtime_mvc/application/layouts/scripts/playouthistory.phtml index 210bbeaa8..0c9fee73f 100644 --- a/airtime_mvc/application/layouts/scripts/playouthistory.phtml +++ b/airtime_mvc/application/layouts/scripts/playouthistory.phtml @@ -11,8 +11,14 @@
- versionNotify() ?> - partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining())) ?> + versionNotify(); + $sss = $this->SourceSwitchStatus(); + $scs = $this->SourceConnectionStatus(); + $isAdmin = $this->isAdmin(); + ?> + partial('partialviews/header.phtml', array("user" => $this->loggedInAs(), "is_trial"=>$this->isTrial(), "trial_remain"=> $this->trialRemaining(), + "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'], "isAdmin"=>$isAdmin)) ?> navigation()->menu()->setPartial($partial); ?> diff --git a/airtime_mvc/application/views/helpers/IsAdmin.php b/airtime_mvc/application/views/helpers/IsAdmin.php new file mode 100644 index 000000000..94c07235a --- /dev/null +++ b/airtime_mvc/application/views/helpers/IsAdmin.php @@ -0,0 +1,11 @@ +getStorage()->read(); + $user = new Application_Model_User($userInfo->id); + return $user->isAdmin(); + } +} \ No newline at end of file diff --git a/airtime_mvc/application/views/scripts/partialviews/header.phtml b/airtime_mvc/application/views/scripts/partialviews/header.phtml index 1099c3871..564b7a436 100644 --- a/airtime_mvc/application/views/scripts/partialviews/header.phtml +++ b/airtime_mvc/application/views/scripts/partialviews/header.phtml @@ -23,9 +23,32 @@
diff --git a/airtime_mvc/public/js/airtime/dashboard/playlist.js b/airtime_mvc/public/js/airtime/dashboard/playlist.js index 11fd12517..1cff57d46 100644 --- a/airtime_mvc/public/js/airtime/dashboard/playlist.js +++ b/airtime_mvc/public/js/airtime/dashboard/playlist.js @@ -16,6 +16,7 @@ var uiUpdateInterval = 200; var master_dj_on_air = false; var live_dj_on_air = false; var scheduled_play_on_air = false; +var scheduled_play_source = false; //var timezoneOffset = 0; @@ -80,20 +81,20 @@ function updateProgressBarValue(){ songPercentDone = 0; currentSong = null; } else { - var scheduled_play_connection = $("#scheduled_play_connection").parent().find(".line-to-switch") + var scheduled_play_line_to_switch = $("#scheduled_play_div").find(".line-to-switch") if (currentSong.media_item_played == "t" && currentShow.length > 0){ - scheduled_play_connection.attr("class", "line-to-switch on"); - //scheduled_play_on_air = true; + scheduled_play_line_to_switch.attr("class", "line-to-switch on"); + scheduled_play_source = true; } else{ - //scheduled_play_on_air = false; - scheduled_play_connection.attr("class", "line-to-switch off"); + scheduled_play_source = false; + scheduled_play_line_to_switch.attr("class", "line-to-switch off"); } $('#progress-show').attr("class", "progress-show"); } } else { - $('#on-air-info').attr("class", "on-air-info off"); - $("#scheduled_play_connection").parent().find(".line-to-switch").attr("class", "line-to-switch off"); + scheduled_play_source = false; + $("#scheduled_play_div").find(".line-to-switch").attr("class", "line-to-switch off"); $('#progress-show').attr("class", "progress-show-error"); } $('#progress-bar').attr("style", "width:"+songPercentDone+"%"); @@ -231,8 +232,8 @@ function parseItems(obj){ } function parseSourceStatus(obj){ - var live_div = $("#live_dj_connection").parent().find(".line-to-switch") - var master_div = $("#master_dj_connection").parent().find(".line-to-switch") + var live_div = $("#live_dj_div").find(".line-to-switch") + var master_div = $("#master_dj_div").find(".line-to-switch") if(obj.live_dj_source == false){ live_div.attr("class", "line-to-switch off") @@ -248,8 +249,6 @@ function parseSourceStatus(obj){ } function parseSwitchStatus(obj){ - var live_div = $("#live_dj_connection") - var master_div = $("#master_dj_connection") if(obj.live_dj_source == "on" && obj.master_dj_source == "off"){ live_dj_on_air = true; @@ -275,7 +274,7 @@ function parseSwitchStatus(obj){ } function controlOnAirLight(){ - if(scheduled_play_on_air || live_dj_on_air || master_dj_on_air){ + 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"); }else{ $('#on-air-info').attr("class", "on-air-info off"); @@ -283,26 +282,26 @@ function controlOnAirLight(){ } function controlSwitchLight(){ - var live_div = $("#live_dj_connection") - var master_div = $("#master_dj_connection") - var scheduled_play_div = $("#scheduled_play_connection") + var live_div = $("#live_dj_div") + var master_div = $("#master_dj_div") + var scheduled_play_div = $("#scheduled_play_div") - if(scheduled_play_on_air && !live_dj_on_air && !master_dj_on_air){ - scheduled_play_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air on") - live_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - master_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") + if((scheduled_play_on_air && scheduled_play_source) && !live_dj_on_air && !master_dj_on_air){ + scheduled_play_div.find(".line-to-on-air").attr("class", "line-to-on-air on") + live_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + master_div.find(".line-to-on-air").attr("class", "line-to-on-air off") }else if(live_dj_on_air && !master_dj_on_air){ - scheduled_play_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - live_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air on") - master_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") + scheduled_play_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + live_div.find(".line-to-on-air").attr("class", "line-to-on-air on") + master_div.find(".line-to-on-air").attr("class", "line-to-on-air off") }else if(master_dj_on_air){ - scheduled_play_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - live_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - master_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air on") + scheduled_play_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + live_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + master_div.find(".line-to-on-air").attr("class", "line-to-on-air on") }else{ - scheduled_play_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - live_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") - master_div.parent().find(".line-to-on-air").attr("class", "line-to-on-air off") + scheduled_play_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + live_div.find(".line-to-on-air").attr("class", "line-to-on-air off") + master_div.find(".line-to-on-air").attr("class", "line-to-on-air off") } } @@ -340,28 +339,31 @@ function setupQtip(){ } } -function setSwitchListener(){ - $(".source-switch-button").click(function(){ - var sourcename = $(this).attr('id') - var status_span = $(this).find("span") - var status = status_span.html() - var _class = $(this).parent().find("div.line-to-switch").attr("class") - var source_connection_status = false - - if(_class.indexOf("off") > 0){ - source_connection_status = false - }else{ - source_connection_status = true - } - - if(source_connection_status){ - $.get("/Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){ - status_span.html(data.status) - }); - }else{ - alert("The source is not connected to Airtime!") - } - }) +function setSwitchListener(ele){ + var sourcename = $(ele).attr('id') + var status_span = $(ele).find("span") + var status = status_span.html() + var _class = $(ele).parent().find("div.line-to-switch").attr("class") + var source_connection_status = false + + // user should be able to turn on/off scheduled_play switch anytime. + if(sourcename.indexOf("scheduled_play") > 0 && _class.indexOf("off") > 0){ + source_connection_status = false + }else{ + source_connection_status = true + } + + if(source_connection_status){ + $.get("/Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){ + status_span.html(data.status) + }); + }else{ + alert("The source is not connected to Airtime!") + } +} + +function kickSource(ele){ + } var stream_window = null; @@ -375,8 +377,6 @@ function init() { setupQtip(); - setSwitchListener(); - $('.listen-control-button').click(function() { if (stream_window == null || stream_window.closed) stream_window=window.open(baseUrl+"Dashboard/stream-player", 'name', 'width=400,height=178'); diff --git a/python_apps/pypo/liquidsoap_scripts/ls_script.liq b/python_apps/pypo/liquidsoap_scripts/ls_script.liq index d1fd9dd06..4a7a40d26 100644 --- a/python_apps/pypo/liquidsoap_scripts/ls_script.liq +++ b/python_apps/pypo/liquidsoap_scripts/ls_script.liq @@ -45,7 +45,7 @@ ignore(output.dummy(default, fallible=true)) master_dj_enabled = ref false; live_dj_enabled = ref false; -scheduled_play_enabled = ref true; +scheduled_play_enabled = ref false; def make_master_dj_available() master_dj_enabled := true