{{- $validFormats := slice "default" "terse" }} {{- $msg1 := "When passing a map to the internal pagination template, one of the elements must be named 'page', and it must be set to the context of the current page." }} {{- $msg2 := "The 'format' specified in the map passed to the internal pagination template is invalid. Valid choices are: %s." }} {{- $page := . }} {{- $format := "default" }} {{- if reflect.IsMap . }} {{- with .page }} {{- $page = . }} {{- else }} {{- errorf $msg1 }} {{- end }} {{- with .format }} {{- $format = lower . }} {{- end }} {{- end }} {{- if in $validFormats $format }} {{- if gt $page.Paginator.TotalPages 1 }} {{- end }} {{- else }} {{- errorf $msg2 (delimit $validFormats ", ") }} {{- end -}} {{/* Format: default {{/* --------------------------------------------------------------------- */}} {{- define "partials/inline/pagination/default" }} {{- with .Paginator }} {{- $currentPageNumber := .PageNumber }} {{- with .First }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- else }}
  • {{- end }} {{- end }} {{- with .Prev }}
  • {{- else }}
  • {{- end }} {{- $slots := 5 }} {{- $start := math.Max 1 (sub .PageNumber (math.Floor (div $slots 2))) }} {{- $end := math.Min .TotalPages (sub (add $start $slots) 1) }} {{- if lt (add (sub $end $start) 1) $slots }} {{- $start = math.Max 1 (add (sub $end $slots) 1) }} {{- end }} {{- range $k := seq $start $end }} {{- if eq $.Paginator.PageNumber $k }}
  • {{ $k }}
  • {{- else }}
  • {{ $k }}
  • {{- end }} {{- end }} {{- with .Next }}
  • {{- else }}
  • {{- end }} {{- with .Last }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- else }}
  • {{- end }} {{- end }} {{- end }} {{- end -}} {{/* Format: terse {{/* --------------------------------------------------------------------- */}} {{- define "partials/inline/pagination/terse" }} {{- with .Paginator }} {{- $currentPageNumber := .PageNumber }} {{- with .First }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- end }} {{- end }} {{- with .Prev }}
  • {{- end }} {{- $slots := 3 }} {{- $start := math.Max 1 (sub .PageNumber (math.Floor (div $slots 2))) }} {{- $end := math.Min .TotalPages (sub (add $start $slots) 1) }} {{- if lt (add (sub $end $start) 1) $slots }} {{- $start = math.Max 1 (add (sub $end $slots) 1) }} {{- end }} {{- range $k := seq $start $end }} {{- if eq $.Paginator.PageNumber $k }}
  • {{ $k }}
  • {{- else }}
  • {{ $k }}
  • {{- end }} {{- end }} {{- with .Next }}
  • {{- end }} {{- with .Last }} {{- if ne $currentPageNumber .PageNumber }}
  • {{- end }} {{- end }} {{- end }} {{- end -}}