lots of fixes and customisations
This commit is contained in:
parent
e64976704c
commit
a878fcf3fc
1059
public/.htaccess
1059
public/.htaccess
File diff suppressed because it is too large
Load diff
|
@ -1,146 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="403 : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> 403 </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/403/">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
<h2>Sorry, you don't have permission to do that</h2>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
|
@ -1,24 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>403s on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/403/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>403</title>
|
|
||||||
<link>https://jeremykidwell.info/403/</link>
|
|
||||||
<pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/403/</guid>
|
|
||||||
<description><h2>Sorry, you don't have permission to do that</h2>
|
|
||||||
|
|
||||||
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
168
public/404.html
168
public/404.html
|
@ -1,168 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<link href="http://gmpg.org/xfn/11" rel="profile">
|
|
||||||
<meta http-equiv="content-type" content="text/html; charset=utf-8">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
|
||||||
<title>404 Page not found</title>
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info//css/kube.css" />
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info//css/demo.css" />
|
|
||||||
<link href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
<link rel="apple-touch-icon-precomposed" href="https://jeremykidwell.info//apple-touch-icon.png">
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info//favicon.ico" />
|
|
||||||
|
|
||||||
<link href="https://jeremykidwell.info/index.xml" rel="alternate" type="application/rss+xml" title="jeremykidwell.info" />
|
|
||||||
</script>
|
|
||||||
</head>
|
|
||||||
|
|
||||||
|
|
||||||
<body>
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<div class="wrapper">
|
|
||||||
|
|
||||||
<div class="units-row">
|
|
||||||
|
|
||||||
<div class="unit-50">
|
|
||||||
<h2>404: Page Not Found</h2>
|
|
||||||
<p class="big">
|
|
||||||
There is no page here at the address you requested. Perhaps try a search to find what you are looking for?
|
|
||||||
</p>
|
|
||||||
<form method="get" action="http://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search jeremykidwell.info">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="ka" value="Alegreya"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="hidden" name="kt" value="Alegreya Sans"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="unit-50">
|
|
||||||
<h2>Recent News</h2>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="news">→ All News</a></nav>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<h2>Recent Writing</h2>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="writing">→ All Writing</a></nav>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
|
|
||||||
<h2>Recent & Upcoming Presentations</h2>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="presentation">→ All Presentations</a></nav>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<h2>Recent & Upcoming Classes</h2>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="class">→ All Classes</a></nav>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,145 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="404 : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> 404 </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/404/">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
<h2>404: File not found</h2>
|
|
||||||
|
|
||||||
<h4>Sorry, that doesn't seem to be here</h4>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
|
@ -1,23 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>404s on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/404/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>404</title>
|
|
||||||
<link>https://jeremykidwell.info/404/</link>
|
|
||||||
<pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/404/</guid>
|
|
||||||
<description><h2>404: File not found</h2>
|
|
||||||
|
|
||||||
<h4>Sorry, that doesn't seem to be here</h4></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
Binary file not shown.
Before Width: | Height: | Size: 25 KiB |
|
@ -1,21 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Archives on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/archive/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Archives</title>
|
|
||||||
<link>https://jeremykidwell.info/blog/archives.html</link>
|
|
||||||
<pubDate>Mon, 01 Jan 0001 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/blog/archives.html</guid>
|
|
||||||
<description></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,162 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Archives : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Archives </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/blog/archives.html">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-60">
|
|
||||||
|
|
||||||
<h3 class="center">February 2016</h3>
|
|
||||||
<p>
|
|
||||||
· <time><em>February 8</em></time>, <a href="https://jeremykidwell.info/blog/">Blogs</a> · <time><em>February 8</em></time>, <a href="https://jeremykidwell.info/blog/archives/2016/02/08/friday-poem/">A poem for your friday</a> </p>
|
|
||||||
|
|
||||||
<h3 class="center">September 2014</h3>
|
|
||||||
<p>
|
|
||||||
· <time><em>September 30</em></time>, <a href="https://jeremykidwell.info/blog/archives/2014/09/30/climate_march/">Address to the People’s Climate March</a> · <time><em>September 6</em></time>, <a href="https://jeremykidwell.info/blog/archives/2014/09/06/surprising_turn/">When a surprising turn occurs</a> </p>
|
|
||||||
|
|
||||||
<h3 class="center">May 2014</h3>
|
|
||||||
<p>
|
|
||||||
· <time><em>May 20</em></time>, <a href="https://jeremykidwell.info/blog/archives/2014/05/20/on_dying/">Fr Schmemann on Dying</a> </p>
|
|
||||||
|
|
||||||
|
|
||||||
<a href="https://jeremykidwell.info/blog/archives/">All Posts by Date</a> · <a href="https://jeremykidwell.info/categories/">All Posts by Category</a>
|
|
||||||
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<p><em>Links to all the blog entires on this site since 2002.</em></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
|
@ -1 +0,0 @@
|
||||||
Options -Indexes
|
|
|
@ -1,156 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Categories : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Categories </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/categories/">
|
|
||||||
<link href="https://jeremykidwell.info/categories/index.xml" rel="alternate" type="application/rss+xml" title="Categories" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
|
|
||||||
<h2>Category Index</h2>
|
|
||||||
<p class="capitalize">
|
|
||||||
|
|
||||||
|
|
||||||
· <a href="categories/quotes"> quotes </a> (2)
|
|
||||||
|
|
||||||
· <a href="categories/poems"> poems </a> (1)
|
|
||||||
|
|
||||||
· <a href="categories/speeches"> speeches </a> (1)
|
|
||||||
|
|
||||||
</p>
|
|
||||||
<a href="https://jeremykidwell.info/blog/archives/">All Posts by Date</a> · <a href="https://jeremykidwell.info/categories/">All Posts by Category</a>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Categories on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/categories/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Poems</title>
|
|
||||||
<link>https://jeremykidwell.info/categories/poems/</link>
|
|
||||||
<pubDate>Mon, 08 Feb 2016 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/categories/poems/</guid>
|
|
||||||
<description></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Quotes</title>
|
|
||||||
<link>https://jeremykidwell.info/categories/quotes/</link>
|
|
||||||
<pubDate>Sat, 06 Sep 2014 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/categories/quotes/</guid>
|
|
||||||
<description></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Speeches</title>
|
|
||||||
<link>https://jeremykidwell.info/categories/speeches/</link>
|
|
||||||
<pubDate>Tue, 30 Sep 2014 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/categories/speeches/</guid>
|
|
||||||
<description></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,249 +0,0 @@
|
||||||
.bigfoot-footnote__button {
|
|
||||||
position: relative;
|
|
||||||
z-index: 5;
|
|
||||||
top: -0.1em;
|
|
||||||
box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;
|
|
||||||
display: inline-block;
|
|
||||||
padding: 0.35em;
|
|
||||||
margin: 0 0.1em 0 0.2em;
|
|
||||||
border: none;
|
|
||||||
border-radius: 0.3em;
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: rgba(110, 110, 110, 0.2);
|
|
||||||
-webkit-backface-visibility: hidden;
|
|
||||||
backface-visibility: hidden;
|
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-decoration: none;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
-webkit-transition-property: background-color;
|
|
||||||
transition-property: background-color;
|
|
||||||
-webkit-transition-duration: 0.25s;
|
|
||||||
transition-duration: 0.25s;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__button:hover, .bigfoot-footnote__button:focus {
|
|
||||||
outline: none;
|
|
||||||
background-color: rgba(110, 110, 110, 0.5);
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__button:active {
|
|
||||||
background-color: rgba(110, 110, 110, 0.5);
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__button.is-active {
|
|
||||||
background-color: #6e6e6e;
|
|
||||||
-webkit-transition-delay: 0.1s;
|
|
||||||
transition-delay: 0.1s;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__button:after {
|
|
||||||
content: '';
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__button__circle {
|
|
||||||
display: inline-block;
|
|
||||||
width: 0.25em;
|
|
||||||
height: 0.25em;
|
|
||||||
margin-right: 0.25em;
|
|
||||||
float: left;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__button__circle:last-child {
|
|
||||||
margin-right: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__container {
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
text-indent: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
@media not print {
|
|
||||||
.footnote-print-only {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@media print {
|
|
||||||
.bigfoot-footnote,
|
|
||||||
.bigfoot-footnote__button {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
.bigfoot-footnote {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 10;
|
|
||||||
top: 0;
|
|
||||||
left: 0;
|
|
||||||
display: inline-block;
|
|
||||||
box-sizing: border-box;
|
|
||||||
max-width: 90%;
|
|
||||||
margin: 1.96924em 0;
|
|
||||||
background: #fafafa;
|
|
||||||
opacity: 0;
|
|
||||||
border-radius: 0.5em;
|
|
||||||
border: 1px solid #c3c3c3;
|
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
|
|
||||||
line-height: 0;
|
|
||||||
-webkit-transition-property: opacity, -webkit-transform;
|
|
||||||
transition-property: opacity, transform;
|
|
||||||
-webkit-transition-duration: 0.25s;
|
|
||||||
transition-duration: 0.25s;
|
|
||||||
-webkit-transition-timing-function: ease;
|
|
||||||
transition-timing-function: ease;
|
|
||||||
-webkit-transform: scale(0.1) translateZ(0);
|
|
||||||
transform: scale(0.1) translateZ(0);
|
|
||||||
-webkit-transform-origin: 50% 0;
|
|
||||||
-ms-transform-origin: 50% 0;
|
|
||||||
transform-origin: 50% 0;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-positioned-top {
|
|
||||||
top: auto;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-active {
|
|
||||||
-webkit-transform: scale(1) translateZ(0);
|
|
||||||
transform: scale(1) translateZ(0);
|
|
||||||
opacity: 0.97;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-bottom-fixed {
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0;
|
|
||||||
top: auto;
|
|
||||||
left: 0;
|
|
||||||
right: auto;
|
|
||||||
-webkit-transform: translateY(100%);
|
|
||||||
-ms-transform: translateY(100%);
|
|
||||||
transform: translateY(100%);
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
border-radius: 0;
|
|
||||||
opacity: 1;
|
|
||||||
border-width: 1px 0 0;
|
|
||||||
-webkit-transition: -webkit-transform 0.3s ease;
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-bottom-fixed.is-active {
|
|
||||||
-webkit-transform: translateY(0);
|
|
||||||
-ms-transform: translateY(0);
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-bottom-fixed .bigfoot-footnote__wrapper {
|
|
||||||
margin: 0 0 0 50%;
|
|
||||||
-webkit-transform: translateX(-50%);
|
|
||||||
-ms-transform: translateX(-50%);
|
|
||||||
transform: translateX(-50%);
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-bottom-fixed .bigfoot-footnote__wrapper,
|
|
||||||
.bigfoot-footnote.is-bottom-fixed .bigfoot-footnote__content {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-bottom-fixed .bigfoot-footnote__tooltip {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-scrollable:after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
bottom: 0.3375em;
|
|
||||||
left: 0.3375em;
|
|
||||||
z-index: 14;
|
|
||||||
display: block;
|
|
||||||
height: 0.78125em;
|
|
||||||
width: 0.625em;
|
|
||||||
background-image: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgMTIgMTUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4iPgogICAgPGcgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFycm93IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiPgogICAgICAgICAgICA8cGF0aCBkPSJNNSwwIEw1LDExLjUiIGlkPSJMaW5lIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjUsNy41IEw1LjAyNzY5Mjc5LDEyLjAyNzY5MjgiIGlkPSJMaW5lIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LjUsNy41IEw5LjAyNzY5Mjc5LDEyLjAyNzY5MjgiIGlkPSJMaW5lLTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcuMDAwMDAwLCAxMC4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTcuMDAwMDAwLCAtMTAuMDAwMDAwKSAiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=");
|
|
||||||
background-size: cover;
|
|
||||||
opacity: 0.1;
|
|
||||||
transition-properties: opacity;
|
|
||||||
-webkit-transition-duration: 0.25s;
|
|
||||||
transition-duration: 0.25s;
|
|
||||||
-webkit-transition-timing-function: ease;
|
|
||||||
transition-timing-function: ease;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-scrollable .bigfoot-footnote__wrapper:before, .bigfoot-footnote.is-scrollable .bigfoot-footnote__wrapper:after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
z-index: 12;
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-scrollable .bigfoot-footnote__wrapper:before {
|
|
||||||
top: -1px;
|
|
||||||
height: 1.1em;
|
|
||||||
border-radius: 0.5em 0.5em 0 0;
|
|
||||||
background-image: -webkit-linear-gradient(top, #fafafa 50%, rgba(250, 250, 250, 0) 100%);
|
|
||||||
background-image: linear-gradient(to bottom, #fafafa 50%, rgba(250, 250, 250, 0) 100%);
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-scrollable .bigfoot-footnote__wrapper:after {
|
|
||||||
bottom: -1px;
|
|
||||||
height: 1.2em;
|
|
||||||
border-radius: 0 0 0.5em 0.5em;
|
|
||||||
background-image: -webkit-linear-gradient(bottom, #fafafa 50%, rgba(250, 250, 250, 0) 100%);
|
|
||||||
background-image: linear-gradient(to top, #fafafa 50%, rgba(250, 250, 250, 0) 100%);
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-scrollable ::-webkit-scrollbar {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote.is-fully-scrolled:after, .bigfoot-footnote.is-fully-scrolled:before {
|
|
||||||
opacity: 0;
|
|
||||||
-webkit-transition-delay: 0;
|
|
||||||
transition-delay: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__wrapper {
|
|
||||||
position: relative;
|
|
||||||
z-index: 14;
|
|
||||||
width: 22em;
|
|
||||||
display: inline-block;
|
|
||||||
box-sizing: inherit;
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 0;
|
|
||||||
background-color: #fafafa;
|
|
||||||
border-radius: 0.5em;
|
|
||||||
line-height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__content {
|
|
||||||
position: relative;
|
|
||||||
z-index: 8;
|
|
||||||
display: inline-block;
|
|
||||||
max-height: 15em;
|
|
||||||
padding: 1.1em 1.3em 1.2em;
|
|
||||||
box-sizing: inherit;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
background: #fafafa;
|
|
||||||
border-radius: 0.5em;
|
|
||||||
-webkit-font-smoothing: subpixel-antialiased;
|
|
||||||
line-height: normal;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__content img {
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__content *:last-child {
|
|
||||||
margin-bottom: 0 !important;
|
|
||||||
}
|
|
||||||
.bigfoot-footnote__content *:first-child {
|
|
||||||
margin-top: 0 !important;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__tooltip {
|
|
||||||
position: absolute;
|
|
||||||
z-index: 12;
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-left: -0.65em;
|
|
||||||
width: 1.3em;
|
|
||||||
height: 1.3em;
|
|
||||||
-webkit-transform: rotate(45deg);
|
|
||||||
-ms-transform: rotate(45deg);
|
|
||||||
transform: rotate(45deg);
|
|
||||||
background: #fafafa;
|
|
||||||
border: 1px solid #c3c3c3;
|
|
||||||
box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3);
|
|
||||||
border-top-left-radius: 0;
|
|
||||||
}
|
|
||||||
.is-positioned-bottom .bigfoot-footnote__tooltip {
|
|
||||||
top: -0.65em;
|
|
||||||
}
|
|
||||||
.is-positioned-top .bigfoot-footnote__tooltip {
|
|
||||||
bottom: -0.65em;
|
|
||||||
}
|
|
|
@ -1,619 +0,0 @@
|
||||||
// bigfoot - v2.1.1 - 2015.04.04
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___ ___ ___ ___
|
|
||||||
// / /\ / /\ / /\ / /\ ___ / /\ / /\
|
|
||||||
// / /::\ / /::\ / /::\ / /::\ /__/\ / /:/_ / /::\
|
|
||||||
// / /:/\:\ / /:/\:\ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\ / /:/\:\
|
|
||||||
// / /:/~/:// /:/ \:\ / /:/~/:// /:/ \:\ \ \:\ / /:/ /:/_ / /:/~/:/
|
|
||||||
// /__/:/ /://__/:/ \__\:\/__/:/ /://__/:/ \__\:\ ___ \__\:\/__/:/ /:/ /\/__/:/ /:/___
|
|
||||||
// \ \:\/:/ \ \:\ / /:/\ \:\/:/ \ \:\ / /://__/\ | |:|\ \:\/:/ /:/\ \:\/:::::/
|
|
||||||
// \ \::/ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \:\| |:| \ \::/ /:/ \ \::/~~~~
|
|
||||||
// \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\__|:| \ \:\/:/ \ \:\
|
|
||||||
// \ \:\ \ \::/ \ \:\ \ \::/ \__\::::/ \ \::/ \ \:\
|
|
||||||
// \__\/ \__\/ \__\/ \__\/ ~~~~ \__\/ \__\/
|
|
||||||
//
|
|
||||||
// These are the key variables for styling the popover.
|
|
||||||
// Just set the variable to none if you don't want that styling.
|
|
||||||
|
|
||||||
// KEY VARIABLES
|
|
||||||
// =============================================================================
|
|
||||||
|
|
||||||
// STYLES
|
|
||||||
$popover-width: 22em !default; // Ideal width of the popover
|
|
||||||
$popover-max-width: 90% !default; // Best as a % to accommodate smaller viewports
|
|
||||||
$popover-max-height: 15em !default; // Maximum size of the content area
|
|
||||||
$popover-color-background: rgb(250, 250, 250) !default; // Color of the popover background
|
|
||||||
$popover-border-radius: 0.5em !default; // Radius of the corners of the popover
|
|
||||||
$popover-border: 1px solid rgb(195, 195, 195) !default; // Border of the popover/ tooltip
|
|
||||||
$popover-inactive-opacity: 0 !default; // Opacity of the popover when instantiated/ deactivating
|
|
||||||
$popover-active-opacity: 0.97 !default; // Opacity of the popover when active
|
|
||||||
$popover-box-shadow: 0px 0px 8px rgba(0, 0, 0, 0.3) !default; // Sets the box shadow under the popover/ tooltip
|
|
||||||
$popover-bottom-position: auto !default; // Sets the bottom position of the popover. Use only when setting positionPopover to false in the script
|
|
||||||
$popover-left-position: auto !default; // Sets the left position of the popover. Use only when setting positionPopover to false in the script
|
|
||||||
$popover-tooltip-size: 1.3em !default; // Sets the side lengths of the tooltip
|
|
||||||
$popover-scroll-indicator-width: 0.625em !default; // The width of the scroll indicator
|
|
||||||
$popover-scroll-indicator-aspect-ratio: (15/12) !default; // The ratio of the height over the width of the scroll indicator
|
|
||||||
$popover-scroll-indicator-opacity: 0.1 !default; // The active opacity of scroll indicators
|
|
||||||
$popover-initial-transform-state: scale(0.1) translateZ(0) !default; // The inital transform state for the popover
|
|
||||||
$popover-active-transform-state: scale(1) translateZ(0) !default; // The transform state for the popover once it is fully activated
|
|
||||||
|
|
||||||
// OPTIONAL ELEMENTS
|
|
||||||
$popover-include-tooltip: true !default; // Adds a tooltip pointing to the footnote button
|
|
||||||
$popover-include-scroll-indicator: true !default; // Adds an elipsis at the bottom of scrollable popovers
|
|
||||||
$popover-include-scrolly-fades: true !default; // Fades content in on scrollable popovers
|
|
||||||
$popover-scroll-indicator-icon: url("data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTJweCIgaGVpZ2h0PSIxNXB4IiB2aWV3Qm94PSIwIDAgMTIgMTUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIiB4bWxuczp4bGluaz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94bGluayIgcHJlc2VydmVBc3BlY3RSYXRpbz0ieE1pbllNaW4iPgogICAgPGcgc3Ryb2tlPSJub25lIiBzdHJva2Utd2lkdGg9IjEiIGZpbGw9Im5vbmUiIGZpbGwtcnVsZT0iZXZlbm9kZCI+CiAgICAgICAgPGcgaWQ9IkFycm93IiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxLjAwMDAwMCwgMS4wMDAwMDApIiBzdHJva2U9ImJsYWNrIiBzdHJva2Utd2lkdGg9IjIiIHN0cm9rZS1saW5lY2FwPSJzcXVhcmUiPgogICAgICAgICAgICA8cGF0aCBkPSJNNSwwIEw1LDExLjUiIGlkPSJMaW5lIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik0wLjUsNy41IEw1LjAyNzY5Mjc5LDEyLjAyNzY5MjgiIGlkPSJMaW5lIj48L3BhdGg+CiAgICAgICAgICAgIDxwYXRoIGQ9Ik00LjUsNy41IEw5LjAyNzY5Mjc5LDEyLjAyNzY5MjgiIGlkPSJMaW5lLTIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDcuMDAwMDAwLCAxMC4wMDAwMDApIHNjYWxlKC0xLCAxKSB0cmFuc2xhdGUoLTcuMDAwMDAwLCAtMTAuMDAwMDAwKSAiPjwvcGF0aD4KICAgICAgICA8L2c+CiAgICA8L2c+Cjwvc3ZnPgo=") !default;
|
|
||||||
|
|
||||||
|
|
||||||
// OTHER VARIABLES
|
|
||||||
// =============================================================================
|
|
||||||
|
|
||||||
// POPOVER
|
|
||||||
$popover-margin-top: 0.1em !default;
|
|
||||||
$popover-padding-content-horizontal: 1.3em !default;
|
|
||||||
$popover-padding-content-top: 1.1em !default;
|
|
||||||
$popover-padding-content-bottom: 1.2em !default;
|
|
||||||
$popover-z-index: 10 !default; // Set the base so that it's above the other body children
|
|
||||||
$popover-initial-transform-origin: 50% 0 !default;
|
|
||||||
|
|
||||||
// POPOVER CONTENT WRAPPER
|
|
||||||
$popover-content-color-background: $popover-color-background !default;
|
|
||||||
$popover-content-border-radius: $popover-border-radius !default;
|
|
||||||
|
|
||||||
// OTHER POPOVER ELEMENTS
|
|
||||||
$popover-tooltip-background: $popover-color-background !default;
|
|
||||||
$popover-tooltip-radius: 0 !default;
|
|
||||||
$popover-scroll-indicator-bottom-position: 0.45em !default;
|
|
||||||
$popover-scrolly-fade-gradient-start-location: 50% !default;
|
|
||||||
$popover-scroll-indicator-padding: (($popover-padding-content-horizontal/2) - ($popover-scroll-indicator-width/2)) !default;
|
|
||||||
|
|
||||||
// TRANSITIONS
|
|
||||||
$popover-transition-default-duration: 0.25s !default;
|
|
||||||
$popover-scroll-indicator-transition-properties: opacity !default;
|
|
||||||
|
|
||||||
// Use none for areas you don't want to transition
|
|
||||||
$popover-transition-properties: opacity, transform !default; // no mixin to do proper prefixing of the transform, so I have to do it manually; see mixin below
|
|
||||||
$popover-scroll-indicator-transition-properties: opacity !default;
|
|
||||||
$popover-scroll-up-transition-delay: 0.4s !default; // Sets the delay for the transition of the scroll indicator when scrolling upwards
|
|
||||||
$popover-transition-default-timing-function: ease !default;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___
|
|
||||||
// _____ /__/\ ___ ___ / /\ /__/\
|
|
||||||
// / /::\ \ \:\ / /\ / /\ / /::\ \ \:\
|
|
||||||
// / /:/\:\ \ \:\ / /:/ / /:/ / /:/\:\ \ \:\
|
|
||||||
// / /:/~/::\ ___ \ \:\ / /:/ / /:/ / /:/ \:\ _____\__\:\
|
|
||||||
// /__/:/ /:/\:|/__/\ \__\:\ / /::\ / /::\ /__/:/ \__\:\/__/::::::::\
|
|
||||||
// \ \:\/:/~/:/\ \:\ / /://__/:/\:\ /__/:/\:\\ \:\ / /:/\ \:\~~\~~\/
|
|
||||||
// \ \::/ /:/ \ \:\ /:/ \__\/ \:\\__\/ \:\\ \:\ /:/ \ \:\ ~~~
|
|
||||||
// \ \:\/:/ \ \:\/:/ \ \:\ \ \:\\ \:\/:/ \ \:\
|
|
||||||
// \ \::/ \ \::/ \__\/ \__\/ \ \::/ \ \:\
|
|
||||||
// \__\/ \__\/ \__\/ \__\/
|
|
||||||
//
|
|
||||||
// These are the key variables for styling the button.
|
|
||||||
// Just set the variable to none if you don't want that styling.
|
|
||||||
|
|
||||||
// KEY VARIABLES
|
|
||||||
// =============================================================================
|
|
||||||
|
|
||||||
$button-height: 0.95em !default; // The total height of the button
|
|
||||||
$button-width: auto !default; // The total button width (applies only if $button-apply-dimensions is true)
|
|
||||||
$button-inner-circle-size: 0.25em !default; // Total height/width of the ellipsis circles
|
|
||||||
$button-border-radius: 0.3em !default; // Border radius on the button itself
|
|
||||||
$button-left-margin: 0.2em !default; // Margin between the button and the text to its left
|
|
||||||
$button-right-margin: 0.1em !default; // Margin between the button and the text to its right
|
|
||||||
$button-vertical-adjust: -0.1em !default; // Pushes the buttons along the vertical axis to align it with text as desired
|
|
||||||
$button-inner-circle-left-margin: 1*$button-inner-circle-size !default; // Space between the ellipsis circles
|
|
||||||
|
|
||||||
$button-color: rgb(110, 110, 110) !default; // Background color of the button
|
|
||||||
$button-hovered-color: $button-color !default; // Background color of the button when being hovered
|
|
||||||
$button-activating-color: $button-color !default; // Background color of the button when being clicked
|
|
||||||
$button-active-color: $button-color !default; // Background color of the button when active
|
|
||||||
$button-standard-opacity: 0.2 !default; // Opacity for when the button is just sittin' there
|
|
||||||
$button-hovered-opacity: 0.5 !default; // Opacity for when the button is being hovered over
|
|
||||||
$button-activating-opacity: $button-hovered-opacity !default; // Opacity for when the button is being clicked
|
|
||||||
$button-active-opacity: 1 !default; // Opacity for when the button is active
|
|
||||||
$button-active-style-delay: 0.1s !default; // Delay before applying .active styles; this can be used to match to the popover activation transition
|
|
||||||
|
|
||||||
$button-inner-circle-color: white !default; // Background color of the ellipsis circle
|
|
||||||
$button-inner-circle-border: none !default; // Border of the ellipsis circle
|
|
||||||
|
|
||||||
|
|
||||||
// OTHER VARIABLES
|
|
||||||
// =============================================================================
|
|
||||||
|
|
||||||
$button-total-padding: $button-height - $button-inner-circle-size !default;
|
|
||||||
$button-per-side-padding: 0.5*$button-total-padding !default;
|
|
||||||
$button-transition-properties: background-color !default;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -----
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___ ___
|
|
||||||
// /__/\ ___ /__/| ___ /__/\ / /\
|
|
||||||
// | |::\ / /\ | |:| / /\ \ \:\ / /:/_
|
|
||||||
// | |:|:\ / /:/ | |:| / /:/ \ \:\ / /:/ /\
|
|
||||||
// __|__|:|\:\ /__/::\ __|__|:| /__/::\ _____\__\:\ / /:/ /::\
|
|
||||||
// /__/::::| \:\\__\/\:\__/__/::::\____\__\/\:\__ /__/::::::::\/__/:/ /:/\:\
|
|
||||||
// \ \:\~~\__\/ \ \:\/\ ~\~~\::::/ \ \:\/\\ \:\~~\~~\/\ \:\/:/~/:/
|
|
||||||
// \ \:\ \__\::/ |~~|:|~~ \__\::/ \ \:\ ~~~ \ \::/ /:/
|
|
||||||
// \ \:\ /__/:/ | |:| /__/:/ \ \:\ \__\/ /:/
|
|
||||||
// \ \:\ \__\/ | |:| \__\/ \ \:\ /__/:/
|
|
||||||
// \__\/ |__|/ \__\/ \__\/
|
|
||||||
|
|
||||||
@mixin print-styles {
|
|
||||||
// These styles restore the original footnote numbers and texts when the page is printed
|
|
||||||
@media not print {
|
|
||||||
.footnote-print-only {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@media print {
|
|
||||||
.bigfoot-footnote,
|
|
||||||
.bigfoot-footnote__button {
|
|
||||||
display: none !important;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -----
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___
|
|
||||||
// _____ /__/\ ___ ___ / /\ /__/\
|
|
||||||
// / /::\ \ \:\ / /\ / /\ / /::\ \ \:\
|
|
||||||
// / /:/\:\ \ \:\ / /:/ / /:/ / /:/\:\ \ \:\
|
|
||||||
// / /:/~/::\ ___ \ \:\ / /:/ / /:/ / /:/ \:\ _____\__\:\
|
|
||||||
// /__/:/ /:/\:|/__/\ \__\:\ / /::\ / /::\ /__/:/ \__\:\/__/::::::::\
|
|
||||||
// \ \:\/:/~/:/\ \:\ / /://__/:/\:\ /__/:/\:\\ \:\ / /:/\ \:\~~\~~\/
|
|
||||||
// \ \::/ /:/ \ \:\ /:/ \__\/ \:\\__\/ \:\\ \:\ /:/ \ \:\ ~~~
|
|
||||||
// \ \:\/:/ \ \:\/:/ \ \:\ \ \:\\ \:\/:/ \ \:\
|
|
||||||
// \ \::/ \ \::/ \__\/ \__\/ \ \::/ \ \:\
|
|
||||||
// \__\/ \__\/ \__\/ \__\/
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*
|
|
||||||
// The button that activates the footnote. By default, this will appear as a
|
|
||||||
// flat button that has an ellipse contained inside of it.
|
|
||||||
|
|
||||||
// @state .is-active - The associated popover has been activated and is visible.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__button {
|
|
||||||
// POSITIONING
|
|
||||||
position: relative;
|
|
||||||
z-index: 5;
|
|
||||||
top: $button-vertical-adjust;
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
box-sizing: border-box;
|
|
||||||
-moz-box-sizing: border-box;;
|
|
||||||
display: inline-block;
|
|
||||||
padding: $button-per-side-padding;
|
|
||||||
margin: 0 $button-right-margin 0 $button-left-margin;
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
border: none;
|
|
||||||
border-radius: $button-border-radius;
|
|
||||||
cursor: pointer;
|
|
||||||
background-color: rgba($button-color, $button-standard-opacity);
|
|
||||||
backface-visibility: hidden;
|
|
||||||
|
|
||||||
// TEXT
|
|
||||||
font-size: 1rem;
|
|
||||||
line-height: 0;
|
|
||||||
vertical-align: middle;
|
|
||||||
text-decoration: none;
|
|
||||||
-webkit-font-smoothing: antialiased;
|
|
||||||
|
|
||||||
// TRANSITIONS
|
|
||||||
transition-property: $button-transition-properties;
|
|
||||||
transition-duration: $popover-transition-default-duration;
|
|
||||||
|
|
||||||
&:hover,
|
|
||||||
&:focus {
|
|
||||||
outline: none;
|
|
||||||
background-color: rgba($button-hovered-color, $button-hovered-opacity);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:active {
|
|
||||||
background-color: rgba($button-activating-color, $button-activating-opacity);
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-active {
|
|
||||||
background-color: rgba($button-active-color, $button-active-opacity);
|
|
||||||
transition-delay: $button-active-style-delay;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Clearfix
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
display: table;
|
|
||||||
clear: both;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// _____ ___ ___
|
|
||||||
// / /::\ / /\ ___ / /\
|
|
||||||
// / /:/\:\ / /::\ / /\ / /:/_
|
|
||||||
// / /:/ \:\ / /:/\:\ / /:/ / /:/ /\
|
|
||||||
// /__/:/ \__\:| / /:/ \:\ / /:/ / /:/ /::\
|
|
||||||
// \ \:\ / /://__/:/ \__\:\ / /::\ /__/:/ /:/\:\
|
|
||||||
// \ \:\ /:/ \ \:\ / /://__/:/\:\\ \:\/:/~/:/
|
|
||||||
// \ \:\/:/ \ \:\ /:/ \__\/ \:\\ \::/ /:/
|
|
||||||
// \ \::/ \ \:\/:/ \ \:\\__\/ /:/
|
|
||||||
// \__\/ \ \::/ \__\/ /__/:/
|
|
||||||
// \__\/ \__\/
|
|
||||||
|
|
||||||
//*
|
|
||||||
// Each of the three circles forming the ellipse within the button.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__button__circle {
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
display: inline-block;
|
|
||||||
width: $button-inner-circle-size;
|
|
||||||
height: $button-inner-circle-size;
|
|
||||||
margin-right: $button-inner-circle-left-margin;
|
|
||||||
float: left;
|
|
||||||
|
|
||||||
// Gets rid of margin on the last circle
|
|
||||||
&:last-child { margin-right: 0; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___ ___ ___
|
|
||||||
// / /\ / /\ /__/\ ___ / /\ ___ /__/\
|
|
||||||
// / /:/ / /::\ \ \:\ / /\ / /::\ / /\ \ \:\
|
|
||||||
// / /:/ / /:/\:\ \ \:\ / /:/ / /:/\:\ / /:/ \ \:\
|
|
||||||
// / /:/ ___ / /:/ \:\ _____\__\:\ / /:/ / /:/~/::\ /__/::\ _____\__\:\
|
|
||||||
// /__/:/ / /\/__/:/ \__\:\/__/::::::::\ / /::\ /__/:/ /:/\:\\__\/\:\__ /__/::::::::\
|
|
||||||
// \ \:\ / /:/\ \:\ / /:/\ \:\~~\~~\//__/:/\:\\ \:\/:/__\/ \ \:\/\\ \:\~~\~~\/
|
|
||||||
// \ \:\ /:/ \ \:\ /:/ \ \:\ ~~~ \__\/ \:\\ \::/ \__\::/ \ \:\ ~~~
|
|
||||||
// \ \:\/:/ \ \:\/:/ \ \:\ \ \:\\ \:\ /__/:/ \ \:\
|
|
||||||
// \ \::/ \ \::/ \ \:\ \__\/ \ \:\ \__\/ \ \:\
|
|
||||||
// \__\/ \__\/ \__\/ \__\/ \__\/
|
|
||||||
|
|
||||||
//*
|
|
||||||
// The container for the button and popover. This is required so that the popover
|
|
||||||
// is guaranteed to have a relatively-positioned container, and to help with the
|
|
||||||
// positioning calculation.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__container {
|
|
||||||
display: inline-block;
|
|
||||||
position: relative;
|
|
||||||
text-indent: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___
|
|
||||||
// / /\ / /\ ___ /__/\ ___
|
|
||||||
// / /::\ / /::\ / /\ \ \:\ / /\
|
|
||||||
// / /:/\:\ / /:/\:\ / /:/ \ \:\ / /:/
|
|
||||||
// / /:/~/:// /:/~/:/ /__/::\ _____\__\:\ / /:/
|
|
||||||
// /__/:/ /://__/:/ /:/___\__\/\:\__ /__/::::::::\ / /::\
|
|
||||||
// \ \:\/:/ \ \:\/:::::/ \ \:\/\\ \:\~~\~~\//__/:/\:\
|
|
||||||
// \ \::/ \ \::/~~~~ \__\::/ \ \:\ ~~~ \__\/ \:\
|
|
||||||
// \ \:\ \ \:\ /__/:/ \ \:\ \ \:\
|
|
||||||
// \ \:\ \ \:\ \__\/ \ \:\ \__\/
|
|
||||||
// \__\/ \__\/ \__\/
|
|
||||||
|
|
||||||
@include print-styles;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
// -----
|
|
||||||
|
|
||||||
|
|
||||||
// ___ ___ ___ ___ ___ ___
|
|
||||||
// / /\ / /\ / /\ / /\ ___ / /\ / /\
|
|
||||||
// / /::\ / /::\ / /::\ / /::\ /__/\ / /:/_ / /::\
|
|
||||||
// / /:/\:\ / /:/\:\ / /:/\:\ / /:/\:\ \ \:\ / /:/ /\ / /:/\:\
|
|
||||||
// / /:/~/:// /:/ \:\ / /:/~/:// /:/ \:\ \ \:\ / /:/ /:/_ / /:/~/:/
|
|
||||||
// /__/:/ /://__/:/ \__\:\/__/:/ /://__/:/ \__\:\ ___ \__\:\/__/:/ /:/ /\/__/:/ /:/___
|
|
||||||
// \ \:\/:/ \ \:\ / /:/\ \:\/:/ \ \:\ / /://__/\ | |:|\ \:\/:/ /:/\ \:\/:::::/
|
|
||||||
// \ \::/ \ \:\ /:/ \ \::/ \ \:\ /:/ \ \:\| |:| \ \::/ /:/ \ \::/~~~~
|
|
||||||
// \ \:\ \ \:\/:/ \ \:\ \ \:\/:/ \ \:\__|:| \ \:\/:/ \ \:\
|
|
||||||
// \ \:\ \ \::/ \ \:\ \ \::/ \__\::::/ \ \::/ \ \:\
|
|
||||||
// \__\/ \__\/ \__\/ \__\/ ~~~~ \__\/ \__\/
|
|
||||||
//
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*
|
|
||||||
// The popover for the footnote. This popover will be, by default, be sized and positioned
|
|
||||||
// by the script. However, many of the sizes can be established in this stylesheet and
|
|
||||||
// will be respected by the script. `max-width` will limit the width of the popover
|
|
||||||
// relative to the viewport. `width` (on `bigfoot-footnote__wrapper`) will set the
|
|
||||||
// absolute max width. Max height can be set via a `max-height` property
|
|
||||||
// on `bigfoot-footnote__content`.
|
|
||||||
|
|
||||||
// By default, the popover has a light gray background, a shadow for some depth,
|
|
||||||
// rounded corners, and a tooltip pointing to the footnote button.
|
|
||||||
|
|
||||||
// @state .is-active - The popover has been activated and is visible.
|
|
||||||
// @state .is-positioned-top - The popover is above the button.
|
|
||||||
// @state .is-positioned-bottom - The popover is below the button.
|
|
||||||
// @state .is-scrollable - The popover content is greater than the popover height.
|
|
||||||
// @state .is-fully-scrolled - The popover content is scrolled to the bottom.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote {
|
|
||||||
// POSITIONING
|
|
||||||
position: absolute;
|
|
||||||
z-index: $popover-z-index;
|
|
||||||
top: 0; left: 0;
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
display: inline-block;
|
|
||||||
box-sizing: border-box;
|
|
||||||
// Height is set in .footnote-content-wrapper
|
|
||||||
max-width: $popover-max-width;
|
|
||||||
// 1.414213... is to get the diagonal height of the tooltip using pythagorus, yo.
|
|
||||||
margin: ((1.4142135624 * $popover-tooltip-size / 2) + $button-height + $popover-margin-top) 0;
|
|
||||||
// fits the popover to the contents
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
background: $popover-color-background;
|
|
||||||
opacity: $popover-inactive-opacity;
|
|
||||||
border-radius: $popover-border-radius;
|
|
||||||
border: $popover-border;
|
|
||||||
box-shadow: $popover-box-shadow;
|
|
||||||
|
|
||||||
// TEXT
|
|
||||||
line-height: 0;
|
|
||||||
|
|
||||||
// TRANSITIONS
|
|
||||||
transition-property: $popover-transition-properties;
|
|
||||||
transition-duration: $popover-transition-default-duration;
|
|
||||||
transition-timing-function: $popover-transition-default-timing-function;
|
|
||||||
|
|
||||||
// TRANSFORMS
|
|
||||||
transform: $popover-initial-transform-state;
|
|
||||||
transform-origin: $popover-initial-transform-origin;
|
|
||||||
|
|
||||||
&.is-positioned-top {
|
|
||||||
top: auto;
|
|
||||||
bottom: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-active {
|
|
||||||
transform: $popover-active-transform-state;
|
|
||||||
opacity: $popover-active-opacity;
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-bottom-fixed {
|
|
||||||
// POSITIONING
|
|
||||||
position: fixed;
|
|
||||||
bottom: 0; top: auto;
|
|
||||||
left: 0; right: auto;
|
|
||||||
transform: translateY(100%);
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
width: 100%;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
border-radius: 0;
|
|
||||||
opacity: 1;
|
|
||||||
border-width: 1px 0 0;
|
|
||||||
|
|
||||||
// TRANSITIONS
|
|
||||||
transition: transform 0.3s ease;
|
|
||||||
|
|
||||||
&.is-active {
|
|
||||||
transform: translateY(0);
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__wrapper {
|
|
||||||
margin: 0 0 0 50%;
|
|
||||||
transform: translateX(-50%);
|
|
||||||
max-width: 100%;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__wrapper,
|
|
||||||
.bigfoot-footnote__content {
|
|
||||||
border-radius: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__tooltip {
|
|
||||||
display: none;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-scrollable {
|
|
||||||
// A scrollable indicator in the left margin of the popover.
|
|
||||||
&:after {
|
|
||||||
// CONTENT
|
|
||||||
content: '';
|
|
||||||
|
|
||||||
// POSITIONING
|
|
||||||
position: absolute;
|
|
||||||
bottom: $popover-scroll-indicator-padding;
|
|
||||||
left: $popover-scroll-indicator-padding;
|
|
||||||
z-index: ($popover-z-index + 4);
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
display: block;
|
|
||||||
height: ($popover-scroll-indicator-width*$popover-scroll-indicator-aspect-ratio);
|
|
||||||
width: $popover-scroll-indicator-width;
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
background-image: $popover-scroll-indicator-icon;
|
|
||||||
background-size: cover;
|
|
||||||
opacity: $popover-scroll-indicator-opacity;
|
|
||||||
transition-properties: $popover-scroll-indicator-transition-properties;
|
|
||||||
transition-duration: $popover-transition-default-duration;
|
|
||||||
transition-timing-function: $popover-transition-default-timing-function;
|
|
||||||
}
|
|
||||||
|
|
||||||
.bigfoot-footnote__wrapper {
|
|
||||||
&:before,
|
|
||||||
&:after {
|
|
||||||
content: '';
|
|
||||||
position: absolute;
|
|
||||||
width: 100%;
|
|
||||||
// Above the content
|
|
||||||
z-index: ($popover-z-index + 2);
|
|
||||||
left: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
&:before {
|
|
||||||
top: -1px;
|
|
||||||
height: $popover-padding-content-top;
|
|
||||||
border-radius: $popover-border-radius $popover-border-radius 0 0;
|
|
||||||
background-image: linear-gradient(to bottom, $popover-color-background $popover-scrolly-fade-gradient-start-location, transparentize($popover-color-background, 1) 100%);
|
|
||||||
}
|
|
||||||
|
|
||||||
&:after {
|
|
||||||
bottom: -1px;
|
|
||||||
height: $popover-padding-content-bottom;
|
|
||||||
border-radius: 0 0 $popover-border-radius $popover-border-radius;
|
|
||||||
background-image: linear-gradient(to top, $popover-color-background $popover-scrolly-fade-gradient-start-location, transparentize($popover-color-background, 1) 100%);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
::-webkit-scrollbar { display: none; }
|
|
||||||
}
|
|
||||||
|
|
||||||
&.is-fully-scrolled {
|
|
||||||
&:after,
|
|
||||||
&:before {
|
|
||||||
opacity: 0;
|
|
||||||
transition-delay: 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*
|
|
||||||
// Wraps around the footnote content. This is necessary in order to have an element
|
|
||||||
// above the tooltip and that can provide top and bottom indicators that there is
|
|
||||||
// additional content on scrollable popovers.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__wrapper {
|
|
||||||
// POSITIONING
|
|
||||||
position: relative;
|
|
||||||
// Above the outer tooltip, below the inner tooltip
|
|
||||||
z-index: ($popover-z-index + 4);
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
width: $popover-width;
|
|
||||||
display: inline-block;
|
|
||||||
box-sizing: inherit;
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 0;
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
background-color: $popover-color-background;
|
|
||||||
border-radius: $popover-border-radius;
|
|
||||||
|
|
||||||
// TEXT
|
|
||||||
line-height: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*
|
|
||||||
// Contains the actual footnote content. There is very little prescription here
|
|
||||||
// on the footnote content itself, except for removing and top margin on the first
|
|
||||||
// element and bottom margin on the last child.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__content {
|
|
||||||
// POSITIONING
|
|
||||||
position: relative;
|
|
||||||
z-index: ($popover-z-index - 2); // Below fading bars
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
display: inline-block;
|
|
||||||
max-height: $popover-max-height;
|
|
||||||
padding: $popover-padding-content-top $popover-padding-content-horizontal $popover-padding-content-bottom;
|
|
||||||
box-sizing: inherit;
|
|
||||||
overflow: auto;
|
|
||||||
-webkit-overflow-scrolling: touch;
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
background: $popover-content-color-background;
|
|
||||||
border-radius: $popover-content-border-radius;
|
|
||||||
|
|
||||||
// TEXT
|
|
||||||
-webkit-font-smoothing: subpixel-antialiased;
|
|
||||||
line-height: normal;
|
|
||||||
|
|
||||||
// INTERIOR ELEMENTS
|
|
||||||
img { max-width: 100%; }
|
|
||||||
*:last-child { margin-bottom: 0 !important; }
|
|
||||||
*:first-child { margin-top: 0 !important; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//*
|
|
||||||
// A triangular shape pointing towards the footnote button.
|
|
||||||
|
|
||||||
// @since 2.1.0
|
|
||||||
// @author Chris Sauve
|
|
||||||
|
|
||||||
.bigfoot-footnote__tooltip {
|
|
||||||
// POSITIONING
|
|
||||||
position: absolute;
|
|
||||||
// Above the footnote-main-wrapper and the outer tooltip
|
|
||||||
z-index: ($popover-z-index + 2);
|
|
||||||
|
|
||||||
// DISPLAY AND SIZING
|
|
||||||
box-sizing: border-box;
|
|
||||||
margin-left: (-0.5 * $popover-tooltip-size);
|
|
||||||
// Smaller by one border-width's worth
|
|
||||||
width: $popover-tooltip-size;
|
|
||||||
height: $popover-tooltip-size;
|
|
||||||
transform: rotate(45deg);
|
|
||||||
|
|
||||||
// BACKDROP
|
|
||||||
background: $popover-tooltip-background;
|
|
||||||
border: $popover-border;
|
|
||||||
box-shadow: $popover-box-shadow;
|
|
||||||
border-top-left-radius: $popover-tooltip-radius;
|
|
||||||
|
|
||||||
.is-positioned-bottom & {
|
|
||||||
top: (-0.5 * $popover-tooltip-size);
|
|
||||||
}
|
|
||||||
|
|
||||||
.is-positioned-top & {
|
|
||||||
bottom: (-0.5 * $popover-tooltip-size);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,327 +0,0 @@
|
||||||
/* =Typography
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
body {
|
|
||||||
font-family: 'ff-tisa-web-pro', Georgia, 'Times New Roman', Times, Serif;
|
|
||||||
font-size: 1.05em;
|
|
||||||
line-height: 1.6em;
|
|
||||||
background-color: #faf8f8;
|
|
||||||
}
|
|
||||||
|
|
||||||
form, input[type="search"], select[multiple="multiple"] {font-family: 'ff-tisa-web-pro', 'Trebuchet MS', Helvetica, Arial, sans-serif;}
|
|
||||||
|
|
||||||
h1, h2, h3, h4, h5 {
|
|
||||||
font-family: 'ff-tisa-web-pro', 'Trebuchet MS', 'Helvetica Neue', Helvetica, Arial, sans-serif;
|
|
||||||
font-style: italic;
|
|
||||||
color: #36454f;
|
|
||||||
}
|
|
||||||
h2, h3, h4, h5 {
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
h2, h3 {
|
|
||||||
text-transform: lowercase;
|
|
||||||
font-family: 'ff-meta-serif-sc-web-pro', 'Trebuchet MS', 'Helvetica Neue', Tahoma;
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.label-red {
|
|
||||||
background-color: #36454f;
|
|
||||||
}
|
|
||||||
|
|
||||||
a {color: #36454f;
|
|
||||||
text-decoration:none;
|
|
||||||
border-bottom: dotted 1px #A1A3A1;}
|
|
||||||
|
|
||||||
a:hover {text-decoration:underline;}
|
|
||||||
|
|
||||||
a.badge.badge-red { color: #fff;}
|
|
||||||
|
|
||||||
/* =Code
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
pre,
|
|
||||||
code,
|
|
||||||
kbd,
|
|
||||||
samp,
|
|
||||||
var,
|
|
||||||
output {
|
|
||||||
font-size: 90%;
|
|
||||||
font-style: normal;
|
|
||||||
font-family: PragmataPro, Menlo, Monaco, "Andale Mono", "Lucida Console", "Courier New", monospace;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =Common
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
img,
|
|
||||||
#feedback,
|
|
||||||
#banner,
|
|
||||||
#intro li {
|
|
||||||
border-radius: 3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
nav {text-transform: lowercase;
|
|
||||||
font-family: 'ff-meta-serif-sc-web-pro';}
|
|
||||||
|
|
||||||
.hd {font-family: 'ff-tisa-web-pro'; }
|
|
||||||
|
|
||||||
.caps {text-transform: lowercase;
|
|
||||||
font-family: 'ff-meta-serif-sc-web-pro'; }
|
|
||||||
|
|
||||||
|
|
||||||
.compact { margin: 0 0 0 1.3em; }
|
|
||||||
|
|
||||||
hr {border-top: 1px solid #b3cde0; margin-top:5ex; margin-bottom: 5ex;}
|
|
||||||
|
|
||||||
.separator {border-top: 5px solid #b3cde0;}
|
|
||||||
|
|
||||||
h2 {border-bottom: 1px solid #b3cde0;}
|
|
||||||
|
|
||||||
h2 a {border-bottom: none;}
|
|
||||||
|
|
||||||
/* =Layout
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
.wrapper {
|
|
||||||
padding: 0 10px;
|
|
||||||
width: 94%;
|
|
||||||
max-width: 1300px;
|
|
||||||
margin: auto;
|
|
||||||
}
|
|
||||||
#outer {
|
|
||||||
padding: 3em 0 1em 0;
|
|
||||||
margin: 1em 0 3em 0;
|
|
||||||
background: url(hero-image1.jpg) #282828;
|
|
||||||
background-size: cover;
|
|
||||||
background-position: 50% 50%;
|
|
||||||
box-shadow: 0 0 3px #333 inset;
|
|
||||||
/* border: 1px solid #000; */
|
|
||||||
color: #f2f2f2;
|
|
||||||
height: 200px;
|
|
||||||
}
|
|
||||||
#outer h2,
|
|
||||||
#outer h3 {
|
|
||||||
color: #ccc;
|
|
||||||
}
|
|
||||||
|
|
||||||
#topbar {
|
|
||||||
background: #536878;
|
|
||||||
padding:0px;
|
|
||||||
margin:0ex;
|
|
||||||
/* border-bottom: 3px solid #36454f; */
|
|
||||||
}
|
|
||||||
#midbar {
|
|
||||||
background: #eaa;
|
|
||||||
padding:0px;
|
|
||||||
margin:0ex;
|
|
||||||
/* border-bottom: 3px solid #36454f; */
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
#topbar .navbar {padding-bottom:14px; font-size:120%;}
|
|
||||||
#topbar li a {color: #fff; border-bottom: none;}
|
|
||||||
#topbar li a {color: #b3cde0;}
|
|
||||||
#topbar li span a {color: #fff;}
|
|
||||||
|
|
||||||
.avatar {
|
|
||||||
-webkit-border-radius: 50em;
|
|
||||||
-moz-border-radius: 50em;
|
|
||||||
border-radius: 50em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.image-left {
|
|
||||||
float: left;
|
|
||||||
margin: 0 1em 1em 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =Header
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
header {
|
|
||||||
padding-top: 15px;
|
|
||||||
margin-bottom: 0em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* #header h1 {
|
|
||||||
float: left;
|
|
||||||
font-size: 48px;
|
|
||||||
margin-top: 1px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
color: #ffffff;
|
|
||||||
} */
|
|
||||||
/* #header nav {
|
|
||||||
margin-top: 1.2em;
|
|
||||||
margin-bottom: 0;
|
|
||||||
float: right;
|
|
||||||
} */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
header h1 { font-size: 24px;
|
|
||||||
margin-top: 1px;
|
|
||||||
margin-bottom: 0;
|
|
||||||
/* color: #ffffff;*/ }
|
|
||||||
|
|
||||||
|
|
||||||
#topbar form {float:right; display:inline-block; }
|
|
||||||
|
|
||||||
|
|
||||||
/* =Promo
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#promo {
|
|
||||||
margin-bottom: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =Intro
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#intro .subheader {
|
|
||||||
color: rgba(0, 0, 0, .4);
|
|
||||||
padding-bottom: .3em;
|
|
||||||
border-bottom: 1px solid #ccc;
|
|
||||||
}
|
|
||||||
#intro li {
|
|
||||||
/* background-color: #e9e6da;*/
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* =Feedback
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#feedback {
|
|
||||||
background-color: rgba(0,0,0,.5);
|
|
||||||
padding: 2em 3em;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =Banner
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#banner {
|
|
||||||
line-height: 0;
|
|
||||||
padding: 1.5em;
|
|
||||||
background-color: #e9e6da;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* =Blocks
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#blocks dl {
|
|
||||||
overflow: hidden;
|
|
||||||
margin: 0;
|
|
||||||
padding-bottom: 1.5em;
|
|
||||||
}
|
|
||||||
#blocks dt {
|
|
||||||
float: left;
|
|
||||||
width: 22%;
|
|
||||||
margin-right: 4%;
|
|
||||||
}
|
|
||||||
#blocks dt img {
|
|
||||||
padding: 4px;
|
|
||||||
background-color: #fff;
|
|
||||||
border: 1px solid #000;
|
|
||||||
box-shadow: 4px 4px 0 #000;
|
|
||||||
}
|
|
||||||
#blocks dd {
|
|
||||||
margin: 0;
|
|
||||||
float: left;
|
|
||||||
width: 74%;
|
|
||||||
padding-bottom: 1.5em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* =Partners
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#partners {
|
|
||||||
padding-top: 1.5em;
|
|
||||||
}
|
|
||||||
#partners h4 {
|
|
||||||
color: #666;
|
|
||||||
}
|
|
||||||
/* =Footer
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
|
|
||||||
.dateblock {text-align:right; }
|
|
||||||
|
|
||||||
|
|
||||||
/* =Footer
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
#footer {
|
|
||||||
color: #b3cde0;
|
|
||||||
margin-top: 3ex;
|
|
||||||
padding-bottom: 20px;
|
|
||||||
font-size: .9em;
|
|
||||||
padding-top: 1em;
|
|
||||||
background-color: #536878;
|
|
||||||
overflow: hidden;
|
|
||||||
/* box-shadow: 0 2px 4px #bbb inset;*/
|
|
||||||
/* background: #f0f0f0;*/
|
|
||||||
border-top: 3px solid #36454f;
|
|
||||||
}
|
|
||||||
#footer a { color: #fff; }
|
|
||||||
#footer section {
|
|
||||||
float: none;
|
|
||||||
text-align:center;
|
|
||||||
}
|
|
||||||
#footer nav {
|
|
||||||
float: right;
|
|
||||||
}
|
|
||||||
#footer nav ul {
|
|
||||||
list-style: none;
|
|
||||||
margin: 0;
|
|
||||||
}
|
|
||||||
#footer nav ul li {
|
|
||||||
float: left;
|
|
||||||
margin-left: 2em;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* =Tablet (Portrait)
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
@media only screen and (min-width: 768px) and (max-width: 959px) {
|
|
||||||
.wrapper { width: 748px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* =Mobile (Portrait)
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
@media only screen and (max-width: 767px) {
|
|
||||||
/* .wrapper { width: 300px; }*/
|
|
||||||
/* #header h1 { float: none; text-align:center; font-size: 36px;}*/
|
|
||||||
/* #header nav { float:none; text-align:center;}*/
|
|
||||||
/* #header nav ul li { margin: 0; margin-right: 1em; } */
|
|
||||||
#topbar .navbar {padding-bottom:12px; font-size:120%; }
|
|
||||||
#topbar .navbar li {float:left; margin-left:1.1em;}
|
|
||||||
#banner { text-align: center; margin-bottom: 1.5em; }
|
|
||||||
#footer section, #footer nav { float: none; text-align:center;}
|
|
||||||
#footer nav ul { margin-top: 1em; text-align:center;}
|
|
||||||
#footer nav ul li { margin: 0; margin-right: 1em;}
|
|
||||||
.dateblock {text-align:center;}
|
|
||||||
h1, h2, h3, h4, h5, form, input {text-align:center;}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/* =Mobile (Landscape)
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
@media only screen and (min-width: 480px) and (max-width: 767px) {
|
|
||||||
.wrapper { width: 420px; }
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
.grlog blockquote { font-style:normal; border: 0px ; font-size:1em;}
|
|
||||||
|
|
||||||
.grlog blockquote blockquote { border-left: 2px solid #dddddd; }
|
|
||||||
|
|
||||||
.grlog .datestamp { text-transform: lowercase;
|
|
||||||
font-family: 'ff-meta-serif-sc-web-pro'; }
|
|
||||||
|
|
||||||
.grlog img { margin-left: 12px; margin-bottom: 12px; margin-top:12px;}
|
|
||||||
|
|
||||||
.grlog p {padding-top:0.5em;}
|
|
||||||
|
|
||||||
.oldcons img { margin-left: 0px; margin-bottom: 24px; margin-top:12px;}
|
|
||||||
|
|
||||||
.oldcons p {padding-top:0.5em;}
|
|
||||||
|
|
||||||
.oldcons h3 {padding-top:0.2em;}
|
|
||||||
|
|
||||||
.logician {float: left; margin-right:16px;}
|
|
||||||
|
|
||||||
p.capitalize {
|
|
||||||
text-transform: capitalize;
|
|
||||||
}
|
|
3646
public/css/kube.css
3646
public/css/kube.css
File diff suppressed because it is too large
Load diff
1
public/css/kube.min.css
vendored
1
public/css/kube.min.css
vendored
File diff suppressed because one or more lines are too long
|
@ -1,22 +0,0 @@
|
||||||
/* =Typography
|
|
||||||
-----------------------------------------------------------------------------*/
|
|
||||||
body {
|
|
||||||
font-family: 'Alegreya', 'Hoefler Text', Times, Serif;
|
|
||||||
font-size: 1.05em;
|
|
||||||
line-height: 1.6em;
|
|
||||||
background-color: #faf8f8;
|
|
||||||
}
|
|
||||||
h1, h2, h3, h4, h5 {
|
|
||||||
font-family: 'Alegreya', 'Trebuchet MS', Helvetica, Arial, sans-serif;
|
|
||||||
font-style: italic;
|
|
||||||
color: #b24;
|
|
||||||
}
|
|
||||||
h2, h3, h4, h5 {
|
|
||||||
font-weight: normal;
|
|
||||||
font-style: italic;
|
|
||||||
}
|
|
||||||
h2, h3 {
|
|
||||||
text-transform: lowercase;
|
|
||||||
font-family: 'Alegreya SC';
|
|
||||||
font-style: normal;
|
|
||||||
}
|
|
|
@ -1,70 +0,0 @@
|
||||||
.highlight .hll { background-color: #ffffcc }
|
|
||||||
.highlight { background: #f8f8f8; }
|
|
||||||
.highlight .c { color: #8f5902; font-style: italic } /* Comment */
|
|
||||||
.highlight .err { color: #a40000; border: 1px solid #ef2929 } /* Error */
|
|
||||||
.highlight .g { color: #000000 } /* Generic */
|
|
||||||
.highlight .k { color: #204a87; font-weight: bold } /* Keyword */
|
|
||||||
.highlight .l { color: #000000 } /* Literal */
|
|
||||||
.highlight .n { color: #000000 } /* Name */
|
|
||||||
.highlight .o { color: #ce5c00; font-weight: bold } /* Operator */
|
|
||||||
.highlight .x { color: #000000 } /* Other */
|
|
||||||
.highlight .p { color: #000000; font-weight: bold } /* Punctuation */
|
|
||||||
.highlight .cm { color: #8f5902; font-style: italic } /* Comment.Multiline */
|
|
||||||
.highlight .cp { color: #8f5902; font-style: italic } /* Comment.Preproc */
|
|
||||||
.highlight .c1 { color: #8f5902; font-style: italic } /* Comment.Single */
|
|
||||||
.highlight .cs { color: #8f5902; font-style: italic } /* Comment.Special */
|
|
||||||
.highlight .gd { color: #a40000 } /* Generic.Deleted */
|
|
||||||
.highlight .ge { color: #000000; font-style: italic } /* Generic.Emph */
|
|
||||||
.highlight .gr { color: #ef2929 } /* Generic.Error */
|
|
||||||
.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */
|
|
||||||
.highlight .gi { color: #00A000 } /* Generic.Inserted */
|
|
||||||
.highlight .go { color: #000000; font-style: italic } /* Generic.Output */
|
|
||||||
.highlight .gp { color: #8f5902 } /* Generic.Prompt */
|
|
||||||
.highlight .gs { color: #000000; font-weight: bold } /* Generic.Strong */
|
|
||||||
.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */
|
|
||||||
.highlight .gt { color: #a40000; font-weight: bold } /* Generic.Traceback */
|
|
||||||
.highlight .kc { color: #204a87; font-weight: bold } /* Keyword.Constant */
|
|
||||||
.highlight .kd { color: #204a87; font-weight: bold } /* Keyword.Declaration */
|
|
||||||
.highlight .kn { color: #204a87; font-weight: bold } /* Keyword.Namespace */
|
|
||||||
.highlight .kp { color: #204a87; font-weight: bold } /* Keyword.Pseudo */
|
|
||||||
.highlight .kr { color: #204a87; font-weight: bold } /* Keyword.Reserved */
|
|
||||||
.highlight .kt { color: #204a87; font-weight: bold } /* Keyword.Type */
|
|
||||||
.highlight .ld { color: #000000 } /* Literal.Date */
|
|
||||||
.highlight .m { color: #0000cf; font-weight: bold } /* Literal.Number */
|
|
||||||
.highlight .s { color: #4e9a06 } /* Literal.String */
|
|
||||||
.highlight .na { color: #c4a000 } /* Name.Attribute */
|
|
||||||
.highlight .nb { color: #204a87 } /* Name.Builtin */
|
|
||||||
.highlight .nc { color: #000000 } /* Name.Class */
|
|
||||||
.highlight .no { color: #000000 } /* Name.Constant */
|
|
||||||
.highlight .nd { color: #5c35cc; font-weight: bold } /* Name.Decorator */
|
|
||||||
.highlight .ni { color: #ce5c00 } /* Name.Entity */
|
|
||||||
.highlight .ne { color: #cc0000; font-weight: bold } /* Name.Exception */
|
|
||||||
.highlight .nf { color: #000000 } /* Name.Function */
|
|
||||||
.highlight .nl { color: #f57900 } /* Name.Label */
|
|
||||||
.highlight .nn { color: #000000 } /* Name.Namespace */
|
|
||||||
.highlight .nx { color: #000000 } /* Name.Other */
|
|
||||||
.highlight .py { color: #000000 } /* Name.Property */
|
|
||||||
.highlight .nt { color: #204a87; font-weight: bold } /* Name.Tag */
|
|
||||||
.highlight .nv { color: #000000 } /* Name.Variable */
|
|
||||||
.highlight .ow { color: #204a87; font-weight: bold } /* Operator.Word */
|
|
||||||
.highlight .w { color: #f8f8f8; text-decoration: underline } /* Text.Whitespace */
|
|
||||||
.highlight .mf { color: #0000cf; font-weight: bold } /* Literal.Number.Float */
|
|
||||||
.highlight .mh { color: #0000cf; font-weight: bold } /* Literal.Number.Hex */
|
|
||||||
.highlight .mi { color: #0000cf; font-weight: bold } /* Literal.Number.Integer */
|
|
||||||
.highlight .mo { color: #0000cf; font-weight: bold } /* Literal.Number.Oct */
|
|
||||||
.highlight .sb { color: #4e9a06 } /* Literal.String.Backtick */
|
|
||||||
.highlight .sc { color: #4e9a06 } /* Literal.String.Char */
|
|
||||||
.highlight .sd { color: #8f5902; font-style: italic } /* Literal.String.Doc */
|
|
||||||
.highlight .s2 { color: #4e9a06 } /* Literal.String.Double */
|
|
||||||
.highlight .se { color: #4e9a06 } /* Literal.String.Escape */
|
|
||||||
.highlight .sh { color: #4e9a06 } /* Literal.String.Heredoc */
|
|
||||||
.highlight .si { color: #4e9a06 } /* Literal.String.Interpol */
|
|
||||||
.highlight .sx { color: #4e9a06 } /* Literal.String.Other */
|
|
||||||
.highlight .sr { color: #4e9a06 } /* Literal.String.Regex */
|
|
||||||
.highlight .s1 { color: #4e9a06 } /* Literal.String.Single */
|
|
||||||
.highlight .ss { color: #4e9a06 } /* Literal.String.Symbol */
|
|
||||||
.highlight .bp { color: #3465a4 } /* Name.Builtin.Pseudo */
|
|
||||||
.highlight .vc { color: #000000 } /* Name.Variable.Class */
|
|
||||||
.highlight .vg { color: #000000 } /* Name.Variable.Global */
|
|
||||||
.highlight .vi { color: #000000 } /* Name.Variable.Instance */
|
|
||||||
.highlight .il { color: #0000cf; font-weight: bold } /* Literal.Number.Integer.Long */
|
|
|
@ -1,11 +0,0 @@
|
||||||
Options -Indexes
|
|
||||||
AddDescription "Conceptualising Constraint" constraint98.pdf
|
|
||||||
AddDescription "JAMLS paper" culture-newecon.pdf
|
|
||||||
AddDescription "Embedded Altruism" embed-alt.pdf
|
|
||||||
AddDescription "Social Change review" change4.pdf
|
|
||||||
AddDescription "Irish Social Policy" socpol31.pdf
|
|
||||||
AddDescription "HIV and Blood Supply" ts.pdf
|
|
||||||
AddDescription "OECD Wage Growth 1" wage1.pdf
|
|
||||||
AddDescription "OECD Wage Growth 2" wage2.pdf
|
|
||||||
AddDescription "Cultural Goods" jpp.pdf
|
|
||||||
AddDescription "Healy 2000-corrected" EA-corrected-tables.pdf
|
|
|
@ -1,267 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta name="generator" content="Hugo 0.24.1" />
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="jeremykidwell.info : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title>jeremykidwell.info</title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/">
|
|
||||||
<link href="https://jeremykidwell.info/index.xml" rel="alternate" type="application/rss+xml" title="jeremykidwell.info" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
</head>
|
|
||||||
<body>
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-66">
|
|
||||||
<div class="units-row-end">
|
|
||||||
<div class="unit-33 dateblock">
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="unit-66">
|
|
||||||
<p></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="units-row-end">
|
|
||||||
<div class="unit-33 dateblock">
|
|
||||||
<h3><a href="https://jeremykidwell.info/blog/archives/2016/02/08/friday-poem/">A poem for your friday</a></h3>
|
|
||||||
<h4>8 February 2016</h4>
|
|
||||||
</div>
|
|
||||||
<div class="unit-66">
|
|
||||||
|
|
||||||
“The Heaven of Animals” by James L. Dickey
|
|
||||||
Here they are. The soft eyes open. If they have lived in a wood It is a wood. If they have lived on plains It is grass rolling Under their feet forever.
|
|
||||||
Having no souls, they have come, Anyway, beyond their knowing. Their instincts wholly bloom And they rise. The soft eyes open.
|
|
||||||
To match them, the landscape flowers, Outdoing, desperately Outdoing what is required: The richest wood, The deepest field.
|
|
||||||
<p class="text-right"><a href="https://jeremykidwell.info/blog/archives/2016/02/08/friday-poem/">Read More…</a></p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<div class="units-row-end">
|
|
||||||
<div class="unit-33 dateblock">
|
|
||||||
<h3><a href="https://jeremykidwell.info/blog/archives/2014/09/30/climate_march/">Address to the People’s Climate March</a></h3>
|
|
||||||
<h4>30 September 2014</h4>
|
|
||||||
</div>
|
|
||||||
<div class="unit-66">
|
|
||||||
|
|
||||||
I devoted some time these past six weeks to helping organise a people’s climate march in Edinburgh. Given our research focus on how Christians and faith communities mobilise for action around climate change and other related ecological issues, this probably doesn’t come as a surprise. What did surprise many people, myself included, was the extent of the march (pictures here) that occurred last Sunday (21 Sep 2014). We had hoped for 200-300 and by most estimates, we had nearly 3000 people marching through the streets of Edinburgh committing themselves to action and calling on our nation’s leaders here in Scotland to address climate change in substantial ways.
|
|
||||||
<p class="text-right"><a href="https://jeremykidwell.info/blog/archives/2014/09/30/climate_march/">Read More…</a></p>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<hr>
|
|
||||||
|
|
||||||
<div class="units-row-end">
|
|
||||||
<div class="unit-33 dateblock"> </div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="unit-33">
|
|
||||||
|
|
||||||
<h3>Recent Papers</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-file-o fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i> “Mapping Environmental Action.” <em>TBD</em>
|
|
||||||
<a href="https://jeremykidwell.info/publications/mapping_environmental_action/" class="badge badge-small">Abstract</a>
|
|
||||||
<a href="https://jeremykidwell.info/files/papers/" class="badge badge-small"><i class="fa fa-file-pdf-o"></i> pdf</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-book fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i> <em>The Theology of Craft and the Craft of Work: From Tabernacle to Eucharist</em>. Routledge.
|
|
||||||
<a href="https://jeremykidwell.info/publications/craft_book/" class="badge badge-small">Abstract</a>
|
|
||||||
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-file fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i> “Changing Uses of Old and New Media in World Christianity” co-authored with Jolyon Mitchell, in Lamin Sanneh and Michael McClymond, eds., <em>The Wiley-Blackwell Companion to World Christianity</em> (Oxford: Blackwell, 2016)
|
|
||||||
<a href="https://jeremykidwell.info/publications/media_world_christianity/" class="badge badge-small">Abstract</a>
|
|
||||||
<a href="https://jeremykidwell.info/files/papers/media_world_christianity.pdf" class="badge badge-small"><i class="fa fa-file-pdf-o"></i> pdf</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-file fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i> “Hybrid Encounters in Reconciliation Ecology” in <em>Worldviews: Global Religions, Culture, and Ecology</em>, vol 20, issue 3, (Oct, 2016)
|
|
||||||
<a href="https://jeremykidwell.info/publications/hybrid_encounters/" class="badge badge-small">Abstract</a>
|
|
||||||
<a href="https://jeremykidwell.info/files/papers/hybrid_encounters.pdf" class="badge badge-small"><i class="fa fa-file-pdf-o"></i> pdf</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-file fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i> Time for Business: Business Ethics, Sustainability, and Giorgio Agamben’s ‘Messianic Time’ in <em>De Ethica</em> vol 2, issue 3, pp. 39-51 (Jan 29, 2016).
|
|
||||||
<a href="https://jeremykidwell.info/publications/time_for_business/" class="badge badge-small">Abstract</a>
|
|
||||||
<a href="https://jeremykidwell.info/files/papers/de_ethica_15v2i3a06.pdf" class="badge badge-small"><i class="fa fa-file-pdf-o"></i> pdf</a>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="https://jeremykidwell.info/publications">→ More Papers</a></nav>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
<h3>Recent & Upcoming Presentations</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><a href="https://jeremykidwell.info/presentations">→ More Presentations</a></nav>
|
|
||||||
</footer>
|
|
||||||
|
|
||||||
|
|
||||||
<h3>Current Teaching</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-mortar-board fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="https://jeremykidwell.info/teaching/theological_ethics/"><span class="caps">Theological Ethics</span></a>, September–December 2017. <span class="badge badge-small badge-yellow">coming soon</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-mortar-board fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="https://jeremykidwell.info/teaching/religion_public_sphere/"><span class="caps">Religion in the Public Sphere</span></a>, September–December 2017. <span class="badge badge-small badge-yellow">coming soon</span>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
<footer class="group">
|
|
||||||
<nav class="navbar navbar-right"><br /><a href="https://jeremykidwell.info/teaching">→ Other Classes</a></nav>
|
|
||||||
</footer>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
133
public/index.xml
133
public/index.xml
|
@ -1,133 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>jeremykidwell.info on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 25 Sep 2017 00:00:00 +1100</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Religion in the Public Sphere</title>
|
|
||||||
<link>https://jeremykidwell.info/teaching/religion_public_sphere/</link>
|
|
||||||
<pubDate>Mon, 25 Sep 2017 00:00:00 +1100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/teaching/religion_public_sphere/</guid>
|
|
||||||
<description><p>This second year undergraduate course&hellip;</p>
|
|
||||||
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-public-sphere-pdf"><a href="http://jeremykidwell.info/files/teaching/public_sphere.pdf">Syllabus (PDF)</a></h4></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Theological Ethics</title>
|
|
||||||
<link>https://jeremykidwell.info/teaching/theological_ethics/</link>
|
|
||||||
<pubDate>Mon, 25 Sep 2017 00:00:00 +1100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/teaching/theological_ethics/</guid>
|
|
||||||
<description>
|
|
||||||
|
|
||||||
<p>Description</p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-theological-ethics-2017-pdf"><a href="http://jeremykidwell.info/files/teaching/theological_ethics_2017.pdf">Syllabus (PDF)</a></h4>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Enhancing Public Understanding of Activists, Religion (and Religious Activists!) through the Geo+Digital-Humanities</title>
|
|
||||||
<link>https://jeremykidwell.info/presentations/british_library-labs/</link>
|
|
||||||
<pubDate>Wed, 10 May 2017 15:00:00 BST</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/presentations/british_library-labs/</guid>
|
|
||||||
<description><p>Presentation on &ldquo;Enhancing Public Understanding of Activists, Religion (and Religious Activists!) through the Geo+Digital-Humanities&rdquo;.</p>
|
|
||||||
|
|
||||||
<p>This is a talk presented at the <a href="https://www.eventbrite.co.uk/e/learning-the-lessons-of-working-with-the-british-librarys-digital-content-and-data-for-your-tickets-32351805120">British Library Labs Road Show</a>, at the University of Birmingham</p>
|
|
||||||
|
|
||||||
<p>My slides (which used <a href="impress.js">http://impress.github.io/impress.js/</a>) are <a href="https://jeremykidwell.info/files/presentations/presentation-20170511-bl_mapping.html">available here</a></p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Mapping Environmental Action</title>
|
|
||||||
<link>https://jeremykidwell.info/publications/mapping_environmental_action/</link>
|
|
||||||
<pubDate>Fri, 24 Feb 2017 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/publications/mapping_environmental_action/</guid>
|
|
||||||
<description><p>This article (PDF coming soon!) presents a GIS-based analysis using R which analyses the footprint of several environmental groups in Scotland against standard demographics. This is my first attempt to use RMarkdown in a sustained way, so it&rsquo;s taking a long time. Bear with me!</p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Presentation on Mapping Community to representatives of the Scottish Community Alliance and Scottish Government</title>
|
|
||||||
<link>https://jeremykidwell.info/presentations/sca_mapping_community/</link>
|
|
||||||
<pubDate>Fri, 20 Jan 2017 15:00:00 +0100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/presentations/sca_mapping_community/</guid>
|
|
||||||
<description><p>My slides (which used <a href="impress.js">http://impress.github.io/impress.js/</a>) are <a href="https://jeremykidwell.info/files/presentations/presentation-20170120-comm_anchors.html">available here</a></p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Digital Humanities projects in 2016</title>
|
|
||||||
<link>https://jeremykidwell.info/presentations/digi_champs/</link>
|
|
||||||
<pubDate>Thu, 19 Jan 2017 15:00:00 +0100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/presentations/digi_champs/</guid>
|
|
||||||
<description><p>My slides (which used <a href="reveal.js">http://lab.hakim.se/reveal-js/#/</a>) are <a href="https://jeremykidwell.info/files/presentations/presentation_20170118_digital_hum.html">available here</a></p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Mapping Churches</title>
|
|
||||||
<link>https://jeremykidwell.info/presentations/church_stats_mapping/</link>
|
|
||||||
<pubDate>Fri, 06 Jan 2017 15:00:00 +0100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/presentations/church_stats_mapping/</guid>
|
|
||||||
<description><p>Keynote (sorry!) slides can be <a href="https://jeremykidwell.info/files/presentations/presentation-20160106-mapping_churches.key.zip">downloaded here</a></p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>The Theology of Craft and the Craft of Work: From Tabernacle to Eucharist</title>
|
|
||||||
<link>https://jeremykidwell.info/publications/craft_book/</link>
|
|
||||||
<pubDate>Thu, 01 Sep 2016 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/publications/craft_book/</guid>
|
|
||||||
<description><p><p><figure><img class="craftbook" src="http://jeremykidwell.info/images/theology_of_craft-medium.jpg" align="right" width=300px alt="The Theology of Craft and the Craft of Work"></figure>An important reconceptualisation is taking place in the way people express creativity, work together, and engage in labour; particularly with the rise of the maker movement and craft work. But is this a new phenomenon? In <em>The Theology of Craft</em> I explore the Hebrew bible and Greek New Testament in conversation with other ancient craft narratives to see whether there is a model for good work embedded there. Through an examination of themes such as agency, aesthetics, sociality, skill, and the material culture of work, I argue that the church (or ‘new temple’) is both the product and the site of moral work and furthermore that Christian worship provides a moral context for work.</p>
|
|
||||||
|
|
||||||
<p><a href="https://www.routledge.com/products/9781472476517">Publisher</a> - <a href="http://www.hive.co.uk/Product/Jeremy-Kidwell/The-Theology-of-Craft-and-the-Craft-of-Work--From-Tabernacle-to-Eucharist/18798594">Hive Books (UK indy sellers)</a> - <a href="http://www.indiebound.org/book/9781472476517">IndieBound (Independent booksellers in the USA) </a></p>
|
|
||||||
|
|
||||||
<!---
|
|
||||||
<p><em>Reviews:</em> <a href="http://www.journals.uchicago.edu/doi/pdf/10.1086/522391"><em>American Journal of Sociology</em></a> (Greta Krippner), <a href="http://www.kieranhealy.org/files/misc/hippenajot.pdf"><em>American Journal of Transplantation</em></a> (Ben Hippen), <em>Social Forces</em> (Jane Allyn Piliavin), <a href="http://www.ingentaconnect.com/content/asoca/cs/2008/00000037/00000006/art00018"><em>Contemporary Sociology</em></a> (Carol Heimer), <a href="http://www.nytimes.com/2007/01/28/books/review/Postrel.t.html?ex=157680000&amp;en=f390b3396e0ec28a&amp;ei=5124&amp;partner=permalink&amp;exprod=permalink"><em>The New York Times</em></a> (Virginia Postrel), <a href="http://nvs.sagepub.com/cgi/rapidpdf/0899764008319689v1"><em>Nonprofit and Voluntary Sector Quarterly</em></a> (E. Gil Clary), <a href="http://ser.oxfordjournals.org/cgi/reprint/6/2/365"><em>Socio-Economic Review</em></a> (Philippe Steiner), <em>Le Mouvement Social</em> (Sophie Chauveau), <a href="http://www.australianreview.net/digest/2007/06/waldby.html"><em>Australian Review of Public Affairs</em></a> (Catherine Waldby), <a href="http://econsoc.mpifg.de/archive/econ_soc_08-1.pdf"><em>EES Newsletter</em></a> (Rene Almeling), <a href="http://www.anthrosource.net/doi/pdfplus/10.1111/j.1548-1387.2008.00006_3.x"><em>Medical Anthropology Quarterly</em></a> (Lesley Sharp), <a href="http://www.sciencedirect.com/science?_ob=ArticleURL&amp;_udi=B6VR1-4RTCPT9-B&amp;_user=56761&amp;_coverDate=03%2F31%2F2008&amp;_alid=760447016&amp;_rdoc=1&amp;_fmt=high&amp;_orig=search&amp;_cdi=6221&amp;_sort=d&amp;_docanchor=&amp;view=c&amp;_ct=1&amp;_acct=C000059541&amp;_version=1&amp;_urlVersion=0&amp;_userid=56761&amp;md5=4e61d07203022b07cbdc0d671747f7b3"><em>Sociologie du Travail</em></a> (Philippe Steiner). <br /> <br /></p>
|
|
||||||
-->
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Changing Uses of Old and New Media in World Christianity</title>
|
|
||||||
<link>https://jeremykidwell.info/publications/media_world_christianity/</link>
|
|
||||||
<pubDate>Fri, 20 May 2016 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/publications/media_world_christianity/</guid>
|
|
||||||
<description><p>Abstract</p>
|
|
||||||
|
|
||||||
<p>Through a series of case studies we analyze different ways in which “old” and “new” media are being used in world Christianity. Cases considered include Russian Orthodox attitudes towards television, colonial engagement with media and Christianity in Africa, use of television by Pentecostal preachers in South America, film production in Nigeria by independent Pentecostal or Charismatic churches, the use of radio in El Salvador, portrayals of Jesus in Indian film productions, and receptions of television in India. Through these and other studies, we investigate the dynamic use of media by Christians around the world who have appropriated different media in both creative and traditional ways to teach, evangelize, perform, and communicate their forms of Christianity. This dynamic use of media is evolving, remarkable, and yet also consonant with the diverse texture of Christian communities across the world.</p>
|
|
||||||
|
|
||||||
<p><a href="http://eu.wiley.com/WileyCDA/WileyTitle/productCd-1405153768.html" target="_blank" rel="noopener noreferrer">Publisher</a> - <a href="http://onlinelibrary.wiley.com/doi/10.1002/9781118556115.ch31/summary" target="_blank" rel="noopener noreferrer">Digital Version via Wiley</a></p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Hybrid Encounters in Reconciliation Ecology</title>
|
|
||||||
<link>https://jeremykidwell.info/publications/hybrid_encounters/</link>
|
|
||||||
<pubDate>Tue, 01 Mar 2016 00:00:00 UTC</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/publications/hybrid_encounters/</guid>
|
|
||||||
<description><p>Over the past century, environmental scientists have developed a range of conservation approaches. Each of these, from management to restoration has embedded within it certain dualisms which create exclusive spaces or agencies for “human” and “nature.” I begin with a critique of these binaries as they occur in philosopher, Florence R. Kluck- hohn’s influential model and in more recent narratives about the “Anthropocene,” and then turn to examine some of the novel features of “reconciliation ecology” as it has recently been deployed in the environmental sciences. Though this model is beginning to see wider use by scientists, it has not yet been explored within a religious framework. Taking up Miroslav Volf’s suggestion that reconciliation involves a “double strategy” I highlight ways that reconciliation can (1) provide a viable model for promoting an “embrace” of the other and (2) better integrate the past history of negative human biotic impacts.</p>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,638 +0,0 @@
|
||||||
(function() {
|
|
||||||
(function($) {
|
|
||||||
return $.bigfoot = function(options) {
|
|
||||||
var addBreakpoint, baseFontSize, bigfoot, buttonHover, calculatePixelDimension, cleanFootnoteLinks, clickButton, createPopover, defaults, deleteEmptyOrHR, escapeKeypress, footnoteInit, getSetting, makeDefaultCallbacks, popoverStates, positionTooltip, removeBackLinks, removeBreakpoint, removePopovers, replaceWithReferenceAttributes, repositionFeet, roomCalc, settings, touchClick, unhoverFeet, updateSetting, viewportDetails;
|
|
||||||
bigfoot = void 0;
|
|
||||||
defaults = {
|
|
||||||
actionOriginalFN: "hide",
|
|
||||||
activateCallback: function() {},
|
|
||||||
activateOnHover: false,
|
|
||||||
allowMultipleFN: false,
|
|
||||||
anchorPattern: /(fn|footnote|note)[:\-_\d]/gi,
|
|
||||||
anchorParentTagname: 'sup',
|
|
||||||
breakpoints: {},
|
|
||||||
deleteOnUnhover: false,
|
|
||||||
footnoteParentClass: 'footnote',
|
|
||||||
footnoteTagname: 'li',
|
|
||||||
hoverDelay: 250,
|
|
||||||
numberResetSelector: void 0,
|
|
||||||
popoverDeleteDelay: 300,
|
|
||||||
popoverCreateDelay: 100,
|
|
||||||
positionContent: true,
|
|
||||||
preventPageScroll: true,
|
|
||||||
scope: false,
|
|
||||||
useFootnoteOnlyOnce: true,
|
|
||||||
contentMarkup: "<aside class=\"bigfoot-footnote is-positioned-bottom\" data-footnote-number=\"{{FOOTNOTENUM}}\" data-footnote-identifier=\"{{FOOTNOTEID}}\" alt=\"Footnote {{FOOTNOTENUM}}\"> <div class=\"bigfoot-footnote__wrapper\"> <div class=\"bigfoot-footnote__content\"> {{FOOTNOTECONTENT}} </div></div> <div class=\"bigfoot-footnote__tooltip\"></div> </aside>",
|
|
||||||
buttonMarkup: "<div class='bigfoot-footnote__container'> <button class=\"bigfoot-footnote__button\" id=\"{{SUP:data-footnote-backlink-ref}}\" data-footnote-number=\"{{FOOTNOTENUM}}\" data-footnote-identifier=\"{{FOOTNOTEID}}\" alt=\"See Footnote {{FOOTNOTENUM}}\" rel=\"footnote\" data-bigfoot-footnote=\"{{FOOTNOTECONTENT}}\"> <svg class=\"bigfoot-footnote__button__circle\" viewbox=\"0 0 6 6\" preserveAspectRatio=\"xMinYMin\"><circle r=\"3\" cx=\"3\" cy=\"3\" fill=\"white\"></circle></svg> <svg class=\"bigfoot-footnote__button__circle\" viewbox=\"0 0 6 6\" preserveAspectRatio=\"xMinYMin\"><circle r=\"3\" cx=\"3\" cy=\"3\" fill=\"white\"></circle></svg> <svg class=\"bigfoot-footnote__button__circle\" viewbox=\"0 0 6 6\" preserveAspectRatio=\"xMinYMin\"><circle r=\"3\" cx=\"3\" cy=\"3\" fill=\"white\"></circle></svg> </button></div>"
|
|
||||||
};
|
|
||||||
settings = $.extend(defaults, options);
|
|
||||||
popoverStates = {};
|
|
||||||
footnoteInit = function() {
|
|
||||||
var $curResetElement, $currentLastFootnoteLink, $footnoteAnchors, $footnoteButton, $lastResetElement, $parent, $relevantFNLink, $relevantFootnote, finalFNLinks, footnoteButton, footnoteButtonSearchQuery, footnoteContent, footnoteIDNum, footnoteLinks, footnoteNum, footnotes, i, _i, _ref, _results;
|
|
||||||
footnoteButtonSearchQuery = settings.scope ? "" + settings.scope + " a[href*=\"#\"]" : "a[href*=\"#\"]";
|
|
||||||
$footnoteAnchors = $(footnoteButtonSearchQuery).filter(function() {
|
|
||||||
var $this, relAttr;
|
|
||||||
$this = $(this);
|
|
||||||
relAttr = $this.attr("rel");
|
|
||||||
if (relAttr === "null" || (relAttr == null)) {
|
|
||||||
relAttr = "";
|
|
||||||
}
|
|
||||||
return ("" + ($this.attr("href")) + relAttr).match(settings.anchorPattern) && $this.closest("[class*=" + settings.footnoteParentClass + "]:not(a):not(" + settings.anchorParentTagname + ")").length < 1;
|
|
||||||
});
|
|
||||||
footnotes = [];
|
|
||||||
footnoteLinks = [];
|
|
||||||
finalFNLinks = [];
|
|
||||||
cleanFootnoteLinks($footnoteAnchors, footnoteLinks);
|
|
||||||
$(footnoteLinks).each(function() {
|
|
||||||
var $closestFootnoteEl, relatedFN;
|
|
||||||
relatedFN = $(this).data("footnote-ref").replace(/[:.+~*\]\[]/g, "\\$&");
|
|
||||||
if (settings.useFootnoteOnlyOnce) {
|
|
||||||
relatedFN = "" + relatedFN + ":not(.footnote-processed)";
|
|
||||||
}
|
|
||||||
$closestFootnoteEl = $(relatedFN).closest(settings.footnoteTagname);
|
|
||||||
if ($closestFootnoteEl.length > 0) {
|
|
||||||
footnotes.push($closestFootnoteEl.first().addClass("footnote-processed"));
|
|
||||||
return finalFNLinks.push(this);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
$currentLastFootnoteLink = $("[data-footnote-identifier]:last");
|
|
||||||
footnoteIDNum = $currentLastFootnoteLink.length < 1 ? 0 : +$currentLastFootnoteLink.data("footnote-identifier");
|
|
||||||
_results = [];
|
|
||||||
for (i = _i = 0, _ref = footnotes.length; 0 <= _ref ? _i < _ref : _i > _ref; i = 0 <= _ref ? ++_i : --_i) {
|
|
||||||
footnoteContent = removeBackLinks($(footnotes[i]).html().trim(), $(finalFNLinks[i]).data("footnote-backlink-ref"));
|
|
||||||
footnoteContent = footnoteContent.replace(/"/g, """).replace(/</g, "<sym;").replace(/>/g, ">sym;");
|
|
||||||
footnoteIDNum += 1;
|
|
||||||
footnoteButton = "";
|
|
||||||
$relevantFNLink = $(finalFNLinks[i]);
|
|
||||||
$relevantFootnote = $(footnotes[i]);
|
|
||||||
if (settings.numberResetSelector != null) {
|
|
||||||
$curResetElement = $relevantFNLink.closest(settings.numberResetSelector);
|
|
||||||
if ($curResetElement.is($lastResetElement)) {
|
|
||||||
footnoteNum += 1;
|
|
||||||
} else {
|
|
||||||
footnoteNum = 1;
|
|
||||||
}
|
|
||||||
$lastResetElement = $curResetElement;
|
|
||||||
} else {
|
|
||||||
footnoteNum = footnoteIDNum;
|
|
||||||
}
|
|
||||||
if (footnoteContent.indexOf("<") !== 0) {
|
|
||||||
footnoteContent = "<p>" + footnoteContent + "</p>";
|
|
||||||
}
|
|
||||||
footnoteButton = settings.buttonMarkup.replace(/\{\{FOOTNOTENUM\}\}/g, footnoteNum).replace(/\{\{FOOTNOTEID\}\}/g, footnoteIDNum).replace(/\{\{FOOTNOTECONTENT\}\}/g, footnoteContent);
|
|
||||||
footnoteButton = replaceWithReferenceAttributes(footnoteButton, "SUP", $relevantFNLink);
|
|
||||||
footnoteButton = replaceWithReferenceAttributes(footnoteButton, "FN", $relevantFootnote);
|
|
||||||
$footnoteButton = $(footnoteButton).insertBefore($relevantFNLink);
|
|
||||||
$parent = $relevantFootnote.parent();
|
|
||||||
switch (settings.actionOriginalFN.toLowerCase()) {
|
|
||||||
case "hide":
|
|
||||||
$relevantFNLink.addClass("footnote-print-only");
|
|
||||||
$relevantFootnote.addClass("footnote-print-only");
|
|
||||||
_results.push(deleteEmptyOrHR($parent));
|
|
||||||
break;
|
|
||||||
case "delete":
|
|
||||||
$relevantFNLink.remove();
|
|
||||||
$relevantFootnote.remove();
|
|
||||||
_results.push(deleteEmptyOrHR($parent));
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
_results.push($relevantFNLink.addClass("footnote-print-only"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return _results;
|
|
||||||
};
|
|
||||||
cleanFootnoteLinks = function($footnoteAnchors, footnoteLinks) {
|
|
||||||
var $parent, $supChild, linkHREF, linkID;
|
|
||||||
if (footnoteLinks == null) {
|
|
||||||
footnoteLinks = [];
|
|
||||||
}
|
|
||||||
$parent = void 0;
|
|
||||||
$supChild = void 0;
|
|
||||||
linkHREF = void 0;
|
|
||||||
linkID = void 0;
|
|
||||||
$footnoteAnchors.each(function() {
|
|
||||||
var $child, $this;
|
|
||||||
$this = $(this);
|
|
||||||
linkHREF = "#" + ($this.attr("href")).split("#")[1];
|
|
||||||
$parent = $this.closest(settings.anchorParentTagname);
|
|
||||||
$child = $this.find(settings.anchorParentTagname);
|
|
||||||
if ($parent.length > 0) {
|
|
||||||
linkID = ($parent.attr("id") || "") + ($this.attr("id") || "");
|
|
||||||
return footnoteLinks.push($parent.attr({
|
|
||||||
"data-footnote-backlink-ref": linkID,
|
|
||||||
"data-footnote-ref": linkHREF
|
|
||||||
}));
|
|
||||||
} else if ($child.length > 0) {
|
|
||||||
linkID = ($child.attr("id") || "") + ($this.attr("id") || "");
|
|
||||||
return footnoteLinks.push($this.attr({
|
|
||||||
"data-footnote-backlink-ref": linkID,
|
|
||||||
"data-footnote-ref": linkHREF
|
|
||||||
}));
|
|
||||||
} else {
|
|
||||||
linkID = $this.attr("id") || "";
|
|
||||||
return footnoteLinks.push($this.attr({
|
|
||||||
"data-footnote-backlink-ref": linkID,
|
|
||||||
"data-footnote-ref": linkHREF
|
|
||||||
}));
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
deleteEmptyOrHR = function($el) {
|
|
||||||
var $parent;
|
|
||||||
$parent = void 0;
|
|
||||||
if ($el.is(":empty") || $el.children(":not(.footnote-print-only)").length === 0) {
|
|
||||||
$parent = $el.parent();
|
|
||||||
if (settings.actionOriginalFN.toLowerCase() === "delete") {
|
|
||||||
$el.remove();
|
|
||||||
} else {
|
|
||||||
$el.addClass("footnote-print-only");
|
|
||||||
}
|
|
||||||
return deleteEmptyOrHR($parent);
|
|
||||||
} else if ($el.children(":not(.footnote-print-only)").length === $el.children("hr:not(.footnote-print-only)").length) {
|
|
||||||
$parent = $el.parent();
|
|
||||||
if (settings.actionOriginalFN.toLowerCase() === "delete") {
|
|
||||||
$el.remove();
|
|
||||||
} else {
|
|
||||||
$el.children("hr").addClass("footnote-print-only");
|
|
||||||
$el.addClass("footnote-print-only");
|
|
||||||
}
|
|
||||||
return deleteEmptyOrHR($parent);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
removeBackLinks = function(footnoteHTML, backlinkID) {
|
|
||||||
var regex;
|
|
||||||
if (backlinkID.indexOf(' ') >= 0) {
|
|
||||||
backlinkID = backlinkID.trim().replace(/\s+/g, "|").replace(/(.*)/g, "($1)");
|
|
||||||
}
|
|
||||||
regex = new RegExp("(\\s| )*<\\s*a[^#<]*#" + backlinkID + "[^>]*>(.*?)<\\s*/\\s*a>", "g");
|
|
||||||
return footnoteHTML.replace(regex, "").replace("[]", "");
|
|
||||||
};
|
|
||||||
replaceWithReferenceAttributes = function(string, referenceKeyword, $referenceElement) {
|
|
||||||
var refMatches, refRegex, refReplaceRegex, refReplaceText;
|
|
||||||
refRegex = new RegExp("\\{\\{" + referenceKeyword + ":([^\\}]*)\\}\\}", "g");
|
|
||||||
refMatches = void 0;
|
|
||||||
refReplaceText = void 0;
|
|
||||||
refReplaceRegex = void 0;
|
|
||||||
refMatches = refRegex.exec(string);
|
|
||||||
while (refMatches) {
|
|
||||||
if (refMatches[1]) {
|
|
||||||
refReplaceText = $referenceElement.attr(refMatches[1]) || "";
|
|
||||||
string = string.replace("{{" + referenceKeyword + ":" + refMatches[1] + "}}", refReplaceText);
|
|
||||||
}
|
|
||||||
refMatches = refRegex.exec(string);
|
|
||||||
}
|
|
||||||
return string;
|
|
||||||
};
|
|
||||||
buttonHover = function(event) {
|
|
||||||
var $buttonHovered, dataIdentifier, otherPopoverSelector;
|
|
||||||
if (settings.activateOnHover) {
|
|
||||||
$buttonHovered = $(event.target).closest(".bigfoot-footnote__button");
|
|
||||||
dataIdentifier = "[data-footnote-identifier=\"" + ($buttonHovered.attr("data-footnote-identifier")) + "\"]";
|
|
||||||
if ($buttonHovered.hasClass("is-active")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$buttonHovered.addClass("is-hover-instantiated");
|
|
||||||
if (!settings.allowMultipleFN) {
|
|
||||||
otherPopoverSelector = ".bigfoot-footnote:not(" + dataIdentifier + ")";
|
|
||||||
removePopovers(otherPopoverSelector);
|
|
||||||
}
|
|
||||||
createPopover(".bigfoot-footnote__button" + dataIdentifier).addClass("is-hover-instantiated");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
touchClick = function(event) {
|
|
||||||
var $nearButton, $nearFootnote, $target;
|
|
||||||
$target = $(event.target);
|
|
||||||
$nearButton = $target.closest(".bigfoot-footnote__button");
|
|
||||||
$nearFootnote = $target.closest(".bigfoot-footnote");
|
|
||||||
if ($nearButton.length > 0) {
|
|
||||||
event.preventDefault();
|
|
||||||
clickButton($nearButton);
|
|
||||||
} else if ($nearFootnote.length < 1) {
|
|
||||||
if ($(".bigfoot-footnote").length > 0) {
|
|
||||||
removePopovers();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
clickButton = function($button) {
|
|
||||||
var dataIdentifier;
|
|
||||||
$button.blur();
|
|
||||||
dataIdentifier = "data-footnote-identifier=\"" + ($button.attr("data-footnote-identifier")) + "\"";
|
|
||||||
if ($button.hasClass("changing")) {
|
|
||||||
return;
|
|
||||||
} else if (!$button.hasClass("is-active")) {
|
|
||||||
$button.addClass("changing");
|
|
||||||
setTimeout((function() {
|
|
||||||
return $button.removeClass("changing");
|
|
||||||
}), settings.popoverCreateDelay);
|
|
||||||
createPopover(".bigfoot-footnote__button[" + dataIdentifier + "]");
|
|
||||||
$button.addClass("is-click-instantiated");
|
|
||||||
if (!settings.allowMultipleFN) {
|
|
||||||
removePopovers(".bigfoot-footnote:not([" + dataIdentifier + "])");
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
if (!settings.allowMultipleFN) {
|
|
||||||
removePopovers();
|
|
||||||
} else {
|
|
||||||
removePopovers(".bigfoot-footnote[" + dataIdentifier + "]");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
createPopover = function(selector) {
|
|
||||||
var $buttons, $popoversCreated;
|
|
||||||
$buttons = void 0;
|
|
||||||
if (typeof selector !== "string" && settings.allowMultipleFN) {
|
|
||||||
$buttons = selector;
|
|
||||||
} else if (typeof selector !== "string") {
|
|
||||||
$buttons = selector.first();
|
|
||||||
} else if (settings.allowMultipleFN) {
|
|
||||||
$buttons = $(selector).closest(".bigfoot-footnote__button");
|
|
||||||
} else {
|
|
||||||
$buttons = $(selector + ":first").closest(".bigfoot-footnote__button");
|
|
||||||
}
|
|
||||||
$popoversCreated = $();
|
|
||||||
$buttons.each(function() {
|
|
||||||
var $content, $contentContainer, $this, content;
|
|
||||||
$this = $(this);
|
|
||||||
content = void 0;
|
|
||||||
try {
|
|
||||||
content = settings.contentMarkup.replace(/\{\{FOOTNOTENUM\}\}/g, $this.attr("data-footnote-number")).replace(/\{\{FOOTNOTEID\}\}/g, $this.attr("data-footnote-identifier")).replace(/\{\{FOOTNOTECONTENT\}\}/g, $this.attr("data-bigfoot-footnote")).replace(/\>sym\;/g, ">").replace(/\<sym\;/g, "<");
|
|
||||||
return content = replaceWithReferenceAttributes(content, "BUTTON", $this);
|
|
||||||
} finally {
|
|
||||||
$content = $(content);
|
|
||||||
try {
|
|
||||||
settings.activateCallback($content, $this);
|
|
||||||
} catch (_error) {}
|
|
||||||
$content.insertAfter($buttons);
|
|
||||||
popoverStates[$this.attr("data-footnote-identifier")] = "init";
|
|
||||||
$content.attr("bigfoot-max-width", calculatePixelDimension($content.css("max-width"), $content));
|
|
||||||
$content.css("max-width", 10000);
|
|
||||||
$contentContainer = $content.find(".bigfoot-footnote__content");
|
|
||||||
$content.attr("data-bigfoot-max-height", calculatePixelDimension($contentContainer.css("max-height"), $contentContainer));
|
|
||||||
repositionFeet();
|
|
||||||
$this.addClass("is-active");
|
|
||||||
$content.find(".bigfoot-footnote__content").bindScrollHandler();
|
|
||||||
$popoversCreated = $popoversCreated.add($content);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
setTimeout((function() {
|
|
||||||
return $popoversCreated.addClass("is-active");
|
|
||||||
}), settings.popoverCreateDelay);
|
|
||||||
return $popoversCreated;
|
|
||||||
};
|
|
||||||
baseFontSize = function() {
|
|
||||||
var el, size;
|
|
||||||
el = document.createElement("div");
|
|
||||||
el.style.cssText = "display:inline-block;padding:0;line-height:1;position:absolute;visibility:hidden;font-size:1em;";
|
|
||||||
el.appendChild(document.createElement("M"));
|
|
||||||
document.body.appendChild(el);
|
|
||||||
size = el.offsetHeight;
|
|
||||||
document.body.removeChild(el);
|
|
||||||
return size;
|
|
||||||
};
|
|
||||||
calculatePixelDimension = function(dim, $el) {
|
|
||||||
if (dim === "none") {
|
|
||||||
dim = 10000;
|
|
||||||
} else if (dim.indexOf("rem") >= 0) {
|
|
||||||
dim = parseFloat(dim) * baseFontSize();
|
|
||||||
} else if (dim.indexOf("em") >= 0) {
|
|
||||||
dim = parseFloat(dim) * parseFloat($el.css("font-size"));
|
|
||||||
} else if (dim.indexOf("px") >= 0) {
|
|
||||||
dim = parseFloat(dim);
|
|
||||||
if (dim <= 60) {
|
|
||||||
dim = dim / parseFloat($el.parent().css("width"));
|
|
||||||
}
|
|
||||||
} else if (dim.indexOf("%") >= 0) {
|
|
||||||
dim = parseFloat(dim) / 100;
|
|
||||||
}
|
|
||||||
return dim;
|
|
||||||
};
|
|
||||||
$.fn.bindScrollHandler = function() {
|
|
||||||
if (!settings.preventPageScroll) {
|
|
||||||
return $(this);
|
|
||||||
}
|
|
||||||
$(this).on("DOMMouseScroll mousewheel", function(event) {
|
|
||||||
var $popover, $this, delta, height, prevent, scrollHeight, scrollTop, up;
|
|
||||||
$this = $(this);
|
|
||||||
scrollTop = $this.scrollTop();
|
|
||||||
scrollHeight = $this[0].scrollHeight;
|
|
||||||
height = parseInt($this.css("height"));
|
|
||||||
$popover = $this.closest(".bigfoot-footnote");
|
|
||||||
if ($this.scrollTop() > 0 && $this.scrollTop() < 10) {
|
|
||||||
$popover.addClass("is-scrollable");
|
|
||||||
}
|
|
||||||
if (!$popover.hasClass("is-scrollable")) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
delta = event.type === "DOMMouseScroll" ? event.originalEvent.detail * -40 : event.originalEvent.wheelDelta;
|
|
||||||
up = delta > 0;
|
|
||||||
prevent = function() {
|
|
||||||
event.stopPropagation();
|
|
||||||
event.preventDefault();
|
|
||||||
event.returnValue = false;
|
|
||||||
return false;
|
|
||||||
};
|
|
||||||
if (!up && -delta > scrollHeight - height - scrollTop) {
|
|
||||||
$this.scrollTop(scrollHeight);
|
|
||||||
$popover.addClass("is-fully-scrolled");
|
|
||||||
return prevent();
|
|
||||||
} else if (up && delta > scrollTop) {
|
|
||||||
$this.scrollTop(0);
|
|
||||||
$popover.removeClass("is-fully-scrolled");
|
|
||||||
return prevent();
|
|
||||||
} else {
|
|
||||||
return $popover.removeClass("is-fully-scrolled");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return $(this);
|
|
||||||
};
|
|
||||||
unhoverFeet = function(e) {
|
|
||||||
if (settings.deleteOnUnhover && settings.activateOnHover) {
|
|
||||||
return setTimeout((function() {
|
|
||||||
var $target;
|
|
||||||
$target = $(e.target).closest(".bigfoot-footnote, .bigfoot-footnote__button");
|
|
||||||
if ($(".bigfoot-footnote__button:hover, .bigfoot-footnote:hover").length < 1) {
|
|
||||||
return removePopovers();
|
|
||||||
}
|
|
||||||
}), settings.hoverDelay);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
escapeKeypress = function(event) {
|
|
||||||
if (event.keyCode === 27) {
|
|
||||||
return removePopovers();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
removePopovers = function(footnotes, timeout) {
|
|
||||||
var $buttonsClosed, $linkedButton, $this, footnoteID;
|
|
||||||
if (footnotes == null) {
|
|
||||||
footnotes = ".bigfoot-footnote";
|
|
||||||
}
|
|
||||||
if (timeout == null) {
|
|
||||||
timeout = settings.popoverDeleteDelay;
|
|
||||||
}
|
|
||||||
$buttonsClosed = $();
|
|
||||||
footnoteID = void 0;
|
|
||||||
$linkedButton = void 0;
|
|
||||||
$this = void 0;
|
|
||||||
$(footnotes).each(function() {
|
|
||||||
$this = $(this);
|
|
||||||
footnoteID = $this.attr("data-footnote-identifier");
|
|
||||||
$linkedButton = $(".bigfoot-footnote__button[data-footnote-identifier=\"" + footnoteID + "\"]");
|
|
||||||
if (!$linkedButton.hasClass("changing")) {
|
|
||||||
$buttonsClosed = $buttonsClosed.add($linkedButton);
|
|
||||||
$linkedButton.removeClass("is-active is-hover-instantiated is-click-instantiated").addClass("changing");
|
|
||||||
$this.removeClass("is-active").addClass("disapearing");
|
|
||||||
return setTimeout((function() {
|
|
||||||
$this.remove();
|
|
||||||
delete popoverStates[footnoteID];
|
|
||||||
return $linkedButton.removeClass("changing");
|
|
||||||
}), timeout);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
return $buttonsClosed;
|
|
||||||
};
|
|
||||||
repositionFeet = function(e) {
|
|
||||||
var type;
|
|
||||||
if (settings.positionContent) {
|
|
||||||
type = e ? e.type : "resize";
|
|
||||||
$(".bigfoot-footnote").each(function() {
|
|
||||||
var $button, $contentWrapper, $mainWrap, $this, dataIdentifier, identifier, lastState, marginSize, maxHeightInCSS, maxHeightOnScreen, maxWidth, maxWidthInCSS, positionOnTop, relativeToWidth, roomLeft, totalHeight;
|
|
||||||
$this = $(this);
|
|
||||||
identifier = $this.attr("data-footnote-identifier");
|
|
||||||
dataIdentifier = "data-footnote-identifier=\"" + identifier + "\"";
|
|
||||||
$contentWrapper = $this.find(".bigfoot-footnote__content");
|
|
||||||
$button = $this.siblings(".bigfoot-footnote__button");
|
|
||||||
roomLeft = roomCalc($button);
|
|
||||||
marginSize = parseFloat($this.css("margin-top"));
|
|
||||||
maxHeightInCSS = +($this.attr("data-bigfoot-max-height"));
|
|
||||||
totalHeight = 2 * marginSize + $this.outerHeight();
|
|
||||||
maxHeightOnScreen = 10000;
|
|
||||||
positionOnTop = roomLeft.bottomRoom < totalHeight && roomLeft.topRoom > roomLeft.bottomRoom;
|
|
||||||
lastState = popoverStates[identifier];
|
|
||||||
if (positionOnTop) {
|
|
||||||
if (lastState !== "top") {
|
|
||||||
popoverStates[identifier] = "top";
|
|
||||||
$this.addClass("is-positioned-top").removeClass("is-positioned-bottom");
|
|
||||||
$this.css("transform-origin", (roomLeft.leftRelative * 100) + "% 100%");
|
|
||||||
}
|
|
||||||
maxHeightOnScreen = roomLeft.topRoom - marginSize - 15;
|
|
||||||
} else {
|
|
||||||
if (lastState !== "bottom" || lastState === "init") {
|
|
||||||
popoverStates[identifier] = "bottom";
|
|
||||||
$this.removeClass("is-positioned-top").addClass("is-positioned-bottom");
|
|
||||||
$this.css("transform-origin", (roomLeft.leftRelative * 100) + "% 0%");
|
|
||||||
}
|
|
||||||
maxHeightOnScreen = roomLeft.bottomRoom - marginSize - 15;
|
|
||||||
}
|
|
||||||
$this.find(".bigfoot-footnote__content").css({
|
|
||||||
"max-height": Math.min(maxHeightOnScreen, maxHeightInCSS) + "px"
|
|
||||||
});
|
|
||||||
if (type === "resize") {
|
|
||||||
maxWidthInCSS = parseFloat($this.attr("bigfoot-max-width"));
|
|
||||||
$mainWrap = $this.find(".bigfoot-footnote__wrapper");
|
|
||||||
maxWidth = maxWidthInCSS;
|
|
||||||
if (maxWidthInCSS <= 1) {
|
|
||||||
relativeToWidth = (function() {
|
|
||||||
var jq, userSpecifiedRelativeElWidth;
|
|
||||||
userSpecifiedRelativeElWidth = 10000;
|
|
||||||
if (settings.maxWidthRelativeTo) {
|
|
||||||
jq = $(settings.maxWidthRelativeTo);
|
|
||||||
if (jq.length > 0) {
|
|
||||||
userSpecifiedRelativeElWidth = jq.outerWidth();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return Math.min(window.innerWidth, userSpecifiedRelativeElWidth);
|
|
||||||
})();
|
|
||||||
maxWidth = relativeToWidth * maxWidthInCSS;
|
|
||||||
}
|
|
||||||
maxWidth = Math.min(maxWidth, $this.find(".bigfoot-footnote__content").outerWidth() + 1);
|
|
||||||
$mainWrap.css("max-width", maxWidth + "px");
|
|
||||||
$this.css({
|
|
||||||
left: (-roomLeft.leftRelative * maxWidth + parseFloat($button.css("margin-left")) + $button.outerWidth() / 2) + "px"
|
|
||||||
});
|
|
||||||
positionTooltip($this, roomLeft.leftRelative);
|
|
||||||
}
|
|
||||||
if (parseInt($this.outerHeight()) < $this.find(".bigfoot-footnote__content")[0].scrollHeight) {
|
|
||||||
return $this.addClass("is-scrollable");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
};
|
|
||||||
positionTooltip = function($popover, leftRelative) {
|
|
||||||
var $tooltip;
|
|
||||||
if (leftRelative == null) {
|
|
||||||
leftRelative = 0.5;
|
|
||||||
}
|
|
||||||
$tooltip = $popover.find(".bigfoot-footnote__tooltip");
|
|
||||||
if ($tooltip.length > 0) {
|
|
||||||
$tooltip.css("left", "" + (leftRelative * 100) + "%");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
roomCalc = function($el) {
|
|
||||||
var elHeight, elLeftMargin, elWidth, leftRoom, topRoom, w;
|
|
||||||
elLeftMargin = parseFloat($el.css("margin-left"));
|
|
||||||
elWidth = parseFloat($el.outerWidth()) - elLeftMargin;
|
|
||||||
elHeight = parseFloat($el.outerHeight());
|
|
||||||
w = viewportDetails();
|
|
||||||
topRoom = $el.offset().top - w.scrollY + elHeight / 2;
|
|
||||||
leftRoom = $el.offset().left - w.scrollX + elWidth / 2;
|
|
||||||
return {
|
|
||||||
topRoom: topRoom,
|
|
||||||
bottomRoom: w.height - topRoom,
|
|
||||||
leftRoom: leftRoom,
|
|
||||||
rightRoom: w.width - leftRoom,
|
|
||||||
leftRelative: leftRoom / w.width,
|
|
||||||
topRelative: topRoom / w.height
|
|
||||||
};
|
|
||||||
};
|
|
||||||
viewportDetails = function() {
|
|
||||||
var $window;
|
|
||||||
$window = $(window);
|
|
||||||
return {
|
|
||||||
width: window.innerWidth,
|
|
||||||
height: window.innerHeight,
|
|
||||||
scrollX: $window.scrollLeft(),
|
|
||||||
scrollY: $window.scrollTop()
|
|
||||||
};
|
|
||||||
};
|
|
||||||
addBreakpoint = function(size, trueCallback, falseCallback, deleteDelay, removeOpen) {
|
|
||||||
var falseDefaultPositionSetting, minMax, mqListener, mql, query, s, trueDefaultPositionSetting;
|
|
||||||
if (deleteDelay == null) {
|
|
||||||
deleteDelay = settings.popoverDeleteDelay;
|
|
||||||
}
|
|
||||||
if (removeOpen == null) {
|
|
||||||
removeOpen = true;
|
|
||||||
}
|
|
||||||
mql = void 0;
|
|
||||||
minMax = void 0;
|
|
||||||
s = void 0;
|
|
||||||
if (typeof size === "string") {
|
|
||||||
s = size.toLowerCase() === "iphone" ? "<320px" : size.toLowerCase() === "ipad" ? "<768px" : size;
|
|
||||||
minMax = s.charAt(0) === ">" ? "min" : s.charAt(0) === "<" ? "max" : null;
|
|
||||||
query = minMax ? "(" + minMax + "-width: " + (s.substring(1)) + ")" : s;
|
|
||||||
mql = window.matchMedia(query);
|
|
||||||
} else {
|
|
||||||
mql = size;
|
|
||||||
}
|
|
||||||
if (mql.media && mql.media === "invalid") {
|
|
||||||
return {
|
|
||||||
added: false,
|
|
||||||
mq: mql,
|
|
||||||
listener: null
|
|
||||||
};
|
|
||||||
}
|
|
||||||
trueDefaultPositionSetting = minMax === "min";
|
|
||||||
falseDefaultPositionSetting = minMax === "max";
|
|
||||||
trueCallback = trueCallback || makeDefaultCallbacks(removeOpen, deleteDelay, trueDefaultPositionSetting, function($popover) {
|
|
||||||
return $popover.addClass("is-bottom-fixed");
|
|
||||||
});
|
|
||||||
falseCallback = falseCallback || makeDefaultCallbacks(removeOpen, deleteDelay, falseDefaultPositionSetting, function() {});
|
|
||||||
mqListener = function(mq) {
|
|
||||||
if (mq.matches) {
|
|
||||||
trueCallback(removeOpen, bigfoot);
|
|
||||||
} else {
|
|
||||||
falseCallback(removeOpen, bigfoot);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
mql.addListener(mqListener);
|
|
||||||
mqListener(mql);
|
|
||||||
settings.breakpoints[size] = {
|
|
||||||
added: true,
|
|
||||||
mq: mql,
|
|
||||||
listener: mqListener
|
|
||||||
};
|
|
||||||
return settings.breakpoints[size];
|
|
||||||
};
|
|
||||||
makeDefaultCallbacks = function(removeOpen, deleteDelay, position, callback) {
|
|
||||||
return function(removeOpen, bigfoot) {
|
|
||||||
var $closedPopovers;
|
|
||||||
$closedPopovers = void 0;
|
|
||||||
if (removeOpen) {
|
|
||||||
$closedPopovers = bigfoot.close();
|
|
||||||
bigfoot.updateSetting("activateCallback", callback);
|
|
||||||
}
|
|
||||||
return setTimeout((function() {
|
|
||||||
bigfoot.updateSetting("positionContent", position);
|
|
||||||
if (removeOpen) {
|
|
||||||
return bigfoot.activate($closedPopovers);
|
|
||||||
}
|
|
||||||
}), deleteDelay);
|
|
||||||
};
|
|
||||||
};
|
|
||||||
removeBreakpoint = function(target, callback) {
|
|
||||||
var b, breakpoint, mq, mqFound;
|
|
||||||
mq = null;
|
|
||||||
b = void 0;
|
|
||||||
mqFound = false;
|
|
||||||
if (typeof target === "string") {
|
|
||||||
mqFound = settings.breakpoints[target] !== undefined;
|
|
||||||
} else {
|
|
||||||
for (b in settings.breakpoints) {
|
|
||||||
if (settings.breakpoints.hasOwnProperty(b) && settings.breakpoints[b].mq === target) {
|
|
||||||
mqFound = true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (mqFound) {
|
|
||||||
breakpoint = settings.breakpoints[b || target];
|
|
||||||
if (callback) {
|
|
||||||
callback({
|
|
||||||
matches: false
|
|
||||||
});
|
|
||||||
} else {
|
|
||||||
breakpoint.listener({
|
|
||||||
matches: false
|
|
||||||
});
|
|
||||||
}
|
|
||||||
breakpoint.mq.removeListener(breakpoint.listener);
|
|
||||||
delete settings.breakpoints[b || target];
|
|
||||||
}
|
|
||||||
return mqFound;
|
|
||||||
};
|
|
||||||
updateSetting = function(newSettings, value) {
|
|
||||||
var oldValue, prop;
|
|
||||||
oldValue = void 0;
|
|
||||||
if (typeof newSettings === "string") {
|
|
||||||
oldValue = settings[newSettings];
|
|
||||||
settings[newSettings] = value;
|
|
||||||
} else {
|
|
||||||
oldValue = {};
|
|
||||||
for (prop in newSettings) {
|
|
||||||
if (newSettings.hasOwnProperty(prop)) {
|
|
||||||
oldValue[prop] = settings[prop];
|
|
||||||
settings[prop] = newSettings[prop];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return oldValue;
|
|
||||||
};
|
|
||||||
getSetting = function(setting) {
|
|
||||||
return settings[setting];
|
|
||||||
};
|
|
||||||
$(document).ready(function() {
|
|
||||||
footnoteInit();
|
|
||||||
$(document).on("mouseenter", ".bigfoot-footnote__button", buttonHover);
|
|
||||||
$(document).on("touchend click", touchClick);
|
|
||||||
$(document).on("mouseout", ".is-hover-instantiated", unhoverFeet);
|
|
||||||
$(document).on("keyup", escapeKeypress);
|
|
||||||
$(window).on("scroll resize", repositionFeet);
|
|
||||||
return $(document).on("gestureend", function() {
|
|
||||||
return repositionFeet();
|
|
||||||
});
|
|
||||||
});
|
|
||||||
bigfoot = {
|
|
||||||
removePopovers: removePopovers,
|
|
||||||
close: removePopovers,
|
|
||||||
createPopover: createPopover,
|
|
||||||
activate: createPopover,
|
|
||||||
repositionFeet: repositionFeet,
|
|
||||||
reposition: repositionFeet,
|
|
||||||
addBreakpoint: addBreakpoint,
|
|
||||||
removeBreakpoint: removeBreakpoint,
|
|
||||||
getSetting: getSetting,
|
|
||||||
updateSetting: updateSetting
|
|
||||||
};
|
|
||||||
return bigfoot;
|
|
||||||
};
|
|
||||||
})(jQuery);
|
|
||||||
|
|
||||||
}).call(this);
|
|
1
public/javascripts/bigfoot.min.js
vendored
1
public/javascripts/bigfoot.min.js
vendored
File diff suppressed because one or more lines are too long
5
public/javascripts/d3-3.5.2/d3.min.js
vendored
5
public/javascripts/d3-3.5.2/d3.min.js
vendored
File diff suppressed because one or more lines are too long
|
@ -1,625 +0,0 @@
|
||||||
(function() {
|
|
||||||
// If window.HTMLWidgets is already defined, then use it; otherwise create a
|
|
||||||
// new object. This allows preceding code to set options that affect the
|
|
||||||
// initialization process (though none currently exist).
|
|
||||||
window.HTMLWidgets = window.HTMLWidgets || {};
|
|
||||||
|
|
||||||
// See if we're running in a viewer pane. If not, we're in a web browser.
|
|
||||||
var viewerMode = window.HTMLWidgets.viewerMode =
|
|
||||||
/\bviewer_pane=1\b/.test(window.location);
|
|
||||||
|
|
||||||
// See if we're running in Shiny mode. If not, it's a static document.
|
|
||||||
// Note that static widgets can appear in both Shiny and static modes, but
|
|
||||||
// obviously, Shiny widgets can only appear in Shiny apps/documents.
|
|
||||||
var shinyMode = window.HTMLWidgets.shinyMode =
|
|
||||||
typeof(window.Shiny) !== "undefined" && !!window.Shiny.outputBindings;
|
|
||||||
|
|
||||||
// We can't count on jQuery being available, so we implement our own
|
|
||||||
// version if necessary.
|
|
||||||
function querySelectorAll(scope, selector) {
|
|
||||||
if (typeof(jQuery) !== "undefined" && scope instanceof jQuery) {
|
|
||||||
return scope.find(selector);
|
|
||||||
}
|
|
||||||
if (scope.querySelectorAll) {
|
|
||||||
return scope.querySelectorAll(selector);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function asArray(value) {
|
|
||||||
if (value === null)
|
|
||||||
return [];
|
|
||||||
if ($.isArray(value))
|
|
||||||
return value;
|
|
||||||
return [value];
|
|
||||||
}
|
|
||||||
|
|
||||||
// Implement jQuery's extend
|
|
||||||
function extend(target /*, ... */) {
|
|
||||||
if (arguments.length == 1) {
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
for (var i = 1; i < arguments.length; i++) {
|
|
||||||
var source = arguments[i];
|
|
||||||
for (var prop in source) {
|
|
||||||
if (source.hasOwnProperty(prop)) {
|
|
||||||
target[prop] = source[prop];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return target;
|
|
||||||
}
|
|
||||||
|
|
||||||
// IE8 doesn't support Array.forEach.
|
|
||||||
function forEach(values, callback, thisArg) {
|
|
||||||
if (values.forEach) {
|
|
||||||
values.forEach(callback, thisArg);
|
|
||||||
} else {
|
|
||||||
for (var i = 0; i < values.length; i++) {
|
|
||||||
callback.call(thisArg, values[i], i, values);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Replaces the specified method with the return value of funcSource.
|
|
||||||
//
|
|
||||||
// Note that funcSource should not BE the new method, it should be a function
|
|
||||||
// that RETURNS the new method. funcSource receives a single argument that is
|
|
||||||
// the overridden method, it can be called from the new method. The overridden
|
|
||||||
// method can be called like a regular function, it has the target permanently
|
|
||||||
// bound to it so "this" will work correctly.
|
|
||||||
function overrideMethod(target, methodName, funcSource) {
|
|
||||||
var superFunc = target[methodName] || function() {};
|
|
||||||
var superFuncBound = function() {
|
|
||||||
return superFunc.apply(target, arguments);
|
|
||||||
};
|
|
||||||
target[methodName] = funcSource(superFuncBound);
|
|
||||||
}
|
|
||||||
|
|
||||||
// Implement a vague facsimilie of jQuery's data method
|
|
||||||
function elementData(el, name, value) {
|
|
||||||
if (arguments.length == 2) {
|
|
||||||
return el["htmlwidget_data_" + name];
|
|
||||||
} else if (arguments.length == 3) {
|
|
||||||
el["htmlwidget_data_" + name] = value;
|
|
||||||
return el;
|
|
||||||
} else {
|
|
||||||
throw new Error("Wrong number of arguments for elementData: " +
|
|
||||||
arguments.length);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// http://stackoverflow.com/questions/3446170/escape-string-for-use-in-javascript-regex
|
|
||||||
function escapeRegExp(str) {
|
|
||||||
return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
|
|
||||||
}
|
|
||||||
|
|
||||||
function hasClass(el, className) {
|
|
||||||
var re = new RegExp("\\b" + escapeRegExp(className) + "\\b");
|
|
||||||
return re.test(el.className);
|
|
||||||
}
|
|
||||||
|
|
||||||
// elements - array (or array-like object) of HTML elements
|
|
||||||
// className - class name to test for
|
|
||||||
// include - if true, only return elements with given className;
|
|
||||||
// if false, only return elements *without* given className
|
|
||||||
function filterByClass(elements, className, include) {
|
|
||||||
var results = [];
|
|
||||||
for (var i = 0; i < elements.length; i++) {
|
|
||||||
if (hasClass(elements[i], className) == include)
|
|
||||||
results.push(elements[i]);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
|
|
||||||
function on(obj, eventName, func) {
|
|
||||||
if (obj.addEventListener) {
|
|
||||||
obj.addEventListener(eventName, func, false);
|
|
||||||
} else if (obj.attachEvent) {
|
|
||||||
obj.attachEvent(eventName, func);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function off(obj, eventName, func) {
|
|
||||||
if (obj.removeEventListener)
|
|
||||||
obj.removeEventListener(eventName, func, false);
|
|
||||||
else if (obj.detachEvent) {
|
|
||||||
obj.detachEvent(eventName, func);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Translate array of values to top/right/bottom/left, as usual with
|
|
||||||
// the "padding" CSS property
|
|
||||||
// https://developer.mozilla.org/en-US/docs/Web/CSS/padding
|
|
||||||
function unpackPadding(value) {
|
|
||||||
if (typeof(value) === "number")
|
|
||||||
value = [value];
|
|
||||||
if (value.length === 1) {
|
|
||||||
return {top: value[0], right: value[0], bottom: value[0], left: value[0]};
|
|
||||||
}
|
|
||||||
if (value.length === 2) {
|
|
||||||
return {top: value[0], right: value[1], bottom: value[0], left: value[1]};
|
|
||||||
}
|
|
||||||
if (value.length === 3) {
|
|
||||||
return {top: value[0], right: value[1], bottom: value[2], left: value[1]};
|
|
||||||
}
|
|
||||||
if (value.length === 4) {
|
|
||||||
return {top: value[0], right: value[1], bottom: value[2], left: value[3]};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Convert an unpacked padding object to a CSS value
|
|
||||||
function paddingToCss(paddingObj) {
|
|
||||||
return paddingObj.top + "px " + paddingObj.right + "px " + paddingObj.bottom + "px " + paddingObj.left + "px";
|
|
||||||
}
|
|
||||||
|
|
||||||
// Makes a number suitable for CSS
|
|
||||||
function px(x) {
|
|
||||||
if (typeof(x) === "number")
|
|
||||||
return x + "px";
|
|
||||||
else
|
|
||||||
return x;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Retrieves runtime widget sizing information for an element.
|
|
||||||
// The return value is either null, or an object with fill, padding,
|
|
||||||
// defaultWidth, defaultHeight fields.
|
|
||||||
function sizingPolicy(el) {
|
|
||||||
var sizingEl = document.querySelector("script[data-for='" + el.id + "'][type='application/htmlwidget-sizing']");
|
|
||||||
if (!sizingEl)
|
|
||||||
return null;
|
|
||||||
var sp = JSON.parse(sizingEl.textContent || sizingEl.text || "{}");
|
|
||||||
if (viewerMode) {
|
|
||||||
return sp.viewer;
|
|
||||||
} else {
|
|
||||||
return sp.browser;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initSizing(el) {
|
|
||||||
var sizing = sizingPolicy(el);
|
|
||||||
if (!sizing)
|
|
||||||
return;
|
|
||||||
|
|
||||||
var cel = document.getElementById("htmlwidget_container");
|
|
||||||
if (!cel)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (typeof(sizing.padding) !== "undefined") {
|
|
||||||
document.body.style.margin = "0";
|
|
||||||
document.body.style.padding = paddingToCss(unpackPadding(sizing.padding));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (sizing.fill) {
|
|
||||||
document.body.style.overflow = "hidden";
|
|
||||||
document.body.style.width = "100%";
|
|
||||||
document.body.style.height = "100%";
|
|
||||||
document.documentElement.style.width = "100%";
|
|
||||||
document.documentElement.style.height = "100%";
|
|
||||||
if (cel) {
|
|
||||||
cel.style.position = "absolute";
|
|
||||||
var pad = unpackPadding(sizing.padding);
|
|
||||||
cel.style.top = pad.top + "px";
|
|
||||||
cel.style.right = pad.right + "px";
|
|
||||||
cel.style.bottom = pad.bottom + "px";
|
|
||||||
cel.style.left = pad.left + "px";
|
|
||||||
el.style.width = "100%";
|
|
||||||
el.style.height = "100%";
|
|
||||||
}
|
|
||||||
|
|
||||||
return {
|
|
||||||
getWidth: function() { return cel.offsetWidth; },
|
|
||||||
getHeight: function() { return cel.offsetHeight; }
|
|
||||||
};
|
|
||||||
|
|
||||||
} else {
|
|
||||||
el.style.width = px(sizing.width);
|
|
||||||
el.style.height = px(sizing.height);
|
|
||||||
|
|
||||||
return {
|
|
||||||
getWidth: function() { return el.offsetWidth; },
|
|
||||||
getHeight: function() { return el.offsetHeight; }
|
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Default implementations for methods
|
|
||||||
var defaults = {
|
|
||||||
find: function(scope) {
|
|
||||||
return querySelectorAll(scope, "." + this.name);
|
|
||||||
},
|
|
||||||
renderError: function(el, err) {
|
|
||||||
var $el = $(el);
|
|
||||||
|
|
||||||
this.clearError(el);
|
|
||||||
|
|
||||||
// Add all these error classes, as Shiny does
|
|
||||||
var errClass = "shiny-output-error";
|
|
||||||
if (err.type !== null) {
|
|
||||||
// use the classes of the error condition as CSS class names
|
|
||||||
errClass = errClass + " " + $.map(asArray(err.type), function(type) {
|
|
||||||
return errClass + "-" + type;
|
|
||||||
}).join(" ");
|
|
||||||
}
|
|
||||||
errClass = errClass + " htmlwidgets-error";
|
|
||||||
|
|
||||||
// Is el inline or block? If inline or inline-block, just display:none it
|
|
||||||
// and add an inline error.
|
|
||||||
var display = $el.css("display");
|
|
||||||
$el.data("restore-display-mode", display);
|
|
||||||
|
|
||||||
if (display === "inline" || display === "inline-block") {
|
|
||||||
$el.hide();
|
|
||||||
if (err.message !== "") {
|
|
||||||
var errorSpan = $("<span>").addClass(errClass);
|
|
||||||
errorSpan.text(err.message);
|
|
||||||
$el.after(errorSpan);
|
|
||||||
}
|
|
||||||
} else if (display === "block") {
|
|
||||||
// If block, add an error just after the el, set visibility:none on the
|
|
||||||
// el, and position the error to be on top of the el.
|
|
||||||
// Mark it with a unique ID and CSS class so we can remove it later.
|
|
||||||
$el.css("visibility", "hidden");
|
|
||||||
if (err.message !== "") {
|
|
||||||
var errorDiv = $("<div>").addClass(errClass).css("position", "absolute")
|
|
||||||
.css("top", el.offsetTop)
|
|
||||||
.css("left", el.offsetLeft)
|
|
||||||
// setting width can push out the page size, forcing otherwise
|
|
||||||
// unnecessary scrollbars to appear and making it impossible for
|
|
||||||
// the element to shrink; so use max-width instead
|
|
||||||
.css("maxWidth", el.offsetWidth)
|
|
||||||
.css("height", el.offsetHeight);
|
|
||||||
errorDiv.text(err.message);
|
|
||||||
$el.after(errorDiv);
|
|
||||||
|
|
||||||
// Really dumb way to keep the size/position of the error in sync with
|
|
||||||
// the parent element as the window is resized or whatever.
|
|
||||||
var intId = setInterval(function() {
|
|
||||||
if (!errorDiv[0].parentElement) {
|
|
||||||
clearInterval(intId);
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
errorDiv
|
|
||||||
.css("top", el.offsetTop)
|
|
||||||
.css("left", el.offsetLeft)
|
|
||||||
.css("maxWidth", el.offsetWidth)
|
|
||||||
.css("height", el.offsetHeight);
|
|
||||||
}, 500);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
|
||||||
clearError: function(el) {
|
|
||||||
var $el = $(el);
|
|
||||||
var display = $el.data("restore-display-mode");
|
|
||||||
$el.data("restore-display-mode", null);
|
|
||||||
|
|
||||||
if (display === "inline" || display === "inline-block") {
|
|
||||||
if (display)
|
|
||||||
$el.css("display", display);
|
|
||||||
$(el.nextSibling).filter(".htmlwidgets-error").remove();
|
|
||||||
} else if (display === "block"){
|
|
||||||
$el.css("visibility", "inherit");
|
|
||||||
$(el.nextSibling).filter(".htmlwidgets-error").remove();
|
|
||||||
}
|
|
||||||
},
|
|
||||||
sizing: {}
|
|
||||||
};
|
|
||||||
|
|
||||||
// Called by widget bindings to register a new type of widget. The definition
|
|
||||||
// object can contain the following properties:
|
|
||||||
// - name (required) - A string indicating the binding name, which will be
|
|
||||||
// used by default as the CSS classname to look for.
|
|
||||||
// - initialize (optional) - A function(el) that will be called once per
|
|
||||||
// widget element; if a value is returned, it will be passed as the third
|
|
||||||
// value to renderValue.
|
|
||||||
// - renderValue (required) - A function(el, data, initValue) that will be
|
|
||||||
// called with data. Static contexts will cause this to be called once per
|
|
||||||
// element; Shiny apps will cause this to be called multiple times per
|
|
||||||
// element, as the data changes.
|
|
||||||
window.HTMLWidgets.widget = function(definition) {
|
|
||||||
if (!definition.name) {
|
|
||||||
throw new Error("Widget must have a name");
|
|
||||||
}
|
|
||||||
if (!definition.type) {
|
|
||||||
throw new Error("Widget must have a type");
|
|
||||||
}
|
|
||||||
// Currently we only support output widgets
|
|
||||||
if (definition.type !== "output") {
|
|
||||||
throw new Error("Unrecognized widget type '" + definition.type + "'");
|
|
||||||
}
|
|
||||||
// TODO: Verify that .name is a valid CSS classname
|
|
||||||
if (!definition.renderValue) {
|
|
||||||
throw new Error("Widget must have a renderValue function");
|
|
||||||
}
|
|
||||||
|
|
||||||
// For static rendering (non-Shiny), use a simple widget registration
|
|
||||||
// scheme. We also use this scheme for Shiny apps/documents that also
|
|
||||||
// contain static widgets.
|
|
||||||
window.HTMLWidgets.widgets = window.HTMLWidgets.widgets || [];
|
|
||||||
// Merge defaults into the definition; don't mutate the original definition.
|
|
||||||
var staticBinding = extend({}, defaults, definition);
|
|
||||||
overrideMethod(staticBinding, "find", function(superfunc) {
|
|
||||||
return function(scope) {
|
|
||||||
var results = superfunc(scope);
|
|
||||||
// Filter out Shiny outputs, we only want the static kind
|
|
||||||
return filterByClass(results, "html-widget-output", false);
|
|
||||||
};
|
|
||||||
});
|
|
||||||
window.HTMLWidgets.widgets.push(staticBinding);
|
|
||||||
|
|
||||||
if (shinyMode) {
|
|
||||||
// Shiny is running. Register the definition as an output binding.
|
|
||||||
|
|
||||||
// Merge defaults into the definition; don't mutate the original definition.
|
|
||||||
// The base object is a Shiny output binding if we're running in Shiny mode,
|
|
||||||
// or an empty object if we're not.
|
|
||||||
var shinyBinding = extend(new Shiny.OutputBinding(), defaults, definition);
|
|
||||||
|
|
||||||
// Wrap renderValue to handle initialization, which unfortunately isn't
|
|
||||||
// supported natively by Shiny at the time of this writing.
|
|
||||||
|
|
||||||
// NB: shinyBinding.initialize may be undefined, as it's optional.
|
|
||||||
|
|
||||||
// Rename initialize to make sure it isn't called by a future version
|
|
||||||
// of Shiny that does support initialize directly.
|
|
||||||
shinyBinding._htmlwidgets_initialize = shinyBinding.initialize;
|
|
||||||
delete shinyBinding.initialize;
|
|
||||||
|
|
||||||
overrideMethod(shinyBinding, "find", function(superfunc) {
|
|
||||||
return function(scope) {
|
|
||||||
|
|
||||||
var results = superfunc(scope);
|
|
||||||
|
|
||||||
// Only return elements that are Shiny outputs, not static ones
|
|
||||||
var dynamicResults = results.filter(".html-widget-output");
|
|
||||||
|
|
||||||
// It's possible that whatever caused Shiny to think there might be
|
|
||||||
// new dynamic outputs, also caused there to be new static outputs.
|
|
||||||
// Since there might be lots of different htmlwidgets bindings, we
|
|
||||||
// schedule execution for later--no need to staticRender multiple
|
|
||||||
// times.
|
|
||||||
if (results.length !== dynamicResults.length)
|
|
||||||
scheduleStaticRender();
|
|
||||||
|
|
||||||
return dynamicResults;
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
overrideMethod(shinyBinding, "renderValue", function(superfunc) {
|
|
||||||
return function(el, data) {
|
|
||||||
// Resolve strings marked as javascript literals to objects
|
|
||||||
if (!(data.evals instanceof Array)) data.evals = [data.evals];
|
|
||||||
for (var i = 0; data.evals && i < data.evals.length; i++) {
|
|
||||||
window.HTMLWidgets.evaluateStringMember(data.x, data.evals[i]);
|
|
||||||
}
|
|
||||||
if (!this.renderOnNullValue) {
|
|
||||||
if (data.x === null) {
|
|
||||||
el.style.visibility = "hidden";
|
|
||||||
return;
|
|
||||||
} else {
|
|
||||||
el.style.visibility = "inherit";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (!elementData(el, "initialized")) {
|
|
||||||
initSizing(el);
|
|
||||||
|
|
||||||
elementData(el, "initialized", true);
|
|
||||||
if (this._htmlwidgets_initialize) {
|
|
||||||
var result = this._htmlwidgets_initialize(el, el.offsetWidth,
|
|
||||||
el.offsetHeight);
|
|
||||||
elementData(el, "init_result", result);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Shiny.renderDependencies(data.deps);
|
|
||||||
superfunc(el, data.x, elementData(el, "init_result"));
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
overrideMethod(shinyBinding, "resize", function(superfunc) {
|
|
||||||
return function(el, width, height) {
|
|
||||||
// Shiny can call resize before initialize/renderValue have been
|
|
||||||
// called, which doesn't make sense for widgets.
|
|
||||||
if (elementData(el, "initialized")) {
|
|
||||||
superfunc(el, width, height, elementData(el, "init_result"));
|
|
||||||
}
|
|
||||||
};
|
|
||||||
});
|
|
||||||
|
|
||||||
Shiny.outputBindings.register(shinyBinding, shinyBinding.name);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
var scheduleStaticRenderTimerId = null;
|
|
||||||
function scheduleStaticRender() {
|
|
||||||
if (!scheduleStaticRenderTimerId) {
|
|
||||||
scheduleStaticRenderTimerId = setTimeout(function() {
|
|
||||||
scheduleStaticRenderTimerId = null;
|
|
||||||
window.HTMLWidgets.staticRender();
|
|
||||||
}, 1);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Render static widgets after the document finishes loading
|
|
||||||
// Statically render all elements that are of this widget's class
|
|
||||||
window.HTMLWidgets.staticRender = function() {
|
|
||||||
var bindings = window.HTMLWidgets.widgets || [];
|
|
||||||
forEach(bindings, function(binding) {
|
|
||||||
var matches = binding.find(document.documentElement);
|
|
||||||
forEach(matches, function(el) {
|
|
||||||
var sizeObj = initSizing(el, binding);
|
|
||||||
|
|
||||||
if (hasClass(el, "html-widget-static-bound"))
|
|
||||||
return;
|
|
||||||
el.className = el.className + " html-widget-static-bound";
|
|
||||||
|
|
||||||
var initResult;
|
|
||||||
if (binding.initialize) {
|
|
||||||
initResult = binding.initialize(el,
|
|
||||||
sizeObj ? sizeObj.getWidth() : el.offsetWidth,
|
|
||||||
sizeObj ? sizeObj.getHeight() : el.offsetHeight
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (binding.resize) {
|
|
||||||
var lastSize = {};
|
|
||||||
var resizeHandler = function(e) {
|
|
||||||
var size = {
|
|
||||||
w: sizeObj ? sizeObj.getWidth() : el.offsetWidth,
|
|
||||||
h: sizeObj ? sizeObj.getHeight() : el.offsetHeight
|
|
||||||
};
|
|
||||||
if (size.w === 0 && size.h === 0)
|
|
||||||
return;
|
|
||||||
if (size.w === lastSize.w && size.h === lastSize.h)
|
|
||||||
return;
|
|
||||||
lastSize = size;
|
|
||||||
binding.resize(el, size.w, size.h, initResult);
|
|
||||||
};
|
|
||||||
|
|
||||||
on(window, "resize", resizeHandler);
|
|
||||||
|
|
||||||
// This is needed for cases where we're running in a Shiny
|
|
||||||
// app, but the widget itself is not a Shiny output, but
|
|
||||||
// rather a simple static widget. One example of this is
|
|
||||||
// an rmarkdown document that has runtime:shiny and widget
|
|
||||||
// that isn't in a render function. Shiny only knows to
|
|
||||||
// call resize handlers for Shiny outputs, not for static
|
|
||||||
// widgets, so we do it ourselves.
|
|
||||||
if (window.jQuery) {
|
|
||||||
window.jQuery(document).on("shown", resizeHandler);
|
|
||||||
window.jQuery(document).on("hidden", resizeHandler);
|
|
||||||
}
|
|
||||||
|
|
||||||
// This is needed for the specific case of ioslides, which
|
|
||||||
// flips slides between display:none and display:block.
|
|
||||||
// Ideally we would not have to have ioslide-specific code
|
|
||||||
// here, but rather have ioslides raise a generic event,
|
|
||||||
// but the rmarkdown package just went to CRAN so the
|
|
||||||
// window to getting that fixed may be long.
|
|
||||||
if (window.addEventListener) {
|
|
||||||
// It's OK to limit this to window.addEventListener
|
|
||||||
// browsers because ioslides itself only supports
|
|
||||||
// such browsers.
|
|
||||||
on(document, "slideenter", resizeHandler);
|
|
||||||
on(document, "slideleave", resizeHandler);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var scriptData = document.querySelector("script[data-for='" + el.id + "'][type='application/json']");
|
|
||||||
if (scriptData) {
|
|
||||||
var data = JSON.parse(scriptData.textContent || scriptData.text);
|
|
||||||
// Resolve strings marked as javascript literals to objects
|
|
||||||
if (!(data.evals instanceof Array)) data.evals = [data.evals];
|
|
||||||
for (var k = 0; data.evals && k < data.evals.length; k++) {
|
|
||||||
window.HTMLWidgets.evaluateStringMember(data.x, data.evals[k]);
|
|
||||||
}
|
|
||||||
binding.renderValue(el, data.x, initResult);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Wait until after the document has loaded to render the widgets.
|
|
||||||
if (document.addEventListener) {
|
|
||||||
document.addEventListener("DOMContentLoaded", function() {
|
|
||||||
document.removeEventListener("DOMContentLoaded", arguments.callee, false);
|
|
||||||
window.HTMLWidgets.staticRender();
|
|
||||||
}, false);
|
|
||||||
} else if (document.attachEvent) {
|
|
||||||
document.attachEvent("onreadystatechange", function() {
|
|
||||||
if (document.readyState === "complete") {
|
|
||||||
document.detachEvent("onreadystatechange", arguments.callee);
|
|
||||||
window.HTMLWidgets.staticRender();
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
window.HTMLWidgets.getAttachmentUrl = function(depname, key) {
|
|
||||||
// If no key, default to the first item
|
|
||||||
if (typeof(key) === "undefined")
|
|
||||||
key = 1;
|
|
||||||
|
|
||||||
var link = document.getElementById(depname + "-" + key + "-attachment");
|
|
||||||
if (!link) {
|
|
||||||
throw new Error("Attachment " + depname + "/" + key + " not found in document");
|
|
||||||
}
|
|
||||||
return link.getAttribute("href");
|
|
||||||
};
|
|
||||||
|
|
||||||
window.HTMLWidgets.dataframeToD3 = function(df) {
|
|
||||||
var names = [];
|
|
||||||
var length;
|
|
||||||
for (var name in df) {
|
|
||||||
if (df.hasOwnProperty(name))
|
|
||||||
names.push(name);
|
|
||||||
if (typeof(df[name]) !== "object" || typeof(df[name].length) === "undefined") {
|
|
||||||
throw new Error("All fields must be arrays");
|
|
||||||
} else if (typeof(length) !== "undefined" && length !== df[name].length) {
|
|
||||||
throw new Error("All fields must be arrays of the same length");
|
|
||||||
}
|
|
||||||
length = df[name].length;
|
|
||||||
}
|
|
||||||
var results = [];
|
|
||||||
var item;
|
|
||||||
for (var row = 0; row < length; row++) {
|
|
||||||
item = {};
|
|
||||||
for (var col = 0; col < names.length; col++) {
|
|
||||||
item[names[col]] = df[names[col]][row];
|
|
||||||
}
|
|
||||||
results.push(item);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
};
|
|
||||||
|
|
||||||
window.HTMLWidgets.transposeArray2D = function(array) {
|
|
||||||
var newArray = array[0].map(function(col, i) {
|
|
||||||
return array.map(function(row) {
|
|
||||||
return row[i]
|
|
||||||
})
|
|
||||||
});
|
|
||||||
return newArray;
|
|
||||||
};
|
|
||||||
// Split value at splitChar, but allow splitChar to be escaped
|
|
||||||
// using escapeChar. Any other characters escaped by escapeChar
|
|
||||||
// will be included as usual (including escapeChar itself).
|
|
||||||
function splitWithEscape(value, splitChar, escapeChar) {
|
|
||||||
var results = [];
|
|
||||||
var escapeMode = false;
|
|
||||||
var currentResult = "";
|
|
||||||
for (var pos = 0; pos < value.length; pos++) {
|
|
||||||
if (!escapeMode) {
|
|
||||||
if (value[pos] === splitChar) {
|
|
||||||
results.push(currentResult);
|
|
||||||
currentResult = "";
|
|
||||||
} else if (value[pos] === escapeChar) {
|
|
||||||
escapeMode = true;
|
|
||||||
} else {
|
|
||||||
currentResult += value[pos];
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
currentResult += value[pos];
|
|
||||||
escapeMode = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if (currentResult !== "") {
|
|
||||||
results.push(currentResult);
|
|
||||||
}
|
|
||||||
return results;
|
|
||||||
}
|
|
||||||
// Function authored by Yihui/JJ Allaire
|
|
||||||
window.HTMLWidgets.evaluateStringMember = function(o, member) {
|
|
||||||
var parts = splitWithEscape(member, '.', '\\');
|
|
||||||
for (var i = 0, l = parts.length; i < l; i++) {
|
|
||||||
var part = parts[i];
|
|
||||||
// part may be a character or 'numeric' member name
|
|
||||||
if (o !== null && typeof o === "object" && part in o) {
|
|
||||||
if (i == (l - 1)) { // if we are at the end of the line then evalulate
|
|
||||||
if (typeof o[part] === "string")
|
|
||||||
o[part] = eval("(" + o[part] + ")");
|
|
||||||
} else { // otherwise continue to next embedded object
|
|
||||||
o = o[part];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
})();
|
|
||||||
|
|
File diff suppressed because one or more lines are too long
|
@ -1,397 +0,0 @@
|
||||||
d3.sankey = function() {
|
|
||||||
var sankey = {},
|
|
||||||
nodeWidth = 24,
|
|
||||||
nodePadding = 8,
|
|
||||||
size = [1, 1],
|
|
||||||
nodes = [],
|
|
||||||
links = [],
|
|
||||||
sinksRight = true;
|
|
||||||
|
|
||||||
sankey.nodeWidth = function(_) {
|
|
||||||
if (!arguments.length) return nodeWidth;
|
|
||||||
nodeWidth = +_;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.nodePadding = function(_) {
|
|
||||||
if (!arguments.length) return nodePadding;
|
|
||||||
nodePadding = +_;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.nodes = function(_) {
|
|
||||||
if (!arguments.length) return nodes;
|
|
||||||
nodes = _;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.links = function(_) {
|
|
||||||
if (!arguments.length) return links;
|
|
||||||
links = _;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.size = function(_) {
|
|
||||||
if (!arguments.length) return size;
|
|
||||||
size = _;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.sinksRight = function (_) {
|
|
||||||
if (!arguments.length) return sinksRight;
|
|
||||||
sinksRight = _;
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.layout = function(iterations) {
|
|
||||||
computeNodeLinks();
|
|
||||||
computeNodeValues();
|
|
||||||
computeNodeBreadths();
|
|
||||||
computeNodeDepths(iterations);
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
sankey.relayout = function() {
|
|
||||||
computeLinkDepths();
|
|
||||||
return sankey;
|
|
||||||
};
|
|
||||||
|
|
||||||
// SVG path data generator, to be used as "d" attribute on "path" element selection.
|
|
||||||
sankey.link = function() {
|
|
||||||
var curvature = .5;
|
|
||||||
|
|
||||||
function link(d) {
|
|
||||||
var xs = d.source.x + d.source.dx,
|
|
||||||
xt = d.target.x,
|
|
||||||
xi = d3.interpolateNumber(xs, xt),
|
|
||||||
xsc = xi(curvature),
|
|
||||||
xtc = xi(1 - curvature),
|
|
||||||
ys = d.source.y + d.sy + d.dy / 2,
|
|
||||||
yt = d.target.y + d.ty + d.dy / 2;
|
|
||||||
|
|
||||||
if (!d.cycleBreaker) {
|
|
||||||
return "M" + xs + "," + ys
|
|
||||||
+ "C" + xsc + "," + ys
|
|
||||||
+ " " + xtc + "," + yt
|
|
||||||
+ " " + xt + "," + yt;
|
|
||||||
} else {
|
|
||||||
var xdelta = (1.5 * d.dy + 0.05 * Math.abs(xs - xt));
|
|
||||||
xsc = xs + xdelta;
|
|
||||||
xtc = xt - xdelta;
|
|
||||||
var xm = xi(0.5);
|
|
||||||
var ym = d3.interpolateNumber(ys, yt)(0.5);
|
|
||||||
var ydelta = (2 * d.dy + 0.1 * Math.abs(xs - xt) + 0.1 * Math.abs(ys - yt)) * (ym < (size[1] / 2) ? -1 : 1);
|
|
||||||
return "M" + xs + "," + ys
|
|
||||||
+ "C" + xsc + "," + ys
|
|
||||||
+ " " + xsc + "," + (ys + ydelta)
|
|
||||||
+ " " + xm + "," + (ym + ydelta)
|
|
||||||
+ "S" + xtc + "," + yt
|
|
||||||
+ " " + xt + "," + yt;
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
link.curvature = function(_) {
|
|
||||||
if (!arguments.length) return curvature;
|
|
||||||
curvature = +_;
|
|
||||||
return link;
|
|
||||||
};
|
|
||||||
|
|
||||||
return link;
|
|
||||||
};
|
|
||||||
|
|
||||||
// Populate the sourceLinks and targetLinks for each node.
|
|
||||||
// Also, if the source and target are not objects, assume they are indices.
|
|
||||||
function computeNodeLinks() {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
// Links that have this node as source.
|
|
||||||
node.sourceLinks = [];
|
|
||||||
// Links that have this node as target.
|
|
||||||
node.targetLinks = [];
|
|
||||||
});
|
|
||||||
links.forEach(function(link) {
|
|
||||||
var source = link.source,
|
|
||||||
target = link.target;
|
|
||||||
if (typeof source === "number") source = link.source = nodes[link.source];
|
|
||||||
if (typeof target === "number") target = link.target = nodes[link.target];
|
|
||||||
source.sourceLinks.push(link);
|
|
||||||
target.targetLinks.push(link);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute the value (size) of each node by summing the associated links.
|
|
||||||
function computeNodeValues() {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
node.value = Math.max(
|
|
||||||
d3.sum(node.sourceLinks, value),
|
|
||||||
d3.sum(node.targetLinks, value)
|
|
||||||
);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Iteratively assign the breadth (x-position) for each node.
|
|
||||||
// Nodes are assigned the maximum breadth of incoming neighbors plus one;
|
|
||||||
// nodes with no incoming links are assigned breadth zero, while
|
|
||||||
// nodes with no outgoing links are assigned the maximum breadth.
|
|
||||||
function computeNodeBreadths() {
|
|
||||||
var remainingNodes = nodes,
|
|
||||||
nextNodes,
|
|
||||||
x = 0;
|
|
||||||
|
|
||||||
// Work from left to right.
|
|
||||||
// Keep updating the breath (x-position) of nodes that are target of recently updated nodes.
|
|
||||||
while (remainingNodes.length && x < nodes.length) {
|
|
||||||
nextNodes = [];
|
|
||||||
remainingNodes.forEach(function(node) {
|
|
||||||
node.x = x;
|
|
||||||
node.dx = nodeWidth;
|
|
||||||
node.sourceLinks.forEach(function(link) {
|
|
||||||
if (nextNodes.indexOf(link.target) < 0 && !link.cycleBreaker) {
|
|
||||||
nextNodes.push(link.target);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
if (nextNodes.length == remainingNodes.length) {
|
|
||||||
// There must be a cycle here. Let's search for a link that breaks it.
|
|
||||||
findAndMarkCycleBreaker(nextNodes);
|
|
||||||
// Start over.
|
|
||||||
// TODO: make this optional?
|
|
||||||
return computeNodeBreadths();
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
remainingNodes = nextNodes;
|
|
||||||
++x;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Optionally move pure sinks always to the right.
|
|
||||||
if (sinksRight) {
|
|
||||||
moveSinksRight(x);
|
|
||||||
}
|
|
||||||
|
|
||||||
scaleNodeBreadths((size[0] - nodeWidth) / (x - 1));
|
|
||||||
}
|
|
||||||
|
|
||||||
// Find a link that breaks a cycle in the graph (if any).
|
|
||||||
function findAndMarkCycleBreaker(nodes) {
|
|
||||||
// Go through all nodes from the given subset and traverse links searching for cycles.
|
|
||||||
var link;
|
|
||||||
for (var n=nodes.length - 1; n >= 0; n--) {
|
|
||||||
link = depthFirstCycleSearch(nodes[n], []);
|
|
||||||
if (link) {
|
|
||||||
return link;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Depth-first search to find a link that is part of a cycle.
|
|
||||||
function depthFirstCycleSearch(cursorNode, path) {
|
|
||||||
var target, link;
|
|
||||||
for (var n = cursorNode.sourceLinks.length - 1; n >= 0; n--) {
|
|
||||||
link = cursorNode.sourceLinks[n];
|
|
||||||
if (link.cycleBreaker) {
|
|
||||||
// Skip already known cycle breakers.
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Check if target of link makes a cycle in current path.
|
|
||||||
target = link.target;
|
|
||||||
for (var l = 0; l < path.length; l++) {
|
|
||||||
if (path[l].source == target) {
|
|
||||||
// We found a cycle. Search for weakest link in cycle
|
|
||||||
var weakest = link;
|
|
||||||
for (; l < path.length; l++) {
|
|
||||||
if (path[l].value < weakest.value) {
|
|
||||||
weakest = path[l];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// Mark weakest link as (known) cycle breaker and abort search.
|
|
||||||
weakest.cycleBreaker = true;
|
|
||||||
return weakest;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Recurse deeper.
|
|
||||||
path.push(link);
|
|
||||||
link = depthFirstCycleSearch(target, path);
|
|
||||||
path.pop();
|
|
||||||
// Stop further search if we found a cycle breaker.
|
|
||||||
if (link) {
|
|
||||||
return link;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
function moveSourcesRight() {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
if (!node.targetLinks.length) {
|
|
||||||
node.x = d3.min(node.sourceLinks, function(d) { return d.target.x; }) - 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function moveSinksRight(x) {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
if (!node.sourceLinks.length) {
|
|
||||||
node.x = x - 1;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function scaleNodeBreadths(kx) {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
node.x *= kx;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute the depth (y-position) for each node.
|
|
||||||
function computeNodeDepths(iterations) {
|
|
||||||
// Group nodes by breath.
|
|
||||||
var nodesByBreadth = d3.nest()
|
|
||||||
.key(function(d) { return d.x; })
|
|
||||||
.sortKeys(d3.ascending)
|
|
||||||
.entries(nodes)
|
|
||||||
.map(function(d) { return d.values; });
|
|
||||||
|
|
||||||
//
|
|
||||||
initializeNodeDepth();
|
|
||||||
resolveCollisions();
|
|
||||||
computeLinkDepths();
|
|
||||||
for (var alpha = 1; iterations > 0; --iterations) {
|
|
||||||
relaxRightToLeft(alpha *= .99);
|
|
||||||
resolveCollisions();
|
|
||||||
computeLinkDepths();
|
|
||||||
relaxLeftToRight(alpha);
|
|
||||||
resolveCollisions();
|
|
||||||
computeLinkDepths();
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeNodeDepth() {
|
|
||||||
// Calculate vertical scaling factor.
|
|
||||||
var ky = d3.min(nodesByBreadth, function(nodes) {
|
|
||||||
return (size[1] - (nodes.length - 1) * nodePadding) / d3.sum(nodes, value);
|
|
||||||
});
|
|
||||||
|
|
||||||
nodesByBreadth.forEach(function(nodes) {
|
|
||||||
nodes.forEach(function(node, i) {
|
|
||||||
node.y = i;
|
|
||||||
node.dy = node.value * ky;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
links.forEach(function(link) {
|
|
||||||
link.dy = link.value * ky;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function relaxLeftToRight(alpha) {
|
|
||||||
nodesByBreadth.forEach(function(nodes, breadth) {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
if (node.targetLinks.length) {
|
|
||||||
// Value-weighted average of the y-position of source node centers linked to this node.
|
|
||||||
var y = d3.sum(node.targetLinks, weightedSource) / d3.sum(node.targetLinks, value);
|
|
||||||
node.y += (y - center(node)) * alpha;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function weightedSource(link) {
|
|
||||||
return (link.source.y + link.sy + link.dy / 2) * link.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function relaxRightToLeft(alpha) {
|
|
||||||
nodesByBreadth.slice().reverse().forEach(function(nodes) {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
if (node.sourceLinks.length) {
|
|
||||||
// Value-weighted average of the y-positions of target nodes linked to this node.
|
|
||||||
var y = d3.sum(node.sourceLinks, weightedTarget) / d3.sum(node.sourceLinks, value);
|
|
||||||
node.y += (y - center(node)) * alpha;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function weightedTarget(link) {
|
|
||||||
return (link.target.y + link.ty + link.dy / 2) * link.value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function resolveCollisions() {
|
|
||||||
nodesByBreadth.forEach(function(nodes) {
|
|
||||||
var node,
|
|
||||||
dy,
|
|
||||||
y0 = 0,
|
|
||||||
n = nodes.length,
|
|
||||||
i;
|
|
||||||
|
|
||||||
// Push any overlapping nodes down.
|
|
||||||
nodes.sort(ascendingDepth);
|
|
||||||
for (i = 0; i < n; ++i) {
|
|
||||||
node = nodes[i];
|
|
||||||
dy = y0 - node.y;
|
|
||||||
if (dy > 0) node.y += dy;
|
|
||||||
y0 = node.y + node.dy + nodePadding;
|
|
||||||
}
|
|
||||||
|
|
||||||
// If the bottommost node goes outside the bounds, push it back up.
|
|
||||||
dy = y0 - nodePadding - size[1];
|
|
||||||
if (dy > 0) {
|
|
||||||
y0 = node.y -= dy;
|
|
||||||
|
|
||||||
// Push any overlapping nodes back up.
|
|
||||||
for (i = n - 2; i >= 0; --i) {
|
|
||||||
node = nodes[i];
|
|
||||||
dy = node.y + node.dy + nodePadding - y0;
|
|
||||||
if (dy > 0) node.y -= dy;
|
|
||||||
y0 = node.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
function ascendingDepth(a, b) {
|
|
||||||
return a.y - b.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Compute y-offset of the source endpoint (sy) and target endpoints (ty) of links,
|
|
||||||
// relative to the source/target node's y-position.
|
|
||||||
function computeLinkDepths() {
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
node.sourceLinks.sort(ascendingTargetDepth);
|
|
||||||
node.targetLinks.sort(ascendingSourceDepth);
|
|
||||||
});
|
|
||||||
nodes.forEach(function(node) {
|
|
||||||
var sy = 0, ty = 0;
|
|
||||||
node.sourceLinks.forEach(function(link) {
|
|
||||||
link.sy = sy;
|
|
||||||
sy += link.dy;
|
|
||||||
});
|
|
||||||
node.targetLinks.forEach(function(link) {
|
|
||||||
link.ty = ty;
|
|
||||||
ty += link.dy;
|
|
||||||
});
|
|
||||||
});
|
|
||||||
|
|
||||||
function ascendingSourceDepth(a, b) {
|
|
||||||
return a.source.y - b.source.y;
|
|
||||||
}
|
|
||||||
|
|
||||||
function ascendingTargetDepth(a, b) {
|
|
||||||
return a.target.y - b.target.y;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Y-position of the middle of a node.
|
|
||||||
function center(node) {
|
|
||||||
return node.y + node.dy / 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Value property accessor.
|
|
||||||
function value(x) {
|
|
||||||
return x.value;
|
|
||||||
}
|
|
||||||
|
|
||||||
return sankey;
|
|
||||||
};
|
|
|
@ -1,230 +0,0 @@
|
||||||
HTMLWidgets.widget({
|
|
||||||
|
|
||||||
name: "sankeyNetwork",
|
|
||||||
|
|
||||||
type: "output",
|
|
||||||
|
|
||||||
initialize: function(el, width, height) {
|
|
||||||
|
|
||||||
d3.select(el).append("svg")
|
|
||||||
.style("width", "100%")
|
|
||||||
.style("height", "100%");
|
|
||||||
|
|
||||||
return {
|
|
||||||
sankey: d3.sankey(),
|
|
||||||
x: null
|
|
||||||
};
|
|
||||||
},
|
|
||||||
|
|
||||||
resize: function(el, width, height, instance) {
|
|
||||||
/* handle resizing now through the viewBox
|
|
||||||
d3.select(el).select("svg")
|
|
||||||
.attr("width", width)
|
|
||||||
.attr("height", height + height * 0.05);
|
|
||||||
|
|
||||||
this.renderValue(el, instance.x, instance);
|
|
||||||
*/
|
|
||||||
},
|
|
||||||
|
|
||||||
renderValue: function(el, x, instance) {
|
|
||||||
|
|
||||||
// save the x in our instance (for calling back from resize)
|
|
||||||
instance.x = x;
|
|
||||||
|
|
||||||
// alias sankey and options
|
|
||||||
var sankey = instance.sankey;
|
|
||||||
var options = x.options;
|
|
||||||
|
|
||||||
// convert links and nodes data frames to d3 friendly format
|
|
||||||
var links = HTMLWidgets.dataframeToD3(x.links);
|
|
||||||
var nodes = HTMLWidgets.dataframeToD3(x.nodes);
|
|
||||||
|
|
||||||
|
|
||||||
// margin handling
|
|
||||||
// set our default margin to be 20
|
|
||||||
// will override with x.options.margin if provided
|
|
||||||
var margin = {top: 20, right: 20, bottom: 20, left: 20};
|
|
||||||
// go through each key of x.options.margin
|
|
||||||
// use this value if provided from the R side
|
|
||||||
Object.keys(x.options.margin).map(function(ky){
|
|
||||||
if(x.options.margin[ky] !== null) {
|
|
||||||
margin[ky] = x.options.margin[ky];
|
|
||||||
}
|
|
||||||
// set the margin on the svg with css style
|
|
||||||
// commenting this out since not correct
|
|
||||||
// s.style(["margin",ky].join("-"), margin[ky]);
|
|
||||||
});
|
|
||||||
|
|
||||||
// get the width and height
|
|
||||||
var width = el.getBoundingClientRect().width - margin.right - margin.left;
|
|
||||||
var height = el.getBoundingClientRect().height - margin.top - margin.bottom;
|
|
||||||
|
|
||||||
var color = eval(options.colourScale);
|
|
||||||
|
|
||||||
var color_node = function color_node(d){
|
|
||||||
if (d.group){
|
|
||||||
return color(d.group.replace(/ .*/, ""));
|
|
||||||
} else {
|
|
||||||
return "#cccccc";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var color_link = function color_link(d){
|
|
||||||
if (d.group){
|
|
||||||
return color(d.group.replace(/ .*/, ""));
|
|
||||||
} else {
|
|
||||||
return "#000000";
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
var opacity_link = function opacity_link(d){
|
|
||||||
if (d.group){
|
|
||||||
return 0.7;
|
|
||||||
} else {
|
|
||||||
return 0.2;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
var formatNumber = d3.format(",.0f"),
|
|
||||||
format = function(d) { return formatNumber(d); }
|
|
||||||
|
|
||||||
// create d3 sankey layout
|
|
||||||
sankey
|
|
||||||
.nodes(d3.values(nodes))
|
|
||||||
.links(links)
|
|
||||||
.size([width, height])
|
|
||||||
.nodeWidth(options.nodeWidth)
|
|
||||||
.nodePadding(options.nodePadding)
|
|
||||||
.layout(32);
|
|
||||||
|
|
||||||
// select the svg element and remove existing children
|
|
||||||
d3.select(el).select("svg").selectAll("*").remove();
|
|
||||||
// append g for our container to transform by margin
|
|
||||||
var svg = d3.select(el).select("svg").append("g")
|
|
||||||
.attr("transform", "translate(" + margin.left + "," + margin.top + ")");;
|
|
||||||
|
|
||||||
// draw path
|
|
||||||
var path = sankey.link();
|
|
||||||
|
|
||||||
// draw links
|
|
||||||
var link = svg.selectAll(".link")
|
|
||||||
.data(sankey.links())
|
|
||||||
|
|
||||||
link.enter().append("path")
|
|
||||||
.attr("class", "link")
|
|
||||||
|
|
||||||
link
|
|
||||||
.attr("d", path)
|
|
||||||
.style("stroke-width", function(d) { return Math.max(1, d.dy); })
|
|
||||||
.style("fill", "none")
|
|
||||||
.style("stroke", color_link)
|
|
||||||
.style("stroke-opacity", opacity_link)
|
|
||||||
.sort(function(a, b) { return b.dy - a.dy; })
|
|
||||||
.on("mouseover", function(d) {
|
|
||||||
d3.select(this)
|
|
||||||
.style("stroke-opacity", function(d){return opacity_link(d) + 0.3});
|
|
||||||
})
|
|
||||||
.on("mouseout", function(d) {
|
|
||||||
d3.select(this)
|
|
||||||
.style("stroke-opacity", opacity_link);
|
|
||||||
});
|
|
||||||
|
|
||||||
// add backwards class to cycles
|
|
||||||
link.classed('backwards', function (d) { return d.target.x < d.source.x; });
|
|
||||||
|
|
||||||
svg.selectAll(".link.backwards")
|
|
||||||
.style("stroke-dasharray","9,1")
|
|
||||||
.style("stroke","#402")
|
|
||||||
|
|
||||||
// draw nodes
|
|
||||||
var node = svg.selectAll(".node")
|
|
||||||
.data(sankey.nodes())
|
|
||||||
|
|
||||||
node.enter().append("g")
|
|
||||||
.attr("class", "node")
|
|
||||||
.attr("transform", function(d) { return "translate(" +
|
|
||||||
d.x + "," + d.y + ")"; })
|
|
||||||
.call(d3.behavior.drag()
|
|
||||||
.origin(function(d) { return d; })
|
|
||||||
.on("dragstart", function() { this.parentNode.appendChild(this); })
|
|
||||||
.on("drag", dragmove));
|
|
||||||
|
|
||||||
// note: u2192 is right-arrow
|
|
||||||
link.append("title")
|
|
||||||
.text(function(d) { return d.source.name + " \u2192 " + d.target.name +
|
|
||||||
"\n" + format(d.value) + " " + options.units; });
|
|
||||||
|
|
||||||
node.append("rect")
|
|
||||||
.attr("height", function(d) { return d.dy; })
|
|
||||||
.attr("width", sankey.nodeWidth())
|
|
||||||
.style("fill", function(d) {
|
|
||||||
return d.color = color_node(d); })
|
|
||||||
.style("stroke", function(d) { return d3.rgb(d.color).darker(2); })
|
|
||||||
.style("opacity", 0.9)
|
|
||||||
.style("cursor", "move")
|
|
||||||
.append("title")
|
|
||||||
.text(function(d) { return d.name + "\n" + format(d.value) +
|
|
||||||
" " + options.units; });
|
|
||||||
|
|
||||||
node.append("text")
|
|
||||||
.attr("x", -6)
|
|
||||||
.attr("y", function(d) { return d.dy / 2; })
|
|
||||||
.attr("dy", ".35em")
|
|
||||||
.attr("text-anchor", "end")
|
|
||||||
.attr("transform", null)
|
|
||||||
.text(function(d) { return d.name; })
|
|
||||||
.style("font-size", options.fontSize + "px")
|
|
||||||
.style("font-family", options.fontFamily ? options.fontFamily : "inherit")
|
|
||||||
.filter(function(d) { return d.x < width / 2; })
|
|
||||||
.attr("x", 6 + sankey.nodeWidth())
|
|
||||||
.attr("text-anchor", "start");
|
|
||||||
|
|
||||||
|
|
||||||
// adjust viewBox to fit the bounds of our tree
|
|
||||||
var s = d3.select(svg[0][0].parentNode);
|
|
||||||
s.attr(
|
|
||||||
"viewBox",
|
|
||||||
[
|
|
||||||
d3.min(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().left
|
|
||||||
})
|
|
||||||
) - s.node().getBoundingClientRect().left - margin.right,
|
|
||||||
d3.min(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().top
|
|
||||||
})
|
|
||||||
) - s.node().getBoundingClientRect().top - margin.top,
|
|
||||||
d3.max(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().right
|
|
||||||
})
|
|
||||||
) -
|
|
||||||
d3.min(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().left
|
|
||||||
})
|
|
||||||
) + margin.left + margin.right,
|
|
||||||
d3.max(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().bottom
|
|
||||||
})
|
|
||||||
) -
|
|
||||||
d3.min(
|
|
||||||
s.selectAll('g')[0].map(function(d){
|
|
||||||
return d.getBoundingClientRect().top
|
|
||||||
})
|
|
||||||
) + margin.top + margin.bottom
|
|
||||||
].join(",")
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
function dragmove(d) {
|
|
||||||
d3.select(this).attr("transform", "translate(" + d.x + "," +
|
|
||||||
(d.y = Math.max(0, Math.min(height - d.dy, d3.event.y))) + ")");
|
|
||||||
sankey.relayout();
|
|
||||||
link.attr("d", path);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
});
|
|
|
@ -1,366 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Code and Data : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Code and Data </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/resources/github/">
|
|
||||||
<link href="https://jeremykidwell.info/resources/github/index.xml" rel="alternate" type="application/rss+xml" title="Code and Data" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
<!--
|
|
||||||
Need to adjust to my own API code!
|
|
||||||
<h2>Code on GitHub</h2>
|
|
||||||
|
|
||||||
<p>These are ordered by most recent commit to the repository.</p>
|
|
||||||
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/kieranhealy.hugo" target="_blank">kieranhealy.hugo:</a></strong>
|
|
||||||
Stars: 37 · Forks: 17 · Size: 29325 · Type: CSS <br />
|
|
||||||
The source code to http://kieranhealy.org</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/socviz" target="_blank">socviz:</a></strong>
|
|
||||||
Stars: 1 · Forks: 1 · Size: 9062 · Type: R <br />
|
|
||||||
Support files for a data visualization course and book</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/us_election_2016" target="_blank">us_election_2016:</a></strong>
|
|
||||||
Stars: 1 · Forks: 1 · Size: 12 · Type: R <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/socbibs" target="_blank">socbibs:</a></strong>
|
|
||||||
Stars: 19 · Forks: 5 · Size: 4679 · Type: TeX <br />
|
|
||||||
BibTeX files covering Economic Sociology, Sociology of Culture, Social Theory, IT, Blood/Organ donation, OSS</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/plain-text.co" target="_blank">plain-text.co:</a></strong>
|
|
||||||
Stars: 33 · Forks: 3 · Size: 9139 · Type: CSS <br />
|
|
||||||
http://plain-text.co</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/latex-custom-kjh" target="_blank">latex-custom-kjh:</a></strong>
|
|
||||||
Stars: 113 · Forks: 69 · Size: 1191 · Type: TeX <br />
|
|
||||||
Some simple configuration files I use for use with LaTeX, the Memoir class and the Listings package.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/pandoc-templates" target="_blank">pandoc-templates:</a></strong>
|
|
||||||
Stars: 293 · Forks: 109 · Size: 115 · Type: CSS <br />
|
|
||||||
Some elementary (xe)tex templates and css files for Pandoc.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/cbofigure" target="_blank">cbofigure:</a></strong>
|
|
||||||
Stars: 2 · Forks: 1 · Size: 3 · Type: R <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/workflow-paper" target="_blank">workflow-paper:</a></strong>
|
|
||||||
Stars: 69 · Forks: 23 · Size: 9612 · Type: Makefile <br />
|
|
||||||
The .md source for "The Plain Person's Guide to Plain Text Social Science". To exactly reproduce the PDF you will need current versions of R, TexLive, biber, and the support files at http://www.kieranhealy.org/resources.html.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/apple" target="_blank">apple:</a></strong>
|
|
||||||
Stars: 21 · Forks: 14 · Size: 16 · Type: R <br />
|
|
||||||
Trend plots and time-series decompositions of quarterly sales data for various Apple products.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/emacs-starter-kit" target="_blank">emacs-starter-kit:</a></strong>
|
|
||||||
Stars: 100 · Forks: 57 · Size: 18819 · Type: Emacs Lisp <br />
|
|
||||||
A drop-in starter-kit for Emacs 24, aimed at social scientists researching and writing in plain text using some combination of LaTeX, R, ESS, Git, Markdown, and Org-Mode.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/sourcesans" target="_blank">sourcesans:</a></strong>
|
|
||||||
Stars: 2 · Forks: 0 · Size: 3 · Type: R <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/myriad" target="_blank">myriad:</a></strong>
|
|
||||||
Stars: 3 · Forks: 1 · Size: 4 · Type: R <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/asdfree" target="_blank">asdfree:</a></strong>
|
|
||||||
Stars: 0 · Forks: 1 · Size: 32492 · Type: R <br />
|
|
||||||
analyze survey data for free with the r language and monetdblite</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/pres_budget" target="_blank">pres_budget:</a></strong>
|
|
||||||
Stars: 1 · Forks: 1 · Size: 2 · Type: R <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/fac-jitplot" target="_blank">fac-jitplot:</a></strong>
|
|
||||||
Stars: 1 · Forks: 1 · Size: 106 · Type: R <br />
|
|
||||||
Factor/Jitter plot example.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/tufte" target="_blank">tufte:</a></strong>
|
|
||||||
Stars: 0 · Forks: 0 · Size: 848 · Type: R <br />
|
|
||||||
Tufte Styles for R Markdown Documents</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/kjh-vita" target="_blank">kjh-vita:</a></strong>
|
|
||||||
Stars: 105 · Forks: 135 · Size: 169 · Type: TeX <br />
|
|
||||||
A simple LaTeX template that I use for my Vita.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/us-county" target="_blank">us-county:</a></strong>
|
|
||||||
Stars: 5 · Forks: 11 · Size: 24845 · Type: HTML <br />
|
|
||||||
US County Maps in R</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/fips-codes" target="_blank">fips-codes:</a></strong>
|
|
||||||
Stars: 1 · Forks: 1 · Size: 78 · Type: <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/County_Level_Election_Results_12-16" target="_blank">County_Level_Election_Results_12-16:</a></strong>
|
|
||||||
Stars: 0 · Forks: 1 · Size: 2334 · Type: Jupyter Notebook <br />
|
|
||||||
US president county-level election results for 2012 and 2016</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/bookdown" target="_blank">bookdown:</a></strong>
|
|
||||||
Stars: 1 · Forks: 0 · Size: 12865 · Type: JavaScript <br />
|
|
||||||
Authoring Books with R Markdown</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/tint" target="_blank">tint:</a></strong>
|
|
||||||
Stars: 1 · Forks: 0 · Size: 2073 · Type: R <br />
|
|
||||||
Tint is not Tufte</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/tilegrams" target="_blank">tilegrams:</a></strong>
|
|
||||||
Stars: 0 · Forks: 0 · Size: 1651 · Type: JavaScript <br />
|
|
||||||
Make hexagonally tiled cartograms</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/us-state-opiates" target="_blank">us-state-opiates:</a></strong>
|
|
||||||
Stars: 3 · Forks: 1 · Size: 15 · Type: R <br />
|
|
||||||
State-level plots of opiod death rates, 1999-2014</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/bookdown-demo" target="_blank">bookdown-demo:</a></strong>
|
|
||||||
Stars: 0 · Forks: 0 · Size: 276 · Type: CSS <br />
|
|
||||||
A minimal book example using bookdown</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/vaccines-ca" target="_blank">vaccines-ca:</a></strong>
|
|
||||||
Stars: 1 · Forks: 0 · Size: 1504 · Type: R <br />
|
|
||||||
Vaccination Excemptions in California Kindergartens.</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/2016-03-wapo-uber" target="_blank">2016-03-wapo-uber:</a></strong>
|
|
||||||
Stars: 1 · Forks: 0 · Size: 2909 · Type: Jupyter Notebook <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/vissoc.co" target="_blank">vissoc.co:</a></strong>
|
|
||||||
Stars: 18 · Forks: 9 · Size: 23853 · Type: R <br />
|
|
||||||
Code for DataViz course website</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
|
|
||||||
<li>
|
|
||||||
<p><strong><a href="https://github.com/kjhealy/rmd-starter" target="_blank">rmd-starter:</a></strong>
|
|
||||||
Stars: 4 · Forks: 3 · Size: 3 · Type: Makefile <br />
|
|
||||||
</p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
|
|
||||||
-->
|
|
||||||
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Code and Data on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/resources/github/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,152 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Resources : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Resources </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/resources/">
|
|
||||||
<link href="https://jeremykidwell.info/resources/index.xml" rel="alternate" type="application/rss+xml" title="Resources" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
|
|
||||||
|
|
||||||
<h2 id="datasets-code-etc">Datasets, Code, etc.</h2>
|
|
||||||
|
|
||||||
<p><em>On this page I have links provided to data-sets that I've generated as part of my research as well as code and anything else that doesn't quite fit under "publications".</em></p>
|
|
||||||
|
|
||||||
<p><h4><a href="https://jeremykidwell.info/resources/github/">All GitHub Projects</a></h4>
|
|
||||||
<p>Here is a <a href="https://jeremykidwell.info/resources/github/">full list of the various public code and data repositories</a> that I have put on GitHub.</p>
|
|
||||||
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
|
|
|
@ -1,12 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Resources on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/resources/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 01 Jan 0001 00:00:00 UTC</updated>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,188 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
|
||||||
xmlns:xhtml="http://www.w3.org/1999/xhtml">
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/teaching/religion_public_sphere/</loc>
|
|
||||||
<lastmod>2017-09-25T00:00:00+11:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/teaching/theological_ethics/</loc>
|
|
||||||
<lastmod>2017-09-25T00:00:00+11:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/presentations/british_library-labs/</loc>
|
|
||||||
<lastmod>2017-05-10T15:00:00+01:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/mapping_environmental_action/</loc>
|
|
||||||
<lastmod>2017-02-24T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/presentations/sca_mapping_community/</loc>
|
|
||||||
<lastmod>2017-01-20T15:00:00+01:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/presentations/digi_champs/</loc>
|
|
||||||
<lastmod>2017-01-19T15:00:00+01:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/presentations/church_stats_mapping/</loc>
|
|
||||||
<lastmod>2017-01-06T15:00:00+01:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/craft_book/</loc>
|
|
||||||
<lastmod>2016-09-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/media_world_christianity/</loc>
|
|
||||||
<lastmod>2016-05-20T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/hybrid_encounters/</loc>
|
|
||||||
<lastmod>2016-03-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/archives/2016/02/08/friday-poem/</loc>
|
|
||||||
<lastmod>2016-02-08T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/time_for_business/</loc>
|
|
||||||
<lastmod>2016-01-20T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/econ_book/</loc>
|
|
||||||
<lastmod>2015-06-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/chrysostom-radical-realist/</loc>
|
|
||||||
<lastmod>2015-06-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/archives/2014/09/30/climate_march/</loc>
|
|
||||||
<lastmod>2014-09-30T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/archives/2014/09/06/surprising_turn/</loc>
|
|
||||||
<lastmod>2014-09-06T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/archives/2014/05/20/on_dying/</loc>
|
|
||||||
<lastmod>2014-05-20T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/righteousness_industrialism/</loc>
|
|
||||||
<lastmod>2011-06-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/tolkein_dwarves_and_scientists/</loc>
|
|
||||||
<lastmod>2009-06-01T00:00:00+00:00</lastmod>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/403/</loc>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/403/</loc>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/404/</loc>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/404/</loc>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/archive/</loc>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/archives.html</loc>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/blog/</loc>
|
|
||||||
<lastmod>2016-02-08T00:00:00+00:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/categories/</loc>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/resources/github/</loc>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/categories/poems/</loc>
|
|
||||||
<lastmod>2016-02-08T00:00:00+00:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/presentations/</loc>
|
|
||||||
<lastmod>2017-05-10T15:00:00+01:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/publications/</loc>
|
|
||||||
<lastmod>2017-02-24T00:00:00+00:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/categories/quotes/</loc>
|
|
||||||
<lastmod>2014-09-06T00:00:00+00:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/resources/</loc>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/categories/speeches/</loc>
|
|
||||||
<lastmod>2014-09-30T00:00:00+00:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/teaching/</loc>
|
|
||||||
<lastmod>2017-09-25T00:00:00+11:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
<url>
|
|
||||||
<loc>https://jeremykidwell.info/</loc>
|
|
||||||
<lastmod>2017-09-25T00:00:00+11:00</lastmod>
|
|
||||||
<priority>0</priority>
|
|
||||||
</url>
|
|
||||||
|
|
||||||
</urlset>
|
|
|
@ -1,174 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Teachings : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Teachings </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/teaching/">
|
|
||||||
<link href="https://jeremykidwell.info/teaching/index.xml" rel="alternate" type="application/rss+xml" title="Teachings" />
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
|
|
||||||
<h2>Classes and Seminars</h2>
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-70">
|
|
||||||
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-10">
|
|
||||||
<h3>2017</h3>
|
|
||||||
</div>
|
|
||||||
<div class="unit-90">
|
|
||||||
<ul class="fa-ul">
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-mortar-board fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="https://jeremykidwell.info/teaching/theological_ethics/">
|
|
||||||
<a href="https://jeremykidwell.info/teaching/theological_ethics/"><span class="caps">Theological Ethics</span></a>
|
|
||||||
<p> Description
|
|
||||||
Syllabus (PDF) </p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
<li><i class="fa-li fa fa-mortar-board fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="https://jeremykidwell.info/teaching/religion_public_sphere/">
|
|
||||||
<a href="https://jeremykidwell.info/teaching/religion_public_sphere/"><span class="caps">Religion in the Public Sphere</span></a>
|
|
||||||
<p><p>This second year undergraduate course…</p>
|
|
||||||
|
|
||||||
<p></p></p>
|
|
||||||
</li>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<p><em>This list include courses that I've taught recently along with my teaching for the upcoming year. You'll find syllabi and resources if they're avialbale.</em></p>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
<footer id="footer">
|
|
||||||
<section class="wrapper small">Powered by <a href="http://gohugo.io">Hugo</a> and <a href="http://imperavi.com/kube/">Kube</a>. © Jeremy Kidwell 2003–2017.
|
|
||||||
</section>
|
|
||||||
</footer>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
|
@ -1,39 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="yes" ?>
|
|
||||||
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
|
|
||||||
<channel>
|
|
||||||
<title>Teachings on jeremykidwell.info </title>
|
|
||||||
<link>https://jeremykidwell.info/teaching/</link>
|
|
||||||
<language>en-us</language>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<rights>Copyright (c) Jeremy Kidwell.</rights>
|
|
||||||
<updated>Mon, 25 Sep 2017 00:00:00 +1100</updated>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Religion in the Public Sphere</title>
|
|
||||||
<link>https://jeremykidwell.info/teaching/religion_public_sphere/</link>
|
|
||||||
<pubDate>Mon, 25 Sep 2017 00:00:00 +1100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/teaching/religion_public_sphere/</guid>
|
|
||||||
<description><p>This second year undergraduate course&hellip;</p>
|
|
||||||
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-public-sphere-pdf"><a href="http://jeremykidwell.info/files/teaching/public_sphere.pdf">Syllabus (PDF)</a></h4></description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
<item>
|
|
||||||
<title>Theological Ethics</title>
|
|
||||||
<link>https://jeremykidwell.info/teaching/theological_ethics/</link>
|
|
||||||
<pubDate>Mon, 25 Sep 2017 00:00:00 +1100</pubDate>
|
|
||||||
<author>Jeremy Kidwell</author>
|
|
||||||
<guid>https://jeremykidwell.info/teaching/theological_ethics/</guid>
|
|
||||||
<description>
|
|
||||||
|
|
||||||
<p>Description</p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-theological-ethics-2017-pdf"><a href="http://jeremykidwell.info/files/teaching/theological_ethics_2017.pdf">Syllabus (PDF)</a></h4>
|
|
||||||
</description>
|
|
||||||
</item>
|
|
||||||
|
|
||||||
</channel>
|
|
||||||
</rss>
|
|
|
@ -1,152 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Religion in the Public Sphere : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Religion in the Public Sphere </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/teaching/religion_public_sphere/">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
<h3>Religion in the Public Sphere</h3>
|
|
||||||
<p>This second year undergraduate course…</p>
|
|
||||||
|
|
||||||
<p></p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-public-sphere-pdf"><a href="http://jeremykidwell.info/files/teaching/public_sphere.pdf">Syllabus (PDF)</a></h4>
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -1,153 +0,0 @@
|
||||||
<!DOCTYPE html>
|
|
||||||
<html>
|
|
||||||
<head>
|
|
||||||
<meta charset="utf-8">
|
|
||||||
|
|
||||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,partials=1">
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="HandheldFriendly" content="True">
|
|
||||||
<meta name="MobileOptimized" content="320">
|
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1 minimal-ui">
|
|
||||||
|
|
||||||
<meta name="description" content="">
|
|
||||||
<meta name="keywords" content="">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<meta name="twitter:card" content="summary">
|
|
||||||
|
|
||||||
<meta name="twitter:site" content="@kidwellj">
|
|
||||||
<meta name="twitter:title" content="Theological Ethics : jeremykidwell.info">
|
|
||||||
<meta name="twitter:creator" content="@kidwellj">
|
|
||||||
<meta name="twitter:description" content="">
|
|
||||||
<meta name="twitter:image:src" content="">
|
|
||||||
<meta name="twitter:domain" content="jeremykidwell.info">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<base href="https://jeremykidwell.info/">
|
|
||||||
<title> Theological Ethics </title>
|
|
||||||
<link rel="canonical" href="https://jeremykidwell.info/teaching/theological_ethics/">
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="stylesheet" href="https://jeremykidwell.info/css/stylesheet-min.css" />
|
|
||||||
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css" rel="stylesheet">
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
<script type="text/javascript" src="https://use.typekit.com/kpn7wwu.js"></script>
|
|
||||||
<script type="text/javascript">try{Typekit.load();}catch(e){}</script>
|
|
||||||
|
|
||||||
|
|
||||||
<link rel="shortcut icon" href="https://jeremykidwell.info/favicon.ico" type="image/x-icon" />
|
|
||||||
<link rel="apple-touch-icon" href="https://jeremykidwell.info/apple-touch-icon.png" />
|
|
||||||
</head>
|
|
||||||
|
|
||||||
<body lang="en" itemscope itemtype="http://schema.org/Article">
|
|
||||||
|
|
||||||
<div id="topbar">
|
|
||||||
<div class="wrapper">
|
|
||||||
<header>
|
|
||||||
<nav class="navbar">
|
|
||||||
<ul>
|
|
||||||
<li><a href="https://jeremykidwell.info/">Jeremy Kidwell</a></li>
|
|
||||||
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/publications">Publications </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/resources">Resources </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/presentations">Presentations </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/teaching">Teaching </a></span>
|
|
||||||
|
|
||||||
<li><span> <a class="" href="https://jeremykidwell.info/blog">Blog </a></span>
|
|
||||||
|
|
||||||
</ul>
|
|
||||||
</nav>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</header>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<div class="wrapper">
|
|
||||||
<div class="units-row">
|
|
||||||
<div class="unit-centered unit-80">
|
|
||||||
<article class="post" id="content">
|
|
||||||
<h3>Theological Ethics</h3>
|
|
||||||
|
|
||||||
|
|
||||||
<p>Description</p>
|
|
||||||
|
|
||||||
<h4 id="syllabus-pdf-http-jeremykidwell-info-files-teaching-theological-ethics-2017-pdf"><a href="http://jeremykidwell.info/files/teaching/theological_ethics_2017.pdf">Syllabus (PDF)</a></h4>
|
|
||||||
|
|
||||||
</article>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
<hr class="separator">
|
|
||||||
|
|
||||||
<div class="wrapper" style="font-size: 0.9em; line-height: 1.05em;">
|
|
||||||
<div class="units-row units-padding">
|
|
||||||
<div class="unit-40">
|
|
||||||
<h3>about</h3>
|
|
||||||
<figure class="image-left">
|
|
||||||
<img class="avatar" src="files/misc/ben_nevis.jpg" height="120">
|
|
||||||
</figure>
|
|
||||||
<p>I am Lecturer in <a href="http://www.birmingham.ac.uk/schools/ptr/index.aspx">Theological Ethics</a> at <a href="http://www.birmingham.ac.uk">the University of Birmingham</a>.</p>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>Where</h3>
|
|
||||||
<ul class="compact fa-ul">
|
|
||||||
<li><i class="fa-li fa fa-university fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i>Department of Theology and Religous Studies, University of Birmingham, Edgbaston, Birmingham, B15 2TT, UK.</li>
|
|
||||||
<li><i class="fa-li fa fa-envelope fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="mailto:j.kidwell@bham.ac.uk">j.kidwell@bham.ac.uk</a></li>
|
|
||||||
<li><i class="fa-li fa fa-twitter-square fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://twitter.com/kidwellj">@kidwellj</a> on Twitter.</li>
|
|
||||||
<li><i class="fa-li fa fa-github fa-fw" style="color:#03396c;font-size:80%;padding-top:6px;"></i><a href="http://github.com/kidwellj">On GitHub</a>.</li>
|
|
||||||
<li><i class=""></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
<div class="unit-30">
|
|
||||||
<h3>subscribe</h3>
|
|
||||||
<p>To receive updates from this site, you can
|
|
||||||
subscribe to the <a href="https://jeremykidwell.info/index.xml"><i class="fa fa-rss-square" style="color:#03396c;"></i> RSS feed</a> of all updates to the site in an RSS feed reader</p>
|
|
||||||
<h3>search</h3>
|
|
||||||
<a id="searchsite">
|
|
||||||
<form method="get" action="https://duckduckgo.com/">
|
|
||||||
<input type="search" name="q" maxlength="255" placeholder="Search the site">
|
|
||||||
<input type="hidden" name="sites" value="jeremykidwell.info"/>
|
|
||||||
<input type="hidden" name="k7" value="#faf8f8"/>
|
|
||||||
<input type="hidden" name="kj" value="#b33"/>
|
|
||||||
<input type="hidden" name="ky" value="#fafafa"/>
|
|
||||||
<input type="hidden" name="kx" value="b"/>
|
|
||||||
<input type="hidden" name="ko" value="-1"/>
|
|
||||||
<input type="hidden" name="k1" value="-1"/>
|
|
||||||
<input type="submit" value="DuckDuckGo Search" style="visibility: hidden;" /></form></a>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
</body>
|
|
||||||
</html>
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue