Project

General

Profile

« Previous | Next » 

Revision efbff4b3

Added by Andreas Kohlbecker over 5 years ago

ref #7835 first version of taxonGraph search block implemented

  • registration search page with tabs for filter search and taxon graph search
  • changing the search page path was needed

View differences:

modules/cdm_dataportal/cdm_dataportal.search.php
5 5
 */
6 6

  
7 7
define("SESSION_KEY_SEARCH_REGISTRATION_FILTER", "SESSION_KEY_SEARCH_REGISTRATION_FILTER");
8
define('SESSION_KEY_SEARCH_TAXONGRAPH_FOR_REGISTRATION_FILTER', 'SESSION_KEY_SEARCH_TAXONGRAPH_FOR_REGISTRATION_FILTER');
8 9

  
9 10
/**
10 11
 * Returns a Drupal path to a search form for a CDM webservice.
......
670 671

  
671 672

  
672 673
/**
673
 * Sends a request to search for registrations to the cdm server.
674
 * Sends a request for a registrations filter search to the cdm server.
674 675
 */
675
function cdm_dataportal_search_registrations_execute()
676
function cdm_dataportal_search_registrations_filter_execute()
676 677
{
677 678

  
678 679
  static $query_param_map = array(
......
681 682
    'type_designation_status' => 'typeDesignationStatusUuids',
682 683
  );
683 684

  
684
  // Read the query parameters from $_REQUEST and add additional query
685
  // parameters if necessary.
686
  $request_params = array();
687

  
688
  $request = remove_drupal_form_params($_REQUEST);
689

  
690
  if(count($request) > 0){
691
    $_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER] = $request;
692
    foreach ($query_param_map as $filter_key => $query_param){
693
      if (isset($request[$filter_key])) {
694
        $request_params[$query_param] = $request[$filter_key];
695
      }
696
    }
697
    if(isset($request['pager']['pageNumber'])){
698
      $request_params['pageNumber'] = $request['pager']['pageNumber'];
699
    }
700
  }
701

  
702
  if(count($request_params) == 0 && isset($_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER])){
703
    foreach ($query_param_map as $filter_key => $query_param){
704
      if (isset($_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER][$filter_key])) {
705
        $request_params[$query_param] = $_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER][$filter_key];
706
      }
707
    }
708
    if(isset($_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER]['pager']['pageNumber'])){
709
      $request_params['pageNumber'] = $_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER]['pager']['pageNumber'];
710
    }
711
  }
685
  $session_key = SESSION_KEY_SEARCH_REGISTRATION_FILTER;
686
  $request_params = cdm_dataportal_search_request_params($session_key, $query_param_map);
712 687

  
713 688
  // cleanup
714 689
  if(isset($request_params['typeDesignationStatusUuids'])){
......
732 707
}
733 708

  
734 709
/**
710
 * Sends a request for a registrations taxongraph search to the cdm server.
711
 */
712
function cdm_dataportal_search_registrations_taxongraph_execute()
713
{
714

  
715
  static $query_param_map = array(
716
    'taxon_name'=> 'taxonNameFilter'
717
  );
718

  
719
  $session_key = SESSION_KEY_SEARCH_TAXONGRAPH_FOR_REGISTRATION_FILTER;
720
  $request_params = cdm_dataportal_search_request_params($session_key, $query_param_map);
721

  
722
  // cleanup
723
  if(isset($request_params['taxonNameFilter'])){
724
    // trim and remove empty taxon name query strings
725
    $request_params['taxonNameFilter'] = trim($request_params['taxonNameFilter']);
726
    if(!$request_params['taxonNameFilter']){
727
      unset($request_params['taxonNameFilter']);
728
    }
729
  }
730

  
731
  $registration_pager = cdm_ws_get('registrationDTO/findInTaxonGraph', NULL, queryString($request_params));
732

  
733
  return $registration_pager;
734
}
735

  
736
/**
737
 * @param $session_key
738
 * @param $query_param_map
739
 * @return array
740
 */
741
function cdm_dataportal_search_request_params($session_key, $query_param_map)
742
{
743
  // Read the query parameters from $_REQUEST and add additional query
744
  // parameters if necessary.
745
  $request_params = array();
746

  
747
  $request = remove_drupal_form_params($_REQUEST);
748

  
749
  if (count($request) > 0) {
750
    $_SESSION['cdm'][$session_key] = $request;
751
    foreach ($query_param_map as $filter_key => $query_param) {
752
      if (isset($request[$filter_key])) {
753
        $request_params[$query_param] = $request[$filter_key];
754
      }
755
    }
756
    if (isset($request['pager']['pageNumber'])) {
757
      $request_params['pageNumber'] = $request['pager']['pageNumber'];
758
    }
759
  }
760

  
761
  if (count($request_params) == 0 && isset($_SESSION['cdm'][$session_key])) {
762
    foreach ($query_param_map as $filter_key => $query_param) {
763
      if (isset($_SESSION['cdm'][$session_key][$filter_key])) {
764
        $request_params[$query_param] = $_SESSION['cdm'][$session_key][$filter_key];
765
      }
766
    }
767
    if (isset($_SESSION['cdm'][$session_key]['pager']['pageNumber'])) {
768
      $request_params['pageNumber'] = $_SESSION['cdm'][$session_key]['pager']['pageNumber'];
769
    }
770
  }
771
  return $request_params;
772
}
773

  
774
/**
735 775
 * Transforms the termDTO tree into options array.
736 776
 *
737 777
 *   TermDto:
......
779 819
}
780 820

  
781 821

  
782
function cdm_dataportal_search_registration_form($form, &$form_state) {
822
function cdm_dataportal_search_registration_filter_form($form, &$form_state) {
783 823

  
784 824
  static $filter_presets_empty = array(
785 825
    'identifier'=> null,
......
789 829

  
790 830
  _add_font_awesome_font();
791 831

  
832
  if($_REQUEST['q'] == 'cdm_dataportal/registration-search/filter' || $_REQUEST['q'] == 'cdm_dataportal/registration-search'){
833
    // read the $request_params only if it was send from this form
834
    $request_params = remove_drupal_form_params($_REQUEST);
835
  } else {
836
    $request_params = array();
837
  }
792 838
  $filter_presets = (isset($_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER]) ? $_SESSION['cdm'][SESSION_KEY_SEARCH_REGISTRATION_FILTER] : array());
793
  $filter_presets = array_merge($filter_presets_empty, $filter_presets, remove_drupal_form_params($_REQUEST));
794
  $form['#action'] =  url('/cdm_dataportal/search/registration/');
839
  $filter_presets = array_merge($filter_presets_empty, $filter_presets, $request_params);
840
  $form['#action'] =  url('/cdm_dataportal/registration-search/filter');
795 841
  $form['#method'] = 'get';
796 842
  $form['#attributes'] = array('class' => array('search-filter'));
797 843
  $form['identifier'] = array(
......
828 874
}
829 875

  
830 876

  
877
function cdm_dataportal_search_registration_taxongraph_form($form, &$form_state) {
878

  
879
  static $filter_presets_empty = array(
880
    'taxon_name'=> null
881
  );
882

  
883
  _add_font_awesome_font();
884

  
885
  if($_REQUEST['q']  == 'cdm_dataportal/registration-search/taxongraph'){
886
    // read the $request_params only if it was send from this form
887
    $request_params = remove_drupal_form_params($_REQUEST);
888
  } else {
889
    $request_params = array();
890
  }
891
  $filter_presets = (isset($_SESSION['cdm'][SESSION_KEY_SEARCH_TAXONGRAPH_FOR_REGISTRATION_FILTER]) ? $_SESSION['cdm'][SESSION_KEY_SEARCH_TAXONGRAPH_FOR_REGISTRATION_FILTER] : array());
892
  $filter_presets = array_merge($filter_presets_empty, $filter_presets, $request_params);
893

  
894
  $form['#action'] =  url('/cdm_dataportal/registration-search/taxongraph');
895
  $form['#method'] = 'get';
896
  $form['#attributes'] = array('class' => array('search-filter'));
897
  $form['taxon_name'] = array(
898
    '#type' => 'textfield',
899
    '#title' => t('Scientific name'),
900
    '#default_value' => $filter_presets['taxon_name'],
901
    '#size' => 20,
902
    '#maxlength' => 128
903
  );
904

  
905
  $form['submit'] = array(
906
    '#type' => 'submit',
907
    '#attributes' => array('class' => array('fa-icon'), 'title' => t('Search')),
908
    '#value' => decode_entities(''), // fontawesome search icon
909
//    '#prefix' => "<div class=\"form-item\"><label>&nbsp</label>",
910
//    '#suffix' => "</div>"
911

  
912
  );
913
  return $form;
914
}
915

  
831 916
/**
832 917
 * Compose the result set of a registration search from a pager object
833 918
 *
......
859 944
        );
860 945
      ;
861 946
    }
947

  
862 948
    $render_array['items'] = $items_render_array;
863 949
    $render_array['pager'] =  markup_to_render_array(theme('cdm_pager', array(
864 950
          'pager' => $registration_pager,
865
          'path' => "cdm_dataportal/search/registration",
951
          'path' => $_REQUEST['q'], // stay on same page
866 952
          'parameters' => $_REQUEST,
867 953
        )));
868 954

  

Also available in: Unified diff