1
0
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:
fria
2024-11-11 14:52:54 -06:00
committed by GitHub
144 changed files with 2166 additions and 1315 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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" %}

View File

@@ -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

View File

@@ -40,7 +40,7 @@
{% endif %}
<!-- Page content -->
<div itemprop="articleBody">
<div>
{{ page.content }}
</div>

129
theme/review-article.html Normal file
View 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 %}