diff --git a/modules/exif_gps/controllers/admin_exif_gps.php b/modules/exif_gps/controllers/admin_exif_gps.php index 5ba4c397..8559a8f2 100644 --- a/modules/exif_gps/controllers/admin_exif_gps.php +++ b/modules/exif_gps/controllers/admin_exif_gps.php @@ -44,6 +44,20 @@ class Admin_EXIF_GPS_Controller extends Admin_Controller { module::set_var("exif_gps", "sidebar_mapformat", $form->Sidebar->sidebar_mapformat->value); module::set_var("exif_gps", "sidebar_maptype", $form->Sidebar->sidebar_maptype->value); module::set_var("exif_gps", "largemap_maptype", $form->LargeMap->largemap_maptype->value); + $checkbox_album = false; + $checkbox_user = false; + for ($i = 0; $i < count($form->Global->toolbar_map_album); $i++) { + if ($form->Global->toolbar_map_album->value[$i] == "checkbox_album") { + $checkbox_album = true; + } + } + for ($i = 0; $i < count($form->Global->toolbar_map_user); $i++) { + if ($form->Global->toolbar_map_user->value[$i] == "checkbox_user") { + $checkbox_user = true; + } + } + module::set_var("exif_gps", "toolbar_map_album", $checkbox_album); + module::set_var("exif_gps", "toolbar_map_user", $checkbox_user); // Display a success message and redirect back to the TagsMap admin page. message::success(t("Your settings have been saved.")); @@ -69,6 +83,12 @@ class Admin_EXIF_GPS_Controller extends Admin_Controller { ->label(t("Google Maps API Key")) ->value(module::get_var("exif_gps", "googlemap_api_key")) ->rules("required"); + $checkbox_user["checkbox_user"] = array(t("Show \"Map this user\" icon?"), module::get_var("exif_gps", "toolbar_map_user")); + $checkbox_album["checkbox_album"] = array(t("Show \"Map this album\" icon?"), module::get_var("exif_gps", "toolbar_map_album")); + $gps_global_group->checklist("toolbar_map_album") + ->options($checkbox_album); + $gps_global_group->checklist("toolbar_map_user") + ->options($checkbox_user); // Create a group for sidebar settings $gps_sidebar = $form->group("Sidebar") diff --git a/modules/exif_gps/css/exif_gps_menu.css b/modules/exif_gps/css/exif_gps_menu.css new file mode 100644 index 00000000..3f8afa28 --- /dev/null +++ b/modules/exif_gps/css/exif_gps_menu.css @@ -0,0 +1,6 @@ +#g-view-menu #g-exif-gps-album-link { + background-image: url('../images/ico-view-exif_gps_album.png'); +} +#g-view-menu #g-exif-gps-user-link { + background-image: url('../images/ico-view-exif_gps_user.png'); +} diff --git a/modules/exif_gps/helpers/exif_gps_event.php b/modules/exif_gps/helpers/exif_gps_event.php index 046818ab..7e1a6396 100644 --- a/modules/exif_gps/helpers/exif_gps_event.php +++ b/modules/exif_gps/helpers/exif_gps_event.php @@ -97,4 +97,124 @@ class exif_gps_event_Core { ->label(t("EXIF_GPS Settings")) ->url(url::site("admin/exif_gps"))); } + + static function photo_menu($menu, $theme) { + $album_id = ""; + $item = $theme->item; + if ($item->is_album()) { + $album_id = $item->id; + } else { + $album_id = $item->parent_id; + } + $curr_user = ORM::factory("user")->where("id", "=", $item->owner_id)->find_all(); + $user_name = $curr_user[0]->full_name; + + // Make sure there are actually map-able items to display. + $album_items_count = ORM::factory("item", $album_id) + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->descendants_count(); + $user_items_count = ORM::factory("item") + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->where("items.owner_id", "=", $item->owner_id) + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->count_all(); + + if (($album_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_album") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_album") + ->label(t("Map this album")) + ->url(url::site("exif_gps/map/album/" . $album_id)) + ->css_id("g-exif-gps-album-link")); + } + if (($user_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_user") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_user") + ->label(t("Map ") . $user_name . t("'s photos")) + ->url(url::site("exif_gps/map/user/" . $item->owner_id)) + ->css_id("g-exif-gps-user-link")); + } + } + + static function movie_menu($menu, $theme) { + $album_id = ""; + $item = $theme->item; + if ($item->is_album()) { + $album_id = $item->id; + } else { + $album_id = $item->parent_id; + } + $curr_user = ORM::factory("user")->where("id", "=", $item->owner_id)->find_all(); + $user_name = $curr_user[0]->full_name; + + // Make sure there are actually map-able items to display. + $album_items_count = ORM::factory("item", $album_id) + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->descendants_count(); + $user_items_count = ORM::factory("item") + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->where("items.owner_id", "=", $item->owner_id) + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->count_all(); + + if (($album_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_album") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_album") + ->label(t("Map this album")) + ->url(url::site("exif_gps/map/album/" . $album_id)) + ->css_id("g-exif-gps-album-link")); + } + if (($user_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_user") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_user") + ->label(t("Map ") . $user_name . t("'s photos")) + ->url(url::site("exif_gps/map/user/" . $item->owner_id)) + ->css_id("g-exif-gps-user-link")); + } + } + + static function album_menu($menu, $theme) { + $album_id = ""; + $item = $theme->item; + if ($item->is_album()) { + $album_id = $item->id; + } else { + $album_id = $item->parent_id; + } + $curr_user = ORM::factory("user")->where("id", "=", $item->owner_id)->find_all(); + $user_name = $curr_user[0]->full_name; + + // Make sure there are actually map-able items to display. + $album_items_count = ORM::factory("item", $album_id) + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->descendants_count(); + $user_items_count = ORM::factory("item") + ->join("exif_coordinates", "items.id", "exif_coordinates.item_id") + ->where("items.owner_id", "=", $item->owner_id) + ->viewable() + ->order_by("exif_coordinates.latitude", "ASC") + ->count_all(); + + if (($album_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_album") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_album") + ->label(t("Map this album")) + ->url(url::site("exif_gps/map/album/" . $album_id)) + ->css_id("g-exif-gps-album-link")); + } + if (($user_items_count > 0) && (module::get_var("exif_gps", "toolbar_map_user") == true)) { + $menu->append(Menu::factory("link") + ->id("exif_gps_user") + ->label(t("Map ") . $user_name . t("'s photos")) + ->url(url::site("exif_gps/map/user/" . $item->owner_id)) + ->css_id("g-exif-gps-user-link")); + } + } } diff --git a/modules/exif_gps/helpers/exif_gps_theme.php b/modules/exif_gps/helpers/exif_gps_theme.php new file mode 100644 index 00000000..160373a2 --- /dev/null +++ b/modules/exif_gps/helpers/exif_gps_theme.php @@ -0,0 +1,24 @@ +css("exif_gps_menu.css"); + } +} diff --git a/modules/exif_gps/images/ico-view-exif_gps_album.png b/modules/exif_gps/images/ico-view-exif_gps_album.png new file mode 100644 index 00000000..255d6496 Binary files /dev/null and b/modules/exif_gps/images/ico-view-exif_gps_album.png differ diff --git a/modules/exif_gps/images/ico-view-exif_gps_user.png b/modules/exif_gps/images/ico-view-exif_gps_user.png new file mode 100644 index 00000000..e9f72b3b Binary files /dev/null and b/modules/exif_gps/images/ico-view-exif_gps_user.png differ