/** * Builds the body of the internship form. */ public function buildInternshipForm() { javascript('jquery'); javascript('jquery_ui'); javascriptMod('intern', 'spinner'); javascriptMod('intern', 'formGoodies'); // Form Submission setup $this->form->setAction('index.php?module=intern&action=add_internship'); $this->form->addSubmit('submit', 'Save'); /********************* * Workflow / Status * */ PHPWS_Core::initModClass('intern', 'WorkflowStateFactory.php'); PHPWS_Core::initModClass('intern', 'WorkflowTransitionView.php'); // Check the Internship's state, and set a default state if it's a new internship $workflowState = $this->intern->getWorkflowState(); if (is_null($workflowState)) { $state = WorkflowStateFactory::getState('CreationState'); $this->intern->setState($state); // Set this initial value } // 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'); } // 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('banner'); $this->form->setLabel('banner', 'Banner ID'); // Digits only $this->form->addCssClass('banner', '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'); // GPA $this->form->addText('student_gpa'); $this->form->setLabel('student_gpa', 'GPA'); $this->form->addCssClass('student_gpa', 'form-control'); // Campus $this->form->addRadioAssoc('campus', array('main_campus' => 'Main Campus', 'distance_ed' => 'Distance Ed')); $this->form->setMatch('campus', 'main_campus'); // Student level $levels = array('-1' => 'Choose level', 'ugrad' => 'Undergraduate', 'grad' => 'Graduate'); $this->form->addDropBox('student_level', $levels); $this->form->setLabel('student_level', 'Level'); $this->form->addCssClass('student_level', 'form-control'); // Student Major dummy box (gets replaced by dropdowns below using JS when student_level is selected) $levels = array('-1' => 'Choose student level first'); $this->form->addDropBox('student_major', $levels); $this->form->setLabel('student_major', 'Major / Program'); $this->form->addCssClass('student_major', 'form-control'); /***************************** * Undergrad Major Drop Down * */ if (isset($this->intern)) { $majors = Major::getMajorsAssoc($this->intern->ugrad_major); } else { $majors = Major::getMajorsAssoc(); } $this->form->addSelect('ugrad_major', $majors); $this->form->setLabel('ugrad_major', 'Undergraduate Majors & Certificate Programs'); $this->form->addCssClass('ugrad_major', 'form-control'); /**************************** * Graduate Major Drop Down * */ if (isset($this->intern)) { $progs = GradProgram::getGradProgsAssoc($this->intern->grad_prog); } else { $progs = GradProgram::getGradProgsAssoc(); } $this->form->addSelect('grad_prog', $progs); $this->form->setLabel('grad_prog', 'Graduate Majors & Certificate Programs'); $this->form->addCssClass('grad_prog', '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->setLabel('agency_name', '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->addSelect('agency_state', State::$UNITED_STATES); $this->form->setLabel('agency_state', 'State'); $this->form->addCssClass('agency_state', 'form-control'); $this->form->addText('agency_zip'); $this->form->setLabel('agency_zip', 'Zip Code'); $this->form->addCssClass('agency_zip', 'form-control'); $this->form->addText('agency_province'); $this->form->setLabel('agency_province', 'Province/Territory'); $this->form->addCssClass('agency_province', 'form-control'); $this->form->addText('agency_country'); $this->form->setLabel('agency_country', 'Country'); $this->form->addCssClass('agency_country', 'form-control'); $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 address 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->addSelect('agency_sup_state', State::$UNITED_STATES); $this->form->setLabel('agency_sup_state', 'State'); $this->form->addCssClass('agency_sup_state', 'form-control'); $this->form->addText('agency_sup_zip'); $this->form->setLabel('agency_sup_zip', 'Zip Code'); $this->form->addCssClass('agency_sup_zip', 'form-control'); $this->form->addText('agency_sup_province'); $this->form->setLabel('agency_sup_province', 'Province'); $this->form->addCssClass('agency_sup_province', 'form-control'); $this->form->addText('agency_sup_country'); $this->form->setLabel('agency_sup_country', 'Country'); $this->form->addCssClass('agency_sup_country', 'form-control'); $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 * */ $loc = array('domestic' => 'Domestic', 'internat' => 'International'); $this->form->addRadioAssoc('location', $loc); //$this->form->setMatch('location', 'domestic'); // Default to domestic //$this->form->setRequired('location'); // Domestic fields $this->form->addText('loc_address'); $this->form->setLabel('loc_address', 'Address'); $this->form->addCssClass('loc_address', 'form-control'); $this->form->addText('loc_city'); $this->form->setLabel('loc_city', 'City'); $this->form->addCssClass('loc_city', 'form-control'); $this->form->addSelect('loc_state', State::getAllowedStates()); $this->form->setLabel('loc_state', 'State'); $this->form->addCssClass('loc_state', 'form-control'); $this->form->addText('loc_zip'); $this->form->setLabel('loc_zip', 'Zip'); $this->form->addCssClass('loc_zip', 'form-control'); // 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->addText('loc_country'); $this->form->setLabel('loc_country', 'Country'); $this->form->addCssClass('loc_country', 'form-control'); /************* * 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->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 = 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'); }
/** * Sends the 'Registration Issue' notification email. * * @param Internship $i * @param Agency $agency * @param string $note */ public static function sendRegistrationIssueEmail(Internship $i, Agency $agency, $note) { $tpl = array(); $subjects = Subject::getSubjects(); $settings = InternSettings::getInstance(); $faculty = $i->getFaculty(); $tpl = array(); $tpl['NAME'] = $i->getFullName(); $tpl['BANNER'] = $i->banner; $tpl['USER'] = $i->email; $tpl['PHONE'] = $i->phone; $tpl['TERM'] = Term::rawToRead($i->term, false); if (isset($i->course_subj)) { $tpl['SUBJECT'] = $subjects[$i->course_subj]; } else { $tpl['SUBJECT'] = '(No course subject provided)'; } $tpl['COURSE_NUM'] = $i->course_no; if (isset($i->course_sect)) { $tpl['SECTION'] = $i->course_sect; } else { $tpl['SECTION'] = '(not provided)'; } if (isset($i->course_title)) { $tpl['COURSE_TITLE'] = $i->course_title; } if (isset($i->credits)) { $tpl['CREDITS'] = $i->credits; } else { $tpl['CREDITS'] = '(not provided)'; } $startDate = $i->getStartDate(true); if (isset($startDate)) { $tpl['START_DATE'] = $startDate; } else { $tpl['START_DATE'] = '(not provided)'; } $endDate = $i->getEndDate(true); if (isset($endDate)) { $tpl['END_DATE'] = $endDate; } else { $tpl['END_DATE'] = '(not provided)'; } if ($faculty instanceof Faculty) { $tpl['FACULTY'] = $faculty->getFullName(); } else { $tpl['FACULTY'] = '(not provided)'; } $department = $i->getDepartment(); $tpl['DEPT'] = $department->getName(); if ($i->international) { $tpl['COUNTRY'] = $i->loc_country; $tpl['INTERNATIONAL'] = 'Yes'; $intlSubject = '[int\'l] '; } else { $tpl['STATE'] = $i->loc_state; $tpl['INTERNATIONAL'] = 'No'; $intlSubject = ''; } $tpl['NOTE'] = $note; $to = $i->email . $settings->getEmailDomain(); if ($faculty instanceof Faculty) { $cc = array($faculty->getUsername() . $settings->getEmailDomain()); } else { $cc = array(); } $subject = 'Internship Enrollment Issue'; email::sendTemplateMessage($to, $subject, 'email/RegistrationIssue.tpl', $tpl, $cc); }
private function plugCourseInfo() { // Course Info // Remove the subject field and re-add it $this->form->dropElement('course_subj'); $this->form->addSelect('course_subj', Subject::getSubjects($this->intern->course_subj)); $this->form->setMatch('course_subj', $this->intern->course_subj); $this->formVals['course_no'] = $this->intern->course_no; $this->formVals['course_sect'] = $this->intern->course_sect; $this->formVals['course_title'] = $this->intern->course_title; if ($this->intern->isMultipart()) { $this->form->setMatch('multipart', '1'); } if ($this->intern->isSecondaryPart()) { $this->form->setMatch('secondary_part', '1'); } $this->formVals['corequisite_course_num'] = $this->intern->getCorequisiteNum(); $this->formVals['corequisite_course_sect'] = $this->intern->getCorequisiteSection(); }
public static function display() { PHPWS_Core::initModClass('intern', 'Term.php'); PHPWS_Core::initModClass('intern', 'Department.php'); PHPWS_Core::initModClass('intern', 'Major.php'); PHPWS_Core::initModClass('intern', 'GradProgram.php'); PHPWS_Core::initModClass('intern', 'Internship.php'); PHPWS_Core::initModClass('intern', 'Agency.php'); PHPWS_Core::initModClass('intern', 'Subject.php'); PHPWS_Core::initModClass('intern', 'WorkflowStateFactory.php'); // Set up search fields $form = new PHPWS_Form(); $form->setMethod('get'); $form->addHidden('module', 'intern'); $form->addHidden('action', 'results'); $form->useRowRepeat(); $form->addText('name'); $form->setLabel('name', "Name or Banner ID"); $terms = Term::getTermsAssoc(); //$thisTerm = Term::timeToTerm(time()); $form->addSelect('term_select', $terms); $form->setLabel('term_select', 'Term'); $form->setClass('term_select', 'form-control'); //$form->setMatch('term_select', $thisTerm); // Deity can search for any department. Other users are restricted. if (Current_User::isDeity()) { $depts = Department::getDepartmentsAssoc(); } else { $depts = Department::getDepartmentsAssocForUsername(Current_User::getUsername()); } $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)); $levels = array('-1' => 'Any Level', 'ugrad' => 'Undergraduate', 'grad' => 'Graduate'); $form->addSelect('student_level', $levels); $form->setLabel('student_level', 'Level'); $form->setClass('student_level', 'form-control'); // 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'); // Undergrad major drop down if (isset($s)) { $majors = Major::getMajorsAssoc($s->ugrad_major); } else { $majors = Major::getMajorsAssoc(); } $form->addSelect('ugrad_major', $majors); $form->setLabel('ugrad_major', 'Undergraduate Majors & Certificate Programs'); $form->setClass('ugrad_major', 'form-control'); // Graduate major drop down if (isset($s)) { $progs = GradProgram::getGradProgsAssoc($s->grad_prog); } else { $progs = GradProgram::getGradProgsAssoc(); } $form->addSelect('grad_prog', $progs); $form->setLabel('grad_prog', 'Graduate Majors & Certificate Programs'); $form->setClass('grad_prog', 'form-control'); // Campus $campuses = array('main_campus' => 'Main Campus', 'distance_ed' => 'Distance Ed'); $form->addRadioAssoc('campus', $campuses); /*************** * Course Info * ***************/ $subjects = 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'); // Internship types. $types = Internship::getTypesAssoc(); $form->addRadioAssoc('type', $types); // Location $loc = array('domestic' => 'Domestic', 'internat' => 'International'); $form->addRadioAssoc('loc', $loc); /* State search */ $db = new PHPWS_DB('intern_state'); $db->addWhere('active', 1); $db->addColumn('abbr'); $db->addColumn('full_name'); $db->setIndexBy('abbr'); // get backwards because we flip it $db->addOrder('full_name desc'); $states = $db->select('col'); if (empty($states)) { NQ::simple('intern', INTERN_ERROR, 'The list of allowed US states for internship locations has not been configured. Please use the administrative options to <a href="index.php?module=intern&action=edit_states">add allowed states.</a>'); NQ::close(); PHPWS_Core::goBack(); } $states[-1] = 'Select state'; $states = array_reverse($states, true); $form->addSelect('state', $states); $form->setLabel('state', 'State'); $form->setClass('state', 'form-control'); /* Province search */ $form->addText('prov'); $form->setLabel('prov', 'Province/Territory'); $form->setClass('prov', 'form-control'); // Workflow states $workflowStates = WorkflowStateFactory::getStatesAssoc(); unset($workflowStates['CreationState']); // Remove this state, since it's not valid (internal only state for initial creation) $form->addCheckAssoc('workflow_state', $workflowStates); unset($_REQUEST['module']); unset($_REQUEST['action']); unset($_REQUEST['submit']); //test($_REQUEST,1); $form->plugIn($_REQUEST); $form->addSubmit('submit', 'Search'); // Javascript... javascript('jquery'); javascriptMod('intern', 'resetSearch'); return PHPWS_Template::process($form->getTemplate(), 'intern', 'search.tpl'); }