@props([ 'results' => null, 'tool' => null, ])

@lang('seo.reportGeneratedDate', ['date' => now()->format(setting('datetime_format'))])

{{-- report screen and info --}}
{{ $results['result']['baseUrl'] ?? '' }}
{{ $results['result']['title']['string'] ?? '' }}
{{ $results['result']['description']['string'] ?? '' }}.
{{-- report facts --}}
{{ $results['result']['score']['page_percentage'] }}
@lang('seo.outOf100')
@lang('seo.secondCount', ['count' => $results['result']['loadtime']])
{{ formatSizeUnits($results['result']['pagesize'] ?? 0) }}
@lang('seo.resourcesCount', ['count' => $results['result']['httpRequests']['total_requests']])
{{ $results['result']['ssl']['is_valid'] == true ? 'Secured' : 'Not Secured' }}
{{-- report stats --}}
{{ $results['result']['high_test_count']['percentage'] }}%
@lang('seo.highIssue', ['count' => $results['result']['high_test_count']['passed']])
{{ $results['result']['medium_test_count']['percentage'] }}%
@lang('seo.mediumIssues', ['count' => $results['result']['medium_test_count']['passed']])
{{ $results['result']['low_test_count']['percentage'] }}%
@lang('seo.lowIssues', ['count' => $results['result']['low_test_count']['passed']])
{{ $results['result']['test_count']['percentage'] }}%
@lang('seo.testPassedCount', ['count' => $results['result']['test_count']['passed']])
@if ( $results['result']['count_section']['seo']['high'] > 0 || $results['result']['count_section']['seo']['medium'] > 0 || $results['result']['count_section']['seo']['low'] > 0)
@if ($results['result']['count_section']['seo']['high'] > 0) @lang('seo.highIssue', ['count' => $results['result']['count_section']['seo']['high']]) @endif @if ($results['result']['count_section']['seo']['medium'] > 0) @lang('seo.mediumIssues', ['count' => $results['result']['count_section']['seo']['medium']]) @endif @if ($results['result']['count_section']['seo']['low'] > 0) @lang('seo.lowIssues', ['count' => $results['result']['count_section']['seo']['low']]) @endif
@endif
@if ($results['result']['tests']['title']['status'] == true) @else @endif
@lang('seo.title')
@if ($results['result']['title']['passed'])

{{ __('seo.perfectTitle') }}

@else @foreach ($results['result']['title']['error'] as $type => $error)

{!! __("seo.titleError{$type}", $error) !!}

@endforeach @endif @if ($results['result']['title']['length'] != 0)

@lang('seo.text'): {{ $results['result']['title']['string'] ?? '' }}

@lang('seo.length'): {{ __('seo.numberCharacters', ['count' => $results['result']['title']['length']]) }}

@endif
?
@if ($results['result']['tests']['description']['status'] == true) @else @endif
@lang('seo.metaDescription')
@if ($results['result']['description']['passed'])

{{ __('seo.perfectDescription') }}

@else @foreach ($results['result']['description']['error'] as $type => $error)

{!! __("seo.descriptionError{$type}", $error) !!}

@endforeach @endif @if ($results['result']['description']['length'] != 0)

@lang('seo.text'): {{ $results['result']['description']['string'] ?? '' }}

@lang('seo.length'): {{ __('seo.numberCharacters', ['count' => $results['result']['description']['length']]) }}

@endif
?
@lang('seo.googleSearchPreview')

@lang('seo.desktopVersion')

{{ $results['result']['url'] }}
{{ Str::limit($results['result']['title']['string'], config('artisan.seo.page_title_max')) }}
{{ Str::limit($results['result']['description']['string'], config('artisan.seo.meta_description_max')) }}

@lang('seo.mobileVersion')

{{ $results['result']['url'] }}
{{ Str::limit($results['result']['title']['string'], config('artisan.seo.page_title_max')) }}
{{ Str::limit($results['result']['description']['string'], config('artisan.seo.meta_description_max')) }}
@if ($results['result']['tests']['heading']['status'] == true) @else @endif
@lang('seo.headings')
@if ($results['result']['full_page']['headers']['total'] > 0)

@lang('seo.hasHeadingsTag')

    @foreach ($results['result']['full_page']['headers']['tags'] as $key => $header) @if ($header['count'] > 0)

    1. @foreach ($header['headers'] as $head)
    2. {{ $head }}
    3. @endforeach
  • @endif @endforeach
@else

@lang('seo.noHeadingsTag')

@endif
?
@if ($results['result']['tests']['keywords']['status'] == true) @else @endif
@lang('seo.mostCommonKeywords')

@lang('seo.mostCommonKeywordsHelp', ['count' => count($results['result']['full_page']['keywords'])])

@if (count($results['result']['full_page']['keywords']) > 0) @foreach ($results['result']['full_page']['keywords'] as $keyword => $wordCount) {{ $keyword }} ({{ $wordCount }}) @endforeach @endif
?
@if ($results['result']['tests']['404page']['status'] == true) @else @endif
@lang('seo.404error')

{!! $results['result']['has_404']['has_notfound'] == true ? __('seo.hasFound404') : __('seo.hasNotFound404') !!}

?
@if ($results['result']['tests']['images']['status'] == true) @else @endif
@lang('seo.imageAltText')
@php $total = $results['result']['full_page']['images']['count']; $withAlt = $results['result']['full_page']['images']['count_alt']; $missing = $total - $withAlt; @endphp

{!! $missing == 0 ? __('seo.imagesAltPassed', ['count' => $total, 'count_alt' => $withAlt, 'missing' => $missing]) : __('seo.imagesAltMissingCount', ['count' => $total, 'count_alt' => $withAlt, 'missing' => $missing]) !!}

@if ($missing > 0)

    1. @if (count($results['result']['full_page']['images']['images']) > 0) @foreach ($results['result']['full_page']['images']['images'] as $images) @if (empty($images['alt']))
    2. {{ $images['src'] }}
    3. @endif @endforeach @endif
@endif
?
@if ($results['result']['tests']['links']['status'] == true) @else @endif
@lang('seo.inpageLinks')

@lang('seo.internalLinksCount', ['count' => $results['result']['full_page']['links']['internal']])

    @if ($results['result']['full_page']['links']['internal'] > 0)
  • @endif @if ($results['result']['full_page']['links']['external'] > 0)
  • @endif
?
@if ($results['result']['tests']['language']['status'] == true) @else @endif
@lang('seo.language')

{{ $results['result']['language'] != null ? __('seo.languageDeclared') : __('seo.languageNotDeclared') }}

{{ $results['result']['language'] }}
?
@if ($results['result']['tests']['favicon']['status'] == true) @else @endif
@lang('seo.favicon')

@if (!empty($results['result']['favicon'])) {{ __('seo.faviconYes') }} @endif {{ !empty($results['result']['favicon']) ? __('seo.faviconYes') : __('seo.faviconNo') }}

{{ $results['result']['favicon'] ?? '' }}
?
@if ($results['result']['tests']['has_robots_txt']['status'] == true) @else @endif
@lang('seo.has_robots_txt')

{!! $results['result']['tests']['has_robots_txt']['status'] ? __('seo.robotsTxtPassed') : __('seo.robotsTxtFailed') !!}

?
@if ($results['result']['tests']['nofollow']['status'] == true) @else @endif
@lang('seo.nofollow')

{!! $results['result']['tests']['nofollow']['status'] ? __('seo.nofollowPassed') : __('seo.nofollowFailed') !!}

@if ($results['result']['full_page']['links']['nofollow'] > 0) @endif
?
@if ($results['result']['tests']['noindex']['status'] == true) @else @endif
@lang('seo.noindex')

{{ $results['result']['noindex'] == null ? __('seo.noindexPassed') : __('seo.noindexFailed') }}

{{ $results['result']['noindex'] }}
?
@if ($results['result']['tests']['spfRecord']['status'] == true) @else @endif
@lang('seo.spfRecord')

{{ $results['result']['spfRecord'] === false ? __('seo.spfRecordFailed') : __('seo.spfRecordPassed') }}

@if ($results['result']['spfRecord'] != false)
{{ $results['result']['spfRecord']['txt'] }}
@endif
?
@if ($results['result']['tests']['redirects']['status'] === true) @else @endif
@lang('seo.redirects')

{{ $results['result']['tests']['redirects']['status'] === true ? __('seo.redirectsPassed') : __('seo.redirectsFailed') }}

@if (count($results['result']['redirects']) > 1)
@foreach ($results['result']['redirects'] as $redirect) @if ($loop->iteration != 1) @endif {{ $redirect['location'] }} @endforeach
@endif
?
@if ($results['result']['tests']['friendly']['status'] == true) @else @endif
@lang('seo.friendly')

{{ $results['result']['tests']['friendly']['status'] === true ? __('seo.friendlyPassed') : __('seo.friendlyFailed') }}

@if (!$results['result']['tests']['friendly']['status']) @endif
?
@if ( $results['result']['count_section']['performance']['high'] > 0 || $results['result']['count_section']['performance']['medium'] > 0 || $results['result']['count_section']['performance']['low'] > 0)
@if ($results['result']['count_section']['performance']['high'] > 0) @lang('seo.highIssue', ['count' => $results['result']['count_section']['performance']['high']]) @endif @if ($results['result']['count_section']['performance']['medium'] > 0) @lang('seo.mediumIssues', ['count' => $results['result']['count_section']['performance']['medium']]) @endif @if ($results['result']['count_section']['performance']['low'] > 0) @lang('seo.lowIssues', ['count' => $results['result']['count_section']['performance']['low']]) @endif
@endif
@if ($results['result']['tests']['domsize']['status'] == true) @else @endif
@lang('seo.domSize')

{!! $results['result']['domsize']['passed'] == true ? __('seo.domPassed', ['size' => $results['result']['domsize']['domsize'], 'max' => config('artisan.seo.dom_size')]) : __('seo.domFailed', [ 'size' => $results['result']['domsize']['domsize'], 'max' => config('artisan.seo.dom_size'), ]) !!}

?
@if ($results['result']['tests']['loadtime']['status'] == true) @else @endif
@lang('seo.loadTime')

{!! $results['result']['loadtime'] > config('artisan.seo.load_time') ? __('seo.loadtimeFailedCount', [ 'time' => $results['result']['loadtime'], 'recommended' => config('artisan.seo.load_time'), ]) : __('seo.loadtimePassedCount', [ 'time' => $results['result']['loadtime'], 'recommended' => config('artisan.seo.load_time'), ]) !!}

?
@if ($results['result']['tests']['pagesize']['status'] == true) @else @endif
@lang('seo.pageSize')

{!! $results['result']['tests']['pagesize']['status'] ? __('seo.pagesizePassedCount', [ 'size' => formatSizeUnits($results['result']['pagesize'] ?? 0), 'max' => formatSizeUnits(config('artisan.seo.page_size')), ]) : __('seo.pagesizeFailedCount', [ 'size' => formatSizeUnits($results['result']['pagesize'] ?? 0), 'max' => formatSizeUnits(config('artisan.seo.page_size')), ]) !!}

?
@if ($results['result']['tests']['httpRequests']['status'] == true) @else @endif
@lang('seo.httpRequests')

{!! $results['result']['tests']['httpRequests']['status'] ? __('seo.httpRequestPassedCount', [ 'requests' => $results['result']['httpRequests']['total_requests'] ?? 0, 'max' => config('artisan.seo.http_requests_limit'), ]) : __('seo.httpRequestFailedCount', [ 'requests' => $results['result']['httpRequests']['total_requests'] ?? 0, 'max' => config('artisan.seo.http_requests_limit'), ]) !!}

@if ($results['result']['httpRequests']['total_requests'] > 0)
    @foreach ($results['result']['httpRequests']['requests'] as $key => $rqts)
  • @endforeach
@endif
?
@if ($results['result']['tests']['imageFormats']['status'] == true) @else @endif
@lang('seo.imageFormats')

{!! $results['result']['tests']['imageFormats']['status'] ? __('seo.imageFormatsPassedCount', ['count' => count($results['result']['imageFormats']) ?? 0]) : __('seo.imageFormatsFailedCount', ['count' => count($results['result']['imageFormats']) ?? 0]) !!}

?
@if ($results['result']['tests']['text_compression']['status'] == true) @else @endif
@lang('seo.textCompression')
@php $percentage = round(100 - ($results['result']['pagesize'] / $results['result']['contentsize']) * 100, 0); $from = formatSizeUnits($results['result']['contentsize']); $to = formatSizeUnits($results['result']['pagesize']); $compression = $results['result']['encoding'][0] ?? null; $langArray = compact('percentage', 'from', 'to', 'compression'); @endphp

{!! $results['result']['tests']['text_compression']['status'] ? __('seo.textCompressionPassed', $langArray) : __('seo.textCompressionFailed', $langArray) !!}

@if ($results['result']['tests']['text_compression']['status'])
{{ $compression }}
@endif
?
@if ($results['result']['tests']['deferJs']['status'] == true) @else @endif
@lang('seo.deferJS')

{!! $results['result']['tests']['deferJs']['status'] ? __('seo.deferJSPassed', ['count' => count($results['result']['deferJs']) ?? 0]) : __('seo.deferJSFailed', ['count' => count($results['result']['deferJs']) ?? 0]) !!}

@if (count($results['result']['deferJs']) > 0)
@endif
?
@if ($results['result']['tests']['doctype']['status'] == true) @else @endif
@lang('seo.doctype')

{!! $results['result']['tests']['doctype']['status'] ? __('seo.doctypePassed') : __('seo.doctypeFailed') !!}

{{ $results['result']['doctype'] }}
?
@if ($results['result']['tests']['nestedTables']['status'] == true) @else @endif
@lang('seo.nestedTables')

{!! $results['result']['tests']['nestedTables']['status'] ? __('seo.nestedTablesPassed') : __('seo.nestedTablesFailed') !!}

?
@if ($results['result']['tests']['framesets']['status'] == true) @else @endif
@lang('seo.framesets')

{!! $results['result']['tests']['framesets']['status'] ? __('seo.framesetsPassed') : __('seo.framesetsFailed') !!}

?
@if ( $results['result']['count_section']['security']['high'] > 0 || $results['result']['count_section']['security']['medium'] > 0 || $results['result']['count_section']['security']['low'] > 0)
@if ($results['result']['count_section']['security']['high'] > 0) @lang('seo.highIssue', ['count' => $results['result']['count_section']['security']['high']]) @endif @if ($results['result']['count_section']['security']['medium'] > 0) @lang('seo.mediumIssues', ['count' => $results['result']['count_section']['security']['medium']]) @endif @if ($results['result']['count_section']['security']['low'] > 0) @lang('seo.lowIssues', ['count' => $results['result']['count_section']['security']['low']]) @endif
@endif
@if ($results['result']['tests']['plainEmails']['status'] == true) @else @endif
@lang('seo.plainEmail')

{!! $results['result']['tests']['plainEmails']['status'] ? __('seo.plainEmailPassed', ['count' => count($results['result']['plainEmails']) ?? 0]) : __('seo.plainEmailFailed', ['count' => count($results['result']['plainEmails']) ?? 0]) !!}

@if (count($results['result']['plainEmails']) > 0)
@endif
?
@if ($results['result']['tests']['httpsEncryption']['status'] == true) @else @endif
@lang('seo.httpsEncryption')

{!! $results['result']['ssl']['is_valid'] == true ? __('seo.sslTestPassed', ['issuer' => $results['result']['ssl']['issuer'] , 'expire_at' => $results['result']['ssl']['expire_at']]) : __('seo.sslTestFailed') !!}

?
@if ($results['result']['tests']['mixedContent']['status'] == true) @else @endif
@lang('seo.mixedContent')

{{ $results['result']['mixedContent']['total_requests'] == 0 ? __('seo.mixedContentNo') : __('seo.mixedContentYes') }}

?
@if ($results['result']['tests']['serverSignature']['status'] == true) @else @endif
@lang('seo.serverSignature')

{{ count($results['result']['server']) == 0 ? __('seo.serverNo') : __('seo.serverYes') }}

@if (count($results['result']['server']) > 0) @foreach ($results['result']['server'] as $server) {{ $server }} @endforeach @endif
?
@if ($results['result']['tests']['coLinks']['status'] == true) @else @endif
@lang('seo.coLinks')

{!! $results['result']['tests']['coLinks']['status'] ? __('seo.coLinksPassed', ['count' => count($results['result']['unsafeCOLinks']) ?? 0]) : __('seo.coLinksFailed', ['count' => count($results['result']['unsafeCOLinks']) ?? 0]) !!}

@if (!$results['result']['tests']['coLinks']['status'])

    1. @foreach ($results['result']['unsafeCOLinks'] as $links)
    2. {{ $links }}
    3. @endforeach
@endif
?
@if ($results['result']['tests']['http2']['status'] == true) @else @endif
@lang('seo.http2')

{!! $results['result']['http2'] == true ? __('seo.http2Passed') : __('seo.http2Failed') !!}

?
@if ($results['result']['tests']['hsts']['status'] == true) @else @endif
@lang('seo.hsts')

{!! $results['result']['hsts'] == true ? __('seo.hstsPassed') : __('seo.hstsFailed') !!}

?
@if ( $results['result']['count_section']['others']['high'] > 0 || $results['result']['count_section']['others']['medium'] > 0 || $results['result']['count_section']['others']['low'] > 0)
@if ($results['result']['count_section']['others']['high'] > 0) @lang('seo.highIssue', ['count' => $results['result']['count_section']['others']['high']]) @endif @if ($results['result']['count_section']['others']['medium'] > 0) @lang('seo.mediumIssues', ['count' => $results['result']['count_section']['others']['medium']]) @endif @if ($results['result']['count_section']['others']['low'] > 0) @lang('seo.lowIssues', ['count' => $results['result']['count_section']['others']['low']]) @endif
@endif
@if ($results['result']['tests']['socialTags']['status'] == true) @else @endif
@lang('seo.socialMediaMetaTags')

{!! $results['result']['tests']['socialTags']['status'] ? __('seo.socialMediaMetaTagsPassed') : __('seo.socialMediaMetaTagsFailed') !!}

    @if (count($results['result']['structuredData']['og'] ?? []) > 0)
  • @endif @if (count($results['result']['structuredData']['twitter'] ?? []) > 0)
  • @endif
?
@if ($results['result']['tests']['structuredData']['status'] == true) @else @endif
@lang('seo.structuredData')

{!! $results['result']['tests']['structuredData']['status'] ? __('seo.structuredDataPassed') : __('seo.structuredDataFailed') !!}

@if (count($results['result']['structuredData']['schema'] ?? []) > 0)
@endif
?
@if ($results['result']['tests']['viewPort']['status'] == true) @else @endif
@lang('seo.viewPort')

{{ !empty($results['result']['viewport']) ? __('seo.hasViewPort') : __('seo.hasNotviewPort') }}

{{ $results['result']['viewport'] }}
?
@if ($results['result']['tests']['charset']['status'] == true) @else @endif
@lang('seo.charset')

{{ $results['result']['charset'] != null ? __('seo.hasCharset') : __('seo.hasNotCharset') }}

{{ $results['result']['charset'] }}
?
@if ($results['result']['tests']['sitemap']['status'] == true) @else @endif
@lang('seo.sitemaps')

{{ $results['result']['tests']['sitemap']['status'] ? __('seo.hasSitemap') : __('seo.hasNotSitemap') }}

@if ($results['result']['tests']['sitemap']['status'])

    1. @foreach ($results['result']['sitemaps']['sitemaps'] as $sitemap)
    2. {{ $sitemap }}
    3. @endforeach
@endif
?
@if ($results['result']['tests']['social']['status'] == true) @else @endif
@lang('seo.socialLinks')

{{ $results['result']['tests']['social']['status'] ? __('seo.hasSocial') : __('seo.hasNotSocial') }}

@if ($results['result']['tests']['social']['status'])
    @foreach ($results['result']['social'] as $key => $social)
  • @endforeach
@endif
?
@if ($results['result']['tests']['contentlength']['status'] == true) @else @endif
@lang('seo.contentlength')

@lang('seo.contentlengthCount', ['count' => $results['result']['full_page']['word_count']])

?
@if ($results['result']['tests']['inlineCss']['status'] == true) @else @endif
@lang('seo.inlineCss')

{{ count($results['result']['inlineCss']) == 0 ? __('seo.hasNotValidCss') : __('seo.hasValidCss') }}

@if (count($results['result']['inlineCss']) > 0)

    1. @foreach ($results['result']['inlineCss'] as $links)
    2. {{ $links }}
    3. @endforeach
@endif
?
@if ($results['result']['tests']['depHtml']['status'] == true) @else @endif
@lang('seo.depHtml')

{!! $results['result']['tests']['depHtml']['status'] ? __('seo.depHtmlPassed', ['count' => count($results['result']['depricatedtTags']['deprecatedTags']) ?? 0]) : __('seo.depHtmlFailed', ['count' => count($results['result']['depricatedtTags']['deprecatedTags']) ?? 0]) !!}

@if ($results['result']['depricatedtTags']['total'] > 0)
@foreach ($results['result']['depricatedtTags']['deprecatedTags'] as $tag => $count)
{{ "<{$tag}>" }}
{{ $count }}
@endforeach
@endif
?
@if ($results['result']['tests']['canonical']['status'] == true) @else @endif
@lang('seo.canonical')

{!! $results['result']['tests']['canonical']['status'] ? __('seo.canonicalPassed') : __('seo.canonicalFailed') !!}

{{ $results['result']['canonical'] }}
?
@if ($results['result']['tests']['analytics']['status'] == true) @else @endif
@lang('seo.analytics')

{{ $results['result']['analytics'] != null ? __('seo.analyticsPassed') : __('seo.analyticsFailed') }}

{{ $results['result']['analytics'] }}
?
@if ($results['result']['tests']['is_disallowed']['status'] === true) @else @endif
@lang('seo.is_disallowed')

{{ $results['result']['tests']['is_disallowed']['message'] }}

@if (!$results['result']['tests']['is_disallowed']['status'])
@endif
?
{{-- TODO: improve keywords --}}
@if ($results['result']['tests']['keywords_usage']['status'] == true) @else @endif
@lang('seo.keywordUsageTest')
@foreach ($results['result']['tests']['keywords_usage']['data'] as $key => $keyword) @endforeach
@lang('seo.keyword') @lang('seo.title') @lang('seo.description') @lang('seo.headings')
{{ $key }} ({{ $keyword['count'] }})
{!! $keyword['title'] ? '' : '' !!} {!! $keyword['description'] ? '' : '' !!} {!! $keyword['headers'] ? '' : '' !!}
?
@if ($results['result']['tests']['keywords_usage_long']['status'] == true) @else @endif
@lang('seo.keywordUsageTestLong')
@foreach ($results['result']['tests']['keywords_usage_long']['data'] as $key => $keyword) @endforeach
@lang('seo.keyword') @lang('seo.title') @lang('seo.description') @lang('seo.headings')
{{ $key }} ({{ $keyword['count'] }})
{!! $keyword['title'] ? '' : '' !!} {!! $keyword['description'] ? '' : '' !!} {!! $keyword['headers'] ? '' : '' !!}
?