settings.html 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154
  1. {{ define "title"}}{{ t "page.settings.title" }}{{ end }}
  2. {{ define "content"}}
  3. <section class="page-header">
  4. <h1>{{ t "page.settings.title" }}</h1>
  5. {{ template "settings_menu" dict "user" .user }}
  6. </section>
  7. <form method="post" autocomplete="off" action="{{ route "updateSettings" }}">
  8. <input type="hidden" name="csrf" value="{{ .csrf }}">
  9. {{ if .errorMessage }}
  10. <div class="alert alert-error">{{ t .errorMessage }}</div>
  11. {{ end }}
  12. <fieldset>
  13. <legend>{{ t "form.prefs.fieldset.authentication_settings" }}</legend>
  14. <label for="form-username">{{ t "form.user.label.username" }}</label>
  15. <input type="text" name="username" id="form-username" value="{{ .form.Username }}" autocomplete="username" required>
  16. <label for="form-password">{{ t "form.user.label.password" }}</label>
  17. <input type="password" name="password" id="form-password" value="{{ .form.Password }}" autocomplete="new-password">
  18. <label for="form-confirmation">{{ t "form.user.label.confirmation" }}</label>
  19. <input type="password" name="confirmation" id="form-confirmation" value="{{ .form.Confirmation }}" autocomplete="new-password">
  20. {{ if hasOAuth2Provider "google" }}
  21. <div class="panel">
  22. {{ if .user.GoogleID }}
  23. <a href="{{ route "oauth2Unlink" "provider" "google" }}">{{ t "page.settings.unlink_google_account" }}</a>
  24. {{ else }}
  25. <a href="{{ route "oauth2Redirect" "provider" "google" }}">{{ t "page.settings.link_google_account" }}</a>
  26. {{ end }}
  27. </div>
  28. {{ else if hasOAuth2Provider "oidc" }}
  29. <div class="panel">
  30. {{ if .user.OpenIDConnectID }}
  31. <a href="{{ route "oauth2Unlink" "provider" "oidc" }}">{{ t "page.settings.unlink_oidc_account" }}</a>
  32. {{ else }}
  33. <a href="{{ route "oauth2Redirect" "provider" "oidc" }}">{{ t "page.settings.link_oidc_account" }}</a>
  34. {{ end }}
  35. </div>
  36. {{ end }}
  37. <div class="buttons">
  38. <button type="submit" class="button button-primary" data-label-loading="{{ t "form.submit.saving" }}">{{ t "action.update" }}</button>
  39. </div>
  40. </fieldset>
  41. <fieldset>
  42. <legend>{{ t "form.prefs.fieldset.reader_settings" }}</legend>
  43. <label for="form-cjk-reading-speed">{{ t "form.prefs.label.cjk_reading_speed" }}</label>
  44. <input type="number" name="cjk_reading_speed" id="form-cjk-reading-speed" value="{{ .form.CJKReadingSpeed }}" min="1">
  45. <label for="form-default-reading-speed">{{ t "form.prefs.label.default_reading_speed" }}</label>
  46. <input type="number" name="default_reading_speed" id="form-default-reading-speed" value="{{ .form.DefaultReadingSpeed }}" min="1">
  47. <label><input type="checkbox" name="show_reading_time" value="1" {{ if .form.ShowReadingTime }}checked{{ end }}> {{ t "form.prefs.label.show_reading_time" }}</label>
  48. <label><input type="checkbox" name="mark_read_on_view" value="1" {{ if .form.MarkReadOnView }}checked{{ end }}> {{ t "form.prefs.label.mark_read_on_view" }}</label>
  49. <div class="buttons">
  50. <button type="submit" class="button button-primary" data-label-loading="{{ t "form.submit.saving" }}">{{ t "action.update" }}</button>
  51. </div>
  52. </fieldset>
  53. <fieldset>
  54. <legend>{{ t "form.prefs.fieldset.application_settings" }}</legend>
  55. <label for="form-language">{{ t "form.prefs.label.language" }}</label>
  56. <select id="form-language" name="language">
  57. {{ range $key, $value := .languages }}
  58. <option value="{{ $key }}" {{ if eq $key $.form.Language }}selected="selected"{{ end }}>{{ $value }}</option>
  59. {{ end }}
  60. </select>
  61. <label for="form-timezone">{{ t "form.prefs.label.timezone" }}</label>
  62. <select id="form-timezone" name="timezone">
  63. {{ range $key, $value := .timezones }}
  64. <option value="{{ $key }}" {{ if eq $key $.form.Timezone }}selected="selected"{{ end }}>{{ $value }}</option>
  65. {{ end }}
  66. </select>
  67. <label for="form-theme">{{ t "form.prefs.label.theme" }}</label>
  68. <select id="form-theme" name="theme">
  69. {{ range $key, $value := .themes }}
  70. <option value="{{ $key }}" {{ if eq $key $.form.Theme }}selected="selected"{{ end }}>{{ $value }}</option>
  71. {{ end }}
  72. </select>
  73. <div class="form-label-row">
  74. <label for="form-display-mode">{{ t "form.prefs.label.display_mode" }}</label>
  75. &nbsp;
  76. <a href="https://developer.mozilla.org/en-US/docs/Web/Manifest/display" target="_blank">
  77. {{ icon "external-link" }}
  78. </a>
  79. </div>
  80. <select id="form-display-mode" name="display_mode">
  81. <option value="fullscreen" {{ if eq "fullscreen" $.form.DisplayMode }}selected="selected"{{ end }}>{{ t "form.prefs.select.fullscreen" }}</option>
  82. <option value="standalone" {{ if eq "standalone" $.form.DisplayMode }}selected="selected"{{ end }}>{{ t "form.prefs.select.standalone" }}</option>
  83. <option value="minimal-ui" {{ if eq "minimal-ui" $.form.DisplayMode }}selected="selected"{{ end }}>{{ t "form.prefs.select.minimal_ui" }}</option>
  84. <option value="browser" {{ if eq "browser" $.form.DisplayMode }}selected="selected"{{ end }}>{{ t "form.prefs.select.browser" }}</option>
  85. </select>
  86. <label for="form-default-home-page">{{ t "form.prefs.label.default_home_page" }}</label>
  87. <select id="form-default-home-page" name="default_home_page">
  88. {{ range $key, $value := .default_home_pages }}
  89. <option value="{{ $key }}" {{ if eq $key $.form.DefaultHomePage }}selected="selected"{{ end }}>{{ t $value }}</option>
  90. {{ end }}
  91. </select>
  92. <label for="form-entry-direction">{{ t "form.prefs.label.entry_sorting" }}</label>
  93. <select id="form-entry-direction" name="entry_direction">
  94. <option value="asc" {{ if eq "asc" $.form.EntryDirection }}selected="selected"{{ end }}>{{ t "form.prefs.select.older_first" }}</option>
  95. <option value="desc" {{ if eq "desc" $.form.EntryDirection }}selected="selected"{{ end }}>{{ t "form.prefs.select.recent_first" }}</option>
  96. </select>
  97. <label for="form-entry-order">{{ t "form.prefs.label.entry_order" }}</label>
  98. <select id="form-entry-order" name="entry_order">
  99. <option value="published_at" {{ if eq "published_at" $.form.EntryOrder }}selected="selected"{{ end }}>{{ t "form.prefs.select.publish_time" }}</option>
  100. <option value="created_at" {{ if eq "created_at" $.form.EntryOrder }}selected="selected"{{ end }}>{{ t "form.prefs.select.created_time" }}</option>
  101. </select>
  102. <label for="form-categories-sorting-order">{{ t "form.prefs.label.categories_sorting_order" }}</label>
  103. <select id="form-categories-sorting-order" name="categories_sorting_order">
  104. {{ range $key, $value := .categories_sorting_options }}
  105. <option value="{{ $key }}" {{ if eq $key $.form.CategoriesSortingOrder }}selected="selected"{{ end }}>{{ t $value }}</option>
  106. {{ end }}
  107. </select>
  108. <label for="form-gesture-nav">{{ t "form.prefs.label.gesture_nav" }}</label>
  109. <select id="form-gesture-nav" name="gesture_nav">
  110. <option value="none" {{ if eq "none" $.form.GestureNav }}selected="selected"{{ end }}>{{ t "form.prefs.select.none" }}</option>
  111. <option value="tap" {{ if eq "tap" $.form.GestureNav }}selected="selected"{{ end }}>{{ t "form.prefs.select.tap" }}</option>
  112. <option value="swipe" {{ if eq "swipe" $.form.GestureNav }}selected="selected"{{ end }}>{{ t "form.prefs.select.swipe" }}</option>
  113. </select>
  114. <label for="form-entries-per-page">{{ t "form.prefs.label.entries_per_page" }}</label>
  115. <input type="number" name="entries_per_page" id="form-entries-per-page" value="{{ .form.EntriesPerPage }}" min="1">
  116. <label><input type="checkbox" name="keyboard_shortcuts" value="1" {{ if .form.KeyboardShortcuts }}checked{{ end }}> {{ t "form.prefs.label.keyboard_shortcuts" }}</label>
  117. <label><input type="checkbox" name="entry_swipe" value="1" {{ if .form.EntrySwipe }}checked{{ end }}> {{ t "form.prefs.label.entry_swipe" }}</label>
  118. <label>{{t "form.prefs.label.custom_css" }}</label><textarea name="custom_css" cols="40" rows="8" spellcheck="false">{{ .form.CustomCSS }}</textarea>
  119. <div class="buttons">
  120. <button type="submit" class="button button-primary" data-label-loading="{{ t "form.submit.saving" }}">{{ t "action.update" }}</button>
  121. </div>
  122. </fieldset>
  123. </form>
  124. {{ end }}