本文整理汇总了PHP中data_entry_helper::get_species_checklist_options方法的典型用法代码示例。如果您正苦于以下问题:PHP data_entry_helper::get_species_checklist_options方法的具体用法?PHP data_entry_helper::get_species_checklist_options怎么用?PHP data_entry_helper::get_species_checklist_options使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类data_entry_helper
的用法示例。
在下文中一共展示了data_entry_helper::get_species_checklist_options方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。
示例1: mnhnl_reptiles_species_checklist
public static function mnhnl_reptiles_species_checklist()
{
global $indicia_templates;
$options = data_entry_helper::check_arguments(func_get_args(), array('listId', 'occAttrs', 'readAuth', 'extraParams', 'lookupListId'));
$options = data_entry_helper::get_species_checklist_options($options);
data_entry_helper::add_resource('json');
data_entry_helper::add_resource('autocomplete');
$occAttrControls = array();
$occAttrs = array();
// Load any existing sample's occurrence data into $entity_to_load
$subSamples = array();
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
data_entry_helper::preload_species_checklist_occurrences(data_entry_helper::$entity_to_load['sample:id'], $options['readAuth'], false, array(), $subSamples, false);
}
// load the full list of species for the grid, including the main checklist plus any additional species in the reloaded occurrences.
$options['extraParams']['view'] = 'detail';
$occList = self::get_species_checklist_occ_list($options);
// If we managed to read the species list data we can proceed
if (!array_key_exists('error', $occList)) {
$attributes = data_entry_helper::getAttributes(array('id' => null, 'valuetable' => 'occurrence_attribute_value', 'attrtable' => 'occurrence_attribute', 'key' => 'occurrence_id', 'fieldprefix' => "{fieldname}", 'extraParams' => $options['readAuth'], 'survey_id' => array_key_exists('survey_id', $options) ? $options['survey_id'] : null));
// Get the attribute and control information required to build the custom occurrence attribute columns
data_entry_helper::species_checklist_prepare_attributes($options, $attributes, $occAttrControls, $occAttrs);
$grid = "<p>" . lang::get('LANG_SpeciesInstructions') . "</p>\n";
if (isset($options['lookupListId'])) {
$grid .= self::get_species_checklist_clonable_row($options, $occAttrControls, $attributes);
}
$grid .= '<table class="ui-widget ui-widget-content mnhnl-species-grid ' . $options['class'] . '" id="' . $options['id'] . '">';
$grid .= self::get_species_checklist_header($options, $occAttrs);
$rows = array();
$rowIdx = 0;
foreach ($occList as $occ) {
$ttlid = $occ['taxon']['id'];
$firstCell = data_entry_helper::mergeParamsIntoTemplate($occ['taxon'], 'taxon_label', false, true);
if ($options['PHPtaxonLabel']) {
$firstCell = eval($firstCell);
}
$colspan = ' colspan="' . count($attributes) . '"';
// assume always removeable and presence is hidden.
$firstrow = '<td class="ui-state-default remove-row" style="width: 1%" rowspan="' . ($options['occurrenceComment'] ? "3" : "2") . '" >X</td>';
$firstrow .= str_replace('{content}', $firstCell, str_replace('{colspan}', $colspan, $indicia_templates['taxon_label_cell']));
$existing_record_id = $occ['id'];
$hidden = $options['rowInclusionCheck'] == 'checkbox' ? '' : ' style="display:none"';
if ($options['rowInclusionCheck'] == 'alwaysFixed' || $options['rowInclusionCheck'] == 'alwaysRemovable' || data_entry_helper::$entity_to_load != null && array_key_exists("sc:{$ttlid}:{$existing_record_id}:present", data_entry_helper::$entity_to_load)) {
$checked = ' checked="checked"';
} else {
$checked = '';
}
$secondrow = "<td class=\"scPresenceCell\"{$hidden}>" . ($options['rowInclusionCheck'] != 'hasData' ? "<input type=\"hidden\" class=\"scPresence\" name=\"sc:{$ttlid}:{$existing_record_id}:present\" value=\"0\"/><input type=\"checkbox\" class=\"scPresence\" name=\"sc:{$ttlid}:{$existing_record_id}:present\" {$checked} />" : '') . "</td>";
foreach ($occAttrControls as $attrId => $control) {
if ($existing_record_id) {
$search = preg_grep("/^sc:" . $ttlid . "[_[0-9]*]?:{$existing_record_id}:occAttr:{$attrId}" . '[:[0-9]*]?$/', array_keys(data_entry_helper::$entity_to_load));
$ctrlId = count($search) === 1 ? implode('', $search) : "sc:{$ttlid}:{$existing_record_id}:occAttr:{$attrId}";
} else {
$ctrlId = "sc:{$ttlid}:x{$rowIdx}:occAttr:{$attrId}";
}
if (isset(data_entry_helper::$entity_to_load[$ctrlId])) {
$existing_value = data_entry_helper::$entity_to_load[$ctrlId];
} elseif (array_key_exists('default', $attributes[$attrId])) {
$existing_value = $attributes[$attrId]['default'];
} else {
$existing_value = '';
}
$oc = str_replace('{fieldname}', $ctrlId, $control);
if (!empty($existing_value)) {
// For select controls, specify which option is selected from the existing value
if (substr($oc, 0, 7) == '<select') {
$oc = str_replace('value="' . $existing_value . '"', 'value="' . $existing_value . '" selected="selected"', $oc);
} else {
if (strpos($oc, 'checkbox') !== false) {
if ($existing_value == "1") {
$oc = str_replace('type="checkbox"', 'type="checkbox" checked="checked"', $oc);
}
} else {
$oc = str_replace('value=""', 'value="' . $existing_value . '"', $oc);
}
}
// assume all error handling/validation done client side
}
$secondrow .= str_replace(array('{label}', '{content}'), array(lang::get($attributes[$attrId]['caption']), $oc), $indicia_templates[$options['attrCellTemplate']]);
}
$thirdrow = "";
if ($options['occurrenceComment']) {
$thirdrow .= "\n<td class=\"ui-widget-content scCommentCell\" {$colspan}><label for=\"sc:{$ttlid}:{$existing_record_id}:occurrence:comment\" class=\"auto-width\" >" . lang::get("Comment") . " : </label><input class=\"scComment\" type=\"text\" name=\"sc:{$ttlid}:{$existing_record_id}:occurrence:comment\" " . "id=\"sc:{$ttlid}:{$existing_record_id}:occurrence:comment\" value=\"" . htmlspecialchars(data_entry_helper::$entity_to_load["sc:{$ttlid}:{$existing_record_id}:occurrence:comment"]) . "\" /></td>";
}
$rows[] = '<tr>' . $firstrow . '</tr>';
$rows[] = '<tr class="scMeaning-' . $occ['taxon']['taxon_meaning_id'] . ' scDataRow">' . $secondrow . '</tr>';
// no images.
if ($thirdrow != "") {
$rows[] = '<tr class="scMeaning-' . $occ['taxon']['taxon_meaning_id'] . ' scDataRow">' . $thirdrow . '</tr>';
}
// no images.
$rowIdx++;
}
$grid .= "\n<tbody>\n";
if (count($rows) > 0) {
$grid .= implode("\n", $rows) . "\n";
} else {
$grid .= "<tr style=\"display: none\"><td></td></tr>\n";
}
$grid .= "</tbody>\n</table>\n";
//.........这里部分代码省略.........
示例2: species_checklist
/**
* Helper function to generate a species checklist from a given taxon list.
*
* Please not that although this is based on the data_entry_helper function, it has only been tested with the following
* options for seasearch - @id,@useThirdLevelSamples,@lookupListId,@gridIdAttributeId,@speciesControlToUseSubSamples,@subSamplePerRow,@resizeWidth,@resizeHeight
* If you intend to use any other options, they will require further testing or development.
*
*/
private static function species_checklist($options)
{
global $indicia_templates;
data_entry_helper::add_resource('addrowtogrid');
$options = data_entry_helper::get_species_checklist_options($options);
$classlist = array('ui-widget', 'ui-widget-content', 'species-grid');
if (!empty($options['class'])) {
$classlist[] = $options['class'];
}
if ($options['subSamplePerRow']) {
// we'll track 1 sample per grid row.
$smpIdx = 0;
}
if ($options['columns'] > 1 && count($options['mediaTypes']) > 1) {
throw new Exception('The species_checklist control does not support having more than one occurrence per row (columns option > 0) ' . 'at the same time has having the mediaTypes option in use.');
}
data_entry_helper::add_resource('json');
data_entry_helper::add_resource('autocomplete');
$filterArray = data_entry_helper::get_species_names_filter($options);
$filterNameTypes = array('all', 'currentLanguage', 'preferred', 'excludeSynonyms');
//make a copy of the options so that we can maipulate it
$overrideOptions = $options;
//We are going to cycle through each of the name filter types
//and save the parameters required for each type in an array so
//that the Javascript can quickly access the required parameters
foreach ($filterNameTypes as $filterType) {
$overrideOptions['speciesNameFilterMode'] = $filterType;
$nameFilter[$filterType] = data_entry_helper::get_species_names_filter($overrideOptions);
$nameFilter[$filterType] = json_encode($nameFilter[$filterType]);
}
if (count($filterArray)) {
$filterParam = json_encode($filterArray);
data_entry_helper::$javascript .= "indiciaData['taxonExtraParams-" . $options['id'] . "'] = {$filterParam};\n";
// Apply a filter to extraParams that can be used when loading the initial species list, to get just the correct names.
if (isset($options['speciesNameFilterMode']) && !empty($options['listId'])) {
$filterFields = array();
$filterWheres = array();
self::parse_species_name_filter_mode($options, $filterFields, $filterWheres);
if (count($filterWheres)) {
$options['extraParams'] += array('query' => json_encode(array('where' => $filterWheres)));
}
$options['extraParams'] += $filterFields;
}
}
data_entry_helper::$js_read_tokens = $options['readAuth'];
data_entry_helper::$javascript .= "indiciaData['rowInclusionCheck-" . $options['id'] . "'] = '" . $options['rowInclusionCheck'] . "';\n";
data_entry_helper::$javascript .= "indiciaData['copyDataFromPreviousRow-" . $options['id'] . "'] = '" . $options['copyDataFromPreviousRow'] . "';\n";
data_entry_helper::$javascript .= "indiciaData['includeSpeciesGridLinkPage-" . $options['id'] . "'] = '" . $options['includeSpeciesGridLinkPage'] . "';\n";
data_entry_helper::$javascript .= "indiciaData.speciesGridPageLinkUrl = '" . $options['speciesGridPageLinkUrl'] . "';\n";
data_entry_helper::$javascript .= "indiciaData.speciesGridPageLinkParameter = '" . $options['speciesGridPageLinkParameter'] . "';\n";
data_entry_helper::$javascript .= "indiciaData.speciesGridPageLinkTooltip = '" . $options['speciesGridPageLinkTooltip'] . "';\n";
data_entry_helper::$javascript .= "indiciaData['editTaxaNames-" . $options['id'] . "'] = '" . $options['editTaxaNames'] . "';\n";
data_entry_helper::$javascript .= "indiciaData['subSpeciesColumn-" . $options['id'] . "'] = '" . $options['subSpeciesColumn'] . "';\n";
data_entry_helper::$javascript .= "indiciaData['subSamplePerRow-" . $options['id'] . "'] = " . ($options['subSamplePerRow'] ? 'true' : 'false') . ";\n";
if ($options['copyDataFromPreviousRow']) {
data_entry_helper::$javascript .= "indiciaData['previousRowColumnsToInclude-" . $options['id'] . "'] = '" . $options['previousRowColumnsToInclude'] . "';\n";
data_entry_helper::$javascript .= "indiciaData.langAddAnother='" . lang::get('Add another') . "';\n";
}
if (count($options['mediaTypes'])) {
data_entry_helper::add_resource('plupload');
// store some globals that we need later when creating uploaders
$relpath = data_entry_helper::getRootFolder() . data_entry_helper::client_helper_path();
$interim_image_folder = isset(parent::$interim_image_folder) ? parent::$interim_image_folder : 'upload/';
data_entry_helper::$javascript .= "indiciaData.uploadSettings = {\n";
data_entry_helper::$javascript .= " uploadScript: '" . $relpath . "upload.php',\n";
data_entry_helper::$javascript .= " destinationFolder: '" . $relpath . $interim_image_folder . "',\n";
data_entry_helper::$javascript .= " jsPath: '" . data_entry_helper::$js_path . "'";
if (isset($options['resizeWidth'])) {
data_entry_helper::$javascript .= ",\n resizeWidth: " . $options['resizeWidth'];
}
if (isset($options['resizeHeight'])) {
data_entry_helper::$javascript .= ",\n resizeHeight: " . $options['resizeHeight'];
}
if (isset($options['resizeQuality'])) {
data_entry_helper::$javascript .= ",\n resizeQuality: " . $options['resizeQuality'];
}
data_entry_helper::$javascript .= "\n}\n";
if ($indicia_templates['file_box'] != '') {
data_entry_helper::$javascript .= "file_boxTemplate = '" . str_replace('"', '\\"', $indicia_templates['file_box']) . "';\n";
}
if ($indicia_templates['file_box_initial_file_info'] != '') {
data_entry_helper::$javascript .= "file_box_initial_file_infoTemplate = '" . str_replace('"', '\\"', $indicia_templates['file_box_initial_file_info']) . "';\n";
}
if ($indicia_templates['file_box_uploaded_image'] != '') {
data_entry_helper::$javascript .= "file_box_uploaded_imageTemplate = '" . str_replace('"', '\\"', $indicia_templates['file_box_uploaded_image']) . "';\n";
}
}
$occAttrControls = array();
$occAttrs = array();
$occAttrControlsExisting = array();
$taxonRows = array();
$subSampleRows = array();
//.........这里部分代码省略.........
示例3: mnhnl_bats2_species_checklist
public static function mnhnl_bats2_species_checklist($args, $options)
{
global $indicia_templates;
// $options = data_entry_helper::check_arguments($options, array('listId', 'occAttrs', 'readAuth', 'extraParams', 'lookupListId'));
$options = data_entry_helper::get_species_checklist_options($options);
data_entry_helper::add_resource('json');
data_entry_helper::add_resource('autocomplete');
$occAttrControls = array();
$occAttrs = array();
$retVal = '';
// Load any existing sample's occurrence data into $entity_to_load: first have to load the survey method subsamples.
if (isset(data_entry_helper::$entity_to_load['sample:id'])) {
$subSamplesAttrs = array();
$smpOptions = array('table' => 'sample', 'nocache' => true, 'extraParams' => $options['readAuth'] + array('view' => 'detail', 'parent_id' => data_entry_helper::$entity_to_load['sample:id']));
$subSamples = data_entry_helper::get_population_data($smpOptions);
foreach ($subSamples as $sample) {
$subSamplesAttrs[$sample['id']] = data_entry_helper::getAttributes(array('attrtable' => 'sample_attribute', 'valuetable' => 'sample_attribute_value', 'id' => $sample['id'], 'key' => 'sample_id', 'fieldprefix' => '{MyPrefix}:smpAttr', 'extraParams' => $options['readAuth'], 'survey_id' => $args['survey_id']), true);
$subSamplesAttrs[$sample['id']][$visitAttr]['validation_rules'] = 'required';
}
foreach ($options['surveyMethods'] as $i => $method) {
$smpID = false;
foreach ($subSamples as $subSample) {
foreach ($subSamplesAttrs[$subSample['id']] as $attr) {
if ($attr['attributeId'] == $options['surveyMethodAttrId'] && $attr['default'] == $method['meaning_id']) {
$smpID = $subSample['id'];
$options['surveyMethods'][$i]['smpID'] = $smpID;
}
}
}
if ($smpID) {
self::preload_species_checklist_occurrences($smpID, $method['meaning_id'], $options['readAuth']);
}
}
}
// load the full list of species for the grid, including the main checklist plus any additional species in the reloaded occurrences.
$options['extraParams']['view'] = 'detail';
$occList = self::get_species_checklist_occ_list($options);
// If we managed to read the species list data we can proceed
if (!array_key_exists('error', $occList)) {
$attributes = data_entry_helper::getAttributes(array('id' => null, 'valuetable' => 'occurrence_attribute_value', 'attrtable' => 'occurrence_attribute', 'key' => 'occurrence_id', 'fieldprefix' => "{fieldname}", 'extraParams' => $options['readAuth'], 'survey_id' => array_key_exists('survey_id', $options) ? $options['survey_id'] : null));
foreach ($attributes as $idx => $attr) {
$attributes[$idx]['class'] = "scCheckTaxon";
}
// this allows extra validation
// Get the attribute and control information required to build the custom occurrence attribute columns
self::species_checklist_prepare_attributes($options, $attributes, $occAttrControls, $occAttrs);
$retVal = "<p>" . lang::get('LANG_SpeciesInstructions') . "</p>\n";
if (isset($options['lookupListId'])) {
self::$cloneableTable = self::get_species_checklist_clonable_row($options, $occAttrControls, $attributes);
}
$retVal .= '<table class="ui-widget ui-widget-content mnhnl-species-grid ' . $options['class'] . '" id="' . $options['id'] . '">';
$retVal .= self::get_species_checklist_header($options, $attributes) . '<tbody>';
$attrsPerRow = array();
foreach ($attributes as $attrId => $attr) {
$row = substr($attr['inner_structure_block'], 3);
if (!isset($attrsPerRow[$row])) {
$attrsPerRow[$row] = array();
}
$attrsPerRow[$row][] = $attr["attributeId"];
}
$rows = array();
$rowIdx = 0;
// each row grouping is driven by the ttlid, not the occurrence, as there is a different occurrence for each survey method.
// that said we want it to be in general occurrence order so it matches the order in which the occurrences are created
// i.e. in order of first occurrence in ttl group
$ttlidList = array();
$ttlList = array();
foreach ($occList as $occ) {
$ttlid = $occ['taxon']['id'];
if (!in_array($ttlid, $ttlidList)) {
$ttlidList[] = $ttlid;
$ttlList[$ttlid] = $occ['taxon'];
}
}
foreach ($ttlidList as $ttlid) {
$id = 1;
foreach ($options['surveyMethods'] as $method) {
$existing_record_id = '';
foreach ($occList as $occIt) {
// get the occurrence for this method/ttl combination
if ($occIt['taxon']['id'] == $ttlid && $occIt['method'] == $method['meaning_id']) {
$occ = $occIt;
$existing_record_id = $occ['id'];
}
}
$retVal .= '<tr class="scMeaning-' . $ttlList[$ttlid]['taxon_meaning_id'] . ' scDataRow sg-tr-' . $method['meaning_id'] . ' ' . ($id == '1' ? 'scFirstRow' : '') . '">';
if ($id == '1') {
$firstCell = data_entry_helper::mergeParamsIntoTemplate($ttlList[$ttlid], 'taxon_label', false, true);
if ($options['PHPtaxonLabel']) {
$firstCell = eval($firstCell);
}
// assume always removeable and scPresence is hidden.
$retVal .= '<td class="ui-state-default remove-row" style="width: 1%" rowspan="' . count($attrsPerRow) . '">X</td>';
$retVal .= str_replace('{content}', $firstCell, str_replace('{colspan}', 'rowspan="' . count($attrsPerRow) . '"', $indicia_templates['taxon_label_cell']));
}
$ctrlId = "sc:" . $method['meaning_id'] . ":{$ttlid}:" . ($existing_record_id ? $existing_record_id : "x" . $rowIdx) . ":present";
$retVal .= '<td>' . $method['term'] . ':</td><td class="scPresenceCell" style="display:none"><input type="hidden" class="scPresence" name="' . $ctrlId . '" value="1" /></td><td><span>';
foreach ($attrsPerRow[$id] as $attrId) {
// no complex values in checkboxes as the controls are vanilla
if ($existing_record_id) {
//.........这里部分代码省略.........
示例4: my_species_checklist
public static function my_species_checklist($options)
{
global $indicia_templates;
$base = base_path();
if (substr($base, -1) != '/') {
$base .= '/';
}
$indicia_templates['taxon_label'] = '{taxon}<br/><img src="' . $base . drupal_get_path('module', 'iform') . '/client_helpers/prebuilt_forms/images/ofs_pollinator/{taxonComp}.png" alt="[{taxon} Image]">';
// load taxon list
// load attributes.
$options = data_entry_helper::get_species_checklist_options($options);
//make a copy of the options so that we can maipulate it
$overrideOptions = $options;
$occAttrControls = array();
$occAttrs = array();
$taxonRows = array();
// at this stage no preloading: no editing of existing data.
// load the full list of species for the grid, including the main checklist plus any additional species in the reloaded occurrences.
$taxalist = self::get_species_checklist_taxa_list($options, $taxonRows);
// If we managed to read the species list data we can proceed
if (!array_key_exists('error', $taxalist)) {
$attrOptions = array('id' => null, 'valuetable' => 'occurrence_attribute_value', 'attrtable' => 'occurrence_attribute', 'key' => 'occurrence_id', 'fieldprefix' => "sc:-idx-::occAttr", 'extraParams' => $options['readAuth'], 'survey_id' => array_key_exists('survey_id', $options) ? $options['survey_id'] : null);
$attributes = data_entry_helper::getAttributes($attrOptions);
// Get the attribute and control information required to build the custom occurrence attribute columns
data_entry_helper::species_checklist_prepare_attributes($options, $attributes, $occAttrControls, $occAttrs);
$grid = "\n";
// No look up list -> no cloneable row
$grid .= '<table class="ui-widget ui-widget-content species-grid ' . $options['class'] . '" id="' . $options['id'] . '">';
$visibleColIdx = 0;
$grid .= "<thead class=\"ui-widget-header\"><tr><th>Wings</th><th>Other Features</th>";
for ($i = 0; $i < $options['columns']; $i++) {
$grid .= self::get_species_checklist_col_header($options['id'] . "-species-{$i}", lang::get('species_checklist.species'), $visibleColIdx, $options['colWidths'], '', '');
$grid .= self::get_species_checklist_col_header($options['id'] . "-present-{$i}", lang::get('species_checklist.present'), $visibleColIdx, $options['colWidths'], 'display:none', '');
foreach ($occAttrs as $idx => $a) {
$filename = preg_replace('/\\s+/', '-', strtolower($a));
$grid .= self::get_species_checklist_col_header($options['id'] . "-attr{$idx}-{$i}", lang::get($a), $visibleColIdx, $options['colWidths'], '', $base . drupal_get_path('module', 'iform') . '/client_helpers/prebuilt_forms/images/ofs_pollinator/' . $filename . '.png');
}
}
$grid .= '</tr></thead>';
$rows = array();
$taxonCounter = array();
$rowIdx = 0;
$grid .= "\n<tbody>\n";
if (count($taxonRows)) {
$grid .= '<tr class="top"><td rowspan="2" class="dot-right"><b>No obvious wings</b></td><td>Antennae short</td>' . self::dump_one_row(0, $taxonRows[0], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 1) {
$grid .= '<tr class="dot-top"><td>Antennae varying lengths</td>' . self::dump_one_row(1, $taxonRows[1], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 2) {
$grid .= '<tr class="top"><td rowspan="2" class="dot-right"><b>One pair of wings</b><br/>One pair of wings, usually clear<br />Wings, held out from or held along the body</td><td rowspan="2" class="scOtherFeaturesCell" >Antennae usually short<br/><img src="' . $base . drupal_get_path('module', 'iform') . '/client_helpers/prebuilt_forms/images/ofs_pollinator/short-antennae.png" alt=""></td>' . self::dump_one_row(2, $taxonRows[2], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 3) {
$grid .= '<tr class="dot-top">' . self::dump_one_row(3, $taxonRows[3], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 4) {
$grid .= '<tr class="top"><td class="dot-right"><b>Two pairs of wings</b><br/>Two pairs of wings, coloured</td><td>Antennae usually long</td>' . self::dump_one_row(4, $taxonRows[4], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 5) {
$grid .= '<tr class="dot-top"><td rowspan="2" class="dot-right">Two pairs of wings, usually clear<br/>Wings held out from or held along body</td><td rowspan="2" class="scOtherFeaturesCell" >Antennae usually long<br/><img src="' . $base . drupal_get_path('module', 'iform') . '/client_helpers/prebuilt_forms/images/ofs_pollinator/long-antennae.png" alt=""></td>' . self::dump_one_row(5, $taxonRows[5], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
if (count($taxonRows) > 6) {
$grid .= '<tr class="dot-top">' . self::dump_one_row(6, $taxonRows[6], $taxalist, $taxonRows, $occAttrControls, $attributes, $options) . '</tr>';
}
$txnID = 7;
if (count($taxonRows) > $txnID) {
$grid .= '<tr class="top"><td class="dot-right"><b>?</b></td><td></td>' . '<td class="scTaxonCell">Unknown Other?</td>' . '<td style="display:none" class="scPresenceCell"><input type="hidden" value="' . $taxonRows[$txnID]["ttlId"] . '" id="sc:' . $options['id'] . '-' . $txnID . '::present" name="sc:' . $options['id'] . '-' . $txnID . '::present"></td>' . '<td class="scOccAttrCell ui-widget-content scComment" colspan="' . count($attributes) . '"><input type="text" value="" name="sc:' . $options['id'] . '-' . $txnID . '::comment" id="sc:' . $options['id'] . '-' . $txnID . '::comment"></td></tr>';
}
$grid .= "</tbody>\n</table>\n";
$grid .= '<input name="rowInclusionCheck" value="hasData" type="hidden" />';
$r .= $grid;
return $r;
} else {
return $taxalist['error'];
}
}