public function display() { // Set up search fields $form = new \PHPWS_Form(); $form->setMethod('get'); $form->addHidden('module', 'intern'); $form->addHidden('action', 'results'); $form->useRowRepeat(); // Student name or Banner ID $form->addText('name'); $form->setLabel('name', "Name or Banner ID"); /*************** * Course Info * ***************/ $terms = Term::getTermsAssoc(); $form->addSelect('term_select', $terms); $form->setLabel('term_select', 'Term'); $form->setClass('term_select', 'form-control'); $subjects = array('-1' => 'Select subject ') + Subject::getSubjects(); $form->addSelect('course_subj', $subjects); $form->setLabel('course_subj', 'Subject'); $form->setClass('course_subj', 'form-control'); $form->addText('course_no'); $form->setLabel('course_no', 'Course Number'); $form->setSize('course_no', 6); $form->setMaxSize('course_no', 4); $form->setClass('course_no', 'form-control'); $form->addText('course_sect'); $form->setLabel('course_sect', 'Section'); $form->setSize('course_sect', 6); $form->setMaxSize('course_sect', 4); $form->setClass('course_sect', 'form-control'); /**************** * Faculty Info * ****************/ // Deity can search for any department. Other users are restricted. if (\Current_User::isDeity()) { $depts = Department::getDepartmentsAssoc(); } else { $depts = Department::getDepartmentsAssocForUsername(\Current_User::getUsername()); } $depts = array('-1' => 'Select Department') + $depts; $form->addSelect('dept', $depts); $form->setLabel('dept', 'Department'); //$form->setClass('', 'form-control'); $form->setClass('dept', 'form-control'); // If the user only has one department, select it for them // sizeof($depts) == 2 because of the 'Select Deparmtnet' option if (sizeof($depts) == 2) { $keys = array_keys($depts); $form->setMatch('dept', $keys[1]); } // Student level radio button javascript('jquery'); javascriptMod('intern', 'majorSelector', array('form_id' => $form->id)); // Student Major dummy box (gets replaced by dropdowns below using JS when student_level is selected) $levels = array('-1' => 'Choose student level first'); $form->addDropBox('student_major', $levels); $form->setLabel('student_major', 'Major / Program'); $form->addCssClass('student_major', 'form-control'); // Get the majors list $majorsList = MajorsProviderFactory::getProvider()->getMajors(Term::timeToTerm(time())); // Undergrad major drop down $undergradMajors = array('-1' => 'Select Undergraduate Major') + $majorsList->getUndergradMajorsAssoc(); $form->addSelect('undergrad_major', $undergradMajors); $form->setMatch('undergrad_major', '-1'); $form->setClass('undergrad_major', 'form-control'); // Graduate major drop down $graduateMajors = array('-1' => 'Select Graduate Major') + $majorsList->getGraduateMajorsAssoc(); $form->addSelect('graduate_major', $graduateMajors); $form->setMatch('graduate_major', '-1'); $form->setClass('graduate_major', 'form-control'); /******************* * Internship Type * *******************/ // Handeled directly in the html template /************ * Location * ************/ // Campus Handeled directly in the html template // International vs Domestic - Handeled directly in the html template // State search /******************* * Workflow States * *******************/ $workflowStates = WorkflowStateFactory::getStatesAssoc(); unset($workflowStates['Intern\\WorkflowState\\CreationState']); // Remove this state, since it's not valid (internal only state for initial creation) $form->addCheckAssoc('workflow_state', $workflowStates); $form->addSubmit('submit', 'Search'); // Javascript... javascriptMod('intern', 'resetSearch'); return \PHPWS_Template::process($form->getTemplate(), 'intern', 'search.tpl'); }
/** * Row tags for DBPager */ public function getRowTags() { $tags = array(); // Get objects associated with this internship. $a = $this->getAgency(); $d = $this->getDepartment(); //TODO: Use a single $params array instead of making a new array for every call to PHPWS_Test::moduleLink // Student info. $tags['STUDENT_NAME'] = PHPWS_Text::moduleLink($this->getFullName(), 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); $tags['STUDENT_BANNER'] = PHPWS_Text::moduleLink($this->getBannerId(), 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); // Dept. info $tags['DEPT_NAME'] = PHPWS_Text::moduleLink($d->name, 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); // Faculty info. if (isset($this->faculty_id)) { $f = $this->getFaculty(); $facultyName = $f->getFullName(); $tags['FACULTY_NAME'] = PHPWS_Text::moduleLink($f->getFullName(), 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); } else { // Makes this cell in the table a clickable link, even if there's no faculty name $tags['FACULTY_NAME'] = PHPWS_Text::moduleLink(' ', 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); } $tags['TERM'] = PHPWS_Text::moduleLink(Term::rawToRead($this->term), 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); $tags['WORKFLOW_STATE'] = PHPWS_Text::moduleLink($this->getWorkflowState()->getFriendlyName(), 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); //$tags['EDIT'] = PHPWS_Text::moduleLink('Edit', 'intern', array('action' => 'ShowInternship', 'internship_id' => $this->id)); //$tags['PDF'] = PHPWS_Text::moduleLink('Generate Contract', 'intern', array('action' => 'pdf', 'id' => $this->id)); return $tags; }
/** * Builds the body of the internship form. */ public function buildInternshipForm() { javascript('jquery'); javascript('jquery_ui'); javascriptMod('intern', 'formGoodies'); // Form Submission setup $this->form->setAction('index.php?module=intern&action=SaveInternship'); $this->form->addSubmit('submit', 'Save'); /********************* * Workflow / Status * */ // Workflow Transitions View, adds fields to the form by reference $transView = new WorkflowTransitionView($this->intern, $this->form); $transView->show(); /***************** * OIED Approval * */ $this->form->addCheck('oied_certified'); $this->form->setLabel('oied_certified', 'Certified by Office of International Education and Development'); // If the user is not allowed to do OIED certification, disable the checkbox if (!\Current_User::allow('intern', 'oied_certify') || $this->intern->isDomestic()) { $this->form->setExtra('oied_certified', 'disabled="disabled" disabled'); } // Hidden field that shadows the real field, to ensure a value is always submitted, // because disabled fields are not submitted $this->form->addHidden('oied_certified_hidden'); /****************** * Student fields * */ $this->form->addText('student_first_name'); $this->form->setLabel('student_first_name', 'First Name'); $this->form->addCssClass('student_first_name', 'form-control'); $this->form->addText('student_middle_name'); $this->form->setLabel('student_middle_name', 'Middle Name/Initial'); $this->form->addCssClass('student_middle_name', 'form-control'); $this->form->addText('student_last_name'); $this->form->setLabel('student_last_name', 'Last Name'); $this->form->addCssClass('student_last_name', 'form-control'); $this->form->addText('student_phone'); $this->form->setLabel('student_phone', 'Phone'); $this->form->addCssClass('student_phone', 'form-control'); $this->form->addText('student_email'); $this->form->setLabel('student_email', 'ASU Email'); $this->form->addCssClass('student_email', 'form-control'); /* Student Address */ $this->form->addText('student_address'); $this->form->setLabel('student_address', 'Address'); $this->form->addCssClass('student_address', 'form-control'); $this->form->addText('student_city'); $this->form->setLabel('student_city', 'City'); $this->form->addCssClass('student_city', 'form-control'); $this->form->addDropBox('student_state', State::$UNITED_STATES); $this->form->setLabel('student_state', 'State'); $this->form->addCssClass('student_state', 'form-control'); $this->form->addText('student_zip'); $this->form->setLabel('student_zip', 'Zip Code'); $this->form->addCssClass('student_zip', 'form-control'); /************************ * Department Drop Down * */ if (\Current_User::isDeity()) { if (!is_null($this->intern)) { $depts = Department::getDepartmentsAssoc($this->intern->department_id); } else { $depts = Department::getDepartmentsAssoc(); } } else { if (!is_null($this->intern)) { $depts = Department::getDepartmentsAssocForUsername(\Current_User::getUsername(), $this->intern->department_id); } else { $depts = Department::getDepartmentsAssocForUsername(\Current_User::getUsername()); } } $this->form->addSelect('department', $depts); $this->form->setLabel('department', 'Department'); $this->form->addCssClass('department', 'form-control'); // If the user only has one department, select it for them // sizeof($depts) == 2 because of the 'Select Deparmtnet' option if (sizeof($depts) == 2) { $keys = array_keys($depts); $this->form->setMatch('department', $keys[1]); } /******************** * Faculty Member Dropdown * * The options for this drop down are provided through AJAX on page-load and * when the user changes the department dropdown above. */ $this->form->addSelect('faculty', array(-1 => 'Select Faculty Advisor')); $this->form->setExtra('faculty', 'disabled'); $this->form->setLabel('faculty', 'Faculty Advisor / Instructor of Record'); $this->form->addCssClass('faculty', 'form-control'); // Hidden field for selected faculty member $this->form->addHidden('faculty_id'); /*************** * Agency info * */ $this->form->addText('agency_name'); $this->form->addCssClass('agency_name', 'form-control'); $this->form->addCheck('copy_address_agency'); $this->form->setLabel('copy_address_agency', "Agency's address is same as Internship's"); $this->form->addText('agency_address'); $this->form->setLabel('agency_address', 'Address'); $this->form->addCssClass('agency_address', 'form-control'); $this->form->addText('agency_city'); $this->form->setLabel('agency_city', 'City'); $this->form->addCssClass('agency_city', 'form-control'); $this->form->addText('agency_zip'); $this->form->addCssClass('agency_zip', 'form-control'); $countries = CountryFactory::getCountries(); $countries = array('-1' => 'Select Country') + $countries; if ($this->intern->domestic) { $this->form->addSelect('agency_state', State::$UNITED_STATES); $this->form->setLabel('agency_state', 'State'); $this->form->addCssClass('agency_state', 'form-control'); $this->form->setLabel('agency_zip', 'Zip Code'); } else { $this->form->addText('agency_province'); $this->form->setLabel('agency_province', 'Province/Territory'); $this->form->addCssClass('agency_province', 'form-control'); $this->form->addSelect('agency_country', $countries); $this->form->setLabel('agency_country', 'Country'); $this->form->addCssClass('agency_country', 'form-control'); $this->form->setLabel('agency_zip', 'Postal Code'); } $this->form->addText('agency_phone'); $this->form->setLabel('agency_phone', 'Phone'); $this->form->addCssClass('agency_phone', 'form-control'); /*** * Agency supervisor info */ $this->form->addText('agency_sup_first_name'); $this->form->setLabel('agency_sup_first_name', 'First Name'); $this->form->addCssClass('agency_sup_first_name', 'form-control'); $this->form->addText('agency_sup_last_name'); $this->form->setLabel('agency_sup_last_name', 'Last Name'); $this->form->addCssClass('agency_sup_last_name', 'form-control'); $this->form->addText('agency_sup_title'); $this->form->setLabel('agency_sup_title', 'Title'); $this->form->addCssClass('agency_sup_title', 'form-control'); $this->form->addText('agency_sup_phone'); $this->form->setLabel('agency_sup_phone', 'Phone'); $this->form->addCssClass('agency_sup_phone', 'form-control'); $this->form->addText('agency_sup_email'); $this->form->setLabel('agency_sup_email', 'Email'); $this->form->addCssClass('agency_sup_email', 'form-control'); $this->form->addCheck('copy_address'); $this->form->setLabel('copy_address', "Supervisor's information is same as agency's"); $this->form->addText('agency_sup_address'); $this->form->setLabel('agency_sup_address', 'Address'); $this->form->addCssClass('agency_sup_address', 'form-control'); $this->form->addText('agency_sup_city'); $this->form->setLabel('agency_sup_city', 'City'); $this->form->addCssClass('agency_sup_city', 'form-control'); $this->form->addText('agency_sup_zip'); $this->form->addCssClass('agency_sup_zip', 'form-control'); if ($this->intern->domestic) { $this->form->addSelect('agency_sup_state', State::$UNITED_STATES); $this->form->setLabel('agency_sup_state', 'State'); $this->form->addCssClass('agency_sup_state', 'form-control'); $this->form->setLabel('agency_sup_zip', 'Zip Code'); } else { $this->form->addText('agency_sup_province'); $this->form->setLabel('agency_sup_province', 'Province'); $this->form->addCssClass('agency_sup_province', 'form-control'); $this->form->addSelect('agency_sup_country', $countries); $this->form->setLabel('agency_sup_country', 'Country'); $this->form->addCssClass('agency_sup_country', 'form-control'); $this->form->setLabel('agency_sup_zip', 'Postal Code'); } $this->form->addText('agency_sup_fax'); $this->form->setLabel('agency_sup_fax', 'Fax'); $this->form->addCssClass('agency_sup_fax', 'form-control'); /********************** * Internship details * */ /*********************** * Internship location * */ if ($this->intern->isDomestic() && !$this->intern->isInternational()) { $this->tpl['LOCATION'] = 'Domestic'; $this->form->addHidden('location', 'domestic'); } else { if (!$this->intern->isDomestic() && $this->intern->isInternational()) { $this->tpl['LOCATION'] = 'International'; $this->form->addHidden('location', 'international'); } } // Domestic fields $this->form->addText('loc_address'); $this->form->setLabel('loc_address', 'Address'); $this->form->addCssClass('loc_address', 'form-control'); // City $this->form->addText('loc_city'); $this->form->setLabel('loc_city', 'City'); $this->form->addCssClass('loc_city', 'form-control'); // Zip or postal code $this->form->addText('loc_zip'); $this->form->addCssClass('loc_zip', 'form-control'); // State or Country & Province if ($this->intern->isDomestic()) { $states = State::getAllowedStates(); $locationState = $this->intern->getLocationState(); if ($locationState === null) { throw new \InvalidArgumentException('Domestic internship with null value for state.'); } $this->tpl['LOC_STATE'] = $states[$locationState]; $this->form->setLabel('loc_zip', 'Zip'); } else { $countries = CountryFactory::getCountries(); $locationCountry = $this->intern->getLocationCountry(); if ($locationCountry === null) { throw new \InvalidArgumentException('International internship with null value for country.'); } $this->tpl['LOC_COUNTRY'] = $countries[$locationCountry]; // Itn'l location fields $this->form->addText('loc_province'); $this->form->setLabel('loc_province', 'Province/Territory'); $this->form->addCssClass('loc_province', 'form-control'); $this->form->setLabel('loc_zip', 'Postal Code'); } /************* * Term Info * */ //$terms = Term::getFutureTermsAssoc(); //$terms[-1] = 'Select Term'; //$this->form->addSelect('term', $terms); //$this->form->setLabel('term', 'Select Term'); //$this->form->addCssClass('term', 'form-control'); $this->tpl['TERM'] = Term::rawToRead($this->intern->term); $this->form->addText('start_date'); $this->form->setLabel('start_date', 'Start Date'); $this->form->addCssClass('start_date', 'form-control'); $this->form->addText('end_date'); $this->form->setLabel('end_date', 'End Date'); $this->form->addCssClass('end_date', 'form-control'); $this->form->addText('credits'); $this->form->setLabel('credits', 'Credit Hours'); $this->form->addCssClass('credits', 'form-control'); $this->form->addText('avg_hours_week'); $this->form->setLabel('avg_hours_week', 'Average Hours per Week'); $this->form->addCssClass('avg_hours_week', 'form-control'); $this->form->addCheck('multipart'); $this->form->setLabel('multipart', 'This internship is part of a multi-part experience.'); $this->form->addCheck('secondary_part'); $this->form->setLabel('secondary_part', 'This is a secondary part (enrollment complete through primary part).'); /*************** * Course Info * */ $subjects = array("-1" => "Select subject...") + Subject::getSubjects(); $this->form->addSelect('course_subj', $subjects); $this->form->setLabel('course_subj', 'Subject'); $this->form->addCssClass('course_subj', 'form-control'); $this->form->addText('course_no'); $this->form->setLabel('course_no', 'Number'); $this->form->addCssClass('course_no', 'form-control'); $this->form->addText('course_sect'); $this->form->setLabel('course_sect', 'Section'); $this->form->addCssClass('course_sect', 'form-control'); $this->form->addText('course_title'); $this->form->setLabel('course_title', 'Title'); $this->form->setMaxSize('course_title', 28); // Limit to 28 chars, per Banner $this->form->addCssClass('course_title', 'form-control'); // Corequisite if (!is_null($this->intern)) { $dept = $this->intern->getDepartment(); if ($dept->hasCorequisite()) { $this->form->addText('corequisite_course_num'); $this->form->addCssClass('corequisite_course_num', 'form-control'); $this->form->addText('corequisite_course_sect'); $this->form->addCssClass('corequisite_course_sect', 'form-control'); } } /************ * Pay Info * */ $pay = array('unpaid' => 'Unpaid', 'paid' => 'Paid'); $this->form->addRadioAssoc('payment', $pay); $this->form->setMatch('payment', 'unpaid'); // Default to unpaid $this->form->addCheck('stipend'); $this->form->setLabel('stipend', 'Stipend'); $this->form->addText('pay_rate'); $this->form->setLabel('pay_rate', 'Pay Rate'); $this->form->addCssClass('pay_rate', 'form-control'); /******************* * Internship Type * */ $this->form->addRadioAssoc('experience_type', Internship::getTypesAssoc()); $this->form->setMatch('experience_type', 'internship'); /********* * Notes * */ $this->form->addTextArea('notes'); $this->form->setLabel('notes', 'Notes'); $this->form->addCssClass('notes', 'form-control'); }
public function execute() { echo json_encode(Term::getFutureTermsAssoc()); exit; }
/** * Attempts to find a student by their student ID. Throws an exception if the student * cannot be located. * * @param $studentId The student's ID number. * @throws StudentNotFoundException */ private function studentIdSearch($studentId) { $student = StudentProviderFactory::getProvider()->getStudent($studentId, Term::timeToTerm(time())); return $student; }