diff --git a/install.php b/install.php index b1ccc380..4d492d5e 100644 --- a/install.php +++ b/install.php @@ -77,7 +77,7 @@ rex_delete_cache(); -if (!class_exists('rex_yrewrite_seo_visibility')) { - require_once('lib/yrewrite/seo_visibility.php'); +if (!class_exists('rex_yrewrite_settings')) { + require_once('lib/yrewrite/settings.php'); } -rex_yrewrite_seo_visibility::install(); +rex_yrewrite_settings::install(); diff --git a/lang/de_de.lang b/lang/de_de.lang index 1894a467..bdb48744 100644 --- a/lang/de_de.lang +++ b/lang/de_de.lang @@ -179,7 +179,8 @@ yrewrite_expiry_date = Deaktivierungsdatum yrewrite_perm_url_edit = YRewrite: URL editieren yrewrite_perm_seo_edit = YRewrite: SEO-Daten editieren -yrewrite_seo_settings = Einstellungen -yrewrite_seo_saved = Einstellungen gespeichert +yrewrite_settings = Einstellungen +yrewrite_settings_saved = Einstellungen gespeichert +yrewrite_unicode_urls = Unicode-Zeichen in URLs erlauben (Umlaute, chinesische/kyrillische Zeichen etc.) yrewrite_hide_url_block = URL-Block verbergen yrewrite_hide_seo_block = SEO-Block verbergen diff --git a/lang/en_gb.lang b/lang/en_gb.lang index 6f73df5c..b61e7d15 100644 --- a/lang/en_gb.lang +++ b/lang/en_gb.lang @@ -179,7 +179,8 @@ yrewrite_expiry_date = Date of deactivation yrewrite_perm_url_edit = Yrewrite: URL editing yrewrite_perm_seo_edit = Yrewrite: SEO-Data editing -yrewrite_seo_settings = Settings -yrewrite_seo_saved = Settings updated +yrewrite_settings = Settings +yrewrite_settings_saved = Settings updated +yrewrite_unicode_urls = Allow unicode chars in URLs (umlauts, chinese/cyrillic characters etc.) yrewrite_hide_url_block = Hide URL-Block yrewrite_hide_seo_block = Hide SEO-Block diff --git a/lang/es_es.lang b/lang/es_es.lang index 341ac9d4..4194a4ea 100644 --- a/lang/es_es.lang +++ b/lang/es_es.lang @@ -175,7 +175,7 @@ yrewrite_expiry_date = fecha de desactivación yrewrite_perm_url_edit = Yrewrite: Edición de URL yrewrite_perm_seo_edit = Yrewrite: Edición de datos SEO -yrewrite_seo_settings = Ajustes -yrewrite_seo_saved = Configuraciones guardadas +yrewrite_settings = Ajustes +yrewrite_settings_saved = Configuraciones guardadas yrewrite_hide_url_block = Ocultar bloque de URL yrewrite_hide_seo_block = Ocultar bloque SEO diff --git a/lang/sv_se.lang b/lang/sv_se.lang index 0664b25e..7544717f 100644 --- a/lang/sv_se.lang +++ b/lang/sv_se.lang @@ -175,7 +175,7 @@ yrewrite_expiry_date = Avaktiveringsdatum yrewrite_perm_url_edit = Yrewrite: redigera URL yrewrite_perm_seo_edit = Yrewrite: redigera SEO-data -yrewrite_seo_settings = Inställningar -yrewrite_seo_saved = Inställningar sparades +yrewrite_settings = Inställningar +yrewrite_settings_saved = Inställningar sparades yrewrite_hide_url_block = Dölj URL-block yrewrite_hide_seo_block = Dölj SEO-block diff --git a/lib/yrewrite/scheme.php b/lib/yrewrite/scheme.php index ec5ce74f..16a2122d 100644 --- a/lib/yrewrite/scheme.php +++ b/lib/yrewrite/scheme.php @@ -127,6 +127,13 @@ public function getAlternativeCandidates($path, rex_yrewrite_domain $domain) */ public function normalize($string, $clang = 1) { + if (rex_addon::get('yrewrite')->getConfig('unicode_urls')) { + $string = str_replace(["'", '’', 'ʻ'], '', $string); + $string = preg_replace('/[^\p{L&}\p{Lo}\p{M}\p{N}\p{Sc}]+/u', '-', $string); + $string = mb_strtolower(trim($string, '-')); + return $string; + } + $string = str_replace( ['Ä', 'Ö', 'Ü', 'ä', 'ö', 'ü', 'ß', 'À', 'à', 'Á', 'á', 'ç', 'È', 'è', 'É', 'é', 'ë', 'Ì', 'ì', 'Í', 'í', 'Ï', 'ï', 'Ò', 'ò', 'Ó', 'ó', 'ô', 'Ù', 'ù', 'Ú', 'ú', 'Č', 'č', 'Ł', 'ł', 'ž', '/', '®', '©', '™'], ['Ae', 'Oe', 'Ue', 'ae', 'oe', 'ue', 'ss', 'A', 'a', 'A', 'a', 'c', 'E', 'e', 'E', 'e', 'e', 'I', 'i', 'I', 'i', 'I', 'i', 'O', 'o', 'O', 'o', 'o', 'U', 'u', 'U', 'u', 'C', 'c', 'L', 'l', 'z', '-', '', '', ''], diff --git a/lib/yrewrite/seo_visibility.php b/lib/yrewrite/settings.php similarity index 81% rename from lib/yrewrite/seo_visibility.php rename to lib/yrewrite/settings.php index 7d0f0223..e67ab786 100644 --- a/lib/yrewrite/seo_visibility.php +++ b/lib/yrewrite/settings.php @@ -6,7 +6,7 @@ * @package redaxo\yrewrite */ -class rex_yrewrite_seo_visibility +class rex_yrewrite_settings { /** * @return rex_addon @@ -27,10 +27,13 @@ public static function processFormPost() // Process form data if (rex_post('submit', 'boolean')) { + $addon->setConfig('unicode_urls', rex_post('yrewrite_unicode_urls', 'bool')); $addon->setConfig('yrewrite_hide_url_block', rex_post('yrewrite_hide_url_block', 'bool')); $addon->setConfig('yrewrite_hide_seo_block', rex_post('yrewrite_hide_seo_block', 'bool')); - $message = rex_view::success($addon->i18n('yrewrite_seo_saved')); + rex_yrewrite::deleteCache(); + + $message = rex_view::success($addon->i18n('yrewrite_settings_saved')); } return $message; @@ -45,6 +48,10 @@ public static function getForm() // Checkboxes $checkbox_elements = [ + [ + 'label' => '', + 'field' => 'getConfig('unicode_urls') ? ' checked="checked"' : '').' />', + ], [ 'label' => '', 'field' => 'getConfig('yrewrite_hide_url_block') ? ' checked="checked"' : '').' />', @@ -72,7 +79,7 @@ public static function getForm() // Form $fragment = new rex_fragment(); $fragment->setVar('class', 'edit'); - $fragment->setVar('title', $addon->i18n('yrewrite_seo_settings')); + $fragment->setVar('title', $addon->i18n('yrewrite_settings')); $fragment->setVar('body', $checkboxes, false); $fragment->setVar('buttons', $submit, false); @@ -90,6 +97,9 @@ public static function install() { $addon = self::getAddon(); + if (!$addon->hasConfig('unicode_urls')) { + $addon->setConfig('unicode_urls', false); + } if (!$addon->hasConfig('yrewrite_hide_url_block')) { $addon->setConfig('yrewrite_hide_url_block', false); } diff --git a/pages/setup.php b/pages/setup.php index dea72555..f8db09b7 100644 --- a/pages/setup.php +++ b/pages/setup.php @@ -35,12 +35,12 @@
' . rex_i18n::rawMsg('yrewrite_info_tipps_text') . ' - - +
' . rex_i18n::rawMsg('yrewrite_info_tipps_text') . ' + +
' . rex_i18n::rawMsg('yrewrite_info_seo_text') . '
-
+
'.highlight_string('getTitleTag().PHP_EOL;
@@ -60,8 +60,8 @@
/**
* Process and display visibility settings form
*/
-echo rex_yrewrite_seo_visibility::processFormPost();
-echo rex_yrewrite_seo_visibility::getForm();
+echo rex_yrewrite_settings::processFormPost();
+echo rex_yrewrite_settings::getForm();
$domains = [];