Skip to content

Commit

Permalink
feat: support base URL for doc layout
Browse files Browse the repository at this point in the history
  • Loading branch information
ourai committed Apr 18, 2023
1 parent 46cad76 commit 585901d
Show file tree
Hide file tree
Showing 4 changed files with 16 additions and 12 deletions.
12 changes: 7 additions & 5 deletions src/hexo/themes/lime/layout/_ksio/components/doc-toc.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -7,18 +7,20 @@
<li>
<% const _inc_collection = _inc_item.collection || collection %>
<% const _inc_docs = (site.data[`knosys/${repo}/${_inc_collection}`] || {}).items %>
<% const _inc_url_parts = page.path.replace('/index.html', '').slice(1).split('/') %>
<% const _inc_base_part = base || '' %>
<% const _inc_base_url = `${_inc_site_url}${_inc_base_part}` %>
<% const _inc_url_parts = page.path.replace('/index.html', '').replace(base ? new RegExp(`^${_inc_base_part}`) : '', '').slice(1).split('/') %>
<% if (_inc_item.items) { %>
<span><%= _inc_item.text %></span>
<%- partial('_ksio/components/doc-toc', { repo, items: _inc_item.items, collection: _inc_collection }) %>
<%- partial('_ksio/components/doc-toc', { repo, items: _inc_item.items, base: _inc_base_part, collection: _inc_collection }) %>
<% } else if (_inc_item.slug) { %>
<% if (_inc_collection === 'pages') { %>
<a<% if (_inc_item.slug === _inc_url_parts[1] && _inc_url_parts.length === 2) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_item.slug %>/"><%= _inc_item.text %></a>
<a<% if (_inc_item.slug === _inc_url_parts[1] && _inc_url_parts.length === 2) { %> class="is-selected"<% } %> href="<%= _inc_base_url %>/<%= _inc_item.slug %>/"><%= _inc_item.text %></a>
<% } else { %>
<a<% if (_inc_item.slug === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_collection %>/<%= _inc_item.slug %>/"><%= _inc_docs[_inc_item.slug].title %></a>
<a<% if (_inc_item.slug === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_base_url %>/<%= _inc_collection %>/<%= _inc_item.slug %>/"><%= _inc_docs[_inc_item.slug].title %></a>
<% } %>
<% } else { %>
<a<% if (_inc_item === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_site_url %>/<%= _inc_collection %>/<%= _inc_item %>/"><%= _inc_docs[_inc_item].title %></a>
<a<% if (_inc_item === _inc_url_parts.slice(-1)[0]) { %> class="is-selected"<% } %> href="<%= _inc_base_url %>/<%= _inc_collection %>/<%= _inc_item %>/"><%= _inc_docs[_inc_item].title %></a>
<% } %>
</li>
<% }) %>
Expand Down
2 changes: 1 addition & 1 deletion src/hexo/themes/lime/layout/_ksio/layouts/doc.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
<% if (repo && repo.toc) { %>
<aside class="Page-aside">
<div class="AsideBrand"><%- partial('_ksio/components/brand-link', { className: '' }) %></div>
<nav class="AsideNav"><%- partial('_ksio/components/doc-toc', { repo: page.repo, items: repo.toc, collection: repo.collection }) %></nav>
<nav class="AsideNav"><%- partial('_ksio/components/doc-toc', { repo: page.repo, items: repo.toc, base: repo.base, collection: repo.collection }) %></nav>
</aside>
<% } %>
<main class="Page-main">
Expand Down
12 changes: 7 additions & 5 deletions src/jekyll/_includes/ksio/components/doc-toc.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,18 +4,20 @@
<li>
{% assign _inc_collection = _inc_item.collection | default: include.collection %}
{% assign _inc_docs = site.data.knosys[include.repo][_inc_collection].items %}
{% assign _inc_url_parts = page.id | split: "/" %}
{% assign _inc_base_part = include.base | default: "" %}
{% assign _inc_base_url = _inc_site_url | append: _inc_base_part %}
{% assign _inc_url_parts = page.id | replace: _inc_base_part, "" | split: "/" %}
{% if _inc_item.items %}
<span>{{ _inc_item.text }}</span>
{% include ksio/components/doc-toc.html repo=include.repo items=_inc_item.items collection=_inc_collection %}
{% include ksio/components/doc-toc.html repo=include.repo items=_inc_item.items base=_inc_base_part collection=_inc_collection %}
{% elsif _inc_item.slug %}
{% if _inc_collection == "pages" %}
<a{% if _inc_item.slug == _inc_url_parts[1] and _inc_url_parts.size == 2 %} class="is-selected"{% endif %} href="{{_inc_site_url}}/{{ _inc_item.slug }}/">{{ _inc_item.text }}</a>
<a{% if _inc_item.slug == _inc_url_parts[1] and _inc_url_parts.size == 2 %} class="is-selected"{% endif %} href="{{_inc_base_url}}/{{ _inc_item.slug }}/">{{ _inc_item.text }}</a>
{% else %}
<a{% if _inc_item.slug == _inc_url_parts[2] %} class="is-selected"{% endif %} href="{{ _inc_site_url }}/{{ _inc_collection | append: '/' | append: _inc_item.slug }}/">{{ _inc_docs[_inc_item.slug].title }}</a>
<a{% if _inc_item.slug == _inc_url_parts[2] %} class="is-selected"{% endif %} href="{{ _inc_base_url }}/{{ _inc_collection | append: '/' | append: _inc_item.slug }}/">{{ _inc_docs[_inc_item.slug].title }}</a>
{% endif %}
{% else %}
<a{% if _inc_item == _inc_url_parts[2] %} class="is-selected"{% endif %} href="{{ _inc_site_url }}/{{ _inc_collection | append: '/' | append: _inc_item }}/">{{ _inc_docs[_inc_item].title }}</a>
<a{% if _inc_item == _inc_url_parts[2] %} class="is-selected"{% endif %} href="{{ _inc_base_url }}/{{ _inc_collection | append: '/' | append: _inc_item }}/">{{ _inc_docs[_inc_item].title }}</a>
{% endif %}
</li>
{% endfor %}
Expand Down
2 changes: 1 addition & 1 deletion src/jekyll/_layouts/ksio/doc.html
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@
{% if repo and repo.toc %}
<aside class="Page-aside">
<div class="AsideBrand">{% include ksio/components/brand-link.html %}</div>
<nav class="AsideNav">{% include ksio/components/doc-toc.html repo=page.repo items=repo.toc collection=repo.collection %}</nav>
<nav class="AsideNav">{% include ksio/components/doc-toc.html repo=page.repo items=repo.toc base=repo.base collection=repo.collection %}</nav>
</aside>
{% endif %}
<main class="Page-main">
Expand Down

0 comments on commit 585901d

Please sign in to comment.