Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • verified-software/psvg.doc.ic.ac.uk
  • xr119/psvg.doc.ic.ac.uk
2 results
Show changes
Commits on Source (1243)
#!/bin/sh
# Use rsync to transfer files to a server via ssh, ensuring that the files are transferred with the correct permissions,
# user group. The command will also remove old files from the remote directory.
# To transfer files to the default location, you will need to be a member of the `rr` DoC usergroup.
#
# Example usage:
# DOC_DEPLOY_USER=me ./.deploy.sh
set -x
USER=${DOC_DEPLOY_USER:+${DOC_DEPLOY_USER}@}
SERVER=${DOC_DEPLOY_SERVER:-shell1.doc.ic.ac.uk}
PTH=${DOC_DEPLOY_PATH:-/vol/rr/www}
exec rsync -e "ssh -o StrictHostKeyChecking=no" --chmod=Dg+s,ug+rwX,o+rX --chown=:rr -igrp --delete _site/ "${USER}${SERVER}:${PTH}"
......@@ -3,3 +3,4 @@ _site
.jekyll-metadata
vendor
.bundle/config
.DS_Store
before_script:
- bundle install --without=development
stages:
- update
- build
- deploy
test:
stage: test
image: "ruby:2.6-buster"
variables:
NOKOGIRI_USE_SYSTEM_LIBRARIES: "true"
build:
stage: build
artifacts:
paths:
- _site/
expire_in: 1 day
cache:
paths:
- vendor/bundle/
except:
- triggers
tags:
- docker
- vtss_site
before_script:
- bundle install --deployment --without=development --with=test
- bundle exec rake init
script:
- bundle exec rake test
- bundle exec rake -s --suppress-backtrace . test
# Not a test stage to prevent race conditions with gem installations.
deadlinks:
stage: deploy
script:
- bundle exec rake testlinks
allow_failure: true
cache:
paths:
- vendor/bundle/
except:
- triggers
tags:
- docker
- vtss_site
before_script:
- bundle install --deployment --without=development --with=test
script:
- bundle exec rake -s --suppress-backtrace . testlinks
deploy:
stage: deploy
environment: production
script:
- bundle exec rake deploy
image: resourcereasoning/website-deploy
tags:
- doc
- docker
- vtss_site
only:
- master
except:
- triggers
# DOC_DEPLOY_USER and DOC_DEPLOY_KEY should be defined as secret variables in the GitLab CI Settings panel
before_script:
- eval `ssh-agent`
- echo "$DOC_DEPLOY_KEY" | ssh-add -
script:
- ./.deploy.sh
# Special target triggered when publications repository is updated:
update_publications:
stage: update
variables:
GIT_AUTHOR_NAME: Resource Reasoning Group Backup Bot
GIT_COMMITTER_NAME: Resource Reasoning Group Backup Bot
GIT_AUTHOR_EMAIL: rr-gitlab-bot@example.com
EMAIL: rr-gitlab-bot@example.com
# PUSH_KEY should be defined as a secret variable in the GitLab UI
SSH_KEY: $PUSH_KEY
image: ignoredambience/github-gitlab-sync
tags:
- docker
- vtss_site
only:
- triggers
before_script:
- eval `ssh-agent`
- echo "$SSH_KEY" | ssh-add -
script:
- git checkout -B ${CI_COMMIT_REF_NAME}
- git submodule update --init --remote
- git add publications
- git commit -m "[AUTO] Updating publications submodule" || exit 0
- git remote rm rw || true
- git remote add rw git@gitlab.doc.ic.ac.uk:${CI_PROJECT_PATH}.git
- git push rw ${CI_COMMIT_REF_NAME}
[submodule "publications"]
path = publications
url = https://gitlab.doc.ic.ac.uk/verified-software/publications.git
branch = master
CheckSpelling Off
Options -Indexes
RewriteEngine on
# Rewrite former site subdomain pages to new site pages
RewriteCond %{HTTP_HOST} =www-rw.doc.ic.ac.uk
RewriteRule ^ http://psvg.doc.ic.ac.uk/research/javascript.html [R=301,L]
RewriteRule ^ http://vtss.doc.ic.ac.uk/research/javascript.html [R=301,L]
RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk
RewriteRule ^papers.html http://psvg.doc.ic.ac.uk/publications/ [R=301,L]
RewriteRule ^papers.html http://vtss.doc.ic.ac.uk/publications/ [R=301,L]
RewriteCond %{HTTP_HOST} =www-lrr.doc.ic.ac.uk
RewriteRule ^ca($|/) http://psvg.doc.ic.ac.uk/research/concurrency.html [R=301,L]
RewriteRule ^ca($|/) http://vtss.doc.ic.ac.uk/research/concurrency.html [R=301,L]
# Bump any other subdomain request that gets here over to the main psvg site
RewriteCond %{HTTP_HOST} !=psvg.doc.ic.ac.uk
RewriteRule ^(.*)$ http://psvg.doc.ic.ac.uk/$1 [R=301,L]
RewriteCond %{HTTP_HOST} !=vtss.doc.ic.ac.uk
RewriteRule ^(.*)$ http://vtss.doc.ic.ac.uk/$1 [R=301,L]
ErrorDocument 403 /403.html
ErrorDocument 404 /404.html
---
layout: page
title: "Error 403: Page Not Found"
permalink: /403.html
---
Oops :(. This page is not verified, therefore clients should not access it.
......@@ -4,4 +4,4 @@ title: "Error 404: Page Not Found"
permalink: /404.html
---
Oops :(
Oops :(. This page is not verified, therefore clients should not access it.
FROM ruby:2.6
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
RUN gem install bundler:1.16.6
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
RUN bundle exec rake init
EXPOSE 4000
CMD ["bundle", "exec", "jekyll", "serve", "--host", "0.0.0.0"]
\ No newline at end of file
source 'https://rubygems.org'
Encoding.default_external = Encoding::UTF_8
gem 'rake'
gem 'jekyll'
group :build do
gem 'jekyll'
end
group :default, :jekyll_plugins do
gem 'jekyll-scholar', '~> 5.7'
group :build, :jekyll_plugins do
gem 'jekyll-scholar', '~> 5.10'
#gem 'jekyll-scholar', :git => '/home/thomas/jekyll-scholar', :branch => 'master'
gem 'jekyll-redirect-from'
gem 'jekyll-feed'
gem 'jekyll-sitemap'
end
......@@ -13,5 +20,4 @@ group :test do
end
group :development do
gem 'pry'
end
GEM
remote: https://rubygems.org/
specs:
activesupport (5.0.0.1)
activesupport (5.2.1)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (~> 0.7)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
tzinfo (~> 1.1)
addressable (2.4.0)
bibtex-ruby (4.4.3)
addressable (2.5.2)
public_suffix (>= 2.0.2, < 4.0)
bibtex-ruby (4.4.7)
latex-decode (~> 0.0)
citeproc (1.0.4)
namae (~> 0.8)
citeproc-ruby (1.1.5)
citeproc (>= 1.0.4, < 2.0)
csl (~> 1.4)
coderay (1.1.1)
citeproc (1.0.9)
namae (~> 1.0)
citeproc-ruby (1.1.10)
citeproc (~> 1.0, >= 1.0.9)
csl (~> 1.5)
colorator (1.1.0)
colored (1.2)
concurrent-ruby (1.0.2)
csl (1.4.5)
namae (~> 0.7)
csl-styles (1.0.1.7)
colorize (0.8.1)
concurrent-ruby (1.1.3)
csl (1.5.0)
namae (~> 1.0)
csl-styles (1.0.1.9)
csl (~> 1.0)
ethon (0.9.1)
em-websocket (0.5.1)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0.6.0)
ethon (0.11.0)
ffi (>= 1.3.0)
ffi (1.9.14)
eventmachine (1.2.7)
ffi (1.9.25)
forwardable-extended (2.6.0)
html-proofer (3.3.1)
html-proofer (3.9.2)
activesupport (>= 4.2, < 6.0)
addressable (~> 2.3)
colored (~> 1.2)
colorize (~> 0.8)
mercenary (~> 0.3.2)
nokogiri (~> 1.5)
nokogiri (~> 1.8.1)
parallel (~> 1.3)
typhoeus (~> 0.7)
typhoeus (~> 1.3)
yell (~> 2.0)
i18n (0.7.0)
jekyll (3.3.0)
http_parser.rb (0.6.0)
i18n (0.9.5)
concurrent-ruby (~> 1.0)
jekyll (3.8.5)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 0.7)
jekyll-sass-converter (~> 1.0)
jekyll-watch (~> 1.1)
kramdown (~> 1.3)
liquid (~> 3.0)
jekyll-watch (~> 2.0)
kramdown (~> 1.14)
liquid (~> 4.0)
mercenary (~> 0.3.3)
pathutil (~> 0.9)
rouge (~> 1.7)
rouge (>= 1.7, < 4)
safe_yaml (~> 1.0)
jekyll-sass-converter (1.4.0)
jekyll-feed (0.11.0)
jekyll (~> 3.3)
jekyll-redirect-from (0.14.0)
jekyll (~> 3.3)
jekyll-sass-converter (1.5.2)
sass (~> 3.4)
jekyll-scholar (5.8.5)
jekyll-scholar (5.14.0)
bibtex-ruby (~> 4.0, >= 4.0.13)
citeproc-ruby (~> 1.0)
csl-styles (~> 1.0)
jekyll (~> 3.0)
jekyll-sitemap (0.12.0)
jekyll-sitemap (1.2.0)
jekyll (~> 3.3)
jekyll-watch (1.5.0)
listen (~> 3.0, < 3.1)
kramdown (1.12.0)
latex-decode (0.2.2)
unicode (~> 0.4)
liquid (3.0.6)
listen (3.0.8)
jekyll-watch (2.1.2)
listen (~> 3.0)
kramdown (1.17.0)
latex-decode (0.3.1)
liquid (4.0.1)
listen (3.1.5)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
ruby_dep (~> 1.2)
mercenary (0.3.6)
method_source (0.8.2)
mini_portile2 (2.1.0)
minitest (5.9.1)
namae (0.11.0)
nokogiri (1.6.8.1)
mini_portile2 (~> 2.1.0)
parallel (1.9.0)
pathutil (0.14.0)
mini_portile2 (2.3.0)
minitest (5.11.3)
namae (1.0.1)
nokogiri (1.8.5)
mini_portile2 (~> 2.3.0)
parallel (1.12.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
pry (0.10.4)
coderay (~> 1.1.0)
method_source (~> 0.8.1)
slop (~> 3.4)
rake (11.3.0)
rb-fsevent (0.9.8)
rb-inotify (0.9.7)
ffi (>= 0.5.0)
rouge (1.11.1)
public_suffix (3.0.3)
rake (12.3.1)
rb-fsevent (0.10.3)
rb-inotify (0.9.10)
ffi (>= 0.5.0, < 2)
rouge (3.3.0)
ruby_dep (1.5.0)
safe_yaml (1.0.4)
sass (3.4.22)
slop (3.6.0)
thread_safe (0.3.5)
typhoeus (0.8.0)
ethon (>= 0.8.0)
tzinfo (1.2.2)
sass (3.7.2)
sass-listen (~> 4.0.0)
sass-listen (4.0.0)
rb-fsevent (~> 0.9, >= 0.9.4)
rb-inotify (~> 0.9, >= 0.9.7)
thread_safe (0.3.6)
typhoeus (1.3.1)
ethon (>= 0.9.0)
tzinfo (1.2.5)
thread_safe (~> 0.1)
unicode (0.4.4.2)
yell (2.0.7)
PLATFORMS
......@@ -101,10 +112,11 @@ PLATFORMS
DEPENDENCIES
html-proofer (~> 3.0)
jekyll
jekyll-scholar (~> 5.7)
jekyll-feed
jekyll-redirect-from
jekyll-scholar (~> 5.10)
jekyll-sitemap
pry
rake
BUNDLED WITH
1.13.6
1.16.6
---
layout: null
layout: page
title: VTSS Group Website Readme
---
Program Specification & Verification Group Website: http://psvg.doc.ic.ac.uk/
=============================================================================
This readme file is published in its fully rendered form [on the website]({{site.baseurl}}{% link README.md %}).
The source code for [this site](https://vtss.doc.ic.ac.uk) is [hosted on the DoC GitLab server](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk),
you should have access to edit it if a member of the resource-reasoning group.
**DO NOT EDIT THE SOURCE CODE IN `/vol/rr/www`, IT IS ALL REPLACED EACH TIME THE SITE IS REBUILT FROM VERSION CONTROL**
[![Build Status](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk/badges/master/build.svg)](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk/commits/master)
[![Build Status](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk/badges/master/build.svg)](https://gitlab.doc.ic.ac.uk/resource-reasoning/vtss.doc.ic.ac.uk/commits/master)
[![Dependency Status](https://gemnasium.com/bd81b2aa11ff43417700f75dbd194221.svg)](https://gemnasium.com/6ba7afbbfda9adcba06f007cc565a29a)
The source code for [this site](http://psvg.doc.ic.ac.uk) is [hosted on the DoC GitLab server](https://gitlab.doc.ic.ac.uk/resource-reasoning/psvg.doc.ic.ac.uk),
you should have access to edit it if a member of the resource-reasoning group.
**DO NOT EDIT THE SOURCE CODE IN `/vol/rr/www`, IT IS ALL REPLACED EACH TIME THE SITE IS REBUILT FROM VERSION CONTROL**
## Managing Content
### Publications
Please see [the dedicated publications repository](https://gitlab.doc.ic.ac.uk/resource-reasoning/publications) for
instructions on how to add new publications to the website.
Technical Detail
----------------
......@@ -37,11 +40,49 @@ Variables that templates currently take into account are:
* `title`, sets the page title
* `menu`, (default: false) places the page into the website's navigation menu
* `menu_order`, decides the order of menu
* `parent_menu`, creates a parent menu with a dropdown box including the current page.
Pages with the same parent menu are put in the same box.
Please also ensures the existence of parent_menu and its value, and menu_order are consistent.
* `sub_menu_order`, decides the order of menu in corresponding dropdown box.
* `project_id`, links the page to a project.
* `project`, (please only use this for person, i.e. file under the directory of _people), links a person to a project.
* `firstname, lastname, position, webpage, email, github`, describes a person.
The main content of the page should then follow.
Any other files present in the directory structure (except for those prefixed with `_`, `.`, or explicitly excluded in
`_config.yml`) will be published unchanged to the website.
Any other files present in the directory structure (except for those prefixed with `_`, `.`, or explicitly excluded in `_config.yml`) will be published unchanged to the website.
For the detail of adding publication, please refer to the README file in publication directory.
Jekyll Scholar Configuration Detail
===================================
We desire the output URL structure to be:
* `/publications/`
* `index.html` - a page listing the entire bibliography
* `publications.bib` - the raw bibtex file, directly from the source
* `Key.html` - details page generated for each publication
* `Key.*` - Any files associated with each publication, copied directly from the source
In the `scholar` section of the configuration file, configuration options we've used are:
* `source`: Directory in which our bibtex files are to be found (`publications`)
* `details_dir`: Directory to output `Key.html` files for each publication (`publications`), rendered using the layout
defined in the `details_layout` option.
* `details_link`: We override the default here, as we generate our own HTML to render this link in our
`bibliography_template`.
* `repository`: Location of files associated with publications (`publications`) (the same
directory is used for both input and output: it is handled as usual by jekyll)
The template used to generate individual publication pages is [here](_layouts/publication.html). The part of interest is
the Source Materials section. We iterate through a
[predefined list of file types](publications/_publication_file_types.yml) and output a link (using icon and text from
the file type list) to the file in the repository if it exists.
Finally, in order to generate the complete biography page, we use a [page](publications.html) in the site's root just
outputting a `{% bibliography %}` as normal (which renders each entry using the layout defined by the scholar
`bibliography_template` option). By using a `permalink` jekyll option we place the rendered bibliography into the
`/publications/` output directory as `index.html`.
Testing and Deployment
----------------------
......@@ -52,7 +93,19 @@ are consistent.
An additional check that external links are still live is also run, but this test is permitted to fail without blocking
the deployment.
The site is deployed to `/vol/rr/www` automatically on successful build.
The site should be deployed automatically by GitLab CI. To deploy the site manually from your own machine, run the `.deploy.sh` script. This will use `rsync` to synchronise the contents of the `_site` directory with the webserver via SSH. Default deployment parameters:
* DOC_DEPLOY_USER: the default username used by SSH to connect, usually the username on your local machine
* DOC_DEPLOY_SERVER: `shell1.doc.ic.ac.uk`
* DOC_DEPLOY_PATH: `/vol/rr/www`
To override these parameters, set shell variables, eg: `DOC_DEPLOY_USER=me ./.deploy.sh`
The site is deployed to `/vol/rr/www` automatically on successful build using the `.deploy.sh` script.
The contents of the `DOC_DEPLOY_KEY` CI environment variable are used
as the private key used to authenticate with the server. This key is currently configured to give locked-down rsync access to the
`/vol/rr/www` using `pg`'s user account. For further details for how this is achieved, [see this
howto](https://www.guyrutenberg.com/2014/01/14/restricting-ssh-access-to-rsync/). Note: when deploying to a locked-down
rsync account, the DOC_DEPLOY_PATH should be set to a path relative to the lockdown path -- use `.` if in doubt. You
won't need to set this if you're deploying from your own user account.
Locally Building and Testing
----------------------------
......@@ -60,11 +113,12 @@ If you wish to test the site locally, ensure you have ruby installed, and then i
```
gem install bundler
bundle install
bundle exec rake init
```
And to start a local webserver that remakes files whenever changed:
```
rake serve
bundle exec rake serve
```
You can test for dead links and html errors using:
......
......@@ -2,6 +2,11 @@ require 'html-proofer'
task :default => :build
desc "Initialise/update git submodules"
task :init do
sh "git submodule update --init --remote"
end
desc "Build the site"
task :build do
sh "bundle exec jekyll build"
......@@ -10,7 +15,8 @@ end
htmlproofer_config = {
:disable_external => true,
:check_html => true,
:parallel => { :in_processes => 4 }
:parallel => { :in_processes => 1 },
:file_ignore => [/README.html/]
}
desc "Build the site and test output for dead links, invalid html etc."
......@@ -30,7 +36,7 @@ task :serve do
sh "bundle exec jekyll serve"
end
desc "Deploy the site using rsync"
task :deploy => :build do
sh "umask 0002 && rsync --chmod=Dg+s,ug+rwX,o+rX --chown=:rr -igrp --delete _site/ /vol/rr/www"
desc "Deploy the website to the webserver"
task :deploy do
sh ".deploy.sh"
end
title: Program Specification and Verification Group
title: Verified Software
subtitle: <a href="http://www.doc.ic.ac.uk">Department of Computing</a>, <a href="http://www.imperial.ac.uk/">Imperial College London</a>
copyright: Imperial College London
baseurl: ""
url: "https://psvg.doc.ic.ac.uk"
url: "https://vtss.doc.ic.ac.uk"
markdown: kramdown
encoding: utf-8
timezone: Europe/London
include:
- .htaccess
exclude:
......@@ -14,12 +17,15 @@ exclude:
- Rakefile
- .gitlab-ci.yml
- vendor
- publications/README.md
collections:
people:
output: true
research:
output: true
teaching:
output: true
defaults:
-
......@@ -29,6 +35,11 @@ defaults:
layout: page
menu: false
menu_order: 9
-
scope:
type: posts
values:
layout: post
-
scope:
path: ""
......@@ -40,6 +51,11 @@ defaults:
path: "research"
values:
layout: research
-
scope:
path: "teaching"
values:
layout: teaching
scholar:
source: publications
......@@ -49,8 +65,8 @@ scholar:
details_dir: publications
details_layout: publication.html
use_raw_bibtex_entry: true
bibtex_skip_fields: ['month_numeric', 'project']
use_raw_bibtex_entry: false
bibtex_skip_fields: ['month_numeric', 'project', 'file']
bibtex_filters:
- superscript
- latex
......
......@@ -26,8 +26,8 @@ fontawesome:
integrity: "sha384-XdYbMnZ/QjLh6iI4ogqCTaIjrFk87ip+ekIjefZch0Y+PvJ8CDYtEs1ipDmPorQ+"
mathjax:
uri: "http://cdn.mathjax.org/mathjax/"
version: "latest"
uri: "https://cdnjs.cloudflare.com/ajax/libs/mathjax/"
version: "2.7.5"
js:
path: "/MathJax.js?config=TeX-AMS-MML_HTMLorMML"
async: true
../publications/_publication_file_types.yml
\ No newline at end of file
<div class="people panel">
{% assign grouped_people = include.people | group_by: 'position' | sort: 'name' %}
{% for group in grouped_people %}
{% assign position = group.name %}
{% assign id = group.name | replace:' ','-' %}
<div class="panel-heading">
<h6 class="panel-title">
<a data-toggle="collapse" href="#{{id}}" style="color:black">{{position}}s ↯</a>
</h6>
</div>
<div id="{{id}}" class="panel-collapse collapse">
{% for person in group.items %}
<div class="row">
<div class="col-sm-1" >
<a href="{{ person.url }}" >{% include person-photo-small.html %}</a>
</div>
<div class="col-sm-11">
<a href="{{ person.url }}" class="h6" style="color:black;font-weight:bold;">{{ person.firstname }} {{ person.lastname }}</a>
{{ person.content | remove: '<p>' | remove: '</p>' }}
</div>
</div>
<br/>
{% endfor %}
</div>
{% endfor %}
</div>
<footer class="site-footer">
<p>&copy; {{ site.time | date: "%Y" }} {{ site.copyright }}</p>
<p>&copy; {{ site.time | date: "%Y" }} {{ site.copyright }}<br />
<a href="https://www.imperial.ac.uk/about-the-site/privacy/">Privacy Notice</a> - <a href="{{ '/accessibility/' | relative_url }}">Accessibility</a></p>
</footer>
......@@ -14,6 +14,8 @@
<link rel="stylesheet" href="{{ "/assets/syntax.css" | prepend: site.baseurl }}">
{% if page.dataspy %}<link rel="stylesheet" href="{{ "/assets/fixed-sticky/fixedsticky.css" | prepend: site.baseurl }}">{% endif %}
{% feed_meta %}
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
......@@ -22,6 +24,5 @@
ga('create', 'UA-47856851-3', 'auto');
ga('send', 'pageview');
</script>
</head>
......@@ -2,15 +2,46 @@
<div class="site-masthead">
<div class="container">
<nav class="nav">
{% assign menu_items = site.pages | where:"menu",true | sort:"menu_order" %}
{% if menu_items.size > 1 %}
{% for item in menu_items %}
{% if item.title %}
<a class="nav-link {% if item.url == page.url %}active{% endif %}" href="{{ item.url | prepend: site.baseurl
}}">{{ item.title }}</a>
{% endif %}
{% for menu_index in (1..10) %}
{% assign menu_items = site.pages | where:"menu",true | where: "menu_order",menu_index | sort:"sub_menu_order" %}
{% if menu_items.size > 0 %}
{% if menu_items.first.parent_menu %}
{% assign check_url = menu_items.first.parent_menu | downcase | prepend: '/' | append: '/' %}
<li class="dropdown">
<a class="nav-link {% if page.url contains check_url %}active{% endif %} ">{{ menu_items.first.parent_menu }}</a>
<div class="dropdown-content">
{% for item in menu_items %}
<a class="nav-link {% if item.url == page.url %}active{% endif %}" href="{{ item.url | prepend: site.baseurl }}">{{ item.title }}</a>
{% endfor %}
</div>
</li>
{% else %}
{% for item in menu_items %}
<li><a class="nav-link {% if item.url == page.url %}active{% endif %}" href="{{ item.url | prepend: site.baseurl }}">{{ item.title }}</a></li>
{% endfor %}
{% endif %}
{% endif %}
{% endfor %}
{% endif %}
<!--{% assign menu_items = site.pages | where:"menu",true | sort:"menu_order" %}-->
<!--{% if menu_items.size > 1 %}-->
<!--{% for item in menu_items %}-->
<!--{% if item.title %}-->
<!--{% if item.parent_menu %}-->
<!--<li class="dropdown">-->
<!--<a class="nav-link dropbtn" href="#">{{ item.parent_menu }}</a>-->
<!--{% assign sub_menu_items = site.pages | where:"menu",true | sort:"menu_order" %}-->
<!--<div class="dropdown-content">-->
<!--<a class="nav-link" href="#">aaaaaaaa</a>-->
<!--<a class="nav-link" href="#">bbbbbbbb</a>-->
<!--</div>-->
<!--</li>-->
<!--{% else %}-->
<!--<li><a class="nav-link {% if item.url contains page.url %}active{% endif %}" href="{{ item.url | prepend: site.baseurl }}">{{ item.title }}</a></li>-->
<!--{% endif %}-->
<!--{% endif %}-->
<!--{% endfor %}-->
<!--{% endif %}-->
</nav>
</div>
</div>
......
{% unless include.max %}
{% assign include.max = site.posts | size %}
{% endunless %}
<div class="posts">
{% for post in site.posts limit:include.max %}
<li class="post-preview">
<h4><a href="{{ post.url }}">{{ post.title }}</a></h4>
<p>{{ post.date | date: "%b %-d, %Y" }}</p>
{{ post.excerpt }}
<p><a href="{{ post.url }}">more...</a></p>
</li>
{% endfor %}
</div>