jekyll-theme-paperwiki 0.1.1 → 0.1.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e4fdedc32cb88321f3a4f385ebce2e51ff63a50f04a1d0bda529fca11039a519
4
- data.tar.gz: 666179a519fad2588b6c4fac26a9fa5434e7f4720efe5b2f953105d1e5d7c3b0
3
+ metadata.gz: 537ec88608639efc7b930c4eacc4763b95cfd9afcf252d0e29bcb382032814ac
4
+ data.tar.gz: c5775b9cbf924df74540b1024700ebf47f827342d4b310bbf97ca65518ed5e59
5
5
  SHA512:
6
- metadata.gz: d8ee82260e046e1983299f4637de1bddb380c809ecced5a7462696ca78c085b3d6fdfe07c6c9ac60a3e759235c4869b1b30d6d41e2707448ad06452e0544170d
7
- data.tar.gz: 10faec06628838ef30f2cab51831f1397988a28e5bc9a35151f2cca1055c9a7e033e9442c7ee21a3f5b429969ed6a6b46140bc4a34e19f248cfd46b99a0dff5e
6
+ metadata.gz: 496115be9955cc434f57331c3f3afb2e6259310253a3b81be7881a0af5bc332b50d49471420fd7e11ee1a3b1f73f9e23356ea40d706b98bcaabfbc8e0bd5d001
7
+ data.tar.gz: 86f7cb061499a6c94431b816775d4ad1ced49a2f99f8bb6ca6d5dd7c0f5cc9340f4c87077e7c2e6a3b1b7b6fb168105525872adcd0fb751eab8c4be285d7d8bf
data/README.md CHANGED
@@ -21,7 +21,9 @@ This theme comes with all of these prepackaged, so most of what you have to do i
21
21
 
22
22
  [Install Jekyll](https://jekyllrb.com/docs/). Create a new site by running the following in your terminal:
23
23
 
24
- $ jekyll new MYSITENAME
24
+ ```
25
+ $ jekyll new MYSITENAME
26
+ ```
25
27
 
26
28
  This will give you a very bare bones Jekyll site, with an index page, a folder for blog posts, a config file, and a Gemfile. You will want to add a folder called `collections`, and inside of that another folder called `_wiki`.
27
29
 
@@ -49,7 +51,24 @@ Or install it yourself as:
49
51
  $ gem install jekyll-theme-paperwiki
50
52
  ```
51
53
 
54
+ To serve your site locally, navigate into the site's directory and run:
55
+
56
+ ```
57
+ $ bundle exec jekyll serve
58
+ ```
59
+
60
+ Navigate to your localhost and voila! Start adding articles in your wiki collections folder.
61
+
62
+ All of your wiki pages should be written in markdown, and you must begin each `.md` file like so:
63
+
64
+ ```
65
+ ---
66
+ ---
67
+ ```
68
+
69
+ Between these two lines is where you would include *front matter*, such as specifying the layout or the permalink to the page. Jekyll needs to know that the front matter is there in order to output the page. However, you can leave the front matter blank - wiki pages have layouts and permalinks set by default in the theme's config file, and you only need to specify them if you want to override the defaults. You also do not need to specify a title for the page, as it is automatically taken from the filename.
52
70
 
71
+
53
72
 
54
73
  ## Config
55
74
 
@@ -100,6 +119,6 @@ The theme is available as open source under the terms of the [MIT License](https
100
119
 
101
120
  ## Credits
102
121
 
103
- This theme uses the fonts [Inter](https://rsms.me/inter/), [Libertinus Serif](https://github.com/alerque/libertinus), and [Liberation Mono](https://fontlibrary.org/en/font/liberation-mono), all of which are released under the SIL Open Font License; and the icon font [RemixIcon](https://remixicon.com/), which is available under the Apache License 2.0. The [example favicon](https://www.flaticon.com/free-icon/picture_4671171) is by Royyan Wijaya at Flaticon.
122
+ This theme uses the fonts [Inter](https://rsms.me/inter/), [Libertinus Serif](https://github.com/alerque/libertinus), and [Liberation Mono](https://fontlibrary.org/en/font/liberation-mono), all of which are released under the SIL Open Font License; and the icon font [RemixIcon](https://remixicon.com/), which is available under the Apache License 2.0. The [example favicon](https://www.flaticon.com/free-icon/toucan_3002355) is by Freepik at Flaticon.
104
123
 
105
124
  The search function uses [Lunr.js](https://lunrjs.com/).
data/_config.yml CHANGED
@@ -17,11 +17,8 @@
17
17
  # you will see them accessed via {{ site.title }}, {{ site.email }}, and so on.
18
18
  # You can create any custom variable you would like, and they will be accessible
19
19
  # in the templates via {{ site.myvariable }}.
20
- title: Your Title Here
21
20
 
22
21
  # Build settings
23
- theme: jekyll-theme-paperwiki
24
- include: ['_pages'] # forces custom pages to be organized into their own directory
25
22
 
26
23
  # Exclude from processing.
27
24
  # The following items will not be processed, by default.
@@ -50,6 +47,9 @@ collections:
50
47
  output: true
51
48
  permalink: /:collection/:name
52
49
 
50
+ random_redirect:
51
+ pages: true
52
+
53
53
  # Front matter defaults, so you don't need to set layouts on every new page.
54
54
  # As long as pages are in the correct folder, they'll automatically have the
55
55
  # correct layout. You can override this via each page's front matter.
@@ -59,7 +59,7 @@ defaults:
59
59
  path: "" # an empty string here means all files in the project
60
60
  type: "pages"
61
61
  values:
62
- layout: "page"
62
+ layout: "page" # all pages will have the page.html layout unless overridden
63
63
  permalink: "/:path/:basename"
64
64
  -
65
65
  scope:
data/_data/navigation.yml CHANGED
@@ -1,4 +1,6 @@
1
1
  - name: About
2
2
  link: /about
3
+ - name: Random
4
+ link: /random
3
5
  - name: Blog
4
6
  link: /blog
@@ -0,0 +1,30 @@
1
+ <section class="collections-header">
2
+
3
+ <section class="collections-stats">
4
+ {% for item in site.data.projects %}
5
+ {% if page.url contains item.link %}
6
+ Total number of {{ item.name | downcase }} entries:
7
+ {% if item.name == "Wiki" %}
8
+ {{ site.wiki.size }}
9
+ {% else %}
10
+ ? for now
11
+ {% endif %}
12
+ {% endif %}
13
+ {% endfor %}
14
+ </section>
15
+
16
+
17
+
18
+ <section class="collections-search">
19
+
20
+ {% for item in site.data.projects %}
21
+ {% if page.url contains item.link %}
22
+ <form action="{{ item.link }}:search" method="GET">
23
+ <input required type="search" class="collections-searchbar" placeholder="Search all {{ item.name | downcase }} entries" name="q">
24
+ </form>
25
+ {% endif %}
26
+ {% endfor %}
27
+
28
+ </section>
29
+
30
+ </section>
@@ -1,3 +1,15 @@
1
1
  <nav class="collections-sidebar">
2
2
 
3
+ {% for item in site.data.projects %}
4
+ {% if page.url contains item.link %}
5
+ <ul>
6
+ <li><a href="{{ item.link }}">Main page</a></li>
7
+ <li><a href="{{ item.link }}:contents">Contents</a></li>
8
+ <li><a href="{{ item.link }}:all">All entries</a></li>
9
+ <li><a href="{{ item.link }}:random">Random article</a></li>
10
+ <li><a href="{{ item.link }}:about">About</a></li>
11
+ </ul>
12
+ {% endif %}
13
+ {% endfor %}
14
+
3
15
  </nav>
@@ -17,7 +17,6 @@
17
17
 
18
18
  <form class="global-search" action="/search" method="GET">
19
19
  <input required type="search" class="global-searchbar" placeholder="Search" name="q">
20
- <!---<button type="submit" class="global-search_submit"><i class="ri-search-line"></i></button>--->
21
20
  </form>
22
21
 
23
22
  </nav>
@@ -0,0 +1,11 @@
1
+ ---
2
+ layout: default
3
+ ---
4
+
5
+ <nav class="entry-index">
6
+
7
+ </nav>
8
+
9
+ {{ content }}
10
+
11
+ <script src="/assets/js/toc.js"></script>
@@ -1,11 +1,7 @@
1
1
  ---
2
- layout: default
2
+ layout: entry
3
3
  ---
4
4
 
5
- <nav class="entry-index">
6
-
7
- </nav>
8
-
9
5
  <article class="entry entry-grammar">
10
6
 
11
7
  <h1>{{ page.title }}</h1>
@@ -13,5 +9,3 @@
13
9
  {{ content }}
14
10
 
15
11
  </article>
16
-
17
- <script src="/assets/js/toc.js"></script>
@@ -1,3 +1,63 @@
1
1
  ---
2
2
  layout: default
3
3
  ---
4
+
5
+ <div class="launchpad">
6
+
7
+
8
+
9
+ <section class="launchpad-search">
10
+
11
+ <form action="/search" method="GET">
12
+
13
+ <label for="input__text">What do you want to know?</label><br>
14
+ <input id="input__text" name="q" class="launchpad-searchbar" required type="search" placeholder="Search">
15
+
16
+ <input type="submit" class="launchpad-search_submit" value="Go">
17
+
18
+ </form>
19
+
20
+ </section>
21
+
22
+
23
+
24
+ <section class="launchpad-projects">
25
+
26
+ {% if site.multi_projects %}
27
+
28
+ {% for item in site.data.projects %}
29
+
30
+ <a href="{{ item.link }}" class="launchpad-card">
31
+ <i class="{{ item.icon }} project-icon"></i>
32
+ <header>{{ item.name }}</header>
33
+ {{ item.desc }}
34
+ </a>
35
+
36
+ {% endfor %}
37
+
38
+ {% else %}
39
+
40
+ <a href="/wiki" class="launchpad-card launchpad-card_wiki">
41
+ <i class="ri-footprint-line project-icon"></i>
42
+ <header>Explore the wiki!</header>
43
+ </a>
44
+
45
+ <a href="/wiki:contents" class="launchpad-card">
46
+ <i class="ri-file-list-2-line project-icon"></i>
47
+ <header>Contents</header>
48
+ Navigate the wiki
49
+ </a>
50
+
51
+ <a href="/wiki:random" class="launchpad-card">
52
+ <i class="ri-question-line project-icon"></i>
53
+ <header>Random</header>
54
+ Visit a random article
55
+ </a>
56
+
57
+ {% endif %}
58
+
59
+ </section>
60
+
61
+
62
+
63
+ </div>
@@ -2,25 +2,30 @@
2
2
  layout: collections
3
3
  ---
4
4
 
5
+ {% include collections_header.html %}
6
+
7
+
5
8
  <section class="reference-desk">
6
9
 
7
- {% if page.url == "/wiki" %}
8
10
  <header class="collections-portals">
9
- <h1 class="collections-portals_header">Pick a topic</h1>
10
11
  <nav class="collections-portals_grid">
11
12
 
12
- {% for item in site.data.portals_wiki %}
13
- <a href="{{ item.link }}" class="collections-portal_card">
14
- <header>
15
- <i class="{{ item.icon }} portal-icon"></i>
16
- {{ item.name }}
17
- </header>
18
- {{ item.summary }}
19
- </a>
13
+ {% for item in site.data.projects %}
14
+ {% if page.url contains item.link %}
15
+ {% for item in item.portals %}
16
+ <a href="{{ item.link }}" class="collections-portal_card">
17
+ <header>
18
+ <i class="{{ item.icon }} portal-icon"></i>
19
+ {{ item.portal }}
20
+ </header>
21
+ {{ item.summary }}
22
+ </a>
23
+ {% endfor %}
24
+ {% endif %}
20
25
  {% endfor %}
26
+
21
27
  </nav>
22
28
  </header>
23
- {% endif %}
24
29
 
25
30
  <section class="collections-wrapper">
26
31
 
data/_layouts/wiki.html CHANGED
@@ -1,51 +1,81 @@
1
1
  ---
2
- layout: default
2
+ layout: entry
3
3
  ---
4
4
 
5
- <nav class="entry-index">
5
+ <article class="entry entry-wiki">
6
6
 
7
- </nav>
8
7
 
9
- <article class="entry entry-wiki">
10
8
 
11
9
  <h1>
12
10
  {{ page.title }}
13
11
  </h1>
14
12
 
15
- <section class="entry-tags">
16
- <ul>
17
- <ul>
18
- <li>Portals:</li>
19
- <li><a href="/wiki/portal:{{ page.portal }}">{{ page.portal }}</a></li>
20
- </ul>
13
+
14
+
15
+ {% if page.other_projects %}
16
+
17
+ <section class="entry-other_projects">
18
+ View in other collections:
21
19
  <ul>
22
- <li>Categories:</li>
23
- {% for item in page.categories %}
20
+ {% for item in page.other_projects %}
24
21
  <li>
25
- <a href="/wiki/category:{{ item | slugify }}">
26
- {{ item }}
27
- </a>
22
+ <a href="/{{ item }}{{ page.url | remove_first: "/wiki" }}">{{ item | capitalize }}</a>
28
23
  </li>
29
24
  {% endfor %}
30
25
  </ul>
31
- <ul>
32
- <li>Tags:</li>
26
+ </section>
27
+
28
+ {% endif %}
29
+
30
+
31
+
32
+ <section class="entry-tags">
33
+
34
+ <div class="entry-subhead_pair">
35
+
36
+ <span class="entry-subhead_key">Portals:</span>
37
+ <span>
38
+ <a href="/wiki/portal:{{ page.portal }} class="entry-subhead_value"">
39
+ {{ page.portal }}
40
+ </a>
41
+ </span>
42
+
43
+ </div>
44
+
45
+ <div class="entry-subhead_pair">
46
+
47
+ <span class="entry-subhead_key">Categories:</span>
48
+ <span>
49
+ {% for item in page.categories %}
50
+ <a href="/wiki/category:{{ item | slugify }}" class="entry-subhead_value">
51
+ {{ item }}
52
+ </a>
53
+ {% endfor %}
54
+ </span>
55
+
56
+ </div>
57
+
58
+ <div class="entry-subhead_pair">
59
+
60
+ <span class="entry-subhead_key">Tags:</span>
61
+ <span>
33
62
  {% for item in page.tags %}
34
- <li>
35
- <a href="/wiki/tag:{{ item | slugify }}">
36
- {{ item }}
37
- </a>
38
- </li>
63
+ <a href="/wiki/tag:{{ item }}" class="entry-subhead_value">
64
+ {{ item }}
65
+ </a>
39
66
  {% endfor %}
40
- </li>
41
- </ul>
42
- </ul>
67
+ </span>
68
+
69
+ </div>
70
+
43
71
  </section>
44
72
 
45
73
  {{ content }}
46
74
 
47
75
  </article>
48
76
 
77
+
78
+
49
79
  {% if page.quickstats %}
50
80
 
51
81
  <section class="entry-quickstats">
@@ -92,5 +122,3 @@
92
122
  </section>
93
123
 
94
124
  {% endif %}
95
-
96
- <script src="/assets/js/toc.js"></script>
data/_layouts/work.html CHANGED
@@ -1,11 +1,7 @@
1
1
  ---
2
- layout: default
2
+ layout: entry
3
3
  ---
4
4
 
5
- <nav class="entry-index">
6
-
7
- </nav>
8
-
9
5
  <article class="entry entry-work">
10
6
 
11
7
  <h1>{{ page.title }}</h1>
@@ -13,5 +9,3 @@
13
9
  {{ content }}
14
10
 
15
11
  </article>
16
-
17
- <script src="/assets/js/toc.js"></script>
@@ -0,0 +1,41 @@
1
+ ---
2
+ # Jekyll page that redirects to a random page, post or document
3
+ # https://github.com/jekylltools/jekyll-random-redirect
4
+ # v1.6
5
+ permalink: /random
6
+ ---
7
+
8
+ {%- assign docs = site.posts -%}
9
+
10
+ {%- if site.random_redirect.pages == true -%}
11
+ {%- assign pages = site.documents | where_exp:"page","page.url != '/random/'" -%}
12
+ {%- assign docs = docs | concat: pages -%}
13
+ {%- endif -%}
14
+
15
+ {%- if site.random_redirect.documents == true -%}
16
+ {%- assign docs = docs | concat: site.documents | uniq -%}
17
+ {%- endif -%}
18
+
19
+ <script type="text/javascript">
20
+ var urls=[];
21
+
22
+ {% for doc in docs -%}
23
+ urls.push("{{ doc.url | absolute_url }}");
24
+ {% endfor -%}
25
+
26
+ var url = urls[Math.floor(Math.random()*urls.length)];
27
+ var link = document.createElement('link');
28
+ link.setAttribute('rel', 'canonical');
29
+ link.setAttribute('href', url);
30
+ document.head.appendChild(link);
31
+
32
+ if (typeof IE_fix != "undefined") {
33
+ document.write("Redirecting...");
34
+ var referLink = document.createElement("a");
35
+ referLink.href = url;
36
+ document.body.appendChild(referLink);
37
+ referLink.click();
38
+ } else {
39
+ window.location.replace(url);
40
+ }
41
+ </script>
data/_pages/search.md CHANGED
@@ -9,7 +9,7 @@
9
9
 
10
10
  <script>
11
11
  window.pages = {
12
- {% for page in site.wiki %}
12
+ {% for page in site.documents %}
13
13
  "{{ page.url | slugify }}": {
14
14
  "title": "{{ page.title | xml_escape }}",
15
15
  "content": {{ page.content | markdownify | strip_newlines | strip_html | jsonify }},
@@ -20,5 +20,6 @@
20
20
  };
21
21
  </script>
22
22
 
23
+
23
24
  <script src="/assets/js/lunr.js"></script>
24
25
  <script src="/assets/js/search.js"></script>
data/_plugins/gloss.rb ADDED
@@ -0,0 +1,22 @@
1
+ module Jekyll
2
+ module InterlinearGlossFilter # Liquid just uses the method name as the filter name; there's no extra level of name-mapping like there is with tags and blocks
3
+
4
+ def gloss(input) # will be available as the "gloss" filter
5
+ @text = input
6
+ # puts "<tr>"
7
+
8
+ # lexemes = @text.split(" ")
9
+ # lexemes.each do |word|
10
+ # puts "<td class=\"gloss_item\">#{word}</td>"
11
+ # end
12
+
13
+ # puts "</tr>"
14
+
15
+ # morphemic_analysis
16
+ # morphemic_gloss
17
+
18
+ end
19
+ end
20
+ end
21
+
22
+ Liquid::Template.register_filter(Jekyll::InterlinearGlossFilter)
@@ -0,0 +1,24 @@
1
+ module Jekyll
2
+ module Tags
3
+ class InterlinearGlossTag < Liquid::Block
4
+
5
+ require "shellwords"
6
+
7
+ # initialize is called when we encounter the {% interlinear %} Liquid tag; 'interlinear' is the tag name and anything immediately after it is passed in via the second argument
8
+ def initialize(tag_name, text, tokens)
9
+ super
10
+ # @text = text.shellsplit
11
+ # @wordcount = @text[0].length
12
+ # object_lang, morphemic_analysis, morphemic_gloss, target_lang
13
+ end
14
+
15
+ def render(context)
16
+ # "<table class=\"interlinear-gloss\"><tbody><tr><td colspan=\"7\">#{@text[0]}</td></tr>" + "<tr><td>#{@text[1]}</td></tr></tbody></table>"
17
+ end
18
+
19
+ end
20
+ end
21
+ end
22
+
23
+ # The register_tag method takes two arguments: the user-facing name of the tag [interlinear], and the class that implements it [InterlinearGlossTag].
24
+ Liquid::Template.register_tag('interlinear', Jekyll::Tags::InterlinearGlossTag)
@@ -17,6 +17,8 @@
17
17
  }
18
18
  }
19
19
 
20
+
21
+
20
22
  .collections-content {
21
23
  grid-column: span 10 / auto;
22
24
 
@@ -35,6 +37,55 @@
35
37
  }
36
38
  }
37
39
 
40
+
41
+
42
+ .collections-header {
43
+ display: flex;
44
+ align-items: center;
45
+ justify-content: space-between;
46
+
47
+ padding: 1.5rem;
48
+ margin-bottom: 1rem;
49
+
50
+ background-color: $color-paperdark;
51
+ border: 1px solid #faf7f6;
52
+ border-radius: 1.5rem;
53
+ }
54
+
55
+ .collections-stats {
56
+ }
57
+
58
+ .collections-search {
59
+ }
60
+
61
+ .collections-searchbar {
62
+ width: 100%;
63
+ padding: 12px 16px;
64
+
65
+ border: 1px solid transparent;
66
+ border-radius: 1rem;
67
+
68
+ font-size: $fontsize-body;
69
+
70
+ transition: 0.25s;
71
+ appearance: none;
72
+ outline: none;
73
+ }
74
+
75
+ .collections-searchbar:hover {
76
+ border: 1px solid $color-launchpadsearch;
77
+ box-shadow: 0 0 6px $color-globalsearchbar;
78
+ }
79
+
80
+ .collections-searchbar:focus {
81
+ outline: none;
82
+ border-color: $color-globalsearchbar;
83
+ box-shadow: 0 0 6px $color-globalsearchbar;
84
+ transition: 0.25s;
85
+ }
86
+
87
+
88
+
38
89
  .reference-desk {
39
90
  display: grid;
40
91
  grid-template-columns: repeat(12, 1fr);
@@ -102,6 +153,8 @@
102
153
  }
103
154
 
104
155
  .collections-portal_card:hover {
156
+ border: 1px solid transparent;
157
+ box-shadow: 0 0 6px $color-projectborder;
105
158
  .portal-icon {
106
159
  color: $color-projectcard;
107
160