manage-statusbox.php
167 lines
| 4.3 KiB
| text/x-php
|
XmlPhpLexer
| r1 | <?php | |||
| /* This page displays and modifies the Status Box */ | ||||
| require_once('include/admin.inc.php'); | ||||
| auth_redirect(); // Require logged in user to access this page. | ||||
| /* Handle form submission of new updates */ | ||||
| function handle_update_form() { | ||||
| global $error,$info,$mtdb; | ||||
| check_nonce('update-statusbox'); | ||||
| $percent = $_POST['update_percentage']; | ||||
| $eta = strtotime($_POST['update_eta']); | ||||
| $text = $_POST['update_text']; | ||||
| $now = time(); | ||||
| $percent = trim($percent, "% "); | ||||
| if( !is_numeric ( $percent ) ) { | ||||
| $error = '<p>Percentage complete must be numeric.</p>'; | ||||
| return; | ||||
| } | ||||
| if( $percent < 0 || $percent > 100 ) { | ||||
| $error = '<p>Supply percentages between 0 and 100 (inclusive), please.</p>'; | ||||
| return; | ||||
| } | ||||
| // ETA must be sane | ||||
| if( ($eta < $now && $percent < 100) || ($eta<mktime(0,0,0,1,1,2000) ) ) { | ||||
| $error = '<p>Supply estimated time in the future, please. Current time is ' . date("F j, Y, g:i a", $now) . '</p>'; | ||||
| return; | ||||
| } | ||||
| r5 | $mtdb->query( 'INSERT INTO status (published,eta,percentage,text) VALUES( NOW(), FROM_UNIXTIME(' . (int)$eta . '), '. (int)$percent . ', "' . mysqli_real_escape_string($mtdb->link, $text) . '")' ); | |||
| r1 | ||||
| $_POST['update_percentage']=$_POST['update_eta']=$_POST['update_text']=''; | ||||
| $info = '<p>Statusbox updated successfully.</p>'; | ||||
| } | ||||
| if( isset($_POST['action']) && $_POST['action'] == 'create-update' ) | ||||
| handle_update_form(); | ||||
| adminhead('Status Box'); | ||||
| adminmenu('manage-statusbox.php'); | ||||
| /* Simple Presets, Select things said before */ | ||||
| $presets = $mtdb->getAll('SELECT COUNT(*) as c, percentage, text, CONCAT( percentage, "% - ", text ) as p FROM status GROUP BY p HAVING c>1 ORDER BY c DESC'); | ||||
| ?> | ||||
| <form enctype="multipart/form-data" name="create-update" id="create-update" action="manage-statusbox.php" method="post"> | ||||
| <?php nonce_field('update-statusbox'); ?> | ||||
| <input type="hidden" name="action" value="create-update" /> | ||||
| <h2>Update Status Box</h2> | ||||
| <div class="narrow"> | ||||
| <table class="editform" width="100%" cellspacing="2" cellpadding="5"> | ||||
| <tr> | ||||
| <th scope="row">Current Time</th> | ||||
| <td width="66%"><?php echo date("F j, Y, g:i a"); ?></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <th scope="row">Estimated Time Of Next Update</th> | ||||
| <td width="66%"><input name="update_eta" type="text" id="update_eta" value="<?php echo htmlentities($_POST['update_eta']); ?>" /></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <th scope="row">Percentage Complete</th> | ||||
| <td width="66%"><input name="update_percentage" type="text" id="update_percentage" value="<?php echo htmlentities($_POST['update_percentage']); ?>" /></td> | ||||
| </tr> | ||||
| <tr> | ||||
| <th scope="row">Status Description</th> | ||||
| <td width="66%"><textarea name="update_text" row="6" cols="30" id="update_text"><?php echo htmlentities($_POST['update_text']); ?></textarea></td> | ||||
| </tr> | ||||
| r5 | ||||
| r1 | <script type="text/javascript"> | |||
| function PresetHandler( f ) { | ||||
| r5 | ||||
| r1 | var i = f.preset.selectedIndex; | |||
| var v = f.preset.options[i].value; | ||||
| r5 | ||||
| r1 | var parts = v.split("% - "); | |||
| r5 | ||||
| r1 | if( parts[0] == undefined ) { | |||
| parts[0] = ""; | ||||
| } | ||||
| if( parts[1] == undefined ) { | ||||
| parts[1] = ""; | ||||
| } | ||||
| r5 | ||||
| r1 | f.update_percentage.value = parts[0]; | |||
| f.update_text.value = parts[1]; | ||||
| r5 | ||||
| r1 | return true; | |||
| } | ||||
| document.write('<tr><th scope="row">Presets</th><td width="66%"><select name="preset" onchange="PresetHandler(this.form);"><option value="">-none-</option><?php | ||||
| foreach( $presets as $p ) | ||||
| echo '<option value="' . addslashes(htmlentities($p->p)) . '">' . addslashes(htmlentities($p->p)) . '</option>'; | ||||
| ?></select></td></tr>'); | ||||
| r5 | ||||
| r1 | </script> | |||
| </table> | ||||
| <p class="submit"><input type="submit" value="Set Update Status »" name="submit" /></p> | ||||
| </div> | ||||
| </form> | ||||
| </div> | ||||
| <div class="wrap"> | ||||
| <h2>Status Box History</h2> | ||||
| <p>Status updates that have gone before.</p> | ||||
| <?php | ||||
| $stats = $mtdb->getAll("SELECT published,eta,percentage,text FROM status ORDER BY published DESC limit 5"); | ||||
| ?> | ||||
| <table class="widefat"> | ||||
| <thead> | ||||
| <tr> | ||||
| <th scope="col">Published</th> | ||||
| <th scope="col">ETA</th> | ||||
| <th scope="col">Percentage</th> | ||||
| <th scope="col">Text</th> | ||||
| </tr> | ||||
| </thead> | ||||
| <tbody id="the-list"> | ||||
| <?php | ||||
| $alternate=false; | ||||
| foreach( $stats as $s ) { | ||||
| $alternate=!$alternate; | ||||
| ?> | ||||
| <tr <?php if($alternate) echo 'class="alternate"'; ?>> | ||||
| <th scope="row" style="text-align: center;"><?php echo $s->published; ?></th> | ||||
| <td><?php echo $s->eta; ?></td> | ||||
| <td><?php echo $s->percentage; ?></td> | ||||
| <td><?php echo htmlentities($s->text); ?></td> | ||||
| </tr> | ||||
| <?php | ||||
| } | ||||
| ?> | ||||
| </tbody> | ||||
| </table> | ||||
| <?php | ||||
| adminfooter(); | ||||
| ?> | ||||
