https://wiki.uniformserver.com/index.php?title=MongoDB_Tutorial_2:_Buttons_2&feed=atom&action=history
MongoDB Tutorial 2: Buttons 2 - Revision history
2024-03-28T23:41:37Z
Revision history for this page on the wiki
MediaWiki 1.41.0
https://wiki.uniformserver.com/index.php?title=MongoDB_Tutorial_2:_Buttons_2&diff=4329&oldid=prev
Ric: New page: {{Nav MongoDB Tutorial 2}} == Introduction == This page covers adding functionality to buttons '''''Start MongoDB''''' and '''''Start Mongo Client''''' == Top button == A button’s text...
2010-08-01T13:14:35Z
<p>New page: {{Nav MongoDB Tutorial 2}} == 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 2}}<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 Apache''''' and '''''Stop MongoDB and Apache.''''' 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 servers<br />
wb_set_text(wb_get_control($window, ID_DB_BUTTON),STOP_DB_BTXT); <br />
else{ // Stop servers<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 and Apache''' when clicked we want to perform the following actions:<br />
* Start MongoDB server<br />
* Start Apache server<br />
* Set button text to stop<br />
* Enable Mongo-client button<br />
* Enable phpMoAdmin button<br />
Gives the following code:<br />
<pre><br />
if($text == START_DB_BTXT ){ // Start server<br />
<br />
//== Start Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/start_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Starting Apache"); // Inform user <br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Starting MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), TRUE); // Enable Admin button <br />
<br />
wb_set_text($statusbar_mongo, " Servers running"); // Inform user <br />
}<br />
</pre><br />
'''''[[#top | Top]]'''''<br />
<br />
=== Stop ===<br />
If the button is displaying '''Stop MongoDB and Apache''' 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 />
# Stop Apache server<br />
# Set button text to start<br />
# Disable Mongo-client button<br />
# Disable phpMoAdmin 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 />
wb_set_text($statusbar_mongo, " Clienr running"); // Inform user <br />
break;<br />
}<br />
else{ // Client not running<br />
//== Stop Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/stop_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Stopping Apache"); // Inform user <br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Stopping MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), FALSE); // Disable Test button <br />
wb_set_text($statusbar_mongo, " Servers stopped"); // Inform user <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 Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/start_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Starting Apache"); // Inform user <br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Starting MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), TRUE); // Enable Admin button <br />
<br />
wb_set_text($statusbar_mongo, " Servers running"); // Inform user <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 />
wb_set_text($statusbar_mongo, " Clienr running"); // Inform user <br />
break;<br />
}<br />
else{ // Client not running<br />
//== Stop Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/stop_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Stopping Apache"); // Inform user <br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Stopping MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), FALSE); // Disable Test button <br />
wb_set_text($statusbar_mongo, " Servers stopped"); // Inform user <br />
}<br />
}<br />
<br />
break; <br />
//================================================ END Start-Stop Servers ==<br />
</pre><br />
<br />
'''''[[#top | Top]]'''''<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()){ // Client must be stopped before Mongo Server<br />
wb_set_text($statusbar_mongo, " No action taken client already running"); // Inform user <br />
break; <br />
}<br />
else{<br />
client_no_auth(); // Start a cmd window and run mohgo command line interface<br />
wb_set_text($statusbar_mongo, " Client started"); // Inform user <br />
}<br />
break; <br />
//===================================================== END Start Client ===<br />
</pre><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 />
global $win_mongo;<br />
global $statusbar_mongo;<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 Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/start_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Starting Apache"); // Inform user <br />
<br />
//== Start MongoDB<br />
start_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Starting MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), TRUE); // Enable Admin button <br />
<br />
wb_set_text($statusbar_mongo, " Servers running"); // Inform user <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 />
wb_set_text($statusbar_mongo, " Clienr running"); // Inform user <br />
break;<br />
}<br />
else{ // Client not running<br />
//== Stop Apache<br />
$cmd = "../../usr/local/php/php.exe -n ../main/stop_servers.php 1"; // Cmd to run hidden<br />
run_cmd_hidden($cmd); // Run command<br />
wb_set_text($statusbar_mongo, " Stopping Apache"); // Inform user <br />
<br />
//== Stop MongoDB<br />
stop_mongo_no_auth();<br />
wb_set_text($statusbar_mongo, " Stopping MongoDB"); // Inform user <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 />
wb_set_enabled(wb_get_control($window, ID_PHPMOADMIN_BUTTON), FALSE); // Disable Test button <br />
wb_set_text($statusbar_mongo, " Servers stopped"); // Inform user <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()){ // Client must be stopped before Mongo Server<br />
wb_set_text($statusbar_mongo, " No action taken client already running"); // Inform user <br />
break; <br />
}<br />
else{<br />
client_no_auth(); // Start a cmd window and run mohgo command line interface<br />
wb_set_text($statusbar_mongo, " Client started"); // Inform user <br />
}<br />
break; <br />
//===================================================== END Start Client ===<br />
<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 />
<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 Run_mongo_db.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 />
<br />
== Summary ==<br />
At this stage we have a fully working plugin.<br />
<br />
All that remains is to add functionality to phpMoAdmin button and clean up covered on [[MongoDB Tutorial 2: Buttons 3 | '''next page''']].<br />
<br />
<br />
'''''[[#top | Top]]'''''<br />
<br />
----<br />
<br />
[[Category: Tutorials]]<br />
[[Category: How To]]<br />
[[Category: Uniform Server 6-Carbo]]</div>
Ric