private static function get_template_with_map($args, $readAuth, $extraParams, $paramDefaults) { $r = '<div id="outer-with-map" class="ui-helper-clearfix">'; $r .= '<div id="grid" class="left" style="width:65%">{paramsForm}{grid}</div>'; $r .= '<div id="map-and-record" class="right" style="width: 34%"><div id="summary-map">'; $options = iform_map_get_map_options($args, $readAuth); $olOptions = iform_map_get_ol_options($args); // This is used for drawing, so need an editlayer, but not used for input $options['editLayer'] = true; $options['editLayerInSwitcher'] = true; $options['clickForSpatialRef'] = false; $options['featureIdField'] = 'occurrence_id'; $r .= map_helper::map_panel($options, $olOptions); $reportMapOpts = array('dataSource' => !empty($args['mapping_report_name']) ? $args['mapping_report_name'] : $args['report_name'], 'mode' => 'report', 'readAuth' => $readAuth, 'autoParamsForm' => false, 'extraParams' => $extraParams, 'paramDefaults' => $paramDefaults, 'reportGroup' => 'verification', 'clickableLayersOutputMode' => 'report', 'rowId' => 'occurrence_id', 'sharing' => 'verification', 'ajax' => TRUE); if (!empty($args['mapping_report_name_lores'])) { $reportMapOpts['dataSourceLoRes'] = $args['mapping_report_name_lores']; } $r .= report_helper::report_map($reportMapOpts); $r .= '</div>'; global $user; if (function_exists('hostsite_get_user_field') && ($locationId = hostsite_get_user_field('location_expertise', false))) { iform_map_zoom_to_location($locationId, $readAuth); } $r .= '<div id="record-details-wrap" class="ui-widget ui-widget-content">'; $r .= self::instructions('grid on the left'); $r .= '<div id="record-details-content" style="display: none">'; $r .= '<div id="record-details-toolbar">'; $r .= '<div id="verify-buttons">'; $r .= '<div id="verify-buttons-inner">'; $r .= '<label>' . lang::get('Actions:') . '</label>'; $imgPath = empty(data_entry_helper::$images_path) ? data_entry_helper::relative_client_helper_path() . "../media/images/" : data_entry_helper::$images_path; $r .= '<button type="button" id="btn-verify" title="' . lang::get('Verify') . '"><img width="18" height="18" src="' . $imgPath . 'nuvola/ok-16px.png"/></button>'; $r .= '<button type="button" id="btn-edit-verify" title="' . lang::get('Edit determination then verify') . '"><img width="18" height="18" src="' . $imgPath . 'nuvola/package_editors-16px.png"/>' . '<img width="18" height="18" src="' . $imgPath . 'nuvola/ok-16px.png"/></button>'; $r .= '<button type="button" id="btn-reject" title="' . lang::get('Reject') . '"><img width="18" height="18" src="' . $imgPath . 'nuvola/cancel-16px.png"/></button>'; $r .= '<button type="button" id="btn-query" title="' . lang::get('Query') . '"><img width="18" height="18" src="' . $imgPath . 'nuvola/dubious-16px.png"/></button>'; $r .= '<div id="redet-dropdown-ctnr" style="display: none"><div id="redet-dropdown">'; $r .= data_entry_helper::species_autocomplete(array('fieldname' => 'redet', 'label' => lang::get('New determination'), 'labelClass' => 'auto', 'helpText' => lang::get('Enter a new determination for this record before verifying it. The previous determination will be stored with the record.'), 'cacheLookup' => true, 'extraParams' => $readAuth + array('taxon_list_id' => 1), 'speciesIncludeBothNames' => true, 'speciesIncludeTaxonGroup' => true)); $r .= '</div></div>'; $r .= '</div></div>'; $r .= '<label>Contact:</label>'; $r .= '<button type="button" id="btn-email-expert" class="default-button">' . lang::get('Another expert') . '</button>'; $r .= '<button type="button" id="btn-email-recorder" class="default-button">' . lang::get('Recorder') . '</button>'; $r .= '</div>'; $r .= '<div id="record-details-tabs">'; // note - there is a dependency in the JS that comments is the last tab and media the 2nd to last. $r .= data_entry_helper::tab_header(array('tabs' => array('#details-tab' => lang::get('Details'), '#experience-tab' => lang::get('Experience'), '#phenology-tab' => lang::get('Phenology'), '#media-tab' => lang::get('Media'), '#comments-tab' => lang::get('Comments')))); data_entry_helper::$javascript .= "indiciaData.detailsTabs = ['details','experience','phenology','media','comments'];\n"; data_entry_helper::enable_tabs(array('divId' => 'record-details-tabs')); $r .= '<div id="details-tab"></div>'; $r .= self::other_tab_html(); $r .= '</div></div></div></div></div>'; return $r; }
$('#add-from-parent\\:taxon').hide(); $('#taxa_to_add').show(); $('#ctrl-wrap-add-from-parent').find(':button').hide(); $('#add-list').show(); $('#ctrl-wrap-search-method').show(); $('#ctrl-wrap-add-from-parent .helpText').html( 'Paste a list of taxon names or external keys into the box above then click Add to add them all'); }; /*]]>*/ </script> <div> <?php require_once DOCROOT . 'client_helpers/data_entry_helper.php'; $readAuth = data_entry_helper::get_read_auth(0 - $_SESSION['auth_user']->id, kohana::config('indicia.private_key')); echo data_entry_helper::select(array('id' => 'search-method', 'label' => 'Search for taxa using', 'fieldname' => 'search_method', 'helpText' => 'When adding a list of taxa, which field in the taxon data will your input values be looked up against?', 'lookupValues' => array('taxon' => 'Species or other taxon name', 'external_key' => 'External key'))); echo data_entry_helper::species_autocomplete(array('label' => 'Add species', 'fieldname' => 'add-from-parent', 'helpText' => 'Search for taxa in the parent list to quickly add them into this list.', 'cacheLookup' => TRUE, 'speciesIncludeBothNames' => TRUE, 'speciesIncludeTaxonGroup' => TRUE, 'extraParams' => $readAuth + array('taxon_list_id' => $parent_list_id), 'afterControl' => '<textarea style="display: none" id="taxa_to_add" rows="10" cols="40"/>' . '<input type="button" value="Add" onclick="add_parent_taxon();" ' . 'title="Click this button to add the taxa searched for in the Add species box to your child list"/>' . '<input type="button" value="Add many..." onclick="convert_to_list_mode();" ' . 'title="Click this button to be able to paste in a list of taxa to add"/>' . '<input type="button" style="display: none" value="Add list" id="add-list" onclick="add_parent_taxon_list();" />')); ?> <label for="output-log">Output log:</label> <textarea style="display: none" rows="10" cols="40" id="output-log"></textarea> </div> <?php } echo $grid; ?> <br/> <form action="<?php echo url::site() . 'taxa_taxon_list/create/' . $taxon_list_id; ?> " method="post"> <?php if (isset($parent_id)) {
/** * Return the generated form output. * @param array $args List of parameter values passed through to the form depending on how the form has been configured. * This array always contains a value for language. * @param object $node The Drupal node object. * @param array $response When this form is reloading after saving a submission, contains the response from the service call. * Note this does not apply when redirecting (in this case the details of the saved object are in the $_GET data). * @return Form HTML. */ public static function get_form($args, $node, $response = null) { $form = '<form action="#" method="POST" id="entry_form">'; if ($_POST) { $auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']); self::subscribe($args, $auth); } else { // don't bother with write auth for initial form load, as read auth is cached and faster $auth = array('read' => data_entry_helper::get_read_auth($args['website_id'], $args['password'])); } if (!empty($_GET['id'])) { data_entry_helper::load_existing_record($auth['read'], 'species_alert', $_GET['id']); // enforce permissions if (data_entry_helper::$entity_to_load['species_alert:user_id'] != hostsite_get_user_field('indicia_user_id')) { return lang::get('You cannot modify a species alert subscription created by someone else'); } $form .= data_entry_helper::hidden_text(array('fieldname' => 'species_alert:id', 'default' => $_GET['id'])); } // if not logged in, then ask for details to register against global $user; if (!hostsite_get_user_field('id') || !isset($user) || empty($user->mail) || !hostsite_get_user_field('last_name')) { $form .= "<fieldset><legend>" . lang::get('Your details') . ":</legend>\n"; $default = empty($_POST['first_name']) ? hostsite_get_user_field('first_name', '') : $_POST['first_name']; $form .= data_entry_helper::text_input(array('label' => lang::get('First name'), 'fieldname' => 'first_name', 'validation' => array('required'), 'default' => $default, 'class' => 'control-width-4')); $default = empty($_POST['surname']) ? hostsite_get_user_field('last_name', '') : $_POST['surname']; $form .= data_entry_helper::text_input(array('label' => lang::get('Last name'), 'fieldname' => 'surname', 'validation' => array('required'), 'default' => $default, 'class' => 'control-width-4')); $default = empty($_POST['email']) ? empty($user->mail) ? '' : $user->mail : $_POST['email']; $form .= data_entry_helper::text_input(array('label' => lang::get('Email'), 'fieldname' => 'email', 'validation' => array('required', 'email'), 'default' => $default, 'class' => 'control-width-4')); $form .= "</fieldset>\n"; } else { $form .= data_entry_helper::hidden_text(array('fieldname' => 'first_name', 'default' => hostsite_get_user_field('first_name'))); $form .= data_entry_helper::hidden_text(array('fieldname' => 'surname', 'default' => hostsite_get_user_field('last_name'))); $form .= data_entry_helper::hidden_text(array('fieldname' => 'email', 'default' => $user->mail)); $form .= data_entry_helper::hidden_text(array('fieldname' => 'user_id', 'default' => hostsite_get_user_field('indicia_user_id'))); } $form .= "<fieldset><legend>" . lang::get('Alert criteria') . ":</legend>\n"; // Output the species selection control // Default after saving with a validation failure can be pulled direct from the post, but // when reloading we don't need a default taxa taxon list ID since we already know the meaning // ID or external key. $default = empty($_POST['taxa_taxon_list_id']) ? '' : $_POST['taxa_taxon_list_id']; if (empty($_POST['taxa_taxon_list_id:taxon'])) { $defaultCaption = empty(data_entry_helper::$entity_to_load['species_alert:preferred_taxon']) ? '' : data_entry_helper::$entity_to_load['species_alert:preferred_taxon']; } else { $defaultCaption = $_POST['taxa_taxon_list_id:taxon']; } $form .= data_entry_helper::species_autocomplete(array('label' => lang::get('Alert species'), 'helpText' => lang::get('Select the species you are interested in receiving alerts in ' . 'relation to if you want to receive alerts on a single species.'), 'fieldname' => 'taxa_taxon_list_id', 'cacheLookup' => true, 'extraParams' => $auth['read'] + array('taxon_list_id' => $args['list_id']), 'class' => 'control-width-4', 'default' => $default, 'defaultCaption' => $defaultCaption)); if (empty($default)) { // Unless we've searched for the species name then posted (and failed), then the // default will be empty. We might therefore be reloading existing data which has // a meaning ID or external key. if (!empty(data_entry_helper::$entity_to_load['species_alert:external_key'])) { $form .= data_entry_helper::hidden_text(array('fieldname' => 'species_alert:external_key', 'default' => data_entry_helper::$entity_to_load['species_alert:external_key'])); } elseif (!empty(data_entry_helper::$entity_to_load['species_alert:taxon_meaning_id'])) { $form .= data_entry_helper::hidden_text(array('fieldname' => 'species_alert:taxon_meaning_id', 'default' => data_entry_helper::$entity_to_load['species_alert:taxon_meaning_id'])); } } if (!empty($args['full_lists'])) { $form .= data_entry_helper::select(array('label' => lang::get('Select full species lists'), 'helpText' => lang::get('If you want to restrict the alerts to records of any ' . 'species within a species list, then select the list here.'), 'fieldname' => 'species_alert:taxon_list_id', 'blankText' => lang::get('<Select a species list>'), 'table' => 'taxon_list', 'valueField' => 'id', 'captionField' => 'title', 'extraParams' => $auth['read'] + array('id' => $args['full_lists'], 'orderby' => 'title'), 'class' => 'control-width-4')); } $form .= data_entry_helper::location_select(array('label' => lang::get('Select location'), 'helpText' => lang::get('If you want to restrict the alerts to records within a certain boundary, select it here.'), 'fieldname' => 'species_alert:location_id', 'id' => 'imp-location', 'blankText' => lang::get('<Select boundary>'), 'extraParams' => $auth['read'] + array('location_type_id' => $args['location_type_id'], 'orderby' => 'name'), 'class' => 'control-width-4')); $form .= data_entry_helper::checkbox(array('label' => lang::get('Alert on initial entry'), 'helpText' => lang::get('Tick this box if you want to receive a notification when the record is first input into the system.'), 'fieldname' => 'species_alert:alert_on_entry')); $form .= data_entry_helper::checkbox(array('label' => lang::get('Alert on verification as correct'), 'helpText' => lang::get('Tick this box if you want to receive a notification when the record has been verified as correct.'), 'fieldname' => 'species_alert:alert_on_verify')); $form .= "</fieldset>\n"; $form .= '<input type="Submit" value="Subscribe" />'; $form .= '</form>'; data_entry_helper::enable_validation('entry_form'); iform_load_helpers(array('map_helper')); $mapOptions = iform_map_get_map_options($args, $auth['read']); $map = map_helper::map_panel($mapOptions); global $indicia_templates; return str_replace(array('{col-1}', '{col-2}'), array($form, $map), $indicia_templates['two-col-50']); }
/** * Returns a hidden div to insert onto the page, which can hold the redetermination control when it is * not in use. * @param array $readAuth Authorisation tokens. * @return string HTML */ private static function hidden_redetermination_dropdown($readAuth) { $r = '<div id="redet-dropdown-ctnr" style="display: none"><div id="redet-dropdown">'; $r .= data_entry_helper::species_autocomplete(array('fieldname' => 'redet', 'label' => lang::get('New determination'), 'labelClass' => 'auto', 'helpText' => lang::get('Enter a new determination for this record before verifying it. The previous determination will be stored with the record.'), 'cacheLookup' => true, 'extraParams' => $readAuth + array('taxon_list_id' => 1), 'speciesIncludeBothNames' => true, 'speciesIncludeTaxonGroup' => true, 'validation' => array('required'))); if (function_exists('variable_get')) { $taxon_list_id = variable_get('iform_master_checklist_id', 0); if ($taxon_list_id) { data_entry_helper::$javascript .= "indiciaData.mainTaxonListId={$taxon_list_id}\n;"; $r .= data_entry_helper::checkbox(array('fieldname' => 'redet-from-full-list', 'label' => lang::get('Search all species'), 'labelClass' => 'auto', 'helpText' => lang::get('Check this box if you want to redetermine to a different species group.'))); } } $r .= '</div></div>'; return $r; }