mirror of
https://github.com/privacyguides/privacyguides.org.git
synced 2025-07-28 06:11:03 +00:00
Merge branch 'main' into simplex-group
This commit is contained in:
@@ -1,13 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg width="100%" height="100%" viewBox="0 0 128 128" version="1.1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xml:space="preserve" xmlns:serif="http://www.serif.com/" style="fill-rule:evenodd;clip-rule:evenodd;stroke-linejoin:round;stroke-miterlimit:2;">
|
||||
<g transform="matrix(1,0,0,1,1.36646,1.25941)">
|
||||
<ellipse cx="62.634" cy="60.515" rx="37.625" ry="37.779" style="fill:white;"/>
|
||||
</g>
|
||||
<g transform="matrix(3.85247,0,0,3.85247,6.8707,0)">
|
||||
<path d="M0,16.543L0,4.494L14.829,0L29.659,4.494L29.659,16.543C29.659,28.591 14.829,33.225 14.829,33.225C14.829,33.225 0,28.591 0,16.543ZM24.098,15.756C24.098,20.875 19.948,25.024 14.829,25.024C9.711,25.024 5.561,20.875 5.561,15.756C5.561,10.637 9.711,6.488 14.829,6.488C19.948,6.488 24.098,10.637 24.098,15.756Z" style="fill:rgb(77,129,241);"/>
|
||||
</g>
|
||||
<g transform="matrix(3.85247,0,0,3.85247,6.8707,0)">
|
||||
<path d="M20.083,13.665L13.285,19.784L9.575,16.445L10.815,15.067L13.285,17.29L18.843,12.287L20.083,13.665Z" style="fill:rgb(77,129,241);"/>
|
||||
</g>
|
||||
</svg>
|
Before Width: | Height: | Size: 1.2 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="128" height="128" version="1.1" viewBox="0 0 33.867 33.867"><defs><mask id="mask-2" fill="#fff"><circle cx="384" cy="384" r="384"/></mask></defs><g id="Group" fill-rule="evenodd" mask="url(#mask-2)" transform="scale(.044097)"><rect id="Rectangle" width="192" height="192" fill="#0d2e46"/><rect width="192" height="192" x="192" fill="#415a6e"/><rect width="192" height="192" x="384" fill="#597961"/><rect width="192" height="192" x="576" fill="#6d4048"/><rect width="192" height="192" x="576" y="192" fill="#e08f88"/><rect width="192" height="192" x="384" y="192" fill="#e3b59c"/><rect width="192" height="192" x="192" y="192" fill="#8ba281"/><rect width="192" height="192" y="192" fill="#6378ab"/><rect width="192" height="192" y="384" fill="#7d5a49"/><rect width="192" height="192" x="192" y="384" fill="#b48268"/><rect width="192" height="192" x="384" y="384" fill="#8f595b"/><rect width="192" height="192" x="576" y="384" fill="#ebe0d3"/><rect width="192" height="192" x="576" y="576" fill="#5f495d"/><rect width="192" height="192" x="384" y="576" fill="#b1a0b8"/><rect width="192" height="192" x="192" y="576" fill="#fbeee9"/><rect width="192" height="192" y="576" fill="#c08679"/></g></svg>
|
Before Width: | Height: | Size: 1.2 KiB |
Binary file not shown.
Before Width: | Height: | Size: 2.8 KiB |
File diff suppressed because one or more lines are too long
Before Width: | Height: | Size: 10 KiB |
@@ -1 +0,0 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0 0 128 128"><defs><style>.cls-1{clip-path:url(#clip-Web_1280_6)}.cls-2{fill:url(#radial-gradient)}.cls-3{fill:url(#radial-gradient-2)}.cls-4{fill:url(#radial-gradient-3)}.cls-5{fill:#faf9f8;font-size:144px;font-family:Arial-BoldMT,Arial;font-weight:700}.cls-6{filter:url(#F)}.cls-7{filter:url(#矩形_7)}.cls-8{filter:url(#矩形_8)}.cls-9{filter:url(#矩形_9)}</style><radialGradient id="radial-gradient" cx="-7" cy="285.88" r="401.52" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#769ebe"/><stop offset="1" stop-color="#93c3e8"/></radialGradient><filter id="矩形_9" width="355" height="355" x="32.5" y="12.5" filterUnits="userSpaceOnUse"><feOffset input="SourceAlpha"/><feGaussianBlur result="blur" stdDeviation="12.5"/><feFlood flood-opacity=".2"/><feComposite in2="blur" operator="in" result="result1"/><feComposite in="SourceGraphic" in2="result1"/></filter><radialGradient id="radial-gradient-2" cx="-6.075" cy="234.68" r="321.3" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#3a74a2"/><stop offset="1" stop-color="#64a5d6"/></radialGradient><filter id="矩形_8" width="300" height="300" x="22.5" y="77.5" filterUnits="userSpaceOnUse"><feOffset input="SourceAlpha"/><feGaussianBlur result="blur-2" stdDeviation="12.5"/><feFlood flood-opacity=".2"/><feComposite in2="blur-2" operator="in" result="result1"/><feComposite in="SourceGraphic" in2="result1"/></filter><radialGradient id="radial-gradient-3" cx="-24.82" cy="195.16" r="199.07" gradientUnits="userSpaceOnUse"><stop offset="0" stop-color="#004e8c"/><stop offset="1" stop-color="#0078d4"/></radialGradient><filter id="矩形_7" width="245" height="245" x="12.5" y="142.5" filterUnits="userSpaceOnUse"><feOffset input="SourceAlpha"/><feGaussianBlur result="blur-3" stdDeviation="12.5"/><feFlood flood-opacity=".2"/><feComposite in2="blur-3" operator="in" result="result1"/><feComposite in="SourceGraphic" in2="result1"/></filter><filter id="F" width="118" height="191" x="76" y="177" filterUnits="userSpaceOnUse"><feOffset dy="3" input="SourceAlpha"/><feGaussianBlur result="blur-4" stdDeviation="5"/><feFlood flood-opacity=".161"/><feComposite in2="blur-4" operator="in" result="result1"/><feComposite in="SourceGraphic" in2="result1"/></filter><clipPath id="clip-Web_1280_6"><rect width="400" height="400"/></clipPath></defs><g class="cls-1" clip-path="url(#clip-Web_1280_6)" data-name="Web 1280 – 6" transform="matrix(.34133 0 0 .34133 -4.2667 -4.2667)"><g class="cls-9"><rect width="280" height="280" class="cls-2" data-name="矩形 9" rx="5" transform="translate(70,50)" style="fill:url(#radial-gradient)"/></g><g class="cls-8"><rect width="225" height="225" class="cls-3" data-name="矩形 8" rx="5" transform="translate(60,115)" style="fill:url(#radial-gradient-2)"/></g><g class="cls-7"><rect width="170" height="170" class="cls-4" data-name="矩形 7" rx="5" transform="translate(50,180)" style="fill:url(#radial-gradient-3)"/></g><g class="cls-6"><text class="cls-5" data-name="F" transform="translate(91,319)"><tspan x="0" y="0">F</tspan></text></g></g></svg>
|
Before Width: | Height: | Size: 3.1 KiB |
@@ -27,26 +27,34 @@
|
||||
|
||||
<!-- Page content -->
|
||||
{% block container %}
|
||||
<div class="md-content md-content--post" data-md-component="content" itemscope itemtype="https://schema.org/Article">
|
||||
<div class="md-content md-content--post" data-md-component="content" itemscope itemtype="https://schema.org/{{ page.meta.schema_type or 'Article' }}">
|
||||
<meta itemprop="headline" content="{{ page.title | striptags }}" />
|
||||
<meta itemprop="isAccessibleForFree" content="True" />
|
||||
<meta itemprop="isFamilyFriendly" content="True" />
|
||||
{% if config.theme.language == "en" %}
|
||||
<meta itemprop="inLanguage" content="en-US" />
|
||||
{% endif %}
|
||||
<span itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
|
||||
<span itemprop="publisher" itemscope itemtype="https://schema.org/NewsMediaOrganization">
|
||||
<meta itemprop="name" content="Privacy Guides" />
|
||||
<meta itemprop="url" content="https://www.privacyguides.org/" />
|
||||
<meta itemprop="sameAs" content="https://mastodon.neat.computer/@privacyguides" />
|
||||
<meta itemprop="sameAs" content="https://twitter.com/privacy_guides" />
|
||||
<meta itemprop="sameAs" content="https://github.com/privacyguides" />
|
||||
<link itemprop="url" href="https://www.privacyguides.org/" />
|
||||
<link itemprop="sameAs" href="https://mastodon.neat.computer/@privacyguides" />
|
||||
<link itemprop="sameAs" href="https://twitter.com/privacy_guides" />
|
||||
<link itemprop="sameAs" href="https://github.com/privacyguides" />
|
||||
<span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
|
||||
<meta itemprop="url" content="https://www.privacyguides.org/en/assets/brand/logos/png/square/pg-yellow.png" />
|
||||
<link itemprop="url" href="https://www.privacyguides.org/en/assets/brand/logos/png/square/pg-yellow.png" />
|
||||
<meta itemprop="width" content="512" />
|
||||
<meta itemprop="height" content="512" />
|
||||
</span>
|
||||
<link itemprop="publishingPrinciples" href="https://www.privacyguides.org/en/about/criteria/" />
|
||||
<link itemprop="actionableFeedbackPolicy" href="https://www.privacyguides.org/articles/editorial/#actionable-feedback" />
|
||||
<link itemprop="correctionsPolicy" href="https://www.privacyguides.org/articles/editorial/#corrections-policy" />
|
||||
<link itemprop="ethicsPolicy" href="https://www.privacyguides.org/articles/editorial/#ethics-policy" />
|
||||
<link itemprop="missionCoveragePrioritiesPolicy" href="https://www.privacyguides.org/articles/editorial/#coverage-priorities" />
|
||||
<link itemprop="unnamedSourcesPolicy" href="https://www.privacyguides.org/articles/editorial/#unnamed-sources-policy" />
|
||||
<link itemprop="verificationFactCheckingPolicy" href="https://www.privacyguides.org/articles/editorial/#verification-fact-checking" />
|
||||
<link itemprop="ownershipFundingInfo" href="https://www.privacyguides.org/en/about/donate/" />
|
||||
<link itemprop="masthead" href="https://www.privacyguides.org/en/about/" />
|
||||
</span>
|
||||
<link itemprop="publishingPrinciples" href="https://www.privacyguides.org/en/about/criteria/" />
|
||||
|
||||
<!-- Sidebar -->
|
||||
<div
|
||||
@@ -197,105 +205,33 @@
|
||||
</ul>
|
||||
{% endif %}
|
||||
|
||||
<!-- Product review information -->
|
||||
{% if page.meta.review %}
|
||||
<ul class="md-post__meta md-nav__list" itemprop="about" itemscope itemtype="https://schema.org/{{ page.meta.review.type }}">
|
||||
<meta itemprop="applicationCategory" content="{{ page.meta.review.category }}" />
|
||||
<meta itemprop="applicationSubCategory" content="{{ page.meta.review.subcategory }}" />
|
||||
<li class="md-nav__item md-nav__item--section">
|
||||
<div class="md-post__title">
|
||||
<span class="md-ellipsis">
|
||||
<span itemprop="name">{{ page.meta.review.name }}</span> summary
|
||||
</span>
|
||||
<meta itemprop="alternateName" content="{{ page.meta.review.alternateName }}" />
|
||||
</div>
|
||||
<div class="md-nav">
|
||||
<ul class="md-nav__list" itemprop="review" itemscope itemtype="https://schema.org/Review">
|
||||
<li class="md-nav__item">
|
||||
<span itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
|
||||
<meta itemprop="bestRating" content="5" />
|
||||
<meta itemprop="worstRating" content="0.5" />
|
||||
<span class="md-nav__link" itemprop="ratingValue" content="{{ page.meta.review.rating }}" title="Rating: {{ page.meta.review.rating }} / 5">
|
||||
{% for i in range(1, 6) %}
|
||||
{% if i <= page.meta.review.rating %}
|
||||
{% include ".icons/material/star.svg" %}
|
||||
{% else %}
|
||||
{% if i - 0.5 == page.meta.review.rating %}
|
||||
{% include ".icons/material/star-half-full.svg" %}
|
||||
{% else %}
|
||||
{% include ".icons/material/star-outline.svg" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</span>
|
||||
{% if page.authors %}
|
||||
<span itemprop="author" itemscope itemtype="https://schema.org/Person">
|
||||
{% set reviewAuthor = page.authors[0] %}
|
||||
<meta itemprop="name" content="{{ reviewAuthor.name }}" />
|
||||
<meta itemprop="url" content="{{ reviewAuthor.url | url }}" />
|
||||
</span>
|
||||
{% endif %}
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="positiveNotes" itemscope itemtype="https://schema.org/ItemList">
|
||||
<strong itemprop="name">Pros:</strong>
|
||||
{% block extra_sidebar %}
|
||||
{% if page.categories[0].title == "Opinion" %}
|
||||
<ul class="md-post__meta md-nav__list">
|
||||
<li class="md-nav__item md-nav__item--section">
|
||||
<div class="md-post__title">
|
||||
<span class="md-ellipsis">
|
||||
<span>Disclaimer</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-nav">
|
||||
<ul class="md-nav__list">
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span>
|
||||
<ul class="pg-proconlist">
|
||||
{% for pro in page.meta.review.pros %}
|
||||
<li itemprop="itemListElement">{{ pro }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
This is an opinion piece.
|
||||
The views expressed in this article are the author's own and do not necessarily reflect the views of Privacy Guides and its editorial team.
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="negativeNotes" itemscope itemtype="https://schema.org/ItemList">
|
||||
<strong itemprop="name">Cons:</strong>
|
||||
<span>
|
||||
<ul class="pg-proconlist">
|
||||
{% for con in page.meta.review.cons %}
|
||||
<li itemprop="itemListElement">{{ con }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="md-nav__list">
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="offers" itemscope itemtype="https://schema.org/Offer">
|
||||
<strong>Price:</strong>
|
||||
{% if page.meta.review.price == 0 %}
|
||||
<span itemprop="price" content="0">Free</span>
|
||||
{% else %}
|
||||
<span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="{{ page.meta.review.price }}">{{ page.meta.review.price }}</span>
|
||||
{% endif %}
|
||||
{% if page.meta.review.period %}
|
||||
/ {{ page.meta.review.period }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<a itemprop="url" href="{{ page.meta.review.website }}"><em>{{ page.meta.review.website.rpartition("//")[-1].partition("/")[0] }}</em></a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
</nav>
|
||||
|
||||
|
||||
|
||||
<!-- Table of contents, if integrated -->
|
||||
{% if "toc.integrate" in features %}
|
||||
{% include "partials/toc.html" %}
|
||||
|
@@ -44,6 +44,9 @@ tags:
|
||||
og:image:height: "{{ image.height }}"
|
||||
og:url: "{{ page.canonical_url }}"
|
||||
|
||||
# Mastodon
|
||||
fediverse:creator: "@privacyguides@neat.computer"
|
||||
|
||||
# Twitter
|
||||
twitter:card: summary_large_image
|
||||
twitter:title: *page_title_with_site_name
|
||||
|
@@ -40,7 +40,7 @@
|
||||
{% endif %}
|
||||
|
||||
<!-- Page content -->
|
||||
<div itemprop="articleBody">
|
||||
<div>
|
||||
{{ page.content }}
|
||||
</div>
|
||||
|
||||
|
129
theme/review-article.html
Normal file
129
theme/review-article.html
Normal file
@@ -0,0 +1,129 @@
|
||||
<!--
|
||||
Copyright (c) 2024 Jonah Aragon <jonah@triplebit.net>
|
||||
|
||||
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 NON-INFRINGEMENT. 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.
|
||||
-->
|
||||
|
||||
{% extends "blog-post.html" %}
|
||||
|
||||
{% import "partials/nav-item.html" as item with context %}
|
||||
|
||||
{% block extra_sidebar %}
|
||||
<!-- Product review information -->
|
||||
{% if page.meta.review %}
|
||||
<ul class="md-post__meta md-nav__list">
|
||||
<li class="md-nav__item md-nav__item--section">
|
||||
<div class="md-post__title">
|
||||
<span class="md-ellipsis">
|
||||
<span>Our rating</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="md-nav">
|
||||
<ul class="md-nav__list">
|
||||
<li class="md-nav__item">
|
||||
<span itemprop="reviewRating" itemscope itemtype="https://schema.org/Rating">
|
||||
<meta itemprop="bestRating" content="5" />
|
||||
<meta itemprop="worstRating" content="0.5" />
|
||||
<span class="md-nav__link" itemprop="ratingValue" content="{{ page.meta.review.rating }}" title="Rating: {{ page.meta.review.rating }} / 5">
|
||||
{% for i in range(1, 6) %}
|
||||
{% if i <= page.meta.review.rating %}
|
||||
{% include ".icons/material/star.svg" %}
|
||||
{% else %}
|
||||
{% if i - 0.5 == page.meta.review.rating %}
|
||||
{% include ".icons/material/star-half-full.svg" %}
|
||||
{% else %}
|
||||
{% include ".icons/material/star-outline.svg" %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="positiveNotes" itemscope itemtype="https://schema.org/ItemList">
|
||||
<strong itemprop="name">Pros:</strong>
|
||||
<span>
|
||||
<ul class="pg-proconlist">
|
||||
{% for pro in page.meta.review.pros %}
|
||||
<li itemprop="itemListElement">{{ pro }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="negativeNotes" itemscope itemtype="https://schema.org/ItemList">
|
||||
<strong itemprop="name">Cons:</strong>
|
||||
<span>
|
||||
<ul class="pg-proconlist">
|
||||
{% for con in page.meta.review.cons %}
|
||||
<li itemprop="itemListElement">{{ con }}</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
<ul class="md-post__meta md-nav__list" itemprop="itemReviewed" itemscope itemtype="https://schema.org/{{ page.meta.review.type }}">
|
||||
<meta itemprop="applicationCategory" content="{{ page.meta.review.category }}" />
|
||||
<meta itemprop="applicationSubCategory" content="{{ page.meta.review.subcategory }}" />
|
||||
<li class="md-nav__item md-nav__item--section">
|
||||
<div class="md-post__title">
|
||||
<span class="md-ellipsis">
|
||||
<span itemprop="name">{{ page.meta.review.name }}</span> summary
|
||||
</span>
|
||||
<meta itemprop="alternateName" content="{{ page.meta.review.alternateName }}" />
|
||||
</div>
|
||||
<div class="md-nav">
|
||||
<ul class="md-nav__list">
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<span itemprop="offers" itemscope itemtype="https://schema.org/Offer">
|
||||
<strong>Price:</strong>
|
||||
{% if page.meta.review.price == 0 %}
|
||||
<span itemprop="price" content="0">Free</span>
|
||||
{% else %}
|
||||
<span itemprop="priceCurrency" content="USD">$</span><span itemprop="price" content="{{ page.meta.review.price }}">{{ page.meta.review.price }}</span>
|
||||
{% endif %}
|
||||
{% if page.meta.review.period %}
|
||||
/ {{ page.meta.review.period }}
|
||||
{% endif %}
|
||||
</span>
|
||||
</span>
|
||||
</li>
|
||||
<li class="md-nav__item">
|
||||
<span class="md-nav__link">
|
||||
<strong>Website:</strong>
|
||||
<a itemprop="url" href="{{ page.meta.review.website }}"><em>{{ page.meta.review.website.rpartition("//")[-1].partition("/")[0] }}</em></a>
|
||||
</span>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</li>
|
||||
</ul>
|
||||
{% endif %}
|
||||
</nav>
|
||||
{% endblock %}
|
Reference in New Issue
Block a user