This is an automated email from the ASF dual-hosted git repository. shuai pushed a commit to branch ui-optimization in repository https://gitbox.apache.org/repos/asf/answer.git
commit 105cd37dfe7af2e0090bf707330129b28e28260c Author: shuai <[email protected]> AuthorDate: Mon Apr 7 11:44:34 2025 +0800 fix: update seo template for footer template --- cmd/wire_gen.go | 24 +- docs/docs.go | 19 -- docs/swagger.yaml | 17 -- internal/service/mock/siteinfo_repo_mock.go | 19 -- ui/template/footer.html | 34 ++- ui/template/header.html | 3 +- ui/template/question.html | 164 +++++----- ui/test.html | 443 ++++++++++++++++++++++++++++ 8 files changed, 547 insertions(+), 176 deletions(-) diff --git a/cmd/wire_gen.go b/cmd/wire_gen.go index 702f60df..3ad59130 100644 --- a/cmd/wire_gen.go +++ b/cmd/wire_gen.go @@ -1,28 +1,8 @@ -//go:build !wireinject -// +build !wireinject - -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - // Code generated by Wire. DO NOT EDIT. //go:generate go run github.com/google/wire/cmd/wire +//go:build !wireinject +// +build !wireinject package answercmd diff --git a/docs/docs.go b/docs/docs.go index 2fb46904..34f87f2b 100644 --- a/docs/docs.go +++ b/docs/docs.go @@ -1,22 +1,3 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - // Package docs Code generated by swaggo/swag. DO NOT EDIT package docs diff --git a/docs/swagger.yaml b/docs/swagger.yaml index 16c5cfbb..bc0df88b 100644 --- a/docs/swagger.yaml +++ b/docs/swagger.yaml @@ -1,20 +1,3 @@ -# Licensed to the Apache Software Foundation (ASF) under one -# or more contributor license agreements. See the NOTICE file -# distributed with this work for additional information -# regarding copyright ownership. The ASF licenses this file -# to you under the Apache License, Version 2.0 (the -# "License"); you may not use this file except in compliance -# with the License. You may obtain a copy of the License at -# -# http://www.apache.org/licenses/LICENSE-2.0 -# -# Unless required by applicable law or agreed to in writing, -# software distributed under the License is distributed on an -# "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -# KIND, either express or implied. See the License for the -# specific language governing permissions and limitations -# under the License. - basePath: / definitions: constant.NotificationChannelKey: diff --git a/internal/service/mock/siteinfo_repo_mock.go b/internal/service/mock/siteinfo_repo_mock.go index 1b841278..7f6d89eb 100644 --- a/internal/service/mock/siteinfo_repo_mock.go +++ b/internal/service/mock/siteinfo_repo_mock.go @@ -1,22 +1,3 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ - // Code generated by MockGen. DO NOT EDIT. // Source: ./siteinfo_service.go // diff --git a/ui/template/footer.html b/ui/template/footer.html index a72db38c..c5e97736 100644 --- a/ui/template/footer.html +++ b/ui/template/footer.html @@ -19,23 +19,25 @@ --> {{define "footer"}} -</div> - <footer class="py-3 bg-light w-100"> - <p class="text-center mb-0 small"> - <a class="me-3" href="{{$.baseURL}}/tos" data-discover="true"> - {{translator $.language "ui.admin.legal.terms_of_service.label"}} - </a> - <a href="{{$.baseURL}}/privacy" data-discover="true"> - {{translator $.language "ui.admin.legal.privacy_policy.label"}} - </a> - </p> - <p class="text-center mb-0 small text-secondary"> - {{$cc := (join " " .siteinfo.Year .siteinfo.General.Name) -}} - {{- $ft := translator $.language "ui.footer.build_on" "cc" $cc -}} - {{templateHTML (replaceHTMLTag $ft "<a href=\"https://answer.apache.org/\" target=\"_blank\"> Answer </a>")}} - </p> - </footer> + <footer class="py-3 bg-light w-100"> + <p class="text-center mb-0 small"> + <a class="me-3" href="{{$.baseURL}}/tos" data-discover="true"> + {{translator $.language "ui.admin.legal.terms_of_service.label"}} + </a> + <a href="{{$.baseURL}}/privacy" data-discover="true"> + {{translator $.language "ui.admin.legal.privacy_policy.label"}} + </a> + </p> + <p class="text-center mb-0 small text-secondary"> + {{$cc := (join " " .siteinfo.Year .siteinfo.General.Name) -}} + {{- $ft := translator $.language "ui.footer.build_on" "cc" $cc -}} + {{templateHTML (replaceHTMLTag $ft "<a href=\"https://answer.apache.org/\" target=\"_blank\"> Answer </a>")}} + </p> + </footer> + </div> </div> + </div> +</div> <!--customize_footer--> {{if .FooterCode }}{{.FooterCode | templateHTML}}{{end}} <!--customize_footer--> diff --git a/ui/template/header.html b/ui/template/header.html index f6529b8d..404df75b 100644 --- a/ui/template/header.html +++ b/ui/template/header.html @@ -191,10 +191,9 @@ <div class="d-flex"> <div class="position-sticky px-3 border-end pt-4 d-none d-xl-block" id="pcSideNav"> {{template "sidenav" . }} - {{end}} </div> <div class="flex-fill w-100"> - + {{end}} </div> </div> </div> diff --git a/ui/template/question.html b/ui/template/question.html index 6d7be332..7680e705 100644 --- a/ui/template/question.html +++ b/ui/template/question.html @@ -20,96 +20,98 @@ --> {{template "header" . }} <div class="d-flex justify-content-center px-0 px-md-4"> - <div class="pt-4 mb-5 row"> - <div class="page-main flex-auto col"> - <div> - <div class="mb-3 d-flex flex-wrap justify-content-between"> - <h5 class="fs-5 text-nowrap mb-3 mb-md-0"> - {{translator $.language "ui.question.all_questions"}} - </h5> - {{template "sort-btns" .}} - </div> - <div class="rounded-0 list-group"> - {{range .data}} - <li class="py-3 px-2 border-start-0 border-end-0 position-relative pointer list-group-item list-group-item-action"> - <div class="d-flex flex-wrap text-secondary small mb-12"> - <div class="d-flex align-items-center text-secondary me-1"> - <a href="{{$.baseURL}}/users/{{.Operator.Username}}"> - <img src="{{$.baseURL}}/users/{{.Operator.Avatar}}" width="24px" height="24px" class="rounded-circle me-1" alt="shuai" data-processed="true"> - <span class="me-1 name-ellipsis" style="max-width: 300px;">{{.Operator.DisplayName}}</span> - </a> - <span class="fw-bold" title="Reputation">{{.Operator.Rank}}</span> + <div class="answer-container"> + <div class="pt-4 mb-5 row"> + <div class="page-main flex-auto col"> + <div> + <div class="mb-3 d-flex flex-wrap justify-content-between"> + <h5 class="fs-5 text-nowrap mb-3 mb-md-0"> + {{translator $.language "ui.question.all_questions"}} + </h5> + {{template "sort-btns" .}} + </div> + <div class="rounded-0 list-group"> + {{range .data}} + <li class="py-3 px-2 border-start-0 border-end-0 position-relative pointer list-group-item list-group-item-action"> + <div class="d-flex flex-wrap text-secondary small mb-12"> + <div class="d-flex align-items-center text-secondary me-1"> + <a href="{{$.baseURL}}/users/{{.Operator.Username}}"> + <img src="{{$.baseURL}}/users/{{.Operator.Avatar}}" width="24px" height="24px" class="rounded-circle me-1" alt="shuai" data-processed="true"> + <span class="me-1 name-ellipsis" style="max-width: 300px;">{{.Operator.DisplayName}}</span> + </a> + <span class="fw-bold" title="Reputation">{{.Operator.Rank}}</span> + </div> + • + <time + class="text-secondary ms-1" + datetime="{{timeFormatISO $.timezone .OperatedAt}}" + title="{{translatorTimeFormatLongDate $.language $.timezone .OperatedAt}}"> + {{translator $.language "ui.question.asked"}} + {{translatorTimeFormat $.language $.timezone .OperatedAt}} + </time> </div> - • - <time - class="text-secondary ms-1" - datetime="{{timeFormatISO $.timezone .OperatedAt}}" - title="{{translatorTimeFormatLongDate $.language $.timezone .OperatedAt}}" - >{{translator $.language "ui.question.asked"}} - {{translatorTimeFormat $.language $.timezone .OperatedAt}} - </time> - </div> - <h5 class="text-wrap text-break"> - {{if $.useTitle }} - <a class="link-dark d-block" href="{{$.baseURL}}/questions/{{.ID}}/{{urlTitle .Title}}" - >{{.Title}}</a - > - {{else}} - <a class="link-dark d-block" href="{{$.baseURL}}/questions/{{.ID}}">{{.Title}}</a> - {{end}} - </h5> + <h5 class="text-wrap text-break"> + {{if $.useTitle }} + <a class="link-dark d-block" href="{{$.baseURL}}/questions/{{.ID}}/{{urlTitle .Title}}" + >{{.Title}}</a + > + {{else}} + <a class="link-dark d-block" href="{{$.baseURL}}/questions/{{.ID}}">{{.Title}}</a> + {{end}} + </h5> - <div class="text-truncate-2 mb-2"> - {{if $.useTitle }} - <a class="d-block small text-body" href="{{$.baseURL}}/questions/{{.ID}}/{{urlTitle .Title}}" - >{{.Description}}</a - > - {{else}} - <a class="d-block small text-body" href="{{$.baseURL}}/questions/{{.ID}}">{{.Description}}</a> - {{end}} - </div> + <div class="text-truncate-2 mb-2"> + {{if $.useTitle }} + <a class="d-block small text-body" href="{{$.baseURL}}/questions/{{.ID}}/{{urlTitle .Title}}" + >{{.Description}}</a + > + {{else}} + <a class="d-block small text-body" href="{{$.baseURL}}/questions/{{.ID}}">{{.Description}}</a> + {{end}} + </div> - <div class="question-tags mb-12"> - {{range .Tags }} - <a - href="{{$.baseURL}}/tags/{{.SlugName}}" - class="badge-tag rounded-1 {{if .Reserved}}badge-tag-reserved{{end}} {{if .Recommend}}badge-tag-required{{end}} me-1" - > - <span class="">{{.SlugName}}</span> - </a> - {{end}} - </div> + <div class="question-tags mb-12"> + {{range .Tags }} + <a + href="{{$.baseURL}}/tags/{{.SlugName}}" + class="badge-tag rounded-1 {{if .Reserved}}badge-tag-reserved{{end}} {{if .Recommend}}badge-tag-required{{end}} me-1" + > + <span class="">{{.SlugName}}</span> + </a> + {{end}} + </div> - <div class="small text-secondary"> - <div class="d-flex align-items-center mt-2 mt-md-0"> - <div class="d-flex align-items-center flex-shrink-0"> - <i class="br bi-hand-thumbs-up-fill me-1"></i> - <span class="fw-medium">{{.VoteCount}}</span> - <span class="ms-1">{{translator $.language "ui.counts.votes"}}</span> - </div> - <div class="d-flex flex-shrink-0 align-items-center ms-3"> - <i class="br bi-chat-square-text-fill me-1"></i> - <span class="fw-medium">{{.AnswerCount}}</span> - <span class="ms-1">{{translator $.language "ui.counts.answers"}}</span> + <div class="small text-secondary"> + <div class="d-flex align-items-center mt-2 mt-md-0"> + <div class="d-flex align-items-center flex-shrink-0"> + <i class="br bi-hand-thumbs-up-fill me-1"></i> + <span class="fw-medium">{{.VoteCount}}</span> + <span class="ms-1">{{translator $.language "ui.counts.votes"}}</span> + </div> + <div class="d-flex flex-shrink-0 align-items-center ms-3"> + <i class="br bi-chat-square-text-fill me-1"></i> + <span class="fw-medium">{{.AnswerCount}}</span> + <span class="ms-1">{{translator $.language "ui.counts.answers"}}</span> + </div> + <span class="summary-stat ms-3 flex-shrink-0"> + <i class="br bi-bar-chart-fill"></i> + <span class="fw-medium ms-1">{{.ViewCount}}</span> + <span class="ms-1">{{translator $.language "ui.counts.views"}}</span> + </span> </div> - <span class="summary-stat ms-3 flex-shrink-0"> - <i class="br bi-bar-chart-fill"></i> - <span class="fw-medium ms-1">{{.ViewCount}}</span> - <span class="ms-1">{{translator $.language "ui.counts.views"}}</span> - </span> </div> - </div> - </li> - {{end}} - </div> - <div class="mt-4 mb-2 d-flex justify-content-center"> - {{template "page" .}} + </li> + {{end}} + </div> + <div class="mt-4 mb-2 d-flex justify-content-center"> + {{template "page" .}} + </div> </div> </div> - </div> - <div class="page-right-side mt-4 mt-xl-0 col"> - {{template "hot-question" .}} + <div class="page-right-side mt-4 mt-xl-0 col"> + {{template "hot-question" .}} + </div> </div> </div> </div> diff --git a/ui/test.html b/ui/test.html new file mode 100644 index 00000000..20cf636c --- /dev/null +++ b/ui/test.html @@ -0,0 +1,443 @@ +<!DOCTYPE html> +<html lang="zh-CN"> + +<head> + <meta charset="utf-8" /> + <title>快速问答</title> + <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover" /> + <meta name="theme-color" /> + <meta name="description" content="" data-rh="true" /> + <meta name="generator" content="Answer 1.4.5 - https://github.com/apache/answer version 568f1e9f"> + + + + <link rel="canonical" href="http://localhost" /> + <link rel="manifest" href="/manifest.json" /> + <link rel="search" type="application/opensearchdescription+xml" href="/opensearch.xml" title="快速问答" /> + <link href="/static/css/main.7900d206.css" rel="stylesheet" /> + <link href="/custom.css" rel="stylesheet" /> + <link rel="icon" type="image/png" href="/favicon.ico" data-rh="true" /> + <link rel="icon" type="image/png" sizes="192x192" href="" data-rh="true" /> + <link rel="apple-touch-icon" type="image/png" href="" data-rh="true" /> + + <script defer="defer" src="/static/js/chunk-mix1.6e509cad.chunk.js"></script> + + <script defer="defer" src="/static/js/chunk-mix2.3ecf665a.chunk.js"></script> + + <script defer="defer" src="/static/js/chunk-mix3.8dafb7ec.chunk.js"></script> + + <script defer="defer" src="/static/js/codemirror.846cdf64.js"></script> + + <script defer="defer" src="/static/js/lezer.85e7351a.js"></script> + + <script defer="defer" src="/static/js/react-dom.90ee5423.chunk.js"></script> + + <script defer="defer" src="/static/js/chunk-nodesInitial.02c0c216.chunk.js"></script> + + <script defer="defer" src="/static/js/main.6fb8e749.js"></script> + + + + <meta property="og:type" content="website" /> + <meta property="og:title" name="twitter:title" content="快速问答" /> + <meta property="og:site_name" content="快速问答" /> + <meta property="og:url" content="http://localhost" /> + <meta property="og:description" content="" /> + <meta property="og:image" itemProp="image primaryImageOfPage" content="/favicon.ico" /> + <meta name="twitter:card" content="summary" /> + <meta name="twitter:domain" content="http://localhost" /> + <meta name="twitter:description" content="" /> + <meta name="twitter:image" content="/favicon.ico" /> + <meta name="go-template"> + + + +</head> + +<body> + + + + <div id="root"> + + <div id="spin-mask"> + <noscript> + <style> + #spin-mask { + display: none !important; + } + + #protect-browser { + display: none; + } + </style> + </noscript> + <style> + @keyframes _doc-spin { + to { + transform: rotate(360deg) + } + } + + #spin-mask { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-color: white; + z-index: 9999; + } + + #spin-container { + position: absolute; + top: 50%; + left: 50%; + transform: translate(-50%, -50%); + } + + #spin-container .spinner { + box-sizing: border-box; + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -.125em; + border: .25rem solid currentColor; + border-right-color: transparent; + color: rgba(108, 117, 125, .75); + border-radius: 50%; + animation: 0.75s linear infinite _doc-spin; + } + + #protect-browser { + padding: 20px; + text-align: center; + } + </style> + <div id="spin-container"> + <div class="spinner"></div> + </div> + <div id="protect-browser"></div> + </div> + + <nav id="header" class="sticky-top theme-colored navbar navbar-expand-lg navbar-dark"> + <div class="w-100 d-flex align-items-center px-3"> + <button aria-controls="navBarContent" type="button" aria-label="Toggle navigation" + class="answer-navBar me-2 navbar-toggler collapsed"> + <span class="navbar-toggler-icon"></span> + </button> + <div class="d-flex justify-content-between align-items-center nav-grow flex-nowrap"> + + <a class="lh-1 me-0 me-sm-3 navbar-brand" href="/"> + 快速问答 + </a> + + </div> + <div class="d-none d-xl-block flex-grow-1 me-auto"> + <div class="d-none d-xl-block ps-0 col-lg-8"> + <form action="/search" class="w-100 maxw-400"> + <input placeholder="Search" name="q" type="search" class="placeholder-search form-control" value=""> + </form> + </div> + + <div class="d-none d-xl-flex justify-content-start justify-content-sm-end col-lg-4"> + + </div> + </div> + </div> + </nav> + <div class="position-relative page-wrap d-flex flex-column flex-fill"> + <div class="d-flex"> + <div class="position-sticky px-3 border-end pt-4 d-none d-xl-block" id="pcSideNav"> + + <div class="flex-column nav nav-pills"> + <a class="nav-link active" href="/questions"> + <i class="br bi-question-circle-fill me-2"></i> + <span>ui.header.nav.question</span> + </a> + <a href="/tags" data-rr-ui-event-key="/tags" class="nav-link"> + <i class="br bi-tags-fill me-2"></i> + <span>ui.header.nav.tag</span> + </a> + <a class="nav-link" href="/users"> + <i class="br bi-people-fill me-2"></i> + <span>ui.header.nav.user</span> + </a> + <a class="nav-link" href="/badges"> + <i class="br bi-people-fill me-2"></i> + <span>ui.header.nav.badges</span> + </a> + </div> + + </div> + <div class="flex-fill w-100"> + + <div class="d-flex justify-content-center px-0 px-md-4"> + <div class="pt-4 mb-5 row"> + <div class="page-main flex-auto col"> + <div> + <div class="mb-3 d-flex flex-wrap justify-content-between"> + <h5 class="fs-5 text-nowrap mb-3 mb-md-0"> + ui.question.all_questions + </h5> + + <div role="group" class="md-show me-2 btn-group btn-group-sm"> + <a role="button" tabindex="0" href="?order=newest" + class="text-capitalize fit-content btn active btn-outline-secondary"> + ui.question.newest + </a> + <a role="button" tabindex="0" href="?order=active" + class="text-capitalize fit-content btn btn-outline-secondary"> + ui.question.active + </a> + + <a role="button" tabindex="0" href="?order=unanswered" + class="text-capitalize fit-content d-none d-md-block btn btn-outline-secondary" + style="border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem;"> + ui.question.unanswered + </a> + <a role="button" tabindex="0" href="?order=frequent" + class="text-capitalize fit-content d-none d-md-block btn btn-outline-secondary" + style="border-top-right-radius: 0.25rem; border-bottom-right-radius: 0.25rem;"> + ui.question.frequent + </a> + <div role="group" class="show dropdown btn-group"> + <button type="button" aria-expanded="true" + class="dropdown-toggle show btn btn-outline-secondary btn-sm"> + ui.btns.more + </button> + <div x-placement="bottom-start" class="dropdown-menu show" data-popper-reference-hidden="false" + data-popper-escaped="false" data-popper-placement="bottom-start" + style="position: absolute; inset: 0px auto auto 0px; transform: translate(0px, 33px);"> + <a href="?order=score" aria-selected="false" class="text-capitalize dropdown-item"> + ui.question.score</a> + </div> + </div> + </div> + + <div class="dropdown"> + <button type="button" id="react-aria8245013726-:r5:" aria-expanded="false" + class="dropdown-toggle btn btn-outline-secondary btn-sm"><i + class="br bi-view-stacked"></i></button> + <div x-placement="bottom-end" aria-labelledby="react-aria8245013726-:r5:" + class="dropdown-menu dropdown-menu-end" data-popper-reference-hidden="false" + data-popper-escaped="false" data-popper-placement="bottom-end" + style="position: absolute; inset: 0px 0px auto auto; transform: translate(0px, 33px);"> + <div class="dropdown-header" role="heading"> + ui.btns.view + </div> + <a aria-selected="true" data-rr-ui-dropdown-item="" class="dropdown-item active" role="button" + tabindex="0" href="#" data-footnote-fixed="true"> + ui.btns.card + </a> + <a aria-selected="false" data-rr-ui-dropdown-item="" class="dropdown-item" role="button" + tabindex="0" href="#" data-footnote-fixed="true"> + ui.btns.compact + </a> + </div> + </div> + + </div> + <div class="rounded-0 list-group"> + + <li + class="py-3 px-2 border-start-0 border-end-0 position-relative pointer list-group-item list-group-item-action"> + <div class="d-flex flex-wrap text-secondary small mb-12"> + <div class="d-flex align-items-center text-secondary me-1"> + <a href="/users/shuai"> + <img + src="/users/https://www.gravatar.com/avatar/862c8fcfd7e97b5c399e65cb1b99b20244d958c5ee1a8a5193e274df6de16262" + width="24px" height="24px" class="rounded-circle me-1" alt="shuai" data-processed="true"> + <span class="me-1 name-ellipsis" style="max-width: 300px;">shuai</span> + </a> + <span class="fw-bold" title="Reputation">1</span> + </div> + • + <time class="text-secondary ms-1" datetime="2025-02-24T16:44:41.000Z" + title="ui.dpmte41.long_dpmte_wit4_ti44e"> + ui.question.asked + ui.dpmte41.long_dpmte + </time> + </div> + + <h5 class="text-wrap text-break"> + + <a class="link-dark d-block" href="/questions/10010000000000002">What is a tag?</a> + + </h5> + + <div class="text-truncate-2 mb-2"> + + <a class="d-block small text-body" href="/questions/10010000000000002">When asking a question, + we need to choose tags. What are tags and why should I use them?</a> + + </div> + + <div class="question-tags mb-12"> + + <a href="/tags/support" class="badge-tag rounded-1 me-1"> + <span class="">support</span> + </a> + + </div> + + <div class="small text-secondary"> + <div class="d-flex align-items-center mt-2 mt-md-0"> + <div class="d-flex align-items-center flex-shrink-0"> + <i class="br bi-hand-thumbs-up-fill me-1"></i> + <span class="fw-medium">0</span> + <span class="ms-1">ui.counts.votes</span> + </div> + <div class="d-flex flex-shrink-0 align-items-center ms-3"> + <i class="br bi-chat-square-text-fill me-1"></i> + <span class="fw-medium">1</span> + <span class="ms-1">ui.counts.answers</span> + </div> + <span class="summary-stat ms-3 flex-shrink-0"> + <i class="br bi-bar-chart-fill"></i> + <span class="fw-medium ms-1">0</span> + <span class="ms-1">ui.counts.views</span> + </span> + </div> + </div> + </li> + + <li + class="py-3 px-2 border-start-0 border-end-0 position-relative pointer list-group-item list-group-item-action"> + <div class="d-flex flex-wrap text-secondary small mb-12"> + <div class="d-flex align-items-center text-secondary me-1"> + <a href="/users/shuai"> + <img + src="/users/https://www.gravatar.com/avatar/862c8fcfd7e97b5c399e65cb1b99b20244d958c5ee1a8a5193e274df6de16262" + width="24px" height="24px" class="rounded-circle me-1" alt="shuai" data-processed="true"> + <span class="me-1 name-ellipsis" style="max-width: 300px;">shuai</span> + </a> + <span class="fw-bold" title="Reputation">1</span> + </div> + • + <time class="text-secondary ms-1" datetime="2025-02-24T16:44:41.000Z" + title="ui.dpmte41.long_dpmte_wit4_ti44e"> + ui.question.asked + ui.dpmte41.long_dpmte + </time> + </div> + + <h5 class="text-wrap text-break"> + + <a class="link-dark d-block" href="/questions/10010000000000004">What is reputation and how do I + earn them?</a> + + </h5> + + <div class="text-truncate-2 mb-2"> + + <a class="d-block small text-body" href="/questions/10010000000000004">I see that each user has + reputation points, What is it and how do I earn them?</a> + + </div> + + <div class="question-tags mb-12"> + + <a href="/tags/support" class="badge-tag rounded-1 me-1"> + <span class="">support</span> + </a> + + </div> + + <div class="small text-secondary"> + <div class="d-flex align-items-center mt-2 mt-md-0"> + <div class="d-flex align-items-center flex-shrink-0"> + <i class="br bi-hand-thumbs-up-fill me-1"></i> + <span class="fw-medium">0</span> + <span class="ms-1">ui.counts.votes</span> + </div> + <div class="d-flex flex-shrink-0 align-items-center ms-3"> + <i class="br bi-chat-square-text-fill me-1"></i> + <span class="fw-medium">1</span> + <span class="ms-1">ui.counts.answers</span> + </div> + <span class="summary-stat ms-3 flex-shrink-0"> + <i class="br bi-bar-chart-fill"></i> + <span class="fw-medium ms-1">0</span> + <span class="ms-1">ui.counts.views</span> + </span> + </div> + </div> + </li> + + </div> + <div class="mt-4 mb-2 d-flex justify-content-center"> + + <ul class="d-inline-flex mb-0 pagination pagination-sm"> + + + + <li class="page-item active"> + <span class="page-link" href="questions?page=1">1 + <span class="visually-hidden">(current)</span> + </span> + </li> + + + + </ul> + + </div> + </div> + </div> + <div class="page-right-side mt-4 mt-xl-0 col"> + + <div class="card"> + <div class="text-nowrap text-capitalize card-header">ui.question.hot_questions</div> + <div class="list-group list-group-flush"> + + + <a class="list-group-item list-group-item-action" href="/questions/10010000000000002"> + + <div class="link-dark">What is a tag?</div> + + <div class="d-flex align-items-center small mt-1 link-secondary"> + <i class="br bi-chat-square-text-fill"></i> + <span class="ms-1">ui.question.x_answers</span> + </div> + + </a> + + + <a class="list-group-item list-group-item-action" href="/questions/10010000000000004"> + + <div class="link-dark">What is reputation and how do I earn them?</div> + + <div class="d-flex align-items-center small mt-1 link-secondary"> + <i class="br bi-chat-square-text-fill"></i> + <span class="ms-1">ui.question.x_answers</span> + </div> + + </a> + + </div> + </div> + + </div> + </div> + </div> + + <footer class="py-3 bg-light w-100"> + <p class="text-center mb-0 small"> + <a class="me-3" href="/tos" data-discover="true"> + ui.admin.legal.terms_of_service.label + </a> + <a href="/privacy" data-discover="true"> + ui.admin.legal.privacy_policy.label + </a> + </p> + <p class="text-center mb-0 small text-secondary"> + ui.footer.build_on + </p> + </footer> + </div> + </div> + </div> + </div> +</body> +</html> \ No newline at end of file
