This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new e632b827283 [Feature](website) Retire the deprecated /learning,
/archive-docs and /vendors pages (#4040)
e632b827283 is described below
commit e632b827283f2f84bf164e6ebea4f03b0dab2d2b
Author: Mingyu Chen (Rayner) <[email protected]>
AuthorDate: Thu Aug 6 17:34:01 2026 +0800
[Feature](website) Retire the deprecated /learning, /archive-docs and
/vendors pages (#4040)
## What
Three standalone pages have no inbound link anywhere on the site.
`/learning` lost its footer entry back in #1461; `/archive-docs` and
`/vendors` lost theirs in the new-homepage refactor (#3660). Their
content has gone stale as well — `/learning` links to pre-4.x doc slugs
that no longer exist, and `/archive-docs` still calls 3.0 the "latest
version".
| Page | Action | Redirect |
| --- | --- | --- |
| `/learning` | page removed | → `/course` |
| `/archive-docs` | page removed | none (404) |
| `/vendors` | source parked, route removed | → `/` |
Details:
- **`/learning`** — removed along with its 10 exclusive sitemap icons.
Doris 101 is now the entry point for newcomers.
- **`/archive-docs`** — removed, together with its exclusive `pdf.svg`,
the unused `ARCHIVE_PATH` constant and 17 orphaned `archive.*` zh-CN
translation keys. The v2.0 PDF it linked stays reachable from the
download page.
- **`/vendors`** — source parked at `src/pages/_vendors` (underscore =
not routed) so the content is preserved, while the route redirects to
the homepage. `plugin-client-redirects` drops any redirect that would
override a live route, so the page has to leave the route table for the
redirect to apply.
- **`src/pages/_download`** — removed. Underscore-prefixed, so it was
never built; it was the last importer of `src/components/More` and
`src/components/PageColumn`, which are now unreferenced (left in place
for a follow-up).
`createRedirects()` previously normalized the site root to an empty
string, which meant no redirect could ever target the homepage. It now
keeps `/`.
## Testing
Production-shaped build (`--locale en --locale zh-CN`):
| From | EN | ZH |
| --- | --- | --- |
| `/learning` | → `/course/` | → `/zh-CN/course/` |
| `/vendors` | → `/` | → `/zh-CN/` |
`/archive-docs`, `/_vendors` and `/_download` produce no route; `/`,
`/course`, `/download`, `/events`, `/why-doris/users` and
`/profile-analysis` all still build. No remaining route or broken-link
warning references any of the removed pages.
## Versions
- [x] dev
## Languages
- [x] Chinese
- [x] English
## Docs Checklist
- [x] Checked by AI
- [x] Updated required version and language counterparts, or explained
why not
---
.github/workflows/build-check.yml | 326 +++++++++++-----
docusaurus.config.js | 17 +-
i18n/zh-CN/code.json | 68 ----
src/constant/common.tsx | 4 +-
src/pages/_download/index.scss | 308 ---------------
src/pages/_download/index.tsx | 607 -----------------------------
src/pages/{vendors => _vendors}/index.tsx | 4 +
src/pages/archive-docs/index.scss | 90 -----
src/pages/archive-docs/index.tsx | 165 --------
src/pages/learning/index.tsx | 341 ----------------
src/pages/learning/siteMap.scss | 104 -----
static/images/sitemap/sitemap-admin.png | Bin 1801 -> 0 bytes
static/images/sitemap/sitemap-book.png | Bin 1809 -> 0 bytes
static/images/sitemap/sitemap-export.png | Bin 2696 -> 0 bytes
static/images/sitemap/sitemap-model.png | Bin 1911 -> 0 bytes
static/images/sitemap/sitemap-question.png | Bin 2035 -> 0 bytes
static/images/sitemap/sitemap-refresh.png | Bin 2445 -> 0 bytes
static/images/sitemap/sitemap-search.png | Bin 2012 -> 0 bytes
static/images/sitemap/sitemap-setting.png | Bin 2298 -> 0 bytes
static/images/sitemap/sitemap-sql.png | Bin 2389 -> 0 bytes
static/images/sitemap/sitemap-start.png | Bin 2131 -> 0 bytes
static/images/toc-icon/pdf.svg | 5 -
22 files changed, 258 insertions(+), 1781 deletions(-)
diff --git a/.github/workflows/build-check.yml
b/.github/workflows/build-check.yml
index 592d12d78cf..773158e8d52 100644
--- a/.github/workflows/build-check.yml
+++ b/.github/workflows/build-check.yml
@@ -79,149 +79,291 @@ jobs:
echo "=== Changed files ==="
echo "$CHANGED_FILES"
+ #
---------------------------------------------------------------
+ # The build scope is three independent questions. Answering
them
+ # separately is what keeps a website-only PR from paying for a
+ # 4-version x 2-locale build (~1h, and enough memory pressure
to
+ # kill the runner outright).
+ #
+ # TIER how much has to be compiled at all
+ # skip nothing that reaches the bundler changed
+ # build compile the version set computed below
+ # full the *set of versions itself* changed, so every
+ # active version has to be re-validated
+ # VERSIONS which doc versions have content changes
+ # LOCALES which locales have *content* changes
+ #
+ # Site code (src/**, docusaurus.config.js, deps) deliberately
does
+ # NOT force `full`: the React/TS/SCSS compile is identical for
+ # every doc version, so one representative version catches
exactly
+ # the same errors at a quarter of the cost. Only versions.json
and
+ # config/versions-plugin.js — the files that define which
versions
+ # exist — earn a full build.
+ #
+ # Unrecognised paths fall through to `build` (minimal, but
real),
+ # so a new kind of file is never silently skipped.
+ #
---------------------------------------------------------------
+
VERSIONS=""
- LOCALES="en"
- NEED_FULL_BUILD="false"
+ LOCALES=""
+ TIER="skip"
+ JSON_TO_VALIDATE=""
+
+ # Representative version for compile-only checks: the latest
+ # released version, i.e. the stable one the navbar defaults to.
+ PROBE_VERSION=$(jq -r '.[0] // "4.x"' versions.json)
+
+ # skip < build < full; never lower an already-raised tier.
+ raise_tier() {
+ case "$1" in
+ full)
+ TIER="full"
+ ;;
+ build)
+ if [ "$TIER" = "skip" ]; then TIER="build"; fi
+ ;;
+ esac
+ }
+
+ add_version() {
+ VERSIONS="$1,$VERSIONS"
+ raise_tier build
+ }
+
+ add_locale() {
+ case ",$LOCALES," in
+ *",$1,"*) ;;
+ *) LOCALES="${LOCALES:+$LOCALES,}$1" ;;
+ esac
+ raise_tier build
+ }
+
+ # Translation JSON only needs a syntax check (see below).
+ validate_json_later() {
+ JSON_TO_VALIDATE="${JSON_TO_VALIDATE}${1}"$'\n'
+ }
- # Check each changed file and map to doc version
+ # First match wins, so order matters: the most specific paths
and
+ # the version-defining files come before the broad catch-alls.
while IFS= read -r file; do
+ [ -n "$file" ] || continue
case "$file" in
- # English Dev source (current/unreleased version)
- docs/*)
- VERSIONS="current,$VERSIONS"
+ # ---- Files that define which versions exist
----------
+ # These change the version set itself, so every active
+ # version has to be rebuilt to stay honest.
+ versions.json|config/versions-plugin.js)
+ raise_tier full
;;
- # Chinese Dev source (current/unreleased version)
- i18n/zh-CN/docusaurus-plugin-content-docs/current/*)
- VERSIONS="current,$VERSIONS"
- LOCALES="en,zh-CN"
+
+ # ---- English doc content
-----------------------------
+ # Dev / unreleased version.
+ docs/*)
+ add_locale en
+ add_version current
;;
- # English versioned docs
versioned_docs/version-*/*)
ver=$(echo "$file" | sed -n
's|versioned_docs/version-\([^/]*\)/.*|\1|p')
- VERSIONS="${ver},$VERSIONS"
+ add_locale en
+ add_version "$ver"
+ ;;
+
+ # ---- Chinese doc content
-----------------------------
+ # Only zh-CN is built: an en page cannot break because
a
+ # zh-CN page changed. With a single --locale,
Docusaurus
+ # drops the locale path prefix (baseUrl becomes /
instead
+ # of /zh-CN/) — the same path `yarn start:zh-CN` takes.
+ # That only shifts output paths, and onBrokenLinks is
+ # 'warn', so it cannot manufacture a failure.
+ i18n/zh-CN/docusaurus-plugin-content-docs/current/*)
+ add_locale zh-CN
+ add_version current
;;
- # Chinese versioned docs
i18n/zh-CN/docusaurus-plugin-content-docs/version-*/*)
ver=$(echo "$file" | sed -n
's|i18n/zh-CN/docusaurus-plugin-content-docs/version-\([^/]*\)/.*|\1|p')
- VERSIONS="${ver},$VERSIONS"
- LOCALES="en,zh-CN"
- ;;
- # Per-version label translations (e.g.
version-4.x.json)
-
i18n/zh-CN/docusaurus-plugin-content-docs/version-*.json)
- ver=$(echo "$file" | sed -n
's|i18n/zh-CN/docusaurus-plugin-content-docs/version-\([^.]*\)\.json|\1|p')
- VERSIONS="${ver},$VERSIONS"
- LOCALES="en,zh-CN"
+ add_locale zh-CN
+ add_version "$ver"
;;
- # Chinese community docs
-
i18n/zh-CN/docusaurus-plugin-content-docs-community/*|i18n/zh-CN/code.json)
- LOCALES="en,zh-CN"
+
+ # ---- Translation tables (JSON)
-----------------------
+ # code.json and the per-version label files are lookup
+ # tables, not content: Docusaurus falls back to the
+ # source string and warns on a missing/stale key, it
does
+ # not fail. The single build-breaking failure mode is
+ # malformed JSON, which `jq` catches in milliseconds —
so
+ # these no longer drag a whole zh-CN site build along.
+
i18n/*/code.json|i18n/*/docusaurus-plugin-content-docs*/*.json)
+ validate_json_later "$file"
;;
- # Versioned sidebars: extract version from filename
+
+ # ---- Version-scoped sidebars
-------------------------
# e.g. versioned_sidebars/version-4.x-sidebars.json →
4.x
versioned_sidebars/version-*-sidebars.json)
ver=$(echo "$file" | sed -n
's|versioned_sidebars/version-\(.*\)-sidebars\.json|\1|p')
- VERSIONS="${ver},$VERSIONS"
+ add_locale en
+ add_version "$ver"
;;
- # Current-version (Dev) sidebar
sidebars.ts)
- VERSIONS="current,$VERSIONS"
+ add_locale en
+ add_version current
+ ;;
+
+ # ---- Always-built, version-independent plugins
-------
+ # Blog, community, releases and course are separate
+ # plugin instances that Docusaurus compiles regardless
of
+ # DOCS_VERSIONS, so they need a build but no extra
+ # versions. Their sidebars belong here for the same
+ # reason — they used to force a full multi-version
build
+ # for nothing.
+ blog/*|community/*|releasenotes/*|course/*)
+ add_locale en
+ raise_tier build
+ ;;
+
sidebarsCommunity.json|sidebarsReleases.json|sidebarsCourse.ts)
+ add_locale en
+ raise_tier build
+ ;;
+
i18n/zh-CN/docusaurus-plugin-content-docs-community/*|i18n/zh-CN/docusaurus-plugin-content-docs-releases/*)
+ add_locale zh-CN
+ raise_tier build
;;
- # versions.json controls which versions are built; any
change
- # warrants a full multi-version build.
- versions.json)
- NEED_FULL_BUILD="true"
+
+ # ---- Nothing the bundler ever sees
-------------------
+ # static/ is copied verbatim into the output. A change
+ # there cannot fail (or be validated by) a build, so it
+ # must not widen the scope on its own. A doc that
+ # references a new asset triggers its own build above.
+ static/*)
+ ;;
+ # CI config, governance tooling, repo-level prose and
+ # helper scripts. No Python or shell file in this repo
is
+ # compiled into the site.
+ .github/*|.claude/*|.agents/*|.vscode/*|.idea/*)
;;
- # Blog and community are independent plugins, not
- # controlled by DOCS_VERSIONS. They are always built
- # regardless of version filtering.
- blog/*|community/*|releasenotes/*)
- NEED_BUILD="true"
+ scripts/docs-governance/*|website-quality-governance/*)
;;
- # Releases i18n docs
- i18n/zh-CN/docusaurus-plugin-content-docs-releases/*)
- LOCALES="en,zh-CN"
+ *.py|*.sh)
;;
- # Static image assets are copied verbatim to the
- # build output and don't affect page rendering, so
- # they should NOT trigger a full rebuild on their
- # own. Any doc change that references these images
- # will trigger its own version-scoped build above.
- static/images/*|static/images/**)
+
README.md|AGENTS.md|TOC.md|LICENSE|NOTICE|store_format_v3.md|cspell.json|author.yml|buildVersions.json|.gitignore|.prettierrc|.prettierignore|.eslintrc|.eslintrc.js)
;;
- # Config, source code, or other structural changes
- # require a full build to validate
-
sidebarsCommunity.json|sidebarsReleases.json|docusaurus.config.js|src/*|static/*|config/*|package.json|yarn.lock|tailwind.config.js)
- NEED_FULL_BUILD="true"
+
+ # ---- Site code, config and deps
----------------------
+ # Compiled once and shared by every version and locale,
+ # so the representative version is a complete check.
+ # scripts/ entries listed here are genuine build
inputs:
+ # key-features/ and last-update/ are read by
+ # docusaurus.config.js, patch-search-tokenize.js runs
on
+ # postinstall.
+
src/*|config/*|docusaurus.config.js|package.json|yarn.lock|tailwind.config.js|tsconfig.json|scripts/key-features/*|scripts/last-update/*|scripts/patch-search-tokenize.js)
+ add_locale en
+ raise_tier build
+ ;;
+
+ # ---- Anything else: fail safe
------------------------
+ *)
+ echo "Unclassified path '$file' — falling back to
a minimal build."
+ add_locale en
+ raise_tier build
;;
esac
done <<< "$CHANGED_FILES"
- # Build the set of versions Docusaurus actually builds:
- # `current` (the dev/unreleased version) plus everything in
versions.json.
- # Older version dirs (e.g. version-1.2, version-2.0) may still
exist on
- # disk but be absent from versions.json — touching them must
not poison
- # onlyIncludeVersions, which would fail the build with
"unknown versions".
+ # Syntax-check the translation tables we chose not to build.
+ if [ -n "$JSON_TO_VALIDATE" ]; then
+ echo ""
+ echo "=== Validating changed i18n JSON ==="
+ while IFS= read -r f; do
+ [ -n "$f" ] || continue
+ # Deleted in this PR — nothing left to parse.
+ [ -f "$f" ] || { echo " skip (deleted) $f";
continue; }
+ if jq empty "$f" >/dev/null 2>&1; then
+ echo " ok $f"
+ else
+ echo " INVALID JSON $f"
+ jq empty "$f" || true
+ exit 1
+ fi
+ done <<< "$JSON_TO_VALIDATE"
+ fi
+
+ # The versions Docusaurus can actually build: `current` (dev)
+ # plus everything in versions.json. Older dirs (version-1.2,
+ # version-2.0) may still sit on disk while being absent from
+ # versions.json — feeding those to onlyIncludeVersions fails
the
+ # build with "unknown versions".
ACTIVE_VERSIONS=$(jq -r '.[]' versions.json | tr '\n' ',' |
sed 's/,$//')
ACTIVE_VERSIONS="current,${ACTIVE_VERSIONS}"
+ echo ""
echo "Active versions (current + versions.json):
$ACTIVE_VERSIONS"
- # Deduplicate versions
- if [ "$NEED_FULL_BUILD" = "true" ]; then
- # Structural changes: build all active versions
- DOCS_VERSIONS=""
- echo "Structural changes detected, will build ALL
versions."
- elif [ -n "$VERSIONS" ]; then
- # Only doc content changes: build only affected versions.
- # Intersect detected versions with the active set so that
edits to
- # retired version dirs (e.g. version-1.2) don't break the
build.
- RAW_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n' | sort -u |
grep -v '^$')
+ SKIP_BUILD="false"
+ NEED_FULL_BUILD="false"
+ DOCS_VERSIONS=""
+
+ if [ "$TIER" = "skip" ]; then
+ SKIP_BUILD="true"
+ LOCALES="en"
+ # An empty DOCS_VERSIONS means "every version" to
+ # docusaurus.config.js. Nothing should read it while
+ # skip_build is set, but pin it to the probe version
anyway so
+ # a future edit can't turn a skipped build into the most
+ # expensive one.
+ DOCS_VERSIONS="$PROBE_VERSION"
+ echo "Nothing that reaches the bundler changed — skipping
the site build."
+ elif [ "$TIER" = "full" ]; then
+ NEED_FULL_BUILD="true"
DOCS_VERSIONS=""
- SKIPPED_VERSIONS=""
+ echo "The version set itself changed — building ALL active
versions."
+ else
+ RAW_VERSIONS=$(echo "$VERSIONS" | tr ',' '\n' | sort -u |
grep -v '^$' || true)
+ KEPT=""
+ DROPPED=""
for v in $RAW_VERSIONS; do
if echo ",$ACTIVE_VERSIONS," | grep -q ",$v,"; then
- DOCS_VERSIONS="${v},$DOCS_VERSIONS"
+ KEPT="${v},$KEPT"
else
- SKIPPED_VERSIONS="${v},$SKIPPED_VERSIONS"
+ DROPPED="${v},$DROPPED"
fi
done
- DOCS_VERSIONS=$(echo "$DOCS_VERSIONS" | sed 's/,$//')
- SKIPPED_VERSIONS=$(echo "$SKIPPED_VERSIONS" | sed 's/,$//')
- if [ -n "$SKIPPED_VERSIONS" ]; then
- echo "Ignoring changes to retired/unknown versions:
$SKIPPED_VERSIONS"
+ DOCS_VERSIONS=$(echo "$KEPT" | sed 's/,$//')
+ DROPPED=$(echo "$DROPPED" | sed 's/,$//')
+ if [ -n "$DROPPED" ]; then
+ echo "Ignoring changes to retired/unknown versions:
$DROPPED"
fi
if [ -z "$DOCS_VERSIONS" ]; then
- # Everything we detected was retired/unknown; fall
back to a
- # minimal build so the workflow still validates the
site.
- DOCS_VERSIONS="4.x"
- echo "All detected versions were retired/unknown,
doing minimal build with '4.x' only."
+ # Either no versioned content changed (site code, blog,
+ # community, course...) or everything we found was
+ # retired. One representative version is enough.
+ DOCS_VERSIONS="$PROBE_VERSION"
+ echo "No active versioned content changed — probing
with '$PROBE_VERSION' only."
else
- echo "Doc-only changes detected for versions:
$DOCS_VERSIONS"
+ echo "Versioned content changed for: $DOCS_VERSIONS"
fi
- else
- # No versioned doc changes (e.g., only blog, community, or
scripts).
- # Blog and community plugins are always compiled by
Docusaurus
- # regardless of DOCS_VERSIONS, so we just set the minimal
docs
- # scope to keep the build fast.
- DOCS_VERSIONS="4.x"
- echo "No doc version changes detected, doing minimal build
with '4.x' only."
- echo "(Blog and community plugins are always built
regardless.)"
fi
- # Determine locales for the build command
+ # Default the locale when a build is needed but no
locale-specific
+ # content changed (site code, deps, blog, ...).
+ if [ "$SKIP_BUILD" != "true" ] && [ -z "$LOCALES" ]; then
+ LOCALES="en"
+ fi
+
LOCALE_ARGS=""
IFS=',' read -ra LOCALE_ARR <<< "$LOCALES"
for locale in "${LOCALE_ARR[@]}"; do
+ [ -n "$locale" ] || continue
LOCALE_ARGS="$LOCALE_ARGS --locale $locale"
done
echo "docs_versions=$DOCS_VERSIONS" >> "$GITHUB_OUTPUT"
echo "locale_args=$LOCALE_ARGS" >> "$GITHUB_OUTPUT"
echo "need_full_build=$NEED_FULL_BUILD" >> "$GITHUB_OUTPUT"
+ echo "skip_build=$SKIP_BUILD" >> "$GITHUB_OUTPUT"
echo ""
echo "=== Build plan ==="
- echo " DOCS_VERSIONS: ${DOCS_VERSIONS:-all}"
- echo " LOCALE_ARGS: $LOCALE_ARGS"
+ echo " TIER: $TIER"
+ echo " SKIP_BUILD: $SKIP_BUILD"
+ echo " DOCS_VERSIONS: ${DOCS_VERSIONS:-all}"
+ echo " LOCALE_ARGS: ${LOCALE_ARGS:- (none)}"
echo " NEED_FULL_BUILD: $NEED_FULL_BUILD"
- name: Build
@@ -234,6 +376,14 @@ jobs:
yarn
yarn key-features:generate
+ # Dependencies are installed unconditionally above because
the
+ # governance steps below need node_modules; only the site
build
+ # itself is scoped by the detect step.
+ if [ "${{ steps.detect.outputs.skip_build }}" = "true" ];
then
+ echo "No site-affecting changes detected — skipping the
docusaurus build."
+ exit 0
+ fi
+
echo "Building with DOCS_VERSIONS=${DOCS_VERSIONS:-all}"
PWA_SERVICE_WORKER_URL=https://doris.apache.org/sw.js yarn
docusaurus build ${{ steps.detect.outputs.locale_args }}
rm -rf build
diff --git a/docusaurus.config.js b/docusaurus.config.js
index 11df557dc77..37208cafaaa 100644
--- a/docusaurus.config.js
+++ b/docusaurus.config.js
@@ -100,6 +100,17 @@ function buildRedirectIndex() {
add('/download', '/download-next');
add('/zh-CN/download', '/zh-CN/download-next');
+ // The hand-curated /learning sitemap page was retired; Doris 101 is now
+ // the structured entry point for newcomers.
+ add('/course', '/learning');
+ add('/zh-CN/course', '/zh-CN/learning');
+
+ // /vendors lost its navigation entry in the new-homepage refactor and has
+ // no obvious successor page, so it lands on the homepage. Its source is
+ // parked at src/pages/_vendors (underscore = not routed).
+ add('/', '/vendors');
+ add('/zh-CN', '/zh-CN/vendors');
+
// /ecosystem/* was retired; its closest spiritual home is the Dev tree's
// Data Integration intro, which catalogs the same connector/tool families
// the old /ecosystem/ pages did.
@@ -364,8 +375,10 @@ const config = {
// Static redirects indexed by target. Trim trailing slash
// for the lookup since Docusaurus' trailingSlash:true
- // gives us paths like /docs/4.x/foo/.
- const normalized = existingPath.replace(/\/$/, '');
+ // gives us paths like /docs/4.x/foo/. The locale root
+ // ('/' or '/zh-CN/') is the one path whose slash is the
+ // whole path, so keep it as-is.
+ const normalized = existingPath === '/' ? '/' :
existingPath.replace(/\/$/, '');
if (REDIRECT_INDEX[normalized]) {
redirects.push(...REDIRECT_INDEX[normalized]);
}
diff --git a/i18n/zh-CN/code.json b/i18n/zh-CN/code.json
index ab98f26312f..ca68b95015e 100644
--- a/i18n/zh-CN/code.json
+++ b/i18n/zh-CN/code.json
@@ -1,72 +1,4 @@
{
- "archive.layout.title": {
- "message": "Apache Doris - 归档文档中心",
- "description": "Apache Doris - Archive Document Center"
- },
- "archive.layout.description": {
- "message": "收录Apache doris归档文档",
- "description": "Collection of Apache doris archive documents"
- },
- "archive.page.title": {
- "message": "归档文档中心",
- "description": "The label for archived docs page title"
- },
- "archive.admonition.1": {
- "message": "此为 Apache Doris 归档文档,已归档文档不再提供任何更新。",
- "description": "The label for admonition in archived docs page"
- },
- "archive.admonition.2": {
- "message": "建议使用",
- "description": "The label for admonition in archived docs page"
- },
- "archive.page.2": {
- "message": "建议使用 {stableLink}或{latestLink}。",
- "description": "The label for admonition in archived docs page"
- },
- "archive.admonition.stable": {
- "message": "版本(2.1)",
- "description": "stable version"
- },
- "archive.admonition.latest": {
- "message": "版本(3.x)",
- "description": "latest version"
- },
- "archive.admonition.and": {
- "message": "或",
- "description": "and"
- },
- "archive.page.version": {
- "message": "版本:1.2",
- "description": "Archive Version"
- },
- "archive.preview.v12": {
- "message": "归档文档链接:{previewLink}",
- "description": "Archive preview link"
- },
- "archive.preview.link": {
- "message": "Apache Doris v1.2 中文文档",
- "description": "Archive preview link"
- },
- "archive.preview.date": {
- "message": "归档日期:{date}",
- "description": "Archive date"
- },
- "archive-tips-1": {
- "message": "本页将归档 Apache Doris 暂停维护版本的所有文档,并提供 PDF 格式供用户下载。",
- "description": "Archive tips"
- },
- "archive-tips-2": {
- "message": "请注意,归档文档将不再进行任何更新,建议用户使用{latestVersion}。",
- "description": "Archive tips"
- },
- "archive-download-text": {
- "message": "下载 PDF",
- "description": "archive download text"
- },
- "archive.latest.version": {
- "message": "最新版本",
- "description": "archive latest version"
- },
"theme.docs.versions.latestVersionSuggestionLabel": {
"message": "使用参考请跳转至 {v4xLink}/{v3xLink}/{v21Link} 正式版本文档进行查阅。"
},
diff --git a/src/constant/common.tsx b/src/constant/common.tsx
index 2c5673b37bc..3f16c270e2c 100644
--- a/src/constant/common.tsx
+++ b/src/constant/common.tsx
@@ -17,6 +17,4 @@ export const BLOG_TAG_ICONS = {
'Release Notes': <ReleaseNoteIcon />,
'Top News': <TopNewsIcon />,
All: <AllBlogIcon />,
-};
-
-export const ARCHIVE_PATH = 'archive-docs';
\ No newline at end of file
+};
\ No newline at end of file
diff --git a/src/pages/_download/index.scss b/src/pages/_download/index.scss
deleted file mode 100644
index 85d3b8eb704..00000000000
--- a/src/pages/_download/index.scss
+++ /dev/null
@@ -1,308 +0,0 @@
-.download {
- margin: 3rem 0;
-
- a {
- transition: all 0.3s;
-
- &:hover {
- text-decoration: underline;
- }
- }
-
- .page-column {
- padding: 1.875rem 0;
- }
-
- .maven {
- .page-column-title {
- font-size: 1.5rem;
- }
- }
- .downlaod-document {
- color: var(--ifm-color-primary);
- cursor: pointer;
- padding-left: 0.4rem;
- display: flex;
- align-items: center;
- }
-
- &-box {
- padding: 3.125rem;
- box-shadow: 10px 12px 38px rgba(33, 39, 116, 0.07);
- border-radius: 4px;
- background-color: var(--global-colors-white);
-
- .download-type {
- display: flex;
- align-items: center;
-
- & + .download-type {
- margin-top: 1rem;
- }
-
- &.way {
- align-items: start;
- }
-
- label {
- font-size: var(--global-font-size-default);
- font-weight: 600;
- color: var(--global-colors-text-primary);
- margin-right: 2.125rem;
- flex-shrink: 0;
- width: 9.0625rem;
- }
-
- .tabs-radio {
- flex: 1;
- display: flex;
- align-items: center;
- border-radius: 2px;
-
- .radio {
- border: var(--ifm-color-primary) solid 1px;
- flex: 1;
- text-align: center;
- font-size: var(--global-font-size-medium);
- color: var(--global-colors-text-primary);
- min-height: 3.125rem;
- display: flex;
- flex-direction: column;
- align-items: center;
- justify-content: center;
- cursor: pointer;
-
- &.disabled {
- background-color: var(--global-colors-background);
- cursor: not-allowed;
- border-color: var(--global-colors-split);
- color: var(--global-colors-text);
- }
-
- &.checked {
- background-color: var(--ifm-color-primary);
- color: var(--global-colors-white);
- }
-
- & + .radio {
- margin-left: -1px;
- }
- & + .disabled {
- border-left: none;
- margin-left: 0;
- }
-
- .inner {
- margin: 0.3125rem;
- background-color: #f7faff;
- width: calc(100% - 0.625rem);
- color: var(--ifm-color-primary);
-
- & + .inner {
- margin-top: 0;
- }
- }
- }
- }
- }
- .download-way {
- display: none;
- &.show {
- display: block;
- width: 100%;
- }
- &.all-in-one {
- .theme-code-block {
- font-size: 0.875rem ;
- padding-left: 2rem;
- position: relative;
- &:before {
- content: '$';
- position: absolute;
- left: 1rem;
- top: 50%;
- transform: translateY(-50%);
- font-size: 1rem;
- }
- }
- }
- }
-
- .tips {
- margin-top: 1rem;
- .title {
- color: #556986;
- font-weight: 600;
- font-size: var(--global-font-size-smaller);
- }
- .notice-text {
- font-size: var(--global-font-size-smaller);
- font-weight: 600;
- color: #556986;
- a {
- margin: 0 0.3125rem;
- }
- }
- .notice-dir {
- display: flex;
- // margin-bottom: 0.5rem;
- .notice-dir-name {
- min-width: 10rem;
- padding-left: 3.5rem;
- &.md {
- position: relative;
- &:before {
- position: absolute;
- left: 0.8rem;
- content: '';
- width: 0;
- height: 100%;
- border-left: 1.5px solid #556986;
- }
- &:after {
- position: absolute;
- left: 0.8rem;
- top: 50%;
- content: '';
- width: 2rem;
- height: 0;
- border-top: 1.5px solid #556986;
- }
- }
- &.end {
- position: relative;
- &:before {
- position: absolute;
- left: 0.8rem;
- content: '';
- width: 0;
- height: 50%;
- border-left: 1.5px solid #556986;
- }
- &:after {
- position: absolute;
- left: 0.8rem;
- top: 50%;
- content: '';
- width: 2rem;
- height: 0;
- border-top: 1.5px solid #556986;
- }
- }
- }
- .notice-dir-val {
- margin-left: 1rem;
- }
- }
- ul {
- margin: 0;
- padding: 0;
- padding-left: 0.9375rem;
- li {
- color: #556986;
- font-size: var(--global-font-size-smaller);
- line-height: 1.5;
- font-weight: 600;
- margin-top: 0.3125rem;
-
- code {
- border-radius: 0.125rem;
- border-width: 1px;
- padding: 0.125rem 0.3125rem;
- margin: 0 0.3125rem;
- }
- a {
- margin: 0 0.3125rem;
- }
- }
- }
- }
- }
-
- @media screen and (max-width: 996px) {
- &-box {
- padding: 0;
- box-shadow: none;
-
- .download-type {
- flex-direction: column;
- align-items: flex-start;
-
- label {
- width: 100%;
- }
-
- .tabs-radio {
- width: 100%;
- }
- }
-
- .intr {
- margin-left: 0;
- }
-
- .tips {
- margin-left: 0;
- }
- }
- }
-
- .table-content {
- .content {
- overflow: auto;
- }
-
- table {
- width: 100%;
- display: table;
- margin-bottom: 0;
-
- thead {
- tr {
- background-color: #f7faff;
- border-bottom: none;
- border-top: none;
-
- th {
- font-size: var(--global-font-size-default);
- color: var(--global-colors-text-primary);
- font-weight: 700;
- border-color: #dbe4f3;
- line-height: 1.9;
- white-space: nowrap;
- }
- }
- }
-
- tbody {
- tr {
- td {
- border-color: #dbe4f3;
- font-size: var(--global-font-size-medium);
- white-space: nowrap;
-
- a + a {
- margin-left: 1.25rem;
- }
- }
- }
- }
- }
-
- .more {
- margin-top: 2.5rem;
-
- @media screen and (max-width: 996px) {
- margin-top: 1.5rem;
- }
- }
- }
-
- .verify {
- font-size: var(--global-font-size-smaller);
-
- .page-column {
- line-height: 1.8;
- }
- }
-}
diff --git a/src/pages/_download/index.tsx b/src/pages/_download/index.tsx
deleted file mode 100644
index 26a4a5b6938..00000000000
--- a/src/pages/_download/index.tsx
+++ /dev/null
@@ -1,607 +0,0 @@
-import clsx from 'clsx';
-import CodeBlock from '@theme/CodeBlock';
-import Layout from '../../theme/Layout';
-import Link from '@docusaurus/Link';
-import More from '@site/src/components/More';
-import PageColumn from '@site/src/components/PageColumn';
-import React, { useEffect, useState } from 'react';
-import Translate, { translate } from '@docusaurus/Translate';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import './index.scss';
-import {
- CPUEnum,
- DownloadLinkProps,
- JDKEnum,
- VersionEnum,
- getAllDownloadLinks,
- getAllFlinkConnectorDownloadLinks,
- getAllSparkConnectorDownloadLinks,
- getAllRelease,
-} from '@site/src/constant/download.data';
-import DropdownNavbarItem from '@theme/NavbarItem/DropdownNavbarItem';
-
-const BINARY_VERSION = [
- { label: `${VersionEnum.Latest} ( Latest )`, value: VersionEnum.Latest },
- { label: `${VersionEnum.Prev}`, value: VersionEnum.Prev },
- { label: `${VersionEnum.Earlier} ( Stable )`, value: VersionEnum.Earlier },
-];
-
-const JDK = [
- { label: 'JDK 8', value: JDKEnum.JDK8 },
- { label: 'JDK 11', value: JDKEnum.JDK11 },
-];
-
-export default function Download(): JSX.Element {
- const {
- siteConfig,
- i18n: { currentLocale, locales, localeConfigs },
- } = useDocusaurusContext();
- const dataLocale = currentLocale === 'zh-CN' ? 'zh-CN' : 'en';
-
- const [version, setVersion] = useState<string>(VersionEnum.Latest);
- const [cpus, setCpus] = useState<any[]>([]);
- const [cpu, setCPU] = useState<string>(CPUEnum.IntelAvx2);
- const [jdk, setJDK] = useState<string>(JDKEnum.JDK8);
- const [current, setCurrent] = useState<DownloadLinkProps>();
- const [downloadWay, setDownloadWay] = useState<string>('all-in-one');
-
- const FLINK_CONNECTOR = getAllFlinkConnectorDownloadLinks(dataLocale);
- const SPARK_CONNECTOR = getAllSparkConnectorDownloadLinks(dataLocale);
- const ALL_RELEASE = getAllRelease(dataLocale);
- let ALL_RELEASE_VERSION = {};
- ALL_RELEASE.forEach(item => {
- const info: any = Array.isArray(item.download) ?
item.download.find(item => item.cpu === 'X64 ( avx2 )') : {};
- ALL_RELEASE_VERSION[item.version] = {
- cpu: CPUEnum.IntelAvx2,
- binary: info.binary,
- source: info.source,
- };
- });
- const [releaseUrls, setReleaseUrls] = useState(ALL_RELEASE_VERSION);
-
- const changeVersion = (val: string) => {
- setVersion(val);
- };
- const changeCPU = (val: string) => {
- setCPU(val);
- };
- const changeJDK = (val: string) => {
- // if (version === VersionEnum.Latest && val !== JDKEnum.JDK8) return;
- if (val !== JDKEnum.JDK8) return;
- setJDK(val);
- };
-
- const getDownloadLinks = () => {
- const text = `${version}-${cpu}-${jdk}`;
- const linkObj = getAllDownloadLinks(dataLocale).find(item => item.id
=== text);
- setCurrent(linkObj);
- if (linkObj && !linkObj.sh) {
- setDownloadWay('download');
- }
- };
-
- function downloadFile(url: string) {
- const a = document.createElement('a');
- a.download = url;
- a.href = url;
- a.target = '_blank';
- const clickEvt = new MouseEvent('click', {
- view: window,
- bubbles: true,
- cancelable: true,
- });
- a.dispatchEvent(clickEvt);
- a.remove();
- }
-
- const downloadDocument = () => {
- const url =
- currentLocale === 'zh-CN'
- ? 'https://doris.apache.org/assets/files/Apache Doris Docs
(中文).pdf'
- : 'https://doris.apache.org/assets/files/Apache Doris Docs
(English).pdf';
- downloadFile(url);
- };
-
- const CPU = [
- { label: 'X64 ( avx2 )', value: CPUEnum.IntelAvx2 },
- { label: 'X64 ( no avx2 )', value: CPUEnum.IntelNoAvx2 },
- { label: 'ARM64', value: CPUEnum.ARM },
- ];
-
- const getCpus = version => {
- const currentCpus = [];
- getAllDownloadLinks(dataLocale).forEach(item => {
- if (item.id.includes(version)) {
- const matchCpu = CPU.find(cpu => item.id.includes(cpu.value));
- currentCpus.push(matchCpu);
- }
- });
- return currentCpus;
- };
-
- useEffect(() => {
- getDownloadLinks();
- }, [version, cpu, jdk]);
-
- useEffect(() => {
- const currentCpus = getCpus(version);
- setCpus(currentCpus);
- setCPU(CPUEnum.X64);
- setJDK(JDKEnum.JDK8);
- }, [version]);
-
- function handleCPUChange(cpu: any, currentVersionInfo: any) {
- const info = currentVersionInfo.download.find(item => item.cpu ===
cpu);
- setReleaseUrls({
- ...releaseUrls,
- [currentVersionInfo.version]: {
- binary: info.binary,
- source: info.source,
- },
- });
- }
-
- return (
- <Layout
- title={translate({ id: 'download.title', message: 'Download' })}
- description={translate({
- id: 'homepage.banner.subTitle',
- message: 'An easy-to-use, high-performance and unified
analytical database',
- })}
- wrapperClassName="download"
- >
- <section className="quick-download">
- <PageColumn
- align="left"
- title={
- <Translate id="download.quick.download"
description="Quick Download">
- Quick Download
- </Translate>
- }
- >
- <div className="download-box">
- <div className="download-type">
- <label>
- <Translate id="download.version"
description="Binary Version">
- Version
- </Translate>
- </label>
- <div className="tabs-radio">
- {BINARY_VERSION.map(item => (
- <div
- className={clsx('radio', {
- checked: version === item.value,
- })}
- key={item.value}
- onClick={() =>
changeVersion(item.value)}
- >
- {item.label}
- </div>
- ))}
- </div>
- </div>
- <div className="download-type">
- <label>
- <Translate id="download.cpu.model"
description="CPU Model">
- CPU Model
- </Translate>
- </label>
- <div className="tabs-radio">
- {cpus.map(item => (
- <div
- className={clsx('radio', {
- checked: cpu === item.value,
- })}
- key={item.value}
- onClick={() => changeCPU(item.value)}
- >
- {item.label}
- </div>
- ))}
- </div>
- </div>
- {/* <div className="download-type">
- <label>
- <Translate id="download.jdk.version"
description="JDK Version">
- JDK Version
- </Translate>
- </label>
- <div className="tabs-radio">
- {JDK.map(item => (
- <div
- className={clsx('radio', {
- checked: jdk === item.value,
- // disabled: version ===
VersionEnum.Latest && item.value !== JDKEnum.JDK8,
- disabled: item.value !==
JDKEnum.JDK8,
- })}
- key={item.value}
- onClick={() => changeJDK(item.value)}
- >
- {item.label}
- </div>
- ))}
- </div>
- </div> */}
- {current && current?.sh && (
- <div className="download-type">
- <label>
- <Translate id="download.download.link"
description="Download">
- Download
- </Translate>
- </label>
- <div className="tabs-radio">
- <div
- onClick={() =>
setDownloadWay('all-in-one')}
- className={clsx('radio', {
- checked: downloadWay ===
'all-in-one',
- })}
- >
- <span>Binary</span>
- </div>
-
- <div
- onClick={() =>
setDownloadWay('download')}
- className={clsx('radio', {
- checked: downloadWay ===
'download',
- })}
- >
- <span>Source</span>
- </div>
- </div>
- </div>
- )}
-
- <div className="download-type way">
- <label>
- {!current?.sh && (
- <Translate id="download.download.link"
description="Download">
- Download
- </Translate>
- )}
- </label>
- <div
- className={clsx('download-way all-in-one', {
- show: downloadWay === 'all-in-one',
- })}
- >
- {current && current.sh && (
- <div className="tabs-radio">
- <div className="radio">
- <div className="inner"
key={current.sh?.label}>
- <Link
to={current.sh?.links.source}>{current.sh?.label}</Link>
- <span> ( </span>
- <Link
to={current.sh?.links.signature}>asc</Link>,{' '}
- <Link
to={current.sh?.links.sha512}>sha512</Link>
- <span> )</span>
- </div>
- </div>
- </div>
- )}
- {version === VersionEnum.Latest && (
- <div className="tips">
- <div className="title">
- <Translate
id="Notice">Notice:</Translate>
- </div>
- <div className="notice-text">
- For detailed upgrade precautions,
please refer to the
- <Link
to="https://github.com/apache/doris/issues/27909">2.0.3</Link>
- and the
- <Link
to="/docs/dev/install/standard-deployment">deployment</Link> and
- cluster
- <Link
to="/docs/dev/admin-manual/cluster-management/upgrade">upgrade</Link>
- manual.
- </div>
- </div>
- )}
- </div>
- <div
- className={clsx('download-way', {
- show: downloadWay === 'download',
- })}
- >
- <div className="tabs-radio">
- <div className="radio">
- {current?.items.map(item => (
- <div className="inner"
key={item.label}>
- <Link
to={item?.links.source}>{item?.label}</Link>
- <span> ( </span>
- <Link
to={item?.links.signature}>asc</Link>,{' '}
- <Link
to={item?.links.sha512}>sha512</Link>
- <span> )</span>
- </div>
- ))}
- </div>
- </div>
- </div>
- </div>
- </div>
- </PageColumn>
- </section>
- <section className="table-content">
- <PageColumn
- align="left"
- title={<Translate id="download.release">All
Releases</Translate>}
- footer={
- <More
- text={<Translate
id="download.release.more">More</Translate>}
- link="https://archive.apache.org/dist/doris/"
- />
- }
- >
- <div className="content">
- <table>
- <thead>
- <tr>
- <th>
- <Translate
id="download.all.release.version">Version</Translate>
- </th>
- <th>
- <Translate
id="download.all.release.date">Release Date</Translate>
- </th>
- <th>
- <Translate id="download.cpu.model">CPU
Model</Translate>
- </th>
- <th>
- <Translate
id="download.all.release.download">Download</Translate>
- </th>
- <th>
- <Translate
id="download.all.release.note">Release Notes</Translate>
- </th>
- </tr>
- </thead>
- <tbody>
- {ALL_RELEASE.map((item, index) => (
- <tr key={index}>
- <td>{item.version}</td>
- <td>{item.date}</td>
- <td>
- {/* <DropdownNavbarItem
items={item.download} />, */}
-
- {Array.isArray(item.download) ? (
- <select
- style={{ height: 30 }}
- onChange={e =>
handleCPUChange(e.target.value, item)}
- >
- {item.download.map(item =>
(
- <option key={item.cpu}
value={item.cpu}>
- {item.cpu}
- </option>
- ))}
- </select>
- ) : (
- <></>
- )}
- </td>
- <td>
- {Array.isArray(item.download) ? (
- <div>
- <Link
to={releaseUrls[item.version].source}>
- <Translate
id="download.source">Source</Translate>
- </Link>
- <span style={{ padding: '0
0.28rem' }}>/</span>
- <Link
to={releaseUrls[item.version].binary}>
- <Translate
id="download.all.binary">Binary</Translate>
- </Link>
- </div>
- ) : (
- <Link to={item.download}>
- <Translate
id="download.source.binary">Source / Binary</Translate>
- </Link>
- )}
- </td>
- <td>
- <Link to={item.note}>Release
Notes</Link>
- </td>
- </tr>
- ))}
- </tbody>
- </table>
- </div>
- </PageColumn>
- </section>
- <section className="table-content">
- <PageColumn
- align="left"
- title={
- <Translate id="download.flink.connector"
description="Flink Doris Connector">
- Flink Doris Connector
- </Translate>
- }
- >
- <div className="content">
- <table>
- <thead>
- <tr>
- <th>
- <Translate
id="download.flink.connector.version">Version</Translate>
- </th>
- <th>
- <Translate
id="download.flink.release.date">Release Date</Translate>
- </th>
- <th>
- <Translate
id="download.flink.version">Flink Version</Translate>
- </th>
- <th>
- <Translate
id="download.flink.scala.version">Scala Version</Translate>
- </th>
- <th>
- <Translate
id="download.flink.doris.version">Doris Version</Translate>
- </th>
- <th>
- <Translate
id="download.source">Source</Translate>
- </th>
- </tr>
- </thead>
- <tbody>
- {FLINK_CONNECTOR.map((item, index) => (
- <tr key={index}>
- <td>{item.version}</td>
- <td>{item.date}</td>
- <td>{item.flink}</td>
- <td>{item.scala}</td>
- <td>{item.doris}</td>
- <td>
- <Link to={item.download}>
- <Translate
id="download">Download</Translate>
- </Link>
- <Link
to={item.github}>GitHub</Link>
- </td>
- </tr>
- ))}
- </tbody>
- </table>
- </div>
- </PageColumn>
- </section>
- <section className="maven">
- <PageColumn
- align="left"
- title={
- <Translate id="download.maven" description="Maven">
- Maven
- </Translate>
- }
- >
- <CodeBlock language="xml" title="" showLineNumbers>
- {`<dependency>
- <groupId>org.apache.doris</groupId>
- <artifactId>flink-doris-connector-1.14_2.12</artifactId>
- <!--artifactId>flink-doris-connector-1.13_2.12</artifactId-->
- <!--artifactId>flink-doris-connector-1.12_2.12</artifactId-->
- <!--artifactId>flink-doris-connector-1.11_2.12</artifactId-->
- <!--version>1.0.3</version-->
- <version>1.1.0</version>
-</dependency>`}
- </CodeBlock>
- </PageColumn>
- </section>
- <section className="table-content">
- <PageColumn
- align="left"
- title={
- <Translate id="download.spark.connector"
description="Spark Doris Connector">
- Spark Doris Connector
- </Translate>
- }
- >
- <div className="content">
- <table>
- <thead>
- <tr>
- <th>
- <Translate
id="download.spark.connector.version">Version</Translate>
- </th>
- <th>
- <Translate
id="download.spark.release.date">Release Date</Translate>
- </th>
- <th>
- <Translate
id="download.spark.version">Spark Version</Translate>
- </th>
- <th>
- <Translate
id="download.spark.scala.version">Scala Version</Translate>
- </th>
- <th>
- <Translate
id="download.spark.doris.version">Doris Version</Translate>
- </th>
- <th>
- <Translate
id="download.source">Source</Translate>
- </th>
- </tr>
- </thead>
- <tbody>
- {SPARK_CONNECTOR.map((item, index) => (
- <tr key={index}>
- <td>{item.version}</td>
- <td>{item.date}</td>
- <td>{item.spark}</td>
- <td>{item.scala}</td>
- <td>{item.doris}</td>
- <td>
- <Link to={item.download}>
- <Translate
id="download">Download</Translate>
- </Link>
- <Link
to={item.github}>GitHub</Link>
- </td>
- </tr>
- ))}
- </tbody>
- </table>
- </div>
- </PageColumn>
- </section>
- <section className="maven">
- <PageColumn
- align="left"
- title={
- <Translate id="download.maven" description="Maven">
- Maven
- </Translate>
- }
- >
- <CodeBlock language="xml" title="" showLineNumbers>
- {`<dependency>
- <groupId>org.apache.doris</groupId>
- <artifactId>spark-doris-connector-3.2_2.12</artifactId>
- <!--artifactId>spark-doris-connector-3.1_2.12</artifactId-->
- <!--artifactId>spark-doris-connector-2.3_2.11</artifactId-->
- <!--version>1.0.1</version-->
- <version>1.1.0</version>
-</dependency>`}
- </CodeBlock>
- </PageColumn>
- </section>
- {/* <section className="table-content">
- <PageColumn
- align="left"
- title={
- <Translate id="download.document" description="文档">
- Document
- </Translate>
- }
- >
- <div className="content">
- <p style={{ display: 'flex', alignItems: 'center' }}>
- Click to download the latest
- <span className="downlaod-document"
onClick={downloadDocument}>
- offline documents{' '}
- <img
- style={{ width: '1.2rem', height:
'1.2rem', paddingLeft: '0.2rem' }}
-
src={require('@site/static/images/icon/download.png').default}
- alt=""
- />
- </span>
- </p>
- </div>
- </PageColumn>
- </section> */}
- <section className="verify">
- <PageColumn
- align="left"
- title={
- <Translate id="download.verify" description="Verify">
- Verify
- </Translate>
- }
- >
- <Translate id="download.verify.w1">To verify the
downloaded files, please read</Translate>
- <Link to="/community/release-and-verify/release-verify">
- <Translate id="download.verify.w2"> Verify Apache
Release </Translate>
- </Link>
- <Translate id="download.verify.w3"> and using these
</Translate>
- <Link to="https://downloads.apache.org/doris/KEYS">
- <Translate id="download.verify.w4"> Keys</Translate>
- </Link>
- <Translate id="download.verify.w5">. After verification,
please read</Translate>
- <Link to="/docs/install/source-install/compilation">
- <Translate id="download.verify.w6"> Compilation
</Translate>
- </Link>
- <Translate id="download.verify.w7"> and </Translate>
- <Link to="/docs/install/install-deploy">
- <Translate id="download.verify.w8"> Installation and
Deployment </Translate>
- </Link>
- <Translate id="download.verify.w9"> to compile and install
Doris.</Translate>
- </PageColumn>
- </section>
- </Layout>
- );
-}
diff --git a/src/pages/vendors/index.tsx b/src/pages/_vendors/index.tsx
similarity index 92%
rename from src/pages/vendors/index.tsx
rename to src/pages/_vendors/index.tsx
index 151af71ccfb..29f055e0976 100644
--- a/src/pages/vendors/index.tsx
+++ b/src/pages/_vendors/index.tsx
@@ -1,3 +1,7 @@
+// Parked page: kept for reference but intentionally not routed. The underscore
+// prefix tells Docusaurus to skip it, and /vendors now redirects to the
+// homepage (see buildRedirectIndex in docusaurus.config.js). Restore it by
+// renaming this directory back to `vendors` and dropping that redirect.
import Layout from '../../theme/Layout';
import { VelodbLogo } from '../../components/Icons/velodb-logo';
import Link from '@docusaurus/Link';
diff --git a/src/pages/archive-docs/index.scss
b/src/pages/archive-docs/index.scss
deleted file mode 100644
index e3e8322d1ff..00000000000
--- a/src/pages/archive-docs/index.scss
+++ /dev/null
@@ -1,90 +0,0 @@
-.archive-container {
- padding: 0 1rem;
- width: 100%;
- margin-bottom: 5.5rem;
- .archive-admonition {
- padding: 2rem;
- margin-top: 1.25rem;
- margin-bottom: 1.25rem;
- background-color: rgb(255, 248, 230);
- border-radius: 6px;
- border: 0 solid rgb(230, 167, 0);
- border-left-width: 5px;
- p {
- color: rgb(107, 88, 39);
- font-weight: 600;
- }
- }
- h1 {
- font-size: 2.25rem;
- font-weight: 700;
- line-height: 45px;
- margin-top: 2.875rem;
- margin-bottom: 1.5rem;
- }
- h2 {
- padding-top: 1.25rem;
- margin-top: 2.875rem;
- margin-bottom: 1.25rem;
- font-size: 1.625rem;
- font-weight: 700;
- line-height: 32px;
- }
-
- ul li {
- margin-bottom: 1.25rem;
- color: rgb(85, 95, 115);
- }
-
- .preview-item-content {
- display: flex;
- justify-content: space-between;
- border-bottom: 1px solid #d6dfe6;
- }
-
- .preview-link {
- display: flex;
- align-items: center;
- }
-
- .preview-link > svg {
- margin-left: 8px;
- }
-
- .preview-link:hover {
- cursor: pointer;
- }
-
- .download-link:hover {
- text-decoration: underline;
- color: var(--ifm-color-primary);
- }
-
- .archive-tips-content {
- margin-bottom: 5.5rem;
- }
-
- .latest-version-link {
- color: var(--ifm-color-primary);
- text-decoration: underline;
- }
-
- .preview-item-version {
- font-size: 1.125rem;
- font-weight: 600;
- }
- .preview-link {
- font-size: 1.125rem;
- font-weight: 600;
- }
-}
-
-@media (min-width: 1280px) {
- .archive-container {
- margin: 0 0 5.5rem 5rem;
- width: 834px;
- .archive-admonition {
- max-width: 75%;
- }
- }
-}
diff --git a/src/pages/archive-docs/index.tsx b/src/pages/archive-docs/index.tsx
deleted file mode 100644
index 44c96f34ed8..00000000000
--- a/src/pages/archive-docs/index.tsx
+++ /dev/null
@@ -1,165 +0,0 @@
-import React from 'react';
-import Layout from '@site/src/theme/Layout';
-import Link from '@docusaurus/Link';
-import Translate, { translate } from '@docusaurus/Translate';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import PdfIcon from '@site/static/images/toc-icon/pdf.svg';
-import { getLocalePrefix } from '@site/src/utils/locale';
-import './index.scss';
-
-const PREVIEW_LINK_ZH =
'https://cdn.selectdb.com/static/doris_1_2_2_18e810982b.pdf';
-const PREVIEW_LINK_EN =
'https://cdn.selectdb.com/static/doris_1_2_en_0d0a9b6a03.pdf';
-const PREVIEW_LINK_V20 =
'https://doris.apache.org/pdf/Apache_Doris_v2_0_0b89998444.pdf';
-
-const DATE_LINK = '2025-01-17';
-
-export default function Archive() {
- const {
- i18n: { currentLocale, defaultLocale },
- } = useDocusaurusContext();
- const isZH = currentLocale === 'zh-CN';
- const localePrefix = getLocalePrefix(currentLocale, defaultLocale);
- const handleMouseEnter = (id: string) => {
- const dom = document.getElementById(id);
- dom!.style.color = 'var(--brand-primary)';
- dom!.firstChild!.style.fill = 'var(--brand-primary)';
- };
-
- const handleMouseLeave = (id: string) => {
- const dom = document.getElementById(id);
- dom!.style.color = '#7F7F83';
- dom!.firstChild!.style.fill = '#7F7F83';
- };
-
- return (
- <Layout
- title={translate({
- id: 'archive.layout.title',
- message: 'Apache Doris - Archive Document Center',
- })}
- description={translate({
- id: 'archive.layout.description',
- message: 'Collection of Apache doris archive documents',
- })}
- >
- <div className="archive-container">
- <h1>
- <Translate id="archive.page.title">Archived
Docs</Translate>
- </h1>
- {/* <div className="archive-admonition">
- <p>
- <Translate id="archive.admonition.1">
- The older releases are provided for archival
purposes only, and are no longer receives
- updates.
- </Translate>
- </p>
- <p>
- <Translate
- id="archive.page.2"
- values={{
- stableLink: (
- <Link to={`/${isZH ? 'zh-CN/' :
''}docs/gettingStarted/what-is-apache-doris`}>
- <Translate
id="archive.admonition.stable">version(2.1)</Translate>
- </Link>
- ),
- latestLink: (
- <Link to={`/${isZH ? 'zh-CN/' :
''}docs/3.0/gettingStarted/what-is-apache-doris`}>
- <Translate
id="archive.admonition.latest">version(3.0)</Translate>
- </Link>
- ),
- }}
- >
- {'For up-to-date documentation,please see the
{stableLink} or {latestLink}'}
- </Translate>
- </p>
- </div> */}
- {/* <h2>
- <Translate
id="archive.page.version">Version:1.2</Translate>
- </h2>
- <ul>
- <li>
- <Translate
- id="archive.preview.v12"
- values={{
- previewLink: (
- <Link to={isZH ? PREVIEW_LINK_ZH :
PREVIEW_LINK_EN}>
- <Translate
id="archive.preview.link">Apache Doris v1.2</Translate>
- </Link>
- ),
- }}
- >
- {'Archived documentation: {previewLink}'}
- </Translate>{' '}
- </li>
- <li>
- <Translate
- id="archive.preview.date"
- values={{
- date: <span>{DATE_LINK}</span>,
- }}
- >
- {'Archive date: {date}'}
- </Translate>
- </li>
- </ul> */}
- <p className="archive-tips-content">
- <Translate id="archive-tips-1">
- This page archives all documents of Apache Doris's
discontinued maintenance versions and
- provides PDF format for users to download.
- </Translate>
- <br />
- <br />
- <Translate
- id="archive-tips-2"
- values={{
- latestVersion: (
- <Link
- className="latest-version-link"
-
to={`${localePrefix}/docs/3.x/gettingStarted/what-is-apache-doris`}
- >
- <Translate
id="archive.latest.version">latest version</Translate>
- </Link>
- ),
- }}
- >
- {
- 'Please note that archived documents no longer
receive updates; therefore, Doris encourages you to use the {latestVersion}.'
- }
- </Translate>
- </p>
- {isZH && (
- <div className="preview-item-content">
- <div className="preview-item-version">Apache Doris
v2.0</div>
- <a href={PREVIEW_LINK_V20} target="_blank"
rel="noreferrer">
- <div
- className="preview-link"
- style={{ color: '#7F7F83' }}
- id="toc-icon-pdf-v20"
- onMouseEnter={() =>
handleMouseEnter('toc-icon-pdf-v20')}
- onMouseLeave={() =>
handleMouseLeave('toc-icon-pdf-v20')}
- >
- <PdfIcon />
- <Translate id="archive-download-text">Download
PDF</Translate>
- </div>
- </a>
- </div>
- )}
- <div className="preview-item-content">
- <div className="preview-item-version">Apache Doris
v1.2</div>
- <Link to={isZH ? PREVIEW_LINK_ZH : PREVIEW_LINK_EN}>
- <div
- className="preview-link"
- style={{ color: '#7F7F83' }}
- id="toc-icon-pdf-v12"
- onMouseEnter={() =>
handleMouseEnter('toc-icon-pdf-v12')}
- onMouseLeave={() =>
handleMouseLeave('toc-icon-pdf-v12')}
- >
- <PdfIcon />
- <Translate id="archive-download-text">Download
PDF</Translate>
- </div>
- </Link>
- </div>
- </div>
- </Layout>
- );
-}
diff --git a/src/pages/learning/index.tsx b/src/pages/learning/index.tsx
deleted file mode 100644
index 4e1e80bc161..00000000000
--- a/src/pages/learning/index.tsx
+++ /dev/null
@@ -1,341 +0,0 @@
-import Layout from '../../theme/Layout';
-import React from 'react';
-import useDocusaurusContext from '@docusaurus/useDocusaurusContext';
-import Translate, { translate } from '@docusaurus/Translate';
-import './siteMap.scss';
-import Link from '@docusaurus/Link';
-import More from '@site/src/components/More/index';
-import PageColumn from '@site/src/components/PageColumn';
-
-const sitemapList = [
- {
- title: <Translate>Get Started</Translate>,
- icon: require('@site/static/images/sitemap/sitemap-start.png').default,
- list: [
- {
- title: <Translate>Introduction to Apache Doris</Translate>,
- link: '/docs/dev/get-starting/what-is-apache-doris',
- },
- {
- title: <Translate>Get Started</Translate>,
- link: '/docs/dev/get-starting/quick-start/quick-start',
- },
- {
- title: <Translate>Installation and deployment</Translate>,
- link: '/docs/dev/install/standard-deployment',
- },
- {
- title: <Translate>Compilation</Translate>,
- link: '/docs/dev/install/source-install/compilation-general',
- },
- ],
- },
- {
- title: <Translate>Table Design</Translate>,
- icon: require('@site/static/images/sitemap/sitemap-model.png').default,
- list: [
- {
- title: <Translate>Data Model</Translate>,
- link: '/docs/dev/data-table/data-model',
- },
- {
- title: <Translate>Data Partition</Translate>,
- link: '/docs/dev/data-table/data-partition',
- },
- {
- title: <Translate>Guidelines for Creating Table</Translate>,
- link: '/docs/dev/data-table/basic-usage',
- },
- {
- title: <Translate>Rollup and Query</Translate>,
- link: '/docs/dev/data-table/hit-the-rollup',
- },
- {
- title: <Translate>Practices of Creating Table</Translate>,
- link: '/docs/dev/data-table/best-practice',
- },
- {
- title: <Translate>Index</Translate>,
- link: '/docs/dev/data-table/index/index-overview',
- },
- ],
- },
- {
- title: <Translate>Data Import</Translate>,
- icon:
require('@site/static/images/sitemap/sitemap-refresh.png').default,
- list: [
- {
- title: <Translate>Import Overview</Translate>,
- link: '/docs/dev/data-operate/import/load-manual',
- },
- {
- title: <Translate>Import Local Data</Translate>,
- link:
'/docs/dev/data-operate/import/import-scenes/local-file-load',
- },
- {
- title: <Translate>Import External Storage Data</Translate>,
- link:
'/docs/dev/data-operate/import/import-scenes/external-storage-load',
- },
- {
- title: <Translate>Subscribe Kafka Data</Translate>,
- link: '/docs/dev/data-operate/import/import-scenes/kafka-load',
- },
- {
- title: <Translate>Synchronize Data Through External
Table</Translate>,
- link:
'/docs/dev/data-operate/import/import-scenes/external-table-load',
- },
- ],
- },
- {
- title: <Translate>Data Export</Translate>,
- icon:
require('@site/static/images/sitemap/sitemap-setting.png').default,
- list: [
- {
- title: <Translate>Export Data</Translate>,
- link: '/docs/dev/data-operate/export/export-manual',
- },
- {
- title: <Translate>Export Query Result</Translate>,
- link: '/docs/dev/data-operate/export/outfile',
- },
- {
- title: <Translate>Export Table Structure or Data</Translate>,
- link: '/docs/dev/data-operate/export/export-with-mysql-dump',
- },
- {
- title: <Translate>Data Backup</Translate>,
- link: '/docs/dev/admin-manual/data-admin/backup',
- },
- ],
- },
- {
- title: <Translate>Update and Delete</Translate>,
- icon:
require('@site/static/images/sitemap/sitemap-export.png').default,
- list: [
- {
- title: <Translate>Update</Translate>,
- link: '/docs/dev/data-operate/update-delete/update',
- },
- {
- title: <Translate>Delete</Translate>,
- link: '/docs/dev/data-operate/update-delete/delete-manual',
- },
- {
- title: <Translate>Batch Delete</Translate>,
- link:
'/docs/dev/data-operate/update-delete/batch-delete-manual',
- },
- {
- title: <Translate>Sequence Column</Translate>,
- link:
'/docs/dev/data-operate/update-delete/sequence-column-manual',
- },
- ],
- },
- {
- title: <Translate>Advanced Usage</Translate>,
- icon: require('@site/static/images/sitemap/sitemap-book.png').default,
- list: [
- {
- title: <Translate>Schema Change</Translate>,
- link: '/docs/dev/advanced/alter-table/schema-change',
- },
- {
- title: <Translate>Dynamic Partition</Translate>,
- link: '/docs/dev/advanced/partition/dynamic-partition',
- },
- {
- title: <Translate>Data Cache</Translate>,
- link: '/docs/dev/advanced/cache/partition-cache',
- },
- {
- title: <Translate>Join Optimization</Translate>,
- link:
'/docs/dev/query-acceleration/join-optimization/doris-join-optimization',
- },
- {
- title: <Translate>Materialized view</Translate>,
- link: '/docs/dev/query-acceleration/materialized-view',
- },
- {
- title: <Translate>BITMAP Precise De-Duplication</Translate>,
- link: '/docs/dev/advanced/orthogonal-bitmap-manual',
- },
- {
- title: <Translate>HLL ApproximateDe-duplication</Translate>,
- link: '/docs/dev/advanced/using-hll',
- },
- {
- title: <Translate>Variables</Translate>,
- link: '/docs/dev/advanced/variables',
- },
- {
- title: <Translate>Time Zone</Translate>,
- link: '/docs/dev/advanced/time-zone',
- },
- {
- title: <Translate>File Manager</Translate>,
- link: '/docs/dev/advanced/small-file-mgr',
- },
- ],
- },
- {
- title: <Translate>Ecosystem</Translate>,
- icon:
require('@site/static/images/sitemap/sitemap-search.png').default,
- list: [
- {
- title: <Translate>Spark Doris Connector</Translate>,
- link: '/docs/dev/ecosystem/spark-doris-connector',
- },
- {
- title: <Translate>Flink Doris Connector</Translate>,
- link: '/docs/dev/ecosystem/flink-doris-connector',
- },
- {
- title: <Translate>Seatunnel Connector</Translate>,
- link: '/docs/dev/ecosystem/seatunnel',
- },
- {
- title: <Translate>DataX doriswriter</Translate>,
- link: '/docs/dev/ecosystem/datax',
- },
- {
- title: <Translate>UDF</Translate>,
- link: '/docs/dev/ecosystem/udf/java-user-defined-function',
- },
- {
- title: <Translate>Audit log plugin</Translate>,
- link: '/docs/dev/ecosystem/audit-plugin',
- },
- ],
- },
- {
- title: <Translate>SQL Manual</Translate>,
- icon: require('@site/static/images/sitemap/sitemap-sql.png').default,
- list: [
- {
- title: <Translate>SQL Function</Translate>,
- link:
'/docs/dev/sql-manual/sql-functions/array-functions/array',
- },
- {
- title: <Translate>DDL</Translate>,
- link:
'/docs/dev/sql-manual/sql-reference/Data-Definition-Statements/Create/CREATE-CATALOG',
- },
- {
- title: <Translate>DML</Translate>,
- link:
'/docs/dev/sql-manual/sql-reference/Data-Manipulation-Statements/Manipulation/INSERT',
- },
- {
- title: <Translate>Data Types</Translate>,
- link: '/docs/dev/sql-manual/sql-reference/Data-Types/BOOLEAN',
- },
- {
- title: <Translate>Utility</Translate>,
- link:
'/docs/dev/sql-manual/sql-reference/Utility-Statements/HELP',
- },
- ],
- },
- {
- title: <Translate>Cluster Management</Translate>,
- icon: require('@site/static/images/sitemap/sitemap-admin.png').default,
- list: [
- {
- title: <Translate>Cluster Upgrade</Translate>,
- link: '/docs/dev/admin-manual/cluster-management/upgrade',
- },
- {
- title: <Translate>Elastic Scaling</Translate>,
- link:
'/docs/dev/admin-manual/cluster-management/elastic-expansion',
- },
- {
- title: <Translate>Statistics of Query Execution</Translate>,
- link: '/docs/dev/admin-manual/query-profile',
- },
- {
- title: <Translate>Maintenance and Monitor</Translate>,
- link: '/docs/dev/admin-manual/maint-monitor/monitor-alert',
- },
- {
- title: <Translate>Metadata Operation</Translate>,
- link:
'/docs/dev/admin-manual/maint-monitor/metadata-operation',
- },
- {
- title: <Translate>Error Code</Translate>,
- link: '/docs/dev/admin-manual/maint-monitor/doris-error-code',
- },
- {
- title: <Translate>Config</Translate>,
- link: '/docs/dev/admin-manual/config/fe-config',
- },
- {
- title: <Translate>Authority Management</Translate>,
- link: '/docs/dev/admin-manual/privilege-ldap/user-privilege',
- },
- {
- title: <Translate>Multi-tenancy</Translate>,
- link: '/docs/dev/admin-manual/multi-tenant',
- },
- ],
- },
- {
- title: <Translate>FAQ</Translate>,
- icon:
require('@site/static/images/sitemap/sitemap-question.png').default,
- list: [
- {
- title: <Translate>FAQs of Operation and
Maintenance</Translate>,
- link: '/docs/dev/faq/install-faq',
- },
- {
- title: <Translate>FAQs of Data Operation</Translate>,
- link: '/docs/dev/faq/data-faq',
- },
- {
- title: <Translate>SQL FAQs</Translate>,
- link: '/docs/dev/faq/sql-faq',
- },
- ],
- },
-];
-export default function Learning(): JSX.Element {
- const { siteConfig } = useDocusaurusContext();
- return (
- <Layout
- title={translate({ id: 'sitemap.title', message: 'Learning Path'
})}
- description={translate({
- id: 'sitemap.subTitle',
- message: '',
- })}
- >
- <section className="sitemap">
- <PageColumn
- align="left"
- title={
- <Translate id="sitemap.page.title" description="">
- Learning Path
- </Translate>
- }
- subTitle={
- <Translate id="sitemap.page.subTitle" description="">
- Start your journey here to discover infinite
possibilities with Apache Doris.
- </Translate>
- }
- >
- <div className="sitemap-list row">
- {sitemapList.map((item, index) => (
- <div className="sitemap-item" key={index}>
- <div
className="sitemap-title">{item.title}</div>
- <div className="sitemap-icon">
- <img src={item.icon} alt="" />
- </div>
- <div className="sitemap-paths">
- {item.list.map(path => (
- <Link to={path.link} key={path.link}
className="path-link">
- {path.title}
- </Link>
- ))}
- </div>
- </div>
- ))}
- </div>
- </PageColumn>
- </section>
- </Layout>
- );
-}
diff --git a/src/pages/learning/siteMap.scss b/src/pages/learning/siteMap.scss
deleted file mode 100644
index be4e7db7a77..00000000000
--- a/src/pages/learning/siteMap.scss
+++ /dev/null
@@ -1,104 +0,0 @@
-.sitemap {
- .page-column {
- padding-top: 3rem;
- }
-}
-
-.sitemap-list {
- display: flex;
- flex-direction: column;
- padding: 0 1rem;
- line-height: 1.6;
- margin-top: 3rem;
-
- .sitemap-item {
- display: flex;
- align-items: center;
- position: relative;
- padding-bottom: 1.25rem;
-
- &:first-child .sitemap-icon:after {
- top: 50%;
- }
-
- &:last-child .sitemap-icon:after {
- bottom: 50%;
- }
-
- .sitemap-title {
- font-size: 1.2rem;
- width: 12rem;
- }
-
- .sitemap-icon {
- padding: 0 3rem;
- display: flex;
- align-items: center;
-
- img {
- width: 2.6rem;
- height: 2.6rem;
- position: relative;
- z-index: 2;
- }
-
- &:after {
- content: '';
- border-left: 1px solid #F0F1FC;
- position: absolute;
- left: 16.3rem;
- top: 0;
- bottom: 0;
- }
- }
-
- .sitemap-paths {
- flex: 1;
- border: 1px solid #E6E8FB;
- color: #252734;
- font-size: 1rem;
- padding: 0.8rem 0.8rem;
-
- .path-link {
- display: inline-block;
- width: 33.333%;
- padding: 0 0.5rem;
- overflow: hidden;
- white-space: nowrap;
- text-overflow: ellipsis;
- line-height: 2;
- color: #484954;
- text-decoration: none;
-
- &:hover {
- color: var(--ifm-color-primary);
- }
- }
- }
- }
-}
-
-@media (max-width: 996px) {
- .sitemap-list {
- .sitemap-item {
- .sitemap-title {
- width: 7rem;
- padding-right: 0.4rem;
- word-break: break-word;
- }
-
- .sitemap-icon {
- display: none;
- }
-
- .sitemap-paths {
- padding: 0.6rem;
-
- .path-link {
- width: 50%;
- }
- }
- }
- }
-
-}
\ No newline at end of file
diff --git a/static/images/sitemap/sitemap-admin.png
b/static/images/sitemap/sitemap-admin.png
deleted file mode 100644
index 7f2b396377b..00000000000
Binary files a/static/images/sitemap/sitemap-admin.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-book.png
b/static/images/sitemap/sitemap-book.png
deleted file mode 100644
index b995857f313..00000000000
Binary files a/static/images/sitemap/sitemap-book.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-export.png
b/static/images/sitemap/sitemap-export.png
deleted file mode 100644
index 6895360af34..00000000000
Binary files a/static/images/sitemap/sitemap-export.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-model.png
b/static/images/sitemap/sitemap-model.png
deleted file mode 100644
index aef5d276584..00000000000
Binary files a/static/images/sitemap/sitemap-model.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-question.png
b/static/images/sitemap/sitemap-question.png
deleted file mode 100644
index de920cd13c2..00000000000
Binary files a/static/images/sitemap/sitemap-question.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-refresh.png
b/static/images/sitemap/sitemap-refresh.png
deleted file mode 100644
index a08a27bf353..00000000000
Binary files a/static/images/sitemap/sitemap-refresh.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-search.png
b/static/images/sitemap/sitemap-search.png
deleted file mode 100644
index ba7babe3fcb..00000000000
Binary files a/static/images/sitemap/sitemap-search.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-setting.png
b/static/images/sitemap/sitemap-setting.png
deleted file mode 100644
index 66e05964e16..00000000000
Binary files a/static/images/sitemap/sitemap-setting.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-sql.png
b/static/images/sitemap/sitemap-sql.png
deleted file mode 100644
index 26d3aedeede..00000000000
Binary files a/static/images/sitemap/sitemap-sql.png and /dev/null differ
diff --git a/static/images/sitemap/sitemap-start.png
b/static/images/sitemap/sitemap-start.png
deleted file mode 100644
index 12fe09063cc..00000000000
Binary files a/static/images/sitemap/sitemap-start.png and /dev/null differ
diff --git a/static/images/toc-icon/pdf.svg b/static/images/toc-icon/pdf.svg
deleted file mode 100644
index 6edc4f74554..00000000000
--- a/static/images/toc-icon/pdf.svg
+++ /dev/null
@@ -1,5 +0,0 @@
-<svg width="21" height="20" viewBox="0 0 21 20" fill="#7F7F83"
xmlns="http://www.w3.org/2000/svg">
- <path
- d="M15.9444 3H5.05552C4.19998 3 3.5 3.70001 3.5 4.55559V15.4445C3.5
16.3 4.19998 17 5.05552 17H15.9444C16.8 17 17.5 16.3 17.5 15.4445V4.55559C17.5
3.70005 16.8 3 15.9444 3ZM10.1528 8.99791C9.97401 9.57345 9.76864 10.4635
9.46656 11.1952C9.31081 11.5909 9.31836 11.522 9.20126 11.7719L9.30237
11.7391C10.3415 11.4483 11.0691 11.3762 11.7457 11.2517C11.6099 11.1445 11.4919
11.0616 11.3985 10.9761C10.9336 10.4614 10.7714 10.3648 10.1528
8.99791ZM15.2525 12.2945C15.1202 12.4423 14.8869 [...]
- />
-</svg>
\ No newline at end of file
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]