www.ispotnature.org
Open in
urlscan Pro
2606:4700:3032::ac43:853b
Public Scan
Submitted URL: http://ispotnature.org/
Effective URL: https://www.ispotnature.org/
Submission Tags: tranco_l324
Submission: On April 17 via api from DE — Scanned from DE
Effective URL: https://www.ispotnature.org/
Submission Tags: tranco_l324
Submission: On April 17 via api from DE — Scanned from DE
Form analysis
3 forms found in the DOMName: savefiltersform —
<form class="o-form ng-pristine ng-hide ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-valid ng-valid-required" data-ng-attr-name="{{filters.formName}}" data-ng-show="user.loggedIn && filters.filters.length"
data-ng-submit="filters.submit()" novalidate="" name="savefiltersform" aria-hidden="true">
<div class="o-input o-input--text-button ng-isolate-scope" data-input-button-disabled="!filters.formData.title" data-input-button="Save" data-input-errors="filters.formErrors.title"
data-input-help="Enter a title to save this combination of filters." data-input-id="title" data-input-label="Save this filter" data-input-model="filters.formData.title" data-input-placeholder="I18N.PARTIALS.ASIDE.FILTERS.INPUT.PLACEHOLDER"
data-input-submitting="filters.submitting" data-input-text-submit="">
<div class="o-input__row" data-ng-class="{
'is-invalid': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched)),
'is-focused': focused,
'is-dirty': form[id].$viewValue.length,
'is-disabled': disabled,
'is-readonly': readonly
}">
<span data-tooltip="tooltip" class="ng-isolate-scope"><!-- ngIf: tooltip -->
</span>
<label class="o-input__label" data-ng-attr-for="{{::id}}" for="title">
<span class="o-input__label-text ng-scope" data-translate="Save this filter">Save this filter</span><span class="o-input__required ng-hide" data-ng-show="required" aria-hidden="true"> *</span>
</label>
<div class="o-input-group">
<input class="o-input__field o-input__field--text ng-pristine ng-untouched ng-empty ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-valid ng-valid-required" role="textbox" type="text"
data-ng-attr-autocomplete="{{::autoComplete ? 'On' : 'Off'}}" data-ng-attr-id="{{::id}}" data-ng-attr-name="{{::id}}" data-ng-attr-placeholder="{{placeholder | translate}}" data-ng-blur="blur()" data-ng-disabled="disabled"
data-ng-focus="focused = true" data-ng-init="focused = false" data-ng-maxlength="255" data-ng-minlength="false" data-ng-model="model" data-ng-pattern="" data-ng-readonly="readonly" data-ng-required="required" autocomplete="Off" id="title"
name="title" placeholder="Title" aria-invalid="false">
<span class="o-input__btn">
<button class="c-btn u-sx-sm" data-ng-disabled="submitting || buttonDisabled" type="submit" disabled="disabled">
<div class="c-spinner__wrap ng-isolate-scope fill t-white u-sz-sm" data-ng-class="{
'fill': isFull,
't-white': theme,
'is-shown': loading,
'u-sz-sm': size
}" data-ng-click="$event.stopPropagation()" data-ng-attr-aria-hidden="{{loading ? 'false' : 'true'}}" data-loading-spinner="submitting" data-loading-spinner-size="sm" data-loading-spinner-theme="white" data-loading-spinner-full="true"
role="button" tabindex="0" aria-hidden="true">
<!-- ngIf: spinner -->
<span class="sr-only ng-scope" data-translate="I18N.PARTIALS.SPINNER.LOADING">Loading...</span>
</div>
<span data-translate="Save" class="ng-scope">Save</span>
</button>
</span>
</div>
<!-- ngInclude: ::'/static/templates/website/forms/help-error-text.html' -->
<div data-ng-include="::'/static/templates/website/forms/help-error-text.html'" class="ng-scope">
<div class="c-help ng-scope" style="margin: 0;" data-ng-class="{
'show-error-text': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched))
}">
<div class="c-help__text" data-ng-show="!hideHelp && (help || minLength || maxLength || max || min || readonly || disabled)" aria-hidden="false">
<span data-translate="Enter a title to save this combination of filters." class="ng-scope">Enter a title to save this combination of filters.</span>
<span data-ng-show="type === 'url'" data-translate="I18N.FORMS.HELP_ERRORS.URL" class="ng-scope ng-hide" aria-hidden="true">Must be a valid URL.</span>
<span data-ng-show="dateFormat" data-translate="I18N.FORMS.HELP_ERRORS.DATE_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The date format is .</span>
<span data-ng-show="timeFormat" data-translate="I18N.FORMS.HELP_ERRORS.TIME_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The time format is .</span>
<span data-ng-show="minLength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH" data-translate-value-min="false" class="ng-scope ng-hide" aria-hidden="true">Requires at least false characters.</span>
<span data-ng-show="maxLength && !hideMaxLength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH" data-translate-value-max="255" class="ng-scope" aria-hidden="false">Accepts a maximum of 255 characters.</span>
<span data-ng-show="min" data-translate="I18N.FORMS.HELP_ERRORS.MIN" data-translate-value-min="" class="ng-scope ng-hide" aria-hidden="true">Cannot be less than .</span>
<span data-ng-show="max" data-translate="I18N.FORMS.HELP_ERRORS.MAX" data-translate-value-max="" class="ng-scope ng-hide" aria-hidden="true">Cannot be greater than .</span>
<span data-ng-show="readonly" data-translate="I18N.FORMS.HELP_ERRORS.READONLY" class="ng-scope ng-hide" aria-hidden="true">This input is readonly.</span>
<span data-ng-show="disabled" data-translate="I18N.FORMS.HELP_ERRORS.MAX.DISABLED" class="ng-scope ng-hide" aria-hidden="true">This input is disabled.</span>
</div>
<ul class="o-list o-list--errors">
<!-- ngRepeat: error in errors -->
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.passwordconfirm" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD_MATCH" data-translate-value-label="Save this filter" aria-hidden="true">Passwords must match</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.password" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD" data-translate-value-label="Save this filter" aria-hidden="true">Passwords need at least: 8 characters, 1
number and 1 upper-case letter</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.required" data-translate="I18N.FORMS.HELP_ERRORS.REQUIRED" data-translate-value-label="Save this filter" aria-hidden="true">Save this filter is required.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minlength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH_REQ" data-translate-value-label="Save this filter" data-translate-value-min="false" aria-hidden="true">
Save this filter requires at least false characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxlength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH_REQ" data-translate-value-label="Save this filter" data-translate-value-min="255" aria-hidden="true">Save
this filter takes a maximum of 255 characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.pattern" data-translate="I18N.FORMS.HELP_ERRORS.FORMAT" data-translate-value-label="Save this filter" aria-hidden="true">Save this filter does not match the required
format.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.number" data-translate="I18N.FORMS.HELP_ERRORS.NUMBER" data-translate-value-label="Save this filter" aria-hidden="true">Save this filter must be a valid number.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.email" data-translate="I18N.FORMS.HELP_ERRORS.EMAIL" data-translate-value-label="Save this filter" aria-hidden="true">Save this filter must be a valid email address.
</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.url" data-translate="I18N.FORMS.HELP_ERRORS.URL_VALID" data-translate-value-label="Save this filter" aria-hidden="true">Save this filter must be a valid URL.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.min" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN" data-translate-value-label="Save this filter" data-translate-value-min="" aria-hidden="true">Save this filter
cannot be less than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.max" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN" data-translate-value-label="Save this filter" data-translate-value-max="" aria-hidden="true">Save this
filter cannot be greater than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minDate" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN_DATE" data-translate-value-label="Save this filter" data-translate-value-min-date="" aria-hidden="true">Save
this filter cannot be less than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxDate" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN_DATE" data-translate-value-label="Save this filter" data-translate-value-max-date="" aria-hidden="true">
Save this filter cannot be greater than .</li>
</ul>
</div>
</div>
</div>
</div>
</form>
Name: searchform —
<form class="o-form ng-pristine ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-valid ng-valid-required" data-ng-attr-name="{{search.formName}}" data-ng-submit="search.submit(search.formData.asideSearch)" novalidate="" name="searchform">
<div class="o-input o-input--text-button ng-isolate-scope" data-input-button="I18N.PARTIALS.ASIDE.SEARCH.INPUT.BUTTON" data-input-help="I18N.PARTIALS.ASIDE.SEARCH.INPUT.HELP" data-input-hide-help="true"
data-input-label="I18N.PARTIALS.ASIDE.SEARCH.INPUT.LABEL" data-input-model="search.formData.asideSearch" data-input-text-submit="">
<div class="o-input__row" data-ng-class="{
'is-invalid': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched)),
'is-focused': focused,
'is-dirty': form[id].$viewValue.length,
'is-disabled': disabled,
'is-readonly': readonly
}">
<span data-tooltip="tooltip" class="ng-isolate-scope"><!-- ngIf: tooltip -->
</span>
<label class="o-input__label" data-ng-attr-for="{{::id}}" for="input-1">
<span class="o-input__label-text ng-scope" data-translate="I18N.PARTIALS.ASIDE.SEARCH.INPUT.LABEL">Search</span><span class="o-input__required ng-hide" data-ng-show="required" aria-hidden="true"> *</span>
</label>
<div class="o-input-group">
<input class="o-input__field o-input__field--text ng-pristine ng-untouched ng-empty ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-valid ng-valid-required" role="textbox" type="text"
data-ng-attr-autocomplete="{{::autoComplete ? 'On' : 'Off'}}" data-ng-attr-id="{{::id}}" data-ng-attr-name="{{::id}}" data-ng-attr-placeholder="{{placeholder | translate}}" data-ng-blur="blur()" data-ng-disabled="disabled"
data-ng-focus="focused = true" data-ng-init="focused = false" data-ng-maxlength="255" data-ng-minlength="false" data-ng-model="model" data-ng-pattern="" data-ng-readonly="readonly" data-ng-required="required" autocomplete="Off" id="input-1"
name="input-1" placeholder="" aria-invalid="false">
<span class="o-input__btn">
<button class="c-btn u-sx-sm" data-ng-disabled="submitting || buttonDisabled" type="submit">
<div class="c-spinner__wrap ng-isolate-scope fill t-white u-sz-sm" data-ng-class="{
'fill': isFull,
't-white': theme,
'is-shown': loading,
'u-sz-sm': size
}" data-ng-click="$event.stopPropagation()" data-ng-attr-aria-hidden="{{loading ? 'false' : 'true'}}" data-loading-spinner="submitting" data-loading-spinner-size="sm" data-loading-spinner-theme="white" data-loading-spinner-full="true"
role="button" tabindex="0" aria-hidden="true">
<!-- ngIf: spinner -->
<span class="sr-only ng-scope" data-translate="I18N.PARTIALS.SPINNER.LOADING">Loading...</span>
</div>
<span data-translate="I18N.PARTIALS.ASIDE.SEARCH.INPUT.BUTTON" class="ng-scope">Go</span>
</button>
</span>
</div>
<!-- ngInclude: ::'/static/templates/website/forms/help-error-text.html' -->
<div data-ng-include="::'/static/templates/website/forms/help-error-text.html'" class="ng-scope">
<div class="c-help ng-scope" style="margin: 0;" data-ng-class="{
'show-error-text': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched))
}">
<div class="c-help__text ng-hide" data-ng-show="!hideHelp && (help || minLength || maxLength || max || min || readonly || disabled)" aria-hidden="true">
<span data-translate="I18N.PARTIALS.ASIDE.SEARCH.INPUT.HELP" class="ng-scope">Enter search text.</span>
<span data-ng-show="type === 'url'" data-translate="I18N.FORMS.HELP_ERRORS.URL" class="ng-scope ng-hide" aria-hidden="true">Must be a valid URL.</span>
<span data-ng-show="dateFormat" data-translate="I18N.FORMS.HELP_ERRORS.DATE_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The date format is .</span>
<span data-ng-show="timeFormat" data-translate="I18N.FORMS.HELP_ERRORS.TIME_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The time format is .</span>
<span data-ng-show="minLength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH" data-translate-value-min="false" class="ng-scope ng-hide" aria-hidden="true">Requires at least false characters.</span>
<span data-ng-show="maxLength && !hideMaxLength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH" data-translate-value-max="255" class="ng-scope" aria-hidden="false">Accepts a maximum of 255 characters.</span>
<span data-ng-show="min" data-translate="I18N.FORMS.HELP_ERRORS.MIN" data-translate-value-min="" class="ng-scope ng-hide" aria-hidden="true">Cannot be less than .</span>
<span data-ng-show="max" data-translate="I18N.FORMS.HELP_ERRORS.MAX" data-translate-value-max="" class="ng-scope ng-hide" aria-hidden="true">Cannot be greater than .</span>
<span data-ng-show="readonly" data-translate="I18N.FORMS.HELP_ERRORS.READONLY" class="ng-scope ng-hide" aria-hidden="true">This input is readonly.</span>
<span data-ng-show="disabled" data-translate="I18N.FORMS.HELP_ERRORS.MAX.DISABLED" class="ng-scope ng-hide" aria-hidden="true">This input is disabled.</span>
</div>
<ul class="o-list o-list--errors">
<!-- ngRepeat: error in errors -->
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.passwordconfirm" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD_MATCH" data-translate-value-label="Search" aria-hidden="true">Passwords must match</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.password" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD" data-translate-value-label="Search" aria-hidden="true">Passwords need at least: 8 characters, 1 number and
1 upper-case letter</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.required" data-translate="I18N.FORMS.HELP_ERRORS.REQUIRED" data-translate-value-label="Search" aria-hidden="true">Search is required.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minlength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH_REQ" data-translate-value-label="Search" data-translate-value-min="false" aria-hidden="true">Search
requires at least false characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxlength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH_REQ" data-translate-value-label="Search" data-translate-value-min="255" aria-hidden="true">Search takes a
maximum of 255 characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.pattern" data-translate="I18N.FORMS.HELP_ERRORS.FORMAT" data-translate-value-label="Search" aria-hidden="true">Search does not match the required format.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.number" data-translate="I18N.FORMS.HELP_ERRORS.NUMBER" data-translate-value-label="Search" aria-hidden="true">Search must be a valid number.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.email" data-translate="I18N.FORMS.HELP_ERRORS.EMAIL" data-translate-value-label="Search" aria-hidden="true">Search must be a valid email address.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.url" data-translate="I18N.FORMS.HELP_ERRORS.URL_VALID" data-translate-value-label="Search" aria-hidden="true">Search must be a valid URL.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.min" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN" data-translate-value-label="Search" data-translate-value-min="" aria-hidden="true">Search cannot be less than .
</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.max" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN" data-translate-value-label="Search" data-translate-value-max="" aria-hidden="true">Search cannot be greater
than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minDate" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN_DATE" data-translate-value-label="Search" data-translate-value-min-date="" aria-hidden="true">Search cannot
be less than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxDate" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN_DATE" data-translate-value-label="Search" data-translate-value-max-date="" aria-hidden="true">Search
cannot be greater than .</li>
</ul>
</div>
</div>
</div>
</div>
</form>
Name: loginusername — POST
<form data-ng-attr-id="{{ loginUsername.formName }}" data-ng-attr-name="{{ loginUsername.formName }}" data-ng-controller="loginUsernameController as loginUsername" data-ng-show="login.state == 'login'" data-ng-submit="loginUsername.submit()"
method="post" novalidate="" class="ng-pristine ng-scope ng-invalid ng-invalid-required ng-valid-pattern ng-valid-minlength ng-valid-maxlength ng-valid-passwordconfirm" id="loginusername" name="loginusername" aria-hidden="false">
<div class="o-input o-input--text ng-isolate-scope" data-input-text="" data-input-id="username" data-input-errors="loginUsername.formErrors.username" data-input-hide-help="true" data-input-label="I18N.PARTIALS.LOGIN.LABEL.USERNAME"
data-input-model="loginUsername.formData.username" data-input-required="true">
<div class="o-input__row" data-ng-class="{
'is-invalid': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched)),
'is-focused': focused,
'is-dirty': form[id].$viewValue.length,
'is-disabled': disabled,
'is-readonly': readonly
}">
<span data-tooltip="tooltip" class="ng-isolate-scope"><!-- ngIf: tooltip -->
</span>
<label style="display:inline-block; margin: 0 0 4px 0;" class="o-input__label" data-ng-attr-for="{{::id}}" for="username">
<span class="o-input__label-text ng-scope" data-translate="I18N.PARTIALS.LOGIN.LABEL.USERNAME">Username</span><span class="o-input__required" data-ng-show="required" aria-hidden="false"> *</span>
<!-- ngInclude: ::'/static/templates/website/forms/help-error-text.html' -->
<div style="float:right; margin: 0;" data-ng-include="::'/static/templates/website/forms/help-error-text.html'" class="ng-scope">
<div class="c-help ng-scope" style="margin: 0;" data-ng-class="{
'show-error-text': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched))
}">
<div class="c-help__text ng-hide" data-ng-show="!hideHelp && (help || minLength || maxLength || max || min || readonly || disabled)" aria-hidden="true">
<span data-translate="I18N.DIRECTIVE.TEXT.HELPER" class="ng-scope">Enter text.</span>
<span data-ng-show="type === 'url'" data-translate="I18N.FORMS.HELP_ERRORS.URL" class="ng-scope ng-hide" aria-hidden="true">Must be a valid URL.</span>
<span data-ng-show="dateFormat" data-translate="I18N.FORMS.HELP_ERRORS.DATE_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The date format is .</span>
<span data-ng-show="timeFormat" data-translate="I18N.FORMS.HELP_ERRORS.TIME_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The time format is .</span>
<span data-ng-show="minLength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH" data-translate-value-min="false" class="ng-scope ng-hide" aria-hidden="true">Requires at least false characters.</span>
<span data-ng-show="maxLength && !hideMaxLength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH" data-translate-value-max="255" class="ng-scope" aria-hidden="false">Accepts a maximum of 255 characters.</span>
<span data-ng-show="min" data-translate="I18N.FORMS.HELP_ERRORS.MIN" data-translate-value-min="" class="ng-scope ng-hide" aria-hidden="true">Cannot be less than .</span>
<span data-ng-show="max" data-translate="I18N.FORMS.HELP_ERRORS.MAX" data-translate-value-max="" class="ng-scope ng-hide" aria-hidden="true">Cannot be greater than .</span>
<span data-ng-show="readonly" data-translate="I18N.FORMS.HELP_ERRORS.READONLY" class="ng-scope ng-hide" aria-hidden="true">This input is readonly.</span>
<span data-ng-show="disabled" data-translate="I18N.FORMS.HELP_ERRORS.MAX.DISABLED" class="ng-scope ng-hide" aria-hidden="true">This input is disabled.</span>
</div>
<ul class="o-list o-list--errors">
<!-- ngRepeat: error in errors -->
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.passwordconfirm" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD_MATCH" data-translate-value-label="Username" aria-hidden="true">Passwords must match</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.password" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD" data-translate-value-label="Username" aria-hidden="true">Passwords need at least: 8 characters, 1 number
and 1 upper-case letter</li>
<li class="o-list__item ng-scope" data-ng-show="form[id].$error.required" data-translate="I18N.FORMS.HELP_ERRORS.REQUIRED" data-translate-value-label="Username" aria-hidden="false">Username is required.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minlength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH_REQ" data-translate-value-label="Username" data-translate-value-min="false" aria-hidden="true">Username
requires at least false characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxlength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH_REQ" data-translate-value-label="Username" data-translate-value-min="255" aria-hidden="true">Username
takes a maximum of 255 characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.pattern" data-translate="I18N.FORMS.HELP_ERRORS.FORMAT" data-translate-value-label="Username" aria-hidden="true">Username does not match the required format.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.number" data-translate="I18N.FORMS.HELP_ERRORS.NUMBER" data-translate-value-label="Username" aria-hidden="true">Username must be a valid number.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.email" data-translate="I18N.FORMS.HELP_ERRORS.EMAIL" data-translate-value-label="Username" aria-hidden="true">Username must be a valid email address.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.url" data-translate="I18N.FORMS.HELP_ERRORS.URL_VALID" data-translate-value-label="Username" aria-hidden="true">Username must be a valid URL.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.min" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN" data-translate-value-label="Username" data-translate-value-min="" aria-hidden="true">Username cannot be less
than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.max" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN" data-translate-value-label="Username" data-translate-value-max="" aria-hidden="true">Username cannot be
greater than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minDate" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN_DATE" data-translate-value-label="Username" data-translate-value-min-date="" aria-hidden="true">Username
cannot be less than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxDate" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN_DATE" data-translate-value-label="Username" data-translate-value-max-date="" aria-hidden="true">
Username cannot be greater than .</li>
</ul>
</div>
</div>
</label>
<input class="o-input__field o-input__field--text ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required ng-valid-pattern ng-valid-minlength ng-valid-maxlength" role="textbox" type="text"
data-ng-attr-autocomplete="{{::autoComplete ? 'On' : 'Off'}}" data-ng-attr-id="{{::id}}" data-ng-attr-name="{{::id}}" data-ng-attr-placeholder="{{placeholder | translate}}" data-ng-blur="blur()" data-ng-disabled="disabled"
data-ng-focus="focused = true" data-ng-init="focused = false" data-ng-maxlength="255" data-ng-minlength="false" data-ng-model="model" data-ng-pattern="" data-ng-readonly="readonly" data-ng-required="required" autocomplete="Off" id="username"
name="username" placeholder="" required="required" aria-invalid="true">
</div>
</div>
<div class="o-input o-input--password ng-isolate-scope" data-input-password="" data-input-id="password" data-input-errors="loginUsername.formErrors.password" data-input-hide-help="true" data-input-label="I18N.PARTIALS.LOGIN.LABEL.PASSWORD"
data-input-model="loginUsername.formData.password" data-input-required="true" data-input-validate-regex="false">
<div class="o-input__row" data-ng-class="{
'is-invalid': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched)),
'is-focused': focused,
'is-dirty': form[id].$viewValue.length,
'is-disabled': disabled,
'is-readonly': readonly
}">
<span data-tooltip="tooltip" class="ng-isolate-scope"><!-- ngIf: tooltip -->
</span>
<label class="o-input__label" data-ng-attr-for="{{::id}}" for="password">
<span class="o-input__label-text ng-scope" data-translate="I18N.PARTIALS.LOGIN.LABEL.PASSWORD">Password</span><span class="o-input__required" data-ng-show="required" aria-hidden="false"> *</span>
</label>
<input class="o-input__field o-input__field--password ng-pristine ng-untouched ng-isolate-scope ng-empty ng-valid-passwordconfirm ng-invalid ng-invalid-required ng-valid-pattern ng-valid-minlength ng-valid-maxlength"
data-ng-attr-autocomplete="{{::autoComplete ? 'On' : 'Off'}}" data-ng-attr-id="{{::id}}" data-ng-attr-name="{{::id}}" data-ng-attr-placeholder="{{placeholder | translate}}" data-ng-blur="focused = false" data-ng-disabled="disabled"
data-ng-focus="focused = true" data-ng-init="focused = false" data-ng-maxlength="255" data-ng-minlength="false" data-ng-model="model" data-ng-model-options="{allowInvalid: true}" data-ng-pattern="" data-ng-readonly="readonly"
data-ng-required="required" data-valid-password="" data-password-confirm="confirm" role="textbox" type="password" autocomplete="Off" id="password" name="password" placeholder="" required="required" aria-invalid="true">
<!-- ngInclude: ::'/static/templates/website/forms/help-error-text.html' -->
<div data-ng-include="::'/static/templates/website/forms/help-error-text.html'" class="ng-scope">
<div class="c-help ng-scope" style="margin: 0;" data-ng-class="{
'show-error-text': errors.length || (form[id].$invalid && (form.$submitted || form[id].$touched))
}">
<div class="c-help__text ng-hide" data-ng-show="!hideHelp && (help || minLength || maxLength || max || min || readonly || disabled)" aria-hidden="true">
<span data-translate="I18N.DIRECTIVE.PASSWORD.HELPER" class="ng-scope">Passwords need at least: 8 characters, 1 number and 1 upper-case letter</span>
<span data-ng-show="type === 'url'" data-translate="I18N.FORMS.HELP_ERRORS.URL" class="ng-scope ng-hide" aria-hidden="true">Must be a valid URL.</span>
<span data-ng-show="dateFormat" data-translate="I18N.FORMS.HELP_ERRORS.DATE_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The date format is .</span>
<span data-ng-show="timeFormat" data-translate="I18N.FORMS.HELP_ERRORS.TIME_FORMAT" data-translate-value-format="" class="ng-scope ng-hide" aria-hidden="true">The time format is .</span>
<span data-ng-show="minLength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH" data-translate-value-min="false" class="ng-scope ng-hide" aria-hidden="true">Requires at least false characters.</span>
<span data-ng-show="maxLength && !hideMaxLength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH" data-translate-value-max="255" class="ng-scope" aria-hidden="false">Accepts a maximum of 255 characters.</span>
<span data-ng-show="min" data-translate="I18N.FORMS.HELP_ERRORS.MIN" data-translate-value-min="" class="ng-scope ng-hide" aria-hidden="true">Cannot be less than .</span>
<span data-ng-show="max" data-translate="I18N.FORMS.HELP_ERRORS.MAX" data-translate-value-max="" class="ng-scope ng-hide" aria-hidden="true">Cannot be greater than .</span>
<span data-ng-show="readonly" data-translate="I18N.FORMS.HELP_ERRORS.READONLY" class="ng-scope ng-hide" aria-hidden="true">This input is readonly.</span>
<span data-ng-show="disabled" data-translate="I18N.FORMS.HELP_ERRORS.MAX.DISABLED" class="ng-scope ng-hide" aria-hidden="true">This input is disabled.</span>
</div>
<ul class="o-list o-list--errors">
<!-- ngRepeat: error in errors -->
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.passwordconfirm" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD_MATCH" data-translate-value-label="Password" aria-hidden="true">Passwords must match</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.password" data-translate="I18N.FORMS.HELP_ERRORS.PASSWORD" data-translate-value-label="Password" aria-hidden="true">Passwords need at least: 8 characters, 1 number
and 1 upper-case letter</li>
<li class="o-list__item ng-scope" data-ng-show="form[id].$error.required" data-translate="I18N.FORMS.HELP_ERRORS.REQUIRED" data-translate-value-label="Password" aria-hidden="false">Password is required.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minlength" data-translate="I18N.FORMS.HELP_ERRORS.MIN_LENGTH_REQ" data-translate-value-label="Password" data-translate-value-min="false" aria-hidden="true">Password
requires at least false characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxlength" data-translate="I18N.FORMS.HELP_ERRORS.MAX_LENGTH_REQ" data-translate-value-label="Password" data-translate-value-min="255" aria-hidden="true">Password
takes a maximum of 255 characters.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.pattern" data-translate="I18N.FORMS.HELP_ERRORS.FORMAT" data-translate-value-label="Password" aria-hidden="true">Password does not match the required format.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.number" data-translate="I18N.FORMS.HELP_ERRORS.NUMBER" data-translate-value-label="Password" aria-hidden="true">Password must be a valid number.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.email" data-translate="I18N.FORMS.HELP_ERRORS.EMAIL" data-translate-value-label="Password" aria-hidden="true">Password must be a valid email address.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.url" data-translate="I18N.FORMS.HELP_ERRORS.URL_VALID" data-translate-value-label="Password" aria-hidden="true">Password must be a valid URL.</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.min" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN" data-translate-value-label="Password" data-translate-value-min="" aria-hidden="true">Password cannot be less
than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.max" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN" data-translate-value-label="Password" data-translate-value-max="" aria-hidden="true">Password cannot be
greater than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.minDate" data-translate="I18N.FORMS.HELP_ERRORS.LESS_THAN_DATE" data-translate-value-label="Password" data-translate-value-min-date="" aria-hidden="true">Password
cannot be less than .</li>
<li class="o-list__item ng-scope ng-hide" data-ng-show="form[id].$error.maxDate" data-translate="I18N.FORMS.HELP_ERRORS.GREATER_THAN_DATE" data-translate-value-label="Password" data-translate-value-max-date="" aria-hidden="true">Password
cannot be greater than .</li>
</ul>
</div>
</div>
</div>
</div>
<button class="c-btn" data-ng-click="loginUsername.login()" data-ng-disabled="loginUsername.submitting">
<div class="c-spinner__wrap ng-isolate-scope fill t-white u-sz-sm" data-ng-class="{
'fill': isFull,
't-white': theme,
'is-shown': loading,
'u-sz-sm': size
}" data-ng-click="$event.stopPropagation()" data-ng-attr-aria-hidden="{{loading ? 'false' : 'true'}}" data-loading-spinner="loginUsername.submitting" data-loading-spinner-full="true" data-loading-spinner-size="sm"
data-loading-spinner-theme="white" role="button" tabindex="0" aria-hidden="true">
<!-- ngIf: spinner -->
<span class="sr-only ng-scope" data-translate="I18N.PARTIALS.SPINNER.LOADING">Loading...</span>
</div> Log in
</button>
</form>
Text Content
* Skip to content SHARE NATURE Menu * Home * Explore community * Home * Observations * List * Gallery * Map * Species browser * Species dictionary * Projects * Bioblitzes * News stories * Articles * Forum * Identify * By searching the site * By browsing species * By using an ID guide (keys) * Try a quiz * Help * Communities * Chile * Global * Hong Kong * Southern Africa * UK and Ireland * Global Sign up to iSpot View sidebar Hide sidebar Sign up Log in A friendly and free community helping to identify wildlife and share nature. EXPLORE Browse the thousands of species spotted so far. RECORD Submit your observation, try to identify it, and the community will help.. IDENTIFY Engage in discussions, help others identify and build your iSpot reputation. LEARN Take quizzes, join online courses, use identification keys and create projects. GLOBAL LATEST OBSERVATIONS « prev next » Filter by group * * * * * * * * * Loading... -------------------------------------------------------------------------------- HELP CONFIRM GLOBAL OBSERVATIONS « prev next » Filter by group * * * * * * * * * Loading... -------------------------------------------------------------------------------- ARTICLES Loading... * ISPOT INFORMATION, RELATED ACTIVITIES, PROJECTS AND RESOURCES Want to do more for nature with iSpot? Check out the following links to information, associated activities, projects and resources. Read More * ISPOT JOINS THE OU AND BBC PLACING A SPOTLIGHT ON THE BRITISH ISLES A new natural history series, Wild Isles, began on Sunday March 12, taking viewers on a journey through some of Britain and Ireland’s most beautiful landscapes and iSpot is here to help you identify and learn about species in the Wild Isles! Wild Isles is an Open University (OU) and BBC co-production that will be available on BBC One and iPlayer and the fourth episode airs at 7pm on Sunday 2nd April, 2023. Wild Isles is presented by OU Honorary Graduate, Sir David Attenborough, read on to find out more. Read More * ISPOT AND AI: FASTCAT-CLOUD AND THE PLANTNET-API iSpot is currently trialling two image recognition technologies: FASTCAT-Cloud and the Pl@ntNet-API. FASTCAT-Cloud is an Artificial Intelligence (AI) service, from DynAIkon, that uploads and analyses nature videos and pictures filtering to relevant images and recordings of wildlife activity to identify species names. The Pl@ntNet-API is an AI plant identification Application Programming Interface (API) which queries Pl@ntNet using image recognition to make identifications of plant species. How are these AI services being integrated into iSpot? Read on to find out more. Read More NEWS Loading... * MARCH 3 IS WORLD WILDLIFE DAY! March 3 is celebrated globally as World Widlife Day and this year’s theme “Connecting People and Planet: Exploring Digital Innovation in Wildlife Conservation”. World Wildlife Day places a spotlight on connecting people with the natural world and inspiring continued learning and action for animals and plants beyond the day. Read on for more information. Read More * 2024 NBN AWARDS FOR WILDLIFE RECORDING: WHICH EXCEPTIONAL INDIVIDUALS OR GROUPS WILL BE NOMINATED THIS YEAR? Nominations for the 2024 National Biodiversity Network (NBN) Trust Awards for Wildlife Recording are still open, closing on Wednesday April 3, 2024. Through these awards, the NBN recognises significant achievements and celebrates successes in wildlife recording in the UK. This year there are two new awards – one for Lifetime Achievement and one for Verifiers - making a total of seven categories. Read on to find out more. Read More * HOW SOCIETY OUGHT TO ENGAGE WITH NATURE, SCIENCE, AND TECHNOLOGY The way we engage with the natural world informs our scientific understandings and our worldviews. This is according to Advaith Siddharthan, Professor of Computer Science and Society, The Open University (OU). Want to find out more? Join Professor Siddharthan’s Inaugural Lecture on Tuesday February 13 at 13:00 p.m. live at the OU campus or online. Entitled: How society ought to engage with nature, science and technology, Siddharthan will discuss the impacts of modern culture's disassociation with nature and the potential for citizen science methodologies (i.e. iSpotnature.org) to redress these. Read on for more information and joining details. Read More OBSERVATIONS FILTER PROJECT FILTER Login below to save filters. No filters are currently active Save this filter * Loading... Save Enter a title to save this combination of filters. Must be a valid URL. The date format is . The time format is . Requires at least false characters. Accepts a maximum of 255 characters. Cannot be less than . Cannot be greater than . This input is readonly. This input is disabled. * Passwords must match * Passwords need at least: 8 characters, 1 number and 1 upper-case letter * Save this filter is required. * Save this filter requires at least false characters. * Save this filter takes a maximum of 255 characters. * Save this filter does not match the required format. * Save this filter must be a valid number. * Save this filter must be a valid email address. * Save this filter must be a valid URL. * Save this filter cannot be less than . * Save this filter cannot be greater than . * Save this filter cannot be less than . * Save this filter cannot be greater than . SEARCH ISPOT Search * Loading... Go Enter search text. Must be a valid URL. The date format is . The time format is . Requires at least false characters. Accepts a maximum of 255 characters. Cannot be less than . Cannot be greater than . This input is readonly. This input is disabled. * Passwords must match * Passwords need at least: 8 characters, 1 number and 1 upper-case letter * Search is required. * Search requires at least false characters. * Search takes a maximum of 255 characters. * Search does not match the required format. * Search must be a valid number. * Search must be a valid email address. * Search must be a valid URL. * Search cannot be less than . * Search cannot be greater than . * Search cannot be less than . * Search cannot be greater than . USER LOGIN Username * Enter text. Must be a valid URL. The date format is . The time format is . Requires at least false characters. Accepts a maximum of 255 characters. Cannot be less than . Cannot be greater than . This input is readonly. This input is disabled. * Passwords must match * Passwords need at least: 8 characters, 1 number and 1 upper-case letter * Username is required. * Username requires at least false characters. * Username takes a maximum of 255 characters. * Username does not match the required format. * Username must be a valid number. * Username must be a valid email address. * Username must be a valid URL. * Username cannot be less than . * Username cannot be greater than . * Username cannot be less than . * Username cannot be greater than . Password * Passwords need at least: 8 characters, 1 number and 1 upper-case letter Must be a valid URL. The date format is . The time format is . Requires at least false characters. Accepts a maximum of 255 characters. Cannot be less than . Cannot be greater than . This input is readonly. This input is disabled. * Passwords must match * Passwords need at least: 8 characters, 1 number and 1 upper-case letter * Password is required. * Password requires at least false characters. * Password takes a maximum of 255 characters. * Password does not match the required format. * Password must be a valid number. * Password must be a valid email address. * Password must be a valid URL. * Password cannot be less than . * Password cannot be greater than . * Password cannot be less than . * Password cannot be greater than . Loading... Log in * Cancel OU login * Request new password * Create new account FREE COURSE Citizen Science and Global Biodiversity LATEST PROJECTS Loading... * Snettisham * ❤️HABITAT iFOCUS-wall * ⭐SOME useful iLinks⭐ * ♻️Inspiring Spring 20/03/2024 iBlitz * Biodiversity and Society * ♻️iFocus Wild Goose Chase Summary * LCH - Lune River * Engaging with Lichens TWITTER WHO'S ONLINE There are 0 guests and 0 registered users online RECENT USERS SUCCESS : * Home * Help * Contact * Learn about The Open University * About us * Accessibility statement * Terms of use * Contact * Help © The Open University 2021 We use cookies to make sure iSpot works effectively and to improve your user experience. If you continue to use this site we will assume that you are happy with this. However, you can change your cookie settings at any time. More Info/Change Settings Continue You are using an outdated browser. Please upgrade your browser to improve your experience.