diff --git a/.zfproject.xml b/.zfproject.xml index ab1dae981..986d3777a 100644 --- a/.zfproject.xml +++ b/.zfproject.xml @@ -53,7 +53,6 @@ - @@ -62,6 +61,7 @@ + @@ -167,9 +167,6 @@ - - - diff --git a/application/controllers/IndexController.php b/application/controllers/IndexController.php index 1f5135329..7580891db 100644 --- a/application/controllers/IndexController.php +++ b/application/controllers/IndexController.php @@ -18,17 +18,6 @@ class IndexController extends Zend_Controller_Action $this->_helper->layout->setLayout('layout'); } - public function newfieldAction() - { - // action body - } - - public function displayAction() - { - // action body - } - - } diff --git a/application/controllers/PlaylistController.php b/application/controllers/PlaylistController.php index b4768b71f..1df677114 100644 --- a/application/controllers/PlaylistController.php +++ b/application/controllers/PlaylistController.php @@ -51,7 +51,7 @@ class PlaylistController extends Zend_Controller_Action $request = $this->getRequest(); $form = new Application_Form_PlaylistMetadata(); - if ($this->getRequest()->isPost()) { + if ($request->isPost()) { if ($form->isValid($request->getPost())) { $formdata = $form->getValues(); diff --git a/application/controllers/ScheduleController.php b/application/controllers/ScheduleController.php index 311ddf304..f22ee89ff 100644 --- a/application/controllers/ScheduleController.php +++ b/application/controllers/ScheduleController.php @@ -40,16 +40,28 @@ class ScheduleController extends Zend_Controller_Action public function addShowDialogAction() { - $user = new User(); - - $this->view->hosts = $user->getHosts(); + $request = $this->getRequest(); + $form = new Application_Form_AddShow(); + + if ($request->isPost()) { + if ($form->isValid($request->getPost())) { + + $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + + $show = new Show($userInfo->type); + $show->addShow($form->getValues()); + return; + } + } + $this->view->form = $form->__toString(); } - public function addShowAction() + function addShow() { //name, description, hosts, allDay, repeats, //start_time, duration, start_date, end_date, dofw + /* $name = $this->_getParam('name', 'Default Name'); $description = $this->_getParam('description', ''); $hosts = $this->_getParam('hosts'); @@ -65,11 +77,12 @@ class ScheduleController extends Zend_Controller_Action $endDate = $startDate; $repeats = $repeats ? 1 : 0; - - $userInfo = Zend_Auth::getInstance()->getStorage()->read(); + */ - $show = new Show($userInfo->type); - $show->addShow($name, $startDate, $endDate, $startTime, $duration, $repeats, $dofw, $description); + //$userInfo = Zend_Auth::getInstance()->getStorage()->read(); + + //$show = new Show($userInfo->type); + //$show->addShow($name, $startDate, $endDate, $startTime, $duration, $repeats, $dofw, $description); } diff --git a/application/forms/AddShow.php b/application/forms/AddShow.php new file mode 100644 index 000000000..39aaa7860 --- /dev/null +++ b/application/forms/AddShow.php @@ -0,0 +1,126 @@ +addElement('text', 'name', array( + 'label' => 'Name:', + 'required' => true, + 'filters' => array('StringTrim'), + 'validators' => array('NotEmpty') + )); + + // Add the description element + $this->addElement('textarea', 'description', array( + 'label' => 'Description:', + 'required' => false, + )); + + // Add start date element + $this->addElement('text', 'start_date', array( + 'label' => 'Date Start:', + 'required' => true, + 'filters' => array('StringTrim'), + 'validators' => array( + 'NotEmpty', + array('date', false, array('YYYY-MM-DD')) + ) + )); + + // Add end date element + $this->addElement('text', 'end_date', array( + 'label' => 'Date End:', + 'required' => false, + 'filters' => array('StringTrim'), + 'validators' => array( + 'NotEmpty', + array('date', false, array('YYYY-MM-DD')) + ) + )); + + $this->addElement( + 'select', + 'start_time', + array( + 'label' => 'Start Time:', + 'required' => true, + 'multiOptions' => array( + "00:00" => "00:00", + "00:30" => "00:30", + "01:00" => "01:00", + "01:30" => "01:30", + "02:00" => "02:00", + ), + )); + + $this->addElement( + 'select', + 'duration', + array( + 'label' => 'Duration:', + 'required' => true, + 'multiOptions' => array( + "00:30" => "00:30", + "01:00" => "01:00", + "01:30" => "01:30", + "02:00" => "02:00", + ), + )); + + $this->addElement( + 'multiCheckbox', + 'day_check', + array( + 'label' => 'Select Days:', + 'required' => false, + 'multiOptions' => array( + "0" => "Sun", + "1" => "Mon", + "2" => "Tue", + "3" => "Wed", + "4" => "Thu", + "5" => "Fri", + "6" => "Sat", + ), + )); + + $this->addElement('checkbox', 'all_day', array( + 'label' => 'all day', + 'required' => false, + )); + + $this->addElement('checkbox', 'repeats', array( + 'label' => 'repeats', + 'required' => false, + )); + + $this->addElement('checkbox', 'no_end', array( + 'label' => 'no end', + 'required' => false, + )); + + $user = new User(); + $options = array(); + $hosts = $user->getHosts(); + + foreach ($hosts as $host) { + $options[$host['id']] = $host['login']; + } + + $this->addElement( + 'multiselect', + 'hosts', + array( + 'label' => 'Hosts:', + 'required' => true, + 'multiOptions' => $options + )); + + } + + +} + diff --git a/application/models/Shows.php b/application/models/Shows.php index dade006cd..b6a000d8b 100644 --- a/application/models/Shows.php +++ b/application/models/Shows.php @@ -35,23 +35,37 @@ class Show { return $event; } - public function addShow($name, $startDate, $endDate, $startTime, $duration, $repeats, $days, $description) { - + public function addShow($data) { + $con = Propel::getConnection("campcaster"); - $sql = "SELECT time '{$startTime}' + INTERVAL '{$duration} hour' "; + $sql = "SELECT time '{$data['start_time']}' + INTERVAL '{$data['duration']} hour' "; $r = $con->query($sql); $endTime = $r->fetchColumn(0); - $sql = "SELECT nextval('schedule_group_id_seq')"; + $sql = "SELECT nextval('show_group_id_seq')"; $r = $con->query($sql); $showId = $r->fetchColumn(0); - $sql = "SELECT EXTRACT(DOW FROM TIMESTAMP '{$startDate} {$startTime}')"; + $sql = "SELECT EXTRACT(DOW FROM TIMESTAMP '{$data['start_date']} {$data['start_time']}')"; $r = $con->query($sql); - $startDow = $r->fetchColumn(0); + $startDow = $r->fetchColumn(0); - foreach ($days as $day) { + if($data['no_end']) { + $endDate = NULL; + } + else if($data['repeats']) { + $endDate = $data['end_date']; + } + else { + $endDate = $data['start_date']; + } + + if($data['day_check'] === null) { + $data['day_check'] = array($startDow); + } + + foreach ($data['day_check'] as $day) { if($startDow !== $day){ @@ -60,23 +74,23 @@ class Show { else $daysAdd = $day - $startDow; - $sql = "SELECT date '{$startDate}' + INTERVAL '{$daysAdd} day' "; + $sql = "SELECT date '{$data['start_date']}' + INTERVAL '{$daysAdd} day' "; $r = $con->query($sql); $start = $r->fetchColumn(0); } else { - $start = $startDate; + $start = $data['start_date']; } $show = new CcShow(); - $show->setDbName($name); + $show->setDbName($data['name']); $show->setDbFirstShow($start); $show->setDbLastShow($endDate); - $show->setDbStartTime($startTime); + $show->setDbStartTime($data['start_time']); $show->setDbEndTime($endTime); - $show->setDbRepeats($repeats); + $show->setDbRepeats($data['repeats']); $show->setDbDay($day); - $show->setDbDescription($description); + $show->setDbDescription($data['description']); $show->setDbShowId($showId); $show->save(); } diff --git a/application/views/scripts/playlist/index.phtml b/application/views/scripts/playlist/index.phtml index df687565d..755bd12d0 100644 --- a/application/views/scripts/playlist/index.phtml +++ b/application/views/scripts/playlist/index.phtml @@ -13,3 +13,7 @@ ), 'default', true) ?>"> Edit Playlist + +form; diff --git a/application/views/scripts/schedule/add-show.phtml b/application/views/scripts/schedule/add-show.phtml deleted file mode 100644 index 9802bc860..000000000 --- a/application/views/scripts/schedule/add-show.phtml +++ /dev/null @@ -1 +0,0 @@ -

View script for controller Schedule and script/action name addShow
\ No newline at end of file diff --git a/public/js/campcaster/schedule/schedule.js b/public/js/campcaster/schedule/schedule.js index f705b5c42..1a9d5dbed 100644 --- a/public/js/campcaster/schedule/schedule.js +++ b/public/js/campcaster/schedule/schedule.js @@ -5,25 +5,13 @@ */ //dateText mm-dd-yy - -function checkDayOfWeek(date) { - var day; - - day = date.getDay(); - $("#schedule_dialog_day_check").find('input[value="'+day+'"]').attr("checked", "true"); -} - function startDpSelect(dateText, inst) { var time, date; time = dateText.split("-"); date = new Date(time[0], time[1] - 1, time[2]); - //checkDayOfWeek(date); - - $("#schedule_add_event_dialog") - .find("input#schedule_dialog_end_date_input") - .datepicker("option", "minDate", date); + $("#end_date").datepicker("option", "minDate", date); } function endDpSelect(dateText, inst) { @@ -32,159 +20,61 @@ function endDpSelect(dateText, inst) { time = dateText.split("-"); date = new Date(time[0], time[1] - 1, time[2]); - $("#schedule_add_event_dialog") - .find("input#schedule_dialog_start_date_input") - .datepicker( "option", "maxDate", date); + $("#start_date").datepicker( "option", "maxDate", date); } -function createDateInput(name, label) { - var d_input, t_input, dp, div, dl, label, format, newDate; +function createDateInput(el, onSelect) { + var date; - label = $(''); - d_input = $('') - .datepicker({ + el.datepicker({ minDate: new Date(), - onSelect: window[name+"DpSelect"], + onSelect: onSelect, dateFormat: 'yy-mm-dd' }); - //format = $.datepicker.regional[''].dateFormat; - newDate = $.datepicker.formatDate("yy-mm-dd", new Date()); - d_input.val(newDate); - - div = $('
') - .append(label) - .append(d_input); - - return div; + date = $.datepicker.formatDate("yy-mm-dd", new Date()); + el.val(date); } function submitShow() { - var name, description, hosts, all_day, repeats, - start_time, duration, start_date, end_date, dofw; - name = $("#schedule_dialog_name").val(); - description = $("#schedule_dialog_description").val(); - hosts = $("#schedule_dialog_hosts").val(); - all_day = $("#schedule_dialog_all_day").attr("checked"); - repeats = $("#schedule_dialog_repeats").attr("checked"); - start_time = $("#schedule_dialog_start_time").val(); - duration = $("#schedule_dialog_duration").val(); - start_date = $("#schedule_dialog_start_date_input").val(); - end_date = $("#schedule_dialog_end_date_input").val(); - dofw = $("#schedule_dialog_day_check").find(":checked").map(function(){ - return $(this).val(); - }).get(); + var formData, dialog; - if(dofw.length === 0) { - var time, date; - - time = start_date.split("-"); - date = new Date(time[0], time[1] - 1, time[2]); - dofw.push(date.getDay()); - } - - $.post("/Schedule/add-show/format/json", - { name: name, description: description, hosts: hosts, all_day: all_day, repeats: repeats, - start_time: start_time, duration: duration, start_date: start_date, end_date: end_date, dofw: dofw }, + formData = $("#schedule_add_event_dialog").find("form").serializeArray(); + dialog = $(this); + + $.post("/Schedule/add-show-dialog/format/json", + formData, function(data){ - $('#schedule_calendar').fullCalendar( 'refetchEvents' ); + if(data.form) { + $("#schedule_add_event_dialog").find("form").remove(); + $("#schedule_add_event_dialog").append(data.form); + } + else { + $("#schedule_calendar").fullCalendar( 'refetchEvents' ); + dialog.remove(); + } }); - - $(this).remove(); } function closeDialog(event, ui) { $(this).remove(); } -function makeShowDialog(json) { +function makeShowDialog(html) { - var dialog, div, dl, time_div, host_div, - label, input, textarea, repeats, all_day, day_checkbox, host_select; + var dialog; //main jqueryUI dialog dialog = $('
'); - div_left = $('
') - .width(300); - div_middle = $('
') - .width(250); - div_right = $('
') - .width(350); + dialog.append(html); - dialog.append(div_left); - dialog.append(div_middle); - dialog.append(div_right); + var start = dialog.find("#start_date"); + var end = dialog.find("#end_date"); - dialog.find("div") - .css("float", "left"); - - dl = $('
'); - - label = $('Name: '); - input = $(''); - - dl.append(label); - dl.append(input); - - label = $('Description: '); - textarea = $('