/** * Builds the navigation bar */ public function build_navigation_bar($result, $path, $obj_info = null, $annotations_query = false) { debugging("BUILDING NAVIGATION BAR: {$path}"); // alias for the 'requests' cache $cache = $this->requests; // get existing session objects $omero_tagset = $cache->get(self::OMERO_TAGSET_KEY); $omero_project = $cache->get(self::OMERO_PROJECT_KEY); if (!$annotations_query) { $annotations_query = $cache->get(self::OMERO_ANNOTATION_QUERY_KEY); } // clean current value sessions // when a new navigation path starts if (PathUtils::is_root_path($path) || PathUtils::is_projects_root($path) || PathUtils::is_annotations_root($path)) { // invalidate current session values $cache->delete_many(array(self::OMERO_ANNOTATION_QUERY_KEY, self::OMERO_TAGSET_KEY, self::OMERO_PROJECT_KEY, self::OMERO_DATASET_KEY)); // invalidate the annotation_query parameter $annotations_query = false; } // adds the root array_push($result, array('name' => "/", 'path' => "/")); // Query reference if ($annotations_query) { if ($annotations_query) { array_push($result, array('name' => "Query: {$annotations_query}", 'path' => PathUtils::build_find_annotations_url($annotations_query))); $_SESSION['$omero_search_text'] = $annotations_query; } } // process remaining elements by type if (PathUtils::is_annotations_root($path)) { if (!$annotations_query) { array_push($result, array('name' => get_string('tags', 'repository_omero'), 'path' => PathUtils::build_annotation_list_url())); } } else { if (PathUtils::is_tagset_root($path)) { if (!$annotations_query) { array_push($result, array('name' => get_string('tags', 'repository_omero'), 'path' => PathUtils::build_annotation_list_url())); } array_push($result, array('name' => $this->format_navbar_element_name(get_string('tagset', 'repository_omero'), $obj_info->value, $obj_info->id), 'path' => PathUtils::build_tagset_deatails_url($obj_info->id))); $cache->set(self::OMERO_TAGSET_KEY, $obj_info); } else { if (PathUtils::is_tag($path)) { if (!$annotations_query) { array_push($result, array('name' => get_string('tags', 'repository_omero'), 'path' => PathUtils::build_annotation_list_url())); } if (isset($omero_tagset) && !empty($omero_tagset)) { array_push($result, array('name' => $this->format_navbar_element_name(get_string('tagset', 'repository_omero'), $omero_tagset->value, $omero_tagset->id), 'path' => PathUtils::build_tagset_deatails_url($omero_tagset->id))); } array_push($result, array('name' => $this->format_navbar_element_name(get_string('tag', 'repository_omero'), $obj_info->value, $obj_info->id), 'path' => $path)); } else { if (PathUtils::is_projects_root($path)) { array_push($result, array('name' => get_string('projects', 'repository_omero'), 'path' => PathUtils::build_project_list_url())); } else { if (PathUtils::is_project($path)) { $omero_project = $obj_info; $cache->set(self::OMERO_PROJECT_KEY, $omero_project); array_push($result, array('name' => get_string('projects', 'repository_omero'), 'path' => PathUtils::build_project_list_url())); array_push($result, array('name' => $this->format_navbar_element_name(get_string('project', 'repository_omero'), $omero_project->name, $omero_project->id), 'path' => PathUtils::build_project_detail_url($omero_project->id))); } else { if (PathUtils::is_dataset($path)) { $omero_dataset = $obj_info; $cache->set(self::OMERO_DATASET_KEY, $omero_dataset); array_push($result, array('name' => get_string('projects', 'repository_omero'), 'path' => PathUtils::build_project_list_url())); array_push($result, array('name' => $this->format_navbar_element_name(get_string('project', 'repository_omero'), $omero_project->name, $omero_project->id), 'path' => PathUtils::build_project_detail_url($omero_project->id))); array_push($result, array('name' => $this->format_navbar_element_name(get_string('dataset', 'repository_omero'), $omero_dataset->name, $omero_dataset->id), 'path' => PathUtils::build_dataset_detail_url($omero_dataset->id))); } } } } } } return $result; }