<!--
  Copyright 2021 The Go Authors. All rights reserved.
  Use of this source code is governed by a BSD-style
  license that can be found in the LICENSE file.
-->

{{define "main-styles"}}
  <link href="/static/frontend/vuln/entry/entry.min.css?version={{.AppVersionLabel}}" rel="stylesheet">
{{end}}

{{define "main-content"}}
  {{/* . is internal/frontend.VulnPage */}}
  <nav class="go-Breadcrumb" aria-label="Breadcrumb">
    <ol>
      <li>
        <a href="/vuln" data-gtmc="breadcrumb link">Vulnerability Database</a>
      </li>
      <li>
        <a href="/vuln/list" data-gtmc="breadcrumb link">All Reports</a>
      </li>
      <li>
        <a href="#" data-gtmc="breadcrumb link" aria-current="location">{{.Entry.ID}}</a>
      </li>
    </ol>
  </nav>
  <h1 class="Vuln-title">Vulnerability Report: {{.Entry.ID}}</h1>
  {{template "vuln-details" .Entry}}
  {{$numAdvs := subtract (len .AdvisoryLinks) 1}}
  {{with .AdvisoryLinks}}
    <p>
      For detailed information about this vulnerability, visit
      {{range $i, $v := . -}}
        {{- if gt $i 0}}
          {{- if not (eq $i $numAdvs)}},{{else}}{{if gt $i 1}},{{end}} or {{end -}}
        {{end}}
        <a href="{{$v.Href}}" target="_blank" rel="noopener">{{$v.Href}}</a>
      {{- end -}}.
    </p>
  {{end}}
  <div class="VulnEntry">
    {{template "affected" .AffectedPackages}}
    {{template "entry" .}}
  </div>
{{end}}

{{define "affected"}}
  <h2>Affected Packages</h2>
  <table class="VulnEntry-table">
    <thead>
      <tr>
	<th>Package</th>
	<th>Affected Versions</th>
      </tr>
    </thead>
    <tbody>
      {{range .}}
	<tr>
	  <td><a href="/{{.PackagePath}}">{{.PackagePath}}</a></td>
	  <td>{{if .Versions}}{{.Versions}}{{else}}all versions, no known fixed{{end}}</td>
	</tr>
      {{end}}
    </tbody>
  </table>
{{end}}

{{define "entry"}}
  {{$e := .Entry}}
  {{if .AliasLinks}}
    <h2>Aliases</h2>
    <ul class="VulnEntry-aliases">
      {{range .AliasLinks}}<li>
        {{if .Href}}
          <a href="{{.Href}}" target="_blank" rel="noopener">{{.Body}}</a>
        {{else}}
          {{.Body}}
        {{end}}
      </li>{{end}}
    </ul>
  {{end}}
  {{if $e.References}}
    <h2>References</h2>
    <ul class="VulnEntry-referenceList">
      {{range $e.References}}<li><a href="{{.URL}}" target="_blank" rel="noopener">{{.URL}}</a></li>{{end}}
    </ul>
  {{end}}
  <h2>Feedback</h2>
  <div>
    See anything missing or incorrect?
    <a target="_blank" rel="noopener" href="https://github.com/golang/vulndb/issues/new?assignees=&labels=Needs+Triage%2CSuggested+Edit&template=suggest_edit.yaml&title=x%2Fvulndb%3A+suggestion+regarding+{{$e.ID}}&report={{$e.ID}}">
      Suggest an edit to this report.
    </a>
  </div>
{{end}}
