{% unless episode.break %}
<tr>
<td class="col-md-3">
- <a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a>
+ <a href="{{ page.root }}{{ episode.url }}">{{ episode.title }}</a>
</td>
<td class="col-md-9">
<ul>
<div class="row">
<div class="col-md-2" align="center">
- <a href="{{ site.swc_site }}"><img src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" /></a>
+ <a href="{{ site.swc_site }}"><img src="{{ page.root }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" /></a>
</div>
<div class="col-md-8">
Since 1998,
<br/>
<div class="row">
<div class="col-md-2" align="center">
- <a href="{{ site.dc_site }}"><img src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" /></a>
+ <a href="{{ site.dc_site }}"><img src="{{ page.root }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" /></a>
</div>
<div class="col-md-8">
<a href="{{ site.dc_site }}">Data Carpentry</a> develops and teaches workshops on the fundamental data skills needed to conduct research.
{% comment %}
- Display information about a break.
+ Display a break's timings in a box similar to a learning episode's.
{% endcomment %}
-<p>Break: {{page.break}} min</p>
+<blockquote class="objectives">
+ <h2>Overview</h2>
+
+ <div class="row">
+ <div class="col-md-3">
+ <strong>Break:</strong> {{ page.break }} min
+ </div>
+ <div class="col-md-9">
+ </div>
+ </div>
+
+</blockquote>
--- /dev/null
+{% comment %}
+ Find previous and next episodes (if any).
+{% endcomment %}
+{% for episode in site.episodes %}
+ {% if episode.url == page.url %}
+ {% unless forloop.first %}
+ {% assign prev_episode = prev %}
+ {% endunless %}
+ {% unless forloop.last %}
+ {% assign next_episode = site.episodes[forloop.index] %}
+ {% endunless %}
+ {% endif %}
+ {% assign prev = episode %}
+{% endfor %}
+
+{% comment %}
+ Display title and prev/next links.
+{% endcomment %}
+<div class="row">
+ <div class="col-md-1">
+ <h3>
+ {% if prev_episode %}
+ <a href="{{ page.root }}{{ prev_episode.url }}"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span><span class="sr-only">previous episode</span></a>
+ {% else %}
+ <a href="{{ page.root }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
+ {% endif %}
+ </h3>
+ </div>
+ <div class="col-md-10">
+ {% if include.episode_navbar_title %}
+ <h3 class="maintitle"><a href="{{ page.root }}/">{{ site.title }}</a></h3>
+ <h1 class="maintitle">{{ page.title }}</h1>
+ {% endif %}
+ </div>
+ <div class="col-md-1">
+ <h3>
+ {% if next_episode %}
+ <a href="{{ page.root }}{{ next_episode.url }}"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span><span class="sr-only">next episode</span></a>
+ {% else %}
+ <a href="{{ page.root }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
+ {% endif %}
+ </h3>
+ </div>
+</div>
<div class="row">
<div class="col-md-3">
<strong>Teaching:</strong> {{ page.teaching }} min
- </br>
+ <br/>
<strong>Exercises:</strong> {{ page.exercises }} min
</div>
<div class="col-md-9">
</ul>
</div>
</div>
-
+
<div class="row">
<div class="col-md-3">
</div>
</ul>
</div>
</div>
-
+
</blockquote>
<div class="col-md-1">
<h3>
{% if prev_episode %}
- <a href="{{ site.github.url }}{{ prev_episode.url }}"><span class="glyphicon glyphicon-menu-left"></span></a>
- {% elsif site.github.url %}
- <a href="{{ site.github.url }}"><span class="glyphicon glyphicon-menu-up"></span></a>
+ <a href="{{ page.root }}{{ prev_episode.url }}"><span class="glyphicon glyphicon-menu-left"></span></a>
{% else %}
- <a href="/"><span class="glyphicon glyphicon-menu-up"></span></a>
+ <a href="{{ page.root }}"><span class="glyphicon glyphicon-menu-up"></span></a>
{% endif %}
</h3>
</div>
<div class="col-md-10">
- <h3 class="maintitle"><a href="{{ site.github.url }}/">{{ site.title }}</a></h3>
+ <h3 class="maintitle"><a href="{{ page.root }}/">{{ site.title }}</a></h3>
<h1 class="maintitle">{{ page.title }}</h1>
</div>
<div class="col-md-1">
<h3>
{% if next_episode %}
- <a href="{{ site.github.url }}{{ next_episode.url }}"><span class="glyphicon glyphicon-menu-right"></span></a>
- {% elsif site.github.url %}
- <a href="{{ site.github.url }}"><span class="glyphicon glyphicon-menu-up"></span></a>
+ <a href="{{ page.root }}{{ next_episode.url }}"><span class="glyphicon glyphicon-menu-right"></span></a>
{% else %}
- <a href="/"><span class="glyphicon glyphicon-menu-up"></span></a>
+ <a href="{{ page.root }}"><span class="glyphicon glyphicon-menu-up"></span></a>
{% endif %}
</h3>
</div>
-<script src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/js/jquery.min.js"></script>
-<script src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/js/bootstrap.min.js"></script>
-<script src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/js/lesson.js"></script>
+<script src="{{ page.root }}/assets/js/jquery.min.js"></script>
+<script src="{{ page.root }}/assets/js/bootstrap.min.js"></script>
+<script src="{{ page.root }}/assets/js/lesson.js"></script>
+<script>
+ (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
+ (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
+ m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
+ })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
+ ga('create', 'UA-37305346-2', 'auto');
+ ga('send', 'pageview');
+</script>
-<hr/>
<footer>
<div class="row">
<div class="col-md-6" align="left">
-<h1 class="maintitle"><a href="{{ site.github.url }}/">{{ site.title }}</a>{% if page.title %}: {{ page.title }}{% endif %}</h1>
+<h1 class="maintitle"><a href="{{ page.root }}/">{{ site.title }}</a>{% if page.title %}: {{ page.title }}{% endif %}</h1>
{% comment %} Select what logo to display. {% endcomment %}
{% if page.carpentry == "swc" %}
<a href="{{ site.swc_site }}" class="pull-left">
- <img class="navbar-logo" src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
+ <img class="navbar-logo" src="{{ page.root }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
</a>
{% elsif page.carpentry == "dc" %}
<a href="{{ site.dc_site }}" class="pull-left">
- <img class="navbar-logo" src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
+ <img class="navbar-logo" src="{{ page.root }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
</a>
{% elsif site.carpentry == "swc" %}
<a href="{{ site.swc_site }}" class="pull-left">
- <img class="navbar-logo" src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
+ <img class="navbar-logo" src="{{ page.root }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" />
</a>
{% elsif site.carpentry == "dc" %}
<a href="{{ site.dc_site }}" class="pull-left">
- <img class="navbar-logo" src="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
+ <img class="navbar-logo" src="{{ page.root }}/assets/img/dc-icon-black.svg" alt="Data Carpentry logo" />
</a>
{% endif %}
{% comment %} Always show link to home page. {% endcomment %}
- <a class="navbar-brand" href="{{ site.github.url }}/">Home</a>
+ <a class="navbar-brand" href="{{ page.root }}/">Home</a>
</div>
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
<ul class="nav navbar-nav">
{% comment %} Always show code of conduct. {% endcomment %}
- <li><a href="{{ site.github.url }}/conduct/">Code of Conduct</a></li>
+ <li><a href="{{ page.root }}/conduct/">Code of Conduct</a></li>
{% comment %} Show setup instructions, reference guide, and lesson episodes for lessons. {% endcomment %}
{% if site.kind == "lesson" %}
- <li><a href="{{ site.github.url }}/setup/">Setup</a></li>
- <li><a href="{{ site.github.url }}/reference/">Reference</a></li>
+ <li><a href="{{ page.root }}/setup/">Setup</a></li>
+ <li><a href="{{ page.root }}/reference/">Reference</a></li>
<li class="dropdown">
- <a href="{{ site.github.url }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Episodes <span class="caret"></span></a>
+ <a href="{{ page.root }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Episodes <span class="caret"></span></a>
<ul class="dropdown-menu">
{% for episode in site.episodes %}
- <li><a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a></li>
+ <li><a href="{{ page.root }}{{ episode.url }}">{{ episode.title }}</a></li>
{% endfor %}
</ul>
</li>
{% comment %} Show extras for lessons or if this is the main workshop-template repo (where they contain documentation). {% endcomment %}
{% if site.kind == "lesson" or site.github.repository_name == "workshop-template" %}
<li class="dropdown">
- <a href="{{ site.github.url }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Extras <span class="caret"></span></a>
+ <a href="{{ page.root }}/" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Extras <span class="caret"></span></a>
<ul class="dropdown-menu">
{% for extra in site.extras %}
- <li><a href="{{ site.github.url }}{{ extra.url }}">{{ extra.title }}</a></li>
+ <li><a href="{{ page.root }}{{ extra.url }}">{{ extra.title }}</a></li>
{% endfor %}
</ul>
</li>
{% endif %}
{% comment %} Always show license. {% endcomment %}
- <li><a href="{{ site.github.url }}/license/">License</a></li>
+ <li><a href="{{ page.root }}/license/">License</a></li>
</ul>
<form class="navbar-form navbar-right" role="search" id="search" onsubmit="google_search(); return false;">
<div class="form-group">
- <input type="text" id="google-search" placeholder="Search...">
+ <input type="text" id="google-search" placeholder="Search..." aria-label="Google site search">
</div>
</form>
</div>
Days are displayed if at least one episode has 'start = true'.
{% endcomment %}
<div class="syllabus">
- <h2>Schedule</h2>
+ <h2 id="schedule">Schedule</h2>
{% assign day = 0 %}
{% assign multiday = false %}
{% if multiday %}<td class="col-md-1">{% if episode.start %}Day {{ day }}{% endif %}</td>{% endif %}
<td class="col-md-1">{% if hours < 10 %}0{% endif %}{{ hours }}:{% if minutes < 10 %}0{% endif %}{{ minutes }}</td>
<td class="col-md-3">
- <a href="{{ site.github.url }}{{ episode.url }}">{{ episode.title }}</a>
+ <a href="{{ page.root }}{{ episode.url }}">{{ episode.title }}</a>
</td>
<td class="col-md-7">
{% if episode.break %}
<td class="col-md-7"></td>
</tr>
</table>
+
+ <p>
+ The actual schedule may vary slightly depending on the topics and exercises chosen by the instructor.
+ </p>
+
</div>
-<hr/>
<footer>
<div class="row">
<div class="col-md-6" align="left">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="last-modified" content="{{ site.time }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
- <meta name="search-domain" value="{{ site.github.url | replace_first: 'http:', 'https:' }}">
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/bootstrap.css" />
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/bootstrap-theme.css" />
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/lesson.css" />
+ <!-- meta "search-domain" used for google site search function google_search() -->
+ <meta name="search-domain" value="{{ site.github.url }}">
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/bootstrap.css" />
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/bootstrap-theme.css" />
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/lesson.css" />
{% if site.carpentry == "swc" %}
<link rel="shortcut icon" type="image/x-icon" href="/favicon-swc.ico" />
{% endif %}
---
layout: base
---
-{% include episode_title.html %}
+{% include episode_navbar.html episode_navbar_title=true %}
{% include episode_break.html %}
{{content}}
+{% include episode_navbar.html episode_navbar_title=false %}
---
layout: base
---
-{% include episode_title.html %}
+{% include episode_navbar.html episode_navbar_title=true %}
{% include episode_overview.html %}
{{content}}
{% include episode_keypoints.html %}
+{% include episode_navbar.html episode_navbar_title=false %}
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta http-equiv="last-modified" content="{{ site.time }}">
<meta name="viewport" content="width=device-width, initial-scale=1">
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/bootstrap.css" />
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/bootstrap-theme.css" />
- <link rel="stylesheet" type="text/css" href="{{ site.github.url | replace_first: 'http:', 'https:' }}/assets/css/lesson.css" />
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/bootstrap.css" />
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/bootstrap-theme.css" />
+ <link rel="stylesheet" type="text/css" href="{{ page.root }}/assets/css/lesson.css" />
{% if site.carpentry == "swc" %}
<link rel="shortcut icon" type="image/x-icon" href="/favicon-swc.ico" />
{% endif %}
reporter.check_field(config_file, 'configuration', config, 'title')
reporter.check_field(config_file, 'configuration', config, 'email')
+ reporter.check({'values': {'root': '..'}} in config.get('defaults', []),
+ 'configuration',
+ '"root" not set to ".." in configuration')
+
def read_all_markdown(source_dir, parser):
"""Read source files, returning
super(CheckIndex, self).__init__(args, filename, metadata, metadata_len, text, lines, doc)
self.layout = 'lesson'
+ def check_metadata(self):
+ super(CheckIndex, self).check_metadata()
+ self.reporter.check(self.metadata.get('root', '') == '.',
+ self.filename,
+ 'Root not set to "."')
+
class CheckEpisode(CheckBase):
"""Check an episode page."""
# Surveys.
pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id="
post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id="
+training_post_survey: "https://www.surveymonkey.com/r/post-instructor-training"
# Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am).
start_time: 0
# Set the default layout for things in the episodes collection.
defaults:
+ - values:
+ root: ..
- scope:
path: ""
type: episodes
ROOT_INDEX_MD = '''\
---
layout: lesson
+root: .
---
FIXME: home page introduction
EXTRAS_GUIDE_MD = '''\
---
layout: page
-title: "Instructors' Guide"
+title: "Instructor Notes"
permalink: /guide/
---
FIXME
# Use Kramdown parser to produce AST for Markdown document.
require "kramdown"
-require "json"
+require "json"
markdown = STDIN.read()
doc = Kramdown::Document.new(markdown)