protected static function get_control_lux5kgrid($auth, $args, $tabalias, $options) { $ret = iform_mnhnl_lux5kgridControl($auth, $args, parent::$node, $options); return $ret; }
function iform_mnhnl_locModTool($auth, $args, $node) { global $indicia_templates; if (!isset($args['clientSideValidation']) || $args['clientSideValidation']) { data_entry_helper::enable_validation('entry_form'); } if ($args['locationMode'] == 'multi') { $args['locationMode'] = 'parent'; } data_entry_helper::$entity_to_load = array(); $retVal = "<div id=\"locations\">"; if ($args['shpFileDownloadURL'] != "") { $request = $args['shpFileDownloadURL'] . "/geoserver/wfs?request=GetFeature&service=wfs&version=1.0.0&outputformat=SHAPE-ZIP&srsName=EPSG:2169"; if ($args['LocationTypeTerm'] == '' && isset($args['loctoolsLocTypeID'])) { $args['LocationTypeTerm'] = $args['loctoolsLocTypeID']; } $primary = iform_mnhnl_getTermID($auth, 'indicia:location_types', $args['LocationTypeTerm']); $request .= "&cql_filter=website_id=" . $args['website_id'] . " AND "; if ($args['SecondaryLocationTypeTerm'] != '') { $secondary = iform_mnhnl_getTermID($auth, 'indicia:location_types', $args['SecondaryLocationTypeTerm']); $request .= "(type_id=" . $primary . "OR type_id=" . $secondary . ")"; } else { $request .= "type_id=" . $primary; } $request .= "&typename=" . $args['shpFileFeaturePrefix'] . ':'; $filedetails = "&format_options=filename:" . $args['reportFilenamePrefix']; $retValList = ""; if ($args['usePoints'] != 'none' || isset($args['shpDownloadPoints']) && $args['shpDownloadPoints']) { $retValList .= "<a href=\"" . $request . "point_locations" . $filedetails . "_Points.zip\">" . lang::get('Points') . "</a>"; } if ($args['useLines'] != 'none' || isset($args['shpDownloadLines']) && $args['shpDownloadLines']) { $retValList .= ($retValList == "" ? "" : " : ") . "<a href=\"" . $request . "line_locations" . $filedetails . "_Lines.zip\">" . lang::get('Lines') . "</a>"; } if ($args['usePolygons'] != 'none' || isset($args['shpDownloadPolygons']) && $args['shpDownloadPolygons']) { $retValList .= ($retValList == "" ? "" : " : ") . "<a href=\"" . $request . "polygon_locations" . $filedetails . "_Polygons.zip\">" . lang::get('Polygons') . "</a>"; } $retVal .= "<fieldset><legend>" . lang::get('LANG_SHP_Download_Legend') . "</legend>\n <p>" . lang::get('LANG_Shapefile_Download') . " " . $retValList . "</p></fieldset>"; } $includeOutsideSquare = $args['locationMode'] == 'parent'; // includes multi - see above // filtered if ($args['locationMode'] == 'filtered') { $filterAttrs = explode(',', $args['filterAttrs']); foreach ($filterAttrs as $idx => $filterAttr) { $filterAttr = explode(':', $filterAttr); if ($filterAttr[0] == 'Parent' && $filterAttr[1] == "true") { $includeOutsideSquare = true; } } } if ($includeOutsideSquare) { $confirmedLocationTypeID = iform_mnhnl_getTermID($auth, 'indicia:location_types', $args['SecondaryLocationTypeTerm']); if (is_null($confirmedLocationTypeID)) { $confirmedLocationTypeID = "0"; } $submittedLocationTypeID = iform_mnhnl_getTermID($auth, 'indicia:location_types', $args['LocationTypeTerm']); $retVal .= "<fieldset><legend>" . lang::get('LANG_Outside_Square_Reports') . "</legend>\n \t<form method='post' action='" . data_entry_helper::$base_url . '/index.php/services/report/requestReport?report=reports_for_prebuilt_forms/MNHNL/luxbio_outside_squares_1.xml&reportSource=local&auth_token=' . $auth['read']['auth_token'] . '&nonce=' . $auth['read']['nonce'] . '&mode=csv&filename=' . $args['reportFilenamePrefix'] . "CentreOutsideSquaresReport'>\n <label style='width:auto;'>" . lang::get('LANG_Outside_Square_Download_1') . ":</label>\n <input type='hidden' name='params' value='{\"website_id\":" . $args['website_id'] . ", \"survey_id\":" . $args['survey_id'] . ", \"primary_loc_type_id\":" . $submittedLocationTypeID . ", \"secondary_loc_type_id\":" . $confirmedLocationTypeID . "}' />\n <input type='submit' class='ui-state-default ui-corner-all' value='" . lang::get('Download') . "'>\n </form>\n \t<form method='post' action='" . data_entry_helper::$base_url . '/index.php/services/report/requestReport?report=reports_for_prebuilt_forms/MNHNL/luxbio_outside_squares_2.xml&reportSource=local&auth_token=' . $auth['read']['auth_token'] . '&nonce=' . $auth['read']['nonce'] . '&mode=csv&filename=' . $args['reportFilenamePrefix'] . "BoundaryCutsSquaresReport'>\n <label style='width:auto;'>" . lang::get('LANG_Outside_Square_Download_2') . ":</label>\n <input type='hidden' name='params' value='{\"website_id\":" . $args['website_id'] . ", \"survey_id\":" . $args['survey_id'] . ", \"primary_loc_type_id\":" . $submittedLocationTypeID . ", \"secondary_loc_type_id\":" . $confirmedLocationTypeID . "}' />\n <input type='submit' class='ui-state-default ui-corner-all' value='" . lang::get('Download') . "'>\n </form>\n </fieldset>"; } $retVal .= "<form method=\"post\" id=\"entry_form\">" . $auth['write'] . "<input type=\"hidden\" id=\"source\" name=\"source\" value=\"iform_mnhnl_locModTool\" />" . "<input type=\"hidden\" id=\"website_id\" name=\"website_id\" value=\"" . $args['website_id'] . "\" />" . "<input type=\"hidden\" id=\"survey_id\" name=\"survey_id\" value=\"" . $args['survey_id'] . "\" />"; $retVal .= iform_mnhnl_lux5kgridControl($auth, $args, $node, array('Instructions2' => lang::get('LANG_LocModTool_Instructions2'), 'MainFieldLabel' => lang::get('LANG_LocModTool_IDLabel'), 'NameLabel' => lang::get('LANG_LocModTool_NameLabel'), 'ParentLabel' => lang::get('LANG_LocModTool_ParentLabel'), 'AdminMode' => true)); $retVal .= "<label for=\"location-delete\">" . lang::get("LANG_LocModTool_DeleteLabel") . ":</label> <input type=checkbox id=\"location-delete\" name=\"location:deleted\" value='t'><br />\n <p>" . lang::get("LANG_LocModTool_DeleteInstructions") . "</p>"; // location comments are included as a separate control on the main form. if (isset($args['includeLocationComment']) && $args['includeLocationComment']) { $retVal .= data_entry_helper::textarea(array('id' => 'location-comment', 'fieldname' => 'location:comment', 'label' => lang::get("LANG_LocationModTool_CommentLabel"))) . "<br />"; } $laArgs = array("lookUpKey" => "meaning_id", "sep" => " ", "class" => "wide", "tabNameFilter" => "", "numValues" => 10000); $defs = array(); if (isset($args['siteTabSplitAttrs']) && $args['siteTabSplitAttrs'] != "") { $defs = explode(':', $args['siteTabSplitAttrs']); $defs1 = explode(',', $defs[0]); $laArgs["tabNameFilter"] = $defs1[0]; $laArgs["class"] = $defs1[1]; } $retVal .= iform_mnhnl_locationattributes($auth, $args, '', $laArgs); $retVal .= iform_mnhnl_SrefFields($auth, $args, true); if (count($defs) > 1) { $defs1 = explode(',', $defs[1]); $laArgs["tabNameFilter"] = $defs1[0]; $laArgs["class"] = $defs1[1]; $retVal .= iform_mnhnl_locationattributes($auth, $args, '', $laArgs); } $args['interface'] = 'Tabs'; $mapOptions = iform_map_get_map_options($args, $auth['read']); $olOptions = iform_map_get_ol_options($args); if ($args['locationMode'] != 'parent') { // this includes multi as well (see above) // can't call the protested control function $georefOpts = iform_map_get_georef_options($args, $auth['read']); // can't use place search without the driver API key if ($georefOpts['driver'] == 'geoplanet' && empty(helper_config::$geoplanet_api_key)) { $retVal .= '<p>The form structure includes a [place search] control but needs a geoplanet api key.</p>'; } else { $retVal .= data_entry_helper::georeference_lookup($georefOpts); } $mapOptions['searchLayer'] = true; $mapOptions['searchUpdatesSref'] = false; $mapOptions['searchDisplaysPoint'] = false; } // For main page we force to Tabs to ensure map drawn correctly $mapOptions['tabDiv'] = 'locations'; $mapOptions['standardControls'] = array('layerSwitcher', 'panZoomBar'); $mapOptions['editLayer'] = false; $mapOptions['maxZoom'] = $args['zoomLevel']; if (isset($args['locationLayerWMS']) && $args['locationLayerWMS'] != '') { $mapOptions['layers'] = array('ParentWMSLayer', "ParentLocationLayer", "SiteLabelLayer", "SiteAreaLayer", "SitePathLayer", "SitePointLayer"); $mapOptions['clickableLayers'] = array('ParentWMSLayer'); $mapOptions['clickableLayersOutputMode'] = 'custom'; $mapOptions['clickableLayersOutputDiv'] = 'clickableLayersOutputDiv'; $mapOptions['clickableLayersOutputFn'] = 'setClickedParent'; } else { $mapOptions['layers'] = array("ParentLocationLayer", "SiteLabelLayer", "SiteAreaLayer", "SitePathLayer", "SitePointLayer"); } $retVal .= data_entry_helper::map_panel($mapOptions, $olOptions); $retVal .= iform_mnhnl_PointGrid($auth, $args, array('srefs' => '2169,LUREF (m),X,Y,;4326,Lat/Long Deg,Lat,Long,D;4326,Lat/Long Deg:Min,Lat,Long,DM;4326,Lat/Long Deg:Min:Sec,Lat,Long,DMS')); $retVal .= ' <input type="submit" class="ui-state-default ui-corner-all" value="' . lang::get('LANG_Submit') . '"> <a href="' . iform_mnhnl_getReloadPath() . '"><input class="ui-state-default ui-corner-all" type="button" name="cancel" value="' . lang::get('LANG_Cancel') . '" /></a> </form></div>'; data_entry_helper::$javascript .= "\nmapInitialisationHooks.push(function(mapdiv) {\n// try to identify if this map is the secondary small one\n if(mapdiv.id=='map')\n jQuery(\"#dummy-parent-id\").val('').change();});\n"; return $retVal; }
/** * Get the location module control */ protected static function get_control_locationmodule($auth, $args, $tabalias, $options) { if (self::$mode === self::MODE_EXISTING_RO) { $options['disabled'] = true; } $retVal = iform_mnhnl_lux5kgridControl($auth, $args, parent::$node, array_merge(array('initLoadArgs' => '{initial: true}'), $options)); self::set_code_functionality($auth, $args, user_access($args['edit_permission'])); return $retVal; }
protected static function get_control_lux5kgrid2($auth, $args, $tabalias, $options) { // can only change the location for a new sample: fixed afterwards. * global $indicia_templates; $countAttr = iform_mnhnl_getAttrID($auth, $args, 'occurrence', 'Count'); if (!$countAttr) { return lang::get('This form must be used with a survey that has the Count Occurrence attribute associated with it.'); } $noObAttr = iform_mnhnl_getAttrID($auth, $args, 'sample', 'No observation', isset($args['sample_method_id']) && $args['sample_method_id'] != "" ? $args['sample_method_id'] : false); if (!$noObAttr) { return lang::get('This form must be used with a survey that has the No observation Sample attribute associated with it.'); } data_entry_helper::$javascript .= "\n// because the fetch is generic, we can't guarentee that the sort order will be numeric eg name 2 comes after 10.\nhook_loadLocation= function(feature) {\n if(feature.attributes['new']) setNameDropDowns(false, false);\n else setNameDropDowns(true, false);\n}\ncreateGridEntries = function(feature, isnew) {\n cgRowNum++;\n var mySiteNum=false;\n var name = '';\n if(typeof(feature)=='object'&&(feature instanceof Array)){\n mySiteNum = feature[0].attributes.SiteNum;\n } else {\n mySiteNum = feature.attributes.SiteNum;\n }\n var newCGRows = jQuery('#cgCloneableTable').find('tr').clone();\n for(var i = 0; i< newCGRows.length; i++){\n jQuery.each(jQuery(newCGRows[i]).children(), function(i, cell) {cell.innerHTML = cell.innerHTML.replace(/--rownum--/g, cgRowNum);});\n }\n for(var i = 0; i< newCGRows.length; i++){\n jQuery(newCGRows[i]).removeClass('cgCloneableRow'+(i+1)).addClass((isnew ? 'cgAddedRow':'cggrid-row')+(i==0?'':i+1)).data('cgRowNum', cgRowNum).data('SiteNum', mySiteNum);\n }\n jQuery(newCGRows[0]).find('td:not(.cggrid-datecell,.cggrid-namecell,.remove-cgnewrow)').css('opacity',0.25);\n jQuery(newCGRows[0]).find('*:.cggrid-date,.cggrid-datecell,.cggrid-name,.cggrid-namecell,.remove-cgnewrow').removeAttr('disabled');\n for(var i = 1; i< newCGRows.length; i++){\n jQuery(newCGRows[i]).find('*').attr('disabled','disabled').filter('td').css('opacity',0.25);\n }\n if(!isnew){\n if(typeof(feature)=='object'&&(feature instanceof Array)){\n myID = feature[0].attributes.data.id;\n name = feature[0].attributes.data.name;\n } else {\n myID = feature.attributes.data.id;\n name = feature.attributes.data.name;\n }\n var fieldname=jQuery(newCGRows[0]).find('.cggrid-name').attr('name');\n jQuery(newCGRows[0]).find('.cggrid-namecell').empty().append('<input name=\"'+fieldname+'\" class=\"cggrid-name narrow\" value=\"'+name+'\" readonly=\"readonly\" ><input type=\"hidden\" name=\"CG:'+cgRowNum+':--sampleid--:location_id\" value=\"'+myID+'\" >');\n // cggrid-centroid_sref,cggrid-centroid_geom,cggrid-boundary_geom,cggrid-location_type_id are all removed by the cggrid-name empty above\n jQuery(newCGRows[0]).find('.remove-cgnewrow').removeClass('remove-cgnewrow').addClass('clear-cgrow');\n } else {\n jQuery('#dummy-name').find('option').each(function (index, option){\n if(name == '' && jQuery('.cggrid-row,.cgAddedRow').find('.cggrid-name').filter('[value='+jQuery(option).val()+']').length == 0)\n name=jQuery(option).val();\n });\n jQuery(newCGRows[0]).find('.cggrid-name').val(name);\n }\n var insertPoint=false;\n insertCount=0; // we'll assume that the existing entries are in numerical order\n jQuery('#conditions-grid > tbody').find('tr:.cggrid-row,.cgAddedRow').each(function(index,elem){\n if(parseInt(jQuery(elem).find('.cggrid-name').val()) < parseInt(name)){\n insertCount++;\n insertPoint = jQuery(elem);\n for(var i = 1; i< newCGRows.length; i++)\n insertPoint = insertPoint.next();\n }\n });\n// insertCount--;\n if(!insertPoint){\n for(var i = newCGRows.length-1; i>=0; i--)\n jQuery('#conditions-grid > tbody').prepend(newCGRows[i]);\n } else {\n for(var i = newCGRows.length-1; i>=0; i--)\n jQuery(newCGRows[i]).insertAfter(insertPoint);\n }\n jQuery(newCGRows[0]).find('.cggrid-date').datepicker({dateFormat : 'dd/mm/yy', changeMonth: true, changeYear: true, constrainInput: false, maxDate: '0', onClose: function() { \$(this).valid(); }});\n recalcNumSites();\n // Species grid 1) add to header, 2) add to cloneable row, 3) add to existing rows\n insertCount++;// double cells at start for these rows.\n insertPoint=jQuery('#mnhnl-species-grid-header').children(':eq('+insertCount+')');\n jQuery('<th class=\"smp-'+cgRowNum+'\">'+name+'</th>').css('opacity',0.25).insertAfter(insertPoint);\n jQuery('.sgNoObRow').each(function(i, Row) {\n insertPoint=jQuery(Row).children(':eq('+insertCount+')');\n var newNoObCell = jQuery('<td class=\"smp-'+cgRowNum+'\">'+\n '<input type=\"hidden\" name=\"CG:'+cgRowNum+':--sampleid--:smpAttr:" . $noObAttr . "\" value=\"0\" \"/>'+\n '<input type=\"checkbox\" name=\"CG:'+cgRowNum+':--sampleid--:smpAttr:" . $noObAttr . "\" value=\"1\" class=\"narrow\" disabled=\"disabled\" />'+\n '</td>').css('opacity',0.25).insertAfter(insertPoint);\n newNoObCell.find(':checkbox').rules('add', {no_observation: cgRowNum});\n });\n insertPoint=jQuery('.sgCloneableRow').children(':eq('+insertCount+')');\n jQuery('<td class=\"smp-'+cgRowNum+'\"><input class=\"digits narrow disabled\" name=\"SG:--sgrownum--:'+cgRowNum+':--sampleid--:--ttlid--:--occid--:occAttr:" . $countAttr . "\" disabled=\"disabled\" min=\"1\"></td>').css('opacity',0.25).insertAfter(insertPoint);\n jQuery('.sgAddedRow,.sgOrigRow').each(function(i, Row) {\n insertPoint=jQuery(Row).children(':eq('+insertCount+')');\n jQuery('<td class=\"smp-'+cgRowNum+'\"><input class=\"digits narrow disabled\" name=\"SG:'+jQuery(Row).data('taxonRow')+':'+cgRowNum+':--sampleid--:'+jQuery(Row).data('ttlid')+':--occid--:occAttr:" . $countAttr . "\" disabled=\"disabled\" min=\"1\"></td>').css('opacity',0.25).insertAfter(insertPoint);\n });\n resetSpeciesGridHeader();\n return name;\n};\nmoveGridEntries = function(cgRowNum) {\n var oldPosition=-1;\n var newPosition=-1;\n var numCGRows = jQuery('#cgCloneableTable').find('tr').length;\n var name;\n jQuery('#conditions-grid > tbody').find('tr:.cggrid-row,.cgAddedRow').each(function(index,elem){\n if(jQuery(elem).data('cgRowNum')==cgRowNum){\n name = jQuery(elem).find('.cggrid-name').val(); // has been updated to new value.\n oldPosition=index;\n }});\n jQuery('#conditions-grid > tbody').find('tr:.cggrid-row,.cgAddedRow').each(function(index,elem){\n if(index != oldPosition && parseInt(jQuery(elem).find('.cggrid-name').val()) < parseInt(name)){\n newPosition=index; // points to row we insert after.\n }});\n if(newPosition==oldPosition-1) return;\n var rows=[];\n for(var i=0; i< numCGRows; i++)\n rows.push(jQuery('#conditions-grid > tbody').find('tr:eq('+(numCGRows*oldPosition+i)+')'));\n if(newPosition < 0){\n for(var i=numCGRows-1; i>=0; i--)\n jQuery('#conditions-grid > tbody').prepend(rows[i]);\n } else {\n var insertPoint=jQuery('#conditions-grid > tbody').find('tr:eq('+(numCGRows*(newPosition+1)-1)+')'); // = item after which we insert\n for(var i=numCGRows-1; i>=0; i--)\n rows[i].insertAfter(insertPoint);\n }\n // Species grid 1) add to header, 2) add to cloneable row, 3) add to existing rows\n jQuery('#mnhnl-species-grid-header,.sgNoObRow,.sgCloneableRow,.sgAddedRow,.sgOrigRow').each(function(i, Row) {\n insertPoint=jQuery(Row).children(':eq('+(newPosition+2)+')');\n jQuery(Row).children(':eq('+(oldPosition+2)+')').insertAfter(insertPoint);\n });\n resetSpeciesGridHeader();\n};\n\nhook_ChildFeatureLoad = function(feature, data, child_id, options){\n // this is a multisite, so child_id will never be filled in.\n if(!options.initial){\n var mySiteNum=false;\n if(typeof(feature)=='object'&&(feature instanceof Array)){\n mySiteNum = feature[0].attributes.SiteNum;\n } else {\n mySiteNum = feature.attributes.SiteNum;\n }\n createGridEntries(feature, false);\n var allFeatures = SiteAreaLayer.features.concat(SitePathLayer.features,SitePointLayer.features,SiteLabelLayer.features);\n for(var i=0; i< allFeatures.length; i++){ // need to get the label as well\n if(typeof allFeatures[i].attributes.SiteNum != 'undefined' &&\n allFeatures[i].attributes.SiteNum == mySiteNum){\n allFeatures[i].attributes.cgRowNum = cgRowNum;\n }}\n }\n setNameDropDowns(false, false);\n}\nhook_mnhnl_parent_changed = function(){\n jQuery('#conditions-grid > tbody').find('tr').remove();\n jQuery('#mnhnl-species-grid > tbody').find('tr').not('.sgNoObRow').remove();\n jQuery('#mnhnl-species-grid').find('th:gt(1)').remove();\n jQuery('#mnhnl-species-grid').find('td:gt(1)').remove();\n jQuery('.sgCloneableRow').find('td:gt(1)').remove();\n};"; $retVal = iform_mnhnl_lux5kgridControl($auth, $args, parent::$node, array_merge(array('initLoadArgs' => '{initial: true}'), $options)); return $retVal; }
protected static function get_control_locationmodule($auth, $args, $tabalias, $options) { $ret = iform_mnhnl_lux5kgridControl($auth, $args, parent::$node, array_merge(array('initLoadArgs' => '{}'), $options)); return $ret; }