diff options
author | Daniel Stefan Haischt <dsh@pfsense.org> | 2007-01-06 15:45:31 +0000 |
---|---|---|
committer | Daniel Stefan Haischt <dsh@pfsense.org> | 2007-01-06 15:45:31 +0000 |
commit | 704739a092fa952436783160cb23584cface5552 (patch) | |
tree | 874ea1d64be16ae11b7f943e89c0397280ef87da | |
parent | 319b6c7854114c21af14a19d718f8c96ebb8b4ec (diff) | |
download | pfsense-packages-704739a092fa952436783160cb23584cface5552.tar.gz pfsense-packages-704739a092fa952436783160cb23584cface5552.tar.bz2 pfsense-packages-704739a092fa952436783160cb23584cface5552.zip |
* ajaxified disks_manage_init.php. Should work in Opera and Firefox.
-rw-r--r-- | packages/freenas/www/disks_manage_init.php | 500 |
1 files changed, 400 insertions, 100 deletions
diff --git a/packages/freenas/www/disks_manage_init.php b/packages/freenas/www/disks_manage_init.php index 278efdd5..a3032d83 100644 --- a/packages/freenas/www/disks_manage_init.php +++ b/packages/freenas/www/disks_manage_init.php @@ -49,6 +49,365 @@ require_once("guiconfig.inc"); require_once("freenas_guiconfig.inc"); require_once("freenas_functions.inc"); +define("DONE_PARAGRAPH", " + <p> + <span class='red' style='font-family: Courier, monospace; font-size: small;'><strong>Done!</strong></span> + </p> + "); +define("DISK_DETAILS_PARA", " + <p style='font-size: small;'> + <strong>Disk initialization details</strong> (use the toggle icon to unveil detailed infos): + </p> + "); + +function create_format_output($disk, $type, $notinitmbr) { + $ddetails = DISK_DETAILS_PARA; + $dopara = DONE_PARAGRAPH; + + ob_end_flush(); + + $retvalue =<<<EOD +{$ddetails} + +EOD; + + // Erase MBR if not checked + if (!$notinitmbr) { + $button = create_toggle_button("Erasing MBR and all paritions", "mbr_out"); + $a_out = exec_command_and_return_text_array("dd if=/dev/zero of=" . escapeshellarg($disk) . " bs=32k count=640"); + $diskinit_str = implode("\n", $a_out); + $retvalue .=<<<EOD + {$button} + <div id="mbr_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + } else { + $diskinit_str = "Keeping the MBR and all partitions"; + $retvalue .=<<<EOD + <div id="mbr_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + } // end if + + switch ($type) { + case "ufs": + $button = create_toggle_button("Creating one parition", "ufs_fdisk_out"); + /* Initialize disk */ + $a_out = exec_command_and_return_text_array("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufs_fdisk_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Initializing parition", "ufs_dd_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufs_dd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating BSD label", "ufs_label_out"); + /* Create s1 label */ + $a_out = exec_command_and_return_text_array("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufs_label_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating Filesystem", "ufs_newfs_out"); + /* Create filesystem */ + $a_out = exec_command_and_return_text_array("/sbin/newfs -U " . escapeshellarg($disk) . "s1"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufs_newfs_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + + break; // end case "ufs": + case "ufs_no_su": + $button = create_toggle_button("Creating one parition", "ufsn_fdisk_out"); + /* Initialize disk */ + $a_out = exec_command_and_return_text_array("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsn_fdisk_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + $button = create_toggle_button("Initializing parition", "ufsn_dd_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsn_dd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + $button = create_toggle_button("Creating BSD label", "ufsn_label_out"); + /* Create s1 label */ + $a_out = exec_command_and_return_text_array("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsn_label_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + $button = create_toggle_button("Creating Filesystem", "ufsn_newfs_out"); + /* Create filesystem */ + $a_out = exec_command_and_return_text_array("/sbin/newfs -m 0 " . escapeshellarg($disk) . "s1"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsn_newfs_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + + break; // end ufs_no_su + case "ufsgpt": + $button = create_toggle_button("Destroying old GTP information", "ufsg_gptd_out"); + /* Destroy GPT partition table */ + $a_out = exec_command_and_return_text_array("/sbin/gpt destroy " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsg_gptd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating GPT partition", "ufsg_gptc_out"); + /* Create GPT partition table */ + $a_out = exec_command_and_return_text_array("/sbin/gpt create -f " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + $a_out = exec_command_and_return_text_array("/sbin/gpt add -t ufs " . escapeshellarg($disk)); + $diskinit_str .= implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsg_gptc_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating Filesystem with Soft Updates", "ufsg_newfs_out"); + /* Create filesystem */ + $a_out = exec_command_and_return_text_array("/sbin/newfs -U " . escapeshellarg($disk) . "p1"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsg_newfs_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + + break; // end case "ufsgpt": + case "ufsgpt_no_su": + $button = create_toggle_button("Destroying old GTP information", "ufsgn_gpt_out"); + /* Destroy GPT partition table */ + $a_out = exec_command_and_return_text_array("/sbin/gpt destroy " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsgn_gpt_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating GPT partition", "ufsgn_gptc_out"); + /* Create GPT partition table */ + $a_out = exec_command_and_return_text_array("/sbin/gpt create -f " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + $a_out = exec_command_and_return_text_array("/sbin/gpt add -t ufs " . escapeshellarg($disk)); + $diskinit_str .= implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsgn_gptc_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + $button = create_toggle_button("Creating Filesystem without Soft Updates", "ufsgn_newfs_out"); + /* Create filesystem */ + $a_out = exec_command_and_return_text_array("/sbin/newfs -m 0 " . escapeshellarg($disk) . "p1"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="ufsgn_newfs_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + + break; // end case "ufsgpt_no_su": + case "softraid": + $button = create_toggle_button("Initializing disk", "softr_fdisk_out"); + /* Initialize disk */ + $a_out = exec_command_and_return_text_array("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="softr_fdisk_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Initializing partition", "softr_dd_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="softr_dd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + $button = create_toggle_button("Delete old gmirror information", "softr_dd_out"); + /* Delete old gmirror information */ + $a_out = exec_command_and_return_text_array("/sbin/gmirror clear " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="softr_dd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + + break; // end case "softraid": + case "msdos": + $button = create_toggle_button("Initialize disk", "dos_fdisk_out"); + /* Initialize disk */ + $a_out = exec_command_and_return_text_array("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="dos_fdisk_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Initialize partion", "dos_dd_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="dos_dd_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating BSD label", "dos_label_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="dos_label_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> + +EOD; + + $button = create_toggle_button("Creating Filesystem", "dos_newfs_out"); + /* Initialise the partition (optional) */ + $a_out = exec_command_and_return_text_array("/sbin/newfs_msdos -F 32 " . escapeshellarg($disk) . "s1"); + $diskinit_str = implode("\n", $a_out); + + $retvalue .=<<<EOD + {$button} + <div id="dos_newfs_out" style="display: none; font-family: Courier, monospace; font-size: small;"> + <pre style="font-family: Courier, monospace; font-size: small; font-style: italic;">{$diskinit_str}</pre> + </div> +{$dopara} + +EOD; + break; // end case "msdos": + } // end switch + + return $retvalue; +} + +function create_toggle_button($title, $totoggle) { + global $g; + + $returnval =<<<EOD + <table cellpadding="0" cellspacing="0" border="0" style="padding-bottom: 8px;"> + <tr> + <td align="left" valign="middle" style="padding-right: 5px;"> + <img src='/themes/{$g['theme']}/images/misc/bullet_toggle_plus.png' alt='' border='0' style='border: solid 1px silver; cursor: pointer;' onclick='toggle_cmdout(this, "{$totoggle}");' /> + </td> + <td align="left" valign="middle" style='font-family: Courier, monospace; font-size: small;'> + {$title}: + </td> + </tr> + </table> +EOD; + + return $returnval; +} + if (!is_array($freenas_config['disks']['disk'])) $freenas_config['disks']['disk'] = array(); @@ -184,6 +543,9 @@ if (! empty($_POST)) } write_config(); + + echo create_format_output($disk, $type, $notinitmbr); + exit; // cause of Ajax } } } @@ -217,6 +579,16 @@ function disk_change() { <?php endforeach; ?> } } + +function toggle_cmdout(image, totoggle) { + var plusSrc = "/themes/<?= $g['theme'] ?>/images/misc/bullet_toggle_plus.png"; + var minusSrc = "/themes/<?= $g['theme'] ?>/images/misc/bullet_toggle_minus.png"; + var currentSrc = image.src; + var newSrc = (currentSrc.indexOf("plus") >= 0) ? minusSrc : plusSrc; + + image.src = newSrc; + Effect.toggle(totoggle, 'appear', { duration: 0.75 }); +} // --> </script> </head> @@ -246,6 +618,30 @@ function disk_change() { <div id="mainarea"> <form id="iform" name="iform" action="disks_manage_init.php" method="post"> <table class="tabcont" align="center" width="100%" border="0" cellpadding="6" cellspacing="0"> + <script type="text/javascript"> + function execFormat() { + var to_insert = "<div style='visibility:hidden' id='loading' name='loading'><img src='/themes/nervecenter/images/misc/loader_tab.gif' /></div>"; + new Insertion.Before('doFormatSubmit', to_insert); + + $("doFormatSubmit").style.visibility = "hidden"; + $('loading').style.visibility = 'visible'; + + new Ajax.Request( + "<?=$_SERVER['SCRIPT_NAME'];?>", { + method : "post", + parameters : Form.serialize($("iform")), + onSuccess : execFormatComplete + } + ); + } + + function execFormatComplete(req) { + $("formatOutputTD").innerHTML = req.responseText; + $('loading').style.visibility = 'hidden'; + $("doFormatSubmit").style.visibility = 'visible'; + $("formatOutputTD").style.visibility = 'visible'; + } + </script> <tr> <td width="22%" valign="top" class="vncellreq"><?=gettext("Disk");?></td> <td width="78%" class="vtable"> @@ -278,108 +674,12 @@ function disk_change() { <tr> <td width="22%" valign="top"> </td> <td width="78%"> - <input id="submitt" name="Submitt" type="submit" class="formbtn" value="<?=gettext("Format disk!");?>" /> + <input id="doFormatSubmit" name="doFormatSubmit" type="button" class="formbtn" value="<?=gettext("Format disk!");?>" onclick="execFormat();" /> </td> </tr> <tr> - <td valign="top" colspan="2"> - <? - if ($do_format) { - echo "<strong>Disk initialization details:</strong>"; - echo('<pre style="font-size: small; border: solid 1px silver; padding: 4px;">'); - ob_end_flush(); - - /* Erase MBR if not checked*/ - if (!$notinitmbr) { - echo "Erasing MBR\n"; - system("dd if=/dev/zero of=" . escapeshellarg($disk) . " bs=32k count=640"); - } - else { - echo "Keeping the MBR and all partitions\n"; - } - - switch ($type) - { - case "ufs": - /* Initialize disk */ - echo "Creating one parition:\n"; - system("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); - /* Initialise the partition (optional) */ - echo "Initializing parition:\n"; - system("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); - /* Create s1 label */ - echo "Creating BSD label:\n"; - system("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); - // Create filesystem - echo "Creating Filesystem:\n"; - system("/sbin/newfs -U " . escapeshellarg($disk) . "s1"); - echo "Done!\n"; - break; - case "ufs_no_su": - /* Initialize disk */ - echo "Creating one parition:\n"; - system("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); - /* Initialise the partition (optional) */ - echo "Initializing parition:\n"; - system("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); - /* Create s1 label */ - echo "Creating BSD label:\n"; - system("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); - // Create filesystem - echo "Creating Filesystem:\n"; - system("/sbin/newfs -m 0 " . escapeshellarg($disk) . "s1"); - echo "Done!\n"; - break; - case "ufsgpt": - /* Create GPT partition table */ - echo "Destroying old GTP information:\n"; - system("/sbin/gpt destroy " . escapeshellarg($disk)); - echo "Creating GPT partition:\n"; - system("/sbin/gpt create -f " . escapeshellarg($disk)); - system("/sbin/gpt add -t ufs " . escapeshellarg($disk)); - // Create filesystem - echo "Creating Filesystem with Soft Updates:\n"; - system("/sbin/newfs -U " . escapeshellarg($disk) . "p1"); - echo "Done!\n"; - break; - case "ufsgpt_no_su": - /* Create GPT partition table */ - echo "Destroying old GTP information:\n"; - system("/sbin/gpt destroy " . escapeshellarg($disk)); - echo "Creating GPT partition:\n"; - system("/sbin/gpt create -f " . escapeshellarg($disk)); - system("/sbin/gpt add -t ufs " . escapeshellarg($disk)); - // Create filesystem - echo "Creating Filesystem without Soft Updates:\n"; - system("/sbin/newfs -m 0 " . escapeshellarg($disk) . "p1"); - echo "Done!\n"; - break; - case "softraid": - /* Initialize disk */ - system("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); - /* Initialise the partition (optional) */ - system("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); - /* Delete old gmirror information */ - system("/sbin/gmirror clear " . escapeshellarg($disk)); - echo "Done!\n"; - break; - case "msdos": - /* Initialize disk */ - system("/sbin/fdisk -I -b /boot/mbr " . escapeshellarg($disk)); - /* Initialise the partition (optional) */ - system("/bin/dd if=/dev/zero of=" . escapeshellarg($disk) . "s1 bs=32k count=16"); - /* Create s1 label */ - system("/sbin/bsdlabel -w " . escapeshellarg($disk) . "s1 auto"); - // Create filesystem - system("/sbin/newfs_msdos -F 32 " . escapeshellarg($disk) . "s1"); - echo "Done!\n"; - break; - } - - echo('</pre>'); - } - ?> - </td> + <!-- Format Output Container - Do Not Delete --> + <td id="formatOutputTD" valign="top" colspan="2" style="visibility: hidden; border: solid 1px silver; vertical-align: middle; width: 100%"></td> </tr> <tr> <td align="left" valign="top" colspan="2"> @@ -397,7 +697,7 @@ function disk_change() { </form> </div> </td> - </tr> + </tr> </table> <?php include("fend.inc"); ?> <?= checkForInputErrors(); ?> |