https://wiki.uniformserver.com/index.php?title=MongoDB_Tutorial_1:_Buttons_2&feed=atom&action=history
MongoDB Tutorial 1: Buttons 2 - Revision history
2024-03-28T09:04:55Z
Revision history for this page on the wiki
MediaWiki 1.41.0
https://wiki.uniformserver.com/index.php?title=MongoDB_Tutorial_1:_Buttons_2&diff=4322&oldid=prev
Ric: New page: {{Nav MongoDB Tutorial 1}} == Introduction == This page covers adding functionality to buttons '''''Start MongoDB''''' and '''''Start Mongo Client''''' == Top button == A button’s text...
2010-08-01T13:07:38Z
<p>New page: {{Nav MongoDB Tutorial 1}} == Introduction == This page covers adding functionality to buttons '''''Start MongoDB''''' and '''''Start Mongo Client''''' == Top button == A button’s text...</p>
<p><b>New page</b></p><div>{{Nav MongoDB Tutorial 1}}<br />
== Introduction ==<br />
This page covers adding functionality to buttons '''''Start MongoDB''''' and '''''Start Mongo Client''''' <br />
<br />
== Top button ==<br />
A button’s text is dynamic allowing it to be written and read. This capability allows a button to have more that one state. Current state is determined by reading its text.<br />
<br />
Top button of our application has two states '''''Start MongoDB''''' and '''''Stop MongoDB.''''' following shows how to create a toggle button:<br />
<br />
{|<br />
|-valign="top"<br />
|<br />
'''''Toggle action'':'''<br />
<br />
* Read button text<br />
* Use an if statement to compare text to START_DB_BTXT<br />
* If match (start) change button text to stop<br />
* Else change button text to start<br />
|<br />
<pre><br />
$text = wb_get_text(wb_get_control($window, ID_DB_BUTTON));<br />
<br />
if($text == START_DB_BTXT ){ // Start server<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),STOP_DB_BTXT); <br />
else{ // Stop server<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),START_DB_BTXT); <br />
}<br />
</pre><br />
|}<br />
<br />
'''''[[#top | Top]]'''''<br />
=== Start ===<br />
If the button is displaying '''Start MongoDB''' when clicked we want to perform the following actions:<br />
* Start MongoDB server<br />
* Set button text to stop<br />
* Enable Mongo-client button<br />
Gives the following code:<br />
<pre><br />
if($text == START_DB_BTXT ){ // Start server<br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
<br />
//== Set buttons<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),STOP_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), TRUE); // Enable Client button <br />
}<br />
</pre><br />
'''''[[#top | Top]]'''''<br />
<br />
=== Stop ===<br />
If the button is displaying '''Stop MongoDB''' when clicked we want to perform the following actions:<br />
<br />
* If Mongo-client running<br />
# Prompt user to close it.<br />
* Mongo-client not running<br />
# Stop MongoDB server<br />
# Set button text to start<br />
# Disable Mongo-client button<br />
Gives the following code:<br />
<pre><br />
else{ // Stop server<br />
if(mongo_client_running()){ // Client must be stopped before Mongo Server<br />
$str = "Before you can stop MongoDB \n";<br />
$str .= "Please close Mongo Client \n\n";<br />
<br />
$str .= "Type EXIT to close client\n";<br />
$str .= "Data from RAM needs to be written to disk.\n";<br />
<br />
wb_message_box($window, $str, "CLIENT RUNNING", WBC_INFO); <br />
break;<br />
}<br />
else{ // Client not running<br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
<br />
//==Set button text<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),START_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), FALSE); // DISABLE Client button <br />
}<br />
}<br />
</pre><br />
'''''[[#top | Top]]'''''<br />
<br />
=== Complete button code ===<br />
<pre><br />
//=== Start-Stop Servers ===================================================<br />
case ID_DB_BUTTON: // Button toggles<br />
$text = wb_get_text(wb_get_control($window, ID_DB_BUTTON)); // get button text<br />
<br />
if($text == START_DB_BTXT ){ // Start server<br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
<br />
//== Set buttons<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),STOP_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), TRUE); // Enable Client button <br />
}<br />
<br />
else{ // Stop server<br />
if(mongo_client_running()){ // Client must be stopped before Mongo Server<br />
$str = "Before you can stop MongoDB \n";<br />
$str .= "Please close Mongo Client \n\n";<br />
<br />
$str .= "Type EXIT to close client\n";<br />
$str .= "Data from RAM needs to be written to disk.\n";<br />
<br />
wb_message_box($win_mongo, $str, "CLIENT RUNNING", WBC_INFO); <br />
break;<br />
}<br />
else{ // Client not running<br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
<br />
//==Set button text<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),START_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), FALSE); // DISABLE Client button <br />
}<br />
}<br />
<br />
break; <br />
//================================================ END Start-Stop Servers ==<br />
</pre><br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
<br />
== Start Client ==<br />
Starting the client requires running its corresponding function. If already running inform user and exit case statement. Code snippets as shown below:<br />
<pre><br />
//=== Start Client =========================================================<br />
case ID_CLIENT_BUTTON: // Button <br />
if(mongo_client_running()){ // Already running <br />
wb_message_box($window, " No action taken client already running", "CLIENT RUNNING", WBC_INFO); <br />
break; <br />
}<br />
else{ // Not running<br />
client_no_auth(); // Start a cmd window and run mohgo command line interface<br />
}<br />
break; <br />
//===================================================== END Start Client ===<br />
</pre><br />
<br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
== Complete handler function ==<br />
Adding all the snippets of code gives the following <br />
<pre><br />
//=== 4) Handler Function =====================================================<br />
function process_mongo($window, $id){<br />
<br />
switch($id) {<br />
<br />
//=== Start-Stop Servers ===================================================<br />
case ID_DB_BUTTON: // Button toggles<br />
$text = wb_get_text(wb_get_control($window, ID_DB_BUTTON)); // get button text<br />
<br />
if($text == START_DB_BTXT ){ // Start server<br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
<br />
//== Set buttons<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),STOP_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), TRUE); // Enable Client button <br />
}<br />
<br />
else{ // Stop server<br />
if(mongo_client_running()){ // Client must be stopped before Mongo Server<br />
$str = "Before you can stop MongoDB \n";<br />
$str .= "Please close Mongo Client \n\n";<br />
<br />
$str .= "Type EXIT to close client\n";<br />
$str .= "Data from RAM needs to be written to disk.\n";<br />
<br />
wb_message_box($window, $str, "CLIENT RUNNING", WBC_INFO); <br />
break;<br />
}<br />
else{ // Client not running<br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
<br />
//==Set button text<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),START_DB_BTXT); // set button text<br />
wb_set_enabled(wb_get_control($window, ID_CLIENT_BUTTON), FALSE); // DISABLE Client button <br />
}<br />
}<br />
<br />
break; <br />
//================================================ END Start-Stop Servers ==<br />
<br />
//=== Start Client =========================================================<br />
case ID_CLIENT_BUTTON: // Button <br />
if(mongo_client_running()){ // Already running <br />
wb_message_box($window, " No action taken client already running", "CLIENT RUNNING", WBC_INFO); <br />
break; <br />
}<br />
else{ // Not running<br />
client_no_auth(); // Start a cmd window and run mohgo command line interface<br />
}<br />
break; <br />
//===================================================== END Start Client ===<br />
<br />
//=== Open command window ==================================================<br />
// Open a command window in folder bin<br />
case ID_OPEN_CMD_BUTTON: // Button <br />
open_cmd_window();<br />
break;<br />
//============================================== END Open command window ===<br />
<br />
//=== Display help info ====================================================<br />
case ID_HELP_BUTTON: // Button <br />
<br />
wb_exec('Notepad',INFO_TXT);<br />
<br />
break; <br />
//================================================ END Display help info ===<br />
<br />
case IDCLOSE: // Constant IDCLOSE (8) predefined<br />
wb_destroy_window($window); // Destroy the window<br />
break;<br />
}<br />
}<br />
//================================================ END 4) Handler Function ===<br />
</pre><br />
<br />
=== Test ===<br />
Run mongo_tutorial.bat<br />
* Check server functions as expected<br />
* Check client has access to the server<br />
* Perform other tests as required <br />
* Finally test Stop server works<br />
<br />
'''''[[#top | Top]]'''''<br />
== Finishing touches ==<br />
Create a folder mongodb_1\'''top_level'''<br />
<br />
It contains a single file '''''Run_MongoDB.bat''''' with the following content:<br />
<pre><br />
cd php<br />
php.exe -c mongo_tutorial_cli.ini ..\control\mongo_tutorial.phpw<br />
EXIT<br />
</pre> <br />
To run server copy this file to folder mongodb_1. Alternatively convert the file to an exe using [[PHP WinBinder: Introduction#Bat To Exe Converter | '''bat2exe''']]<br />
<br />
Finally delete folder z_temp no longer required.<br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
== Summary ==<br />
<br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
----<br />
<br />
[[Category: Tutorials]]<br />
[[Category: How To]]<br />
[[Category: Uniform Server 6-Carbo]]</div>
Ric