0
$action = ($_GET['action'] == "index" or !isset($_GET['action'])) ? $admin->determine_action() : $_GET['action'];
0
+ $admin->handle_redirects($action);
0
public function __construct() {
0
$this->twig = new Twig_Loader(MAIN_DIR."/admin/layout", (is_writable(INCLUDES_DIR."/caches") and !DEBUG) ? INCLUDES_DIR."/caches" : null);
0
$trigger->filter($$main_nav, $main_nav."_pages");
0
+ $visitor = Visitor::current();
0
$admin->context["theme"] = $theme;
0
$admin->context["flash"] = Flash::current();
0
$admin->context["trigger"] = $trigger;
0
$admin->context["title"] = camelize($action, true);
0
$admin->context["site"] = Config::current();
0
- $admin->context["visitor"] =
Visitor::current();
0
+ $admin->context["visitor"] =
$visitor;
0
$admin->context["logged_in"] = logged_in();
0
$admin->context["route"] = array("action" => $action);
0
$admin->context["hide_admin"] = isset($_SESSION["chyrp_hide_admin"]);
0
$admin->context["POST"] = $_POST;
0
$admin->context["GET"] = $_GET;
0
- $admin->context["selected"] = array("write" => (in_array($action, $write) or match("/^write_/", $action)) ?
0
- "manage" => (in_array($action, $manage) or match(array("/^manage_/", "/^edit_/", "/^delete_/"), $action)) ?
0
- "settings" => (in_array($action, $settings) or match("/_settings$/", $action)) ?
0
- "extend" => (in_array($action, $extend)) ?
0
+ $admin->context["navigation"] = array();
0
+ $show = array("write" => array($visitor->group()->can("add_draft", "add_post", "add_page")),
0
+ "manage" => array($visitor->group()->can("view_own_draft",
0
+ "settings" => array($visitor->group()->can("change_settings")),
0
+ "extend" => array($visitor->group()->can("toggle_extensions")));
0
+ foreach ($show as $name => &$arr)
0
+ $trigger->filter($arr, $name."_nav_show");
0
+ $admin->context["navigation"]["write"] = array("title" => __("Write"),
0
+ "show" => in_array(true, $show["write"]),
0
+ "selected" => (in_array($action, $write) or
0
+ match("/^write_/", $action)));
0
+ $admin->context["navigation"]["manage"] = array("title" => __("Manage"),
0
+ "show" => in_array(true, $show["manage"]),
0
+ "selected" => (in_array($action, $manage) or
0
+ match(array("/^manage_/",
0
+ "/^new_/"), $action)));
0
+ $admin->context["navigation"]["settings"] = array("title" => __("Settings"),
0
+ "show" => in_array(true, $show["settings"]),
0
+ "selected" => (in_array($action, $settings) or
0
+ match("/_settings$/", $action)));
0
+ $admin->context["navigation"]["extend"] = array("title" => __("Extend"),
0
+ "show" => in_array(true, $show["extend"]),
0
+ "selected" => (in_array($action, $extend)));
0
$this->subnav_context();
0
global $admin, $action;
0
$trigger = Trigger::current();
0
+ $visitor = Visitor::current();
0
$admin->context["subnav"] = array();
0
$subnav =& $admin->context["subnav"];
0
foreach (Config::current()->enabled_feathers as $index => $feather) {
0
$info = Horde_Yaml::loadFile(FEATHERS_DIR."/".$feather."/info.yaml");
0
$subnav["write"]["write_post&feather=".$feather] = array("title" => __($info["name"], $feather),
0
+ "show" => $visitor->group()->can("add_draft", "add_post"),
0
"attributes" => ' id="list_feathers['.$feather.']"',
0
"selected" => (isset($_GET['feather']) and $_GET['feather'] == $feather) or
0
(!isset($_GET['feather']) and $action == "write_post" and !$index));
0
- $subnav["write"]["write_page"] = array("title" => __("Page"));
0
+ $subnav["write"]["write_page"] = array("title" => __("Page"),
0
+ "show" => $visitor->group()->can("add_page"));
0
$trigger->filter($subnav["write"], array("admin_write_nav", "write_nav"));
0
$pages["write"] = array_merge(array("write_post"), array_keys($subnav["write"]));;
0
- $subnav["manage"] = array("manage_posts" => array("title" => __("Posts"), "selected" => array("edit_post", "delete_post")),
0
- "manage_pages" => array("title" => __("Pages"), "selected" => array("edit_page", "delete_page")),
0
- "manage_users" => array("title" => __("Users"), "selected" => array("edit_user", "delete_user")),
0
- "manage_groups" => array("title" => __("Groups"), "selected" => array("edit_group", "delete_group")));
0
+ $subnav["manage"] = array("manage_posts" => array("title" => __("Posts"),
0
+ "show" => (Post::any_editable() or Post::any_deletable()),
0
+ "selected" => array("edit_post", "delete_post")),
0
+ "manage_pages" => array("title" => __("Pages"),
0
+ "show" => ($visitor->group()->can("edit_page", "delete_page")),
0
+ "selected" => array("edit_page", "delete_page")),
0
+ "manage_users" => array("title" => __("Users"),
0
+ "show" => ($visitor->group()->can("add_user",
0
+ "selected" => array("edit_user", "delete_user", "new_user")),
0
+ "manage_groups" => array("title" => __("Groups"),
0
+ "show" => ($visitor->group()->can("add_group",
0
+ "selected" => array("edit_group", "delete_group", "new_group")));
0
$trigger->filter($subnav["manage"], "manage_nav");
0
- $subnav["manage"]["import"] = array("title" => __("Import"));
0
- $subnav["manage"]["export"] = array("title" => __("Export"));
0
+ $subnav["manage"]["import"] = array("title" => __("Import"),
0
+ "show" => ($visitor->group()->can("add_post")));
0
+ $subnav["manage"]["export"] = array("title" => __("Export"),
0
+ "show" => ($visitor->group()->can("add_post")));
0
+ $pages["manage"][] = "new_user";
0
+ $pages["manage"][] = "new_group";
0
foreach (array_keys($subnav["manage"]) as $manage)
0
$pages["manage"] = array_merge($pages["manage"], array($manage,
0
preg_replace("/manage_(.+)/e",
0
- $subnav["settings"] = array("general_settings" => array("title" => __("General")),
0
- "content_settings" => array("title" => __("Content")),
0
- "user_settings" => array("title" => __("Users")),
0
- "route_settings" => array("title" => __("Routes")));
0
+ $subnav["settings"] = array("general_settings" => array("title" => __("General"),
0
+ "show" => $visitor->group()->can("change_settings")),
0
+ "content_settings" => array("title" => __("Content"),
0
+ "show" => $visitor->group()->can("change_settings")),
0
+ "user_settings" => array("title" => __("Users"),
0
+ "show" => $visitor->group()->can("change_settings")),
0
+ "route_settings" => array("title" => __("Routes"),
0
+ "show" => $visitor->group()->can("change_settings")));
0
$trigger->filter($subnav["settings"], "settings_nav");
0
$pages["settings"] = array_keys($subnav["settings"]);
0
- $subnav["extend"] = array("modules" => array("title" => __("Modules")),
0
- "feathers" => array("title" => __("Feathers")),
0
- "themes" => array("title" => __("Themes")));
0
+ $subnav["extend"] = array("modules" => array("title" => __("Modules"),
0
+ "show" => $visitor->group()->can("toggle_extensions")),
0
+ "feathers" => array("title" => __("Feathers"),
0
+ "show" => $visitor->group()->can("toggle_extensions")),
0
+ "themes" => array("title" => __("Themes"),
0
+ "show" => $visitor->group()->can("toggle_extensions")));
0
$trigger->filter($subnav["extend"], "extend_nav");
0
$pages["extend"] = array_keys($subnav["extend"]);
0
- foreach (array
("write", "manage", "settings", "extend") as $main_nav)
0
+ foreach (array
_keys($subnav) as $main_nav)
0
foreach ($trigger->filter($pages[$main_nav], $main_nav."_nav_pages") as $extend)
0
$subnav[$extend] =& $subnav[$main_nav];
0
+ foreach ($subnav as $main_nav => &$sub_nav)
0
+ foreach ($sub_nav as &$nav)
0
+ $nav["show"] = (!isset($nav["show"]) or $nav["show"]);
0
$trigger->filter($subnav, "admin_subnav");