mirror of
https://github.com/thomiceli/opengist.git
synced 2026-08-07 07:14:49 +00:00
Default sort gists user preference (#744)
This commit is contained in:
@@ -305,6 +305,8 @@ type UserStyleDTO struct {
|
||||
AddedLineColor string `form:"addedlinecolor" json:"added_line_color" validate:"min=0,max=7"`
|
||||
GitLineColor string `form:"gitlinecolor" json:"git_line_color" validate:"min=0,max=7"`
|
||||
Theme string `form:"theme" json:"theme" validate:"oneof=light dark auto"`
|
||||
DefaultSort string `form:"defaultsort" json:"default_sort" validate:"omitempty,oneof=created updated"`
|
||||
DefaultOrder string `form:"defaultorder" json:"default_order" validate:"omitempty,oneof=asc desc"`
|
||||
}
|
||||
|
||||
func (dto *UserStyleDTO) ToJson() string {
|
||||
|
||||
@@ -189,6 +189,12 @@ settings.style.theme: Theme
|
||||
settings.style.theme-light: Light
|
||||
settings.style.theme-dark: Dark
|
||||
settings.style.theme-auto: Auto
|
||||
settings.style.default-sort: Default sort order
|
||||
settings.style.default-sort-created: Created date
|
||||
settings.style.default-sort-updated: Updated date
|
||||
settings.style.default-order: Default order direction
|
||||
settings.style.default-order-desc: Newest first
|
||||
settings.style.default-order-asc: Oldest first
|
||||
settings.create-token: Create access token
|
||||
settings.create-token-help: Access tokens can be used to access the API
|
||||
settings.token-name: Name
|
||||
|
||||
@@ -23,20 +23,34 @@ func AllGists(ctx *context.Context) error {
|
||||
pageInt := handlers.GetPage(ctx)
|
||||
|
||||
sort := "created"
|
||||
sortText := ctx.TrH("gist.list.sort-by-created")
|
||||
order := "desc"
|
||||
orderText := ctx.TrH("gist.list.order-by-desc")
|
||||
|
||||
if userLogged != nil {
|
||||
if style := userLogged.GetStyle(); style != nil {
|
||||
if style.DefaultSort == "updated" {
|
||||
sort = "updated"
|
||||
}
|
||||
if style.DefaultOrder == "asc" {
|
||||
order = "asc"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if ctx.QueryParam("sort") == "updated" {
|
||||
sort = "updated"
|
||||
sortText = ctx.TrH("gist.list.sort-by-updated")
|
||||
} else if ctx.QueryParam("sort") == "created" {
|
||||
sort = "created"
|
||||
}
|
||||
|
||||
if ctx.QueryParam("order") == "asc" {
|
||||
order = "asc"
|
||||
orderText = ctx.TrH("gist.list.order-by-asc")
|
||||
} else if ctx.QueryParam("order") == "desc" {
|
||||
order = "desc"
|
||||
}
|
||||
|
||||
sortText := ctx.TrH("gist.list.sort-by-" + sort)
|
||||
orderText := ctx.TrH("gist.list.order-by-" + order)
|
||||
|
||||
pagination := &handlers.PaginationParams{
|
||||
Sort: sort,
|
||||
Order: order,
|
||||
|
||||
Vendored
+28
@@ -113,6 +113,34 @@
|
||||
<input type="color" value="{{ if .currentStyle }}{{ .currentStyle.GitLineColor }}{{ else }}#8f8f8f{{ end }}" id="gitlinecolor" name="gitlinecolor">
|
||||
</div>
|
||||
</div>
|
||||
<h2 class="text-md font-bold text-slate-700 dark:text-slate-300 mt-8 mb-4">
|
||||
{{ .locale.Tr "settings.style.default-sort" }}
|
||||
</h2>
|
||||
<div class="mt-2 space-y-4 sm:flex sm:items-center sm:space-x-10 sm:space-y-0">
|
||||
<div class="flex items-center">
|
||||
<input id="default-sort-created" value="created" name="defaultsort" type="radio" {{ if .currentStyle }}{{ if or (eq .currentStyle.DefaultSort "created") (eq .currentStyle.DefaultSort "") }}checked{{ end }}{{ else }}checked{{ end }} class="relative size-4 appearance-none rounded-full border border-gray-300 bg-white before:absolute before:inset-1 before:rounded-full before:bg-white checked:border-indigo-600 checked:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100 disabled:before:bg-gray-400 forced-colors:appearance-auto forced-colors:before:hidden not-checked:before:hidden">
|
||||
<label for="default-sort-created" class="ml-3 block text-sm font-medium text-slate-700 dark:text-slate-300">{{ .locale.Tr "settings.style.default-sort-created" }}</label>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<input id="default-sort-updated" value="updated" name="defaultsort" type="radio" {{ if .currentStyle }}{{ if eq .currentStyle.DefaultSort "updated" }}checked{{ end }}{{ end }} class="relative size-4 appearance-none rounded-full border border-gray-300 bg-white before:absolute before:inset-1 before:rounded-full before:bg-white checked:border-indigo-600 checked:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100 disabled:before:bg-gray-400 forced-colors:appearance-auto forced-colors:before:hidden not-checked:before:hidden">
|
||||
<label for="default-sort-updated" class="ml-3 block text-sm font-medium text-slate-700 dark:text-slate-300">{{ .locale.Tr "settings.style.default-sort-updated" }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<h2 class="text-md font-bold text-slate-700 dark:text-slate-300 mt-8 mb-4">
|
||||
{{ .locale.Tr "settings.style.default-order" }}
|
||||
</h2>
|
||||
<div class="mt-2 space-y-4 sm:flex sm:items-center sm:space-x-10 sm:space-y-0">
|
||||
<div class="flex items-center">
|
||||
<input id="default-order-desc" value="desc" name="defaultorder" type="radio" {{ if .currentStyle }}{{ if or (eq .currentStyle.DefaultOrder "desc") (eq .currentStyle.DefaultOrder "") }}checked{{ end }}{{ else }}checked{{ end }} class="relative size-4 appearance-none rounded-full border border-gray-300 bg-white before:absolute before:inset-1 before:rounded-full before:bg-white checked:border-indigo-600 checked:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100 disabled:before:bg-gray-400 forced-colors:appearance-auto forced-colors:before:hidden not-checked:before:hidden">
|
||||
<label for="default-order-desc" class="ml-3 block text-sm font-medium text-slate-700 dark:text-slate-300">{{ .locale.Tr "settings.style.default-order-desc" }}</label>
|
||||
</div>
|
||||
<div class="flex items-center">
|
||||
<input id="default-order-asc" value="asc" name="defaultorder" type="radio" {{ if .currentStyle }}{{ if eq .currentStyle.DefaultOrder "asc" }}checked{{ end }}{{ end }} class="relative size-4 appearance-none rounded-full border border-gray-300 bg-white before:absolute before:inset-1 before:rounded-full before:bg-white checked:border-indigo-600 checked:bg-indigo-600 focus-visible:outline focus-visible:outline-2 focus-visible:outline-offset-2 focus-visible:outline-indigo-600 disabled:border-gray-300 disabled:bg-gray-100 disabled:before:bg-gray-400 forced-colors:appearance-auto forced-colors:before:hidden not-checked:before:hidden">
|
||||
<label for="default-order-asc" class="ml-3 block text-sm font-medium text-slate-700 dark:text-slate-300">{{ .locale.Tr "settings.style.default-order-asc" }}</label>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ .csrfHtml }}
|
||||
<button type="submit" class="mt-4 inline-flex items-center px-4 py-2 border border-transparent border-gray-200 dark:border-gray-700 text-sm font-medium rounded-md shadow-sm text-white dark:text-white bg-primary-500 hover:bg-primary-600 focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-primary-500">{{ .locale.Tr "settings.style.save-style" }}</button>
|
||||
</form>
|
||||
|
||||
Reference in New Issue
Block a user