tripal_jbrowse_page.module 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. <?php
  2. // API.
  3. require_once 'includes/tripal_jbrowse_page.api.inc';
  4. // Include files.
  5. require_once 'includes/tripal_jbrowse_page.listing.inc';
  6. /**
  7. * Implements hook_menu().
  8. */
  9. function tripal_jbrowse_page_menu() {
  10. $items = [];
  11. $items['jbrowse'] = [
  12. 'title' => 'JBrowse',
  13. 'description' => 'A listing of available JBrowse instances.',
  14. 'page callback' => 'tripal_jbrowse_page_listing_page',
  15. 'access arguments' => ['access content'],
  16. 'type' => MENU_NORMAL_ITEM,
  17. ];
  18. $instances = tripal_jbrowse_mgmt_get_instances();
  19. foreach ($instances as $instance) {
  20. $path = 'jbrowse/'.$instance->organism->genus . '/' . $instance->organism->species;
  21. $items[$path] = [
  22. 'title' => $instance->title,
  23. 'description' => $instance->description,
  24. 'page callback' => 'tripal_jbrowse_page_page',
  25. 'page arguments' => [1, 2],
  26. 'access arguments' => ['access content'],
  27. 'type' => MENU_NORMAL_ITEM,
  28. ];
  29. }
  30. return $items;
  31. }
  32. /**
  33. * Implements hook_theme().
  34. */
  35. function tripal_jbrowse_page_theme($existing, $type, $theme, $path) {
  36. $items = array(
  37. 'jbrowse_instance_public_listing' => array(
  38. // Don't specify the path in the template name.
  39. // Unless you have your template inside a directory within this module.
  40. 'template' => 'theme/jbrowse-instance--public-listing',
  41. 'variables' => array('instances' => []),
  42. ),
  43. );
  44. return $items;
  45. }
  46. /**
  47. * Redirect to the JBrowse Instance.
  48. */
  49. function tripal_jbrowse_page_page($genus, $species) {
  50. $instance = tripal_jbrowse_page_get_instance_id([
  51. 'genus' => $genus,
  52. 'species' => $species
  53. ],
  54. ['load_instance' => TRUE]);
  55. $query_params = tripal_jbrowse_mgmt_build_http_query($instance);
  56. $settings = tripal_jbrowse_mgmt_get_settings();
  57. $url = url($settings['link'],['query' => $query_params]);
  58. drupal_goto($url, array('external' => TRUE));
  59. return '';
  60. }