# HG changeset patch # User Ethan Zonca # Date 2011-10-14 21:05:02 # Node ID e16dc19f773387b919edf4944e24fa2783e13514 # Parent 7c3278c804ca45fb87a09f459548117f5330f595 Initial import of mobile page (in-progress) diff --git a/minput.php b/minput.php new file mode 100755 --- /dev/null +++ b/minput.php @@ -0,0 +1,256 @@ +. + */ + +include_once 'inc' . DIRECTORY_SEPARATOR . 'class.schedule.php'; +include_once 'inc' . DIRECTORY_SEPARATOR . 'class.course.inc'; +include_once 'inc' . DIRECTORY_SEPARATOR . 'class.section.php'; +include_once 'inc' . DIRECTORY_SEPARATOR . 'class.page.php'; +include_once 'inc' . DIRECTORY_SEPARATOR . 'class.mobilepage.php'; +require_once('inc' . DIRECTORY_SEPARATOR . 'schedule_store.inc'); + +/* + * Help constrol whether or not the school selection dialogue should + * be shown or whether or not $_SESSION['school_chosen'] should be set + * TRUE. These things should generally be false when loading a saved + * schedule. + */ +$creating_new_schedule = TRUE; + +$schedule_store = FALSE; +$sch = FALSE; +$errors_fix = FALSE; +$inputPage_options = array('school_semester_constant' => FALSE); + +$parent_schedule_id = NULL; +if (isset($_REQUEST['s'])) + { + $schedule_store = schedule_store_init(); + $parent_schedule_id = (int)$_REQUEST['s']; + $sch = schedule_store_retrieve($schedule_store, $parent_schedule_id); + + /* + * Allow a user to change the school and semester of a + * saved_schedule he's trying to revive if he really wants to. + */ + if (!empty($_GET['school'])) + $school = school_load_guess(FALSE); + else + $school = $sch->school_get(); + + if (!empty($_GET['semester'])) + $semester = school_semester_guess($school, FALSE); + else + $semester = $sch->semester_get(); + + if (!empty($sch)) + { + $creating_new_schedule = FALSE; + $inputPage_options += array('school' => $school, + 'semester' => $semester); + } + else + $parent_schedule_id = NULL; + + /* + * Code outside of this block should _not_ assume $school and/or + * $semester are defined. But it'd be more expensive to unset() + * them here than to just overwrite them later... + */ + } +elseif (!empty($_REQUEST['e'])) + { + /* + * Read an errorful schedule out of $_POST, this $_POST is created + * by process.php when the originally sinful user produces bad + * data. + */ + $errors_fix = TRUE; + + if (!empty($_POST['postData'])) + $postData = $_POST['postData']; + + if (!empty($postData['parent_schedule_id'])) + $parent_schedule_id = (int)$postData['parent_schedule_id']; + + if (!empty($postData['school'])) + { + $school = school_load($postData['school']); + if (!empty($school)) + $inputPage_options['school'] = $school; + } + + if (!empty($school) && !empty($postData['semester'])) + { + $semesters = school_semesters($school); + if (!empty($semesters[$postData['semester']])) + $inputPage_options['semester'] = $semester; + } + + $creating_new_schedule = FALSE; + } + +/* + * We cannot initialize the page object nor guess the school before + * figuring loading a saved schedule because we'll default to that + * saved_schedule's school/semester. + */ +$scripts = array('jQueryMobile', 'jQueryUI-NoStyles', 'mScheduleInput'); +$inputPage = mobilepage::page_create('Scheduler', $scripts, $inputPage_options); +$school = $inputPage->get_school(); +$semester = $inputPage->semester_get(); + +$hc = ' +'; + +$inputPage->headcode_add('scheduleInput', $hc, TRUE); + +$inputPage->head(); + +/* + * Force a student to choose a school or declare he's a generic + * student before displaying the input form. To do this, we need + * another variable in $_SESSION: $_SESSION['school_chosen']. + */ +if (!empty($_REQUEST['school']) && !empty($_SESSION['school']) && !strcmp($_REQUEST['school'], $_SESSION['school'])) + $_SESSION['school_chosen'] = TRUE; +if (!empty($_REQUEST['selectschool']) + || empty($school) || $school['id'] == 'default' && empty($_SESSION['school_chosen'])) + { + $next_page = 'input.php?'; + if (isset($_GET['s'])) + $next_page .= 's=' . (int)$_GET['s'] . '&'; + if (isset($_GET['semester'])) + $next_page .= 'semester=' . htmlentities($$_GET['semester']) . '&'; +?> +

School Selection

+

+ Choose the school you attend from the list below. If you cannot + find your school, you may proceed using + the generic + settings. +

+showSchools($next_page); + $inputPage->foot(); + exit; + } + +if (!empty($_REQUEST['selectsemester'])) + { +?> +

Semester Selection

+

+ Choose the semester for which you wish you make a schedule from the + list below. If any semester is missing, please let us know. +

+showSemesters($next_page); + $inputPage->foot(); + exit; + } + +$inputPage->showSavedScheds($_SESSION); +?> + + +
+ +
+ + +

+ Welcome to SPaddressStudent(', ', '', FALSE); ?>! + get_school())): ?> + To get started, enter in a course identifier (e.g., + + +

+ +
+


+ /> + + + + + +

+ + + +
OK
+ +
+ +
+ +
+ +foot(); + +function input_course_js(Course $course, $whitespace = ' ') +{ + $title = $course->title_get(); + if (empty($title)) + $title = ''; + $js = $whitespace . 'class_last = add_class_n(' . json_encode($course->getName()) . ', ' + . json_encode($title) . ');' . PHP_EOL; + + foreach ($course as $course_slot) + foreach ($course_slot as $section) + { + $meetings = $section->getMeetings(); + foreach ($meetings as $meeting) + { + $js .= $whitespace . 'add_section_n(class_last, ' . json_encode($section->getLetter()) . ', ' + . json_encode($section->getSynonym()) . ', ' + . json_encode($meeting->getStartTime()) . ', ' + . json_encode($meeting->getEndTime()) . ', ' + . json_encode(array('m' => $meeting->getDay(0), 't' => $meeting->getDay(1), 'w' => $meeting->getDay(2), 'h' => $meeting->getDay(3), 'f' => $meeting->getDay(4), + 's' => $meeting->getDay(5))) . ', ' + . json_encode($meeting->instructor_get()) . ', ' + . json_encode($meeting->getLocation()) . ', ' + . json_encode($meeting->type_get()) . ', ' + . json_encode($course_slot->id_get()) . ');' . PHP_EOL; + } + } + + return $js; +}