summaryrefslogtreecommitdiff
path: root/modules/server_add/helpers/server_add_event.php
diff options
context:
space:
mode:
authorBharat Mediratta <bharat@menalto.com>2009-07-28 13:47:22 -0700
committerBharat Mediratta <bharat@menalto.com>2009-07-28 13:47:22 -0700
commit1e90e40d3a9fe2cb826b56686f23a33879418048 (patch)
tree91dec0826eb0af8a683671884a9c1bda57d9f254 /modules/server_add/helpers/server_add_event.php
parentf5c4d23e5756c460099f04ca5a57c0002292d9da (diff)
Use events to generate menus, instead of having xxx_menu helpers.
This is the first step towards having a simple, lightweight and unified API for module interaction.
Diffstat (limited to 'modules/server_add/helpers/server_add_event.php')
-rw-r--r--modules/server_add/helpers/server_add_event.php64
1 files changed, 64 insertions, 0 deletions
diff --git a/modules/server_add/helpers/server_add_event.php b/modules/server_add/helpers/server_add_event.php
new file mode 100644
index 00000000..b53e72d1
--- /dev/null
+++ b/modules/server_add/helpers/server_add_event.php
@@ -0,0 +1,64 @@
+<?php defined("SYSPATH") or die("No direct script access.");
+/**
+ * Gallery - a web based photo album viewer and editor
+ * Copyright (C) 2000-2009 Bharat Mediratta
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or (at
+ * your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA.
+ */
+class server_add_event_Core {
+ static function admin_menu($menu, $theme) {
+ $menu->get("settings_menu")
+ ->append(Menu::factory("link")
+ ->id("server_add")
+ ->label(t("Server Add"))
+ ->url(url::site("admin/server_add")));
+ }
+
+ static function site_menu($menu, $theme) {
+ $item = $theme->item();
+ $paths = unserialize(module::get_var("server_add", "authorized_paths"));
+
+ if ($item && user::active()->admin && $item->is_album() && !empty($paths)) {
+ // This is a little tricky. Normally there's an "Add Photo" menu option, but we want to
+ // turn that into a dropdown if there are two different ways to add things. Do that in a
+ // portable way for now. If we find ourselves duplicating this pattern, we should make an
+ // API method for this.
+ $server_add = Menu::factory("dialog")
+ ->id("server_add")
+ ->label(t("Add from server"))
+ ->url(url::site("server_add/browse/$item->id"));
+ $add_photos_item = $menu->get("add_photos_item");
+ $add_photos_menu = $menu->get("add_photos_menu");
+
+ if ($add_photos_item && !$add_photos_menu) {
+ // Assuming that $add_menu is unset, create add_menu and add our item
+ $menu->add_after(
+ "add_photos_item",
+ Menu::factory("submenu")
+ ->id("add_photos_menu")
+ ->label($add_photos_item->label)
+ ->append(Menu::factory("dialog")
+ ->id("add_photos_submenu_item")
+ ->label(t("Simple Uploader"))
+ ->url($add_photos_item->url))
+ ->append($server_add));
+ $menu->remove("add_photos_item");
+ } else if ($add_photos_menu) {
+ // Append to the existing sub-menu
+ $add_photos_menu->append($server_add);
+ }
+ }
+ }
+}