(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
|
||||
## 08/04/2022
|
||||
|
||||
|
|
|
@ -79,6 +79,9 @@ Simply copy the `user/plugins/langswitcher/langswitcher.yaml` into `user/config/
|
|||
```yaml
|
||||
enabled: true
|
||||
built_in_css: true
|
||||
translated_urls: true
|
||||
untranslated_pages_behavior: none
|
||||
language_display: long
|
||||
```
|
||||
|
||||
Options are pretty self explanatory.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
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.
|
||||
icon: globe
|
||||
author:
|
||||
|
@ -39,6 +39,18 @@ form:
|
|||
validate:
|
||||
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:
|
||||
type: select
|
||||
size: small
|
||||
|
|
|
@ -2,8 +2,10 @@
|
|||
namespace Grav\Plugin;
|
||||
|
||||
use Composer\Autoload\ClassLoader;
|
||||
use Grav\Common\Language\Language;
|
||||
use Grav\Common\Language\LanguageCodes;
|
||||
use Grav\Common\Page\Page;
|
||||
use Grav\Common\Page\Pages;
|
||||
use \Grav\Common\Plugin;
|
||||
|
||||
class LangSwitcherPlugin extends Plugin
|
||||
|
@ -72,36 +74,21 @@ class LangSwitcherPlugin extends Plugin
|
|||
*/
|
||||
protected function getTranslatedUrl($lang, $path)
|
||||
{
|
||||
$translated_url_parts = array();
|
||||
/** @var Language $language */
|
||||
$url = null;
|
||||
/** @var Pages $pages */
|
||||
$pages = $this->grav['pages'];
|
||||
/** @var Language $language */
|
||||
$language = $this->grav['language'];
|
||||
|
||||
$language->init();
|
||||
$language->setActive($lang);
|
||||
$pages->reset();
|
||||
$page = $pages->get($path);
|
||||
$current_node = $page;
|
||||
$max_recursions = 10;
|
||||
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 '';
|
||||
if ($page) {
|
||||
$url = $page->url();
|
||||
}
|
||||
return $url;
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -126,6 +113,9 @@ class LangSwitcherPlugin extends Plugin
|
|||
$translated_pages[$language] = null;
|
||||
$page_name_without_ext = substr($page->name(), 0, -(strlen($page->extension())));
|
||||
$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)) {
|
||||
$translated_page = new Page();
|
||||
$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_routes = array();
|
||||
foreach ($data->languages as $language) {
|
||||
$data->translated_routes[$language] = $this->getTranslatedUrl($language, $page->path());
|
||||
if (empty($data->translated_routes[$language])) {
|
||||
$data->translated_routes[$language] = $data->page_route;
|
||||
$language = $this->grav['language'];
|
||||
$active = $language->getActive() ?? $language->getDefault();
|
||||
|
||||
if ($this->config->get('plugins.langswitcher.translated_urls', true)) {
|
||||
$data->translated_routes = array();
|
||||
$translate_langs = $data->languages;
|
||||
|
||||
if (($key = array_search($active, $translate_langs)) !== false) {
|
||||
$data->translated_routes[$active] = $page->url();
|
||||
unset($translate_langs[$key]);
|
||||
}
|
||||
|
||||
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 = $this->grav['language']->getLanguage();
|
||||
$data->current = $language->getLanguage();
|
||||
|
||||
$this->grav['twig']->twig_vars['langswitcher'] = $this->grav['langswitcher'] = $data;
|
||||
|
||||
|
|
|
@ -1,4 +1,5 @@
|
|||
enabled: true
|
||||
built_in_css: true
|
||||
translated_urls: true
|
||||
untranslated_pages_behavior: none
|
||||
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_LONG: 'Long'
|
||||
LANGUAGE_DISPLAY_SHORT: 'Short'
|
||||
TRANSLATED_URLS: 'Translated URLs'
|
||||
TRANSLATED_URLS_HELP: 'Use the actual translated page URL rather then the raw-route'
|
||||
|
||||
ru:
|
||||
PLUGIN_LANGSWITCHER:
|
||||
|
|
|
@ -1,9 +1,16 @@
|
|||
{% set langobj = grav['language'] %}
|
||||
{% for key in langswitcher.languages %}
|
||||
{% if key == langswitcher.current %}
|
||||
{% set lang_url = page.url is same as('/') ? '' : page.url %}
|
||||
{% else %}
|
||||
{% set lang_url = (langobj.getLanguageURLPrefix(key) ~ langswitcher.page_route ~ page.urlExtension ?: '')|rtrim('/') %}
|
||||
{% endif %}
|
||||
<link rel="alternate" hreflang="{{ key }}" href="{{ uri.base ~ lang_url ~ uri.params }}" />
|
||||
{% set language_obj = grav.language %}
|
||||
{% for language in langswitcher.languages %}
|
||||
{% if langswitcher.translated_routes[language] %}
|
||||
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||
{% else %}
|
||||
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
||||
{% endif %}
|
||||
|
||||
{% 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 %}
|
||||
|
|
|
@ -1,31 +1,33 @@
|
|||
<ul class="langswitcher">
|
||||
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
||||
{% for language in langswitcher.languages %}
|
||||
{% set display_format = display_format ?? config.get('plugins.langswitcher.language_display', 'long') %}
|
||||
|
||||
{% set show_language = true %}
|
||||
{% if language == langswitcher.current %}
|
||||
{% set lang_url = page.url %}
|
||||
{% set active_class = ' active' %}
|
||||
{% else %}
|
||||
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||
{% set lang_url = base_lang_url ~ langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||
{% for language in langswitcher.languages %}
|
||||
{% set active_class = '' %}
|
||||
{% set show_language = true %}
|
||||
{% if language == langswitcher.current %}
|
||||
{% set active_class = 'active' %}
|
||||
{% endif %}
|
||||
{% if langswitcher.translated_routes[language] %}
|
||||
{% set lang_url = langswitcher.translated_routes[language] ~ page.urlExtension %}
|
||||
{% else %}
|
||||
{% set base_lang_url = base_url_simple ~ grav.language.getLanguageURLPrefix(language) %}
|
||||
{% set lang_url = base_lang_url ~ langswitcher.page_route ~ page.urlExtension %}
|
||||
{% endif %}
|
||||
{% set untranslated_pages_behavior = grav.config.plugins.langswitcher.untranslated_pages_behavior %}
|
||||
{% if untranslated_pages_behavior != 'none' %}
|
||||
{% set translated_page = langswitcher.translated_pages[language] %}
|
||||
{% if (not translated_page) or (not translated_page.published) %}
|
||||
{% if untranslated_pages_behavior == 'redirect' %}
|
||||
{% set lang_url = base_lang_url ~ '/' %}
|
||||
{% set lang_url = url('/') %}
|
||||
{% elseif untranslated_pages_behavior == 'hide' %}
|
||||
{% set show_language = false %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% endif %}
|
||||
{% set active_class = '' %}
|
||||
{% endif %}
|
||||
|
||||
{% if show_language %}
|
||||
<li><a href="{{ lang_url ~ uri.params }}" class="external{{ active_class }}">{% include 'partials/langswitcher-' ~ display_format ~ '.html.twig' %}</a></li>
|
||||
{% endif %}
|
||||
{% if show_language %}
|
||||
<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 %}
|
||||
|
||||
{% endfor %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
|
Loading…
Reference in a new issue