oc-server3/htdocs/okapi/views/menu.inc.php
2013-03-26 16:38:26 +01:00

76 lines
2.4 KiB
PHP

<?
namespace okapi\views\menu;
use Exception;
use okapi\Okapi;
use okapi\OkapiServiceRunner;
use okapi\OkapiInternalRequest;
use okapi\OkapiInternalConsumer;
use okapi\Settings;
require_once($GLOBALS['rootpath'].'okapi/service_runner.php');
class OkapiMenu
{
private static function link($current_path, $link_path, $link_name)
{
return "<a href='".Settings::get('SITE_URL')."okapi/$link_path'".(($current_path == $link_path)
? " class='selected'" : "").">$link_name</a><br>";
}
/** Get HTML-formatted side menu representation. */
public static function get_menu_html($current_path = null)
{
$chunks = array();
if (Okapi::$revision)
$chunks[] = "<div class='revision'>rev. ".Okapi::$revision."</div>";
$chunks[] = "<div class='main'>";
$chunks[] = self::link($current_path, "introduction.html", "Introduction");
$chunks[] = self::link($current_path, "signup.html", "Sign up");
$chunks[] = self::link($current_path, "examples.html", "Examples");
$chunks[] = "</div>";
# We need a list of all methods. We do not need their descriptions, so
# we won't use the apiref/method_index method to get it, the static list
# within OkapiServiceRunner will do.
$methodnames = OkapiServiceRunner::$all_names;
sort($methodnames);
# We'll break them up into modules, for readability.
$module_methods = array();
foreach ($methodnames as $methodname)
{
$pos = strrpos($methodname, "/");
$modulename = substr($methodname, 0, $pos);
$method_short_name = substr($methodname, $pos + 1);
if (!isset($module_methods[$modulename]))
$module_methods[$modulename] = array();
$module_methods[$modulename][] = $method_short_name;
}
$modulenames = array_keys($module_methods);
sort($modulenames);
foreach ($modulenames as $modulename)
{
$chunks[] = "<div class='module'>$modulename</div>";
$chunks[] = "<div class='methods'>";
foreach ($module_methods[$modulename] as $method_short_name)
$chunks[] = self::link($current_path, "$modulename/$method_short_name.html", "$method_short_name");
$chunks[] = "</div>";
}
return implode("", $chunks);
}
public static function get_installations()
{
$installations = OkapiServiceRunner::call("services/apisrv/installations",
new OkapiInternalRequest(new OkapiInternalConsumer(), null, array()));
foreach ($installations as &$inst_ref)
$inst_ref['selected'] = ($inst_ref['site_url'] == Settings::get('SITE_URL'));
return $installations;
}
}