mirror of
https://github.com/XRPLF/xrpl-dev-portal.git
synced 2025-11-20 19:55:54 +00:00
@@ -1,5 +1,6 @@
|
||||
#!/bin/bash
|
||||
mkdir -p out
|
||||
rm -r out
|
||||
|
||||
# Pass forward dactyl "vars" arg if provided
|
||||
if [ "$1" == "--vars" ] && [ -n "$2" ];
|
||||
@@ -8,9 +9,41 @@ then
|
||||
shift 2
|
||||
fi
|
||||
|
||||
targets=`dactyl_build -lq | awk '{print $1}'`
|
||||
linkerrors=0
|
||||
builderrors=0
|
||||
|
||||
# Build language-based targets all together first
|
||||
langs=(en ja)
|
||||
for lang in ${langs[*]}; do
|
||||
echo "======================================="
|
||||
echo "Building language: en"
|
||||
|
||||
if [ "$lang" == "en" ]; then
|
||||
if [ -n "$dactyl_vars" ]; then
|
||||
dactyl_build -q -t "$lang" --vars "$dactyl_vars"
|
||||
else
|
||||
dactyl_build -q -t "$lang"
|
||||
fi
|
||||
else
|
||||
if [ -n "$dactyl_vars" ]; then
|
||||
dactyl_build -q -t "$lang" -o "out/$lang" --vars "$dactyl_vars"
|
||||
else
|
||||
dactyl_build -q -t "$lang" -o "out/$lang"
|
||||
fi
|
||||
fi
|
||||
buildresult=$?
|
||||
if [ $buildresult -ne 0 ]; then
|
||||
builderrors=$(($buildresult + $builderrors))
|
||||
echo "Error building this target; link checker may miss things."
|
||||
fi
|
||||
done
|
||||
|
||||
# Check language targets all at once
|
||||
dactyl_link_checker -q "$@"
|
||||
linkerrors=$(($? + $linkerrors))
|
||||
|
||||
# Build & check other targets individually afterwords
|
||||
other_targets=`dactyl_build -lq | awk '/^(en|ja) / {next;} {print $1}'`
|
||||
while read -r line; do
|
||||
echo ""
|
||||
echo "======================================="
|
||||
@@ -30,7 +63,7 @@ while read -r line; do
|
||||
builderrors=$(($buildresult + $builderrors))
|
||||
echo "Error building this target; skipping link checker."
|
||||
fi
|
||||
done <<< "$targets"
|
||||
done <<< "$other_targets"
|
||||
|
||||
totalerrors=$(($builderrors + $linkerrors))
|
||||
|
||||
|
||||
7
tool/build_all_langs.sh
Executable file
7
tool/build_all_langs.sh
Executable file
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
## Run from the root directory of the repo to build all languages
|
||||
## TODO: read the `-o` / `--out` argument and adapt it for non-en languages
|
||||
|
||||
dactyl_build --vars "$dactyl_vars"
|
||||
dactyl_build -t ja -o out/ja --vars "$dactyl_vars"
|
||||
62
tool/filter_unicode_header_ids.py
Normal file
62
tool/filter_unicode_header_ids.py
Normal file
@@ -0,0 +1,62 @@
|
||||
################################################################################
|
||||
## Unicode-friendly header IDs ##
|
||||
## Author: Rome Reginelli ##
|
||||
## Copyright: Ripple Labs, Inc. 2016-2019 ##
|
||||
## License: MIT https://github.com/ripple/xrpl-dev-portal/blob/master/LICENSE ##
|
||||
## ##
|
||||
## Changes the header ID formula to accept more unicode characters, so ##
|
||||
## non-English, non-Latin-script headers can have nice IDs. Closely matches ##
|
||||
## the behavior of GitHub-Flavored Markdown. ##
|
||||
################################################################################
|
||||
import re
|
||||
|
||||
## HTML5's 'id' attribute requirements are:
|
||||
## - Must be at least one character in length.
|
||||
## - Must not contain ASCII whitespace.
|
||||
## - Must be unique within the document.
|
||||
## - No other requirements. (HTML4 had stricter requirements.)
|
||||
|
||||
## Python-Markdown's default ID formula (as of v3.1.1) is:
|
||||
## 1. normalize unicode to NFKD form (so it can strip accent marks)
|
||||
## 2. remove all non-ASCII characters (this is the problem for us)
|
||||
## 3. remove leading/trailing whitespace
|
||||
## 4. convert to lowercase
|
||||
## 5. remove everything except space, hyphen, alphanumerics, and underscores
|
||||
## 6. replace each block of consecutive whitespace/hyphens with a single hyphen
|
||||
## 7. add _1, _2 etc. suffixes to non-unique IDs
|
||||
## Later, the dev portal uses a filter to replace underscores with dashes.
|
||||
|
||||
## The new formula is similar, but has some important differences:
|
||||
## 1. No Unicode normalization. We'd rather leave things as-is.
|
||||
## 2. Leave the string as unicode throughout.
|
||||
## 5. Keep hyphens, unicode "space" and unicode "word" characters (includes
|
||||
## underscores). Replace everything else with spaces, then strip trailing
|
||||
## spaces.
|
||||
## 7. Add -1, -2 suffixes to non-unique IDs.
|
||||
## The end result is that this standard closely matches GitHub-flavored
|
||||
## Markdown in almost all cases. (The exceptions are cases where GFM makes
|
||||
## invalid empty IDs, for example with emoji headers...)
|
||||
|
||||
def idify(utext):
|
||||
"""Make a string ID-friendly (but more unicode-friendly)"""
|
||||
utext = re.sub(r'[^\w\s-]', '', utext).strip().lower()
|
||||
utext = re.sub(r'[\s-]+', '-', utext)
|
||||
if not len(utext):
|
||||
# Headers must be non-empty
|
||||
return '_'
|
||||
return utext
|
||||
|
||||
def filter_soup(soup, **kwargs):
|
||||
"""Generate new IDs for all headers"""
|
||||
uniqIDs = {}
|
||||
headers = soup.find_all(name=re.compile("h[0-9]"))
|
||||
for h in headers:
|
||||
new_id = idify(h.get_text())
|
||||
if new_id not in uniqIDs.keys():
|
||||
uniqIDs[new_id] = 0
|
||||
else:
|
||||
# not unique, append -1, -2, etc. to this instance
|
||||
uniqIDs[new_id] += 1
|
||||
new_id = "{id}-{n}".format(id=new_id, n=uniqIDs[new_id])
|
||||
|
||||
h["id"] = new_id
|
||||
@@ -20,4 +20,7 @@ fi
|
||||
set -e
|
||||
|
||||
tool/conflictmarkers.sh
|
||||
tool/all-target-link-checker.sh --vars "$dactyl_vars"
|
||||
|
||||
## Build all languages, then run the link checker once
|
||||
tool/build_all_langs.sh
|
||||
dactyl_link_checker -q
|
||||
|
||||
@@ -1,11 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<html lang="{{target.lang}}">
|
||||
<head>
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<title>{{ currentpage.name }} - XRP Ledger Dev Portal</title>
|
||||
<title>{{ currentpage.name }} - {{target.display_name}}</title>
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="apple-touch-icon" sizes="180x180" href="assets/favicons/apple-touch-icon.png">
|
||||
@@ -19,8 +19,11 @@
|
||||
|
||||
<!-- jQuery -->
|
||||
<script src="assets/vendor/jquery-1.11.1.min.js"></script>
|
||||
|
||||
|
||||
<!-- Stylesheet -->
|
||||
{% if target.lang=="ja" %}
|
||||
<link href="assets/css/fonts-ja.css" rel="stylesheet" />
|
||||
{% endif %}
|
||||
<link href="assets/css/devportal.css" rel="stylesheet" />
|
||||
|
||||
<!-- Google Analytics -->
|
||||
@@ -38,10 +41,10 @@
|
||||
|
||||
</head>
|
||||
|
||||
<body class="xrp-ledger-dev-portal {% if currentpage.sidebar is undefined or currentpage.sidebar != "disabled" %}sidebar-primary {% endif %}{% block bodyclasses %}{% endblock %}">
|
||||
<body class="xrp-ledger-dev-portal {% if currentpage.sidebar is undefined or currentpage.sidebar != "disabled" %}sidebar-primary {% endif %}lang-{{target.lang}} {% block bodyclasses %}{% endblock %}">
|
||||
|
||||
<nav class="navbar fixed-top navbar-expand-lg navbar-light bg-white">
|
||||
<a href="{% if target.no_cover is defined and target.no_cover %}/{% else %}index.html{% endif %}" class="navbar-brand"><img src="assets/img/XRPLedger_DevPortal-black.svg" class="logo" height="44" alt="XRP Ledger Dev Portal" /></a>
|
||||
<a href="{% if target.no_cover is defined and target.no_cover %}/{% else %}index.html{% endif %}" class="navbar-brand"><img src="assets/img/XRPLedger_DevPortal-black.svg" class="logo" height="44" alt="{{target.display_name}}" /></a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="slide-collapse" data-target="#navbarHolder" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
@@ -58,19 +61,31 @@
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="/blog/">Blog</a>
|
||||
<a class="nav-link" href="/blog/">{{target.strings.blog}}</a>
|
||||
</li>
|
||||
</ul><!-- /.navbar-nav -->
|
||||
{% include 'template-github-edit.html' %}
|
||||
<form class="navbar-form navbar-right" id="navbar-search" role="search" method="get" action="https://www.google.com/search">
|
||||
<div class="form-inline">
|
||||
<label class="sr-only" for="topsearchbar">Search site with Google...</label>
|
||||
<label class="sr-only" for="topsearchbar">{{target.strings.search}}</label>
|
||||
<input name="q" value="site:xrpl.org" type="hidden">
|
||||
<input id="topsearchbar" name="q" type="text" class="form-control" class="top-search" placeholder="Search site with Google...">
|
||||
<input id="topsearchbar" name="q" type="text" class="form-control" class="top-search" placeholder="{{target.strings.search}}">
|
||||
<button type="submit" class="btn btn-default fa fa-search"> </button>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="nav navbar-nav language-selector">
|
||||
<div class="dropdown">
|
||||
<button class="btn btn-outline-secondary dropdown-toggle" type="button" id="language_selector_header_btn" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
|
||||
{{(config.languages|selectattr('code', 'eq', target.lang)|first).display_name}}
|
||||
</button>
|
||||
<div class="dropdown-menu" aria-labelledby="language_selector_header_btn">
|
||||
{% for lang in config.languages %}
|
||||
<a class="dropdown-item" href="{{lang.prefix}}{{currentpage.html}}">{{lang.display_name}}</a>
|
||||
{% endfor %}
|
||||
</div><!--/.dropdown-menu-->
|
||||
</div><!--/.dropdown-->
|
||||
</div><!--/.language-selector-->
|
||||
</div><!--/#navbarHolder-->
|
||||
<div class="menu-overlay"></div>
|
||||
</nav>
|
||||
|
||||
|
||||
@@ -1,20 +1,25 @@
|
||||
<nav class="breadcrumbs-wrap {% if currentpage.sidebar is defined and currentpage.sidebar == 'disabled' %} px-0 pt-5 pb-3 {% else %}p-0 p-md-3{% endif %}" aria-label="breadcrumb">
|
||||
<ul class="breadcrumb bg-white">
|
||||
<li class="breadcrumb-item"><a href="{% if target.no_cover is defined and target.no_cover %}/{% else %}index.html{% endif %}">Home</a></li>
|
||||
<li class="breadcrumb-item"><a href="{% if target.no_cover is defined and target.no_cover %}/{% else %}index.html{% endif %}">{{target.strings.bc_home}}</a></li>
|
||||
{% if currentpage.funnel is defined and currentpage != pages|selectattr('funnel', 'defined_and_equalto', currentpage.funnel)|first %}
|
||||
<li class="active breadcrumb-item"><a href="{{ (pages|selectattr('funnel', 'defined_and_equalto', currentpage.funnel)|first).html }}">{{ currentpage.funnel }}</a></li>
|
||||
{% set funnelhead = (pages|selectattr('funnel', 'defined_and_equalto', currentpage.funnel)|first) %}
|
||||
<li class="active breadcrumb-item"><a href="{{ funnelhead.html }}">{{ funnelhead.name }}</a></li>
|
||||
{% endif %}
|
||||
{% if currentpage.doc_type is defined and currentpage != pages|selectattr('doc_type', 'defined_and_equalto', currentpage.doc_type)|first%}
|
||||
<li class="active breadcrumb-item"><a href="{{ (pages|selectattr('doc_type', 'defined_and_equalto', currentpage.doc_type)|first).html }}">{{ currentpage.doc_type }}</a></li>
|
||||
{% set doctypehead = (pages|selectattr('doc_type', 'defined_and_equalto', currentpage.doc_type)|first) %}
|
||||
<li class="active breadcrumb-item"><a href="{{ doctypehead.html }}">{{ doctypehead.name }}</a></li>
|
||||
{% endif %}
|
||||
{% if currentpage.supercategory is defined and currentpage != pages|selectattr('supercategory', 'defined_and_equalto', currentpage.supercategory)|first %}
|
||||
<li class="active breadcrumb-item"><a href="{{ (pages|selectattr('supercategory', 'defined_and_equalto', currentpage.supercategory)|first).html }}">{{ currentpage.supercategory }}</a></li>
|
||||
{% set supercathead = (pages|selectattr('supercategory', 'defined_and_equalto', currentpage.supercategory)|first) %}
|
||||
<li class="active breadcrumb-item"><a href="{{ supercathead.html }}">{{ supercathead.name }}</a></li>
|
||||
{% endif %}
|
||||
{% if currentpage.category is defined and currentpage != pages|selectattr('category', 'defined_and_equalto', currentpage.category)|first %}
|
||||
<li class="active breadcrumb-item"><a href="{{ (pages|selectattr('category', 'defined_and_equalto', currentpage.category)|first).html }}">{{ currentpage.category }}</a></li>
|
||||
{% set cathead = (pages|selectattr('category', 'defined_and_equalto', currentpage.category)|first) %}
|
||||
<li class="active breadcrumb-item"><a href="{{ cathead.html }}">{{ cathead.name }}</a></li>
|
||||
{% endif %}
|
||||
{% if currentpage.subcategory is defined and currentpage != pages|selectattr('subcategory', 'defined_and_equalto', currentpage.subcategory)|first %}
|
||||
<li class="active breadcrumb-item"><a href="{{ (pages|selectattr('subcategory', 'defined_and_equalto', currentpage.subcategory)|first).html }}">{{ currentpage.subcategory }}</a></li>
|
||||
{% set subcathead = (pages|selectattr('subcategory', 'defined_and_equalto', currentpage.subcategory)|first) %}
|
||||
<li class="active breadcrumb-item"><a href="{{ subcathead.html }}">{{ subcathead.name }}</a></li>
|
||||
{% endif %}
|
||||
<li class="active breadcrumb-item">{{ currentpage.name }}</li>
|
||||
</ul>
|
||||
|
||||
@@ -22,6 +22,13 @@
|
||||
|
||||
{% block main %}
|
||||
<article class="pt-3 p-md-3">
|
||||
{% if target.lang != "en" and "en" in currentpage.targets %}
|
||||
{# Add a "sorry this page isn't translated" banner. #}
|
||||
{# TODO: pull from a strings file #}
|
||||
<div class="devportal-callout note mb-5"><strong>{{target.strings.tl_banner.head}}</strong>
|
||||
<p class="mb-0">{{target.strings.tl_banner.body}}</p>
|
||||
</div><!--/.devportal-callout-->
|
||||
{% endif %}
|
||||
<div class="content">
|
||||
{{ content }}
|
||||
</div>
|
||||
@@ -31,7 +38,7 @@
|
||||
{% block right_sidebar %}
|
||||
<div class="card" id="page-toc-wrapper">
|
||||
<div class="card-header">
|
||||
<h4>In this document</h4>
|
||||
<h4>{{target.strings.pagetoc}}</h4>
|
||||
</div>
|
||||
<ul class="card-body">
|
||||
{{ sidebar_content }}
|
||||
|
||||
@@ -29,9 +29,9 @@
|
||||
<div class="card-body">
|
||||
<div class="children-display">
|
||||
<ul>
|
||||
<li class="level-1"><a href="https://ripple.com/company/careers/" target="_blank">Ripple Careers <i class="fa fa-external-link"></i></a></li>
|
||||
<li class="level-1"><a href="https://github.com/ripple/" target="_blank">Ripple on GitHub <i class="fa fa-external-link"></i></a></li>
|
||||
<li class="level-1"><a href="https://ripple.com/collateral/#xrp" target="_blank">XRP Resources <i class="fa fa-external-link"></i></a></li>
|
||||
<li class="level-1"><a href="https://ripple.com/company/careers/" target="_blank">{{target.strings.footer.ripple.careers}} <i class="fa fa-external-link"></i></a></li>
|
||||
<li class="level-1"><a href="https://github.com/ripple/" target="_blank">{{target.strings.footer.ripple.github}} <i class="fa fa-external-link"></i></a></li>
|
||||
<li class="level-1"><a href="https://ripple.com/collateral/#xrp" target="_blank">{{target.strings.footer.ripple.xrp_resources}} <i class="fa fa-external-link"></i></a></li>
|
||||
</ul>
|
||||
</div>
|
||||
</div><!--/.card-body-->
|
||||
@@ -41,14 +41,29 @@
|
||||
|
||||
<section class="container-fluid p-5 pl-sm-0">
|
||||
|
||||
<nav role="navigation" class="d-flex mb-3 language-selector">
|
||||
<img class="language_selector_icon" src="assets/img/icon-language-selector.svg" width="32" height="40" alt="language selection icon" />
|
||||
<ul class="nav">
|
||||
{% for lang in config.languages %}
|
||||
<li class="nav-item">
|
||||
{% if lang.code == target.name %}
|
||||
<a class="nav-link active" href="{{lang.prefix}}{{currentpage.html}}"><i class="fa fa-check-circle"></i> {{lang.display_name}}</a>
|
||||
{% else %}
|
||||
<a class="nav-link" href="{{lang.prefix}}{{currentpage.html}}">{{lang.display_name}}</a>
|
||||
{% endif %}
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</nav>
|
||||
|
||||
<div class="absolute_bottom_footer">
|
||||
<span>© XRP Ledger Project 2019</span>
|
||||
<span><a href="https://raw.githubusercontent.com/ripple/ripple-dev-portal/master/LICENSE">License</a></span>
|
||||
<span><a href="https://raw.githubusercontent.com/ripple/ripple-dev-portal/master/LICENSE">{{target.strings.footer.license}}</a></span>
|
||||
</div><!-- /.absolute_bottom_footer -->
|
||||
|
||||
</section>
|
||||
</footer>
|
||||
|
||||
<!-- Jump to top button -->
|
||||
<a href="#main_content_wrapper" class="jump-to-top btn btn-primary btn-lg" role="button" title="Jump to top of page">Top</a>
|
||||
<a href="#main_content_wrapper" class="jump-to-top btn btn-primary btn-lg" role="button" title="{{target.strings.to_top.short}}">{{target.strings.to_top.short}}</a>
|
||||
<script type="text/javascript" src="assets/js/jump-to-top.js"></script>
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
|
||||
<meta name="viewport" content="width=device-width">
|
||||
|
||||
<title>{{ currentpage.name }} - XRP Ledger Dev Portal</title>
|
||||
<title>{{ currentpage.name }} - {{target.display_name}}</title>
|
||||
|
||||
<!-- favicon -->
|
||||
<link rel="icon" href="favicon.ico" type="image/x-icon">
|
||||
|
||||
@@ -23,6 +23,6 @@
|
||||
{% if not have_edit_link %}
|
||||
{% set githuburl = target.github_forkurl %}
|
||||
{% endif %}
|
||||
<a href="{{githuburl}}" target="_blank" class="github-edit">Edit</a>
|
||||
<a href="{{githuburl}}" target="_blank" class="github-edit">{{target.strings.github_edit}}</a>
|
||||
{% endif %}
|
||||
</div><!-- /.github-edit -->
|
||||
|
||||
@@ -19,81 +19,82 @@
|
||||
<section class="container-fluid card-grid card-grid-2x2">
|
||||
<div class="section-hero card justify-content-end">
|
||||
<div>
|
||||
<h1 class="display-4">Powering the Internet of Value.</h1>
|
||||
<h1 class="display-4">{{target.strings.home.intro.head}}</h1>
|
||||
<div class="blurb">
|
||||
<p>The <a href="#xrp_ledger_intro">XRP Ledger</a> is open-source technology that anyone can use.</p>
|
||||
<p>Use the tools and information provided here to integrate with and contribute to the open-source platform.</p>
|
||||
<h5>Want more?</h5>
|
||||
<p>Get updates about XRP Ledger webinars, releases, and documentation!</p>
|
||||
<p>{{target.strings.home.intro.body1}}</p>
|
||||
<p>{{target.strings.home.intro.body2}}</p>
|
||||
<h5>{{target.strings.home.intro.subhead}}</h5>
|
||||
<p>{{target.strings.home.intro.sub_body}}</p>
|
||||
</div><!--/.blurb-->
|
||||
<a class="btn btn-outline-secondary external-link" href="https://goo.gl/forms/sHMFxU8dKiTUaltE3" target="_blank">Sign up! <i class="fa fa-external-link" aria-hidden="true"></i></a>
|
||||
<a class="btn btn-outline-secondary external-link" href="https://goo.gl/forms/sHMFxU8dKiTUaltE3" target="_blank">{{target.strings.home.intro.cta}} <i class="fa fa-external-link" aria-hidden="true"></i></a>
|
||||
</div>
|
||||
</div><!--/.section-hero-->
|
||||
|
||||
{% set flag_n = cycler(* range(1,99)) %}
|
||||
<div class="card">
|
||||
{% set cardpage = pages|selectattr('html', 'defined_and_equalto', 'get-started-with-the-rippled-api.html')|first %}
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Get Started with XRP Ledger APIs</h3>
|
||||
<h3 class="card-title"><a href="{{cardpage.html}}">{{cardpage.name}}</a></h3>
|
||||
</div><!--/.card-header-->
|
||||
<div class="card-body">
|
||||
<p>Get started with the APIs and libraries available for interacting with the XRP Ledger.</p>
|
||||
<p>{{cardpage.blurb}}</p>
|
||||
</div><!--/.card-body-->
|
||||
<div class="card-footer">
|
||||
<a href="get-started-with-the-rippled-api.html" class="btn btn-outline-secondary">Get Started</a>
|
||||
<a href="get-started-with-the-rippled-api.html" class="btn btn-outline-secondary">{{cardpage.cta_text}}</a>
|
||||
</div><!--/.card-footer-->
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</div><!--/.card-->
|
||||
|
||||
<div class="card pr-0">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><a href="concepts.html">Learn How It Works</a></h3>
|
||||
<h3 class="card-title"><a href="concepts.html">{{target.strings.home.cards_1.learn.head}}</a></h3>
|
||||
</div><!--/.card-header-->
|
||||
<div class="card-body">
|
||||
<div class="curated-links">
|
||||
<ul>
|
||||
<li><a href="intro-to-consensus.html">Intro to Consensus</a></li>
|
||||
<li><a href="xrp.html">About XRP</a></li>
|
||||
<li><a href="payment-system-basics.html">Payment System Basics</a></li>
|
||||
<li><a href="decentralized-exchange.html">Decentralized Exchange</a></li>
|
||||
<li><a href="intro-to-consensus.html">{{(pages|selectattr('html', 'defined_and_equalto', 'intro-to-consensus.html')|first).name}}</a></li>
|
||||
<li><a href="xrp.html">{{target.strings.home.cards_1.learn.about_xrp}}</a></li>
|
||||
<li><a href="payment-system-basics.html">{{(pages|selectattr('html', 'defined_and_equalto', 'payment-system-basics.html')|first).name}}</a></li>
|
||||
<li><a href="decentralized-exchange.html">{{(pages|selectattr('html', 'defined_and_equalto', 'decentralized-exchange.html')|first).name}}</a></li>
|
||||
</ul>
|
||||
</div><!--/.curated-links-->
|
||||
</div><!--/.card-body-->
|
||||
<div class="card-footer">
|
||||
<a href="concepts.html" class="btn btn-outline-secondary">All Concepts</a>
|
||||
<a href="concepts.html" class="btn btn-outline-secondary">{{target.strings.home.cards_1.learn.cta}}</a>
|
||||
</div><!--/.card-footer-->
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</div><!--/.card-->
|
||||
|
||||
<div class="card">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title"><a href="docs.html">Read Documentation</a></h3>
|
||||
<h3 class="card-title"><a href="docs.html">{{target.strings.home.cards_1.read_docs.head}}</a></h3>
|
||||
</div><!--/.card-header-->
|
||||
<div class="card-body">
|
||||
<div class="curated-links">
|
||||
<ul>
|
||||
<li><a href="references.html">API References</a></li>
|
||||
<li><a href="concepts.html">Concepts</a></li>
|
||||
<li><a href="tutorials.html">Tutorials</a></li>
|
||||
<li><a href="docs.html#full-doc-index">Full Doc Index</a></li>
|
||||
<li><a href="references.html">{{(pages|selectattr('html', 'defined_and_equalto', 'references.html')|first).longer_name}}</a></li>
|
||||
<li><a href="concepts.html">{{(pages|selectattr('html', 'defined_and_equalto', 'concepts.html')|first).name}}</a></li>
|
||||
<li><a href="tutorials.html">{{(pages|selectattr('html', 'defined_and_equalto', 'tutorials.html')|first).name}}</a></li>
|
||||
<li><a href="docs.html#full-doc-index">{{target.strings.home.cards_1.read_docs.full_doc_index}}</a></li>
|
||||
</ul>
|
||||
</div><!--/.curated-links-->
|
||||
</div><!--/.card-body-->
|
||||
<div class="card-footer">
|
||||
<a href="docs.html" class="btn btn-outline-secondary">All Docs</a>
|
||||
<a href="docs.html" class="btn btn-outline-secondary">{{target.strings.home.cards_1.read_docs.cta}}</a>
|
||||
</div><!--/.card-footer-->
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</div><!--/.card-->
|
||||
|
||||
<div class="card pr-0">
|
||||
<div class="card-header">
|
||||
<h3 class="card-title">Explore the XRP Ledger</h3>
|
||||
<h3 class="card-title">{{target.strings.home.cards_1.explore.head}}</h3>
|
||||
</div><!--/.card-header-->
|
||||
<div class="card-body">
|
||||
<p>Use the XRPL Explorer to view a stream of ledger activity and see validator statuses.</p>
|
||||
<p>{{target.strings.home.cards_1.explore.blurb}}</p>
|
||||
</div><!--/.card-body-->
|
||||
<div class="card-footer">
|
||||
<div class="readmore">
|
||||
<a href="https://livenet.xrpl.org/" class="btn btn-outline-secondary">Go to the Explorer</a>
|
||||
<a href="https://livenet.xrpl.org/" class="btn btn-outline-secondary">{{target.strings.home.cards_1.explore.cta}}</a>
|
||||
</div>
|
||||
</div><!--/.card-footer-->
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
@@ -121,58 +122,58 @@
|
||||
<section class="container-fluid card-grid card-grid-2x4" id="xrp_ledger_intro">
|
||||
<div class="card section-hero pl-0">
|
||||
<div class="card-header">
|
||||
<h2><a href="xrp-ledger-overview.html">What is the XRP Ledger?</a></h2>
|
||||
<h2><a href="xrp-ledger-overview.html">{{target.strings.home.what_is_xrpl.head}}</a></h2>
|
||||
</div><!--/.card-header-->
|
||||
<div class="card-body">
|
||||
<p>The XRP Ledger is a decentralized cryptographic ledger, powered by a network of peer-to-peer servers. It is the home of XRP, a digital asset designed to bridge the many different currencies in use worldwide.</p>
|
||||
<p>{{target.strings.home.what_is_xrpl.body_1}}</p>
|
||||
</div>
|
||||
</div><!--/.section-hero-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#the-digital-asset-for-payments" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.digital_asset.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-digital-asset.svg" alt="(digital asset icon)" /></div>
|
||||
<div class="card-footer"><h3>The Digital Asset for Payments</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.digital_asset.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#censorship-resistant-transaction-processing" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.censorship_resistant.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-censorship-resistant.svg" alt="(censorship resistance icon)" /></div>
|
||||
<div class="card-footer"><h3>Censorship-Resistant Transaction Processing</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.censorship_resistant.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#fast-efficient-consensus-algorithm" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.fast_algorithm.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-fast-algorithm.svg" alt="(consensus algorithm icon)" /></div>
|
||||
<div class="card-footer"><h3>Fast, Efficient Consensus Algorithm</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.fast_algorithm.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#finite-xrp-supply" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.finite_xrp.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-finite.svg" alt="(xrp supply icon)" /></div>
|
||||
<div class="card-footer"><h3>Finite XRP Supply</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.finite_xrp.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#responsible-software-governance" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.responsible_governance.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-responsible.svg" alt="(governance icon)" /></div>
|
||||
<div class="card-footer"><h3>Responsible Software Governance</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.responsible_governance.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#secure-adaptable-cryptography" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.secure_crypto.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-secure.svg" alt="(cryptography icon)" /></div>
|
||||
<div class="card-footer"><h3>Secure, Adaptable Cryptography</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.secure_crypto.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#modern-features-for-smart-contracts" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.smart_contracts.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-modern-smart-contracts.svg" alt="(smart contracts icon)" /></div>
|
||||
<div class="card-footer"><h3>Modern Features for Smart Contracts</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.smart_contracts.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
<a href="xrp-ledger-overview.html#on-ledger-decentralized-exchange" class="card">
|
||||
<a href="{{target.strings.home.what_is_xrpl.decentralized_exchange.url}}" class="card">
|
||||
<div class="card-header"><img class="card-img-top" src="assets/img/icon-xrp-on-ledger-decentralized.svg" alt="(decentralized exchange icon)" /></div>
|
||||
<div class="card-footer"><h3>On-Ledger Decentralized Exchange</h3></div>
|
||||
<div class="card-footer"><h3>{{target.strings.home.what_is_xrpl.decentralized_exchange.head}}</h3></div>
|
||||
<div class="flag-vertical">{{"%02d"|format(flag_n.next())}}</div>
|
||||
</a><!--/.card-->
|
||||
|
||||
|
||||
@@ -3,17 +3,14 @@
|
||||
{% block main %}
|
||||
{% if content %}
|
||||
|
||||
<article class="pt-3 p-md-3">
|
||||
<div class='content'>
|
||||
{{ content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<section class="pt-3 p-md-3">
|
||||
<h2>Children of this page:</h2>
|
||||
{% set show_blurbs = True %}
|
||||
{% set depth= 1 %}
|
||||
{% include 'template-page-children.html' %}
|
||||
<article class="content">
|
||||
{{ content }}
|
||||
|
||||
{% set show_blurbs = True %}
|
||||
{% set depth= 1 %}
|
||||
{% include 'template-page-children.html' %}
|
||||
</article>
|
||||
</section>
|
||||
|
||||
{% else %}
|
||||
|
||||
@@ -10,25 +10,28 @@
|
||||
{% if use_page.supercategory is defined %}
|
||||
<div class="sidenav_parent">
|
||||
{% if use_page == (pages|selectattr('supercategory', 'defined_and_equalto', use_page.supercategory)|first) %}
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.supercategory }}</a>
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ link_prefix}}{{ (pages|selectattr('supercategory', 'defined_and_equalto', use_page.supercategory)|first).html }}"> {{ use_page.supercategory }}</a>
|
||||
{% set parent_page = (pages|selectattr('supercategory', 'defined_and_equalto', use_page.supercategory)|first) %}
|
||||
<a href="{{ link_prefix}}{{ parent_page.html }}"> {{ parent_page.name }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% elif use_page.doc_type is defined %}
|
||||
<div class="sidenav_parent">
|
||||
{% if use_page == (pages|selectattr('doc_type', 'defined_and_equalto', use_page.doc_type)|first) %}
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.doc_type }}</a>
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ link_prefix}}{{ (pages|selectattr('doc_type', 'defined_and_equalto', use_page.doc_type)|first).html }}"> {{ use_page.doc_type }}</a>
|
||||
{% set parent_page = (pages|selectattr('doc_type', 'defined_and_equalto', use_page.doc_type)|first) %}
|
||||
<a href="{{ link_prefix}}{{ parent_page.html }}"> {{ parent_page.name }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% elif use_page.funnel is defined %}
|
||||
<div class="sidenav_parent">
|
||||
{% if use_page == (pages|selectattr('funnel', 'defined_and_equalto', use_page.funnel)|first) %}
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.funnel }}</a>
|
||||
<a href="{{ link_prefix}}{{ use_page.html }}">{{ use_page.name }}</a>
|
||||
{% else %}
|
||||
<a href="{{ link_prefix}}{{ (pages|selectattr('funnel', 'defined_and_equalto', use_page.funnel)|first).html }}"> {{ use_page.funnel }}</a>
|
||||
{% set parent_page = (pages|selectattr('funnel', 'defined_and_equalto', use_page.funnel)|first) %}
|
||||
<a href="{{ link_prefix}}{{ parent_page.html }}"> {{ parent_page.name }}</a>
|
||||
{% endif %}
|
||||
</div>
|
||||
{% endif %}
|
||||
@@ -79,7 +82,7 @@
|
||||
<a class="{% if use_page.category is undefined or use_page.category != cat %}collapsed {% endif %}sidenav_cat_toggler" role="button" data-toggle="collapse" href="#sidenav_collapse_{{loop.index}}" aria-expanded="true" aria-controls="sidenav_collapse_{{loop.index}}"></a>
|
||||
{% endif %}
|
||||
<h5 class="card-title">
|
||||
<a class="sidenav_cat_title{% if use_page == (cat_parent) %} active{% elif use_page.category is defined and use_page.category == cat %} active-parent{% endif %}" href="{{ link_prefix}}{{ cat_parent.html }}">{{ cat }}</a>
|
||||
<a class="sidenav_cat_title{% if use_page == (cat_parent) %} active{% elif use_page.category is defined and use_page.category == cat %} active-parent{% endif %}" href="{{ link_prefix}}{{ cat_parent.html }}">{{ cat_parent.name }}</a>
|
||||
</h5>
|
||||
</div><!-- /.card-header -->
|
||||
|
||||
@@ -152,7 +155,7 @@
|
||||
<a class="collapsed sidenav_cat_toggler" role="button" data-toggle="collapse" href="#sidenav_collapse_{{loop.index}}" aria-expanded="true" aria-controls="sidenav_collapse_{{loop.index}}"></a>
|
||||
{% endif %}
|
||||
<h5 class="card-title">
|
||||
<a class="sidenav_cat_title" href="{{ link_prefix}}{{ supercat_parent.html }}">{{ supercat }}</a>
|
||||
<a class="sidenav_cat_title" href="{{ link_prefix}}{{ supercat_parent.html }}">{{ supercat_parent.name }}</a>
|
||||
</h5>
|
||||
</div><!-- /.card-header -->
|
||||
|
||||
@@ -203,7 +206,7 @@
|
||||
<a class="{% if use_page.category is undefined or use_page.category != cat %}collapsed {% endif %}sidenav_cat_toggler" role="button" data-toggle="collapse" href="#sidenav_collapse_{{loop.index}}" aria-expanded="true" aria-controls="sidenav_collapse_{{loop.index}}"></a>
|
||||
{% endif %}
|
||||
<h5 class="card-title">
|
||||
<a class="sidenav_cat_title{% if use_page == (cat_parent) %} active{% elif use_page.category is defined and use_page.category == cat %} active-parent{% endif %}" href="{{ link_prefix}}{{ cat_parent.html }}">{{ cat }}</a>
|
||||
<a class="sidenav_cat_title{% if use_page == (cat_parent) %} active{% elif use_page.category is defined and use_page.category == cat %} active-parent{% endif %}" href="{{ link_prefix}}{{ cat_parent.html }}">{{ cat_parent.name }}</a>
|
||||
<!-- <a class="sidenav_cat_title" href="{{ link_prefix}}{{ cat_parent.html }}">{{ cat }}</a> -->
|
||||
</h5>
|
||||
</div><!-- /.card-header -->
|
||||
|
||||
@@ -82,7 +82,6 @@ h1, h2, h3, h4, h5 {
|
||||
font-weight: 700;
|
||||
color: $black;
|
||||
}
|
||||
|
||||
.landing section,
|
||||
.xrpl-footer .card-grid,
|
||||
#main_content_wrapper {
|
||||
@@ -256,28 +255,36 @@ h3 a:hover,
|
||||
background-color: $gray-700;
|
||||
}
|
||||
|
||||
.devportal-callout.tip {
|
||||
.devportal-callout.tip,
|
||||
.devportal-callout.ヒント {
|
||||
border-color: $success;
|
||||
}
|
||||
.devportal-callout.tip > strong:first-child:before {
|
||||
.devportal-callout.tip > strong:first-child:before,
|
||||
.devportal-callout.ヒント > strong:first-child:before {
|
||||
color: $success;
|
||||
}
|
||||
.devportal-callout.note > strong:first-child:before {
|
||||
.devportal-callout.note > strong:first-child:before,
|
||||
.devportal-callout.注記 > strong:first-child:before {
|
||||
color: $info;
|
||||
}
|
||||
.devportal-callout.note {
|
||||
.devportal-callout.note,
|
||||
.devportal-callout.注記 {
|
||||
border-color: $info;
|
||||
}
|
||||
.devportal-callout.caution {
|
||||
.devportal-callout.caution,
|
||||
.devportal-callout.注意 {
|
||||
border-color: $warning; /* not a typo */
|
||||
}
|
||||
.devportal-callout.caution > strong:first-child:before {
|
||||
.devportal-callout.caution > strong:first-child:before,
|
||||
.devportal-callout.注意 > strong:first-child:before {
|
||||
color: $warning; /* not a typo */
|
||||
}
|
||||
.devportal-callout.warning {
|
||||
.devportal-callout.warning,
|
||||
.devportal-callout.警告 {
|
||||
border-color: $danger;
|
||||
}
|
||||
.devportal-callout.warning > strong:first-child:before {
|
||||
.devportal-callout.warning > strong:first-child:before,
|
||||
.devportal-callout.警告 > strong:first-child:before {
|
||||
color: $danger;
|
||||
}
|
||||
|
||||
@@ -472,8 +479,8 @@ aside a.active-parent {
|
||||
/* Edit on GitHub link ------------------------------------------------------ */
|
||||
.github-edit-wrap {
|
||||
border: 1px solid $gray-400;
|
||||
margin-right: 10px;
|
||||
margin-left: 10px;
|
||||
margin-right: 5px;
|
||||
margin-left: 5px;
|
||||
}
|
||||
.github-edit-wrap:hover {
|
||||
border-color: $black;
|
||||
@@ -562,7 +569,7 @@ td:nth-child(1) {
|
||||
margin: 0 48px;
|
||||
}
|
||||
|
||||
@media (max-width: 1090px) {
|
||||
@media (max-width: 1105px) {
|
||||
.navbar.fixed-top {
|
||||
margin: 0 20px;
|
||||
}
|
||||
@@ -581,12 +588,6 @@ td:nth-child(1) {
|
||||
opacity: 0.5;
|
||||
}
|
||||
|
||||
@media (max-width: 1010px) {
|
||||
.navbar-brand {
|
||||
margin-right: 5px;
|
||||
}
|
||||
}
|
||||
|
||||
.navbar .navbar-nav .nav-link {
|
||||
font-size: 1rem;
|
||||
line-height: 52px;
|
||||
@@ -1138,7 +1139,6 @@ a.current {
|
||||
list-style-type: square;
|
||||
}
|
||||
|
||||
|
||||
@media (max-width: 991px) {
|
||||
.landing .card {
|
||||
padding-left: 0px;
|
||||
@@ -1495,7 +1495,7 @@ a.current {
|
||||
padding-left: 14px;
|
||||
}
|
||||
|
||||
.btn:not(.external-link)::after,
|
||||
.btn:not(.external-link):not(.dropdown-toggle)::after,
|
||||
.landing .card .level-1 a::after,
|
||||
.landing .card .level-2 a::after,
|
||||
.landing .card .curated-links li a::after,
|
||||
@@ -1511,7 +1511,7 @@ a.current {
|
||||
content: " ↑"
|
||||
}
|
||||
|
||||
.btn:not(.external-link):hover::after,
|
||||
.btn:not(.external-link):not(.dropdown-toggle):hover::after,
|
||||
.landing .card .level-1 a:hover::after,
|
||||
.landing .card .level-2 a:hover::after,
|
||||
.landing .card .curated-links li a:hover::after,
|
||||
@@ -1647,8 +1647,50 @@ a.current {
|
||||
text-indent: 0;
|
||||
}
|
||||
|
||||
/* Language selector -------------------------------------------------------- */
|
||||
|
||||
.language-selector {
|
||||
.nav-link {
|
||||
font-size: 16px;
|
||||
}
|
||||
|
||||
.nav-link.active {
|
||||
color: $black;
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
|
||||
#navbarHolder .language-selector .btn {
|
||||
font-size: 0.875rem;
|
||||
padding: .375rem .75rem;
|
||||
}
|
||||
|
||||
/* Japanese language font override ------------------------------------------ */
|
||||
|
||||
.lang-ja {
|
||||
h1, h2, h3, h4, h5,
|
||||
.github-edit-wrap .github-edit,
|
||||
.navbar .navbar-nav .nav-link,
|
||||
.content .children-display li a,
|
||||
.right-sidebar .level-1 a,
|
||||
.right-sidebar .separator,
|
||||
.use-case-step-num {
|
||||
//font-family: 'M PLUS 1p', 'Space Mono', sans-serif;
|
||||
//font-family: '851Gkktt', 'Space Mono', sans-serif;
|
||||
font-family: 'Makinas-4-Flat', 'Makinas-4-Square', 'Space Mono', sans-serif;
|
||||
}
|
||||
}
|
||||
|
||||
/* Responsive design for different viewscreens ------------------------------ */
|
||||
|
||||
@media (max-width: 1010px) {
|
||||
.navbar-brand,
|
||||
.github-edit-wrap,
|
||||
#navbar-search {
|
||||
margin-right: 3px;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 991px) {
|
||||
|
||||
#main_content_wrapper {
|
||||
|
||||
Reference in New Issue
Block a user