本文整理汇总了PHP中data_entry_helper::tab_header方法的典型用法代码示例。如果您正苦于以下问题:PHP data_entry_helper::tab_header方法的具体用法?PHP data_entry_helper::tab_header怎么用?PHP data_entry_helper::tab_header使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类data_entry_helper
的用法示例。
在下文中一共展示了data_entry_helper::tab_header方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: 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 $errors 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, $errors = null)
{
$r = '';
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
// variables to tracks which parts of the plots grid are not completed, so we can display a correct message
$someGridRefsMissing = false;
$someHabitatsMissing = false;
$someSqTypesMissing = false;
data_entry_helper::$validation_mode = array('colour', 'hint', 'message');
if (isset($_GET['sample_id'])) {
data_entry_helper::load_existing_record($auth['read'], 'sample', $_GET['sample_id']);
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');
}
$topSampleAttrs = self::load_top_sample_attrs($auth, $args, $_GET['sample_id']);
} else {
$topSampleAttrs = self::load_top_sample_attrs($auth, $args);
}
global $indicia_templates;
$indicia_templates['starredSuffix'] = "*<br/>\n";
$indicia_templates['validation_message'] = "<span class=\"ui-state-error-text\">{error}</span>\n";
data_entry_helper::enable_validation('entry-form');
$r .= '<form method="post" action="" id="entry-form">';
$r .= '<div id="tabs">';
data_entry_helper::enable_tabs(array('divId' => 'tabs', 'navButtons' => true));
$r .= data_entry_helper::tab_header(array('tabs' => array('#your-square' => 'Find Place', '#your-plots' => 'Your Plots', '#species_1' => 'Species Page 1', '#species_2' => 'Species Page 2', '#species_3' => 'Species Page 3', '#species_other' => 'Other Species')));
$r .= '<div id="your-square">';
$r .= self::get_hiddens($args, $auth);
$r .= self::tab_your_square($args, $auth['read'], $topSampleAttrs);
$r .= '</div>';
// your-square
$r .= '<div id="your-plots">';
$r .= self::tab_your_plots($args, $auth['read']);
$r .= '</div>';
// your-plots
$r .= '<div id="species_1">';
$r .= self::tab_species($args, $auth, 0, 34);
$r .= '</div>';
// species-1
$r .= '<div id="species_2">';
$r .= self::tab_species($args, $auth, 34, 34);
$r .= '</div>';
// species-2
$r .= '<div id="species_3">';
$r .= self::tab_species($args, $auth, 68, 34);
$r .= '</div>';
// species-3
$r .= '<div id="species_other">';
$r .= self::tab_other_species($args, $auth);
$r .= '</div>';
// species-3
$r .= '</div>';
// tabs
$r .= '</form>';
return $r;
}
示例2: 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)
{
global $indicia_templates;
iform_load_helpers(array('map_helper', 'report_helper'));
// apply defaults
$args = array_merge(array(), $args);
$reloadPath = self::getReloadPath();
data_entry_helper::$website_id = $args['website_id'];
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
if (!empty($_GET['user_trust_id'])) {
self::loadExistingUserTrust($_GET['user_trust_id'], $auth, $args);
}
$r = "<form method=\"post\" id=\"entry_form\" action=\"{$reloadPath}\">\n";
$r .= $auth['write'] . "<input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />\n";
$r .= data_entry_helper::hidden_text(array('fieldname' => 'user_trust:id'));
$r .= data_entry_helper::autocomplete(array('label' => lang::get('Recorder to trust'), 'fieldname' => 'user_trust:user_id', 'table' => 'user', 'valueField' => 'id', 'captionField' => 'person_name', 'extraParams' => $auth['read'] + array('view' => 'detail'), 'class' => 'control-width-4'));
$col1 = '<p>Define the combination of survey, taxon group and/or location that this recorder is trusted for below.</p>';
$col1 .= '<fieldset><legend>' . lang::get('Trust settings') . '</legend>';
$col1 .= data_entry_helper::autocomplete(array('label' => lang::get('Trust records in this survey'), 'fieldname' => 'user_trust:survey_id', 'table' => 'survey', 'valueField' => 'id', 'captionField' => 'title', 'blankText' => '<' . lang::get('any') . '>', 'extraParams' => $auth['read'] + array('sharing' => 'verification'), 'class' => 'control-width-4'));
$col1 .= data_entry_helper::autocomplete(array('label' => lang::get('Trust records in this taxon group'), 'fieldname' => 'user_trust:taxon_group_id', 'table' => 'taxon_group', 'valueField' => 'id', 'captionField' => 'title', 'blankText' => '<' . lang::get('any') . '>', 'extraParams' => $auth['read'], 'class' => 'control-width-4'));
$col1 .= data_entry_helper::autocomplete(array('label' => lang::get('Trust records in this location'), 'fieldname' => 'user_trust:location_id', 'table' => 'location', 'valueField' => 'id', 'captionField' => 'name', 'blankText' => '<' . lang::get('any') . '>', 'extraParams' => $auth['read'] + array('location_type_id' => variable_get('indicia_profile_location_type_id', '')), 'class' => 'control-width-4'));
$col2 = '<p>' . lang::get('Review this recorder\'s experience in the tabs below') . '</p>';
$col2 .= '<div id="summary-tabs">';
$col2 .= data_entry_helper::tab_header(array('tabs' => array('#tab-surveys' => lang::get('Surveys'), '#tab-taxon-groups' => lang::get('Taxon groups'), '#tab-locations' => lang::get('Locations'))));
data_entry_helper::enable_tabs(array('divId' => 'summary-tabs'));
$col2 .= '<div id="tab-surveys">';
$col2 .= report_helper::report_grid(array('id' => 'surveys-summary', 'readAuth' => $auth['read'], 'dataSource' => 'library/surveys/filterable_surveys_verification_breakdown', 'ajax' => TRUE, 'autoloadAjax' => FALSE, 'extraParams' => array('my_records' => 1)));
$col2 .= '</div>';
$col2 .= '<div id="tab-taxon-groups">';
$col2 .= report_helper::report_grid(array('id' => 'taxon-groups-summary', 'readAuth' => $auth['read'], 'dataSource' => 'library/taxon_groups/filterable_taxon_groups_verification_breakdown', 'ajax' => TRUE, 'autoloadAjax' => FALSE, 'extraParams' => array('my_records' => 1)));
$col2 .= '</div>';
$col2 .= '<div id="tab-locations">';
$col2 .= report_helper::report_grid(array('id' => 'locations-summary', 'readAuth' => $auth['read'], 'dataSource' => 'library/locations/filterable_locations_verification_breakdown', 'ajax' => TRUE, 'autoloadAjax' => FALSE, 'extraParams' => array('my_records' => 1, 'location_type_id' => variable_get('indicia_profile_location_type_id', ''))));
$col2 .= '</div>';
$col2 .= '</div>';
$r .= str_replace(array('{col-1}', '{col-2}'), array($col1, $col2), $indicia_templates['two-col-50']);
$r .= '</fieldset>';
$r .= '<input type="submit" class="indicia-button" id="save-button" value="' . (empty(data_entry_helper::$entity_to_load['user_trust_id:id']) ? lang::get('Grant trust') : lang::get('Update trust settings')) . "\" />\n";
if (!empty($_GET['user_trust_id'])) {
$r .= '<input type="submit" class="indicia-button" id="delete-button" name="delete-button" value="' . lang::get('Revoke this trust') . "\" />\n";
data_entry_helper::$javascript .= "\$('#delete-button').click(function(e) {\n if (!confirm(\"Are you sure you want to revoke this trust?\")) {\n e.preventDefault();\n return false;\n }\n });\n";
}
$r .= '</form>';
data_entry_helper::enable_validation('entry_form');
return $r;
}
示例3: get_form_html
protected static function get_form_html($args, $auth, $attributes)
{
$r = call_user_func(array(self::$called_class, 'getHeader'), $args);
$params = array($args, $auth, &$attributes);
if (self::$mode === self::MODE_CLONE) {
call_user_func_array(array(self::$called_class, 'cloneEntity'), $params);
}
$firstTabExtras = method_exists(self::$called_class, 'getFirstTabAdditionalContent') ? call_user_func_array(array(self::$called_class, 'getFirstTabAdditionalContent'), $params) : '';
$customAttributeTabs = get_attribute_tabs($attributes);
$tabs = self::get_all_tabs($args['structure'], $customAttributeTabs);
if (isset($tabs['-'])) {
$hasControls = false;
$r .= self::get_tab_content($auth, $args, '$tab' - '', $tabs['-'], 'above-tabs', $attributes, $hasControls);
unset($tabs['-']);
}
$r .= "<div id=\"controls\">\n";
// Build a list of the tabs that actually have content
$tabHtml = self::get_tab_html($tabs, $auth, $args, $attributes, $firstTabExtras);
// Output the dynamic tab headers
if ($args['interface'] != 'one_page') {
$headerOptions = array('tabs' => array());
foreach ($tabHtml as $tab => $tabContent) {
$alias = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$tabtitle = lang::get("LANG_Tab_{$alias}");
if ($tabtitle == "LANG_Tab_{$alias}") {
// if no translation provided, we'll just use the standard heading
$tabtitle = $tab;
}
$headerOptions['tabs']['#tab-' . $alias] = $tabtitle;
}
$r .= data_entry_helper::tab_header($headerOptions);
data_entry_helper::enable_tabs(array('divId' => 'controls', 'style' => $args['interface'], 'progressBar' => isset($args['tabProgress']) && $args['tabProgress'] == true, 'navButtons' => isset($args['force_next_previous']) && $args['force_next_previous']));
} else {
// ensure client side validation is activated if requested on single page forms. This is done in the enable_tabs bit above.
// This is useful if we have custom client side validation.
if (isset(data_entry_helper::$validated_form_id)) {
data_entry_helper::$javascript .= "\n\$('#" . data_entry_helper::$validated_form_id . "').submit(function() {\n var tabinputs = \$('#" . data_entry_helper::$validated_form_id . "').find('input,select,textarea').not(':disabled,[name=],.scTaxonCell,.inactive');\n var tabtaxoninputs = \$('#" . data_entry_helper::$validated_form_id . " .scTaxonCell').find('input,select').not(':disabled');\n if ((tabinputs.length>0 && !tabinputs.valid()) || (tabtaxoninputs.length>0 && !tabtaxoninputs.valid())) {\n alert('" . lang::get('Before you can save the data on this form, some of the values in the input boxes need checking. ' . 'These have been highlighted on the form for you.') . "');\n return false;\n }\n return true;\n});\n";
}
}
// Output the dynamic tab content
$pageIdx = 0;
$singleSpeciesLabel = self::$singleSpeciesName;
foreach ($tabHtml as $tab => $tabContent) {
// get a machine readable alias for the heading
$tabalias = 'tab-' . preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$r .= "<div id=\"{$tabalias}\">\n";
//We only want to show the single species message to the user if they have selected the option and we are in single species mode.
//We also want to only show it on the species tab otherwise in 'All one page' mode it will appear multiple times.
if (isset($args['single_species_message']) && $args['single_species_message'] && $tabalias == 'tab-species' && isset($singleSpeciesLabel)) {
$r .= '<div class="page-notice ui-state-highlight ui-corner-all">' . lang::get('You are submitting a record of {1}', $singleSpeciesLabel) . '</div>';
}
// For wizard include the tab title as a header.
if ($args['interface'] == 'wizard') {
$r .= '<h1>' . $headerOptions['tabs']['#' . $tabalias] . '</h1>';
}
$r .= $tabContent;
if (isset($args['verification_panel']) && $args['verification_panel'] && $pageIdx == count($tabHtml) - 1) {
$r .= data_entry_helper::verification_panel(array('readAuth' => $auth['read'], 'panelOnly' => true));
}
// Add any buttons required at the bottom of the tab
if ($args['interface'] === 'wizard' || $args['interface'] === 'tabs' && isset($args['force_next_previous']) && $args['force_next_previous']) {
$r .= data_entry_helper::wizard_buttons(array('divId' => 'controls', 'page' => $pageIdx === 0 ? 'first' : ($pageIdx == count($tabHtml) - 1 ? 'last' : 'middle'), 'includeVerifyButton' => isset($args['verification_panel']) && $args['verification_panel'] && $pageIdx == count($tabHtml) - 1, 'includeSubmitButton' => self::$mode !== self::MODE_EXISTING_RO, 'includeDeleteButton' => self::$mode === self::MODE_EXISTING));
} elseif ($pageIdx == count($tabHtml) - 1) {
// We need the verify button as well if this option is enabled
if (isset($args['verification_panel']) && $args['verification_panel']) {
$r .= '<button type="button" class="indicia-button" id="verify-btn">' . lang::get('Precheck my records') . "</button>\n";
}
if (call_user_func(array(self::$called_class, 'include_save_buttons')) && !($args['interface'] == 'tabs' && isset($args['save_button_below_all_pages']) && $args['save_button_below_all_pages']) && method_exists(self::$called_class, 'getSubmitButtons')) {
// last part of a non wizard interface must insert a save button, unless it is tabbed
// interface with save button beneath all pages
$r .= call_user_func(array(self::$called_class, 'getSubmitButtons'), $args);
}
}
$pageIdx++;
$r .= "</div>\n";
}
$r .= "</div>\n";
if (method_exists(self::$called_class, 'getFooter')) {
$r .= call_user_func(array(self::$called_class, 'getFooter'), $args);
}
if (method_exists(self::$called_class, 'link_species_popups')) {
$r .= call_user_func(array(self::$called_class, 'link_species_popups'), $args);
}
return $r;
}
示例4: array
* @link http://code.google.com/p/indicia/
*/
require_once DOCROOT . 'client_helpers/data_entry_helper.php';
require_once DOCROOT . 'client_helpers/report_helper.php';
if (isset($_POST)) {
data_entry_helper::dump_errors(array('errors' => $this->model->getAllErrors()));
}
$tabs = false;
if (!empty($values['subject_observation:id']) && is_numeric($values['subject_observation:id']) && $values['subject_observation:id'] > 0) {
// edit so show tabs
$tabs = true;
?>
<div id="tabs">
<?php
data_entry_helper::enable_tabs(array('divId' => 'tabs'));
echo data_entry_helper::tab_header(array('tabs' => array('#details' => 'Subject Observation', '#occurrences' => 'Occurrences')));
?>
<div id="details">
<?php
}
?>
<form class="iform" action="<?php
echo url::site();
?>
subject_observation/save" method="post">
<?php
// echo '$values: '.print_r($values, true).'<br />'; // for debug
// echo '$other_data: '.print_r($other_data, true); // for debug
echo $metadata;
if (isset($values['subject_observation:id'])) {
?>
示例5: get_occurrences_form
public static function get_occurrences_form($args, $node, $response)
{
if (!module_exists('iform_ajaxproxy')) {
return 'This form must be used in Drupal with the Indicia AJAX Proxy module enabled.';
}
data_entry_helper::add_resource('jquery_form');
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
// did the parent sample previously exist? Default is no.
$existing = false;
if (isset($_POST['sample:id'])) {
// have just posted an edit to the existing parent sample, so can use it to get the parent location id.
$parentSampleId = $_POST['sample:id'];
$parentLocId = $_POST['sample:location_id'];
$date = $_POST['sample:date'];
$existing = true;
} else {
if (isset($response['outer_id'])) {
// have just posted a new parent sample, so can use it to get the parent location id.
$parentSampleId = $response['outer_id'];
} else {
$parentSampleId = $_GET['sample_id'];
$existing = true;
}
$sample = data_entry_helper::get_population_data(array('table' => 'sample', 'extraParams' => $auth['read'] + array('view' => 'detail', 'id' => $parentSampleId, 'deleted' => 'f')));
$sample = $sample[0];
$parentLocId = $sample['location_id'];
$date = $sample['date_start'];
}
// find any attributes that apply to transect section samples.
$sampleMethods = helper_base::get_termlist_terms($auth, 'indicia:sample_methods', array('Transect Section'));
$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'], 'multiValue' => false));
if ($existing) {
// as the parent sample exists, we need to load the sub-samples and occurrences
$subSamples = data_entry_helper::get_population_data(array('report' => 'library/samples/samples_list_for_parent_sample', 'extraParams' => $auth['read'] + array('sample_id' => $parentSampleId, 'date_from' => '', 'date_to' => '', 'sample_method_id' => '', 'smpattrs' => implode(',', array_keys($attributes))), 'nocache' => true));
// transcribe the response array into a couple of forms that are useful elsewhere - one for outputting JSON so the JS knows about
// the samples, and another for lookup of sample data by code later.
$subSampleJson = array();
$subSamplesByCode = array();
foreach ($subSamples as $subSample) {
$subSampleJson[] = '"' . $subSample['code'] . '": ' . $subSample['sample_id'];
$subSamplesByCode[$subSample['code']] = $subSample;
}
data_entry_helper::$javascript .= "indiciaData.samples = { " . implode(', ', $subSampleJson) . "};\n";
$o = data_entry_helper::get_population_data(array('report' => 'library/occurrences/occurrences_list_for_parent_sample', 'extraParams' => $auth['read'] + array('view' => 'detail', 'sample_id' => $parentSampleId, 'survey_id' => '', 'date_from' => '', 'date_to' => '', 'taxon_group_id' => '', 'smpattrs' => '', 'occattrs' => $args['occurrence_attribute_id']), 'nocache' => true));
// build an array keyed for easy lookup
$occurrences = array();
foreach ($o as $occurrence) {
$occurrences[$occurrence['sample_id'] . ':' . $occurrence['taxa_taxon_list_id']] = array('value' => $occurrence['attr_occurrence_' . $args['occurrence_attribute_id']], 'o_id' => $occurrence['occurrence_id'], 'a_id' => $occurrence['attr_id_occurrence_' . $args['occurrence_attribute_id']]);
}
// store it in data for JS to read when populating the grid
data_entry_helper::$javascript .= "indiciaData.existingOccurrences = " . json_encode($occurrences) . ";\n";
} else {
data_entry_helper::$javascript .= "indiciaData.samples = {};\n";
data_entry_helper::$javascript .= "indiciaData.existingOccurrences = {};\n";
}
$sections = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'parent_id' => $parentLocId, 'deleted' => 'f', 'orderby' => 'code')));
$r = "<form method=\"post\"><div id=\"tabs\">\n";
$r .= '<input type="hidden" name="sample:id" value="' . $parentSampleId . '" />';
$r .= '<input type="hidden" name="website_id" value="' . $args['website_id'] . '"/>';
$r .= '<input type="hidden" name="survey_id" value="' . $args['survey_id'] . '"/>';
$r .= '<input type="hidden" name="page" value="grid"/>';
$r .= data_entry_helper::tab_header(array('tabs' => array('#grid' => lang::get('Enter Transect Data'), '#notes' => lang::get('Notes'))));
data_entry_helper::enable_tabs(array('divId' => 'tabs', 'style' => $args['interface']));
$r .= "<div id=\"grid\">\n";
$r .= '<table id="transect-input" class="ui-widget"><thead>';
$r .= '<tr><th class="ui-widget-header">' . lang::get('Sections') . '</th>';
foreach ($sections as $section) {
$r .= '<th class="ui-widget-header">' . $section['code'] . '</th>';
}
$r .= '</tr></thead>';
$r .= '<tbody class="ui-widget-content">';
// output rows at the top for any transect section level sample attributes
$rowClass = '';
foreach ($attributes as $attr) {
$r .= '<tr ' . $rowClass . '><td>' . $attr['caption'] . '</td>';
$rowClass = $rowClass == '' ? 'class="alt-row"' : '';
unset($attr['caption']);
foreach ($sections as $section) {
// output a cell with the attribute - tag it with a class & id to make it easy to find from JS.
$attrOpts = array('class' => 'smp-input smpAttr-' . $section['code'], 'id' => $attr['fieldname'] . ':' . $section['code'], 'extraParams' => $auth['read']);
// if there is an existing value, set it and also ensure the attribute name reflects the attribute value id.
if (isset($subSamplesByCode[$section['code']])) {
$attrOpts['fieldname'] = $attr['fieldname'] . ':' . $subSamplesByCode[$section['code']]['attr_id_sample_' . $attr['attributeId']];
$attr['default'] = $subSamplesByCode[$section['code']]['attr_sample_' . $attr['attributeId']];
} else {
$attr['default'] = isset($_POST[$attr['fieldname']]) ? $_POST[$attr['fieldname']] : '';
}
$r .= '<td>' . data_entry_helper::outputAttribute($attr, $attrOpts) . '</td>';
}
$r .= '</tr>';
}
$r .= '</tbody>';
$r .= '<tbody class="ui-widget-content" id="occs-body"></tbody>';
$r .= '</table>';
$r .= '</div>';
$r .= "<div id=\"notes\">\n";
$r .= data_entry_helper::textarea(array('fieldname' => 'sample:comment', 'label' => lang::get('Notes'), 'helpText' => "Use this space to input comments about this week's walk."));
$r .= '<input type="submit" value="' . lang::get('Save') . '"/>';
$r .= '</div></div></form>';
// A stub form for AJAX posting when we need to create an occurrence
//.........这里部分代码省略.........
示例6: get_form
/**
* Return the generated form output.
* @return Form HTML.
*/
public static function get_form($args, $node)
{
define("MODE_GRID", 0);
define("MODE_NEW_SAMPLE", 1);
define("MODE_EXISTING", 2);
self::parse_defaults($args);
self::getArgDefaults($args);
global $user;
$logged_in = $user->uid > 0;
$r = '';
// Get authorisation tokens to update and read from the Warehouse.
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$svcUrl = data_entry_helper::$base_url . '/index.php/services';
self::$auth = $auth;
$mode = isset($args['no_grid']) && $args['no_grid'] ? MODE_NEW_SAMPLE : MODE_GRID;
// default mode when no grid set to false - display grid of existing data
// mode MODE_EXISTING: display existing sample
$loadedSampleId = null;
$loadedOccurrenceId = null;
if ($_POST) {
if (!array_key_exists('website_id', $_POST)) {
// non Indicia POST, in this case must be the location allocations. add check to ensure we don't corrept the data by accident
if (iform_loctools_checkaccess($node, 'admin') && array_key_exists('mnhnld1', $_POST)) {
iform_loctools_deletelocations($node);
foreach ($_POST as $key => $value) {
$parts = explode(':', $key);
iform_loctools_insertlocation($node, $parts[2], $parts[1]);
}
}
} else {
if (!is_null(data_entry_helper::$entity_to_load)) {
$mode = MODE_EXISTING;
// errors with new sample, entity populated with post, so display this data.
}
}
// else valid save, so go back to gridview: default mode 0
}
if (array_key_exists('sample_id', $_GET)) {
$mode = MODE_EXISTING;
$loadedSampleId = $_GET['sample_id'];
}
if (array_key_exists('occurrence_id', $_GET)) {
$mode = MODE_EXISTING;
$loadedOccurrenceId = $_GET['occurrence_id'];
}
if ($mode != MODE_EXISTING && array_key_exists('newSample', $_GET)) {
$mode = MODE_NEW_SAMPLE;
data_entry_helper::$entity_to_load = array();
}
// else default to mode MODE_GRID or MODE_NEW_SAMPLE depending on no_grid parameter
self::$mode = $mode;
// default mode MODE_GRID : display grid of the samples to add a new one
// or edit an existing one.
if ($mode == MODE_GRID) {
$attributes = data_entry_helper::getAttributes(array('valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id']));
$tabs = array('#sampleList' => lang::get('LANG_Main_Samples_Tab'));
if ($args['includeLocTools'] && iform_loctools_checkaccess($node, 'admin')) {
$tabs['#setLocations'] = lang::get('LANG_Allocate_Locations');
}
if (count($tabs) > 1) {
$r .= "<div id=\"controls\">" . data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => '#sampleList')) . "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => $tabs));
}
$r .= "<div id=\"sampleList\">" . self::getSampleListGrid($args, $node, $auth, $attributes) . "</div>";
if ($args['includeLocTools'] && iform_loctools_checkaccess($node, 'admin')) {
$r .= '
<div id="setLocations">
<form method="post">
<input type="hidden" id="mnhnld1" name="mnhnld1" value="mnhnld1" /><table border="1"><tr><td></td>';
$url = $svcUrl . '/data/location?mode=json&view=detail&auth_token=' . $auth['read']['auth_token'] . "&nonce=" . $auth['read']["nonce"] . "&parent_id=NULL&orderby=name";
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
$userlist = iform_loctools_listusers($node);
foreach ($userlist as $uid => $a_user) {
$r .= '<td>' . $a_user->name . '</td>';
}
$r .= "</tr>";
if (!empty($entities)) {
foreach ($entities as $entity) {
if (!$entity["parent_id"]) {
// only assign parent locations.
$r .= "<tr><td>" . $entity["name"] . "</td>";
$defaultuserids = iform_loctools_getusers($node, $entity["id"]);
foreach ($userlist as $uid => $a_user) {
$r .= '<td><input type="checkbox" name="location:' . $entity["id"] . ':' . $uid . (in_array($uid, $defaultuserids) ? '" checked="checked"' : '"') . '></td>';
}
$r .= "</tr>";
}
}
}
$r .= "</table>\n <input type=\"submit\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save_Location_Allocations') . "\" />\n </form>\n </div>";
}
if (count($tabs) > 1) {
// close tabs div if present
$r .= "</div>";
//.........这里部分代码省略.........
示例7: get_form
//.........这里部分代码省略.........
foreach ($settings['branchCmsUserAttr']['default'] as $value) {
// now multi value
if ($value['default'] == $user->uid) {
// comparing string against int so no triple equals
$settings['canEditBody'] = true;
$settings['canAllocUser'] = true;
break;
}
}
}
}
// for an admin user the defaults apply, which will be can do everything.
// find the number of sections attribute.
foreach ($settings['attributes'] as $attr) {
if ($attr['caption'] === 'No. of sections') {
$settings['numSectionsAttr'] = $attr['fieldname'];
for ($i = 1; $i <= $attr['displayValue']; $i++) {
$settings['sections']["S{$i}"] = null;
}
$existingSectionCount = empty($attr['displayValue']) ? 1 : $attr['displayValue'];
data_entry_helper::$javascript .= "\$('#" . str_replace(':', '\\\\:', $attr['id']) . "').attr('min',{$existingSectionCount}).attr('max'," . $args['maxSectionCount'] . ");\n";
if (!$settings['canEditSections']) {
data_entry_helper::$javascript .= "\$('#" . str_replace(':', '\\\\:', $attr['id']) . "').attr('readonly','readonly').css('color','graytext');\n";
}
}
}
$sections = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'parent_id' => $settings['locationId'], 'deleted' => 'f', 'orderby' => 'id'), 'nocache' => true));
foreach ($sections as $section) {
$code = $section['code'];
data_entry_helper::$javascript .= "indiciaData.sections.{$code} = {'geom':'" . $section['boundary_geom'] . "','id':'" . $section['id'] . "','sref':'" . $section['centroid_sref'] . "','system':'" . $section['centroid_sref_system'] . "'};\n";
$settings['sections'][$code] = $section;
}
} else {
// not an existing site therefore no walks. On initial save, no section data is created.
foreach ($settings['attributes'] as $attr) {
if ($attr['caption'] === 'No. of sections') {
$settings['numSectionsAttr'] = $attr['fieldname'];
data_entry_helper::$javascript .= "\$('#" . str_replace(':', '\\\\:', $attr['id']) . "').attr('min',1).attr('max'," . $args['maxSectionCount'] . ");\n";
}
}
$settings['walks'] = array();
}
if ($settings['numSectionsAttr'] === '') {
for ($i = 1; $i <= $settings['maxSectionCount']; $i++) {
$settings['sections']["S{$i}"] = null;
}
}
$r = '<div id="controls">';
$headerOptions = array('tabs' => array('#site-details' => lang::get('Site Details')));
if ($settings['locationId']) {
$headerOptions['tabs']['#your-route'] = lang::get('Your Route');
if ($args['always_show_section_details'] || count($settings['section_attributes']) > 0) {
$headerOptions['tabs']['#section-details'] = lang::get('Section Details');
}
}
if (count($headerOptions['tabs'])) {
$r .= data_entry_helper::tab_header($headerOptions);
data_entry_helper::enable_tabs(array('divId' => 'controls', 'style' => 'Tabs', 'progressBar' => isset($args['tabProgress']) && $args['tabProgress'] == true));
}
$r .= self::get_site_tab($auth, $args, $settings);
if ($settings['locationId']) {
$r .= self::get_your_route_tab($auth, $args, $settings);
if ($args['always_show_section_details'] || count($settings['section_attributes']) > 0) {
$r .= self::get_section_details_tab($auth, $args, $settings);
}
}
$r .= '</div>';
// controls
data_entry_helper::enable_validation('input-form');
if (function_exists('drupal_set_breadcrumb')) {
$breadcrumb = array();
$breadcrumb[] = l(lang::get('Home'), '<front>');
$breadcrumb[] = l(lang::get('Sites'), $args['sites_list_path']);
if ($settings['locationId']) {
$breadcrumb[] = data_entry_helper::$entity_to_load['location:name'];
} else {
$breadcrumb[] = lang::get('New Site');
}
drupal_set_breadcrumb($breadcrumb);
}
// Inform JS where to post data to for AJAX form saving
data_entry_helper::$javascript .= 'indiciaData.ajaxFormPostUrl="' . self::$ajaxFormUrl . "\";\n";
data_entry_helper::$javascript .= 'indiciaData.ajaxFormPostSampleUrl="' . self::$ajaxFormSampleUrl . "\";\n";
data_entry_helper::$javascript .= 'indiciaData.website_id="' . $args['website_id'] . "\";\n";
data_entry_helper::$javascript .= "indiciaData.indiciaSvc = '" . data_entry_helper::$base_url . "';\n";
data_entry_helper::$javascript .= "indiciaData.readAuth = {nonce: '" . $auth['read']['nonce'] . "', auth_token: '" . $auth['read']['auth_token'] . "'};\n";
data_entry_helper::$javascript .= "indiciaData.currentSection = '';\n";
data_entry_helper::$javascript .= "indiciaData.sectionTypeId = '" . $settings['locationTypes'][1]['id'] . "';\n";
data_entry_helper::$javascript .= "indiciaData.sectionDeleteConfirm = \"" . lang::get('Are you sure you wish to delete section') . "\";\n";
data_entry_helper::$javascript .= "indiciaData.sectionInsertConfirm = \"" . lang::get('Are you sure you wish to insert a new section after section') . "\";\n";
data_entry_helper::$javascript .= "indiciaData.sectionChangeConfirm = \"" . lang::get('Do you wish to save the currently unsaved changes you have made to the Section Details?') . "\";\n";
data_entry_helper::$javascript .= "indiciaData.numSectionsAttrName = \"" . $settings['numSectionsAttr'] . "\";\n";
data_entry_helper::$javascript .= "indiciaData.maxSectionCount = \"" . $settings['maxSectionCount'] . "\";\n";
data_entry_helper::$javascript .= "indiciaData.autocalcSectionLengthAttrId = " . $settings['autocalcSectionLengthAttrId'] . ";\n";
data_entry_helper::$javascript .= "indiciaData.defaultSectionGridRef = '" . $settings['defaultSectionGridRef'] . "';\n";
if ($settings['locationId']) {
data_entry_helper::$javascript .= "selectSection('S1', true);\n";
}
return $r;
}
示例8: get_form
//.........这里部分代码省略.........
}
// else default to mode MODE_GRID or MODE_NEW_SAMPLE depending on no_grid parameter
self::$mode = $mode;
// default mode MODE_GRID : display grid of the samples to add a new one
// or edit an existing one.
if ($mode == MODE_GRID) {
$r = '';
// debug section
if (!empty($args['debug_info']) && $args['debug_info']) {
$r .= '<input type="button" value="Debug info" onclick="$(\'#debug-info-div\').slideToggle();" /><br />' . '<div id="debug-info-div" style="display: none;">';
$r .= '<p>$_GET is:<br /><pre>' . print_r($_GET, true) . '</pre></p>';
$r .= '<p>$_POST is:<br /><pre>' . print_r($_POST, true) . '</pre></p>';
$r .= '<p>Entity to load is:<br /><pre>' . print_r(data_entry_helper::$entity_to_load, true) . '</pre></p>';
$r .= '<p>Submission was:<br /><pre>' . print_r(self::$submission, true) . '</pre></p>';
$r .= '<input type="button" value="Hide debug info" onclick="$(\'#debug-info-div\').slideToggle();" />';
$r .= '</div>';
}
if (method_exists(get_called_class(), 'getHeaderHTML')) {
$r .= call_user_func(array(get_called_class(), 'getHeaderHTML'), true, $args);
}
$attributes = data_entry_helper::getAttributes(array('valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id']), false);
$tabs = array('#sampleList' => lang::get('LANG_Main_Samples_Tab'));
if ($args['includeLocTools'] && function_exists('iform_loctools_checkaccess') && iform_loctools_checkaccess($node, 'admin')) {
$tabs['#setLocations'] = lang::get('LANG_Allocate_Locations');
}
if (method_exists(get_called_class(), 'getExtraGridModeTabs')) {
$extraTabs = call_user_func(array(get_called_class(), 'getExtraGridModeTabs'), false, $auth['read'], $args, $attributes);
if (is_array($extraTabs)) {
$tabs = $tabs + $extraTabs;
}
}
if (count($tabs) > 1) {
$r .= "<div id=\"controls\">" . data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => '#sampleList')) . "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => $tabs));
}
$r .= "<div id=\"sampleList\">" . call_user_func(array(get_called_class(), 'getSampleListGrid'), $args, $node, $auth, $attributes) . "</div>";
if ($args['includeLocTools'] && function_exists('iform_loctools_checkaccess') && iform_loctools_checkaccess($node, 'admin')) {
$r .= '
<div id="setLocations">
<form method="post">
<input type="hidden" id="mnhnld1" name="mnhnld1" value="mnhnld1" /><table border="1"><tr><td></td>';
$url = $svcUrl . '/data/location?mode=json&view=detail&auth_token=' . $auth['read']['auth_token'] . "&nonce=" . $auth['read']["nonce"] . "&parent_id=NULL&orderby=name" . (isset($args['loctoolsLocTypeID']) && $args['loctoolsLocTypeID'] != '' ? '&location_type_id=' . $args['loctoolsLocTypeID'] : '');
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
$userlist = iform_loctools_listusers($node);
foreach ($userlist as $uid => $a_user) {
$r .= '<td>' . $a_user->name . '</td>';
}
$r .= "</tr>";
if (!empty($entities)) {
foreach ($entities as $entity) {
if (!$entity["parent_id"]) {
// only assign parent locations.
$r .= "<tr><td>" . $entity["name"] . "</td>";
$defaultuserids = iform_loctools_getusers($node, $entity["id"]);
foreach ($userlist as $uid => $a_user) {
$r .= '<td><input type="checkbox" name="location:' . $entity["id"] . ':' . $uid . (in_array($uid, $defaultuserids) ? '" checked="checked"' : '"') . '></td>';
}
$r .= "</tr>";
}
}
}
$r .= "</table>\n <input type=\"submit\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save_Location_Allocations') . "\" />\n </form>\n </div>";
}
if (method_exists(get_called_class(), 'getExtraGridModeTabs')) {
示例9: report_calendar_summary2
//.........这里部分代码省略.........
$rawTab .= '<th>' . (isset($options['linkURL']) && $options['linkURL'] != '' ? '<a href="' . $options['linkURL'] . $sample['id'] . '" target="_blank" title="Link to data entry form for ' . $sample['location'] . ' on ' . $sample['date'] . ' (Sample ID ' . $sample['id'] . ')">' : '') . $sample_date->format('M') . '<br/>' . $sample_date->format('d') . (isset($options['linkURL']) && $options['linkURL'] != '' ? '</a>' : '') . '</th>';
$rawDataDownloadGrid .= ',' . $sample['date'];
}
$rawDataDownloadGrid .= "\n";
$rawTab .= '</tr></thead><tbody>';
if ($sampleFields) {
foreach ($sampleFields as $sampleField) {
// last-sample-datarow
$rawTab .= '<tr class="sample-datarow ' . ($altRow ? $options['altRowClass'] : '') . '"><td class="freeze-first-col">' . $sampleField['caption'] . '</td>';
$rawDataDownloadGrid .= '"' . $sampleField['caption'] . '",';
foreach ($sampleDateList as $sample) {
$rawTab .= '<td>' . ($sample[$sampleField['caption']] === null || $sample[$sampleField['caption']] == '' ? ' ' : $sample[$sampleField['caption']]) . '</td>';
$rawDataDownloadGrid .= ',' . $sample[$sampleField['caption']];
}
$rawTab .= '</tr>';
$rawDataDownloadGrid .= "\n";
$altRow = !$altRow;
}
data_entry_helper::$javascript .= "var sampleDatarows = \$('#rawData .sample-datarow').length;\n\$('#rawData .sample-datarow').eq(sampleDatarows-1).addClass('last-sample-datarow');\n";
}
foreach ($sortData as $sortedTaxon) {
$seriesID = $sortedTaxon[1];
// this is the meaning id
if (!empty($seriesLabels[$seriesID])) {
$rawTab .= '<tr class="datarow ' . ($altRow ? $options['altRowClass'] : '') . '"><td class="freeze-first-col"' . (isset($seriesLabels[$seriesID]['preferred']) ? ' title="' . $seriesLabels[$seriesID]['preferred'] . '"' : '') . '>' . $seriesLabels[$seriesID]['label'] . '</td>';
$rawDataDownloadGrid .= '"' . $seriesLabels[$seriesID]['label'] . '","' . (isset($seriesLabels[$seriesID]['preferred']) ? $seriesLabels[$seriesID]['preferred'] : '') . '",';
foreach ($sampleList as $sampleID) {
$rawTab .= '<td>' . (isset($rawArray[$sampleID][$seriesID]) ? $rawArray[$sampleID][$seriesID] : ' ') . '</td>';
$rawDataDownloadGrid .= ',' . (isset($rawArray[$sampleID][$seriesID]) ? $rawArray[$sampleID][$seriesID] : '');
}
$rawTab .= '</tr>';
$rawDataDownloadGrid .= "\n";
$altRow = !$altRow;
}
}
$rawTab .= '</tbody></table></div></div>';
}
}
}
} else {
$rawTab = "<p>Raw Data is only available when a location is specified.</p>";
}
$hasData = count($summaryArray) > 0;
$tabs = array('#summaryData' => lang::get('Summary Table'));
if ($hasData) {
$tabs = array_merge($tabs, array('#summaryChart' => lang::get('Summary Chart'), '#estimateData' => lang::get('Estimate Table'), '#estimateChart' => lang::get('Estimate Chart')));
}
$tabs['#rawData'] = lang::get('Raw Data');
$downloadTab = "";
$timestamp = isset($options['includeReportTimeStamp']) && $options['includeReportTimeStamp'] ? '_' . date('YmdHis') : '';
unset($options['extraParams']['orderby']);
// may have been set for raw data
// No need for saved reports to be atomic events. Will be purged automatically.
global $base_url;
$cacheFolder = data_entry_helper::$cache_folder ? data_entry_helper::$cache_folder : data_entry_helper::relative_client_helper_path() . 'cache/';
if ($hasData && $options['includeSummaryGridDownload']) {
$cacheFile = $options['downloadFilePrefix'] . 'summaryDataGrid' . $timestamp . '.csv';
$handle = fopen($cacheFolder . $cacheFile, 'wb');
fwrite($handle, $summaryDataDownloadGrid);
fclose($handle);
$downloadTab .= '<tr><td>' . lang::get('Download Summary Grid (CSV Format)') . ' : </td><td><a target="_blank" href="' . $base_url . '/' . drupal_get_path('module', 'iform') . '/client_helpers/cache/' . $cacheFile . '" download type="text/csv"><button type="button">' . lang::get('Download') . '</button></a></td></tr>' . "\n";
}
if ($hasData && $options['includeEstimatesGridDownload']) {
$cacheFile = $options['downloadFilePrefix'] . 'estimateDataGrid' . $timestamp . '.csv';
$handle = fopen($cacheFolder . $cacheFile, 'wb');
fwrite($handle, $estimateDataDownloadGrid);
fclose($handle);
$downloadTab .= '<tr><td>' . lang::get('Download Estimates Grid (CSV Format)') . ' : </td><td><a target="_blank" href="' . $base_url . '/' . drupal_get_path('module', 'iform') . '/client_helpers/cache/' . $cacheFile . '" download type="text/csv"><button type="button">' . lang::get('Download') . '</button></a></td></tr>' . "\n";
}
if ($hasRawData && $options['includeRawGridDownload']) {
$cacheFile = $options['downloadFilePrefix'] . 'rawDataGrid' . $timestamp . '.csv';
$handle = fopen($cacheFolder . $cacheFile, 'wb');
fwrite($handle, $rawDataDownloadGrid);
fclose($handle);
$downloadTab .= '<tr><td>' . lang::get('Download Raw Data Grid (CSV Format)') . ' : </td><td><a target="_blank" href="' . $base_url . '/' . drupal_get_path('module', 'iform') . '/client_helpers/cache/' . $cacheFile . '" download type="text/csv"><button type="button">' . lang::get('Download') . '</button></a></td></tr>' . "\n";
}
if ($hasData && count($options['downloads']) > 0) {
// format is assumed to be CSV
global $indicia_templates;
$indicia_templates['report_download_link'] = '<a target="_blank" href="{link}" download ><button type="button">' . lang::get('Download') . '</button></a>';
$downloadOptions = array('readAuth' => $options['readAuth'], 'extraParams' => array_merge($options['extraParams'], array('date_from' => $options['date_start'], 'date_to' => $options['date_end'])), 'itemsPerPage' => false);
// there are problems dealing with location_list as an array if empty, so connvert
if ($downloadOptions['extraParams']['location_list'] == "") {
$downloadOptions['extraParams']['location_list'] = "(-1)";
} else {
$downloadOptions['extraParams']['location_list'] = '(' . $downloadOptions['extraParams']['location_list'] . ')';
}
foreach ($options['downloads'] as $download) {
$downloadOptions['dataSource'] = $download['dataSource'];
$downloadOptions['filename'] = $download['filename'];
$downloadTab .= '<tr><td>' . $download['caption'] . ' : </td><td>' . report_helper::report_download_link($downloadOptions) . '</td></tr>';
}
}
if ($downloadTab != "") {
$tabs['#dataDownloads'] = lang::get('Downloads');
}
$r .= '<div id="controls">' . data_entry_helper::enable_tabs(array('divId' => 'controls')) . data_entry_helper::tab_header(array('tabs' => $tabs)) . ($hasData ? '<div id="summaryData">' . $summaryTab . '</div>' . '<div id="summaryChart"><div id="' . $options['chartID'] . '-summary" style="height:' . $options['height'] . 'px;' . (isset($options['width']) && $options['width'] != '' ? 'width:' . $options['width'] . 'px;' : '') . '"></div>' . $summarySeriesPanel . '</div>' . '<div id="estimateData">' . $estimateTab . '</div>' . '<div id="estimateChart"><div id="' . $options['chartID'] . '-estimates" style="height:' . $options['height'] . 'px;' . (isset($options['width']) && $options['width'] != '' ? 'width:' . $options['width'] . 'px;' : '') . '"></div>' . $summarySeriesPanel . '</div>' : '<div id="summaryData"><p>' . lang::get('No data available for this period with these filter values.') . '</p></div>') . '<div id="rawData">' . $rawTab . '</div>' . ($downloadTab != "" ? '<div id="dataDownloads"><table><tbody style="border:none;">' . $downloadTab . '</tbody></table></div>' : '') . '</div>';
$warnings .= '<span style="display:none;">Finish report_calendar_summary : ' . date(DATE_ATOM) . '</span>' . "\n";
return $warnings . $r;
}
示例10: get_form
//.........这里部分代码省略.........
// when given a restricted feature list we have to use the feature id to filter in order to not go over 2000 char limit on the URL
// Can only generate the feature id if we access a table directly, not through a view. Go direct to the locations table.
// don't need to worry about parent_id in this case as we know exactly which features we want.
// need to use btw_transects view for unrestricted so we can filter by parent_id.
$locFeatures = array();
foreach ($locations as $location) {
$locFeatures[] = "locations." . $location;
}
data_entry_helper::$javascript .= "\n LAYERS: 'indicia:locations',\n FEATUREID: '" . implode(',', $locFeatures) . "'";
} else {
data_entry_helper::$javascript .= "\n LAYERS: '" . $optionsArray_Location['LAYERS'] . "'";
}
data_entry_helper::$javascript .= "\n };\nlocationListLayer = new OpenLayers.Layer.WMS('" . $optionArray_Location['Name'] . "',\n '" . iform_proxy_url($optionsArray_Location['URL']) . "',\n WMSoptions, {\n minScale: " . $optionsArray_Location['minScale'] . ",\n maxScale: " . $optionsArray_Location['maxScale'] . ",\n units: '" . $optionsArray_Location['units'] . "',\n isBaseLayer: false,\n singleTile: true\n });\n// Create vector layers: one to display the location onto, and another for the occurrence list\n// the default edit layer is used for the occurrences themselves\nlocStyleMap = new OpenLayers.StyleMap({\n \"default\": new OpenLayers.Style({\n fillColor: \"Green\",\n strokeColor: \"Black\",\n fillOpacity: 0.2,\n strokeWidth: 1\n })\n });\nlocationLayer = new OpenLayers.Layer.Vector(\"" . lang::get("LANG_Location_Layer") . "\",\n {styleMap: locStyleMap});\noccStyleMap = new OpenLayers.StyleMap({\n \"default\": new OpenLayers.Style({\n pointRadius: 3,\n fillColor: \"Red\",\n fillOpacity: 0.3,\n strokeColor: \"Red\",\n strokeWidth: 1\n }) });\noccListLayer = new OpenLayers.Layer.Vector(\"" . lang::get("LANG_Occurrence_List_Layer") . "\",\n {styleMap: occStyleMap});\n";
drupal_add_js(drupal_get_path('module', 'iform') . '/media/js/hasharray.js', 'module');
drupal_add_js(drupal_get_path('module', 'iform') . '/media/js/jquery.datagrid.js', 'module');
// Work out list of locations this user can see.
$locations = iform_loctools_listlocations($node);
///////////////////////////////////////////////////////////////////
// default mode 0 : display a page with tabs for survey selector,
// locations allocator and reports (last two require permissions)
///////////////////////////////////////////////////////////////////
if ($mode == 0) {
// If the user has permissions, add tabs so can choose to see
// locations allocator
$tabs = array('#surveyList' => lang::get('LANG_Surveys'));
if (iform_loctools_checkaccess($node, 'admin')) {
$tabs['#setLocations'] = lang::get('LANG_Allocate_Locations');
}
if (iform_loctools_checkaccess($node, 'superuser')) {
$tabs['#downloads'] = lang::get('LANG_Download');
}
if (count($tabs) > 1) {
$r .= "<div id=\"controls\">" . data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => '#surveyList')) . "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => $tabs));
}
if ($locations == 'all') {
$useloclist = 'NO';
$loclist = '-1';
} else {
// an empty list will cause an sql error, lids must be > 0, so push a -1 to prevent the error.
if (empty($locations)) {
$locations[] = -1;
}
$useloclist = 'YES';
$loclist = implode(',', $locations);
}
// Create the Survey list datagrid for this user.
drupal_add_js("jQuery(document).ready(function(){\n \$('div#smp_grid').indiciaDataGrid('rpt:mnhnl_btw_list_samples', {\n indiciaSvc: '" . $svcUrl . "',\n dataColumns: ['location_name', 'date', 'num_visit', 'num_occurrences', 'num_taxa'],\n reportColumnTitles: {location_name : '" . lang::get('LANG_Transect') . "', date : '" . lang::get('LANG_Date') . "', num_visit : '" . lang::get('LANG_Visit_No') . "', num_occurrences : '" . lang::get('LANG_Num_Occurrences') . "', num_taxa : '" . lang::get('LANG_Num_Species') . "'},\n actionColumns: {" . lang::get('LANG_Show') . " : \"" . url('node/' . $node->nid, array('query' => 'sample_id=£id£')) . "\"},\n auth : { nonce : '" . $readAuth['nonce'] . "', auth_token : '" . $readAuth['auth_token'] . "'},\n parameters : { survey_id : '" . $args['survey_id'] . "', visit_attr_id : '" . $args['sample_visit_number_id'] . "', closed_attr_id : '" . $args['sample_closure_id'] . "', use_location_list : '" . $useloclist . "', locations : '" . $loclist . "'},\n itemsPerPage : 12,\n condCss : {field : 'closed', value : '0', css: 'mnhnl-btw-highlight'},\n cssOdd : ''\n });\n});\n ", 'inline');
$r .= '
<div id="surveyList" class="mnhnl-btw-datapanel"><div id="smp_grid"></div>
<form><input type="button" value="' . lang::get('LANG_Add_Survey') . '" onclick="window.location.href=\'' . url('node/' . $node->nid, array('query' => 'newSample')) . '\'"></form></div>';
// Add the locations allocator if user has admin rights.
if (iform_loctools_checkaccess($node, 'admin')) {
$r .= '
<div id="setLocations" class="mnhnl-btw-datapanel">
<form method="post">
<input type="hidden" id="mnhnlbtw" name="mnhnlbtw" value="mnhnlbtw" />\\n';
$url = $svcUrl . '/data/location?mode=json&view=detail&auth_token=' . $readAuth['auth_token'] . "&nonce=" . $readAuth["nonce"] . "&parent_id=NULL&orderby=name";
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
$userlist = iform_loctools_listusers($node);
if (!empty($entities)) {
foreach ($entities as $entity) {
if (!$entity["parent_id"]) {
// only assign parent locations.
示例11: 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.
* @todo: Implement this method
*/
public static function get_form($args, $node, $response = null)
{
require_once drupal_get_path('module', 'iform') . '/client_helpers/map_helper.php';
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$settings = array('locationTypes' => helper_base::get_termlist_terms($auth, 'indicia:location_types', array('Transect Section')), 'locationId' => isset($_GET['section_id']) ? $_GET['section_id'] : null, 'parentId' => isset($_GET['transect_id']) ? $_GET['transect_id'] : null);
if ($settings['parentId']) {
$parent = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'id' => $settings['parentId'], 'deleted' => 'f'), 'nocache' => true));
$settings['parent'] = $parent[0];
} else {
return 'This form must be called with a parent transect_id parameter.';
}
$settings['sections'] = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'parent_id' => $settings['parentId'], 'deleted' => 'f'), 'nocache' => true));
if ($settings['locationId']) {
data_entry_helper::load_existing_record($auth['read'], 'location', $settings['locationId']);
} else {
data_entry_helper::$entity_to_load['location:code'] = 'S' . (count($settings['sections']) + 1);
}
$settings['attributes'] = data_entry_helper::getAttributes(array('id' => $settings['locationId'], 'valuetable' => 'location_attribute_value', 'attrtable' => 'location_attribute', 'key' => 'location_id', 'fieldprefix' => 'locAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id'], 'location_type_id' => $settings['locationTypes'][0]['id']));
if (data_entry_helper::$entity_to_load['location:code']) {
$r = '<form method="post" id="input-form">';
}
$r .= $auth['write'];
$r .= '<div id="controls">';
$customAttributeTabs = array_merge(array('Section' => array('[*]')), get_attribute_tabs($settings['attributes']));
if (count($customAttributeTabs) > 1) {
$headerOptions = array('tabs' => array());
foreach ($customAttributeTabs as $tab => $content) {
$alias = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$headerOptions['tabs']['#' . $alias] = lang::get($tab);
}
$r .= data_entry_helper::tab_header($headerOptions);
data_entry_helper::enable_tabs(array('divId' => 'controls', 'style' => $args['interface'], 'progressBar' => isset($args['tabProgress']) && $args['tabProgress'] == true));
}
foreach ($customAttributeTabs as $tab => $content) {
if ($tab == 'Section') {
$r .= self::get_section_tab($auth, $args, $settings);
} else {
$alias = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$r .= "\n<div id=\"{$alias}\">\n";
$r .= get_attribute_html($settings['attributes'], $args, array('extraParams' => $auth['read']), $tab);
$r .= "</div>\n";
}
}
$r .= '</div>';
// controls
$r .= '</form>';
data_entry_helper::link_default_stylesheet();
if (function_exists('drupal_set_breadcrumb')) {
$breadcrumb = array();
$breadcrumb[] = l('Home', '<front>');
$breadcrumb[] = l('Sites', $args['sites_list_path']);
$breadcrumb[] = l($settings['parent']['name'], $args['transect_edit_path'], array('query' => array('id' => $settings['parentId'])));
$breadcrumb[] = $settings['locationId'] ? data_entry_helper::$entity_to_load['location:name'] : lang::get('new section');
drupal_set_breadcrumb($breadcrumb);
}
return $r;
}
示例12: get_form_sampleoccurrence
protected static function get_form_sampleoccurrence($args, $node)
{
// attributes must be fetched after the entity to load is filled in - this is because the id gets filled in then!
$cancelUrl = self::$currentUrl;
$cancelUrl .= strpos($cancelUrl, '?') === false ? '?' : '&';
$cancelUrl .= "supersample_id=" . data_entry_helper::$entity_to_load['sample:parent_id'];
$attributes = data_entry_helper::getAttributes(array('id' => data_entry_helper::$entity_to_load['sample:id'], 'valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => self::$auth['read'], 'survey_id' => $args['survey_id']));
if (self::$mode == MODE_EXISTING_OCCURRENCE && self::$gridmode == false && isset(data_entry_helper::$entity_to_load['sample:id'])) {
$cloneEntity = data_entry_helper::$entity_to_load;
$occList = data_entry_helper::preload_species_checklist_occurrences(data_entry_helper::$entity_to_load['sample:id'], self::$auth['read'], $args['occurrence_images']);
foreach ($occList as $id => $taxon) {
self::$occurrenceIds[] = $id;
}
if (count(self::$occurrenceIds) > 1) {
self::$gridmode = true;
data_entry_helper::$entity_to_load = $cloneEntity;
}
}
// Make sure the form action points back to this page
$r = "<form method=\"post\" id=\"entry_form\" action=\"" . self::$currentUrl . "\">\n";
// Get authorisation tokens to update the Warehouse, plus any other hidden data.
$hiddens = self::$auth['write'] . "<input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />\n" . "<input type=\"hidden\" id=\"survey_id\" name=\"survey_id\" value=\"" . $args['survey_id'] . "\" />\n" . "<input type=\"hidden\" id=\"parent_id\" name=\"sample:parent_id\" value=\"" . data_entry_helper::$entity_to_load['sample:parent_id'] . "\" />\n" . "<input type=\"hidden\" id=\"date\" name=\"sample:date\" value=\"" . data_entry_helper::$entity_to_load['sample:date'] . "\" />\n";
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
$hiddens .= "<input type=\"hidden\" id=\"sample:id\" name=\"sample:id\" value=\"" . data_entry_helper::$entity_to_load['sample:id'] . "\" />\n";
}
// Check if Record Status is included as a control. If not, then add it as a hidden.
$arr = explode("\r\n", $args['structure']);
if (!in_array('[record status]', $arr)) {
$value = isset($args['defaults']['occurrence:record_status']) ? $args['defaults']['occurrence:record_status'] : 'C';
$hiddens .= "<input type=\"hidden\" id=\"occurrence:record_status\" name=\"occurrence:record_status\" value=\"{$value}\" />\n";
}
// request automatic JS validation
if (!isset($args['clientSideValidation']) || $args['clientSideValidation']) {
data_entry_helper::enable_validation('entry_form');
}
self::set_attribute_default_block($attributes);
$tabs = self::get_all_tabs($args['occurrence_structure'], array());
$r .= "<div id=\"controls\">\n";
// Build a list of the tabs that actually have content
$tabHtml = self::get_tab_html($tabs, self::$auth, $args, $attributes, $hiddens);
// Output the dynamic tab headers
$headerOptions = array('tabs' => array());
foreach ($tabHtml as $tab => $tabContent) {
$alias = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$tabtitle = lang::get("LANG_Tab_{$alias}");
if ($tabtitle == "LANG_Tab_{$alias}") {
// if no translation provided, we'll just use the standard heading
$tabtitle = $tab;
}
$headerOptions['tabs']['#' . $alias] = $tabtitle;
}
if ($args['interface'] != 'one_page') {
$r .= data_entry_helper::tab_header($headerOptions);
data_entry_helper::enable_tabs(array('divId' => 'controls', 'style' => $args['interface'], 'progressBar' => isset($args['tabProgress']) && $args['tabProgress'] == true));
}
// Output the dynamic tab content
$pageIdx = 0;
foreach ($tabHtml as $tab => $tabContent) {
// get a machine readable alias for the heading
$tabalias = preg_replace('/[^a-zA-Z0-9]/', '', strtolower($tab));
$r .= '<div id="' . $tabalias . '">' . "\n";
// For wizard include the tab title as a header.
if ($args['interface'] != 'tabs') {
$r .= '<h1>' . $headerOptions['tabs']['#' . $tabalias] . '</h1>';
}
$r .= $tabContent;
// Add any buttons required at the bottom of the tab
if ($args['interface'] == 'wizard') {
$r .= data_entry_helper::wizard_buttons(array('classRedisplay' => 'ui-widget-content ui-state-default ui-corner-all indicia-button tab-submit-redisplay', 'captionSaveRedisplay' => 'save and redisplay', 'divId' => 'controls', 'page' => $pageIdx === 0 ? 'first' : ($pageIdx == count($tabs) - 1 ? 'last' : 'middle')));
} elseif ($pageIdx == count($tabs) - 1 && !($args['interface'] == 'tabs' && $args['save_button_below_all_pages'])) {
// last part of a non wizard interface must insert a save button, unless it is tabbed interface with save button beneath all pages
$r .= "<input type=\"submit\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save') . "\" />\n";
$r .= "<input type=\"submit\" name=\"navigate:newoccurrence\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save_and_New') . "\" />\n";
$r .= "<input type=\"button\" class=\"ui-state-default ui-corner-all\"value=\"" . lang::get('LANG_Cancel') . "\" onclick=\"window.location.href='" . $cancelUrl . "'\" >\n";
}
$pageIdx++;
$r .= "</div>\n";
}
$r .= "</div>\n";
if ($args['interface'] == 'tabs' && $args['save_button_below_all_pages']) {
$r .= "<input type=\"submit\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save') . "\" />\n";
$r .= "<input type=\"submit\" name=\"navigate:newoccurrence\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Save_and_New') . "\" />\n";
$r .= "<input type=\"button\" class=\"ui-state-default ui-corner-all\" value=\"" . lang::get('LANG_Cancel') . "\" onclick=\"window.location.href='" . $cancelUrl . "'\" >\n";
}
if (!empty(data_entry_helper::$validation_errors)) {
$r .= data_entry_helper::dump_remaining_errors();
}
$r .= "</form>";
$url = self::$svcUrl . "/data/sample/" . data_entry_helper::$entity_to_load['sample:parent_id'];
$url .= "?mode=json&view=detail&auth_token=" . self::$auth['read']['auth_token'] . "&nonce=" . self::$auth['read']['nonce'];
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entity = json_decode(curl_exec($session), true);
if (isset($entity['error'])) {
throw new Exception($entity['error']);
}
data_entry_helper::$javascript .= "\n// Create a vector layer to display the supersample location\n// the default edit layer is used for the subsamples\nSSStyleMap = new OpenLayers.StyleMap({\n \"default\": new OpenLayers.Style({\n fillColor: \"Green\",\n strokeColor: \"Black\",\n fillOpacity: 0.2,\n strokeWidth: 1\n })\n });\nSSLayer = new OpenLayers.Layer.Vector(\"" . lang::get("LANG_Supersample_Layer") . "\",\n {styleMap: SSStyleMap});\nSSparser = new OpenLayers.Format.WKT();\nSSfeature = SSparser.read('" . $entity[0]['wkt'] . "');\nSSLayer.addFeatures([SSfeature]);\n";
// The map can get initialised an awful lot later (eg when the tab it is on is displayed).
// It is therefore virtually impossible to zoom to this supersample in as the code is not templated
return $r;
//.........这里部分代码省略.........
示例13: 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)
{
global $user;
data_entry_helper::$helpTextPos = 'before';
$checks = self::check_prerequisites();
$args = self::getArgDefaults($args);
if ($checks !== true) {
return $checks;
}
iform_load_helpers(array('map_helper'));
data_entry_helper::add_resource('jquery_form');
self::$ajaxFormUrl = iform_ajaxproxy_url($node, 'loc-smp-occ');
self::$ajaxFormLocationUrl = iform_ajaxproxy_url($node, 'location');
self::$ajaxFormSampleUrl = iform_ajaxproxy_url($node, 'sample');
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$settings = array('SiteLocationType' => helper_base::get_termlist_terms($auth, 'indicia:location_types', array(empty($args['location_type_term']) ? 'TreeSite' : $args['location_type_term'])), 'TreeLocationType' => helper_base::get_termlist_terms($auth, 'indicia:location_types', array(empty($args['tree_type_term']) ? 'Tree' : $args['tree_type_term'])), 'locationId' => isset($_GET['id']) ? $_GET['id'] : null, 'canAllocUser' => $args['manager_permission'] == "" || user_access($args['manager_permission']));
$settings['attributes'] = data_entry_helper::getAttributes(array('id' => $settings['locationId'], 'valuetable' => 'location_attribute_value', 'attrtable' => 'location_attribute', 'key' => 'location_id', 'fieldprefix' => 'locAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id'], 'location_type_id' => $settings['SiteLocationType'][0]['id'], 'multiValue' => true));
$settings['tree_attributes'] = data_entry_helper::getAttributes(array('valuetable' => 'location_attribute_value', 'attrtable' => 'location_attribute', 'key' => 'location_id', 'fieldprefix' => 'locAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id'], 'location_type_id' => $settings['TreeLocationType'][0]['id'], 'multiValue' => true));
if ($args['allow_user_assignment']) {
if (false == ($settings['cmsUserAttr'] = extract_cms_user_attr($settings['attributes']))) {
return 'This form is designed to be used with the "CMS User ID" attribute setup for Site locations in the survey, or the "Allow users to be assigned to locations" option unticked.';
}
// keep a copy of the cms user ID attribute so we can use it later.
self::$cmsUserAttrId = $settings['cmsUserAttr']['attributeId'];
$found = false;
foreach ($settings['tree_attributes'] as $idx => $attr) {
if (strcasecmp($attr['caption'], 'Recorder Name') === 0) {
data_entry_helper::$javascript .= "indiciaData.assignedRecorderID = " . $attr['attributeId'] . ";\n";
$found = true;
break;
}
}
if (!$found) {
return 'This form is designed to be used with the "Recorder Name" attribute setup for Tree locations in the survey, or the "Allow users to be assigned to locations" option unticked.';
}
}
// TBD data drive
$definitions = array(array("attr" => "111", "term" => "WD", "target" => "112", "required" => true, "title" => "You must pick the dominant species from this drop down list when the WD (Dominant Species) checkbox is set."), array("attr" => "111", "term" => "WP", "target" => "113", "required" => false, "title" => "If known, you may enter the year that the woodland was planted in when the WP (Planted Date) checkbox is set."));
$common = "var check_attrs = function(){\n";
data_entry_helper::$javascript .= "var checkbox_changed_base = function(changedSelector, targetSelector, required){\n \$(changedSelector).closest('span').find('label.inline-error').remove();\n \$(changedSelector).closest('span').find('.ui-state-error').removeClass('ui-state-error');\n \$(changedSelector).closest('span').find('label.error').remove();\n \$(changedSelector).closest('span').find('.error').removeClass('error');\n if(\$(changedSelector).attr('checked'))\n \$(targetSelector).addClass(required ? 'required' : 'notrequired').closest('span').show();\n else {\n \$(targetSelector).removeClass('required').val('').closest('span').hide();\n }\n};\nvar check_attr_def = [];\ncheck_attrs = function(){\n for(var i=0; i<check_attr_def.length; i++){\n checkbox_changed_base(check_attr_def[i][0], check_attr_def[i][1], check_attr_def[i][2]);\n }\n}\n";
foreach ($definitions as $defn) {
data_entry_helper::$javascript .= "\$('[id^=locAttr\\\\:" . $defn["attr"] . "\\\\:]:checkbox').each(function(idx,elem){\n if(\$('label[for='+\$(elem).attr('id').replace(/:/g,'\\\\:')+']').html() == '" . $defn["term"] . "'){\n var tgt = \$('#locAttr\\\\:" . $defn["target"] . "');\n tgt.prev('label').remove();\n tgt.next('br').remove();\n var span = \$('<span/>');\n \$(elem).closest('span').append(span);\n span.append(tgt);" . ($defn["required"] ? "\n span.append('<span class=\"deh-required\">*</span>');" : "") . "\n tgt.attr('title','" . $defn["title"] . "');\n \$(elem).change(function(e){checkbox_changed_base(e.target, '#locAttr\\\\:" . $defn["target"] . "', " . ($defn["required"] ? "true" : "false") . ");});\n check_attr_def.push([elem, '#locAttr\\\\:" . $defn["target"] . "', " . ($defn["required"] ? "true" : "false") . "]);\n }\n});\n";
}
data_entry_helper::$javascript .= "check_attrs();\nindiciaData.trees = {};\n";
$settings['trees'] = array();
if ($settings['locationId']) {
data_entry_helper::load_existing_record($auth['read'], 'location', $settings['locationId']);
// Work out permissions for this user
$canEdit = $args['manager_permission'] == "" || user_access($args['manager_permission']);
if ($args['allow_user_assignment'] && isset($settings['cmsUserAttr']['default']) && !empty($settings['cmsUserAttr']['default'])) {
foreach ($settings['cmsUserAttr']['default'] as $value) {
// multi value
if ($value['default'] == $user->uid) {
// comparing string against int so no triple equals
$canEdit = true;
break;
}
}
}
if (!$canEdit) {
return 'You do not have access to this site.';
}
$trees = data_entry_helper::get_population_data(array('table' => 'location', 'extraParams' => $auth['read'] + array('view' => 'detail', 'parent_id' => $settings['locationId'], 'deleted' => 'f', 'orderby' => 'name'), 'nocache' => true));
foreach ($trees as $tree) {
$id = $tree['id'];
data_entry_helper::$javascript .= "indiciaData.trees[{$id}] = {'id':'" . $tree['id'] . "','name':'" . str_replace("'", "\\'", $tree['name']) . "','geom':'" . $tree['centroid_geom'] . "','sref':'" . $tree['centroid_sref'] . "','system':'" . $tree['centroid_sref_system'] . "'};\n";
$settings['trees'][$id] = $tree;
}
}
$r = '<div id="controls">';
$headerOptions = array('tabs' => array('#site-details' => lang::get('Site Details')));
$tabOptions = array('divId' => 'controls', 'style' => 'Tabs');
if ($settings['locationId']) {
$headerOptions['tabs']['#site-trees'] = lang::get('Tree Details');
$tabOptions['active'] = '#site-trees';
}
$r .= data_entry_helper::tab_header($headerOptions);
data_entry_helper::enable_tabs($tabOptions);
$settings['treeSampleMethod'] = helper_base::get_termlist_terms($auth, 'indicia:sample_methods', array('TreeInitialRegistration'));
// TODO put in error check, add in $arg driving of text value
$settings['treeSampleMethod'] = $settings['treeSampleMethod'][0];
$r .= self::get_site_tab($auth, $args, $settings);
if ($settings['locationId']) {
$r .= self::get_site_trees_tab($auth, $args, $settings);
data_entry_helper::enable_validation('tree-form');
data_entry_helper::setup_jquery_validation_js();
}
$r .= '</div>';
// controls
data_entry_helper::enable_validation('input-form');
if (function_exists('drupal_set_breadcrumb')) {
//.........这里部分代码省略.........
示例14: get_form
/**
* Return the generated form output.
* @return Form HTML.
*/
public static function get_form($args, $node)
{
define("MODE_GRID", 0);
define("MODE_NEW_SAMPLE", 1);
define("MODE_EXISTING", 2);
self::parse_defaults($args);
self::getArgDefaults($args);
global $user;
$logged_in = $user->uid > 0;
self::$node = $node;
// Get authorisation tokens to update and read from the Warehouse.
$auth = data_entry_helper::get_read_write_auth($args['website_id'], $args['password']);
$svcUrl = data_entry_helper::$base_url . '/index.php/services';
self::$auth = $auth;
$mode = isset($args['no_grid']) && $args['no_grid'] ? MODE_NEW_SAMPLE : MODE_GRID;
// default mode when no grid set to false - display grid of existing data
// mode MODE_EXISTING: display existing sample
$loadedSampleId = null;
$loadedOccurrenceId = null;
if ($_POST) {
if (!array_key_exists('website_id', $_POST)) {
// non Indicia POST, in this case must be the location allocations. add check to ensure we don't corrept the data by accident
if (function_exists('iform_loctools_checkaccess') && iform_loctools_checkaccess($node, 'admin') && array_key_exists('mnhnld1', $_POST)) {
iform_loctools_deletelocations($node);
foreach ($_POST as $key => $value) {
$parts = explode(':', $key);
iform_loctools_insertlocation($node, $parts[2], $parts[1]);
}
}
} else {
if (!is_null(data_entry_helper::$entity_to_load)) {
$mode = MODE_EXISTING;
// errors with new sample, entity populated with post, so display this data.
}
}
// else valid save, so go back to gridview: default mode 0
}
if (array_key_exists('sample_id', $_GET) && $_GET['sample_id'] != '{sample_id}') {
$mode = MODE_EXISTING;
$loadedSampleId = $_GET['sample_id'];
}
if (array_key_exists('occurrence_id', $_GET) && $_GET['occurrence_id'] != '{occurrence_id}') {
$mode = MODE_EXISTING;
$loadedOccurrenceId = $_GET['occurrence_id'];
self::$occurrenceIds = array($loadedOccurrenceId);
}
if ($mode != MODE_EXISTING && array_key_exists('newSample', $_GET)) {
$mode = MODE_NEW_SAMPLE;
data_entry_helper::$entity_to_load = array();
}
// else default to mode MODE_GRID or MODE_NEW_SAMPLE depending on no_grid parameter
self::$mode = $mode;
// default mode MODE_GRID : display grid of the samples to add a new one
// or edit an existing one.
if ($mode == MODE_GRID) {
$r = '';
$attributes = data_entry_helper::getAttributes(array('valuetable' => 'sample_attribute_value', 'attrtable' => 'sample_attribute', 'key' => 'sample_id', 'fieldprefix' => 'smpAttr', 'extraParams' => $auth['read'], 'survey_id' => $args['survey_id']), false);
$tabs = array('#sampleList' => lang::get('LANG_Main_Samples_Tab'));
if ($args['includeLocTools'] && function_exists('iform_loctools_checkaccess') && iform_loctools_checkaccess($node, 'admin')) {
$tabs['#setLocations'] = lang::get('LANG_Allocate_Locations');
}
if (method_exists(get_called_class(), 'getExtraGridModeTabs')) {
$extraTabs = call_user_func(array(get_called_class(), 'getExtraGridModeTabs'), false, $auth['read'], $args, $attributes);
if (is_array($extraTabs)) {
$tabs = $tabs + $extraTabs;
}
}
if (count($tabs) > 1) {
$r .= "<div id=\"controls\">" . data_entry_helper::enable_tabs(array('divId' => 'controls', 'active' => '#sampleList')) . "<div id=\"temp\"></div>";
$r .= data_entry_helper::tab_header(array('tabs' => $tabs));
}
$r .= "<div id=\"sampleList\">" . call_user_func(array(get_called_class(), 'getSampleListGrid'), $args, $node, $auth, $attributes) . "</div>";
if ($args['includeLocTools'] && function_exists('iform_loctools_checkaccess') && iform_loctools_checkaccess($node, 'admin')) {
$r .= '
<div id="setLocations">
<form method="post">
<input type="hidden" id="mnhnld1" name="mnhnld1" value="mnhnld1" /><table border="1"><tr><td></td>';
$url = $svcUrl . '/data/location?mode=json&view=detail&auth_token=' . $auth['read']['auth_token'] . "&nonce=" . $auth['read']["nonce"] . "&parent_id=NULL&orderby=name";
$session = curl_init($url);
curl_setopt($session, CURLOPT_RETURNTRANSFER, true);
$entities = json_decode(curl_exec($session), true);
$userlist = iform_loctools_listusers($node);
foreach ($userlist as $uid => $a_user) {
$r .= '<td>' . $a_user->name . '</td>';
}
$r .= "</tr>";
if (!empty($entities)) {
foreach ($entities as $entity) {
if (!$entity["parent_id"]) {
// only assign parent locations.
$r .= "<tr><td>" . $entity["name"] . "</td>";
$defaultuserids = iform_loctools_getusers($node, $entity["id"]);
foreach ($userlist as $uid => $a_user) {
$r .= '<td><input type="checkbox" name="location:' . $entity["id"] . ':' . $uid . (in_array($uid, $defaultuserids) ? '" checked="checked"' : '"') . '></td>';
}
$r .= "</tr>";
//.........这里部分代码省略.........
示例15: get_template_grid_left
private static function get_template_grid_left($args, $auth)
{
$r .= '<div id="outer" class="ui-helper-clearfix">';
$r .= '<div id="grid" class="left">{grid}</div>';
$r .= '<div id="record-details-wrap" class="right ui-widget ui-widget-content">';
$r .= '<div id="click-record-notice">' . t('Click on a record to view the details') . '</div>';
$r .= '<div id="record-details-content" style="display: none">';
$r .= '<div id="record-details-toolbar">';
$r .= '<button type="button" id="btn-verify">' . lang::get('Verify') . '</button>';
$r .= '<button type="button" id="btn-reject">' . lang::get('Reject') . '</button>';
$r .= '<button type="button" id="btn-email" class="default-button">' . lang::get('Email') . '</button>';
$r .= '</div>';
$r .= '<div id="record-details-tabs">';
$r .= data_entry_helper::tab_header(array('tabs' => array('#details-tab' => 'Details', '#map-tab' => 'Map', '#images-tab' => 'Images', '#comments-tab' => 'Comments')));
data_entry_helper::enable_tabs(array('divId' => 'record-details-tabs'));
$r .= '<div id="details-tab"></div>';
$r .= '<div id="map-tab">';
$options = iform_map_get_map_options($args, $auth);
$options['tabDiv'] = 'map-tab';
$r .= map_helper::map_panel($options, iform_map_get_ol_options($args));
$r .= '</div>';
$r .= '<div id="images-tab"></div>';
$r .= '<div id="comments-tab"></div>';
$r .= '</div></div></div></div>';
return $r;
}