163 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
			
		
		
	
	
			163 lines
		
	
	
		
			6.8 KiB
		
	
	
	
		
			HTML
		
	
	
	
| <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
 | |
| <html>
 | |
| <head>
 | |
|   <title>Module HowTo - Account profiles</title>
 | |
|   <link rel="stylesheet" type="text/css" href="style/layout.css">
 | |
| </head>
 | |
| <body>
 | |
| <div style="text-align: center;">
 | |
| <h1>Module HowTo - Account profiles<br>
 | |
| </h1>
 | |
| <div style="text-align: left;"><br>
 | |
| Account profiles make it easy to set default values for new accounts
 | |
| and even to reset an existing account to default values.<br>
 | |
| Your module should provide the possibility to define default values for
 | |
| all attributes which do not differ for each account.<br>
 | |
| </div>
 | |
| <div style="text-align: left;"><br>
 | |
| <h2>1. Defining possible profile options<br>
 | |
| </h2>
 | |
| The first step to account profiles is defining the attributes for which
 | |
| the user can set default values. You will also have to define the type
 | |
| (text, checkbox, ...) of the profile options.<br>
 | |
| The profile editor then will display a fieldset for each module
 | |
| containing its profile options.<br>
 | |
| <br>
 | |
| The profile options are specified with <span style="font-weight: bold;">get_profileOptions()</span>
 | |
| or <span style="font-weight: bold;">meta['profile_options']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| The <span style="font-style: italic;">inetOrgPerson</span>
 | |
| module has only two attributes which may be set to a default value: job
 | |
| title and employee type.<br>
 | |
| The other attributes are account specific and not useful as profile
 | |
| options.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // profile elements<br>
 | |
|         $return[<span
 | |
|  style="color: rgb(255, 0, 0);">'profile_options'</span>] = array(<br>
 | |
|             array(<br>
 | |
|            
 | |
|     0 => array('kind' => 'text', 'text' =>
 | |
| _('Job title') . ":"),<br>
 | |
|            
 | |
|     1 => array('kind' => 'input', 'name' =>
 | |
| 'inetOrgPerson_title', 'type' => 'text', 'size' => '30',
 | |
| 'maxlength' => '255'),<br>
 | |
|            
 | |
|     2 => array('kind' => 'help', 'value' =>
 | |
| 'title')),<br>
 | |
|             array(<br>
 | |
|            
 | |
|     0 => array('kind' => 'text', 'text' =>
 | |
| _('Employee type') . ":"),<br>
 | |
|            
 | |
|     1 => array('kind' => 'input', 'name' =>
 | |
| 'inetOrgPerson_employeeType', 'type' => 'text', 'size' => '30',
 | |
| 'maxlength' => '255'),<br>
 | |
|            
 | |
|     2 => array('kind' => 'help', 'value' =>
 | |
| 'employeeType'))<br>
 | |
|         );<br>
 | |
|         [...]<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| This defines two text boxes in the profile editor, one for the job
 | |
| title and one for the employee type.<br>
 | |
| Your profile options should also provide a help link if the description
 | |
| of the input element might be not enough.<br>
 | |
| <br>
 | |
| <br>
 | |
| <h2>2. Checking user input</h2>
 | |
| Probably you also want to check if the input data is syntactically
 | |
| correct.<br>
 | |
| The <span style="font-style: italic;">baseModule</span> already
 | |
| provides different checks which can be activated with <span
 | |
|  style="font-style: italic;">meta data</span>. However you can also do
 | |
| the checking in the module.<br>
 | |
| Implementing the function <span style="font-weight: bold;">check_profileOptions()</span>
 | |
| in your module will allow you to do the checks yourself. Basic checks
 | |
| can be defined with <span style="font-weight: bold;">meta['profile_checks']</span>.<br>
 | |
| <br>
 | |
| <span style="font-weight: bold; text-decoration: underline;">Example:</span><br
 | |
|  style="font-weight: bold; text-decoration: underline;">
 | |
| <br>
 | |
| The <span style="font-style: italic;">inetOrgPerson</span> module only
 | |
| needs some regular expression checks on the input. This can be done by
 | |
| the <span style="font-style: italic;">baseModule</span>.<br>
 | |
| <br>
 | |
| <table style="width: 100%; text-align: left;" class="mod-code"
 | |
|  border="0" cellpadding="2" cellspacing="2">
 | |
|   <tbody>
 | |
|     <tr>
 | |
|       <td style="vertical-align: top;">    /**<br>
 | |
|     * Returns meta data that is interpreted by parent
 | |
| class<br>
 | |
|     *<br>
 | |
|     * @return array array with meta data<br>
 | |
|     */<br>
 | |
|     <span style="font-weight: bold;">function</span>
 | |
| get_metaData() {<br>
 | |
|         $return = array();<br>
 | |
|         // profile checks<br>
 | |
|         $return[<span
 | |
|  style="color: rgb(255, 0, 0);">'profile_checks'</span>][<span
 | |
|  style="color: rgb(255, 0, 0);">'inetOrgPerson_title'</span>] = array(<br>
 | |
|             'type' =>
 | |
| 'ext_preg',<br>
 | |
|             'regex' =>
 | |
| 'title',<br>
 | |
|           
 | |
|  'error_message' => $this->messages['title'][0]);<br>
 | |
|         $return[<span
 | |
|  style="color: rgb(255, 0, 0);">'profile_checks'</span>][<span
 | |
|  style="color: rgb(255, 0, 0);">'inetOrgPerson_employeeType'</span>] =
 | |
| array(<br>
 | |
|             'type' =>
 | |
| 'ext_preg',<br>
 | |
|             'regex' =>
 | |
| 'employeeType',<br>
 | |
|           
 | |
|  'error_message' => $this->messages['employeeType'][0]);<br>
 | |
|         [...]<br>
 | |
|       </td>
 | |
|     </tr>
 | |
|   </tbody>
 | |
| </table>
 | |
| <br>
 | |
| The type <span style="font-weight: bold;">"ext_preg"</span> means that
 | |
| the <span style="font-style: italic;">baseModule</span> will use the <span
 | |
|  style="font-style: italic;">get_preg()</span> function in <span
 | |
|  style="font-style: italic;">lib/account.inc</span> for the syntax
 | |
| check. This function already contains regular expressions for the most
 | |
| common cases.<br>
 | |
| <br>
 | |
| <br>
 | |
| <h2>3. Loading an account profile</h2>
 | |
| <br>
 | |
| TODO<br>
 | |
| <span style="font-weight: bold;"></span>
 | |
| <h2><span style="font-weight: bold;"></span></h2>
 | |
| </div>
 | |
| </div>
 | |
| </body>
 | |
| </html>
 |