76 lines
2.4 KiB
PHP
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;
|
|
}
|
|
}
|