mirror of
https://github.com/hacks-guide/Guide_Vita.git
synced 2024-11-26 19:20:30 +00:00
Initial Commit
Co-authored-by: Plailect <plailect@gmail.com> Co-authored-by: emiyl <nopanopey@gmail.com>
This commit is contained in:
commit
4c3d949c85
13
.editorconfig
Normal file
13
.editorconfig
Normal file
@ -0,0 +1,13 @@
|
||||
# editorconfig.org
|
||||
root = true
|
||||
|
||||
[*]
|
||||
indent_style = space
|
||||
indent_size = 2
|
||||
end_of_line = lf
|
||||
charset = utf-8
|
||||
trim_trailing_whitespace = true
|
||||
insert_final_newline = false
|
||||
|
||||
[*.md]
|
||||
trim_trailing_whitespace = false
|
5
.gitattributes
vendored
Normal file
5
.gitattributes
vendored
Normal file
@ -0,0 +1,5 @@
|
||||
_assets/css/vendor/* linguist-vendored
|
||||
_assets/js/plugins/* linguist-vendored
|
||||
_assets/js/vendor/* linguist-vendored
|
||||
assets/fonts/* linguist-vendored
|
||||
assets/js/vendor/* linguist-vendored
|
16
.gitignore
vendored
Normal file
16
.gitignore
vendored
Normal file
@ -0,0 +1,16 @@
|
||||
*.gem
|
||||
*.sublime-project
|
||||
*.sublime-workspace
|
||||
.bundle
|
||||
.DS_Store
|
||||
.jekyll-metadata
|
||||
.sass-cache
|
||||
_asset_bundler_cache
|
||||
_site
|
||||
codekit-config.json
|
||||
example/_site
|
||||
node_modules
|
||||
npm-debug.log*
|
||||
/vendor
|
||||
torrents
|
||||
Gemfile.lock
|
3
Gemfile
Normal file
3
Gemfile
Normal file
@ -0,0 +1,3 @@
|
||||
source "https://rubygems.org"
|
||||
gem 'jekyll-redirect-from'
|
||||
gemspec
|
21
LICENSE.txt
Normal file
21
LICENSE.txt
Normal file
@ -0,0 +1,21 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2017 Michael Rose
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
76
Rakefile
Normal file
76
Rakefile
Normal file
@ -0,0 +1,76 @@
|
||||
require "bundler/gem_tasks"
|
||||
require "jekyll"
|
||||
require "listen"
|
||||
|
||||
def listen_ignore_paths(base, options)
|
||||
[
|
||||
/_config\.ya?ml/,
|
||||
/_site/,
|
||||
/\.jekyll-metadata/
|
||||
]
|
||||
end
|
||||
|
||||
def listen_handler(base, options)
|
||||
site = Jekyll::Site.new(options)
|
||||
Jekyll::Command.process_site(site)
|
||||
proc do |modified, added, removed|
|
||||
t = Time.now
|
||||
c = modified + added + removed
|
||||
n = c.length
|
||||
relative_paths = c.map{ |p| Pathname.new(p).relative_path_from(base).to_s }
|
||||
print Jekyll.logger.message("Regenerating:", "#{relative_paths.join(", ")} changed... ")
|
||||
begin
|
||||
Jekyll::Command.process_site(site)
|
||||
puts "regenerated in #{Time.now - t} seconds."
|
||||
rescue => e
|
||||
puts "error:"
|
||||
Jekyll.logger.warn "Error:", e.message
|
||||
Jekyll.logger.warn "Error:", "Run jekyll build --trace for more information."
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
task :preview do
|
||||
base = Pathname.new('.').expand_path
|
||||
options = {
|
||||
"source" => base.join('test').to_s,
|
||||
"destination" => base.join('test/_site').to_s,
|
||||
"force_polling" => false,
|
||||
"serving" => true,
|
||||
"theme" => "minimal-mistakes-jekyll"
|
||||
}
|
||||
|
||||
options = Jekyll.configuration(options)
|
||||
|
||||
ENV["LISTEN_GEM_DEBUGGING"] = "1"
|
||||
listener = Listen.to(
|
||||
base.join("_data"),
|
||||
base.join("_includes"),
|
||||
base.join("_layouts"),
|
||||
base.join("_sass"),
|
||||
base.join("assets"),
|
||||
options["source"],
|
||||
:ignore => listen_ignore_paths(base, options),
|
||||
:force_polling => options['force_polling'],
|
||||
&(listen_handler(base, options))
|
||||
)
|
||||
|
||||
begin
|
||||
listener.start
|
||||
Jekyll.logger.info "Auto-regeneration:", "enabled for '#{options["source"]}'"
|
||||
|
||||
unless options['serving']
|
||||
trap("INT") do
|
||||
listener.stop
|
||||
puts " Halting auto-regeneration."
|
||||
exit 0
|
||||
end
|
||||
|
||||
loop { sleep 1000 }
|
||||
end
|
||||
rescue ThreadError
|
||||
# You pressed Ctrl-C, oh my!
|
||||
end
|
||||
|
||||
Jekyll::Commands::Serve.process(options)
|
||||
end
|
599
_config.yml
Normal file
599
_config.yml
Normal file
@ -0,0 +1,599 @@
|
||||
# Welcome to Jekyll!
|
||||
#
|
||||
# This config file is meant for settings that affect your entire site, values
|
||||
# which you are expected to set up once and rarely need to edit after that.
|
||||
# For technical reasons, this file is *NOT* reloaded automatically when you use
|
||||
# `jekyll serve`. If you change this file, please restart the server process.
|
||||
|
||||
minimal_mistakes_skin : "nord"
|
||||
|
||||
# Site Settings
|
||||
locale : "en-US"
|
||||
title : "Vita Hacks Guide"
|
||||
title_separator : "-"
|
||||
name : "Plailect, emiyl, & T3CHNOLOG1C"
|
||||
description : "Full HENkaku Ensō CFW Guide"
|
||||
url : "https://vita.hacks.guide" # the base hostname & protocol for your site e.g. "https://mmistakes.github.io"
|
||||
enforce_ssl : "vita.hacks.guide"
|
||||
baseurl : # the subpath of your site, e.g. "/blog"
|
||||
repository : "Plailect/Guide_Vita" # GitHub username/repo-name e.g. "mmistakes/minimal-mistakes"
|
||||
teaser : # filename of teaser fallback teaser image placed in /images/, .e.g. "500x300.png"
|
||||
breadcrumbs : # true, false (default)
|
||||
words_per_minute : 200
|
||||
comments:
|
||||
provider : # false (default), "disqus", "discourse", "facebook", "google-plus", "staticman", "custom"
|
||||
disqus:
|
||||
shortname : # https://help.disqus.com/customer/portal/articles/466208-what-s-a-shortname-
|
||||
discourse:
|
||||
server : # https://meta.discourse.org/t/embedding-discourse-comments-via-javascript/31963 , e.g.: meta.discourse.org
|
||||
facebook:
|
||||
# https://developers.facebook.com/docs/plugins/comments
|
||||
appid :
|
||||
num_posts : # 5 (default)
|
||||
colorscheme : # "light" (default), "dark"
|
||||
staticman:
|
||||
allowedFields : ['name', 'email', 'url', 'message']
|
||||
branch : "master"
|
||||
commitMessage : "New comment."
|
||||
filename : comment-{@timestamp}
|
||||
format : "yml"
|
||||
moderation : true
|
||||
path : "_data/comments/{options.slug}"
|
||||
requiredFields : ['name', 'email', 'message']
|
||||
transforms:
|
||||
email : "md5"
|
||||
generatedFields:
|
||||
date:
|
||||
type : "date"
|
||||
options:
|
||||
format : "iso8601" # "iso8601" (default), "timestamp-seconds", "timestamp-milliseconds"
|
||||
atom_feed:
|
||||
path : # blank (default) uses feed.xml
|
||||
|
||||
# SEO Related
|
||||
google_site_verification : jVXoPK_-qzKJp4SScnZYpOIX3yDXfGnAoTBJYixUOwg
|
||||
bing_site_verification : F3532011519E308583A0A2CAF2DD69E8
|
||||
alexa_site_verification :
|
||||
yandex_site_verification :
|
||||
|
||||
# Social Sharing
|
||||
twitter:
|
||||
username :
|
||||
facebook:
|
||||
username :
|
||||
app_id :
|
||||
publisher :
|
||||
og_image : # Open Graph/Twitter default site image
|
||||
# For specifying social profiles
|
||||
# - https://developers.google.com/structured-data/customize/social-profiles
|
||||
social:
|
||||
type : # Person or Organization (defaults to Person)
|
||||
name : # If the user or organization name differs from the site's name
|
||||
links: # An array of links to social media profiles
|
||||
|
||||
# Analytics
|
||||
analytics:
|
||||
provider : "google-universal" # false (default), "google", "google-universal", "custom"
|
||||
google:
|
||||
tracking_id : "UA-86465881-7"
|
||||
|
||||
|
||||
# Site Author
|
||||
author:
|
||||
name : "Plailect"
|
||||
avatar : "bio-photo.png"
|
||||
bio : "Wii U Hacker"
|
||||
location : "Nullsec"
|
||||
email : "Plailect@gmail.com"
|
||||
uri :
|
||||
bitbucket :
|
||||
codepen :
|
||||
dribbble :
|
||||
flickr :
|
||||
facebook :
|
||||
foursquare :
|
||||
github : "Plailect"
|
||||
google_plus :
|
||||
keybase :
|
||||
instagram :
|
||||
lastfm : "Plailect"
|
||||
linkedin :
|
||||
pinterest :
|
||||
soundcloud :
|
||||
stackoverflow : # "123456/username" (the last part of your profile url, e.g. http://stackoverflow.com/users/123456/username)
|
||||
steam :
|
||||
tumblr :
|
||||
twitter : "Plailect"
|
||||
vine :
|
||||
weibo :
|
||||
xing :
|
||||
youtube :
|
||||
|
||||
|
||||
# Reading Files
|
||||
include:
|
||||
- .htaccess
|
||||
- _pages
|
||||
exclude: [
|
||||
"*.sublime-project",
|
||||
"*.sublime-workspace",
|
||||
vendor,
|
||||
.asset-cache,
|
||||
.bundle,
|
||||
.jekyll-assets-cache,
|
||||
.sass-cache,
|
||||
assets/js/plugins,
|
||||
assets/js/_main.js,
|
||||
assets/js/vendor,
|
||||
Capfile,
|
||||
CHANGELOG,
|
||||
config,
|
||||
Gemfile,
|
||||
Gruntfile.js,
|
||||
gulpfile.js,
|
||||
LICENSE,
|
||||
log,
|
||||
node_modules,
|
||||
package.json,
|
||||
Rakefile,
|
||||
README,
|
||||
tmp,
|
||||
_pages/af_ZA,
|
||||
_pages/ar_SA,
|
||||
_pages/ca_ES,
|
||||
_pages/cs_CZ,
|
||||
_pages/da_DK,
|
||||
_pages/de_DE,
|
||||
_pages/el_GR,
|
||||
_pages/en_PT,
|
||||
# _pages/en_US,
|
||||
_pages/es_EM,
|
||||
_pages/es_ES,
|
||||
_pages/fi_FI,
|
||||
_pages/fr_FR,
|
||||
_pages/he_IL,
|
||||
_pages/hu_HU,
|
||||
_pages/id_ID,
|
||||
_pages/it_IT,
|
||||
_pages/ja_JP,
|
||||
_pages/ko_KR,
|
||||
_pages/ms_MY,
|
||||
_pages/no_NO,
|
||||
_pages/nl_NL,
|
||||
_pages/pl_PL,
|
||||
_pages/pt_BR,
|
||||
_pages/pt_PT,
|
||||
_pages/ro_RO,
|
||||
_pages/ru_RU,
|
||||
_pages/sr_SP,
|
||||
_pages/sv_SE,
|
||||
_pages/th_TH,
|
||||
_pages/tr_TR,
|
||||
_pages/uk_UA,
|
||||
_pages/vi_VN,
|
||||
_pages/zh_CN,
|
||||
_pages/zh_TW,
|
||||
]
|
||||
|
||||
keep_files:
|
||||
- .git
|
||||
- .svn
|
||||
encoding: "utf-8"
|
||||
markdown_ext: "markdown,mkdown,mkdn,mkd,md,txt"
|
||||
|
||||
|
||||
# Conversion
|
||||
markdown: kramdown
|
||||
highlighter: rouge
|
||||
lsi: false
|
||||
excerpt_separator: "\n\n"
|
||||
incremental: false
|
||||
|
||||
|
||||
# Markdown Processing
|
||||
kramdown:
|
||||
input: GFM
|
||||
hard_wrap: false
|
||||
auto_ids: true
|
||||
footnote_nr: 1
|
||||
entity_output: as_char
|
||||
toc_levels: 1..6
|
||||
smart_quotes: lsquo,rsquo,ldquo,rdquo
|
||||
enable_coderay: false
|
||||
|
||||
|
||||
# Sass/SCSS
|
||||
sass:
|
||||
sass_dir: _sass
|
||||
style: compressed # http://sass-lang.com/documentation/file.SASS_REFERENCE.html#output_style
|
||||
|
||||
# Plugins
|
||||
plugins:
|
||||
- jekyll-paginate
|
||||
- jekyll-sitemap
|
||||
- jekyll-gist
|
||||
- jekyll-feed
|
||||
- jemoji
|
||||
- jekyll-redirect-from
|
||||
|
||||
# mimic GitHub Pages with --safe
|
||||
whitelist:
|
||||
- jekyll-paginate
|
||||
- jekyll-sitemap
|
||||
- jekyll-gist
|
||||
- jekyll-feed
|
||||
- jemoji
|
||||
|
||||
|
||||
# Archives
|
||||
# Type
|
||||
# - GitHub Pages compatible archive pages built with Liquid ~> type: liquid (default)
|
||||
# - Jekyll Archives plugin archive pages ~> type: jekyll-archives
|
||||
# Path (examples)
|
||||
# - Archive page should exist at path when using Liquid method or you can
|
||||
# expect broken links (especially with breadcrumbs enabled)
|
||||
# - <base_path>/tags/my-awesome-tag/index.html ~> path: /tags/
|
||||
# - <base_path/categories/my-awesome-category/index.html ~> path: /categories/
|
||||
# - <base_path/my-awesome-category/index.html ~> path: /
|
||||
category_archive:
|
||||
type: liquid
|
||||
path: /categories/
|
||||
tag_archive:
|
||||
type: liquid
|
||||
path: /tags/
|
||||
# https://github.com/jekyll/jekyll-archives
|
||||
# jekyll-archives:
|
||||
# enabled:
|
||||
# - categories
|
||||
# - tags
|
||||
# layouts:
|
||||
# category: archive-taxonomy
|
||||
# tag: archive-taxonomy
|
||||
# permalinks:
|
||||
# category: /categories/:name/
|
||||
# tag: /tags/:name/
|
||||
|
||||
|
||||
# HTML Compression
|
||||
# - http://jch.penibelst.de/
|
||||
compress_html:
|
||||
clippings: all
|
||||
ignore:
|
||||
envs: development
|
||||
|
||||
# Defaults
|
||||
defaults:
|
||||
# _pages
|
||||
- scope:
|
||||
path: ""
|
||||
type: pages
|
||||
values:
|
||||
layout: single
|
||||
author_profile: false
|
||||
sidebar: true
|
||||
- scope:
|
||||
path: "_pages/en_US"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /:basename:output_ext
|
||||
lang: en
|
||||
- scope:
|
||||
path: "_pages/es_ES"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /es_ES/:basename:output_ext
|
||||
lang: es
|
||||
- scope:
|
||||
path: "_pages/fi_FI"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /fi_FI/:basename:output_ext
|
||||
lang: fi
|
||||
- scope:
|
||||
path: "_pages/fr_FR"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /fr_FR/:basename:output_ext
|
||||
lang: fr
|
||||
- scope:
|
||||
path: "_pages/he_IL"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /he_IL/:basename:output_ext
|
||||
lang: he
|
||||
- scope:
|
||||
path: "_pages/hu_HU"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /hu_HU/:basename:output_ext
|
||||
lang: hu
|
||||
- scope:
|
||||
path: "_pages/id_ID"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /id_ID/:basename:output_ext
|
||||
lang: id
|
||||
- scope:
|
||||
path: "_pages/it_IT"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /it_IT/:basename:output_ext
|
||||
lang: it
|
||||
- scope:
|
||||
path: "_pages/ja_JP"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ja_JP/:basename:output_ext
|
||||
lang: ja
|
||||
- scope:
|
||||
path: "_pages/ko_KR"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ko_KR/:basename:output_ext
|
||||
lang: ko
|
||||
- scope:
|
||||
path: "_pages/ms_MY"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ms_MY/:basename:output_ext
|
||||
lang: ms
|
||||
- scope:
|
||||
path: "_pages/no_NO"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /no_NO/:basename:output_ext
|
||||
lang: no-NO
|
||||
- scope:
|
||||
path: "_pages/nl_NL"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /nl_NL/:basename:output_ext
|
||||
lang: nl
|
||||
- scope:
|
||||
path: "_pages/pl_PL"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pl_PL/:basename:output_ext
|
||||
lang: pl
|
||||
- scope:
|
||||
path: "_pages/pt_BR"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pt_BR/:basename:output_ext
|
||||
lang: pt-BR
|
||||
- scope:
|
||||
path: "_pages/pt_PT"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pt_PT/:basename:output_ext
|
||||
lang: pt-PT
|
||||
- scope:
|
||||
path: "_pages/ro_RO"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ro_RO/:basename:output_ext
|
||||
lang: ro
|
||||
- scope:
|
||||
path: "_pages/ru_RU"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ru_RU/:basename:output_ext
|
||||
lang: ru
|
||||
- scope:
|
||||
path: "_pages/sr_SP"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /sr_SP/:basename:output_ext
|
||||
lang: sr
|
||||
- scope:
|
||||
path: "_pages/sv_SE"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /sv_SE/:basename:output_ext
|
||||
lang: sv
|
||||
- scope:
|
||||
path: "_pages/th_TH"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /th_TH/:basename:output_ext
|
||||
lang: th
|
||||
- scope:
|
||||
path: "_pages/tr_TR"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /tr_TR/:basename:output_ext
|
||||
lang: tr
|
||||
- scope:
|
||||
path: "_pages/uk_UA"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /uk_UA/:basename:output_ext
|
||||
lang: uk
|
||||
- scope:
|
||||
path: "_pages/vi_VN"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /vi_VN/:basename:output_ext
|
||||
lang: vi
|
||||
- scope:
|
||||
path: "_pages/zh_CN"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /zh_CN/:basename:output_ext
|
||||
lang: zh-Hans
|
||||
- scope:
|
||||
path: "_pages/zh_TW"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /zh_TW/:basename:output_ext
|
||||
lang: zh-Hant
|
||||
- scope:
|
||||
path: "_pages/af_ZA/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /af_ZA/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ar_SA/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ar_SA/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ca_ES/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ca_ES/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/cs_CZ/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /cs_CZ/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/da_DK/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /da_DK/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/de_DE/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /de_DE/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/el_GR/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /el_GR/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/en_PT/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /en_PT/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/en_US/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /index:output_ext
|
||||
- scope:
|
||||
path: "_pages/es_ES/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /es_ES/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/fi_FI/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /fi_FI/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/fr_FR/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /fr_FR/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/he_IL/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /he_IL/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/hu_HU/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /hu_HU/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/id_ID/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /id_ID/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/it_IT/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /it_IT/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ja_JP/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ja_JP/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ko_KR/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ko_KR/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ms_MY/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ms_MY/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/no_NO/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /no_NO/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/nl_NL/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /nl_NL/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/pl_PL/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pl_PL/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/pt_BR/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pt_BR/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/pt_PT/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /pt_PT/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ro_RO/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ro_RO/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/ru_RU/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /ru_RU/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/sr_SP/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /sr_SP/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/sv_SE/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /sv_SE/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/th_TH/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /th_TH/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/tr_TR/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /tr_TR/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/uk_UA/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /uk_UA/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/vi_VN/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /vi_VN/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/zh_CN/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /zh_CN/index:output_ext
|
||||
- scope:
|
||||
path: "_pages/zh_TW/home.txt"
|
||||
type: pages
|
||||
values:
|
||||
permalink: /zh_TW/index:output_ext
|
81
_data/navigation/en_US.yml
Normal file
81
_data/navigation/en_US.yml
Normal file
@ -0,0 +1,81 @@
|
||||
---
|
||||
main:
|
||||
-
|
||||
title: Home
|
||||
url: /
|
||||
-
|
||||
title: FAQ
|
||||
url: faq
|
||||
-
|
||||
title: Donations
|
||||
url: donations
|
||||
-
|
||||
title: Credits
|
||||
url: credits
|
||||
-
|
||||
title: Updating to 3.65 (Ensō)
|
||||
url: updating-to-3.65-(enso)
|
||||
-
|
||||
title: Troubleshooting
|
||||
url: troubleshooting
|
||||
-
|
||||
title: Adrenaline
|
||||
url: adrenaline
|
||||
-
|
||||
title: StorageMgr
|
||||
url: storagemgr
|
||||
-
|
||||
title: Site Navigation
|
||||
url: site-navigation
|
||||
bottom:
|
||||
-
|
||||
title: For support in English, ask for help at <a href="https://discord.gg/JXEKeg6">Vita Hacking on Discord</a>.
|
||||
-
|
||||
title: If you appreciate this guide, we accept <a href="donations">Donations</a>.
|
||||
footer:
|
||||
-
|
||||
title: Source
|
||||
-
|
||||
title: Site Navigation
|
||||
-
|
||||
title: Why Ads?
|
||||
sidebar_title:
|
||||
-
|
||||
title: Overall Progress
|
||||
sidebar_pages:
|
||||
-
|
||||
title: Home
|
||||
url: /
|
||||
-
|
||||
title: Get Started
|
||||
url: get-started
|
||||
-
|
||||
title: Updating to 3.60
|
||||
url: updating-to-3.60
|
||||
-
|
||||
title: Updating to 3.65
|
||||
url: updating-to-3.65
|
||||
-
|
||||
title: Installing HENkaku
|
||||
url: installing-henkaku
|
||||
-
|
||||
title: Installing Ensō (3.65)
|
||||
url: installing-enso-(3.65)
|
||||
-
|
||||
title: Installing h-encore
|
||||
url: installing-h-encore
|
||||
-
|
||||
title: Multiple Options
|
||||
url: multiple-options
|
||||
-
|
||||
title: Installing h-encore (Linux / Mac)
|
||||
url: installing-h-encore-(linux-mac)
|
||||
-
|
||||
title: Installing h-encore (Windows)
|
||||
url: installing-h-encore-(windows)
|
||||
-
|
||||
title: Configuring h-encore
|
||||
url: configuring-h-encore
|
||||
-
|
||||
title: Finalizing Setup
|
||||
url: finalizing-setup
|
416
_data/ui-text.yml
Normal file
416
_data/ui-text.yml
Normal file
@ -0,0 +1,416 @@
|
||||
# User interface text and labels
|
||||
|
||||
# English (default)
|
||||
# -----------------
|
||||
en: &DEFAULT_EN
|
||||
page : "Page"
|
||||
pagination_previous : "Previous"
|
||||
pagination_next : "Next"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label : "Toggle Menu"
|
||||
toc_label : "On This Page"
|
||||
ext_link_label : "Direct Link"
|
||||
less_than : "less than"
|
||||
minute_read : "minute read"
|
||||
share_on_label : "Share on"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categories:"
|
||||
date_label : "Updated:"
|
||||
comments_label : "Leave a Comment"
|
||||
comments_title : "Comments"
|
||||
more_label : "Learn More"
|
||||
related_label : "You May Also Enjoy"
|
||||
follow_label : "Follow:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Website"
|
||||
email_label : "Email"
|
||||
recent_posts : "Recent Posts"
|
||||
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
|
||||
comment_form_info : "Your email address will not be published. Required fields are marked"
|
||||
comment_form_comment_label : "Comment"
|
||||
comment_form_md_info : "Markdown is supported."
|
||||
comment_form_name_label : "Name"
|
||||
comment_form_email_label : "Email address"
|
||||
comment_form_website_label : "Website (optional)"
|
||||
comment_btn_submit : "Submit Comment"
|
||||
comment_btn_submitted : "Submitted"
|
||||
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
|
||||
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
|
||||
loading_label : "Loading..."
|
||||
en-US:
|
||||
<<: *DEFAULT_EN
|
||||
en-CA:
|
||||
<<: *DEFAULT_EN
|
||||
en-GB:
|
||||
<<: *DEFAULT_EN
|
||||
en-AU:
|
||||
<<: *DEFAULT_EN
|
||||
|
||||
# Spanish
|
||||
# --------------
|
||||
es: &DEFAULT_ES
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Siguiente"
|
||||
breadcrumb_home_label : "Inicio"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Contenidos"
|
||||
ext_link_label : "Enlace"
|
||||
less_than : "menos de"
|
||||
minute_read : "minuto de lectura"
|
||||
share_on_label : "Compartir"
|
||||
meta_label :
|
||||
tags_label : "Etiquetas:"
|
||||
categories_label : "Categorías:"
|
||||
date_label : "Actualizado:"
|
||||
comments_label : "Comentar"
|
||||
comments_title :
|
||||
more_label : "Ver más"
|
||||
related_label : "Podrías ver también"
|
||||
follow_label : "Seguir:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Sitio web"
|
||||
email_label : "Email"
|
||||
recent_posts : "Entradas recientes"
|
||||
undefined_wpm : "Parametro words_per_minute (Palabras por minuto) no definido en _config.yml"
|
||||
comment_form_info :
|
||||
comment_form_comment_label :
|
||||
comment_form_md_info :
|
||||
comment_form_name_label :
|
||||
comment_form_email_label :
|
||||
comment_form_website_label :
|
||||
comment_btn_submit :
|
||||
comment_btn_submitted :
|
||||
comment_success_msg :
|
||||
comment_error_msg :
|
||||
loading_label :
|
||||
es-ES:
|
||||
<<: *DEFAULT_ES
|
||||
es-CO:
|
||||
<<: *DEFAULT_ES
|
||||
|
||||
# French
|
||||
# -----------------
|
||||
fr: &DEFAULT_FR
|
||||
page : "Page"
|
||||
pagination_previous : "Précédent"
|
||||
pagination_next : "Suivant"
|
||||
breadcrumb_home_label : "Accueil"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Sur cette page"
|
||||
ext_link_label : "Lien direct"
|
||||
less_than : "plus petit que"
|
||||
minute_read : "minute de lecture"
|
||||
share_on_label : "Partager sur"
|
||||
meta_label :
|
||||
tags_label : "Tags :"
|
||||
categories_label : "Catégories :"
|
||||
date_label : "Mis à jour :"
|
||||
comments_label : "Laisser un commentaire"
|
||||
comments_title :
|
||||
more_label : "Lire plus"
|
||||
related_label : "Vous pourriez aimer"
|
||||
follow_label : "Suivez moi"
|
||||
feed_label : "Flux"
|
||||
powered_by : "Propulsé par"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Posts récents"
|
||||
undefined_wpm : "Le paramètre words_per_minute n'est pas défini dans _config.yml"
|
||||
comments_title : "Commentaires"
|
||||
comment_form_info : "Votre adresse email ne sera pas visible. Les champs obligatoires sont marqués"
|
||||
comment_form_comment_label : "Commentaire"
|
||||
comment_form_md_info : "Markdown est supporté."
|
||||
comment_form_name_label : "Nom"
|
||||
comment_form_email_label : "Adresse mail"
|
||||
comment_form_website_label : "Site web (optionnel)"
|
||||
comment_btn_submit : "Envoyer"
|
||||
comment_btn_submitted : "Envoyé"
|
||||
comment_success_msg : "Merci pour votre comentaire, il sera visible sur le site une fois approuvé."
|
||||
comment_error_msg : "Désolé, une erreur est survenue lors de la soumission. Vérifiez que les champs obligatoires ont été remplis et réessayez."
|
||||
loading_label : "Chargement..."
|
||||
fr-FR:
|
||||
<<: *DEFAULT_FR
|
||||
fr-BE:
|
||||
<<: *DEFAULT_FR
|
||||
fr-CH:
|
||||
<<: *DEFAULT_FR
|
||||
|
||||
# Turkish
|
||||
# -----------------
|
||||
tr: &DEFAULT_TR
|
||||
page : "Sayfa"
|
||||
pagination_previous : "Önceki"
|
||||
pagination_next : "Sonraki"
|
||||
breadcrumb_home_label : "Ana Sayfa"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "İçindekiler"
|
||||
ext_link_label : "Doğrudan Bağlantı"
|
||||
less_than : "Şu süreden az: "
|
||||
minute_read : "dakika tahmini okuma süresi"
|
||||
share_on_label : "Paylaş"
|
||||
meta_label :
|
||||
tags_label : "Etiketler:"
|
||||
categories_label : "Kategoriler:"
|
||||
date_label : "Güncelleme tarihi:"
|
||||
comments_label : "Yorum yapın"
|
||||
comments_title : "Yorumlar"
|
||||
more_label : "Daha fazlasını öğrenin"
|
||||
related_label : "Bunlar ilginizi çekebilir:"
|
||||
follow_label : "Takip et:"
|
||||
feed_label : "RSS"
|
||||
powered_by : "Emeği geçenler: "
|
||||
website_label : "Web sayfası"
|
||||
email_label : "E-posta"
|
||||
recent_posts : "Son yazılar"
|
||||
undefined_wpm : "_config.yml dosyasında tanımlanmamış words_per_minute parametresi"
|
||||
comment_form_info : "Email adresiniz gösterilmeyecektir. Zorunlu alanlar işaretlenmiştir"
|
||||
comment_form_comment_label : "Yorumunuz"
|
||||
comment_form_md_info : "Markdown desteklenmektedir."
|
||||
comment_form_name_label : "Adınız"
|
||||
comment_form_email_label : "Email adresiniz"
|
||||
comment_form_website_label : "Websiteniz (opsiyonel)"
|
||||
comment_btn_submit : "Yorum Yap"
|
||||
comment_btn_submitted : "Gönderildi"
|
||||
comment_success_msg : "Yorumunuz için teşekkürler! Yorumunuz onaylandıktan sonra sitede gösterilecektir."
|
||||
comment_error_msg : "Maalesef bir hata oluştu. Lütfen zorunlu olan tüm alanları doldurduğunuzdan emin olun ve sonrasında tekrar deneyin."
|
||||
loading_label : "Yükleniyor..."
|
||||
tr-TR:
|
||||
<<: *DEFAULT_TR
|
||||
|
||||
# Portuguese
|
||||
# -----------------
|
||||
pt: &DEFAULT_PT
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Seguinte"
|
||||
breadcrumb_home_label : "Início"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Nesta Página"
|
||||
ext_link_label : "Link Direto"
|
||||
less_than : "menos de"
|
||||
minute_read : "minutos de leitura"
|
||||
share_on_label : "Partilhar no"
|
||||
meta_label :
|
||||
tags_label : "Etiquetas:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado:"
|
||||
comments_label : "Deixe um Comentário"
|
||||
comments_title : "Comentários"
|
||||
more_label : "Saber mais"
|
||||
related_label : "Também pode gostar de"
|
||||
follow_label : "Siga:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Artigos Recentes"
|
||||
undefined_wpm : "Parâmetro words_per_minute não definido em _config.yml"
|
||||
comment_form_info : "O seu endereço email não será publicado. Os campos obrigatórios estão assinalados"
|
||||
comment_form_comment_label : "Comentário"
|
||||
comment_form_md_info : "Markdown é suportado."
|
||||
comment_form_name_label : "Nome"
|
||||
comment_form_email_label : "Endereço Email"
|
||||
comment_form_website_label : "Site (opcional)"
|
||||
comment_btn_submit : "Sumbeter Comentário"
|
||||
comment_btn_submitted : "Submetido"
|
||||
comment_success_msg : "Obrigado pelo seu comentário! Será visível no site logo que aprovado."
|
||||
comment_error_msg : "Lamento, ocorreu um erro na sua submissão. Por favor verifique se todos os campos obrigatórios estão corretamente preenchidos e tente novamente."
|
||||
loading_label : "A carregar..."
|
||||
# Brazilian Portuguese
|
||||
pt-BR:
|
||||
page : "Página"
|
||||
pagination_previous : "Anterior"
|
||||
pagination_next : "Próxima"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Nesta página"
|
||||
ext_link_label : "Link direto"
|
||||
less_than : "meno que"
|
||||
minute_read : "minutos de leitura"
|
||||
share_on_label : "Compartilhe em"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorias:"
|
||||
date_label : "Atualizado em:"
|
||||
comments_label : "Deixe um comentário"
|
||||
comments_title :
|
||||
more_label : "Aprenda Mais"
|
||||
related_label : "Você Talvez Goste Também"
|
||||
follow_label : "Acompanhe em"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Feito com"
|
||||
website_label : "Site"
|
||||
email_label : "Email"
|
||||
recent_posts : "Postagens recentes"
|
||||
undefined_wpm : "Parâmetro indefinido em word_per_minute no _config.yml"
|
||||
comment_form_info :
|
||||
comment_form_comment_label :
|
||||
comment_form_md_info :
|
||||
comment_form_name_label :
|
||||
comment_form_email_label :
|
||||
comment_form_website_label :
|
||||
comment_btn_submit :
|
||||
comment_btn_submitted :
|
||||
comment_success_msg :
|
||||
comment_error_msg :
|
||||
loading_label :
|
||||
pt-PT:
|
||||
<<: *DEFAULT_PT
|
||||
|
||||
# Italian
|
||||
# -----------------
|
||||
it: &DEFAULT_IT
|
||||
page : "Pagina"
|
||||
pagination_previous : "Precedente"
|
||||
pagination_next : "Prossima"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Indice della pagina"
|
||||
ext_link_label : "Link"
|
||||
less_than : "meno di"
|
||||
minute_read : "minuto/i di lettura"
|
||||
share_on_label : "Condividi"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Categorie:"
|
||||
date_label : "Aggiornato:"
|
||||
comments_label : "Scrivi un commento"
|
||||
comments_title :
|
||||
more_label : "Scopri di più"
|
||||
related_label : "Potrebbe Piacerti Anche"
|
||||
follow_label : "Segui:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Website"
|
||||
email_label : "Email"
|
||||
recent_posts : "Articoli Recenti"
|
||||
undefined_wpm : "Parametro words_per_minute non definito in _config.yml"
|
||||
comment_form_info : "Il tuo indirizzo email non sarà pubblicato. Sono segnati i campi obbligatori"
|
||||
comment_form_comment_label : "Commenta"
|
||||
comment_form_md_info : "Il linguaggio Markdown è supportato"
|
||||
comment_form_name_label : "Nome"
|
||||
comment_form_email_label : "Indirizzo email"
|
||||
comment_form_website_label : "Sito Web (opzionale)"
|
||||
comment_btn_submit : "Invia commento"
|
||||
comment_btn_submitted : "Inviato"
|
||||
comment_success_msg : "Grazie per il tuo commento! Verrà visualizzato nel sito una volta che sarà approvato."
|
||||
comment_error_msg : "C'è stato un errore con il tuo invio. Assicurati che tutti i campi richiesti siano stati completati e riprova."
|
||||
loading_label : "Caricamento..."
|
||||
it-IT:
|
||||
<<: *DEFAULT_IT
|
||||
|
||||
# Chinese (zh-CN Chinese - China)
|
||||
# -----------------
|
||||
zh: &DEFAULT_ZH
|
||||
page : "页面"
|
||||
pagination_previous : "向前"
|
||||
pagination_next : "向后"
|
||||
breadcrumb_home_label : "首页"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "在本页上"
|
||||
ext_link_label : "直接链接"
|
||||
less_than : "少于"
|
||||
minute_read : "分钟 阅读"
|
||||
share_on_label : "分享"
|
||||
meta_label :
|
||||
tags_label : "标签:"
|
||||
categories_label : "分类:"
|
||||
date_label : "最新的:"
|
||||
comments_label : "留下评论"
|
||||
comments_title : "评论"
|
||||
more_label : "了解更多"
|
||||
related_label : "猜您还喜欢"
|
||||
follow_label : "关注:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "网站"
|
||||
email_label : "Email"
|
||||
recent_posts : "最新文章"
|
||||
undefined_wpm : "Undefined parameter words_per_minute at _config.yml"
|
||||
comment_form_info : "Your email address will not be published. Required fields are marked"
|
||||
comment_form_comment_label : "Comment"
|
||||
comment_form_md_info : "Markdown is supported."
|
||||
comment_form_name_label : "Name"
|
||||
comment_form_email_label : "Email address"
|
||||
comment_form_website_label : "Website (optional)"
|
||||
comment_btn_submit : "Submit Comment"
|
||||
comment_btn_submitted : "Submitted"
|
||||
comment_success_msg : "Thanks for your comment! It will show on the site once it has been approved."
|
||||
comment_error_msg : "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again."
|
||||
loading_label : "Loading..."
|
||||
zh-CN:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-HK:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-SG:
|
||||
<<: *DEFAULT_ZH
|
||||
zh-TW:
|
||||
<<: *DEFAULT_ZH
|
||||
|
||||
# German / Deutsch
|
||||
# -----------------
|
||||
de: &DEFAULT_DE
|
||||
page : "Seite"
|
||||
pagination_previous : "Vorherige"
|
||||
pagination_next : "Nächste"
|
||||
breadcrumb_home_label : "Home"
|
||||
breadcrumb_separator : "/"
|
||||
menu_label :
|
||||
toc_label : "Auf dieser Seite"
|
||||
ext_link_label : "Direkter Link"
|
||||
less_than : "weniger als"
|
||||
minute_read : "Minuten zum lesen"
|
||||
share_on_label : "Teilen auf"
|
||||
meta_label :
|
||||
tags_label : "Tags:"
|
||||
categories_label : "Kategorien:"
|
||||
date_label : "Aktualisiert:"
|
||||
comments_label : "Hinterlassen sie einen Kommentar"
|
||||
comments_title : "Kommentare"
|
||||
more_label : "Mehr anzeigen"
|
||||
related_label : "Ihnen gefällt vielleicht auch"
|
||||
follow_label : "Folgen:"
|
||||
feed_label : "Feed"
|
||||
powered_by : "Powered by"
|
||||
website_label : "Webseite"
|
||||
email_label : "E-Mail"
|
||||
recent_posts : "Aktuelle Beiträge"
|
||||
undefined_wpm : "Undefinierter Parameter words_per_minute in _config.yml"
|
||||
comment_form_info : "Ihre E-Mail Adresse wird nicht veröffentlicht. Benötigte Felder sind markiert"
|
||||
comment_form_comment_label : "Kommentar"
|
||||
comment_form_md_info : "Markdown wird unterstützt."
|
||||
comment_form_name_label : "Name"
|
||||
comment_form_email_label : "E-Mail Addresse"
|
||||
comment_form_website_label : "Webseite (optional)"
|
||||
comment_btn_submit : "Kommentar absenden"
|
||||
comment_btn_submitted : "Versendet"
|
||||
comment_success_msg : "Danke für ihren Kommentar! Er wird auf der Seite angezeigt, nachdem er geprüft wurde."
|
||||
comment_error_msg : "Entschuldigung, es gab einen Fehler. Bitte füllen sie alle benötigten Felder aus und versuchen sie es erneut."
|
||||
loading_label : "Lade..."
|
||||
de-DE:
|
||||
<<: *DEFAULT_DE
|
||||
de-AT:
|
||||
<<: *DEFAULT_DE
|
||||
de-CH:
|
||||
<<: *DEFAULT_DE
|
||||
de-BE:
|
||||
<<: *DEFAULT_DE
|
||||
de-LI:
|
||||
<<: *DEFAULT_DE
|
||||
de-LU:
|
||||
<<: *DEFAULT_DE
|
||||
|
||||
# Another locale
|
||||
# --------------
|
3
_includes/analytics-providers/custom.html
Normal file
3
_includes/analytics-providers/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom analytics snippet -->
|
||||
|
||||
<!-- end custom analytics snippet -->
|
9
_includes/analytics-providers/google-universal.html
Normal file
9
_includes/analytics-providers/google-universal.html
Normal file
@ -0,0 +1,9 @@
|
||||
<script>
|
||||
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
|
||||
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
|
||||
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
|
||||
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
|
||||
|
||||
ga('create', '{{ site.analytics.google.tracking_id }}', 'auto');
|
||||
ga('send', 'pageview');
|
||||
</script>
|
11
_includes/analytics-providers/google.html
Normal file
11
_includes/analytics-providers/google.html
Normal file
@ -0,0 +1,11 @@
|
||||
<script type="text/javascript">
|
||||
var _gaq = _gaq || [];
|
||||
_gaq.push(['_setAccount', '{{ site.analytics.google.tracking_id }}']);
|
||||
_gaq.push(['_trackPageview']);
|
||||
|
||||
(function() {
|
||||
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
|
||||
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
|
||||
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
|
||||
})();
|
||||
</script>
|
12
_includes/analytics.html
Normal file
12
_includes/analytics.html
Normal file
@ -0,0 +1,12 @@
|
||||
{% if site.analytics.provider and page.analytics != false %}
|
||||
|
||||
{% case site.analytics.provider %}
|
||||
{% when "google" %}
|
||||
{% include /analytics-providers/google.html %}
|
||||
{% when "google-universal" %}
|
||||
{% include /analytics-providers/google-universal.html %}
|
||||
{% when "custom" %}
|
||||
{% include /analytics-providers/custom.html %}
|
||||
{% endcase %}
|
||||
|
||||
{% endif %}
|
38
_includes/archive-single.html
Normal file
38
_includes/archive-single.html
Normal file
@ -0,0 +1,38 @@
|
||||
{% if post.header.teaser %}
|
||||
{% capture teaser %}{{ post.header.teaser }}{% endcapture %}
|
||||
{% else %}
|
||||
{% assign teaser = site.teaser %}
|
||||
{% endif %}
|
||||
|
||||
{% if post.id %}
|
||||
{% assign title = post.title | markdownify | remove: "<p>" | remove: "</p>" %}
|
||||
{% else %}
|
||||
{% assign title = post.title %}
|
||||
{% endif %}
|
||||
|
||||
<div class="{{ include.type | default: "list" }}__item">
|
||||
<article class="archive__item" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if include.type == "grid" and teaser %}
|
||||
<div class="archive__item-teaser">
|
||||
<img src=
|
||||
{% if teaser contains "://" %}
|
||||
"{{ teaser }}"
|
||||
{% else %}
|
||||
"{{ teaser | absolute_url }}"
|
||||
{% endif %}
|
||||
alt="">
|
||||
</div>
|
||||
{% endif %}
|
||||
<h2 class="archive__item-title" itemprop="headline">
|
||||
{% if post.link %}
|
||||
<a href="{{ post.link }}">{{ title }}</a> <a href="{{ post.url | absolute_url }}" rel="permalink"><i class="fa fa-link" aria-hidden="true" title="permalink"></i><span class="sr-only">Permalink</span></a>
|
||||
{% else %}
|
||||
<a href="{{ post.url | absolute_url }}" rel="permalink">{{ title }}</a>
|
||||
{% endif %}
|
||||
</h2>
|
||||
{% if post.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
{% if post.excerpt %}<p class="archive__item-excerpt" itemprop="description">{{ post.excerpt | markdownify | strip_html | truncate: 160 }}</p>{% endif %}
|
||||
</article>
|
||||
</div>
|
7
_includes/author-profile-custom-links.html
Normal file
7
_includes/author-profile-custom-links.html
Normal file
@ -0,0 +1,7 @@
|
||||
<!--
|
||||
<li>
|
||||
<a href="http://link-to-whatever-social-network.com/user/" itemprop="sameAs">
|
||||
<i class="fa fa-fw" aria-hidden="true"></i> Custom Social Profile Link
|
||||
</a>
|
||||
</li>
|
||||
-->
|
249
_includes/author-profile.html
Normal file
249
_includes/author-profile.html
Normal file
@ -0,0 +1,249 @@
|
||||
{% if page.author and site.data.authors[page.author] %}
|
||||
{% assign author = site.data.authors[page.author] %}
|
||||
{% else %}
|
||||
{% assign author = site.author %}
|
||||
{% endif %}
|
||||
|
||||
<div itemscope itemtype="http://schema.org/Person">
|
||||
|
||||
{% if author.avatar %}
|
||||
<div class="author__avatar">
|
||||
{% if author.avatar contains "://" %}
|
||||
<img src="{{ author.avatar }}" alt="{{ author.name }}" itemprop="image">
|
||||
{% else %}
|
||||
<img src="{{ author.avatar | absolute_url }}" class="author__avatar" alt="{{ author.name }}" itemprop="image">
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="author__content">
|
||||
<h3 class="author__name" itemprop="name">{{ author.name }}</h3>
|
||||
{% if author.bio %}
|
||||
<p class="author__bio" itemprop="description">
|
||||
{{ author.bio }}
|
||||
</p>
|
||||
{% endif %}
|
||||
</div>
|
||||
|
||||
<div class="author__urls-wrapper">
|
||||
<button class="btn btn--inverse">{{ site.data.ui-text[site.locale].follow_label | remove: ":" | default: "Follow" }}</button>
|
||||
<ul class="author__urls social-icons">
|
||||
{% if author.location %}
|
||||
<li itemprop="homeLocation" itemscope itemtype="http://schema.org/Place">
|
||||
<i class="fa fa-fw fa-map-marker" aria-hidden="true"></i> <span itemprop="name">{{ author.location }}</span>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.uri %}
|
||||
<li>
|
||||
<a href="{{ author.uri }}" itemprop="url">
|
||||
<i class="fa fa-fw fa-chain" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].website_label | default: "Website" }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.email %}
|
||||
<li>
|
||||
<a href="mailto:{{ author.email }}">
|
||||
<meta itemprop="email" content="{{ author.email }}" />
|
||||
<i class="fa fa-fw fa-envelope-square" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].email_label | default: "Email" }}
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.keybase %}
|
||||
<li>
|
||||
<a href="https://keybase.io/{{ author.keybase }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-key" aria-hidden="true"></i> Keybase
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.twitter %}
|
||||
<li>
|
||||
<a href="https://twitter.com/{{ author.twitter }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-twitter-square" aria-hidden="true"></i> Twitter
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.facebook %}
|
||||
<li>
|
||||
<a href="https://www.facebook.com/{{ author.facebook }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-facebook-square" aria-hidden="true"></i> Facebook
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.google_plus %}
|
||||
<li>
|
||||
<a href="https://plus.google.com/+{{ author.google_plus }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-google-plus-square" aria-hidden="true"></i> Google+
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.linkedin %}
|
||||
<li>
|
||||
<a href="https://www.linkedin.com/in/{{ author.linkedin }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-linkedin-square" aria-hidden="true"></i> LinkedIn
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.xing %}
|
||||
<li>
|
||||
<a href="https://www.xing.com/profile/{{ author.xing }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-xing-square" aria-hidden="true"></i> XING
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.instagram %}
|
||||
<li>
|
||||
<a href="https://instagram.com/{{ author.instagram }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-instagram" aria-hidden="true"></i> Instagram
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.tumblr %}
|
||||
<li>
|
||||
<a href="https://{{ author.tumblr }}.tumblr.com" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-tumblr-square" aria-hidden="true"></i> Tumblr
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.bitbucket %}
|
||||
<li>
|
||||
<a href="https://bitbucket.org/{{ author.bitbucket }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-bitbucket" aria-hidden="true"></i> Bitbucket
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.github %}
|
||||
<li>
|
||||
<a href="https://github.com/{{ author.github }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-github" aria-hidden="true"></i> GitHub
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.gitlab %}
|
||||
<li>
|
||||
<a href="https://gitlab.com/{{ author.gitlab }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-gitlab" aria-hidden="true"></i> Gitlab
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.stackoverflow %}
|
||||
<li>
|
||||
<a href="https://www.stackoverflow.com/users/{{ author.stackoverflow }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-stack-overflow" aria-hidden="true"></i> Stackoverflow
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.lastfm %}
|
||||
<li>
|
||||
<a href="https://last.fm/user/{{ author.lastfm }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-lastfm-square" aria-hidden="true"></i> Last.fm
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.dribbble %}
|
||||
<li>
|
||||
<a href="https://dribbble.com/{{ author.dribbble }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-dribbble" aria-hidden="true"></i> Dribbble
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.pinterest %}
|
||||
<li>
|
||||
<a href="https://www.pinterest.com/{{ author.pinterest }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-pinterest" aria-hidden="true"></i> Pinterest
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.foursquare %}
|
||||
<li>
|
||||
<a href="https://foursquare.com/{{ author.foursquare }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-foursquare" aria-hidden="true"></i> Foursquare
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.steam %}
|
||||
<li>
|
||||
<a href="https://steamcommunity.com/id/{{ author.steam }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-steam-square" aria-hidden="true"></i> Steam
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.youtube %}
|
||||
{% if author.youtube contains "://" %}
|
||||
<li>
|
||||
<a href="{{ author.youtube }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube
|
||||
</a>
|
||||
</li>
|
||||
{% else author.youtube %}
|
||||
<li>
|
||||
<a href="https://www.youtube.com/user/{{ author.youtube }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-youtube-square" aria-hidden="true"></i> YouTube
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if author.soundcloud %}
|
||||
<li>
|
||||
<a href="https://soundcloud.com/{{ author.soundcloud }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-soundcloud" aria-hidden="true"></i> Soundcloud
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.weibo %}
|
||||
<li>
|
||||
<a href="https://www.weibo.com/{{ author.weibo }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-weibo" aria-hidden="true"></i> Weibo
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.flickr %}
|
||||
<li>
|
||||
<a href="https://www.flickr.com/{{ author.flickr }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-flickr" aria-hidden="true"></i> Flickr
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.codepen %}
|
||||
<li>
|
||||
<a href="https://codepen.io/{{ author.codepen }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-codepen" aria-hidden="true"></i> CodePen
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% if author.vine %}
|
||||
<li>
|
||||
<a href="https://vine.co/u/{{ author.vine }}" itemprop="sameAs">
|
||||
<i class="fa fa-fw fa-vine" aria-hidden="true"></i> Vine
|
||||
</a>
|
||||
</li>
|
||||
{% endif %}
|
||||
|
||||
{% include author-profile-custom-links.html %}
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
5
_includes/base_path
Normal file
5
_includes/base_path
Normal file
@ -0,0 +1,5 @@
|
||||
{% if site.url %}
|
||||
{% assign base_path = site.url | append: site.baseurl %}
|
||||
{% else %}
|
||||
{% assign base_path = site.github.url %}
|
||||
{% endif %}
|
39
_includes/breadcrumbs.html
Normal file
39
_includes/breadcrumbs.html
Normal file
@ -0,0 +1,39 @@
|
||||
{% case site.category_archive.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if page.collection != 'posts' %}
|
||||
{% assign path_type = nil %}
|
||||
{% assign crumb_path = '/' %}
|
||||
{% else %}
|
||||
{% assign crumb_path = site.category_archive.path %}
|
||||
{% endif %}
|
||||
|
||||
<nav class="breadcrumbs">
|
||||
<ol itemscope itemtype="http://schema.org/BreadcrumbList">
|
||||
{% assign crumbs = page.url | split: '/' %}
|
||||
{% assign i = 1 %}
|
||||
{% for crumb in crumbs offset: 1 %}
|
||||
{% if forloop.first %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
|
||||
<a href="{{ site.url }}{{ site.baseurl }}/" itemprop="item"><span itemprop="name">{{ site.data.ui-text[site.locale].breadcrumb_home_label | default: "Home" }}</span></a>
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
{% endif %}
|
||||
{% if forloop.last %}
|
||||
<li class="current">{{ page.title }}</li>
|
||||
{% else %}
|
||||
{% assign i = i | plus: 1 %}
|
||||
<li itemprop="itemListElement" itemscope itemtype="http://schema.org/ListItem">
|
||||
<a href="{{ crumb | downcase | replace: '%20', '-' | prepend: path_type | prepend: crumb_path | absolute_url }}" itemprop="item"><span itemprop="name">{{ crumb | replace: '-', ' ' | replace: '%20', ' ' | capitalize }}</span></a>
|
||||
<meta itemprop="position" content="{{ i }}" />
|
||||
</li>
|
||||
<span class="sep">{{ site.data.ui-text[site.locale].breadcrumb_separator | default: "/" }}</span>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</nav>
|
3
_includes/browser-upgrade.html
Normal file
3
_includes/browser-upgrade.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!--[if lt IE 9]>
|
||||
<div class="notice--danger align-center" style="margin: 0;">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</div>
|
||||
<![endif]-->
|
26
_includes/category-list.html
Normal file
26
_includes/category-list.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% case site.category_archive.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if site.category_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_categories %}{% for category in page.categories %}{{ category | downcase }}#{{ category }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign category_hashes = page_categories | split: ',' | sort %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fa fa-fw fa-folder-open" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].categories_label | default: "Categories:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in category_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% capture category_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ category_word | slugify | prepend: path_type | prepend: site.category_archive.path | absolute_url }}" class="page__taxonomy-item" rel="tag">{{ category_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
{% endif %}
|
22
_includes/comment.html
Normal file
22
_includes/comment.html
Normal file
@ -0,0 +1,22 @@
|
||||
<article id="comment{{ include.index }}" class="js-comment comment" itemprop="comment" itemscope itemtype="http://schema.org/Comment">
|
||||
<div class="comment__avatar-wrapper">
|
||||
<img class="comment__avatar" src="https://www.gravatar.com/avatar/{{ include.email }}?d=mm&s=80" alt="{{ include.name }}">
|
||||
</div>
|
||||
<div class="comment__content-wrapper">
|
||||
<h3 class="comment__author" itemprop="author" itemscope itemtype="http://schema.org/Person">
|
||||
{% unless include.url == blank %}
|
||||
<span itemprop="name"><a rel="external nofollow" itemprop="url" href="{{ include.url }}">{{ include.name }}</a></span>
|
||||
{% else %}
|
||||
<span itemprop="name">{{ include.name }}</span>
|
||||
{% endunless %}
|
||||
</h3>
|
||||
<p class="comment__date">
|
||||
{% if include.date %}
|
||||
{% if include.index %}<a href="#comment{{ include.index }}" itemprop="url">{% endif %}
|
||||
<time datetime="{{ include.date | date_to_xmlschema }}" itemprop="datePublished">{{ include.date | date: "%B %d, %Y at %I:%M %p" }}</time>
|
||||
{% if include.index %}</a>{% endif %}
|
||||
{% endif %}
|
||||
</p>
|
||||
<div itemprop="text">{{ include.message | markdownify }}</div>
|
||||
</div>
|
||||
</article>
|
3
_includes/comments-providers/custom.html
Normal file
3
_includes/comments-providers/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom comments snippet -->
|
||||
|
||||
<!-- end custom comments snippet -->
|
13
_includes/comments-providers/discourse.html
Normal file
13
_includes/comments-providers/discourse.html
Normal file
@ -0,0 +1,13 @@
|
||||
{% if site.comments.discourse.server %}
|
||||
{% capture canonical %}{% if site.permalink contains '.html' %}{{ page.url | absolute_url }}{% else %}{{ page.url | absolute_url | remove:'index.html' | strip_slash }}{% endif %}{% endcapture %}
|
||||
<script type="text/javascript">
|
||||
DiscourseEmbed = { discourseUrl: '//{{ site.comments.discourse.server }}/',
|
||||
discourseEmbedUrl: '{{ canonical }}' };
|
||||
(function () {
|
||||
var d = document.createElement('script'); d.type = 'text/javascript'; d.async = true;
|
||||
d.src = DiscourseEmbed.discourseUrl + 'javascripts/embed.js';
|
||||
(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(d);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the comments powered by <a href="https://www.discourse.org/">Discourse.</a></noscript>
|
||||
{% endif %}
|
15
_includes/comments-providers/disqus.html
Normal file
15
_includes/comments-providers/disqus.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% if site.comments.disqus.shortname %}
|
||||
<script>
|
||||
var disqus_config = function () {
|
||||
this.page.url = "{{ page.url | absolute_url }}"; // Replace PAGE_URL with your page's canonical URL variable
|
||||
this.page.identifier = "{{ page.id }}"; // Replace PAGE_IDENTIFIER with your page's unique identifier variable
|
||||
};
|
||||
(function() { // DON'T EDIT BELOW THIS LINE
|
||||
var d = document, s = d.createElement('script');
|
||||
s.src = 'https://{{ site.comments.disqus.shortname }}.disqus.com/embed.js';
|
||||
s.setAttribute('data-timestamp', +new Date());
|
||||
(d.head || d.body).appendChild(s);
|
||||
})();
|
||||
</script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://disqus.com/?ref_noscript">comments powered by Disqus.</a></noscript>
|
||||
{% endif %}
|
8
_includes/comments-providers/facebook.html
Normal file
8
_includes/comments-providers/facebook.html
Normal file
@ -0,0 +1,8 @@
|
||||
<div id="fb-root"></div>
|
||||
<script>(function(d, s, id) {
|
||||
var js, fjs = d.getElementsByTagName(s)[0];
|
||||
if (d.getElementById(id)) return;
|
||||
js = d.createElement(s); js.id = id;
|
||||
js.src = "//connect.facebook.net/en_US/sdk.js#xfbml=1&version=v2.5{% if site.comments.facebook.appid %}&appId={{ site.comments.facebook.appid }}{% endif %}";
|
||||
fjs.parentNode.insertBefore(js, fjs);
|
||||
}(document, 'script', 'facebook-jssdk'));</script>
|
2
_includes/comments-providers/google-plus.html
Normal file
2
_includes/comments-providers/google-plus.html
Normal file
@ -0,0 +1,2 @@
|
||||
<script async type="text/javascript" src="//apis.google.com/js/plusone.js?callback=gpcb"></script>
|
||||
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>
|
16
_includes/comments-providers/scripts.html
Normal file
16
_includes/comments-providers/scripts.html
Normal file
@ -0,0 +1,16 @@
|
||||
{% if site.comments.provider and page.comments %}
|
||||
{% case site.comments.provider %}
|
||||
{% when "disqus" %}
|
||||
{% include /comments-providers/disqus.html %}
|
||||
{% when "discourse" %}
|
||||
{% include /comments-providers/discourse.html %}
|
||||
{% when "facebook" %}
|
||||
{% include /comments-providers/facebook.html %}
|
||||
{% when "google-plus" %}
|
||||
{% include /comments-providers/google-plus.html %}
|
||||
{% when "staticman" %}
|
||||
{% include /comments-providers/staticman.html %}
|
||||
{% when "custom" %}
|
||||
{% include /comments-providers/custom.html %}
|
||||
{% endcase %}
|
||||
{% endif %}
|
42
_includes/comments-providers/staticman.html
Normal file
42
_includes/comments-providers/staticman.html
Normal file
@ -0,0 +1,42 @@
|
||||
{% if site.repository and site.staticman.branch %}
|
||||
<script>
|
||||
(function ($) {
|
||||
var $comments = $('.js-comments');
|
||||
|
||||
$('#new_comment').submit(function () {
|
||||
var form = this;
|
||||
|
||||
$(form).addClass('disabled');
|
||||
$('#comment-form-submit').html('<i class="fa fa-spinner fa-spin fa-fw"></i> {{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}');
|
||||
|
||||
$.ajax({
|
||||
type: $(this).attr('method'),
|
||||
url: $(this).attr('action'),
|
||||
data: $(this).serialize(),
|
||||
contentType: 'application/x-www-form-urlencoded',
|
||||
success: function (data) {
|
||||
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submitted | default: "Submitted" }}');
|
||||
$('.page__comments-form .js-notice').removeClass('notice--danger');
|
||||
$('.page__comments-form .js-notice').addClass('notice--success');
|
||||
showAlert('{{ site.data.ui-text[site.locale].comment_success_msg | default: "Thanks for your comment! It will show on the site once it has been approved." }}');
|
||||
},
|
||||
error: function (err) {
|
||||
console.log(err);
|
||||
$('#comment-form-submit').html('{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}');
|
||||
$('.page__comments-form .js-notice').removeClass('notice--success');
|
||||
$('.page__comments-form .js-notice').addClass('notice--danger');
|
||||
showAlert('{{ site.data.ui-text[site.locale].comment_error_msg | default: "Sorry, there was an error with your submission. Please make sure all required fields have been completed and try again." }}');
|
||||
$(form).removeClass('disabled');
|
||||
}
|
||||
});
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
function showAlert(message) {
|
||||
$('.page__comments-form .js-notice').removeClass('hidden');
|
||||
$('.page__comments-form .js-notice-text').html(message);
|
||||
}
|
||||
})(jQuery);
|
||||
</script>
|
||||
{% endif %}
|
97
_includes/comments.html
Normal file
97
_includes/comments.html
Normal file
@ -0,0 +1,97 @@
|
||||
<div class="page__comments">
|
||||
{% capture comments_label %}{{ site.data.ui-text[site.locale].comments_label | default: "Comments" }}{% endcapture %}
|
||||
{% case site.comments.provider %}
|
||||
{% when "discourse" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="discourse-comments"></section>
|
||||
{% when "disqus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="disqus_thread"></section>
|
||||
{% when "facebook" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section class="fb-comments" data-href="{{ page.url | absolute_url }}" data-mobile="true" data-num-posts="{{ site.comments.facebook.num_posts | default: 5 }}" data-width="100%" data-colorscheme="{{ site.comments.facebook.colorscheme | default: 'light' }}"></section>
|
||||
{% when "google-plus" %}
|
||||
<h4 class="page__comments-title">{{ comments_label }}</h4>
|
||||
<section id="g-comments" class="g-comments">Loading Google+ Comments ...</section>
|
||||
<script>
|
||||
function initComment() {
|
||||
gapi.comments.render("g-comments", {
|
||||
href: "{{ page.url | absolute_url }}",
|
||||
width: "624",
|
||||
first_party_property: "BLOGGER",
|
||||
view_type: "FILTERED_POSTMOD"
|
||||
})
|
||||
}
|
||||
</script>
|
||||
<script async type="text/javascript" src="https://apis.google.com/js/plusone.js" onload="initComment()" />
|
||||
<noscript>Please enable JavaScript to view the <a href="https://plus.google.com/">comments powered by Google+.</a></noscript>-->
|
||||
{% when "staticman" %}
|
||||
<section id="static-comments">
|
||||
{% if site.repository and site.staticman.branch %}
|
||||
<!-- Start static comments -->
|
||||
<div class="js-comments">
|
||||
{% if site.data.comments[page.slug] %}
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_title | default: "Comments" }}</h4>
|
||||
{% assign comments = site.data.comments[page.slug] | sort %}
|
||||
|
||||
{% for comment in comments %}
|
||||
{% assign email = comment[1].email %}
|
||||
{% assign name = comment[1].name %}
|
||||
{% assign url = comment[1].url %}
|
||||
{% assign date = comment[1].date %}
|
||||
{% assign message = comment[1].message %}
|
||||
{% include comment.html index=forloop.index email=email name=name url=url date=date message=message %}
|
||||
{% endfor %}
|
||||
{% endif %}
|
||||
</div>
|
||||
<!-- End static comments -->
|
||||
|
||||
<!-- Start new comment form -->
|
||||
<div class="page__comments-form">
|
||||
<h4 class="page__comments-title">{{ site.data.ui-text[site.locale].comments_label | default: "Leave a Comment" }}</h4>
|
||||
<p class="small">{{ site.data.ui-text[site.locale].comment_form_info | default: "Your email address will not be published. Required fields are marked" }} <span class="required">*</span></p>
|
||||
<form id="new_comment" class="page__comments-form js-form form" method="post" action="https://api.staticman.net/v1/entry/{{ site.repository }}/{{ site.staticman.branch }}">
|
||||
<div class="form__spinner">
|
||||
<i class="fa fa-spinner fa-spin fa-3x fa-fw"></i>
|
||||
<span class="sr-only">{{ site.data.ui-text[site.locale].loading_label | default: "Loading..." }}</span>
|
||||
</div>
|
||||
|
||||
<fieldset>
|
||||
<label for="comment-form-message">{{ site.data.ui-text[site.locale].comment_form_comment_label | default: "Comment" }} <small class="required">*</small></label>
|
||||
<textarea type="text" rows="3" id="comment-form-message" name="fields[message]" tabindex="1"></textarea>
|
||||
<div class="small help-block"><a href="https://daringfireball.net/projects/markdown/">{{ site.data.ui-text[site.locale].comment_form_md_info | default: "Markdown is supported." }}</a></div>
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-name">{{ site.data.ui-text[site.locale].comment_form_name_label | default: "Name" }} <small class="required">*</small></label>
|
||||
<input type="text" id="comment-form-name" name="fields[name]" tabindex="2" />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-email">{{ site.data.ui-text[site.locale].comment_form_email_label | default: "Email address" }} <small class="required">*</small></label>
|
||||
<input type="email" id="comment-form-email" name="fields[email]" tabindex="3" />
|
||||
</fieldset>
|
||||
<fieldset>
|
||||
<label for="comment-form-url">{{ site.data.ui-text[site.locale].comment_form_website_label | default: "Website (optional)" }}</label>
|
||||
<input type="url" id="comment-form-url" name="fields[url]" tabindex="4"/>
|
||||
</fieldset>
|
||||
<fieldset class="hidden" style="display: none;">
|
||||
<input type="hidden" name="options[slug]" value="{{ page.slug }}">
|
||||
<label for="comment-form-location">Not used. Leave blank if you are a human.</label>
|
||||
<input type="text" id="comment-form-location" name="fields[hidden]" autocomplete="off"/>
|
||||
</fieldset>
|
||||
<!-- Start comment form alert messaging -->
|
||||
<p class="hidden js-notice">
|
||||
<strong class="js-notice-text"></strong>
|
||||
</p>
|
||||
<!-- End comment form alert messaging -->
|
||||
<fieldset>
|
||||
<button type="submit" id="comment-form-submit" tabindex="5" class="btn btn--primary btn--large">{{ site.data.ui-text[site.locale].comment_btn_submit | default: "Submit Comment" }}</button>
|
||||
</fieldset>
|
||||
</form>
|
||||
</div>
|
||||
<!-- End new comment form -->
|
||||
{% endif %}
|
||||
</section>
|
||||
{% when "custom" %}
|
||||
<section id="custom-comments"></section>
|
||||
{% endcase %}
|
||||
</div>
|
50
_includes/feature_row
Normal file
50
_includes/feature_row
Normal file
@ -0,0 +1,50 @@
|
||||
{% if include.id %}
|
||||
{% assign feature_row = page[include.id] %}
|
||||
{% else %}
|
||||
{% assign feature_row = page.feature_row %}
|
||||
{% endif %}
|
||||
|
||||
<div class="feature__wrapper">
|
||||
|
||||
{% for f in feature_row %}
|
||||
|
||||
{% if f.url contains "://" %}
|
||||
{% capture f_url %}{{ f.url }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture f_url %}{{ f.url | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
<div class="feature__item{% if include.type %}--{{ include.type }}{% endif %}">
|
||||
<div class="archive__item">
|
||||
{% if f.image_path %}
|
||||
<div class="archive__item-teaser">
|
||||
<img src=
|
||||
{% if f.image_path contains "://" %}
|
||||
"{{ f.image_path }}"
|
||||
{% else %}
|
||||
"{{ f.image_path | absolute_url }}"
|
||||
{% endif %}
|
||||
alt="{% if f.alt %}{{ f.alt }}{% endif %}">
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
<div class="archive__item-body">
|
||||
{% if f.title %}
|
||||
<h2 class="archive__item-title">{{ f.title }}</h2>
|
||||
{% endif %}
|
||||
|
||||
{% if f.excerpt %}
|
||||
<div class="archive__item-excerpt">
|
||||
{{ f.excerpt | markdownify }}
|
||||
</div>
|
||||
{% endif %}
|
||||
|
||||
{% if f.url %}
|
||||
<p><a href="{{ f_url }}" class="btn {{ f.btn_class }}">{{ f.btn_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
12
_includes/figure
Normal file
12
_includes/figure
Normal file
@ -0,0 +1,12 @@
|
||||
<figure class="{{ include.class }}">
|
||||
<img src=
|
||||
{% if include.image_path contains "://" %}
|
||||
"{{ include.image_path }}"
|
||||
{% else %}
|
||||
"{{ include.image_path | absolute_url }}"
|
||||
{% endif %}
|
||||
alt="{% if include.alt %}{{ include.alt }}{% endif %}">
|
||||
{% if include.caption %}
|
||||
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
5
_includes/footer.html
Normal file
5
_includes/footer.html
Normal file
@ -0,0 +1,5 @@
|
||||
{% include base_path %}
|
||||
{% assign split_path = page.path | split: "/" %}
|
||||
{% assign locale = split_path[1] %}
|
||||
{% assign titles = site.data.navigation[locale].footer %}
|
||||
<div class="page__footer-copyright">© {{ site.time | date: '%Y' }} {{ site.name | default: site.title }} - <a href="https://github.com/Plailect/Guide_Vita">{{ titles[0].title }}</a> - <a href="site-navigation">{{ titles[1].title }}</a> - <a href="why-ads">{{ titles[2].title }}</a></div>
|
3
_includes/footer/custom.html
Normal file
3
_includes/footer/custom.html
Normal file
@ -0,0 +1,3 @@
|
||||
<!-- start custom footer snippets -->
|
||||
|
||||
<!-- end custom footer snippets -->
|
47
_includes/gallery
Normal file
47
_includes/gallery
Normal file
@ -0,0 +1,47 @@
|
||||
{% if include.id %}
|
||||
{% assign gallery = page[include.id] %}
|
||||
{% else %}
|
||||
{% assign gallery = page.gallery %}
|
||||
{% endif %}
|
||||
|
||||
{% if gallery.size == 2 %}
|
||||
{% assign gallery_layout = 'half' %}
|
||||
{% elsif gallery.size >= 3 %}
|
||||
{% assign gallery_layout = 'third' %}
|
||||
{% else %}
|
||||
{% assign gallery_layout = '' %}
|
||||
{% endif %}
|
||||
|
||||
<figure class="{{ gallery_layout }} {{ include.class }}">
|
||||
{% for img in gallery %}
|
||||
{% if img.url %}
|
||||
<a href=
|
||||
{% if img.url contains "://" %}
|
||||
"{{ img.url }}"
|
||||
{% else %}
|
||||
"{{ img.url | absolute_url }}"
|
||||
{% endif %}
|
||||
{% if img.title %}title="{{ img.title }}"{% endif %}
|
||||
>
|
||||
<img src=
|
||||
{% if img.image_path contains "://" %}
|
||||
"{{ img.image_path }}"
|
||||
{% else %}
|
||||
"{{ img.image_path | absolute_url }}"
|
||||
{% endif %}
|
||||
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||
</a>
|
||||
{% else %}
|
||||
<img src=
|
||||
{% if img.image_path contains "://" %}
|
||||
"{{ img.image_path }}"
|
||||
{% else %}
|
||||
"{{ img.image_path | absolute_url }}"
|
||||
{% endif %}
|
||||
alt="{% if img.alt %}{{ img.alt }}{% endif %}">
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
{% if include.caption %}
|
||||
<figcaption>{{ include.caption | markdownify | remove: "<p>" | remove: "</p>" }}</figcaption>
|
||||
{% endif %}
|
||||
</figure>
|
47
_includes/group-by-array
Normal file
47
_includes/group-by-array
Normal file
@ -0,0 +1,47 @@
|
||||
<!--
|
||||
# Jekyll Group-By-Array 0.1.0
|
||||
# https://github.com/mushishi78/jekyll-group-by-array
|
||||
# © 2015 Max White <mushishi78@gmail.com>
|
||||
# MIT License
|
||||
-->
|
||||
|
||||
<!-- Initialize -->
|
||||
{% assign __empty_array = '' | split: ',' %}
|
||||
{% assign group_names = __empty_array %}
|
||||
{% assign group_items = __empty_array %}
|
||||
|
||||
<!-- Map -->
|
||||
{% assign __names = include.collection | map: include.field %}
|
||||
|
||||
<!-- Flatten -->
|
||||
{% assign __names = __names | join: ',' | join: ',' | split: ',' %}
|
||||
|
||||
<!-- Uniq -->
|
||||
{% assign __names = __names | sort %}
|
||||
{% for name in __names %}
|
||||
|
||||
<!-- If not equal to previous then it must be unique as sorted -->
|
||||
{% unless name == previous %}
|
||||
|
||||
<!-- Push to group_names -->
|
||||
{% assign group_names = group_names | push: name %}
|
||||
{% endunless %}
|
||||
|
||||
{% assign previous = name %}
|
||||
{% endfor %}
|
||||
|
||||
|
||||
<!-- group_items -->
|
||||
{% for name in group_names %}
|
||||
|
||||
<!-- Collect if contains -->
|
||||
{% assign __item = __empty_array %}
|
||||
{% for __element in include.collection %}
|
||||
{% if __element[include.field] contains name %}
|
||||
{% assign __item = __item | push: __element %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
<!-- Push to group_items -->
|
||||
{% assign group_items = group_items | push: __item %}
|
||||
{% endfor %}
|
43
_includes/head.html
Normal file
43
_includes/head.html
Normal file
@ -0,0 +1,43 @@
|
||||
<meta charset="utf-8">
|
||||
|
||||
{% include seo.html %}
|
||||
|
||||
<link href="{% if site.atom_feed.path %}{{ site.atom_feed.path }}{% else %}{{ '/feed.xml' | absolute_url }}{% endif %}" type="application/atom+xml" rel="alternate" title="{{ site.title }} Feed">
|
||||
|
||||
<!-- http://t.co/dKP3o1e -->
|
||||
<meta name="HandheldFriendly" content="True">
|
||||
<meta name="MobileOptimized" content="320">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<script>
|
||||
document.documentElement.className = document.documentElement.className.replace(/\bno-js\b/g, '') + ' js ';
|
||||
</script>
|
||||
|
||||
<!-- For all browsers -->
|
||||
<link rel="stylesheet" href="{{ '/assets/css/main.css' | absolute_url }}">
|
||||
|
||||
<!--[if lte IE 9]>
|
||||
<style>
|
||||
/* old IE unsupported flexbox fixes */
|
||||
.greedy-nav .site-title {
|
||||
padding-right: 3em;
|
||||
}
|
||||
.greedy-nav button {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
right: 0;
|
||||
height: 100%;
|
||||
}
|
||||
</style>
|
||||
<![endif]-->
|
||||
|
||||
{% if site.head_scripts %}
|
||||
{% for script in site.head_scripts %}
|
||||
{% if script contains "://" %}
|
||||
{% capture script_path %}{{ script }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture script_path %}{{ script | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
<script src="{{ script_path }}"></script>
|
||||
{% endfor %}
|
||||
{% endif %}
|
19
_includes/head/custom.html
Normal file
19
_includes/head/custom.html
Normal file
@ -0,0 +1,19 @@
|
||||
<!-- start custom head snippets -->
|
||||
{% include base_path %}
|
||||
<!-- insert favicons. use http://realfavicongenerator.net/ -->
|
||||
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="{{ base_path }}/images/apple-touch-icon.png?v=PYEmwKvQAx">
|
||||
<link rel="icon" type="image/png" href="{{ base_path }}/images/favicon-32x32.png?v=PYEmwKvQAx" sizes="32x32">
|
||||
<link rel="icon" type="image/png" href="{{ base_path }}/images/favicon-194x194.png?v=PYEmwKvQAx" sizes="194x194">
|
||||
<link rel="icon" type="image/png" href="{{ base_path }}/images/android-chrome-192x192.png?v=PYEmwKvQAx" sizes="192x192">
|
||||
<link rel="icon" type="image/png" href="{{ base_path }}/images/favicon-16x16.png?v=PYEmwKvQAx" sizes="16x16">
|
||||
<link rel="manifest" href="{{ base_path }}/images/manifest.json?v=PYEmwKvQAx">
|
||||
<link rel="mask-icon" href="{{ base_path }}/images/safari-pinned-tab.svg?v=PYEmwKvQAx" color="#2E3440">
|
||||
<link rel="shortcut icon" href="{{ base_path }}/images/favicon.ico?v=PYEmwKvQAx">
|
||||
<meta name="apple-mobile-web-app-title" content="Guide">
|
||||
<meta name="application-name" content="Guide">
|
||||
<meta name="msapplication-TileColor" content="#2E3440">
|
||||
<meta name="msapplication-TileImage" content="{{ base_path }}/images/mstile-144x144.png?v=PYEmwKvQAx">
|
||||
<meta name="msapplication-config" content="{{ base_path }}/images/browserconfig.xml?v=PYEmwKvQAx">
|
||||
<meta name="theme-color" content="#2E3440">
|
||||
<!-- end custom head snippets -->
|
71
_includes/masthead.html
Normal file
71
_includes/masthead.html
Normal file
@ -0,0 +1,71 @@
|
||||
<div class="masthead">
|
||||
<div class="masthead__inner-wrap">
|
||||
<div class="masthead__menu">
|
||||
<nav id="site-nav" class="greedy-nav">
|
||||
<ul class="visible-links">
|
||||
{% assign split_path = page.path | split: "/" %}
|
||||
{% assign locale = split_path[1] %}
|
||||
{% assign titles = site.data.navigation[locale].main %}
|
||||
{% if locale == 'en_US' %}
|
||||
{% assign locale_var = '/' %}
|
||||
{% else %}
|
||||
{% assign locale_var = locale | prepend:'/' | append:'/' %}
|
||||
{% endif %}
|
||||
{% for link in site.data.navigation[locale].main %}
|
||||
{% if link.url == "/" %}
|
||||
<li class="masthead__menu-item masthead__menu-item--lg"><a href="{{ domain }}{{ locale_var }}">{{ link.title }}</a></li>
|
||||
{% else %}
|
||||
<li class="masthead__menu-item"><a href="{{ domain }}{{ locale_var }}{{ link.url }}">{{ link.title }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
<ul class="hidden-links links-menu hidden"></ul>
|
||||
<ul class="hidden-links lang-menu hidden">
|
||||
{% assign split_url = page.url | split: "/" %}
|
||||
{% if split_url.size == 3 %}
|
||||
{% assign langless_url = split_url[2] %}
|
||||
{% else %}
|
||||
{% assign langless_url = split_url[1] %}
|
||||
{% endif %}
|
||||
{% if langless_url == "index.html" %}
|
||||
{% assign langless_url = "" %}
|
||||
{% endif %}
|
||||
<li class="masthead__menu-item"><a href="{{ site.url }}/{{ langless_url }}">English</a></li>
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/es_ES/{{ langless_url }}">Español</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/de_DE/{{ langless_url }}">Deutsch</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/fr_FR/{{ langless_url }}">Français</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/it_IT/{{ langless_url }}">Italiano</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/nl_NL/{{ langless_url }}">Nederlands</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/pt_BR/{{ langless_url }}">Português do Brasil</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/pt_PT/{{ langless_url }}">Português (Portugal)</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ru_RU/{{ langless_url }}">Русский</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/zh_CN/{{ langless_url }}">简体中文</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/zh_TW/{{ langless_url }}">繁體中文</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/pl_PL/{{ langless_url }}">Polski</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/tr_TR/{{ langless_url }}">Türkçe</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/vi_VN/{{ langless_url }}">Tiếng Việt</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ca_ES/{{ langless_url }}">Català</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/el_GR/{{ langless_url }}">Ελληνικά</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/he_IL/{{ langless_url }}">עברית</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/sv_SE/{{ langless_url }}">Svenska</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ko_KR/{{ langless_url }}">한국어</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/no_NO/{{ langless_url }}">Norsk</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ja_JP/{{ langless_url }}">日本語</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ar_SA/{{ langless_url }}">اللغة العربية</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/hu_HU/{{ langless_url }}">Magyar</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ro_RO/{{ langless_url }}">Română</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/sr_SP/{{ langless_url }}">Српски</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/af_ZA/{{ langless_url }}">Afrikaans</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/ms_MY/{{ langless_url }}">Bahasa Melayu</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/fi_FI/{{ langless_url }}">Suomi</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/da_DK/{{ langless_url }}">Dansk</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/uk_UA/{{ langless_url }}">Українська</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/cs_CZ/{{ langless_url }}">Čeština</a></li> -->
|
||||
<!-- <li class="masthead__menu-item"><a href="{{ site.url }}/en_PT/{{ langless_url }}">Pirate English</a></li> -->
|
||||
</ul>
|
||||
<button class="navsel"><div class="navicon"></div></button>
|
||||
<button class="langsel"><div class="langicon"><i class="fa fa-language fa-lg" aria-hidden="true"></i></div></button>
|
||||
</nav>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
32
_includes/nav_list
Normal file
32
_includes/nav_list
Normal file
@ -0,0 +1,32 @@
|
||||
{% assign split_path = page.path | split: "/" %}
|
||||
{% assign locale = split_path[1] %}
|
||||
{% if locale == 'en_US' %}
|
||||
{% assign locale_var = '/' %}
|
||||
{% else %}
|
||||
{% assign locale_var = locale | prepend:'/' | append:'/' %}
|
||||
{% endif %}
|
||||
|
||||
{% assign title = site.data.navigation[locale].sidebar_title %}
|
||||
{% assign navigation = site.data.navigation[locale].sidebar_pages %}
|
||||
|
||||
<nav class="nav__list">
|
||||
{% if page.sidebar.title %}<h3 class="nav__title" style="padding-left: 0;">{{ page.sidebar.title }}</h3>{% endif %}
|
||||
<input id="ac-toc" name="accordion-toc" type="checkbox" />
|
||||
<label for="ac-toc">{{ site.data.ui-text[site.locale].menu_label | default: "Toggle Menu" }}</label>
|
||||
<ul class="nav__items">
|
||||
<li>
|
||||
<span class="nav__sub-title">{{ title[0].title }}</span>
|
||||
<ol>
|
||||
{% for link in site.data.navigation[locale].sidebar_pages %}
|
||||
{% if link.url == "/" %}
|
||||
<li style="display: none;" data-name="home"><a href='{{ domain }}{{ locale_var }}'>{{ link.title }}</a></li>
|
||||
{% elsif link.url == "multiple-options" %}
|
||||
<li style="display: none;" data-name="multiple-options"><i>({{ link.title }})</i></li>
|
||||
{% else %}
|
||||
<li style="display: none;" data-name="{{ site.data.navigation.en_US.sidebar_pages[forloop.index0].url }}"><a href='{{ domain }}{{ locale_var }}{{ link.url }}'>{{ link.title }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ol>
|
||||
</li>
|
||||
</ul>
|
||||
</nav>
|
61
_includes/page__hero.html
Normal file
61
_includes/page__hero.html
Normal file
@ -0,0 +1,61 @@
|
||||
{% if page.header.image contains "://" %}
|
||||
{% capture img_path %}{{ page.header.image }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture img_path %}{{ page.header.image | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.cta_url contains "://" %}
|
||||
{% capture cta_path %}{{ page.header.cta_url }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture cta_path %}{{ page.header.cta_url | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.overlay_image contains "://" %}
|
||||
{% capture overlay_img_path %}{{ page.header.overlay_image }}{% endcapture %}
|
||||
{% elsif page.header.overlay_image %}
|
||||
{% capture overlay_img_path %}{{ page.header.overlay_image | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.overlay_filter contains "rgba" %}
|
||||
{% capture overlay_filter %}{{ page.header.overlay_filter }}{% endcapture %}
|
||||
{% elsif page.header.overlay_filter %}
|
||||
{% capture overlay_filter %}rgba(0, 0, 0, {{ page.header.overlay_filter }}){% endcapture %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.image_description %}
|
||||
{% assign image_description = page.header.image_description %}
|
||||
{% else %}
|
||||
{% assign image_description = page.title %}
|
||||
{% endif %}
|
||||
|
||||
{% assign image_description = image_description | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
|
||||
<div class="page__hero{% if page.header.overlay_color or page.header.overlay_image %}--overlay{% endif %}"
|
||||
style="{% if page.header.overlay_color %}background-color: {{ page.header.overlay_color | default: 'transparent' }};{% endif %} {% if overlay_img_path %}background-image: {% if overlay_filter %}linear-gradient({{ overlay_filter }}, {{ overlay_filter }}), {% endif %}url('{{ overlay_img_path }}');{% endif %}"
|
||||
>
|
||||
{% if page.header.overlay_color or page.header.overlay_image %}
|
||||
<div class="wrapper">
|
||||
<h1 class="page__title" itemprop="headline">
|
||||
{% if paginator and site.paginate_show_page_num %}
|
||||
{{ site.title }}{% unless paginator.page == 1 %} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}
|
||||
{% else %}
|
||||
{{ page.title | default: site.title | markdownify | remove: "<p>" | remove: "</p>" }}
|
||||
{% endif %}
|
||||
</h1>
|
||||
{% if page.excerpt %}
|
||||
<p class="page__lead">{{ page.excerpt | markdownify | remove: "<p>" | remove: "</p>" }}</p>
|
||||
{% endif %}
|
||||
{% if site.read_time and page.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
{% if page.header.cta_url %}
|
||||
<p><a href="{{ cta_path }}" class="btn btn--light-outline btn--large">{{ page.header.cta_label | default: site.data.ui-text[site.locale].more_label | default: "Learn More" }}</a></p>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% else %}
|
||||
<img src="{{ img_path }}" alt="{{ image_description }}" class="page__hero-image">
|
||||
{% endif %}
|
||||
{% if page.header.caption %}
|
||||
<span class="page__hero-caption">{{ page.header.caption | markdownify | remove: "<p>" | remove: "</p>" }}</span>
|
||||
{% endif %}
|
||||
</div>
|
4
_includes/page__hero_video.html
Normal file
4
_includes/page__hero_video.html
Normal file
@ -0,0 +1,4 @@
|
||||
{% capture video_id %}{{ page.header.video.id }}{% endcapture %}
|
||||
{% capture video_provider %}{{ page.header.video.provider }}{% endcapture %}
|
||||
|
||||
{% include video id=video_id provider=video_provider %}
|
7
_includes/page__taxonomy.html
Normal file
7
_includes/page__taxonomy.html
Normal file
@ -0,0 +1,7 @@
|
||||
{% if site.tag_archive.type and page.tags[0] %}
|
||||
{% include tag-list.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.category_archive.type and page.categories[0] %}
|
||||
{% include category-list.html %}
|
||||
{% endif %}
|
69
_includes/paginator.html
Normal file
69
_includes/paginator.html
Normal file
@ -0,0 +1,69 @@
|
||||
{% if paginator.total_pages > 1 %}
|
||||
<nav class="pagination">
|
||||
{% assign first_page_path = site.paginate_path | replace: 'page:num', '' | replace: '//', '/' | absolute_url %}
|
||||
<ul>
|
||||
{% comment %} Link for previous page {% endcomment %}
|
||||
{% if paginator.previous_page %}
|
||||
{% if paginator.previous_page == 1 %}
|
||||
<li><a href="{{ first_page_path }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.previous_page | replace: '//', '/' | absolute_url }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a></li>
|
||||
{% endif %}
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</span></a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} First page {% endcomment %}
|
||||
{% if paginator.page == 1 %}
|
||||
<li><a href="#" class="disabled current">1</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ first_page_path }}">1</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_start = 2 %}
|
||||
{% if paginator.page > 4 %}
|
||||
{% assign page_start = paginator.page | minus: 2 %}
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% assign page_end = paginator.total_pages | minus: 1 %}
|
||||
{% assign pages_to_end = paginator.total_pages | minus: paginator.page %}
|
||||
{% if pages_to_end > 4 %}
|
||||
{% assign page_end = paginator.page | plus: 2 %}
|
||||
{% endif %}
|
||||
|
||||
{% for index in (page_start..page_end) %}
|
||||
{% if index == paginator.page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | replace: '//', '/' | absolute_url }}" class="disabled current">{{ index }}</a></li>
|
||||
{% else %}
|
||||
{% comment %} Distance from current page and this link {% endcomment %}
|
||||
{% assign dist = paginator.page | minus: index %}
|
||||
{% if dist < 0 %}
|
||||
{% comment %} Distance must be a positive value {% endcomment %}
|
||||
{% assign dist = 0 | minus: dist %}
|
||||
{% endif %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', index | absolute_url }}">{{ index }}</a></li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% comment %} Ellipsis for truncated links {% endcomment %}
|
||||
{% if pages_to_end > 3 %}
|
||||
<li><a href="#" class="disabled">…</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.page == paginator.total_pages %}
|
||||
<li><a href="#" class="disabled current">{{ paginator.page }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.total_pages | replace: '//', '/' | absolute_url }}">{{ paginator.total_pages }}</a></li>
|
||||
{% endif %}
|
||||
|
||||
{% comment %} Link next page {% endcomment %}
|
||||
{% if paginator.next_page %}
|
||||
<li><a href="{{ site.paginate_path | replace: ':num', paginator.next_page | replace: '//', '/' | absolute_url }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a></li>
|
||||
{% else %}
|
||||
<li><a href="#" class="disabled"><span aria-hidden="true">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</span></a></li>
|
||||
{% endif %}
|
||||
</ul>
|
||||
</nav>
|
||||
{% endif %}
|
14
_includes/post_pagination.html
Normal file
14
_includes/post_pagination.html
Normal file
@ -0,0 +1,14 @@
|
||||
{% if page.previous or page.next %}
|
||||
<nav class="pagination">
|
||||
{% if page.previous %}
|
||||
<a href="{{ page.previous.url | absolute_url }}" class="pagination--pager" title="{{ page.previous.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||
{% else %}
|
||||
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_previous | default: "Previous" }}</a>
|
||||
{% endif %}
|
||||
{% if page.next %}
|
||||
<a href="{{ page.next.url | absolute_url }}" class="pagination--pager" title="{{ page.next.title | markdownify | strip_html }}">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||
{% else %}
|
||||
<a href="#" class="pagination--pager disabled">{{ site.data.ui-text[site.locale].pagination_next | default: "Next" }}</a>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endif %}
|
15
_includes/read-time.html
Normal file
15
_includes/read-time.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% assign words_per_minute = site.words_per_minute | default: 200 %}
|
||||
|
||||
{% if post.read_time %}
|
||||
{% assign words = post.content | strip_html | number_of_words %}
|
||||
{% elsif page.read_time %}
|
||||
{% assign words = page.content | strip_html | number_of_words %}
|
||||
{% endif %}
|
||||
|
||||
{% if words < words_per_minute %}
|
||||
{{ site.data.ui-text[site.locale].less_than | default: "less than" }} 1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% elsif words == words_per_minute %}
|
||||
1 {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% else %}
|
||||
{{ words | divided_by:words_per_minute }} {{ site.data.ui-text[site.locale].minute_read | default: "minute read" }}
|
||||
{% endif %}
|
15
_includes/scripts.html
Normal file
15
_includes/scripts.html
Normal file
@ -0,0 +1,15 @@
|
||||
{% if site.footer_scripts %}
|
||||
{% for script in site.footer_scripts %}
|
||||
{% if script contains "://" %}
|
||||
{% capture script_path %}{{ script }}{% endcapture %}
|
||||
{% else %}
|
||||
{% capture script_path %}{{ script | absolute_url }}{% endcapture %}
|
||||
{% endif %}
|
||||
<script src="{{ script_path }}"></script>
|
||||
{% endfor %}
|
||||
{% else %}
|
||||
<script src="{{ '/assets/js/main.min.js' | absolute_url }}"></script>
|
||||
{% endif %}
|
||||
|
||||
{% include analytics.html %}
|
||||
{% include /comments-providers/scripts.html %}
|
147
_includes/seo.html
Normal file
147
_includes/seo.html
Normal file
@ -0,0 +1,147 @@
|
||||
<!-- begin SEO -->
|
||||
{% if site.url %}
|
||||
{% assign seo_url = site.url | append: site.baseurl %}
|
||||
{% endif %}
|
||||
{% assign seo_url = seo_url | default: site.github.url %}
|
||||
|
||||
{% if page.title %}
|
||||
{% assign seo_title = page.title | append: " " | append: site.title_separator | append: " " | append: site.title %}
|
||||
{% endif %}
|
||||
|
||||
{% if seo_title %}
|
||||
{% assign seo_title = seo_title | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.url %}
|
||||
{% assign canonical_url = page.url | replace: "index.html", "" | prepend: site.url %}
|
||||
{% endif %}
|
||||
|
||||
<title>{{ seo_title | default: site.title }}{% if paginator %}{% unless paginator.page == 1 %} {{ site.title_separator }} {{ site.data.ui-text[site.locale].page | default: "Page" }} {{ paginator.page }}{% endunless %}{% endif %}</title>
|
||||
|
||||
{% assign seo_description = page.description | default: page.excerpt | default: site.description %}
|
||||
{% if seo_description %}
|
||||
{% assign seo_description = seo_description | markdownify | strip_html | strip_newlines | escape_once %}
|
||||
{% endif %}
|
||||
|
||||
<meta name="description" content="{{ seo_description }}">
|
||||
|
||||
{% assign seo_author = page.author | default: page.author[0] | default: site.author.name %}
|
||||
{% if seo_author %}
|
||||
{% if seo_author.twitter %}
|
||||
{% assign seo_author_twitter = seo_author.twitter %}
|
||||
{% else %}
|
||||
{% if site.data.authors and site.data.authors[seo_author] %}
|
||||
{% assign seo_author_twitter = site.data.authors[seo_author].twitter %}
|
||||
{% else %}
|
||||
{% assign seo_author_twitter = seo_author %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% assign seo_author_twitter = seo_author_twitter | replace: "@", "" %}
|
||||
{% endif %}
|
||||
|
||||
<meta name="author" content="{{ seo_author }}">
|
||||
|
||||
<meta property="og:locale" content="{{ site.locale | replace: "-", "_" | default: "en_US" }}">
|
||||
<meta property="og:site_name" content="{{ site.title }}">
|
||||
<meta property="og:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
|
||||
{% if seo_url %}
|
||||
<link rel="canonical" href="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
|
||||
<meta property="og:url" content="{{ page.url | prepend: seo_url | replace: "/index.html", "/" }}">
|
||||
{% endif %}
|
||||
|
||||
{% if page.excerpt %}
|
||||
<meta property="og:description" content="{{ seo_description }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.twitter.username %}
|
||||
<meta name="twitter:site" content="@{{ site.twitter.username | replace: "@", "" }}">
|
||||
<meta name="twitter:title" content="{{ page.title | default: site.title | markdownify | strip_html | strip_newlines | escape_once }}">
|
||||
<meta name="twitter:description" content="{{ seo_description }}">
|
||||
<meta name="twitter:url" content="{{ canonical_url }}">
|
||||
|
||||
{% if page.header.image %}
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | absolute_url }}{% endif %}">
|
||||
{% else %}
|
||||
<meta name="twitter:card" content="summary">
|
||||
{% if page.header.teaser %}
|
||||
<meta name="twitter:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | absolute_url }}{% endif %}">
|
||||
{% elsif site.og_image %}
|
||||
<meta name="twitter:image" content="{{ site.og_image | absolute_url }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if seo_author_twitter %}
|
||||
<meta name="twitter:creator" content="@{{ seo_author_twitter }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if site.facebook %}
|
||||
{% if site.facebook.publisher %}
|
||||
<meta property="article:publisher" content="{{ site.facebook.publisher }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.facebook.app_id %}
|
||||
<meta property="fb:app_id" content="{{ site.facebook.app_id }}">
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.header.image %}
|
||||
<meta property="og:image" content="{% if page.header.image contains "://" %}{{ page.header.image }}{% else %}{{ page.header.image | absolute_url }}{% endif %}">
|
||||
{% elsif page.header.overlay_image %}
|
||||
<meta property="og:image" content="{% if page.header.overlay_image contains "://" %}{{ page.header.overlay_image }}{% else %}{{ page.header.overlay_image | absolute_url }}{% endif %}">
|
||||
{% elsif page.header.teaser %}
|
||||
<meta property="og:image" content="{% if page.header.teaser contains "://" %}{{ page.header.teaser }}{% else %}{{ page.header.teaser | absolute_url }}{% endif %}">
|
||||
{% elsif site.og_image %}
|
||||
<meta property="og:image" content="{% if site.og_image contains "://" %}{{ site.og_image }}{% else %}{{ site.og_image | absolute_url }}{% endif %}">
|
||||
{% endif %}
|
||||
|
||||
{% if page.date %}
|
||||
<meta property="og:type" content="article">
|
||||
<meta property="article:published_time" content="{{ page.date | date_to_xmlschema }}">
|
||||
{% endif %}
|
||||
|
||||
{% if paginator.previous_page %}
|
||||
<link rel="prev" href="{{ paginator.previous_page_path | prepend: seo_url }}">
|
||||
{% endif %}
|
||||
{% if paginator.next_page %}
|
||||
<link rel="next" href="{{ paginator.next_page_path | prepend: seo_url }}">
|
||||
{% endif %}
|
||||
|
||||
{% if site.og_image %}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context": "http://schema.org",
|
||||
"@type": "Organization",
|
||||
"url": {{ seo_url | jsonify }},
|
||||
"logo": {{ site.og_image | absolute_url | jsonify }}
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.social %}
|
||||
<script type="application/ld+json">
|
||||
{
|
||||
"@context" : "http://schema.org",
|
||||
"@type" : "{% if site.social.type %}{{ site.social.type }}{% else %}Person{% endif %}",
|
||||
"name" : "{{ site.social.name | default: site.name }}",
|
||||
"url" : {{ seo_url | jsonify }},
|
||||
"sameAs" : {{ site.social.links | jsonify }}
|
||||
}
|
||||
</script>
|
||||
{% endif %}
|
||||
|
||||
{% if site.google_site_verification %}
|
||||
<meta name="google-site-verification" content="{{ site.google_site_verification }}" />
|
||||
{% endif %}
|
||||
{% if site.bing_site_verification %}
|
||||
<meta name="msvalidate.01" content="{{ site.bing_site_verification }}">
|
||||
{% endif %}
|
||||
{% if site.alexa_site_verification %}
|
||||
<meta name="alexaVerifyID" content="{{ site.alexa_site_verification }}">
|
||||
{% endif %}
|
||||
{% if site.yandex_site_verification %}
|
||||
<meta name="yandex-verification" content="{{ site.yandex_site_verification }}">
|
||||
{% endif %}
|
||||
<!-- end SEO -->
|
7
_includes/sidebar.html
Normal file
7
_includes/sidebar.html
Normal file
@ -0,0 +1,7 @@
|
||||
{% if page.sidebar %}
|
||||
|
||||
<div class="sidebar sticky" style="display: none;">
|
||||
{% include nav_list %}
|
||||
</div>
|
||||
|
||||
{% endif %}
|
13
_includes/social-share.html
Normal file
13
_includes/social-share.html
Normal file
@ -0,0 +1,13 @@
|
||||
<section class="page__share">
|
||||
{% if site.data.ui-text[site.locale].share_on_label %}
|
||||
<h4 class="page__share-title">{{ site.data.ui-text[site.locale].share_on_label | default: "Share on" }}</h4>
|
||||
{% endif %}
|
||||
|
||||
<a href="https://twitter.com/intent/tweet?{% if site.twitter.username %}via={{ site.twitter.username | url_encode }}&{% endif %}text={{ page.title | url_encode }}%20{{ page.url | absolute_url | url_encode }}" class="btn btn--twitter" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Twitter"><i class="fa fa-fw fa-twitter" aria-hidden="true"></i><span> Twitter</span></a>
|
||||
|
||||
<a href="https://www.facebook.com/sharer/sharer.php?u={{ page.url | absolute_url | url_encode }}" class="btn btn--facebook" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Facebook"><i class="fa fa-fw fa-facebook" aria-hidden="true"></i><span> Facebook</span></a>
|
||||
|
||||
<a href="https://plus.google.com/share?url={{ page.url | absolute_url | url_encode }}" class="btn btn--google-plus" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} Google Plus"><i class="fa fa-fw fa-google-plus" aria-hidden="true"></i><span> Google+</span></a>
|
||||
|
||||
<a href="https://www.linkedin.com/shareArticle?mini=true&url={{ page.url | absolute_url | url_encode }}" class="btn btn--linkedin" title="{{ site.data.ui-text[site.locale].share_on_label | default: 'Share on' }} LinkedIn"><i class="fa fa-fw fa-linkedin" aria-hidden="true"></i><span> LinkedIn</span></a>
|
||||
</section>
|
26
_includes/tag-list.html
Normal file
26
_includes/tag-list.html
Normal file
@ -0,0 +1,26 @@
|
||||
{% case site.tag_archive.type %}
|
||||
{% when "liquid" %}
|
||||
{% assign path_type = "#" %}
|
||||
{% when "jekyll-archives" %}
|
||||
{% assign path_type = nil %}
|
||||
{% endcase %}
|
||||
|
||||
{% if site.tag_archive.path %}
|
||||
{% comment %}
|
||||
<!-- Sort alphabetically regardless of case e.g. a B c d E -->
|
||||
<!-- modified from http://www.codeofclimber.ru/2015/sorting-site-tags-in-jekyll/ -->
|
||||
{% endcomment %}
|
||||
{% capture page_tags %}{% for tag in page.tags %}{{ tag | downcase }}#{{ tag }}{% unless forloop.last %},{% endunless %}{% endfor %}{% endcapture %}
|
||||
{% assign tag_hashes = page_tags | split: ',' | sort %}
|
||||
|
||||
<p class="page__taxonomy">
|
||||
<strong><i class="fa fa-fw fa-tags" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].tags_label | default: "Tags:" }} </strong>
|
||||
<span itemprop="keywords">
|
||||
{% for hash in tag_hashes %}
|
||||
{% assign keyValue = hash | split: '#' %}
|
||||
{% capture tag_word %}{{ keyValue[1] | strip_newlines }}{% endcapture %}
|
||||
<a href="{{ tag_word | slugify | prepend: path_type | prepend: site.tag_archive.path | absolute_url }}" class="page__taxonomy-item" rel="tag">{{ tag_word }}</a>{% unless forloop.last %}<span class="sep">, </span>{% endunless %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</p>
|
||||
{% endif %}
|
7
_includes/toc
Normal file
7
_includes/toc
Normal file
@ -0,0 +1,7 @@
|
||||
<aside class="sidebar__right">
|
||||
<nav class="toc" markdown="1">
|
||||
<header><h4 class="nav__title"><i class="fa fa-{{ include.icon | default: 'file-text' }}"></i> {{ include.title | default: site.data.ui-text[site.locale].toc_label }}</h4></header>
|
||||
* Auto generated table of contents
|
||||
{:toc .toc__menu}
|
||||
</nav>
|
||||
</aside>
|
11
_includes/video
Normal file
11
_includes/video
Normal file
@ -0,0 +1,11 @@
|
||||
{% capture video_id %}{{ include.id }}{% endcapture %}
|
||||
{% capture video_provider %}{{ include.provider }}{% endcapture %}
|
||||
|
||||
<!-- Courtesy of embedresponsively.com //-->
|
||||
<div class="responsive-video-container">
|
||||
{% if video_provider == "vimeo" %}
|
||||
<iframe src="https://player.vimeo.com/video/{{ video_id }}" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
|
||||
{% elsif video_provider == "youtube" %}
|
||||
<iframe src="https://www.youtube.com/embed/{{ video_id }}" frameborder="0" allowfullscreen></iframe>
|
||||
{% endif %}
|
||||
</div>
|
15
_layouts/archive-taxonomy.html
Normal file
15
_layouts/archive-taxonomy.html
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
layout: default
|
||||
author_profile: false
|
||||
---
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<div class="archive">
|
||||
<h1 class="page__title">{{ page.title }}</h1>
|
||||
{% for post in page.posts %}
|
||||
{% include archive-single.html %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
26
_layouts/archive.html
Normal file
26
_layouts/archive.html
Normal file
@ -0,0 +1,26 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% elsif page.header.video.id and page.header.video.provider %}
|
||||
{% include page__hero_video.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<div class="archive">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<h1 class="page__title">{{ page.title }}</h1>
|
||||
{% endunless %}
|
||||
{{ content }}
|
||||
</div>
|
||||
</div>
|
10
_layouts/compress.html
Normal file
10
_layouts/compress.html
Normal file
@ -0,0 +1,10 @@
|
||||
---
|
||||
# Jekyll layout that compresses HTML
|
||||
# v3.0.2
|
||||
# http://jch.penibelst.de/
|
||||
# © 2014–2015 Anatol Broder
|
||||
# MIT License
|
||||
---
|
||||
|
||||
{% capture _LINE_FEED %}
|
||||
{% endcapture %}{% if site.compress_html.ignore.envs contains jekyll.environment %}{{ content }}{% else %}{% capture _content %}{{ content }}{% endcapture %}{% assign _profile = site.compress_html.profile %}{% if site.compress_html.endings == "all" %}{% assign _endings = "html head body li dt dd p rt rp optgroup option colgroup caption thead tbody tfoot tr td th" | split: " " %}{% else %}{% assign _endings = site.compress_html.endings %}{% endif %}{% for _element in _endings %}{% capture _end %}</{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _end %}{% endfor %}{% if _profile and _endings %}{% assign _profile_endings = _content | size | plus: 1 %}{% endif %}{% for _element in site.compress_html.startings %}{% capture _start %}<{{ _element }}>{% endcapture %}{% assign _content = _content | remove: _start %}{% endfor %}{% if _profile and site.compress_html.startings %}{% assign _profile_startings = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.comments == "all" %}{% assign _comments = "<!-- -->" | split: " " %}{% else %}{% assign _comments = site.compress_html.comments %}{% endif %}{% if _comments.size == 2 %}{% capture _comment_befores %}.{{ _content }}{% endcapture %}{% assign _comment_befores = _comment_befores | split: _comments.first %}{% for _comment_before in _comment_befores %}{% if forloop.first %}{% continue %}{% endif %}{% capture _comment_outside %}{% if _carry %}{{ _comments.first }}{% endif %}{{ _comment_before }}{% endcapture %}{% capture _comment %}{% unless _carry %}{{ _comments.first }}{% endunless %}{{ _comment_outside | split: _comments.last | first }}{% if _comment_outside contains _comments.last %}{{ _comments.last }}{% assign _carry = false %}{% else %}{% assign _carry = true %}{% endif %}{% endcapture %}{% assign _content = _content | remove_first: _comment %}{% endfor %}{% if _profile %}{% assign _profile_comments = _content | size | plus: 1 %}{% endif %}{% endif %}{% assign _pre_befores = _content | split: "<pre" %}{% assign _content = "" %}{% for _pre_before in _pre_befores %}{% assign _pres = _pre_before | split: "</pre>" %}{% assign _pres_after = "" %}{% if _pres.size != 0 %}{% if site.compress_html.blanklines %}{% assign _lines = _pres.last | split: _LINE_FEED %}{% capture _pres_after %}{% for _line in _lines %}{% assign _trimmed = _line | split: " " | join: " " %}{% if _trimmed != empty or forloop.last %}{% unless forloop.first %}{{ _LINE_FEED }}{% endunless %}{{ _line }}{% endif %}{% endfor %}{% endcapture %}{% else %}{% assign _pres_after = _pres.last | split: " " | join: " " %}{% endif %}{% endif %}{% capture _content %}{{ _content }}{% if _pre_before contains "</pre>" %}<pre{{ _pres.first }}</pre>{% endif %}{% unless _pre_before contains "</pre>" and _pres.size == 1 %}{{ _pres_after }}{% endunless %}{% endcapture %}{% endfor %}{% if _profile %}{% assign _profile_collapse = _content | size | plus: 1 %}{% endif %}{% if site.compress_html.clippings == "all" %}{% assign _clippings = "html head title base link meta style body article section nav aside h1 h2 h3 h4 h5 h6 hgroup header footer address p hr blockquote ol ul li dl dt dd figure figcaption main div table caption colgroup col tbody thead tfoot tr td th" | split: " " %}{% else %}{% assign _clippings = site.compress_html.clippings %}{% endif %}{% for _element in _clippings %}{% assign _edges = " <e;<e; </e>;</e>;</e> ;</e>" | replace: "e", _element | split: ";" %}{% assign _content = _content | replace: _edges[0], _edges[1] | replace: _edges[2], _edges[3] | replace: _edges[4], _edges[5] %}{% endfor %}{% if _profile and _clippings %}{% assign _profile_clippings = _content | size | plus: 1 %}{% endif %}{{ _content }}{% if _profile %} <table id="compress_html_profile_{{ site.time | date: "%Y%m%d" }}" class="compress_html_profile"> <thead> <tr> <td>Step <td>Bytes <tbody> <tr> <td>raw <td>{{ content | size }}{% if _profile_endings %} <tr> <td>endings <td>{{ _profile_endings }}{% endif %}{% if _profile_startings %} <tr> <td>startings <td>{{ _profile_startings }}{% endif %}{% if _profile_comments %} <tr> <td>comments <td>{{ _profile_comments }}{% endif %}{% if _profile_collapse %} <tr> <td>collapse <td>{{ _profile_collapse }}{% endif %}{% if _profile_clippings %} <tr> <td>clippings <td>{{ _profile_clippings }}{% endif %} </table>{% endif %}{% endif %}
|
34
_layouts/default.html
Normal file
34
_layouts/default.html
Normal file
@ -0,0 +1,34 @@
|
||||
---
|
||||
---
|
||||
|
||||
<!doctype html>
|
||||
<!--
|
||||
Minimal Mistakes Jekyll Theme 4.6.0 by Michael Rose
|
||||
Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
|
||||
Free for personal and commercial use under the MIT license
|
||||
https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt
|
||||
-->
|
||||
<html lang="{{ site.locale | slice: 0,2 | default: "en" }}" class="no-js">
|
||||
<head>
|
||||
{% include head.html %}
|
||||
{% include head/custom.html %}
|
||||
</head>
|
||||
|
||||
<body class="layout--{{ page.layout | default: layout.layout }}{% if page.classes or layout.classes %}{{ page.classes | default: layout.classes | join: ' ' | prepend: ' ' }}{% endif %}">
|
||||
|
||||
{% include browser-upgrade.html %}
|
||||
{% include masthead.html %}
|
||||
|
||||
{{ content }}
|
||||
|
||||
<div class="page__footer">
|
||||
<footer>
|
||||
{% include footer/custom.html %}
|
||||
{% include footer.html %}
|
||||
</footer>
|
||||
</div>
|
||||
|
||||
{% include scripts.html %}
|
||||
|
||||
</body>
|
||||
</html>
|
11
_layouts/home.html
Normal file
11
_layouts/home.html
Normal file
@ -0,0 +1,11 @@
|
||||
---
|
||||
layout: archive
|
||||
---
|
||||
|
||||
<h3 class="archive__subtitle">{{ site.data.ui-text[site.locale].recent_posts | default: "Recent Posts" }}</h3>
|
||||
|
||||
{% for post in paginator.posts %}
|
||||
{% include archive-single.html %}
|
||||
{% endfor %}
|
||||
|
||||
{% include paginator.html %}
|
85
_layouts/single-no-ads.html
Normal file
85
_layouts/single-no-ads.html
Normal file
@ -0,0 +1,85 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% elsif page.header.video.id and page.header.video.provider %}
|
||||
{% include page__hero_video.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
|
||||
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %}
|
||||
|
||||
<div class="page__inner-wrap">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<header>
|
||||
{% if page.title %}<h1 class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
|
||||
{% if page.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
|
||||
<section class="page__content" itemprop="text">
|
||||
{{ content }}
|
||||
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
|
||||
|
||||
</section>
|
||||
|
||||
<footer class="page__meta">
|
||||
{% if site.data.ui-text[site.locale].meta_label %}
|
||||
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
|
||||
{% endif %}
|
||||
{% include page__taxonomy.html %}
|
||||
{% if page.last_modified_at %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: "%B %d, %Y" }}</time></p>
|
||||
{% elsif page.date %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p>
|
||||
{% endif %}
|
||||
</footer>
|
||||
|
||||
{% if page.share %}{% include social-share.html %}{% endif %}
|
||||
|
||||
{% include post_pagination.html %}
|
||||
</div>
|
||||
|
||||
{% if site.comments.provider and page.comments %}
|
||||
{% include comments.html %}
|
||||
{% endif %}
|
||||
</article>
|
||||
|
||||
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
|
||||
{% if page.id and page.related and site.related_posts.size > 0 %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.related_posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
|
||||
{% elsif page.id and page.related %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
163
_layouts/single.html
Normal file
163
_layouts/single.html
Normal file
@ -0,0 +1,163 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% elsif page.header.video.id and page.header.video.provider %}
|
||||
{% include page__hero_video.html %}
|
||||
{% endif %}
|
||||
|
||||
{% if page.url != "/" and site.breadcrumbs %}
|
||||
{% unless paginator %}
|
||||
{% include breadcrumbs.html %}
|
||||
{% endunless %}
|
||||
{% endif %}
|
||||
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-6670011780914577",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-8267943526926430",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="main" role="main">
|
||||
{% include sidebar.html %}
|
||||
|
||||
<article class="page" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
|
||||
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %}
|
||||
|
||||
<div class="page__inner-wrap">
|
||||
{% unless page.header.overlay_color or page.header.overlay_image %}
|
||||
<header>
|
||||
{% if page.title %}<h1 class="page__title" itemprop="headline">{{ page.title | markdownify | remove: "<p>" | remove: "</p>" }}</h1>{% endif %}
|
||||
{% if page.read_time %}
|
||||
<p class="page__meta"><i class="fa fa-clock-o" aria-hidden="true"></i> {% include read-time.html %}</p>
|
||||
{% endif %}
|
||||
</header>
|
||||
{% endunless %}
|
||||
|
||||
<section class="page__content" itemprop="text">
|
||||
|
||||
<hr>
|
||||
|
||||
{% assign split_path = page.path | split: "/" %}
|
||||
{% assign locale = split_path[1] %}
|
||||
|
||||
{% for link in site.data.navigation[locale].bottom %}
|
||||
{% if link.url contains 'http' %}
|
||||
{% assign domain = '' %}
|
||||
{% else %}
|
||||
{% assign domain = site.url | append: site.baseurl %}
|
||||
{% endif %}
|
||||
<div class ="notice"><b>{{ link.title }}</b></div>
|
||||
{% endfor %}
|
||||
|
||||
<hr>
|
||||
|
||||
<center>
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-6670011780914577"
|
||||
data-ad-slot="7670623049"
|
||||
data-ad-format="auto">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-8267943526926430"
|
||||
data-ad-slot="8645643953"
|
||||
data-ad-format="auto">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</center>
|
||||
|
||||
<hr>
|
||||
|
||||
{{ content }}
|
||||
{% if page.link %}<div><a href="{{ page.link }}" class="btn btn--primary">{{ site.data.ui-text[site.locale].ext_link_label | default: "Direct Link" }}</a></div>{% endif %}
|
||||
|
||||
<hr>
|
||||
|
||||
<center>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-6670011780914577"
|
||||
data-ad-slot="9147356245"
|
||||
data-ad-format="horizontal">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-8267943526926430"
|
||||
data-ad-slot="8645643953"
|
||||
data-ad-format="horizontal">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</center>
|
||||
|
||||
</section>
|
||||
|
||||
<footer class="page__meta">
|
||||
{% if site.data.ui-text[site.locale].meta_label %}
|
||||
<h4 class="page__meta-title">{{ site.data.ui-text[site.locale].meta_label }}</h4>
|
||||
{% endif %}
|
||||
{% include page__taxonomy.html %}
|
||||
{% if page.last_modified_at %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.last_modified_at | date: "%Y-%m-%d" }}">{{ page.last_modified_at | date: "%B %d, %Y" }}</time></p>
|
||||
{% elsif page.date %}
|
||||
<p class="page__date"><strong><i class="fa fa-fw fa-calendar" aria-hidden="true"></i> {{ site.data.ui-text[site.locale].date_label | default: "Updated:" }}</strong> <time datetime="{{ page.date | date_to_xmlschema }}">{{ page.date | date: "%B %d, %Y" }}</time></p>
|
||||
{% endif %}
|
||||
</footer>
|
||||
|
||||
{% if page.share %}{% include social-share.html %}{% endif %}
|
||||
|
||||
{% include post_pagination.html %}
|
||||
</div>
|
||||
|
||||
{% if site.comments.provider and page.comments %}
|
||||
{% include comments.html %}
|
||||
{% endif %}
|
||||
</article>
|
||||
|
||||
{% comment %}<!-- only show related on a post page when `related: true` -->{% endcomment %}
|
||||
{% if page.id and page.related and site.related_posts.size > 0 %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.related_posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% comment %}<!-- otherwise show recent posts if no related when `related: true` -->{% endcomment %}
|
||||
{% elsif page.id and page.related %}
|
||||
<div class="page__related">
|
||||
<h4 class="page__related-title">{{ site.data.ui-text[site.locale].related_label | default: "You May Also Enjoy" }}</h4>
|
||||
<div class="grid__wrapper">
|
||||
{% for post in site.posts limit:4 %}
|
||||
{% include archive-single.html type="grid" %}
|
||||
{% endfor %}
|
||||
</div>
|
||||
</div>
|
||||
{% endif %}
|
||||
</div>
|
90
_layouts/splash.html
Normal file
90
_layouts/splash.html
Normal file
@ -0,0 +1,90 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
|
||||
{% if page.header.overlay_color or page.header.overlay_image or page.header.image %}
|
||||
{% include page__hero.html %}
|
||||
{% elsif page.header.video.id and page.header.video.provider %}
|
||||
{% include page__hero_video.html %}
|
||||
{% endif %}
|
||||
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-6670011780914577",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({
|
||||
google_ad_client: "ca-pub-8267943526926430",
|
||||
enable_page_level_ads: true
|
||||
});
|
||||
</script>
|
||||
|
||||
<div id="main" role="main">
|
||||
<article class="splash" itemscope itemtype="http://schema.org/CreativeWork">
|
||||
{% if page.title %}<meta itemprop="headline" content="{{ page.title | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.excerpt %}<meta itemprop="description" content="{{ page.excerpt | markdownify | strip_html | strip_newlines | escape_once }}">{% endif %}
|
||||
{% if page.date %}<meta itemprop="datePublished" content="{{ page.date | date: "%B %d, %Y" }}">{% endif %}
|
||||
{% if page.last_modified_at %}<meta itemprop="dateModified" content="{{ page.last_modified_at | date: "%B %d, %Y" }}">{% endif %}
|
||||
|
||||
<section class="page__content" itemprop="text">
|
||||
<hr>
|
||||
|
||||
{% assign split_path = page.path | split: "/" %}
|
||||
{% assign locale = split_path[1] %}
|
||||
|
||||
{% for link in site.data.navigation[locale].bottom %}
|
||||
{% if link.url contains 'http' %}
|
||||
{% assign domain = '' %}
|
||||
{% else %}
|
||||
{% assign domain = site.url | append: site.baseurl %}
|
||||
{% endif %}
|
||||
<div class ="notice"><b>{{ link.title }}</b></div>
|
||||
{% endfor %}
|
||||
|
||||
<hr>
|
||||
|
||||
<center>
|
||||
<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-6670011780914577"
|
||||
data-ad-slot="7670623049"
|
||||
data-ad-format="auto"></ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</center>
|
||||
|
||||
<hr>
|
||||
|
||||
{{ content }}
|
||||
</section>
|
||||
</article>
|
||||
|
||||
<hr>
|
||||
|
||||
<center>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-8267943526926430"
|
||||
data-ad-slot="8645643953"
|
||||
data-ad-format="horizontal">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
<ins class="adsbygoogle"
|
||||
style="display:block"
|
||||
data-ad-client="ca-pub-6670011780914577"
|
||||
data-ad-slot="9147356245"
|
||||
data-ad-format="horizontal">
|
||||
</ins>
|
||||
<script>
|
||||
(adsbygoogle = window.adsbygoogle || []).push({});
|
||||
</script>
|
||||
</center>
|
||||
|
||||
</div>
|
9
_pages/en_US/404.txt
Normal file
9
_pages/en_US/404.txt
Normal file
@ -0,0 +1,9 @@
|
||||
---
|
||||
title: "Page Not Found" #
|
||||
layout: single-no-ads
|
||||
excerpt: "Page not found. Your pixels are in another canvas." #
|
||||
sitemap: false
|
||||
---
|
||||
|
||||
Sorry, but the page you were trying to view does not exist.
|
||||
{: .notice--info}
|
80
_pages/en_US/adrenaline.txt
Normal file
80
_pages/en_US/adrenaline.txt
Normal file
@ -0,0 +1,80 @@
|
||||
---
|
||||
title: "Installing Adrenaline"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
Adrenaline is a homebrew application which modifies the official PSP Emulator of the PS Vita (TV) to run a PSP 6.61 custom firmware.
|
||||
|
||||
Additionally, adrenaline also enables access to a full PSP home menu running under the official PSP Emulator.
|
||||
|
||||
You must have already installed VitaShell to use this.
|
||||
{: .notice--info}
|
||||
|
||||
### What You Need
|
||||
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
* The latest release of [Adrenaline](https://github.com/TheOfficialFloW/Adrenaline/releases/latest)
|
||||
* The latest release of [PSP Homebrew Browser]({{ "/assets/files/PSPhbb_dev.vpk" | absolute_url }}){:download="config.txt"}
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Launch the VitaShell application
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, navigate to `ux0:` -> `data/`
|
||||
1. Transfer `Adrenaline.vpk` to the `data` folder
|
||||
1. Transfer `PSPhbb_dev.vpk` to the `data` folder
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
|
||||
#### Section II - Installing VPKs
|
||||
|
||||
1. On your device, navigate to `ux0:` -> `data/`
|
||||
1. Press (Square) on each of the `.vpk` files to mark them
|
||||
1. Press (Triangle) to open the menu, then select "More" -> "Install all" to install the marked files
|
||||
1. Press (Cross) to confirm the install
|
||||
1. Press (Cross) to continue the install each time you are prompted about extended permissions
|
||||
1. Press (Triangle) to open the menu, then select "Delete" to delete the marked files
|
||||
1. Press (Cross) to confirm the deletion
|
||||
|
||||
#### Section III - Modifying Plugin Config
|
||||
|
||||
1. Press (Circle) to return to `ux0:`
|
||||
1. Navigate to `tai/`
|
||||
1. Press (Cross) on `config.txt` to open it in the editor
|
||||
1. Highlight the `*KERNEL` line with the cursor
|
||||
1. Press (Triangle) to open the menu, then select "Insert empty line"
|
||||
1. Highlight the new blank line
|
||||
1. Press (Cross) to edit the line
|
||||
1. Enter the following text:
|
||||
+ `ux0:app/PSPEMUCFW/sce_module/adrenaline_kernel.skprx`
|
||||
1. Press (Circle) to close the editor
|
||||
1. When prompted, press (Cross) to save your modifications
|
||||
1. close the VitaShell application
|
||||
1. Reboot your device
|
||||
+ This is required to load the new kernel plugin added to `ux0:tai/config.txt`
|
||||
|
||||
#### Section IV - Installing PSP XMB
|
||||
|
||||
1. Launch the Adrenaline application
|
||||
1. Press (Cross) to download the PSP 6.61 firmware
|
||||
+ This process will take some time
|
||||
+ If you cancel the download before it completes, you will need to reboot before you can restart the download
|
||||
+ The Adrenaline application will close automatically when the download is complete
|
||||
1. Re-launch the Adrenaline application
|
||||
1. Press (Cross) to install PSP 6.61 the firmware
|
||||
1. Press (Cross) to boot the PSP home menu
|
||||
+ The PSP home menu is also known as the [XrossMediaBar](https://wikipedia.org/wiki/XrossMediaBar) ("XMB")
|
||||
1. Perform the PSP Initial Setup
|
||||
1. To close the PSP Emulator, hold the (PS) button to open the menu, then select `Settings` -> `Exit PspEmu Application`
|
||||
|
||||
___
|
||||
|
||||
Adrenaline and the PSP Homebrew Browser have been successfully installed.
|
||||
{: .notice--success}
|
112
_pages/en_US/configuring-h-encore.txt
Normal file
112
_pages/en_US/configuring-h-encore.txt
Normal file
@ -0,0 +1,112 @@
|
||||
---
|
||||
title: "Configuring h-encore"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
Now that the h-encore exploit is installed on your device (either through the Windows or Linux / Mac method), we will configure it for easy homebrew access.
|
||||
|
||||
For devices on firmware version 3.65, there is additionally an optional section for installing the HENkaku Ensō exploit.
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Configuring h-encore
|
||||
|
||||
1. Launch the h-encore application
|
||||
1. If prompted about trophies, select "Yes"
|
||||
1. If the exploit was successful, you will now see the h-encore menu
|
||||
+ If the exploit is stuck on a white screen, simply close the application (which will cause a crash and reboot your device), then try again
|
||||
+ If it is still stuck, hold the power button down for over 30 seconds to force a reboot, then try again
|
||||
1. Select "Install HENkaku"
|
||||
+ This will install the HENkaku exploit and enable homebrew access until the next reboot
|
||||
1. Select "Download VitaShell"
|
||||
+ This will install the VitaShell homebrew application for managing your device's filesystem
|
||||
+ VitaShell (and all homebrew applications in general) will remain installed after a reboot, but will give an error on launch if the HENkaku exploit is not active
|
||||
1. Select "Exit"
|
||||
|
||||
#### Section II - Configuring HENkaku
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Check "Enable Unsafe Homebrew"
|
||||
1. Return to HENkaku Settings menu
|
||||
1. close the Settings application
|
||||
|
||||
#### Section III - Disabling Trophy Warning
|
||||
|
||||
{% capture notice-1 %}
|
||||
This is an optional section which will disable the trophy warning that appears when h-encore is launched.
|
||||
|
||||
This section is not recommended for devices on firmware version 3.65 as HENkaku Ensō can replace h-encore on those systems.
|
||||
{% endcapture %}
|
||||
|
||||
<div class="notice--info">{{ notice-1 | markdownify }}</div>
|
||||
|
||||
1. Launch the VitaShell application
|
||||
1. Navigate to `ux0:` -> `user/` -> `00/` -> `savedata`
|
||||
1. Press (Triangle) on the `PCSG90096` folder to open the menu, then select "Open decrypted"
|
||||
+ If you see `sce_pfs`, you did not open the folder using the correct menu option
|
||||
1. Press (Triangle) on the `system.dat` file to open the menu, then select "Copy"
|
||||
1. Press (Cross) to dismiss the copied file dialogue box
|
||||
1. Press (Circle) to return to the `savedata` folder
|
||||
1. Press (Triangle) to open the menu, then select "Paste" to paste `system.dat` in the current folder
|
||||
1. Press (Square) to un-mark `system.dat`
|
||||
1. Press (Triangle) on the `PCSG90096` folder to open the menu, then select "Delete" to delete the folder
|
||||
1. Press (Cross) to confirm the deletion
|
||||
1. Close the VitaShell application
|
||||
1. Launch the h-encore application
|
||||
1. When the "Bitter Smile" main menu appears, close the h-encore application
|
||||
1. Launch the VitaShell application
|
||||
1. Press (Triangle) on the `system.dat` file to open the menu, then select "Copy"
|
||||
1. Press (Cross) to dismiss the copied file dialogue box
|
||||
1. Press (Triangle) on the `PCSG90096` folder to open the menu, then select "Open decrypted"
|
||||
+ If you see `sce_pfs`, you did not open the folder using the correct menu option
|
||||
1. Press (Triangle) to open the menu, then select "Paste" to paste `system.dat` in the current folder
|
||||
1. Press (Circle) to return to the `savedata` folder
|
||||
1. Press (Triangle) on the `system.dat` file to open the menu, then select "Delete" to delete the file
|
||||
1. Press (Cross) to confirm the deletion
|
||||
1. Close the VitaShell application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Finalizing Setup](finalizing-setup)
|
||||
{: .notice--primary}
|
||||
|
||||
___
|
||||
|
||||
The following is an optional section for devices on firmware version 3.65 which will install the HENkaku Ensō exploit.
|
||||
|
||||
HENkaku Ensō is a complete CFW solution for the PS Vita (TV) which allows for convenient homebrew access on your device by running an exploit at boot-time to setup the HENkaku homebrew environment. It is more convenient than h-encore as it does not require you to manually trigger an exploit on your device after every reboot.
|
||||
|
||||
#### Section IV - Installing HENkaku Ensō
|
||||
|
||||
##### What You Need
|
||||
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
* The latest release of [VitaShell](https://github.com/TheOfficialFloW/VitaShell/releases/latest/)
|
||||
|
||||
##### Instructions
|
||||
|
||||
1. Launch the VitaShell application
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, navigate to `ux0:` -> `data/`
|
||||
1. Transfer `enso.vpk` to the `data` folder
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
1. On your device, navigate to `ux0:` -> `data/`
|
||||
1. Press (Cross) on `enso.vpk` to install the file
|
||||
1. Press (Cross) to confirm the install
|
||||
1. Press (Cross) to continue the install each time you are prompted about extended permissions
|
||||
1. Press (Triangle) to open the menu, then select "Delete" to delete the marked files
|
||||
1. Press (Cross) to confirm the deletion
|
||||
1. Close the VitaShell application
|
||||
1. Open the Ensō application
|
||||
1. Press (Circle) to accept the terms
|
||||
1. Press (Cross) to install HENkaku Ensō
|
||||
+ This process will take some time
|
||||
+ When the process has completed, press any button to reboot your device
|
22
_pages/en_US/credits.txt
Normal file
22
_pages/en_US/credits.txt
Normal file
@ -0,0 +1,22 @@
|
||||
---
|
||||
title: "Credits"
|
||||
---
|
||||
|
||||
**Special thanks to all of [the translators](https://crowdin.com/project/vita-guide) for being awesome!**
|
||||
{: .notice--primary}
|
||||
|
||||
If we forgot you here, contact us and we'll add your name.
|
||||
|
||||
{% capture notice-1 %}
|
||||
|
||||
+ codestation
|
||||
+ Davee
|
||||
+ mmozeiko
|
||||
+ Proxima
|
||||
+ TheFloW
|
||||
+ xyz
|
||||
+ YifanLu
|
||||
|
||||
{% endcapture %}
|
||||
|
||||
<div class="notice--info">{{ notice-1 | markdownify }}</div>
|
27
_pages/en_US/donations.txt
Normal file
27
_pages/en_US/donations.txt
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
title: "Donations" #
|
||||
layout: single-no-ads
|
||||
---
|
||||
|
||||
### Plailect
|
||||
|
||||
[![Paypal]({{ "/images/paypal_white.png" | absolute_url }}){:height="72px" width="256px"}{: style="padding-bottom: .35em"}](https://www.paypal.me/plailectguides/15){: .align-center}
|
||||
plailect@gmail.com
|
||||
{: .text-center}
|
||||
{: .notice--info}
|
||||
|
||||
[![Bitcoin]({{ "/images/bitcoin_white.png" | absolute_url }}){:height="73px" width="256px"}{: style="padding-bottom: .35em"}](bitcoin:3MtzjaRNrcG57RbNxJegcs8UdtaEfmSZLp){: .align-center}
|
||||
3MtzjaRNrcG57RbNxJegcs8UdtaEfmSZLp
|
||||
{: .text-center}
|
||||
{: .notice--info}
|
||||
|
||||
[![Ethereum]({{ "/images/ethereum_white.png" | absolute_url }}){:height="64px" width="256px"}{: style="padding-bottom: .35em"}](https://www.ethereum.org/){: .align-center}
|
||||
0x608C5554D2C53698aA7DFFc7e64BF37f7bebb475
|
||||
{: .text-center}
|
||||
{: .notice--info}
|
||||
|
||||
### emiyl
|
||||
|
||||
[![Paypal]({{ "/images/paypal_white.png" | absolute_url }}){:height="72px" width="256px"}{: style="padding-bottom: .35em"}](https://www.paypal.me/emiyl/15){: .align-center}
|
||||
{: .text-center}
|
||||
{: .notice--info}
|
27
_pages/en_US/faq.txt
Normal file
27
_pages/en_US/faq.txt
Normal file
@ -0,0 +1,27 @@
|
||||
---
|
||||
title: "FAQ"
|
||||
---
|
||||
|
||||
<a name="faq_latestfw" />**Q:** *I am on the latest system version, is my device hackable?*
|
||||
**A:** Yes!
|
||||
|
||||
<a name="faq_downgrade" />**Q:** *Can I downgrade my Vita?*
|
||||
**A:** No.
|
||||
|
||||
<a name="faq_update" />**Q:** *Is it safe to update a Vita with CFW?*
|
||||
**A:** No! You must always ensure that you have blocked updates as specified at the end of [Finalizing Setup](finalizing-setup).
|
||||
|
||||
<a name="faq_updates" />**Q:** *Now that Sony has ended production of the Vita, does that mean no more updates will be released?*
|
||||
**A:** This is not necessarily the case. The firmware version 3.68 was released six months after the previous update (at which point it was assumed no new updates would be released).
|
||||
|
||||
<a name="faq_risky" />**Q:** *How risky is hacking my console?*
|
||||
**A:** Bricks are *basically* impossible unless you ignore instructions.
|
||||
|
||||
<a name="faq_homebrew" />**Q:** *Can I run awesome homebrew and emulators with this?*
|
||||
**A:** Yes! This enables any custom user-made homebrew to be played on your device.
|
||||
|
||||
<a name="faq_support" />**Q:** *Where should I go for support?*
|
||||
**A:** For support, ask for help at [Vita Hacking on Discord](https://discord.gg/JXEKeg6).
|
||||
|
||||
<a name="faq_nopc" />**Q:** *Can I do this without a computer?*
|
||||
**A:** No! You must have a PC to complete this guide.
|
39
_pages/en_US/file-extensions-(windows).txt
Normal file
39
_pages/en_US/file-extensions-(windows).txt
Normal file
@ -0,0 +1,39 @@
|
||||
---
|
||||
title: "File Extensions (Windows)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
This is an add-on section for disabling Windows's default behavior of hiding file extensions.
|
||||
|
||||
This will make it easier for you to find the referenced files in the rest of this guide.
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Windows 10 / 8.1 / 8
|
||||
|
||||
1. Launch File Explorer by opening any directory, such as your SD card directory
|
||||
1. Click the "View" option on the ribbon menu
|
||||
1. Check the box labeled "File name extensions"
|
||||
|
||||
![]({{ "/images/screenshots/windows-10-file-extensions.png" | absolute_url }})
|
||||
{: .notice--info}
|
||||
|
||||
#### Windows 7
|
||||
|
||||
1. Open the start menu by clicking on it or using the Windows key
|
||||
1. Search for "Folder Options" and select the corresponding result
|
||||
|
||||
![]({{ "/images/screenshots/windows-7-folder-options-start-menu.png" | absolute_url }})
|
||||
{: .notice--info}
|
||||
|
||||
1. Click the "View" option at the top of the Folder Options menu
|
||||
1. Uncheck the box labeled "Hide extensions for known file types"
|
||||
|
||||
![]({{ "/images/screenshots/windows-7-folder-options.png" | absolute_url }})
|
||||
{: .notice--info}
|
||||
|
||||
___
|
||||
|
||||
### Return to [Get Started](get-started)
|
||||
{: .notice--primary}
|
136
_pages/en_US/finalizing-setup.txt
Normal file
136
_pages/en_US/finalizing-setup.txt
Normal file
@ -0,0 +1,136 @@
|
||||
---
|
||||
title: "Finalizing Setup"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
To make your homebrew setup more resilient to user-error, we will use an application called HBInjector to replace one of your device's system applications with VitaShell. This will allow VitaShell to survive even formatting the system.
|
||||
|
||||
When HBInjector is used, a backup of the original system application is created which will allow you to restore that application to normal at any time.
|
||||
|
||||
Note that, as part of the HBInjector injection process, the system database will be rebuilt which will cause your LiveArea layout to be reset.
|
||||
|
||||
In addition to installing VitaShell as a system application, we also setup applications and plugins such as the following:
|
||||
|
||||
+ **Vita Homebrew Browser** *(downloads and installs other homebrew applications)*
|
||||
+ **NoNpDrm** *(allows for decrypted games and applications to be used)*
|
||||
+ **DownloadEnabler** *(allows any file type to be downloaded with the browser)*
|
||||
+ **shellbat** *(displays exact battery percentage in the status bar)*
|
||||
|
||||
In order to install the necessary `.vpk` (content package) files on your device, we use the [File Transfer Protocol (FTP)](https://wikipedia.org/wiki/File_Transfer_Protocol) to copy the files to your device's memory card.
|
||||
|
||||
### What You Need
|
||||
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
* [config.txt]({{ "/assets/files/config.txt" | absolute_url }}){:download="config.txt"}
|
||||
* The latest release of [HBInjector](https://github.com/emiyl/HBInjector/releases/latest/)
|
||||
* The latest release of [Vita Homebrew Browser](https://github.com/devnoname120/vhbb/releases/latest)
|
||||
* The latest release of [NoNpDrm](https://github.com/TheOfficialFloW/NoNpDrm/releases/latest)
|
||||
* The latest release of [DownloadEnabler](https://github.com/TheOfficialFloW/DownloadEnabler/releases/latest)
|
||||
* The latest release of [shellbat](https://github.com/nowrep/vita-shellbat/releases/latest)
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Launch the VitaShell application
|
||||
1. Press (Start) to open the VitaShell settings
|
||||
1. Press (Cross) on "SELECT button" to change the mode to "FTP"
|
||||
+ Alternatively, you can leave this setting on "USB" and transfer all files via a USB cable for the remainder of this guide
|
||||
1. Press (Circle) to close the VitaShell settings
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, navigate to `ux0:` -> `data/`
|
||||
+ The `ux0:` partition corresponds to the memory card of your device (on the PS Vita 1000, this partition will always be the external memory card; on the PS Vita 2000 and PS TV, this partition will either be the external memory card if one is inserted, or the built-in memory card otherwise)
|
||||
+ The `ur0:` partition corresponds to the internal system memory which is always present on all devices (on the PS Vita 2000 and PS TV, this is *not* the same as the built-in memory card!))
|
||||
1. Transfer `HBInjector.vpk` to the `data` folder
|
||||
1. Transfer `VitaHBBrowser.vpk` to the `data` folder
|
||||
1. Using your FTP client, navigate to `ux0:` -> `tai/`
|
||||
1. Transfer `nonpdrm.skprx` to the `tai` folder
|
||||
1. Transfer `download_enabler.suprx` to the `tai` folder
|
||||
1. Transfer `shellbat.suprx` to the `tai` folder
|
||||
1. Transfer `config.txt` to the `tai` folder
|
||||
+ Overwrite (replace) the existing `config.txt` file
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
|
||||
#### Section II - Installing VPKs
|
||||
|
||||
1. On your device, navigate to `ux0:` -> `data/`
|
||||
1. Press (Square) on each of the `.vpk` files to mark them
|
||||
1. Press (Triangle) to open the menu, then select "More" -> "Install all" to install the marked files
|
||||
1. Press (Cross) to confirm the install
|
||||
1. Press (Cross) to continue the install each time you are prompted about extended permissions
|
||||
1. Press (Triangle) to open the menu, then select "Delete" to delete the marked files
|
||||
1. Press (Cross) to confirm the deletion
|
||||
1. close the VitaShell application
|
||||
1. Reboot your device
|
||||
+ This is required to load the new kernel plugins added to `ux0:tai/config.txt`
|
||||
+ To confirm that everything is working, you should now see a battery percentage in the status bar
|
||||
|
||||
#### Section III - Injecting VitaShell
|
||||
|
||||
1. Launch the HBInjector application
|
||||
1. Follow the on-screen instructions
|
||||
+ Select a system application you do not intend to use in the future (such as Calendar)
|
||||
+ A backup of the system application will be saved to `ux0:data/HBInjector/` on your device
|
||||
+ Transfer this backup to your computer using FTP, then make backups in multiple locations (such as online file storage)
|
||||
+ This backup will allow you to restore your system application to normal
|
||||
1. After your device has rebooted, you should notice that your battery percentage is now displayed in the status bar
|
||||
+ If this is not the case, you have not properly configured your plugins (ensure you copied `config.txt` to `ux0:tai/`)
|
||||
1. If desired, re-arrange your LiveArea screen back to the previous layout
|
||||
|
||||
#### Section IV - Blocking Updates
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `Network` -> `Wi-Fi Settings`
|
||||
+ Connect to a Wi-Fi network if you have not already done so
|
||||
1. Select your current connection
|
||||
+ This is signified by a green dot next to the network
|
||||
1. Select "Advanced Settings"
|
||||
1. Set "DNS Settings" to "Manual"
|
||||
1. Set "Primary DNS" to `212.47.229.76`
|
||||
1. Leave "Secondary DNS" blank
|
||||
1. Ensure "Proxy Server" is set to "Do Not Use"
|
||||
1. Return to the main Settings menu
|
||||
1. Navigate to `System` -> `Auto-Start Settings`
|
||||
1. Uncheck "Download Update File for System Software"
|
||||
1. Return to the main Settings menu
|
||||
|
||||
#### Section V - PSN Access
|
||||
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Check "Enable PSN spoofing"
|
||||
1. Check "Enable Version Spoofing"
|
||||
1. Navigate to "Spoofed Version"
|
||||
1. Enter "3.68" into the box
|
||||
+ Should a new firmware version be released in the future, you must change the spoofed version to match in order to access PSN
|
||||
1. Close the Settings application
|
||||
|
||||
#### Section VI - Cleanup
|
||||
|
||||
1. Launch the Content Manager application
|
||||
1. Select "Manage Content on Memory Card"
|
||||
1. Select "PS Vita"
|
||||
1. Delete the following applications if they exist (note that, depending on your install method, some or all of these applications may be missing):
|
||||
+ "3.65 HENkaku Enso Updater"
|
||||
+ "ensō"
|
||||
+ "molecularShell"
|
||||
1. Close the Content Manager application
|
||||
|
||||
___
|
||||
|
||||
You can now easily install new homebrew applications just by using Vita Homebrew Browser.
|
||||
{: .notice--info}
|
||||
|
||||
For information on replacing your Sony memory card with an alternative storage (such as a microSD card or USB drive), check out the [StorageMgr](storagemgr) page.
|
||||
{: .notice--success}
|
||||
|
||||
For information on installing CFW to the built-in PSP emulator, check out the [Adrenaline](adrenaline) page.
|
||||
{: .notice--success}
|
||||
|
||||
For information on uninstalling CFW safely and returning to stock, check out the [Uninstall CFW](uninstall-cfw) page.
|
||||
{: .notice--warning}
|
58
_pages/en_US/get-started.txt
Normal file
58
_pages/en_US/get-started.txt
Normal file
@ -0,0 +1,58 @@
|
||||
---
|
||||
title: "Get Started"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
Different device versions will require different steps to achieve the end goal of Custom Firmware. This page will help you find where to start for your device.
|
||||
|
||||
Before starting, Windows users should enable the option to show file extensions using [File Extensions (Windows)](file-extensions-(windows))!
|
||||
{: .notice--info}
|
||||
|
||||
Select the appropriate page for your version from the chart below. Note that the "from" and "to" fields are inclusive. This means that, for example, the "from 1.03 to 3.57" row includes 1.03, 3.57, and all versions in-between.
|
||||
|
||||
Your device version can be found under the System Information menu in the System category of the Settings application.
|
||||
|
||||
![]({{ "/images/screenshots/system-version.png" | absolute_url }})
|
||||
{: .notice--info}
|
||||
|
||||
### Version Table
|
||||
|
||||
<table>
|
||||
<colgroup>
|
||||
<col span="1" style="width: 10%;">
|
||||
<col span="1" style="width: 10%;">
|
||||
<col span="1" style="width: 80%;">
|
||||
</colgroup>
|
||||
<thead>
|
||||
<tr>
|
||||
<th style="text-align: center; font-weight: bold;">From</th>
|
||||
<th style="text-align: center; font-weight: bold;">To</th>
|
||||
<th style="text-align: center; font-weight: bold;"></th>
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">1.03</td>
|
||||
<td style="text-align: center; font-weight: bold;">3.57</td>
|
||||
<td style="text-align: center; font-weight: bold;"><a href="updating-to-3.60">Updating to 3.60</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">3.60</td>
|
||||
<td style="text-align: center; font-weight: bold;">3.60</td>
|
||||
<td style="text-align: center; font-weight: bold;"><a href="installing-henkaku">Installing HENkaku</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">3.61</td>
|
||||
<td style="text-align: center; font-weight: bold;">3.63</td>
|
||||
<td style="text-align: center; font-weight: bold;"><a href="updating-to-3.65">Updating to 3.65</a></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td style="text-align: center; font-weight: bold;">3.65</td>
|
||||
<td style="text-align: center; font-weight: bold;">3.68</td>
|
||||
<td style="text-align: center; font-weight: bold;"><a href="installing-h-encore">Installing h-encore</a></td>
|
||||
</tr>
|
||||
</tbody>
|
||||
</table>
|
74
_pages/en_US/home.txt
Normal file
74
_pages/en_US/home.txt
Normal file
@ -0,0 +1,74 @@
|
||||
---
|
||||
layout: splash
|
||||
title: "Vita (TV) Hacks Guide" #
|
||||
header:
|
||||
overlay_color: "#5e616c" #
|
||||
overlay_image: images/home-page-feature.jpg
|
||||
overlay_filter: 0.5
|
||||
caption:
|
||||
|
||||
excerpt: "A complete guide to PS Vita (TV) custom firmware, <br /> from stock to HENkaku Ensō.<br />"
|
||||
---
|
||||
|
||||
For complete guides to homebrew and custom firmware for other devices, check out [Hacks.Guide](https://hacks.guide).
|
||||
{: .notice--primary}
|
||||
|
||||
___
|
||||
|
||||
Thoroughly read all of the introductory pages (including this one!) before proceeding.
|
||||
{: .notice--warning}
|
||||
|
||||
This guide is for retail (consumer purchased; not from the PlayStation Partner Program) consoles _only_!
|
||||
{: .notice--danger}
|
||||
|
||||
{% capture notice-1 %}
|
||||
This guide is available in other languages!
|
||||
Click the <i class="fa fa-language" aria-hidden="true"></i> icon at the top right of the page to change the language.
|
||||
Alternatively, click [here](https://crowdin.com/project/vita-guide) to help to keep these translations up to date.
|
||||
{% endcapture %}
|
||||
|
||||
<div class="notice--success">{{ notice-1 | markdownify }}</div>
|
||||
|
||||
## What is Homebrew?
|
||||
|
||||
[**Homebrew**](https://en.wikipedia.org/wiki/List_of_homebrew_video_games) usually refers to software that is not authorized by Sony. It allows you to run homebrew games, tools like save editing and backup, and emulators for various older systems.
|
||||
|
||||
In many cases, running homebrew on your device is 100% free using just the system browser.
|
||||
|
||||
## What is Custom Firmware?
|
||||
|
||||
**Custom Firmware** ("CFW") enables you to use more advanced hacks that userland homebrew can't easily do, in addition to anything homebrew can do. Essentially all homebrew solutions on the PS Vita (TV) include a CFW of some kind.
|
||||
|
||||
For information on how custom firmware works, please see [this post](https://yifan.lu/2017/07/31/henkaku-enso-bootloader-hack-for-vita/) by [Yifan Lu](https://twitter.com/yifanlu).
|
||||
|
||||
## What does this guide install?
|
||||
|
||||
This guide has the end goal of taking a completely unmodified PS Vita (TV) from stock firmware to custom firmware.
|
||||
|
||||
The best CFW solution currently available, HENkaku Ensō, allows for convenient homebrew access on your device by running an exploit at boot-time to setup the homebrew environment. It is more convenient than other CFW solutions (such as HENkaku or h-encore) as it does not require you to manually trigger an exploit on your device after every reboot.
|
||||
|
||||
HENkaku Ensō is available on all devices with firmware version 3.65 or below, while higher firmware version devices can use h-encore to achieve a similar (if less convenient) result.
|
||||
|
||||
## What can I do with Custom Firmware?
|
||||
|
||||
+ Customize your LiveArea Screen with user-created [themes](http://vstema.com/).
|
||||
+ Use "ROM hacks" for games that you own
|
||||
+ [Backup, edit, and restore](https://github.com/d3m3vilurr/vita-savemgr) saves for many games.
|
||||
+ Play games for older systems with various emulators, using RetroArch or other standalone emulators.
|
||||
+ Dump your game cards to a format you can install, and play them without needing the card.
|
||||
+ Certain games only: stream live gameplay to your PC wirelessly with Rincheat Streamer.
|
||||
+ Play your PSP games on your Vita with Adrenaline ePSP CFW
|
||||
|
||||
## What do I need to know before starting?
|
||||
|
||||
+ **Before beginning the guide, you must know the risks of Vita hacking: EVERY time you modify your system, there is always the potential for an UNRECOVERABLE brick. They're rare, but still a possibility so make sure you follow ALL directions EXACTLY.**
|
||||
+ This guide will work on all PS Vita, PS Vita Slim, and PS TV devices in all regions on firmwares from 1.03 to 3.68
|
||||
+ If everything goes according to plan, you will lose no data and end up with everything that you started with (games, PSN Account, saves, etc will be preserved).
|
||||
+ **Keep your device plugged in and charged throughout the entire process to avoid data loss or damage from an unexpected power-off!**
|
||||
+ The PS Vita 2000 and PS TV models are essentially identical to the original PS Vita 1000 in terms of software. All steps which say "PS Vita" also apply to other models unless otherwise specified.
|
||||
+ If you have a PS Vita 1000, you must also have an official Sony memory card (of any size) to follow this guide. This restriction does not apply to the PS Vita 2000 or PS TV as those devices have a built-in memory card.
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Get Started](get-started)
|
||||
{: .notice--primary}
|
93
_pages/en_US/installing-enso-(3.65).txt
Normal file
93
_pages/en_US/installing-enso-(3.65).txt
Normal file
@ -0,0 +1,93 @@
|
||||
---
|
||||
title: "Installing Ensō (3.65)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
These steps are for updating a HENkaku 3.60 device to a 3.65 HENkaku Ensō device. If you have a 3.60 HENkaku Ensō device and are trying to update to a 3.65 HENkaku Ensō device, follow [Updating to 3.65 (Ensō](updating-to-3.65-(enso)).
|
||||
{: .notice--warning}
|
||||
|
||||
HENkaku Ensō is a complete CFW solution for the PS Vita (TV) which allows for convenient homebrew access on your device by running an exploit at boot-time to setup the HENkaku homebrew environment. It is more convenient than HENkaku as it does not require you to manually trigger an exploit on your device after every reboot.
|
||||
|
||||
In addition to installing HENkaku Ensō, we will also update your PS Vita (TV) to the firmware version 3.65 which will allow you to access the PS Store, use online features, and play newer games which require newer firmware versions.
|
||||
|
||||
Note that updating your device to the firmware version 3.65 will render the standard HENkaku exploit unusable. Should you remove HENkaku Ensō for some reason, you will need to follow [Installing h-encore](installing-h-encore) to reinstall it.
|
||||
|
||||
In order to install the necessary `.vpk` (content package) files on your device, we use the [File Transfer Protocol (FTP)](https://wikipedia.org/wiki/File_Transfer_Protocol) to copy the files to your device's memory card.
|
||||
|
||||
### What You Need
|
||||
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
* The latest release of [VitaShell](https://github.com/TheOfficialFloW/VitaShell/releases/latest/)
|
||||
* The latest release of [update365](https://github.com/TheOfficialFloW/update365/releases/latest) *(the `.PUP` and `.vpk` files)*
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Launch the molecularShell application
|
||||
+ This is a homebrew application for managing your device's filesystem
|
||||
+ We will soon replace molecularShell with VitaShell, which is a newer version of the same application
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, navigate to `ux0:` -> `data/`
|
||||
1. Transfer `VitaShell.vpk` to the `data` folder
|
||||
1. Transfer `updater.vpk` to the `data` folder
|
||||
1. Transfer `PSP2UPDAT.PUP` to the `data` folder
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
|
||||
#### Section II - Installing VPKs
|
||||
|
||||
1. On your device, navigate to `ux0:` -> `data/`
|
||||
1. Press (Square) on each of the `.vpk` files to mark them
|
||||
1. Press (Triangle) to open the menu, then select "More" -> "Install all" to install the marked files
|
||||
1. Press (Cross) to confirm the install
|
||||
1. Press (Cross) to continue the install each time you are prompted about extended permissions
|
||||
1. Press (Triangle) to open the menu, then select "Delete" to delete the marked files
|
||||
1. Press (Cross) to confirm the deletion
|
||||
|
||||
#### Section III - Moving PUP
|
||||
|
||||
1. Press (Triangle) on the `PSP2UPDAT.PUP` file to open the menu, then select "Move"
|
||||
1. Press (Cross) to dismiss the copied file dialogue box
|
||||
1. Press (Circle) to return to `ux0:`
|
||||
1. Navigate to `app` -> `UPDATE365/`
|
||||
1. Press (Triangle) to open the menu, then select "Paste" to move the `PSP2UPDAT.PUP` file to the current directory
|
||||
1. Press (Cross) to dismiss the copied file dialogue box
|
||||
1. close the molecularShell application
|
||||
|
||||
#### Section IV - Unlinking Memory Card
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Uncheck "Enable PSN Spoofing"
|
||||
1. Select "Unlink Memory Card"
|
||||
+ If you do not unlink your memory card, the card will need to be formatted before it can be used on 3.65
|
||||
|
||||
#### Section V - Installing HENkaku Ensō + 3.65
|
||||
|
||||
1. Reboot your device
|
||||
+ This is *required* to ensure no other kernel modules are running when the update begins
|
||||
1. Ensure your device's battery is at least 50% charged
|
||||
1. Launch the browser and re-install HENkaku
|
||||
+ For most people, simply opening the browser at this point will automatically start the HENkaku re-installation
|
||||
+ If you get an error and cannot proceed, [follow this troubleshooting guide](troubleshooting#a-browser-based-exploit-is-not-working)
|
||||
1. Launch the HENkaku Ensō 3.65 Update application
|
||||
1. Follow the on-screen instructions
|
||||
1. When your device reboots, you should see the Team Molecule boot-logo indicating your device is now on HENkaku Ensō 3.65
|
||||
|
||||
#### Section VI - Configuring HENkaku
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Check "Enable Unsafe Homebrew"
|
||||
1. Return to HENkaku Settings menu
|
||||
1. close the Settings application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Finalizing Setup](finalizing-setup)
|
||||
{: .notice--primary}
|
84
_pages/en_US/installing-h-encore-(linux-mac).txt
Normal file
84
_pages/en_US/installing-h-encore-(linux-mac).txt
Normal file
@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Installing h-encore (Linux / Mac)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This method requires a Linux or Mac computer.
|
||||
|
||||
The h-encore installation is performed manually and requires usage of the command line.
|
||||
|
||||
Before proceeding, ensure you have read all of the information on [Installing h-encore](installing-h-encore)
|
||||
|
||||
### What You Need
|
||||
|
||||
* The `.pkg` format demo of [Bitter Smile](http://ares.dl.playstation.net/cdn/JP0741/PCSG90096_00/xGMrXOkORxWRyqzLMihZPqsXAbAXLzvAdJFqtPJLAZTgOcqJobxQAhLNbgiFydVlcmVOrpZKklOYxizQCRpiLfjeROuWivGXfwgkq.pkg)
|
||||
* The latest release of [h-encore](https://github.com/TheOfficialFloW/h-encore/releases/latest)
|
||||
* The latest release of [psvimgtools](https://github.com/yifanlu/psvimgtools/releases/latest) *(the `.zip` file for your OS)*
|
||||
* The latest version of [pkg2zip](https://github.com/mmozeiko/pkg2zip/archive/master.zip)
|
||||
+ You will need to manually compile pkg2zip by following the [readme](https://github.com/mmozeiko/pkg2zip/blob/master/README.md#building)
|
||||
* The latest release of [QCMA](https://github.com/codestation/qcma/releases/latest)
|
||||
+ Uninstall the official Sony CMA if it is already installed
|
||||
+ MacOS users should download the "noffmpgeg" version of QCMA
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Install and launch QCMA on your computer if you have not already
|
||||
1. Copy the contents of the auto h-encore `.zip` to a folder on your computer
|
||||
1. Launch the Content Manager application on your device
|
||||
1. Select "Copy Content"
|
||||
1. Select "PC"
|
||||
1. Select the method you wish to use to connect to QCMA
|
||||
+ If you are prompted to log-in to a PlayStation Network Account, do so
|
||||
+ If you do not have a PlayStation Network Account, create one
|
||||
1. Select / register your computer if prompted
|
||||
|
||||
#### Section II - Installing h-encore
|
||||
|
||||
1. Open [http://cma.henkaku.xyz/] on your computer
|
||||
1. Navigate to the `PS Vita/APP/` folder on your computer using the file explorer
|
||||
+ By default, this directory will be in the `Documents` folder on your computer
|
||||
+ If you cannot find it, check the QCMA "Applications / Backups" setting
|
||||
1. Copy the name of the folder in this directory, then paste it into the "AID" box on the CMA website
|
||||
+ Here is an example AID: `ec8d45ec9c055609`
|
||||
1. Select "Submit" to generate the corresponding key
|
||||
+ Keep this page open, you will need this key soon
|
||||
+ Here is an example key: `488d3ff6cce7a9ef1be6da8338c7d18db18147c3255fa4d50596568555687174`
|
||||
1. Copy the `h-encore` folder from the h-encore `.zip` to a folder on your computer
|
||||
1. Copy the contents of the psvimgtools `.zip` to the `h-encore` folder
|
||||
1. Copy the compiled `pkg2zip` binary to the `h-encore` folder
|
||||
1. Move the Bitter Smile `.pkg` file to the `h-encore` folder
|
||||
1. Open a terminal window
|
||||
1. `cd` into the `h-encore` directory
|
||||
1. Run `./pkg2zip -x *.pkg`
|
||||
1. Run `mv app/PCSG90096/* app/ux0_temp_game_PCSG90096_app_PCSG90096/`
|
||||
1. Run `cp app/ux0_temp_game_PCSG90096_app_PCSG90096/sce_sys/package/temp.bin license/ux0_temp_game_PCSG90096_license_app_PCSG90096/6488b73b912a753a492e2714e9b38bc7.rif`
|
||||
1. Run `./psvimg-create -n app -K YOUR_KEY app PCSG90096/app`
|
||||
+ Replace "YOUR_KEY" with the key we generated earlier
|
||||
1. Run `./psvimg-create -n appmeta -K YOUR_KEY appmeta PCSG90096/appmeta`
|
||||
1. Run `./psvimg-create -n license -K YOUR_KEY license PCSG90096/license`
|
||||
1. Run `./psvimg-create -n savedata -K YOUR_KEY savedata PCSG90096/savedata`
|
||||
1. Close your terminal window
|
||||
1. Copy the `h-encore/PCSG90096` folder to the `PS Vita/APP/YOUR_AID/` folder on your computer using the file explorer
|
||||
|
||||
#### Section III - QCMA Transfer
|
||||
|
||||
1. Right-click the QCMA icon in the system tray, then select "Refresh database"
|
||||
1. In the Content Manager application on your device, select "PC -> PS Vita System"
|
||||
1. Select "Applications"
|
||||
1. Select "PS Vita"
|
||||
1. Select "h-encore"
|
||||
1. Select "Copy"
|
||||
1. Select "OK"
|
||||
+ The h-encore exploit will be copied to your device
|
||||
+ This process will take some time
|
||||
1. Close the Content Manager application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Configuring h-encore](configuring-h-encore)
|
||||
{: .notice--primary}
|
67
_pages/en_US/installing-h-encore-(windows-auto).txt
Normal file
67
_pages/en_US/installing-h-encore-(windows-auto).txt
Normal file
@ -0,0 +1,67 @@
|
||||
---
|
||||
title: "Installing h-encore (Windows Auto)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This method requires a Windows computer.
|
||||
|
||||
The "auto h-encore" tool is used to automate a portion of the h-encore installation.
|
||||
|
||||
Before proceeding, ensure you have read all of the information on [Installing h-encore](installing-h-encore)
|
||||
|
||||
### What You Need
|
||||
|
||||
* The latest release of [auto-h-encore](https://github.com/noahc3/auto-h-encore/releases/latest)
|
||||
* The latest release of [QCMA](https://github.com/codestation/qcma/releases/latest)
|
||||
+ Uninstall the official Sony CMA if it is already installed
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Install and launch QCMA on your computer if you have not already
|
||||
1. Copy the contents of the auto h-encore `.zip` to a folder on your computer
|
||||
1. Launch the Content Manager application on your device
|
||||
1. Select "Copy Content"
|
||||
1. Select "PC"
|
||||
1. Select the method you wish to use to connect to QCMA
|
||||
+ If you are prompted to log-in to a PlayStation Network Account, do so
|
||||
+ If you do not have a PlayStation Network Account, create one
|
||||
1. Select / register your computer if prompted
|
||||
|
||||
#### Section II - auto h-encore
|
||||
|
||||
1. Launch auto h-encore on your computer
|
||||
1. In auto h-encore, select "Browse", then select the `PS Vita` directory on your computer and press "OK"
|
||||
+ By default, this directory will be in the `Documents` folder on your computer
|
||||
+ If you cannot find it, check the QCMA "Applications / Backups" setting by right-clicking the QCMA icon in the system tray, then selecting "Settings"
|
||||
+ The "QCMA PS Vita directory" box should look something like `C:\Users\username\Documents\PS Vita`
|
||||
1. Navigate to the `PS Vita\APP\` folder on your computer using the file explorer
|
||||
1. Copy the name of the folder in this directory, then paste it into the "Account ID (AID)" box in auto h-encore
|
||||
+ Here is an example AID: `ec8d45ec9c055609`
|
||||
1. Select "Start"
|
||||
+ This process will take some time
|
||||
+ If you get an error, ensure you entered the AID and QCMA PS Vita directory correctly
|
||||
1. Press "OK" to dismiss the dialogue box that appears when the process completes
|
||||
1. Close auto h-encore on your computer
|
||||
|
||||
#### Section III - QCMA Transfer
|
||||
|
||||
1. Right-click the QCMA icon in the system tray, then select "Refresh database"
|
||||
1. In the Content Manager application on your device, select "PC -> PS Vita System"
|
||||
1. Select "Applications"
|
||||
1. Select "PS Vita"
|
||||
1. Select "h-encore"
|
||||
1. Select "Copy"
|
||||
1. Select "OK"
|
||||
+ The h-encore exploit will be copied to your device
|
||||
+ This process will take some time
|
||||
1. Close the Content Manager application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Configuring h-encore](configuring-h-encore)
|
||||
{: .notice--primary}
|
82
_pages/en_US/installing-h-encore-(windows-manual).txt
Normal file
82
_pages/en_US/installing-h-encore-(windows-manual).txt
Normal file
@ -0,0 +1,82 @@
|
||||
---
|
||||
title: "Installing h-encore (Windows Manual)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This method requires a Windows computer.
|
||||
|
||||
The h-encore installation is performed manually and requires usage of the command line.
|
||||
|
||||
Before proceeding, ensure you have read all of the information on [Installing h-encore](installing-h-encore)
|
||||
|
||||
### What You Need
|
||||
|
||||
* The `.pkg` format demo of [Bitter Smile](http://ares.dl.playstation.net/cdn/JP0741/PCSG90096_00/xGMrXOkORxWRyqzLMihZPqsXAbAXLzvAdJFqtPJLAZTgOcqJobxQAhLNbgiFydVlcmVOrpZKklOYxizQCRpiLfjeROuWivGXfwgkq.pkg)
|
||||
* The latest release of [h-encore](https://github.com/TheOfficialFloW/h-encore/releases/latest)
|
||||
* The latest release of [psvimgtools](https://github.com/yifanlu/psvimgtools/releases/latest) *(the `.zip` file for your OS)*
|
||||
* The latest release of [pkg2zip](https://github.com/mmozeiko/pkg2zip/releases/latest)
|
||||
* The latest release of [QCMA](https://github.com/codestation/qcma/releases/latest)
|
||||
+ Uninstall the official Sony CMA if it is already installed
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Install and launch QCMA on your computer if you have not already
|
||||
1. Copy the contents of the auto h-encore `.zip` to a folder on your computer
|
||||
1. Launch the Content Manager application on your device
|
||||
1. Select "Copy Content"
|
||||
1. Select "PC"
|
||||
1. Select the method you wish to use to connect to QCMA
|
||||
+ If you are prompted to log-in to a PlayStation Network Account, do so
|
||||
+ If you do not have a PlayStation Network Account, create one
|
||||
1. Select / register your computer if prompted
|
||||
|
||||
#### Section II - auto h-encore
|
||||
|
||||
1. Open [http://cma.henkaku.xyz/] on your computer
|
||||
1. Navigate to the `PS Vita\APP\` folder on your computer using the file explorer
|
||||
+ By default, this directory will be in the `Documents` folder on your computer
|
||||
+ If you cannot find it, check the QCMA "Applications / Backups" setting by right-clicking the QCMA icon in the system tray, then selecting "Settings"
|
||||
1. Copy the name of the folder in this directory, then paste it into the "AID" box on the CMA website
|
||||
+ Here is an example AID: `ec8d45ec9c055609`
|
||||
1. Select "Submit" to generate the corresponding key
|
||||
+ Keep this page open, you will need this key soon
|
||||
+ Here is an example key: `488d3ff6cce7a9ef1be6da8338c7d18db18147c3255fa4d50596568555687174`
|
||||
1. Copy the `h-encore` folder from the h-encore `.zip` to a folder on your computer
|
||||
1. Copy the contents of the psvimgtools `.zip` to the `h-encore` folder
|
||||
1. Copy `pkg2zip.exe` from the pkg2zip `.zip` to the `h-encore` folder
|
||||
1. Move the Bitter Smile `.pkg` file to the `h-encore` folder
|
||||
1. Open a command prompt window
|
||||
1. `cd` into the `h-encore` directory
|
||||
1. Run `pkg2zip -x *.pkg`
|
||||
1. Run `robocopy app\PCSG90096\ app\ux0_temp_game_PCSG90096_app_PCSG90096 /E`
|
||||
1. Run `copy app\ux0_temp_game_PCSG90096_app_PCSG90096\sce_sys\package\temp.bin license\ux0_temp_game_PCSG90096_license_app_PCSG90096\6488b73b912a753a492e2714e9b38bc7.rif`
|
||||
1. Run `psvimg-create -n app -K YOUR_KEY app PCSG90096\app`
|
||||
+ Replace "YOUR_KEY" with the key we generated earlier
|
||||
1. Run `psvimg-create -n appmeta -K YOUR_KEY appmeta PCSG90096\appmeta`
|
||||
1. Run `psvimg-create -n license -K YOUR_KEY license PCSG90096\license`
|
||||
1. Run `psvimg-create -n savedata -K YOUR_KEY savedata PCSG90096\savedata`
|
||||
1. Close your command prompt window
|
||||
1. Copy the `h-encore\PCSG90096` folder to the `PS Vita\APP\YOUR_AID\` folder on your computer using the file explorer
|
||||
|
||||
#### Section III - QCMA Transfer
|
||||
|
||||
1. Right-click the QCMA icon in the system tray, then select "Refresh database"
|
||||
1. In the Content Manager application on your device, select "PC -> PS Vita System"
|
||||
1. Select "Applications"
|
||||
1. Select "PS Vita"
|
||||
1. Select "h-encore"
|
||||
1. Select "Copy"
|
||||
1. Select "OK"
|
||||
+ The h-encore exploit will be copied to your device
|
||||
+ This process will take some time
|
||||
1. Close the Content Manager application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Configuring h-encore](configuring-h-encore)
|
||||
{: .notice--primary}
|
56
_pages/en_US/installing-h-encore.txt
Normal file
56
_pages/en_US/installing-h-encore.txt
Normal file
@ -0,0 +1,56 @@
|
||||
---
|
||||
title: "Installing h-encore"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
h-encore is an exploit chain for the PS Vita (TV) which will allow for the installation of homebrew applications to the LiveArea Screen. It is compatible with the firmware versions 3.65, 3.67, and 3.68.
|
||||
|
||||
Note that the h-encore exploit chain is not "persistent" (meaning it does not remain installed after a reboot). For devices on firmware version 3.65, this is fortunately only a temporary restriction until HENkaku Ensō is installed on a later page. For devices on 3.67 or 3.68, you will unfortunately need to perform a small portion of these instructions (which will be indicated) after every reboot until a new persistent exploit is developed.
|
||||
|
||||
In addition to installing the h-encore exploit, we enable access to "unsafe" homebrew which gives extended permissions to homebrew applications. This idea could be considered analagous to the "administrator" mode on a computer.
|
||||
|
||||
Unfortunately, h-encore is more complicated to install than previous PS Vita (TV) exploits. For Windows users, there is a tool which automates some of the process, but Linux and Mac users will need to perform the entire installation manually.
|
||||
|
||||
If you have a PS Vita 1000, you must also have an official Sony memory card (of any size) to follow this guide. This restriction does not apply to the PS Vita 2000 or PS TV as those devices have a built-in memory card.
|
||||
{: .notice--info}
|
||||
|
||||
___
|
||||
### Methods
|
||||
|
||||
___
|
||||
|
||||
#### Installing h-encore (Windows Auto)
|
||||
|
||||
This method requires a Windows computer.
|
||||
|
||||
The "auto h-encore" tool is used to automate a portion of the h-encore installation.
|
||||
|
||||
Continue to [Installing h-encore (Windows)](installing-h-encore-(windows-auto))
|
||||
{: .notice--primary}
|
||||
|
||||
___
|
||||
|
||||
#### Installing h-encore (Windows Manual)
|
||||
|
||||
This method requires a Windows computer.
|
||||
|
||||
The h-encore installation is performed manually and requires usage of the command line.
|
||||
|
||||
Continue to [Installing h-encore (Windows)](installing-h-encore-(windows-manual))
|
||||
{: .notice--primary}
|
||||
|
||||
___
|
||||
|
||||
#### Installing h-encore (Linux / Mac)
|
||||
|
||||
This method requires a Linux or Mac computer.
|
||||
|
||||
The h-encore installation is performed manually and requires usage of the command line.
|
||||
|
||||
Continue to [Installing h-encore (Linux / Mac)](installing-h-encore-(linux-mac))
|
||||
{: .notice--primary}
|
||||
|
||||
___
|
44
_pages/en_US/installing-henkaku.txt
Normal file
44
_pages/en_US/installing-henkaku.txt
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "Installing HENkaku"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
HENkaku is an exploit chain for the PS Vita (TV) which will allow for the installation of homebrew applications to the LiveArea Screen. It is only compatible with the firmware version 3.60.
|
||||
|
||||
Note that the HENkaku exploit chain is not "persistent" (meaning it does not remain installed after a reboot). Fortunately, this is only a temporary restriction until HENkaku Ensō is installed on the next page.
|
||||
|
||||
In addition to running the HENkaku exploit, we will also enable access to "unsafe" homebrew which gives extended permissions to homebrew applications. This idea could be considered analagous to the "administrator" mode on a computer.
|
||||
|
||||
If you have a PS Vita 1000, you must also have an official Sony memory card (of any size) to follow this guide. This restriction does not apply to the PS Vita 2000 or PS TV as those devices have a built-in memory card.
|
||||
{: .notice--info}
|
||||
|
||||
### What You Need
|
||||
|
||||
* An internet connection on your PS Vita (TV)
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Launching HENkaku
|
||||
|
||||
1. Launch the browser and go to the following URL on your device:
|
||||
+ `http://henkaku.xyz`
|
||||
1. Tap "Install"
|
||||
1. Read the disclaimer, then tap "Install"
|
||||
+ If you get an error and cannot proceed, [follow this troubleshooting guide](troubleshooting#a-browser-based-exploit-is-not-working)
|
||||
1. If the exploit was successful, you will now have a bubble on your LiveArea screen named "molecularShell".
|
||||
|
||||
#### Section II - Configuring HENkaku
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Check "Enable Unsafe Homebrew"
|
||||
1. Return to HENkaku Settings menu
|
||||
1. close the Settings application
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Installing Ensō (3.65)](installing-enso-(3.65))
|
||||
{: .notice--primary}
|
35
_pages/en_US/site-navigation.txt
Normal file
35
_pages/en_US/site-navigation.txt
Normal file
@ -0,0 +1,35 @@
|
||||
---
|
||||
title: "Site Navigation" #
|
||||
layout: single-no-ads
|
||||
sitemap: false
|
||||
---
|
||||
|
||||
{% capture notice-2 %}
|
||||
**All**
|
||||
|
||||
+ [Adrenaline](adrenaline)
|
||||
+ [Configuring h-encore](configuring-h-encore)
|
||||
+ [Credits](credits)
|
||||
+ [Donations](donations)
|
||||
+ [FAQ](faq)
|
||||
+ [File Extensions (Windows)](file-extensions-(windows))
|
||||
+ [Finalizing Setup](finalizing-setup)
|
||||
+ [Get Started](get-started)
|
||||
+ [Home](/)
|
||||
+ [Installing Ensō (3.65)](installing-enso-(3.65))
|
||||
+ [Installing h-encore](installing-h-encore)
|
||||
+ [Installing h-encore (Linux / Mac)](installing-h-encore-(linux-mac))
|
||||
+ [Installing h-encore (Windows Auto)](installing-h-encore-(windows-auto))
|
||||
+ [Installing h-encore (Windows Manual)](installing-h-encore-(windows-manual))
|
||||
+ [Installing HENkaku](installing-henkaku)
|
||||
+ [Storage Format (Linux)](storage-format-(linux))
|
||||
+ [Storage Format (Mac)](storage-format-(mac))
|
||||
+ [Storage Format (Windows)](storage-format-(windows))
|
||||
+ [StorageMgr](storagemgr)
|
||||
+ [Troubleshooting](troubleshooting)
|
||||
+ [Updating to 3.60](updating-to-3.60)
|
||||
+ [Updating to 3.65](updating-to-3.65)
|
||||
+ [Updating to 3.65 (Ensō)](updating-to-3.65-(enso))
|
||||
+ [Why Ads?](why-ads)
|
||||
{% endcapture %}
|
||||
<div class="notice--primary">{{ notice-2 | markdownify }}</div>
|
84
_pages/en_US/storage-format-(linux).txt
Normal file
84
_pages/en_US/storage-format-(linux).txt
Normal file
@ -0,0 +1,84 @@
|
||||
---
|
||||
title: "Storage Format (Linux)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This is an add-on section for formatting a storage device for use with the StorageMgr kernel plugin.
|
||||
|
||||
Additionally, there is an optional section for checking your storage device for errors using F3. Depending on the size of your storage device and the speed of your computer, the checking process can take up to several hours!
|
||||
|
||||
This page is for Linux users only. If you are not on Linux, check out the [Storage Format (Windows)](storage-format-(windows)) or [Storage Format (Mac)](storage-format-(mac)) pages.
|
||||
|
||||
### What You Need
|
||||
|
||||
* The latest version of [exfat-utils](https://github.com/relan/exfat) for your distribution (check your package manager)
|
||||
* The latest version of [fuse-exfat](https://github.com/relan/exfat) for your distribution (check your package manager)
|
||||
* The latest version of [F3](https://github.com/AltraMayor/f3/releases/latest)
|
||||
+ This is not required if you do not want to check your storage device for errors
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Formatting Storage Device
|
||||
|
||||
1. Insert your storage device into your computer
|
||||
1. Unmount your storage device with `umount`
|
||||
1. Run `sudo dd if=/dev/zero of=/dev/sdX` to wipe the storage device
|
||||
+ `sdX` should be the device corresponding to your storage device
|
||||
1. Remove your storage device from your computer
|
||||
1. Re-insert your storage device into your computer
|
||||
1. Run `mkfs.exfat /dev/sdX` to format your storage device as exFAT
|
||||
|
||||
#### Section II - Verifying Storage Device
|
||||
|
||||
If you do not want to check your storage device for errors, skip this section.
|
||||
{: .notice--info}
|
||||
|
||||
1. Unzip the f3 `.zip` file
|
||||
1. `cd` into the f3 directory
|
||||
1. Run `make` to compile F3
|
||||
1. Insert your storage device into your computer
|
||||
1. Mount your storage device
|
||||
1. Run `./f3write <your storage device mount point>`
|
||||
1. Wait until the process is complete. See below for an example output.
|
||||
|
||||
~~~ bash
|
||||
$ ./f3write /media/michel/6135-3363/
|
||||
Free space: 29.71 GB
|
||||
Creating file 1.h2w ... OK!
|
||||
...
|
||||
Creating file 30.h2w ... OK!
|
||||
Free space: 0.00 Byte
|
||||
Average Writing speed: 4.90 MB/s
|
||||
~~~
|
||||
|
||||
1. Run `./f3read <your storage device mount point>`
|
||||
1. Wait until the process is complete. See below for an example output.
|
||||
|
||||
~~~ bash
|
||||
$ ./f3read /media/michel/6135-3363/
|
||||
SECTORS ok/corrupted/changed/overwritten
|
||||
Validating file 1.h2w ... 2097152/ 0/ 0/ 0
|
||||
...
|
||||
Validating file 30.h2w ... 1491904/ 0/ 0/ 0
|
||||
|
||||
Data OK: 29.71 GB (62309312 sectors)
|
||||
Data LOST: 0.00 Byte (0 sectors)
|
||||
Corrupted: 0.00 Byte (0 sectors)
|
||||
Slightly changed: 0.00 Byte (0 sectors)
|
||||
Overwritten: 0.00 Byte (0 sectors)
|
||||
Average Reading speed: 9.42 MB/s
|
||||
~~~
|
||||
|
||||
If the test shows the result `Data LOST: 0.00 Byte (0 sectors)` your storage device is good and you can delete all `.h2w` files on your storage device
|
||||
{: .notice--success}
|
||||
|
||||
If the test shows any other results, your storage device may be corrupted or damaged and you may have to replace it!
|
||||
{: .notice--danger}
|
||||
|
||||
___
|
||||
|
||||
### Return to [Get Started](get-started)
|
||||
{: .notice--primary}
|
51
_pages/en_US/storage-format-(mac).txt
Normal file
51
_pages/en_US/storage-format-(mac).txt
Normal file
@ -0,0 +1,51 @@
|
||||
---
|
||||
title: "Storage Format (Mac)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This is an add-on section for formatting a storage device for use with the StorageMgr kernel plugin.
|
||||
|
||||
Additionally, there is an optional section for checking your storage device for errors using F3X. Depending on the size of your storage device and the speed of your computer, the checking process can take up to several hours!
|
||||
|
||||
This page is for Mac users only. If you are not on Mac, check out the [Storage Format (Windows)](storage-format-(windows)) or [Storage Format (Linux)](storage-format-(linux)) pages.
|
||||
|
||||
### What You Need
|
||||
|
||||
* The latest release of [F3X](https://github.com/insidegui/F3X/releases/latest)
|
||||
+ This is not required if you do not want to check your storage device for errors
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Formatting Storage Device
|
||||
|
||||
1. Insert your storage device into your computer
|
||||
1. Launch Disk Utility
|
||||
1. Select your storage device
|
||||
1. Select the "Partition" menu
|
||||
1. Partition your storage device as MBR with one exFAT partition
|
||||
|
||||
#### Section II - Verifying Storage Device
|
||||
|
||||
If you do not want to check your storage device for errors, skip this section.
|
||||
{: .notice--info}
|
||||
|
||||
1. Unzip the F3X `.zip` file
|
||||
1. Insert your storage device into your computer
|
||||
1. Run the F3X app
|
||||
1. Select your storage device
|
||||
1. Press "Start Test"
|
||||
1. Wait until the process is complete.
|
||||
|
||||
If the test shows the result `Success! Your card is ok!` your storage device is good and you can delete all `.h2w` files on your storage device
|
||||
{: .notice--success}
|
||||
|
||||
If the test shows any other results, your storage device may be corrupted or damaged and you may have to replace it!
|
||||
{: .notice--danger}
|
||||
|
||||
___
|
||||
|
||||
### Return to [Get Started](get-started)
|
||||
{: .notice--primary}
|
66
_pages/en_US/storage-format-(windows).txt
Normal file
66
_pages/en_US/storage-format-(windows).txt
Normal file
@ -0,0 +1,66 @@
|
||||
---
|
||||
title: "Storage Format (Windows)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
This is an add-on section for formatting a storage device for use with the StorageMgr kernel plugin.
|
||||
|
||||
Additionally, there is an optional section for checking your storage device for errors using h2testw. Depending on the size of your storage device and the speed of your computer, the checking process can take up to several hours!
|
||||
|
||||
This page is for Windows users only. If you are not on Windows, check out the [Storage Format (Linux)](storage-format-(linux)) or [Storage Format (Mac)](storage-format-(mac)) pages.
|
||||
|
||||
### What You Need
|
||||
|
||||
* [zzBlank.img]({{ "/assets/files/zzBlank.img" | absolute_url }}){:download="zzBlank.img"}
|
||||
* The latest version of [Win32DiskImager](https://sourceforge.net/projects/win32diskimager/)
|
||||
* The latest version of [h2testw](http://www.heise.de/ct/Redaktion/bo/downloads/h2testw_1.4.zip)
|
||||
+ This is not required if you do not want to check your storage device for errors
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Formatting Storage Device
|
||||
|
||||
1. Install Win32DiskImager if you have not already
|
||||
1. Insert your storage device into your computer
|
||||
1. Launch Win32DiskImager
|
||||
1. Select `zzBlank.img` as the "Image File"
|
||||
1. Set "Device" to the drive letter of your storage device
|
||||
1. Select "Write"
|
||||
1. Select "Yes" to continue when prompted
|
||||
1. Select "OK" to dismiss the dialogue box when the write completes
|
||||
1. Close Win32DiskImager
|
||||
1. Right-click the drive in Windows Explorer, then select "Format"
|
||||
1. Set "File system" to "exFAT"
|
||||
1. Select "Start"
|
||||
1. Select "OK" to continue when prompted
|
||||
1. Select "OK" to dismiss the dialogue box when the format completes
|
||||
1. Close the format window
|
||||
|
||||
#### Section II - Verifying Storage Device
|
||||
|
||||
If you do not want to check your storage device for errors, skip this section.
|
||||
{: .notice--info}
|
||||
|
||||
1. Copy `h2testw.exe` from the h2testw `.zip` to your desktop
|
||||
1. Insert your storage device card into your computer
|
||||
1. Run `h2testw.exe`
|
||||
1. Select "English"
|
||||
1. Select "Select target"
|
||||
1. Select your storage device card's drive letter
|
||||
1. Ensure "all available space" is selected
|
||||
1. Select "Write + Verify"
|
||||
1. Wait until the process is completed
|
||||
|
||||
If the test shows the result `Test finished without errors`, your storage device card is good and you can delete all `.h2w` files on your storage device card
|
||||
{: .notice--success}
|
||||
|
||||
If the test shows any other results, your storage device card may be corrupted or damaged and you may have to replace it!
|
||||
{: .notice--danger}
|
||||
|
||||
___
|
||||
|
||||
### Return to [StorageMgr](storagemgr)
|
||||
{: .notice--primary}
|
68
_pages/en_US/storagemgr.txt
Normal file
68
_pages/en_US/storagemgr.txt
Normal file
@ -0,0 +1,68 @@
|
||||
---
|
||||
title: "StorageMgr"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
StorageMgr is a multi-purpose kernel plugin for the PS Vita (TV) which allows for the use of alternative storage devices such as a USB drive, an SD2Vita, or a psvd.
|
||||
|
||||
The SD2Vita is a microSD to game card adapter which is inserted into the game-card slot in your device, while the psvd is a microSD adapter which replaces the 3g modem on 3g PS Vita models.
|
||||
|
||||
Using the StorageMgr kernel plugin, the USB drive or microSD card you use will be mounted to `ux0:` just like a Sony memory card. This is very useful because microSD cards are significantly cheaper than Sony memory cards (especially at higher capacities).
|
||||
|
||||
This will use FTP (File Transfer Protocol) to transfer the files so your Vita and PC must be connected to the same network.
|
||||
|
||||
You must have already installed VitaShell to use this.
|
||||
{: .notice--info}
|
||||
|
||||
### What You Need
|
||||
|
||||
* A formatted storage device compatible with your system
|
||||
+ To format your device, see [Storage Format (Windows)](storage-format-(windows)), [Storage Format (Linux)](storage-format-(linux)), or [Storage Format (Mac)](storage-format-(mac))
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
* The latest release of [StorageMgr](https://github.com/CelesteBlue-dev/PSVita-StorageMgr/releases)
|
||||
+ `storage_config.txt` should be edited to fit your situation as instructed in the [README](https://github.com/CelesteBlue-dev/PSVita-StorageMgr/blob/master/README.md#how-to-configure-storagemgr-)
|
||||
+ `MCD=uma0` should almost always be kept as-is
|
||||
+ `INT=imc0` should be kept as-is for PS Vita 2000 and PS TV users, and removed for PS Vita 1000 users
|
||||
+ `GCD=ux0` should be kept as-is for SD2Vita users, and edited to `UMA=ux0` for USB drive and psvd users
|
||||
+ `UMA=grw0` should be removed unless you have multiple storage devices
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Installing Plugins
|
||||
|
||||
1. Launch the VitaShell application
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, copy all files from `ux0:tai/` to `ur0:tai/`
|
||||
+ Overwrite any existing files in the `ur0:tai/` folder
|
||||
1. Transfer `storagemgr.skprx` to the `ur0:tai/` folder
|
||||
1. Transfer `storage_config.txt` to the `ur0:tai/` folder
|
||||
1. Add the following line to `ur0:tai/config.txt` under the `*KERNEL` line:
|
||||
+ `ur0:tai/storagemgr.skprx`
|
||||
1. Delete all files from `ux0:tai/`
|
||||
|
||||
#### Section II - Restoring Data
|
||||
|
||||
This section will copy the data from your old Sony memory card to your new storage device.
|
||||
{: .notice--info}
|
||||
|
||||
1. Backup the contents of `ux0:` to a folder on your computer
|
||||
+ This may take some time if you have a large amount of data on your Sony memory card
|
||||
1. Delete the contents of `ux0:` from your PS Vita (TV)
|
||||
1. Insert your new storage device into your computer
|
||||
1. Copy the contents of your `ux0:` folder to your new storage device
|
||||
+ This may take some time if you have a large amount of data on your Sony memory card
|
||||
1. Insert your new storage device into your PS Vita (TV)
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
1. Close the VitaShell application
|
||||
1. Reboot your device
|
||||
|
||||
___
|
||||
|
||||
Your new storage device is now configured and ready for use at the mount point specified in your `storage_config.txt`.
|
||||
{: .notice--success}
|
33
_pages/en_US/troubleshooting.txt
Normal file
33
_pages/en_US/troubleshooting.txt
Normal file
@ -0,0 +1,33 @@
|
||||
67---
|
||||
title: "Troubleshooting"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
If you encounter issues, please look for the section relevant to you and follow the instructions.
|
||||
|
||||
If you still cannot solve your issue and need to reach out for help, please come for help prepared with a detailed description of your problem and what you've tried.
|
||||
|
||||
## A browser based exploit is not working
|
||||
|
||||
Browser based exploits (such as the WebKit exploit used for HENkaku) can be unstable and crash frequently, but they can sometimes be fixed by doing the following steps:
|
||||
|
||||
1. Ensure your device has a stable network connection
|
||||
1. Launch the browser, then open the browser settings
|
||||
1. Scroll to the bottom and click "Delete Cookies" and "Clear Search History"
|
||||
1. Try the exploit again
|
||||
|
||||
## Removing an PSN account without formatting your device
|
||||
|
||||
1. Go to your [PSN Account Management Page](https://account.sonyentertainmentnetwork.com/home/index!display.action)
|
||||
1. Under the devices section, choose "PlayStation Systems"
|
||||
1. Select your console
|
||||
1. Select "Deactivate"
|
||||
|
||||
## Black screen on boot
|
||||
|
||||
1. Hold L on boot to disable TaiHEN plugin loading
|
||||
1. If your device boots, try editing `ux0:tai/config.txt` and remove any plugins you may have recently added
|
||||
1. If these instructions do not work, your device may be bricked
|
44
_pages/en_US/updating-to-3.60.txt
Normal file
44
_pages/en_US/updating-to-3.60.txt
Normal file
@ -0,0 +1,44 @@
|
||||
---
|
||||
title: "Updating to 3.60"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
The HENkaku exploit is only compatible with the firmware version 3.60. As a result, lower firmware versions must update using a custom update server in order to use the exploit.
|
||||
|
||||
Note that a custom update server can only update your device, not downgrade it. If you are on a firmware version higher than 3.60, you should return to [Get Started](get-started).
|
||||
|
||||
### What you need
|
||||
|
||||
* An internet connection on your PS Vita (TV)
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I: Prep Work
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `Network` -> `Wi-Fi Settings`
|
||||
+ Connect to a Wi-Fi network if you have not already done so
|
||||
1. Select your current connection
|
||||
+ This is signified by a green dot next to the network
|
||||
1. Select "Advanced Settings"
|
||||
1. Set "DNS Settings" to "Manual"
|
||||
1. Set "Primary DNS" to `212.47.229.76`
|
||||
1. Leave "Secondary DNS" blank
|
||||
1. Ensure "Proxy Server" is set to "Do Not Use"
|
||||
1. Return to the main Settings menu
|
||||
|
||||
#### Section II: Updating to 3.60
|
||||
|
||||
1. Navigate to `System Update` -> `Update Using Wi-Fi`
|
||||
1. Ensure the update message "3.60 (変革 Compatible)" is displayed
|
||||
+ If it displays any other message, stop and figure out what went wrong
|
||||
1. Follow the prompts to update your device to 3.60
|
||||
+ When the process has completed, your device will reboot automatically
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Installing HENkaku](installing-henkaku)
|
||||
{: .notice--primary}
|
117
_pages/en_US/updating-to-3.65-(enso).txt
Normal file
117
_pages/en_US/updating-to-3.65-(enso).txt
Normal file
@ -0,0 +1,117 @@
|
||||
---
|
||||
title: "Updating to 3.65 (Ensō)"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
These steps are for updating a 3.60 HENkaku Ensō device to 3.65 (while retaining HENKaku Ensō). If you have a stock device and are trying to update to 3.65, follow [Updating to 3.65](updating-to-3.65).
|
||||
{: .notice--warning}
|
||||
|
||||
HENkaku Ensō is a complete CFW solution for the PS Vita (TV) which allows for convenient homebrew access on your device by running an exploit at boot-time to setup the HENkaku homebrew environment. It is more convenient than HENkaku as it does not require you to manually trigger an exploit on your device after every reboot.
|
||||
|
||||
In addition to installing HENkaku Ensō, we will also update your PS Vita (TV) to the firmware version 3.65 which will allow you to access the PS Store, use online features, and play newer games which require newer firmware versions.
|
||||
|
||||
Note that updating your device to the firmware version 3.65 will render the standard HENkaku exploit unusable. Should you remove HENkaku Ensō for some reason, you will need to follow [Installing h-encore](installing-h-encore) to reinstall it.
|
||||
|
||||
In order to install the necessary `.vpk` (content package) files on your device, we use the [File Transfer Protocol (FTP)](https://wikipedia.org/wiki/File_Transfer_Protocol) to copy the files to your device's memory card.
|
||||
|
||||
If you have a PS Vita 1000, you must also have an official Sony memory card (of any size) to follow this guide. An SD2Vita device will not work for this update process. This restriction does not apply to the PS Vita 2000 or PS TV as those devices have a built-in memory card.
|
||||
{: .notice--info}
|
||||
|
||||
### What You Need
|
||||
|
||||
* An FTP Client such as [WinSCP](https://winscp.net/) or [CyberDuck](https://cyberduck.io/)
|
||||
+ Alternatively, you can also use the USB transfer feature of VitaShell
|
||||
* The latest release of [VitaShell](https://github.com/TheOfficialFloW/VitaShell/releases/latest/)
|
||||
* The latest release of [HENkaku Ensō](https://github.com/henkaku/enso/releases/latest/)
|
||||
* The latest release of [update365](https://github.com/TheOfficialFloW/update365/releases/latest) *(the `.PUP` and `.vpk` files)*
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I - Prep Work
|
||||
|
||||
1. Launch the molecularShell application
|
||||
+ You can also use VitaShell if you already have it and it is version 1.82 or higher
|
||||
1. Press (Select) to enable FTP access on your device
|
||||
1. Open your FTP client on your computer
|
||||
1. Enter the IP Address and Port displayed on your device
|
||||
1. Using your FTP client, navigate to `ux0:` -> `data/`
|
||||
1. Transfer `VitaShell.vpk` to the `data` folder
|
||||
1. Transfer `updater.vpk` to the `data` folder
|
||||
1. Transfer `PSP2UPDAT.PUP` to the `data` folder
|
||||
1. Press (Circle) on your device to close the FTP connection
|
||||
|
||||
#### Section II - Installing VPKs
|
||||
|
||||
1. On your device, navigate to `ux0:` -> `data/`
|
||||
1. Press (Square) on each of the `.vpk` files to mark them
|
||||
1. Press (Triangle) to open the menu, then select "More" -> "Install all" to install the marked files
|
||||
1. Press (Cross) to confirm the install
|
||||
1. Press (Cross) to continue the install each time you are prompted about extended permissions
|
||||
1. Press (Triangle) to open the menu, then select "Delete" to delete the marked files
|
||||
1. Press (Cross) to confirm the deletion
|
||||
|
||||
#### Section III - Moving PUP
|
||||
|
||||
1. Press (Triangle) on the `PSP2UPDAT.PUP` file to open the menu, then select "Move"
|
||||
1. Press (Cross) to dismiss the copied file dialogue box
|
||||
1. Press (Circle) to return to `ux0:`
|
||||
1. Navigate to `app` -> `UPDATE365/`
|
||||
1. Press (Triangle) to open the menu, then select "Paste" to move the `PSP2UPDAT.PUP` file to the current folder
|
||||
1. close the molecularShell application
|
||||
|
||||
#### Section IV - Unlinking Memory Card
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Uncheck "Enable PSN Spoofing"
|
||||
1. Select "Unlink Memory Card"
|
||||
+ If you do not unlink your memory card, the card will need to be formatted before it can be used on 3.65
|
||||
|
||||
#### Section V - Disabling Plugins
|
||||
|
||||
If you have not installed any plugins to the `ux0:tai/` or `ur0:tai/` folders, skip this section.
|
||||
{: .notice--info}
|
||||
|
||||
1. Launch the molecularShell or VitaShell application
|
||||
1. Edit the file `ux0:tai/config.txt` and remove the lines corresponding to any plugin files you have installed to `ux0:tai/`
|
||||
1. Edit the file `ur0:tai/config.txt` and remove the lines corresponding to any plugin files you have installed to `ur0:tai/`
|
||||
1. close the molecularShell or VitaShell application
|
||||
|
||||
#### Section VI - Uninstalling HENkaku Ensō (3.60)
|
||||
|
||||
1. Launch the Ensō application
|
||||
+ If the Ensō application is missing, you should [re-install it](https://github.com/henkaku/enso/releases/latest/) using molecularShell or VitaShell
|
||||
1. Press (Circle) to proceed
|
||||
1. Press (Triangle) to uninstall HENkaku Ensō
|
||||
1. Reboot your device when prompted
|
||||
+ If you are prompted to update after the reboot, decline the update
|
||||
+ If you are an SD2Vita user, your SD2Vita device will not function until Ensō is re-installed
|
||||
|
||||
#### Section VII - Installing HENkaku Ensō (3.65)
|
||||
|
||||
1. Ensure your device's battery is at least 50% charged
|
||||
1. Launch the browser and re-install HENkaku using the following URL on your device:
|
||||
+ `http://henkaku.xyz`
|
||||
+ If you get an error and cannot proceed, [follow this troubleshooting guide](troubleshooting#a-browser-based-exploit-is-not-working)
|
||||
1. Launch the HENkaku Ensō 3.65 Update application
|
||||
1. Follow the on-screen instructions
|
||||
1. When your device reboots, you should see the Team Molecule boot-logo indicating your device is now on HENkaku Ensō 3.65
|
||||
|
||||
#### Section VIII - Reconfiguring HENkaku
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `HENkaku Settings`
|
||||
1. Check "Enable Unsafe Homebrew"
|
||||
1. Return to HENkaku Settings menu
|
||||
1. close the Settings application
|
||||
|
||||
___
|
||||
|
||||
You can now re-enable any plugins you may have disabled in the `ux0:tai/` or `ur0:tai/` folders. Note that, before you do so, you may need to download the latest version of the plugin for firmware version 3.65 to be supported.
|
||||
{: .notice--info}
|
||||
|
||||
For installing recommended software and configuring your updated device, it is recommended (but not required) that you continue to [Finalizing Setup](finalizing-setup)
|
||||
{: .notice--primary}
|
49
_pages/en_US/updating-to-3.65.txt
Normal file
49
_pages/en_US/updating-to-3.65.txt
Normal file
@ -0,0 +1,49 @@
|
||||
---
|
||||
title: "Updating to 3.65"
|
||||
---
|
||||
|
||||
{% include toc title="Table of Contents" %}
|
||||
|
||||
### Required Reading
|
||||
|
||||
These steps are for updating a *stock* device to 3.65. If you have already hacked your PS Vita (TV) before and are running HENkaku Ensō on 3.60, follow [Updating to 3.65 (Ensō)](updating-to-3.65-(enso)).
|
||||
{: .notice--danger}
|
||||
|
||||
The hencore exploit is only compatible with the firmware version 3.65, 3.67, and 3.68. As a result, lower firmware versions must update using a custom update server in order to use the exploit.
|
||||
|
||||
While the h-encore exploit itself is compatible with firmware versions 3.67 and 3.68, we will be updating to firmware version 3.65 as it is the latest version which still supports the HENkaku Ensō boot-time exploit.
|
||||
|
||||
Note that a custom update server can only update your device, not downgrade it. If you are on a firmware version higher than 3.65, you should return to [Get Started](get-started).
|
||||
|
||||
### What you need
|
||||
|
||||
* An internet connection on your PS Vita (TV)
|
||||
|
||||
### Instructions
|
||||
|
||||
#### Section I: Prep Work
|
||||
|
||||
1. Launch the Settings application
|
||||
1. Navigate to `Network` -> `Wi-Fi Settings`
|
||||
+ Connect to a Wi-Fi network if you have not already done so
|
||||
1. Select your current connection
|
||||
+ This is signified by a green dot next to the network
|
||||
1. Select "Advanced Settings"
|
||||
1. Set "DNS Settings" to "Manual"
|
||||
1. Set "Primary DNS" to `23.96.6.207`
|
||||
1. Leave "Secondary DNS" blank
|
||||
1. Ensure "Proxy Server" is set to "Do Not Use"
|
||||
1. Return to the main Settings menu
|
||||
|
||||
#### Section II: Updating to 3.65
|
||||
|
||||
1. Navigate to `System Update` -> `Update Using Wi-Fi`
|
||||
1. Ensure the update message "3.65 (変革 Compatible)" is displayed
|
||||
+ If it displays any other message, stop and figure out what went wrong
|
||||
1. Follow the prompts to update your device to 3.65
|
||||
+ When the process has completed, your device will reboot automatically
|
||||
|
||||
___
|
||||
|
||||
### Continue to [Installing h-encore](installing-h-encore)
|
||||
{: .notice--primary}
|
15
_pages/en_US/why-ads.txt
Normal file
15
_pages/en_US/why-ads.txt
Normal file
@ -0,0 +1,15 @@
|
||||
---
|
||||
title: "Why Ads?" #
|
||||
layout: single-no-ads
|
||||
---
|
||||
|
||||
This project is an extension of hundreds upon hundreds of hours of constant work.
|
||||
|
||||
We maintain this guide, for free, and ensure it is always up to date. Because of this effort, we feel that it is fair for us to attempt to gain a meager income from our work.
|
||||
|
||||
This site costs you nothing to use, and all that we display are non-intrusive ads. If you still have a problem with this, feel free to block these ads.
|
||||
|
||||
If you do block ads, we would like to also remind you of the [Donations](donations) page, but once again that is optional too.
|
||||
|
||||
Thanks,<br>
|
||||
Plailect, emiyl & T3CHNOLOG1C
|
40
_sass/minimal-mistakes.scss
Normal file
40
_sass/minimal-mistakes.scss
Normal file
@ -0,0 +1,40 @@
|
||||
/*!
|
||||
* Minimal Mistakes Jekyll Theme 4.6.0 by Michael Rose
|
||||
* Copyright 2017 Michael Rose - mademistakes.com | @mmistakes
|
||||
* Licensed under MIT (https://github.com/mmistakes/minimal-mistakes/blob/master/LICENSE.txt)
|
||||
*/
|
||||
|
||||
/* Variables */
|
||||
@import "minimal-mistakes/variables";
|
||||
|
||||
/* Mixins and functions */
|
||||
@import "minimal-mistakes/vendor/breakpoint/breakpoint";
|
||||
@include breakpoint-set("to ems", true);
|
||||
@import "minimal-mistakes/vendor/font-awesome/font-awesome";
|
||||
@import "minimal-mistakes/vendor/magnific-popup/magnific-popup"; // Magnific Popup
|
||||
@import "minimal-mistakes/vendor/susy/susy";
|
||||
@import "minimal-mistakes/mixins";
|
||||
|
||||
/* Core CSS */
|
||||
@import "minimal-mistakes/reset";
|
||||
@import "minimal-mistakes/base";
|
||||
@import "minimal-mistakes/forms";
|
||||
@import "minimal-mistakes/tables";
|
||||
@import "minimal-mistakes/animations";
|
||||
|
||||
/* Components */
|
||||
@import "minimal-mistakes/buttons";
|
||||
@import "minimal-mistakes/notices";
|
||||
@import "minimal-mistakes/masthead";
|
||||
@import "minimal-mistakes/navigation";
|
||||
@import "minimal-mistakes/footer";
|
||||
@import "minimal-mistakes/syntax";
|
||||
|
||||
/* Utility classes */
|
||||
@import "minimal-mistakes/utilities";
|
||||
|
||||
/* Layout specific */
|
||||
@import "minimal-mistakes/page";
|
||||
@import "minimal-mistakes/archive";
|
||||
@import "minimal-mistakes/sidebar";
|
||||
@import "minimal-mistakes/print";
|
21
_sass/minimal-mistakes/_animations.scss
Normal file
21
_sass/minimal-mistakes/_animations.scss
Normal file
@ -0,0 +1,21 @@
|
||||
/* ==========================================================================
|
||||
ANIMATIONS
|
||||
========================================================================== */
|
||||
|
||||
@-webkit-keyframes intro {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes intro {
|
||||
0% {
|
||||
opacity: 0;
|
||||
}
|
||||
100% {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
318
_sass/minimal-mistakes/_archive.scss
Normal file
318
_sass/minimal-mistakes/_archive.scss
Normal file
@ -0,0 +1,318 @@
|
||||
/* ==========================================================================
|
||||
ARCHIVE
|
||||
========================================================================== */
|
||||
|
||||
.archive {
|
||||
margin-bottom: 2em;
|
||||
|
||||
@include breakpoint($large) {
|
||||
float: right;
|
||||
width: calc(100% - #{$right-sidebar-width-narrow});
|
||||
padding-right: $right-sidebar-width-narrow;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
width: calc(100% - #{$right-sidebar-width});
|
||||
padding-right: $right-sidebar-width;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__subtitle {
|
||||
margin: 1.414em 0 0;
|
||||
padding-bottom: 0.5em;
|
||||
font-size: $type-size-5;
|
||||
color: $muted-text-color;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
+ .list__item .archive__item-title {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
margin-bottom: 0.25em;
|
||||
font-family: $sans-serif-narrow;
|
||||
overflow: hidden;
|
||||
text-overflow: ellipsis;
|
||||
|
||||
a + a {
|
||||
opacity: 0.5;
|
||||
}
|
||||
}
|
||||
|
||||
/* remove border*/
|
||||
.page__content {
|
||||
|
||||
.archive__item-title {
|
||||
margin-top: 1em;
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-excerpt {
|
||||
margin-top: 0;
|
||||
font-size: $type-size-6;
|
||||
|
||||
& + p {
|
||||
text-indent: 0;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-teaser {
|
||||
border-radius: $border-radius;
|
||||
overflow: hidden;
|
||||
img {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item:hover {
|
||||
|
||||
.archive__item-teaser {
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
List view
|
||||
========================================================================== */
|
||||
|
||||
.list__item {
|
||||
|
||||
.page__meta {
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Grid view
|
||||
========================================================================== */
|
||||
|
||||
.archive {
|
||||
|
||||
.grid__wrapper {
|
||||
/* extend grid elements to the right */
|
||||
|
||||
@include breakpoint($large) {
|
||||
margin-right: -1 * $right-sidebar-width-narrow;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
margin-right: -1 * $right-sidebar-width;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.grid__item {
|
||||
margin-bottom: 2em;
|
||||
|
||||
@include breakpoint($small) {
|
||||
float: left;
|
||||
width: span(5 of 10);
|
||||
|
||||
&:nth-child(2n+1) {
|
||||
clear: both;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
&:nth-child(2n+2) {
|
||||
clear: none;
|
||||
margin-left: gutter(of 10);
|
||||
}
|
||||
}
|
||||
|
||||
@include breakpoint($medium) {
|
||||
margin-left: 0; /* override margin*/
|
||||
margin-right: 0; /* override margin*/
|
||||
width: span(3 of 12);
|
||||
|
||||
&:nth-child(2n+1) {
|
||||
clear: none;
|
||||
}
|
||||
|
||||
&:nth-child(4n+1) {
|
||||
clear: both;
|
||||
}
|
||||
|
||||
&:nth-child(4n+2) {
|
||||
clear: none;
|
||||
margin-left: gutter(1 of 12);
|
||||
}
|
||||
|
||||
&:nth-child(4n+3) {
|
||||
clear: none;
|
||||
margin-left: gutter(1 of 12);
|
||||
}
|
||||
|
||||
&:nth-child(4n+4) {
|
||||
clear: none;
|
||||
margin-left: gutter(1 of 12);
|
||||
}
|
||||
}
|
||||
|
||||
.page__meta {
|
||||
margin: 0 0 4px;
|
||||
}
|
||||
|
||||
.archive__item-title {
|
||||
margin-top: 0.5em;
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
.archive__item-excerpt {
|
||||
display: none;
|
||||
|
||||
@include breakpoint($medium) {
|
||||
display: block;
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
}
|
||||
|
||||
.archive__item-teaser {
|
||||
|
||||
@include breakpoint($small) {
|
||||
max-height: 200px;
|
||||
}
|
||||
|
||||
@include breakpoint($medium) {
|
||||
max-height: 120px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Features
|
||||
========================================================================== */
|
||||
|
||||
.feature__wrapper {
|
||||
@include clearfix();
|
||||
margin-bottom: 2em;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
.feature__item {
|
||||
margin-bottom: 2em;
|
||||
font-size: 1.25rem;
|
||||
|
||||
@include breakpoint($small) {
|
||||
float: left;
|
||||
margin-bottom: 0;
|
||||
width: span(4 of 12);
|
||||
|
||||
&:nth-child(3n+1) {
|
||||
clear: both;
|
||||
margin-left: 0;
|
||||
}
|
||||
|
||||
&:nth-child(3n+2) {
|
||||
clear: none;
|
||||
margin-left: gutter(of 12);
|
||||
}
|
||||
|
||||
&:nth-child(3n+3) {
|
||||
clear: none;
|
||||
margin-left: gutter(of 12);
|
||||
}
|
||||
|
||||
.feature__item-teaser {
|
||||
max-height: 200px;
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
&--left {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
|
||||
.archive__item-teaser {
|
||||
float: left;
|
||||
width: span(5 of 12);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
float: right;
|
||||
padding-left: gutter(0.5 of 12);
|
||||
padding-right: gutter(1 of 12);
|
||||
width: span(7 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--right {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
text-align: right;
|
||||
|
||||
.archive__item-teaser {
|
||||
float: right;
|
||||
width: span(5 of 12);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
float: right;
|
||||
width: span(7 of 12);
|
||||
padding-left: gutter(0.5 of 12);
|
||||
padding-right: gutter(1 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
&--center {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
font-size: 1.25rem;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin-bottom: 2em;
|
||||
}
|
||||
|
||||
@include breakpoint($small) {
|
||||
text-align: center;
|
||||
|
||||
.archive__item-teaser {
|
||||
margin: 0 auto;
|
||||
width: span(5 of 12);
|
||||
}
|
||||
|
||||
.archive__item-body {
|
||||
margin: 0 auto;
|
||||
width: span(7 of 12);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
320
_sass/minimal-mistakes/_base.scss
Normal file
320
_sass/minimal-mistakes/_base.scss
Normal file
@ -0,0 +1,320 @@
|
||||
/* ==========================================================================
|
||||
BASE ELEMENTS
|
||||
========================================================================== */
|
||||
|
||||
html {
|
||||
/* sticky footer fix */
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
color: $text-color;
|
||||
font-family: $global-font-family;
|
||||
line-height: 1.5;
|
||||
|
||||
&.overflow--hidden {
|
||||
/* when primary navigation is visible, the content in the background won't scroll */
|
||||
overflow: hidden;
|
||||
}
|
||||
}
|
||||
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
margin: 2em 0 0.5em;
|
||||
line-height: 1.2;
|
||||
font-family: $header-font-family;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
h1 {
|
||||
margin-top: 0;
|
||||
font-size: $type-size-3;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
small, .small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 1.3em;
|
||||
}
|
||||
|
||||
u,
|
||||
ins {
|
||||
text-decoration: none;
|
||||
border-bottom: 1px solid $text-color;
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
del a {
|
||||
color: inherit;
|
||||
}
|
||||
|
||||
/* reduce orphans and widows when printing */
|
||||
|
||||
p, pre, blockquote, ul, ol, dl, figure, table, fieldset {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
/* abbreviations */
|
||||
|
||||
abbr[title],
|
||||
abbr[data-original-title] {
|
||||
text-decoration: none;
|
||||
cursor: help;
|
||||
border-bottom: 1px dotted $text-color;
|
||||
}
|
||||
|
||||
/* blockquotes */
|
||||
|
||||
blockquote {
|
||||
margin: 2em 1em 2em 0;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
font-style: italic;
|
||||
border-left: 0.25em solid $primary-color;
|
||||
|
||||
cite {
|
||||
font-style: italic;
|
||||
|
||||
&:before {
|
||||
content: "\2014";
|
||||
padding-right: 5px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* links */
|
||||
|
||||
a {
|
||||
&:focus {
|
||||
@extend %tab-focus;
|
||||
}
|
||||
|
||||
&:hover,
|
||||
&:active {
|
||||
color: $link-color-hover;
|
||||
outline: 0;
|
||||
}
|
||||
|
||||
&:visited {
|
||||
color: $link-color-visited;
|
||||
}
|
||||
}
|
||||
|
||||
/* code */
|
||||
|
||||
tt, code, kbd, samp, pre {
|
||||
font-family: $monospace;
|
||||
}
|
||||
|
||||
pre {
|
||||
overflow-x: auto; /* add scrollbars to wide code blocks*/
|
||||
}
|
||||
|
||||
p > code,
|
||||
a > code,
|
||||
li > code,
|
||||
figcaption > code,
|
||||
td > code {
|
||||
padding-top: 0.1rem;
|
||||
padding-bottom: 0.1rem;
|
||||
font-size: $type-size-6;
|
||||
background: $code-background-color;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
&:before, &:after {
|
||||
letter-spacing: -0.2em;
|
||||
content: "\00a0"; /* non-breaking space*/
|
||||
}
|
||||
}
|
||||
|
||||
.bigdns > code {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
/* horizontal rule */
|
||||
|
||||
hr {
|
||||
display: block;
|
||||
margin: 1em 0;
|
||||
border: 0;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
|
||||
/* lists */
|
||||
|
||||
ul li,
|
||||
ol li {
|
||||
margin-bottom: 0.5em;
|
||||
}
|
||||
|
||||
li ul,
|
||||
li ol {
|
||||
margin-top: 0.5em;
|
||||
}
|
||||
|
||||
/*
|
||||
Media and embeds
|
||||
========================================================================== */
|
||||
|
||||
/* Figures and images */
|
||||
|
||||
figure {
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
justify-content: space-between;
|
||||
-webkit-box-align: start;
|
||||
align-items: flex-start;
|
||||
flex-wrap: wrap;
|
||||
margin: 2em 0;
|
||||
|
||||
img,
|
||||
iframe,
|
||||
.fluid-width-video-wrapper {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
img {
|
||||
width: 100%;
|
||||
border-radius: $border-radius;
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
}
|
||||
|
||||
> a {
|
||||
display: block;
|
||||
}
|
||||
|
||||
&.half {
|
||||
> a,
|
||||
> img {
|
||||
@include breakpoint($small) {
|
||||
width: calc(50% - 0.5em);
|
||||
}
|
||||
}
|
||||
|
||||
figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
|
||||
&.third {
|
||||
> a,
|
||||
> img {
|
||||
@include breakpoint($small) {
|
||||
width: calc(33.3333% - 0.5em);
|
||||
}
|
||||
}
|
||||
|
||||
figcaption {
|
||||
width: 100%;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Figure captions */
|
||||
|
||||
figcaption {
|
||||
margin-bottom: 0.5em;
|
||||
color: $muted-text-color;
|
||||
font-family: $caption-font-family;
|
||||
font-size: $type-size-6;
|
||||
|
||||
a {
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
|
||||
&:hover {
|
||||
color: $link-color-hover;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Fix IE9 SVG bug */
|
||||
|
||||
svg:not(:root) {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Navigation lists
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Removes margins, padding, and bullet points from navigation lists
|
||||
*
|
||||
* Example usage:
|
||||
* <nav>
|
||||
* <ul>
|
||||
* <li><a href="#link-1">Link 1</a></li>
|
||||
* <li><a href="#link-2">Link 2</a></li>
|
||||
* <li><a href="#link-3">Link 3</a></li>
|
||||
* </ul>
|
||||
* </nav>
|
||||
*/
|
||||
|
||||
nav {
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style: none;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
/* override white-space for nested lists */
|
||||
ul li,
|
||||
ol li {
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
li ul,
|
||||
li ol {
|
||||
margin-top: 0;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Global animation transition
|
||||
========================================================================== */
|
||||
|
||||
b, i, strong, em, blockquote, p, q, span, figure, img, h1, h2, header, input, a, tr, td, form button, input[type="submit"], .btn, .highlight, .archive__item-teaser {
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
}
|
98
_sass/minimal-mistakes/_buttons.scss
Normal file
98
_sass/minimal-mistakes/_buttons.scss
Normal file
@ -0,0 +1,98 @@
|
||||
/* ==========================================================================
|
||||
BUTTONS
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Default button
|
||||
========================================================================== */
|
||||
|
||||
.btn {
|
||||
/* default */
|
||||
display: inline-block;
|
||||
margin-bottom: 0.25em;
|
||||
padding: 0.5em 1em;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
border-width: 0;
|
||||
border-radius: $border-radius;
|
||||
cursor: pointer;
|
||||
|
||||
.icon {
|
||||
margin-right: 0.5em;
|
||||
}
|
||||
|
||||
.icon + .hidden {
|
||||
margin-left: -0.5em; /* override for hidden text*/
|
||||
}
|
||||
|
||||
/* button colors */
|
||||
$buttoncolors:
|
||||
(primary, $primary-color),
|
||||
(inverse, #fff),
|
||||
(light-outline, transparent),
|
||||
(success, $success-color),
|
||||
(warning, $warning-color),
|
||||
(danger, $danger-color),
|
||||
(info, $info-color),
|
||||
(facebook, $facebook-color),
|
||||
(twitter, $twitter-color),
|
||||
(google-plus, $google-plus-color),
|
||||
(linkedin, $linkedin-color);
|
||||
|
||||
@each $buttoncolor, $color in $buttoncolors {
|
||||
&--#{$buttoncolor} {
|
||||
@include yiq-contrasted($color);
|
||||
@if ($buttoncolor == inverse) {
|
||||
border: 1px solid $border-color;
|
||||
}
|
||||
@if ($buttoncolor == light-outline) {
|
||||
border: 1px solid #fff;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
@include yiq-contrasted(mix(#000, $color, 20%));
|
||||
}
|
||||
|
||||
&:visited {
|
||||
@include yiq-contrasted($color);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* fills width of parent container */
|
||||
&--block {
|
||||
display: block;
|
||||
width: 100%;
|
||||
|
||||
+ .btn--block {
|
||||
margin-top: 0.25em;
|
||||
}
|
||||
}
|
||||
|
||||
/* disabled */
|
||||
&--disabled {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
filter: alpha(opacity=65);
|
||||
box-shadow: none;
|
||||
opacity: 0.65;
|
||||
}
|
||||
|
||||
/* extra large button */
|
||||
&--x-large {
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
/* large button */
|
||||
&--large {
|
||||
font-size: $type-size-5;
|
||||
}
|
||||
|
||||
/* small button */
|
||||
&--small {
|
||||
font-size: $type-size-7;
|
||||
}
|
||||
}
|
83
_sass/minimal-mistakes/_footer.scss
Normal file
83
_sass/minimal-mistakes/_footer.scss
Normal file
@ -0,0 +1,83 @@
|
||||
/* ==========================================================================
|
||||
FOOTER
|
||||
========================================================================== */
|
||||
|
||||
.page__footer {
|
||||
@include clearfix;
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
/* sticky footer fix start */
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
height: auto;
|
||||
/* sticky footer fix end */
|
||||
margin-top: 3em;
|
||||
color: $muted-text-color;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
-webkit-animation-delay: 0.45s;
|
||||
animation-delay: 0.45s;
|
||||
background-color: $footer-background-color;
|
||||
|
||||
footer {
|
||||
@include clearfix;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
margin-top: 2em;
|
||||
max-width: 100%;
|
||||
padding: 0 1em 2em;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
.fa {
|
||||
color: $muted-text-color;
|
||||
}
|
||||
}
|
||||
|
||||
.page__footer-copyright {
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-7;
|
||||
}
|
||||
|
||||
.page__footer-follow {
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline-block;
|
||||
padding-top: 5px;
|
||||
padding-bottom: 5px;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
li + li:before {
|
||||
content: "";
|
||||
padding-right: 5px;
|
||||
}
|
||||
|
||||
a {
|
||||
padding-right: 10px;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
389
_sass/minimal-mistakes/_forms.scss
Normal file
389
_sass/minimal-mistakes/_forms.scss
Normal file
@ -0,0 +1,389 @@
|
||||
/* ==========================================================================
|
||||
Forms
|
||||
========================================================================== */
|
||||
|
||||
form {
|
||||
margin: 0 0 5px 0;
|
||||
padding: 1em;
|
||||
background-color: $form-background-color;
|
||||
|
||||
fieldset {
|
||||
margin-bottom: 5px;
|
||||
padding: 0;
|
||||
border-width: 0;
|
||||
}
|
||||
|
||||
legend {
|
||||
display: block;
|
||||
width: 100%;
|
||||
margin-bottom: 5px * 2;
|
||||
*margin-left: -7px;
|
||||
padding: 0;
|
||||
color: $text-color;
|
||||
border: 0;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
p {
|
||||
margin-bottom: 5px / 2;
|
||||
}
|
||||
|
||||
ul {
|
||||
list-style-type: none;
|
||||
margin: 0 0 5px 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
br {
|
||||
display: none;
|
||||
}
|
||||
}
|
||||
|
||||
label,
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
vertical-align: baseline;
|
||||
*vertical-align: middle;
|
||||
}
|
||||
|
||||
input,
|
||||
button,
|
||||
select,
|
||||
textarea {
|
||||
box-sizing: border-box;
|
||||
font-family: $sans-serif;
|
||||
}
|
||||
|
||||
label {
|
||||
display: block;
|
||||
margin-bottom: 0.25em;
|
||||
color: $text-color;
|
||||
cursor: pointer;
|
||||
|
||||
small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
|
||||
input,
|
||||
textarea,
|
||||
select {
|
||||
display: inline-block;
|
||||
width: 100%;
|
||||
padding: 0.25em;
|
||||
margin-bottom: 0.5em;
|
||||
color: $text-color;
|
||||
background-color: $background-color;
|
||||
border: $border-color;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
}
|
||||
|
||||
.input-mini {
|
||||
width: 60px;
|
||||
}
|
||||
|
||||
.input-small {
|
||||
width: 90px;
|
||||
}
|
||||
|
||||
input[type="image"],
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: 0;
|
||||
margin: 3px 0;
|
||||
*margin-top: 0;
|
||||
line-height: normal;
|
||||
cursor: pointer;
|
||||
border-radius: 0;
|
||||
border: 0 \9;
|
||||
}
|
||||
|
||||
input[type="checkbox"],
|
||||
input[type="radio"] {
|
||||
box-sizing: border-box;
|
||||
padding: 0;
|
||||
*width: 13px;
|
||||
*height: 13px;
|
||||
}
|
||||
|
||||
input[type="image"] {
|
||||
border: 0;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type="file"] {
|
||||
width: auto;
|
||||
padding: initial;
|
||||
line-height: initial;
|
||||
border: initial;
|
||||
background-color: transparent;
|
||||
background-color: initial;
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
input[type="button"],
|
||||
input[type="reset"],
|
||||
input[type="submit"] {
|
||||
width: auto;
|
||||
height: auto;
|
||||
cursor: pointer;
|
||||
*overflow: visible;
|
||||
}
|
||||
|
||||
select,
|
||||
input[type="file"] {
|
||||
*margin-top: 4px;
|
||||
}
|
||||
|
||||
select {
|
||||
width: auto;
|
||||
background-color: #fff;
|
||||
}
|
||||
|
||||
select[multiple],
|
||||
select[size] {
|
||||
height: auto;
|
||||
}
|
||||
|
||||
textarea {
|
||||
resize: vertical;
|
||||
height: auto;
|
||||
overflow: auto;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
input[type="hidden"] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.form {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.radio,
|
||||
.checkbox {
|
||||
padding-left: 18px;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
.radio input[type="radio"],
|
||||
.checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: -18px;
|
||||
}
|
||||
|
||||
.radio.inline,
|
||||
.checkbox.inline {
|
||||
display: inline-block;
|
||||
padding-top: 5px;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.radio.inline + .radio.inline,
|
||||
.checkbox.inline + .checkbox.inline {
|
||||
margin-left: 10px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Disabled state
|
||||
========================================================================== */
|
||||
|
||||
input[disabled],
|
||||
select[disabled],
|
||||
textarea[disabled],
|
||||
input[readonly],
|
||||
select[readonly],
|
||||
textarea[readonly] {
|
||||
opacity: 0.5;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Focus & active state
|
||||
========================================================================== */
|
||||
|
||||
input:focus,
|
||||
textarea:focus {
|
||||
border-color: $primary-color;
|
||||
outline: 0;
|
||||
outline: thin dotted \9;
|
||||
box-shadow: inset 0 1px 3px rgba($text-color, 0.06), 0 0 5px rgba($primary-color, 0.7);
|
||||
}
|
||||
|
||||
input[type="file"]:focus,
|
||||
input[type="radio"]:focus,
|
||||
input[type="checkbox"]:focus,
|
||||
select:focus {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Help text
|
||||
========================================================================== */
|
||||
|
||||
.help-block,
|
||||
.help-inline {
|
||||
color: $muted-text-color;
|
||||
}
|
||||
|
||||
.help-block {
|
||||
display: block;
|
||||
margin-bottom: 1em;
|
||||
line-height: 1em;
|
||||
}
|
||||
|
||||
.help-inline {
|
||||
display: inline-block;
|
||||
vertical-align: middle;
|
||||
padding-left: 5px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
.form-inline
|
||||
========================================================================== */
|
||||
|
||||
.form-inline input,
|
||||
.form-inline textarea,
|
||||
.form-inline select {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-inline label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.form-inline .radio,
|
||||
.form-inline .checkbox,
|
||||
.form-inline .radio {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-inline .radio input[type="radio"],
|
||||
.form-inline .checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 3px; }
|
||||
|
||||
|
||||
/*
|
||||
.form-search
|
||||
========================================================================== */
|
||||
|
||||
.form-search input,
|
||||
.form-search textarea,
|
||||
.form-search select {
|
||||
display: inline-block;
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.form-search .search-query {
|
||||
padding-left: 14px;
|
||||
padding-right: 14px;
|
||||
margin-bottom: 0;
|
||||
border-radius: 14px;
|
||||
}
|
||||
|
||||
.form-search label {
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.form-search .radio,
|
||||
.form-search .checkbox,
|
||||
.form-inline .radio {
|
||||
padding-left: 0;
|
||||
margin-bottom: 0;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
.form-search .radio input[type="radio"],
|
||||
.form-search .checkbox input[type="checkbox"] {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 3px;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
.form--loading
|
||||
========================================================================== */
|
||||
|
||||
.form--loading:before {
|
||||
content: '';
|
||||
}
|
||||
|
||||
.form--loading .form__spinner {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.form:before {
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
background-color: rgba(255, 255, 255, 0.7);
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
.form__spinner {
|
||||
display: none;
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
z-index: 11;
|
||||
}
|
||||
|
||||
|
||||
|
||||
/*
|
||||
Google search form
|
||||
========================================================================== */
|
||||
|
||||
#goog-fixurl {
|
||||
ul {
|
||||
list-style: none;
|
||||
margin-left: 0;
|
||||
padding-left: 0;
|
||||
li {
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#goog-wm-qt {
|
||||
width: auto;
|
||||
margin-right: 10px;
|
||||
margin-bottom: 20px;
|
||||
padding: 8px 20px;
|
||||
display: inline-block;
|
||||
font-size: $type-size-6;
|
||||
background-color: #fff;
|
||||
color: #000;
|
||||
border-width: 2px !important;
|
||||
border-style: solid !important;
|
||||
border-color: $border-color;
|
||||
border-radius: $border-radius;
|
||||
}
|
||||
|
||||
#goog-wm-sb {
|
||||
@extend .btn;
|
||||
}
|
83
_sass/minimal-mistakes/_masthead.scss
Normal file
83
_sass/minimal-mistakes/_masthead.scss
Normal file
@ -0,0 +1,83 @@
|
||||
/* ==========================================================================
|
||||
MASTHEAD
|
||||
========================================================================== */
|
||||
|
||||
.masthead {
|
||||
position: relative;
|
||||
border-bottom: 1px solid $border-color;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
-webkit-animation-delay: 0.15s;
|
||||
animation-delay: 0.15s;
|
||||
z-index: 20;
|
||||
|
||||
&__inner-wrap {
|
||||
@include clearfix;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
padding: 1em;
|
||||
max-width: 100%;
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
-webkit-box-pack: justify;
|
||||
justify-content: space-between;
|
||||
font-family: $sans-serif-narrow;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
|
||||
nav {
|
||||
z-index: 10;
|
||||
}
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.site-title {
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
padding: 0.5rem 0;
|
||||
align-self: stretch;
|
||||
-webkit-box-align: center;
|
||||
align-items: center;
|
||||
font-weight: bold;
|
||||
z-index: 20;
|
||||
}
|
||||
|
||||
.masthead__menu {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
|
||||
.site-nav {
|
||||
margin-left: 0;
|
||||
|
||||
@include breakpoint($small) {
|
||||
float: right;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
clear: both;
|
||||
list-style-type: none;
|
||||
}
|
||||
}
|
||||
|
||||
.masthead__menu-item {
|
||||
display: block;
|
||||
list-style-type: none;
|
||||
white-space: nowrap;
|
||||
|
||||
&--lg {
|
||||
padding-right: 2em;
|
||||
font-weight: 700;
|
||||
}
|
||||
}
|
92
_sass/minimal-mistakes/_mixins.scss
Normal file
92
_sass/minimal-mistakes/_mixins.scss
Normal file
@ -0,0 +1,92 @@
|
||||
/* ==========================================================================
|
||||
MIXINS
|
||||
========================================================================== */
|
||||
|
||||
%tab-focus {
|
||||
/* Default*/
|
||||
outline: thin dotted $warning-color;
|
||||
/* Webkit*/
|
||||
outline: 5px auto $warning-color;
|
||||
outline-offset: -2px;
|
||||
}
|
||||
|
||||
/*
|
||||
em function
|
||||
========================================================================== */
|
||||
|
||||
@function em($target, $context: $doc-font-size) {
|
||||
@return ($target / $context) * 1em;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Bourbon clearfix
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
* Provides an easy way to include a clearfix for containing floats.
|
||||
* link http://cssmojo.com/latest_new_clearfix_so_far/
|
||||
*
|
||||
* example scss - Usage
|
||||
*
|
||||
* .element {
|
||||
* @include clearfix;
|
||||
* }
|
||||
*
|
||||
* example css - CSS Output
|
||||
*
|
||||
* .element::after {
|
||||
* clear: both;
|
||||
* content: "";
|
||||
* display: table;
|
||||
* }
|
||||
*/
|
||||
|
||||
@mixin clearfix {
|
||||
clear: both;
|
||||
|
||||
&::after {
|
||||
clear: both;
|
||||
content: "";
|
||||
display: table;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Compass YIQ Color Contrast
|
||||
https://github.com/easy-designs/yiq-color-contrast
|
||||
========================================================================== */
|
||||
|
||||
@function yiq-is-light(
|
||||
$color,
|
||||
$threshold: $yiq-contrasted-threshold
|
||||
) {
|
||||
$red: red($color);
|
||||
$green: green($color);
|
||||
$blue: blue($color);
|
||||
|
||||
$yiq: (($red*299)+($green*587)+($blue*114))/1000;
|
||||
|
||||
@if $yiq-debug { @debug $yiq, $threshold; }
|
||||
|
||||
@return if($yiq >= $threshold, true, false);
|
||||
}
|
||||
|
||||
@function yiq-contrast-color(
|
||||
$color,
|
||||
$dark: $yiq-contrasted-dark-default,
|
||||
$light: $yiq-contrasted-light-default,
|
||||
$threshold: $yiq-contrasted-threshold
|
||||
) {
|
||||
@return if(yiq-is-light($color, $threshold), $yiq-contrasted-dark-default, $yiq-contrasted-light-default);
|
||||
}
|
||||
|
||||
@mixin yiq-contrasted(
|
||||
$background-color,
|
||||
$dark: $yiq-contrasted-dark-default,
|
||||
$light: $yiq-contrasted-light-default,
|
||||
$threshold: $yiq-contrasted-threshold
|
||||
) {
|
||||
background-color: $background-color;
|
||||
color: yiq-contrast-color($background-color, $dark, $light, $threshold);
|
||||
}
|
569
_sass/minimal-mistakes/_navigation.scss
Normal file
569
_sass/minimal-mistakes/_navigation.scss
Normal file
@ -0,0 +1,569 @@
|
||||
/* ==========================================================================
|
||||
NAVIGATION
|
||||
========================================================================== */
|
||||
|
||||
/*
|
||||
Breadcrumb navigation links
|
||||
========================================================================== */
|
||||
|
||||
.breadcrumbs {
|
||||
@include clearfix;
|
||||
margin: 0 auto;
|
||||
max-width: 100%;
|
||||
padding-left: 2em;
|
||||
padding-right: 2em;
|
||||
font-family: $sans-serif;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
-webkit-animation-delay: 0.30s;
|
||||
animation-delay: 0.30s;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
|
||||
ol {
|
||||
padding: 0;
|
||||
list-style: none;
|
||||
font-size: $type-size-6;
|
||||
|
||||
@include breakpoint($large) {
|
||||
float: right;
|
||||
width: span(10 of 12);
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
padding-left: gutter(0.5 of 12);
|
||||
}
|
||||
}
|
||||
|
||||
li {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.current {
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Post pagination navigation links
|
||||
========================================================================== */
|
||||
|
||||
.pagination {
|
||||
@include clearfix();
|
||||
float: left;
|
||||
margin-top: 1em;
|
||||
padding-top: 1em;
|
||||
width: 100%;
|
||||
|
||||
ul {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
list-style-type: none;
|
||||
font-family: $sans-serif;
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
float: left;
|
||||
margin-left: -1px;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin-bottom: 0.25em;
|
||||
padding: 0.5em 1em;
|
||||
font-family: $sans-serif;
|
||||
font-size: 14px;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: $muted-text-color;
|
||||
border: 1px solid mix(#000, $border-color, 25%);
|
||||
border-radius: 0;
|
||||
|
||||
&:hover {
|
||||
color: $link-color-hover;
|
||||
}
|
||||
|
||||
&.current,
|
||||
&.current.disabled {
|
||||
color: #fff;
|
||||
background: $primary-color;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: rgba($muted-text-color, 0.5);
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
margin-left: 0;
|
||||
|
||||
a {
|
||||
border-top-left-radius: $border-radius;
|
||||
border-bottom-left-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
a {
|
||||
border-top-right-radius: $border-radius;
|
||||
border-bottom-right-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* next/previous buttons */
|
||||
&--pager {
|
||||
display: block;
|
||||
padding: 1em 2em;
|
||||
float: left;
|
||||
width: 50%;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-5;
|
||||
font-weight: bold;
|
||||
text-align: center;
|
||||
text-decoration: none;
|
||||
color: $muted-text-color;
|
||||
border: 1px solid mix(#000, $border-color, 25%);
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:hover {
|
||||
@include yiq-contrasted($muted-text-color);
|
||||
}
|
||||
|
||||
&:first-child {
|
||||
border-top-right-radius: 0;
|
||||
border-bottom-right-radius: 0;
|
||||
}
|
||||
|
||||
&:last-child {
|
||||
margin-left: -1px;
|
||||
border-top-left-radius: 0;
|
||||
border-bottom-left-radius: 0;
|
||||
}
|
||||
|
||||
&.disabled {
|
||||
color: rgba($muted-text-color, 0.5);
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__content + .pagination,
|
||||
.page__meta + .pagination,
|
||||
.page__share + .pagination,
|
||||
.page__comments + .pagination {
|
||||
margin-top: 2em;
|
||||
padding-top: 2em;
|
||||
border-top: 1px solid $border-color;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Priority plus navigation
|
||||
========================================================================== */
|
||||
|
||||
.greedy-nav {
|
||||
position: relative;
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
-webkit-box-align: center;
|
||||
align-items: center;
|
||||
background: $background-color;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
margin: 0 1rem;
|
||||
padding: 0.5rem 0;
|
||||
color: $masthead-link-color;
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
color: $masthead-link-color-hover;
|
||||
}
|
||||
|
||||
&.site-title {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
|
||||
button {
|
||||
padding: 0 0.5rem;
|
||||
align-self: stretch;
|
||||
border: 0;
|
||||
outline: none;
|
||||
color: #fff;
|
||||
background: transparent;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.visible-links {
|
||||
display: -webkit-box;
|
||||
display: flex;
|
||||
-webkit-box-pack: end;
|
||||
-webkit-box-flex: 1;
|
||||
flex: 1;
|
||||
padding-right: 2rem;
|
||||
overflow: hidden;
|
||||
|
||||
li {
|
||||
-webkit-box-flex: 0;
|
||||
flex: none;
|
||||
|
||||
&:first-child {
|
||||
a {
|
||||
margin-left: 0;
|
||||
}
|
||||
}
|
||||
&:last-child {
|
||||
a {
|
||||
margin-right: 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a {
|
||||
position: relative;
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
left: 0;
|
||||
bottom: 0;
|
||||
height: 4px;
|
||||
background: $primary-color;
|
||||
width: 100%;
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
-webkit-transform: scaleX(0) translate3d(0, 0 , 0);
|
||||
transform: scaleX(0) translate3d(0, 0 , 0); /* hide*/
|
||||
}
|
||||
|
||||
&:hover:before {
|
||||
-webkit-transform: scaleX(1);
|
||||
-ms-transform: scaleX(1);
|
||||
transform: scaleX(1); /* reveal*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.links-menu{
|
||||
right: 2.5rem;
|
||||
}
|
||||
|
||||
.lang-menu{
|
||||
right: .2rem;
|
||||
}
|
||||
|
||||
.hidden-links {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
margin-top: 15px;
|
||||
padding: 5px;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
background: $background-color;
|
||||
box-shadow: 0 2px 4px 0 rgba(#000, 0.16), 0 2px 10px 0 rgba(#000, 0.12);
|
||||
|
||||
&.hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a {
|
||||
margin: 0;
|
||||
padding: 10px 20px;
|
||||
font-size: $type-size-5;
|
||||
|
||||
&:hover {
|
||||
color: $masthead-link-color-hover;
|
||||
background: $navicon-link-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
&:before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -11px;
|
||||
right: 5px;
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: $border-color transparent;
|
||||
display: block;
|
||||
z-index: 0;
|
||||
}
|
||||
|
||||
&:after {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: -10px;
|
||||
right: 5px;
|
||||
width: 0;
|
||||
border-style: solid;
|
||||
border-width: 0 10px 10px;
|
||||
border-color: $background-color transparent;
|
||||
display: block;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
li {
|
||||
display: block;
|
||||
border-bottom: 1px solid $border-color;
|
||||
|
||||
&:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Navigation list
|
||||
========================================================================== */
|
||||
|
||||
.nav__list {
|
||||
margin-bottom: 1.5em;
|
||||
|
||||
input[type="checkbox"],
|
||||
label {
|
||||
display: none;
|
||||
}
|
||||
|
||||
@include breakpoint(max-width ($large - 1px)) {
|
||||
|
||||
label {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
padding: 0.5em 2.5em 0.5em 1em;
|
||||
font-size: $type-size-6;
|
||||
font-weight: bold;
|
||||
border: 1px solid $light-gray;
|
||||
border-radius: $border-radius;
|
||||
z-index: 20;
|
||||
-webkit-transition: 0.2s ease-out;
|
||||
transition: 0.2s ease-out;
|
||||
cursor: pointer;
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 1em;
|
||||
top: 1.25em;
|
||||
width: 0.75em;
|
||||
height: 0.125em;
|
||||
line-height: 1;
|
||||
background-color: $gray;
|
||||
-webkit-transition: 0.2s ease-out;
|
||||
transition: 0.2s ease-out;
|
||||
}
|
||||
|
||||
&:after {
|
||||
-webkit-transform: rotate(90deg);
|
||||
-ms-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
&:hover {
|
||||
color: #fff;
|
||||
border-color: $gray;
|
||||
background-color: mix(white, #000, 20%);
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* selected*/
|
||||
input:checked + label {
|
||||
color: white;
|
||||
background-color: mix(white, #000, 20%);
|
||||
|
||||
&:before,
|
||||
&:after {
|
||||
background-color: #fff;
|
||||
}
|
||||
}
|
||||
|
||||
/* on hover show expand*/
|
||||
label:hover:after {
|
||||
-webkit-transform: rotate(90deg);
|
||||
-ms-transform: rotate(90deg);
|
||||
transform: rotate(90deg);
|
||||
}
|
||||
|
||||
input:checked + label:hover:after {
|
||||
-webkit-transform: rotate(0);
|
||||
-ms-transform: rotate(0);
|
||||
transform: rotate(0);
|
||||
}
|
||||
|
||||
ul {
|
||||
margin-bottom: 1em;
|
||||
}
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0.25em 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding-top: 0.125em;
|
||||
padding-bottom: 0.125em;
|
||||
}
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.nav__list .nav__items {
|
||||
margin: 0;
|
||||
font-size: 1.4rem;
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
line-height: 1.6;
|
||||
}
|
||||
|
||||
ol {
|
||||
padding-left: 0.9rem;
|
||||
}
|
||||
|
||||
li {
|
||||
list-style: inherit;
|
||||
}
|
||||
|
||||
.active {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.completed {
|
||||
color: $gray;
|
||||
text-decoration: line-through;
|
||||
}
|
||||
|
||||
@include breakpoint(max-width ($large - 1px)) {
|
||||
position: relative;
|
||||
max-height: 0;
|
||||
opacity: 0%;
|
||||
overflow: hidden;
|
||||
z-index: 10;
|
||||
-webkit-transition: 0.3s ease-in-out;
|
||||
transition: 0.3s ease-in-out;
|
||||
-webkit-transform: translate(0, 10%);
|
||||
-ms-transform: translate(0, 10%);
|
||||
transform: translate(0, 10%);
|
||||
}
|
||||
}
|
||||
|
||||
@include breakpoint(max-width ($large - 1px)) {
|
||||
.nav__list input:checked ~ .nav__items {
|
||||
-webkit-transition: 0.5s ease-in-out;
|
||||
transition: 0.5s ease-in-out;
|
||||
max-height: 9999px; /* exaggerate max-height to accommodate tall lists*/
|
||||
overflow: visible;
|
||||
opacity: 1;
|
||||
margin-top: 1em;
|
||||
-webkit-transform: translate(0, 0);
|
||||
-ms-transform: translate(0, 0);
|
||||
transform: translate(0, 0);
|
||||
}
|
||||
}
|
||||
|
||||
.nav__title {
|
||||
margin: 0;
|
||||
padding: 0.5rem 1rem;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-5;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
.nav__sub-title {
|
||||
display: block;
|
||||
margin: 0.5rem 0;
|
||||
padding: 0.5rem 0;
|
||||
font-family: $sans-serif-narrow;
|
||||
font-size: $type-size-6;
|
||||
font-weight: bold;
|
||||
text-transform: uppercase;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Table of contents navigation
|
||||
========================================================================== */
|
||||
|
||||
.toc {
|
||||
font-family: $sans-serif-narrow;
|
||||
color: $gray;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 1px;
|
||||
background-color: $background-color;
|
||||
border: 1px solid $border-color;
|
||||
border-radius: $border-radius;
|
||||
box-shadow: $box-shadow;
|
||||
|
||||
.nav__title {
|
||||
color: #fff;
|
||||
font-size: $type-size-6;
|
||||
background: $primary-color;
|
||||
border-top-left-radius: $border-radius;
|
||||
border-top-right-radius: $border-radius;
|
||||
}
|
||||
}
|
||||
|
||||
.toc__menu {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
list-style: none;
|
||||
font-size: 1rem;
|
||||
|
||||
a {
|
||||
display: block;
|
||||
padding: 0.5rem 1rem;
|
||||
color: $text-color;
|
||||
font-size: $type-size-7;
|
||||
font-weight: bold;
|
||||
line-height: 1.5;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
> li:last-child {
|
||||
a {
|
||||
border-bottom: none;
|
||||
}
|
||||
}
|
||||
|
||||
li ul > li a {
|
||||
padding-left: 1.75rem;
|
||||
font-weight: normal;
|
||||
}
|
||||
|
||||
/* hide sub sub links on small screens*/
|
||||
li > ul li {
|
||||
display: none;
|
||||
|
||||
@include breakpoint($medium) {
|
||||
display: block;
|
||||
}
|
||||
}
|
||||
}
|
97
_sass/minimal-mistakes/_notices.scss
Normal file
97
_sass/minimal-mistakes/_notices.scss
Normal file
@ -0,0 +1,97 @@
|
||||
/* ==========================================================================
|
||||
NOTICE TEXT BLOCKS
|
||||
========================================================================== */
|
||||
|
||||
/**
|
||||
* Default Kramdown usage (no indents!):
|
||||
* <div class="notice" markdown="1">
|
||||
* #### Headline for the Notice
|
||||
* Text for the notice
|
||||
* </div>
|
||||
*/
|
||||
|
||||
@mixin notice($notice-color) {
|
||||
margin: 2em 0 !important; /* override*/
|
||||
padding: 1em;
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-6 !important;
|
||||
text-indent: initial; /* override*/
|
||||
font-weight: bold;
|
||||
background-color: mix($background-color, $notice-color, 45%);
|
||||
border-radius: $border-radius;
|
||||
box-shadow: 0 1px 1px rgba($notice-color, 0.25);
|
||||
|
||||
h4 {
|
||||
margin-top: 0 !important; /* override*/
|
||||
margin-bottom: 0.75em;
|
||||
}
|
||||
|
||||
@at-root .page__content #{&} h4 {
|
||||
/* using at-root to override .page-content h4 font size*/
|
||||
margin-bottom: 0;
|
||||
font-size: 1em;
|
||||
}
|
||||
|
||||
p {
|
||||
&:last-child {
|
||||
margin-bottom: 0 !important; /* override*/
|
||||
}
|
||||
}
|
||||
|
||||
h4 + p {
|
||||
/* remove space above paragraphs that appear directly after notice headline*/
|
||||
margin-top: 0;
|
||||
padding-top: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: mix(#fff, $notice-color, 30%);
|
||||
text-decoration: none;
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
ul {
|
||||
&:last-child {
|
||||
margin-bottom: 0; /* override*/
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/* Default notice */
|
||||
|
||||
.notice {
|
||||
@include notice($light-gray);
|
||||
}
|
||||
|
||||
/* Primary notice */
|
||||
|
||||
.notice--primary {
|
||||
@include notice($primary-color);
|
||||
}
|
||||
|
||||
/* Info notice */
|
||||
|
||||
.notice--info {
|
||||
@include notice($info-color);
|
||||
}
|
||||
|
||||
/* Warning notice */
|
||||
|
||||
.notice--warning {
|
||||
@include notice($warning-color);
|
||||
}
|
||||
|
||||
/* Success notice */
|
||||
|
||||
.notice--success {
|
||||
@include notice($success-color);
|
||||
}
|
||||
|
||||
/* Danger notice */
|
||||
|
||||
.notice--danger {
|
||||
@include notice($danger-color);
|
||||
}
|
431
_sass/minimal-mistakes/_page.scss
Normal file
431
_sass/minimal-mistakes/_page.scss
Normal file
@ -0,0 +1,431 @@
|
||||
/* ==========================================================================
|
||||
SINGLE PAGE/POST
|
||||
========================================================================== */
|
||||
|
||||
#main {
|
||||
@include clearfix;
|
||||
margin-left: auto;
|
||||
margin-top: 2em;
|
||||
margin-right: auto;
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
max-width: 100%;
|
||||
-webkit-animation-delay: 0.35s;
|
||||
animation-delay: 0.35s;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
.page {
|
||||
|
||||
@include breakpoint($large) {
|
||||
float: right;
|
||||
width: calc(100% - #{$right-sidebar-width-narrow});
|
||||
padding-right: $right-sidebar-width-narrow;
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
width: calc(100% - #{$right-sidebar-width});
|
||||
padding-right: $right-sidebar-width;
|
||||
}
|
||||
|
||||
.page__inner-wrap {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
|
||||
.page__content,
|
||||
.page__meta,
|
||||
.page__share {
|
||||
position: relative;
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__title {
|
||||
margin-top: 0;
|
||||
line-height: 1;
|
||||
|
||||
& + .page__meta {
|
||||
margin-top: -0.5em;
|
||||
}
|
||||
}
|
||||
|
||||
.page__lead {
|
||||
font-family: $global-font-family;
|
||||
font-size: $type-size-4;
|
||||
}
|
||||
|
||||
.page__content {
|
||||
|
||||
h2 {
|
||||
padding-bottom: 0.5em;
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
|
||||
p, li, dl {
|
||||
font-size: .85em;
|
||||
}
|
||||
|
||||
/* paragraph indents */
|
||||
p {
|
||||
margin: 0 0 $indent-var;
|
||||
|
||||
/* sibling indentation*/
|
||||
@if $paragraph-indent == true {
|
||||
& + p {
|
||||
text-indent: $indent-var;
|
||||
margin-top: -($indent-var);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
a:not(.btn) {
|
||||
|
||||
&:hover {
|
||||
text-decoration: underline;
|
||||
|
||||
img {
|
||||
box-shadow: 0 0 10px rgba(#000, 0.25);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dt {
|
||||
margin-top: 1em;
|
||||
font-family: $sans-serif;
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin-left: 1em;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
.small {
|
||||
font-size: $type-size-6;
|
||||
}
|
||||
|
||||
/* blockquote citations */
|
||||
blockquote + .small {
|
||||
margin-top: -1.5em;
|
||||
padding-left: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
.page__hero {
|
||||
position: relative;
|
||||
margin-bottom: 2em;
|
||||
@include clearfix;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
-webkit-animation-delay: 0.25s;
|
||||
animation-delay: 0.25s;
|
||||
|
||||
&--overlay {
|
||||
position: relative;
|
||||
margin-bottom: 2em;
|
||||
padding: 3em 0;
|
||||
@include clearfix;
|
||||
background-size: cover;
|
||||
background-repeat: no-repeat;
|
||||
background-position: center;
|
||||
-webkit-animation: $intro-transition;
|
||||
animation: $intro-transition;
|
||||
-webkit-animation-delay: 0.25s;
|
||||
animation-delay: 0.25s;
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.wrapper {
|
||||
padding-left: 1em;
|
||||
padding-right: 1em;
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
max-width: $x-large;
|
||||
}
|
||||
}
|
||||
|
||||
.page__title,
|
||||
.page__meta,
|
||||
.page__lead,
|
||||
.btn {
|
||||
color: #fff;
|
||||
text-shadow: 1px 1px 4px rgba(#000, 0.5);
|
||||
}
|
||||
|
||||
.page__lead {
|
||||
max-width: $medium;
|
||||
}
|
||||
|
||||
.page__title {
|
||||
font-size: $type-size-2;
|
||||
|
||||
@include breakpoint($small) {
|
||||
font-size: $type-size-1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__hero-image {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
-ms-interpolation-mode: bicubic;
|
||||
}
|
||||
|
||||
.page__hero-caption {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
margin: 0 auto;
|
||||
padding: 2px 5px;
|
||||
color: #fff;
|
||||
font-family: $caption-font-family;
|
||||
font-size: $type-size-7;
|
||||
background: #000;
|
||||
text-align: right;
|
||||
z-index: 5;
|
||||
opacity: 0.5;
|
||||
border-radius: $border-radius 0 0 0;
|
||||
|
||||
@include breakpoint($large) {
|
||||
padding: 5px 10px;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #fff;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Social sharing
|
||||
========================================================================== */
|
||||
|
||||
.page__share {
|
||||
margin-top: 2em;
|
||||
padding-top: 1em;
|
||||
border-top: 1px solid $border-color;
|
||||
|
||||
@include breakpoint(max-width $small) {
|
||||
.btn span {
|
||||
border: 0;
|
||||
clip: rect(0 0 0 0);
|
||||
height: 1px;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
padding: 0;
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.page__share-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Page meta
|
||||
========================================================================== */
|
||||
|
||||
.page__meta {
|
||||
margin-top: 2em;
|
||||
color: $muted-text-color;
|
||||
font-family: $sans-serif;
|
||||
font-size: $type-size-6;
|
||||
|
||||
p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
}
|
||||
}
|
||||
|
||||
.page__meta-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Page taxonomy
|
||||
========================================================================== */
|
||||
|
||||
.page__taxonomy {
|
||||
.sep {
|
||||
display: none;
|
||||
}
|
||||
|
||||
strong {
|
||||
margin-right: 10px;
|
||||
}
|
||||
}
|
||||
|
||||
.page__taxonomy-item {
|
||||
display: inline-block;
|
||||
margin-right: 5px;
|
||||
margin-bottom: 8px;
|
||||
padding: 5px 10px;
|
||||
text-decoration: none;
|
||||
border: 1px solid mix(#000, $border-color, 25%);
|
||||
border-radius: $border-radius;
|
||||
|
||||
&:hover {
|
||||
text-decoration: none;
|
||||
color: $link-color-hover;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Comments
|
||||
========================================================================== */
|
||||
|
||||
.page__comments {
|
||||
float: left;
|
||||
margin-left: 0;
|
||||
margin-right: 0;
|
||||
width: 100%;
|
||||
clear: both;
|
||||
}
|
||||
|
||||
.page__comments-title {
|
||||
margin-top: 2rem;
|
||||
margin-bottom: 10px;
|
||||
padding-top: 2rem;
|
||||
font-size: $type-size-6;
|
||||
border-top: 1px solid $border-color;
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.page__comments-form {
|
||||
-webkit-transition: $global-transition;
|
||||
transition: $global-transition;
|
||||
|
||||
&.disabled {
|
||||
input,
|
||||
button,
|
||||
textarea,
|
||||
label {
|
||||
pointer-events: none;
|
||||
cursor: not-allowed;
|
||||
filter: alpha(opacity=65);
|
||||
box-shadow: none;
|
||||
opacity: 0.65;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.comment {
|
||||
@include clearfix();
|
||||
margin: 1em 0;
|
||||
|
||||
&:not(:last-child) {
|
||||
border-bottom: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__avatar-wrapper {
|
||||
float: left;
|
||||
width: 60px;
|
||||
height: 60px;
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: 100px;
|
||||
height: 100px;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__avatar {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
border-radius: 50%;
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: 80px;
|
||||
height: 80px;
|
||||
padding: 5px;
|
||||
border: 1px solid $border-color;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__content-wrapper {
|
||||
float: right;
|
||||
width: calc(100% - 60px);
|
||||
|
||||
@include breakpoint($large) {
|
||||
width: calc(100% - 100px);
|
||||
}
|
||||
}
|
||||
|
||||
.comment__author {
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.comment__date {
|
||||
@extend .page__meta;
|
||||
margin: 0;
|
||||
|
||||
a {
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/*
|
||||
Related
|
||||
========================================================================== */
|
||||
|
||||
.page__related {
|
||||
@include clearfix();
|
||||
float: left;
|
||||
margin-top: 2em;
|
||||
padding-top: 1em;
|
||||
border-top: 1px solid $border-color;
|
||||
|
||||
@include breakpoint($large) {
|
||||
float: right;
|
||||
width: calc(100% - #{$right-sidebar-width-narrow});
|
||||
}
|
||||
|
||||
@include breakpoint($x-large) {
|
||||
width: calc(100% - #{$right-sidebar-width});
|
||||
}
|
||||
|
||||
a {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
}
|
||||
|
||||
.page__related-title {
|
||||
margin-bottom: 10px;
|
||||
font-size: $type-size-6;
|
||||
text-transform: uppercase;
|
||||
}
|
252
_sass/minimal-mistakes/_print.scss
Normal file
252
_sass/minimal-mistakes/_print.scss
Normal file
@ -0,0 +1,252 @@
|
||||
/* ==========================================================================
|
||||
PRINT STYLES
|
||||
========================================================================== */
|
||||
|
||||
@media print {
|
||||
|
||||
[hidden] {
|
||||
display: none;
|
||||
}
|
||||
|
||||
* {
|
||||
-moz-box-sizing: border-box;
|
||||
-webkit-box-sizing: border-box;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
min-height: auto !important;
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0 auto;
|
||||
background: #fff !important;
|
||||
color: #000 !important;
|
||||
font-size: 1rem;
|
||||
line-height: 1.5;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
text-rendering: optimizeLegibility;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
color: #000;
|
||||
line-height: 1.2;
|
||||
margin-bottom: 0.75rem;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
h1 {
|
||||
font-size: 2.5rem;
|
||||
}
|
||||
|
||||
h2 {
|
||||
font-size: 2rem;
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-size: 1.75rem;
|
||||
}
|
||||
|
||||
h4 {
|
||||
font-size: 1.5rem;
|
||||
}
|
||||
|
||||
h5 {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
h6 {
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
a,
|
||||
a:visited {
|
||||
color: #000;
|
||||
text-decoration: underline;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
table {
|
||||
border-collapse: collapse;
|
||||
}
|
||||
|
||||
thead {
|
||||
display: table-header-group;
|
||||
}
|
||||
|
||||
table,
|
||||
th,
|
||||
td {
|
||||
border-bottom: 1px solid #000;
|
||||
}
|
||||
|
||||
td,
|
||||
th {
|
||||
padding: 8px 16px;
|
||||
}
|
||||
|
||||
img {
|
||||
border: 0;
|
||||
display: block;
|
||||
max-width: 100% !important;
|
||||
vertical-align: middle;
|
||||
}
|
||||
|
||||
hr {
|
||||
border: 0;
|
||||
border-bottom: 2px solid #bbb;
|
||||
height: 0;
|
||||
margin: 2.25rem 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
dt {
|
||||
font-weight: bold;
|
||||
}
|
||||
|
||||
dd {
|
||||
margin: 0;
|
||||
margin-bottom: 0.75rem;
|
||||
}
|
||||
|
||||
abbr[title],
|
||||
acronym[title] {
|
||||
border: 0;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
table,
|
||||
blockquote,
|
||||
pre,
|
||||
code,
|
||||
figure,
|
||||
li,
|
||||
hr,
|
||||
ul,
|
||||
ol,
|
||||
a,
|
||||
tr {
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
p,
|
||||
a {
|
||||
orphans: 3;
|
||||
widows: 3;
|
||||
}
|
||||
|
||||
h1,
|
||||
h2,
|
||||
h3,
|
||||
h4,
|
||||
h5,
|
||||
h6 {
|
||||
page-break-after: avoid;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
h1 + p,
|
||||
h2 + p,
|
||||
h3 + p {
|
||||
page-break-before: avoid;
|
||||
}
|
||||
|
||||
img {
|
||||
page-break-after: auto;
|
||||
page-break-before: auto;
|
||||
page-break-inside: avoid;
|
||||
}
|
||||
|
||||
pre {
|
||||
white-space: pre-wrap !important;
|
||||
word-wrap: break-word;
|
||||
}
|
||||
|
||||
a[href^='http://']:after,
|
||||
a[href^='https://']:after,
|
||||
a[href^='ftp://']:after {
|
||||
content: " (" attr(href) ")";
|
||||
font-size: 80%;
|
||||
}
|
||||
|
||||
abbr[title]:after,
|
||||
acronym[title]:after {
|
||||
content: " (" attr(title) ")";
|
||||
}
|
||||
|
||||
#main {
|
||||
max-width: 100%;
|
||||
}
|
||||
|
||||
.page {
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.page-break,
|
||||
.page-break-before {
|
||||
page-break-before: always;
|
||||
}
|
||||
|
||||
.page-break-after {
|
||||
page-break-after: always;
|
||||
}
|
||||
|
||||
.no-print {
|
||||
display: none;
|
||||
}
|
||||
|
||||
a.no-reformat:after {
|
||||
content: '';
|
||||
}
|
||||
|
||||
abbr[title].no-reformat:after,
|
||||
acronym[title].no-reformat:after {
|
||||
content: '';
|
||||
}
|
||||
|
||||
.page__hero-caption {
|
||||
color: #000 !important;
|
||||
background: #fff !important;
|
||||
opacity: 1;
|
||||
|
||||
a {
|
||||
color: #000 !important;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
Hide the following elements on print
|
||||
========================================================================== */
|
||||
|
||||
.masthead,
|
||||
.toc,
|
||||
.page__share,
|
||||
.page__related,
|
||||
.pagination,
|
||||
.ads,
|
||||
.page__footer,
|
||||
.page__comments-form,
|
||||
.author__avatar,
|
||||
.author__content,
|
||||
.author__urls-wrapper,
|
||||
.nav__list,
|
||||
.sidebar,
|
||||
.adsbygoogle {
|
||||
display: none !important;
|
||||
height: 1px !important;
|
||||
}
|
||||
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user