public static function generateCheckboxesForArray($name, $Options, array $selected_values = array()) { $html = ''; foreach ($Options as $k => $v) { $o_v = html_encode($v); $o_k = ImpHTML::makeSafeCSSName("{$name} {$k}"); $html .= '<input type="checkbox" id="' . $o_k . '" name="' . html_encode($name) . '[' . html_encode($k) . ']" ' . (!empty($selected_values[$k]) ? " checked" : "") . '><label for="' . $o_k . '">' . $o_v . '</label><br/>'; } return $html; }
public function printChanges() { if (empty($this->ID)) { return; } $Changes = $this->getChanges(); if (empty($Changes)) { return; } // TODO: Add filtering here or consider switching to ImpTable with paged data so we can avoid having a huge changelog on the default view in an admin page $Changes = array_reverse($Changes); $CSS_ID = ImpHTML::makeSafeCSSName($this->getUniqueIdentifier()); echo '<table class="DBObjectChanges" id="', $CSS_ID, '">'; print '<caption>'; print '<a name="' . html_encode("{$this->DBTable}_{$this->ID}_Changes") . '"></a>'; print !empty($this->Name) ? html_encode($this->Name) : "{$this->DBTable} #{$this->ID}"; print ' History</caption>'; echo '<tr><td colspan="5"><a href="#" onclick="return toggleChangeLog_', $CSS_ID, '()" class="DBObjectChangesToggle">Hide Change Log</a></td></tr>'; print '<tr><th>Time</th><th>User</th><th>Property</th><th>Old Value</th><th>New Value</th></tr>'; $LastGroup = false; $GroupCount = 0; foreach ($Changes as $Change) { extract($Change, EXTR_PREFIX_ALL, 'Change'); $Change_Time = date('Y-M-d H:i:s', $Change_Time); switch ($this->Properties[$Change_Property]) { case 'datetime': case 'timestamp': $Change_OldValue = date('Y-j-d H:i:s', (int) $Change_OldValue); // These values are cast to avoid issues with values which had not been set and were thus NULL $Change_NewValue = date('Y-j-d H:i:s', (int) $Change_NewValue); // TODO: remove the casts after ChangeLog is updated to serialize() its values break; case 'date': $Change_OldValue = date('Y-j-d', (int) $Change_OldValue); $Change_NewValue = date('Y-j-d', (int) $Change_NewValue); break; } if ($LastGroup != "{$Change_Admin} {$Change_Time}") { $LastGroup = "{$Change_Admin} {$Change_Time}"; $GroupCount++; } else { $Change_Admin = ''; $Change_Time = ''; } print '<tr class="' . ($GroupCount % 2 ? 'Even' : 'Odd') . '">'; print "<td class=\"Timestamp\">{$Change_Time}</td><td class=\"UserName\">{$Change_Admin}</td><td class=\"PropertyName\">{$Change_Property}</td><td class=\"OldValue\">{$Change_OldValue}</td><td class=\"NewValue\">{$Change_NewValue}</td>"; print "</tr>\n"; } print "</table>\n"; ?> <script type="text/javascript" charset="utf-8"> function toggleChangeLog_<?php echo $CSS_ID; ?> () { var changelog = document.getElementById("<?php echo $CSS_ID; ?> "); var toggle = document.getElementById("<?php echo $CSS_ID; ?> _toggle"); if (changelog.style.display == 'none') { changelog.style.display = 'table'; toggle.innerHTML = 'Hide Change Log'; } else { changelog.style.display = 'none'; toggle.innerHTML = 'Show Change Log'; } return false; } document.write('<a href="#" onclick="return toggleChangeLog_<?php echo $CSS_ID; ?> ()" id="<?php echo $CSS_ID; ?> _toggle" class="DBObjectChangesToggle">Show Change Log</a>'); toggleChangeLog_<?php echo $CSS_ID; ?> (); </script> <?php }