jekyll-theme-open-course 1.0.1 → 2.1.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +17 -15
- data/_config.yml +2 -0
- data/_layouts/calendar.html +36 -21
- data/_layouts/default.html +36 -25
- data/_layouts/error.html +10 -0
- data/_layouts/links.html +10 -0
- data/_layouts/projects.html +11 -11
- data/_sass/_base.scss +108 -0
- data/_sass/_colors.scss +195 -0
- data/_sass/_fonts.scss +10 -0
- data/_sass/_typography.scss +385 -0
- data/assets/css/print.css +5 -5
- data/assets/css/screen.scss +10 -0
- data/assets/js/site.js +277 -8
- data/assets/js/sw.js +220 -0
- data/lib/jtoc.rb +15 -3
- data/lib/starter_files/Gemfile +7 -0
- data/lib/starter_files/_config.yml.erb +8 -0
- data/lib/starter_files/offline/index.md +7 -0
- data/lib/starter_files/syllabus/_policies/books.md +6 -2
- data/lib/starter_files/syllabus/_policies/materials.md +6 -2
- data/lib/starter_files/syllabus/_weeks/week-00.md.erb +1 -1
- metadata +12 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0302d9b2eeb86fdcf21ae00059e4797d3a1c0d298b2bcae75368a494e4380a3c
|
4
|
+
data.tar.gz: 7307c7a5fe6fdf66fc11f71e7cac087426b9a49172aab41b9866ff84c62cf3ef
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 66b64c74eab9cab58bdff61bad762f0dc59e95d9ba9090e2272e1c95e2ab72445cdf8852d45aa95585a9732f7777f12a5de99ffe94f63f85599bf9143174672c
|
7
|
+
data.tar.gz: 22bccb2d57b09c398c7cc8d40318cab06cac9bdb24011cd8da4b370fddcafc0996f09ae67b01fe9a79d49e926ef3288f479c9f4360e97e5341f086131b0b48d3
|
data/Gemfile.lock
CHANGED
@@ -4,56 +4,58 @@ GEM
|
|
4
4
|
addressable (2.7.0)
|
5
5
|
public_suffix (>= 2.0.2, < 5.0)
|
6
6
|
colorator (1.1.0)
|
7
|
-
concurrent-ruby (1.1.
|
7
|
+
concurrent-ruby (1.1.7)
|
8
8
|
em-websocket (0.5.1)
|
9
9
|
eventmachine (>= 0.12.9)
|
10
10
|
http_parser.rb (~> 0.6.0)
|
11
11
|
eventmachine (1.2.7)
|
12
|
-
ffi (1.
|
12
|
+
ffi (1.13.1)
|
13
13
|
forwardable-extended (2.6.0)
|
14
14
|
http_parser.rb (0.6.0)
|
15
|
-
i18n (1.8.
|
15
|
+
i18n (1.8.5)
|
16
16
|
concurrent-ruby (~> 1.0)
|
17
|
-
jekyll (4.
|
17
|
+
jekyll (4.1.1)
|
18
18
|
addressable (~> 2.4)
|
19
19
|
colorator (~> 1.0)
|
20
20
|
em-websocket (~> 0.5)
|
21
|
-
i18n (
|
21
|
+
i18n (~> 1.0)
|
22
22
|
jekyll-sass-converter (~> 2.0)
|
23
23
|
jekyll-watch (~> 2.0)
|
24
24
|
kramdown (~> 2.1)
|
25
25
|
kramdown-parser-gfm (~> 1.0)
|
26
26
|
liquid (~> 4.0)
|
27
|
-
mercenary (~> 0.
|
27
|
+
mercenary (~> 0.4.0)
|
28
28
|
pathutil (~> 0.9)
|
29
29
|
rouge (~> 3.0)
|
30
30
|
safe_yaml (~> 1.0)
|
31
31
|
terminal-table (~> 1.8)
|
32
|
-
jekyll-sass-converter (2.0
|
32
|
+
jekyll-sass-converter (2.1.0)
|
33
33
|
sassc (> 2.0.1, < 3.0)
|
34
34
|
jekyll-watch (2.2.1)
|
35
35
|
listen (~> 3.0)
|
36
|
-
kramdown (2.
|
36
|
+
kramdown (2.3.0)
|
37
|
+
rexml
|
37
38
|
kramdown-parser-gfm (1.1.0)
|
38
39
|
kramdown (~> 2.0)
|
39
40
|
liquid (4.0.3)
|
40
41
|
listen (3.2.1)
|
41
42
|
rb-fsevent (~> 0.10, >= 0.10.3)
|
42
43
|
rb-inotify (~> 0.9, >= 0.9.10)
|
43
|
-
mercenary (0.
|
44
|
+
mercenary (0.4.0)
|
44
45
|
pathutil (0.16.2)
|
45
46
|
forwardable-extended (~> 2.6)
|
46
|
-
public_suffix (4.0.
|
47
|
-
rb-fsevent (0.10.
|
47
|
+
public_suffix (4.0.5)
|
48
|
+
rb-fsevent (0.10.4)
|
48
49
|
rb-inotify (0.10.1)
|
49
50
|
ffi (~> 1.0)
|
50
|
-
|
51
|
+
rexml (3.2.4)
|
52
|
+
rouge (3.22.0)
|
51
53
|
safe_yaml (1.0.5)
|
52
|
-
sassc (2.
|
54
|
+
sassc (2.4.0)
|
53
55
|
ffi (~> 1.9)
|
54
56
|
terminal-table (1.8.0)
|
55
57
|
unicode-display_width (~> 1.1, >= 1.1.1)
|
56
|
-
unicode-display_width (1.
|
58
|
+
unicode-display_width (1.7.0)
|
57
59
|
|
58
60
|
PLATFORMS
|
59
61
|
ruby
|
@@ -62,4 +64,4 @@ DEPENDENCIES
|
|
62
64
|
jekyll
|
63
65
|
|
64
66
|
BUNDLED WITH
|
65
|
-
1.
|
67
|
+
2.1.4
|
data/_config.yml
CHANGED
data/_layouts/calendar.html
CHANGED
@@ -4,13 +4,21 @@ layout: default
|
|
4
4
|
{% assign util = site.data.utility %}
|
5
5
|
{% assign projects = site.projects %}
|
6
6
|
|
7
|
+
{% assign week_count = site.data.calendar | size %}
|
8
|
+
{% assign final_week = week_count | minus: 1 %}
|
9
|
+
|
10
|
+
{% assign today = "today" | date: "%s" %}
|
11
|
+
{% assign last_expiry = site.data.calendar[final_week].expires | date: "%s" %}
|
12
|
+
|
7
13
|
{% assign current = true %}
|
14
|
+
{% if today > last_expiry %}
|
15
|
+
{% assign current = false %}
|
16
|
+
{% endif %}
|
8
17
|
|
9
18
|
{% for entry in site.data.calendar %}
|
10
19
|
{% assign week_int = forloop.index | times: 1 %}
|
11
20
|
{% capture week_num %}{% if week_int < 10 %}0{% endif %}{{ week_int }}{% endcapture %}
|
12
21
|
{% assign week = site.weeks[forloop.index0] %}
|
13
|
-
{% assign today = "today" | date: "%s" %}
|
14
22
|
{% assign expiry = entry.expires | date: "%s" %}
|
15
23
|
|
16
24
|
<!-- past dates? -->
|
@@ -22,10 +30,11 @@ layout: default
|
|
22
30
|
<header>
|
23
31
|
{% endif %}
|
24
32
|
<h2>
|
25
|
-
{{ week.theme |
|
33
|
+
{{ week.theme | markdownify | remove: "<p>" | remove: "</p>" | strip_newlines }}
|
26
34
|
</h2>
|
27
35
|
<small>Week {{ util.spelled_nums[week_int] }}</small>
|
28
36
|
</header>
|
37
|
+
<div class="agendas">
|
29
38
|
{% for meeting in week.meetings %}
|
30
39
|
<section class="agenda">
|
31
40
|
{% if site.course.days.size > 0 %}
|
@@ -43,11 +52,34 @@ layout: default
|
|
43
52
|
</ol>
|
44
53
|
</section>
|
45
54
|
{% endfor %}
|
46
|
-
|
55
|
+
</div>
|
56
|
+
{% assign be = entry.begins | date: "%s" %}
|
57
|
+
{% assign ex = entry.expires | date: "%s" %}
|
58
|
+
{% assign deliverables_li = "" %}
|
59
|
+
|
60
|
+
{%- capture deliverables_li -%}
|
61
|
+
{%- for project in projects -%}
|
62
|
+
{%- assign proj_int = forloop.index | times: 1 -%}
|
63
|
+
{%- capture proj_num -%}{%- if proj_int < 10 -%}0{%- endif -%}{{ proj_int }}{%- endcapture -%}
|
64
|
+
{%- for deliverable in project.deliverables -%}
|
65
|
+
{%- assign dl = deliverable.deadline | date: "%s" -%}
|
66
|
+
{%- if dl >= be and dl <= ex -%}
|
67
|
+
<li class="deadline">Project {{ util.spelled_nums[proj_int] }}: {{ deliverable.action | markdownify | remove: "<p>" | remove: "</p>" | strip_newlines }} (Due by {{ deliverable.deadline | date: "%A, %B %-e" }})</li>
|
68
|
+
{%- endif -%}
|
69
|
+
{%- endfor -%}
|
70
|
+
{%- endfor -%}
|
71
|
+
{%- endcapture -%}
|
72
|
+
|
73
|
+
{% if week.readings or week.tasks or deliverables_li.size > 1%}
|
47
74
|
<aside class="assigned">
|
48
75
|
<header>
|
49
76
|
<h3>Assigned Work</h3>
|
50
|
-
|
77
|
+
{% if entry.due_date %}
|
78
|
+
{% assign due_date = entry.due_date %}
|
79
|
+
{% else %}
|
80
|
+
{% assign due_date = entry.expires %}
|
81
|
+
{% endif %}
|
82
|
+
<small>Due {{ due_date | date: "%A, %B %-e" }}</small>
|
51
83
|
</header>
|
52
84
|
{% if week.readings %}
|
53
85
|
<section class="readings">
|
@@ -70,23 +102,6 @@ layout: default
|
|
70
102
|
</section>
|
71
103
|
{% endif %}
|
72
104
|
|
73
|
-
{% assign be = entry.begins | date: "%s" %}
|
74
|
-
{% assign ex = entry.expires | date: "%s" %}
|
75
|
-
{% assign deliverables_li = "" %}
|
76
|
-
|
77
|
-
{%- capture deliverables_li -%}
|
78
|
-
{%- for project in projects -%}
|
79
|
-
{%- assign proj_int = forloop.index | times: 1 -%}
|
80
|
-
{%- capture proj_num -%}{%- if proj_int < 10 -%}0{%- endif -%}{{ proj_int }}{%- endcapture -%}
|
81
|
-
{%- for deliverable in project.deliverables -%}
|
82
|
-
{%- assign dl = deliverable.deadline | date: "%s" -%}
|
83
|
-
{%- if dl >= be and dl <= ex -%}
|
84
|
-
<li class="deadline">Project {{ util.spelled_nums[proj_int] }}: {{ deliverable.action }} (Due by {{ deliverable.deadline | date: "%A, %B %-e" }})</li>
|
85
|
-
{%- endif -%}
|
86
|
-
{%- endfor -%}
|
87
|
-
{%- endfor -%}
|
88
|
-
{%- endcapture -%}
|
89
|
-
|
90
105
|
{% if deliverables_li.size > 1 %}
|
91
106
|
<!-- {{ deliverables_li.size }} -->
|
92
107
|
<section class="deadlines">
|
data/_layouts/default.html
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
<!DOCTYPE html>
|
2
|
-
<html lang="en" id="{{page.id}}" prefix="og: http://ogp.me/ns#">
|
3
|
-
<head>{% assign course = site.course %}{% assign instructor = site.course.instructor %}
|
2
|
+
<html lang="en" id="{{page.id}}" prefix="og: http://ogp.me/ns#" class="loading">
|
3
|
+
<head>{% assign course = site.course %}{% assign instructor = site.course.instructor %}{% assign ta = site.course.ta %}
|
4
4
|
<meta charset="utf-8" />
|
5
5
|
<title>{{ course.number }}: {% if page.title %}{{ page.title}}{% else %}{{ course.title }}{% endif %}</title>
|
6
6
|
<meta name="viewport" content="width=device-width,initial-scale=1.0,shrink-to-fit=no" />
|
@@ -17,7 +17,7 @@
|
|
17
17
|
<body>
|
18
18
|
<header id="header">
|
19
19
|
<h1>
|
20
|
-
<a rel="home" href="{{ site.url }}{{ site.baseurl }}">{{ course.title}}</a>
|
20
|
+
<a rel="home" href="{{ site.url }}{{ site.baseurl }}">{{ course.title}}</a>{% if page.title %}: {{ page.title}}{% endif %}
|
21
21
|
</h1>
|
22
22
|
<p class="tagline">
|
23
23
|
{% if course.tagline %}{{ course.tagline }}{% endif %}
|
@@ -25,8 +25,8 @@
|
|
25
25
|
{{ course.term }}.
|
26
26
|
</p>
|
27
27
|
<nav id="quick-nav">
|
28
|
+
<h3 id="nav-con"><a href="#content"><span class="access">Jump to</span> {{ page.title }}</a></h3>
|
28
29
|
<ul class="nav">
|
29
|
-
<li id="nav-con"><a href="#content"><span class="access">Jump to</span> {{ page.title }}</a></li>
|
30
30
|
<li id="nav-nav"><a href="#full-nav"><span class="access">Jump to</span> Menu</a></li>
|
31
31
|
</ul>
|
32
32
|
</nav>
|
@@ -35,28 +35,41 @@
|
|
35
35
|
{{ content }}
|
36
36
|
</main>
|
37
37
|
|
38
|
+
<aside id="instructor">
|
39
|
+
<header>
|
40
|
+
<h3>Instructor</h3>
|
41
|
+
</header>
|
42
|
+
<ul>
|
43
|
+
<li>
|
44
|
+
<a href="{{ instructor.url }}">{{ instructor.honorific }} {{ instructor.name }}</a>,
|
45
|
+
{{ instructor.full_title | escape }}
|
46
|
+
</li>
|
47
|
+
<li><a href="mailto:{{ instructor.email }}">{{ instructor.email }}</a></li>
|
48
|
+
<li id="office-hours">
|
49
|
+
{{ instructor.office_hours }}
|
50
|
+
</li>
|
51
|
+
</ul>
|
52
|
+
{% if ta.name %}
|
53
|
+
<header>
|
54
|
+
<h3>Teaching Assistant</h3>
|
55
|
+
</header>
|
56
|
+
<ul>
|
57
|
+
<li>
|
58
|
+
{% if ta.url %}<a href="{{ ta.url }}">{% endif %}{{ ta.name }}{% if ta.url %}</a>{% endif %},
|
59
|
+
{{ ta.full_title | escape }}
|
60
|
+
</li>
|
61
|
+
<li><a href="mailto:{{ ta.email }}">{{ ta.email }}</a></li>
|
62
|
+
<li id="office-hours">
|
63
|
+
{{ ta.office_hours }}
|
64
|
+
</li>
|
65
|
+
</ul>
|
66
|
+
{% endif %}
|
67
|
+
</aside>
|
38
68
|
|
39
69
|
|
40
70
|
<footer id="footer">
|
41
|
-
<section id="instructor">
|
42
|
-
<header>
|
43
|
-
<h3>Instructor</h3>
|
44
|
-
</header>
|
45
|
-
<ul>
|
46
|
-
<li>
|
47
|
-
<a href="{{ instructor.url }}">{{ instructor.honorific }} {{ instructor.name }}</a>,
|
48
|
-
{{ site.course.instructor.full_title | escape }}
|
49
|
-
</li>
|
50
|
-
<li><a href="mailto:{{ instructor.email }}">{{ instructor.email }}</a></li>
|
51
|
-
<li id="office-hours">
|
52
|
-
{{ instructor.office_hours }}
|
53
|
-
</li>
|
54
|
-
</ul>
|
55
|
-
</section>
|
56
71
|
<nav id="full-nav">
|
57
|
-
<
|
58
|
-
<h3>Navigation</h3>
|
59
|
-
</header>
|
72
|
+
<h3>Navigation</h3>
|
60
73
|
<ul class="nav">
|
61
74
|
{% for nav in course.navigation %}
|
62
75
|
{% assign protocol = nav.href | slice: 0, 4 %}
|
@@ -70,9 +83,7 @@
|
|
70
83
|
</ul>
|
71
84
|
</nav>
|
72
85
|
<section id="colophon">
|
73
|
-
<
|
74
|
-
<h3>Colophon</h3>
|
75
|
-
</header>
|
86
|
+
<h3>Colophon</h3>
|
76
87
|
<p class="fineprint">
|
77
88
|
Course syllabus by <a href="{{ instructor.url }}">{{ instructor.name }}</a>.
|
78
89
|
Licensed under
|
data/_layouts/error.html
ADDED
data/_layouts/links.html
ADDED
data/_layouts/projects.html
CHANGED
@@ -19,22 +19,12 @@ layout: default
|
|
19
19
|
<small>Due by {{ project.due_date | date: "%A, %B %-e, %Y"}}</small>
|
20
20
|
</header>
|
21
21
|
|
22
|
-
<section class="description">
|
22
|
+
<section class="description {% if project.preview %}preview{% endif %}">
|
23
23
|
<h3>Project Description</h3>
|
24
24
|
{{ project.content }}
|
25
25
|
</section>
|
26
26
|
|
27
27
|
{% unless project.preview %}
|
28
|
-
{% if project.goals %}
|
29
|
-
<section class="goals">
|
30
|
-
<h3>Project Goals</h3>
|
31
|
-
<ul>
|
32
|
-
{% for goal in project.goals %}
|
33
|
-
<li>{{ goal | markdownify | remove: "<p>" | remove: "</p>" | strip_newlines }}</li>
|
34
|
-
{% endfor %}
|
35
|
-
</ul>
|
36
|
-
</section>
|
37
|
-
{% endif %}
|
38
28
|
{% if project.deliverables %}
|
39
29
|
<section class="deliverables">
|
40
30
|
<h3>Deliverables and Deadlines</h3>
|
@@ -66,6 +56,16 @@ layout: default
|
|
66
56
|
</ol>
|
67
57
|
</section>
|
68
58
|
{% endif %}
|
59
|
+
{% if project.goals %}
|
60
|
+
<section class="goals">
|
61
|
+
<h3>Project Goals</h3>
|
62
|
+
<ul>
|
63
|
+
{% for goal in project.goals %}
|
64
|
+
<li>{{ goal | markdownify | remove: "<p>" | remove: "</p>" | strip_newlines }}</li>
|
65
|
+
{% endfor %}
|
66
|
+
</ul>
|
67
|
+
</section>
|
68
|
+
{% endif %}
|
69
69
|
{% endunless %}
|
70
70
|
</article>
|
71
71
|
{% endfor %}
|
data/_sass/_base.scss
ADDED
@@ -0,0 +1,108 @@
|
|
1
|
+
body {
|
2
|
+
line-height: $base-line;
|
3
|
+
}
|
4
|
+
|
5
|
+
h1,h2,h3,h4,h5,h6 {
|
6
|
+
font-weight: bold;
|
7
|
+
}
|
8
|
+
h1 {
|
9
|
+
padding-top: $base-line / 2;
|
10
|
+
}
|
11
|
+
h1 small,
|
12
|
+
h1 b {
|
13
|
+
display: block;
|
14
|
+
font-weight: normal;
|
15
|
+
}
|
16
|
+
h3,
|
17
|
+
h4 {
|
18
|
+
text-transform: uppercase;
|
19
|
+
padding-bottom: $base-line / 4;
|
20
|
+
}
|
21
|
+
h4 {
|
22
|
+
text-transform: none;
|
23
|
+
}
|
24
|
+
|
25
|
+
p,li {
|
26
|
+
padding-bottom: $base-line;
|
27
|
+
-webkit-hyphens: auto;
|
28
|
+
hyphens: auto;
|
29
|
+
}
|
30
|
+
|
31
|
+
li {
|
32
|
+
padding-bottom: $base-line / 2;
|
33
|
+
}
|
34
|
+
ol, ul {
|
35
|
+
padding-bottom: $base-line / 2;
|
36
|
+
}
|
37
|
+
|
38
|
+
ol ol,
|
39
|
+
ol ul,
|
40
|
+
ul ol,
|
41
|
+
ul ul {
|
42
|
+
padding-top: $base-line / 2;
|
43
|
+
padding-bottom: 0;
|
44
|
+
padding-left: $base-line;
|
45
|
+
}
|
46
|
+
|
47
|
+
ol ul > li,
|
48
|
+
ul ul > li,
|
49
|
+
.with::before {
|
50
|
+
margin-left: -($base-line * 1.25);
|
51
|
+
}
|
52
|
+
ul {
|
53
|
+
list-style-type: square;
|
54
|
+
}
|
55
|
+
ol {
|
56
|
+
list-style-type: decimal;
|
57
|
+
}
|
58
|
+
ul, .with::before {
|
59
|
+
list-style-type: none;
|
60
|
+
}
|
61
|
+
ul li, .with::before {
|
62
|
+
position: relative;
|
63
|
+
padding-left: $base-line;
|
64
|
+
margin-left: -($base-line);
|
65
|
+
}
|
66
|
+
ul li::before {
|
67
|
+
content: "■";
|
68
|
+
position: absolute;
|
69
|
+
left: $base-line * 0.3;
|
70
|
+
top: -($base-line * 0.065);
|
71
|
+
}
|
72
|
+
|
73
|
+
ol, .with::before {
|
74
|
+
list-style-type: none;
|
75
|
+
counter-reset: enumerated;
|
76
|
+
}
|
77
|
+
ol > li, .with::before {
|
78
|
+
position: relative;
|
79
|
+
padding-left: $base-line;
|
80
|
+
margin-left: -($base-line);
|
81
|
+
counter-increment: enumerated;
|
82
|
+
}
|
83
|
+
ol > li::before {
|
84
|
+
font-weight: bold;
|
85
|
+
content: counter(enumerated) "";
|
86
|
+
position: absolute;
|
87
|
+
left: -($base-line * 0.0375);
|
88
|
+
text-align: right;
|
89
|
+
width: 1em;
|
90
|
+
}
|
91
|
+
|
92
|
+
b, strong {
|
93
|
+
font-weight: bold;
|
94
|
+
}
|
95
|
+
|
96
|
+
cite, em, i {
|
97
|
+
font-style: italic;
|
98
|
+
}
|
99
|
+
code {
|
100
|
+
font-family: Menlo, Monaco, "Droid Sans Mono", Courier, "Courier New", monospace;
|
101
|
+
font-size: 0.85em;
|
102
|
+
hyphens: none;
|
103
|
+
}
|
104
|
+
|
105
|
+
.access {
|
106
|
+
position: absolute;
|
107
|
+
left: -10000px;
|
108
|
+
}
|