Пример #1
0
 /**
  * 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;
 }