summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSebastian Wagner2011-10-25 17:07:40 +0200
committerSebastian Wagner2011-10-25 17:07:40 +0200
commit2ca9ebc9793072c261a520f155e0d68b33066b7a (patch)
treed046061ee82cb33dd0fb747bc75afec08ecc9ec7
parenterrorTimeDialog added (diff)
downloadpoolctrl-2ca9ebc9793072c261a520f155e0d68b33066b7a.tar.gz
poolctrl-2ca9ebc9793072c261a520f155e0d68b33066b7a.tar.xz
poolctrl-2ca9ebc9793072c261a520f155e0d68b33066b7a.zip
was weiß ich
-rwxr-xr-xapplication/controllers/EventController.php453
-rwxr-xr-xapplication/layouts/default.phtml1
-rwxr-xr-xapplication/models/EventMapper.php28
-rw-r--r--application/views/scripts/event/checkoverlapdrop.phtml46
-rw-r--r--application/views/scripts/event/checkoverlapresize.phtml46
-rw-r--r--application/views/scripts/event/checkoverlapselect.phtml16
-rwxr-xr-xapplication/views/scripts/event/index.phtml20
-rw-r--r--public/media/js/jquery.json-2.3.js193
-rwxr-xr-xpublic/media/js/script.js12
9 files changed, 563 insertions, 252 deletions
diff --git a/application/controllers/EventController.php b/application/controllers/EventController.php
index 746f6ba..85483b5 100755
--- a/application/controllers/EventController.php
+++ b/application/controllers/EventController.php
@@ -614,7 +614,9 @@ class EventController extends Zend_Controller_Action
}
try {
foreach($events as $event) {
- $this->eventMapper->delete($event);
+ if($event->getRunning() == 0) {
+ $this->eventMapper->delete($event);
+ }
}
} catch (Zend_Exception $e) {
@@ -672,14 +674,13 @@ class EventController extends Zend_Controller_Action
$events['withrepeat'] = $this->eventMapper->getDraggingEvents($eventID);
$events['withoutrepeat'] = $this->eventMapper->getDraggingEvent($eventID);
- $others = $this->eventMapper->getNotDraggingEvents($eventID);
- $allEvents = $this->eventMapper->fetchAllasArray($poolID);
-
// Calculate time shift
$diff=0;
foreach($events['withrepeat'] as $e) {
- if($e['eventID'] == $eventID)
- $diff = $date - strtotime($e['start']);
+ if($e['eventID'] == $eventID) {
+ $diff = $date - strtotime($e['start']);
+ break;
+ }
}
// Check for overlap with repeat
@@ -688,24 +689,24 @@ class EventController extends Zend_Controller_Action
foreach($events['withrepeat'] as $e) {
- $enewstart = strtotime($e['start']) + $diff;
- $enewend = strtotime($e['end']) + $diff;
+ $enewstart = date('Y-m-d H:i:s', strtotime($e['start']) + $diff);
+ if(!isset($e['end'])) {
+ $e['end'] = date('Y-m-d H:i:s', strtotime($e['start']) + 300);
+ }
+ $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diff);
$cfv = true;
+ $event = new Application_Model_Event($e);
+ $event->setID($e['eventID']);
- //if(intval($enewstart) < time()) {
// overlap events
- foreach($others as $o) {
- if($e['running'] == 0) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- } else {
- if($e['start'] <= strtotime($o['start']) && $e['end'] >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $e['start'] >= strtotime($o['start']) && $e['start'] <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
+ if($e['running'] == 0 ) {
+ $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event, true);
+ if(count($results) > 0) {
+ foreach($results as $result) {
+ if($result->getID() != $eventID) {
+ $overlapswithrepeat[] = $result->toArray();
+ $cfv = false;
+ }
}
}
}
@@ -720,18 +721,29 @@ class EventController extends Zend_Controller_Action
$overlapswithoutrepeat = array();
$cfeventswithoutrepeat = array();
$cfv = true;
-
- foreach($events['withoutrepeat'] as $e) {
- $enewstart = strtotime($e['start']) + $diff;
- $enewend = strtotime($e['end']) + $diff;
+ if(isset($events['withoutrepeat'])) {
+ $e = $events['withoutrepeat'];
+ $event = new Application_Model_Event($e);
+ $event->setID($e['eventID']);
+ // Calculate time shift
+ $diff=0;
+ $diff = $date - strtotime($e['start']);
+
+ $enewstart = date('Y-m-d H:i:s', strtotime($e['start']) + $diff);
+ if(!isset($e['end'])) {
+ $e['end'] = date('Y-m-d H:i:s', strtotime($e['start']) + 300);
+ }
+ $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diff);
// overlap events
- foreach($allEvents as $o) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
- $overlapswithoutrepeat[] = $o;
- $cfv = false;
+ $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event);
+ if(count($results) > 0) {
+ foreach($results as $result) {
+ if($result->getID() != $eventID) {
+ $overlapswithoutrepeat[] = $result->toArray();
+ $cfv = false;
+ }
}
}
// conflict free events without repeat
@@ -739,9 +751,6 @@ class EventController extends Zend_Controller_Action
$cfeventswithoutrepeat[] = $e;
}
}
-
- $this->view->events = $events;
- $this->view->others = $others;
$this->view->overlapswithrepeat = $overlapswithrepeat;
$this->view->cfeventswithrepeat = $cfeventswithrepeat;
$this->view->overlapswithoutrepeat = $overlapswithoutrepeat;
@@ -756,16 +765,15 @@ class EventController extends Zend_Controller_Action
$this->_helper->layout->disableLayout();
$poolID = $this->getRequest()->getParam('poolID');
- $startDate = intval(strtotime(substr($this->getRequest()->getParam('startDate'), 0, 24)));
- $endDate = intval(strtotime(substr($this->getRequest()->getParam('endDate'), 0, 24)));
-
- $allEvents = $this->eventMapper->fetchAllasArray($poolID);
+ $startDate = date("Y-m-d H:i:s", intval(strtotime(substr($this->getRequest()->getParam('startDate'), 0, 24))));
+ $endDate = date("Y-m-d H:i:s", intval(strtotime(substr($this->getRequest()->getParam('endDate'), 0, 24))));
$overlaps = array();
- foreach($allEvents as $e) {
- if($startDate <= strtotime($e['start']) && $endDate >= strtotime($e['start'])
- || $startDate >= strtotime($e['start']) && $startDate <= strtotime($e['end']))
- $overlaps[] = $e;
+ $results = $this->eventMapper->getOverlappingEvents($startDate, $endDate, $poolID);
+ if(count($results) > 0) {
+ foreach($results as $result) {
+ $overlaps[] = $result->toArray();
+ }
}
$this->view->overlaps = $overlaps;
@@ -796,25 +804,23 @@ class EventController extends Zend_Controller_Action
foreach($events['withrepeat'] as $e) {
- $enewstart = strtotime($e['start']);
- $enewend = strtotime($e['end']) + $diffDelta;
+ $enewstart = date("Y-m-d H:i:s", strtotime($e['start']));
+ $enewend = date("Y-m-d H:i:s", strtotime($e['end']) + $diffDelta);
$cfv = true;
// overlap events
- foreach($allEvents as $o) {
- if($e['running'] == 0) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- } else {
- if($e['start'] <= strtotime($o['start']) && $e['end'] >= strtotime($o['start']) && $o['eventID'] != $e['eventID']
- || $e['start'] >= strtotime($o['start']) && $e['start'] <= strtotime($o['end']) && $o['eventID'] != $e['eventID']) {
- $overlapswithrepeat[] = $o;
- $cfv = false;
- }
- }
- }
+ if($e['running'] == 0 ) {
+ $event = new Application_Model_Event($e);
+ $event->setID($e['eventID']);
+ $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event);
+ if(count($results) > 0) {
+ foreach($results as $result) {
+ if($result->getID() != $eventID) {
+ $overlapswithrepeat[] = $result->toArray();
+ $cfv = false;
+ }
+ }
+ }
+ }
// conflict free events with repeat
if($cfv) {
$cfeventswithrepeat[] = $e;
@@ -825,24 +831,26 @@ class EventController extends Zend_Controller_Action
$overlapswithoutrepeat = array();
$cfeventswithoutrepeat = array();
- foreach($events['withoutrepeat'] as $e) {
-
- $enewstart = strtotime($e['start']);
- $enewend = strtotime($e['end']) + $diffDelta;
- $cfv = true;
+ $e = $events['withoutrepeat'];
+ $event = new Application_Model_Event($e);
+ $event->setID($e['eventID']);
+ $enewstart = date('Y-m-d H:i:s', strtotime($e['start']));
+ $enewend = date('Y-m-d H:i:s', strtotime($e['end']) + $diffDelta);
+ $cfv = true;
- // overlap events
- foreach($allEvents as $o) {
- if($enewstart <= strtotime($o['start']) && $enewend >= strtotime($o['start']) && $o['eventID'] != $eventID
- || $enewstart >= strtotime($o['start']) && $enewstart <= strtotime($o['end']) && $o['eventID'] != $eventID) {
- $overlapswithoutrepeat[] = $o;
+ // overlap events
+ $results = $this->eventMapper->getOverlappingEvents($enewstart, $enewend, $poolID, $event);
+ if(count($results) > 0) {
+ foreach($results as $result) {
+ if($result->getID() != $eventID) {
+ $overlapswithoutrepeat[] = $result->toArray();
$cfv = false;
}
}
- // conflict free events without repeat
- if($cfv) {
- $cfeventswithoutrepeat[] = $e;
- }
+ }
+ // conflict free events without repeat
+ if($cfv) {
+ $cfeventswithoutrepeat[] = $e;
}
$this->view->events = $events;
@@ -873,11 +881,9 @@ class EventController extends Zend_Controller_Action
$this->eventMapper->find($evid,$event); //locate the event in the DB
$this->eventMapper->find($evid,$oldEvent);
//es beleibt ein repeatEvent! ob alle verschoben werden oder nur das selektierte wird über den kalender abgefragt
- //$event->setRepeat(0);
- $event->setRepeattype(null);
- $event->setRepeatend(null);
- $event->setRepeatdate(null);
- $event->setRepeatings(null);
+ if($event->getRepeat() == 1) {
+ $event->setRepeat(2);
+ }
$oldStartTime = date('H:i', strtotime($event->getStart()));
$oldStartDate = date('d.m.Y', strtotime($event->getStart()));
$evstartTime = intval(strtotime(substr($evstart, 0, 24)));
@@ -971,27 +977,52 @@ class EventController extends Zend_Controller_Action
// event move to the past - check
foreach($events as $event) {
$evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- if($event->getRunning() == 0 && $evstartTime < time())
- $this->_redirect('/event/');
+ if($event->getRunning() == 0 && $event->getRepeat() == 1 && $evstartTime < time())
+ $this->_redirect('/event/');
+
}
try {
foreach($events as $event) {
- if($event->getRunning() == 0) {
+ if($event->getRunning() == 0 && $event->getRepeat() == 1) {
+ $summertimeStart = intval(date('I', strtotime($event->getStart())));
//1min = 60sec, 1d = 86400sec
$oldStartTime = date('H:i', strtotime($event->getStart()));
$oldStartDate = date('d.m.Y', strtotime($event->getStart()));
$evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
$newStartTime = date('H:i', $evstartTime);
$newStartDate = date('d.m.Y', $evstartTime);
+ if($summertimeStart) {
+ if(!date('I', $evstartTime)) {
+ $evstartTime = $evstartTime + 60 * 60;
+ $summertimeStart = 0;
+ }
+ } else {
+ if(date('I', $evstartTime)) {
+ $evstartTime = $evstartTime - 60 * 60;
+ $summertimeStart = 1;
+ }
+ }
$eventStart = date('Y-m-d H:i:s', $evstartTime);
$event->setStart($eventStart);
if($event->getEnd()) {
+ $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
$oldEndTime = date('H:i', strtotime($event->getEnd()));
$oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
$evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
$newEndTime = date('H:i', $evendTime);
$newEndDate = date('d.m.Y', $evendTime);
+ if($summertimeEnd) {
+ if(!date('I', $evendTime)) {
+ $evendTime = $evendTime + 60 * 60;
+ $summertimeEnd = 0;
+ }
+ } else {
+ if(date('I', $evendTime)) {
+ $evendTime = $evendTime - 60 * 60;
+ $summertimeEnd = 1;
+ }
+ }
$eventEnd = date('Y-m-d H:i:s', $evendTime);
$event->setEnd($eventEnd);
}
@@ -1042,79 +1073,105 @@ class EventController extends Zend_Controller_Action
$this->_helper->viewRenderer->setNoRender();
$cfevents = $this->getRequest()->getParam('cfevents');
+ $cfeventsJSON = Zend_Json::decode($cfevents);
$evmindelta = $this->getRequest()->getParam('evmindelta');
$evdaydelta = $this->getRequest()->getParam('evdaydelta');
$poolID = $this->getRequest()->getParam('poolID');
$events = null;
- if($cfevents!=null) {
- foreach($cfevents as $e) {
+ if($cfeventsJSON!=null) {
+ foreach($cfeventsJSON as $e) {
$event = new Application_Model_Event($e);
+ $event->setID($e['eventID']);
$events[] = $event;
}
}
if ($events!=null) {
- /*if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) {
- if (!$this->acl->checkRight('edo')) {
- $this->_redirect('/');
- }
- }*/
-
- // event move to the past - check
- foreach($events as $event) {
- $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- if($event->getRunning() == 0 && $evstartTime < time())
- $this->_redirect('/event/');
- }
-
+ if ($events[0]->getPbs_membershipID() != $this->userIDsNamespace['membershipID']) {
+ if (!$this->acl->checkRight('edo')) {
+ $this->_redirect('/');
+ }
+ }
+
+ // event move to the past - check
+ foreach($events as $event) {
+ $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ if($event->getRunning() == 0 && $event->getRepeat() == 1 && $evstartTime < time())
+ $this->_redirect('/event/');
+ }
+
try {
foreach($events as $event) {
- if($event->getRunning() == 0) {
- //1min = 60sec, 1d = 86400sec
- $oldStartTime = date('H:i', strtotime($event->getStart()));
- $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
- $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newStartTime = date('H:i', $evstartTime);
- $newStartDate = date('d.m.Y', $evstartTime);
- $eventStart = date('Y-m-d H:i:s', $evstartTime);
- $event->setStart($eventStart);
- if($event->getEnd()) {
- $oldEndTime = date('H:i', strtotime($event->getEnd()));
- $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
- $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
- $newEndTime = date('H:i', $evendTime);
- $newEndDate = date('d.m.Y', $evendTime);
- $eventEnd = date('Y-m-d H:i:s', $evendTime);
- $event->setEnd($eventEnd);
- }
- $event->setPbs_poolID($poolID);
- $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
- $shutdownCategory = $result[0];
- if($event->getCategory() != $shutdownCategory->getID()) {
- if($event->getPbs_filterID()) {
- if($event->getRepeat()) {
- $repeattypeMapper = new Application_Model_RepeattypeMapper();
- $repeattype = new Application_Model_Repeattype();
- $repeattypeMapper->find($event->getRepeattype(), $repeattype);
- if($repeattype == "Once a week") {
- $oldStartDate = date("N", strototime($oldStartDate));
- $oldEndDate = '';
- $newStartDate = date("N", strototime($newStartDate));
- $newEndDate = '';
+ if($event->getRunning() == 0 && $event->getRepeat() == 1) {
+ $summertimeStart = intval(date('I', strtotime($event->getStart())));
+ //1min = 60sec, 1d = 86400sec
+ $oldStartTime = date('H:i', strtotime($event->getStart()));
+ $oldStartDate = date('d.m.Y', strtotime($event->getStart()));
+ $evstartTime = intval(strtotime($event->getStart())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newStartTime = date('H:i', $evstartTime);
+ $newStartDate = date('d.m.Y', $evstartTime);
+ if($summertimeStart) {
+ if(!date('I', $evstartTime)) {
+ $evstartTime = $evstartTime + 60 * 60;
+ $summertimeStart = 0;
+ }
+ } else {
+ if(date('I', $evstartTime)) {
+ $evstartTime = $evstartTime - 60 * 60;
+ $summertimeStart = 1;
+ }
+ }
+ $eventStart = date('Y-m-d H:i:s', $evstartTime);
+ $event->setStart($eventStart);
+ if($event->getEnd()) {
+ $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
+ $oldEndTime = date('H:i', strtotime($event->getEnd()));
+ $oldEndDate = date('d.m.Y', strtotime($event->getEnd()));
+ $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60) + intval($evdaydelta*86400);
+ $newEndTime = date('H:i', $evendTime);
+ $newEndDate = date('d.m.Y', $evendTime);
+ if($summertimeEnd) {
+ if(!date('I', $evendTime)) {
+ $evendTime = $evendTime + 60 * 60;
+ $summertimeEnd = 0;
+ }
+ } else {
+ if(date('I', $evendTime)) {
+ $evendTime = $evendTime - 60 * 60;
+ $summertimeEnd = 1;
}
}
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
- $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
- $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
- unset($filterApiResult);
+ $eventEnd = date('Y-m-d H:i:s', $evendTime);
+ $event->setEnd($eventEnd);
}
- }
- $this->eventMapper->save($event); //save the event with the new data
+ $event->setPbs_poolID($poolID);
+ $result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
+ $shutdownCategory = $result[0];
+ if($event->getCategory() != $shutdownCategory->getID()) {
+ if($event->getPbs_filterID()) {
+ if($event->getRepeat()) {
+ $repeattypeMapper = new Application_Model_RepeattypeMapper();
+ $repeattype = new Application_Model_Repeattype();
+ $repeattypeMapper->find($event->getRepeattype(), $repeattype);
+ if($repeattype == "Once a week") {
+ $oldStartDate = date("N", strototime($oldStartDate));
+ $oldEndDate = '';
+ $newStartDate = date("N", strototime($newStartDate));
+ $newEndDate = '';
+ }
+ }
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . strtotime($oldStartDate) . "&oldvalue2=" . strtotime($oldEndDate) . "&value1=" . strtotime($newStartDate) . "&value2=" . strtotime($newEndDate);
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ $filterentriesQuerie = "filterid=" . $event->getPbs_filterID() . "&oldvalue1=" . $oldStartTime . "&oldvalue2=" . $oldEndTime . "&value1=" . $newStartTime . "&value2=" . $newEndTime;
+ $filterApiResult = PostToHost($this->pbs2host, $this->config['pbs2']['changefilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesQuerie);
+ unset($filterApiResult);
+ }
+ }
+ $this->eventMapper->save($event); //save the event with the new data
}
}
} catch (Zend_Exception $e) {
@@ -1146,11 +1203,9 @@ class EventController extends Zend_Controller_Action
if ($evid!=null) {
$this->eventMapper->find($evid,$event); //locate the event in the DB
$this->eventMapper->find($evid,$oldEvent);
- //$event->setRepeat(0);
- $event->setRepeattype(null);
- $event->setRepeatend(null);
- $event->setRepeatdate(null);
- $event->setRepeatings(null);
+ if($event->getRepeat() == 1) {
+ $event->setRepeat(2);
+ }
$oldStartTime = date('H:i', strtotime($event->getStart()));
$newStartTime = $oldStartTime;
$oldEndTime = date('H:i', strtotime($event->getEnd()));
@@ -1227,8 +1282,21 @@ class EventController extends Zend_Controller_Action
}
try {
foreach($events as $event) {
- if($event->getRunning() == 0) {
- $eventEnd = date('Y-m-d H:i:s', intval(strtotime($event->getEnd())) + intval($evmindelta*60));
+ if($event->getRunning() == 0 && $event->getRepeat() == 1) {
+ $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
+ $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60);
+ if($summertimeEnd) {
+ if(!date('I', $evendTime)) {
+ $evendTime = $evendTime + 60 * 60;
+ $summertimeEnd = 0;
+ }
+ } else {
+ if(date('I', $evendTime)) {
+ $evendTime = $evendTime - 60 * 60;
+ $summertimeEnd = 1;
+ }
+ }
+ $eventEnd = date('Y-m-d H:i:s', $evendTime);
$event->setEnd($eventEnd);
$event->setPbs_poolID($poolID);
$result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
@@ -1285,7 +1353,20 @@ class EventController extends Zend_Controller_Action
try {
foreach($events as $event) {
if($event->getRunning() == 0) {
- $eventEnd = date('Y-m-d H:i:s', intval(strtotime($event->getEnd())) + intval($evmindelta*60));
+ $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
+ $evendTime = intval(strtotime($event->getEnd())) + intval($evmindelta*60);
+ if($summertimeEnd) {
+ if(!date('I', $evendTime)) {
+ $evendTime = $evendTime + 60 * 60;
+ $summertimeEnd = 0;
+ }
+ } else {
+ if(date('I', $evendTime)) {
+ $evendTime = $evendTime - 60 * 60;
+ $summertimeEnd = 1;
+ }
+ }
+ $eventEnd = date('Y-m-d H:i:s', $evendTime);
$event->setEnd($eventEnd);
$event->setPbs_poolID($poolID);
$result = $this->eventcategoryMapper->findBy(array('title' => 'Shutdown'));
@@ -2169,7 +2250,6 @@ class EventController extends Zend_Controller_Action
if($repeatend->getTitle() == 'After') {
$repeatings = intval($newEvent->getRepeatings());
for($i = 0; $i < $repeatings; $i++) {
- $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
if($summertimeStart) {
if(!date('I', $newStartTime)) {
$newStartTime = $newStartTime + 60 * 60;
@@ -2181,6 +2261,7 @@ class EventController extends Zend_Controller_Action
$summertimeStart = 1;
}
}
+ $newEvent->setStart(date('Y-m-d H:i', $newStartTime));
$newStartTime = $newStartTime + $onedaytime;
if(isset($newEndTime)) {
if($summertimeEnd) {
@@ -2702,56 +2783,58 @@ class EventController extends Zend_Controller_Action
if(count($events) > 0) {
try {
foreach($events as $event) {
- $event->setOptions($diff);
- if(isset($diffStart)) {
- $summertimeStart = intval(date('I', strtotime($event->getStart())));
- $newSummertimeStart = intval(date('I', strtotime($event->getStart()) + $diffStart));
- if($summertimeStart) {
- if(!$newSummertimeStart) {
- $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart + 3600);
- } else {
- $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart);
- }
- } else {
- if($newSummertimeStart) {
- $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart - 3600);
+ if($event->getRunning() == 0 && $event->getRepeat() == 1) {
+ $event->setOptions($diff);
+ if(isset($diffStart)) {
+ $summertimeStart = intval(date('I', strtotime($event->getStart())));
+ $newSummertimeStart = intval(date('I', strtotime($event->getStart()) + $diffStart));
+ if($summertimeStart) {
+ if(!$newSummertimeStart) {
+ $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart + 3600);
+ } else {
+ $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart);
+ }
} else {
- $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart);
+ if($newSummertimeStart) {
+ $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart - 3600);
+ } else {
+ $newStart = date('Y-m-d H:i:s', strtotime($event->getStart()) + $diffStart);
+ }
}
+ $event->setStart($newStart);
}
- $event->setStart($newStart);
- }
- if(isset($diffEnd)) {
- $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
- $newSummertimeEnd = intval(date('I', strtotime($event->getEnd()) + $diffEnd));
- if($summertimeEnd) {
- if(!$newSummertimeEnd) {
- $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd + 3600);
- } else {
- $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd);
- }
- } else {
- if($newSummertimeEnd) {
- $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd - 3600);
+ if(isset($diffEnd)) {
+ $summertimeEnd = intval(date('I', strtotime($event->getEnd())));
+ $newSummertimeEnd = intval(date('I', strtotime($event->getEnd()) + $diffEnd));
+ if($summertimeEnd) {
+ if(!$newSummertimeEnd) {
+ $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd + 3600);
+ } else {
+ $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd);
+ }
} else {
- $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd);
+ if($newSummertimeEnd) {
+ $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd - 3600);
+ } else {
+ $newEnd = date('Y-m-d H:i:s', strtotime($event->getEnd()) + $diffEnd);
+ }
}
+ $event->setEnd($newEnd);
}
- $event->setEnd($newEnd);
- }
- if($newEvent->getCategory() != $shutdownCategory->getID()) {
- if($repeattype != "Once a week") {
- $startDate = date('d.m.Y', strtotime($event->getStart()));
- if($event->getEnd()) {
- $endDate = date('d.m.Y', strtotime($event->getEnd()));
- } else {
- $endDate = date('d.m.Y', strtotime($event->getStart()) + 900);
+ if($newEvent->getCategory() != $shutdownCategory->getID()) {
+ if($repeattype != "Once a week") {
+ $startDate = date('d.m.Y', strtotime($event->getStart()));
+ if($event->getEnd()) {
+ $endDate = date('d.m.Y', strtotime($event->getEnd()));
+ } else {
+ $endDate = date('d.m.Y', strtotime($event->getStart()) + 900);
+ }
+ $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate);
+ $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2);
}
- $filterentriesquery2 = "filterID=" . $event->getPbs_filterID() . "&filtertypeID=11&filtervalue=" . strtotime($startDate) . "&filtervalue2=" . strtotime($endDate);
- $filterentriesApiResult2 = PostToHost($this->pbs2host, $this->config['pbs2']['addfilterentry'] . $this->userIDsNamespace['apikey'], 'http://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'], 'poolctrl', $filterentriesquery2);
}
+ $this->eventMapper->save($event);
}
- $this->eventMapper->save($event);
}
} catch (Zend_Exception $e) {
echo "Caught exception: " . get_class($e) . "<br/>";
diff --git a/application/layouts/default.phtml b/application/layouts/default.phtml
index 7ffeff5..1c861dc 100755
--- a/application/layouts/default.phtml
+++ b/application/layouts/default.phtml
@@ -15,6 +15,7 @@ echo $this->headLink()."\n";
echo $this->headScript()."\n";
?>
<script type='text/javascript' src='/media/js/jquery-1.6.2.min.js'></script>
+<script type='text/javascript' src='/media/js/jquery.json-2.3.js'></script>
<script type='text/javascript'
src='/media/js/jquery-ui-1.8.16.custom.min.js'></script>
<script type="text/javascript"
diff --git a/application/models/EventMapper.php b/application/models/EventMapper.php
index 28f0e23..4092bc3 100755
--- a/application/models/EventMapper.php
+++ b/application/models/EventMapper.php
@@ -432,7 +432,7 @@ class Application_Model_EventMapper
public function getDraggingEvents($eventID) {
$db = Zend_Db_Table::getDefaultAdapter();
- $select = 'SELECT * FROM poolctrl_event WHERE title = (SELECT title FROM poolctrl_event WHERE eventID = ?)';
+ $select = 'SELECT * FROM poolctrl_event WHERE title = (SELECT title FROM poolctrl_event WHERE eventID = ?) AND poolctrl_event.repeat = 1';
$stmt = $db->query($select, array(''.$eventID));
$return = $stmt->fetchAll();
@@ -441,16 +441,10 @@ class Application_Model_EventMapper
}
public function getDraggingEvent($eventID) {
-
- $db = Zend_Db_Table::getDefaultAdapter();
- $select = $this->getDbTable()->select()
- ->from(array('pce' => 'poolctrl_event'))
- ->where('pce.eventID = ?', $eventID);
- $stmt = $db->query($select);
- $return = $stmt->fetchAll();
-
+ $event = new Application_Model_Event();
+ $this->find($eventID, $event);
+ $return = $event->toArray();
return $return;
-
}
// Fetch all notDragging events
@@ -465,13 +459,23 @@ class Application_Model_EventMapper
}
- public function getOverlappingEvents($start, $end, $poolID) {
+ public function getOverlappingEvents($start, $end, $poolID, Application_Model_Event $event = null, $repeat = false) {
$db = Zend_Db_Table::getDefaultAdapter();
- $select = "SELECT * FROM poolctrl_event WHERE ( ( start <= '" . $start . "' AND end >= '" . $end . "' ) OR ( start <= '" . $end . "' AND end >= '" . $end . "' ) OR ( start <= '" . $start . "' AND end >= '" . $start . "' ) OR ( start = '" . $start . "' AND end = '" . $end . "' ) ) AND pbs_poolID = '" . $poolID . "'";
+ $return = array();
+ if($event != null) {
+ if($repeat) {
+ $select = "SELECT * FROM poolctrl_event WHERE ( ( start >= '" . $start . "' AND start <= '" . $end . "' ) OR ( start <= '" . $start . "' AND end IS NOT NULL AND end >= '" . $start . "' ) ) AND pbs_poolID = '" . $poolID . "' AND ( title <> '" . $event->getTitle() . "' OR ( title = '" . $event->getTitle() . "' AND poolctrl_event.repeat <> 1 ) )";
+ } else {
+ $select = "SELECT * FROM poolctrl_event WHERE ( ( start >= '" . $start . "' AND start <= '" . $end . "' ) OR ( start <= '" . $start . "' AND end IS NOT NULL AND end >= '" . $start . "' ) ) AND pbs_poolID = '" . $poolID . "' AND eventID <> '" . $event->getID() . "'";
+ }
+ } else {
+ $select = "SELECT * FROM poolctrl_event WHERE ( ( start >= '" . $start . "' AND start <= '" . $end . "' ) OR ( start <= '" . $start . "' AND end IS NOT NULL AND end >= '" . $start . "' ) ) AND pbs_poolID = '" . $poolID . "'";
+ }
$stmt = $db->query($select);
$results = $stmt->fetchAll();
foreach($results as $result) {
$event = new Application_Model_Event($result);
+ $event->setID($result['eventID']);
$return[] = $event;
}
diff --git a/application/views/scripts/event/checkoverlapdrop.phtml b/application/views/scripts/event/checkoverlapdrop.phtml
index 279e798..b53c482 100644
--- a/application/views/scripts/event/checkoverlapdrop.phtml
+++ b/application/views/scripts/event/checkoverlapdrop.phtml
@@ -3,40 +3,56 @@ $output['cfevents'] = $this->cfeventswithrepeat;
// conflict free plot with repeat
$output['cfplotwithrepeat'] = '<ul id="cfplot">';
- foreach($this->cfeventswithrepeat as $c){
- $output['cfplotwithrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
- }
+foreach($this->cfeventswithrepeat as $c){
+ if(isset($c['end'])) {
+ $output['cfplotwithrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
+ } else {
+ $output['cfplotwithrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . '</li>';
+ }
+}
$output['cfplotwithrepeat'] .= '</ul>';
// conflict free plot without repeat
$output['cfplotwithoutrepeat'] = '<ul id="cfplot">';
- foreach($this->cfeventswithoutrepeat as $c){
- $output['cfplotwithoutrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
- }
+foreach($this->cfeventswithoutrepeat as $c){
+ if(isset($c['end'])) {
+ $output['cfplotwithoutrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
+ } else {
+ $output['cfplotwithoutrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . '</li>';
+ }
+}
$output['cfplotwithoutrepeat'] .= '</ul>';
-
+
// conflict plot with repeat
if(count($this->overlapswithrepeat) == 0) {
- $output['withrepeat'] = -1;
+ $output['withrepeat'] = -1;
}
else {
$output['withrepeat'] = '<ul id="conflictEvents">';
foreach($this->overlapswithrepeat as $o){
- $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ if(isset($o['end'])) {
+ $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ } else {
+ $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . '</li>';
+ }
}
$output['withrepeat'] .= '</ul>';
}
// conflict plot without repeat
if(count($this->overlapswithoutrepeat) == 0) {
- $output['withoutrepeat'] = -1;
+ $output['withoutrepeat'] = -1;
}
else {
- $output['withoutrepeat'] = '<ul id="conflictEvents">';
- foreach($this->overlapswithoutrepeat as $o){
- $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
- }
- $output['withoutrepeat'] .= '</ul>';
+ $output['withoutrepeat'] = '<ul id="conflictEvents">';
+ foreach($this->overlapswithoutrepeat as $o) {
+ if(isset($o['end'])) {
+ $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ } else {
+ $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . '</li>';
+ }
+ }
+ $output['withoutrepeat'] .= '</ul>';
}
echo json_encode($output);
?> \ No newline at end of file
diff --git a/application/views/scripts/event/checkoverlapresize.phtml b/application/views/scripts/event/checkoverlapresize.phtml
index 85a1a1c..89b8499 100644
--- a/application/views/scripts/event/checkoverlapresize.phtml
+++ b/application/views/scripts/event/checkoverlapresize.phtml
@@ -3,40 +3,48 @@ $output['cfevents'] = $this->cfeventswithrepeat;
// conflict free plot with repeat
$output['cfplotwithrepeat'] = '<ul id="cfplot">';
- foreach($this->cfeventswithrepeat as $c){
- $output['cfplotwithrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
- }
+foreach($this->cfeventswithrepeat as $c){
+ $output['cfplotwithrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
+}
$output['cfplotwithrepeat'] .= '</ul>';
// conflict free plot without repeat
$output['cfplotwithoutrepeat'] = '<ul id="cfplot">';
- foreach($this->cfeventswithoutrepeat as $c){
- $output['cfplotwithoutrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
- }
+foreach($this->cfeventswithoutrepeat as $c){
+ $output['cfplotwithoutrepeat'] .= '<li>' . 'EventID: ' . $c['eventID'] . ', Title: ' . $c['title'] . ', Start: ' . $c['start'] . ', End: ' . $c['end'] . '</li>';
+}
$output['cfplotwithoutrepeat'] .= '</ul>';
-
+
// conflict plot with repeat
if(count($this->overlapswithrepeat) == 0) {
- $output['withrepeat'] = -1;
+ $output['withrepeat'] = -1;
}
else {
- $output['withrepeat'] = '<ul id="conflictEvents">';
- foreach($this->overlapswithrepeat as $o){
- $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
- }
- $output['withrepeat'] .= '</ul>';
+ $output['withrepeat'] = '<ul id="conflictEvents">';
+ foreach($this->overlapswithrepeat as $o){
+ if(isset($o['end'])) {
+ $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ } else {
+ $output['withrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . '</li>';
+ }
+ }
+ $output['withrepeat'] .= '</ul>';
}
// conflict plot without repeat
if(count($this->overlapswithoutrepeat) == 0) {
- $output['withoutrepeat'] = -1;
+ $output['withoutrepeat'] = -1;
}
else {
- $output['withoutrepeat'] = '<ul id="conflictEvents">';
- foreach($this->overlapswithoutrepeat as $o){
- $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
- }
- $output['withoutrepeat'] .= '</ul>';
+ $output['withoutrepeat'] = '<ul id="conflictEvents">';
+ foreach($this->overlapswithoutrepeat as $o){
+ if(isset($o['end'])) {
+ $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ } else {
+ $output['withoutrepeat'] .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . '</li>';
+ }
+ }
+ $output['withoutrepeat'] .= '</ul>';
}
echo json_encode($output);
?> \ No newline at end of file
diff --git a/application/views/scripts/event/checkoverlapselect.phtml b/application/views/scripts/event/checkoverlapselect.phtml
index fa87193..8cc8991 100644
--- a/application/views/scripts/event/checkoverlapselect.phtml
+++ b/application/views/scripts/event/checkoverlapselect.phtml
@@ -1,13 +1,17 @@
<?php
if(count($this->overlaps) == 0) {
- $output = -1;
+ $output = -1;
}
else {
- $output = '<ul id="conflictEvents">';
- foreach($this->overlaps as $o){
- $output .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
- }
- $output .= '</ul>';
+ $output = '<ul id="conflictEvents">';
+ foreach($this->overlaps as $o){
+ if(isset($o['end'])) {
+ $output .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . ', End: ' . $o['end'] . '</li>';
+ } else {
+ $output .= '<li>' . 'EventID: ' . $o['eventID'] . ', Title: ' . $o['title'] . ', Start: ' . $o['start'] . '</li>';
+ }
+ }
+ $output .= '</ul>';
}
echo json_encode($output);
?> \ No newline at end of file
diff --git a/application/views/scripts/event/index.phtml b/application/views/scripts/event/index.phtml
index f312c98..c3603ed 100755
--- a/application/views/scripts/event/index.phtml
+++ b/application/views/scripts/event/index.phtml
@@ -309,7 +309,7 @@ var dayClick = false;
select: function( startDate, endDate, allDay, jsEvent, view ) {
- var currentDate = $('#calendar').fullCalendar('getDate');
+ var currentDate = new Date();
//initialize eventNotDroppableDialog Dialog
$(function() {
@@ -355,7 +355,7 @@ var dayClick = false;
},
"OK": function() {
if(returndata == -1) {
- if(startDate > currentDate) {
+ if(startDate < currentDate) {
$(this).dialog("close");
self.location="/event/add/evstart/" + startDate + "/evend/" + endDate + "/poolID/" + $("#poolselectbox option:selected").val();
} else {
@@ -426,7 +426,7 @@ var dayClick = false;
});
if($.get("/event/checkright/rightShortcut/er")) {
- if(event.repeat == 0) {
+ if(event.repeat == 0 || event.repeat == 2) {
$(function() {
$( "#defaultDialog" ).dialog({
autoOpen: false,
@@ -473,7 +473,7 @@ var dayClick = false;
if(returndata.withoutrepeat == -1) {
$(this).dialog("close");
$.post("/event/eventresize/evid/" + event.id + "/evend/" + event.end + "/poolID/" + $("#poolselectbox option:selected").val());
- //event.repeat = 0;
+ event.repeat = 2;
} else {
$(this).dialog("close");
cell.removeChild(cell.firstChild);
@@ -516,7 +516,7 @@ var dayClick = false;
eventDrop: function( event, dayDelta, minuteDelta, allDay, revertFunc ) {
- var currentDate = $('#calendar').fullCalendar('getDate');
+ var currentDate = new Date();
$.get("/event/checkoverlapdrop/poolID/" + $("#poolselectbox option:selected").val() + "/eventID/" + event.id + "/date/" + event.start, function(data){
@@ -525,8 +525,10 @@ var dayClick = false;
var cfcell = document.getElementById("cfevents");
// get conflicts
var returndata = jQuery.parseJSON(data);
+
// get conflict free events with repeat
var cfevents = returndata.cfevents;
+ var cfeventsString = $.toJSON(cfevents);
//initialize eventNotDroppableDialog Dialog
$(function() {
@@ -538,7 +540,7 @@ var dayClick = false;
buttons: {
"Drop Conflict-Free Events": function() {
$(this).dialog("close");
- self.location="/event/eventmovecf/evmindelta/" + minuteDelta + "/evdaydelta/" + dayDelta + "/poolID/" + $("#poolselectbox option:selected").val() + "/cfevents/" + cfevents;
+ $.post("/event/eventmovecf/evmindelta/" + minuteDelta + "/evdaydelta/" + dayDelta + "/poolID/" + $("#poolselectbox option:selected").val() + "/cfevents/" + cfeventsString);
},
"OK": function() {
$(this).dialog("close");
@@ -553,7 +555,7 @@ var dayClick = false;
});
});
- if(event.repeat == 0 && event.immediate == 0 && $.get("/event/checkright/rightShortcut/er")) {
+ if((event.repeat == 0 || event.repeat == 2) && event.immediate == 0 && $.get("/event/checkright/rightShortcut/er")) {
$(function() {
$( "#defaultDialog" ).dialog({
autoOpen: false,
@@ -590,7 +592,7 @@ var dayClick = false;
});
});
$( "#defaultDialog" ).dialog('open');
- } else if (event.immediate == 0 && $.get("/event/checkright/rightShortcut/er")) {
+ } else if (event.repeat == 1 && event.immediate == 0 && $.get("/event/checkright/rightShortcut/er")) {
$(function() {
$( "#eventMoveWdhDialog" ).dialog({
autoOpen: false,
@@ -612,7 +614,7 @@ var dayClick = false;
$( "#errorTimeDialog" ).dialog('open');
revertFunc();
}
- //event.repeat = 0;
+ event.repeat = 2;
} else {
$(this).dialog("close");
cell.removeChild(cell.firstChild);
diff --git a/public/media/js/jquery.json-2.3.js b/public/media/js/jquery.json-2.3.js
new file mode 100644
index 0000000..fdb1226
--- /dev/null
+++ b/public/media/js/jquery.json-2.3.js
@@ -0,0 +1,193 @@
+/**
+ * jQuery JSON Plugin
+ * version: 2.3 (2011-09-17)
+ *
+ * This document is licensed as free software under the terms of the
+ * MIT License: http://www.opensource.org/licenses/mit-license.php
+ *
+ * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org
+ * website's http://www.json.org/json2.js, which proclaims:
+ * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
+ * I uphold.
+ *
+ * It is also influenced heavily by MochiKit's serializeJSON, which is
+ * copyrighted 2005 by Bob Ippolito.
+ */
+
+(function( $ ) {
+
+ var escapeable = /["\\\x00-\x1f\x7f-\x9f]/g,
+ meta = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ };
+
+ /**
+ * jQuery.toJSON
+ * Converts the given argument into a JSON respresentation.
+ *
+ * @param o {Mixed} The json-serializble *thing* to be converted
+ *
+ * If an object has a toJSON prototype, that will be used to get the representation.
+ * Non-integer/string keys are skipped in the object, as are keys that point to a
+ * function.
+ *
+ */
+ $.toJSON = typeof JSON === 'object' && JSON.stringify
+ ? JSON.stringify
+ : function( o ) {
+
+ if ( o === null ) {
+ return 'null';
+ }
+
+ var type = typeof o;
+
+ if ( type === 'undefined' ) {
+ return undefined;
+ }
+ if ( type === 'number' || type === 'boolean' ) {
+ return '' + o;
+ }
+ if ( type === 'string') {
+ return $.quoteString( o );
+ }
+ if ( type === 'object' ) {
+ if ( typeof o.toJSON === 'function' ) {
+ return $.toJSON( o.toJSON() );
+ }
+ if ( o.constructor === Date ) {
+ var month = o.getUTCMonth() + 1,
+ day = o.getUTCDate(),
+ year = o.getUTCFullYear(),
+ hours = o.getUTCHours(),
+ minutes = o.getUTCMinutes(),
+ seconds = o.getUTCSeconds(),
+ milli = o.getUTCMilliseconds();
+
+ if ( month < 10 ) {
+ month = '0' + month;
+ }
+ if ( day < 10 ) {
+ day = '0' + day;
+ }
+ if ( hours < 10 ) {
+ hours = '0' + hours;
+ }
+ if ( minutes < 10 ) {
+ minutes = '0' + minutes;
+ }
+ if ( seconds < 10 ) {
+ seconds = '0' + seconds;
+ }
+ if ( milli < 100 ) {
+ milli = '0' + milli;
+ }
+ if ( milli < 10 ) {
+ milli = '0' + milli;
+ }
+ return '"' + year + '-' + month + '-' + day + 'T' +
+ hours + ':' + minutes + ':' + seconds +
+ '.' + milli + 'Z"';
+ }
+ if ( o.constructor === Array ) {
+ var ret = [];
+ for ( var i = 0; i < o.length; i++ ) {
+ ret.push( $.toJSON( o[i] ) || 'null' );
+ }
+ return '[' + ret.join(',') + ']';
+ }
+ var name,
+ val,
+ pairs = [];
+ for ( var k in o ) {
+ type = typeof k;
+ if ( type === 'number' ) {
+ name = '"' + k + '"';
+ } else if (type === 'string') {
+ name = $.quoteString(k);
+ } else {
+ // Keys must be numerical or string. Skip others
+ continue;
+ }
+ type = typeof o[k];
+
+ if ( type === 'function' || type === 'undefined' ) {
+ // Invalid values like these return undefined
+ // from toJSON, however those object members
+ // shouldn't be included in the JSON string at all.
+ continue;
+ }
+ val = $.toJSON( o[k] );
+ pairs.push( name + ':' + val );
+ }
+ return '{' + pairs.join( ',' ) + '}';
+ }
+ };
+
+ /**
+ * jQuery.evalJSON
+ * Evaluates a given piece of json source.
+ *
+ * @param src {String}
+ */
+ $.evalJSON = typeof JSON === 'object' && JSON.parse
+ ? JSON.parse
+ : function( src ) {
+ return eval('(' + src + ')');
+ };
+
+ /**
+ * jQuery.secureEvalJSON
+ * Evals JSON in a way that is *more* secure.
+ *
+ * @param src {String}
+ */
+ $.secureEvalJSON = typeof JSON === 'object' && JSON.parse
+ ? JSON.parse
+ : function( src ) {
+
+ var filtered =
+ src
+ .replace( /\\["\\\/bfnrtu]/g, '@' )
+ .replace( /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']')
+ .replace( /(?:^|:|,)(?:\s*\[)+/g, '');
+
+ if ( /^[\],:{}\s]*$/.test( filtered ) ) {
+ return eval( '(' + src + ')' );
+ } else {
+ throw new SyntaxError( 'Error parsing JSON, source is not valid.' );
+ }
+ };
+
+ /**
+ * jQuery.quoteString
+ * Returns a string-repr of a string, escaping quotes intelligently.
+ * Mostly a support function for toJSON.
+ * Examples:
+ * >>> jQuery.quoteString('apple')
+ * "apple"
+ *
+ * >>> jQuery.quoteString('"Where are we going?", she asked.')
+ * "\"Where are we going?\", she asked."
+ */
+ $.quoteString = function( string ) {
+ if ( string.match( escapeable ) ) {
+ return '"' + string.replace( escapeable, function( a ) {
+ var c = meta[a];
+ if ( typeof c === 'string' ) {
+ return c;
+ }
+ c = a.charCodeAt();
+ return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + string + '"';
+ };
+
+})( jQuery );
diff --git a/public/media/js/script.js b/public/media/js/script.js
index 6e75665..a002dd2 100755
--- a/public/media/js/script.js
+++ b/public/media/js/script.js
@@ -169,7 +169,7 @@ function immediateChanged(name, bootosIDs, add) {
enableElement('repeat');
enableElement('note');
enableElement('participants');
- if(!add) {
+ if (!add) {
addeventcategoryfieldChanged('category', bootosIDs);
} else {
addeventcategoryfieldChanged('category', bootosIDs, add);
@@ -191,7 +191,7 @@ function addeventcategoryfieldChanged(name, bootosIDs, add) {
enableElement('immediate');
enableElement('pbs_bootosID');
disableElement('end');
- if(!add) {
+ if (!add) {
removeElementAttribute('repeat', 'checked');
}
startLabel.children().text('Date:');
@@ -206,8 +206,8 @@ function addeventcategoryfieldChanged(name, bootosIDs, add) {
enableElement('immediate');
disableElement('end');
disableElement('pbs_bootosID');
- if(!add) {
- removeElementAttribute('repeat', 'checked');
+ if (!add) {
+ removeElementAttribute('repeat', 'checked');
}
startLabel.children().text('Date:');
for (i = 0; i < bootosIDs.length; i++) {
@@ -226,7 +226,7 @@ function addeventcategoryfieldChanged(name, bootosIDs, add) {
enableElement('end');
enableElement('pbs_bootosID');
disableElement('immediate');
- if(!add) {
+ if (!add) {
setElementAttribute('repeat', 'checked', 'checked');
}
startLabel.children().text('Start:');
@@ -241,7 +241,7 @@ function addeventcategoryfieldChanged(name, bootosIDs, add) {
enableElement('end');
enableElement('pbs_bootosID');
disableElement('immediate');
- if(!add) {
+ if (!add) {
removeElementAttribute('repeat', 'checked');
}
startLabel.children().text('Start:');