(Grav GitSync) Automatic Commit from dan
This commit is contained in:
parent
89d18918b1
commit
cea191f6c2
9 changed files with 133 additions and 58 deletions
|
@ -0,0 +1,24 @@
|
||||||
|
---
|
||||||
|
title: 'Tiny tool makes noises whenever your computer sends a packet to a Google service - googerteller'
|
||||||
|
author: Dan
|
||||||
|
published: true
|
||||||
|
date: '26-08-2022 20:42'
|
||||||
|
taxonomy:
|
||||||
|
category:
|
||||||
|
- news
|
||||||
|
tag:
|
||||||
|
- google
|
||||||
|
- tutorials
|
||||||
|
aura:
|
||||||
|
author: dan
|
||||||
|
---
|
||||||
|
|
||||||
|
Thanks to [@bert_hu_bert](https://twitter.com/bert_hu_bert) for his tiny tool - googerteller.
|
||||||
|
|
||||||
|
"Makes a little bit of noise any time your computer sends a packet to a #Google service, which excludes Google Cloud users."
|
||||||
|
|
||||||
|
Demo video https://twitter.com/bert_hu_bert/status/1561466204602220544
|
||||||
|
|
||||||
|
We have added a quick installation guide to our wiki. It is for Arch.
|
||||||
|
|
||||||
|
https://wiki.techsaviours.org/en/scans/googerteller
|
|
@ -1,3 +1,21 @@
|
||||||
|
# v3.0.1
|
||||||
|
## 08/19/2022
|
||||||
|
|
||||||
|
1. [](#bugfix)
|
||||||
|
* Fixed another issue with incorrect `hreflang` URLs
|
||||||
|
|
||||||
|
# v3.0.0
|
||||||
|
## 08/19/2022
|
||||||
|
|
||||||
|
1. [](#new)
|
||||||
|
* Completely rewrote the logic for translated URLs to be more robust.
|
||||||
|
* Added configuration option to use **Translated URLs** or use previous **Raw-Route** approach
|
||||||
|
1. [](#improved)
|
||||||
|
* Updated `hreflang` Twig template to use new translated URLs logic
|
||||||
|
* Added an `x-default` entry for `hreflang` template when default language has `include_default_lang` set to false
|
||||||
|
* Support `params` and `query` string parameters in URLs
|
||||||
|
* Full domain URLs for `hreflang` entries
|
||||||
|
|
||||||
# v2.0.1
|
# v2.0.1
|
||||||
## 08/04/2022
|
## 08/04/2022
|
||||||
|
|
||||||
|
|
|
@ -79,6 +79,9 @@ Simply copy the `user/plugins/langswitcher/langswitcher.yaml` into `user/config/
|
||||||
```yaml
|
```yaml
|
||||||
enabled: true
|
enabled: true
|
||||||
built_in_css: true
|
built_in_css: true
|
||||||
|
translated_urls: true
|
||||||
|
untranslated_pages_behavior: none
|
||||||
|
language_display: long
|
||||||
```
|
```
|
||||||
|
|
||||||
Options are pretty self explanatory.
|
Options are pretty self explanatory.
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
name: LangSwitcher
|
name: LangSwitcher
|
||||||
version: 2.0.1
|
version: 3.0.1
|
||||||
description: LangSwitcher is a [Grav](http://github.com/getgrav/grav) plugin that provides native language text links to switch between [multiple languages](http://learn.getgrav.org/content/multi-language) in Grav **v0.9.30** or greater.
|
description: LangSwitcher is a [Grav](http://github.com/getgrav/grav) plugin that provides native language text links to switch between [multiple languages](http://learn.getgrav.org/content/multi-language) in Grav **v0.9.30** or greater.
|
||||||
icon: globe
|
icon: globe
|
||||||
author:
|
author:
|
||||||
|
@ -39,6 +39,18 @@ form:
|
||||||
validate:
|
validate:
|
||||||
type: bool
|
type: bool
|
||||||
|
|
||||||
|
translated_urls:
|
||||||
|
type: toggle
|
||||||
|
label: PLUGIN_LANGSWITCHER.TRANSLATED_URLS
|
||||||
|
help: PLUGIN_LANGSWITCHER.TRANSLATED_URLS_HELP
|
||||||
|
highlight: 1
|
||||||
|
default: 1
|
||||||
|
options:
|
||||||
|
1: PLUGIN_ADMIN.ENABLED
|
||||||
|
0: PLUGIN_ADMIN.DISABLED
|
||||||
|
validate:
|
||||||
|
type: bool
|
||||||
|
|
||||||
language_display:
|
language_display:
|
||||||
type: select
|
type: select
|
||||||
size: small
|
size: small
|
||||||
|
|
|
@ -2,8 +2,10 @@
|
||||||
namespace Grav\Plugin;
|
namespace Grav\Plugin;
|
||||||
|
|
||||||
use Composer\Autoload\ClassLoader;
|
use Composer\Autoload\ClassLoader;
|
||||||
|
use Grav\Common\Language\Language;
|
||||||
use Grav\Common\Language\LanguageCodes;
|
use Grav\Common\Language\LanguageCodes;
|
||||||
use Grav\Common\Page\Page;
|
use Grav\Common\Page\Page;
|
||||||
|
use Grav\Common\Page\Pages;
|
||||||
use \Grav\Common\Plugin;
|
use \Grav\Common\Plugin;
|
||||||
|
|
||||||
class LangSwitcherPlugin extends Plugin
|
class LangSwitcherPlugin extends Plugin
|
||||||
|
@ -72,36 +74,21 @@ class LangSwitcherPlugin extends Plugin
|
||||||
*/
|
*/
|
||||||
protected function getTranslatedUrl($lang, $path)
|
protected function getTranslatedUrl($lang, $path)
|
||||||
{
|
{
|
||||||
$translated_url_parts = array();
|
/** @var Language $language */
|
||||||
|
$url = null;
|
||||||
|
/** @var Pages $pages */
|
||||||
$pages = $this->grav['pages'];
|
$pages = $this->grav['pages'];
|
||||||
|
/** @var Language $language */
|
||||||
|
$language = $this->grav['language'];
|
||||||
|
|
||||||
|
$language->init();
|
||||||
|
$language->setActive($lang);
|
||||||
|
$pages->reset();
|
||||||
$page = $pages->get($path);
|
$page = $pages->get($path);
|
||||||
$current_node = $page;
|
if ($page) {
|
||||||
$max_recursions = 10;
|
$url = $page->url();
|
||||||
while ($max_recursions > 0 && $current_node !== null && $current_node->slug() != 'pages' && $path != 'pages') {
|
|
||||||
$translated_md_filepath = "{$path}/{$current_node->template()}.{$lang}.md";
|
|
||||||
if (file_exists($translated_md_filepath)) {
|
|
||||||
$translated_page = new Page();
|
|
||||||
$translated_page->init(new \SplFileInfo($translated_md_filepath));
|
|
||||||
$translated_slug = $translated_page->slug();
|
|
||||||
if (!empty($translated_slug)) {
|
|
||||||
array_unshift($translated_url_parts, $translated_slug);
|
|
||||||
} else {
|
|
||||||
$untranslated_slug = $current_node->slug();
|
|
||||||
if (!empty($untranslated_slug)) {
|
|
||||||
array_unshift($translated_url_parts, $untranslated_slug);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
$current_node = $current_node->parent();
|
|
||||||
$path = dirname($path);
|
|
||||||
}
|
|
||||||
$max_recursions--;
|
|
||||||
}
|
|
||||||
if (!empty($translated_url_parts)) {
|
|
||||||
array_unshift($translated_url_parts, '');
|
|
||||||
return implode('/', $translated_url_parts);
|
|
||||||
} else {
|
|
||||||
return '';
|
|
||||||
}
|
}
|
||||||
|
return $url;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -126,6 +113,9 @@ class LangSwitcherPlugin extends Plugin
|
||||||
$translated_pages[$language] = null;
|
$translated_pages[$language] = null;
|
||||||
$page_name_without_ext = substr($page->name(), 0, -(strlen($page->extension())));
|
$page_name_without_ext = substr($page->name(), 0, -(strlen($page->extension())));
|
||||||
$translated_page_path = $page->path() . DS . $page_name_without_ext . '.' . $language . '.md';
|
$translated_page_path = $page->path() . DS . $page_name_without_ext . '.' . $language . '.md';
|
||||||
|
if (!file_exists($translated_page_path) and $language == $this->grav['language']->getDefault()) {
|
||||||
|
$translated_page_path = $page->path() . DS . $page_name_without_ext . '.md';
|
||||||
|
}
|
||||||
if (file_exists($translated_page_path)) {
|
if (file_exists($translated_page_path)) {
|
||||||
$translated_page = new Page();
|
$translated_page = new Page();
|
||||||
$translated_page->init(new \SplFileInfo($translated_page_path), $language . '.md');
|
$translated_page->init(new \SplFileInfo($translated_page_path), $language . '.md');
|
||||||
|
@ -135,15 +125,31 @@ class LangSwitcherPlugin extends Plugin
|
||||||
$data->translated_pages = $translated_pages;
|
$data->translated_pages = $translated_pages;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
$language = $this->grav['language'];
|
||||||
|
$active = $language->getActive() ?? $language->getDefault();
|
||||||
|
|
||||||
|
if ($this->config->get('plugins.langswitcher.translated_urls', true)) {
|
||||||
$data->translated_routes = array();
|
$data->translated_routes = array();
|
||||||
foreach ($data->languages as $language) {
|
$translate_langs = $data->languages;
|
||||||
$data->translated_routes[$language] = $this->getTranslatedUrl($language, $page->path());
|
|
||||||
if (empty($data->translated_routes[$language])) {
|
if (($key = array_search($active, $translate_langs)) !== false) {
|
||||||
$data->translated_routes[$language] = $data->page_route;
|
$data->translated_routes[$active] = $page->url();
|
||||||
}
|
unset($translate_langs[$key]);
|
||||||
}
|
}
|
||||||
|
|
||||||
$data->current = $this->grav['language']->getLanguage();
|
foreach ($translate_langs as $lang) {
|
||||||
|
$data->translated_routes[$lang] = $this->getTranslatedUrl($lang, $page->path());
|
||||||
|
if (is_null($data->translated_routes[$lang])) {
|
||||||
|
$data->translated_routes[$lang] = $data->page_route;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// Reset pages to current active language
|
||||||
|
$language->init();
|
||||||
|
$language->setActive($active);
|
||||||
|
$this->grav['pages']->reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
$data->current = $language->getLanguage();
|
||||||
|
|
||||||
$this->grav['twig']->twig_vars['langswitcher'] = $this->grav['langswitcher'] = $data;
|
$this->grav['twig']->twig_vars['langswitcher'] = $this->grav['langswitcher'] = $data;
|
||||||
|
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
enabled: true
|
enabled: true
|
||||||
built_in_css: true
|
built_in_css: true
|
||||||
|
translated_urls: true
|
||||||
untranslated_pages_behavior: none
|
untranslated_pages_behavior: none
|
||||||
language_display: long
|
language_display: long
|
||||||
|
|
|
@ -11,6 +11,8 @@ en:
|
||||||
LANGUAGE_DISPLAY_HELP: 'The format of the language display, either "long" (e.g. English), or "short" (e.g. EN)'
|
LANGUAGE_DISPLAY_HELP: 'The format of the language display, either "long" (e.g. English), or "short" (e.g. EN)'
|
||||||
LANGUAGE_DISPLAY_LONG: 'Long'
|
LANGUAGE_DISPLAY_LONG: 'Long'
|
||||||
LANGUAGE_DISPLAY_SHORT: 'Short'
|
LANGUAGE_DISPLAY_SHORT: 'Short'
|
||||||
|
TRANSLATED_URLS: 'Translated URLs'
|
||||||
|
TRANSLATED_URLS_HELP: 'Use the actual translated page URL rather then the raw-route'
|
||||||
|
|
||||||
ru:
|
ru:
|
||||||
PLUGIN_LANGSWITCHER:
|
PLUGIN_LANGSWITCHER:
|
||||||
|
|
|
@ -1,9 +1,16 @@
|
||||||
{% set langobj = grav['language'] %}
|
{% set language_obj = grav.language %}
|
||||||
{% for key in langswitcher.languages %}
|
{% for language in langswitcher.languages %}
|
||||||
{% if key == langswitcher.current %}
|
{% if langswitcher.translated_routes[language] %}
|
||||||
{% set lang_url = page.url is same as('/') ? '' : page.url %}
|
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set lang_url = (langobj.getLanguageURLPrefix(key) ~ langswitcher.page_route ~ page.urlExtension ?: '')|rtrim('/') %}
|
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||||
|
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
<link rel="alternate" hreflang="{{ key }}" href="{{ uri.base ~ lang_url ~ uri.params }}" />
|
|
||||||
|
{% set href_url = uri.base ~ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) %}
|
||||||
|
|
||||||
|
{% if (language_obj.default == language and config.languages.include_default_lang == false) %}
|
||||||
|
<link rel="alternate" hreflang="x-default" href="{{ href_url }}" />
|
||||||
|
{% endif %}
|
||||||
|
<link rel="alternate" hreflang="{{ language }}" href="{{ href_url }}" />
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
|
@ -1,30 +1,32 @@
|
||||||
<ul class="langswitcher">
|
<ul class="langswitcher">
|
||||||
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
||||||
{% for language in langswitcher.languages %}
|
|
||||||
|
|
||||||
|
{% for language in langswitcher.languages %}
|
||||||
|
{% set active_class = '' %}
|
||||||
{% set show_language = true %}
|
{% set show_language = true %}
|
||||||
{% if language == langswitcher.current %}
|
{% if language == langswitcher.current %}
|
||||||
{% set lang_url = page.url %}
|
|
||||||
{% set active_class = 'active' %}
|
{% set active_class = 'active' %}
|
||||||
|
{% endif %}
|
||||||
|
{% if langswitcher.translated_routes[language] %}
|
||||||
|
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||||
{% else %}
|
{% else %}
|
||||||
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||||
{% set lang_url = base_lang_url ~ langswitcher.translated_routes[language] ~ page.urlExtension %}
|
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
||||||
|
{% endif %}
|
||||||
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
|
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
|
||||||
{% if untranslated_pages_behavior != 'none' %}
|
{% if untranslated_pages_behavior != 'none' %}
|
||||||
{% set translated_page = langswitcher.translated_pages[language] %}
|
{% set translated_page = langswitcher.translated_pages[language] %}
|
||||||
{% if (not translated_page) or (not translated_page.published) %}
|
{% if (not translated_page) or (not translated_page.published) %}
|
||||||
{% if untranslated_pages_behavior == 'redirect' %}
|
{% if untranslated_pages_behavior == 'redirect' %}
|
||||||
{% set lang_url = base_lang_url ~ '/' %}
|
{% set lang_url = url('/') %}
|
||||||
{% elseif untranslated_pages_behavior == 'hide' %}
|
{% elseif untranslated_pages_behavior == 'hide' %}
|
||||||
{% set show_language = false %}
|
{% set show_language = false %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% endif %}
|
{% endif %}
|
||||||
{% set active_class = '' %}
|
|
||||||
{% endif %}
|
|
||||||
|
|
||||||
{% if show_language %}
|
{% if show_language %}
|
||||||
<li><a href="{{ lang_url ~ uri.params }}" class="external{{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
|
<li><a href="{{ lang_url ~ uri.params ~ (uri.query|length > 1 ? '?' ~ uri.query) }}" class="external {{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
|
||||||
{% endif %}
|
{% endif %}
|
||||||
|
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
|
|
Loading…
Reference in a new issue