vito / chyrp

The ultra-lightweight ultra-flexible blogging engine with a fetish for birds and misspellings.

This URL has Read+Write access

chyrp / admin / index.php
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 1 <?php
2 define('ADMIN', true);
381f43bc » vito 2008-05-02 Code refining & updated adm... 3
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 4 require_once "../includes/common.php";
5
d3fa8562 » vito 2008-06-26 * Updated module conflicts 6 $action = ($_GET['action'] == "index" or !isset($_GET['action'])) ? $admin->determine_action() : $_GET['action'];
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 7
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 8 $admin->handle_redirects($action);
9
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 10 class AdminTwig {
11 public function __construct() {
c1617056 » vito 2008-06-20 Fixed phpThumb's caching. 12 $this->twig = new Twig_Loader(MAIN_DIR."/admin/layout", (is_writable(INCLUDES_DIR."/caches") and !DEBUG) ? INCLUDES_DIR."/caches" : null);
53ed587a » vito 2008-06-12 Switched to using a dropdow... 13 }
14
15 public function load($action) {
16 global $admin, $theme;
17
18 # Are there any extension-added pages?
19 $trigger = Trigger::current();
c332685b » vito 2008-07-07 Admin relocations. 20 foreach (array("write" => array(),
5769876a » vito 2008-07-09 Added a help dialogue for A... 21 "manage" => array("import", "export"),
c332685b » vito 2008-07-07 Admin relocations. 22 "settings" => array(),
23 "extend" => array("modules", "feathers", "themes")) as $main_nav => $val) {
24 $$main_nav = $val;
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 25 $trigger->filter($$main_nav, $main_nav."_pages");
26 }
53ed587a » vito 2008-06-12 Switched to using a dropdow... 27
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 28 $visitor = Visitor::current();
29
fc1bc194 » vito 2008-07-06 * Added an awesome Flash cl... 30 $admin->context["theme"] = $theme;
31 $admin->context["flash"] = Flash::current();
32 $admin->context["trigger"] = $trigger;
33 $admin->context["title"] = camelize($action, true);
34 $admin->context["site"] = Config::current();
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 35 $admin->context["visitor"] = $visitor;
fc1bc194 » vito 2008-07-06 * Added an awesome Flash cl... 36 $admin->context["logged_in"] = logged_in();
37 $admin->context["route"] = array("action" => $action);
38 $admin->context["hide_admin"] = isset($_SESSION["chyrp_hide_admin"]);
39 $admin->context["now"] = now();
40 $admin->context["now_server"] = time();
41 $admin->context["version"] = CHYRP_VERSION;
70f5756d » vito 2008-07-09 Fixed grabbing a title from... 42 $admin->context["debug"] = DEBUG;
fc1bc194 » vito 2008-07-06 * Added an awesome Flash cl... 43 $admin->context["POST"] = $_POST;
44 $admin->context["GET"] = $_GET;
689f94f2 » vito 2008-05-03 * $is_feed and $viewing are... 45
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 46 $admin->context["navigation"] = array();
47
48 $show = array("write" => array($visitor->group()->can("add_draft", "add_post", "add_page")),
49 "manage" => array($visitor->group()->can("view_own_draft",
50 "view_draft",
51 "edit_own_draft",
52 "edit_own_post",
53 "edit_post",
54 "delete_own_draft",
55 "delete_own_post",
56 "delete_post",
57 "add_page",
58 "edit_page",
59 "delete_page",
60 "add_user",
61 "edit_user",
62 "delete_user",
63 "add_group",
64 "edit_group",
65 "delete_group")),
66 "settings" => array($visitor->group()->can("change_settings")),
67 "extend" => array($visitor->group()->can("toggle_extensions")));
68
69 foreach ($show as $name => &$arr)
70 $trigger->filter($arr, $name."_nav_show");
71
72 $admin->context["navigation"]["write"] = array("title" => __("Write"),
73 "show" => in_array(true, $show["write"]),
74 "selected" => (in_array($action, $write) or
75 match("/^write_/", $action)));
76
77 $admin->context["navigation"]["manage"] = array("title" => __("Manage"),
78 "show" => in_array(true, $show["manage"]),
79 "selected" => (in_array($action, $manage) or
80 match(array("/^manage_/",
81 "/^edit_/",
82 "/^delete_/",
83 "/^new_/"), $action)));
84
85 $admin->context["navigation"]["settings"] = array("title" => __("Settings"),
86 "show" => in_array(true, $show["settings"]),
87 "selected" => (in_array($action, $settings) or
88 match("/_settings$/", $action)));
89
90 $admin->context["navigation"]["extend"] = array("title" => __("Extend"),
91 "show" => in_array(true, $show["extend"]),
92 "selected" => (in_array($action, $extend)));
d4086b1b » vito 2008-05-04 More admin area tasks/enhan... 93
8429a16e » vito 2008-06-06 New array-powered, more fle... 94 $this->subnav_context();
95
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 96 $trigger->filter($admin->context["selected"], "nav_selected");
d4086b1b » vito 2008-05-04 More admin area tasks/enhan... 97
e96f0403 » vito 2008-05-05 More admin updates. 98 $admin->context["bookmarklet"] = "javascript:var%20d=document,w=window,e=w.getSelection,k=d.getSelection,x=d.selection,s=(e?e():(k)?k():(x?x.createRange().text:0)),f='".$admin->context["site"]->url."/includes/bookmarklet.php',l=d.location,e=encodeURIComponent,p='?url='+e(l.href)+'&title='+e(d.title)+'&selection='+e(s),u=f+p;a=function(){if(!w.open(u,'t','toolbar=0,resizable=0,status=1,width=450,height=430'))l.href=u;};if(/Firefox/.test(navigator.userAgent))setTimeout(a,0);else%20a();void(0)";
99
689f94f2 » vito 2008-05-03 * $is_feed and $viewing are... 100 if (method_exists($admin, $action))
101 $admin->$action();
102
f3518168 » vito 2008-06-04 * Moved to the Google AJAX ... 103 $trigger->call("admin_".$action);
689f94f2 » vito 2008-05-03 * $is_feed and $viewing are... 104
712334c0 » vito 2008-05-22 Added 'Need more detail?' s... 105 $admin->context["sql_debug"] = SQL::current()->debug;
106
7039efd2 » vito 2008-06-04 * Make it easier for module... 107 $template = MAIN_DIR."/admin/layout/pages/".$action.".twig";
108
109 $config = Config::current();
110 if (!file_exists($template)) {
111 foreach (array(MODULES_DIR => $config->enabled_modules, FEATHERS_DIR => $config->enabled_feathers) as $path => $try)
112 foreach ($try as $extension)
113 if (file_exists($path."/".$extension."/pages/admin/".$action.".twig"))
114 $template = $path."/".$extension."/pages/admin/".$action.".twig";
115
116 if (!file_exists($template))
1882c543 » vito 2008-06-08 * Updated Gettext files. 117 error(__("Template Missing"), _f("Couldn't load template:<br /><br />%s", array("pages/".$action.".twig")));
7039efd2 » vito 2008-06-04 * Make it easier for module... 118 }
f3a19323 » vito 2008-05-03 * Added pluralize() and dep... 119
7039efd2 » vito 2008-06-04 * Make it easier for module... 120 return $this->twig->getTemplate($template)->display($admin->context);
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 121 }
8429a16e » vito 2008-06-06 New array-powered, more fle... 122
123 public function subnav_context() {
bc7cdd7b » vito 2008-06-06 * Fixed first Feather being... 124 global $admin, $action;
8429a16e » vito 2008-06-06 New array-powered, more fle... 125
be3d32c1 » vito 2008-06-06 Made new admin nav extensib... 126 $trigger = Trigger::current();
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 127 $visitor = Visitor::current();
be3d32c1 » vito 2008-06-06 Made new admin nav extensib... 128
8429a16e » vito 2008-06-06 New array-powered, more fle... 129 $admin->context["subnav"] = array();
130 $subnav =& $admin->context["subnav"];
131
132 $subnav["write"] = array();
37d3bf90 » vito 2008-07-03 Fixed a typo. 133 $pages = array("manage" => array());
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 134
8429a16e » vito 2008-06-06 New array-powered, more fle... 135 foreach (Config::current()->enabled_feathers as $index => $feather) {
2db32be6 » vito 2008-07-06 * Switched YAML libraries 136 $info = Horde_Yaml::loadFile(FEATHERS_DIR."/".$feather."/info.yaml");
8429a16e » vito 2008-06-06 New array-powered, more fle... 137 $subnav["write"]["write_post&feather=".$feather] = array("title" => __($info["name"], $feather),
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 138 "show" => $visitor->group()->can("add_draft", "add_post"),
d87af098 » vito 2008-06-12 * Added AJAX sorting of Fea... 139 "attributes" => ' id="list_feathers['.$feather.']"',
ab8244b8 » vito 2008-06-25 * Check for "gzip" in $_SER... 140 "selected" => (isset($_GET['feather']) and $_GET['feather'] == $feather) or
141 (!isset($_GET['feather']) and $action == "write_post" and !$index));
8429a16e » vito 2008-06-06 New array-powered, more fle... 142 }
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 143
144 # Write navs
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 145 $subnav["write"]["write_page"] = array("title" => __("Page"),
146 "show" => $visitor->group()->can("add_page"));
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 147 $trigger->filter($subnav["write"], array("admin_write_nav", "write_nav"));
148 $pages["write"] = array_merge(array("write_post"), array_keys($subnav["write"]));;
149
150 # Manage navs
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 151 $subnav["manage"] = array("manage_posts" => array("title" => __("Posts"),
152 "show" => (Post::any_editable() or Post::any_deletable()),
153 "selected" => array("edit_post", "delete_post")),
154 "manage_pages" => array("title" => __("Pages"),
155 "show" => ($visitor->group()->can("edit_page", "delete_page")),
156 "selected" => array("edit_page", "delete_page")),
157 "manage_users" => array("title" => __("Users"),
158 "show" => ($visitor->group()->can("add_user",
159 "edit_user",
160 "delete_user")),
161 "selected" => array("edit_user", "delete_user", "new_user")),
162 "manage_groups" => array("title" => __("Groups"),
163 "show" => ($visitor->group()->can("add_group",
164 "edit_group",
165 "delete_group")),
166 "selected" => array("edit_group", "delete_group", "new_group")));
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 167 $trigger->filter($subnav["manage"], "manage_nav");
20d8448c » vito 2008-07-08 Import / Export tabs should... 168
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 169 $subnav["manage"]["import"] = array("title" => __("Import"),
170 "show" => ($visitor->group()->can("add_post")));
171 $subnav["manage"]["export"] = array("title" => __("Export"),
172 "show" => ($visitor->group()->can("add_post")));
20d8448c » vito 2008-07-08 Import / Export tabs should... 173
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 174 $pages["manage"][] = "new_user";
175 $pages["manage"][] = "new_group";
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 176 foreach (array_keys($subnav["manage"]) as $manage)
177 $pages["manage"] = array_merge($pages["manage"], array($manage,
44f0b2e2 » vito 2008-07-05 * Don't try $foo->bar() or ... 178 preg_replace("/manage_(.+)/e",
179 "'edit_'.depluralize('\\1')",
180 $manage),
181 preg_replace("/manage_(.+)/e",
182 "'delete_'.depluralize('\\1')",
183 $manage)));
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 184
185 # Settings navs
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 186 $subnav["settings"] = array("general_settings" => array("title" => __("General"),
187 "show" => $visitor->group()->can("change_settings")),
188 "content_settings" => array("title" => __("Content"),
189 "show" => $visitor->group()->can("change_settings")),
190 "user_settings" => array("title" => __("Users"),
191 "show" => $visitor->group()->can("change_settings")),
192 "route_settings" => array("title" => __("Routes"),
193 "show" => $visitor->group()->can("change_settings")));
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 194 $trigger->filter($subnav["settings"], "settings_nav");
3c56fa5e » vito 2008-07-03 Fixed some more typos. 195 $pages["settings"] = array_keys($subnav["settings"]);
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 196
197 # Extend navs
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 198 $subnav["extend"] = array("modules" => array("title" => __("Modules"),
199 "show" => $visitor->group()->can("toggle_extensions")),
200 "feathers" => array("title" => __("Feathers"),
201 "show" => $visitor->group()->can("toggle_extensions")),
202 "themes" => array("title" => __("Themes"),
203 "show" => $visitor->group()->can("toggle_extensions")));
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 204 $trigger->filter($subnav["extend"], "extend_nav");
205 $pages["extend"] = array_keys($subnav["extend"]);
206
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 207 foreach (array_keys($subnav) as $main_nav)
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 208 foreach ($trigger->filter($pages[$main_nav], $main_nav."_nav_pages") as $extend)
3c56fa5e » vito 2008-07-03 Fixed some more typos. 209 $subnav[$extend] =& $subnav[$main_nav];
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 210
13dbb213 » vito 2008-07-10 * Hide admin nav items if t... 211 foreach ($subnav as $main_nav => &$sub_nav)
212 foreach ($sub_nav as &$nav)
213 $nav["show"] = (!isset($nav["show"]) or $nav["show"]);
214
70b9b0f4 » vito 2008-07-03 * New Trigger->filter. Firs... 215 $trigger->filter($subnav, "admin_subnav");
8429a16e » vito 2008-06-06 New array-powered, more fle... 216 }
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 217 }
381f43bc » vito 2008-05-02 Code refining & updated adm... 218
ca5e55ef » vito 2008-04-27 Some work on the new Admin ... 219 $twig = new AdminTwig();
220
8201c4c0 » vito 2008-04-28 Finished converting feather... 221 if ($action == "help")
f9689269 » vito 2008-05-31 * Documentation updates 222 require "help.php";
8201c4c0 » vito 2008-04-28 Finished converting feather... 223 else
224 $twig->load($action);