110 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
		
		
			
		
	
	
			110 lines
		
	
	
		
			4.1 KiB
		
	
	
	
		
			HTML
		
	
	
	
|  | <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | ||
|  | <html> | ||
|  | <head> | ||
|  |   <title>Module HowTo - Basic concepts</title> | ||
|  |   <link rel="stylesheet" type="text/css" href="style/layout.css"> | ||
|  | </head> | ||
|  | <body> | ||
|  | <div style="text-align: center;"> | ||
|  | <h1>Module HowTo - Basic concepts<br> | ||
|  | </h1> | ||
|  | <br> | ||
|  | <br> | ||
|  | <div style="text-align: left;"><br> | ||
|  | <h2>1. Licensing</h2> | ||
|  | LAM is licensed under the <a href="http://www.gnu.org/licenses/gpl.txt">GNU | ||
|  | General Public License</a>. This means your plugins need a compatible | ||
|  | license.<br> | ||
|  | LAM is distributed with a copy of the GPL license.<br> | ||
|  | <br> | ||
|  | <h2>2. Naming and position in directory structure</h2> | ||
|  | <br> | ||
|  | Module names are usually named after the object class they manage. | ||
|  | However, you can use any name you want, it should be short and | ||
|  | containing only a-z and 0-9. The module name is only shown in the | ||
|  | configuration dialog, on all other pages LAM will show a provided <span | ||
|  |  style="font-style: italic;">alias</span> name.<br> | ||
|  | All account modules are stored in <span style="font-weight: bold;">lib/modules</span>. | ||
|  | The filename must end with <span style="font-weight: bold;">.inc</span> | ||
|  | and the file must have the same name as its inside class.<br> | ||
|  | <br> | ||
|  | <span style="font-weight: bold; text-decoration: underline;">Example:</span> | ||
|  | Our example module will provide the <span style="font-weight: bold;">class | ||
|  | ieee802Devic</span><span style="font-style: italic; font-weight: bold;">e</span>, | ||
|  | therefore the file will be called <span style="font-weight: bold;">lib/modules/ieee802Devic</span><span | ||
|  |  style="font-style: italic; font-weight: bold;">e.inc</span>.<span | ||
|  |  style="font-style: italic;"></span><br> | ||
|  | <br> | ||
|  | <br> | ||
|  | <h2>3. Defining the class</h2> | ||
|  | All module classes have <span style="font-weight: bold;">baeModule</span> | ||
|  | as parent class. This provides common functionality and dummy functions | ||
|  | for all required class functions.<br> | ||
|  | <br> | ||
|  | <span style="font-weight: bold;">Example:</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> | ||
|  | * Provides MAC addresses for hosts.<br> | ||
|  | *<br> | ||
|  | * @package modules<br> | ||
|  | */<span style="font-weight: bold;"><br> | ||
|  | class</span> <span style="color: rgb(255, 0, 0);">ieee802Device</span> | ||
|  |       <span style="font-style: italic;">extends </span><span | ||
|  |  style="font-weight: bold;">baseModule</span> {<br> | ||
|  |       <br> | ||
|  | }<br> | ||
|  |       </td> | ||
|  |     </tr> | ||
|  |   </tbody> | ||
|  | </table> | ||
|  | <br> | ||
|  | <h2>4. Meta data</h2> | ||
|  | The module interface inludes a lot of required and optional functions. | ||
|  | Many of these functions do not need to be implemented directly in the | ||
|  | module, you can define <span style="font-weight: bold;">meta data</span> | ||
|  | for them and the <span style="font-weight: bold;">baseModule</span> | ||
|  | will do the rest.<br> | ||
|  | Providing <span style="font-weight: bold;">meta data</span> is | ||
|  | optional, you can implement the required functions in your class, too.<br> | ||
|  | <br> | ||
|  | The <span style="font-weight: bold;">baseModule</span> reads the <span | ||
|  |  style="font-weight: bold;">meta data</span> by calling <span | ||
|  |  style="font-weight: bold;">get_metaData()</span> in your class.<br> | ||
|  | <br> | ||
|  | <span style="font-weight: bold; text-decoration: underline;">Example:</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> <span | ||
|  |  style="color: rgb(255, 0, 0);">get_metaData</span>() {<br> | ||
|  |         $return = array();<br> | ||
|  |         // manages host accounts<br> | ||
|  |         $return["account_types"] = | ||
|  | array("host");<br> | ||
|  |     }<br> | ||
|  |       </td> | ||
|  |     </tr> | ||
|  |   </tbody> | ||
|  | </table> | ||
|  | <br> | ||
|  | You will see this functions several times in the next parts of this | ||
|  | HowTo.<br> | ||
|  | <br> | ||
|  | <h2><span style="font-weight: bold;"></span></h2> | ||
|  | </div> | ||
|  | </div> | ||
|  | </body> | ||
|  | </html> |