本文整理汇总了PHP中data_entry_helper::location_select方法的典型用法代码示例。如果您正苦于以下问题:PHP data_entry_helper::location_select方法的具体用法?PHP data_entry_helper::location_select怎么用?PHP data_entry_helper::location_select使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类data_entry_helper
的用法示例。
在下文中一共展示了data_entry_helper::location_select方法的14个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: get_control_locationselect
/**
* Get the location control as a select dropdown.
*/
private static function get_control_locationselect($auth, $args, $tabalias, $options)
{
self::$want_location_layer = true;
$location_list_args = array_merge(array('label' => lang::get('LANG_Location_Label'), 'view' => 'detail', 'extraParams' => array_merge(array('orderby' => 'name', 'website_id' => $args['website_id']), $auth['read'])), $options);
return data_entry_helper::location_select($location_list_args);
}
示例2: get_sample_form
public static function get_sample_form($args, $node, $response)
{
global $user;
if (!module_exists('iform_ajaxproxy')) {
return 'This form must be used in Drupal with the Indicia AJAX Proxy module enabled.';
}
require_once dirname(dirname(__FILE__)) . '/map_helper.php';
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$sampleId = isset($_GET['sample_id']) ? $_GET['sample_id'] : null;
if ($sampleId) {
data_entry_helper::load_existing_record($auth['read'], 'sample', $sampleId);
$locationId = data_entry_helper::$entity_to_load['sample:location_id'];
} else {
$locationId = isset($_GET['site']) ? $_GET['site'] : null;
// location ID also might be in the $_POST data after a validation save of a new record
if (!$locationId && isset($_POST['sample:location_id'])) {
$locationId = $_POST['sample:location_id'];
}
}
$r .= '<form method="post" id="sample">';
$r .= $auth['write'];
// we pass through the read auth. This makes it possible for the get_submission method to authorise against the warehouse
// without an additional (expensive) warehouse call, so it can get location details.
$r .= '<input type="hidden" name="read_nonce" value="' . $auth['read']['nonce'] . '"/>';
$r .= '<input type="hidden" name="read_auth_token" value="' . $auth['read']['auth_ token'] . '"/>';
$r .= '<input type="hidden" name="website_id" value="' . $args['website_id'] . '"/>';
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
$r .= '<input type="hidden" name="sample:id" value="' . data_entry_helper::$entity_to_load['sample:id'] . '"/>';
}
$r .= '<input type="hidden" name="sample:survey_id" value="' . $args['survey_id'] . '"/>';
// pass a param that sets the next page to display
$r .= '<input type="hidden" name="page" value="grid"/>';
if ($locationId) {
$site = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'id' => $locationId, 'deleted' => 'f')));
$site = $site[0];
$r .= '<input type="hidden" name="sample:location_id" value="' . $locationId . '"/>';
$r .= '<input type="hidden" name="sample:entered_sref" value="' . $site['centroid_sref'] . '"/>';
$r .= '<input type="hidden" name="sample:entered_sref_system" value="' . $site['centroid_sref_system'] . '"/>';
}
if ($locationId && isset(data_entry_helper::$entity_to_load['sample:id'])) {
// for reload of existing, don't let the user switch the transect as that would mess everything up.
$r .= '<label>' . lang::get('Transect') . ':</label><span>' . $site['name'] . '</span><br/>';
} else {
// Output only the locations for this website and transect type. Note we load both transects and sections, just so that
// we always use the same warehouse call and therefore it uses the cache.
$locationTypes = helper_base::get_termlist_terms($auth, 'indicia:location_types', array('Transect', 'Transect Section'));
$availableSites = data_entry_helper::get_population_data(array('report' => 'library/locations/locations_list', 'extraParams' => $auth['read'] + array('website_id' => $args['website_id'], 'location_type_id' => $locationTypes[0]['id'], 'locattrs' => 'CMS User ID', 'attr_location_cms_user_id' => $user->uid), 'nocache' => true));
// convert the report data to an array for the lookup, plus one to pass to the JS so it can keep the hidden sref fields updated
$sitesLookup = array();
$sitesJs = array();
foreach ($availableSites as $site) {
$sitesLookup[$site['location_id']] = $site['name'];
$sitesJs[$site['location_id']] = $site;
}
data_entry_helper::$javascript .= "indiciaData.sites = " . json_encode($sitesJs) . ";\n";
$options = array('label' => lang::get('Select Transect'), 'validation' => array('required'), 'blankText' => lang::get('please select'), 'lookupValues' => $sitesLookup);
if ($locationId) {
$options['default'] = $locationId;
}
$r .= data_entry_helper::location_select($options);
}
if (!$locationId) {
$r .= '<input type="hidden" name="sample:entered_sref" value="" id="entered_sref"/>';
$r .= '<input type="hidden" name="sample:entered_sref_system" value="" id="entered_sref_system"/>';
// sref values for the sample will be populated automatically when the submission is built.
}
$r .= data_entry_helper::date_picker(array('label' => lang::get('Date'), 'fieldname' => 'sample:date'));
$sampleMethods = helper_base::get_termlist_terms($auth, 'indicia:sample_methods', array('Transect'));
$attributes = data_entry_helper::getAttributes(array('id' => $sampleId, 'valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id'], 'sample_method_id' => $sampleMethods[0]['id']));
$r .= get_attribute_html($attributes, $args, array('extraParams' => $auth['read']));
$r .= '<input type="hidden" name="sample:sample_method_id" value="' . $sampleMethods[0]['id'] . '" />';
$r .= '<input type="submit" value="' . lang::get('Next') . '" class="ui-state-default ui-corner-all" />';
$r .= '</form>';
data_entry_helper::enable_validation('sample');
return $r;
}
示例3: get_form
/**
* 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']);
}
示例4: get_sample_form
public static function get_sample_form($args, $node, $response)
{
global $user;
if (!module_exists('iform_ajaxproxy')) {
return 'This form must be used in Drupal with the Indicia AJAX Proxy module enabled.';
}
iform_load_helpers(array('map_helper'));
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$sampleId = isset($_GET['sample_id']) ? $_GET['sample_id'] : null;
$locationId = null;
if ($sampleId) {
data_entry_helper::load_existing_record($auth['read'], 'sample', $sampleId, 'detail', false, true);
$locationId = data_entry_helper::$entity_to_load['sample:location_id'];
} else {
// location ID also might be in the $_POST data after a validation save of a new record
if (isset($_POST['sample:location_id'])) {
$locationId = $_POST['sample:location_id'];
}
}
$url = explode('?', $args['my_obs_page'], 2);
$params = NULL;
$fragment = NULL;
// fragment is always at the end.
if (count($url) > 1) {
$params = explode('#', $url[1], 2);
if (count($params) > 1) {
$fragment = $params[1];
}
$params = $params[0];
} else {
$url = explode('#', $url[0], 2);
if (count($url) > 1) {
$fragment = $url[1];
}
}
$args['my_obs_page'] = url($url[0], array('query' => $params, 'fragment' => $fragment, 'absolute' => TRUE));
$r = '<form method="post" id="sample">';
$r .= $auth['write'];
$r .= '<input type="hidden" name="page" value="mainSample"/>';
$r .= '<input type="hidden" name="website_id" value="' . $args['website_id'] . '"/>';
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
$r .= '<input type="hidden" name="sample:id" value="' . data_entry_helper::$entity_to_load['sample:id'] . '"/>';
}
$r .= '<input type="hidden" name="sample:survey_id" value="' . $args['survey_id'] . '"/>';
$r .= '<div id="cols" class="ui-helper-clearfix"><div class="left" style="width: ' . (98 - (isset($args['percent_width']) ? $args['percent_width'] : 50)) . '%">';
// Output only the locations for this website and location type.
$availableSites = data_entry_helper::get_population_data(array('report' => 'library/locations/locations_list', 'extraParams' => $auth['read'] + array('website_id' => $args['website_id'], 'location_type_id' => $args['locationType'], 'locattrs' => 'CMS User ID', 'attr_location_cms_user_id' => $user->uid), 'nocache' => true));
// convert the report data to an array for the lookup, plus one to pass to the JS so it can keep the map updated
$sitesLookup = array();
$sitesIds = array();
$sitesJs = array();
foreach ($availableSites as $site) {
$sitesLookup[$site['location_id']] = $site['name'];
$sitesIds[] = $site['location_id'];
}
$sites = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('website_id' => $args['website_id'], 'id' => $sitesIds, 'view' => 'detail')));
foreach ($sites as $site) {
$sitesJs[$site['id']] = $site;
}
data_entry_helper::$javascript .= "indiciaData.sites = " . json_encode($sitesJs) . ";\n";
if ($locationId) {
$r .= '<input type="hidden" name="sample:location_id" id="sample_location_id" value="' . $locationId . '"/>';
// for reload of existing, don't let the user switch the square as that could mess everything up.
$r .= '<label>' . lang::get('1km square') . ':</label><span>' . $sitesJs[$locationId]['name'] . '</span><br/>' . lang::get('<p class="ui-state-highlight page-notice ui-corner-all">Please use the map to select a more precise location for your timed observation.</p>');
} else {
$options = array('label' => lang::get('Select 1km square'), 'validation' => array('required'), 'blankText' => lang::get('Please select'), 'lookupValues' => $sitesLookup, 'id' => "sample_location_id");
// if ($locationId) $options['default'] = $locationId;
$r .= data_entry_helper::location_select($options) . lang::get('<p class="ui-state-highlight page-notice ui-corner-all">After selecting the 1km square, use the map to select a more precise location for your timed observation.</p>');
}
// [spatial reference]
$systems = array();
foreach (explode(',', str_replace(' ', '', $args['spatial_systems'])) as $system) {
$systems[$system] = lang::get("sref:{$system}");
}
$r .= data_entry_helper::sref_and_system(array('label' => lang::get('Grid Ref'), 'systems' => $systems));
$r .= data_entry_helper::file_box(array('table' => 'sample_image', 'readAuth' => $auth['read'], 'caption' => lang::get('Upload photo(s) of timed search area')));
$sampleMethods = helper_base::get_termlist_terms($auth, 'indicia:sample_methods', array('Field Observation'));
$attributes = data_entry_helper::getAttributes(array('id' => $sampleId, 'valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id'], 'sample_method_id' => $sampleMethods[0]['id']));
$r .= get_user_profile_hidden_inputs($attributes, $args, '', $auth['read']);
if (isset($_GET['date'])) {
$r .= '<input type="hidden" name="sample:date" value="' . $_GET['date'] . '"/>';
$r .= '<label>' . lang::get('Date') . ':</label> <span class="value-label">' . $_GET['date'] . '</span><br/>';
} else {
if (isset(data_entry_helper::$entity_to_load['sample:date']) && preg_match('/^(\\d{4})/', data_entry_helper::$entity_to_load['sample:date'])) {
// Date has 4 digit year first (ISO style) - convert date to expected output format
// @todo The date format should be a global configurable option. It should also be applied to reloading of custom date attributes.
$d = new DateTime(data_entry_helper::$entity_to_load['sample:date']);
data_entry_helper::$entity_to_load['sample:date'] = $d->format('d/m/Y');
}
$r .= data_entry_helper::date_picker(array('label' => lang::get('Date'), 'fieldname' => 'sample:date'));
}
// are there any option overrides for the custom attributes?
if (isset($args['custom_attribute_options']) && $args['custom_attribute_options']) {
$blockOptions = get_attr_options_array_with_user_data($args['custom_attribute_options']);
} else {
$blockOptions = array();
}
$r .= get_attribute_html($attributes, $args, array('extraParams' => $auth['read']), null, $blockOptions);
$r .= '<input type="hidden" name="sample:sample_method_id" value="' . $sampleMethods[0]['id'] . '" />';
$r .= '<input type="submit" value="' . lang::get('Next') . '" />';
//.........这里部分代码省略.........
示例5: get_control_locationselect
/**
* Get the location control as a select dropdown.
* Default control ordering is by name.
* reportProvidesOrderBy option should be set to true if the control is populated by a report that
* provides its own Order By statement, if the reportProvidesOrderBy option is not set in this situation, then the report
* will have two Order By statements and will fail.
*/
protected static function get_control_locationselect($auth, $args, $tabAlias, $options)
{
if (isset($options['extraParams'])) {
foreach ($options['extraParams'] as $key => &$value) {
$value = apply_user_replacements($value);
}
$options['extraParams'] = array_merge($auth['read'], $options['extraParams']);
} else {
$options['extraParams'] = array_merge($auth['read']);
}
if (empty($options['reportProvidesOrderBy']) || $options['reportProvidesOrderBy'] == 0) {
$options['extraParams']['orderby'] = 'name';
}
$location_list_args = array_merge(array('label' => lang::get('LANG_Location_Label'), 'view' => 'detail'), $options);
return data_entry_helper::location_select($location_list_args);
}
示例6: get_control_transect
/**
* Get the transect control
*/
protected static function get_control_transect($auth, $args, $tabalias, $options)
{
$defAttrOptions = array('extraParams' => $auth['read'], 'validation' => array('required'));
if (self::$locations == 'all') {
$locOptions = array_merge(array('label' => lang::get('LANG_Transect'), 'id' => 'sample:location_id'), $defAttrOptions);
$locOptions['extraParams'] = array_merge(array('parent_id' => 'NULL', 'view' => 'detail', 'orderby' => 'name'), $locOptions['extraParams']);
$ret = data_entry_helper::location_select($locOptions);
} else {
// can't use location select due to location filtering.
$ret = "<label for=\"sample:location_id\">" . lang::get('LANG_Transect') . ":</label>\n<select id=\"sample:location_id\" name=\"sample:location_id\" " . $disabled_text . " class=\" \" >";
$url = self::$svcUrl . '/data/location?mode=json&view=detail&parent_id=NULL&orderby=name&auth_token=' . $auth['read']['auth_token'] . '&nonce=' . $auth['read']["nonce"];
// could do new multiple fetch query
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
if (!empty($entities)) {
foreach ($entities as $entity) {
if (in_array($entity["id"], self::$locations)) {
if ($entity["id"] == data_entry_helper::$entity_to_load['sample:location_id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
$ret .= "<option value=\"" . $entity["id"] . "\" " . $selected . ">" . $entity["name"] . " </option>";
}
}
}
$ret .= "</select>";
}
$ret .= "<input type=hidden name=\"sample:location_name\" value=\"\" /><br />";
data_entry_helper::$javascript .= "\njQuery(\"#sample\\\\:location_id\").change(function(){\n jQuery('[name=sample\\:location_name]').val(jQuery(this).find(':selected')[0].text);\n jQuery('.displayTransectDetails').empty().append('<span>'+jQuery('[name=sample\\:location_name]').val()+'</span>');\n});\njQuery(\"#sample\\\\:location_id\").change();\n";
return $ret;
}
示例7: get_form
//.........这里部分代码省略.........
$entity = json_decode(curl_exec($session), true);
if (count($entity) > 1) {
// ignore ourselves!
$r .= "<div id=\"mergeSurveys\"><p><strong>" . lang::get('LANG_Found_Mergable_Surveys') . "</strong></p>";
foreach ($entity as $survey) {
if ($survey['id'] != $parentSample['sample:id']) {
$r .= "<form action=\"" . url('node/' . $node->nid, array()) . "\" method=\"get\"><input type=\"submit\" value=\"" . lang::get('LANG_Merge_With_ID') . " " . $survey['id'] . "\"><input type=\"hidden\" name=\"merge_sample_id1\" value=\"" . $parentSample['sample:id'] . "\" /><input type=\"hidden\" name=\"merge_sample_id2\" value=\"" . $survey['id'] . "\" /></form>";
}
}
$r .= "</div>";
}
}
$r .= "<form id=\"SurveyForm\" action=\"" . iform_ajaxproxy_url($node, 'sample') . "\" method=\"post\">\n <input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />\n <input type=\"hidden\" id=\"sample:survey_id\" name=\"sample:survey_id\" value=\"" . $args['survey_id'] . "\" />";
if (array_key_exists('sample:id', data_entry_helper::$entity_to_load)) {
$r .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"" . data_entry_helper::$entity_to_load['sample:id'] . "\" />\n";
} else {
$r .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"\" disabled=\"disabled\" />\n";
// GvB 19/Nov/2012 : change to user detail defaults
// logic is now much simpler, and they are only included/created if the sample is new.
$fieldName = $attributes[$uid_attr_id]['fieldname'];
$fieldValue = data_entry_helper::check_default_value($fieldName, $user->uid);
$r .= "<input type=\"hidden\" name=\"" . $fieldName . "\" value=\"" . $fieldValue . "\" />\n";
$fieldName = $attributes[$email_attr_id]['fieldname'];
$fieldValue = data_entry_helper::check_default_value($fieldName, $user->mail);
$r .= "<input type=\"hidden\" name=\"" . $fieldName . "\" value=\"" . $fieldValue . "\" />\n";
$fieldName = $attributes[$username_attr_id]['fieldname'];
$fieldValue = data_entry_helper::check_default_value($fieldName, $user->name);
$r .= "<input type=\"hidden\" name=\"" . $fieldName . "\" value=\"" . $fieldValue . "\" />\n";
}
$defAttrOptions['validation'] = array('required');
if ($locations == 'all') {
$locOptions = array_merge(array('label' => lang::get('LANG_Transect')), $defAttrOptions);
$locOptions['extraParams'] = array_merge(array('parent_id' => 'NULL', 'view' => 'detail', 'orderby' => 'name'), $locOptions['extraParams']);
$r .= data_entry_helper::location_select($locOptions);
} else {
// can't use location select due to location filtering.
$r .= "<label for=\"imp-location\">" . lang::get('LANG_Transect') . ":</label>\n<select id=\"imp-location\" name=\"sample:location_id\" " . $disabled_text . " class=\" \" >";
$url = $svcUrl . '/data/location?mode=json&view=detail&parent_id=NULL&orderby=name&auth_token=' . $readAuth['auth_token'] . '&nonce=' . $readAuth["nonce"];
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
if (!empty($entities)) {
foreach ($entities as $entity) {
if (in_array($entity["id"], $locations)) {
if ($entity["id"] == data_entry_helper::$entity_to_load['sample:location_id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
$r .= "<option value=\"" . $entity["id"] . "\" " . $selected . ">" . $entity["name"] . "</option>";
}
}
}
$r .= "</select><span class=\"deh-required\">*</span><br />";
}
$languageFilteredAttrOptions = $defAttrOptions + array('language' => iform_lang_iso_639_2($args['language']));
$r .= data_entry_helper::outputAttribute($attributes[$sample_walk_direction_id], $languageFilteredAttrOptions) . ($sample_reliability_id ? data_entry_helper::outputAttribute($attributes[$sample_reliability_id], $languageFilteredAttrOptions) : "<span style=\"display: none;\">Sample attribute '" . self::ATTR_RELIABILITY . "' not assigned to this survey</span>") . data_entry_helper::outputAttribute($attributes[$sample_visit_number_id], array_merge($languageFilteredAttrOptions, array('default' => 1, 'noBlankText' => true)));
if (isset(data_entry_helper::$entity_to_load['sample:date']) && preg_match('/^(\\d{4})/', data_entry_helper::$entity_to_load['sample:date'])) {
// Date has 4 digit year first (ISO style) - convert date to expected output format
$d = new DateTime(data_entry_helper::$entity_to_load['sample:date']);
data_entry_helper::$entity_to_load['sample:date'] = $d->format('d/m/Y');
}
if ($args['language'] != 'en') {
data_entry_helper::add_resource('jquery_ui_' . $args['language']);
}
// this will autoload the jquery_ui resource. The date_picker does not have access to the args.
示例8: iform_mnhnl_lux5kgridControl
//.........这里部分代码省略.........
// update drop downs, but leave values as they are.
data_entry_helper::$javascript .= " }\n";
} else {
data_entry_helper::$javascript .= " jQuery('#" . $options['ParentFieldID'] . "').val(id);\n jQuery('#" . $options['ChooseParentFieldID'] . "').val(a1.features[0].attributes['name']);\n";
}
data_entry_helper::$javascript .= "\n loadChildFeatures(id, true); // load in children onto map\n } else {\n" . ($filterAttr[2] == 'true' ? " alert(\"" . lang::get('LANG_PositionOutsideParent') . "\");\n" : '') . " jQuery('#" . $options['ParentFieldID'] . "').val('');\n jQuery('#" . ($filterAttr[1] == "true" ? "filterSelect" . $idx : $options['ChooseParentFieldID']) . "').val('');\n }\n }\n });\n filter = new OpenLayers.Filter.Logical({type:OpenLayers.Filter.Logical.AND, filters:[\n \t\t\tnew OpenLayers.Filter.Spatial({type: OpenLayers.Filter.Spatial.CONTAINS,property: 'boundary_geom',value: geom}),\n \t\t\tnew OpenLayers.Filter.Comparison({type: OpenLayers.Filter.Comparison.EQUAL_TO, property: 'location_type_id', value: '" . $parentLocTypeID . "'})]});\n protocol.read({filter: filter});\n};\n";
if ($filterAttr[1] == "true") {
// filterable.
// set up the parent list, cacheable
$locOptions = array('label' => lang::get('LANG_CommonParentLabel'), 'id' => 'filterSelect' . $idx, 'table' => 'location', 'fieldname' => $options['ChooseParentFieldName'], 'valueField' => 'id', 'captionField' => 'name', 'template' => 'select', 'itemTemplate' => 'select_item', 'validation' => array('required'), 'columns' => 'id,name', 'extraParams' => array_merge($auth['read'], array('parent_id' => 'NULL', 'view' => 'detail', 'orderby' => 'name', 'location_type_id' => $parentLocTypeID, 'deleted' => 'f')));
$locResponse = data_entry_helper::get_population_data($locOptions);
if (isset($locResponse['error'])) {
return "PARENT LOOKUP ERROR: " . $locResponse['error'];
}
$opts = str_replace(array('{value}', '{caption}', '{selected}'), array('', lang::get('LANG_FirstChooseParentFilter'), ''), $indicia_templates[$locOptions['itemTemplate']]);
foreach ($locResponse as $record) {
$include = false;
if ($locations == 'all') {
$include = true;
} else {
if (in_array($record["id"], $locations)) {
$include = true;
}
}
if ($include == true) {
$opts .= str_replace(array('{value}', '{caption}', '{selected}'), array($record[$locOptions['valueField']], htmlentities($record[$locOptions['captionField']]), isset(data_entry_helper::$entity_to_load[$options['ParentFieldName']]) ? data_entry_helper::$entity_to_load[$options['ParentFieldName']] == $record[$locOptions['valueField']] ? 'selected=selected' : '' : ''), $indicia_templates[$locOptions['itemTemplate']]);
}
}
$locOptions['items'] = $opts;
$retVal .= data_entry_helper::apply_template($locOptions['template'], $locOptions);
if ($options['AdminMode']) {
// In admin mode assume can reassign to any location: admins should have access to all squares.
$location_list_args = array('view' => 'detail', 'extraParams' => array_merge(array('orderby' => 'name', 'website_id' => $args['website_id']), $auth['read']), 'location_type_id' => $parentLocTypeID, 'default' => data_entry_helper::$entity_to_load[$options['ParentFieldName']], 'validation' => array('required'), 'label' => $options['ParentLabel'], 'id' => $options['ParentFieldID'], 'fieldname' => $options['ParentFieldName'], 'blankText' => '');
$retVal .= data_entry_helper::location_select($location_list_args);
} else {
$retVal .= "<input type='hidden' id='" . $options['ParentFieldID'] . "' name='" . $options['ParentFieldName'] . "' value='" . (isset(data_entry_helper::$entity_to_load[$options['ParentFieldName']]) ? data_entry_helper::$entity_to_load[$options['ParentFieldName']] : "") . "' />";
}
data_entry_helper::$javascript .= "indiciaData.filterParent=true;\n// load the counts to the end of the parent drop down list. Do only once. Equivalent to filterLoad" . $idx . "\njQuery('#filterSelect" . $idx . " option').each(function(idx, elem){\n if(elem.value=='') return;\n for(i=0, j=0; i< locations.length; i++){\n if(locations[i]['parent_id']==elem.value) j++;\n }\n if(j) elem.text=elem.text+' ('+j+')';\n});\ndisplayParent = function(zoom){\n var parent_id = jQuery('#filterSelect" . $idx . "').val();\n loadFeatures(parent_id, '', {initial : false}, true, false, zoom, false, false);\n}\njQuery('#filterSelect" . $idx . "').change(function(){\n jQuery('#" . $options['ParentFieldID'] . "').val(jQuery(this).val());\n SetFilterNewLocation();\n";
foreach ($filterAttrs as $idx1 => $filterAttr1) {
if ($idx1 > $idx) {
data_entry_helper::$javascript .= " filterReset" . $idx1 . "();\n";
}
}
data_entry_helper::$javascript .= " if(jQuery(this).val()!=''){\n";
foreach ($filterAttrs as $idx1 => $filterAttr1) {
if ($idx1 > $idx) {
data_entry_helper::$javascript .= " filterLoad" . $idx1 . "();\n";
}
}
data_entry_helper::$javascript .= " }\n displayParent(true);\n});\n";
$defaultsFunction .= " if(keepFilter){\n jQuery('#" . $options['ParentFieldID'] . "').val(jQuery('#filterSelect" . $idx . "').val());\n } else {\n jQuery('#filterSelect" . $idx . "').val('');\n }\n";
$prevFilterAttr = $filterAttr;
$prevAttr = $attr;
$prevIdx = $idx;
} else {
// not filterable: just readonly field
$retVal .= '<input id="' . $options['ParentFieldID'] . '" name="' . $options['ParentFieldName'] . '" type="hidden" value="' . (isset(data_entry_helper::$entity_to_load[$options['ParentFieldName']]) && data_entry_helper::$entity_to_load[$options['ParentFieldName']] != "" && data_entry_helper::$entity_to_load[$options['ParentFieldName']] != null ? data_entry_helper::$entity_to_load[$options['ParentFieldName']] : '') . '">' . '<input id="' . $options['ChooseParentFieldID'] . '" name="dummy" value="" disabled="disabled" >';
$loadFunction .= " populate" . $idx . "();\n";
data_entry_helper::$javascript .= "\n\$('#sample-location-id').before('<label>" . lang::get('LANG_CommonParentLabel') . ":</label> ');\n\$('#" . $options['ChooseParentFieldID'] . "').insertBefore('#sample-location-id');\n\$('#sample-location-id').before('<br/>');\npopulate" . $idx . " = function(){\n jQuery('#" . $options['ChooseParentFieldID'] . "').val('');\n if(jQuery('#" . $options['ParentFieldID'] . "').val()!='' && jQuery('#" . $options['ParentFieldID'] . "').val() != null){\n var protocol = new OpenLayers.Protocol.WFS({\n url: '" . $protocol[0] . "',featurePrefix: '" . $protocol[1] . "',featureType: '" . $protocol[2] . "',geometryName:'boundary_geom',featureNS: '" . $protocol[3] . "',srsName: '" . $protocol[4] . "',version: '1.1.0',propertyNames: ['boundary_geom','name']\n ,callback: function(a1){\n if(a1.error && (typeof a1.error.success == 'undefined' || a1.error.success == false)){\n alert(\"" . lang::get('LANG_ParentLookUpFailed') . "\");\n } else if(a1.features.length > 0) {\n jQuery('#" . $options['ChooseParentFieldID'] . "').val(a1.features[0].attributes['name']);\n }}});\n var filter = new OpenLayers.Filter.FeatureId({fids: ['" . $protocol[2] . ".'+jQuery('#" . $options['ParentFieldID'] . "').val()]});\n protocol.read({filter: filter});\n }\n};\nfilterLoad" . $idx . " = function(){\n populate" . $idx . "();\n};\npopulate" . $idx . "();\nfilterReset" . $idx . " = function(){\n jQuery('#" . $options['ChooseParentFieldID'] . "').val('');\n};";
}
// have to extract id from fid.
break;
case "Shape":
//special case: geoserver shape file look up, assume only one of these in a form.
// 0 = "Shape"
// 1 = Attribute Caption, e.g. "Commune"
示例9: get_sample_form
public static function get_sample_form($args, $node, $response)
{
global $user;
if (!module_exists('iform_ajaxproxy')) {
return 'This form must be used in Drupal with the Indicia AJAX Proxy module enabled.';
}
iform_load_helpers(array('map_helper'));
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$sampleId = isset($_GET['sample_id']) ? $_GET['sample_id'] : null;
if ($sampleId) {
data_entry_helper::load_existing_record($auth['read'], 'sample', $sampleId);
$locationId = data_entry_helper::$entity_to_load['sample:location_id'];
} else {
$locationId = isset($_GET['site']) ? $_GET['site'] : null;
// location ID also might be in the $_POST data after a validation save of a new record
if (!$locationId && isset($_POST['sample:location_id'])) {
$locationId = $_POST['sample:location_id'];
}
}
$url = explode('?', $args['my_walks_page'], 2);
$params = NULL;
$fragment = NULL;
// fragment is always at the end.
if (count($url) > 1) {
$params = explode('#', $url[1], 2);
if (count($params) > 1) {
$fragment = $params[1];
}
$params = $params[0];
} else {
$url = explode('#', $url[0], 2);
if (count($url) > 1) {
$fragment = $url[1];
}
}
$args['my_walks_page'] = url($url[0], array('query' => $params, 'fragment' => $fragment, 'absolute' => TRUE));
$r = '<form method="post" id="sample">';
$r .= $auth['write'];
// we pass through the read auth. This makes it possible for the get_submission method to authorise against the warehouse
// without an additional (expensive) warehouse call, so it can get location details.
$r .= '<input type="hidden" name="page" value="mainSample"/>';
$r .= '<input type="hidden" name="read_nonce" value="' . $auth['read']['nonce'] . '"/>';
$r .= '<input type="hidden" name="read_auth_token" value="' . $auth['read']['auth_token'] . '"/>';
$r .= '<input type="hidden" name="website_id" value="' . $args['website_id'] . '"/>';
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
$r .= '<input type="hidden" name="sample:id" value="' . data_entry_helper::$entity_to_load['sample:id'] . '"/>';
}
$r .= '<input type="hidden" name="sample:survey_id" value="' . $args['survey_id'] . '"/>';
if (isset($args['include_map_samples_form']) && $args['include_map_samples_form']) {
$r .= '<div id="cols" class="ui-helper-clearfix"><div class="left" style="width: ' . (98 - (isset($args['percent_width']) ? $args['percent_width'] : 50)) . '%">';
}
if ($locationId) {
$site = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'id' => $locationId, 'deleted' => 'f')));
$site = $site[0];
$r .= '<input type="hidden" name="sample:location_id" value="' . $locationId . '"/>';
$r .= '<input type="hidden" name="sample:entered_sref" value="' . $site['centroid_sref'] . '"/>';
$r .= '<input type="hidden" name="sample:entered_sref_system" value="' . $site['centroid_sref_system'] . '"/>';
}
if ($locationId && (isset(data_entry_helper::$entity_to_load['sample:id']) || isset($_GET['site']))) {
// for reload of existing or the the site is specified in the URL, don't let the user switch the transect as that would mess everything up.
$r .= '<label>' . lang::get('Transect') . ':</label> <span class="value-label">' . $site['name'] . '</span><br/>';
} else {
// Output only the locations for this website and transect type. Note we load both transects and sections, just so that
// we always use the same warehouse call and therefore it uses the cache.
$typeTerms = array(empty($args['transect_type_term']) ? 'Transect' : $args['transect_type_term'], empty($args['section_type_term']) ? 'Section' : $args['section_type_term']);
$locationTypes = helper_base::get_termlist_terms($auth, 'indicia:location_types', $typeTerms);
$siteParams = $auth['read'] + array('website_id' => $args['website_id'], 'location_type_id' => $locationTypes[0]['id']);
if ((!isset($args['user_locations_filter']) || $args['user_locations_filter']) && (!isset($args['managerPermission']) || !user_access($args['managerPermission']))) {
$siteParams += array('locattrs' => 'CMS User ID', 'attr_location_cms_user_id' => $user->uid);
} else {
$siteParams += array('locattrs' => '');
}
$availableSites = data_entry_helper::get_population_data(array('report' => 'library/locations/locations_list', 'extraParams' => $siteParams, 'nocache' => true));
// convert the report data to an array for the lookup, plus one to pass to the JS so it can keep the hidden sref fields updated
$sitesLookup = array();
$sitesJs = array();
foreach ($availableSites as $site) {
$sitesLookup[$site['location_id']] = $site['name'];
$sitesJs[$site['location_id']] = $site;
}
// bolt in branch locations. Don't assume that branch list is superset of normal sites list.
// Only need to do if not a manager - they have already fetched the full list anyway.
if (isset($args['branch_assignment_permission']) && user_access($args['branch_assignment_permission']) && $siteParams['locattrs'] != '') {
$siteParams['locattrs'] = 'Branch CMS User ID';
$siteParams['attr_location_branch_cms_user_id'] = $user->uid;
unset($siteParams['attr_location_cms_user_id']);
$availableSites = data_entry_helper::get_population_data(array('report' => 'library/locations/locations_list', 'extraParams' => $siteParams, 'nocache' => true));
foreach ($availableSites as $site) {
$sitesLookup[$site['location_id']] = $site['name'];
$sitesJs[$site['location_id']] = $site;
}
natcasesort($sitesLookup);
// merge into original list in alphabetic order.
}
data_entry_helper::$javascript .= "indiciaData.sites = " . json_encode($sitesJs) . ";\n";
$options = array('label' => lang::get('Select Transect'), 'validation' => array('required'), 'blankText' => lang::get('please select'), 'lookupValues' => $sitesLookup);
if ($locationId) {
$options['default'] = $locationId;
}
$r .= data_entry_helper::location_select($options);
//.........这里部分代码省略.........
示例10: add_sites_to_any_user
public static function add_sites_to_any_user($auth, $args, $tabalias, $options, $path)
{
//Need to call this so we can use indiciaData.read
data_entry_helper::$js_read_tokens = $auth['read'];
if (!function_exists('iform_ajaxproxy_url')) {
return 'An AJAX Proxy module must be enabled for user sites administration to work.';
}
$r = "<form><fieldset><legend>" . lang::get('Add locations to the sites lists for other users') . "</legend>";
if (empty($options['locationTypes']) || !preg_match('/^([0-9]+,( )?)*[0-9]+$/', $options['locationTypes'])) {
return 'The sites form is not correctly configured. Please provide the location type you can add.';
}
$locationTypes = explode(',', str_replace(' ', '', $options['locationTypes']));
if (empty($options['mySitesPsnAttrId']) || !preg_match('/^[0-9]+$/', $options['mySitesPsnAttrId'])) {
return 'The sites form is not correctly configured. Please provide the person attribute ID used to store My Sites.';
}
if (!empty($options['locationParamFromURL']) && !empty($_GET[$options['locationParamFromURL']])) {
$locationIdFromURL = $_GET[$options['locationParamFromURL']];
} else {
$locationIdFromURL = 0;
}
//If we don't want to automatically get the location id from the URL, then display a drop-down of locations the user can select from
if (empty($locationIdFromURL)) {
$r .= '<label>' . lang::get('Location :') . '</label> ';
//Get a list of all the locations that match the given location types (in this case my sites are returned first, although this isn't a requirement)
$r .= data_entry_helper::location_select(array('id' => 'location-select', 'nocache' => true, 'report' => 'reports_for_prebuilt_forms/Shorewatch/locations_with_my_sites_first', 'extraParams' => $auth['read'] + array('location_type_ids' => $options['locationTypes'], 'user_id' => hostsite_get_user_field('indicia_user_id'), 'my_sites_person_attr_id' => $options['mySitesPsnAttrId']), 'blankText' => '<' . lang::get('please select') . '>'));
}
//Get the user select control
$r .= self::user_select_for_add_sites_to_any_user_control($auth['read'], $args);
$r .= '<input id="add-user-site-button" type="button" value="' . lang::get('Add to this User\'s Sites List') . '"/><br></form><br>';
$postUrl = iform_ajaxproxy_url(null, 'person_attribute_value');
//Firstly check both a uer and location have been selected.
//Then get the current user/sites saved in the database and if the new combination doesn't already exist then call a function to add it.
data_entry_helper::$javascript .= "\n function duplicateCheck(locationId, userId) {\n var userIdToAdd = \$('#user-select').val();\n var locationIdToAdd = locationId;\n var sitesReport = indiciaData.read.url +'/index.php/services/report/requestReport?report=library/locations/all_user_sites.xml&mode=json&mode=json&callback=?';\n \n var sitesReportParameters = {\n 'person_site_attr_id': '" . $options['mySitesPsnAttrId'] . "',\n 'auth_token': indiciaData.read.auth_token,\n 'nonce': indiciaData.read.nonce,\n 'reportSource':'local'\n };\n \n if (!userIdToAdd||!locationIdToAdd) {\n alert('Please select both a user and a location to add.');\n } else {\n \$.getJSON (\n sitesReport,\n sitesReportParameters,\n function (data) {\n var duplicateDetected=false;\n \$.each(data, function(i, dataItem) {\n if (userIdToAdd==dataItem.pav_user_id&&locationIdToAdd==dataItem.location_id) {\n duplicateDetected=true;\n }\n });\n if (duplicateDetected===true) {\n alert('The site/user combination you are adding already exists in the database.');\n } else {\n addUserSiteData(locationId, userIdToAdd);\n }\n }\n );\n } \n }\n ";
//After duplicate check is performed, add the user/site combination to the person_attribute_values database table
data_entry_helper::$javascript .= "\n function addUserSiteData(locationId, userIdToAdd) {\n if (!isNaN(locationId) && locationId!=='') {\n \$.post('{$postUrl}', \n {\"website_id\":" . $args['website_id'] . ",\"person_attribute_id\":" . $options['mySitesPsnAttrId'] . ",\"user_id\":userIdToAdd,\"int_value\":locationId},\n function (data) {\n if (typeof data.error === 'undefined') {\n alert('User site configuration saved successfully');\n location.reload();\n } else {\n alert(data.error);\n } \n },\n 'json'\n );\n }\n }\n ";
//Call duplicate check when administrator elects to save a user/site combination
data_entry_helper::$javascript .= "\n \$('#add-user-site-button').click(function() {\n //We can get the location id from the url or from the locations drop-down depending on the option the administrator has set.\n var locationId;\n if (" . $locationIdFromURL . ") {\n locationId = " . $locationIdFromURL . ";\n } else {\n locationId = \$('#location-select').val() \n }\n duplicateCheck(locationId,\$('#dynamic-the_user_id').val());\n });";
//Zoom map as user selects locations
data_entry_helper::$javascript .= "\n \$('#location-select, #location-search, #locality_id').change(function() {\n if (typeof indiciaData.mapdiv!=='undefined') {\n indiciaData.mapdiv.locationSelectedInInput(indiciaData.mapdiv, this.value);\n }\n });\n ";
//Function for when user elects to remove sites
data_entry_helper::$javascript .= "\n user_site_delete = function(pav_id) {\n var userId=\$('#dynamic-the_user_id').val();\n \$.post('{$postUrl}', \n {\"website_id\":" . $args['website_id'] . ",\"id\":pav_id, \"deleted\":\"t\"},\n function (data) {\n if (typeof data.error === 'undefined') {\n location.reload(); \n } else {\n alert(data.error);\n }\n },\n 'json'\n );\n }\n ";
return $r;
}
示例11: add_locations_to_user
public static function add_locations_to_user($auth, $args, $tabalias, $options, $path)
{
global $user;
//Need to call this so we can use indiciaData.read
data_entry_helper::$js_read_tokens = $auth['read'];
if (!function_exists('iform_ajaxproxy_url')) {
return 'An AJAX Proxy module must be enabled for user sites administration to work.';
}
if (!empty($options['locationDropDownLabel'])) {
$locationDropDownLabel = $addButtonLabel = $options['locationDropDownLabel'] . ' :';
} else {
$locationDropDownLabel = lang::get('Location :');
}
if (!empty($options['addButtonLabel'])) {
$addButtonLabel = $options['addButtonLabel'];
} else {
$addButtonLabel = lang::get('Add to this User\'s Sites List');
}
if (!empty($options['fieldSetLegend'])) {
$fieldSetLegendText = $options['fieldSetLegend'];
} else {
$fieldSetLegendText = lang::get('Add locations to the sites lists for other users');
}
if (!empty($options['rolesExemptFromApproval'])) {
$RolesExemptFromApproval = explode(',', $options['rolesExemptFromApproval']);
} else {
$RolesExemptFromApproval = array();
}
$r = "<form><fieldset><legend>" . $fieldSetLegendText . "</legend>";
if (empty($options['locationTypes']) || !preg_match('/^([0-9]+,( )?)*[0-9]+$/', $options['locationTypes'])) {
return 'The sites form is not correctly configured. Please provide the location type you can add.';
}
$locationTypes = explode(',', str_replace(' ', '', $options['locationTypes']));
if (empty($options['mySitesPsnAttrId']) || !preg_match('/^[0-9]+$/', $options['mySitesPsnAttrId'])) {
return 'The sites form is not correctly configured. Please provide the person attribute ID used to store My Sites.';
}
if (!empty($options['locationParamFromURL']) && !empty($_GET[$options['locationParamFromURL']])) {
$locationIdFromURL = $_GET[$options['locationParamFromURL']];
} else {
$locationIdFromURL = 0;
}
//Get the user_id from the URL if we can, this would hide the user drop-down and make
//the control applicable to a single user.
if (!empty($options['userParamFromURL']) && !empty($_GET[$options['userParamFromURL']])) {
$userIdFromURL = $_GET[$options['userParamFromURL']];
} elseif (!empty($_GET['dynamic-the_user_id'])) {
$userIdFromURL = $_GET['dynamic-the_user_id'];
} else {
$userIdFromURL = 0;
}
$extraParams = array('location_type_ids' => $options['locationTypes'], 'user_id' => hostsite_get_user_field('indicia_user_id'), 'my_sites_person_attr_id' => $options['mySitesPsnAttrId']);
//Can limit results in location drop-down to certain distance of a post code
if (!empty($options['postCodeGeomParamName']) && !empty($_GET[$options['postCodeGeomParamName']])) {
$extraParams['post_code_geom'] = $_GET[$options['postCodeGeomParamName']];
}
if (!empty($options['distanceFromPostCodeParamName']) && !empty($_GET[$options['distanceFromPostCodeParamName']])) {
$extraParams['distance_from_post_code'] = $_GET[$options['distanceFromPostCodeParamName']];
}
if (!empty($options['excludedSquareAttrId'])) {
$extraParams['excluded_square_attr_id'] = $options['excludedSquareAttrId'];
}
if (!empty($options['dontReturnAllocatedLocations'])) {
$extraParams['dont_return_allocated_locations'] = $options['dontReturnAllocatedLocations'];
}
if (!empty($options['maxAllocationForLocationAttrId'])) {
$extraParams['max_allocation_for_location_attr_id'] = $options['maxAllocationForLocationAttrId'];
}
//If we don't want to automatically get the location id from the URL, then display a drop-down of locations the user can select from
if (empty($locationIdFromURL)) {
$r .= '<label>' . $locationDropDownLabel . '</label> ';
//Get a list of all the locations that match the given location types (in this case my sites are returned first, although this isn't a requirement)
$r .= data_entry_helper::location_select(array('id' => 'location-select', 'nocache' => true, 'report' => 'reports_for_prebuilt_forms/Splash/locations_for_add_location_drop_down', 'extraParams' => $auth['read'] + $extraParams, 'blankText' => '<' . lang::get('please select') . '>'));
}
//Get the user select control if the user id isn't in the url
if (empty($userIdFromURL)) {
$r .= self::user_select_for_add_sites_to_any_user_control($auth['read'], $args);
}
$r .= '<input id="add-user-site-button" type="button" value="' . $addButtonLabel . '"/><br></form><br>';
$postUrl = iform_ajaxproxy_url(null, 'person_attribute_value');
//Firstly check both a uer and location have been selected.
//Then get the current user/sites saved in the database and if the new combination doesn't already exist then call a function to add it.
data_entry_helper::$javascript .= "\n function duplicateCheck(locationId, userId) {\n var userIdToAdd = userId;\n var locationIdToAdd = locationId;\n var sitesReport = indiciaData.read.url +'/index.php/services/report/requestReport?report=library/locations/all_user_sites.xml&mode=json&mode=json&callback=?';\n \n var sitesReportParameters = {\n 'person_site_attr_id': '" . $options['mySitesPsnAttrId'] . "',\n 'auth_token': indiciaData.read.auth_token,\n 'nonce': indiciaData.read.nonce,\n 'reportSource':'local'\n };\n \n if (!userIdToAdd||!locationIdToAdd) {\n alert('Please select both a user and a location to add.');\n } else {\n \$.getJSON (\n sitesReport,\n sitesReportParameters,\n function (data) {\n var duplicateDetected=false;\n \$.each(data, function(i, dataItem) {\n if (userIdToAdd==dataItem.pav_user_id&&locationIdToAdd==dataItem.location_id) {\n duplicateDetected=true;\n }\n });\n if (duplicateDetected===true) {\n alert('The site/user combination you are adding already exists in the database.');\n } else {\n addUserSiteData(locationId, userIdToAdd);\n }\n }\n );\n } \n }\n ";
//This veriabe holds the updated_by_id=1 if the user is found to be exempt, if they aren't exempt then this is blank so that the
//updated_by_id is set automatically by the system.
$updatedBySystem = '';
//See if any of the user's roles are in the exempt list.
foreach ($RolesExemptFromApproval as $exemptRole) {
foreach ($user->roles as $userRole) {
if ($exemptRole === $userRole) {
$updatedBySystem = ',"updated_by_id":1';
}
}
}
//Add the user/site combination to the person_attribute_values database table.
//This overrides the function in the my_sites.php file.
data_entry_helper::$javascript .= "\n var addUserSiteData = function (locationId, userIdToAdd) {\n if (!isNaN(locationId) && locationId!=='') {\n \$.post('{$postUrl}', \n {\"website_id\":" . $args['website_id'] . ",\"person_attribute_id\":" . $options['mySitesPsnAttrId'] . ",\"user_id\":userIdToAdd,\"int_value\":locationId" . $updatedBySystem . "},\n function (data) {\n if (typeof data.error === 'undefined') {\n alert('User site configuration saved successfully');\n location.reload();\n } else {\n alert(data.error);\n } \n },\n 'json'\n );\n }\n }\n ";
//Call duplicate check when administrator elects to save a user/site combination
data_entry_helper::$javascript .= "\n \$('#add-user-site-button').click(function() {\n //We can get the location id from the url or from the locations drop-down depending on the option the administrator has set.\n var locationId;\n var userId;\n if (" . $locationIdFromURL . ") {\n locationId = " . $locationIdFromURL . ";\n } else {\n locationId = \$('#location-select').val(); \n }\n if (" . $userIdFromURL . ") {\n userId = " . $userIdFromURL . ";\n } else {\n userId = \$('#user-select').val(); \n }\n duplicateCheck(locationId,userId);\n });";
//Zoom map as user selects locations
data_entry_helper::$javascript .= "\n \$('#location-select, #location-search, #locality_id').change(function() {\n if (typeof indiciaData.mapdiv!=='undefined') {\n indiciaData.mapdiv.locationSelectedInInput(indiciaData.mapdiv, this.value);\n }\n });\n ";
//.........这里部分代码省略.........
示例12: get_form
//.........这里部分代码省略.........
$defAttrOptions = array('extraParams' => $readAuth);
}
data_entry_helper::enable_validation('SurveyForm');
$r .= "<div id=\"controls\">\n";
$activeTab = 'survey';
if ($mode == 3 || $mode == 2) {
$activeTab = 'occurrence';
}
// Set Up form tabs.
if ($mode == 4) {
$activeTab = 'occurrenceList';
}
$r .= data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => $activeTab));
$r .= "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => array('#survey' => lang::get('LANG_Survey'), '#occurrence' => lang::get($readOnly || $occReadOnly ? 'LANG_Show_Occurrence' : (isset($childSample['sample:id']) ? 'LANG_Edit_Occurrence' : 'LANG_Add_Occurrence')), '#occurrenceList' => lang::get('LANG_Occurrence_List'))));
// Set up main Survey Form.
$r .= "<div id=\"survey\" class=\"mnhnl-btw-datapanel\">\n";
if ($readOnly) {
$r .= "<strong>" . lang::get('LANG_Read_Only_Survey') . "</strong>";
}
$r .= "<form id=\"SurveyForm\" method=\"post\">\n";
$r .= $writeAuth;
$r .= "<input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />\n";
$r .= "<input type=\"hidden\" id=\"sample:survey_id\" name=\"sample:survey_id\" value=\"" . $args['survey_id'] . "\" />\n";
$r .= iform_user_get_hidden_inputs($args);
if (array_key_exists('sample:id', data_entry_helper::$entity_to_load)) {
$r .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"" . data_entry_helper::$entity_to_load['sample:id'] . "\" />\n";
}
$defAttrOptions['validation'] = array('required');
$defAttrOptions['suffixTemplate'] = 'requiredsuffix';
if ($locations == 'all') {
$locOptions = array_merge(array('label' => lang::get('LANG_Transect')), $defAttrOptions);
$locOptions['extraParams'] = array_merge(array('parent_id' => 'NULL', 'view' => 'detail', 'orderby' => 'name'), $locOptions['extraParams']);
$r .= data_entry_helper::location_select($locOptions);
} else {
// can't use location select due to location filtering.
$r .= "<label for=\"imp-location\">" . lang::get('LANG_Transect') . ":</label>\n<select id=\"imp-location\" name=\"sample:location_id\" " . $disabled_text . " class=\" \" >";
$url = $svcUrl . '/data/location';
$url .= "?mode=json&view=detail&parent_id=NULL&orderby=name&auth_token=" . $readAuth['auth_token'] . "&nonce=" . $readAuth["nonce"];
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
if (!empty($entities)) {
foreach ($entities as $entity) {
if (in_array($entity["id"], $locations)) {
if ($entity["id"] == data_entry_helper::$entity_to_load['sample:location_id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
$r .= "<option value=\"" . $entity["id"] . "\" " . $selected . ">" . $entity["name"] . "</option>";
}
}
}
$r .= "</select><span class=\"deh-required\">*</span><br />";
}
$languageFilteredAttrOptions = $defAttrOptions + array('language' => iform_lang_iso_639_2($args['language']));
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_walk_direction_id']], $languageFilteredAttrOptions);
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_reliability_id']], $languageFilteredAttrOptions);
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_visit_number_id']], array_merge($languageFilteredAttrOptions, array('default' => 1, 'noBlankText' => true)));
if ($readOnly) {
$r .= data_entry_helper::text_input(array_merge($defAttrOptions, array('label' => lang::get('LANG_Date'), 'fieldname' => 'sample:date', 'disabled' => $disabledText)));
} else {
$r .= data_entry_helper::date_picker(array('label' => lang::get('LANG_Date'), 'fieldname' => 'sample:date', 'class' => 'vague-date-picker', 'suffixTemplate' => 'requiredsuffix'));
}
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_wind_id']], $languageFilteredAttrOptions);
示例13: get_form
//.........这里部分代码省略.........
$activeTab = 'survey';
} else {
if ($surveyReadOnly || $args["on_edit_survey_nav"] == "list") {
$activeTab = 'occurrenceList';
} else {
$activeTab = 'occurrence';
}
}
if ($surveyReadOnly) {
data_entry_helper::$javascript .= "jQuery('#occ-form').hide();";
}
} else {
if ($mode == 3) {
// have specified an occurrence ID
$activeTab = 'occurrence';
}
}
// Set Up form tabs.
$r .= data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => $activeTab));
$r .= "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => array('#survey' => lang::get('LANG_Survey'), '#occurrence' => lang::get($surveyReadOnly || $occReadOnly ? 'LANG_Show_Occurrence' : (isset($childSample['sample:id']) ? 'LANG_Edit_Occurrence' : 'LANG_Add_Occurrence')), '#occurrenceList' => lang::get('LANG_Occurrence_List'))));
// Set up main Survey Form.
$r .= "<div id=\"survey\" class=\"mnhnl-btw-datapanel\">\n <p id=\"read-only-survey\"><strong>" . lang::get('LANG_Read_Only_Survey') . "</strong></p>\n <form id=\"SurveyForm\" action=\"" . iform_ajaxproxy_url($node, 'sample') . "\" method=\"post\">\n <input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />\n <input type=\"hidden\" id=\"sample:survey_id\" name=\"sample:survey_id\" value=\"" . $args['survey_id'] . "\" />\n " . iform_user_get_hidden_inputs($args);
if (array_key_exists('sample:id', data_entry_helper::$entity_to_load)) {
$r .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"" . data_entry_helper::$entity_to_load['sample:id'] . "\" />\n";
} else {
$r .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"\" disabled=\"disabled\" />\n";
}
$defAttrOptions['validation'] = array('required');
$defAttrOptions['suffixTemplate'] = 'requiredsuffix';
if ($locations == 'all') {
$locOptions = array_merge(array('label' => lang::get('LANG_Transect')), $defAttrOptions);
$locOptions['extraParams'] = array_merge(array('parent_id' => 'NULL', 'view' => 'detail', 'orderby' => 'name'), $locOptions['extraParams']);
$r .= data_entry_helper::location_select($locOptions);
} else {
// can't use location select due to location filtering.
$r .= "<label for=\"imp-location\">" . lang::get('LANG_Transect') . ":</label>\n<select id=\"imp-location\" name=\"sample:location_id\" " . $disabled_text . " class=\" \" >";
$url = $svcUrl . '/data/location?mode=json&view=detail&parent_id=NULL&orderby=name&auth_token=' . $readAuth['auth_token'] . '&nonce=' . $readAuth["nonce"];
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
if (!empty($entities)) {
foreach ($entities as $entity) {
if (in_array($entity["id"], $locations)) {
if ($entity["id"] == data_entry_helper::$entity_to_load['sample:location_id']) {
$selected = 'selected="selected"';
} else {
$selected = '';
}
$r .= "<option value=\"" . $entity["id"] . "\" " . $selected . ">" . $entity["name"] . "</option>";
}
}
}
$r .= "</select><span class=\"deh-required\">*</span><br />";
}
$languageFilteredAttrOptions = $defAttrOptions + array('language' => iform_lang_iso_639_2($args['language']));
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_walk_direction_id']], $languageFilteredAttrOptions) . data_entry_helper::outputAttribute($attributes[$args['sample_reliability_id']], $languageFilteredAttrOptions) . data_entry_helper::outputAttribute($attributes[$args['sample_visit_number_id']], array_merge($languageFilteredAttrOptions, array('default' => 1, 'noBlankText' => true)));
if ($surveyReadOnly) {
$r .= data_entry_helper::text_input(array_merge($defAttrOptions, array('label' => lang::get('LANG_Date'), 'fieldname' => 'sample:date', 'disabled' => $disabledText)));
} else {
$r .= data_entry_helper::date_picker(array('label' => lang::get('LANG_Date'), 'fieldname' => 'sample:date', 'class' => 'vague-date-picker', 'suffixTemplate' => 'requiredsuffix'));
}
$r .= data_entry_helper::outputAttribute($attributes[$args['sample_wind_id']], $languageFilteredAttrOptions) . data_entry_helper::outputAttribute($attributes[$args['sample_precipitation_id']], $languageFilteredAttrOptions) . data_entry_helper::outputAttribute($attributes[$args['sample_temperature_id']], array_merge($defAttrOptions, array('suffixTemplate' => 'nosuffix'))) . " degC<span class=\"deh-required\">*</span><br />" . data_entry_helper::outputAttribute($attributes[$args['sample_cloud_id']], $defAttrOptions) . data_entry_helper::outputAttribute($attributes[$args['sample_start_time_id']], array_merge($defAttrOptions, array('suffixTemplate' => 'nosuffix'))) . " hh:mm<span class=\"deh-required\">*</span><br />" . data_entry_helper::outputAttribute($attributes[$args['sample_end_time_id']], array_merge($defAttrOptions, array('suffixTemplate' => 'nosuffix'))) . " hh:mm<span class=\"deh-required\">*</span><br />";
unset($defAttrOptions['suffixTemplate']);
unset($defAttrOptions['validation']);
if (user_access($adminPerm)) {
示例14: array
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<html>
<head>
<title>Map helper test</title>
<link rel="stylesheet" href="demo.css" type="text/css" media="screen">
<link rel="stylesheet" href="../../media/css/default_site.css" type="text/css" media="screen">
</head>
<body>
<div id="wrap">
<h1>Data Entry Helper Map</h1>
<?php
include '../../client_helpers/data_entry_helper.php';
require 'data_entry_config.php';
$readAuth = data_entry_helper::get_read_auth($config['website_id'], $config['password']);
echo data_entry_helper::sref_and_system(array('label' => 'Spatial Reference'));
echo data_entry_helper::location_select(array('label' => 'Select a known place', 'extraParams' => $readAuth));
echo data_entry_helper::georeference_lookup(array('label' => 'Search for place'));
echo data_entry_helper::postcode_textbox(array('label' => 'Enter postcode', 'hiddenFields' => false, 'fieldname' => 'sample:location_name'));
echo data_entry_helper::map_panel(array('readAuth' => $readAuth));
/*
If you have a GeoServer instance set up and running with your Indicia data as a data source, you can add WMS layers
to the map_panel. In this example the GeoServer instance has a feature type setup to point to the grids_osgb_100k table
as well as a second one setup to point to the samples table. The namespace the feature types are in is called indicia.
echo data_entry_helper::map_panel(array(
'readAuth' => $readAuth,
'indiciaWMSLayers' => array('indicia:grids_osgb_100k', 'indicia:samples')
));
*/
echo data_entry_helper::dump_javascript();
?>
</div>