Adding Forms and Fields

From IHRIS Wiki

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>

   

</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">

  • <a href="#jump_qualification" onclick="if(prevAnchor) prevAnchor.className=; this.className='active'; prevAnchor=this;">Qualifications</a>
  • <a href="#jump_profdev" onclick="if(prevAnchor) prevAnchor.className=; this.className='active'; prevAnchor=this;">Professional Development</a>
  • </source>

    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

    <tbody> </tbody>
    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.

    ProfDevelopment.tgz