From 04718a88ae4db24d9bc4c47f80f1d1848a355b04 Mon Sep 17 00:00:00 2001 From: Martin Konecny Date: Thu, 12 Apr 2012 13:29:49 -0400 Subject: [PATCH] CC-3548: Schedule: Separate repeate show template and single instance on 'When' section -done --- .../controllers/ScheduleController.php | 36 ++++---- airtime_mvc/application/models/Schedule.php | 83 +++++++++++++++++++ 2 files changed, 102 insertions(+), 17 deletions(-) diff --git a/airtime_mvc/application/controllers/ScheduleController.php b/airtime_mvc/application/controllers/ScheduleController.php index 487253647..5ad6ce234 100644 --- a/airtime_mvc/application/controllers/ScheduleController.php +++ b/airtime_mvc/application/controllers/ScheduleController.php @@ -464,6 +464,7 @@ class ScheduleController extends Zend_Controller_Action $showInstanceId = $this->_getParam('id'); $show_instance = CcShowInstancesQuery::create()->findPK($showInstanceId); + $show = new Application_Model_Show($show_instance->getDbShowId()); $starts_string = $show_instance->getDbStarts(); $ends_string = $show_instance->getDbEnds(); @@ -474,15 +475,20 @@ class ScheduleController extends Zend_Controller_Action $starts_datetime->setTimezone(new DateTimeZone(date_default_timezone_get())); $ends_datetime->setTimezone(new DateTimeZone(date_default_timezone_get())); - $instance_duration = $starts_datetime->diff($ends_datetime); + $instance_duration = $starts_datetime->diff($ends_datetime); + + $formWhat->populate(array('add_show_id' => $show->getId(), + 'add_show_instance_id' => $showInstanceId, + 'add_show_name' => $show->getName(), + 'add_show_url' => $show->getUrl(), + 'add_show_genre' => $show->getGenre(), + 'add_show_description' => $show->getDescription())); - $formValues = array('add_show_start_date' => $starts_datetime->format("Y-m-d"), + $formWhen->populate(array('add_show_start_date' => $starts_datetime->format("Y-m-d"), 'add_show_start_time' => $starts_datetime->format("H:i"), 'add_show_end_date_no_repeat' => $ends_datetime->format("Y-m-d"), 'add_show_end_time' => $ends_datetime->format("H:i"), - 'add_show_duration' => $instance_duration->format("%h")); - - $formWhen->populate($formValues); + 'add_show_duration' => $instance_duration->format("%h"))); $formWhat->disable(); $formWho->disable(); @@ -719,19 +725,15 @@ class ScheduleController extends Zend_Controller_Action foreach($js as $j){ $data[$j["name"]] = $j["value"]; } - - $start_dt = new DateTime($data['add_show_start_date']." ".$data['add_show_start_time'], new DateTimeZone(date_default_timezone_get())); - $start_dt->setTimezone(new DateTimeZone('UTC')); - - $end_dt = new DateTime($data['add_show_end_date_no_repeat']." ".$data['add_show_end_time'], new DateTimeZone(date_default_timezone_get())); - $end_dt->setTimezone(new DateTimeZone('UTC')); - - //add_show_instance_id not being populated by populateShowInstanceFormAction. - $ccShowInstance = CcShowInstancesQuery::create()->findPK($data["add_show_instance_id"]); - $ccShowInstance->setDbStarts($start_dt); - $ccShowInstance->setDbEnds($end_dt); - $ccShowInstance->save(); + $success = Application_Model_Schedule::updateShowInstance($data, $this); + if ($success){ + $this->view->addNewShow = true; + $this->view->newForm = $this->view->render('schedule/add-show-form.phtml'); + } else { + $this->view->addNewShow = false; + $this->view->form = $this->view->render('schedule/add-show-form.phtml'); + } } public function editShowAction(){ diff --git a/airtime_mvc/application/models/Schedule.php b/airtime_mvc/application/models/Schedule.php index eb98f47d2..ae43c0331 100644 --- a/airtime_mvc/application/models/Schedule.php +++ b/airtime_mvc/application/models/Schedule.php @@ -629,6 +629,89 @@ class Application_Model_Schedule { $p_view->addNewShow = true; } + /* This function is responsible for handling the case where an individual + * show instance in a repeating show was edited (via the context menu in the Calendar). + * There is still lots of clean-up to do. For example we shouldn't be passing $controller into + * this method to manipulate the view (this should be done inside the controller function). With + * 2.1 deadline looming, this is OK for now. -Martin */ + public static function updateShowInstance($data, $controller){ + $isSaas = Application_Model_Preference::GetPlanLevel() == 'disabled'?false:true; + + $formWhat = new Application_Form_AddShowWhat(); + $formWhen = new Application_Form_AddShowWhen(); + $formRepeats = new Application_Form_AddShowRepeats(); + $formWho = new Application_Form_AddShowWho(); + $formStyle = new Application_Form_AddShowStyle(); + $formLive = new Application_Form_AddShowLiveStream(); + + $formWhat->removeDecorator('DtDdWrapper'); + $formWhen->removeDecorator('DtDdWrapper'); + $formRepeats->removeDecorator('DtDdWrapper'); + $formWho->removeDecorator('DtDdWrapper'); + $formStyle->removeDecorator('DtDdWrapper'); + $formLive->removeDecorator('DtDdWrapper'); + + if(!$isSaas){ + $formRecord = new Application_Form_AddShowRR(); + $formAbsoluteRebroadcast = new Application_Form_AddShowAbsoluteRebroadcastDates(); + $formRebroadcast = new Application_Form_AddShowRebroadcastDates(); + + $formRecord->removeDecorator('DtDdWrapper'); + $formAbsoluteRebroadcast->removeDecorator('DtDdWrapper'); + $formRebroadcast->removeDecorator('DtDdWrapper'); + } + $when = $formWhen->isValid($data); + + if($when && $formWhen->checkReliantFields($data, true)) { + $start_dt = new DateTime($data['add_show_start_date']." ".$data['add_show_start_time'], new DateTimeZone(date_default_timezone_get())); + $start_dt->setTimezone(new DateTimeZone('UTC')); + + $end_dt = new DateTime($data['add_show_end_date_no_repeat']." ".$data['add_show_end_time'], new DateTimeZone(date_default_timezone_get())); + $end_dt->setTimezone(new DateTimeZone('UTC')); + + $ccShowInstance = CcShowInstancesQuery::create()->findPK($data["add_show_instance_id"]); + $ccShowInstance->setDbStarts($start_dt); + $ccShowInstance->setDbEnds($end_dt); + $ccShowInstance->save(); + + Application_Model_Schedule::createNewFormSections($controller->view); + + return true; + } else { + $formWhat->disable(); + $formWhen->disableRepeatCheckbox(); + $formRepeats->disable(); + $formWho->disable(); + $formStyle->disable(); + //$formLive->disable(); + + $controller->view->what = $formWhat; + $controller->view->when = $formWhen; + $controller->view->repeats = $formRepeats; + $controller->view->who = $formWho; + $controller->view->style = $formStyle; + $controller->view->live = $formLive; + if(!$isSaas){ + $controller->view->rr = $formRecord; + $controller->view->absoluteRebroadcast = $formAbsoluteRebroadcast; + $controller->view->rebroadcast = $formRebroadcast; + + //$formRecord->disable(); + //$formAbsoluteRebroadcast->disable(); + //$formRebroadcast->disable(); + } + return false; + } + } + + /* This function is responsible for handling the case where the entire show (not a single show instance) + * was edited (via the context menu in the Calendar). + * There is still lots of clean-up to do. For example we shouldn't be passing $controller into + * this method to manipulate the view (this should be done inside the controller function). With + * 2.1 deadline looming, this is OK for now. + * Another clean-up is to move all the form manipulation to the proper form class..... + * -Martin + */ public static function addUpdateShow($data, $controller, $validateStartDate){ $userInfo = Zend_Auth::getInstance()->getStorage()->read();