Adding Forms and Fields
This will describe how to add a new module to iHRIS Manage to add in two new forms for tracking Professional Development for an employee. These instructions could be modified for iHRIS Qualify with a few minor changes.
Step 1: Create the module
Change into your site's modules directory and create a new directory called ProfDevelopment and change into this directory. Create lib and templates directory in the ProfDevelopment module directory. Create and edit a new file called ProfDevelopment.xml (in the ProfDevelopment directory) with the following contents:
<source lang="xml">
<?xml version="1.0"?> <!DOCTYPE I2CEConfiguration SYSTEM "I2CE_Configuration.dtd"> <I2CEConfiguration name='ProfDevelopment'>
<metadata> <displayName>Professional Development</displayName> <category>Application Component</category> <description>Adds in two new forms for tracking professional development</description> <version>3.1.4</version> <path name='classes'> <value>./lib</value> </path> <path name='templates'> <value>./templates</value> </path> <priority>325</priority> </metadata> <configurationGroup name='ProfDevelopment' path='/I2CE'> <displayName>Professional Development</displayName> <configurationGroup name='forms' path='/modules/forms'> <displayName>Forms</displayName> <description>Information about the forms made available by ProfDevelopment</description> <configurationGroup name='forms'> <displayName>Forms available to the form factory</displayName> <status>advanced:true</status> <status>required:true</status>
<configurationGroup name='person_profdev'> <displayName>Person Professional Development</displayName> <description>The Person Professional Development Form</description> <configuration name='class' values='single'> <displayName>Class Name</displayName> <description>The name of the class providing the form</description> <value>iHRIS_PersonProfDevelopment</value> </configuration> <configuration name='display' values='single'> <displayName>Display name</displayName> <description>The display name for this form</description> <value>Person Professional Development</value> </configuration> </configurationGroup>
<configurationGroup name='person_continuous_profdev'> <displayName>Person Continuous Professional Development</displayName> <description>The Person Continuous Professional Development Form</description> <configuration name='class' values='single'> <displayName>Class Name</displayName> <description>The name of the class providing the form</description> <value>iHRIS_PersonContinuousProfDev</value> </configuration> <configuration name='display' values='single'> <displayName>Display name</displayName> <description>The display name for this form</description> <value>Person Continuous Professional Development</value> </configuration> </configurationGroup>
<configurationGroup name='person_meta' path='/modules/forms/forms/person/meta'> <displayName>MetaData on the form</displayName> <configuration name='child_forms' values='many' > <status>uniquemerge:true</status> <displayName>Child Forms</displayName> <value>person_profdev</value> <value>person_continuous_profdev</value> </configuration> </configurationGroup> </configurationGroup> <configurationGroup name="formClasses" > <displayName>Form Class Configuration</displayName>
<configurationGroup name="iHRIS_PersonProfDevelopment"> <displayName>Configuration for the class 'iHRIS_PersonProfDevelopment'</displayName> <configuration name="extends"> <displayName>The class this form extends</displayName> <value>I2CE_Form</value> </configuration> <configurationGroup name="fields"> <displayName>The fields defined for this form.</displayName>
<configurationGroup name="year"> <displayName>The fields 'year'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>DATE_Y</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Year</value> </configuration> <configuration name="default_eval"> <displayName>The default value for this field as an eval() string</displayName> <value>I2CE_Date::now()</value> </configuration> </configurationGroup> <configurationGroup name="course"> <displayName>The fields 'course'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Course</value> </configuration> </configurationGroup> <configurationGroup name="duration"> <displayName>The fields 'duration'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>INT</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Duration (in Days)</value> </configuration> </configurationGroup> <configurationGroup name="certification"> <displayName>The fields 'certification'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Certification</value> </configuration> </configurationGroup>
</configurationGroup> </configurationGroup>
<configurationGroup name="iHRIS_PersonContinuousProfDev"> <displayName>Configuration for the class 'iHRIS_PersonContinuousProfDev'</displayName> <configuration name="extends"> <displayName>The class this form extends</displayName> <value>I2CE_Form</value> </configuration> <configurationGroup name="fields"> <displayName>The fields defined for this form.</displayName>
<configurationGroup name="work_training_1"> <displayName>The fields 'work_training_1'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Training Priority 1</value> </configuration> </configurationGroup> <configurationGroup name="work_training_2"> <displayName>The fields 'work_training_2'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Training Priority 2</value> </configuration> </configurationGroup> <configurationGroup name="work_training_3"> <displayName>The fields 'work_training_3'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Training Priority 3</value> </configuration> </configurationGroup>
<configurationGroup name="personal_training_1"> <displayName>The fields 'personal_training_1'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Priority 1</value> </configuration> </configurationGroup> <configurationGroup name="personal_training_2"> <displayName>The fields 'personal_training_2'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Priority 2</value> </configuration> </configurationGroup> <configurationGroup name="personal_training_3"> <displayName>The fields 'personal_training_3'</displayName> <configuration name="formfield"> <displayName>The form field type</displayName> <value>STRING_LINE</value> </configuration> <configuration name="headers" type="delimited"> <displayName>The headers for this field.</displayName> <value>default:Priority 3</value> </configuration> </configurationGroup>
</configurationGroup> </configurationGroup>
</configurationGroup> </configurationGroup> <configurationGroup name='page'> <displayName>Pages</displayName> <description>Information about various pages made available by the system</description> <status>required:true</status>
<configuration name='view_class' path='/I2CE/page/view/class'> <displayName>Page Class</displayName> <description>Change the class responsible for displaying this page for this module</description> <status>overwrite:true</status> <value>iHRIS_PageViewManageProfDev</value> </configuration>
<configurationGroup name='person_profdev'> <displayName>Person Professional Development Page</displayName> <description> The page 'person_profdev' which has the action of: Add/Update Professional Development</description> <configuration name='class' values='single'> <displayName>Page Class</displayName> <description>The class responsible for displaying this page</description> <status>required:true</status> <value>iHRIS_PageFormParentPerson</value> </configuration> <configuration name='style' values='single'> <displayName>Page Style</displayName> <description>The Page Style</description> <value>ihris_common_page_form_parent_person</value> </configuration> <configurationGroup name='args'> <displayName>Page Options</displayName> <description>The options that control the access and display of all pages</description> <configuration name='title' values='single'> <displayName>Page Title</displayName> <description>Page Title</description> <status>required:true</status> <value>Add/Update Professional Development</value> </configuration> <configuration name='page_form' values='single'> <displayName>Form</displayName> <description>The form this page is using</description> <status>required:true</status> <value>person_profdev</value> </configuration> </configurationGroup> </configurationGroup>
<configurationGroup name='person_continuous_profdev'> <displayName>Person Continuous Professional Development Page</displayName> <description> The page 'person_continuous_profdev' which has the action of: Add/Update Continuous Professional Development</description> <configuration name='class' values='single'> <displayName>Page Class</displayName> <description>The class responsible for displaying this page</description> <status>required:true</status> <value>iHRIS_PageFormParentPerson</value> </configuration> <configuration name='style' values='single'> <displayName>Page Style</displayName> <description>The Page Style</description> <value>ihris_common_page_form_parent_person</value> </configuration> <configurationGroup name='args'> <displayName>Page Options</displayName> <description>The options that control the access and display of all pages</description> <configuration name='title' values='single'> <displayName>Page Title</displayName> <description>Page Title</description> <status>required:true</status> <value>Add/Update Continuous Professional Development</value> </configuration> <configuration name='page_form' values='single'> <displayName>Form</displayName> <description>The form this page is using</description> <status>required:true</status> <value>person_continuous_profdev</value> </configuration> </configurationGroup> </configurationGroup>
</configurationGroup> </configurationGroup>
</I2CEConfiguration>
</source>
Step 2: Modify the View Page
Copy the Manage view page from the ihris-manage lib directory (iHRIS_PageViewManage.php) to the module lib directory and rename it iHRIS_PageViewManageProfDev.php. Modify the list of child forms to include person_profdev and person_continuous_profdev. This is just a code block from the original page. Only make the changes between the comments.
<source lang="php"> $child_forms = array( "benefit", "employment",
"education", "person_language", "person_competency",
// Added these two new forms for the Professional Development module
"person_profdev", "person_continuous_profdev"
// End of additions
);
$global = array( 'person' => true, 'person_position' => true ); </source>
<source lang="php"> if ( !array_key_exists( "demographic", $this->person->children ) ) {
$this->template->addFile( "view_demographic_link.html", "tbody" );
} // Added the following to display a continuous professional development link when // there isn't an existing form associated with this record. if ( !array_key_exists( "person_continuous_profdev", $this->person->children ) ) {
$this->template->appendFileById( "view_person_continuous_profdev_link.html", "span", "profdev_links" );
} // End of additions
$contacts = array("TYPE_PERSONAL","TYPE_WORK","TYPE_EMERGENCY","TYPE_OTHER"); $this->showContacts($contacts,$contact_seen,'hr_staff'); </source>
Copy the view.html template file from the ihris-manage templates directory to the module templates directory. Make the following changes after the Qualifications section. The changes are surround by comments.
<source lang="html4strict">
<a name="jump_qualification">Qualifications</a>
<a href="" class="hide" title="Hide" onclick="return hideDiv('qualification', this);">Hide</a>
<a name="jump_profdev">Professional Development</a>
<a href="" class="hide" title="Hide" onclick="return hideDiv('profdev', this );">Hide</a>
</source>
Copy the menu_view_person.html template file from the ihris-manage templates directory to the module templates directory. Make the following changes:
<source lang="html4strict">
Step 3: Add in the Professional Development templates
In the templates directory create the following files and contents:
view_person_profdev.html
<source lang="html4strict">
Edit This Information
Other Training |
---|
</source>
form_person_profdev.html
<source lang="html4strict"> <tbody id="person_form">
Other Training (of more than 7 days)
</tbody> </source>
view_person_continuous_profdev.html
<source lang="html4strict">
Edit This Information
Training needs that would improve everyday work | |
---|---|
Training needs for personal development |
</source>
view_person_continuous_profdev_link.html
<source lang="html4strict"> </source>
form_person_continuous_profdev.html
<source lang="html4strict"> <tbody>
Training needs that would improve everyday work Training needs for personal development
</tbody> </source>
Step 4: Enable the module in the site config file
Edit your site configuration file and add in the following line below any requirements and above the paths:
<source lang="xml"> <enable name="ProfDevelopment" /> </source>
Download the Module
You can also download the module from launchpad and extract it to your site modules directory and enable the module in your site config file.