Merge branch 'devel' of dev.sourcefabric.org:airtime into devel
This commit is contained in:
commit
74e8abe820
|
@ -9,7 +9,7 @@ class ApiController extends Zend_Controller_Action
|
|||
$context = $this->_helper->getHelper('contextSwitch');
|
||||
$context->addActionContext('version', 'json')
|
||||
->addActionContext('recorded-shows', 'json')
|
||||
->addActionContext('server-timestamp', 'json')
|
||||
->addActionContext('calendar-init', 'json')
|
||||
->addActionContext('upload-file', 'json')
|
||||
->addActionContext('upload-recorded', 'json')
|
||||
->addActionContext('media-monitor-setup', 'json')
|
||||
|
@ -62,10 +62,26 @@ class ApiController extends Zend_Controller_Action
|
|||
echo $jsonStr;
|
||||
}
|
||||
|
||||
public function serverTimestampAction(){
|
||||
|
||||
$this->view->serverTimestamp = array("timestamp"=>time(), "timezoneOffset"=> date("Z"));
|
||||
|
||||
/**
|
||||
* Sets up and send init values used in the Calendar.
|
||||
* This is only being used by schedule.js at the moment.
|
||||
*/
|
||||
public function calendarInitAction(){
|
||||
$this->view->layout()->disableLayout();
|
||||
$this->_helper->viewRenderer->setNoRender(true);
|
||||
|
||||
if(is_null(Zend_Auth::getInstance()->getStorage()->read())) {
|
||||
header('HTTP/1.0 401 Unauthorized');
|
||||
print 'You are not allowed to access this resource.';
|
||||
return;
|
||||
}
|
||||
|
||||
$this->view->calendarInit = array(
|
||||
"timestamp"=>time(),
|
||||
"timezoneOffset"=> date("Z"),
|
||||
"timeScale"=>Application_Model_Preference::GetCalendarTimeScale()
|
||||
);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -163,6 +179,7 @@ class ApiController extends Zend_Controller_Action
|
|||
|
||||
$date = new Application_Model_DateHelper;
|
||||
$timeNow = $date->getTimestamp();
|
||||
|
||||
$result = array("env"=>APPLICATION_ENV,
|
||||
"schedulerTime"=>gmdate("Y-m-d H:i:s"),
|
||||
"currentShow"=>Application_Model_Show::GetCurrentShow($timeNow),
|
||||
|
|
|
@ -28,6 +28,7 @@ class ScheduleController extends Zend_Controller_Action
|
|||
->addActionContext('get-form', 'json')
|
||||
->addActionContext('upload-to-sound-cloud', 'json')
|
||||
->addActionContext('content-context-menu', 'json')
|
||||
->addActionContext('set-time-scale', 'json')
|
||||
->initContext();
|
||||
|
||||
$this->sched_sess = new Zend_Session_Namespace("schedule");
|
||||
|
@ -728,6 +729,14 @@ class ScheduleController extends Zend_Controller_Action
|
|||
//returns format jjmenu is looking for.
|
||||
die(json_encode($menu));
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the user specific preference for which time scale to use in Calendar.
|
||||
* This is only being used by schedule.js at the moment.
|
||||
*/
|
||||
public function setTimeScaleAction() {
|
||||
Application_Model_Preference::SetCalendarTimeScale($this->_getParam('timeScale'));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -3,11 +3,11 @@
|
|||
class Application_Model_Preference
|
||||
{
|
||||
|
||||
public static function SetValue($key, $value){
|
||||
public static function SetValue($key, $value, $isUserValue = false){
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
|
||||
//called from a daemon process
|
||||
if(!class_exists("Zend_Auth", false) || !Zend_Auth::getInstance()->hasIdentity()) {
|
||||
if(!Zend_Auth::getInstance()->hasIdentity()) {
|
||||
$id = NULL;
|
||||
}
|
||||
else {
|
||||
|
@ -21,6 +21,12 @@ class Application_Model_Preference
|
|||
//Check if key already exists
|
||||
$sql = "SELECT COUNT(*) FROM cc_pref"
|
||||
." WHERE keystr = '$key'";
|
||||
|
||||
//For user specific preference, check if id matches as well
|
||||
if($isUserValue) {
|
||||
$sql .= " AND subjid = '$id'";
|
||||
}
|
||||
|
||||
$result = $CC_DBC->GetOne($sql);
|
||||
|
||||
if ($result == 1 && is_null($id)){
|
||||
|
@ -29,9 +35,15 @@ class Application_Model_Preference
|
|||
." WHERE keystr = '$key'";
|
||||
}
|
||||
else if ($result == 1 && !is_null($id)){
|
||||
$sql = "UPDATE cc_pref"
|
||||
." SET subjid = $id, valstr = '$value'"
|
||||
." WHERE keystr = '$key'";
|
||||
if($isUserValue) {
|
||||
$sql = "UPDATE cc_pref"
|
||||
." SET valstr = '$value'"
|
||||
." WHERE keystr = '$key' AND subjid = $id";
|
||||
} else {
|
||||
$sql = "UPDATE cc_pref"
|
||||
." SET subjid = $id, valstr = '$value'"
|
||||
." WHERE keystr = '$key'";
|
||||
}
|
||||
}
|
||||
else if(is_null($id)) {
|
||||
$sql = "INSERT INTO cc_pref (keystr, valstr)"
|
||||
|
@ -44,11 +56,21 @@ class Application_Model_Preference
|
|||
return $CC_DBC->query($sql);
|
||||
}
|
||||
|
||||
public static function GetValue($key){
|
||||
public static function GetValue($key, $isUserValue = false){
|
||||
global $CC_CONFIG, $CC_DBC;
|
||||
//Check if key already exists
|
||||
$sql = "SELECT COUNT(*) FROM cc_pref"
|
||||
." WHERE keystr = '$key'";
|
||||
|
||||
//For user specific preference, check if id matches as well
|
||||
if($isUserValue) {
|
||||
$auth = Zend_Auth::getInstance();
|
||||
if($auth->hasIdentity()) {
|
||||
$id = $auth->getIdentity()->id;
|
||||
$sql .= " AND subjid = '$id'";
|
||||
}
|
||||
}
|
||||
|
||||
$result = $CC_DBC->GetOne($sql);
|
||||
|
||||
if ($result == 0)
|
||||
|
@ -56,6 +78,12 @@ class Application_Model_Preference
|
|||
else {
|
||||
$sql = "SELECT valstr FROM cc_pref"
|
||||
." WHERE keystr = '$key'";
|
||||
|
||||
//For user specific preference, check if id matches as well
|
||||
if($isUserValue && $auth->hasIdentity()) {
|
||||
$sql .= " AND subjid = '$id'";
|
||||
}
|
||||
|
||||
$result = $CC_DBC->GetOne($sql);
|
||||
return $result;
|
||||
}
|
||||
|
@ -441,7 +469,7 @@ class Application_Model_Preference
|
|||
public static function GetAirtimeVersion(){
|
||||
return self::GetValue("system_version");
|
||||
}
|
||||
|
||||
|
||||
public static function SetUploadToSoundcloudOption($upload) {
|
||||
self::SetValue("soundcloud_upload_option", $upload);
|
||||
}
|
||||
|
@ -449,7 +477,7 @@ class Application_Model_Preference
|
|||
public static function GetUploadToSoundcloudOption() {
|
||||
return self::GetValue("soundcloud_upload_option");
|
||||
}
|
||||
|
||||
|
||||
public static function SetSoundCloudDownloadbleOption($upload) {
|
||||
self::SetValue("soundcloud_downloadable", $upload);
|
||||
}
|
||||
|
@ -457,5 +485,21 @@ class Application_Model_Preference
|
|||
public static function GetSoundCloudDownloadbleOption() {
|
||||
return self::GetValue("soundcloud_downloadable");
|
||||
}
|
||||
|
||||
/**
|
||||
* Sets the time scale preference (day/week/month) in Calendar.
|
||||
*
|
||||
* @param $timeScale new time scale
|
||||
*/
|
||||
public static function SetCalendarTimeScale($timeScale) {
|
||||
return self::SetValue("calendar_time_scale", $timeScale, true /* user specific */);
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieves the time scale preference for the current user.
|
||||
*/
|
||||
public static function GetCalendarTimeScale() {
|
||||
return self::GetValue("calendar_time_scale", true /* user specific */);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -293,19 +293,34 @@ function buildEditDialog(json){
|
|||
|
||||
}
|
||||
|
||||
/**
|
||||
* Use user preference for time scale; defaults to month if preference was never set
|
||||
*/
|
||||
function getTimeScalePreference(data) {
|
||||
var timeScale = data.calendarInit.timeScale;
|
||||
if(timeScale == 'day') {
|
||||
timeScale = 'agendaDay';
|
||||
} else if(timeScale == 'week') {
|
||||
timeScale = 'agendaWeek';
|
||||
} else {
|
||||
timeScale = 'month';
|
||||
}
|
||||
return timeScale;
|
||||
}
|
||||
|
||||
function createFullCalendar(data){
|
||||
|
||||
serverTimezoneOffset = data.serverTimestamp.timezoneOffset;
|
||||
serverTimezoneOffset = data.calendarInit.timezoneOffset;
|
||||
|
||||
var mainHeight = document.documentElement.clientHeight - 200 - 50;
|
||||
|
||||
|
||||
$('#schedule_calendar').fullCalendar({
|
||||
header: {
|
||||
left: 'prev, next, today',
|
||||
center: 'title',
|
||||
right: 'agendaDay, agendaWeek, month'
|
||||
},
|
||||
defaultView: 'month',
|
||||
defaultView: getTimeScalePreference(data),
|
||||
editable: false,
|
||||
allDaySlot: false,
|
||||
axisFormat: 'H:mm',
|
||||
|
@ -316,8 +331,8 @@ function createFullCalendar(data){
|
|||
contentHeight: mainHeight,
|
||||
theme: true,
|
||||
lazyFetching: false,
|
||||
serverTimestamp: parseInt(data.serverTimestamp.timestamp, 10),
|
||||
serverTimezoneOffset: parseInt(data.serverTimestamp.timezoneOffset, 10),
|
||||
serverTimestamp: parseInt(data.calendarInit.timestamp, 10),
|
||||
serverTimezoneOffset: parseInt(data.calendarInit.timezoneOffset, 10),
|
||||
|
||||
events: getFullCalendarEvents,
|
||||
|
||||
|
@ -330,11 +345,19 @@ function createFullCalendar(data){
|
|||
eventResize: eventResize
|
||||
});
|
||||
|
||||
//Update time scale preference when day/week/month button is clicked
|
||||
$(".fc-button-content").click(function() {
|
||||
url = '/Schedule/set-time-scale/format/json';
|
||||
$.post(url, {timeScale: $(this).text()},
|
||||
function(json){
|
||||
if(json.error) {
|
||||
alert(json.error);
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
$(window).load(function() {
|
||||
|
||||
$.ajax({ url: "/Api/server-timestamp/format/json", dataType:"json", success:createFullCalendar
|
||||
, error:function(jqXHR, textStatus, errorThrown){}});
|
||||
});
|
||||
|
||||
$.ajax({ url: "/Api/calendar-init/format/json", dataType:"json", success:createFullCalendar
|
||||
, error:function(jqXHR, textStatus, errorThrown){}});
|
||||
});
|
Loading…
Reference in New Issue