<?php class ExtManagerTheme extends Themelet { /** * #param ExtensionInfo[] $extensions */ public function display_table(Page $page, array $extensions, bool $editable) { $h_en = $editable ? "<th>Enabled</th>" : ""; $html = " " . make_form(make_link("ext_manager/set")) . " <table id='extensions' class='zebra sortable'> <thead> <tr> $h_en <th>Name</th> <th>Docs</th> <th>Description</th> </tr> </thead> <tbody> "; foreach ($extensions as $extension) { if (!$editable && $extension->visibility == "admin") { continue; } $h_name = html_escape(empty($extension->name) ? $extension->ext_name : $extension->name); $h_description = html_escape($extension->description); $h_link = make_link("ext_doc/" . url_escape($extension->ext_name)); $h_enabled = ($extension->enabled === true ? " checked='checked'" : ($extension->enabled === false ? "" : " disabled checked='checked'")); $h_enabled_box = $editable ? "<td><input type='checkbox' name='ext_" . html_escape($extension->ext_name) . "' id='ext_" . html_escape($extension->ext_name) . "'$h_enabled></td>" : ""; $h_docs = ($extension->documentation ? "<a href='$h_link'>■</a>" : ""); //TODO: A proper "docs" symbol would be preferred here. $html .= " <tr data-ext='{$extension->ext_name}'> {$h_enabled_box} <td><label for='ext_" . html_escape($extension->ext_name) . "'>{$h_name}</label></td> <td>{$h_docs}</td> <td style='text-align: left;'>{$h_description}</td> </tr>"; } $h_set = $editable ? "<tfoot><tr><td colspan='5'><input type='submit' value='Set Extensions'></td></tr></tfoot>" : ""; $html .= " </tbody> $h_set </table> </form> "; $page->set_title("Extensions"); $page->set_heading("Extensions"); $page->add_block(new NavBlock()); $page->add_block(new Block("Extension Manager", $html)); } /* public function display_blocks(Page $page, $extensions) { global $user; $col_1 = ""; $col_2 = ""; foreach($extensions as $extension) { $ext_name = $extension->ext_name; $h_name = empty($extension->name) ? $ext_name : html_escape($extension->name); $h_email = html_escape($extension->email); $h_link = isset($extension->link) ? "<a href=\"".html_escape($extension->link)."\">Original Site</a>" : ""; $h_doc = isset($extension->documentation) ? "<a href=\"".make_link("ext_doc/".html_escape($extension->ext_name))."\">Documentation</a>" : ""; $h_author = html_escape($extension->author); $h_description = html_escape($extension->description); $h_enabled = $extension->enabled ? " checked='checked'" : ""; $h_author_link = empty($h_email) ? "$h_author" : "<a href='mailto:$h_email'>$h_author</a>"; $html = " <p><table border='1'> <tr> <th colspan='2'>$h_name</th> </tr> <tr> <td>By $h_author_link</td> <td width='25%'>Enabled: <input type='checkbox' name='ext_$ext_name'$h_enabled></td> </tr> <tr> <td style='text-align: left' colspan='2'>$h_description<p>$h_link $h_doc</td> </tr> </table> "; if($n++ % 2 == 0) { $col_1 .= $html; } else { $col_2 .= $html; } } $html = " ".make_form(make_link("ext_manager/set"))." ".$user->get_auth_html()." <table border='0'> <tr><td width='50%'>$col_1</td><td>$col_2</td></tr> <tr><td colspan='2'><input type='submit' value='Set Extensions'></td></tr> </table> </form> "; $page->set_title("Extensions"); $page->set_heading("Extensions"); $page->add_block(new NavBlock()); $page->add_block(new Block("Extension Manager", $html)); } */ public function display_doc(Page $page, ExtensionInfo $info) { $author = ""; if (count($info->authors) > 0) { $author = "<br /><b>Author"; if (count($info->authors) > 1) { $author .= "s"; } $author .= ":</b>"; foreach ($info->authors as $auth) { if (!empty($auth->email)) { $author .= "<a href=\"mailto:" . html_escape($auth->email) . "\">" . html_escape($auth->name) . "</a>"; } else { $author .= html_escape($auth->name); } } } $version = ($info->version) ? "<br><b>Version:</b> " . html_escape($info->version) : ""; $link = ($info->link) ? "<br><b>Home Page:</b> <a href=\"" . html_escape($info->link) . "\">Link</a>" : ""; $doc = $info->documentation; $html = " <div style='margin: auto; text-align: left; width: 512px;'> $author $version $link <p>$doc <hr> <p><a href='" . make_link("ext_manager") . "'>Back to the list</a> </div>"; $page->set_title("Documentation for " . html_escape($info->name)); $page->set_heading(html_escape($info->name)); $page->add_block(new NavBlock()); $page->add_block(new Block("Documentation", $html)); } }