Merge branch 'master' of dev.sourcefabric.org:campcaster

This commit is contained in:
paul.baranowski 2010-12-14 19:09:56 -05:00
commit 1b3186af50
11 changed files with 149 additions and 19 deletions

View file

@ -55,6 +55,8 @@
<actionMethod actionName="addShowDialog"/> <actionMethod actionName="addShowDialog"/>
<actionMethod actionName="moveShow"/> <actionMethod actionName="moveShow"/>
<actionMethod actionName="resizeShow"/> <actionMethod actionName="resizeShow"/>
<actionMethod actionName="deleteShow"/>
<actionMethod actionName="makeContextMenu"/>
</controllerFile> </controllerFile>
<controllerFile controllerName="Api"> <controllerFile controllerName="Api">
<actionMethod actionName="index"/> <actionMethod actionName="index"/>
@ -177,9 +179,16 @@
</viewControllerScriptsDirectory> </viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Schedule"> <viewControllerScriptsDirectory forControllerName="Schedule">
<viewScriptFile forActionName="resizeShow"/> <viewScriptFile forActionName="resizeShow"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Api"> <viewControllerScriptsDirectory forControllerName="Api">
<viewScriptFile forActionName="index"/> <viewScriptFile forActionName="index"/>
</viewControllerScriptsDirectory> </viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Schedule">
<viewScriptFile forActionName="deleteShow"/>
</viewControllerScriptsDirectory>
<viewControllerScriptsDirectory forControllerName="Schedule">
<viewScriptFile forActionName="makeContextMenu"/>
</viewControllerScriptsDirectory>
</viewScriptsDirectory> </viewScriptsDirectory>
<viewHelpersDirectory/> <viewHelpersDirectory/>
<viewFiltersDirectory enabled="false"/> <viewFiltersDirectory enabled="false"/>

View file

@ -15,17 +15,33 @@ class ScheduleController extends Zend_Controller_Action
->addActionContext('add-show-dialog', 'json') ->addActionContext('add-show-dialog', 'json')
->addActionContext('add-show', 'json') ->addActionContext('add-show', 'json')
->addActionContext('move-show', 'json') ->addActionContext('move-show', 'json')
->addActionContext('resize-show', 'json') ->addActionContext('resize-show', 'json')
->addActionContext('delete-show', 'json')
->initContext(); ->initContext();
} }
public function indexAction() public function indexAction()
{ {
$this->view->headScript()->appendFile('/js/fullcalendar/fullcalendar.min.js','text/javascript'); $this->view->headScript()->appendFile('/js/fullcalendar/fullcalendar.min.js','text/javascript');
$this->view->headScript()->appendFile('/js/contextmenu/jquery.contextMenu.js','text/javascript');
$this->view->headScript()->appendFile('/js/qtip/jquery.qtip-1.0.0.min.js','text/javascript');
$this->view->headScript()->appendFile('/js/campcaster/schedule/schedule.js','text/javascript'); $this->view->headScript()->appendFile('/js/campcaster/schedule/schedule.js','text/javascript');
$this->view->headLink()->appendStylesheet('/css/jquery.contextMenu.css');
$this->view->headLink()->appendStylesheet('/css/fullcalendar.css'); $this->view->headLink()->appendStylesheet('/css/fullcalendar.css');
$this->view->headLink()->appendStylesheet('/css/schedule.css'); $this->view->headLink()->appendStylesheet('/css/schedule.css');
$eventDefaultMenu = array();
//$eventDefaultMenu[] = array('action' => '/Schedule/delete-show', 'text' => 'Delete');
$this->view->eventDefaultMenu = $eventDefaultMenu;
$eventHostMenu[] = array('action' => '/Schedule/delete-show', 'text' => 'Delete');
$eventHostMenu[] = array('action' => '/Schedule/delete-show', 'text' => 'Schedule');
$this->view->eventHostMenu = $eventHostMenu;
} }
public function eventFeedAction() public function eventFeedAction()
@ -40,7 +56,8 @@ class ScheduleController extends Zend_Controller_Action
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show($userInfo->id, $userInfo->type); $show = new Show(new User($userInfo->id, $userInfo->type));
$this->view->events = $show->getFullCalendarEvents($start, $end, $weekday); $this->view->events = $show->getFullCalendarEvents($start, $end, $weekday);
} }
@ -54,7 +71,7 @@ class ScheduleController extends Zend_Controller_Action
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show($userInfo->id, $userInfo->type); $show = new Show(new User($userInfo->id, $userInfo->type));
$overlap = $show->addShow($form->getValues()); $overlap = $show->addShow($form->getValues());
if(isset($overlap)) { if(isset($overlap)) {
@ -76,7 +93,7 @@ class ScheduleController extends Zend_Controller_Action
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show($userInfo->id, $userInfo->type); $show = new Show(new User($userInfo->id, $userInfo->type));
$overlap = $show->moveShow($showId, $deltaDay, $deltaMin); $overlap = $show->moveShow($showId, $deltaDay, $deltaMin);
@ -92,7 +109,7 @@ class ScheduleController extends Zend_Controller_Action
$userInfo = Zend_Auth::getInstance()->getStorage()->read(); $userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show($userInfo->id, $userInfo->type); $show = new Show(new User($userInfo->id, $userInfo->type));
$overlap = $show->resizeShow($showId, $deltaDay, $deltaMin); $overlap = $show->resizeShow($showId, $deltaDay, $deltaMin);
@ -100,6 +117,21 @@ class ScheduleController extends Zend_Controller_Action
$this->view->overlap = $overlap; $this->view->overlap = $overlap;
} }
public function deleteShowAction()
{
$showId = $this->_getParam('showId');
$userInfo = Zend_Auth::getInstance()->getStorage()->read();
$show = new Show(new User($userInfo->id, $userInfo->type));
$show->deleteShow($showId);
}
public function makeContextMenuAction()
{
// action body
}
} }
@ -113,3 +145,7 @@ class ScheduleController extends Zend_Controller_Action

View file

@ -91,9 +91,8 @@ class Application_Form_AddShow extends Zend_Form
'required' => false, 'required' => false,
)); ));
$user = new User();
$options = array(); $options = array();
$hosts = $user->getHosts(); $hosts = User::getHosts();
foreach ($hosts as $host) { foreach ($hosts as $host) {
$options[$host['id']] = $host['login']; $options[$host['id']] = $host['login'];

View file

@ -2,13 +2,11 @@
class Show { class Show {
private $_userRole; private $_user;
private $_userId;
public function __construct($userId, $userType='G') public function __construct($user=NULL)
{ {
$this->_userRole = $userType; $this->_user = $user;
$this->_userId = $userId;
} }
//end dates are non inclusive. //end dates are non inclusive.
@ -180,6 +178,10 @@ class Show {
} }
public function deleteShow($showId, $dayId=NULL) {
CcShowQuery::create()->filterByDbId($showId)->delete();
}
public function getShows($start=NULL, $end=NULL, $days=NULL, $s_time=NULL, $e_time=NULL, $exclude_shows=NULL) { public function getShows($start=NULL, $end=NULL, $days=NULL, $s_time=NULL, $e_time=NULL, $exclude_shows=NULL) {
global $CC_DBC; global $CC_DBC;
@ -201,7 +203,7 @@ class Show {
} }
if(!is_null($start) && is_null($end)) { if(!is_null($start) && is_null($end)) {
$sql_range = "(first_show <= '{$start}' AND last_show IS NULL) $sql_range = "(first_show <= '{$start}' AND last_show IS NULL)
OR (last_show > '{$start}')"; OR (first_show <= '{$start}' AND last_show > '{$start}')";
$sql = $sql_gen ." WHERE ". $sql_range; $sql = $sql_gen ." WHERE ". $sql_range;
} }
@ -319,10 +321,14 @@ class Show {
$event[$key] = $value; $event[$key] = $value;
} }
if($this->_userRole === "A") { if($this->_user->isAdmin()) {
$event["editable"] = true; $event["editable"] = true;
} }
if($this->_user->isHost($show["show_id"])) {
$event["isHost"] = true;
}
return $event; return $event;
} }
} }

View file

@ -2,7 +2,32 @@
class User { class User {
public function getUsers($type=NULL) { private $_userRole;
private $_userId;
public function __construct($userId, $userType='G')
{
$this->_userRole = $userType;
$this->_userId = $userId;
}
public function getType(){
return $this->userRole;
}
public function getId(){
return $this->_userId;
}
public function isHost($showId) {
return CcShowHostsQuery::create()->filterByDbShow($showId)->filterByDbHost($this->_userId)->count() > 0;
}
public function isAdmin() {
return $this->_userRole === 'A';
}
public static function getUsers($type=NULL) {
global $CC_DBC; global $CC_DBC;
$sql; $sql;
@ -29,8 +54,8 @@ class User {
return $CC_DBC->GetAll($sql); return $CC_DBC->GetAll($sql);
} }
public function getHosts() { public static function getHosts() {
return $this->getUsers(array('H', 'A')); return User::getUsers(array('H', 'A'));
} }
} }

View file

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Schedule</b> and script/action name <b>deleteShow</b></center>

View file

@ -1,2 +1,9 @@
<div><span id='schedule_add_show'>Add Show</span></div> <div><span id='schedule_add_show'>Add Show</span></div>
<div id='schedule_calendar'></div> <div id='schedule_calendar'></div>
<ul id="schedule_event_default_menu" class="contextMenu">
<?php echo $this->partialLoop('library/contextMenuPartial.phtml', $this->eventDefaultMenu) ?>
</ul>
<ul id="schedule_event_host_menu" class="contextMenu">
<?php echo $this->partialLoop('library/contextMenuPartial.phtml', $this->eventHostMenu) ?>
</ul>

View file

@ -0,0 +1 @@
<br /><br /><center>View script for controller <b>Schedule</b> and script/action name <b>makeContextMenu</b></center>

View file

@ -115,6 +115,17 @@ function makeShowDialog(html) {
return dialog; return dialog;
} }
function eventMenu(action, el, pos) {
var event;
event = $(el).data('event');
$.post(action,
{showId: event.id, format: "json"},
function(json){
$("#schedule_calendar").fullCalendar( 'refetchEvents' );
});
}
/** /**
* *
* Full Calendar callback methods. * Full Calendar callback methods.
@ -126,7 +137,26 @@ function dayClick(date, allDay, jsEvent, view) {
} }
function eventRender(event, element, view) { function eventRender(event, element, view) {
var x; //element.qtip({
// content: event.description
// });
}
function eventAfterRender( event, element, view ) {
if(event.isHost === true) {
$(element).contextMenu(
{menu: 'schedule_event_host_menu'}, eventMenu
);
}
else{
$(element).contextMenu(
{menu: 'schedule_event_default_menu'}, eventMenu
);
}
$(element).data({'event': event});
} }
function eventClick(event, jsEvent, view) { function eventClick(event, jsEvent, view) {
@ -221,6 +251,7 @@ $(document).ready(function() {
//callbacks //callbacks
dayClick: dayClick, dayClick: dayClick,
eventRender: eventRender, eventRender: eventRender,
eventAfterRender: eventAfterRender,
eventClick: eventClick, eventClick: eventClick,
eventMouseover: eventMouseover, eventMouseover: eventMouseover,
eventMouseout: eventMouseout, eventMouseout: eventMouseout,

View file

@ -37,7 +37,7 @@ if(jQuery)( function() {
e.stopPropagation(); e.stopPropagation();
var srcElement = $(this); var srcElement = $(this);
$(this).unbind('mouseup'); $(this).unbind('mouseup');
if( evt.button == 0 ) { if( evt.button == 2 ) {
// Hide context menus that may be showing // Hide context menus that may be showing
$(".contextMenu").hide(); $(".contextMenu").hide();
// Get this context menu // Get this context menu

15
public/js/qtip/jquery.qtip-1.0.0.min.js vendored Normal file

File diff suppressed because one or more lines are too long