/**
     * Get the list of parameters for this form.
     * @return array List of parameters that this form requires.
     */
    public static function get_parameters()
    {
        $r = array_merge(iform_map_get_map_parameters(), iform_report_get_minimal_report_parameters(), array(array('name' => 'mapping_report_name', 'caption' => 'Report for map output', 'description' => 'Report used to obtain the output for the map. Should have the same parameters as the grid report but only needs to ' . 'return the occurrence id, geom and any shape formatting.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'library/occurrences/filterable_explore_list_mapping'), array('name' => 'mapping_report_name_lores', 'caption' => 'Report for lo res map output', 'description' => 'Report used to obtain the output for the map at low zoom levels.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'library/occurrences/filterable_explore_list_mapping_lores'), array('name' => 'record_details_report', 'caption' => 'Report for record details', 'description' => 'Report used to obtain the details of a record. See reports_for_prebuilt_forms/verification_3/record_data.xml for an example.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'reports_for_prebuilt_forms/verification_3/record_data'), array('name' => 'record_attrs_report', 'caption' => 'Report for record attributes', 'description' => 'Report used to obtain the custom attributes of a record. See reports_for_prebuilt_forms/verification_3/record_data_attributes.xml for an example.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'reports_for_prebuilt_forms/verification_3/record_data_attributes'), array('name' => 'columns_config', 'caption' => 'Columns Configuration', 'description' => 'Define a list of columns with various configuration options when you want to override the ' . 'default output of the report.', 'type' => 'jsonwidget', 'default' => '[]', 'schema' => '{
    "type":"seq",
    "title":"Columns List",
    "sequence":
    [
      {
        "type":"map",
        "title":"Column",
        "mapping": {
          "fieldname": {"type":"str","desc":"Name of the field to output in this column. Does not need to be specified when using the template option."},
          "display": {"type":"str","desc":"Caption of the column, which defaults to the fieldname if not specified."},
          "actions": {
            "type":"seq",
            "title":"Actions List",
            "sequence": [{
              "type":"map",
              "title":"Actions",
              "desc":"List of actions to make available for each row in the grid.",
              "mapping": {
                "caption": {"type":"str","desc":"Display caption for the action\'s link."},
                "visibility_field": {"type":"str","desc":"Optional name of a field in the data which contains true or false to define the visibility of this action."},
                "url": {"type":"str","desc":"A url that the action link will point to, unless overridden by JavaScript. The url can contain tokens which ' . 'will be subsituted for field values, e.g. for http://www.example.com/image/{id} the {id} is replaced with a field called id in the current row. ' . 'Can also use the subsitution {currentUrl} to link back to the current page, {rootFolder} to represent the folder on the server that the current PHP page is running from, and ' . '{imageFolder} for the image upload folder"},
                "urlParams": {
                  "type":"map",
                  "subtype":"str",
                  "desc":"List of parameters to append to the URL link, with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
                },
                "class": {"type":"str","desc":"CSS class to attach to the action link."},
                "javascript": {"type":"str","desc":"JavaScript that will be run when the link is clicked. Can contain field value substitutions ' . 'such as {id} which is replaced by the value of the id field for the current row. Because the javascript may pass the field values as parameters to functions, ' . 'there are escaped versions of each of the replacements available for the javascript action type. Add -escape-quote or ' . '-escape-dblquote to the fieldname. For example this would be valid in the action javascript: foo(\\"{bar-escape-dblquote}\\"); ' . 'even if the field value contains a double quote which would have broken the syntax."}
              }
            }]
          },
          "visible": {"type":"bool","desc":"Should this column be shown? Hidden columns can still be used in templates or actions."},
          "template": {"type":"str","desc":"Allows you to create columns that contain dynamic content using a template, rather than just the output ' . 'of a field. The template text can contain fieldnames in braces, which will be replaced by the respective field values. ' . 'Note that template columns cannot be sorted by clicking grid headers." }
        }
      }
    ]
  }', 'group' => 'Report Settings', 'required' => false), array('name' => 'verifiers_mapping', 'caption' => 'Verifiers Mapping', 'description' => 'Provide either the ID of a single Indicia user to act as the verifier, or provide a comma separated list ' . 'of <drupal user id>=<indicia user id> pairs to define the mapping from Drupal to Indicia users. E.g. ' . '"1=2,2=3. If the Easy Login feature is enabled then this setting is ignored, as every Drupal user has their ' . 'own warehouse User ID.', 'type' => 'textarea', 'default' => 1), array('name' => 'email_subject_send_to_verifier', 'caption' => 'Send to Expert Email Subject', 'description' => 'Default subject for the send to expert email. Replacements allowed include %taxon% and %id%.', 'type' => 'string', 'default' => 'Record of %taxon% requires verification (ID:%id%)', 'group' => 'Verifier emails'), array('name' => 'email_body_send_to_verifier', 'caption' => 'Send to Expert Email Body', 'description' => 'Default body for the send to expert email. Replacements allowed include %taxon%, %id% and %record% which is replaced to give details of the record.', 'type' => 'textarea', 'default' => 'The following record requires verification. Please reply to this mail with the word Verified, Rejected or Query ' . 'in the email body, followed by any comments you have including the proposed re-identification if relevant on the next line.' . "\n\n%record%", 'group' => 'Verifier emails'), array('name' => 'email_subject_send_to_recorder', 'caption' => 'Send to Recorder Email Subject', 'description' => 'Default subject for the send to recorder email. Replacements allowed include %taxon% and %id%.', 'type' => 'string', 'default' => 'Record of %taxon% requires confirmation (ID:%id%)', 'group' => 'Recorder emails'), array('name' => 'email_body_send_to_recorder', 'caption' => 'Send to Recorder Email Body', 'description' => 'Default body for the send to recorder email. Replacements allowed include %taxon%, %id% and %record% which is replaced to give details of the record.', 'type' => 'textarea', 'default' => 'The following record requires confirmation. Please could you reply to this email stating how confident you are that the record is correct ' . 'and any other information you have which may help to confirm this.' . "\n\n%record%", 'group' => 'Recorder emails'), array('name' => 'auto_discard_rows', 'caption' => 'Automatically remove rows', 'description' => 'If checked, then when changing the status of a record the record is removed from the grid if it no ' . 'longer matches the grid filter.', 'type' => 'checkbox', 'default' => 'true', 'required' => false), array('name' => 'show_map', 'caption' => 'Show map of the currently selected records', 'description' => 'If checked, then a map of currently selected records is shown. This lets the verifier do things like visually spot outliers to check.', 'type' => 'checkbox', 'default' => 'true', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_feature_type', 'caption' => 'Feature type for Indicia species layer', 'description' => 'Set to the name of a feature type on GeoServer that will be loaded to display the Indicia species data for the selected record. ' . 'Leave empty for no layer. Normally this should be set to a feature type that exposes the cache_occurrences view.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_ds_filter_field', 'caption' => 'Filter method', 'description' => 'Method of filtering taxa to display the species layer.', 'type' => 'select', 'options' => array('taxon_meaning_id' => 'Meaning ID', 'taxon_external_key' => 'External Key'), 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_filter_field', 'caption' => 'Field to filter on', 'description' => 'Set to the name of a field exposed by the feature type which can be used to filter for the species data to display. Examples include ' . 'taxon_external_key, taxon_meaning_id.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_sld', 'caption' => 'SLD file from GeoServer for Indicia species layer', 'description' => 'Set to the name of an SLD file available on the GeoServer for the rendering of the Indicia species layer, or leave blank for default.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'additional_wms_species_layer_title', 'caption' => 'Additional WMS layer title', 'description' => 'Title of an additional species layer to load from a WMS service', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'additional_wms_species_layer_url', 'caption' => 'Additional WMS layer URL', 'description' => 'URL of an additional species layer to load from a WMS service. {external_key} is replaced by the species external key.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'additional_wms_species_layer_settings', 'caption' => 'Additional WMS layer settings', 'description' => 'JSON settings object for an additional species layer to load from a WMS service. {external_key} is replaced by the species external key.', 'type' => 'textarea', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'additional_wms_species_layer_ol_settings', 'caption' => 'Additional WMS layer OpenLayers settings', 'description' => 'JSON settings object for the Open Layers settings object for an additional species layer to load from a WMS service.', 'type' => 'textarea', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'view_records_report_path', 'caption' => 'View records report path', 'description' => 'Path to page used to show a list of records, e.g. when clicking on the record counts on the Experience tab', 'type' => 'string', 'required' => 'false'), array('name' => 'clear_verification_task_notifications', 'caption' => 'Clear verification task notifications?', 'description' => 'Automatically clear any verification task notifications when the user opens the verification screen.', 'type' => 'boolean', 'group' => 'Notification Settings', 'default' => false, 'required' => 'false')));
        // Set default values for the report
        foreach ($r as &$param) {
            if ($param['name'] == 'report_name') {
                $param['default'] = 'library/occurrences/verification_list_3';
            } elseif ($param['name'] == 'param_presets') {
                $param['default'] = 'survey_id=
date_from=
date_to=
smpattrs=
occattrs=';
            } elseif ($param['name'] == 'param_defaults') {
                $param['default'] = 'id=
record_status=C
records=unverified
searchArea=
idlist=';
            }
        }
        return $r;
    }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     // When deployed set map_height to 490
     // map_width will be overridden to auto
     // openlayers options needs to be filled in with projection {"projection":"900913"}
     return array_merge(iform_map_get_map_parameters(), iform_user_get_user_parameters(), array(array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'locationLayer', 'caption' => 'Location Layer Definition', 'description' => 'Comma separated list of option definitions for the location layer', 'type' => 'string', 'group' => 'Maps', 'maxlength' => 200), array('name' => 'map_projection', 'caption' => 'Map Projection (EPSG code)', 'description' => 'EPSG code to use for the map. If using 900913 then the preset layers such as Google maps will work, but for any other ' . 'projection make sure that your base layers support it.', 'type' => 'string', 'default' => '900913', 'group' => 'Maps'), array('name' => 'sample_walk_direction_id', 'caption' => 'Sample Walk Direction Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Walk Direction.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_reliability_id', 'caption' => 'Sample Data Reliability Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Data Reliability.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_visit_number_id', 'caption' => 'Sample Visit Number Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Visit Number.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_wind_id', 'caption' => 'Sample Wind Force Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Wind Force.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_precipitation_id', 'caption' => 'Sample Precipitation Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Precipitation.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_temperature_id', 'caption' => 'Sample Temperature Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Temperature.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_cloud_id', 'caption' => 'Sample Cloud Cover Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Cloud Cover.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_start_time_id', 'caption' => 'Sample Start Time Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the Start Time.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_end_time_id', 'caption' => 'Sample End Time Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for the End Time.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'sample_closure_id', 'caption' => 'Sample Closed Custom Attribute ID', 'description' => 'The Indicia ID for the Sample Custom Attribute for Closure: this is used to determine whether the sample is editable.', 'group' => 'Sample Attributes', 'type' => 'int'), array('name' => 'list_id', 'caption' => 'Species List ID', 'description' => 'The Indicia ID for the species list that species can be selected from.', 'type' => 'int'), array('name' => 'occurrence_confidence_id', 'caption' => 'Occurrence Confidence Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for the Data Confidence.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'occurrence_count_id', 'caption' => 'Occurrence Count Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for the Count of the particular species.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'occurrence_approximation_id', 'caption' => 'Occurrence Approximation Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for whether the count is approximate.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'occurrence_territorial_id', 'caption' => 'Occurrence Territorial Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for whether the species is territorial.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'occurrence_atlas_code_id', 'caption' => 'Occurrence Atlas Code Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for Altas Code.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'occurrence_overflying_id', 'caption' => 'Occurrence Overflying Custom Attribute ID', 'description' => 'The Indicia ID for the Occurrence Custom Attribute for whether this sighting was flying overhead.', 'group' => 'Occurrence Attributes', 'type' => 'int'), array('name' => 'on_edit_survey_nav', 'caption' => 'Navigation when choosing a survey to edit', 'description' => 'Which Tab to display first when editing a survey (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'survey'), array('name' => 'on_save_survey_nav', 'caption' => 'Navigation when saving a survey', 'description' => 'Which Tab to display after saving a survey (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'occurrence'), array('name' => 'on_save_occurrence_nav', 'caption' => 'Navigation when saving an occurrence', 'description' => 'Which Tab to display after saving an occurrence (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'occurrence')));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     // When deployed set map_height to 490
     // map_width will be overridden to auto
     // openlayers options needs to be filled in with projection {"projection":"900913"}
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'locationLayer', 'caption' => 'Location Layer Definition', 'description' => 'Comma separated list of option definitions for the location layer', 'type' => 'string', 'group' => 'Maps', 'maxlength' => 200), array('name' => 'map_projection', 'caption' => 'Map Projection (EPSG code)', 'description' => 'EPSG code to use for the map. If using 900913 then the preset layers such as Google maps will work, but for any other ' . 'projection make sure that your base layers support it.', 'type' => 'string', 'default' => '900913', 'group' => 'Maps'), array('name' => 'list_id', 'caption' => 'Species List ID', 'description' => 'The Indicia ID for the species list that species can be selected from.', 'type' => 'int'), array('name' => 'on_edit_survey_nav', 'caption' => 'Navigation when choosing a survey to edit', 'description' => 'Which Tab to display first when editing a survey (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'survey'), array('name' => 'on_save_survey_nav', 'caption' => 'Navigation when saving a survey', 'description' => 'Which Tab to display after saving a survey (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'occurrence'), array('name' => 'on_save_occurrence_nav', 'caption' => 'Navigation when saving an occurrence', 'description' => 'Which Tab to display after saving an occurrence (survey, occurrence, list)', 'group' => 'Navigation', 'type' => 'string', 'default' => 'occurrence')));
 }
    /**
     * Get the list of parameters for this form.
     * @return array List of parameters that this form requires.
     */
    public static function get_parameters()
    {
        $r = array_merge(iform_map_get_map_parameters(), iform_report_get_minimal_report_parameters(), array(array('name' => 'mapping_report_name', 'caption' => 'Report for map output', 'description' => 'Report used to obtain the output for the map. Should have the same parameters as the grid report but only needs to ' . 'return the sample id, geom and any shape formatting.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'library/samples/filterable_explore_list_mapping'), array('name' => 'record_details_report', 'caption' => 'Report for record details', 'description' => 'Report used to obtain the details of a sample. See reports_for_prebuilt_forms/verification_3/record_data.xml for an example.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'reports_for_prebuilt_forms/verification_samples/record_data'), array('name' => 'record_attrs_report', 'caption' => 'Report for record attributes', 'description' => 'Report used to obtain the custom attributes of a record. See reports_for_prebuilt_forms/verification_3/record_data_attributes.xml for an example.', 'type' => 'report_helper::report_picker', 'group' => 'Report Settings', 'default' => 'reports_for_prebuilt_forms/verification_samples/record_data_attributes'), array('name' => 'columns_config', 'caption' => 'Columns Configuration', 'description' => 'Define a list of columns with various configuration options when you want to override the ' . 'default output of the report.', 'type' => 'jsonwidget', 'default' => '[]', 'schema' => '{
    "type":"seq",
    "title":"Columns List",
    "sequence":
    [
      {
        "type":"map",
        "title":"Column",
        "mapping": {
          "fieldname": {"type":"str","desc":"Name of the field to output in this column. Does not need to be specified when using the template option."},
          "display": {"type":"str","desc":"Caption of the column, which defaults to the fieldname if not specified."},
          "actions": {
            "type":"seq",
            "title":"Actions List",
            "sequence": [{
              "type":"map",
              "title":"Actions",
              "desc":"List of actions to make available for each row in the grid.",
              "mapping": {
                "caption": {"type":"str","desc":"Display caption for the action\'s link."},
                "visibility_field": {"type":"str","desc":"Optional name of a field in the data which contains true or false to define the visibility of this action."},
                "url": {"type":"str","desc":"A url that the action link will point to, unless overridden by JavaScript. The url can contain tokens which ' . 'will be subsituted for field values, e.g. for http://www.example.com/image/{id} the {id} is replaced with a field called id in the current row. ' . 'Can also use the subsitution {currentUrl} to link back to the current page, {rootFolder} to represent the folder on the server that the current PHP page is running from, and ' . '{imageFolder} for the image upload folder"},
                "urlParams": {
                  "type":"map",
                  "subtype":"str",
                  "desc":"List of parameters to append to the URL link, with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
                },
                "class": {"type":"str","desc":"CSS class to attach to the action link."},
                "javascript": {"type":"str","desc":"JavaScript that will be run when the link is clicked. Can contain field value substitutions ' . 'such as {id} which is replaced by the value of the id field for the current row. Because the javascript may pass the field values as parameters to functions, ' . 'there are escaped versions of each of the replacements available for the javascript action type. Add -escape-quote or ' . '-escape-dblquote to the fieldname. For example this would be valid in the action javascript: foo(\\"{bar-escape-dblquote}\\"); ' . 'even if the field value contains a double quote which would have broken the syntax."}
              }
            }]
          },
          "visible": {"type":"bool","desc":"Should this column be shown? Hidden columns can still be used in templates or actions."},
          "template": {"type":"str","desc":"Allows you to create columns that contain dynamic content using a template, rather than just the output ' . 'of a field. The template text can contain fieldnames in braces, which will be replaced by the respective field values. ' . 'Note that template columns cannot be sorted by clicking grid headers." }
        }
      }
    ]
  }', 'group' => 'Report Settings', 'required' => false), array('name' => 'email_subject_send_to_verifier', 'caption' => 'Send to Expert Email Subject', 'description' => 'Default subject for the send to expert email. Replacements allowed include %id%.', 'type' => 'string', 'default' => 'Requesting your opinion on a sample (ID:%id%)', 'group' => 'Verifier emails'), array('name' => 'email_body_send_to_verifier', 'caption' => 'Send to Expert Email Body', 'description' => 'Default body for the send to expert email. Replacements allowed include %id% and %record% which is replaced to give details of the record.', 'type' => 'textarea', 'default' => 'We would appreciate your opinion on the following record. Please reply to this mail with "accepted", "not accepted" or "query" ' . 'in the email body, followed by any comments you have including the proposed re-identification if relevant on the next line.' . "\n\n%record%", 'group' => 'Verifier emails'), array('name' => 'email_subject_send_to_recorder', 'caption' => 'Send to Recorder Email Subject', 'description' => 'Default subject for the send query to recorder email. Replacements allowed include %id%.', 'type' => 'string', 'default' => 'Query on your sample (ID:%id%)', 'group' => 'Recorder emails'), array('name' => 'email_body_send_to_recorder', 'caption' => 'Send to Recorder Email Body', 'description' => 'Default body for the send to recorder email. Replacements allowed include %id% and %record% which is replaced to give details of the record.', 'type' => 'textarea', 'default' => 'The following record requires confirmation. Please could you reply to this email stating how confident you are that the record is correct ' . 'and any other information you have which may help to confirm this.' . "\n\n%record%", 'group' => 'Recorder emails'), array('name' => 'auto_discard_rows', 'caption' => 'Automatically remove rows', 'description' => 'If checked, then when changing the status of a record the record is removed from the grid if it no ' . 'longer matches the grid filter.', 'type' => 'checkbox', 'default' => 'true', 'required' => false), array('name' => 'indexed_location_type_ids', 'caption' => 'Indexed location type IDs', 'description' => 'Comma separated list of location type IDs for location layers that are available to search against.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'other_location_type_ids', 'caption' => 'Other location type IDs', 'description' => 'Comma separated list of location type IDs for location layers that are available to search against.', 'type' => 'text_input', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'clear_verification_task_notifications', 'caption' => 'Clear verification task notifications?', 'description' => 'Automatically clear any verification task notifications when the user opens the verification screen.', 'type' => 'boolean', 'group' => 'Notification Settings', 'default' => false, 'required' => 'false')));
        // Set default values for the report
        foreach ($r as &$param) {
            if ($param['name'] == 'report_name') {
                $param['default'] = 'library/samples/filterable_explore_list';
            } elseif ($param['name'] == 'param_presets') {
                $param['default'] = 'survey_id=
date_from=
date_to=
smpattrs=';
            } elseif ($param['name'] == 'param_defaults') {
                $param['default'] = 'id=
record_status=C
records=unverified
searchArea=
idlist=';
            }
        }
        return $r;
    }
    /**
     * Get the list of parameters for this form.
     * @return array List of parameters that this form requires.
     * @todo: Implement this method
     */
    public static function get_parameters()
    {
        $r = array_merge(iform_map_get_map_parameters(), iform_report_get_minimal_report_parameters(), array(array('name' => 'downloadOwnDataOnly', 'caption' => 'Download own data only', 'description' => 'If ticked then the user is only allowed to download data when showing just their own data.', 'type' => 'checkbox', 'default' => false, 'required' => false), array('name' => 'includeEditLink', 'caption' => 'Include edit link', 'description' => 'Include an edit link for each row that was input by the current user', 'type' => 'checkbox', 'default' => true, 'required' => false), array('name' => 'includeEditLinkPath', 'caption' => 'Path to page used for edits', 'description' => 'The path to the page used for edits. This is just the site relative path, e.g. http://www.example.com/index.php?q=enter-records needs ' . 'to be input as just enter-records. The path is called with the id of the record in a parameter called occurrence_id.', 'type' => 'text_input', 'default' => '', 'required' => false), array('name' => 'columns_config', 'caption' => 'Columns Configuration', 'description' => 'Define a list of columns with various configuration options when you want to override the ' . 'default output of the report.', 'type' => 'jsonwidget', 'schema' => '{
  "type":"seq",
  "title":"Columns List",
  "sequence":
  [
    {
      "type":"map",
      "title":"Column",
      "mapping": {
        "fieldname": {"type":"str","desc":"Name of the field to output in this column. Does not need to be specified when using the template option."},
        "display": {"type":"str","desc":"Caption of the column, which defaults to the fieldname if not specified."},
        "actions": {
          "type":"seq",
          "title":"Actions List",
          "sequence": [{
            "type":"map",
            "title":"Actions",
            "desc":"List of actions to make available for each row in the grid.",
            "mapping": {
              "caption": {"type":"str","desc":"Display caption for the action\'s link."},
              "visibility_field": {"type":"str","desc":"Optional name of a field in the data which contains true or false to define the visibility of this action."},
              "img": {"type":"str","desc":"Set img to the path to an image to use an image for the action instead of a text caption - the caption ' . 'then becomes the image\'s title. The image path can contain {rootFolder} to be replaced by the root folder of the site, in this ' . 'case it excludes the path parameter used in Drupal when dirty URLs are used (since this is a direct link to a URL)."},
              "url": {"type":"str","desc":"A url that the action link will point to, unless overridden by JavaScript. The url can contain tokens which ' . 'will be subsituted for field values, e.g. for http://www.example.com/image/{id} the {id} is replaced with a field called id in the current row. ' . 'Can also use the subsitution {currentUrl} to link back to the current page, {rootFolder} to represent the folder on the server that the current PHP page is running from, and ' . '{imageFolder} for the image upload folder"},
              "urlParams": {
                "type":"map",
                "subtype":"str",
                "desc":"List of parameters to append to the URL link, with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
              },
              "class": {"type":"str","desc":"CSS class to attach to the action link."},
              "javascript": {"type":"str","desc":"JavaScript that will be run when the link is clicked. Can contain field value substitutions ' . 'such as {id} which is replaced by the value of the id field for the current row. Because the javascript may pass the field values as parameters to functions, ' . 'there are escaped versions of each of the replacements available for the javascript action type. Add -escape-quote or ' . '-escape-dblquote to the fieldname. For example this would be valid in the action javascript: foo(\\"{bar-escape-dblquote}\\"); ' . 'even if the field value contains a double quote which would have broken the syntax."}
            }
          }]
        },
        "visible": {"type":"bool","desc":"Should this column be shown? Hidden columns can still be used in templates or actions."},
        "template": {"type":"txt","desc":"Allows you to create columns that contain dynamic content using a template, rather than just the output ' . 'of a field. The template text can contain fieldnames in braces, which will be replaced by the respective field values. ' . 'Note that template columns cannot be sorted by clicking grid headers." }
      }
    }
  ]
}', 'required' => false, 'group' => 'Report Settings')));
        // @todo Set the default report name
        foreach ($r as &$param) {
            if ($param['name'] === 'report_name') {
                $param['default'] = 'library/occurrences/explore_list';
                $param['description'] .= '<br/>The report used must meet a set of criteria to be used for this form, as illustrated by the library/occurrences/explore_list ' . 'report. The report should have the following columns:<br/>' . '<strong>belongs_to_user</strong> - a boolean indicating if the record belongs to (i.e. is editable by) the logged in user.<br/>' . '<strong>certainty</strong> - text output which identifies the certainty of the record if known. This is appended to the word ' . 'certainty to make a class which is attached to the row HTML, allowing you to use CSS to style the row output. E.g. if the report ' . 'outputs C in this column then the row HTML will have a class certaintyC.<br/>' . '<br/>The report should have the following parameters:<br/>' . '<strong>location_id</strong> - Warehouse ID of the user\'s preferred recording location passed automatically from the user\'s account. Only applied if own_locality is 1.<br/>' . '<strong>ownLocality</strong> - Boolean (1 or 0) parameter which defines if the output should be filtered to the contents of the location identified by location_id.<br/>' . '<strong>taxon_groups</strong> Takes a comma separated list of taxon_group_ids as a string suitable for insertion into an SQL in (...) clause. ' . 'Will be passed the user\'s preferred species groups from their user account if the Easy Login feature is installed. Only applied if ownGroups is 1.<br/>' . '<strong>ownGroups</strong> - Boolean (1 or 0) parameter which defines if the output should be filtered to the contents of the taxon groups identified by taxon_groups.<br/>' . '<strong>currentUser</strong> Warehouse User ID of the logged in user, used to filter records to their own data. Only applied if ownData is 1.<br/>' . '<strong>ownData</strong> - Boolean (1 or 0) parameter which defines if the output should be filtered to the user\'s own records.';
            } elseif ($param['name'] === 'param_presets') {
                $param['default'] = "smpattrs=\noccattrs=\nlocation_id={profile_location}\ntaxon_groups={profile_taxon_groups}\ncurrentUser={profile_indicia_user_id}";
            } elseif ($param['name'] === 'param_defaults') {
                $param['default'] = "idlist=\nsearchArea=";
            } elseif ($param['name'] === 'standard_controls') {
                $param['default'] = "layerSwitcher\npanZoomBar";
            }
        }
        return $r;
    }
    /** 
     * Return an array of parameters for the edit tab. 
     * @return array The parameters for the form.
     */
    public static function get_parameters()
    {
        $retVal = array_merge(iform_map_get_map_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'default' => 'one_page', 'group' => 'User Interface'), array('name' => 'fields', 'caption' => 'Fields to include or exclude', 'description' => 'List of data fields to hide, one per line.' . 'Type in the field name as seen exactly in the Species Details section. For custom attributes you should use the system function values ' . 'to filter instead of the caption if defined below.', 'type' => 'textarea', 'required' => false, 'default' => '', 'group' => 'Fields for Species details'), array('name' => 'operator', 'caption' => 'Include or exclude', 'description' => "Do you want to include only the list of fields you've defined, or exclude them?", 'type' => 'select', 'options' => array('in' => 'Include', 'not in' => 'Exclude'), 'default' => 'not in', 'group' => 'Fields for Species details'), array('name' => 'testagainst', 'caption' => 'Test attributes against', 'description' => 'For custom attributes, do you want to filter the list to show using the caption or the system function? If the latter, then ' . 'any custom attributes referred to in the fields list above should be referred to by their system function which might be one of: email, ' . 'cms_user_id, cms_username, first_name, last_name, full_name, biotope, sex_stage, sex_stage_count, certainty, det_first_name, det_last_name.', 'type' => 'select', 'options' => array('caption' => 'Caption', 'system_function' => 'System Function'), 'default' => 'caption', 'group' => 'Fields for Species details'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component must be placed on a new line. <br/>' . "The following types of component can be specified. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[speciesdetails]</strong> - displays information relating to the occurrence and its sample<br/>" . "&nbsp;&nbsp;<strong>[explore]</strong> - a button “Explore this species' records” which takes you to explore all records, filtered to the species.<br/>" . "&nbsp;&nbsp;<strong>[photos]</strong> - photos associated with the occurrence<br/>" . "&nbsp;&nbsp;<strong>[map]</strong> - a map that links to the spatial reference and location<br/>" . "<strong>=tab/page name=</strong> is used to specify the name of a tab or wizard page (alpha-numeric characters only). " . "If the page interface type is set to one page, then each tab/page name is displayed as a seperate section on the page. " . "Note that in one page mode, the tab/page names are not displayed on the screen.<br/>" . "<strong>|</strong> is used to split a tab/page/section into two columns, place a [control name] on the previous line and following line to split.<br/>", 'type' => 'textarea', 'default' => '
=General=
[speciesdetails]
[photos]
[explore]
| 
[map]', 'group' => 'User Interface'), array('name' => 'explore_url', 'caption' => 'Explore URL', 'description' => 'When you click on the Explore this species\' records button you are taken to this URL. Use {rootfolder} as a replacement ' . 'token for the site\'s root URL.', 'type' => 'string', 'required' => false, 'default' => '', 'group' => 'User Interface'), array('name' => 'explore_param_name', 'caption' => 'Explore Parameter Name', 'description' => 'Name of the parameter added to the Explore URL to pass through the taxon_meaning_id of the species being explored. ' . 'The default provided (filter-taxon_meaning_list) is correct if your report uses the standard parameters configuration.', 'type' => 'string', 'required' => false, 'default' => 'filter-taxon_meaning_list', 'group' => 'User Interface'), array('name' => 'include_layer_list', 'caption' => 'Include Legend', 'description' => 'Should a legend be shown on the page?', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Other Map Settings'), array('name' => 'include_layer_list_switchers', 'caption' => 'Include Layer switchers', 'description' => 'Should the legend include checkboxes and/or radio buttons for controlling layer visibility?', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Other Map Settings'), array('name' => 'include_layer_list_types', 'caption' => 'Types of layer to include in legend', 'description' => 'Select which types of layer to include in the legend.', 'type' => 'select', 'options' => array('base,overlay' => 'All', 'base' => 'Base layers only', 'overlay' => 'Overlays only'), 'default' => 'base,overlay', 'group' => 'Other Map Settings'), array('name' => 'layer_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the species distribution map layer. Can contain replacement strings {species} or {survey}.', 'type' => 'textfield', 'group' => 'Distribution Layer'), array('name' => 'wms_feature_type', 'caption' => 'Feature Type', 'description' => 'Name of the feature type (layer) exposed in GeoServer to contain the occurrences. This must expose a taxon_meaning_id and a website_id attribute. ' . 'for the filtering. The detail_occurrences view is suitable for this purpose, though make sure you include the namespace, e.g. indicia:detail_occurrences. ' . 'The list of feature type names can be viewed by clicking on the Layer Preview link in the GeoServer installation.', 'type' => 'textfield', 'group' => 'Distribution Layer'), array('name' => 'wms_style', 'caption' => 'Style', 'description' => 'Name of the SLD style file that describes how the distribution points are shown. Leave blank if not sure.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer'), array('name' => 'cql_filter', 'caption' => 'Distribution layer filter.', 'description' => 'Any additional filter to apply to the loaded data, using the CQL format. For example "record_status<>\'R\'"', 'type' => 'textarea', 'group' => 'Distribution Layer', 'required' => false), array('name' => 'refresh_timer', 'caption' => 'Automatic reload seconds', 'description' => 'Set this value to the number of seconds you want to elapse before the report will be automatically reloaded, useful for ' . 'displaying live data updates at BioBlitzes. Combine this with Page to reload to define a sequence of pages that load in turn.', 'type' => 'int', 'required' => false), array('name' => 'load_on_refresh', 'caption' => 'Page to reload', 'description' => 'Provide the full URL of a page to reload after the number of seconds indicated above.', 'type' => 'string', 'required' => false)));
        return $retVal;
    }
Example #7
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $paramArray = array_merge(iform_map_get_map_parameters(), iform_report_get_minimal_report_parameters(), array(array('name' => 'first_year', 'caption' => 'First Year of Data', 'description' => 'Used to determine first year displayed in the year control. Final Year will be current year.', 'type' => 'int', 'group' => 'Controls'), array('name' => 'twinMaps', 'caption' => 'Twin Maps', 'description' => 'Display a second map, for data comparison.', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Controls'), array('name' => 'advancedUI', 'caption' => 'Advanced UI', 'description' => 'Advanced User Interface: use a slider for date and dot size controls, and a graphical button. Relies on jQuery_ui.', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Controls'), array('name' => 'dotSize', 'caption' => 'Dot Size', 'description' => 'Initial size in pixels of observation dots on map. Can be overriden by a control.', 'type' => 'select', 'options' => array('2' => '2', '3' => '3', '4' => '4', '5' => '5'), 'default' => '3', 'group' => 'Controls'), array('name' => 'numberOfDates', 'caption' => 'Number of Dates', 'description' => 'The maximum number of dates displayed on the X-axis. Used to prevent crowding. The minimum spacing is one date displayed per week. Date range is determined by the data.', 'type' => 'int', 'default' => 11, 'group' => 'Controls'), array('name' => 'frameRate', 'caption' => 'Animation Frame Rate', 'description' => 'Number of frames displayed per second.', 'type' => 'int', 'default' => 4, 'group' => 'Controls'), array('name' => 'triggerEvents', 'caption' => 'Event Definition', 'description' => 'JSON encode event definition: an array, one per event type, each with a "name" element, a "type" (either...), an "attr", and a "values"', 'type' => 'textarea', 'group' => 'Events')));
     $retVal = array();
     foreach ($paramArray as $param) {
         if (!in_array($param['name'], array('map_width', 'remember_pos', 'location_boundary_id', 'items_per_page', 'param_ignores', 'param_defaults'))) {
             $retVal[] = $param;
         }
     }
     return $retVal;
 }
Example #8
0
    /**
     * Get the list of parameters for this form.
     * @return array List of parameters that this form requires.
     */
    public static function get_parameters()
    {
        return array_merge(iform_map_get_map_parameters(), array(array('name' => 'report_name', 'caption' => 'Report Name', 'description' => 'The report to load into the verification grid, excluding the .xml suffix. This report should have ' . 'at least the following columns: occurrence_id, taxon. If you don\'t know which report to use, try the recent_occurrences_in_survey report.', 'type' => 'report_helper::report_picker', 'default' => 'library/occurrences/verification_list', 'group' => 'Report Settings'), array('name' => 'param_presets', 'caption' => 'Preset Parameter Values', 'description' => 'To provide preset values for any report parameter and avoid the user having to enter them, enter each parameter into this ' . 'box one per line. Each parameter is followed by an equals then the value, e.g. survey_id=6. You can use {user_id} as a value which will be replaced by the ' . 'user ID from the CMS logged in user or {username} as a value replaces with the logged in username. Preset Parameter Values can\'t be overridden by the user.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Settings', 'default' => 'survey_id=
date_from=
date_to=
smpattrs=
occattrs='), array('name' => 'param_defaults', 'caption' => 'Default Parameter Values', 'description' => 'To provide default values for any report parameter which allow the report to run initially but can be overridden, enter each parameter into this ' . 'box one per line. Each parameter is followed by an equals then the value, e.g. survey_id=6. You can use {user_id} as a value which will be replaced by the ' . 'user ID from the CMS logged in user or {username} as a value replaces with the logged in username. Unlike preset parameter values, parameters referred ' . 'to by default parameter values are displayed in the parameters form and can therefore be changed by the user.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Settings', 'default' => 'id=
taxon_group_id=
record_status=C'), array('name' => 'columns_config', 'caption' => 'Columns Configuration', 'description' => 'Define a list of columns with various configuration options when you want to override the ' . 'default output of the report.', 'type' => 'jsonwidget', 'default' => '[
              {"fieldname":"occurrence_id","template":"<div class=\'status-{record_status}\'>{occurrence_id}<\\/div>","display":"ID"},
              {"fieldname":"taxon","display":"Species","template":"<div class=\'zero-{zero_abundance}\'>{taxon}<br\\/>{common}<\\/div>"},
              {"fieldname":"record_status","visible":false},
              {"fieldname":"common","visible":false},
              {"fieldname":"zero_abundance","visible":false}
            ]', 'schema' => '{
    "type":"seq",
    "title":"Columns List",
    "sequence":
    [
      {
        "type":"map",
        "title":"Column",
        "mapping": {
          "fieldname": {"type":"str","desc":"Name of the field to output in this column. Does not need to be specified when using the template option."},
          "display": {"type":"str","desc":"Caption of the column, which defaults to the fieldname if not specified."},
          "actions": {
            "type":"seq",
            "title":"Actions List",
            "sequence": [{
              "type":"map",
              "title":"Actions",
              "desc":"List of actions to make available for each row in the grid.",
              "mapping": {
                "caption": {"type":"str","desc":"Display caption for the action\'s link."},
                "visibility_field": {"type":"str","desc":"Optional name of a field in the data which contains true or false to define the visibility of this action."},
                "url": {"type":"str","desc":"A url that the action link will point to, unless overridden by JavaScript. The url can contain tokens which ' . 'will be subsituted for field values, e.g. for http://www.example.com/image/{id} the {id} is replaced with a field called id in the current row. ' . 'Can also use the subsitution {currentUrl} to link back to the current page, {rootFolder} to represent the folder on the server that the current PHP page is running from, and ' . '{imageFolder} for the image upload folder"},
                "urlParams": {
                  "type":"map",
                  "subtype":"str",
                  "desc":"List of parameters to append to the URL link, with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
                },
                "class": {"type":"str","desc":"CSS class to attach to the action link."},
                "javascript": {"type":"str","desc":"JavaScript that will be run when the link is clicked. Can contain field value substitutions ' . 'such as {id} which is replaced by the value of the id field for the current row. Because the javascript may pass the field values as parameters to functions, ' . 'there are escaped versions of each of the replacements available for the javascript action type. Add -escape-quote or ' . '-escape-dblquote to the fieldname. For example this would be valid in the action javascript: foo(\\"{bar-escape-dblquote}\\"); ' . 'even if the field value contains a double quote which would have broken the syntax."}
              }
            }]
          },
          "visible": {"type":"bool","desc":"Should this column be shown? Hidden columns can still be used in templates or actions."},
          "template": {"type":"str","desc":"Allows you to create columns that contain dynamic content using a template, rather than just the output ' . 'of a field. The template text can contain fieldnames in braces, which will be replaced by the respective field values. ' . 'Note that template columns cannot be sorted by clicking grid headers." }
        }
      }
    ]
  }', 'required' => false), array('name' => 'verifiers_mapping', 'caption' => 'Verifiers Mapping', 'description' => 'Provide either the ID of a single Indicia user to act as the verifier, or provide a comma separated list ' . 'of <drupal user id>=<indicia user id> pairs to define the mapping from Drupal to Indicia users. E.g. ' . '"1=2,2=3"', 'type' => 'textarea', 'default' => 1), array('name' => 'email_subject_send_to_verifier', 'caption' => 'Send to Verifier Email Subject', 'description' => 'Default subject for the send to verifier email. Replacements allowed include %taxon% and %id%.', 'type' => 'string', 'default' => 'Record of %taxon% requires verification (ID:%id%)', 'group' => 'Notification emails'), array('name' => 'email_body_send_to_verifier', 'caption' => 'Send to Verifier Email Body', 'description' => 'Default body for the acceptance email. Replacements allowed include %taxon%, %id% and %record% which is replaced to give details of the record.', 'type' => 'textarea', 'default' => 'The following record requires verification. Please reply to this mail with the word Verified or Rejected ' . 'in the email body, followed by any comments you have including the proposed re-identification if relevant on the next line.' . "\n\n%record%", 'group' => 'Notification emails'), array('name' => 'auto_discard_rows', 'caption' => 'Automatically remove rows', 'description' => 'If checked, then when changing the status of a record the record is removed from the grid if it no ' . 'longer matches the grid filter.', 'type' => 'checkbox', 'default' => 'on', 'required' => false)));
    }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $r = array_merge(iform_report_get_report_parameters(), iform_map_get_map_parameters(), array(array('name' => 'indicia_species_layer_feature_type', 'caption' => 'Feature type for Indicia species layer', 'description' => 'Set to the name of a feature type on GeoServer that will be loaded to display the Indicia species data for the selected record. ' . 'Leave empty for no layer. Normally this should be set to a feature type that exposes the cache_occurrences table.', 'type' => 'text_input', 'required' => true, 'default' => 'indicia:cache_occurrences', 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_filter_field', 'caption' => 'Field to filter on', 'description' => 'Set to the name of a field exposed by the feature type which contains the external key defined for the species ' . 'and can therefore be used to filter the layer. ', 'type' => 'text_input', 'required' => true, 'default' => 'taxa_taxon_list_external_key', 'group' => 'Other Map Settings'), array('name' => 'indicia_species_layer_slds', 'caption' => 'SLD files from GeoServer for Indicia species layer', 'description' => 'Set to the names of SLD files available on the GeoServer for the rendering of the Indicia species layer, or leave blank for default. ' . 'Provide one per species layer you are going to allow on the map. Layer styles will be cycled through.', 'type' => 'textarea', 'required' => false, 'default' => "dist_point_red\ndist_point_blue", 'group' => 'Other Map Settings')));
     foreach ($r as &$param) {
         if ($param['name'] === 'report_name') {
             $param['default'] = 'library/taxa/occurrence_counts_summary_by_external_key';
         } elseif ($param['name'] === 'indicia_species_layer_filter_field') {
             $param['default'] = 'taxa_taxon_list_external_key';
         } elseif ($param['name'] === 'param_presets') {
             $param['default'] = "date_from=\ndate_to=\nsurvey_id=\nquality=C\nlocation_id={profile_location}\ntaxon_groups={profile_taxon_groups}\ncurrentUser={profile_indicia_user_id}";
         }
     }
     return $r;
 }
    /** 
     * Return an array of parameters for the edit tab. 
     * @return array The parameters for the form.
     */
    public static function get_parameters()
    {
        $retVal = array_merge(iform_map_get_map_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'default' => 'one_page', 'group' => 'User Interface'), array('name' => 'fields', 'caption' => 'Fields to include or exclude', 'description' => 'List of data fields to hide, one per line. ' . 'Type in the field name as seen exactly in the Record Details section. For custom attributes you should use the system function values ' . 'to filter instead of the caption if defined below.', 'type' => 'textarea', 'default' => 'CMS Username
CMS User ID
Email
Sample ID
Record ID', 'group' => 'Fields for record details'), array('name' => 'operator', 'caption' => 'Include or exclude', 'description' => "Do you want to include only the list of fields you've defined, or exclude them?", 'type' => 'select', 'options' => array('in' => 'Include', 'not in' => 'Exclude'), 'default' => 'not in', 'group' => 'Fields for record details'), array('name' => 'testagainst', 'caption' => 'Test attributes against', 'description' => 'For custom attributes, do you want to filter the list to show using the caption or the system function? If the latter, then ' . 'any custom attributes referred to in the fields list above should be referred to by their system function which might be one of: email, ' . 'cms_user_id, cms_username, first_name, last_name, full_name, biotope, sex_stage, sex, stage, sex_stage_count, certainty, det_first_name, det_last_name.', 'type' => 'select', 'options' => array('caption' => 'Caption', 'system_function' => 'System Function'), 'default' => 'caption', 'group' => 'Fields for record details'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component must be placed on a new line. <br/>' . "The following types of component can be specified. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[recorddetails]</strong> - displays information relating to the occurrence and its sample<br/>" . "&nbsp;&nbsp;<strong>[buttons]</strong> - outputs a row of edit and explore buttons. Use the @buttons option to change the list of buttons to output " . "by setting this to an array, e.g. [edit] will output just the edit button, [explore] outputs just the explore button, [species details] outputs a species details button. " . "The edit button is automatically skipped if the user does not have rights to edit the record.<br/>" . "&nbsp;&nbsp;<strong>[comments]</strong> - lists any comments associated with the occurrence. Also includes the ability to add a comment<br/>" . "&nbsp;&nbsp;<strong>[photos]</strong> - photos associated with the occurrence<br/>" . "&nbsp;&nbsp;<strong>[map]</strong> - a map that links to the spatial reference and location<br/>" . "&nbsp;&nbsp;<strong>[previous determinations]</strong> - a list of previous determinations for this record<br/>" . "<strong>=tab/page name=</strong> is used to specify the name of a tab or wizard page (alpha-numeric characters only). " . "If the page interface type is set to one page, then each tab/page name is displayed as a seperate section on the page. " . "Note that in one page mode, the tab/page names are not displayed on the screen.<br/>" . "<strong>|</strong> is used to split a tab/page/section into two columns, place a [control name] on the previous line and following line to split.<br/>", 'type' => 'textarea', 'default' => '=Record Details and Comments=
[recorddetails]
[buttons]
|
[previous determinations]
[comments]
=Map and Photos=
[map]
|
[photos]', 'group' => 'User Interface'), array('name' => 'default_input_form', 'caption' => 'Default input form path', 'description' => 'Default path to use to the edit form for old records which did not have their input form recorded in the database. Specify the ' . 'path to a general purpose list entry form.', 'type' => 'text_input', 'group' => 'Path configuration'), array('name' => 'explore_url', 'caption' => 'Explore URL', 'description' => 'When you click on the Explore this species\' records button you are taken to this URL. Use {rootfolder} as a replacement ' . 'token for the site\'s root URL.', 'type' => 'string', 'required' => false, 'default' => '', 'group' => 'Path configuration'), array('name' => 'species_details_url', 'caption' => 'Species details URL', 'description' => 'When you click on the ... species page button you are taken to this URL with taxon_meaning_id as a parameter. Use {rootfolder} as a replacement ' . 'token for the site\'s root URL.', 'type' => 'string', 'required' => false, 'default' => '', 'group' => 'Path configuration'), array('name' => 'explore_param_name', 'caption' => 'Explore Parameter Name', 'description' => 'Name of the parameter added to the Explore URL to pass through the taxon_meaning_id of the species being explored. ' . 'The default provided (filter-taxon_meaning_list) is correct if your report uses the standard parameters configuration.', 'type' => 'string', 'required' => false, 'default' => '', 'group' => 'Path configuration')));
        return $retVal;
    }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     $filters = array('none' => 'No Filter', 'taxon_meaning_id' => 'Species', 'external_key' => 'Species using External Key', 'survey_id' => 'Survey', 'sample_id' => 'Submitted data');
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'hide_grid', 'caption' => 'Hide grid', 'description' => 'Check this box to hide the grid of the records just entered.', 'type' => 'checkbox', 'group' => 'Other IForm Parameters', 'required' => false, 'default' => false), array('name' => 'wms_dist_1_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer. Can contain replacement strings {species} or {survey}.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_internal', 'caption' => 'Layer 1 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 1 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_url', 'caption' => 'Service URL (External Layers Only)', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => $filters, 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against (External Layers Only)', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use). This style must exist, ' . 'and the setting is case sensitive.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 1, ranging from 0 (not visible) to 1 (fully opaque). If you want to print this map using Internet Explorer 8 or earlier it is recommended ' . 'that you set this to 1 otherwise the printout may not render correctly.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_2_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer. Can contain replacement strings {species} or {survey}.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_internal', 'caption' => 'Layer 2 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 2 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_url', 'caption' => 'Service URL  (External Layers Only)', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => $filters, 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against  (External Layers Only)', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use). This style must exist, ' . 'and the setting is case sensitive.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 2, ranging from 0 (not visible) to 1 (fully opaque). If you want to print this map using Internet Explorer 8 or earlier it is recommended ' . 'that you set this to 1 otherwise the printout may not render correctly.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_3_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer. Can contain replacement strings {species} or {survey}.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_internal', 'caption' => 'Layer 3 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 3 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_url', 'caption' => 'Service URL', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => $filters, 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use).', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 3, ranging from 0 (not visible) to 1 (fully opaque). If you want to print this map using Internet Explorer 8 or earlier it is recommended ' . 'that set this to 1 otherwise the printout may not render correctly.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'add_another_link', 'caption' => 'Add another link', 'description' => 'If populated, then an "Add another" button will be shown linking to this path. Use replacements #taxon_meaning_id# or ' . '#external_key# to identify the recorded taxon, though note that these will only work if a single taxon was recorded.', 'type' => 'textfield', 'required' => false)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     require_once 'includes/map.php';
     $r = array_merge(array(array('name' => 'edit_location_path', 'caption' => 'Path to edit location page', 'description' => 'Path to a page allowing locations to be edited and created. Should be a page built using the ' . 'Dynamic Locaiton prebuilt form.', 'type' => 'string', 'required' => false)), iform_map_get_map_parameters());
     return $r;
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'managerPermission', 'caption' => 'Drupal Permission for Manager mode', 'description' => 'Enter the Drupal permission name to be used to determine if this user is a manager. Entering this will allow the identified users to delete or modify the site even there are walks (samples) associated with it.', 'type' => 'string', 'required' => false), array('name' => 'branch_assignment_permission', 'label' => 'Drupal Permission name for Branch Manager', 'type' => 'string', 'description' => 'If you do not want to use the Branch Manager functionality, leave this blank. ' . 'Otherwise, specify the name of a permission to which when assigned to a user determines that the user is a branch manager. ' . '<br />Requires a single-value Branch CMS User ID integer attribute on the locations.', 'required' => false, 'group' => 'Transects Editor Settings'), array('name' => 'maxSectionCount', 'label' => 'Max. Section Count', 'type' => 'int', 'description' => 'The maximum number of sections a user is allowed to create for a transect site. If there is no user selectable attribute to set the number of sections, then the number is fixed at this value and the user will not be able to delete sections.', 'group' => 'Transects Editor Settings'), array('name' => 'survey_id', 'caption' => 'Survey', 'description' => 'The survey that data will be posted into.', 'type' => 'select', 'table' => 'survey', 'captionField' => 'title', 'valueField' => 'id', 'siteSpecific' => true), array('name' => 'sites_list_path', 'caption' => 'Site list page path', 'description' => 'Enter the path to the page which the site list is on.', 'type' => 'string', 'required' => true, 'group' => 'Transects Editor Settings'), array('name' => 'transect_type_term', 'caption' => 'Transect type term', 'description' => 'Select the term used for transect location types.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'term', 'extraParams' => array('termlist_external_key' => 'indicia:location_types'), 'required' => true, 'group' => 'Transects Editor Settings'), array('name' => 'section_type_term', 'caption' => 'Section type term', 'description' => 'Select the term used for section location types.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'term', 'extraParams' => array('termlist_external_key' => 'indicia:location_types'), 'required' => true, 'group' => 'Transects Editor Settings'), array('name' => 'bottom_blocks', 'caption' => 'Form blocks to place at bottom', 'description' => 'A list of the blocks which need to be placed at the bottom of the form, below the map.', 'type' => 'textarea', 'group' => 'Transects Editor Settings', 'siteSpecific' => true, 'required' => false), array('name' => 'site_help', 'caption' => 'Site Help Text', 'description' => 'Help text to be placed on the Site tab, before the attributes.', 'type' => 'textarea', 'group' => 'Transects Editor Settings', 'required' => false), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326).', 'type' => 'text_input', 'group' => 'Other Map Settings'), array('name' => 'maxPrecision', 'caption' => 'Max Sref Precision', 'description' => 'The maximum precision to be applied when determining the SREF. Leave blank to not set.', 'type' => 'int', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'minPrecision', 'caption' => 'Min Sref Precision', 'description' => 'The minimum precision to be applied when determining the SREF. Leave blank to not set.', 'type' => 'int', 'required' => false, 'group' => 'Other Map Settings'), array('name' => 'route_map_height', 'caption' => 'Your Route Map Height (px)', 'description' => 'Height in pixels of the map.', 'type' => 'int', 'group' => 'Initial Map View', 'default' => 600), array('name' => 'route_map_buffer', 'caption' => 'Your Route Map Buffer', 'description' => 'Factor to multiple the size of the site by, in order to generate a margin around the site when displaying the site on the Your Route tab.', 'type' => 'string', 'group' => 'Initial Map View', 'default' => '0.1'), array('name' => 'allow_user_assignment', 'label' => 'Allow users to be assigned to transects', 'type' => 'boolean', 'description' => 'Can administrators link users to transects that they are allowed to record at? Requires a multi-value CMS User ID attribute on the locations.', 'default' => true, 'required' => false, 'group' => 'Transects Editor Settings'), array('name' => 'autocalc_section_length_attr_id', 'caption' => 'Location attribute to autocalc section length', 'description' => 'Location attribute that stores the section length, if you want it to be autocalculated from the geometry.', 'type' => 'select', 'table' => 'location_attribute', 'valueField' => 'id', 'captionField' => 'caption', 'group' => 'Transects Editor Settings', 'required' => false), array('name' => 'default_section_grid_ref', 'caption' => 'Default grid ref for a section?', 'description' => 'Default the grid ref for a section to what?', 'type' => 'select', 'lookupValues' => array('parent' => 'Same as parent transect', 'sectionCentroid100' => '100m grid square covering the centroid of the section', 'sectionStart100' => '100m grid square covering the start of the section'), 'default' => 'parent', 'group' => 'Transects Editor Settings'), array('name' => 'always_show_section_details', 'caption' => 'Always show the Section Details tab', 'description' => 'If ticked, then the section details tab is shown allowing the section map reference to be set, even when there are no attributes.', 'type' => 'checkbox', 'group' => 'Transects Editor Settings', 'required' => false)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'default' => 'wizard', 'group' => 'User Interface'), array('name' => 'tabProgress', 'caption' => 'Show Progress through Wizard/Tabs', 'description' => 'For Wizard or Tabs interfaces, check this option to show a progress summary above the controls.', 'type' => 'boolean', 'default' => true, 'required' => false, 'group' => 'User Interface'), array('name' => 'clientSideValidation', 'caption' => 'Client Side Validation', 'description' => 'Enable client side validation of controls using JavaScript.', 'type' => 'boolean', 'default' => true, 'required' => false, 'group' => 'User Interface'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component goes on a new line and is nested inside the previous component where appropriate. The following types of ' . "component can be specified. <br/>" . "<strong>=tab/page name=</strong> is used to specify the name of a tab or wizard page. (Alpha-numeric characters only)<br/>" . "<strong>=*=</strong> indicates a placeholder for putting any custom attribute tabs not defined in this form structure. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[recorder details]</strong><br/>" . "&nbsp;&nbsp;<strong>[date]</strong><br/>" . "&nbsp;&nbsp;<strong>[map]</strong><br/>" . "&nbsp;&nbsp;<strong>[spatial reference]</strong><br/>" . "&nbsp;&nbsp;<strong>[location name]</strong><br/>" . "&nbsp;&nbsp;<strong>[place search]</strong><br/>" . "&nbsp;&nbsp;<strong>[sample comment]</strong>. <br/>" . "&nbsp;&nbsp;<strong>[species identifier]</strong>. <br/>" . "&nbsp;&nbsp;<strong>[show added sample comments]</strong>. <br/>" . "&nbsp;&nbsp;<strong>[add sample comment]</strong>. <br/>" . "<strong>@option=value</strong> on the line(s) following any control allows you to override one of the options passed to the control. The options " . "available depend on the control. For example @label=Abundance would set the untranslated label of a control to Abundance. Where the " . "option value is an array, use valid JSON to encode the value. For example an array of strings could be passed as @occAttrClasses=[\"class1\",\"class2\"]. " . "Other common options include helpText (set to a piece of additional text to display alongside the control) and class (to add css " . "classes to the control such as control-width-3). <br/>" . "<strong>[*]</strong> is used to make a placeholder for putting any custom attributes that should be inserted into the current tab. When this option is " . "used, you can change any of the control options for an individual custom attribute control by putting @control|option=value on the subsequent line(s). " . "For example, if a control is for smpAttr:4 then you can update it's label by specifying @smpAttr:4|label=New Label on the line after the [*].<br/>" . "<strong>?help text?</strong> is used to define help text to add to the tab, e.g. ?Enter the name of the site.?", 'type' => 'textarea', 'default' => "=Who When and Where=\r\n" . "?Recorder details for this information.?\r\n" . "[recorder details]\r\n" . "?Please tell us when you saw the colour-marked bird.?\r\n" . "[date]\r\n" . "?Please tell us where you saw the marked bird. You can do this in any of the following ways:-<ol>" . "<li>enter GPS co-ordinates or an OS grid reference directly,</li>" . "<li>enter a place name and search for it,</li>" . "<li>search for the place on the map and then click to set it.</li>" . "</ol>?\r\n" . "[spatial reference]\r\n" . "[place search]\r\n" . "[map]\r\n" . "?What name do you know this location by?\r\n" . "[location name]\r\n" . "[*]\r\n" . "=Colour Marks=\r\n" . "?Please pick the species from the following list and enter the details for the colour identifiers.?\r\n" . "[species identifier]\r\n" . "[*]\r\n" . "=Added Comments=\r\n" . "?Please add any comments for review or editing of this report.?\r\n" . "[show added sample comments]\r\n" . "[add sample comment]\r\n" . "[*]\r\n" . "=*=", 'group' => 'User Interface'), array('name' => 'attribute_termlist_language_filter', 'caption' => 'Attribute Termlist Language filter', 'description' => 'Enable filtering of termlists for attributes using the iso language.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'no_grid', 'caption' => 'Skip initial grid of data', 'description' => 'If checked, then when initially loading the form the data entry form is immediately displayed, as opposed to ' . 'the default of displaying a grid of the user\'s data which they can add to. By ticking this box, it is possible to use this form ' . 'for data entry by anonymous users though they cannot then list the data they have entered.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'grid_report', 'caption' => 'Grid Report', 'description' => 'Name of the report to use to populate the grid for selecting existing data from. The report must return a sample_id ' . 'field and subject_observation_id field for linking to the data entry form. As a starting point, try reports_for_prebuilt_forms/simple_subject_observation_identifier_list_1 ' . 'for a list of subject observations.', 'type' => 'string', 'group' => 'User Interface', 'default' => 'reports_for_prebuilt_forms/simple_subject_observation_identifier_list_1'), array('name' => 'grid_num_rows', 'caption' => 'Number of rows displayed in grid', 'description' => 'Number of rows display on each page of the grid.', 'type' => 'int', 'default' => 10, 'group' => 'User Interface'), array('name' => 'save_button_below_all_pages', 'caption' => 'Save button below all pages?', 'description' => 'Should the save button be present below all the pages (checked), or should it be only on the last page (unchecked)? ' . 'Only applies to the Tabs interface style.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('fieldname' => 'list_id', 'label' => 'Species List ', 'helpText' => 'The species list that species can be selected from. This list is pre-populated ' . 'into the grid when doing grid based data entry, or provides the list which a species ' . 'can be picked from when doing single subject observation data entry.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'required' => false, 'group' => 'Species', 'siteSpecific' => true), array('fieldname' => 'cache_lookup', 'label' => 'Cache lookups', 'helpText' => 'Tick this box to select to use a cached version of the lookup list when ' . 'searching for extra species names to add to the grid, or set to false to use the ' . 'live version (default). The latter is slower and places more load on the warehouse so should only be ' . 'used during development or when there is a specific need to reflect taxa that have only ' . 'just been added to the list.', 'type' => 'checkbox', 'required' => false, 'group' => 'Species', 'siteSpecific' => false), array('name' => 'species_ctrl', 'caption' => 'Single Species Selection Control Type', 'description' => 'The type of control that will be available to select a single species.', 'type' => 'select', 'options' => array('autocomplete' => 'Autocomplete', 'select' => 'Select'), 'default' => 'select', 'group' => 'Species'), array('name' => 'species_include_both_names', 'caption' => 'Include both names in species controls and added rows', 'description' => 'When using a species grid with the ability to add new rows, the autocomplete control by default shows just the searched taxon name in the drop down. ' . 'Set this to include both the latin and common names, with the searched one first. This also controls the label when adding a new taxon row into the grid.', 'type' => 'boolean', 'required' => false, 'group' => 'Species'), array('name' => 'species_include_taxon_group', 'caption' => 'Include taxon group name in species autocomplete and added rows', 'description' => 'When using a species grid with the ability to add new rows, the autocomplete control by default shows just the searched taxon name in the drop down. ' . 'Set this to include the taxon group title.  This also controls the label when adding a new taxon row into the grid.', 'type' => 'boolean', 'required' => false, 'group' => 'Species'), array('name' => 'taxon_filter_field', 'caption' => 'Field used to filter taxa', 'description' => 'If you want to allow recording for just part of the selected list(s), then select which field you will ' . 'use to specify the filter by.', 'type' => 'select', 'options' => array('preferred_name' => 'Preferred name of the taxa', 'taxon_meaning_id' => 'Taxon Meaning ID', 'taxon_group' => 'Taxon group title'), 'required' => false, 'group' => 'Species'), array('name' => 'taxon_filter', 'caption' => 'Taxon filter items', 'description' => 'When filtering the list of available taxa, taxa will not be available for recording unless they match one of the ' . 'values you input in this box. Enter one value per line. E.g. enter a list of taxon group titles if you are filtering by taxon group. ' . 'If you provide a single taxon preferred name or taxon meaning ID in this box, then the form is set up for recording just this single ' . 'species. Therefore there will be no species picker control, and the form will always operate in the single record, non-grid mode. ' . 'As there is no visual indicator which species is recorded you may like to include information about what is being recorded in the ' . 'header. You may also want to configure the User Interface section of the form\'s Form Structure to move the [species] and [species] controls ' . 'to a different tab and remove the =species= tab, especially if there are no other occurrence attributes on the form.', 'type' => 'textarea', 'required' => false, 'group' => 'Species'), array('name' => 'species_names_filter', 'caption' => 'Species Names Filter', 'description' => 'Select the filter to apply to the species names which are available to choose from.', 'type' => 'select', 'options' => array('all' => 'All names are available', 'language' => 'Only allow selection of species using common names in the user\'s language', 'preferred' => 'Only allow selection of species using names which are flagged as preferred', 'excludeSynonyms' => 'Allow common names or preferred latin names'), 'default' => 'all', 'group' => 'Species'), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326). ' . 'Set to "default" to use the settings defined in the IForm Settings page.', 'type' => 'string', 'group' => 'Other Map Settings'), array('name' => 'survey_id', 'caption' => 'Survey', 'description' => 'The survey that data will be posted into.', 'type' => 'select', 'table' => 'survey', 'captionField' => 'title', 'valueField' => 'id', 'siteSpecific' => true), array('name' => 'sample_method_id', 'caption' => 'Sample Method', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:sample_methods'), 'required' => false, 'helpText' => 'The sample method that will be used for created samples.'), array('name' => 'subject_type_id', 'caption' => 'Subject Type', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:subject_type'), 'required' => true, 'helpText' => 'The subject type that will be used for created subject observations for each colour-marked individual.'), array('name' => 'defaults', 'caption' => 'Default Values', 'description' => 'Supply default values for each field as required. On each line, enter fieldname=value. For custom attributes, ' . 'the fieldname is the untranslated caption. For other fields, it is the model and fieldname, e.g. occurrence.record_status. ' . 'For date fields, use today to dynamically default to today\'s date. NOTE, currently only supports occurrence:record_status and ' . 'sample:date but will be extended in future.', 'type' => 'textarea', 'default' => 'occurrence:record_status=C'), array('name' => 'neck_collar_type', 'caption' => 'Neck Collar Type', 'description' => 'The type of identifier which indicates a neck collar.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_type'), 'required' => true, 'helpText' => 'The helptext. Todo: change this once you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'neck_collar_position', 'caption' => 'Neck Collar Position', 'description' => 'The body position to record for a neck collar.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_position', 'orderby' => 'sort_order'), 'required' => true, 'helpText' => 'The helptext. Todo: change this once you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'neck_collar_max_length', 'caption' => 'Neck collar maximum length', 'description' => 'Maximum length for a neck-collar identifier sequence.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'neck_collar_regex', 'caption' => 'Neck collar validation pattern', 'description' => 'The validation pattern (as a regular expression) for a neck-collar identifier sequence. ' . 'Eg. ^([A-Z]{2}[0-9]{2}|[A-Z]{3}[0-9])$ would only permit sequences of either 2 uppercase letters followed by 2 digits, ' . 'or 3 uppercase letters followed by 1 digit.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'enscribed_colour_ring_type', 'caption' => 'Enscribed Colour Ring Type', 'description' => 'The type of identifier which indicates an enscribed colour ring (\'darvic\').', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_type'), 'required' => true, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'right_enscribed_colour_ring_position', 'caption' => 'Right Leg Enscribed Colour Ring Position', 'description' => 'The body position to record for an enscribed colour ring (\'darvic\') on the right leg.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_position', 'orderby' => 'sort_order'), 'required' => true, 'helpText' => 'The helptext. Todo: change this once you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'left_enscribed_colour_ring_position', 'caption' => 'Left Leg Enscribed Colour Ring Position', 'description' => 'The body position to record for an enscribed colour ring (\'darvic\') on the left leg.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_position', 'orderby' => 'sort_order'), 'required' => true, 'helpText' => 'The helptext. Todo: change this once you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'enscribed_colour_ring_max_length', 'caption' => 'Colour ring maximum length', 'description' => 'Maximum length for an enscribed colour ring identifier sequence.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'enscribed_colour_ring_regex', 'caption' => 'Colour ring validation pattern', 'description' => 'The validation pattern (as a regular expression) for an enscribed colour ring identifier sequence. ' . 'Eg. ^([A-Z]{2}[0-9]{2}|[A-Z]{3}[0-9])$ would only permit sequences of either 2 uppercase letters followed by 2 digits, ' . 'or 3 uppercase letters followed by 1 digit.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'metal_ring_type', 'caption' => 'Metal Ring Type', 'description' => 'The type of identifier which indicates a metal ring.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_type'), 'required' => true, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'metal_ring_max_length', 'caption' => 'Metal ring maximum length', 'description' => 'Maximum length for a metal identifier sequence.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'metal_ring_regex', 'caption' => 'Metal ring validation pattern', 'description' => 'The validation pattern (as a regular expression) for a metal ring identifier sequence. ' . 'Eg. ^([A-Z]{2}[0-9]{2}|[A-Z]{3}[0-9])$ would only permit sequences of either 2 uppercase letters followed by 2 digits, ' . 'or 3 uppercase letters followed by 1 digit.', 'type' => 'string', 'required' => false, 'group' => 'Identifiers'), array('name' => 'base_colours', 'caption' => 'Base Colours', 'description' => 'The colours we want to let users record for the background of the coloured identifiers. Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:ring_colour'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'text_colours', 'caption' => 'Text Colours', 'description' => 'The colours we want to let users record for the text enscribed on the coloured identifiers. Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:ring_colour'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'position', 'caption' => 'Identifier Position', 'description' => 'The positions on the organism we want to let users record for the identifiers. Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_position', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'default_leg_vertical', 'caption' => 'Default Position on Leg', 'description' => 'If you are not specifying if a leg mark is above or below the \'knee\' in the above choices, ' . 'you can optionally specify a default position here.', 'type' => 'select', 'options' => array('?' => 'No Default', 'A' => 'Above the \'Knee\'', 'B' => 'Below the \'Knee\''), 'required' => false, 'group' => 'Identifiers'), array('name' => 'neck_collar_conditions', 'caption' => 'Neck Collar Conditions', 'description' => 'The identifier conditions we want to be reportable by recorders when observing a neck collar. Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_condition', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'coloured_ring_conditions', 'caption' => 'Coloured Ring Conditions', 'description' => 'The identifier conditions we want to be reportable by recorders when observing a coloured ring Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_condition', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'metal_ring_conditions', 'caption' => 'Metal Ring Conditions', 'description' => 'The identifier conditions we want to be reportable by recorders when observing a metal ring Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:identifier_condition', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Identifiers'), array('name' => 'other_devices', 'caption' => 'Other Devices', 'description' => 'What other devices (such as transmitters/trackers/loggers do you want to record? Tick all that apply.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:attachment_type'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'observation_comment', 'caption' => 'Allow Comment For Colour-marked Individual', 'description' => 'Tick this to allow a comment to be input for each reported colour-marked individual. ' . 'This comment is stored on the subject observation record', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Subject observation'), array('name' => 'request_gender_values', 'caption' => 'Request Gender Values', 'description' => 'What (if any) gender options do you want to present for the colour-marked individual? ' . 'Leave un-ticked to hide all gender options.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:gender', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'default_gender', 'caption' => 'Default Gender', 'description' => 'What (if any) gender should be the default for the colour-marked individual?', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'blankText' => 'No default', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:gender', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'request_stage_values', 'caption' => 'Request Age Values', 'description' => 'What (if any) age/stage options do you want to present for the colour-marked individual? ' . 'Leave un-ticked to hide all age options.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:stage', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'default_stage', 'caption' => 'Default Age', 'description' => 'What (if any) age/stage should be the default for the colour-marked individual?', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'blankText' => 'No default', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:stage', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'request_life_status_values', 'caption' => 'Request Subject Status Values', 'description' => 'What (if any) life status options do you want to present for the colour-marked individual? ' . 'Leave un-ticked to hide all life status options.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:life_status', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'default_life_status', 'caption' => 'Default Subject Status', 'description' => 'What (if any) subject status should be the default for the colour-marked individual?', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'blankText' => 'No default', 'extraParams' => array('termlist_external_key' => 'indicia:assoc:life_status', 'orderby' => 'sort_order'), 'required' => false, 'helpText' => 'The helptext. Todo: change this one you see where it shows on screen!!', 'group' => 'Subject observation'), array('name' => 'debug_info', 'caption' => 'Provide debug information', 'description' => 'Tick this to provide debug info on the form, DO NOT USE IN PRODUCTION!!!!', 'type' => 'boolean', 'required' => false, 'default' => false, 'group' => 'Debug')));
     return $retVal;
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => '2nd_map_height', 'caption' => 'Second Map Height (px)', 'description' => 'Height in pixels of the second (focus on collection) map.', 'type' => 'int', 'group' => 'Initial Map View', 'default' => 300), array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'search_url', 'caption' => 'URL for Search WFS service', 'description' => 'The URL used for the WFS feature lookup when searching.', 'type' => 'string', 'group' => 'Search'), array('name' => 'search_prefix', 'caption' => 'Feature type prefix for Search', 'description' => 'The Feature type prefix used for the WFS feature lookup when searching.', 'type' => 'string', 'group' => 'Search'), array('name' => 'search_ns', 'caption' => 'Name space for Search', 'description' => 'The Name space used for the WFS feature lookup when searching.', 'type' => 'string', 'group' => 'Search'), array('name' => 'collectionsPerPage', 'caption' => 'Collections per page of search results', 'description' => 'Number of Collections per page of search results.', 'type' => 'int', 'default' => 5, 'group' => 'Search'), array('name' => 'insectsPerRow', 'caption' => 'Number of Insects per row.', 'description' => 'Number of Insects per row of search results and on collection insect list.', 'type' => 'int', 'default' => 3, 'group' => 'Search'), array('name' => 'insectsRowsPerPage', 'caption' => 'Number of rows of insects per page of search results', 'description' => 'Number of rows of insects per page of search results.', 'type' => 'int', 'default' => 3, 'group' => 'Search'), array('name' => 'max_features', 'caption' => 'Max number of items returned', 'description' => 'Maximum number of features returned by the WFS search.', 'type' => 'int', 'default' => 1000, 'group' => 'Search'), array('name' => 'INSEE_url', 'caption' => 'URL for INSEE Search WFS service', 'description' => 'The URL used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_prefix', 'caption' => 'Feature type prefix for INSEE Search', 'description' => 'The Feature type prefix used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_type', 'caption' => 'Feature type for INSEE Search', 'description' => 'The Feature type used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_ns', 'caption' => 'Name space for INSEE Search', 'description' => 'The Name space used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'complete_attr_id', 'caption' => 'Completeness Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores whether the collection is complete.', 'type' => 'int', 'group' => 'Collection Attributes'), array('name' => 'uid_attr_id', 'caption' => 'User ID Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the CMS User ID.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'username_attr_id', 'caption' => 'Username Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s username.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'flower_type_attr_id', 'caption' => 'Flower Type Attribute ID', 'description' => 'Indicia ID for the occurrence attribute that stores how the flower got there.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'flower_type_dont_know', 'caption' => 'Flower Type Dont Know ID', 'description' => 'Indicia ID for the term meaning_id that shows a Flower type of dont know.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'habitat_attr_id', 'caption' => 'habitat Attribute ID', 'description' => 'Indicia ID for the location attribute that describes the habitat.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'start_time_attr_id', 'caption' => 'Start Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the start time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'end_time_attr_id', 'caption' => 'End Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the end time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'sky_state_attr_id', 'caption' => 'Sky State Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the state of the sky.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'temperature_attr_id', 'caption' => 'Temperature Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the temperature.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'wind_attr_id', 'caption' => 'Wind Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Wind.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'shade_attr_id', 'caption' => 'Shade Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the shade.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'flower_list_id', 'caption' => 'Flower Species List ID', 'description' => 'The Indicia ID for the species list that flowers can be selected from.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'insect_list_id', 'caption' => 'Insect Species List ID', 'description' => 'The Indicia ID for the species list that insects can be selected from.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'ID_tool_flower_url', 'caption' => 'Flower ID Tool URL', 'description' => 'The URL to call which triggers the Flower Identification Tool functionality.', 'type' => 'string', 'group' => 'ID Tool', 'default' => 'http://spipoll.org/identification/flore.php?requestId='), array('name' => 'ID_tool_flower_poll_dir', 'caption' => 'Flower ID Tool Module poll directory', 'description' => 'The directory which to poll for the results of the Flower ID Tool', 'type' => 'string', 'group' => 'ID Tool', 'default' => 'http://{HOST}/cgi-bin/proxy.cgi?url=http://ns367998.ovh.net/identification/resultats/flore/'), array('name' => 'ID_tool_insect_url', 'caption' => 'Insect ID Tool URL', 'description' => 'The URL to call which triggers the Insect Identification Tool functionality.', 'type' => 'string', 'group' => 'ID Tool', 'default' => 'http://spipoll.org/identification/insectes.php?requestId='), array('name' => 'ID_tool_insect_poll_dir', 'caption' => 'Insect ID Tool Module poll directory', 'description' => 'The directory which to poll for the results of the Insect ID Tool', 'type' => 'string', 'group' => 'ID Tool', 'default' => 'http://{HOST}/cgi-bin/proxy.cgi?url=http://ns367998.ovh.net/identification/resultats/insectes/'), array('name' => 'ID_tool_poll_interval', 'caption' => 'Time in ms between polls of results directory', 'description' => 'Time in ms between polls of results directory', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1500), array('name' => 'ID_tool_poll_timeout', 'caption' => 'Time in ms before the ID Tool is aborted.', 'description' => 'Time in ms before the ID Tool is aborted.', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1800000), array('name' => 'Flower_Image_Ratio', 'caption' => 'Flower image aspect ratio.', 'description' => 'Expected Ratio of width to height for flower images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '4/3'), array('name' => 'Environment_Image_Ratio', 'caption' => 'Environment image aspect ratio.', 'description' => 'Expected Ratio of width to height for environment images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '4/3'), array('name' => 'Insect_Image_Ratio', 'caption' => 'Insect image aspect ratio.', 'description' => 'Expected Ratio of width to height for insect images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '1/1'), array('name' => 'alert_js_function', 'caption' => 'Alert JS Function', 'description' => 'JS function called when an alert is generated', 'type' => 'string', 'group' => 'JS Calls', 'required' => false), array('name' => 'preferred_js_function', 'caption' => 'Preferred JS Function', 'description' => 'JS function called when an object is to be added to the users preferred list', 'type' => 'string', 'group' => 'JS Calls', 'required' => false)));
     return $retVal;
 }
Example #16
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), array(array('name' => 'georefPreferredArea', 'caption' => 'Preferred area for georeferencing.', 'description' => 'Preferred area to look within when trying to resolve a place name. For example set this to the region name you are recording within.', 'type' => 'string', 'default' => 'fr', 'group' => 'Map'), array('name' => 'georefCountry', 'caption' => 'Preferred country for georeferencing.', 'description' => 'Preferred country to look within when trying to resolve a place name.', 'type' => 'string', 'default' => 'France', 'group' => 'Map'), array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'percent_insects', 'caption' => 'Insect Identification Percentage', 'description' => 'The percentage of insects that must be identified before the collection may be completed.', 'type' => 'int'), array('name' => 'gallery_node', 'caption' => 'Gallery Node', 'description' => 'The DRUPAL node number for the Gallery/Filter node.', 'type' => 'int'), array('name' => 'protocol_attr_id', 'caption' => 'Protocol Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Protocol.', 'type' => 'int', 'group' => 'Collection Attributes'), array('name' => 'complete_attr_id', 'caption' => 'Completeness Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores whether the collection is complete.', 'type' => 'int', 'group' => 'Collection Attributes'), array('name' => 'uid_attr_id', 'caption' => 'User ID Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the CMS User ID.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'username_attr_id', 'caption' => 'Username Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s username.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'email_attr_id', 'caption' => 'Email Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s email.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'flower_list_id', 'caption' => 'Flower Species List ID', 'description' => 'The Indicia ID for the species list that flowers can be selected from.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'flower_type_attr_id', 'caption' => 'Flower Type Attribute ID', 'description' => 'Indicia ID for the occurrence attribute that stores how the flower got there.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'habitat_attr_id', 'caption' => 'habitat Attribute ID', 'description' => 'Indicia ID for the location attribute that describes the habitat.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'distance_attr_id', 'caption' => 'Distance Attribute ID', 'description' => 'Indicia ID for the location attribute that stores how far the nearest house is.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'start_time_attr_id', 'caption' => 'Start Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the start time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'end_time_attr_id', 'caption' => 'End Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the end time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'sky_state_attr_id', 'caption' => 'Sky State Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the state of the sky.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'temperature_attr_id', 'caption' => 'Temperature Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the temperature.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'wind_attr_id', 'caption' => 'Wind Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Wind.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'shade_attr_id', 'caption' => 'Shade Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the shade.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'insect_list_id', 'caption' => 'Insect Species List ID', 'description' => 'The Indicia ID for the species list that insects can be selected from.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'number_attr_id', 'caption' => 'Insect Number Attribute ID', 'description' => 'The Indicia ID for the occurrence attribute that stores the number of insects.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'foraging_attr_id', 'caption' => 'Foraging Attribute ID', 'description' => 'The Indicia ID for the occurrence attribute that stores the foraging flag.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'help_module', 'caption' => 'Help DRUPAL Module', 'description' => 'The DRUPAL module which contains the context sensitive help functionality.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_inclusion_function', 'caption' => 'Help Module inclusion function', 'description' => 'The DRUPAL PHP function which is used to include the relevant Javascript into the page.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_function', 'caption' => 'Help Module invocation function', 'description' => 'The Javascript function which is called when the help buttons are clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_collection_arg', 'caption' => 'Collection Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Create a collection" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_flower_arg', 'caption' => 'Flower Identification Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Flower Identification" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_location_arg', 'caption' => 'Location Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Location" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_session_arg', 'caption' => 'Session Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Session" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_insect_arg', 'caption' => 'Insect Identification Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Insect Identification" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'ID_tool_flower_url', 'caption' => 'Flower ID Tool URL', 'description' => 'The URL to call which triggers the Flower Identification Tool functionality.', 'type' => 'string', 'group' => 'ID Tool', 'required' => false), array('name' => 'ID_tool_flower_poll_dir', 'caption' => 'Flower ID Tool Module poll directory', 'description' => 'The directory which to poll for the results of the Flower ID Tool', 'type' => 'string', 'group' => 'ID Tool', 'required' => false), array('name' => 'ID_tool_insect_url', 'caption' => 'Insect ID Tool URL', 'description' => 'The URL to call which triggers the Insect Identification Tool functionality.', 'type' => 'string', 'group' => 'ID Tool', 'required' => false), array('name' => 'ID_tool_insect_poll_dir', 'caption' => 'Insect ID Tool Module poll directory', 'description' => 'The directory which to poll for the results of the Insect ID Tool', 'type' => 'string', 'group' => 'ID Tool', 'required' => false), array('name' => 'ID_tool_poll_interval', 'caption' => 'Time in ms between polls of results directory', 'description' => 'Time in ms between polls of results directory', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1500), array('name' => 'ID_tool_poll_timeout', 'caption' => 'Time in ms before the ID Tool is aborted.', 'description' => 'Time in ms before the ID Tool is aborted.', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1800000), array('name' => 'INSEE_url', 'caption' => 'URL for INSEE Search WFS service', 'description' => 'The URL used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_prefix', 'caption' => 'Feature type prefix for INSEE Search', 'description' => 'The Feature type prefix used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_type', 'caption' => 'Feature type for INSEE Search', 'description' => 'The Feature type used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_ns', 'caption' => 'Name space for INSEE Search', 'description' => 'The Name space used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search')));
     return $retVal;
 }
Example #17
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'group' => 'User Interface'), array('name' => 'tabProgress', 'caption' => 'Show Progress through Wizard/Tabs', 'description' => 'For Wizard or Tabs interfaces, check this option to show a progress summary above the controls.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface'), array('name' => 'emailShow', 'caption' => 'Show email field even if logged in', 'description' => 'If the survey requests an email address, it is sent implicitly for logged in users. Check this box to show it explicitly.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface'), array('name' => 'nameShow', 'caption' => 'Show first name and last name fields even if logged in', 'description' => 'If the survey requests first name and last name, these are ignored for logged in users where user id is sent instead. Check this box to show these fields.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface'), array('name' => 'clientSideValidation', 'caption' => 'Client Side Validation', 'description' => 'Enable client side validation of controls using JavaScript. Note that there are bugs in Internet Explorer which can cause errors when ' . 'clicking on the map if this box is ticked.', 'type' => 'boolean', 'default' => true, 'group' => 'User Interface'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component goes on a new line and is nested inside the previous component where appropriate. The following types of ' . "component can be specified. <br/>" . "<strong>=tab name=</strong> is used to specify the name of a tab. (Alpha-numeric characters only)<br/>" . "<strong>=*=</strong> indicates a placeholder for putting any custom attribute tabs not defined in this form structure. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[species]</strong> - a species grid or input control<br/>" . "&nbsp;&nbsp;<strong>[species_attributes]</strong> - any custom attributes for the occurrence, if not using the grid<br/>" . "&nbsp;&nbsp;<strong>[date]</strong><br/>" . "&nbsp;&nbsp;<strong>[map]</strong><br/>" . "&nbsp;&nbsp;<strong>[spatial reference]</strong><br/>" . "&nbsp;&nbsp;<strong>[location name]</strong><br/>" . "&nbsp;&nbsp;<strong>[location autocomplete]</strong><br/>" . "&nbsp;&nbsp;<strong>[location select]</strong><br/>" . "&nbsp;&nbsp;<strong>[place search]</strong><br/>" . "&nbsp;&nbsp;<strong>[recorder names]</strong><br/>" . "&nbsp;&nbsp;<strong>[record status]</strong><br/>" . "&nbsp;&nbsp;<strong>[sample comment]</strong>. <br/>" . "<strong>@option=value</strong> on the line(s) following any control allows you to override one of the options passed to the control. The options " . "available depend on the control. For example @label=Abundance would set the untranslated label of a control to Abundance. Where the " . "option value is an array, use valid JSON to encode the value. For example an array of strings could be passed as @occAttrClasses=[\"class1\",\"class2\"]. " . "Other common options include helpText (set to a piece of additional text to display alongside the control) and class (to add css " . "classes to the control such as control-width-3). <br/>" . "<strong>[*]</strong> is used to make a placeholder for putting any custom attributes that should be inserted into the current tab.<br/>" . "<strong>?help text?</strong> is used to define help text to add to the tab, e.g. ?Enter the name of the site.?", 'type' => 'textarea', 'default' => "=Species=\r\n" . "?Please enter the species you saw and any other information about them.?\r\n" . "[species]\r\n" . "[species attributes]\r\n" . "[*]\r\n" . "=Place=\r\n" . "?Please provide the spatial reference of the record. You can enter the reference directly, or search for a place then click on the map.?\r\n" . "[place search]\r\n" . "[spatial reference]\r\n" . "[map]\r\n" . "[*]\r\n" . "=Other Information=\r\n" . "?Please provide the following additional information.?\r\n" . "[date]\r\n" . "[sample comment]\r\n" . "[*]\r\n" . "=*=", 'group' => 'User Interface'), array('name' => 'attributeValidation', 'caption' => 'Attribute Validation Rules', 'description' => 'TBD.', 'type' => 'textarea', 'required' => false, 'group' => 'User Interface'), array('name' => 'no_grid', 'caption' => 'Skip initial grid of data', 'description' => 'If checked, then when initially loading the form the data entry form is immediately displayed, as opposed to ' . 'the default of displaying a grid of the user\'s data which they can add to.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface'), array('name' => 'grid_report', 'caption' => 'Grid Report', 'description' => 'Name of the report to use to populate the grid for selecting existing data from. The report must return a sample_id ' . 'field or occurrence_id field for linking to the data entry form. As a starting point, try reports_for_prebuilt_forms/simple_occurrence_list_1 or ' . 'reports_for_prebuilt_forms/simple_sample_list_1 for a list of occurrences or samples respectively.', 'type' => 'string', 'group' => 'User Interface', 'default' => 'reports_for_prebuilt_forms/simple_sample_list_1'), array('name' => 'save_button_below_all_pages', 'caption' => 'Save button below all pages?', 'description' => 'Should the save button be present below all the pages (checked), or should it be only on the last page (unchecked)? ' . 'Only applies to the Tabs interface style.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface'), array('name' => 'multiple_occurrence_mode', 'caption' => 'Single or multiple occurrences per sample', 'description' => 'Method of data entry, via a grid of occurrences, one occurrence at a time, or allow the user to choose.', 'type' => 'select', 'options' => array('single' => 'Only allow entry of one occurrence at a time', 'multi' => 'Only allow entry of multiple occurrences using a grid', 'either' => 'Allow the user to choose single or multiple occurrence data entry.'), 'default' => 'multi', 'group' => 'Species'), array('name' => 'species_ctrl', 'caption' => 'Single Species Selection Control Type', 'description' => 'The type of control that will be available to select a single species.', 'type' => 'select', 'options' => array('autocomplete' => 'Autocomplete', 'select' => 'Select', 'listbox' => 'List box', 'radio_group' => 'Radio group', 'treeview' => 'Treeview', 'tree_browser' => 'Tree browser'), 'default' => 'autocomplete', 'group' => 'Species'), array('name' => 'species_include_both_names', 'caption' => 'Include both names in species autocomplete and added rows', 'description' => 'When using a species grid with the ability to add new rows, the autocomplete control by default shows just the searched taxon name in the drop down. ' . 'Set this to include both the latin and common names, with the searched one first. This also controls the label when adding a new taxon row into the grid.', 'type' => 'boolean', 'group' => 'Species'), array('name' => 'species_include_taxon_group', 'caption' => 'Include taxon group name in species autocomplete and added rows', 'description' => 'When using a species grid with the ability to add new rows, the autocomplete control by default shows just the searched taxon name in the drop down. ' . 'Set this to include the taxon group title.  This also controls the label when adding a new taxon row into the grid.', 'type' => 'boolean', 'group' => 'Species'), array('name' => 'occurrence_comment', 'caption' => 'Occurrence Comment', 'description' => 'Should an input box be present for a comment against each occurrence?', 'type' => 'boolean', 'default' => false, 'group' => 'Species'), array('name' => 'occurrence_images', 'caption' => 'Occurrence Images', 'description' => 'Should occurrences allow images to be uploaded?', 'type' => 'boolean', 'default' => false, 'group' => 'Species'), array('name' => 'col_widths', 'caption' => 'Grid Column Widths', 'description' => 'Provide percentage column widths for each species checklist grid column as a comma separated list. To leave a column at its default with, put a blank ' . 'entry in the list. E.g. "25,,20" would set the first column to 25% width and the 3rd column to 20%, leaving the other columns as they are.', 'type' => 'string', 'group' => 'Species', 'required' => false), array('name' => 'list_id', 'caption' => 'Initial Species List ID', 'description' => 'The Indicia ID for the species list that species can be selected from. This list is pre-populated ' . 'into the grid when doing grid based data entry.', 'type' => 'int', 'required' => false, 'group' => 'Species'), array('name' => 'extra_list_id', 'caption' => 'Extra Species List ID', 'description' => 'The Indicia ID for the second species list that species can be selected from. This list is available for additional ' . 'taxa being added to the grid when doing grid based data entry.', 'type' => 'int', 'required' => false, 'group' => 'Species'), array('name' => 'species_names_filter', 'caption' => 'Species Names Filter', 'description' => 'Select the filter to apply to the species names which are available to choose from.', 'type' => 'select', 'options' => array('all' => 'All names are available', 'language' => 'Only allow selection of species using common names in the user\'s language', 'preferred' => 'Only allow selection of species using names which are flagged as preferred'), 'default' => 'autocomplete', 'group' => 'Species'), array('name' => 'link_species_popups', 'caption' => 'Create popups for certain species', 'description' => 'You can mark some blocks of the form to only be shown as a popup when a certain species is entered into the species grid. For each popup block, ' . 'put the species name on a newline, followed by | then the outer block name, followed by | then the inner block name if relevant. For example, ' . '"Lasius niger|Additional info|Colony info" pops up the controls from the block Additional Info > Colony info when a species is entered with this ' . 'name. For the species name, specify the preferred name from list.', 'type' => 'textarea', 'required' => false, 'group' => 'Species'), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326).', 'type' => 'string', 'group' => 'Map'), array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'defaults', 'caption' => 'Default Values', 'description' => 'Supply default values for each field as required. On each line, enter fieldname=value. For custom attributes, ' . 'the fieldname is the untranslated caption. For other fields, it is the model and fieldname, e.g. occurrence.record_status. ' . 'For date fields, use today to dynamically default to today\'s date. NOTE, currently only supports occurrence:record_status and ' . 'sample:date but will be extended in future.', 'type' => 'textarea', 'default' => 'occurrence:record_status=C'), array('name' => 'includeLocTools', 'caption' => 'Include Location Tools', 'description' => 'Include a tab for the allocation of locations when displaying the initial grid.', 'type' => 'boolean', 'default' => false, 'group' => 'User Interface')));
     return $retVal;
 }
Example #18
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'wms_dist_1_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_internal', 'caption' => 'Layer 1 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 1 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_url', 'caption' => 'Service URL (External Layers Only)', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => array('none' => 'No Filter', 'taxa_taxon_list_id' => 'Species', 'external_key' => 'Species using External Key', 'survey_id' => 'Survey', 'sample_id' => 'Submitted data'), 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against (External Layers Only)', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use). This style must exist, ' . 'and the setting is case sensitive.', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_1_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 1, ranging from 0 (not visible) to 1 (fully opaque).', 'type' => 'textfield', 'group' => 'Distribution Layer 1', 'required' => false), array('name' => 'wms_dist_2_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_internal', 'caption' => 'Layer 2 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 2 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_url', 'caption' => 'Service URL  (External Layers Only)', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => array('none' => 'No Filter', 'taxa_taxon_list_id' => 'Species', 'external_key' => 'Species using External Key', 'survey_id' => 'Survey', 'sample_id' => 'Submitted data'), 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against  (External Layers Only)', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use). This style must exist, ' . 'and the setting is case sensitive.', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_2_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 2, ranging from 0 (not visible) to 1 (fully opaque).', 'type' => 'textfield', 'group' => 'Distribution Layer 2', 'required' => false), array('name' => 'wms_dist_3_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the optional WMS full species distribution map layer', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_internal', 'caption' => 'Layer 3 uses GeoServer to access Indicia database?', 'description' => 'Check this box if layer 3 uses a GeoServer instance to access the Indicia database.', 'type' => 'checkbox', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_url', 'caption' => 'Service URL', 'description' => 'URL of the WMS service to display for this layer. Leave blank ' . 'if using GeoServer to access this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_layer', 'caption' => 'Layer Name', 'description' => 'Layer name of the WMS service layer. If using GeoServer to access this instance of Indicia, please ensure that the ' . 'detail_occurrences view is exposed as a feature type and the name and prefix is given here.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_filter_against', 'caption' => 'What to Filter Against?', 'description' => 'Select what to match this layer against. The layer shown will be those points which match the previously saved record ' . 'on the selected value.', 'type' => 'select', 'options' => array('none' => 'No Filter', 'taxa_taxon_list_id' => 'Species', 'external_key' => 'Species using External Key', 'survey_id' => 'Survey', 'sample_id' => 'Submitted data'), 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_filter_field', 'caption' => 'Field in WMS Dataset to Filter Against', 'description' => 'If using an external layer, specify the name of the field in the database table underlying the WMS layer which you want to filter against. ' . 'Leave blank for layers using the GeoServer set up for this instance of Indicia.', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_style', 'caption' => 'Style', 'description' => 'Name of the style to load for this layer (e.g. the style registered on GeoServer you want to use).', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false), array('name' => 'wms_dist_3_opacity', 'caption' => 'Opacity', 'description' => 'Opacity of layer 3, ranging from 0 (not visible) to 1 (fully opaque).', 'type' => 'textfield', 'group' => 'Distribution Layer 3', 'required' => false)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'layer_title_1', 'caption' => 'Layer Caption', 'default' => '{species}', 'description' => 'Caption to display for the species distribution map layer. Can contain replacement string {species}.', 'type' => 'textfield', 'group' => 'Distribution Layer 1'), array('name' => 'wms_feature_type_1', 'caption' => 'Feature Type', 'description' => 'Name of the feature type (layer) exposed in GeoServer to contain the occurrences. This must expose a taxon_meaning_id and a website_id attribute. ' . 'for the filtering. The detail_occurrences view is suitable for this purpose, though make sure you include the namespace, e.g. indicia:detail_occurrences. ' . 'The list of feature type names can be viewed by clicking on the Layer Preview link in the GeoServer installation.', 'type' => 'textfield', 'group' => 'Distribution Layer 1'), array('name' => 'wms_style_1', 'caption' => 'Style', 'description' => 'Name of the SLD style file that describes how the distribution points are shown. Leave blank if not sure.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 1'), array('name' => 'taxon_identifier_1', 'caption' => 'Taxon Identifier', 'description' => 'Meaning ID of the species to load, or external key if specified in the next option. Only use this if this page is for a fixed species, ' . 'else it can be left blank and the ID or key provided in the URL using a parameter called taxon.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 1'), array('name' => 'cql_filter_1', 'caption' => 'Distribution layer filter.', 'description' => 'Any additional filter to apply to the loaded data, using the CQL format. For example "record_status<>\'R\'"', 'type' => 'textarea', 'required' => false, 'group' => 'Distribution Layer 1'), array('fieldname' => 'taxon_list_id_1', 'label' => 'Species List', 'helpText' => 'The species list that species can be selected from.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'group' => 'Distribution Layer 1'), array('fieldname' => 'external_key_1', 'label' => 'External Key', 'helpText' => 'Check this box if the taxon is to be identified using the external key instead of the Meaning ID, either through the Taxon ID ' . 'box above or through the URL taxon parameter.', 'type' => 'checkbox', 'required' => false, 'group' => 'Distribution Layer 1'), array('name' => 'layer_title_2', 'caption' => 'Layer Caption', 'default' => '{species}', 'description' => 'Caption to display for the species distribution map layer. Can contain replacement string {species}.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 2'), array('name' => 'wms_feature_type_2', 'caption' => 'Feature Type', 'description' => 'Name of the feature type (layer) exposed in GeoServer to contain the occurrences. This must expose a taxon_meaning_id and a website_id attribute. ' . 'for the filtering. The detail_occurrences view is suitable for this purpose, though make sure you include the namespace, e.g. indicia:detail_occurrences. ' . 'The list of feature type names can be viewed by clicking on the Layer Preview link in the GeoServer installation.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 2'), array('name' => 'wms_style_2', 'caption' => 'Style', 'description' => 'Name of the SLD style file that describes how the distribution points are shown. Leave blank if not sure.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 2'), array('name' => 'taxon_identifier_2', 'caption' => 'Taxon Identifier', 'description' => 'Meaning ID of the species to load, or external key if specified in the next option. Only use this if this page is for a fixed species, ' . 'else it can be left blank and the ID or key provided in the URL using a parameter called taxon.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 2'), array('name' => 'cql_filter_2', 'caption' => 'Distribution layer filter.', 'description' => 'Any additional filter to apply to the loaded data, using the CQL format. For example "record_status<>\'R\'"', 'type' => 'textarea', 'required' => false, 'group' => 'Distribution Layer 2'), array('fieldname' => 'taxon_list_id_2', 'label' => 'Species List', 'helpText' => 'The species list that species can be selected from.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'required' => false, 'group' => 'Distribution Layer 2'), array('fieldname' => 'external_key_2', 'label' => 'External Key', 'helpText' => 'Check this box if the taxon is to be identified using the external key instead of the Meaning ID, either through the Taxon ID ' . 'box above or through the URL taxon parameter.', 'type' => 'checkbox', 'required' => false, 'group' => 'Distribution Layer 2'), array('name' => 'layer_title_3', 'caption' => 'Layer Caption', 'default' => '{species}', 'description' => 'Caption to display for the species distribution map layer. Can contain replacement string {species}.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 3'), array('name' => 'wms_feature_type_3', 'caption' => 'Feature Type', 'description' => 'Name of the feature type (layer) exposed in GeoServer to contain the occurrences. This must expose a taxon_meaning_id and a website_id attribute. ' . 'for the filtering. The detail_occurrences view is suitable for this purpose, though make sure you include the namespace, e.g. indicia:detail_occurrences. ' . 'The list of feature type names can be viewed by clicking on the Layer Preview link in the GeoServer installation.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 3'), array('name' => 'wms_style_3', 'caption' => 'Style', 'description' => 'Name of the SLD style file that describes how the distribution points are shown. Leave blank if not sure.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 3'), array('name' => 'taxon_identifier_3', 'caption' => 'Taxon Identifier', 'description' => 'Meaning ID of the species to load, or external key if specified in the next option. Only use this if this page is for a fixed species, ' . 'else it can be left blank and the ID or key provided in the URL using a parameter called taxon.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer 3'), array('name' => 'cql_filter_3', 'caption' => 'Distribution layer filter.', 'description' => 'Any additional filter to apply to the loaded data, using the CQL format. For example "record_status<>\'R\'"', 'type' => 'textarea', 'required' => false, 'group' => 'Distribution Layer 3'), array('fieldname' => 'taxon_list_id_3', 'label' => 'Species List', 'helpText' => 'The species list that species can be selected from.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'required' => false, 'group' => 'Distribution Layer 3'), array('fieldname' => 'external_key_3', 'label' => 'External Key', 'helpText' => 'Check this box if the taxon is to be identified using the external key instead of the Meaning ID, either through the Taxon ID ' . 'box above or through the URL taxon parameter.', 'type' => 'checkbox', 'required' => false, 'group' => 'Distribution Layer 3'), array('name' => 'refresh_timer', 'caption' => 'Automatic reload seconds', 'description' => 'Set this value to the number of seconds you want to elapse before the report will be automatically reloaded, useful for ' . 'displaying live data updates at BioBlitzes. Combine this with Page to reload to define a sequence of pages that load in turn.', 'type' => 'int', 'required' => false), array('name' => 'load_on_refresh', 'caption' => 'Page to reload', 'description' => 'Provide the full URL of a page to reload after the number of seconds indicated above.', 'type' => 'string', 'required' => false)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), array(array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326).', 'type' => 'string', 'group' => 'Map'), array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'group' => 'User Interface'), array('name' => 'location_ctrl', 'caption' => 'Location Control Type', 'description' => 'The type of control that will be available to select a location.', 'type' => 'select', 'options' => array('location_autocomplete' => 'Autocomplete', 'location_select' => 'Select'), 'group' => 'User Interface'), array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'list_id', 'caption' => 'Species List ID', 'description' => 'The Indicia ID for the species list that species can be selected from.', 'type' => 'int'), array('name' => 'uid_attr_id', 'caption' => 'User ID Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the CMS User ID.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'username_attr_id', 'caption' => 'Username Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s username.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'email_attr_id', 'caption' => 'Email Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s email.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'first_name_attr_id', 'caption' => 'First Name Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s first name.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'surname_attr_id', 'caption' => 'Surname Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s surname.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'phone_attr_id', 'caption' => 'Phone Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s phone.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'biotope_attr_id', 'caption' => 'Biotope Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Biotope.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'voucher_attr_id', 'caption' => 'Voucher Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores whether a voucher specimen was taken.', 'type' => 'smpAttr', 'group' => 'Sample Attributes'), array('name' => 'checklist_attributes', 'caption' => 'Species Checklist Grid Contents', 'description' => 'List of Indicia IDs for occurrence attributes included in the species checklist grid, comma separated.', 'type' => 'string', 'group' => 'Species Checklist Attributes'), array('name' => 'georefPreferredArea', 'caption' => 'Preferred area for georeferencing.', 'description' => 'Preferred area to look within when trying to resolve a place name. For example set this to the region name you are recording within.', 'type' => 'string', 'default' => 'gb', 'group' => 'Map'), array('name' => 'georefCountry', 'caption' => 'Preferred country for georeferencing.', 'description' => 'Preferred country to look within when trying to resolve a place name.', 'type' => 'string', 'default' => 'United Kingdom', 'group' => 'Map')));
     return $retVal;
 }
Example #21
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'group' => 'User Interface'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component goes on a new line and is nested inside the previous component where appropriate. The following types of ' . "component can be specified. <br/>" . "<strong>=tab name=</strong> is used to specify the name of a tab. <br/>" . "<strong>=*=</strong> indicates a placeholder for putting any custom attribute tabs not defined in this form structure. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[species]</strong> - a species grid or input control<br/>" . "&nbsp;&nbsp;<strong>[species_attributes]</strong> - any custom attributes for the occurrence, if not using the grid<br/>" . "&nbsp;&nbsp;<strong>[date]</strong><br/>" . "&nbsp;&nbsp;<strong>[map]</strong><br/>" . "&nbsp;&nbsp;<strong>[spatial reference]</strong><br/>" . "&nbsp;&nbsp;<strong>[location name]</strong><br/>" . "&nbsp;&nbsp;<strong>[location autocomplete</strong>br/>" . "&nbsp;&nbsp;<strong>[location select]</strong><br/>" . "&nbsp;&nbsp;<strong>[place search]</strong><br/>" . "&nbsp;&nbsp;<strong>[record status]</strong><br/>" . "&nbsp;&nbsp;<strong>[sample comment]</strong>. <br/>" . "<strong>@option=value</strong> on the line(s) following any control allows you to override one of the options passed to the control. The options " . "available depend on the control. For example @label=Abundance would set the untranslated label of a control to Abundance. " . "Other common options include helpText (set to a piece of additional text to display alongside the control) and class (to add css " . "classes to the control such as control-width-3). <br/>" . "<strong>[*]</strong> is used to make a placeholder for putting any custom attributes that should be inserted into the current tab.<br/>" . "<strong>?help text?</strong> is used to define help text to add to the tab, e.g. ?Enter the name of the site.?", 'type' => 'textarea', 'default' => "=Species=\r\n" . "?Please enter the species you saw and any other information about them.?\r\n" . "[species]\r\n" . "[species attributes]\r\n" . "[*]\r\n" . "=Place=\r\n" . "?Please provide the spatial reference of the record. You can enter the reference directly, or search for a place then click on the map.?\r\n" . "[place search]\r\n" . "[spatial reference]\r\n" . "[map]\r\n" . "[*]\r\n" . "=Other Information=\r\n" . "?Please provide the following additional information.?\r\n" . "[date]\r\n" . "[sample comment]\r\n" . "[*]\r\n" . "=*=", 'group' => 'User Interface'), array('name' => 'grid_report', 'caption' => 'Grid Report', 'description' => 'Name of the report to use to populate the grid for selecting existing data from. The report must return a sample_id ' . 'field for linking to the data entry form. As a starting point, try reports_for_prebuilt_forms/simple_occurrence_list_1 or ' . 'reports_for_prebuilt_forms/simple_sample_list_1 for a list of occurrences or samples respectively.', 'type' => 'string', 'group' => 'User Interface', 'default' => 'reports_for_prebuilt_forms/simple_sample_list_1'), array('name' => 'save_button_below_all_pages', 'caption' => 'Save button below all pages?', 'description' => 'Should the save button be present below all the pages (checked), or should it be only on the last page (unchecked)? ' . 'Only applies to the Tabs interface style.', 'type' => 'boolean', 'default' => 'false', 'group' => 'User Interface'), array('name' => 'multiple_occurrence_mode', 'caption' => 'Single or multiple occurrences per sample', 'description' => 'Method of data entry, via a grid of occurrences, one occurrence at a time, or allow the user to choose.', 'type' => 'select', 'options' => array('single' => 'Only allow entry of one occurrence at a time', 'multi' => 'Only allow entry of multiple occurrences using a grid', 'either' => 'Allow the user to choose single or multiple occurrence data entry.'), 'default' => 'multi', 'group' => 'Species'), array('name' => 'species_ctrl', 'caption' => 'Single Species Selection Control Type', 'description' => 'The type of control that will be available to select a single species.', 'type' => 'select', 'options' => array('autocomplete' => 'Autocomplete', 'select' => 'Select', 'listbox' => 'List box', 'radio_group' => 'Radio group', 'treeview' => 'Treeview', 'tree_browser' => 'Tree browser'), 'default' => 'autocomplete', 'group' => 'Species'), array('name' => 'occurrence_comment', 'caption' => 'Occurrence Comment', 'description' => 'Should an input box be present for a comment against each occurrence?', 'type' => 'boolean', 'default' => false, 'group' => 'Species'), array('name' => 'occurrence_images', 'caption' => 'Occurrence Images', 'description' => 'Should occurrences allow images to be uploaded?', 'type' => 'boolean', 'default' => false, 'group' => 'Species'), array('name' => 'list_id', 'caption' => 'Initial Species List ID', 'description' => 'The Indicia ID for the species list that species can be selected from. This list is pre-populated ' . 'into the grid when doing grid based data entry.', 'type' => 'int', 'required' => false, 'group' => 'Species'), array('name' => 'extra_list_id', 'caption' => 'Extra Species List ID', 'description' => 'The Indicia ID for the second species list that species can be selected from. This list is available for additional ' . 'taxa being added to the grid when doing grid based data entry.', 'type' => 'int', 'required' => false, 'group' => 'Species'), array('name' => 'species_names_filter', 'caption' => 'Species Names Filter', 'description' => 'Select the filter to apply to the species names which are available to choose from.', 'type' => 'select', 'options' => array('all' => 'All names are available', 'language' => 'Only allow selection of species using common names in the user\'s language', 'preferred' => 'Only allow selection of species using names which are flagged as preferred'), 'default' => 'autocomplete', 'group' => 'Species'), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326).', 'type' => 'string', 'group' => 'Map'), array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'defaults', 'caption' => 'Default Values', 'description' => 'Supply default values for each field as required. On each line, enter fieldname=value. For custom attributes, ' . 'the fieldname is the untranslated caption. For other fields, it is the model and fieldname, e.g. occurrence.record_status. ' . 'For date fields, use today to dynamically default to today\'s date. NOTE, currently only supports occurrence:record_status and ' . 'sample:date but will be extended in future.', 'type' => 'textarea', 'default' => 'occurrence:record_status=C')));
     return $retVal;
 }
    /**
     * Get the list of parameters for this form.
     * @return array List of parameters that this form requires.
     */
    public static function get_parameters()
    {
        return array_merge(iform_map_get_map_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'default' => 'one_page', 'group' => 'User Interface'), array('name' => 'structure', 'caption' => 'Form Structure', 'description' => 'Define the structure of the form. Each component must be placed on a new line. <br/>' . "The following types of component can be specified. <br/>" . "<strong>[control name]</strong> indicates a predefined control is to be added to the form with the following predefined controls available: <br/>" . "&nbsp;&nbsp;<strong>[params]</strong> - a parameters input form for the reports/map<br/>" . "&nbsp;&nbsp;<strong>[standard params]</strong> - a standard params filter bar. Use with reports that support standard params.<br/>" . "&nbsp;&nbsp;<strong>[map]</strong> - outputs report content as a map.<br/>" . "&nbsp;&nbsp;<strong>[reportgrid]</strong> - outputs report content in tabular form.<br/>" . "&nbsp;&nbsp;<strong>[reportchart]</strong> - outputs report content in chart form.<br/>" . "<strong>=tab/page name=</strong> is used to specify the name of a tab or wizard page (alpha-numeric characters only). " . "If the page interface type is set to one page, then each tab/page name is displayed as a seperate section on the page. " . "Note that in one page mode, the tab/page names are not displayed on the screen.<br/>" . "<strong>|</strong> is used to split a tab/page/section into two columns, place a [control name] on the previous line and following line to split.<br/>", 'type' => 'textarea', 'default' => '[params]
@dataSource=library/occurrences/explore_list
=Map=
[map]
@dataSource=library/occurrences/explore_list
=Records=
[report_grid]
@dataSource=library/occurrences/explore_list', 'group' => 'User Interface'), array('name' => 'param_presets', 'caption' => 'Preset parameter values', 'description' => 'To provide preset values for any report parameter and avoid the user having to enter them, enter each parameter into this ' . 'box one per line. Each parameter is followed by an equals then the value, e.g. survey_id=6. You can use {user_id} as a value which will be replaced by the ' . 'user ID from the CMS logged in user or {username} as a value replaces with the logged in username. If you have installed the Profile module then you can also ' . 'use {profile_*} to refer to the value of a field in the user\'s profile (replace the asterisk to make the field name match the field created in the profile). ' . 'Parameters with preset values are not shown in the parameters form and therefore can\'t be overridden by the user.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Settings', 'default' => "smpattrs=\noccattrs=\nlocation_id={profile_location}\ntaxon_groups={profile_taxon_groups}\ncurrentUser={profile_indicia_user_id}"), array('name' => 'param_defaults', 'caption' => 'Default parameter values', 'description' => 'To provide default values for any report parameter which allow the report to run initially but can be overridden, enter each parameter into this ' . 'box one per line. Each parameter is followed by an equals then the value, e.g. survey_id=6. You can use {user_id} as a value which will be replaced by the ' . 'user ID from the CMS logged in user or {username} as a value replaces with the logged in username. If you have installed the Profile module then you can also ' . 'use {profile_*} to refer to the value of a field in the user\'s profile (replace the asterisk to make the field name match the field created in the profile). ' . 'Unlike preset parameter values, parameters referred to by default parameter values are displayed in the parameters form and can therefore be changed by the user.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Settings', 'default' => "idlist=\nsearchArea="), array('name' => 'param_ignores', 'caption' => 'Default params to exclude from the form', 'description' => 'Provide a list of the parameter names which are in the Default Parameter Values but should not appear in the parameters form. An example usage of this ' . 'is to provide parameters that can be overridden via a URL parameter.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Settings'), array('name' => 'columns_config_list', 'caption' => 'Columns Configuration List', 'description' => 'For each report on the user interface output, define a list of columns with various ' . 'configuration options when you want to override the default output of the report. The ordering of each ' . 'set of columns should match the ordering of each [reportgrid] in the User Interface configuration. ', 'type' => 'jsonwidget', 'schema' => '{
"type":"seq",
"title":"Column Configuration List",
"sequence":
[
  {
    "type":"seq",
    "title":"Columns List",
    "sequence":
    [
      {
        "type":"map",
        "title":"Column",
        "mapping": {
          "fieldname": {"type":"str","desc":"Name of the field to output in this column. Does not need to be specified when using the template option."},
          "display": {"type":"str","desc":"Caption of the column, which defaults to the fieldname if not specified."},
          "actions": {
            "type":"seq",
            "title":"Actions List",
            "sequence": [{
              "type":"map",
              "title":"Actions",
              "desc":"List of actions to make available for each row in the grid.",
              "mapping": {
                "caption": {"type":"str","desc":"Display caption for the action\'s link."},
                "img": {"type":"str","desc":"Set img to the path to an image to use an image for the action instead of a text caption - the caption ' . 'then becomes the image\'s title. The image path can contain {rootFolder} to be replaced by the root folder of the site, in this ' . 'case it excludes the path parameter used in Drupal when dirty URLs are used (since this is a direct link to a URL)."},
                "visibility_field": {"type":"str","desc":"Optional name of a field in the data which contains true or false to define the visibility of this action."},
                "url": {"type":"str","desc":"A url that the action link will point to, unless overridden by JavaScript. The url can contain tokens which ' . 'will be subsituted for field values, e.g. for http://www.example.com/image/{id} the {id} is replaced with a field called id in the current row. ' . 'Can also use the subsitution {currentUrl} to link back to the current page, {rootFolder} to represent the folder on the server that the current PHP page is running from, and ' . '{imageFolder} for the image upload folder"},
                "urlParams": {
                  "type":"map",
                  "subtype":"str",
                  "desc":"List of parameters to append to the URL link, with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
                },
                "class": {"type":"str","desc":"CSS class to attach to the action link."},
                "javascript": {"type":"str","desc":"JavaScript that will be run when the link is clicked. Can contain field value substitutions ' . 'such as {id} which is replaced by the value of the id field for the current row. Because the javascript may pass the field values as parameters to functions, ' . 'there are escaped versions of each of the replacements available for the javascript action type. Add -escape-quote or ' . '-escape-dblquote to the fieldname. For example this would be valid in the action javascript: foo(\\"{bar-escape-dblquote}\\"); ' . 'even if the field value contains a double quote which would have broken the syntax."}
              }
            }]
          },
          "visible": {"type":"bool","desc":"Should this column be shown? Hidden columns can still be used in templates or actions."},
          "template": {"type":"txt","desc":"Allows you to create columns that contain dynamic content using a template, rather than just the output ' . 'of a field. The template text can contain fieldnames in braces, which will be replaced by the respective field values. ' . 'Note that template columns cannot be sorted by clicking grid headers." },
          "json": {"type":"bool","desc":"Set to true if the column contains a json string object with properties that can be decoded to give strings that ' . 'can be used as replacements in a template."},
          "update": {
            "type":"map",
            "title":"Update Specification",
            "desc":"Defines the configuration to allow this field to update the database via AJAX. This assumes assume that we have access through iform_ajaxproxy.",
            "mapping": {
              "permission": {"type":"str","desc":"The CMS permission that the user must have in order for the field to be editable. If left blank then all users may update it."},
              "method": {"type":"str","desc":"Ajax proxy method, e.g. loc"},
              "tablename": {"type":"str","desc":"Submission table name: used to create the form field names from which the submission is built; e.g. location"},
              "fieldname": {"type":"str","desc":"Field name for this field in submission; e.g. code"},
              "website_id": {"type":"str","desc":"website_id"},
              "class": {"type":"str","desc":"Class name to apply to input control."},
              "parameters": {
                "type":"map",
                "subtype":"str",
                "desc":"List of parameters to copy from the report to the submission; with field value replacements such as {id} begin replaced ' . 'by the value of the id field for the current row."
              }
            }
          }
        }
      }
    ]
  }
]
}', 'required' => false, 'group' => 'Report Settings'), array('name' => 'high_volume', 'caption' => 'High volume reporting', 'description' => 'Tick this box to enable caching which prevents reporting pages with a high number of hits from generating ' . 'excessive server load. Currently compatible only with reporting pages that do not integrate with the user profile.', 'type' => 'boolean', 'default' => false, 'required' => false), array('name' => 'sharing', 'caption' => 'Record sharing mode', 'description' => 'Tick this box to enable caching which prevents reporting pages with a high number of hits from generating ' . 'excessive server load. Currently compatible only with reporting pages that do not integrate with the user profile.', 'type' => 'select', 'options' => array('reporting' => 'Reporting', 'peer_review' => 'Peer review', 'verification' => 'Verification', 'data_flow' => 'Data flow', 'moderation' => 'Moderation', 'me' => 'My records only'), 'default' => 'reporting', 'group' => 'Report Settings')));
    }
Example #23
0
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'interface', 'caption' => 'Interface Style Option', 'description' => 'Choose the style of user interface, either dividing the form up onto separate tabs, ' . 'wizard pages or having all controls on a single page.', 'type' => 'select', 'options' => array('tabs' => 'Tabs', 'wizard' => 'Wizard', 'one_page' => 'All One Page'), 'group' => 'User Interface', 'default' => 'tabs'), array('name' => 'tabProgress', 'caption' => 'Show Progress through Wizard/Tabs', 'description' => 'For Wizard or Tabs interfaces, check this option to show a progress summary above the controls.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'force_next_previous', 'caption' => 'Next/previous buttons shown in tab mode?', 'description' => 'Should the wizard style Next & Previous buttons be shown even when in tab mode? This option does ' . 'not apply when the option "Submit button below all pages" is set.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'clientSideValidation', 'caption' => 'Client Side Validation', 'description' => 'Enable client side validation of controls using JavaScript.', 'type' => 'boolean', 'default' => true, 'required' => false, 'group' => 'User Interface'), array('name' => 'attribute_termlist_language_filter', 'caption' => 'Internationalise lookups', 'description' => 'In lookup custom attribute controls, use the language associated with the current user account to filter to show only the terms in that language.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'no_grid', 'caption' => 'Skip initial grid of data', 'description' => 'If checked, then when initially loading the form the data entry form is immediately displayed, as opposed to ' . 'the default of displaying a grid of the user\'s data which they can add to. By ticking this box, it is possible to use this form ' . 'for data entry by anonymous users though they cannot then list the data they have entered.', 'type' => 'boolean', 'default' => true, 'required' => false, 'group' => 'User Interface'), array('name' => 'grid_num_rows', 'caption' => 'Number of rows displayed in grid', 'description' => 'Number of rows display on each page of the grid.', 'type' => 'int', 'default' => 10, 'group' => 'User Interface'), array('name' => 'save_button_below_all_pages', 'caption' => 'Submit button below all pages?', 'description' => 'Should the submit button be present below all the pages (checked), or should it be only on the last page (unchecked)? ' . 'Only applies to the Tabs interface style.', 'type' => 'boolean', 'default' => false, 'required' => false, 'group' => 'User Interface'), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326). ' . 'Set to "default" to use the settings defined in the IForm Settings page.', 'type' => 'string', 'default' => 'default', 'group' => 'Other Map Settings'), array('name' => 'survey_id', 'caption' => 'Survey', 'description' => 'The survey that data will be posted into and that defines custom attributes.', 'type' => 'select', 'table' => 'survey', 'captionField' => 'title', 'valueField' => 'id', 'siteSpecific' => true), array('name' => 'high_volume', 'caption' => 'High volume reporting', 'description' => 'Tick this box to enable caching which prevents reporting pages with a high number of hits from generating ' . 'excessive server load. Currently compatible only with reporting pages that do not integrate with the user profile.', 'type' => 'boolean', 'default' => false, 'required' => false)));
     return $retVal;
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), array(array('fieldname' => 'list_id', 'label' => 'Species list ', 'helpText' => 'The species list that species can be selected from.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'required' => false, 'group' => 'Lookups', 'siteSpecific' => TRUE), array('name' => 'full_lists', 'caption' => 'Available full lists', 'description' => 'Tick the species lists that allow users to receive alerts for any species in the list.', 'type' => 'checkbox_group', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'required' => FALSE, 'group' => 'Lookups', 'siteSpecific' => TRUE), array('fieldname' => 'location_type_id', 'label' => 'Location type', 'helpText' => 'The location type available to filter against. This location type must be indexed by the ' . 'warehouse\'s spatial_index_builder module.', 'type' => 'checkbox_group', 'table' => 'termlists_term', 'valueField' => 'id', 'captionField' => 'term', 'extraParams' => array('termlist_external_key' => 'indicia:location_types'), 'required' => FALSE, 'group' => 'Lookups', 'siteSpecific' => TRUE)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'survey_id', 'caption' => 'Survey', 'description' => 'The survey that data will be posted into.', 'type' => 'select', 'table' => 'survey', 'captionField' => 'title', 'valueField' => 'id', 'siteSpecific' => true), array('name' => 'occurrence_attribute_ids', 'caption' => 'Occurrence Attribute', 'description' => 'Comma separated list of attribute IDs to be used in the species grids.', 'type' => 'string', 'required' => true, 'siteSpecific' => true), array('name' => 'percent_width', 'caption' => 'Map Percent Width', 'description' => 'The percentage width that the map will take on the front page.', 'type' => 'int', 'required' => true, 'default' => 50, 'siteSpecific' => true), array('name' => 'species_tab_1', 'caption' => 'Species Tab 1 Title', 'description' => 'The title to be used on the species checklist for the main tab.', 'type' => 'string', 'required' => true, 'group' => 'Species Tab 1'), array('name' => 'taxon_list_id_1', 'caption' => 'All Species List', 'description' => 'The species checklist used to populate the grid on the main grid when All Species is selected. Also used to drive the autocomplete when other options selected.', 'type' => 'select', 'table' => 'taxon_list', 'captionField' => 'title', 'valueField' => 'id', 'siteSpecific' => true, 'group' => 'Species Tab 1'), array('name' => 'taxon_filter_field_1', 'caption' => 'All Species List: Field used to filter taxa', 'description' => 'If you want to allow recording for just part of the selected All Species List, then select which field you will ' . 'use to specify the filter by.', 'type' => 'select', 'options' => array('taxon' => 'Taxon', 'taxon_meaning_id' => 'Taxon Meaning ID', 'taxon_group' => 'Taxon group title'), 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 1'), array('name' => 'taxon_filter_1', 'caption' => 'All Species List: Taxon filter items', 'description' => 'When filtering the list of available taxa, taxa will not be available for recording unless they match one of the ' . 'values you input in this box. Enter one value per line. E.g. enter a list of taxon group titles if you are filtering by taxon group.', 'type' => 'textarea', 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 1'), array('name' => 'species_tab_2', 'caption' => 'Species Tab 2 Title', 'description' => 'The title to be used on the species checklist for the second tab.', 'type' => 'string', 'required' => false, 'group' => 'Species Tab 2'), array('name' => 'taxon_list_id_2', 'caption' => 'Second Tab Species List', 'description' => 'The species checklist used to drive the autocomplete in the optional second grid. If not provided, the second grid and its tab are omitted.', 'type' => 'select', 'table' => 'taxon_list', 'captionField' => 'title', 'valueField' => 'id', 'required' => false, 'siteSpecific' => true, 'group' => 'Species Tab 2'), array('name' => 'taxon_filter_field_2', 'caption' => 'Second Tab Species List: Field used to filter taxa', 'description' => 'If you want to allow recording for just part of the selected Species List, then select which field you will ' . 'use to specify the filter by.', 'type' => 'select', 'options' => array('taxon' => 'Taxon', 'taxon_meaning_id' => 'Taxon Meaning ID', 'taxon_group' => 'Taxon group title'), 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 2'), array('name' => 'taxon_filter_2', 'caption' => 'Second Tab Species List: Taxon filter items', 'description' => 'When filtering the list of available taxa, taxa will not be available for recording unless they match one of the ' . 'values you input in this box. Enter one value per line. E.g. enter a list of taxon group titles if you are filtering by taxon group.', 'type' => 'textarea', 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 2'), array('name' => 'species_tab_3', 'caption' => 'Species Tab 3 Title', 'description' => 'The title to be used on the species checklist for the third tab.', 'type' => 'string', 'required' => false, 'group' => 'Species Tab 3'), array('name' => 'taxon_list_id_3', 'caption' => 'Third Tab Species List', 'description' => 'The species checklist used to drive the autocomplete in the optional third grid. If not provided, the third grid and its tab are omitted.', 'type' => 'select', 'table' => 'taxon_list', 'captionField' => 'title', 'valueField' => 'id', 'required' => false, 'siteSpecific' => true, 'group' => 'Species Tab 3'), array('name' => 'taxon_filter_field_3', 'caption' => 'Third Tab Species List: Field used to filter taxa', 'description' => 'If you want to allow recording for just part of the selected Species List, then select which field you will ' . 'use to specify the filter by.', 'type' => 'select', 'options' => array('taxon' => 'Taxon', 'taxon_meaning_id' => 'Taxon Meaning ID', 'taxon_group' => 'Taxon group title'), 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 3'), array('name' => 'taxon_filter_3', 'caption' => 'Third Tab Species List: Taxon filter items', 'description' => 'When filtering the list of available taxa, taxa will not be available for recording unless they match one of the ' . 'values you input in this box. Enter one value per line. E.g. enter a list of taxon group titles if you are filtering by taxon group.', 'type' => 'textarea', 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 3'), array('name' => 'species_tab_4', 'caption' => 'Fourth Species Tab Title', 'description' => 'The title to be used on the species checklist for the fourth tab.', 'type' => 'string', 'required' => false, 'group' => 'Species Tab 4'), array('name' => 'taxon_list_id_4', 'caption' => 'Fourth Tab Species List', 'description' => 'The species checklist used to drive the autocomplete in the optional fourth grid. If not provided, the fourth grid and its tab are omitted.', 'type' => 'select', 'table' => 'taxon_list', 'captionField' => 'title', 'valueField' => 'id', 'required' => 'false', 'siteSpecific' => true, 'group' => 'Species Tab 4'), array('name' => 'taxon_filter_field_4', 'caption' => 'Fourth Tab Species List: Field used to filter taxa', 'description' => 'If you want to allow recording for just part of the selected Species List, then select which field you will ' . 'use to specify the filter by.', 'type' => 'select', 'options' => array('taxon' => 'Taxon', 'taxon_meaning_id' => 'Taxon Meaning ID', 'taxon_group' => 'Taxon group title'), 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 4'), array('name' => 'taxon_filter_4', 'caption' => 'Fourth Tab Species List: Taxon filter items', 'description' => 'When filtering the list of available taxa, taxa will not be available for recording unless they match one of the ' . 'values you input in this box. Enter one value per line. E.g. enter a list of taxon group titles if you are filtering by taxon group.', 'type' => 'textarea', 'siteSpecific' => true, 'required' => false, 'group' => 'Species Tab 4'), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326). ' . 'Set to "default" to use the settings defined in the IForm Settings page.', 'type' => 'string', 'default' => 'default', 'group' => 'Other Map Settings'), array('name' => 'locationType', 'caption' => 'Restrict locations to type', 'description' => 'When choosing the parent location, restrict the locations in the drop down to a particular location type.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:location_types')), array('name' => 'custom_attribute_options', 'caption' => 'Options for custom attributes', 'description' => 'A list of additional options to pass through to custom attributes, one per line. Each option should be specified as ' . 'the attribute name followed by | then the option name, followed by = then the value. For example, smpAttr:1|class=control-width-5.', 'type' => 'textarea', 'required' => false, 'siteSpecific' => true), array('name' => 'my_obs_page', 'caption' => 'Path to My Observations', 'description' => 'Path used to access the My Observations page after a successful submission.', 'type' => 'text_input', 'required' => true, 'siteSpecific' => true)));
 }
Example #26
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     return array_merge(iform_report_get_report_parameters(), iform_map_get_map_parameters(), array(array('name' => 'layer_picker', 'caption' => 'Include Layer Picker', 'description' => 'Choose whether to include a layer picker and where to include it. Use the ' . 'CSS id map-layer-picker for styling. Note that including the layer picker automatically removes the ' . 'layerSwitcher control from the map.', 'type' => 'select', 'required' => true, 'options' => array('none' => 'Exclude the layer picker', 'before' => 'Include the layer picker before the map.', 'after' => 'Include the layer picker after the map.'), 'default' => 'none', 'group' => 'Report Map Settings'), array('name' => 'legend', 'caption' => 'Include Legend', 'description' => 'Choose whether to include a legend and where to include it. Use the ' . 'CSS id map-legend for styling.', 'type' => 'select', 'required' => true, 'options' => array('none' => 'Exclude the legend', 'before' => 'Include the legend before the map.', 'after' => 'Include the legend after the map.'), 'default' => 'after', 'group' => 'Report Map Settings'), array('name' => 'map_toolbar_pos', 'caption' => 'Map Toolbar Position', 'description' => 'Specify the position of the map toolbar. Either use \'map\' to place it in the corner of the map, ' . '\\top\' to place it at the top, \'bottom\' to place it at the bottom, or provide the CSS ID of a div element on the page that the ' . 'toolbar should be added to.', 'type' => 'text_input', 'required' => true, 'default' => 'top', 'group' => 'Report Map Settings'), array('name' => 'click_on_map_mode', 'caption' => 'Click to query map', 'description' => 'Choose the behaviour you want when clicking on distribution points on the map. The output can display as a popup, ' . 'or can be loaded into the div specified in the next parameter. If you select to filter Indicia ' . 'report grids, then this assumes you have built a page containing other report grids e.g. by following ' . '<a href="http://code.google.com/p/indicia/wiki/DrupalDashboardReporting">this tutorial</a>. The report you are using must ' . 'have a parameter of type "idlist" which allows the report to filter to the selection on the map.', 'type' => 'select', 'options' => array('none' => 'No action', 'popup' => 'Display output in a popup', 'div' => 'Display output in a div', 'report' => 'Filter any Indicia report grids with the same report group setting'), 'default' => 'popup', 'group' => 'Report Map Settings'), array('name' => 'click_on_map_div', 'caption' => 'Click to query map output div', 'description' => 'If you choose to display a data grid when clicking on the map distribution points, specify the name of the div ' . 'to display the output in here. ', 'type' => 'text_input', 'required' => false, 'group' => 'Report Map Settings'), array('name' => 'click_on_map_columns', 'caption' => 'Columns displayed on click', 'description' => 'Specify each report column you want to output when clicking on the map on a separate line. Each column must be represented as a key=value pair ' . 'with the column name as the key and the display label as the value.', 'type' => 'textarea', 'required' => false, 'group' => 'Report Map Settings'), array('name' => 'geoserver_layer', 'caption' => 'GeoServer Layer', 'description' => 'For improved mapping performance, specify a layer on GeoServer which ' . 'has the same attributes and output as the report file. Then the report map can output ' . 'the contents of this layer filtered by the report parameters, rather than build a layer ' . 'from the report data.', 'type' => 'text_input', 'required' => false, 'group' => 'WMS Mapping'), array('name' => 'geoserver_layer_style', 'caption' => 'GeoServer Layer Style', 'description' => 'Optional name of the SLD file available on GeoServer which is to be applied to the GeoServer layer.', 'type' => 'text_input', 'required' => false, 'group' => 'WMS Mapping'), array('name' => 'cql_template', 'caption' => 'CQL Filter Template', 'description' => 'Use with the geoserver_layer to provide a template for the CQL to filter the layer ' . 'according to the parameters of the report. For example, if you are using the report called ' . '<em>map_occurrences_by_survey</em> then you can set the geoserver_layer to the indicia:detail_occurrences ' . 'layer and set this to <em>INTERSECTS(geom, #searchArea#) AND survey_id=#survey#</em>.', 'type' => 'textarea', 'required' => false, 'group' => 'WMS Mapping')));
 }
Example #27
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'hide_fields', 'caption' => 'Fields to Hide', 'description' => 'List of data fields to hide, one per line. ', 'type' => 'textarea', 'default' => "CMS User ID\nEmail\nFirst name\nLast name\nSurname")));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  * @todo: Implement this method
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), array(array('name' => 'include_layer_list', 'caption' => 'Include Legend', 'description' => 'Should a legend be shown on the page?', 'type' => 'boolean', 'required' => false, 'default' => true, 'group' => 'Other Map Settings'), array('name' => 'include_layer_list_switchers', 'caption' => 'Include Layer switchers', 'description' => 'Should the legend include checkboxes and/or radio buttons for controlling layer visibility?', 'type' => 'boolean', 'required' => false, 'default' => true, 'group' => 'Other Map Settings'), array('name' => 'include_layer_list_types', 'caption' => 'Types of layer to include in legend', 'description' => 'Select which types of layer to include in the legend.', 'type' => 'select', 'options' => array('base,overlay' => 'All', 'base' => 'Base layers only', 'overlay' => 'Overlays only'), 'default' => 'base,overlay', 'group' => 'Other Map Settings'), array('name' => 'layer_title', 'caption' => 'Layer Caption', 'description' => 'Caption to display for the species distribution map layer. Can contain replacement strings {species} or {survey}.', 'type' => 'textfield', 'group' => 'Distribution Layer'), array('name' => 'wms_feature_type', 'caption' => 'Feature Type', 'description' => 'Name of the feature type (layer) exposed in GeoServer to contain the occurrences. This must expose a taxon_meaning_id and a website_id attribute. ' . 'for the filtering. The detail_occurrences view is suitable for this purpose, though make sure you include the namespace, e.g. indicia:detail_occurrences. ' . 'The list of feature type names can be viewed by clicking on the Layer Preview link in the GeoServer installation.', 'type' => 'textfield', 'group' => 'Distribution Layer'), array('name' => 'wms_style', 'caption' => 'Style', 'description' => 'Name of the SLD style file that describes how the distribution points are shown. Leave blank if not sure.', 'type' => 'textfield', 'required' => false, 'group' => 'Distribution Layer'), array('name' => 'taxon_identifier', 'caption' => 'Taxon Identifier', 'description' => 'Meaning ID of the species to load, or external key if specified in the next option. Only use this if this page is for a fixed species, ' . 'else it can be left blank and the ID or key provided in the URL using a parameter called taxon.', 'required' => false, 'type' => 'textfield', 'group' => 'Distribution Layer'), array('name' => 'show_all_species', 'caption' => 'Show all species', 'description' => 'Set this flag to show a map of all species occurrences rather than just one species', 'type' => 'boolean', 'default' => false, 'group' => 'Distribution Layer', 'required' => false), array('name' => 'click_on_occurrences_mode', 'caption' => 'Click on Occurrences Mode', 'description' => 'This option allows you to enable querying the occurrences under a point by clicking on the map, displaying the results in a div or popup. ' . 'For this to work, the Indicia Proxy module must be enabled in Drupal and the IForm Proxy Passthrough permission must be granted to the Drupal user roles that ' . 'are able to access the map.', 'type' => 'select', 'options' => array('none' => 'None', 'popup' => 'Popup', 'div' => 'HTML Div'), 'default' => 'none', 'group' => 'Click to Query Occurrences'), array('name' => 'click_columns', 'caption' => 'Click Columns', 'description' => 'List of the columns to display in the click results, one line per column using format <em>column name</em>=<em>column title</em>. Leave blank for all.', 'required' => false, 'type' => 'textarea', 'default' => "taxon=Species\r\n" . "entered_sref=Grid Ref\r\n" . "date_start=Date", 'group' => 'Click to Query Occurrences'), array('name' => 'cql_filter', 'caption' => 'Distribution layer filter.', 'description' => 'Any additional filter to apply to the loaded data, using the CQL format. For example "record_status<>\'R\'"', 'type' => 'textarea', 'group' => 'Distribution Layer', 'required' => false), array('fieldname' => 'external_key', 'label' => 'External Key', 'helpText' => 'Check this box if the taxon is to be identified using the external key instead of the Meaning ID, either through the Taxon ID ' . 'box above or through the URL taxon parameter.', 'type' => 'checkbox', 'group' => 'Distribution Layer', 'required' => 'false'), array('fieldname' => 'taxon_list_id', 'label' => 'Species List used to find external key', 'helpText' => 'If External Key is ticked, then choose the list which has the external key set for each of the taxa that might be displayed.', 'type' => 'select', 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'group' => 'Distribution Layer', 'required' => false), array('name' => 'refresh_timer', 'caption' => 'Automatic reload seconds', 'description' => 'Set this value to the number of seconds you want to elapse before the report will be automatically reloaded, useful for ' . 'displaying live data updates at BioBlitzes. Combine this with Page to reload to define a sequence of pages that load in turn.', 'type' => 'int', 'required' => false), array('name' => 'load_on_refresh', 'caption' => 'Page to reload', 'description' => 'Provide the full URL of a page to reload after the number of seconds indicated above.', 'type' => 'string', 'required' => false)));
 }
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     return array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'survey_id', 'caption' => 'Survey', 'description' => 'The survey that data will be posted into.', 'type' => 'select', 'table' => 'survey', 'captionField' => 'title', 'valueField' => 'id', 'group' => 'General Form Settings', 'siteSpecific' => true), array('name' => 'edit_permission', 'caption' => 'Permission required for editing other people\'s data', 'description' => 'Set to the name of a permission which is required in order to be able to edit other people\'s data.', 'type' => 'text_input', 'required' => false, 'default' => 'indicia data admin'), array('name' => 'sample_tab_label', 'caption' => 'Sample Tab Title', 'description' => 'The title to be used on the main sample tab.', 'type' => 'string', 'required' => true, 'siteSpecific' => true, 'group' => 'General Form Settings'), array('name' => 'occurrence_tab_label', 'caption' => 'Species Tab Title', 'description' => 'The title to be used on the species checklist tab.', 'type' => 'string', 'required' => true, 'group' => 'General Form Settings', 'siteSpecific' => true), array('name' => 'media_tab_label', 'caption' => 'Media Tab Title', 'description' => 'The title to be used on the media tab.', 'type' => 'string', 'required' => true, 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'site_caption_template', 'caption' => 'Site caption template', 'description' => 'When generating the possible caption(s) for the site image(s), use this template. {name} is replaced with the location name, {nameNS} is replaced with the location name with all the spaces removed, and {diff} by the differentiator (see below).', 'type' => 'string', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'site_caption_differentiator', 'caption' => 'Site caption differentiator', 'description' => 'When generating the possible caption(s) for the site image(s), use each of the members of this list as {diff} in the template above to produce individual options. CSV', 'type' => 'string', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'quadrat_caption_template', 'caption' => 'Quadrat caption template', 'description' => 'When generating the possible caption(s) for the quadrat images, use this template. As well as the Site Template replacements detailed above (though with the quadrat differentiator detailed below), {N1} is replaced by the level 1 value, {caption1} by the level 1 attribute caption, {N2} by the level 2 value, {caption2} by the level 2 attribute caption, and {attr<x>} by the value of sample attribute <x> - subject to a possible mapping (also see below).', 'type' => 'string', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'quadrat_caption_differentiator', 'caption' => 'Quadrat caption differentiator', 'description' => 'When generating the possible caption(s) for the quadrat images, use each of the members of this list as {diff} in the template above to produce individual options. CSV', 'type' => 'string', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'quadrat_caption_attribute_mapping', 'caption' => 'Attribute mapping', 'description' => 'When generating the possible caption(s) for the quadrat images, use these definitions to map attribute values. Format is &lt;x&gt;:&lt;n&gt;=&lt;txt&gt;:&lt;n&gt;=&lt;txt&gt;[,&lt;x&gt;:&lt;n&gt;=&lt;txt&gt;:&lt;n&gt;=&lt;txt&gt;] where &lt;x&gt; is the attribute id, &lt;n&gt; is the attribute value, and &lt;txt&gt; is the replacement value to be used in the template.', 'type' => 'string', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'media_tab_bumpf', 'caption' => 'Media Tab Helptext', 'type' => 'textarea', 'group' => 'Media Tab', 'siteSpecific' => true), array('name' => 'transect_level_sample_method_id', 'caption' => 'Transect Level Sample Method', 'description' => 'Select the term used for transect level sample method.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:sample_methods'), 'required' => true, 'group' => 'General Form Settings', 'siteSpecific' => true), array('name' => 'quadrat_level_sample_method_id', 'caption' => 'Quadrat Level Sample Method', 'description' => 'Select the term used for Quadrat level sample method.', 'type' => 'select', 'table' => 'termlists_term', 'captionField' => 'term', 'valueField' => 'id', 'extraParams' => array('termlist_external_key' => 'indicia:sample_methods'), 'required' => true, 'group' => 'General Form Settings', 'siteSpecific' => true), array('name' => 'spatial_systems', 'caption' => 'Allowed Spatial Ref Systems', 'description' => 'List of allowable spatial reference systems, comma separated. Use the spatial ref system code (e.g. OSGB or the EPSG code number such as 4326). ' . 'Set to "default" to use the settings defined in the IForm Settings page.', 'type' => 'string', 'default' => 'default', 'group' => 'Other Map Settings', 'siteSpecific' => true), array('name' => 'defaults', 'caption' => 'Default Values', 'description' => 'Supply default values for each field as required. On each line, enter fieldname=value. For custom attributes, ' . 'the fieldname is the untranslated caption. For other fields, it is the model and fieldname, e.g. occurrence.record_status. ' . 'For date fields, use today to dynamically default to today\'s date. NOTE, currently only supports occurrence:record_status and ' . 'sample:date but will be extended in future.', 'type' => 'textarea', 'default' => 'occurrence:record_status=C', 'group' => 'General Form Settings', 'required' => false, 'siteSpecific' => true), array('name' => 'custom_attribute_options', 'caption' => 'Options for custom attributes', 'description' => 'A list of additional options to pass through to custom attributes, one per line. Each option should be specified as ' . 'the attribute name followed by | then the option name, followed by = then the value. For example, smpAttr:1|class=control-width-5.', 'type' => 'textarea', 'group' => 'General Form Settings', 'required' => false, 'siteSpecific' => true), array('name' => 'remove_options', 'caption' => 'Remove Options', 'description' => 'Comma separated list of option IDs to be removed from attribute drop down/radio lists.', 'type' => 'string', 'group' => 'General Form Settings', 'required' => false, 'siteSpecific' => true), array('name' => 'sample_attribute_id_1', 'caption' => 'First Sample Attribute', 'description' => 'The attribute used as the primary descriptor for the samples in the Species Grid', 'type' => 'select', 'table' => 'sample_attribute', 'extraParams' => array('data_type' => 'I'), 'captionField' => 'caption', 'valueField' => 'id', 'required' => true, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'sample_attribute_id_1_limit', 'caption' => 'First Sample Attribute Limit', 'description' => 'The normal top value (extended only to accommodate existing any data) for the first sample attribute in the Species Grid. ', 'type' => 'int', 'required' => true, 'default' => 6, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'sample_attribute_id_2', 'caption' => 'Second Sample Attribute', 'description' => 'The attribute used as the optional secondary descriptor for the samples in the Species Grid', 'type' => 'select', 'table' => 'sample_attribute', 'extraParams' => array('data_type' => 'I'), 'captionField' => 'caption', 'valueField' => 'id', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'sample_attribute_id_2_limit', 'caption' => 'Second Sample Attribute Limit', 'description' => 'The normal top value (extended only to accommodate existing any data) for the secondary sample attribute in the Species Grid. ', 'type' => 'int', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'level_1_attributes', 'caption' => 'Level 1 attributes', 'description' => 'A comma separated list of sample attribute IDs which have a single entry per Level 1.', 'type' => 'text_input', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'prefixTaxa', 'caption' => 'Standard Prefix Taxa', 'description' => 'A comma separated list of taxon definitions, which are placed BEFORE the taxa in the species packages. Each definition is a &lt;taxa_taxon_list_id&gt;:&lt;occurrence_attribute_id&gt; pair.', 'type' => 'text_input', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'suffixTaxa', 'caption' => 'Standard Suffix Taxa', 'description' => 'A comma separated list of taxon definitions, which are placed AFTER the taxa in the species packages. Each definition is a &lt;taxa_taxon_list_id&gt;:&lt;occurrence_attribute_id&gt; pair.', 'type' => 'text_input', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'taxon_headings_extras', 'caption' => 'Taxon Headings Extras', 'description' => 'A comma separated list on &quot;&lt;Attribute ID&gt;:&lt;Text&gt;&quot;, where &lt;Text&gt is added to the end of the taxon name in the Species Grid heading. This is used to give clarity over what the input attribute is for that taxon.', 'type' => 'text_input', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true), array('name' => 'fill_zeroes', 'caption' => 'Fill with Zeroes', 'description' => 'When set, if a field is filled in on the species grid, all unfilled in text fields will be set to zero on that row.', 'type' => 'boolean', 'required' => false, 'group' => 'Species Grid', 'siteSpecific' => true)));
 }
Example #30
0
 /**
  * Get the list of parameters for this form.
  * @return array List of parameters that this form requires.
  */
 public static function get_parameters()
 {
     $retVal = array_merge(iform_map_get_map_parameters(), iform_map_get_georef_parameters(), array(array('name' => 'survey_id', 'caption' => 'Survey ID', 'description' => 'The Indicia ID of the survey that data will be posted into.', 'type' => 'int'), array('name' => 'percent_insects', 'caption' => 'Insect Identification Percentage', 'description' => 'The percentage of insects that must be identified before the collection may be completed.', 'type' => 'int'), array('name' => 'gallery_node', 'caption' => 'Gallery Node', 'description' => 'The DRUPAL node number for the Gallery/Filter node.', 'type' => 'int'), array('name' => 'protocol_attr_id', 'caption' => 'Protocol Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Protocol.', 'type' => 'int', 'group' => 'Collection Attributes'), array('name' => 'complete_attr_id', 'caption' => 'Completeness Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores whether the collection is complete.', 'type' => 'int', 'group' => 'Collection Attributes'), array('name' => 'uid_attr_id', 'caption' => 'User ID Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the CMS User ID.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'username_attr_id', 'caption' => 'Username Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s username.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'email_attr_id', 'caption' => 'Email Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the user\'s email.', 'type' => 'smpAttr', 'group' => 'Collection Attributes'), array('name' => 'flower_list_id', 'caption' => 'Flower Species List ID', 'description' => 'The Indicia ID for the species list that flowers can be selected from.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'location_picture_camera_attr_id', 'caption' => 'Location Picture Camera Attribute ID', 'description' => 'Indicia ID for the location attribute that stores the Camera EXIF data for the location picture.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'location_picture_datetime_attr_id', 'caption' => 'Location Picture Datetime Attribute ID', 'description' => 'Indicia ID for the location attribute that stores the DateTime EXIF data for the location picture.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'occurrence_picture_camera_attr_id', 'caption' => 'Flower and Insect Picture Camera Attribute ID', 'description' => 'Indicia ID for the occurrence attribute that stores the Camera EXIF data for the flower and insect pictures.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'occurrence_picture_datetime_attr_id', 'caption' => 'Flower and Insect Picture Datetime Attribute ID', 'description' => 'Indicia ID for the occurrence attribute that stores the DateTime EXIF data for the flower and insect pictures.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'flower_type_attr_id', 'caption' => 'Flower Type Attribute ID', 'description' => 'Indicia ID for the occurrence attribute that stores how the flower got there.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'habitat_attr_id', 'caption' => 'habitat Attribute ID', 'description' => 'Indicia ID for the location attribute that describes the habitat.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'distance_attr_id', 'caption' => 'Distance Attribute ID', 'description' => 'Indicia ID for the location attribute that stores how far the nearest hive is.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'within50m_attr_id', 'caption' => 'within50m Attribute ID', 'description' => 'Indicia ID for the location attribute that describes whether the location is within 50m of a grand culture.', 'type' => 'int', 'group' => 'Floral Station Attributes'), array('name' => 'start_time_attr_id', 'caption' => 'Start Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the start time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'end_time_attr_id', 'caption' => 'End Time Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the end time.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'sky_state_attr_id', 'caption' => 'Sky State Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the state of the sky.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'temperature_attr_id', 'caption' => 'Temperature Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the temperature.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'wind_attr_id', 'caption' => 'Wind Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the Wind.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'shade_attr_id', 'caption' => 'Shade Attribute ID', 'description' => 'Indicia ID for the sample attribute that stores the shade.', 'type' => 'int', 'group' => 'Session Attributes'), array('name' => 'insect_list_id', 'caption' => 'Insect Species List ID', 'description' => 'The Indicia ID for the species list that insects can be selected from.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'number_attr_id', 'caption' => 'Insect Number Attribute ID', 'description' => 'The Indicia ID for the occurrence attribute that stores the number of insects.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'foraging_attr_id', 'caption' => 'Foraging Attribute ID', 'description' => 'The Indicia ID for the occurrence attribute that stores the foraging flag.', 'type' => 'int', 'group' => 'Insect Attributes'), array('name' => 'help_module', 'caption' => 'Help DRUPAL Module', 'description' => 'The DRUPAL module which contains the context sensitive help functionality.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_inclusion_function', 'caption' => 'Help Module inclusion function', 'description' => 'The DRUPAL PHP function which is used to include the relevant Javascript into the page.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_function', 'caption' => 'Help Module invocation function', 'description' => 'The Javascript function which is called when the help buttons are clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_collection_arg', 'caption' => 'Collection Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Create a collection" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_flower_arg', 'caption' => 'Flower Identification Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Flower Identification" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_environment_arg', 'caption' => 'Environment Identification Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Environment" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_location_arg', 'caption' => 'Location Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Location" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_session_arg', 'caption' => 'Session Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Session" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'help_insect_arg', 'caption' => 'Insect Identification Help argument', 'description' => 'The argument(s) passed to the Help Module invocation function when the help button in "Insect Identification" is clicked.', 'type' => 'string', 'group' => 'Help', 'required' => false), array('name' => 'ID_tool_insect_url', 'caption' => 'Insect ID Tool URL', 'description' => 'The URL to call which triggers the Insect Identification Tool functionality.', 'type' => 'string', 'group' => 'ID Tool'), array('name' => 'ID_tool_session_param', 'caption' => 'ID Tool session parameter', 'description' => 'The URL extension to be used in the request to the ID tool to pass the SPIPOLL session ID.', 'type' => 'string', 'group' => 'ID Tool', 'default' => '#spipollsessionid='), array('name' => 'ID_tool_insect_poll_dir', 'caption' => 'Insect ID Tool Module poll directory', 'description' => 'The directory which to poll for the results of the Insect ID Tool', 'type' => 'string', 'group' => 'ID Tool'), array('name' => 'ID_tool_poll_interval', 'caption' => 'Time in ms between polls of results directory', 'description' => 'Time in ms between polls of results directory', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1500), array('name' => 'ID_tool_poll_timeout', 'caption' => 'Time in ms before the ID Tool is aborted.', 'description' => 'Time in ms before the ID Tool is aborted.', 'type' => 'int', 'group' => 'ID Tool', 'default' => 1800000), array('name' => 'INSEE_url', 'caption' => 'URL for INSEE Search WFS service', 'description' => 'The URL used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_prefix', 'caption' => 'Feature type prefix for INSEE Search', 'description' => 'The Feature type prefix used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_type', 'caption' => 'Feature type for INSEE Search', 'description' => 'The Feature type used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'INSEE_ns', 'caption' => 'Name space for INSEE Search', 'description' => 'The Name space used for the WFS feature lookup when search for INSEE numbers.', 'type' => 'string', 'group' => 'INSEE Search'), array('name' => 'Flower_Image_Ratio', 'caption' => 'Flower image aspect ratio.', 'description' => 'Expected Ratio of width to height for flower images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '4/3'), array('name' => 'Environment_Image_Ratio', 'caption' => 'Environment image aspect ratio.', 'description' => 'Expected Ratio of width to height for environment images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '4/3'), array('name' => 'Insect_Image_Ratio', 'caption' => 'Insect image aspect ratio.', 'description' => 'Expected Ratio of width to height for insect images - 4/3 is horizontal, 3/4 is vertical.', 'type' => 'string', 'group' => 'Images', 'default' => '1/1')));
     return $retVal;
 }