get("settings_menu") ->append(Menu::factory("link") ->label(t("Star")) ->url(url::site("admin/star"))); } static function site_menu($menu, $theme, $item_css_selector) { $item = $theme->item(); if (!empty($item) && star::can_be_starred($item) && star::can_star($item)) { $csrf = access::csrf_token(); $link = self::_get_star_link_data($item); $menu->get("options_menu") ->append(Menu::factory("ajax_link") ->label($link["text"]) ->ajax_handler("function(data) { window.location.reload() }") ->url(url::site("display/".$link["action"]."/$item->id?csrf=$csrf"))); } } static function context_menu($menu, $theme, $item, $thumb_css_selector) { if (star::can_be_starred($item) && star::can_star($item)) { $csrf = access::csrf_token(); $link = self::_get_star_link_data($item); $menu ->get("options_menu") ->append(Menu::factory("ajax_link") ->label($link["text"]) ->ajax_handler("function(data) { window.location.reload() }") ->url(url::site("display/".$link["action"]."/$item->id?csrf=$csrf"))); } } /** * Returns some data used to create a star link. * * @param Item_Model $item the related item * @return array */ private static function _get_star_link_data(Item_Model $item) { if (star::is_starred($item)) { $action = "unstar"; $action_label = "Unstar"; } else { $action = "star"; $action_label = "Star"; } switch ($item->type) { case "movie": $item_type_label = "movie"; break; case "album": $item_type_label = "album"; break; default: $item_type_label = "photo"; break; } $label = t("$action_label this $item_type_label"); return array("text" => $label, "action" => $action); } }