https://wiki.uniformserver.com/index.php?title=PHP_WinBinder_3:_Name_Password_pop-up&feed=atom&action=historyPHP WinBinder 3: Name Password pop-up - Revision history2024-03-29T08:42:49ZRevision history for this page on the wikiMediaWiki 1.41.0https://wiki.uniformserver.com/index.php?title=PHP_WinBinder_3:_Name_Password_pop-up&diff=4279&oldid=prevBobS: Undo revision 4278 by Rebeca123 (Talk)2010-07-16T00:53:07Z<p>Undo revision 4278 by <a href="/Special:Contributions/Rebeca123" title="Special:Contributions/Rebeca123">Rebeca123</a> (<a href="/index.php?title=User_talk:Rebeca123&action=edit&redlink=1" class="new" title="User talk:Rebeca123 (page does not exist)">Talk</a>)</p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 00:53, 16 July 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l186">Line 186:</td>
<td colspan="2" class="diff-lineno">Line 186:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Press Enter button</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Press Enter button</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Close Window (click cross top right)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Close Window (click cross top right)</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"># Check [http://www.college-paper.org/custom-essay.html college essay]</del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''''Result'':'''</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''''Result'':'''</div></td></tr>
<tr><td class="diff-marker" data-marker="−"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;"><div><del style="font-weight: bold; text-decoration: none;"></del></div></td><td colspan="2" class="diff-side-added"></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&nbsp;Name and password displayed in message box.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&nbsp;Name and password displayed in message box.</div></td></tr>
</table>BobShttps://wiki.uniformserver.com/index.php?title=PHP_WinBinder_3:_Name_Password_pop-up&diff=4278&oldid=prevRebeca123 at 17:33, 14 July 20102010-07-14T17:33:44Z<p></p>
<table style="background-color: #fff; color: #202122;" data-mw="interface">
<col class="diff-marker" />
<col class="diff-content" />
<col class="diff-marker" />
<col class="diff-content" />
<tr class="diff-title" lang="en">
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">← Older revision</td>
<td colspan="2" style="background-color: #fff; color: #202122; text-align: center;">Revision as of 17:33, 14 July 2010</td>
</tr><tr><td colspan="2" class="diff-lineno" id="mw-diff-left-l186">Line 186:</td>
<td colspan="2" class="diff-lineno">Line 186:</td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Press Enter button</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Press Enter button</div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Close Window (click cross top right)</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div># Close Window (click cross top right)</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"># Check [http://www.college-paper.org/custom-essay.html college essay]</ins></div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''''Result'':'''</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>'''''Result'':'''</div></td></tr>
<tr><td colspan="2" class="diff-side-deleted"></td><td class="diff-marker" data-marker="+"></td><td style="color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;"><div><ins style="font-weight: bold; text-decoration: none;"></ins></div></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><br></td></tr>
<tr><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&nbsp;Name and password displayed in message box.</div></td><td class="diff-marker"></td><td style="background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;"><div>&nbsp;Name and password displayed in message box.</div></td></tr>
</table>Rebeca123https://wiki.uniformserver.com/index.php?title=PHP_WinBinder_3:_Name_Password_pop-up&diff=4195&oldid=prevRic: New page: {{Nav PHP WinBinder 3}} '''''Name Password Dialogue Box''''' The standard dialogue boxes are WinBinder functions currently our name-password window is an integral part of the code. A mor...2010-04-06T20:01:48Z<p>New page: {{Nav PHP WinBinder 3}} '''''Name Password Dialogue Box''''' The standard dialogue boxes are WinBinder functions currently our name-password window is an integral part of the code. A mor...</p>
<p><b>New page</b></p><div>{{Nav PHP WinBinder 3}}<br />
'''''Name Password Dialogue Box'''''<br />
<br />
The standard dialogue boxes are WinBinder functions currently our name-password window is an integral part of the code.<br />
<br />
A more flexible solution in terms of PHP CLI would be to convert this code into a function.<br />
<br />
This page provides a step-by-sep guide how to do this.<br />
<br />
== Function ==<br />
Initially it sounds like a complex task however the Windows creation code is already in place.<br />
<br />
All that is required is to place it in a function wrapper. We require a unique function name I will use mp_name_password.<br />
{|<br />
|-<br />
|<br />
<pre><br />
function mp_name_password(){<br />
// Windows creation code placed here<br />
}<br />
</pre><br />
|<br />
&nbsp;<br />
|<br />
That really is all you need to do to convert existing code into a function.<br />
|}<br />
'''''[[#top | Top]]'''''<br />
=== Example 3 Nane Password ===<br />
You need to call the function using code placed in the INIT section and wrap exiting code in a function.<br />
{|<br />
|--valign="top"<br />
|<br />
==== Edit file ====<br />
|<br />
&nbsp;&nbsp;<br />
|<br />
==== Results ====<br />
|-valign="top"<br />
|<br />
Edit file '''Pro_demo_wb.php''' delete any lines in INIT section. Add the line shown:<br />
<pre><br />
//=== INIT =========================================<br />
<br />
wb_message_box (NULL, "Create Window", "TEST3"); <br />
mp_name_password(); // Create pop-up window<br />
wb_message_box (NULL, "Name Password closed", "TEST3");<br />
<br />
//==================================== END INIT ====<br />
</pre><br />
Just below END INIT add the line shown. This is the start of our function <br />
<pre><br />
//=============================================================== END INIT ====<br />
<br />
function mp_name_password(){<br />
<br />
</pre><br />
Just below wb_main_loop() add a closed curly brace as shown it marks end function.<br />
<pre><br />
//=== 5) Enter application loop -----------------------------------------------<br />
wb_main_loop(); <br />
<br />
}// End mp_name_password function <br />
</pre><br />
<br />
* Run the script (double click on file Pro_demo_wb.bat)<br />
* Result shown on the right<br />
* The first pop-up is just a message.<br />
* Once clicked the name-password window is created.<br />
* Enter name and password<br />
* Closing this Window returns to our script.<br />
* The last pop-up is just a message.<br />
<br />
'''''Important'':''' Closing the Name-Password Window returns to our main CLI script<br />
<br />
'''''Note'':''' Mechanics are in place however it’s of little use! Our script has no access to either the name or password entered.<br />
|<br />
&nbsp;&nbsp;<br />
|<br />
[[Image:Demo_5.gif]]<br />
|}<br />
'''''[[#top | Top]]'''''<br />
== Passing Parameters back to script ==<br />
You have two options of passing data back to your script. Either use a global array or global variables.<br />
<br />
For this simple application an array is over kill, only two variables are required. <br />
<br />
Hey! What’s all this global stuff? Well everything you define in your main script is accessible by that little pop-up window. It is a PHP function hence requires no special treatment<br />
<br />
'''''[[#top | Top]]'''''<br />
=== Validation ===<br />
You again have two options either to validate within your script using raw data from the pop-up or validate within the pop-up and pass clean data back to your script.<br />
<br />
For this application it makes sense to validate within the pop-up and pass clean data back to the script.<br />
<br />
'''''[[#top | Top]]'''''<br />
=== Naming convention ===<br />
Another personal choice, for global variables add a prefix for example “g_” hence our two global variables are g_name and g_pass.<br />
<br />
Having made the above choices we can implement them in our script.<br />
<br />
'''''[[#top | Top]]'''''<br />
=== Add code to INIT section ===<br />
Edit file '''Pro_demo_wb.php''' delete any lines in INIT section. Add the lines shown: <br />
{|<br />
|-<br />
|<br />
<pre><br />
//=== INIT ======================================================<br />
<br />
$g_name = ""; // Initialise variable <br />
$g_pass = ""; // Initialise variable <br />
<br />
mp_name_password(); // Create pop-up<br />
<br />
wb_message_box (NULL, "Name =$g_name\n Password =$g_pass","TEST3"); <br />
print "Name =$g_name \n Password =$g_pass \n"; // command window <br />
<br />
exit;<br />
//=================================================== END INIT ====<br />
</pre><br />
|<br />
* First two lines create and initialise our two global variables.<br />
* Function mp_name_password() is run which creates our name-password pop-up.<br />
* Pop-up changes global variables, closing the window returns to script.<br />
* A message box displays name and password entered (used only for testing).<br />
* '''''Note'':''' For testing you can use the alternative and print to the command Window.<br />
* Finally we exit the script.<br />
<br />
|}<br />
'''''[[#top | Top]]'''''<br />
<br />
=== Add code to Handler Function ===<br />
Edit handler function as described on the right. Complete function shown belo:<br />
{|<br />
|-<br />
|<br />
<pre><br />
//=== 4) Handler Function =====================================================<br />
<br />
function process_main($window, $id){<br />
global $g_name;<br />
global $g_pass;<br />
<br />
switch($id) { <br />
<br />
//--- GET USER INPUT -------------------------------------------------------=<br />
case IDC_USER_ENTER:<br />
<br />
//-- Read user input <br />
$name = wb_get_text(wb_get_control($window, IDC_USER_NAME)); // Get name<br />
$name = trim($name);<br />
$pass = wb_get_text(wb_get_control($window, IDC_USER_PASSWORD));// Get pass<br />
$pass = trim($pass);<br />
<br />
// wb_message_box ($window, $name, "TEST"); <br />
// wb_message_box (NULL, $pass, "TEST");<br />
<br />
$g_name = $name; // Set global variable for our script to use <br />
$g_pass = $pass; // Set global variable for our script to use <br />
<br />
break; <br />
<br />
//--- CLOSE ------------------------------------------------------------------<br />
case IDCLOSE: // Constant IDCLOSE (8) predefined <br />
wb_destroy_window($window); // Destroy the window<br />
break; <br />
}<br />
}<br />
<br />
//==================================================== End Handler Function ===<br />
</pre><br />
|<br />
&nbsp;'''''Modifications'':'''<br />
* The handler function requires access to our two global variables these need to be specifically declared as global at the beginning of the function using the following lines:<br />
** global $g_name;<br />
** global $g_pass;<br />
<br />
*The two annoying message boxes have been commented out. These can be deleted however for now they remain, we may want to reinstate them for testing.<br />
<br />
* The following two lines are the important part of this function. They set the global variables to the name and password entered (pass data back to our script):<br />
** $g_name = $name; // Set global variable for our script to use <br />
** $g_pass = $pass; // Set global variable for our script to use <br />
&nbsp;'''''Run Script'':'''<br />
# Run the script (double click on file Pro_demo_wb.bat)<br />
# Enter a name and password<br />
# Press Enter button<br />
# Close Window (click cross top right)<br />
'''''Result'':'''<br />
<br />
&nbsp;Name and password displayed in message box.<br />
<br />
&nbsp;On clicking OK name password printed in command window.<br />
|}<br />
'''''[[#top | Top]]'''''<br />
<br />
== Add validation and close Window ==<br />
Although the above works there is no validation. After pressing enter it appears to do nothing.<br />
<br />
Even worst, in order to continue executing our script a user needs to manually close the window.<br />
<br />
The above was intentional! After all this is a step-by-step quid final step is to addess the above two issues.<br />
<br />
'''''[[#top | Top]]'''''<br />
=== Add Validation ===<br />
Validation is always a contentious issue you want clean data returned back to your script that can be used without further processing. For example you may want a user’s first and last names to be entered without any digits. Perhaps a two-digit password is totally inadequate and your script requires a minimum of ten digits and characters to be entered. Hence you would validate against this criteria.<br />
<br />
'''''Note'':''' Never trust user input always validate.<br />
<br />
The following example requires a user enter both a name and password this can be anything they like.<br />
<br />
'''''[[#top | Top]]'''''<br />
==== Validation ====<br />
{|<br />
|-<br />
|<br />
<pre><br />
//-- Ensure fields are not empty<br />
if(!$name){<br />
wb_message_box($window, "Please enter a name ","Name Empty", WBC_INFO); <br />
break;<br />
}<br />
if(!$pass){<br />
wb_message_box($window, "Please enter a password ","Password Empty", WBC_INFO); <br />
break;<br />
}<br />
</pre><br />
|<br />
&nbsp;<br />
|<br />
This example implements simple validation it ensures the text fiels are not empty.<br />
* '''if(!$name)''' if a name has not been entered<br />
* Display a message box (wb_message_box), informing user to enter a name<br />
* '''Break''' out of the case statement and wait for user input. <br />
* Perform same check for password.<br />
|}<br />
'''''[[#top | Top]]'''''<br />
<br />
==== Prevent window closing ====<br />
{|<br />
|-<br />
|<br />
<pre><br />
case IDCLOSE: // Constant IDCLOSE (8) predefined <br />
$text = "Please enter a name and password\n";<br />
$text .= "Then press enter\n";<br />
$text .= "Window will automatically close";<br />
<br />
wb_message_box ($window, $text, "Name Password Required"); <br />
// wb_destroy_window($window); // Destroy the window<br />
break; <br />
</pre><br />
|<br />
&nbsp;<br />
|<br />
First issue to be addressed a user can close the window by clicking on the cross top right.<br />
<br />
We want a user to enter a name and password and then the window to be cloded.<br />
* In the IDCLOSE section comment out or delete the wb_destroy_window($window)<br />
* Not what a user would expect hence add a message box explaining what you want a user to do.<br />
'''''Note'':''' Forces a user to enter a name/password and taken through validation process.<br />
|}<br />
'''''[[#top | Top]]'''''<br />
==== Alternative window close ====<br />
{|<br />
|-<br />
|<br />
<pre><br />
$g_name = $name; //Set global variable for our script to use <br />
$g_pass = $pass; //Set global variable for our script to use <br />
<br />
wb_destroy_window($window); // Destroy the window<br />
</pre><br />
|<br />
&nbsp;<br />
|<br />
* After setting our global variables.<br />
* Close the window using<br>wb_destroy_window($window); <br />
<br />
|}<br />
'''''[[#top | Top]]'''''<br />
=== Complete handler function ===<br />
Add all the code snippets to handler function. Complete function shown below:<br />
{|<br />
|-<br />
|<br />
<pre><br />
//=== 4) Handler Function =====================================================<br />
function process_main($window, $id){<br />
global $g_name;<br />
global $g_pass;<br />
<br />
switch($id) { <br />
<br />
//--- GET USER INPUT -------------------------------------------------------=<br />
case IDC_USER_ENTER:<br />
<br />
//-- Read user input <br />
$name = wb_get_text(wb_get_control($window, IDC_USER_NAME)); // Get name<br />
$name = trim($name);<br />
$pass = wb_get_text(wb_get_control($window, IDC_USER_PASSWORD));// Get pass<br />
$pass = trim($pass);<br />
<br />
//-- Ensure fields are not empty<br />
if(!$name){<br />
wb_message_box($window, "Please enter a name ","Name Empty", WBC_INFO); <br />
break;<br />
}<br />
if(!$pass){<br />
wb_message_box($window, "Please enter a password ","Password Empty", WBC_INFO); <br />
break;<br />
}<br />
<br />
$g_name = $name; // Set global variable for our script to use <br />
$g_pass = $pass; // Set global variable for our script to use <br />
<br />
wb_destroy_window($window); // Destroy the window<br />
break; <br />
<br />
//--- CLOSE ------------------------------------------------------------------<br />
case IDCLOSE: // Constant IDCLOSE (8) predefined <br />
$text = "Please enter a name and password\n";<br />
$text .= "Then press enter\n";<br />
$text .= "Window will automatically close";<br />
wb_message_box ($window, $text, "Name Password Required"); <br />
break; <br />
}<br />
}<br />
//==================================================== End Handler Function ===<br />
</pre><br />
|<br />
&nbsp;<br />
|<br />
'''''After modifying handler function'':'''<br />
* Run the script (double click on file Pro_demo_wb.bat) <br />
* Enter name and password <br />
* Click enter. <br />
* Pop-up message box displays name and password. <br />
* Click OK<br />
* Name and password printed to command window. <br />
* Script completes and exits.<br />
<br />
<br />
'''''Associates files'':'''<br />
<br />
That completes our name password pop-up. If you cannot get it working the download includes the following two files<br />
* Pro_demo_2_wb.bat<br />
* Pro_demo_2_wb.php<br />
These are located in folder UniServer\docs\SRC\'''pro_demo'''<br />
<br />
Copy them to folder UniServer and run.<br />
<br />
<br />
'''''Note'':'''<br />
<br />
If your application requires additional user information add appropriate text fields as required.<br />
<br />
Consider this code as a working template never reinvent just cut and past.<br />
|}<br />
'''''[[#top | Top]]'''''<br />
<br />
== Summary ==<br />
Although the above code is specific to a name password pop-up techniques shown are adaptable to any pop-up you wish to create. For example you can add check boxes, radio buttons or any of the WinBinder controls.<br />
<br />
If you find you are adding more and more controls consider creating a full WinBinder windows application.<br />
<br />
On the previous page I mentioned the Open dialog box and Save As dialog box will not work. These require additional support covered on the [[PHP WinBinder 3: Open and Save As dialog boxes | '''next page''']].<br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
----<br />
<br />
[[Category: Tutorials]]<br />
[[Category: How To]]<br />
[[Category: Uniform Server 5.0-Nano]]</div>Ric