CC-3452: Live Stream: DJs assigned to the show and Program Managers should

be able to control switches and able to kick out connection

- kickout buttons and switch buttons are now visible to everyone.
- clicking buttons without correct permission will return proper error msg.
This commit is contained in:
james 2012-03-15 14:29:31 -04:00
parent 2beadc9301
commit 4595da9087
10 changed files with 98 additions and 62 deletions

View File

@ -18,31 +18,66 @@ class DashboardController extends Zend_Controller_Action
public function disconnectSourceAction(){
$request = $this->getRequest();
$sourcename = $request->getParam('sourcename');
$data = array("sourcename"=>$sourcename);
Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data);
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$user = new Application_Model_User($userInfo->id);
$show = Application_Model_Show::GetCurrentShow();
$show_id = isset($show['id'])?$show['id']:0;
$source_connected = Application_Model_Preference::GetSourceStatus($sourcename);
if($user->canSchedule($show_id) && $source_connected){
$data = array("sourcename"=>$sourcename);
Application_Model_RabbitMq::SendMessageToPypo("disconnect_source", $data);
}else{
if($source_connected){
$this->view->error = "You don't have permission to disconnect source.";
}else{
$this->view->error = "There is no source connected to this input.";
}
}
}
public function switchSourceAction(){
$request = $this->getRequest();
$sourcename = $this->_getParam('sourcename');
$current_status = $this->_getParam('status');
$change_status_to = "on";
if(strtolower($current_status) == "on"){
$change_status_to = "off";
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$user = new Application_Model_User($userInfo->id);
$show = Application_Model_Show::GetCurrentShow();
$show_id = isset($show['id'])?$show['id']:0;
$source_connected = Application_Model_Preference::GetSourceStatus($sourcename);
if($user->canSchedule($show_id) && ($source_connected || $sourcename == 'scheduled_play')){
$change_status_to = "on";
if(strtolower($current_status) == "on"){
$change_status_to = "off";
}
$data = array("sourcename"=>$sourcename, "status"=>$change_status_to);
Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data);
if(strtolower($current_status) == "on"){
Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off");
$this->view->status = "OFF";
}else{
Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on");
$this->view->status = "ON";
}
}
$data = array("sourcename"=>$sourcename, "status"=>$change_status_to);
Application_Model_RabbitMq::SendMessageToPypo("switch_source", $data);
if(strtolower($current_status) == "on"){
Application_Model_Preference::SetSourceSwitchStatus($sourcename, "off");
$this->view->status = "OFF";
}else{
Application_Model_Preference::SetSourceSwitchStatus($sourcename, "on");
$this->view->status = "ON";
else{
if($source_connected){
$this->view->error = "You don't have permission to switch source.";
}else{
$this->view->error = "There is no source connected to this input.";
}
}
}

View File

@ -13,11 +13,11 @@
<?php echo $this->versionNotify();
$sss = $this->SourceSwitchStatus();
$scs = $this->SourceConnectionStatus();
$isAdmin = $this->isAdmin();
$isPermissionAllowed = $this->IsPermissionAllowed();
?>
<?php echo $this->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)) ?>
"scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?>
<?php $partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial); ?>

View File

@ -14,12 +14,11 @@
<?php echo $this->versionNotify();
$sss = $this->SourceSwitchStatus();
$scs = $this->SourceConnectionStatus();
$isAdmin = $this->isAdmin();
$isPermissionAllowed = $this->IsPermissionAllowed();
?>
<?php echo $this->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)) ?>
"scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?>
<?php $partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial); ?>

View File

@ -14,11 +14,11 @@
<?php echo $this->versionNotify();
$sss = $this->SourceSwitchStatus();
$scs = $this->SourceConnectionStatus();
$isAdmin = $this->isAdmin();
$isPermissionAllowed = $this->IsPermissionAllowed();
?>
<?php echo $this->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)) ?>
"scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?>
<?php $partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial); ?>

View File

@ -14,11 +14,11 @@
<?php echo $this->versionNotify();
$sss = $this->SourceSwitchStatus();
$scs = $this->SourceConnectionStatus();
$isAdmin = $this->isAdmin();
$isPermissionAllowed = $this->IsPermissionAllowed();
?>
<?php echo $this->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)) ?>
"scheduled_play_switch"=>$sss['scheduled_play'], "isPermissionAllowed"=>$isPermissionAllowed)) ?>
<?php $partial = array('menu.phtml', 'default');
$this->navigation()->menu()->setPartial($partial); ?>

View File

@ -30,6 +30,10 @@ class Application_Model_User {
public function isHost($showId) {
return $this->isUserType(UTYPE_HOST, $showId);
}
public function isPM() {
return $this->isUserType(UTYPE_PROGRAM_MANAGER);
}
public function isAdmin() {
return $this->isUserType(UTYPE_ADMIN);

View File

@ -1,11 +0,0 @@
<?php
class Airtime_View_Helper_IsAdmin extends Zend_View_Helper_Abstract
{
public function isAdmin()
{
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$user = new Application_Model_User($userInfo->id);
return $user->isAdmin();
}
}

View File

@ -0,0 +1,18 @@
<?php
class Airtime_View_Helper_IsPermissionAllowed extends Zend_View_Helper_Abstract
{
public function IsPermissionAllowed()
{
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$user = new Application_Model_User($userInfo->id);
$show = Application_Model_Show::GetCurrentShow();
$show_id = isset($show['id'])?$show['id']:0;
if($user->canSchedule($show_id)){
return true;
}else{
return false;
}
}
}

View File

@ -27,25 +27,25 @@
<div id="scheduled_play_div">
Scheduled Play
<div class="line-to-on-air off"></div>
<a href="#" id="scheduled_play" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><span><?php echo $this->scheduled_play_switch?></span></a>
<a href="#" id="scheduled_play" class="source-switch-button" onclick="setSwitchListener(this);"><span><?php echo $this->scheduled_play_switch?></span></a>
<div class="line-to-switch off"></div>
</div>
</li>
<li>
<div id="live_dj_div">
<?php if($this->isAdmin){?><a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
<a id="live_dj" class="source-kick-button" onclick="kickSource(this)"></a>
Live DJ
<div class="line-to-on-air off"></div>
<a href="#" id="live_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><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-switch off"></div>
</div>
</li>
<li>
<div id="master_dj_div">
<?php if($this->isAdmin){?><a id="master_dj" class="source-kick-button" onclick="kickSource(this)"></a><?php }?>
<a id="master_dj" class="source-kick-button" onclick="kickSource(this)"></a>
Master DJ
<div class="line-to-on-air off"></div>
<a href="#" id="master_dj" class="source-switch-button" onclick="<?php echo ($this->isAdmin)?"setSwitchListener(this);":"return false"?>"><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-switch off"></div>
</div>
</li>

View File

@ -343,34 +343,25 @@ 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){
$.get("/Dashboard/switch-source/format/json/sourcename/"+sourcename+"/status/"+status, function(data){
if(data.error){
alert(data.error);
}else{
status_span.html(data.status)
});
}else{
alert("The source is not connected to Airtime!")
}
}
});
}
function kickSource(ele){
var sourcename = $(ele).attr('id')
var source_connection = $(ele).parent().find(".line-to-switch").attr("class")
if(source_connection.indexOf("off") > 0){
alert("No source is connected to this input.")
return false
}else{
$.get("/Dashboard/disconnect-source/format/json/sourcename/"+sourcename)
}
$.get("/Dashboard/disconnect-source/format/json/sourcename/"+sourcename, function(data){
if(data.error){
alert(data.error);
}
});
}
var stream_window = null;