commit 9937b0b384e974f657006415d169a2f1b4129d5a Author: 李亚楠 Date: Sun Mar 12 17:40:50 2023 +0800 首次提交,使用duge搭建静态书签页 diff --git a/.hugo_build.lock b/.hugo_build.lock new file mode 100644 index 0000000..e69de29 diff --git a/.idea/.gitignore b/.idea/.gitignore new file mode 100644 index 0000000..b58b603 --- /dev/null +++ b/.idea/.gitignore @@ -0,0 +1,5 @@ +# Default ignored files +/shelf/ +/workspace.xml +# Editor-based HTTP Client requests +/httpRequests/ diff --git a/.idea/modules.xml b/.idea/modules.xml new file mode 100644 index 0000000..e0e120b --- /dev/null +++ b/.idea/modules.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/.idea/导航工具.iml b/.idea/导航工具.iml new file mode 100644 index 0000000..0c8867d --- /dev/null +++ b/.idea/导航工具.iml @@ -0,0 +1,12 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed 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. diff --git a/README.md b/README.md new file mode 100644 index 0000000..afbe938 --- /dev/null +++ b/README.md @@ -0,0 +1,224 @@ +Hugo + +A Fast and Flexible Static Site Generator built with love by [bep](https://github.com/bep), [spf13](http://spf13.com/) and [friends](https://github.com/gohugoio/hugo/graphs/contributors) in [Go][]. + +[Website](https://gohugo.io) | +[Forum](https://discourse.gohugo.io) | +[Documentation](https://gohugo.io/getting-started/) | +[Installation Guide](https://gohugo.io/getting-started/installing/) | +[Contribution Guide](CONTRIBUTING.md) | +[Twitter](https://twitter.com/gohugoio) + +[![GoDoc](https://godoc.org/github.com/gohugoio/hugo?status.svg)](https://godoc.org/github.com/gohugoio/hugo) +[![Tests on Linux, MacOS and Windows](https://github.com/gohugoio/hugo/workflows/Test/badge.svg)](https://github.com/gohugoio/hugo/actions?query=workflow%3ATest) +[![Go Report Card](https://goreportcard.com/badge/github.com/gohugoio/hugo)](https://goreportcard.com/report/github.com/gohugoio/hugo) + +## Overview + +Hugo is a static HTML and CSS website generator written in [Go][]. +It is optimized for speed, ease of use, and configurability. +Hugo takes a directory with content and templates and renders them into a full HTML website. + +Hugo relies on Markdown files with front matter for metadata, and you can run Hugo from any directory. +This works well for shared hosts and other systems where you don’t have a privileged account. + +Hugo renders a typical website of moderate size in a fraction of a second. +A good rule of thumb is that each piece of content renders in around 1 millisecond. + +Hugo is designed to work well for any kind of website including blogs, tumbles, and docs. + +#### Supported Architectures + +Currently, we provide pre-built Hugo binaries for Windows, Linux, FreeBSD, NetBSD, DragonFly BSD, OpenBSD, macOS (Darwin), and [Android](https://gist.github.com/bep/a0d8a26cf6b4f8bc992729b8e50b480b) for x64, i386 and ARM architectures. + +Hugo may also be compiled from source wherever the Go compiler tool chain can run, e.g. for other operating systems including Plan 9 and Solaris. + +**Complete documentation is available at [Hugo Documentation](https://gohugo.io/getting-started/).** + +## Choose How to Install + +If you want to use Hugo as your site generator, simply install the Hugo binaries. +The Hugo binaries have no external dependencies. + +To contribute to the Hugo source code or documentation, you should [fork the Hugo GitHub project](https://github.com/gohugoio/hugo#fork-destination-box) and clone it to your local machine. + +Finally, you can install the Hugo source code with `go`, build the binaries yourself, and run Hugo that way. +Building the binaries is an easy task for an experienced `go` getter. + +### Install Hugo as Your Site Generator (Binary Install) + +Use the [installation instructions in the Hugo documentation](https://gohugo.io/getting-started/installing/). + +### Build and Install the Binaries from Source (Advanced Install) + +#### Prerequisite Tools + +* [Git](https://git-scm.com/) +* [Go (we test it with the last 2 major versions; but note that Hugo 0.81.0 only builds with >= Go 1.16.)](https://golang.org/dl/) + +#### Fetch from GitHub + +Since Hugo 0.48, Hugo uses the Go Modules support built into Go 1.11 to build. The easiest is to clone Hugo in a directory outside of `GOPATH`, as in the following example: + +```bash +mkdir $HOME/src +cd $HOME/src +git clone https://github.com/gohugoio/hugo.git +cd hugo +go install +``` + +**If you are a Windows user, substitute the `$HOME` environment variable above with `%USERPROFILE%`.** + +If you want to compile with Sass/SCSS support use `--tags extended` and make sure `CGO_ENABLED=1` is set in your go environment. If you don't want to have CGO enabled, you may use the following command to temporarily enable CGO only for hugo compilation: + +```bash +CGO_ENABLED=1 go install --tags extended +``` + +## The Hugo Documentation + +The Hugo documentation now lives in its own repository, see https://github.com/gohugoio/hugoDocs. But we do keep a version of that documentation as a `git subtree` in this repository. To build the sub folder `/docs` as a Hugo site, you need to clone this repo: + +```bash +git clone git@github.com:gohugoio/hugo.git +``` +## Contributing to Hugo + +For a complete guide to contributing to Hugo, see the [Contribution Guide](CONTRIBUTING.md). + +We welcome contributions to Hugo of any kind including documentation, themes, +organization, tutorials, blog posts, bug reports, issues, feature requests, +feature implementations, pull requests, answering questions on the forum, +helping to manage issues, etc. + +The Hugo community and maintainers are [very active](https://github.com/gohugoio/hugo/pulse/monthly) and helpful, and the project benefits greatly from this activity. + +### Asking Support Questions + +We have an active [discussion forum](https://discourse.gohugo.io) where users and developers can ask questions. +Please don't use the GitHub issue tracker to ask questions. + +### Reporting Issues + +If you believe you have found a defect in Hugo or its documentation, use +the GitHub issue tracker to report the problem to the Hugo maintainers. +If you're not sure if it's a bug or not, start by asking in the [discussion forum](https://discourse.gohugo.io). +When reporting the issue, please provide the version of Hugo in use (`hugo version`). + +### Submitting Patches + +The Hugo project welcomes all contributors and contributions regardless of skill or experience level. +If you are interested in helping with the project, we will help you with your contribution. +Hugo is a very active project with many contributions happening daily. + +We want to create the best possible product for our users and the best contribution experience for our developers, +we have a set of guidelines which ensure that all contributions are acceptable. +The guidelines are not intended as a filter or barrier to participation. +If you are unfamiliar with the contribution process, the Hugo team will help you and teach you how to bring your contribution in accordance with the guidelines. + +For a complete guide to contributing code to Hugo, see the [Contribution Guide](CONTRIBUTING.md). + +[Go]: https://golang.org/ +[Hugo Documentation]: https://gohugo.io/overview/introduction/ + +## Dependencies + +Hugo stands on the shoulder of many great open source libraries. + +If you run `hugo env -v` you will get a complete and up to date list. + +In Hugo 0.89.0 that list is, in lexical order: + +``` +cloud.google.com/go/storage="v1.10.0" +cloud.google.com/go="v0.87.0" +github.com/Azure/azure-pipeline-go="v0.2.2" +github.com/Azure/azure-storage-blob-go="v0.9.0" +github.com/BurntSushi/locker="v0.0.0-20171006230638-a6e239ea1c69" +github.com/BurntSushi/toml="v0.3.1" +github.com/PuerkitoBio/purell="v1.1.1" +github.com/PuerkitoBio/urlesc="v0.0.0-20170810143723-de5bf2ad4578" +github.com/alecthomas/chroma="v0.9.4" +github.com/armon/go-radix="v1.0.0" +github.com/aws/aws-sdk-go="v1.41.14" +github.com/bep/debounce="v1.2.0" +github.com/bep/gitmap="v1.1.2" +github.com/bep/godartsass="v0.12.0" +github.com/bep/golibsass="v1.0.0" +github.com/bep/gowebp="v0.1.0" +github.com/bep/tmc="v0.5.1" +github.com/cli/safeexec="v1.0.0" +github.com/cpuguy83/go-md2man/v2="v2.0.0" +github.com/disintegration/gift="v1.2.1" +github.com/dlclark/regexp2="v1.4.0" +github.com/dustin/go-humanize="v1.0.0" +github.com/evanw/esbuild="v0.13.12" +github.com/fsnotify/fsnotify="v1.5.1" +github.com/getkin/kin-openapi="v0.80.0" +github.com/ghodss/yaml="v1.0.0" +github.com/go-openapi/jsonpointer="v0.19.5" +github.com/go-openapi/swag="v0.19.5" +github.com/gobuffalo/flect="v0.2.3" +github.com/gobwas/glob="v0.2.3" +github.com/gohugoio/go-i18n/v2="v2.1.3-0.20210430103248-4c28c89f8013" +github.com/gohugoio/locales="v0.14.0" +github.com/gohugoio/localescompressed="v0.14.0" +github.com/golang/groupcache="v0.0.0-20200121045136-8c9f03a8e57e" +github.com/golang/protobuf="v1.5.2" +github.com/google/go-cmp="v0.5.6" +github.com/google/uuid="v1.1.2" +github.com/google/wire="v0.4.0" +github.com/googleapis/gax-go/v2="v2.0.5" +github.com/googleapis/gax-go="v2.0.2+incompatible" +github.com/gorilla/websocket="v1.4.2" +github.com/inconshreveable/mousetrap="v1.0.0" +github.com/jdkato/prose="v1.2.1" +github.com/jmespath/go-jmespath="v0.4.0" +github.com/kyokomi/emoji/v2="v2.2.8" +github.com/mailru/easyjson="v0.0.0-20190626092158-b2ccc519800e" +github.com/mattn/go-ieproxy="v0.0.1" +github.com/mattn/go-isatty="v0.0.14" +github.com/mattn/go-runewidth="v0.0.9" +github.com/miekg/mmark="v1.3.6" +github.com/mitchellh/hashstructure="v1.1.0" +github.com/mitchellh/mapstructure="v1.4.2" +github.com/muesli/smartcrop="v0.3.0" +github.com/niklasfasching/go-org="v1.5.0" +github.com/olekukonko/tablewriter="v0.0.5" +github.com/pelletier/go-toml/v2="v2.0.0-beta.3.0.20210727221244-fa0796069526" +github.com/pkg/errors="v0.9.1" +github.com/rogpeppe/go-internal="v1.8.0" +github.com/russross/blackfriday/v2="v2.0.1" +github.com/russross/blackfriday="v1.5.3-0.20200218234912-41c5fccfd6f6" +github.com/rwcarlsen/goexif="v0.0.0-20190401172101-9e8deecbddbd" +github.com/sanity-io/litter="v1.5.1" +github.com/sass/libsass="3.6.5" +github.com/shurcooL/sanitized_anchor_name="v1.0.0" +github.com/spf13/afero="v1.6.0" +github.com/spf13/cast="v1.4.1" +github.com/spf13/cobra="v1.2.1" +github.com/spf13/fsync="v0.9.0" +github.com/spf13/jwalterweatherman="v1.1.0" +github.com/spf13/pflag="v1.0.5" +github.com/tdewolff/minify/v2="v2.9.22" +github.com/tdewolff/parse/v2="v2.5.21" +github.com/webmproject/libwebp="v1.2.0" +github.com/yuin/goldmark-highlighting="v0.0.0-20200307114337-60d527fdb691" +github.com/yuin/goldmark="v1.4.2" +go.opencensus.io="v0.23.0" +gocloud.dev="v0.20.0" +golang.org/x/image="v0.0.0-20210220032944-ac19c3e999fb" +golang.org/x/net="v0.0.0-20210614182718-04defd469f4e" +golang.org/x/oauth2="v0.0.0-20210628180205-a41e5a781914" +golang.org/x/sync="v0.0.0-20210220032951-036812b2e83c" +golang.org/x/sys="v0.0.0-20210908233432-aa78b53d3365" +golang.org/x/text="v0.3.7" +golang.org/x/xerrors="v0.0.0-20200804184101-5ec99f83aff1" +google.golang.org/api="v0.51.0" +google.golang.org/genproto="v0.0.0-20210716133855-ce7ef5c701ea" +google.golang.org/grpc="v1.39.0" +google.golang.org/protobuf="v1.27.1" +gopkg.in/yaml.v2="v2.4.0" +``` + diff --git a/config.toml b/config.toml new file mode 100644 index 0000000..6a0c0b6 --- /dev/null +++ b/config.toml @@ -0,0 +1,46 @@ +baseURL = "https://nav.dreamlyn.cn" +languageCode = "zh-CN" +title = "牧尘的网址导航" +theme = "WebStack" +preserveTaxonomyNames = true +disablePathToLower = true +hasCJKLanguage = true +publishDir = "\\\\192.168.31.206\\容器相关\\stable\\nginx\\nginx_webstack\\www\\webstack" # 站点静态文件保存目录 + + +[params] +author = "lyn" +description = "牧尘的网址导航 | 最好用的导航" +# upload = "https://www.yuque.com/forms/share/1a1fee15-f7a9-4ee6-9dd4-b0ba9fef1871" # 左侧导航栏的"网站提交" +about = "https://www.dreamlyn.cn/about" # 左侧导航栏的"关于导航"页面(./about) +enablePreLoad = true # 网站完全打开前预加载动画 +textPreLoad = "牧尘的网址导航" # 预加载的动画文字, 只有当enablePreLoad=true时生效 +expandSidebar = true # 默认展开左侧边导航栏 +logosPath = "assets/images/logos" # 网站每个导航地址logo存放地址 +defaultLogo = "assets/images/logos/default.webp" # logo图片资源不存在或者错误时, 默认显示的logo; 该参数如为空,将会一直加载对应的logo,直至成功 +nightMode = false # 默认站点为深色(夜间)模式 +yiyan = true # 默认启用一言服务 + +[params.seo] +baiduhmid = 'efccc04cb44fc49faddac5876180b369' # 百度统计 hm.src 的 ID +baiduSiteVer = 'codeva-cCAOSG8MBO' # 百度HTML标签验证(baidu-site-verification) +tj51laid = '' # 51.LA 网站统计 +tj51lack = '' + +[params.qweather] +key = "" + +[params.images] +favicon = "assets/images/favicon.png" +searchImageL = "assets/images/bg-dna.jpg" # 搜索部分浅色背景图 +searchImageD = "assets/images/bg-dna.jpg" # 搜索部分深色背景图 +logoExpandLight = "assets/images/bt8-expand-light.png" +logoExpandDark = "assets/images/bt8-expand-dark.png" +logoCollapseLight = "assets/images/bt.png" +logoCollapseDark = "assets/images/bt.png" + +[markup.goldmark.renderer] +unsafe = true + +[params.footer] +copyright = '本站内容源自互联网,如有内容侵犯了你的权益,请联系删除相关内容,联系邮箱:shumlab@foxmail.com
© 2021 - {year} By [WebStack-Hugo](https://github.com/shenweiyan/WebStack-Hugo) | [Bio IT 爱好者](https://www.bioitee.com/) | [粤ICP备16023717号](http://beian.miit.gov.cn/)
' diff --git a/content/about.md b/content/about.md new file mode 100644 index 0000000..9fc6cf2 --- /dev/null +++ b/content/about.md @@ -0,0 +1,33 @@ +--- +title: "关于网站" +date: 2020-07-28T19:27:08+08:00 +draft: false +--- + +#### 这是 Hugo 版 WebStack 主题 + +本项目是基于**纯静态**的网址导航网站 [webstack.cc](https://github.com/WebStackPage/WebStackPage.github.io) 制作的 [Hugo](https://gohugo.io/) 主题,其中部分代码参考了以下几个开源项目:

+ +- [https://github.com/liutongxu/liutongxu.github.io](https://github.com/liutongxu/liutongxu.github.io) +- [https://github.com/iplaycode/webstack-hugo](https://github.com/iplaycode/webstack-hugo) + +
+ +主题安装后,将 exampleSite 目录下的文件复制到 hugo 站点根目录,根据需要把 config.toml 的一些信息改成自己的,导航的网址信息可通过 data 目录下 webstack.yml 修改。 + +这是一个开源的公益项目,你可以拿来制作自己的网址导航,也可以做与导航无关的网站。 + +WebStack 有非常多的魔改版本,这是其中一个。如果你对本主题进行了一些个性化调整,欢迎来本项目中 issue 分享一下! + +
+ +#### 主题开源地址 + +[https://github.com/shenweiyan/webstack-hugo](https://github.com/shenweiyan/webstack-hugo) + +
+ +#### 主题演示地址 + +- [https://nav.bioitee.com](https://nav.bioitee.com) +- [https://shenweiyan.github.io/webstack-hugo](https://shenweiyan.github.io/webstack-hugo) diff --git a/data/friendlinks.yml b/data/friendlinks.yml new file mode 100644 index 0000000..e699f1a --- /dev/null +++ b/data/friendlinks.yml @@ -0,0 +1,6 @@ +- title: 牧尘的网络日志 + url: https://www.dreamlyn.cn/ + description: 牧尘的网络日志 +- title: GK969 + url: https://gk969.com/ + description: GK969 diff --git a/data/headers.yml b/data/headers.yml new file mode 100644 index 0000000..fbbf59a --- /dev/null +++ b/data/headers.yml @@ -0,0 +1,16 @@ +- item: 首页 + icon: fa fa-home + link: "./" + +- item: 作者 + icon: fa fa-book + link: https://www.dreamlyn.cn + +#- item: 配置 +# icon: fa fa-cog +# link: "" +# list: +# - name: 源码 +# url: "#" +# - name: 图标 +# url: "#" diff --git a/data/webstack.yml b/data/webstack.yml new file mode 100644 index 0000000..6c882cf --- /dev/null +++ b/data/webstack.yml @@ -0,0 +1,368 @@ +--- + +- taxonomy: 常用推荐 + icon: far fa-star + links: + - title: 牧尘的网络日志 + logo: muchen.png + url: https://www.dreamlyn.cn + description: 牧尘的网络日志 + - title: 游刃智能机器人 + logo: muchen.png + url: https://bot.yr-tek.cn/index + description: 游刃智能机器人 - 基于chatgpt + - title: 个人知识库 + logo: outline.png + url: https://outline.dreamlyn.cn:8443/ + description: Outline - 个人知识库 + - title: 碎片知识管理 + logo: memos.png + url: https://memos.dreamlyn.cn:8443 + description: Memos - 碎片知识管理 + - title: Plex + logo: plex.png + url: http://plex.dreamlyn.cn:880 + description: Plex - 流媒体服务 + - title: Gitea + logo: gitea.png + url: https://gitea.dreamlyn.cn:8443 + description: Gitea - 版本管理工具 + - title: yApi + logo: yapi.png + url: http://yapi.dreamlyn.cn:880 + description: yApi - 接口管理工具 + - title: 个人书签 + logo: linkace.png + url: https://linkace.dreamlyn.cn:8443/dashboard + description: Linkace - 个人书签 + - title: Jenkins + logo: jenkins.png + url: http://jenkins.dreamlyn.cn:880 + description: Jenkins - 自动构建工具 + - title: n8n + logo: n8n.png + url: http://n8n.dreamlyn.cn:880 + description: n8n + - title: FreshRSS + logo: freshrss.png + url: https://freshrss.dreamlyn.cn:8443 + description: FreshRSS - RSS仓库 + - title: RSSHub + logo: rsshub.png + url: https://rsshub.dreamlyn.cn:8443 + description: RSSHub - RSS工具 + +- taxonomy: 服务管理 + icon: fas fa-server fa-lg + list: + - term: NAS服务 + links: + - title: 群晖 + logo: synology-dsm.png + url: http://nas.dreamlyn.cn:880/ + description: 群晖服务器 + - title: 威联通 + logo: qnap.png + url: http://qnap.dreamlyn.cn:880/ + description: 威联通服务器 + - title: 群晖TR + logo: transmission.png + url: http://ntr.dreamlyn.cn:880/ + description: 群晖TR + - title: 威联通TR + logo: transmission.png + url: http://qtr.dreamlyn.cn:880/ + description: 威联通TR + - title: 威联通QB + logo: qbittorrent.png + url: http://qb.dreamlyn.cn:880/ + description: 威联通QB + - term: 管理工具 + links: + - title: traefik + logo: traefik.png + url: http://traefik.dreamlyn.cn:880/ + description: 反向代理工具 + - title: Portainer + logo: portainer.png + url: http://portainer.dreamlyn.cn:880 + description: 容器管理工具 + - title: Keycloak + logo: keycloak.png + url: https://keycloak.dreamlyn.cn:8443 + description: 单点登录 + - title: Minio + logo: minio.png + url: https://minio.dreamlyn.cn:9001 + description: 对象存储服务 + - term: 后台管理 + links: + - title: 阿里云 + logo: 阿里云.jpg + url: https://home.console.aliyun.com/home/dashboard/ProductAndService + description: 上云就上阿里云。 + - title: 腾讯云 + logo: 腾讯云.jpg + url: https://console.cloud.tencent.com/ + description: 产业智变,云启未来。 + - title: 花生壳管理 + logo: oray.ico + url: https://console.oray.com/ + description: 域名管理。 + - title: DNSPod + logo: 'dnspod.ico' + url: https://console.dnspod.cn/ + description: DNS管理。 + - title: 百度智能云 + logo: 百度智能云.ico + url: https://console.bce.baidu.com/ + description: 百度智能云。 + - title: 微信公众平台 + logo: 微信公众号.png + url: https://mp.weixin.qq.com/ + description: 微信公众平台。 + - title: 字节跳动小程序 + logo: 字节跳动小程序.ico + url: https://microapp.bytedance.com/ + description: 字节跳动小程序管理。 + - title: QQ小程序 + logo: 'QQ小程序.ico' + url: https://q.qq.com/ + description: QQ小程序管理。 + - title: 聚合数据 + logo: 聚合数据.ico + url: https://www.juhe.cn/ + description: 聚合数据。 + - title: 祢豆子 + logo: vpn.png + url: https://xn--i8sr31es4m.com/#/dashboard + description: 祢豆子。 + - title: natfrp + logo: chronograf.png + url: https://www.natfrp.com/ + description: natfrp。 + +- taxonomy: 工具资料 + icon: fas fa-flask fa-lg + list: + - term: 开源资料 + links: + - title: Element-UI + logo: elementui.ico + url: https://element.eleme.cn/#/zh-CN/component/installation + description: Element-UI。 + - title: Docsify + logo: docsify.svg + url: https://docsify.js.org/#/ + description: Docsify - 文档制作神器。 + + - title: Hutool + logo: hutool.ico + url: https://hutool.cn/docs/#/ + description: Hutool。 + - title: Vue.js + logo: vue.png + url: https://cn.vuejs.org/ + description: Vue.js - 渐进式JS框架。 + - title: UniApp + logo: uniapp.png + url: https://uniapp.dcloud.net.cn/ + description: UniApp。 + - title: Vant + logo: vant.png + url: https://vant-contrib.gitee.io/vant/#/zh-CN + description: Vant。 + - title: Animate + logo: animate.png + url: https://animate.style/ + description: Animate。 + - title: Logback + logo: logback.png + url: https://logbackcn.gitbook.io/logback/ + description: Logback。 + - title: Easyexcel + logo: excel.png + url: https://easyexcel.opensource.alibaba.com/docs/current/ + description: Easyexcel。 + - title: Cesium Api + logo: cesium.png + url: https://cesium.com/learn/cesiumjs/ref-doc/ + description: Cesium Api - 3D gis平台。 + - term: 常用工具 + links: + - title: FreeSSL + logo: FreeSSL.png + url: https://freessl.cn/ + description: FreeSSL - 免费申请SSL证书。 + - title: SSL/TLS安全评估报告 + logo: myssl.png + url: https://myssl.com/ + description: 检测网站的SSL证书是否安全,是否存在漏洞,是否达到SSL行业标准。 + - title: Maven仓库 + logo: maven.ico + url: https://mvnrepository.com/ + description: Maven仓库。 + - title: Banner生成 + logo: graylog.png + url: http://patorjk.com/software/taag/#p=display&f=Isometric2&t=Industry + description: Banner生成工具。 + - title: Diagrams + logo: diagrams.png + url: https://www.diagrams.net/ + description: 绘制框图等。 + - title: SMS-Active + logo: sms-active.png + url: https://sms-activate.org/ + description: 虚拟短信平台。 + + - term: 站长工具 + links: + - title: Google收录 + logo: google.png + url: https://search.google.com/search-console + description: Google收录。 + - title: Google分析 + logo: google.png + url: https://analytics.google.com/analytics/web/#/p347091361/reports/intelligenthome + description: Google分析。 + - title: 百度收录 + logo: baidu.png + url: https://ziyuan.baidu.com/dashboard + description: 百度收录。 + - title: 百度分析 + logo: baidu.png + url: https://tongji.baidu.com/main/overview/10000276554/overview/index?siteId=17073054 + description: 百度分析。 + - title: chinaz + logo: c.png + url: https://tool.chinaz.com/ + description: chinaz。 + - title: 藏推刷流量 + logo: checkmk.png + url: http://uv.zangtui.com/home/Agent + description: 藏推刷流量。 + +- taxonomy: 人工智能 + icon: fa fa-code fa-lg + list: + - term: 官方网站 + links: + - title: OpenAi + logo: OpenAi.png + url: https://platform.openai.com/overview + description: Welcome to OpenAI. + - term: 三方素材 + links: + - title: Civitai + logo: Civitai.ico + url: https://civitai.com/ + description: Civitai - Stable Diffusion模型库. +- taxonomy: 素材资源 + icon: far fa-folder-open fa-lg + list: + - term: 图标素材 + links: + - title: Iconfinder + logo: Iconfinder.png + url: https://www.iconfinder.com + description: 2,100,000+ free and premium vector icons. + - title: iconfont + logo: iconfont.png + url: http://www.iconfont.cn/ + description: 阿里巴巴矢量图标库。 + - title: Font Awesome Icon + logo: fontawesomeicon.png + url: https://fontawesome.com/icons/ + description: The complete set of 675 icons in Font Awesome. + - title: Icon Archive + logo: iconarchive.png + url: http://www.iconarchive.com/ + description: Search 590,912 free icons. + - title: FindIcons + logo: FindIcons.png + url: https://findicons.com/ + description: Search through 300,000 free icons. + - title: Material icons + logo: Materialicons.png + url: https://material.io/icons/ + description: Access over 900 material system icons, available in a variety of sizes and densities, and as a web font. + - title: Fontawesome + logo: UICloud.png + url: https://fontawesome.dashgame.com/ + description: fontawesome + + - term: 平面素材 + links: + - title: 图怪兽 + logo: tuguaishou.ico + url: https://818ps.com/ + description: 在线图片编辑神器。 + - title: 千库网 + logo: qianku.png + url: http://588ku.com/ + description: 免费 png 图片背景素材下载。 + - title: 免费图片 + logo: 语雀话题.png + url: https://pixabay.com/zh/ + description: 无版权免费图片。 + - title: 图片去背景 + logo: webkit.png + url: https://www.remove.bg/zh + description: 在线抠图软件 - 图片去背景。 + - title: RGB颜色对照 + logo: xiyou.png + url: https://tool.oschina.net/commons?type=3 + description: RGB颜色对照。 + +- taxonomy: 其他常用 + icon: fas fa-record-vinyl fa-lg + list: + - term: PT站点 + links: + - title: CHDBits + logo: chdbits.ico + url: https://chdbits.co/index.php + description: CHDBits + - title: M-Team + logo: m-team.ico + url: https://kp.m-team.cc/index.php + description: M-Team + - title: 北洋园 + logo: tjupt.png + url: https://www.tjupt.org/index.php + description: 北洋园 + - title: BTSCHOOL + logo: btschool.ico + url: https://pt.btschool.club/ + description: BTSCHOOL + - title: 海胆之家 + logo: haidan.ico + url: https://www.haidan.video/index.php + description: 海胆之家 + - title: NicePT + logo: nicept.ico + url: https://www.nicept.net/index.php + description: NicePT + - title: PT时间 + logo: PTTime.ico + url: https://www.pttime.org/index.php + description: PT时间 + - title: PT之友俱乐部 + logo: PTerClub.ico + url: https://pterclub.com/ + description: PT之友俱乐部 + + - term: 邮箱登录 + links: + - title: 公司邮箱 + logo: 163.ico + url: https://qy.163.com/login/ + description: 公司邮箱 + - title: Lark邮箱 + logo: lark.png + url: https://dreamlyn.larksuite.com/mail + description: Lark邮箱 + - title: QQ邮箱 + logo: qqmail.png + url: https://mail.qq.com/ + description: QQ邮箱 diff --git a/hugo.exe b/hugo.exe new file mode 100644 index 0000000..01cfccc Binary files /dev/null and b/hugo.exe differ diff --git a/themes/WebStack/.gitattributes b/themes/WebStack/.gitattributes new file mode 100644 index 0000000..6424459 --- /dev/null +++ b/themes/WebStack/.gitattributes @@ -0,0 +1 @@ +*.js linguist-language=Golang diff --git a/themes/WebStack/.github/workflows/PushGiteeCoding.yml b/themes/WebStack/.github/workflows/PushGiteeCoding.yml new file mode 100644 index 0000000..dc8e1d1 --- /dev/null +++ b/themes/WebStack/.github/workflows/PushGiteeCoding.yml @@ -0,0 +1,53 @@ +name: Sync-Gitee-Coding + +on: + push: + branches: [main] + +jobs: + push-to-mirror: + runs-on: ubuntu-latest + steps: + - name: Clone + run: | + git config --global init.defaultBranch main + git init + git remote add origin https://${GITHUB_USERNAME}:${GITHUB_TOKEN}@github.com/${GITHUB_REPOSITORY}.git + git fetch --all + for branch in `git branch -a | grep remotes | grep -v HEAD`; do + git branch --track ${branch##*/} $branch + done + env: + GITHUB_REPOSITORY: shenweiyan/WebStack-Hugo + GITHUB_USERNAME: ${{ secrets.GH_USERNAME }} + GITHUB_TOKEN: ${{ secrets.GH_TOKEN }} + + - name: Push to Coding + run: | + echo "stop!" + #remote_repo="https://${CODING_USERNAME}:${CODING_PASSWORD}@e.coding.net/${CODING_REPOSITORY}.git" + #git remote add coding "${remote_repo}" + #git show-ref # useful for debugging + #git branch --verbose + # publish all + #git push --all --force coding + #git push --tags --force coding + env: + CODING_REPOSITORY: shumlab/webstack/WebStack-Hugo + #CODING_USERNAME: ${{ secrets.CODING_USERNAME }} + #CODING_PASSWORD: ${{ secrets.CODING_PASSWORD }} + + - name: Push to Gitee + run: | + #echo "stop!" + remote_repo="https://${GITEE_USERNAME}:${GITEE_PASSWORD}@gitee.com/${GITEE_REPOSITORY}.git" + git remote add gitee "${remote_repo}" + git show-ref # useful for debugging + git branch --verbose + # publish all + git push --all --force gitee + git push --tags --force gitee + env: + GITEE_REPOSITORY: shenweiyan/WebStack-Hugo + GITEE_USERNAME: ${{ secrets.GITEE_USERNAME }} + GITEE_PASSWORD: ${{ secrets.GITEE_PASSWORD }} diff --git a/themes/WebStack/LICENSE b/themes/WebStack/LICENSE new file mode 100644 index 0000000..faff36e --- /dev/null +++ b/themes/WebStack/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2020 YOUR_NAME_HERE + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/themes/WebStack/README.md b/themes/WebStack/README.md new file mode 100644 index 0000000..605684b --- /dev/null +++ b/themes/WebStack/README.md @@ -0,0 +1,86 @@ +# 一个基于 Hugo 的静态响应式网址导航主题 + +本项目是基于**纯静态**的网址导航网站 [webstack.cc](https://github.com/WebStackPage/WebStackPage.github.io) 制作的 [Hugo](https://gohugo.io/) 主题,是一个基于 Hugo 的静态响应式网址导航主题。
+ +## 主题开源地址 + +- GitHub:[https://github.com/shenweiyan/WebStack-Hugo](https://github.com/shenweiyan/WebStack-Hugo) +- Gitee:[https://gitee.com/shenweiyan/WebStack-Hugo](https://gitee.com/shenweiyan/WebStack-Hugo) + +## 主题演示地址 + +- [https://nav.bioitee.com](https://nav.bioitee.com) +- [https://bioit.top](https://bioit.top) +- [https://so.gd.cn](https://so.gd.cn) + + +## 特色功能 + +这是 Hugo 版 WebStack 主题。可以借助 Github Pages 或者 Coding 直接托管部署,无需服务器。 + +总体说一下特点: + +- 采用了一直以来最喜欢的 hugo 部署方式,方便高效。 +- 主要的配置信息都集成到了 config.toml,一键完成各种自定义的配置。 +- 导航的各个信息都集成在 data/webstack.yml 文件中,方便后续增删改动。 +``` +- taxonomy: 科研办公 + icon: fas fa-flask fa-lg + list: + - term: 生物信息 + links: + - title: NCBI + logo: ncbi.jpg + url: https://www.ncbi.nlm.nih.gov/ + description: National Center for Biotechnology Information. + - title: Bioconda + logo: bioconda.jpg + url: https://anaconda.org/bioconda/ + description: "Bioconda :: Anaconda.org." + - term: 云服务器 + links: + - title: 阿里云 + logo: 阿里云.jpg + url: https://www.aliyun.com/ + description: 上云就上阿里云。 + - title: 腾讯云 + logo: 腾讯云.jpg + url: https://cloud.tencent.com/ + description: 产业智变,云启未来。 +``` +- 做了手机电脑自适应以及夜间模式。 +- 增加了搜索功能,以及下拉的热词选项(基于百度 API)。 +- 增加了一言、和风天气的 API。 + +## 使用说明 + +这是一个开源的公益项目,你可以拿来制作自己的网址导航,也可以做与导航无关的网站。 + +WebStack 有非常多的魔改版本,这是其中一个。如果你对本主题进行了一些个性化调整,欢迎来本项目中 issue 分享一下! + + +## 安装说明 + +关于 Windows/Linux 下详细的安装与使用说明,请参考文档: + +[WebStack-Hugo | 一个静态响应式导航主题](https://www.yuque.com/shenweiyan/cookbook/webstack-hugo) - [语雀](https://www.yuque.com/shenweiyan) + + +## 感谢 + +本主题的部分代码参考了以下几个开源项目,特此感谢。 + +- [WebStackPage/WebStackPage.github.io](https://github.com/WebStackPage/WebStackPage.github.io) +- [liutongxu/liutongxu.github.io](https://github.com/liutongxu/liutongxu.github.io) +- [iplaycode/webstack-hugo](https://github.com/iplaycode/webstack-hugo) + +感谢以下所有朋友对本主题所做出的贡献。 + +[@yanbeiyinhanghang](https://github.com/yinhanghang) [@jetsung](https://github.com/jetsung) + +## 赞赏 + +如果你觉得本项目对你有所帮助,欢迎请作者喝杯热咖啡 >.< + +![donate-wecaht-aliapy](https://user-images.githubusercontent.com/26101369/212630361-aa393be8-581e-4a97-bfe2-256e883791fb.jpg) + diff --git a/themes/WebStack/layouts/404.html b/themes/WebStack/layouts/404.html new file mode 100644 index 0000000..5823ff9 --- /dev/null +++ b/themes/WebStack/layouts/404.html @@ -0,0 +1 @@ +

找不到页面

diff --git a/themes/WebStack/layouts/_default/single.html b/themes/WebStack/layouts/_default/single.html new file mode 100644 index 0000000..726eb25 --- /dev/null +++ b/themes/WebStack/layouts/_default/single.html @@ -0,0 +1,31 @@ +{{ partial "header.html" . }} + +{{ partial "content_header.html" . }} + + +
+
+

{{ .Title }}

+
+ {{ .Content | markdownify | safeHTML }} +
+
+
+ + + +{{ partial "content_footer.html" . }} + +{{ partial "footer.html" . }} diff --git a/themes/WebStack/layouts/index.html b/themes/WebStack/layouts/index.html new file mode 100644 index 0000000..4d3e14f --- /dev/null +++ b/themes/WebStack/layouts/index.html @@ -0,0 +1,16 @@ +{{ partial "header.html" . }} + +{{ partial "sidebar.html" . }} + +{{ partial "content_header.html" . }} + +{{ partial "content_search.html" . }} + +{{ partial "content_main.html" . }} + +{{ partial "content_footer.html" . }} + +{{ partial "modal_search.html" . }} + +{{ partial "footer.html" . }} + diff --git a/themes/WebStack/layouts/partials/content_footer.html b/themes/WebStack/layouts/partials/content_footer.html new file mode 100644 index 0000000..1d6bd33 --- /dev/null +++ b/themes/WebStack/layouts/partials/content_footer.html @@ -0,0 +1,31 @@ + + + diff --git a/themes/WebStack/layouts/partials/content_header.html b/themes/WebStack/layouts/partials/content_header.html new file mode 100644 index 0000000..e8b1c77 --- /dev/null +++ b/themes/WebStack/layouts/partials/content_header.html @@ -0,0 +1,101 @@ +
+
+ +
+
diff --git a/themes/WebStack/layouts/partials/content_main.html b/themes/WebStack/layouts/partials/content_main.html new file mode 100644 index 0000000..257f862 --- /dev/null +++ b/themes/WebStack/layouts/partials/content_main.html @@ -0,0 +1,150 @@ +
+ {{ range .Site.Data.webstack }} + {{ if .list }} + {{ range .list }} + +
+

+ + {{ .term }} +

+
+ +
+ + +
+ + {{ end }} + {{ else }} + + +
+

+ + {{ .taxonomy }} +

+ +
+ + +
+ + {{ end }} + {{ end }} + +

+ 友情链接 +

+ +
diff --git a/themes/WebStack/layouts/partials/content_search.html b/themes/WebStack/layouts/partials/content_search.html new file mode 100644 index 0000000..698203b --- /dev/null +++ b/themes/WebStack/layouts/partials/content_search.html @@ -0,0 +1,261 @@ +
+ + +
diff --git a/themes/WebStack/layouts/partials/footer.html b/themes/WebStack/layouts/partials/footer.html new file mode 100644 index 0000000..18abe95 --- /dev/null +++ b/themes/WebStack/layouts/partials/footer.html @@ -0,0 +1,124 @@ + + + + + + + + + +{{ if $.Site.Params.expandSidebar }} + +{{ else }} + +{{ end }} + + + + + + diff --git a/themes/WebStack/layouts/partials/header.html b/themes/WebStack/layouts/partials/header.html new file mode 100644 index 0000000..6040496 --- /dev/null +++ b/themes/WebStack/layouts/partials/header.html @@ -0,0 +1,53 @@ + + + + + + + + + {{ .Site.Title }} + + + {{ if $.Site.Params.seo.baiduSiteVer }} + + {{ end }} + + + + + + + + + + + + + + {{ with .Site.Params.seo.tj51laid }} + + + {{ end }} + + diff --git a/themes/WebStack/layouts/partials/modal_search.html b/themes/WebStack/layouts/partials/modal_search.html new file mode 100644 index 0000000..b634d4a --- /dev/null +++ b/themes/WebStack/layouts/partials/modal_search.html @@ -0,0 +1,164 @@ + diff --git a/themes/WebStack/layouts/partials/sidebar.html b/themes/WebStack/layouts/partials/sidebar.html new file mode 100644 index 0000000..398725e --- /dev/null +++ b/themes/WebStack/layouts/partials/sidebar.html @@ -0,0 +1,148 @@ +{{ if $.Site.Params.nightMode }} + +{{ else }} + +{{ end }} +{{ if $.Site.Params.enablePreLoad }} +
+ +
{{ $.Site.Params.textPreLoad }}
+
+{{ end }} +
+ {{ if $.Site.Params.expandSidebar }} + ',trigger:"hover focus",title:"",delay:0,html:!1,selector:!1,placement:"top",offset:0,container:!1,fallbackPlacement:"flip",boundary:"scrollParent",sanitize:!0,sanitizeFn:null,whiteList:Ee},je="show",He="out",Re={HIDE:"hide"+De,HIDDEN:"hidden"+De,SHOW:"show"+De,SHOWN:"shown"+De,INSERTED:"inserted"+De,CLICK:"click"+De,FOCUSIN:"focusin"+De,FOCUSOUT:"focusout"+De,MOUSEENTER:"mouseenter"+De,MOUSELEAVE:"mouseleave"+De},xe="fade",Fe="show",Ue=".tooltip-inner",We=".arrow",qe="hover",Me="focus",Ke="click",Qe="manual",Be=function(){function i(t,e){if("undefined"==typeof u)throw new TypeError("Bootstrap's tooltips require Popper.js (https://popper.js.org/)");this._isEnabled=!0,this._timeout=0,this._hoverState="",this._activeTrigger={},this._popper=null,this.element=t,this.config=this._getConfig(e),this.tip=null,this._setListeners()}var t=i.prototype;return t.enable=function(){this._isEnabled=!0},t.disable=function(){this._isEnabled=!1},t.toggleEnabled=function(){this._isEnabled=!this._isEnabled},t.toggle=function(t){if(this._isEnabled)if(t){var e=this.constructor.DATA_KEY,n=g(t.currentTarget).data(e);n||(n=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(e,n)),n._activeTrigger.click=!n._activeTrigger.click,n._isWithActiveTrigger()?n._enter(null,n):n._leave(null,n)}else{if(g(this.getTipElement()).hasClass(Fe))return void this._leave(null,this);this._enter(null,this)}},t.dispose=function(){clearTimeout(this._timeout),g.removeData(this.element,this.constructor.DATA_KEY),g(this.element).off(this.constructor.EVENT_KEY),g(this.element).closest(".modal").off("hide.bs.modal"),this.tip&&g(this.tip).remove(),this._isEnabled=null,this._timeout=null,this._hoverState=null,(this._activeTrigger=null)!==this._popper&&this._popper.destroy(),this._popper=null,this.element=null,this.config=null,this.tip=null},t.show=function(){var e=this;if("none"===g(this.element).css("display"))throw new Error("Please use show on visible elements");var t=g.Event(this.constructor.Event.SHOW);if(this.isWithContent()&&this._isEnabled){g(this.element).trigger(t);var n=_.findShadowRoot(this.element),i=g.contains(null!==n?n:this.element.ownerDocument.documentElement,this.element);if(t.isDefaultPrevented()||!i)return;var o=this.getTipElement(),r=_.getUID(this.constructor.NAME);o.setAttribute("id",r),this.element.setAttribute("aria-describedby",r),this.setContent(),this.config.animation&&g(o).addClass(xe);var s="function"==typeof this.config.placement?this.config.placement.call(this,o,this.element):this.config.placement,a=this._getAttachment(s);this.addAttachmentClass(a);var l=this._getContainer();g(o).data(this.constructor.DATA_KEY,this),g.contains(this.element.ownerDocument.documentElement,this.tip)||g(o).appendTo(l),g(this.element).trigger(this.constructor.Event.INSERTED),this._popper=new u(this.element,o,{placement:a,modifiers:{offset:this._getOffset(),flip:{behavior:this.config.fallbackPlacement},arrow:{element:We},preventOverflow:{boundariesElement:this.config.boundary}},onCreate:function(t){t.originalPlacement!==t.placement&&e._handlePopperPlacementChange(t)},onUpdate:function(t){return e._handlePopperPlacementChange(t)}}),g(o).addClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().on("mouseover",null,g.noop);var c=function(){e.config.animation&&e._fixTransition();var t=e._hoverState;e._hoverState=null,g(e.element).trigger(e.constructor.Event.SHOWN),t===He&&e._leave(null,e)};if(g(this.tip).hasClass(xe)){var h=_.getTransitionDurationFromElement(this.tip);g(this.tip).one(_.TRANSITION_END,c).emulateTransitionEnd(h)}else c()}},t.hide=function(t){var e=this,n=this.getTipElement(),i=g.Event(this.constructor.Event.HIDE),o=function(){e._hoverState!==je&&n.parentNode&&n.parentNode.removeChild(n),e._cleanTipClass(),e.element.removeAttribute("aria-describedby"),g(e.element).trigger(e.constructor.Event.HIDDEN),null!==e._popper&&e._popper.destroy(),t&&t()};if(g(this.element).trigger(i),!i.isDefaultPrevented()){if(g(n).removeClass(Fe),"ontouchstart"in document.documentElement&&g(document.body).children().off("mouseover",null,g.noop),this._activeTrigger[Ke]=!1,this._activeTrigger[Me]=!1,this._activeTrigger[qe]=!1,g(this.tip).hasClass(xe)){var r=_.getTransitionDurationFromElement(n);g(n).one(_.TRANSITION_END,o).emulateTransitionEnd(r)}else o();this._hoverState=""}},t.update=function(){null!==this._popper&&this._popper.scheduleUpdate()},t.isWithContent=function(){return Boolean(this.getTitle())},t.addAttachmentClass=function(t){g(this.getTipElement()).addClass(Ae+"-"+t)},t.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},t.setContent=function(){var t=this.getTipElement();this.setElementContent(g(t.querySelectorAll(Ue)),this.getTitle()),g(t).removeClass(xe+" "+Fe)},t.setElementContent=function(t,e){"object"!=typeof e||!e.nodeType&&!e.jquery?this.config.html?(this.config.sanitize&&(e=Se(e,this.config.whiteList,this.config.sanitizeFn)),t.html(e)):t.text(e):this.config.html?g(e).parent().is(t)||t.empty().append(e):t.text(g(e).text())},t.getTitle=function(){var t=this.element.getAttribute("data-original-title");return t||(t="function"==typeof this.config.title?this.config.title.call(this.element):this.config.title),t},t._getOffset=function(){var e=this,t={};return"function"==typeof this.config.offset?t.fn=function(t){return t.offsets=l({},t.offsets,e.config.offset(t.offsets,e.element)||{}),t}:t.offset=this.config.offset,t},t._getContainer=function(){return!1===this.config.container?document.body:_.isElement(this.config.container)?g(this.config.container):g(document).find(this.config.container)},t._getAttachment=function(t){return Pe[t.toUpperCase()]},t._setListeners=function(){var i=this;this.config.trigger.split(" ").forEach(function(t){if("click"===t)g(i.element).on(i.constructor.Event.CLICK,i.config.selector,function(t){return i.toggle(t)});else if(t!==Qe){var e=t===qe?i.constructor.Event.MOUSEENTER:i.constructor.Event.FOCUSIN,n=t===qe?i.constructor.Event.MOUSELEAVE:i.constructor.Event.FOCUSOUT;g(i.element).on(e,i.config.selector,function(t){return i._enter(t)}).on(n,i.config.selector,function(t){return i._leave(t)})}}),g(this.element).closest(".modal").on("hide.bs.modal",function(){i.element&&i.hide()}),this.config.selector?this.config=l({},this.config,{trigger:"manual",selector:""}):this._fixTitle()},t._fixTitle=function(){var t=typeof this.element.getAttribute("data-original-title");(this.element.getAttribute("title")||"string"!==t)&&(this.element.setAttribute("data-original-title",this.element.getAttribute("title")||""),this.element.setAttribute("title",""))},t._enter=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusin"===t.type?Me:qe]=!0),g(e.getTipElement()).hasClass(Fe)||e._hoverState===je?e._hoverState=je:(clearTimeout(e._timeout),e._hoverState=je,e.config.delay&&e.config.delay.show?e._timeout=setTimeout(function(){e._hoverState===je&&e.show()},e.config.delay.show):e.show())},t._leave=function(t,e){var n=this.constructor.DATA_KEY;(e=e||g(t.currentTarget).data(n))||(e=new this.constructor(t.currentTarget,this._getDelegateConfig()),g(t.currentTarget).data(n,e)),t&&(e._activeTrigger["focusout"===t.type?Me:qe]=!1),e._isWithActiveTrigger()||(clearTimeout(e._timeout),e._hoverState=He,e.config.delay&&e.config.delay.hide?e._timeout=setTimeout(function(){e._hoverState===He&&e.hide()},e.config.delay.hide):e.hide())},t._isWithActiveTrigger=function(){for(var t in this._activeTrigger)if(this._activeTrigger[t])return!0;return!1},t._getConfig=function(t){var e=g(this.element).data();return Object.keys(e).forEach(function(t){-1!==Oe.indexOf(t)&&delete e[t]}),"number"==typeof(t=l({},this.constructor.Default,e,"object"==typeof t&&t?t:{})).delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),_.typeCheckConfig(be,t,this.constructor.DefaultType),t.sanitize&&(t.template=Se(t.template,t.whiteList,t.sanitizeFn)),t},t._getDelegateConfig=function(){var t={};if(this.config)for(var e in this.config)this.constructor.Default[e]!==this.config[e]&&(t[e]=this.config[e]);return t},t._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ne);null!==e&&e.length&&t.removeClass(e.join(""))},t._handlePopperPlacementChange=function(t){var e=t.instance;this.tip=e.popper,this._cleanTipClass(),this.addAttachmentClass(this._getAttachment(t.placement))},t._fixTransition=function(){var t=this.getTipElement(),e=this.config.animation;null===t.getAttribute("x-placement")&&(g(t).removeClass(xe),this.config.animation=!1,this.hide(),this.show(),this.config.animation=e)},i._jQueryInterface=function(n){return this.each(function(){var t=g(this).data(Ie),e="object"==typeof n&&n;if((t||!/dispose|hide/.test(n))&&(t||(t=new i(this,e),g(this).data(Ie,t)),"string"==typeof n)){if("undefined"==typeof t[n])throw new TypeError('No method named "'+n+'"');t[n]()}})},s(i,null,[{key:"VERSION",get:function(){return"4.3.1"}},{key:"Default",get:function(){return Le}},{key:"NAME",get:function(){return be}},{key:"DATA_KEY",get:function(){return Ie}},{key:"Event",get:function(){return Re}},{key:"EVENT_KEY",get:function(){return De}},{key:"DefaultType",get:function(){return ke}}]),i}();g.fn[be]=Be._jQueryInterface,g.fn[be].Constructor=Be,g.fn[be].noConflict=function(){return g.fn[be]=we,Be._jQueryInterface};var Ve="popover",Ye="bs.popover",ze="."+Ye,Xe=g.fn[Ve],$e="bs-popover",Ge=new RegExp("(^|\\s)"+$e+"\\S+","g"),Je=l({},Be.Default,{placement:"right",trigger:"click",content:"",template:''}),Ze=l({},Be.DefaultType,{content:"(string|element|function)"}),tn="fade",en="show",nn=".popover-header",on=".popover-body",rn={HIDE:"hide"+ze,HIDDEN:"hidden"+ze,SHOW:"show"+ze,SHOWN:"shown"+ze,INSERTED:"inserted"+ze,CLICK:"click"+ze,FOCUSIN:"focusin"+ze,FOCUSOUT:"focusout"+ze,MOUSEENTER:"mouseenter"+ze,MOUSELEAVE:"mouseleave"+ze},sn=function(t){var e,n;function i(){return t.apply(this,arguments)||this}n=t,(e=i).prototype=Object.create(n.prototype),(e.prototype.constructor=e).__proto__=n;var o=i.prototype;return o.isWithContent=function(){return this.getTitle()||this._getContent()},o.addAttachmentClass=function(t){g(this.getTipElement()).addClass($e+"-"+t)},o.getTipElement=function(){return this.tip=this.tip||g(this.config.template)[0],this.tip},o.setContent=function(){var t=g(this.getTipElement());this.setElementContent(t.find(nn),this.getTitle());var e=this._getContent();"function"==typeof e&&(e=e.call(this.element)),this.setElementContent(t.find(on),e),t.removeClass(tn+" "+en)},o._getContent=function(){return this.element.getAttribute("data-content")||this.config.content},o._cleanTipClass=function(){var t=g(this.getTipElement()),e=t.attr("class").match(Ge);null!==e&&0=this._offsets[o]&&("undefined"==typeof this._offsets[o+1]||tthis.$items.length-1||0>a?void 0:this.sliding?this.$element.one("slid.bs.carousel",function(){b.to(a)}):c==a?this.pause().cycle():this.slide(a>c?"next":"prev",this.$items.eq(a))},c.prototype.pause=function(b){return b||(this.paused=!0),this.$element.find(".next, .prev").length&&a.support.transition&&(this.$element.trigger(a.support.transition.end),this.cycle(!0)),this.interval=clearInterval(this.interval),this},c.prototype.next=function(){return this.sliding?void 0:this.slide("next")},c.prototype.prev=function(){return this.sliding?void 0:this.slide("prev")},c.prototype.slide=function(b,d){var e=this.$element.find(".item.active"),f=d||this.getItemForDirection(b,e),g=this.interval,h="next"==b?"left":"right",i=this;if(f.hasClass("active"))return this.sliding=!1;var j=f[0],k=a.Event("slide.bs.carousel",{relatedTarget:j,direction:h});if(this.$element.trigger(k),!k.isDefaultPrevented()){if(this.sliding=!0,g&&this.pause(),this.$indicators.length){this.$indicators.find(".active").removeClass("active");var l=a(this.$indicators.children()[this.getItemIndex(f)]);l&&l.addClass("active")}var m=a.Event("slid.bs.carousel",{relatedTarget:j,direction:h});return a.support.transition&&this.$element.hasClass("slide")?(f.addClass(b),f[0].offsetWidth,e.addClass(h),f.addClass(h),e.one("bsTransitionEnd",function(){f.removeClass([b,h].join(" ")).addClass("active"),e.removeClass(["active",h].join(" ")),i.sliding=!1,setTimeout(function(){i.$element.trigger(m)},0)}).emulateTransitionEnd(c.TRANSITION_DURATION)):(e.removeClass("active"),f.addClass("active"),this.sliding=!1,this.$element.trigger(m)),g&&this.cycle(),this}};var d=a.fn.carousel;a.fn.carousel=b,a.fn.carousel.Constructor=c,a.fn.carousel.noConflict=function(){return a.fn.carousel=d,this};var e=function(c){var d,e=a(this),f=a(e.attr("data-target")||(d=e.attr("href"))&&d.replace(/.*(?=#[^\s]+$)/,""));if(f.hasClass("carousel")){var g=a.extend({},f.data(),e.data()),h=e.attr("data-slide-to");h&&(g.interval=!1),b.call(f,g),h&&f.data("bs.carousel").to(h),c.preventDefault()}};a(document).on("click.bs.carousel.data-api","[data-slide]",e).on("click.bs.carousel.data-api","[data-slide-to]",e),a(window).on("load",function(){a('[data-ride="carousel"]').each(function(){var c=a(this);b.call(c,c.data())})})}(jQuery),+function(a){"use strict";function b(b){var c,d=b.attr("data-target")||(c=b.attr("href"))&&c.replace(/.*(?=#[^\s]+$)/,"");return a(d)}function c(b){return this.each(function(){var c=a(this),e=c.data("bs.collapse"),f=a.extend({},d.DEFAULTS,c.data(),"object"==typeof b&&b);!e&&f.toggle&&"show"==b&&(f.toggle=!1),e||c.data("bs.collapse",e=new d(this,f)),"string"==typeof b&&e[b]()})}var d=function(b,c){this.$element=a(b),this.options=a.extend({},d.DEFAULTS,c),this.$trigger=a(this.options.trigger).filter('[href="#'+b.id+'"], [data-target="#'+b.id+'"]'),this.transitioning=null,this.options.parent?this.$parent=this.getParent():this.addAriaAndCollapsedClass(this.$element,this.$trigger),this.options.toggle&&this.toggle()};d.VERSION="3.3.1",d.TRANSITION_DURATION=350,d.DEFAULTS={toggle:!0,trigger:'[data-toggle="collapse"]'},d.prototype.dimension=function(){var a=this.$element.hasClass("width");return a?"width":"height"},d.prototype.show=function(){if(!this.transitioning&&!this.$element.hasClass("in")){var b,e=this.$parent&&this.$parent.children(".panel").children(".in, .collapsing");if(!(e&&e.length&&(b=e.data("bs.collapse"),b&&b.transitioning))){var f=a.Event("show.bs.collapse");if(this.$element.trigger(f),!f.isDefaultPrevented()){e&&e.length&&(c.call(e,"hide"),b||e.data("bs.collapse",null));var g=this.dimension();this.$element.removeClass("collapse").addClass("collapsing")[g](0).attr("aria-expanded",!0),this.$trigger.removeClass("collapsed").attr("aria-expanded",!0),this.transitioning=1;var h=function(){this.$element.removeClass("collapsing").addClass("collapse in")[g](""),this.transitioning=0,this.$element.trigger("shown.bs.collapse")};if(!a.support.transition)return h.call(this);var i=a.camelCase(["scroll",g].join("-"));this.$element.one("bsTransitionEnd",a.proxy(h,this)).emulateTransitionEnd(d.TRANSITION_DURATION)[g](this.$element[0][i])}}}},d.prototype.hide=function(){if(!this.transitioning&&this.$element.hasClass("in")){var b=a.Event("hide.bs.collapse");if(this.$element.trigger(b),!b.isDefaultPrevented()){var c=this.dimension();this.$element[c](this.$element[c]())[0].offsetHeight,this.$element.addClass("collapsing").removeClass("collapse in").attr("aria-expanded",!1),this.$trigger.addClass("collapsed").attr("aria-expanded",!1),this.transitioning=1;var e=function(){this.transitioning=0,this.$element.removeClass("collapsing").addClass("collapse").trigger("hidden.bs.collapse")};return a.support.transition?void this.$element[c](0).one("bsTransitionEnd",a.proxy(e,this)).emulateTransitionEnd(d.TRANSITION_DURATION):e.call(this)}}},d.prototype.toggle=function(){this[this.$element.hasClass("in")?"hide":"show"]()},d.prototype.getParent=function(){return a(this.options.parent).find('[data-toggle="collapse"][data-parent="'+this.options.parent+'"]').each(a.proxy(function(c,d){var e=a(d);this.addAriaAndCollapsedClass(b(e),e)},this)).end()},d.prototype.addAriaAndCollapsedClass=function(a,b){var c=a.hasClass("in");a.attr("aria-expanded",c),b.toggleClass("collapsed",!c).attr("aria-expanded",c)};var e=a.fn.collapse;a.fn.collapse=c,a.fn.collapse.Constructor=d,a.fn.collapse.noConflict=function(){return a.fn.collapse=e,this},a(document).on("click.bs.collapse.data-api",'[data-toggle="collapse"]',function(d){var e=a(this);e.attr("data-target")||d.preventDefault();var f=b(e),g=f.data("bs.collapse"),h=g?"toggle":a.extend({},e.data(),{trigger:this});c.call(f,h)})}(jQuery),+function(a){"use strict";function b(b){b&&3===b.which||(a(e).remove(),a(f).each(function(){var d=a(this),e=c(d),f={relatedTarget:this};e.hasClass("open")&&(e.trigger(b=a.Event("hide.bs.dropdown",f)),b.isDefaultPrevented()||(d.attr("aria-expanded","false"),e.removeClass("open").trigger("hidden.bs.dropdown",f)))}))}function c(b){var c=b.attr("data-target");c||(c=b.attr("href"),c=c&&/#[A-Za-z]/.test(c)&&c.replace(/.*(?=#[^\s]*$)/,""));var d=c&&a(c);return d&&d.length?d:b.parent()}function d(b){return this.each(function(){var c=a(this),d=c.data("bs.dropdown");d||c.data("bs.dropdown",d=new g(this)),"string"==typeof b&&d[b].call(c)})}var e=".dropdown-backdrop",f='[data-toggle="dropdown"]',g=function(b){a(b).on("click.bs.dropdown",this.toggle)};g.VERSION="3.3.1",g.prototype.toggle=function(d){var e=a(this);if(!e.is(".disabled, :disabled")){var f=c(e),g=f.hasClass("open");if(b(),!g){"ontouchstart"in document.documentElement&&!f.closest(".navbar-nav").length&&a('