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 = $('');
-
- dl.append(label);
- dl.append(textarea);
-
- dl.find("span").wrap('');
- dl.find("input, textarea").wrap('');
- div_left.append(dl);
-
- repeats = $('repeats').click(function(){
- $("#schedule_dialog_day_check").toggle();
- $("#schedule_dialog_end_date_input").parent().toggle();
-
- });
- all_day = $('all day').click(function(){
-
- });
- div_middle.append(all_day)
- .append(repeats);
-
- day_checkbox = $('').hide();
-
- $.datepicker.regional[''].dayNamesMin.map(function(day, i){
- day_checkbox.append($(''+day+''));
- });
-
- div_right.append(day_checkbox);
-
- div_middle.append(createDateInput("start", "Date Start"))
- .append(createDateInput("end", "Date End").hide());
-
- dl = $('
');
-
- label = $('Hosts: ');
- host_select = $('');
- json.hosts.map(function(host){
- host_select.append($(''));
- });
-
- dl.append(label);
- dl.append(host_select);
- dl.find("span").wrap('');
- dl.find("select").wrap('');
- div_left.append(dl);
-
- label = $('Start Time: ');
- input = $('');
-
- div_middle.append(label);
- div_middle.append(input);
-
- label = $('Duration: ');
- input = $('');
-
- div_middle.append(label);
- div_middle.append(input);
+ createDateInput(start, startDpSelect);
+ createDateInput(end, endDpSelect);
dialog.dialog({
autoOpen: false,
@@ -285,8 +175,8 @@ $(document).ready(function() {
url = '/Schedule/add-show-dialog/format/json';
- $.post(url, function(json){
- var dialog = makeShowDialog(json);
+ $.get(url, function(json){
+ var dialog = makeShowDialog(json.form);
dialog.dialog('open');
});