Compare commits

..

No commits in common. "master" and "master" have entirely different histories.

522 changed files with 0 additions and 59037 deletions

View file

@ -1,230 +0,0 @@
<?php
/**
* Name: blockem
* Description: Allows users to hide content by collapsing posts and replies.
* Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Author: Roland Haeder <https://f.haeder.net/roland>
* Status: unsupported
*/
use Friendica\App;
use Friendica\Core\Hook;
use Friendica\Core\Renderer;
use Friendica\DI;
use Friendica\Util\Strings;
global $blockem_words;
function blockem_install()
{
Hook::register('prepare_body_content_filter', 'addon/blockem/blockem.php', 'blockem_prepare_body_content_filter');
Hook::register('display_item' , 'addon/blockem/blockem.php', 'blockem_display_item');
Hook::register('addon_settings' , 'addon/blockem/blockem.php', 'blockem_addon_settings');
Hook::register('addon_settings_post' , 'addon/blockem/blockem.php', 'blockem_addon_settings_post');
Hook::register('conversation_start' , 'addon/blockem/blockem.php', 'blockem_conversation_start');
Hook::register('item_photo_menu' , 'addon/blockem/blockem.php', 'blockem_item_photo_menu');
Hook::register('enotify_store' , 'addon/blockem/blockem.php', 'blockem_enotify_store');
}
function blockem_addon_settings(array &$data)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words', '');
$t = Renderer::getMarkupTemplate('settings.tpl', 'addon/blockem/');
$html = Renderer::replaceMacros($t, [
'$info' => DI::l10n()->t("Hides user's content by collapsing posts. Also replaces their avatar with generic image."),
'$words' => ['blockem-words', DI::l10n()->t('Comma separated profile URLS:'), $words],
]);
$data = [
'addon' => 'blockem',
'title' => DI::l10n()->t('Blockem'),
'html' => $html,
];
}
function blockem_addon_settings_post(array &$b)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
if (!empty($_POST['blockem-submit'])) {
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', trim($_POST['blockem-words']));
}
}
function blockem_enotify_store(array &$b)
{
$words = DI::pConfig()->get($b['uid'], 'blockem', 'words');
if ($words) {
$arr = explode(',', $words);
} else {
return;
}
$found = false;
if (count($arr)) {
foreach ($arr as $word) {
if (!strlen(trim($word))) {
continue;
}
if (Strings::compareLink($b['url'], $word)) {
$found = true;
break;
}
}
}
if ($found) {
// empty out the fields
$b = [];
}
}
function blockem_prepare_body_content_filter(array &$hook_data)
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$profiles_string = null;
if (DI::userSession()->getLocalUserId()) {
$profiles_string = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
}
if ($profiles_string) {
$profiles_array = explode(',', $profiles_string);
} else {
return;
}
$found = false;
foreach ($profiles_array as $word) {
if (Strings::compareLink($hook_data['item']['author-link'], trim($word))) {
$found = true;
break;
}
}
if ($found) {
$hook_data['filter_reasons'][] = DI::l10n()->t('Filtered user: %s', $hook_data['item']['author-name']);
}
}
function blockem_display_item(array &$b = null)
{
if (!empty($b['output']['body']) && strstr($b['output']['body'], 'id="blockem-wrap-')) {
$b['output']['thumb'] = DI::baseUrl() . "/images/person-80.jpg";
}
}
function blockem_conversation_start(array &$b)
{
global $blockem_words;
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
if ($words) {
$blockem_words = explode(',', $words);
}
DI::page()['htmlhead'] .= <<< EOT
<script>
function blockemBlock(author) {
$.get('blockem?block=' +author, function(data) {
location.reload(true);
});
}
function blockemUnblock(author) {
$.get('blockem?unblock=' +author, function(data) {
location.reload(true);
});
}
</script>
EOT;
}
function blockem_item_photo_menu(array &$b)
{
global $blockem_words;
if (!DI::userSession()->getLocalUserId() || $b['item']['self']) {
return;
}
$blocked = false;
$author = $b['item']['author-link'];
if (!empty($blockem_words)) {
foreach($blockem_words as $bloke) {
if (Strings::compareLink($bloke,$author)) {
$blocked = true;
break;
}
}
}
if ($blocked) {
$b['menu'][DI::l10n()->t('Unblock Author')] = 'javascript:blockemUnblock(\'' . $author . '\');';
} else {
$b['menu'][DI::l10n()->t('Block Author')] = 'javascript:blockemBlock(\'' . $author . '\');';
}
}
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function blockem_module() {}
function blockem_init()
{
if (!DI::userSession()->getLocalUserId()) {
return;
}
$words = DI::pConfig()->get(DI::userSession()->getLocalUserId(), 'blockem', 'words');
if (array_key_exists('block', $_GET) && $_GET['block']) {
if (strlen($words)) {
$words .= ',';
}
$words .= trim($_GET['block']);
}
if (array_key_exists('unblock', $_GET) && $_GET['unblock']) {
$arr = explode(',',$words);
$newarr = [];
if (count($arr)) {
foreach ($arr as $x) {
if (!Strings::compareLink(trim($x), trim($_GET['unblock']))) {
$newarr[] = $x;
}
}
}
$words = implode(',', $newarr);
}
DI::pConfig()->set(DI::userSession()->getLocalUserId(), 'blockem', 'words', $words);
exit();
}

View file

@ -1,45 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr ""
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr ""
#: blockem.php:45
msgid "Blockem"
msgstr ""
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr ""
#: blockem.php:183
msgid "Unblock Author"
msgstr ""
#: blockem.php:185
msgid "Block Author"
msgstr ""

View file

@ -1,52 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# abidin toumi <abidin24@tutanota.com>, 2021
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-10-29 08:15+0000\n"
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: blockem.php:42 blockem.php:46
msgid "Blockem"
msgstr "احجبه<br>"
#: blockem.php:50
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة."
#: blockem.php:51
msgid "Comma separated profile URLS:"
msgstr "عناوين الملفات الشخصية مفصولة بفواصل:"
#: blockem.php:55
msgid "Save Settings"
msgstr "احفظ الإعدادات"
#: blockem.php:131
#, php-format
msgid "Filtered user: %s"
msgstr "ترشيح المستخدم :1%s"
#: blockem.php:190
msgid "Unblock Author"
msgstr "ألغ الحجب عن المدون"
#: blockem.php:192
msgid "Block Author"
msgstr "احجب المدون"

View file

@ -1,14 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Blockem'] = 'احجبه<br>';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'إخفاء محتوى المستخدم عن طريق تصغير المشاركات. و استبدال الصورة الرمزية الخاصة بهم بصورة عامة.';
$a->strings['Comma separated profile URLS:'] = 'عناوين الملفات الشخصية مفصولة بفواصل:';
$a->strings['Save Settings'] = 'احفظ الإعدادات';
$a->strings['Filtered user: %s'] = 'ترشيح المستخدم :1%s';
$a->strings['Unblock Author'] = 'ألغ الحجب عن المدون';
$a->strings['Block Author'] = 'احجب المدون';

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Joan Bar <friendica@tutanota.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2019-10-14 11:50+0000\n"
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Amaga el contingut de l'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica"
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL de perfil separats per comes:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Desa la configuració"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "S'ha desat la configuració de BLOCKEM."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Usuari filtrat:%s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Desbloca l'autor"
#: blockem.php:204
msgid "Block Author"
msgstr "Autor de bloc"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "S'ha actualitzat la configuració de blockem"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ca")) {
function string_plural_select_ca($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Amaga el contingut de l\'usuari mitjançant la publicació col·lapsada. També substitueix el seu avatar per una imatge genèrica';
$a->strings['Comma separated profile URLS:'] = 'URL de perfil separats per comes:';
$a->strings['Save Settings'] = 'Desa la configuració';
$a->strings['BLOCKEM Settings saved.'] = 'S\'ha desat la configuració de BLOCKEM.';
$a->strings['Filtered user: %s'] = 'Usuari filtrat:%s';
$a->strings['Unblock Author'] = 'Desbloca l\'autor';
$a->strings['Block Author'] = 'Autor de bloc';
$a->strings['blockem settings updated'] = 'S\'ha actualitzat la configuració de blockem';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2018-08-18 12:25+0000\n"
"Last-Translator: Aditoo\n"
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL adresy profilů, oddělené čárkami:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Uložit nastavení"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "Nastavení BLOCKEM uložena."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Filtrovaný uživatel: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Odblokovat autora"
#: blockem.php:204
msgid "Block Author"
msgstr "Zablokovat autora"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "nastavení blockem aktualizována"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skrývá uživatelský obsah zabalením příspěvků. Navíc nahrazuje avatar generickým obrázkem.';
$a->strings['Comma separated profile URLS:'] = 'URL adresy profilů, oddělené čárkami:';
$a->strings['Save Settings'] = 'Uložit nastavení';
$a->strings['BLOCKEM Settings saved.'] = 'Nastavení BLOCKEM uložena.';
$a->strings['Filtered user: %s'] = 'Filtrovaný uživatel: %s';
$a->strings['Unblock Author'] = 'Odblokovat autora';
$a->strings['Block Author'] = 'Zablokovat autora';
$a->strings['blockem settings updated'] = 'nastavení blockem aktualizována';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Anton <dev@atjn.dk>, 2022
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da_DK\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Kommasepareret liste over profil-URL's:"
#: blockem.php:45
msgid "Blockem"
msgstr "Blokdem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Filtreret bruger: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Fjern blokering af forfatter"
#: blockem.php:185
msgid "Block Author"
msgstr "Blokér forfatter"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_da_dk")) {
function string_plural_select_da_dk($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Skjul brugers indhold ved at kollapse deres opslag. Erstatter også deres avatar med et generisk billede.';
$a->strings['Comma separated profile URLS:'] = 'Kommasepareret liste over profil-URL\'s:';
$a->strings['Blockem'] = 'Blokdem';
$a->strings['Filtered user: %s'] = 'Filtreret bruger: %s';
$a->strings['Unblock Author'] = 'Fjern blokering af forfatter';
$a->strings['Block Author'] = 'Blokér forfatter';

View file

@ -1,50 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Andreas H., 2018
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018
# Ulf Rompe <transifex.com@rompe.org>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
"Last-Translator: Transifex Bot <>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Komma-separierte Liste von Profil-URLs"
#: blockem.php:45
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Gefilterte Person: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Autor freischalten"
#: blockem.php:185
msgid "Block Author"
msgstr "Autor blockieren"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbirgt Inhalte von Benutzern durch Zusammenklappen der Beiträge. Des Weiteren wird das Profilbild durch einen generischen Avatar ersetzt.';
$a->strings['Comma separated profile URLS:'] = 'Komma-separierte Liste von Profil-URLs';
$a->strings['Blockem'] = 'Blockem';
$a->strings['Filtered user: %s'] = 'Gefilterte Person: %s';
$a->strings['Unblock Author'] = 'Autor freischalten';
$a->strings['Block Author'] = 'Autor blockieren';

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-09 13:00+0100\n"
"PO-Revision-Date: 2018-03-15 14:10+0000\n"
"Last-Translator: Andy H3 <andy@hubup.pro>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/Friendica/friendica/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:51 blockem.php:55
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:59
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
#: blockem.php:60
msgid "Comma separated profile URLS:"
msgstr "Comma separated profile URLs:"
#: blockem.php:64
msgid "Save Settings"
msgstr "Save settings"
#: blockem.php:77
msgid "BLOCKEM Settings saved."
msgstr "Blockem settings saved."
#: blockem.php:140
#, php-format
msgid "Hidden content by %s - Click to open/close"
msgstr "Hidden content by %s - Reveal/hide"
#: blockem.php:193
msgid "Unblock Author"
msgstr "Unblock author"
#: blockem.php:195
msgid "Block Author"
msgstr "Block author"
#: blockem.php:227
msgid "blockem settings updated"
msgstr "Blockem settings updated"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_gb")) {
function string_plural_select_en_gb($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
$a->strings['Comma separated profile URLS:'] = 'Comma separated profile URLs:';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
$a->strings['Hidden content by %s - Click to open/close'] = 'Hidden content by %s - Reveal/hide';
$a->strings['Unblock Author'] = 'Unblock author';
$a->strings['Block Author'] = 'Block author';
$a->strings['blockem settings updated'] = 'Blockem settings updated';

View file

@ -1,61 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Adam Clark <adam@isurf.ca>, 2018
# Andy H3 <andy@hubup.pro>, 2018
# R C <miqrogroove@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
"PO-Revision-Date: 2018-06-13 02:40+0000\n"
"Last-Translator: R C <miqrogroove@gmail.com>\n"
"Language-Team: English (United States) (http://www.transifex.com/Friendica/friendica/language/en_US/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_US\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:52 blockem.php:56
msgid "\"Blockem\""
msgstr "Blockem"
#: blockem.php:60
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Hides user's content by collapsing posts. Also replaces their avatar with generic image."
#: blockem.php:61
msgid "Comma separated profile URLS:"
msgstr "Comma-separated profile URLs:"
#: blockem.php:65
msgid "Save Settings"
msgstr "Save settings"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Blockem settings saved."
#: blockem.php:136
#, php-format
msgid "Filtered user: %s"
msgstr "Filtered user: %s"
#: blockem.php:189
msgid "Unblock Author"
msgstr "Unblock author"
#: blockem.php:191
msgid "Block Author"
msgstr "Block author"
#: blockem.php:223
msgid "blockem settings updated"
msgstr "Blockem settings updated"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_us")) {
function string_plural_select_en_us($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.';
$a->strings['Comma separated profile URLS:'] = 'Comma-separated profile URLs:';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem settings saved.';
$a->strings['Filtered user: %s'] = 'Filtered user: %s';
$a->strings['Unblock Author'] = 'Unblock author';
$a->strings['Block Author'] = 'Block author';
$a->strings['blockem settings updated'] = 'Blockem settings updated';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
$a->strings["Submit"] = "Sendi";
$a->strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
$a->strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
$a->strings["Unblock Author"] = "Malbloki Aŭtoron";
$a->strings["Block Author"] = "Bloki Aŭtoron";
$a->strings["blockem settings updated"] = "Ĝisdatigis la blockem agordojn";

View file

@ -1,53 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Albert, 2018
# Senex Petrovic <javierruizo@hotmail.com>, 2021
# Tupambae.org, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-04-01 09:45+0000\n"
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:42 blockem.php:46
msgid "Blockem"
msgstr "Blockem (Bloquealos)"
#: blockem.php:50
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica."
#: blockem.php:51
msgid "Comma separated profile URLS:"
msgstr "URLs de perfil separadas por comas:"
#: blockem.php:55
msgid "Save Settings"
msgstr "Guardar configuración"
#: blockem.php:131
#, php-format
msgid "Filtered user: %s"
msgstr "Usuario filtrado: %s"
#: blockem.php:190
msgid "Unblock Author"
msgstr "Desbloquear autor"
#: blockem.php:192
msgid "Block Author"
msgstr "Bloquear autor"

View file

@ -1,14 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem (Bloquealos)';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Oculta el contenido del usuario al colapsar las publicaciones. También reemplaza su avatar con una imagen genérica.';
$a->strings['Comma separated profile URLS:'] = 'URLs de perfil separadas por comas:';
$a->strings['Save Settings'] = 'Guardar configuración';
$a->strings['Filtered user: %s'] = 'Usuario filtrado: %s';
$a->strings['Unblock Author'] = 'Desbloquear autor';
$a->strings['Block Author'] = 'Bloquear autor';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-04-01 11:11-0400\n"
"PO-Revision-Date: 2018-04-18 14:44+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:52 blockem.php:56
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:60
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr ""
#: blockem.php:61
msgid "Comma separated profile URLS:"
msgstr "Profiilien URL-osoitteet pilkulla erotettuina:"
#: blockem.php:65
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Blockem -asetukset tallennettu"
#: blockem.php:136
#, php-format
msgid "Filtered user: %s"
msgstr "Suodatettu käyttäjä: %s"
#: blockem.php:189
msgid "Unblock Author"
msgstr "Poista kirjoittaja estolistalta"
#: blockem.php:191
msgid "Block Author"
msgstr "Lisää kirjoittaja estolistalle"
#: blockem.php:223
msgid "blockem settings updated"
msgstr "blockem -asetukset päivitetty"

View file

@ -1,15 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Comma separated profile URLS:'] = 'Profiilien URL-osoitteet pilkulla erotettuina:';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['BLOCKEM Settings saved.'] = 'Blockem -asetukset tallennettu';
$a->strings['Filtered user: %s'] = 'Suodatettu käyttäjä: %s';
$a->strings['Unblock Author'] = 'Poista kirjoittaja estolistalta';
$a->strings['Block Author'] = 'Lisää kirjoittaja estolistalle';
$a->strings['blockem settings updated'] = 'blockem -asetukset päivitetty';

View file

@ -1,50 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
# Marie Olive <lacellule101@gmail.com>, 2018
# StefOfficiel <pichard.stephane@free.fr>, 2015
# Vladimir Núñez <lapoubelle111@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Vladimir Núñez <lapoubelle111@gmail.com>, 2018\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Cache le contenu de l'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "URLs de profil séparées par des virgules:"
#: blockem.php:45
msgid "Blockem"
msgstr "Bloquez-les"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Utilisateur filtré:%s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Débloquer l'Auteur"
#: blockem.php:185
msgid "Block Author"
msgstr "Bloquer l'Auteur"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
$n = intval($n);
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Cache le contenu de l\'utilisateur en contractant les publications. Remplace aussi leur avatar par une image générique.';
$a->strings['Comma separated profile URLS:'] = 'URLs de profil séparées par des virgules:';
$a->strings['Blockem'] = 'Bloquez-les';
$a->strings['Filtered user: %s'] = 'Utilisateur filtré:%s';
$a->strings['Unblock Author'] = 'Débloquer l\'Auteur';
$a->strings['Block Author'] = 'Bloquer l\'Auteur';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Balázs Úr, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Balázs Úr, 2020\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Profil URL-ek vesszővel elválasztva:"
#: blockem.php:45
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Kiszűrt felhasználó: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Szerző tiltásának feloldása"
#: blockem.php:185
msgid "Block Author"
msgstr "Szerző tiltása"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Elrejti a felhasználók tartalmát a bejegyzések összecsukásával. Ezenkívül lecseréli a profilképeiket egy általános képre.';
$a->strings['Comma separated profile URLS:'] = 'Profil URL-ek vesszővel elválasztva:';
$a->strings['Blockem'] = 'Blockem';
$a->strings['Filtered user: %s'] = 'Kiszűrt felhasználó: %s';
$a->strings['Unblock Author'] = 'Szerző tiltásának feloldása';
$a->strings['Block Author'] = 'Szerző tiltása';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" stillingar";
$a->strings["Comma separated profile URLS to block"] = "Banna lista af forsíðum (komma á milli)";
$a->strings["Submit"] = "Senda inn";
$a->strings["BLOCKEM Settings saved."] = "BLOCKEM stillingar vistaðar.";
$a->strings["Blocked %s - Click to open/close"] = "%s sett í straff - Smella til að taka úr/setja á";
$a->strings["Unblock Author"] = "Leyfa notanda";
$a->strings["Block Author"] = "Banna notanda";
$a->strings["blockem settings updated"] = "";

View file

@ -1,59 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014,2018-2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2019-03-11 14:21+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un'immagine generica."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL profili separati da virgola:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "Impostazioni BLOCKEM salvate."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Utente filtrato: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Sblocca autore"
#: blockem.php:204
msgid "Block Author"
msgstr "Blocca autore"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "Impostazioni 'blockem' aggiornate."

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Nascondi il contenuto degli utenti collassando i messaggi. Sostituisce anche gli avatar con un\'immagine generica.';
$a->strings['Comma separated profile URLS:'] = 'URL profili separati da virgola:';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['BLOCKEM Settings saved.'] = 'Impostazioni BLOCKEM salvate.';
$a->strings['Filtered user: %s'] = 'Utente filtrato: %s';
$a->strings['Unblock Author'] = 'Sblocca autore';
$a->strings['Block Author'] = 'Blocca autore';
$a->strings['blockem settings updated'] = 'Impostazioni \'blockem\' aggiornate.';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "";
$a->strings["Comma separated profile URLS to block"] = "";
$a->strings["Submit"] = "Lagre";
$a->strings["BLOCKEM Settings saved."] = "";
$a->strings["Blocked %s - Click to open/close"] = "";
$a->strings["Unblock Author"] = "";
$a->strings["Block Author"] = "";
$a->strings["blockem settings updated"] = "";

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# AgnesElisa <agneselisa@disroot.org>, 2018
# Jeroen De Meerleer <me@jeroened.be>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2018-08-24 13:49+0000\n"
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "Profiel URLs (kommagescheiden):"
#: blockem.php:67
msgid "Save Settings"
msgstr "Instellingen opslaan"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "BLOCKEM instellingen opgeslagen."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Gefilterde gebruiker: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Deblokkeer Auteur"
#: blockem.php:204
msgid "Block Author"
msgstr "Auteur blokkeren"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "blockem instellingen opgeslagen"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Verbergt de inhoud van het bericht van de gebruiker. Daarnaast vervangt het de avatar door een standaardafbeelding.';
$a->strings['Comma separated profile URLS:'] = 'Profiel URLs (kommagescheiden):';
$a->strings['Save Settings'] = 'Instellingen opslaan';
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM instellingen opgeslagen.';
$a->strings['Filtered user: %s'] = 'Gefilterde gebruiker: %s';
$a->strings['Unblock Author'] = 'Deblokkeer Auteur';
$a->strings['Block Author'] = 'Auteur blokkeren';
$a->strings['blockem settings updated'] = 'blockem instellingen opgeslagen';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Waldemar Stoczkowski, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2014-06-22 11:20+0000\n"
"Last-Translator: Waldemar Stoczkowski, 2018\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Rozdzielone przecinkami adresy URL profilu:"
#: blockem.php:45
msgid "Blockem"
msgstr "Zablokowanie"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Użytkownik filtrowany: %s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Odblokuj autora"
#: blockem.php:185
msgid "Block Author"
msgstr "Zablokuj autora"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Ukrywa zawartość użytkownika, zwijając posty. Zastępuje również awatar wygenerowanym obrazem.';
$a->strings['Comma separated profile URLS:'] = 'Rozdzielone przecinkami adresy URL profilu:';
$a->strings['Blockem'] = 'Zablokowanie';
$a->strings['Filtered user: %s'] = 'Użytkownik filtrowany: %s';
$a->strings['Unblock Author'] = 'Odblokuj autora';
$a->strings['Block Author'] = 'Zablokuj autora';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "Configurações \"Blockem\"";
$a->strings["Comma separated profile URLS to block"] = "URLS de perfis separados por vírgulas a serem bloqueados";
$a->strings["Submit"] = "Enviar";
$a->strings["BLOCKEM Settings saved."] = "Configurações BLOCKEM armazenadas.";
$a->strings["Blocked %s - Click to open/close"] = "Bloqueado %s - Clique para abrir/fechar";
$a->strings["Unblock Author"] = "Desbloqueie Autor";
$a->strings["Block Author"] = "Bloqueie Autor";
$a->strings["blockem settings updated"] = "configurações blockem atualizadas";

View file

@ -1,52 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-07-08 11:43+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: blockem.php:53 blockem.php:57
msgid "\"Blockem\""
msgstr "\"Blockem\""
#: blockem.php:61
msgid "Comma separated profile URLS to block"
msgstr "Adresele URL de profil, de blocat, separate prin virgulă"
#: blockem.php:65
msgid "Save Settings"
msgstr "Salvare Configurări"
#: blockem.php:78
msgid "BLOCKEM Settings saved."
msgstr "Configurările BLOCKEM au fost salvate."
#: blockem.php:142
#, php-format
msgid "Blocked %s - Click to open/close"
msgstr "%s Blocate - Apăsați pentru a deschide/închide"
#: blockem.php:197
msgid "Unblock Author"
msgstr "Deblocare Autor"
#: blockem.php:199
msgid "Block Author"
msgstr "Blocare Autor"
#: blockem.php:231
msgid "blockem settings updated"
msgstr "Configurările blockem au fost actualizate"

View file

@ -1,15 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['"Blockem"'] = '"Blockem"';
$a->strings['Comma separated profile URLS to block'] = 'Adresele URL de profil, de blocat, separate prin virgulă';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['BLOCKEM Settings saved.'] = 'Configurările BLOCKEM au fost salvate.';
$a->strings['Blocked %s - Click to open/close'] = '%s Blocate - Apăsați pentru a deschide/închide';
$a->strings['Unblock Author'] = 'Deblocare Autor';
$a->strings['Block Author'] = 'Blocare Autor';
$a->strings['blockem settings updated'] = 'Configurările blockem au fost actualizate';

View file

@ -1,60 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Alexander An <ravnina@gmail.com>, 2020
# Stanislav N. <pztrn@pztrn.name>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:23+0200\n"
"PO-Revision-Date: 2020-04-23 14:13+0000\n"
"Last-Translator: Alexander An <ravnina@gmail.com>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: blockem.php:54 blockem.php:58
msgid "Blockem"
msgstr "Blockem"
#: blockem.php:62
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию."
#: blockem.php:63
msgid "Comma separated profile URLS:"
msgstr "URL профилей, разделенные запятыми:"
#: blockem.php:67
msgid "Save Settings"
msgstr "Сохранить настройки"
#: blockem.php:81
msgid "BLOCKEM Settings saved."
msgstr "BLOCKEM Настройки сохранены."
#: blockem.php:143
#, php-format
msgid "Filtered user: %s"
msgstr "Отфильтрованный пользователь: %s"
#: blockem.php:202
msgid "Unblock Author"
msgstr "Разблокировать автора"
#: blockem.php:204
msgid "Block Author"
msgstr "Блокировать автора"
#: blockem.php:244
msgid "blockem settings updated"
msgstr "Настройки Blockem обновлены"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
$n = intval($n);
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Blockem'] = 'Blockem';
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Скрыть контент пользователя. Также заменяет его аватар изображением по-умолчанию.';
$a->strings['Comma separated profile URLS:'] = 'URL профилей, разделенные запятыми:';
$a->strings['Save Settings'] = 'Сохранить настройки';
$a->strings['BLOCKEM Settings saved.'] = 'BLOCKEM Настройки сохранены.';
$a->strings['Filtered user: %s'] = 'Отфильтрованный пользователь: %s';
$a->strings['Unblock Author'] = 'Разблокировать автора';
$a->strings['Block Author'] = 'Блокировать автора';
$a->strings['blockem settings updated'] = 'Настройки Blockem обновлены';

View file

@ -1,47 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Bjoessi <torbjorn.andersson@syte.se>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:13-0500\n"
"PO-Revision-Date: 2021-12-22 15:27+0000\n"
"Last-Translator: Transifex Bot <>\n"
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blockem.php:39
msgid ""
"Hides user's content by collapsing posts. Also replaces their avatar with "
"generic image."
msgstr "Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild."
#: blockem.php:40
msgid "Comma separated profile URLS:"
msgstr "Kommaseparerade profiladresser:"
#: blockem.php:45
msgid "Blockem"
msgstr "BLOCKEM"
#: blockem.php:120
#, php-format
msgid "Filtered user: %s"
msgstr "Filtrerat på användare:%s"
#: blockem.php:183
msgid "Unblock Author"
msgstr "Avblockera författare"
#: blockem.php:185
msgid "Block Author"
msgstr "Blockera författare"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Hides user\'s content by collapsing posts. Also replaces their avatar with generic image.'] = 'Döljer användares inlägg genom sammanslagning nedåt. Användarens profilbild ersätts med en standardbild.';
$a->strings['Comma separated profile URLS:'] = 'Kommaseparerade profiladresser:';
$a->strings['Blockem'] = 'BLOCKEM';
$a->strings['Filtered user: %s'] = 'Filtrerat på användare:%s';
$a->strings['Unblock Author'] = 'Avblockera författare';
$a->strings['Block Author'] = 'Blockera författare';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "「Blockem」配置";
$a->strings["Comma separated profile URLS to block"] = "逗号分简介URL为栏";
$a->strings["Submit"] = "提交";
$a->strings["BLOCKEM Settings saved."] = "「Blockem」配置保存了。";
$a->strings["Blocked %s - Click to open/close"] = "%s拦了点击为开关";
$a->strings["Unblock Author"] = "不拦作家";
$a->strings["Block Author"] = "拦作家";
$a->strings["blockem settings updated"] = "blockem设置更新了";

View file

@ -1 +0,0 @@
{{include file="field_textarea.tpl" field=$words}}

View file

@ -1,16 +0,0 @@
#blogger-enable-label, #blogger-username-label, #blogger-password-label, #blogger-bydefault-label, #blogger-blog-label {
float: left;
width: 200px;
margin-top: 10px;
}
#blogger-checkbox, #blogger-username, #blogger-password, #blogger-bydefault, #blogger-blog {
float: left;
margin-top: 10px;
}
#blogger-submit {
margin-top: 15px;
}

View file

@ -1,216 +0,0 @@
<?php
/**
* Name: Blogger Post Connector
* Description: Post to Blogger (or anything else which uses blogger XMLRPC API)
* Version: 1.0
* Status: Unsupported
*/
use Friendica\App;
use Friendica\Content\Text\BBCode;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\DI;
use Friendica\Util\XML;
function blogger_install()
{
Hook::register('hook_fork', 'addon/blogger/blogger.php', 'blogger_hook_fork');
Hook::register('post_local', 'addon/blogger/blogger.php', 'blogger_post_local');
Hook::register('notifier_normal', 'addon/blogger/blogger.php', 'blogger_send');
Hook::register('jot_networks', 'addon/blogger/blogger.php', 'blogger_jot_nets');
Hook::register('connector_settings', 'addon/blogger/blogger.php', 'blogger_settings');
Hook::register('connector_settings_post', 'addon/blogger/blogger.php', 'blogger_settings_post');
}
function blogger_jot_nets(App $a, array &$jotnets_fields)
{
if (!local_user()) {
return;
}
if (DI::pConfig()->get(local_user(), 'blogger', 'post')) {
$jotnets_fields[] = [
'type' => 'checkbox',
'field' => [
'blogger_enable',
DI::l10n()->t('Post to blogger'),
DI::pConfig()->get(local_user(), 'blogger', 'post_by_default')
]
];
}
}
function blogger_settings(App $a, &$s)
{
if (! local_user()) {
return;
}
/* Add our stylesheet to the page so we can make our settings look nice */
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/blogger/blogger.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variables */
$enabled = DI::pConfig()->get(local_user(), 'blogger', 'post');
$checked = (($enabled) ? ' checked="checked" ' : '');
$css = (($enabled) ? '' : '-disabled');
$def_enabled = DI::pConfig()->get(local_user(), 'blogger', 'post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : '');
$bl_username = DI::pConfig()->get(local_user(), 'blogger', 'bl_username');
$bl_password = DI::pConfig()->get(local_user(), 'blogger', 'bl_password');
$bl_blog = DI::pConfig()->get(local_user(), 'blogger', 'bl_blog');
/* Add some HTML to the existing form */
$s .= '<span id="settings_blogger_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. DI::l10n()->t('Blogger Export').'</h3>';
$s .= '</span>';
$s .= '<div id="settings_blogger_expanded" class="settings-block" style="display: none;">';
$s .= '<span class="fakelink" onclick="openClose(\'settings_blogger_expanded\'); openClose(\'settings_blogger_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/blogger.png" /><h3 class="connector">'. DI::l10n()->t('Blogger Export').'</h3>';
$s .= '</span>';
$s .= '<div id="blogger-enable-wrapper">';
$s .= '<label id="blogger-enable-label" for="blogger-checkbox">' . DI::l10n()->t('Enable Blogger Post Addon') . '</label>';
$s .= '<input id="blogger-checkbox" type="checkbox" name="blogger" value="1" ' . $checked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-username-wrapper">';
$s .= '<label id="blogger-username-label" for="blogger-username">' . DI::l10n()->t('Blogger username') . '</label>';
$s .= '<input id="blogger-username" type="text" name="bl_username" value="' . $bl_username . '" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-password-wrapper">';
$s .= '<label id="blogger-password-label" for="blogger-password">' . DI::l10n()->t('Blogger password') . '</label>';
$s .= '<input id="blogger-password" type="password" name="bl_password" value="' . $bl_password . '" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-blog-wrapper">';
$s .= '<label id="blogger-blog-label" for="blogger-blog">' . DI::l10n()->t('Blogger API URL') . '</label>';
$s .= '<input id="blogger-blog" type="text" name="bl_blog" value="' . $bl_blog . '" />';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="blogger-bydefault-wrapper">';
$s .= '<label id="blogger-bydefault-label" for="blogger-bydefault">' . DI::l10n()->t('Post to Blogger by default') . '</label>';
$s .= '<input id="blogger-bydefault" type="checkbox" name="bl_bydefault" value="1" ' . $def_checked . '/>';
$s .= '</div><div class="clear"></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="blogger-submit" name="blogger-submit" class="settings-submit" value="' . DI::l10n()->t('Save Settings') . '" /></div></div>';
}
function blogger_settings_post(App $a, array &$b)
{
if (!empty($_POST['blogger-submit'])) {
DI::pConfig()->set(local_user(), 'blogger', 'post', $_POST['blogger'] ?? false);
DI::pConfig()->set(local_user(), 'blogger', 'post_by_default', $_POST['bl_bydefault'] ?? false);
DI::pConfig()->set(local_user(), 'blogger', 'bl_username', trim($_POST['bl_username']));
DI::pConfig()->set(local_user(), 'blogger', 'bl_password', trim($_POST['bl_password']));
DI::pConfig()->set(local_user(), 'blogger', 'bl_blog', trim($_POST['bl_blog']));
}
}
function blogger_hook_fork(App &$a, array &$b)
{
if ($b['name'] != 'notifier_normal') {
return;
}
$post = $b['data'];
if ($post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) ||
!strstr($post['postopts'], 'blogger') || ($post['parent'] != $post['id'])) {
$b['execute'] = false;
return;
}
}
function blogger_post_local(App $a, array &$b)
{
// This can probably be changed to allow editing by pointing to a different API endpoint
if ($b['edit']) {
return;
}
if (!local_user() || (local_user() != $b['uid'])) {
return;
}
if ($b['private'] || $b['parent']) {
return;
}
$bl_post = intval(DI::pConfig()->get(local_user(), 'blogger', 'post'));
$bl_enable = (($bl_post && !empty($_REQUEST['blogger_enable'])) ? intval($_REQUEST['blogger_enable']) : 0);
if ($b['api_source'] && intval(DI::pConfig()->get(local_user(), 'blogger', 'post_by_default'))) {
$bl_enable = 1;
}
if (!$bl_enable) {
return;
}
if (strlen($b['postopts'])) {
$b['postopts'] .= ',';
}
$b['postopts'] .= 'blogger';
}
function blogger_send(App $a, array &$b)
{
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return;
}
if (! strstr($b['postopts'], 'blogger')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
$bl_username = XML::escape(DI::pConfig()->get($b['uid'], 'blogger', 'bl_username'));
$bl_password = XML::escape(DI::pConfig()->get($b['uid'], 'blogger', 'bl_password'));
$bl_blog = DI::pConfig()->get($b['uid'], 'blogger', 'bl_blog');
if ($bl_username && $bl_password && $bl_blog) {
$title = '<title>' . (($b['title']) ? $b['title'] : DI::l10n()->t('Post from Friendica')) . '</title>';
$post = $title . BBCode::convertForUriId($b['uri-id'], $b['body'], BBCode::CONNECTORS);
$post = XML::escape($post);
$xml = <<< EOT
<?xml version=\"1.0\" encoding=\"utf-8\"?>
<methodCall>
<methodName>blogger.newPost</methodName>
<params>
<param><value><string/></value></param>
<param><value><string/></value></param>
<param><value><string>$bl_username</string></value></param>
<param><value><string>$bl_password</string></value></param>
<param><value><string>$post</string></value></param>
<param><value><int>1</int></value></param>
</params>
</methodCall>
EOT;
Logger::debug('blogger: data: ' . $xml);
if ($bl_blog !== 'test') {
$x = DI::httpClient()->post($bl_blog, $xml)->getBody();
}
Logger::info('posted to blogger: ' . (($x) ? $x : ''));
}
}

View file

@ -1,54 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: blogger.php:37
msgid "Post to blogger"
msgstr ""
#: blogger.php:71 blogger.php:75
msgid "Blogger Export"
msgstr ""
#: blogger.php:79
msgid "Enable Blogger Post Addon"
msgstr ""
#: blogger.php:84
msgid "Blogger username"
msgstr ""
#: blogger.php:89
msgid "Blogger password"
msgstr ""
#: blogger.php:94
msgid "Blogger API URL"
msgstr ""
#: blogger.php:99
msgid "Post to Blogger by default"
msgstr ""
#: blogger.php:104
msgid "Save Settings"
msgstr ""
#: blogger.php:188
msgid "Post from Friendica"
msgstr ""

View file

@ -1,57 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# abidin toumi <abidin24@tutanota.com>, 2021
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-10-29 08:18+0000\n"
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: blogger.php:37
msgid "Post to blogger"
msgstr "شارك على بلوغر"
#: blogger.php:71 blogger.php:75
msgid "Blogger Export"
msgstr "تصدير بلوغر"
#: blogger.php:79
msgid "Enable Blogger Post Addon"
msgstr "تفعيل إضافة مشاركة بلوغر"
#: blogger.php:84
msgid "Blogger username"
msgstr "اسم مستخدم بلوغر"
#: blogger.php:89
msgid "Blogger password"
msgstr "كلمة السر بلوغر"
#: blogger.php:94
msgid "Blogger API URL"
msgstr "عنوان URL لواجهة برمجة تطبيقات API بلوغر"
#: blogger.php:99
msgid "Post to Blogger by default"
msgstr "شارك في بلوغر إفتراضيا"
#: blogger.php:104
msgid "Save Settings"
msgstr "احفظ الإعدادات"
#: blogger.php:188
msgid "Post from Friendica"
msgstr "شارك من فرينديكا Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Post to blogger'] = 'شارك على بلوغر';
$a->strings['Blogger Export'] = 'تصدير بلوغر';
$a->strings['Enable Blogger Post Addon'] = 'تفعيل إضافة مشاركة بلوغر';
$a->strings['Blogger username'] = 'اسم مستخدم بلوغر';
$a->strings['Blogger password'] = 'كلمة السر بلوغر';
$a->strings['Blogger API URL'] = 'عنوان URL لواجهة برمجة تطبيقات API بلوغر';
$a->strings['Post to Blogger by default'] = 'شارك في بلوغر إفتراضيا';
$a->strings['Save Settings'] = 'احفظ الإعدادات';
$a->strings['Post from Friendica'] = 'شارك من فرينديكا Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Joan Bar <friendica@tutanota.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2019-10-14 11:51+0000\n"
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Publicar a blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Exportació de Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Habilita Addon Post de Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nom d'usuari de Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Contrasenya de Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "URL de l'API de Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Publica a Blogger de manera predeterminada"
#: blogger.php:108
msgid "Save Settings"
msgstr "Desa la configuració"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Publica de Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ca")) {
function string_plural_select_ca($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Publicar a blogger';
$a->strings['Blogger Export'] = 'Exportació de Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Habilita Addon Post de Blogger';
$a->strings['Blogger username'] = 'Nom d\'usuari de Blogger';
$a->strings['Blogger password'] = 'Contrasenya de Blogger';
$a->strings['Blogger API URL'] = 'URL de l\'API de Blogger';
$a->strings['Post to Blogger by default'] = 'Publica a Blogger de manera predeterminada';
$a->strings['Save Settings'] = 'Desa la configuració';
$a->strings['Post from Friendica'] = 'Publica de Friendica';

View file

@ -1,57 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-06-07 12:31+0000\n"
"Last-Translator: Aditoo\n"
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Poslat na blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Blogger Export"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Povolit doplněk Blogger Post"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger uživatelské jméno"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger heslo"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Defaultně zaslat na Blogger"
#: blogger.php:108
msgid "Save Settings"
msgstr "Uložit Nastavení"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Příspěvek z Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
}}
$a->strings['Post to blogger'] = 'Poslat na blogger';
$a->strings['Blogger Export'] = 'Blogger Export';
$a->strings['Enable Blogger Post Addon'] = 'Povolit doplněk Blogger Post';
$a->strings['Blogger username'] = 'Blogger uživatelské jméno';
$a->strings['Blogger password'] = 'Blogger heslo';
$a->strings['Blogger API URL'] = 'Blogger API URL';
$a->strings['Post to Blogger by default'] = 'Defaultně zaslat na Blogger';
$a->strings['Save Settings'] = 'Uložit Nastavení';
$a->strings['Post from Friendica'] = 'Příspěvek z Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# bavatar <tobias.diekershoff@gmx.net>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-06-29 08:19+0000\n"
"Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/projects/p/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Auf Blogger posten"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Blogger Export"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Blogger-Post-Addon aktivieren"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger-Benutzername"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger-Passwort"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger-API-URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Standardmäßig auf Blogger posten"
#: blogger.php:108
msgid "Save Settings"
msgstr "Einstellungen speichern"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Post via Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Auf Blogger posten';
$a->strings['Blogger Export'] = 'Blogger Export';
$a->strings['Enable Blogger Post Addon'] = 'Blogger-Post-Addon aktivieren';
$a->strings['Blogger username'] = 'Blogger-Benutzername';
$a->strings['Blogger password'] = 'Blogger-Passwort';
$a->strings['Blogger API URL'] = 'Blogger-API-URL';
$a->strings['Post to Blogger by default'] = 'Standardmäßig auf Blogger posten';
$a->strings['Save Settings'] = 'Einstellungen speichern';
$a->strings['Post from Friendica'] = 'Post via Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-04-08 19:53+0000\n"
"Last-Translator: Kris\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/Friendica/friendica/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Post to Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr ""
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Enable Blogger Post Addon"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger username"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger password"
#: blogger.php:97
msgid "Blogger API URL"
msgstr ""
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Post to Blogger by default"
#: blogger.php:108
msgid "Save Settings"
msgstr "Save Settings"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Post from Friendica"

View file

@ -1,14 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_gb")) {
function string_plural_select_en_gb($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Post to Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Enable Blogger Post Addon';
$a->strings['Blogger username'] = 'Blogger username';
$a->strings['Blogger password'] = 'Blogger password';
$a->strings['Post to Blogger by default'] = 'Post to Blogger by default';
$a->strings['Save Settings'] = 'Save Settings';
$a->strings['Post from Friendica'] = 'Post from Friendica';

View file

@ -1,11 +0,0 @@
<?php
$a->strings["Post to blogger"] = "Afiŝi al blogger";
$a->strings["Blogger Post Settings"] = "Agordo pri Blogger Afiŝoj";
$a->strings["Enable Blogger Post Addon"] = "Ŝalti la Blogger afiŝo kromprogramon";
$a->strings["Blogger username"] = "Blogger uzantonomo";
$a->strings["Blogger password"] = "Blogger pasvorto";
$a->strings["Blogger API URL"] = "Blogger API URL";
$a->strings["Post to Blogger by default"] = "Defaŭlte afiŝi al Blogger";
$a->strings["Submit"] = "Sendi";
$a->strings["Post from Friendica"] = "Afiŝo de Friendica";

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Albert, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-21 14:27+0000\n"
"Last-Translator: Albert\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Entrada para blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Esportar Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Habilitar el complemento de publicación de Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nombre de usuario de Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Contraseña de Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "URL API de Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Entrada a Blogger por defecto"
#: blogger.php:108
msgid "Save Settings"
msgstr "Guardar ajustes"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Entrada desde Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Entrada para blogger';
$a->strings['Blogger Export'] = 'Esportar Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Habilitar el complemento de publicación de Blogger';
$a->strings['Blogger username'] = 'Nombre de usuario de Blogger';
$a->strings['Blogger password'] = 'Contraseña de Blogger';
$a->strings['Blogger API URL'] = 'URL API de Blogger';
$a->strings['Post to Blogger by default'] = 'Entrada a Blogger por defecto';
$a->strings['Save Settings'] = 'Guardar ajustes';
$a->strings['Post from Friendica'] = 'Entrada desde Friendica';

View file

@ -1,57 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-04-17 19:18+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Julkaise Bloggerissa"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Blogger Export"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Ota Blogger-viestilisäosa käyttöön"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger -käyttäjätunnus"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger -salasana"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL-osoite"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Julkaise Bloggeriin oletuksena"
#: blogger.php:108
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Julkaise Friendicasta"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Julkaise Bloggerissa';
$a->strings['Blogger Export'] = 'Blogger Export';
$a->strings['Enable Blogger Post Addon'] = 'Ota Blogger-viestilisäosa käyttöön';
$a->strings['Blogger username'] = 'Blogger -käyttäjätunnus';
$a->strings['Blogger password'] = 'Blogger -salasana';
$a->strings['Blogger API URL'] = 'Blogger API URL-osoite';
$a->strings['Post to Blogger by default'] = 'Julkaise Bloggeriin oletuksena';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['Post from Friendica'] = 'Julkaise Friendicasta';

View file

@ -1,58 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
# Marie Olive <lacellule101@gmail.com>, 2018
# RyDroid <inactive+RyDroid@transifex.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-11-13 12:44+0000\n"
"Last-Translator: Marie Olive <lacellule101@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Poster sur Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Export Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Activer l'extension de publication Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nom d'utilisateur Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Mot de passe Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "URL de l'API de Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Poster sur Blogger par défaut"
#: blogger.php:108
msgid "Save Settings"
msgstr "Sauvegarder les paramètres"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Publier depuis Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
$n = intval($n);
return intval($n > 1);
}}
$a->strings['Post to blogger'] = 'Poster sur Blogger';
$a->strings['Blogger Export'] = 'Export Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Activer l\'extension de publication Blogger';
$a->strings['Blogger username'] = 'Nom d\'utilisateur Blogger';
$a->strings['Blogger password'] = 'Mot de passe Blogger';
$a->strings['Blogger API URL'] = 'URL de l\'API de Blogger';
$a->strings['Post to Blogger by default'] = 'Poster sur Blogger par défaut';
$a->strings['Save Settings'] = 'Sauvegarder les paramètres';
$a->strings['Post from Friendica'] = 'Publier depuis Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Balázs Úr, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2020-12-23 00:44+0000\n"
"Last-Translator: Balázs Úr\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Beküldés a Bloggerre"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Blogger exportálás"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "A Blogger-beküldő bővítmény engedélyezése"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger felhasználónév"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger jelszó"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Beküldés a Bloggerre alapértelmezetten"
#: blogger.php:108
msgid "Save Settings"
msgstr "Beállítások mentése"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Bejegyzés a Friendicáról"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Beküldés a Bloggerre';
$a->strings['Blogger Export'] = 'Blogger exportálás';
$a->strings['Enable Blogger Post Addon'] = 'A Blogger-beküldő bővítmény engedélyezése';
$a->strings['Blogger username'] = 'Blogger felhasználónév';
$a->strings['Blogger password'] = 'Blogger jelszó';
$a->strings['Blogger API URL'] = 'Blogger API URL';
$a->strings['Post to Blogger by default'] = 'Beküldés a Bloggerre alapértelmezetten';
$a->strings['Save Settings'] = 'Beállítások mentése';
$a->strings['Post from Friendica'] = 'Bejegyzés a Friendicáról';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Sveinn í Felli <sv1@fellsnet.is>, 2016,2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-24 09:45+0000\n"
"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
"Language-Team: Icelandic (http://www.transifex.com/Friendica/friendica/language/is/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: is\n"
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Senda færslu á bloggara"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Flytja út blogg"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Virkja sendiviðbót fyrir blogg"
#: blogger.php:87
msgid "Blogger username"
msgstr "Notandanafn bloggara"
#: blogger.php:92
msgid "Blogger password"
msgstr "Aðgangsorð bloggara"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "API slóð bloggs"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Sjálfgefið láta færslur flæða inn á blogg"
#: blogger.php:108
msgid "Save Settings"
msgstr "Vista stillingar"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Færslur frá Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_is")) {
function string_plural_select_is($n){
$n = intval($n);
return intval($n % 10 != 1 || $n % 100 == 11);
}}
$a->strings['Post to blogger'] = 'Senda færslu á bloggara';
$a->strings['Blogger Export'] = 'Flytja út blogg';
$a->strings['Enable Blogger Post Addon'] = 'Virkja sendiviðbót fyrir blogg';
$a->strings['Blogger username'] = 'Notandanafn bloggara';
$a->strings['Blogger password'] = 'Aðgangsorð bloggara';
$a->strings['Blogger API URL'] = 'API slóð bloggs';
$a->strings['Post to Blogger by default'] = 'Sjálfgefið láta færslur flæða inn á blogg';
$a->strings['Save Settings'] = 'Vista stillingar';
$a->strings['Post from Friendica'] = 'Færslur frá Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014,2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-03-19 13:21+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Invia a Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Esporta Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Abilita il componente aggiuntivo di invio a Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nome utente Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Password Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Indirizzo API Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Invia sempre a Blogger"
#: blogger.php:108
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Messaggio da Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Invia a Blogger';
$a->strings['Blogger Export'] = 'Esporta Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Abilita il componente aggiuntivo di invio a Blogger';
$a->strings['Blogger username'] = 'Nome utente Blogger';
$a->strings['Blogger password'] = 'Password Blogger';
$a->strings['Blogger API URL'] = 'Indirizzo API Blogger';
$a->strings['Post to Blogger by default'] = 'Invia sempre a Blogger';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['Post from Friendica'] = 'Messaggio da Friendica';

View file

@ -1,11 +0,0 @@
<?php
$a->strings["Post to blogger"] = "";
$a->strings["Blogger Post Settings"] = "";
$a->strings["Enable Blogger Post Addon"] = "";
$a->strings["Blogger username"] = "";
$a->strings["Blogger password"] = "";
$a->strings["Blogger API URL"] = "";
$a->strings["Post to Blogger by default"] = "";
$a->strings["Submit"] = "Lagre";
$a->strings["Post from Friendica"] = "";

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# AgnesElisa <agneselisa@disroot.org>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-04-18 23:20+0000\n"
"Last-Translator: AgnesElisa <agneselisa@disroot.org>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Plaatsen op Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Blogger Exporteren"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Blogger Post Addon inschakelen"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger gebruikersnaam"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger wachtwoord"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Plaatsen op Blogger als standaard instellen"
#: blogger.php:108
msgid "Save Settings"
msgstr "Instellingen Opslaan"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Bericht plaatsen vanaf Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Plaatsen op Blogger';
$a->strings['Blogger Export'] = 'Blogger Exporteren';
$a->strings['Enable Blogger Post Addon'] = 'Blogger Post Addon inschakelen';
$a->strings['Blogger username'] = 'Blogger gebruikersnaam';
$a->strings['Blogger password'] = 'Blogger wachtwoord';
$a->strings['Blogger API URL'] = 'Blogger API URL';
$a->strings['Post to Blogger by default'] = 'Plaatsen op Blogger als standaard instellen';
$a->strings['Save Settings'] = 'Instellingen Opslaan';
$a->strings['Post from Friendica'] = 'Bericht plaatsen vanaf Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-08-04 10:57+0000\n"
"Last-Translator: Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Opublikuj w bloggerze"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Eksport Bloggera"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Włącz dodatek Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nazwa użytkownika Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Hasło Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Adres URL interfejsu API Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Opublikuj domyślnie na Blogger"
#: blogger.php:108
msgid "Save Settings"
msgstr "Zapisz ustawienia"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Post od Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Post to blogger'] = 'Opublikuj w bloggerze';
$a->strings['Blogger Export'] = 'Eksport Bloggera';
$a->strings['Enable Blogger Post Addon'] = 'Włącz dodatek Blogger';
$a->strings['Blogger username'] = 'Nazwa użytkownika Blogger';
$a->strings['Blogger password'] = 'Hasło Blogger';
$a->strings['Blogger API URL'] = 'Adres URL interfejsu API Blogger';
$a->strings['Post to Blogger by default'] = 'Opublikuj domyślnie na Blogger';
$a->strings['Save Settings'] = 'Zapisz ustawienia';
$a->strings['Post from Friendica'] = 'Post od Friendica';

View file

@ -1,57 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Beatriz Vital <vitalb@riseup.net>, 2016
# John Brazil, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2016-08-19 20:36+0000\n"
"Last-Translator: Beatriz Vital <vitalb@riseup.net>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/Friendica/friendica/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Publicar no Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Exportador Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Habilitar plug-in para publicar no Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Nome de usuário no Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Senha do Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "URL da API do Blogger"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Publicar no Blogger por padrão"
#: blogger.php:108
msgid "Save Settings"
msgstr "Salvar Configurações"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Postar a partir de Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_pt_br")) {
function string_plural_select_pt_br($n){
$n = intval($n);
return intval($n > 1);
}}
$a->strings['Post to blogger'] = 'Publicar no Blogger';
$a->strings['Blogger Export'] = 'Exportador Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Habilitar plug-in para publicar no Blogger';
$a->strings['Blogger username'] = 'Nome de usuário no Blogger';
$a->strings['Blogger password'] = 'Senha do Blogger';
$a->strings['Blogger API URL'] = 'URL da API do Blogger';
$a->strings['Post to Blogger by default'] = 'Publicar no Blogger por padrão';
$a->strings['Save Settings'] = 'Salvar Configurações';
$a->strings['Post from Friendica'] = 'Postar a partir de Friendica';

View file

@ -1,55 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-07-08 11:44+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Postați pe Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Export pe Blogger "
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Activare Modul Postare pe Blogger "
#: blogger.php:87
msgid "Blogger username"
msgstr "Utilizator Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Parolă Blogger "
#: blogger.php:97
msgid "Blogger API URL"
msgstr "URL Cheie API Blogger "
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Postați implicit pe Blogger"
#: blogger.php:108
msgid "Save Settings"
msgstr "Salvare Configurări"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Postați din Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['Post to blogger'] = 'Postați pe Blogger';
$a->strings['Blogger Export'] = 'Export pe Blogger ';
$a->strings['Enable Blogger Post Addon'] = 'Activare Modul Postare pe Blogger ';
$a->strings['Blogger username'] = 'Utilizator Blogger';
$a->strings['Blogger password'] = 'Parolă Blogger ';
$a->strings['Blogger API URL'] = 'URL Cheie API Blogger ';
$a->strings['Post to Blogger by default'] = 'Postați implicit pe Blogger';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['Post from Friendica'] = 'Postați din Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Stanislav N. <pztrn@pztrn.name>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-25 00:00+0000\n"
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Написать в Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Экспорт в Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Включить аддон репоста в Blogger"
#: blogger.php:87
msgid "Blogger username"
msgstr "Имя пользователя Blogger"
#: blogger.php:92
msgid "Blogger password"
msgstr "Пароль Blogger"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Отправлять в Blogger по умолчанию"
#: blogger.php:108
msgid "Save Settings"
msgstr "Сохранить настройки"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Сообщение от Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
$n = intval($n);
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Post to blogger'] = 'Написать в Blogger';
$a->strings['Blogger Export'] = 'Экспорт в Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Включить аддон репоста в Blogger';
$a->strings['Blogger username'] = 'Имя пользователя Blogger';
$a->strings['Blogger password'] = 'Пароль Blogger';
$a->strings['Blogger API URL'] = 'Blogger API URL';
$a->strings['Post to Blogger by default'] = 'Отправлять в Blogger по умолчанию';
$a->strings['Save Settings'] = 'Сохранить настройки';
$a->strings['Post from Friendica'] = 'Сообщение от Friendica';

View file

@ -1,56 +0,0 @@
# ADDON blogger
# Copyright (C)
# This file is distributed under the same license as the Friendica blogger addon package.
#
#
# Translators:
# Bjoessi <torbjorn.andersson@syte.se>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2019-08-20 07:54+0000\n"
"Last-Translator: Bjoessi <torbjorn.andersson@syte.se>\n"
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: blogger.php:42
msgid "Post to blogger"
msgstr "Lägg in på Blogger"
#: blogger.php:74 blogger.php:78
msgid "Blogger Export"
msgstr "Export till Blogger"
#: blogger.php:82
msgid "Enable Blogger Post Addon"
msgstr "Aktivera tillägg för Blogger-inlägg"
#: blogger.php:87
msgid "Blogger username"
msgstr "Blogger användarnamn"
#: blogger.php:92
msgid "Blogger password"
msgstr "Blogger lösenord"
#: blogger.php:97
msgid "Blogger API URL"
msgstr "Blogger API URL"
#: blogger.php:102
msgid "Post to Blogger by default"
msgstr "Lägg in på Blogger som standard"
#: blogger.php:108
msgid "Save Settings"
msgstr "Spara inställningar"
#: blogger.php:178
msgid "Post from Friendica"
msgstr "Inlägg från Friendica"

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Post to blogger'] = 'Lägg in på Blogger';
$a->strings['Blogger Export'] = 'Export till Blogger';
$a->strings['Enable Blogger Post Addon'] = 'Aktivera tillägg för Blogger-inlägg';
$a->strings['Blogger username'] = 'Blogger användarnamn';
$a->strings['Blogger password'] = 'Blogger lösenord';
$a->strings['Blogger API URL'] = 'Blogger API URL';
$a->strings['Post to Blogger by default'] = 'Lägg in på Blogger som standard';
$a->strings['Save Settings'] = 'Spara inställningar';
$a->strings['Post from Friendica'] = 'Inlägg från Friendica';

View file

@ -1,11 +0,0 @@
<?php
$a->strings["Post to blogger"] = "转播到blogger";
$a->strings["Blogger Post Settings"] = "Blogger转播设置";
$a->strings["Enable Blogger Post Addon"] = "使Blogger转播插件可用";
$a->strings["Blogger username"] = "Blogger用户名";
$a->strings["Blogger password"] = "Blogger密码";
$a->strings["Blogger API URL"] = "Blogger API URL";
$a->strings["Post to Blogger by default"] = "默认地转播到Blogger";
$a->strings["Submit"] = "提交";
$a->strings["Post from Friendica"] = "文章从Friendica";

View file

@ -1,8 +0,0 @@
The addon uses the library from [https://github.com/thewebguy/bufferapp-php](https://github.com/thewebguy/bufferapp-php)
Please register an app at [http://bufferapp.com/developers/api](http://bufferapp.com/developers/api)
Please use (your server address)/buffer/connect as Callback URL.
After the registration please enter the values for "Client ID" and "Client Secret" in the
[administration](admin/addons/buffer).

View file

@ -1,15 +0,0 @@
#buffer-enable-label, #buffer-bydefault-label, #buffer-delete-label {
float: left;
width: 200px;
margin-top: 10px;
}
#buffer-checkbox, #buffer-bydefault, #buffer-delete {
float: left;
margin-top: 10px;
}
#buffer-submit {
margin-top: 15px;
}

View file

@ -1,399 +0,0 @@
<?php
/**
* Name: Buffer Post Connector
* Description: Post to Buffer (Facebook Pages, LinkedIn, Twitter)
* Version: 0.2
* Author: Michael Vogel <http://pirati.ca/profile/heluecht>
* Status: Unsupported
*/
require 'addon/buffer/bufferapp.php';
use Friendica\App;
use Friendica\Content\Text\Plaintext;
use Friendica\Core\Hook;
use Friendica\Core\Logger;
use Friendica\Core\Protocol;
use Friendica\Core\Renderer;
use Friendica\Database\DBA;
use Friendica\DI;
use Friendica\Util\Proxy as ProxyUtils;
function buffer_install()
{
Hook::register('hook_fork', 'addon/buffer/buffer.php', 'buffer_hook_fork');
Hook::register('post_local', 'addon/buffer/buffer.php', 'buffer_post_local');
Hook::register('notifier_normal', 'addon/buffer/buffer.php', 'buffer_send');
Hook::register('jot_networks', 'addon/buffer/buffer.php', 'buffer_jot_nets');
Hook::register('connector_settings', 'addon/buffer/buffer.php', 'buffer_settings');
Hook::register('connector_settings_post', 'addon/buffer/buffer.php', 'buffer_settings_post');
}
function buffer_module()
{
}
function buffer_content(App $a)
{
if (! local_user()) {
notice(DI::l10n()->t('Permission denied.') . EOL);
return '';
}
require_once "mod/settings.php";
settings_init($a);
if (isset(DI::args()->getArgv()[1])) {
switch (DI::args()->getArgv()[1]) {
case "connect":
$o = buffer_connect($a);
break;
default:
$o = print_r(DI::args()->getArgv(), true);
break;
}
} else {
$o = buffer_connect($a);
}
return $o;
}
function buffer_addon_admin(App $a, &$o)
{
$t = Renderer::getMarkupTemplate("admin.tpl", "addon/buffer/");
$o = Renderer::replaceMacros($t, [
'$submit' => DI::l10n()->t('Save Settings'),
// name, label, value, help, [extra values]
'$client_id' => ['client_id', DI::l10n()->t('Client ID'), DI::config()->get('buffer', 'client_id'), ''],
'$client_secret' => ['client_secret', DI::l10n()->t('Client Secret'), DI::config()->get('buffer', 'client_secret'), ''],
]);
}
function buffer_addon_admin_post(App $a)
{
$client_id = trim($_POST['client_id'] ?? '');
$client_secret = trim($_POST['client_secret'] ?? '');
DI::config()->set('buffer', 'client_id' , $client_id);
DI::config()->set('buffer', 'client_secret', $client_secret);
}
function buffer_connect(App $a)
{
if (isset($_REQUEST["error"])) {
$o = DI::l10n()->t('Error when registering buffer connection:')." ".$_REQUEST["error"];
return $o;
}
// Start a session. This is necessary to hold on to a few keys the callback script will also need
session_start();
// Define the needed keys
$client_id = DI::config()->get('buffer','client_id');
$client_secret = DI::config()->get('buffer','client_secret');
// The callback URL is the script that gets called after the user authenticates with buffer
$callback_url = DI::baseUrl()->get()."/buffer/connect";
$buffer = new BufferApp($client_id, $client_secret, $callback_url);
if (!$buffer->ok) {
$o = '<a href="' . $buffer->get_login_url() . '">Connect to Buffer!</a>';
} else {
Logger::notice("buffer_connect: authenticated");
$o = DI::l10n()->t("You are now authenticated to buffer. ");
$o .= '<br /><a href="' . DI::baseUrl()->get() . '/settings/connectors">' . DI::l10n()->t("return to the connector page") . '</a>';
DI::pConfig()->set(local_user(), 'buffer','access_token', $buffer->access_token);
}
return $o;
}
function buffer_jot_nets(App $a, array &$jotnets_fields)
{
if (!local_user()) {
return;
}
if (DI::pConfig()->get(local_user(), 'buffer', 'post')) {
$jotnets_fields[] = [
'type' => 'checkbox',
'field' => [
'buffer_enable',
DI::l10n()->t('Post to Buffer'),
DI::pConfig()->get(local_user(), 'buffer', 'post_by_default')
]
];
}
}
function buffer_settings(App $a, &$s)
{
if (! local_user()) {
return;
}
/* Add our stylesheet to the page so we can make our settings look nice */
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/buffer/buffer.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variables */
$enabled = DI::pConfig()->get(local_user(),'buffer','post');
$checked = (($enabled) ? ' checked="checked" ' : '');
$css = (($enabled) ? '' : '-disabled');
$def_enabled = DI::pConfig()->get(local_user(),'buffer','post_by_default');
$def_checked = (($def_enabled) ? ' checked="checked" ' : '');
/* Add some HTML to the existing form */
$s .= '<span id="settings_buffer_inflated" class="settings-block fakelink" style="display: block;" onclick="openClose(\'settings_buffer_expanded\'); openClose(\'settings_buffer_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/buffer.png" /><h3 class="connector">'. DI::l10n()->t('Buffer Export').'</h3>';
$s .= '</span>';
$s .= '<div id="settings_buffer_expanded" class="settings-block" style="display: none;">';
$s .= '<span class="fakelink" onclick="openClose(\'settings_buffer_expanded\'); openClose(\'settings_buffer_inflated\');">';
$s .= '<img class="connector'.$css.'" src="images/buffer.png" /><h3 class="connector">'. DI::l10n()->t('Buffer Export').'</h3>';
$s .= '</span>';
$client_id = DI::config()->get("buffer", "client_id");
$client_secret = DI::config()->get("buffer", "client_secret");
$access_token = DI::pConfig()->get(local_user(), "buffer", "access_token");
$s .= '<div id="buffer-password-wrapper">';
if ($access_token == "") {
$s .= '<div id="buffer-authenticate-wrapper">';
$s .= '<a href="'.DI::baseUrl()->get().'/buffer/connect">'.DI::l10n()->t("Authenticate your Buffer connection").'</a>';
$s .= '</div><div class="clear"></div>';
} else {
$s .= '<div id="buffer-enable-wrapper">';
$s .= '<label id="buffer-enable-label" for="buffer-checkbox">' . DI::l10n()->t('Enable Buffer Post Addon') . '</label>';
$s .= '<input id="buffer-checkbox" type="checkbox" name="buffer" value="1" ' . $checked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="buffer-bydefault-wrapper">';
$s .= '<label id="buffer-bydefault-label" for="buffer-bydefault">' . DI::l10n()->t('Post to Buffer by default') . '</label>';
$s .= '<input id="buffer-bydefault" type="checkbox" name="buffer_bydefault" value="1" ' . $def_checked . '/>';
$s .= '</div><div class="clear"></div>';
$s .= '<div id="buffer-delete-wrapper">';
$s .= '<label id="buffer-delete-label" for="buffer-delete">' . DI::l10n()->t('Check to delete this preset') . '</label>';
$s .= '<input id="buffer-delete" type="checkbox" name="buffer_delete" value="1" />';
$s .= '</div><div class="clear"></div>';
// The callback URL is the script that gets called after the user authenticates with buffer
$callback_url = DI::baseUrl()->get() . '/buffer/connect';
$buffer = new BufferApp($client_id, $client_secret, $callback_url, $access_token);
$profiles = $buffer->go('/profiles');
if (is_array($profiles)) {
$s .= '<div id="buffer-accounts-wrapper">';
$s .= DI::l10n()->t("Posts are going to all accounts that are enabled by default:");
$s .= "<ul>";
foreach ($profiles as $profile) {
if (!$profile->default)
continue;
$s .= "<li>";
//$s .= "<img src='".$profile->avatar_https."' width='16' />";
$s .= " ".$profile->formatted_username." (".$profile->formatted_service.")";
$s .= "</li>";
}
$s .= "</ul>";
$s .= '</div><div class="clear"></div>';
}
}
$s .= '</div><div class="clear"></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" id="buffer-submit" name="buffer-submit" class="settings-submit" value="' . DI::l10n()->t('Save Settings') . '" /></div></div>';
}
function buffer_settings_post(App $a, array &$b)
{
if (!empty($_POST['buffer-submit'])) {
if (!empty($_POST['buffer_delete'])) {
DI::pConfig()->set(local_user(), 'buffer', 'access_token' , '');
DI::pConfig()->set(local_user(), 'buffer', 'post' , false);
DI::pConfig()->set(local_user(), 'buffer', 'post_by_default', false);
} else {
DI::pConfig()->set(local_user(), 'buffer', 'post' , intval($_POST['buffer'] ?? false));
DI::pConfig()->set(local_user(), 'buffer', 'post_by_default', intval($_POST['buffer_bydefault'] ?? false));
}
}
}
function buffer_post_local(App $a, array &$b)
{
if (!local_user() || (local_user() != $b['uid'])) {
return;
}
$buffer_post = intval(DI::pConfig()->get(local_user(),'buffer','post'));
$buffer_enable = (($buffer_post && !empty($_REQUEST['buffer_enable'])) ? intval($_REQUEST['buffer_enable']) : 0);
if ($b['api_source'] && intval(DI::pConfig()->get(local_user(),'buffer','post_by_default'))) {
$buffer_enable = 1;
}
if (!$buffer_enable) {
return;
}
if (strlen($b['postopts'])) {
$b['postopts'] .= ',';
}
$b['postopts'] .= 'buffer';
}
function buffer_hook_fork(&$a, &$b)
{
if ($b['name'] != 'notifier_normal') {
return;
}
$post = $b['data'];
if ($post['deleted'] || $post['private'] || ($post['created'] !== $post['edited']) ||
!strstr($post['postopts'], 'buffer') || ($post['parent'] != $post['id'])) {
$b['execute'] = false;
return;
}
}
function buffer_send(App $a, array &$b)
{
if ($b['deleted'] || $b['private'] || ($b['created'] !== $b['edited'])) {
return;
}
if (!strstr($b['postopts'],'buffer')) {
return;
}
if ($b['parent'] != $b['id']) {
return;
}
// Dont't post if the post doesn't belong to us.
// This is a check for forum postings
$self = DBA::selectFirst('contact', ['id'], ['uid' => $b['uid'], 'self' => true]);
if ($b['contact-id'] != $self['id']) {
return;
}
// if post comes from buffer don't send it back
//if($b['app'] == "Buffer")
// return;
$client_id = DI::config()->get("buffer", "client_id");
$client_secret = DI::config()->get("buffer", "client_secret");
$access_token = DI::pConfig()->get($b['uid'], "buffer","access_token");
$callback_url = "";
if ($access_token) {
$buffer = new BufferApp($client_id, $client_secret, $callback_url, $access_token);
$profiles = $buffer->go('/profiles');
if (is_array($profiles)) {
Logger::info("Will send these parameter ".print_r($b, true));
foreach ($profiles as $profile) {
if (!$profile->default)
continue;
$send = false;
switch ($profile->service) {
case 'facebook':
$send = ($b["extid"] != Protocol::FACEBOOK);
$limit = 0;
$includedlinks = false;
$htmlmode = 9;
break;
case 'twitter':
$send = ($b["extid"] != Protocol::TWITTER);
$limit = 280;
$includedlinks = true;
$htmlmode = 8;
break;
case 'linkedin':
$send = ($b["extid"] != Protocol::LINKEDIN);
$limit = 700;
$includedlinks = true;
$htmlmode = 2;
break;
}
if (!$send)
continue;
$item = $b;
$post = Plaintext::getPost($item, $limit, $includedlinks, $htmlmode);
Logger::info("buffer_send: converted message ".$b["id"]." result: ".print_r($post, true));
// The image proxy is used as a sanitizer. Buffer seems to be really picky about pictures
if (isset($post["image"])) {
$post["image"] = ProxyUtils::proxifyUrl($post["image"]);
}
if (isset($post["preview"])) {
$post["preview"] = ProxyUtils::proxifyUrl($post["preview"]);
}
// Seems like a bug to me
// Buffer doesn't add links to Twitter (but pictures)
if (($profile->service == "twitter") && isset($post["url"]) && ($post["type"] != "photo")) {
$post["text"] .= " " . $post["url"];
}
$message = [];
$message["text"] = $post["text"];
$message["profile_ids[]"] = $profile->id;
$message["shorten"] = false;
$message["now"] = true;
if (isset($post["title"])) {
$message["media[title]"] = $post["title"];
}
if (isset($post["description"])) {
$message["media[description]"] = $post["description"];
}
if (isset($post["url"]) && ($post["type"] != "photo")) {
$message["media[link]"] = $post["url"];
}
if (isset($post["image"])) {
$message["media[picture]"] = $post["image"];
if ($post["type"] == "photo") {
$message["media[thumbnail]"] = $post["image"];
}
}
if (isset($post["preview"])) {
$message["media[thumbnail]"] = $post["preview"];
}
//print_r($message);
Logger::info("buffer_send: data for message " . $b["id"] . ": " . print_r($message, true));
$ret = $buffer->go('/updates/create', $message);
Logger::info("buffer_send: send message " . $b["id"] . " result: " . print_r($ret, true));
}
}
}
}

View file

@ -1,207 +0,0 @@
<?php
class BufferApp {
private $client_id;
private $client_secret;
private $code;
public $access_token;
private $callback_url;
private $authorize_url = 'https://bufferapp.com/oauth2/authorize';
private $access_token_url = 'https://api.bufferapp.com/1/oauth2/token.json';
private $buffer_url = 'https://api.bufferapp.com/1';
public $ok = false;
private $endpoints = [
'/user' => 'get',
'/profiles' => 'get',
'/profiles/:id' => 'get',
'/profiles/:id/schedules' => 'get',
'/profiles/:id/schedules/update' => 'post', // Array schedules [0][days][]=mon, [0][times][]=12:00
'/updates/:id' => 'get',
'/profiles/:id/updates/pending' => 'get',
'/profiles/:id/updates/sent' => 'get',
'/updates/:id/interactions' => 'get',
'/profiles/:id/updates/reorder' => 'post', // Array order, int offset, bool utc
'/profiles/:id/updates/shuffle' => 'post',
'/updates/create' => 'post', // String text, Array profile_ids, Aool shorten, Bool now, Array media ['link'], ['description'], ['picture']
'/updates/:id/update' => 'post', // String text, Bool now, Array media ['link'], ['description'], ['picture'], Bool utc
'/updates/:id/share' => 'post',
'/updates/:id/destroy' => 'post',
'/updates/:id/move_to_top' => 'post',
'/links/shares' => 'get',
'/info/configuration' => 'get',
];
public $errors = [
'invalid-endpoint' => 'The endpoint you supplied does not appear to be valid.',
'401' => 'Unauthorized.',
'403' => 'Permission denied.',
'404' => 'Endpoint not found.',
'405' => 'Method not allowed.',
'504' => 'Gateway timeout server response timeout.',
'1000' => 'An unknown error occurred.',
'1001' => 'Access token required.',
'1002' => 'Not within application scope.',
'1003' => 'Parameter not recognized.',
'1004' => 'Required parameter missing.',
'1005' => 'Unsupported response format.',
'1006' => 'Parameter value not within bounds.',
'1010' => 'Profile could not be found.',
'1011' => 'No authorization to access profile.',
'1012' => 'Profile did not save successfully.',
'1013' => 'Profile schedule limit reached.',
'1014' => 'Profile limit for user has been reached.',
'1015' => 'Profile could not be destroyed.',
'1016' => 'Profile buffer could not be emptied.',
'1020' => 'Update could not be found.',
'1021' => 'No authorization to access update.',
'1022' => 'Update did not save successfully.',
'1023' => 'Update limit for profile has been reached.',
'1024' => 'Update limit for team profile has been reached.',
'1025' => "Update was recently posted, can't post duplicate content.",
'1026' => 'Update must be in error status to requeue.',
'1027' => 'Update must be in buffer and not custom scheduled in order to move to top.',
'1028' => 'Update soft limit for profile reached.',
'1029' => 'Event type not supported.',
'1030' => 'Media filetype not supported.',
'1031' => 'Media filesize out of acceptable range.',
'1032' => 'Unable to post image to LinkedIn group(s).',
'1033' => 'Comments can only be posted to Facebook at this time.',
'1034' => 'Cannot schedule updates in the past.',
'1042' => 'User did not save successfully.',
'1050' => 'Client could not be found.',
'1051' => 'No authorization to access client.',
];
function __construct($client_id = '', $client_secret = '', $callback_url = '', $access_token = '') {
if ($client_id) $this->set_client_id($client_id);
if ($client_secret) $this->set_client_secret($client_secret);
if ($callback_url) $this->set_callback_url($callback_url);
if ($access_token) $this->access_token = $access_token;
if (isset($_GET['code']) && $_GET['code']) {
$this->code = $_GET['code'];
$this->create_access_token_url();
}
if (!$access_token)
$this->retrieve_access_token();
}
function go($endpoint = '', $data = '') {
if (in_array($endpoint, array_keys($this->endpoints))) {
$done_endpoint = $endpoint;
} else {
$ok = false;
foreach (array_keys($this->endpoints) as $done_endpoint) {
if (preg_match('/' . preg_replace('/(\:\w+)/i', '(\w+)', str_replace('/', '\/', $done_endpoint)) . '/i', $endpoint, $match)) {
$ok = true;
break;
}
}
if (!$ok) return $this->error('invalid-endpoint');
}
if (!$data || !is_array($data)) $data = [];
$data['access_token'] = $this->access_token;
$method = $this->endpoints[$done_endpoint]; //get() or post()
return $this->$method($this->buffer_url . $endpoint . '.json', $data);
}
function store_access_token() {
$_SESSION['oauth']['buffer']['access_token'] = $this->access_token;
}
function retrieve_access_token() {
$this->access_token = $_SESSION['oauth']['buffer']['access_token'];
if ($this->access_token) {
$this->ok = true;
}
}
function error($error) {
return (object) ['error' => $this->errors[$error]];
}
function create_access_token_url() {
$data = [
'code' => $this->code,
'grant_type' => 'authorization_code',
'client_id' => $this->client_id,
'client_secret' => $this->client_secret,
'redirect_uri' => $this->callback_url,
];
$obj = $this->post($this->access_token_url, $data);
$this->access_token = $obj->access_token;
$this->store_access_token();
}
function req($url = '', $data = '', $post = true) {
if (!$url) return false;
if (!$data || !is_array($data)) $data = [];
$options = [CURLOPT_RETURNTRANSFER => true, CURLOPT_HEADER => false];
if ($post) {
$options += [
CURLOPT_POST => $post,
CURLOPT_POSTFIELDS => $data
];
} else {
$url .= '?' . http_build_query($data);
}
$ch = curl_init($url);
curl_setopt_array($ch, $options);
$rs = curl_exec($ch);
$code = curl_getinfo($ch, CURLINFO_HTTP_CODE);
if ($code >= 400) {
return $this->error($code);
}
return json_decode($rs);
}
function get($url = '', $data = '') {
return $this->req($url, $data, false);
}
function post($url = '', $data = '') {
return $this->req($url, $data, true);
}
function get_login_url() {
return $this->authorize_url . '?'
. 'client_id=' . $this->client_id
. '&redirect_uri=' . urlencode($this->callback_url)
. '&response_type=code';
}
function set_client_id($client_id) {
$this->client_id = $client_id;
}
function set_client_secret($client_secret) {
$this->client_secret = $client_secret;
}
function set_callback_url($callback_url) {
$this->callback_url = $callback_url;
}
}
?>

View file

@ -1,74 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-25 13:17+0000\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: buffer.php:39
msgid "Permission denied."
msgstr ""
#: buffer.php:68 buffer.php:216
msgid "Save Settings"
msgstr ""
#: buffer.php:70
msgid "Client ID"
msgstr ""
#: buffer.php:71
msgid "Client Secret"
msgstr ""
#: buffer.php:87
msgid "Error when registering buffer connection:"
msgstr ""
#: buffer.php:107
msgid "You are now authenticated to buffer. "
msgstr ""
#: buffer.php:108
msgid "return to the connector page"
msgstr ""
#: buffer.php:126
msgid "Post to Buffer"
msgstr ""
#: buffer.php:155 buffer.php:159
msgid "Buffer Export"
msgstr ""
#: buffer.php:170
msgid "Authenticate your Buffer connection"
msgstr ""
#: buffer.php:174
msgid "Enable Buffer Post Addon"
msgstr ""
#: buffer.php:179
msgid "Post to Buffer by default"
msgstr ""
#: buffer.php:184
msgid "Check to delete this preset"
msgstr ""
#: buffer.php:196
msgid "Posts are going to all accounts that are enabled by default:"
msgstr ""

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# abidin toumi <abidin24@tutanota.com>, 2021
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-07-25 13:17+0000\n"
"PO-Revision-Date: 2021-10-29 08:25+0000\n"
"Last-Translator: abidin toumi <abidin24@tutanota.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: buffer.php:39
msgid "Permission denied."
msgstr "رُفض الإذن."
#: buffer.php:68 buffer.php:216
msgid "Save Settings"
msgstr "احفظ الإعدادات"
#: buffer.php:70
msgid "Client ID"
msgstr "معرف العميل"
#: buffer.php:71
msgid "Client Secret"
msgstr "الرمز السري للعميل"
#: buffer.php:87
msgid "Error when registering buffer connection:"
msgstr "خطأ عند تسجيل اتصال بافر:"
#: buffer.php:107
msgid "You are now authenticated to buffer. "
msgstr "خولت بافر."
#: buffer.php:108
msgid "return to the connector page"
msgstr "ارجع إلى صفحة الموصل"
#: buffer.php:126
msgid "Post to Buffer"
msgstr "شارك في بافر"
#: buffer.php:155 buffer.php:159
msgid "Buffer Export"
msgstr "تصدير بافر"
#: buffer.php:170
msgid "Authenticate your Buffer connection"
msgstr "استوثق اتصال بافر"
#: buffer.php:174
msgid "Enable Buffer Post Addon"
msgstr "تفعيل إضافة مشركة بافر"
#: buffer.php:179
msgid "Post to Buffer by default"
msgstr "شارك في بافر افتراضيا"
#: buffer.php:184
msgid "Check to delete this preset"
msgstr "تحقق لحذف هذا الإعداد المسبق"
#: buffer.php:196
msgid "Posts are going to all accounts that are enabled by default:"
msgstr " جميع المشاركات ستنتقل إلى الحسابات التي تم تمكينها افتراضيًا:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Permission denied.'] = 'رُفض الإذن.';
$a->strings['Save Settings'] = 'احفظ الإعدادات';
$a->strings['Client ID'] = 'معرف العميل';
$a->strings['Client Secret'] = 'الرمز السري للعميل';
$a->strings['Error when registering buffer connection:'] = 'خطأ عند تسجيل اتصال بافر:';
$a->strings['You are now authenticated to buffer. '] = 'خولت بافر.';
$a->strings['return to the connector page'] = 'ارجع إلى صفحة الموصل';
$a->strings['Post to Buffer'] = 'شارك في بافر';
$a->strings['Buffer Export'] = 'تصدير بافر';
$a->strings['Authenticate your Buffer connection'] = 'استوثق اتصال بافر';
$a->strings['Enable Buffer Post Addon'] = 'تفعيل إضافة مشركة بافر';
$a->strings['Post to Buffer by default'] = 'شارك في بافر افتراضيا';
$a->strings['Check to delete this preset'] = 'تحقق لحذف هذا الإعداد المسبق';
$a->strings['Posts are going to all accounts that are enabled by default:'] = ' جميع المشاركات ستنتقل إلى الحسابات التي تم تمكينها افتراضيًا:';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Joan Bar <friendica@tutanota.com>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2019-10-14 18:57+0000\n"
"Last-Translator: Joan Bar <friendica@tutanota.com>\n"
"Language-Team: Catalan (http://www.transifex.com/Friendica/friendica/language/ca/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ca\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permís denegat."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Desa la configuració"
#: buffer.php:59
msgid "Client ID"
msgstr "Identificador de client"
#: buffer.php:60
msgid "Client Secret"
msgstr "Secret del client"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Error al registrar la connexió del buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Ara esteu autenticats com a buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "Torna a la pàgina del connector"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Publica a Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Exportació de buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autentiqueu la vostra connexió buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Activa laddició de missatges de buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Publica a Buffer de manera predeterminada"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Comproveu suprimir aquesta configuració"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Les publicacions aniran a tots els comptes que estan habilitats de manera predeterminada:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_ca")) {
function string_plural_select_ca($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Permís denegat.';
$a->strings['Save Settings'] = 'Desa la configuració';
$a->strings['Client ID'] = 'Identificador de client';
$a->strings['Client Secret'] = 'Secret del client';
$a->strings['Error when registering buffer connection:'] = 'Error al registrar la connexió del buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Ara esteu autenticats com a buffer.';
$a->strings['return to the connector page'] = 'Torna a la pàgina del connector';
$a->strings['Post to Buffer'] = 'Publica a Buffer';
$a->strings['Buffer Export'] = 'Exportació de buffer';
$a->strings['Authenticate your Buffer connection'] = 'Autentiqueu la vostra connexió buffer';
$a->strings['Enable Buffer Post Addon'] = 'Activa laddició de missatges de buffer';
$a->strings['Post to Buffer by default'] = 'Publica a Buffer de manera predeterminada';
$a->strings['Check to delete this preset'] = 'Comproveu suprimir aquesta configuració';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Les publicacions aniran a tots els comptes que estan habilitats de manera predeterminada:';

View file

@ -1,78 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Aditoo, 2018
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-09-12 09:43+0000\n"
"Last-Translator: Aditoo\n"
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Přístup odmítnut."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Uložit Nastavení"
#: buffer.php:59
msgid "Client ID"
msgstr "Client ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Client Secret"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Chyba při registraci připojení na buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Nyní jste přihlášen/a na buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "zpět ke stránce konektoru"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Posílat na Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Buffer Export"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autentikujte své připojení na Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Povolit doplněk Buffer Post"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Ve výchozím stavu posílat na Buffer"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Zaškrtnutím smažete toto nastavení"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Příspěvky budou posílány na všechny účty, které jsou ve výchozím stavu povoleny:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
}}
$a->strings['Permission denied.'] = 'Přístup odmítnut.';
$a->strings['Save Settings'] = 'Uložit Nastavení';
$a->strings['Client ID'] = 'Client ID';
$a->strings['Client Secret'] = 'Client Secret';
$a->strings['Error when registering buffer connection:'] = 'Chyba při registraci připojení na buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Nyní jste přihlášen/a na buffer.';
$a->strings['return to the connector page'] = 'zpět ke stránce konektoru';
$a->strings['Post to Buffer'] = 'Posílat na Buffer';
$a->strings['Buffer Export'] = 'Buffer Export';
$a->strings['Authenticate your Buffer connection'] = 'Autentikujte své připojení na Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Povolit doplněk Buffer Post';
$a->strings['Post to Buffer by default'] = 'Ve výchozím stavu posílat na Buffer';
$a->strings['Check to delete this preset'] = 'Zaškrtnutím smažete toto nastavení';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Příspěvky budou posílány na všechny účty, které jsou ve výchozím stavu povoleny:';

View file

@ -1,79 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2018
# Ulf Rompe <transifex.com@rompe.org>, 2019
# Vinzenz Vietzke <vinz@vinzv.de>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2019-08-19 10:15+0000\n"
"Last-Translator: Vinzenz Vietzke <vinz@vinzv.de>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Zugriff verweigert."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Einstellungen speichern"
#: buffer.php:59
msgid "Client ID"
msgstr "Client ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Client Secret"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Fehler beim Registrieren des Buffer-Connectors."
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Du bist nun auf Buffer authentifiziert."
#: buffer.php:87
msgid "return to the connector page"
msgstr "zurück zur Connector-Seite"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Auf Buffer veröffentlichen"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Buffer Export"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Authentifiziere deine Verbindung zu Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Buffer-Post-Addon aktivieren"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Standardmäßig auf Buffer veröffentlichen"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Markieren, um diese Voreinstellung zu löschen"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Beiträge werden an alle Accounts geschickt, die standardmäßig aktiviert sind."

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Zugriff verweigert.';
$a->strings['Save Settings'] = 'Einstellungen speichern';
$a->strings['Client ID'] = 'Client ID';
$a->strings['Client Secret'] = 'Client Secret';
$a->strings['Error when registering buffer connection:'] = 'Fehler beim Registrieren des Buffer-Connectors.';
$a->strings['You are now authenticated to buffer. '] = 'Du bist nun auf Buffer authentifiziert.';
$a->strings['return to the connector page'] = 'zurück zur Connector-Seite';
$a->strings['Post to Buffer'] = 'Auf Buffer veröffentlichen';
$a->strings['Buffer Export'] = 'Buffer Export';
$a->strings['Authenticate your Buffer connection'] = 'Authentifiziere deine Verbindung zu Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Buffer-Post-Addon aktivieren';
$a->strings['Post to Buffer by default'] = 'Standardmäßig auf Buffer veröffentlichen';
$a->strings['Check to delete this preset'] = 'Markieren, um diese Voreinstellung zu löschen';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Beiträge werden an alle Accounts geschickt, die standardmäßig aktiviert sind.';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Albert, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-21 14:28+0000\n"
"Last-Translator: Albert\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permiso denegado"
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Guardar ajustes"
#: buffer.php:59
msgid "Client ID"
msgstr "ID de cliente"
#: buffer.php:60
msgid "Client Secret"
msgstr "Secreto de cliente"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Error al registrar cunexión de buffer"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Ahora está autenticado al fufer"
#: buffer.php:87
msgid "return to the connector page"
msgstr "Vuelva a la página de conexión"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Publique en Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Exportar Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autenticar su conexión de Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Habilitar el complemento de publicación de Buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Publicar en Buffer por defecto"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Verificar para eliminar este preajuste"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Las publicaciones van a todas las cuentas que estén habilitadas por defecto"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Permiso denegado';
$a->strings['Save Settings'] = 'Guardar ajustes';
$a->strings['Client ID'] = 'ID de cliente';
$a->strings['Client Secret'] = 'Secreto de cliente';
$a->strings['Error when registering buffer connection:'] = 'Error al registrar cunexión de buffer';
$a->strings['You are now authenticated to buffer. '] = 'Ahora está autenticado al fufer';
$a->strings['return to the connector page'] = 'Vuelva a la página de conexión';
$a->strings['Post to Buffer'] = 'Publique en Buffer';
$a->strings['Buffer Export'] = 'Exportar Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Autenticar su conexión de Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Habilitar el complemento de publicación de Buffer';
$a->strings['Post to Buffer by default'] = 'Publicar en Buffer por defecto';
$a->strings['Check to delete this preset'] = 'Verificar para eliminar este preajuste';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Las publicaciones van a todas las cuentas que estén habilitadas por defecto';

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-04-18 14:49+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Lupa kielletty."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: buffer.php:59
msgid "Client ID"
msgstr ""
#: buffer.php:60
msgid "Client Secret"
msgstr ""
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Virhe Buffer-yhteyden rekisteröimisessä:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Buffer-yhteydesi on todennettu."
#: buffer.php:87
msgid "return to the connector page"
msgstr ""
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Julkaise Bufferiin"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Buffer Export"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Todenna Buffer-yhteydesi"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Ota Buffer-viestilisäosa käyttöön"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Julkaise Bufferiin oletuksena"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr ""
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr ""

View file

@ -1,16 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Lupa kielletty.';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['Error when registering buffer connection:'] = 'Virhe Buffer-yhteyden rekisteröimisessä:';
$a->strings['You are now authenticated to buffer. '] = 'Buffer-yhteydesi on todennettu.';
$a->strings['Post to Buffer'] = 'Julkaise Bufferiin';
$a->strings['Buffer Export'] = 'Buffer Export';
$a->strings['Authenticate your Buffer connection'] = 'Todenna Buffer-yhteydesi';
$a->strings['Enable Buffer Post Addon'] = 'Ota Buffer-viestilisäosa käyttöön';
$a->strings['Post to Buffer by default'] = 'Julkaise Bufferiin oletuksena';

View file

@ -1,79 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Hypolite Petovan <hypolite@mrpetovan.com>, 2016
# Marie Olive <lacellule101@gmail.com>, 2018
# RyDroid <inactive+RyDroid@transifex.com>, 2015
# StefOfficiel <pichard.stephane@free.fr>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-11-13 12:56+0000\n"
"Last-Translator: Marie Olive <lacellule101@gmail.com>\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permission refusée."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Enregistrer les Paramètres"
#: buffer.php:59
msgid "Client ID"
msgstr "Identifiant client"
#: buffer.php:60
msgid "Client Secret"
msgstr "Secret Client"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Une erreur est survenue lors de la connexion à Buffer :"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Vous êtes maintenant authentifié sur Buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "revenir à la page du connecteur"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Publier sur Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Export Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Authentifier votre connexion à Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Activer l'extension de publication Buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Publier sur Buffer par défaut"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Cocher pour supprimer ce préréglage"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Les posts sont envoyés à tous les comptes activés par défault:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
$n = intval($n);
return intval($n > 1);
}}
$a->strings['Permission denied.'] = 'Permission refusée.';
$a->strings['Save Settings'] = 'Enregistrer les Paramètres';
$a->strings['Client ID'] = 'Identifiant client';
$a->strings['Client Secret'] = 'Secret Client';
$a->strings['Error when registering buffer connection:'] = 'Une erreur est survenue lors de la connexion à Buffer :';
$a->strings['You are now authenticated to buffer. '] = 'Vous êtes maintenant authentifié sur Buffer.';
$a->strings['return to the connector page'] = 'revenir à la page du connecteur';
$a->strings['Post to Buffer'] = 'Publier sur Buffer';
$a->strings['Buffer Export'] = 'Export Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Authentifier votre connexion à Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Activer l\'extension de publication Buffer';
$a->strings['Post to Buffer by default'] = 'Publier sur Buffer par défaut';
$a->strings['Check to delete this preset'] = 'Cocher pour supprimer ce préréglage';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Les posts sont envoyés à tous les comptes activés par défault:';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Balázs Úr, 2020
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2020-12-23 00:50+0000\n"
"Last-Translator: Balázs Úr\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Hozzáférés megtagadva."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Beállítások mentése"
#: buffer.php:59
msgid "Client ID"
msgstr "Ügyfél-azonosító"
#: buffer.php:60
msgid "Client Secret"
msgstr "Ügyféltitok"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Hiba a Buffer-kapcsolat regisztrálásakor:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Most már hitelesítve van a Bufferhez."
#: buffer.php:87
msgid "return to the connector page"
msgstr "Visszatérés az összekötő oldalra"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Beküldés a Bufferre"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Buffer exportálás"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "A Buffer-kapcsolatának hitelesítése"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "A Buffer-beküldő bővítmény engedélyezése"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Beküldés a Bufferre alapértelmezetten"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Jelölje be az előbeállítás törléséhez"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "A bejegyzések az összes olyan fiókba mennek, amelyek alapértelmezetten engedélyezve vannak:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Hozzáférés megtagadva.';
$a->strings['Save Settings'] = 'Beállítások mentése';
$a->strings['Client ID'] = 'Ügyfél-azonosító';
$a->strings['Client Secret'] = 'Ügyféltitok';
$a->strings['Error when registering buffer connection:'] = 'Hiba a Buffer-kapcsolat regisztrálásakor:';
$a->strings['You are now authenticated to buffer. '] = 'Most már hitelesítve van a Bufferhez.';
$a->strings['return to the connector page'] = 'Visszatérés az összekötő oldalra';
$a->strings['Post to Buffer'] = 'Beküldés a Bufferre';
$a->strings['Buffer Export'] = 'Buffer exportálás';
$a->strings['Authenticate your Buffer connection'] = 'A Buffer-kapcsolatának hitelesítése';
$a->strings['Enable Buffer Post Addon'] = 'A Buffer-beküldő bővítmény engedélyezése';
$a->strings['Post to Buffer by default'] = 'Beküldés a Bufferre alapértelmezetten';
$a->strings['Check to delete this preset'] = 'Jelölje be az előbeállítás törléséhez';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'A bejegyzések az összes olyan fiókba mennek, amelyek alapértelmezetten engedélyezve vannak:';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Sveinn í Felli <sv1@fellsnet.is>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-24 15:15+0000\n"
"Last-Translator: Sveinn í Felli <sv1@fellsnet.is>\n"
"Language-Team: Icelandic (http://www.transifex.com/Friendica/friendica/language/is/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: is\n"
"Plural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Heimild ekki veitt."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr ""
#: buffer.php:59
msgid "Client ID"
msgstr ""
#: buffer.php:60
msgid "Client Secret"
msgstr ""
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr ""
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr ""
#: buffer.php:87
msgid "return to the connector page"
msgstr ""
#: buffer.php:103
msgid "Post to Buffer"
msgstr ""
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr ""
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr ""
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr ""
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr ""
#: buffer.php:156
msgid "Check to delete this preset"
msgstr ""
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr ""

View file

@ -1,8 +0,0 @@
<?php
if(! function_exists("string_plural_select_is")) {
function string_plural_select_is($n){
$n = intval($n);
return intval($n % 10 != 1 || $n % 100 == 11);
}}
$a->strings['Permission denied.'] = 'Heimild ekki veitt.';

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014,2018
# Sandro Santilli <strk@kbt.io>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-03-19 13:21+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permesso negato."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: buffer.php:59
msgid "Client ID"
msgstr "Client ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Client Secret"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Errore registrando la connessione a buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Sei autenticato su buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "ritorna alla pagina del connettore"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Invia a Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Esporta Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autentica la tua connessione a Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Abilita il componente aggiuntivo di invio a Buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Invia sempre a Buffer"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Seleziona per eliminare questo preset"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "I messaggi andranno a tutti gli account che sono abilitati:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Permesso negato.';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['Client ID'] = 'Client ID';
$a->strings['Client Secret'] = 'Client Secret';
$a->strings['Error when registering buffer connection:'] = 'Errore registrando la connessione a buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Sei autenticato su buffer.';
$a->strings['return to the connector page'] = 'ritorna alla pagina del connettore';
$a->strings['Post to Buffer'] = 'Invia a Buffer';
$a->strings['Buffer Export'] = 'Esporta Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Autentica la tua connessione a Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Abilita il componente aggiuntivo di invio a Buffer';
$a->strings['Post to Buffer by default'] = 'Invia sempre a Buffer';
$a->strings['Check to delete this preset'] = 'Seleziona per eliminare questo preset';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'I messaggi andranno a tutti gli account che sono abilitati:';

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# AgnesElisa <agneselisa@disroot.org>, 2018
# Jeroen De Meerleer <me@jeroened.be>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-08-24 13:04+0000\n"
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Toegang geweigerd."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Instellingen opslaan"
#: buffer.php:59
msgid "Client ID"
msgstr "Cliënt ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Cliënt geheim"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Fout bij het registreren van de buffer verbinding:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Je bent nu aangemeld bij Buffer"
#: buffer.php:87
msgid "return to the connector page"
msgstr "ga terug naar de verbindingspagina"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Plaats bericht op Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Buffer Exporteren"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Verbinding met Buffer goedkeuren"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Buffer Post Addon inschakelen"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Plaatsen op Buffer als standaard instellen"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Vink aan om deze vooraf ingestelde opties te verwijderen "
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Berichten gaan naar alle accounts die als standaard zijn ingeschakeld: "

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Toegang geweigerd.';
$a->strings['Save Settings'] = 'Instellingen opslaan';
$a->strings['Client ID'] = 'Cliënt ID';
$a->strings['Client Secret'] = 'Cliënt geheim';
$a->strings['Error when registering buffer connection:'] = 'Fout bij het registreren van de buffer verbinding:';
$a->strings['You are now authenticated to buffer. '] = 'Je bent nu aangemeld bij Buffer';
$a->strings['return to the connector page'] = 'ga terug naar de verbindingspagina';
$a->strings['Post to Buffer'] = 'Plaats bericht op Buffer';
$a->strings['Buffer Export'] = 'Buffer Exporteren';
$a->strings['Authenticate your Buffer connection'] = 'Verbinding met Buffer goedkeuren';
$a->strings['Enable Buffer Post Addon'] = 'Buffer Post Addon inschakelen';
$a->strings['Post to Buffer by default'] = 'Plaatsen op Buffer als standaard instellen';
$a->strings['Check to delete this preset'] = 'Vink aan om deze vooraf ingestelde opties te verwijderen ';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Berichten gaan naar alle accounts die als standaard zijn ingeschakeld: ';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-03-31 17:10+0000\n"
"Last-Translator: Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Odmowa uprawnień."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Zapisz ustawienia"
#: buffer.php:59
msgid "Client ID"
msgstr "Identyfikator ID klienta"
#: buffer.php:60
msgid "Client Secret"
msgstr " Tajny klucz klienta"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Błąd podczas rejestrowania połączenia z buforem:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Jesteś teraz uwierzytelniony w buforze."
#: buffer.php:87
msgid "return to the connector page"
msgstr "powrót do strony połączenia"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Opublikuj w buforze"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Eksportuj Bufor"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Uwierzytelnij swoje połączenie z buforem"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Włącz dodatek bufora pocztowego"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Wyślij domyślnie post do bufora"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Zaznacz, aby usunąć to ustawienie wstępne"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Wpisy są wysyłane na wszystkie konta, które są domyślnie włączone:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Permission denied.'] = 'Odmowa uprawnień.';
$a->strings['Save Settings'] = 'Zapisz ustawienia';
$a->strings['Client ID'] = 'Identyfikator ID klienta';
$a->strings['Client Secret'] = ' Tajny klucz klienta';
$a->strings['Error when registering buffer connection:'] = 'Błąd podczas rejestrowania połączenia z buforem:';
$a->strings['You are now authenticated to buffer. '] = 'Jesteś teraz uwierzytelniony w buforze.';
$a->strings['return to the connector page'] = 'powrót do strony połączenia';
$a->strings['Post to Buffer'] = 'Opublikuj w buforze';
$a->strings['Buffer Export'] = 'Eksportuj Bufor';
$a->strings['Authenticate your Buffer connection'] = 'Uwierzytelnij swoje połączenie z buforem';
$a->strings['Enable Buffer Post Addon'] = 'Włącz dodatek bufora pocztowego';
$a->strings['Post to Buffer by default'] = 'Wyślij domyślnie post do bufora';
$a->strings['Check to delete this preset'] = 'Zaznacz, aby usunąć to ustawienie wstępne';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Wpisy są wysyłane na wszystkie konta, które są domyślnie włączone:';

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# André Alves <and2099@riseup.net>, 2016
# Rui Andrada <shingonoide@gmail.com>, 2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2016-01-03 06:19+0000\n"
"Last-Translator: André Alves <and2099@riseup.net>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/Friendica/friendica/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permissão negada."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Salvar configurações"
#: buffer.php:59
msgid "Client ID"
msgstr ""
#: buffer.php:60
msgid "Client Secret"
msgstr ""
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Erro ao registrar conexão de buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Você está autenticado no buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "Volte a página de conectores."
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Publicar no Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Exportar Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autenticar sua conexão de Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Habilita addon para publicar no Buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Publica no Buffer por padrão"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Marque para excluir este perfil"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr ""

View file

@ -1,18 +0,0 @@
<?php
if(! function_exists("string_plural_select_pt_br")) {
function string_plural_select_pt_br($n){
$n = intval($n);
return intval($n > 1);
}}
$a->strings['Permission denied.'] = 'Permissão negada.';
$a->strings['Save Settings'] = 'Salvar configurações';
$a->strings['Error when registering buffer connection:'] = 'Erro ao registrar conexão de buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Você está autenticado no buffer.';
$a->strings['return to the connector page'] = 'Volte a página de conectores.';
$a->strings['Post to Buffer'] = 'Publicar no Buffer';
$a->strings['Buffer Export'] = 'Exportar Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Autenticar sua conexão de Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Habilita addon para publicar no Buffer';
$a->strings['Post to Buffer by default'] = 'Publica no Buffer por padrão';
$a->strings['Check to delete this preset'] = 'Marque para excluir este perfil';

View file

@ -1,75 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2014-07-08 11:45+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Permisiune refuzată."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Salvare Configurări"
#: buffer.php:59
msgid "Client ID"
msgstr "ID Client"
#: buffer.php:60
msgid "Client Secret"
msgstr "Cheia Secretă Client"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Eroare la înregistrarea conexiunii Buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Acum sunteți autentificat pe Buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "revenire la pagina de conectare"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Postați pe Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Export pe Buffer "
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Autentificați-vă conectarea la Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Activare Modul Postare pe Buffer"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Postați implicit pe Buffer"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Bifați pentru a șterge această presetare"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Posturile merg către toate conturile care sunt activate implicit:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['Permission denied.'] = 'Permisiune refuzată.';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['Client ID'] = 'ID Client';
$a->strings['Client Secret'] = 'Cheia Secretă Client';
$a->strings['Error when registering buffer connection:'] = 'Eroare la înregistrarea conexiunii Buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Acum sunteți autentificat pe Buffer.';
$a->strings['return to the connector page'] = 'revenire la pagina de conectare';
$a->strings['Post to Buffer'] = 'Postați pe Buffer';
$a->strings['Buffer Export'] = 'Export pe Buffer ';
$a->strings['Authenticate your Buffer connection'] = 'Autentificați-vă conectarea la Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Activare Modul Postare pe Buffer';
$a->strings['Post to Buffer by default'] = 'Postați implicit pe Buffer';
$a->strings['Check to delete this preset'] = 'Bifați pentru a șterge această presetare';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Posturile merg către toate conturile care sunt activate implicit:';

View file

@ -1,76 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Stanislav N. <pztrn@pztrn.name>, 2017-2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2018-05-25 00:01+0000\n"
"Last-Translator: Stanislav N. <pztrn@pztrn.name>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/friendica/language/ru/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ru\n"
"Plural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Доступ запрещен."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Сохранить настройки"
#: buffer.php:59
msgid "Client ID"
msgstr "Client ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Client Secret"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Ошибка при регистрации соединения Buffer:"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Вы аутентифицированы на Buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "вернуться на страницу коннектора"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Написать в Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Экспорт в Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Аутентифицируйте свое соединение с Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Включить аддон Buffer Post"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Отправлять в Buffer по умолчанию"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Отметьте для удаления этих настроек"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Сообщения уходят во все учетные записи по умолчанию:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_ru")) {
function string_plural_select_ru($n){
$n = intval($n);
if ($n%10==1 && $n%100!=11) { return 0; } else if ($n%10>=2 && $n%10<=4 && ($n%100<12 || $n%100>14)) { return 1; } else if ($n%10==0 || ($n%10>=5 && $n%10<=9) || ($n%100>=11 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Permission denied.'] = 'Доступ запрещен.';
$a->strings['Save Settings'] = 'Сохранить настройки';
$a->strings['Client ID'] = 'Client ID';
$a->strings['Client Secret'] = 'Client Secret';
$a->strings['Error when registering buffer connection:'] = 'Ошибка при регистрации соединения Buffer:';
$a->strings['You are now authenticated to buffer. '] = 'Вы аутентифицированы на Buffer.';
$a->strings['return to the connector page'] = 'вернуться на страницу коннектора';
$a->strings['Post to Buffer'] = 'Написать в Buffer';
$a->strings['Buffer Export'] = 'Экспорт в Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Аутентифицируйте свое соединение с Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Включить аддон Buffer Post';
$a->strings['Post to Buffer by default'] = 'Отправлять в Buffer по умолчанию';
$a->strings['Check to delete this preset'] = 'Отметьте для удаления этих настроек';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Сообщения уходят во все учетные записи по умолчанию:';

View file

@ -1,77 +0,0 @@
# ADDON buffer
# Copyright (C)
# This file is distributed under the same license as the Friendica buffer addon package.
#
#
# Translators:
# Hypolite Petovan <hypolite@mrpetovan.com>, 2019
# Bjoessi <torbjorn.andersson@syte.se>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-22 13:18+0200\n"
"PO-Revision-Date: 2019-08-20 08:07+0000\n"
"Last-Translator: Bjoessi <torbjorn.andersson@syte.se>\n"
"Language-Team: Swedish (http://www.transifex.com/Friendica/friendica/language/sv/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: sv\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: buffer.php:31
msgid "Permission denied."
msgstr "Åtkomst nekad."
#: buffer.php:57 buffer.php:185
msgid "Save Settings"
msgstr "Spara inställningar"
#: buffer.php:59
msgid "Client ID"
msgstr "Klient-ID"
#: buffer.php:60
msgid "Client Secret"
msgstr "Klient hemlig nyckel"
#: buffer.php:67
msgid "Error when registering buffer connection:"
msgstr "Fel vid anslutning till Buffer"
#: buffer.php:86
msgid "You are now authenticated to buffer. "
msgstr "Du är nu autentiserad mot Buffer."
#: buffer.php:87
msgid "return to the connector page"
msgstr "återgå till anslutningssida"
#: buffer.php:103
msgid "Post to Buffer"
msgstr "Inlägg till Buffer"
#: buffer.php:128 buffer.php:132
msgid "Buffer Export"
msgstr "Export till Buffer"
#: buffer.php:142
msgid "Authenticate your Buffer connection"
msgstr "Validera din anslutning mot Buffer"
#: buffer.php:146
msgid "Enable Buffer Post Addon"
msgstr "Aktivera tillägg för Buffer-inlägg"
#: buffer.php:151
msgid "Post to Buffer by default"
msgstr "Lägg in på Buffer som standard"
#: buffer.php:156
msgid "Check to delete this preset"
msgstr "Markera för att ta bort förinställning"
#: buffer.php:165
msgid "Posts are going to all accounts that are enabled by default:"
msgstr "Inlägg skickas som standard till alla konton som är aktiverade:"

View file

@ -1,21 +0,0 @@
<?php
if(! function_exists("string_plural_select_sv")) {
function string_plural_select_sv($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Permission denied.'] = 'Åtkomst nekad.';
$a->strings['Save Settings'] = 'Spara inställningar';
$a->strings['Client ID'] = 'Klient-ID';
$a->strings['Client Secret'] = 'Klient hemlig nyckel';
$a->strings['Error when registering buffer connection:'] = 'Fel vid anslutning till Buffer';
$a->strings['You are now authenticated to buffer. '] = 'Du är nu autentiserad mot Buffer.';
$a->strings['return to the connector page'] = 'återgå till anslutningssida';
$a->strings['Post to Buffer'] = 'Inlägg till Buffer';
$a->strings['Buffer Export'] = 'Export till Buffer';
$a->strings['Authenticate your Buffer connection'] = 'Validera din anslutning mot Buffer';
$a->strings['Enable Buffer Post Addon'] = 'Aktivera tillägg för Buffer-inlägg';
$a->strings['Post to Buffer by default'] = 'Lägg in på Buffer som standard';
$a->strings['Check to delete this preset'] = 'Markera för att ta bort förinställning';
$a->strings['Posts are going to all accounts that are enabled by default:'] = 'Inlägg skickas som standard till alla konton som är aktiverade:';

View file

@ -1,3 +0,0 @@
{{include file="field_input.tpl" field=$client_id}}
{{include file="field_input.tpl" field=$client_secret}}
<div class="submit"><input type="submit" name="page_site" value="{{$submit}}" /></div>

2
fancybox/.gitignore vendored
View file

@ -1,2 +0,0 @@
/dist/
/test/

View file

@ -1,27 +0,0 @@
### Version 1.05
* Added ALT and TITLE of original IMG to fancybox popup.
### Version 1.04
* Update supporting upcoming imnagegrid in posts
### Version 1.03
* imgages in body-attach with title / alt attribute get them removed while adding fancy attributes
* Added fancybox to image inlined in posts. Un-hooked the old lightbox from frio and vier and excahnged that with fancybox hooks.
* Excluded images in "type-link" divs from being "fancied" as they have no images but pages linked to.
### Version 1.02
* [MrPetovan](https://github.com/MrPetovan) optimized my noob regular expression code.
### Version 1.01
* One gallery for each post
* All media attached to a post are added to the posts gallery.
* Loop scrolling: You can step from last media to first and vice versa.
### Version 1.00
* First test version released.
* One fancybox per page displaying first media of each post.

View file

@ -1,19 +0,0 @@
# Post image gallery using fancybox
Addon author: [Grischa Brockhaus](https://brockha.us)
## Description
This addon loads all media attachments of a post into a "fancybox" instead of linking directly to the media.
Each post gets its own attachment library, when there are more than one media attached you can scroll through them.
## Licenses
### Fancybox Library
This AddOn is using the jQuery library [fancybox](https://github.com/fancyapps/fancybox).
The fancyBox libryry is licensed under the GPLv3 license for all open source applications. A commercial license is required for all commercial applications (including sites, themes and apps you plan to sell).
[Read more about fancyBox license](https://github.com/fancyapps/fancybox).

View file

@ -1,62 +0,0 @@
# fancyBox 3.5.7
jQuery lightbox script for displaying images, videos and more.
Touch enabled, responsive and fully customizable.
See the [project page](http://fancyapps.com/fancybox/3/) for documentation and a demonstration.
Follow [@thefancyapps](//twitter.com/thefancyapps) for updates.
## Quick start
1\. Add latest jQuery and fancyBox files
```html
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<link href="/path/to/jquery.fancybox.min.css" rel="stylesheet">
<script src="/path/to/jquery.fancybox.min.js"></script>
```
2\. Create links
```html
<a data-fancybox="gallery" href="big_1.jpg">
<img src="small_1.jpg">
</a>
<a data-fancybox="gallery" href="big_2.jpg">
<img src="small_2.jpg">
</a>
```
3\. Enjoy!
## License
fancyBox is licensed under the [GPLv3](http://choosealicense.com/licenses/gpl-3.0) license for all open source applications.
A commercial license is required for all commercial applications (including sites, themes and apps you plan to sell).
[Read more about fancyBox license](http://fancyapps.com/fancybox/3/#license).
## Bugs and feature requests
If you find a bug, please report it [here on Github](https://github.com/fancyapps/fancybox/issues).
Guidelines for bug reports:
1. Use the GitHub issue search — check if the issue has already been reported.
2. Check if the issue has been fixed — try to reproduce it using the latest master or development branch in the repository.
3. Isolate the problem — create a reduced test case and a live example. You can use CodePen to fork any demo found on documentation to use it as a template.
A good bug report shouldn't leave others needing to chase you up for more information.
Please try to be as detailed as possible in your report.
Feature requests are welcome. Please look for existing ones and use GitHub's "reactions" feature to vote.
Please do not use the issue tracker for personal support requests - use Stack Overflow ([fancybox-3](http://stackoverflow.com/questions/tagged/fancybox-3) tag) instead.

View file

@ -1,13 +0,0 @@
$(document).ready(function() {
$.fancybox.defaults.loop = "true";
// this disables the colorbox hook found in frio/js/modal.js:34
$("body").off("click", ".wall-item-body a img");
// Adds ALT/TITLE text to fancybox
$('a[data-fancybox').fancybox({
afterLoad : function(instance, current) {
current.$image.attr('alt', current.opts.$orig.find('img').attr('alt') );
current.$image.attr('title', current.opts.$orig.find('img').attr('title') );
}
});
});

View file

@ -1,895 +0,0 @@
body.compensate-for-scrollbar {
overflow: hidden;
}
.fancybox-active {
height: auto;
}
.fancybox-is-hidden {
left: -9999px;
margin: 0;
position: absolute !important;
top: -9999px;
visibility: hidden;
}
.fancybox-container {
-webkit-backface-visibility: hidden;
height: 100%;
left: 0;
outline: none;
position: fixed;
-webkit-tap-highlight-color: transparent;
top: 0;
-ms-touch-action: manipulation;
touch-action: manipulation;
transform: translateZ(0);
width: 100%;
z-index: 99992;
}
.fancybox-container * {
box-sizing: border-box;
}
.fancybox-outer,
.fancybox-inner,
.fancybox-bg,
.fancybox-stage {
bottom: 0;
left: 0;
position: absolute;
right: 0;
top: 0;
}
.fancybox-outer {
-webkit-overflow-scrolling: touch;
overflow-y: auto;
}
.fancybox-bg {
background: rgb(30, 30, 30);
opacity: 0;
transition-duration: inherit;
transition-property: opacity;
transition-timing-function: cubic-bezier(.47, 0, .74, .71);
}
.fancybox-is-open .fancybox-bg {
opacity: .9;
transition-timing-function: cubic-bezier(.22, .61, .36, 1);
}
.fancybox-infobar,
.fancybox-toolbar,
.fancybox-caption,
.fancybox-navigation .fancybox-button {
direction: ltr;
opacity: 0;
position: absolute;
transition: opacity .25s ease, visibility 0s ease .25s;
visibility: hidden;
z-index: 99997;
}
.fancybox-show-infobar .fancybox-infobar,
.fancybox-show-toolbar .fancybox-toolbar,
.fancybox-show-caption .fancybox-caption,
.fancybox-show-nav .fancybox-navigation .fancybox-button {
opacity: 1;
transition: opacity .25s ease 0s, visibility 0s ease 0s;
visibility: visible;
}
.fancybox-infobar {
color: #ccc;
font-size: 13px;
-webkit-font-smoothing: subpixel-antialiased;
height: 44px;
left: 0;
line-height: 44px;
min-width: 44px;
mix-blend-mode: difference;
padding: 0 10px;
pointer-events: none;
top: 0;
-webkit-touch-callout: none;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
}
.fancybox-toolbar {
right: 0;
top: 0;
}
.fancybox-stage {
direction: ltr;
overflow: visible;
transform: translateZ(0);
z-index: 99994;
}
.fancybox-is-open .fancybox-stage {
overflow: hidden;
}
.fancybox-slide {
-webkit-backface-visibility: hidden;
/* Using without prefix would break IE11 */
display: none;
height: 100%;
left: 0;
outline: none;
overflow: auto;
-webkit-overflow-scrolling: touch;
padding: 44px;
position: absolute;
text-align: center;
top: 0;
transition-property: transform, opacity;
white-space: normal;
width: 100%;
z-index: 99994;
}
.fancybox-slide::before {
content: '';
display: inline-block;
font-size: 0;
height: 100%;
vertical-align: middle;
width: 0;
}
.fancybox-is-sliding .fancybox-slide,
.fancybox-slide--previous,
.fancybox-slide--current,
.fancybox-slide--next {
display: block;
}
.fancybox-slide--image {
overflow: hidden;
padding: 44px 0;
}
.fancybox-slide--image::before {
display: none;
}
.fancybox-slide--html {
padding: 6px;
}
.fancybox-content {
background: #fff;
display: inline-block;
margin: 0;
max-width: 100%;
overflow: auto;
-webkit-overflow-scrolling: touch;
padding: 44px;
position: relative;
text-align: left;
vertical-align: middle;
}
.fancybox-slide--image .fancybox-content {
animation-timing-function: cubic-bezier(.5, 0, .14, 1);
-webkit-backface-visibility: hidden;
background: transparent;
background-repeat: no-repeat;
background-size: 100% 100%;
left: 0;
max-width: none;
overflow: visible;
padding: 0;
position: absolute;
top: 0;
-ms-transform-origin: top left;
transform-origin: top left;
transition-property: transform, opacity;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
z-index: 99995;
}
.fancybox-can-zoomOut .fancybox-content {
cursor: zoom-out;
}
.fancybox-can-zoomIn .fancybox-content {
cursor: zoom-in;
}
.fancybox-can-swipe .fancybox-content,
.fancybox-can-pan .fancybox-content {
cursor: -webkit-grab;
cursor: grab;
}
.fancybox-is-grabbing .fancybox-content {
cursor: -webkit-grabbing;
cursor: grabbing;
}
.fancybox-container [data-selectable='true'] {
cursor: text;
}
.fancybox-image,
.fancybox-spaceball {
background: transparent;
border: 0;
height: 100%;
left: 0;
margin: 0;
max-height: none;
max-width: none;
padding: 0;
position: absolute;
top: 0;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
width: 100%;
}
.fancybox-spaceball {
z-index: 1;
}
.fancybox-slide--video .fancybox-content,
.fancybox-slide--map .fancybox-content,
.fancybox-slide--pdf .fancybox-content,
.fancybox-slide--iframe .fancybox-content {
height: 100%;
overflow: visible;
padding: 0;
width: 100%;
}
.fancybox-slide--video .fancybox-content {
background: #000;
}
.fancybox-slide--map .fancybox-content {
background: #e5e3df;
}
.fancybox-slide--iframe .fancybox-content {
background: #fff;
}
.fancybox-video,
.fancybox-iframe {
background: transparent;
border: 0;
display: block;
height: 100%;
margin: 0;
overflow: hidden;
padding: 0;
width: 100%;
}
/* Fix iOS */
.fancybox-iframe {
left: 0;
position: absolute;
top: 0;
}
.fancybox-error {
background: #fff;
cursor: default;
max-width: 400px;
padding: 40px;
width: 100%;
}
.fancybox-error p {
color: #444;
font-size: 16px;
line-height: 20px;
margin: 0;
padding: 0;
}
/* Buttons */
.fancybox-button {
background: rgba(30, 30, 30, .6);
border: 0;
border-radius: 0;
box-shadow: none;
cursor: pointer;
display: inline-block;
height: 44px;
margin: 0;
padding: 10px;
position: relative;
transition: color .2s;
vertical-align: top;
visibility: inherit;
width: 44px;
}
.fancybox-button,
.fancybox-button:visited,
.fancybox-button:link {
color: #ccc;
}
.fancybox-button:hover {
color: #fff;
}
.fancybox-button:focus {
outline: none;
}
.fancybox-button.fancybox-focus {
outline: 1px dotted;
}
.fancybox-button[disabled],
.fancybox-button[disabled]:hover {
color: #888;
cursor: default;
outline: none;
}
/* Fix IE11 */
.fancybox-button div {
height: 100%;
}
.fancybox-button svg {
display: block;
height: 100%;
overflow: visible;
position: relative;
width: 100%;
}
.fancybox-button svg path {
fill: currentColor;
stroke-width: 0;
}
.fancybox-button--play svg:nth-child(2),
.fancybox-button--fsenter svg:nth-child(2) {
display: none;
}
.fancybox-button--pause svg:nth-child(1),
.fancybox-button--fsexit svg:nth-child(1) {
display: none;
}
.fancybox-progress {
background: #ff5268;
height: 2px;
left: 0;
position: absolute;
right: 0;
top: 0;
-ms-transform: scaleX(0);
transform: scaleX(0);
-ms-transform-origin: 0;
transform-origin: 0;
transition-property: transform;
transition-timing-function: linear;
z-index: 99998;
}
/* Close button on the top right corner of html content */
.fancybox-close-small {
background: transparent;
border: 0;
border-radius: 0;
color: #ccc;
cursor: pointer;
opacity: .8;
padding: 8px;
position: absolute;
right: -12px;
top: -44px;
z-index: 401;
}
.fancybox-close-small:hover {
color: #fff;
opacity: 1;
}
.fancybox-slide--html .fancybox-close-small {
color: currentColor;
padding: 10px;
right: 0;
top: 0;
}
.fancybox-slide--image.fancybox-is-scaling .fancybox-content {
overflow: hidden;
}
.fancybox-is-scaling .fancybox-close-small,
.fancybox-is-zoomable.fancybox-can-pan .fancybox-close-small {
display: none;
}
/* Navigation arrows */
.fancybox-navigation .fancybox-button {
background-clip: content-box;
height: 100px;
opacity: 0;
position: absolute;
top: calc(50% - 50px);
width: 70px;
}
.fancybox-navigation .fancybox-button div {
padding: 7px;
}
.fancybox-navigation .fancybox-button--arrow_left {
left: 0;
left: env(safe-area-inset-left);
padding: 31px 26px 31px 6px;
}
.fancybox-navigation .fancybox-button--arrow_right {
padding: 31px 6px 31px 26px;
right: 0;
right: env(safe-area-inset-right);
}
/* Caption */
.fancybox-caption {
background: linear-gradient(to top,
rgba(0, 0, 0, .85) 0%,
rgba(0, 0, 0, .3) 50%,
rgba(0, 0, 0, .15) 65%,
rgba(0, 0, 0, .075) 75.5%,
rgba(0, 0, 0, .037) 82.85%,
rgba(0, 0, 0, .019) 88%,
rgba(0, 0, 0, 0) 100%);
bottom: 0;
color: #eee;
font-size: 14px;
font-weight: 400;
left: 0;
line-height: 1.5;
padding: 75px 44px 25px 44px;
pointer-events: none;
right: 0;
text-align: center;
z-index: 99996;
}
@supports (padding: max(0px)) {
.fancybox-caption {
padding: 75px max(44px, env(safe-area-inset-right)) max(25px, env(safe-area-inset-bottom)) max(44px, env(safe-area-inset-left));
}
}
.fancybox-caption--separate {
margin-top: -50px;
}
.fancybox-caption__body {
max-height: 50vh;
overflow: auto;
pointer-events: all;
}
.fancybox-caption a,
.fancybox-caption a:link,
.fancybox-caption a:visited {
color: #ccc;
text-decoration: none;
}
.fancybox-caption a:hover {
color: #fff;
text-decoration: underline;
}
/* Loading indicator */
.fancybox-loading {
animation: fancybox-rotate 1s linear infinite;
background: transparent;
border: 4px solid #888;
border-bottom-color: #fff;
border-radius: 50%;
height: 50px;
left: 50%;
margin: -25px 0 0 -25px;
opacity: .7;
padding: 0;
position: absolute;
top: 50%;
width: 50px;
z-index: 99999;
}
@keyframes fancybox-rotate {
100% {
transform: rotate(360deg);
}
}
/* Transition effects */
.fancybox-animated {
transition-timing-function: cubic-bezier(0, 0, .25, 1);
}
/* transitionEffect: slide */
.fancybox-fx-slide.fancybox-slide--previous {
opacity: 0;
transform: translate3d(-100%, 0, 0);
}
.fancybox-fx-slide.fancybox-slide--next {
opacity: 0;
transform: translate3d(100%, 0, 0);
}
.fancybox-fx-slide.fancybox-slide--current {
opacity: 1;
transform: translate3d(0, 0, 0);
}
/* transitionEffect: fade */
.fancybox-fx-fade.fancybox-slide--previous,
.fancybox-fx-fade.fancybox-slide--next {
opacity: 0;
transition-timing-function: cubic-bezier(.19, 1, .22, 1);
}
.fancybox-fx-fade.fancybox-slide--current {
opacity: 1;
}
/* transitionEffect: zoom-in-out */
.fancybox-fx-zoom-in-out.fancybox-slide--previous {
opacity: 0;
transform: scale3d(1.5, 1.5, 1.5);
}
.fancybox-fx-zoom-in-out.fancybox-slide--next {
opacity: 0;
transform: scale3d(.5, .5, .5);
}
.fancybox-fx-zoom-in-out.fancybox-slide--current {
opacity: 1;
transform: scale3d(1, 1, 1);
}
/* transitionEffect: rotate */
.fancybox-fx-rotate.fancybox-slide--previous {
opacity: 0;
-ms-transform: rotate(-360deg);
transform: rotate(-360deg);
}
.fancybox-fx-rotate.fancybox-slide--next {
opacity: 0;
-ms-transform: rotate(360deg);
transform: rotate(360deg);
}
.fancybox-fx-rotate.fancybox-slide--current {
opacity: 1;
-ms-transform: rotate(0deg);
transform: rotate(0deg);
}
/* transitionEffect: circular */
.fancybox-fx-circular.fancybox-slide--previous {
opacity: 0;
transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0);
}
.fancybox-fx-circular.fancybox-slide--next {
opacity: 0;
transform: scale3d(0, 0, 0) translate3d(100%, 0, 0);
}
.fancybox-fx-circular.fancybox-slide--current {
opacity: 1;
transform: scale3d(1, 1, 1) translate3d(0, 0, 0);
}
/* transitionEffect: tube */
.fancybox-fx-tube.fancybox-slide--previous {
transform: translate3d(-100%, 0, 0) scale(.1) skew(-10deg);
}
.fancybox-fx-tube.fancybox-slide--next {
transform: translate3d(100%, 0, 0) scale(.1) skew(10deg);
}
.fancybox-fx-tube.fancybox-slide--current {
transform: translate3d(0, 0, 0) scale(1);
}
/* Styling for Small-Screen Devices */
@media all and (max-height: 576px) {
.fancybox-slide {
padding-left: 6px;
padding-right: 6px;
}
.fancybox-slide--image {
padding: 6px 0;
}
.fancybox-close-small {
right: -6px;
}
.fancybox-slide--image .fancybox-close-small {
background: #4e4e4e;
color: #f2f4f6;
height: 36px;
opacity: 1;
padding: 6px;
right: 0;
top: 0;
width: 36px;
}
.fancybox-caption {
padding-left: 12px;
padding-right: 12px;
}
@supports (padding: max(0px)) {
.fancybox-caption {
padding-left: max(12px, env(safe-area-inset-left));
padding-right: max(12px, env(safe-area-inset-right));
}
}
}
/* Share */
.fancybox-share {
background: #f4f4f4;
border-radius: 3px;
max-width: 90%;
padding: 30px;
text-align: center;
}
.fancybox-share h1 {
color: #222;
font-size: 35px;
font-weight: 700;
margin: 0 0 20px 0;
}
.fancybox-share p {
margin: 0;
padding: 0;
}
.fancybox-share__button {
border: 0;
border-radius: 3px;
display: inline-block;
font-size: 14px;
font-weight: 700;
line-height: 40px;
margin: 0 5px 10px 5px;
min-width: 130px;
padding: 0 15px;
text-decoration: none;
transition: all .2s;
-webkit-user-select: none;
-moz-user-select: none;
-ms-user-select: none;
user-select: none;
white-space: nowrap;
}
.fancybox-share__button:visited,
.fancybox-share__button:link {
color: #fff;
}
.fancybox-share__button:hover {
text-decoration: none;
}
.fancybox-share__button--fb {
background: #3b5998;
}
.fancybox-share__button--fb:hover {
background: #344e86;
}
.fancybox-share__button--pt {
background: #bd081d;
}
.fancybox-share__button--pt:hover {
background: #aa0719;
}
.fancybox-share__button--tw {
background: #1da1f2;
}
.fancybox-share__button--tw:hover {
background: #0d95e8;
}
.fancybox-share__button svg {
height: 25px;
margin-right: 7px;
position: relative;
top: -1px;
vertical-align: middle;
width: 25px;
}
.fancybox-share__button svg path {
fill: #fff;
}
.fancybox-share__input {
background: transparent;
border: 0;
border-bottom: 1px solid #d7d7d7;
border-radius: 0;
color: #5d5b5b;
font-size: 14px;
margin: 10px 0 0 0;
outline: none;
padding: 10px 15px;
width: 100%;
}
/* Thumbs */
.fancybox-thumbs {
background: #ddd;
bottom: 0;
display: none;
margin: 0;
-webkit-overflow-scrolling: touch;
-ms-overflow-style: -ms-autohiding-scrollbar;
padding: 2px 2px 4px 2px;
position: absolute;
right: 0;
-webkit-tap-highlight-color: rgba(0, 0, 0, 0);
top: 0;
width: 212px;
z-index: 99995;
}
.fancybox-thumbs-x {
overflow-x: auto;
overflow-y: hidden;
}
.fancybox-show-thumbs .fancybox-thumbs {
display: block;
}
.fancybox-show-thumbs .fancybox-inner {
right: 212px;
}
.fancybox-thumbs__list {
font-size: 0;
height: 100%;
list-style: none;
margin: 0;
overflow-x: hidden;
overflow-y: auto;
padding: 0;
position: absolute;
position: relative;
white-space: nowrap;
width: 100%;
}
.fancybox-thumbs-x .fancybox-thumbs__list {
overflow: hidden;
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar {
width: 7px;
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-track {
background: #fff;
border-radius: 10px;
box-shadow: inset 0 0 6px rgba(0, 0, 0, .3);
}
.fancybox-thumbs-y .fancybox-thumbs__list::-webkit-scrollbar-thumb {
background: #2a2a2a;
border-radius: 10px;
}
.fancybox-thumbs__list a {
-webkit-backface-visibility: hidden;
backface-visibility: hidden;
background-color: rgba(0, 0, 0, .1);
background-position: center center;
background-repeat: no-repeat;
background-size: cover;
cursor: pointer;
float: left;
height: 75px;
margin: 2px;
max-height: calc(100% - 8px);
max-width: calc(50% - 4px);
outline: none;
overflow: hidden;
padding: 0;
position: relative;
-webkit-tap-highlight-color: transparent;
width: 100px;
}
.fancybox-thumbs__list a::before {
border: 6px solid #ff5268;
bottom: 0;
content: '';
left: 0;
opacity: 0;
position: absolute;
right: 0;
top: 0;
transition: all .2s cubic-bezier(.25, .46, .45, .94);
z-index: 99991;
}
.fancybox-thumbs__list a:focus::before {
opacity: .5;
}
.fancybox-thumbs__list a.fancybox-thumbs-active::before {
opacity: 1;
}
/* Styling for Small-Screen Devices */
@media all and (max-width: 576px) {
.fancybox-thumbs {
width: 110px;
}
.fancybox-show-thumbs .fancybox-inner {
right: 110px;
}
.fancybox-thumbs__list a {
max-width: calc(100% - 10px);
}
}

View file

@ -1,5632 +0,0 @@
// ==================================================
// fancyBox v3.5.7
//
// Licensed GPLv3 for open source use
// or fancyBox Commercial License for commercial use
//
// http://fancyapps.com/fancybox/
// Copyright 2019 fancyApps
//
// ==================================================
(function (window, document, $, undefined) {
"use strict";
window.console = window.console || {
info: function (stuff) {}
};
// If there's no jQuery, fancyBox can't work
// =========================================
if (!$) {
return;
}
// Check if fancyBox is already initialized
// ========================================
if ($.fn.fancybox) {
console.info("fancyBox already initialized");
return;
}
// Private default settings
// ========================
var defaults = {
// Close existing modals
// Set this to false if you do not need to stack multiple instances
closeExisting: false,
// Enable infinite gallery navigation
loop: false,
// Horizontal space between slides
gutter: 50,
// Enable keyboard navigation
keyboard: true,
// Should allow caption to overlap the content
preventCaptionOverlap: true,
// Should display navigation arrows at the screen edges
arrows: true,
// Should display counter at the top left corner
infobar: true,
// Should display close button (using `btnTpl.smallBtn` template) over the content
// Can be true, false, "auto"
// If "auto" - will be automatically enabled for "html", "inline" or "ajax" items
smallBtn: "auto",
// Should display toolbar (buttons at the top)
// Can be true, false, "auto"
// If "auto" - will be automatically hidden if "smallBtn" is enabled
toolbar: "auto",
// What buttons should appear in the top right corner.
// Buttons will be created using templates from `btnTpl` option
// and they will be placed into toolbar (class="fancybox-toolbar"` element)
buttons: [
"zoom",
//"share",
"slideShow",
//"fullScreen",
//"download",
"thumbs",
"close"
],
// Detect "idle" time in seconds
idleTime: 3,
// Disable right-click and use simple image protection for images
protect: false,
// Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc
modal: false,
image: {
// Wait for images to load before displaying
// true - wait for image to load and then display;
// false - display thumbnail and load the full-sized image over top,
// requires predefined image dimensions (`data-width` and `data-height` attributes)
preload: false
},
ajax: {
// Object containing settings for ajax request
settings: {
// This helps to indicate that request comes from the modal
// Feel free to change naming
data: {
fancybox: true
}
}
},
iframe: {
// Iframe template
tpl: '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" allowfullscreen="allowfullscreen" allow="autoplay; fullscreen" src=""></iframe>',
// Preload iframe before displaying it
// This allows to calculate iframe content width and height
// (note: Due to "Same Origin Policy", you can't get cross domain data).
preload: true,
// Custom CSS styling for iframe wrapping element
// You can use this to set custom iframe dimensions
css: {},
// Iframe tag attributes
attr: {
scrolling: "auto"
}
},
// For HTML5 video only
video: {
tpl: '<video class="fancybox-video" controls controlsList="nodownload" poster="{{poster}}">' +
'<source src="{{src}}" type="{{format}}" />' +
'Sorry, your browser doesn\'t support embedded videos, <a href="{{src}}">download</a> and watch with your favorite video player!' +
"</video>",
format: "", // custom video format
autoStart: true
},
// Default content type if cannot be detected automatically
defaultType: "image",
// Open/close animation type
// Possible values:
// false - disable
// "zoom" - zoom images from/to thumbnail
// "fade"
// "zoom-in-out"
//
animationEffect: "zoom",
// Duration in ms for open/close animation
animationDuration: 366,
// Should image change opacity while zooming
// If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios
zoomOpacity: "auto",
// Transition effect between slides
//
// Possible values:
// false - disable
// "fade'
// "slide'
// "circular'
// "tube'
// "zoom-in-out'
// "rotate'
//
transitionEffect: "fade",
// Duration in ms for transition animation
transitionDuration: 366,
// Custom CSS class for slide element
slideClass: "",
// Custom CSS class for layout
baseClass: "",
// Base template for layout
baseTpl: '<div class="fancybox-container" role="dialog" tabindex="-1">' +
'<div class="fancybox-bg"></div>' +
'<div class="fancybox-inner">' +
'<div class="fancybox-infobar"><span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span></div>' +
'<div class="fancybox-toolbar">{{buttons}}</div>' +
'<div class="fancybox-navigation">{{arrows}}</div>' +
'<div class="fancybox-stage"></div>' +
'<div class="fancybox-caption"><div class="fancybox-caption__body"></div></div>' +
"</div>" +
"</div>",
// Loading indicator template
spinnerTpl: '<div class="fancybox-loading"></div>',
// Error message template
errorTpl: '<div class="fancybox-error"><p>{{ERROR}}</p></div>',
btnTpl: {
download: '<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}" href="javascript:;">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.62 17.09V19H5.38v-1.91zm-2.97-6.96L17 11.45l-5 4.87-5-4.87 1.36-1.32 2.68 2.64V5h1.92v7.77z"/></svg>' +
"</a>",
zoom: '<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M18.7 17.3l-3-3a5.9 5.9 0 0 0-.6-7.6 5.9 5.9 0 0 0-8.4 0 5.9 5.9 0 0 0 0 8.4 5.9 5.9 0 0 0 7.7.7l3 3a1 1 0 0 0 1.3 0c.4-.5.4-1 0-1.5zM8.1 13.8a4 4 0 0 1 0-5.7 4 4 0 0 1 5.7 0 4 4 0 0 1 0 5.7 4 4 0 0 1-5.7 0z"/></svg>' +
"</button>",
close: '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M12 10.6L6.6 5.2 5.2 6.6l5.4 5.4-5.4 5.4 1.4 1.4 5.4-5.4 5.4 5.4 1.4-1.4-5.4-5.4 5.4-5.4-1.4-1.4-5.4 5.4z"/></svg>' +
"</button>",
// Arrows
arrowLeft: '<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}">' +
'<div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M11.28 15.7l-1.34 1.37L5 12l4.94-5.07 1.34 1.38-2.68 2.72H19v1.94H8.6z"/></svg></div>' +
"</button>",
arrowRight: '<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}">' +
'<div><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M15.4 12.97l-2.68 2.72 1.34 1.38L19 12l-4.94-5.07-1.34 1.38 2.68 2.72H5v1.94z"/></svg></div>' +
"</button>",
// This small close button will be appended to your html/inline/ajax content by default,
// if "smallBtn" option is not set to false
smallBtn: '<button type="button" data-fancybox-close class="fancybox-button fancybox-close-small" title="{{CLOSE}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" version="1" viewBox="0 0 24 24"><path d="M13 12l5-5-1-1-5 5-5-5-1 1 5 5-5 5 1 1 5-5 5 5 1-1z"/></svg>' +
"</button>"
},
// Container is injected into this element
parentEl: "body",
// Hide browser vertical scrollbars; use at your own risk
hideScrollbar: true,
// Focus handling
// ==============
// Try to focus on the first focusable element after opening
autoFocus: true,
// Put focus back to active element after closing
backFocus: true,
// Do not let user to focus on element outside modal content
trapFocus: true,
// Module specific options
// =======================
fullScreen: {
autoStart: false
},
// Set `touch: false` to disable panning/swiping
touch: {
vertical: true, // Allow to drag content vertically
momentum: true // Continue movement after releasing mouse/touch when panning
},
// Hash value when initializing manually,
// set `false` to disable hash change
hash: null,
// Customize or add new media types
// Example:
/*
media : {
youtube : {
params : {
autoplay : 0
}
}
}
*/
media: {},
slideShow: {
autoStart: false,
speed: 3000
},
thumbs: {
autoStart: false, // Display thumbnails on opening
hideOnClose: true, // Hide thumbnail grid when closing animation starts
parentEl: ".fancybox-container", // Container is injected into this element
axis: "y" // Vertical (y) or horizontal (x) scrolling
},
// Use mousewheel to navigate gallery
// If 'auto' - enabled for images only
wheel: "auto",
// Callbacks
//==========
// See Documentation/API/Events for more information
// Example:
/*
afterShow: function( instance, current ) {
console.info( 'Clicked element:' );
console.info( current.opts.$orig );
}
*/
onInit: $.noop, // When instance has been initialized
beforeLoad: $.noop, // Before the content of a slide is being loaded
afterLoad: $.noop, // When the content of a slide is done loading
beforeShow: $.noop, // Before open animation starts
afterShow: $.noop, // When content is done loading and animating
beforeClose: $.noop, // Before the instance attempts to close. Return false to cancel the close.
afterClose: $.noop, // After instance has been closed
onActivate: $.noop, // When instance is brought to front
onDeactivate: $.noop, // When other instance has been activated
// Interaction
// ===========
// Use options below to customize taken action when user clicks or double clicks on the fancyBox area,
// each option can be string or method that returns value.
//
// Possible values:
// "close" - close instance
// "next" - move to next gallery item
// "nextOrClose" - move to next gallery item or close if gallery has only one item
// "toggleControls" - show/hide controls
// "zoom" - zoom image (if loaded)
// false - do nothing
// Clicked on the content
clickContent: function (current, event) {
return current.type === "image" ? "zoom" : false;
},
// Clicked on the slide
clickSlide: "close",
// Clicked on the background (backdrop) element;
// if you have not changed the layout, then most likely you need to use `clickSlide` option
clickOutside: "close",
// Same as previous two, but for double click
dblclickContent: false,
dblclickSlide: false,
dblclickOutside: false,
// Custom options when mobile device is detected
// =============================================
mobile: {
preventCaptionOverlap: false,
idleTime: false,
clickContent: function (current, event) {
return current.type === "image" ? "toggleControls" : false;
},
clickSlide: function (current, event) {
return current.type === "image" ? "toggleControls" : "close";
},
dblclickContent: function (current, event) {
return current.type === "image" ? "zoom" : false;
},
dblclickSlide: function (current, event) {
return current.type === "image" ? "zoom" : false;
}
},
// Internationalization
// ====================
lang: "en",
i18n: {
en: {
CLOSE: "Close",
NEXT: "Next",
PREV: "Previous",
ERROR: "The requested content cannot be loaded. <br/> Please try again later.",
PLAY_START: "Start slideshow",
PLAY_STOP: "Pause slideshow",
FULL_SCREEN: "Full screen",
THUMBS: "Thumbnails",
DOWNLOAD: "Download",
SHARE: "Share",
ZOOM: "Zoom"
},
de: {
CLOSE: "Schlie&szlig;en",
NEXT: "Weiter",
PREV: "Zur&uuml;ck",
ERROR: "Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es sp&auml;ter nochmal.",
PLAY_START: "Diaschau starten",
PLAY_STOP: "Diaschau beenden",
FULL_SCREEN: "Vollbild",
THUMBS: "Vorschaubilder",
DOWNLOAD: "Herunterladen",
SHARE: "Teilen",
ZOOM: "Vergr&ouml;&szlig;ern"
}
}
};
// Few useful variables and methods
// ================================
var $W = $(window);
var $D = $(document);
var called = 0;
// Check if an object is a jQuery object and not a native JavaScript object
// ========================================================================
var isQuery = function (obj) {
return obj && obj.hasOwnProperty && obj instanceof $;
};
// Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame"
// ===============================================================================
var requestAFrame = (function () {
return (
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
// if all else fails, use setTimeout
function (callback) {
return window.setTimeout(callback, 1000 / 60);
}
);
})();
var cancelAFrame = (function () {
return (
window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
window.oCancelAnimationFrame ||
function (id) {
window.clearTimeout(id);
}
);
})();
// Detect the supported transition-end event property name
// =======================================================
var transitionEnd = (function () {
var el = document.createElement("fakeelement"),
t;
var transitions = {
transition: "transitionend",
OTransition: "oTransitionEnd",
MozTransition: "transitionend",
WebkitTransition: "webkitTransitionEnd"
};
for (t in transitions) {
if (el.style[t] !== undefined) {
return transitions[t];
}
}
return "transitionend";
})();
// Force redraw on an element.
// This helps in cases where the browser doesn't redraw an updated element properly
// ================================================================================
var forceRedraw = function ($el) {
return $el && $el.length && $el[0].offsetHeight;
};
// Exclude array (`buttons`) options from deep merging
// ===================================================
var mergeOpts = function (opts1, opts2) {
var rez = $.extend(true, {}, opts1, opts2);
$.each(opts2, function (key, value) {
if ($.isArray(value)) {
rez[key] = value;
}
});
return rez;
};
// How much of an element is visible in viewport
// =============================================
var inViewport = function (elem) {
var elemCenter, rez;
if (!elem || elem.ownerDocument !== document) {
return false;
}
$(".fancybox-container").css("pointer-events", "none");
elemCenter = {
x: elem.getBoundingClientRect().left + elem.offsetWidth / 2,
y: elem.getBoundingClientRect().top + elem.offsetHeight / 2
};
rez = document.elementFromPoint(elemCenter.x, elemCenter.y) === elem;
$(".fancybox-container").css("pointer-events", "");
return rez;
};
// Class definition
// ================
var FancyBox = function (content, opts, index) {
var self = this;
self.opts = mergeOpts({
index: index
}, $.fancybox.defaults);
if ($.isPlainObject(opts)) {
self.opts = mergeOpts(self.opts, opts);
}
if ($.fancybox.isMobile) {
self.opts = mergeOpts(self.opts, self.opts.mobile);
}
self.id = self.opts.id || ++called;
self.currIndex = parseInt(self.opts.index, 10) || 0;
self.prevIndex = null;
self.prevPos = null;
self.currPos = 0;
self.firstRun = true;
// All group items
self.group = [];
// Existing slides (for current, next and previous gallery items)
self.slides = {};
// Create group elements
self.addContent(content);
if (!self.group.length) {
return;
}
self.init();
};
$.extend(FancyBox.prototype, {
// Create DOM structure
// ====================
init: function () {
var self = this,
firstItem = self.group[self.currIndex],
firstItemOpts = firstItem.opts,
$container,
buttonStr;
if (firstItemOpts.closeExisting) {
$.fancybox.close(true);
}
// Hide scrollbars
// ===============
$("body").addClass("fancybox-active");
if (
!$.fancybox.getInstance() &&
firstItemOpts.hideScrollbar !== false &&
!$.fancybox.isMobile &&
document.body.scrollHeight > window.innerHeight
) {
$("head").append(
'<style id="fancybox-style-noscroll" type="text/css">.compensate-for-scrollbar{margin-right:' +
(window.innerWidth - document.documentElement.clientWidth) +
"px;}</style>"
);
$("body").addClass("compensate-for-scrollbar");
}
// Build html markup and set references
// ====================================
// Build html code for buttons and insert into main template
buttonStr = "";
$.each(firstItemOpts.buttons, function (index, value) {
buttonStr += firstItemOpts.btnTpl[value] || "";
});
// Create markup from base template, it will be initially hidden to
// avoid unnecessary work like painting while initializing is not complete
$container = $(
self.translate(
self,
firstItemOpts.baseTpl
.replace("{{buttons}}", buttonStr)
.replace("{{arrows}}", firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight)
)
)
.attr("id", "fancybox-container-" + self.id)
.addClass(firstItemOpts.baseClass)
.data("FancyBox", self)
.appendTo(firstItemOpts.parentEl);
// Create object holding references to jQuery wrapped nodes
self.$refs = {
container: $container
};
["bg", "inner", "infobar", "toolbar", "stage", "caption", "navigation"].forEach(function (item) {
self.$refs[item] = $container.find(".fancybox-" + item);
});
self.trigger("onInit");
// Enable events, deactive previous instances
self.activate();
// Build slides, load and reveal content
self.jumpTo(self.currIndex);
},
// Simple i18n support - replaces object keys found in template
// with corresponding values
// ============================================================
translate: function (obj, str) {
var arr = obj.opts.i18n[obj.opts.lang] || obj.opts.i18n.en;
return str.replace(/\{\{(\w+)\}\}/g, function (match, n) {
return arr[n] === undefined ? match : arr[n];
});
},
// Populate current group with fresh content
// Check if each object has valid type and content
// ===============================================
addContent: function (content) {
var self = this,
items = $.makeArray(content),
thumbs;
$.each(items, function (i, item) {
var obj = {},
opts = {},
$item,
type,
found,
src,
srcParts;
// Step 1 - Make sure we have an object
// ====================================
if ($.isPlainObject(item)) {
// We probably have manual usage here, something like
// $.fancybox.open( [ { src : "image.jpg", type : "image" } ] )
obj = item;
opts = item.opts || item;
} else if ($.type(item) === "object" && $(item).length) {
// Here we probably have jQuery collection returned by some selector
$item = $(item);
// Support attributes like `data-options='{"touch" : false}'` and `data-touch='false'`
opts = $item.data() || {};
opts = $.extend(true, {}, opts, opts.options);
// Here we store clicked element
opts.$orig = $item;
obj.src = self.opts.src || opts.src || $item.attr("href");
// Assume that simple syntax is used, for example:
// `$.fancybox.open( $("#test"), {} );`
if (!obj.type && !obj.src) {
obj.type = "inline";
obj.src = item;
}
} else {
// Assume we have a simple html code, for example:
// $.fancybox.open( '<div><h1>Hi!</h1></div>' );
obj = {
type: "html",
src: item + ""
};
}
// Each gallery object has full collection of options
obj.opts = $.extend(true, {}, self.opts, opts);
// Do not merge buttons array
if ($.isArray(opts.buttons)) {
obj.opts.buttons = opts.buttons;
}
if ($.fancybox.isMobile && obj.opts.mobile) {
obj.opts = mergeOpts(obj.opts, obj.opts.mobile);
}
// Step 2 - Make sure we have content type, if not - try to guess
// ==============================================================
type = obj.type || obj.opts.type;
src = obj.src || "";
if (!type && src) {
if ((found = src.match(/\.(mp4|mov|ogv|webm)((\?|#).*)?$/i))) {
type = "video";
if (!obj.opts.video.format) {
obj.opts.video.format = "video/" + (found[1] === "ogv" ? "ogg" : found[1]);
}
} else if (src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)) {
type = "image";
} else if (src.match(/\.(pdf)((\?|#).*)?$/i)) {
type = "iframe";
obj = $.extend(true, obj, {
contentType: "pdf",
opts: {
iframe: {
preload: false
}
}
});
} else if (src.charAt(0) === "#") {
type = "inline";
}
}
if (type) {
obj.type = type;
} else {
self.trigger("objectNeedsType", obj);
}
if (!obj.contentType) {
obj.contentType = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1 ? "html" : obj.type;
}
// Step 3 - Some adjustments
// =========================
obj.index = self.group.length;
if (obj.opts.smallBtn == "auto") {
obj.opts.smallBtn = $.inArray(obj.type, ["html", "inline", "ajax"]) > -1;
}
if (obj.opts.toolbar === "auto") {
obj.opts.toolbar = !obj.opts.smallBtn;
}
// Find thumbnail image, check if exists and if is in the viewport
obj.$thumb = obj.opts.$thumb || null;
if (obj.opts.$trigger && obj.index === self.opts.index) {
obj.$thumb = obj.opts.$trigger.find("img:first");
if (obj.$thumb.length) {
obj.opts.$orig = obj.opts.$trigger;
}
}
if (!(obj.$thumb && obj.$thumb.length) && obj.opts.$orig) {
obj.$thumb = obj.opts.$orig.find("img:first");
}
if (obj.$thumb && !obj.$thumb.length) {
obj.$thumb = null;
}
obj.thumb = obj.opts.thumb || (obj.$thumb ? obj.$thumb[0].src : null);
// "caption" is a "special" option, it can be used to customize caption per gallery item
if ($.type(obj.opts.caption) === "function") {
obj.opts.caption = obj.opts.caption.apply(item, [self, obj]);
}
if ($.type(self.opts.caption) === "function") {
obj.opts.caption = self.opts.caption.apply(item, [self, obj]);
}
// Make sure we have caption as a string or jQuery object
if (!(obj.opts.caption instanceof $)) {
obj.opts.caption = obj.opts.caption === undefined ? "" : obj.opts.caption + "";
}
// Check if url contains "filter" used to filter the content
// Example: "ajax.html #something"
if (obj.type === "ajax") {
srcParts = src.split(/\s+/, 2);
if (srcParts.length > 1) {
obj.src = srcParts.shift();
obj.opts.filter = srcParts.shift();
}
}
// Hide all buttons and disable interactivity for modal items
if (obj.opts.modal) {
obj.opts = $.extend(true, obj.opts, {
trapFocus: true,
// Remove buttons
infobar: 0,
toolbar: 0,
smallBtn: 0,
// Disable keyboard navigation
keyboard: 0,
// Disable some modules
slideShow: 0,
fullScreen: 0,
thumbs: 0,
touch: 0,
// Disable click event handlers
clickContent: false,
clickSlide: false,
clickOutside: false,
dblclickContent: false,
dblclickSlide: false,
dblclickOutside: false
});
}
// Step 4 - Add processed object to group
// ======================================
self.group.push(obj);
});
// Update controls if gallery is already opened
if (Object.keys(self.slides).length) {
self.updateControls();
// Update thumbnails, if needed
thumbs = self.Thumbs;
if (thumbs && thumbs.isActive) {
thumbs.create();
thumbs.focus();
}
}
},
// Attach an event handler functions for:
// - navigation buttons
// - browser scrolling, resizing;
// - focusing
// - keyboard
// - detecting inactivity
// ======================================
addEvents: function () {
var self = this;
self.removeEvents();
// Make navigation elements clickable
// ==================================
self.$refs.container
.on("click.fb-close", "[data-fancybox-close]", function (e) {
e.stopPropagation();
e.preventDefault();
self.close(e);
})
.on("touchstart.fb-prev click.fb-prev", "[data-fancybox-prev]", function (e) {
e.stopPropagation();
e.preventDefault();
self.previous();
})
.on("touchstart.fb-next click.fb-next", "[data-fancybox-next]", function (e) {
e.stopPropagation();
e.preventDefault();
self.next();
})
.on("click.fb", "[data-fancybox-zoom]", function (e) {
// Click handler for zoom button
self[self.isScaledDown() ? "scaleToActual" : "scaleToFit"]();
});
// Handle page scrolling and browser resizing
// ==========================================
$W.on("orientationchange.fb resize.fb", function (e) {
if (e && e.originalEvent && e.originalEvent.type === "resize") {
if (self.requestId) {
cancelAFrame(self.requestId);
}
self.requestId = requestAFrame(function () {
self.update(e);
});
} else {
if (self.current && self.current.type === "iframe") {
self.$refs.stage.hide();
}
setTimeout(
function () {
self.$refs.stage.show();
self.update(e);
},
$.fancybox.isMobile ? 600 : 250
);
}
});
$D.on("keydown.fb", function (e) {
var instance = $.fancybox ? $.fancybox.getInstance() : null,
current = instance.current,
keycode = e.keyCode || e.which;
// Trap keyboard focus inside of the modal
// =======================================
if (keycode == 9) {
if (current.opts.trapFocus) {
self.focus(e);
}
return;
}
// Enable keyboard navigation
// ==========================
if (!current.opts.keyboard || e.ctrlKey || e.altKey || e.shiftKey || $(e.target).is("input,textarea,video,audio,select")) {
return;
}
// Backspace and Esc keys
if (keycode === 8 || keycode === 27) {
e.preventDefault();
self.close(e);
return;
}
// Left arrow and Up arrow
if (keycode === 37 || keycode === 38) {
e.preventDefault();
self.previous();
return;
}
// Righ arrow and Down arrow
if (keycode === 39 || keycode === 40) {
e.preventDefault();
self.next();
return;
}
self.trigger("afterKeydown", e, keycode);
});
// Hide controls after some inactivity period
if (self.group[self.currIndex].opts.idleTime) {
self.idleSecondsCounter = 0;
$D.on(
"mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",
function (e) {
self.idleSecondsCounter = 0;
if (self.isIdle) {
self.showControls();
}
self.isIdle = false;
}
);
self.idleInterval = window.setInterval(function () {
self.idleSecondsCounter++;
if (self.idleSecondsCounter >= self.group[self.currIndex].opts.idleTime && !self.isDragging) {
self.isIdle = true;
self.idleSecondsCounter = 0;
self.hideControls();
}
}, 1000);
}
},
// Remove events added by the core
// ===============================
removeEvents: function () {
var self = this;
$W.off("orientationchange.fb resize.fb");
$D.off("keydown.fb .fb-idle");
this.$refs.container.off(".fb-close .fb-prev .fb-next");
if (self.idleInterval) {
window.clearInterval(self.idleInterval);
self.idleInterval = null;
}
},
// Change to previous gallery item
// ===============================
previous: function (duration) {
return this.jumpTo(this.currPos - 1, duration);
},
// Change to next gallery item
// ===========================
next: function (duration) {
return this.jumpTo(this.currPos + 1, duration);
},
// Switch to selected gallery item
// ===============================
jumpTo: function (pos, duration) {
var self = this,
groupLen = self.group.length,
firstRun,
isMoved,
loop,
current,
previous,
slidePos,
stagePos,
prop,
diff;
if (self.isDragging || self.isClosing || (self.isAnimating && self.firstRun)) {
return;
}
// Should loop?
pos = parseInt(pos, 10);
loop = self.current ? self.current.opts.loop : self.opts.loop;
if (!loop && (pos < 0 || pos >= groupLen)) {
return false;
}
// Check if opening for the first time; this helps to speed things up
firstRun = self.firstRun = !Object.keys(self.slides).length;
// Create slides
previous = self.current;
self.prevIndex = self.currIndex;
self.prevPos = self.currPos;
current = self.createSlide(pos);
if (groupLen > 1) {
if (loop || current.index < groupLen - 1) {
self.createSlide(pos + 1);
}
if (loop || current.index > 0) {
self.createSlide(pos - 1);
}
}
self.current = current;
self.currIndex = current.index;
self.currPos = current.pos;
self.trigger("beforeShow", firstRun);
self.updateControls();
// Validate duration length
current.forcedDuration = undefined;
if ($.isNumeric(duration)) {
current.forcedDuration = duration;
} else {
duration = current.opts[firstRun ? "animationDuration" : "transitionDuration"];
}
duration = parseInt(duration, 10);
// Check if user has swiped the slides or if still animating
isMoved = self.isMoved(current);
// Make sure current slide is visible
current.$slide.addClass("fancybox-slide--current");
// Fresh start - reveal container, current slide and start loading content
if (firstRun) {
if (current.opts.animationEffect && duration) {
self.$refs.container.css("transition-duration", duration + "ms");
}
self.$refs.container.addClass("fancybox-is-open").trigger("focus");
// Attempt to load content into slide
// This will later call `afterLoad` -> `revealContent`
self.loadSlide(current);
self.preload("image");
return;
}
// Get actual slide/stage positions (before cleaning up)
slidePos = $.fancybox.getTranslate(previous.$slide);
stagePos = $.fancybox.getTranslate(self.$refs.stage);
// Clean up all slides
$.each(self.slides, function (index, slide) {
$.fancybox.stop(slide.$slide, true);
});
if (previous.pos !== current.pos) {
previous.isComplete = false;
}
previous.$slide.removeClass("fancybox-slide--complete fancybox-slide--current");
// If slides are out of place, then animate them to correct position
if (isMoved) {
// Calculate horizontal swipe distance
diff = slidePos.left - (previous.pos * slidePos.width + previous.pos * previous.opts.gutter);
$.each(self.slides, function (index, slide) {
slide.$slide.removeClass("fancybox-animated").removeClass(function (index, className) {
return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" ");
});
// Make sure that each slide is in equal distance
// This is mostly needed for freshly added slides, because they are not yet positioned
var leftPos = slide.pos * slidePos.width + slide.pos * slide.opts.gutter;
$.fancybox.setTranslate(slide.$slide, {
top: 0,
left: leftPos - stagePos.left + diff
});
if (slide.pos !== current.pos) {
slide.$slide.addClass("fancybox-slide--" + (slide.pos > current.pos ? "next" : "previous"));
}
// Redraw to make sure that transition will start
forceRedraw(slide.$slide);
// Animate the slide
$.fancybox.animate(
slide.$slide, {
top: 0,
left: (slide.pos - current.pos) * slidePos.width + (slide.pos - current.pos) * slide.opts.gutter
},
duration,
function () {
slide.$slide
.css({
transform: "",
opacity: ""
})
.removeClass("fancybox-slide--next fancybox-slide--previous");
if (slide.pos === self.currPos) {
self.complete();
}
}
);
});
} else if (duration && current.opts.transitionEffect) {
// Set transition effect for previously active slide
prop = "fancybox-animated fancybox-fx-" + current.opts.transitionEffect;
previous.$slide.addClass("fancybox-slide--" + (previous.pos > current.pos ? "next" : "previous"));
$.fancybox.animate(
previous.$slide,
prop,
duration,
function () {
previous.$slide.removeClass(prop).removeClass("fancybox-slide--next fancybox-slide--previous");
},
false
);
}
if (current.isLoaded) {
self.revealContent(current);
} else {
self.loadSlide(current);
}
self.preload("image");
},
// Create new "slide" element
// These are gallery items that are actually added to DOM
// =======================================================
createSlide: function (pos) {
var self = this,
$slide,
index;
index = pos % self.group.length;
index = index < 0 ? self.group.length + index : index;
if (!self.slides[pos] && self.group[index]) {
$slide = $('<div class="fancybox-slide"></div>').appendTo(self.$refs.stage);
self.slides[pos] = $.extend(true, {}, self.group[index], {
pos: pos,
$slide: $slide,
isLoaded: false
});
self.updateSlide(self.slides[pos]);
}
return self.slides[pos];
},
// Scale image to the actual size of the image;
// x and y values should be relative to the slide
// ==============================================
scaleToActual: function (x, y, duration) {
var self = this,
current = self.current,
$content = current.$content,
canvasWidth = $.fancybox.getTranslate(current.$slide).width,
canvasHeight = $.fancybox.getTranslate(current.$slide).height,
newImgWidth = current.width,
newImgHeight = current.height,
imgPos,
posX,
posY,
scaleX,
scaleY;
if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) {
return;
}
self.isAnimating = true;
$.fancybox.stop($content);
x = x === undefined ? canvasWidth * 0.5 : x;
y = y === undefined ? canvasHeight * 0.5 : y;
imgPos = $.fancybox.getTranslate($content);
imgPos.top -= $.fancybox.getTranslate(current.$slide).top;
imgPos.left -= $.fancybox.getTranslate(current.$slide).left;
scaleX = newImgWidth / imgPos.width;
scaleY = newImgHeight / imgPos.height;
// Get center position for original image
posX = canvasWidth * 0.5 - newImgWidth * 0.5;
posY = canvasHeight * 0.5 - newImgHeight * 0.5;
// Make sure image does not move away from edges
if (newImgWidth > canvasWidth) {
posX = imgPos.left * scaleX - (x * scaleX - x);
if (posX > 0) {
posX = 0;
}
if (posX < canvasWidth - newImgWidth) {
posX = canvasWidth - newImgWidth;
}
}
if (newImgHeight > canvasHeight) {
posY = imgPos.top * scaleY - (y * scaleY - y);
if (posY > 0) {
posY = 0;
}
if (posY < canvasHeight - newImgHeight) {
posY = canvasHeight - newImgHeight;
}
}
self.updateCursor(newImgWidth, newImgHeight);
$.fancybox.animate(
$content, {
top: posY,
left: posX,
scaleX: scaleX,
scaleY: scaleY
},
duration || 366,
function () {
self.isAnimating = false;
}
);
// Stop slideshow
if (self.SlideShow && self.SlideShow.isActive) {
self.SlideShow.stop();
}
},
// Scale image to fit inside parent element
// ========================================
scaleToFit: function (duration) {
var self = this,
current = self.current,
$content = current.$content,
end;
if (self.isAnimating || self.isMoved() || !$content || !(current.type == "image" && current.isLoaded && !current.hasError)) {
return;
}
self.isAnimating = true;
$.fancybox.stop($content);
end = self.getFitPos(current);
self.updateCursor(end.width, end.height);
$.fancybox.animate(
$content, {
top: end.top,
left: end.left,
scaleX: end.width / $content.width(),
scaleY: end.height / $content.height()
},
duration || 366,
function () {
self.isAnimating = false;
}
);
},
// Calculate image size to fit inside viewport
// ===========================================
getFitPos: function (slide) {
var self = this,
$content = slide.$content,
$slide = slide.$slide,
width = slide.width || slide.opts.width,
height = slide.height || slide.opts.height,
maxWidth,
maxHeight,
minRatio,
aspectRatio,
rez = {};
if (!slide.isLoaded || !$content || !$content.length) {
return false;
}
maxWidth = $.fancybox.getTranslate(self.$refs.stage).width;
maxHeight = $.fancybox.getTranslate(self.$refs.stage).height;
maxWidth -=
parseFloat($slide.css("paddingLeft")) +
parseFloat($slide.css("paddingRight")) +
parseFloat($content.css("marginLeft")) +
parseFloat($content.css("marginRight"));
maxHeight -=
parseFloat($slide.css("paddingTop")) +
parseFloat($slide.css("paddingBottom")) +
parseFloat($content.css("marginTop")) +
parseFloat($content.css("marginBottom"));
if (!width || !height) {
width = maxWidth;
height = maxHeight;
}
minRatio = Math.min(1, maxWidth / width, maxHeight / height);
width = minRatio * width;
height = minRatio * height;
// Adjust width/height to precisely fit into container
if (width > maxWidth - 0.5) {
width = maxWidth;
}
if (height > maxHeight - 0.5) {
height = maxHeight;
}
if (slide.type === "image") {
rez.top = Math.floor((maxHeight - height) * 0.5) + parseFloat($slide.css("paddingTop"));
rez.left = Math.floor((maxWidth - width) * 0.5) + parseFloat($slide.css("paddingLeft"));
} else if (slide.contentType === "video") {
// Force aspect ratio for the video
// "I say the whole world must learn of our peaceful ways… by force!"
aspectRatio = slide.opts.width && slide.opts.height ? width / height : slide.opts.ratio || 16 / 9;
if (height > width / aspectRatio) {
height = width / aspectRatio;
} else if (width > height * aspectRatio) {
width = height * aspectRatio;
}
}
rez.width = width;
rez.height = height;
return rez;
},
// Update content size and position for all slides
// ==============================================
update: function (e) {
var self = this;
$.each(self.slides, function (key, slide) {
self.updateSlide(slide, e);
});
},
// Update slide content position and size
// ======================================
updateSlide: function (slide, e) {
var self = this,
$content = slide && slide.$content,
width = slide.width || slide.opts.width,
height = slide.height || slide.opts.height,
$slide = slide.$slide;
// First, prevent caption overlap, if needed
self.adjustCaption(slide);
// Then resize content to fit inside the slide
if ($content && (width || height || slide.contentType === "video") && !slide.hasError) {
$.fancybox.stop($content);
$.fancybox.setTranslate($content, self.getFitPos(slide));
if (slide.pos === self.currPos) {
self.isAnimating = false;
self.updateCursor();
}
}
// Then some adjustments
self.adjustLayout(slide);
if ($slide.length) {
$slide.trigger("refresh");
if (slide.pos === self.currPos) {
self.$refs.toolbar
.add(self.$refs.navigation.find(".fancybox-button--arrow_right"))
.toggleClass("compensate-for-scrollbar", $slide.get(0).scrollHeight > $slide.get(0).clientHeight);
}
}
self.trigger("onUpdate", slide, e);
},
// Horizontally center slide
// =========================
centerSlide: function (duration) {
var self = this,
current = self.current,
$slide = current.$slide;
if (self.isClosing || !current) {
return;
}
$slide.siblings().css({
transform: "",
opacity: ""
});
$slide
.parent()
.children()
.removeClass("fancybox-slide--previous fancybox-slide--next");
$.fancybox.animate(
$slide, {
top: 0,
left: 0,
opacity: 1
},
duration === undefined ? 0 : duration,
function () {
// Clean up
$slide.css({
transform: "",
opacity: ""
});
if (!current.isComplete) {
self.complete();
}
},
false
);
},
// Check if current slide is moved (swiped)
// ========================================
isMoved: function (slide) {
var current = slide || this.current,
slidePos,
stagePos;
if (!current) {
return false;
}
stagePos = $.fancybox.getTranslate(this.$refs.stage);
slidePos = $.fancybox.getTranslate(current.$slide);
return (
!current.$slide.hasClass("fancybox-animated") &&
(Math.abs(slidePos.top - stagePos.top) > 0.5 || Math.abs(slidePos.left - stagePos.left) > 0.5)
);
},
// Update cursor style depending if content can be zoomed
// ======================================================
updateCursor: function (nextWidth, nextHeight) {
var self = this,
current = self.current,
$container = self.$refs.container,
canPan,
isZoomable;
if (!current || self.isClosing || !self.Guestures) {
return;
}
$container.removeClass("fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-zoomOut fancybox-can-swipe fancybox-can-pan");
canPan = self.canPan(nextWidth, nextHeight);
isZoomable = canPan ? true : self.isZoomable();
$container.toggleClass("fancybox-is-zoomable", isZoomable);
$("[data-fancybox-zoom]").prop("disabled", !isZoomable);
if (canPan) {
$container.addClass("fancybox-can-pan");
} else if (
isZoomable &&
(current.opts.clickContent === "zoom" || ($.isFunction(current.opts.clickContent) && current.opts.clickContent(current) == "zoom"))
) {
$container.addClass("fancybox-can-zoomIn");
} else if (current.opts.touch && (current.opts.touch.vertical || self.group.length > 1) && current.contentType !== "video") {
$container.addClass("fancybox-can-swipe");
}
},
// Check if current slide is zoomable
// ==================================
isZoomable: function () {
var self = this,
current = self.current,
fitPos;
// Assume that slide is zoomable if:
// - image is still loading
// - actual size of the image is smaller than available area
if (current && !self.isClosing && current.type === "image" && !current.hasError) {
if (!current.isLoaded) {
return true;
}
fitPos = self.getFitPos(current);
if (fitPos && (current.width > fitPos.width || current.height > fitPos.height)) {
return true;
}
}
return false;
},
// Check if current image dimensions are smaller than actual
// =========================================================
isScaledDown: function (nextWidth, nextHeight) {
var self = this,
rez = false,
current = self.current,
$content = current.$content;
if (nextWidth !== undefined && nextHeight !== undefined) {
rez = nextWidth < current.width && nextHeight < current.height;
} else if ($content) {
rez = $.fancybox.getTranslate($content);
rez = rez.width < current.width && rez.height < current.height;
}
return rez;
},
// Check if image dimensions exceed parent element
// ===============================================
canPan: function (nextWidth, nextHeight) {
var self = this,
current = self.current,
pos = null,
rez = false;
if (current.type === "image" && (current.isComplete || (nextWidth && nextHeight)) && !current.hasError) {
rez = self.getFitPos(current);
if (nextWidth !== undefined && nextHeight !== undefined) {
pos = {
width: nextWidth,
height: nextHeight
};
} else if (current.isComplete) {
pos = $.fancybox.getTranslate(current.$content);
}
if (pos && rez) {
rez = Math.abs(pos.width - rez.width) > 1.5 || Math.abs(pos.height - rez.height) > 1.5;
}
}
return rez;
},
// Load content into the slide
// ===========================
loadSlide: function (slide) {
var self = this,
type,
$slide,
ajaxLoad;
if (slide.isLoading || slide.isLoaded) {
return;
}
slide.isLoading = true;
if (self.trigger("beforeLoad", slide) === false) {
slide.isLoading = false;
return false;
}
type = slide.type;
$slide = slide.$slide;
$slide
.off("refresh")
.trigger("onReset")
.addClass(slide.opts.slideClass);
// Create content depending on the type
switch (type) {
case "image":
self.setImage(slide);
break;
case "iframe":
self.setIframe(slide);
break;
case "html":
self.setContent(slide, slide.src || slide.content);
break;
case "video":
self.setContent(
slide,
slide.opts.video.tpl
.replace(/\{\{src\}\}/gi, slide.src)
.replace("{{format}}", slide.opts.videoFormat || slide.opts.video.format || "")
.replace("{{poster}}", slide.thumb || "")
);
break;
case "inline":
if ($(slide.src).length) {
self.setContent(slide, $(slide.src));
} else {
self.setError(slide);
}
break;
case "ajax":
self.showLoading(slide);
ajaxLoad = $.ajax(
$.extend({}, slide.opts.ajax.settings, {
url: slide.src,
success: function (data, textStatus) {
if (textStatus === "success") {
self.setContent(slide, data);
}
},
error: function (jqXHR, textStatus) {
if (jqXHR && textStatus !== "abort") {
self.setError(slide);
}
}
})
);
$slide.one("onReset", function () {
ajaxLoad.abort();
});
break;
default:
self.setError(slide);
break;
}
return true;
},
// Use thumbnail image, if possible
// ================================
setImage: function (slide) {
var self = this,
ghost;
// Check if need to show loading icon
setTimeout(function () {
var $img = slide.$image;
if (!self.isClosing && slide.isLoading && (!$img || !$img.length || !$img[0].complete) && !slide.hasError) {
self.showLoading(slide);
}
}, 50);
//Check if image has srcset
self.checkSrcset(slide);
// This will be wrapper containing both ghost and actual image
slide.$content = $('<div class="fancybox-content"></div>')
.addClass("fancybox-is-hidden")
.appendTo(slide.$slide.addClass("fancybox-slide--image"));
// If we have a thumbnail, we can display it while actual image is loading
// Users will not stare at black screen and actual image will appear gradually
if (slide.opts.preload !== false && slide.opts.width && slide.opts.height && slide.thumb) {
slide.width = slide.opts.width;
slide.height = slide.opts.height;
ghost = document.createElement("img");
ghost.onerror = function () {
$(this).remove();
slide.$ghost = null;
};
ghost.onload = function () {
self.afterLoad(slide);
};
slide.$ghost = $(ghost)
.addClass("fancybox-image")
.appendTo(slide.$content)
.attr("src", slide.thumb);
}
// Start loading actual image
self.setBigImage(slide);
},
// Check if image has srcset and get the source
// ============================================
checkSrcset: function (slide) {
var srcset = slide.opts.srcset || slide.opts.image.srcset,
found,
temp,
pxRatio,
windowWidth;
// If we have "srcset", then we need to find first matching "src" value.
// This is necessary, because when you set an src attribute, the browser will preload the image
// before any javascript or even CSS is applied.
if (srcset) {
pxRatio = window.devicePixelRatio || 1;
windowWidth = window.innerWidth * pxRatio;
temp = srcset.split(",").map(function (el) {
var ret = {};
el.trim()
.split(/\s+/)
.forEach(function (el, i) {
var value = parseInt(el.substring(0, el.length - 1), 10);
if (i === 0) {
return (ret.url = el);
}
if (value) {
ret.value = value;
ret.postfix = el[el.length - 1];
}
});
return ret;
});
// Sort by value
temp.sort(function (a, b) {
return a.value - b.value;
});
// Ok, now we have an array of all srcset values
for (var j = 0; j < temp.length; j++) {
var el = temp[j];
if ((el.postfix === "w" && el.value >= windowWidth) || (el.postfix === "x" && el.value >= pxRatio)) {
found = el;
break;
}
}
// If not found, take the last one
if (!found && temp.length) {
found = temp[temp.length - 1];
}
if (found) {
slide.src = found.url;
// If we have default width/height values, we can calculate height for matching source
if (slide.width && slide.height && found.postfix == "w") {
slide.height = (slide.width / slide.height) * found.value;
slide.width = found.value;
}
slide.opts.srcset = srcset;
}
}
},
// Create full-size image
// ======================
setBigImage: function (slide) {
var self = this,
img = document.createElement("img"),
$img = $(img);
slide.$image = $img
.one("error", function () {
self.setError(slide);
})
.one("load", function () {
var sizes;
if (!slide.$ghost) {
self.resolveImageSlideSize(slide, this.naturalWidth, this.naturalHeight);
self.afterLoad(slide);
}
if (self.isClosing) {
return;
}
if (slide.opts.srcset) {
sizes = slide.opts.sizes;
if (!sizes || sizes === "auto") {
sizes =
(slide.width / slide.height > 1 && $W.width() / $W.height() > 1 ? "100" : Math.round((slide.width / slide.height) * 100)) +
"vw";
}
$img.attr("sizes", sizes).attr("srcset", slide.opts.srcset);
}
// Hide temporary image after some delay
if (slide.$ghost) {
setTimeout(function () {
if (slide.$ghost && !self.isClosing) {
slide.$ghost.hide();
}
}, Math.min(300, Math.max(1000, slide.height / 1600)));
}
self.hideLoading(slide);
})
.addClass("fancybox-image")
.attr("src", slide.src)
.appendTo(slide.$content);
if ((img.complete || img.readyState == "complete") && $img.naturalWidth && $img.naturalHeight) {
$img.trigger("load");
} else if (img.error) {
$img.trigger("error");
}
},
// Computes the slide size from image size and maxWidth/maxHeight
// ==============================================================
resolveImageSlideSize: function (slide, imgWidth, imgHeight) {
var maxWidth = parseInt(slide.opts.width, 10),
maxHeight = parseInt(slide.opts.height, 10);
// Sets the default values from the image
slide.width = imgWidth;
slide.height = imgHeight;
if (maxWidth > 0) {
slide.width = maxWidth;
slide.height = Math.floor((maxWidth * imgHeight) / imgWidth);
}
if (maxHeight > 0) {
slide.width = Math.floor((maxHeight * imgWidth) / imgHeight);
slide.height = maxHeight;
}
},
// Create iframe wrapper, iframe and bindings
// ==========================================
setIframe: function (slide) {
var self = this,
opts = slide.opts.iframe,
$slide = slide.$slide,
$iframe;
slide.$content = $('<div class="fancybox-content' + (opts.preload ? " fancybox-is-hidden" : "") + '"></div>')
.css(opts.css)
.appendTo($slide);
$slide.addClass("fancybox-slide--" + slide.contentType);
slide.$iframe = $iframe = $(opts.tpl.replace(/\{rnd\}/g, new Date().getTime()))
.attr(opts.attr)
.appendTo(slide.$content);
if (opts.preload) {
self.showLoading(slide);
// Unfortunately, it is not always possible to determine if iframe is successfully loaded
// (due to browser security policy)
$iframe.on("load.fb error.fb", function (e) {
this.isReady = 1;
slide.$slide.trigger("refresh");
self.afterLoad(slide);
});
// Recalculate iframe content size
// ===============================
$slide.on("refresh.fb", function () {
var $content = slide.$content,
frameWidth = opts.css.width,
frameHeight = opts.css.height,
$contents,
$body;
if ($iframe[0].isReady !== 1) {
return;
}
try {
$contents = $iframe.contents();
$body = $contents.find("body");
} catch (ignore) {}
// Calculate content dimensions, if it is accessible
if ($body && $body.length && $body.children().length) {
// Avoid scrolling to top (if multiple instances)
$slide.css("overflow", "visible");
$content.css({
width: "100%",
"max-width": "100%",
height: "9999px"
});
if (frameWidth === undefined) {
frameWidth = Math.ceil(Math.max($body[0].clientWidth, $body.outerWidth(true)));
}
$content.css("width", frameWidth ? frameWidth : "").css("max-width", "");
if (frameHeight === undefined) {
frameHeight = Math.ceil(Math.max($body[0].clientHeight, $body.outerHeight(true)));
}
$content.css("height", frameHeight ? frameHeight : "");
$slide.css("overflow", "auto");
}
$content.removeClass("fancybox-is-hidden");
});
} else {
self.afterLoad(slide);
}
$iframe.attr("src", slide.src);
// Remove iframe if closing or changing gallery item
$slide.one("onReset", function () {
// This helps IE not to throw errors when closing
try {
$(this)
.find("iframe")
.hide()
.unbind()
.attr("src", "//about:blank");
} catch (ignore) {}
$(this)
.off("refresh.fb")
.empty();
slide.isLoaded = false;
slide.isRevealed = false;
});
},
// Wrap and append content to the slide
// ======================================
setContent: function (slide, content) {
var self = this;
if (self.isClosing) {
return;
}
self.hideLoading(slide);
if (slide.$content) {
$.fancybox.stop(slide.$content);
}
slide.$slide.empty();
// If content is a jQuery object, then it will be moved to the slide.
// The placeholder is created so we will know where to put it back.
if (isQuery(content) && content.parent().length) {
// Make sure content is not already moved to fancyBox
if (content.hasClass("fancybox-content") || content.parent().hasClass("fancybox-content")) {
content.parents(".fancybox-slide").trigger("onReset");
}
// Create temporary element marking original place of the content
slide.$placeholder = $("<div>")
.hide()
.insertAfter(content);
// Make sure content is visible
content.css("display", "inline-block");
} else if (!slide.hasError) {
// If content is just a plain text, try to convert it to html
if ($.type(content) === "string") {
content = $("<div>")
.append($.trim(content))
.contents();
}
// If "filter" option is provided, then filter content
if (slide.opts.filter) {
content = $("<div>")
.html(content)
.find(slide.opts.filter);
}
}
slide.$slide.one("onReset", function () {
// Pause all html5 video/audio
$(this)
.find("video,audio")
.trigger("pause");
// Put content back
if (slide.$placeholder) {
slide.$placeholder.after(content.removeClass("fancybox-content").hide()).remove();
slide.$placeholder = null;
}
// Remove custom close button
if (slide.$smallBtn) {
slide.$smallBtn.remove();
slide.$smallBtn = null;
}
// Remove content and mark slide as not loaded
if (!slide.hasError) {
$(this).empty();
slide.isLoaded = false;
slide.isRevealed = false;
}
});
$(content).appendTo(slide.$slide);
if ($(content).is("video,audio")) {
$(content).addClass("fancybox-video");
$(content).wrap("<div></div>");
slide.contentType = "video";
slide.opts.width = slide.opts.width || $(content).attr("width");
slide.opts.height = slide.opts.height || $(content).attr("height");
}
slide.$content = slide.$slide
.children()
.filter("div,form,main,video,audio,article,.fancybox-content")
.first();
slide.$content.siblings().hide();
// Re-check if there is a valid content
// (in some cases, ajax response can contain various elements or plain text)
if (!slide.$content.length) {
slide.$content = slide.$slide
.wrapInner("<div></div>")
.children()
.first();
}
slide.$content.addClass("fancybox-content");
slide.$slide.addClass("fancybox-slide--" + slide.contentType);
self.afterLoad(slide);
},
// Display error message
// =====================
setError: function (slide) {
slide.hasError = true;
slide.$slide
.trigger("onReset")
.removeClass("fancybox-slide--" + slide.contentType)
.addClass("fancybox-slide--error");
slide.contentType = "html";
this.setContent(slide, this.translate(slide, slide.opts.errorTpl));
if (slide.pos === this.currPos) {
this.isAnimating = false;
}
},
// Show loading icon inside the slide
// ==================================
showLoading: function (slide) {
var self = this;
slide = slide || self.current;
if (slide && !slide.$spinner) {
slide.$spinner = $(self.translate(self, self.opts.spinnerTpl))
.appendTo(slide.$slide)
.hide()
.fadeIn("fast");
}
},
// Remove loading icon from the slide
// ==================================
hideLoading: function (slide) {
var self = this;
slide = slide || self.current;
if (slide && slide.$spinner) {
slide.$spinner.stop().remove();
delete slide.$spinner;
}
},
// Adjustments after slide content has been loaded
// ===============================================
afterLoad: function (slide) {
var self = this;
if (self.isClosing) {
return;
}
slide.isLoading = false;
slide.isLoaded = true;
self.trigger("afterLoad", slide);
self.hideLoading(slide);
// Add small close button
if (slide.opts.smallBtn && (!slide.$smallBtn || !slide.$smallBtn.length)) {
slide.$smallBtn = $(self.translate(slide, slide.opts.btnTpl.smallBtn)).appendTo(slide.$content);
}
// Disable right click
if (slide.opts.protect && slide.$content && !slide.hasError) {
slide.$content.on("contextmenu.fb", function (e) {
if (e.button == 2) {
e.preventDefault();
}
return true;
});
// Add fake element on top of the image
// This makes a bit harder for user to select image
if (slide.type === "image") {
$('<div class="fancybox-spaceball"></div>').appendTo(slide.$content);
}
}
self.adjustCaption(slide);
self.adjustLayout(slide);
if (slide.pos === self.currPos) {
self.updateCursor();
}
self.revealContent(slide);
},
// Prevent caption overlap,
// fix css inconsistency across browsers
// =====================================
adjustCaption: function (slide) {
var self = this,
current = slide || self.current,
caption = current.opts.caption,
preventOverlap = current.opts.preventCaptionOverlap,
$caption = self.$refs.caption,
$clone,
captionH = false;
$caption.toggleClass("fancybox-caption--separate", preventOverlap);
if (preventOverlap && caption && caption.length) {
if (current.pos !== self.currPos) {
$clone = $caption.clone().appendTo($caption.parent());
$clone
.children()
.eq(0)
.empty()
.html(caption);
captionH = $clone.outerHeight(true);
$clone.empty().remove();
} else if (self.$caption) {
captionH = self.$caption.outerHeight(true);
}
current.$slide.css("padding-bottom", captionH || "");
}
},
// Simple hack to fix inconsistency across browsers, described here (affects Edge, too):
// https://bugzilla.mozilla.org/show_bug.cgi?id=748518
// ====================================================================================
adjustLayout: function (slide) {
var self = this,
current = slide || self.current,
scrollHeight,
marginBottom,
inlinePadding,
actualPadding;
if (current.isLoaded && current.opts.disableLayoutFix !== true) {
current.$content.css("margin-bottom", "");
// If we would always set margin-bottom for the content,
// then it would potentially break vertical align
if (current.$content.outerHeight() > current.$slide.height() + 0.5) {
inlinePadding = current.$slide[0].style["padding-bottom"];
actualPadding = current.$slide.css("padding-bottom");
if (parseFloat(actualPadding) > 0) {
scrollHeight = current.$slide[0].scrollHeight;
current.$slide.css("padding-bottom", 0);
if (Math.abs(scrollHeight - current.$slide[0].scrollHeight) < 1) {
marginBottom = actualPadding;
}
current.$slide.css("padding-bottom", inlinePadding);
}
}
current.$content.css("margin-bottom", marginBottom);
}
},
// Make content visible
// This method is called right after content has been loaded or
// user navigates gallery and transition should start
// ============================================================
revealContent: function (slide) {
var self = this,
$slide = slide.$slide,
end = false,
start = false,
isMoved = self.isMoved(slide),
isRevealed = slide.isRevealed,
effect,
effectClassName,
duration,
opacity;
slide.isRevealed = true;
effect = slide.opts[self.firstRun ? "animationEffect" : "transitionEffect"];
duration = slide.opts[self.firstRun ? "animationDuration" : "transitionDuration"];
duration = parseInt(slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10);
if (isMoved || slide.pos !== self.currPos || !duration) {
effect = false;
}
// Check if can zoom
if (effect === "zoom") {
if (slide.pos === self.currPos && duration && slide.type === "image" && !slide.hasError && (start = self.getThumbPos(slide))) {
end = self.getFitPos(slide);
} else {
effect = "fade";
}
}
// Zoom animation
// ==============
if (effect === "zoom") {
self.isAnimating = true;
end.scaleX = end.width / start.width;
end.scaleY = end.height / start.height;
// Check if we need to animate opacity
opacity = slide.opts.zoomOpacity;
if (opacity == "auto") {
opacity = Math.abs(slide.width / slide.height - start.width / start.height) > 0.1;
}
if (opacity) {
start.opacity = 0.1;
end.opacity = 1;
}
// Draw image at start position
$.fancybox.setTranslate(slide.$content.removeClass("fancybox-is-hidden"), start);
forceRedraw(slide.$content);
// Start animation
$.fancybox.animate(slide.$content, end, duration, function () {
self.isAnimating = false;
self.complete();
});
return;
}
self.updateSlide(slide);
// Simply show content if no effect
// ================================
if (!effect) {
slide.$content.removeClass("fancybox-is-hidden");
if (!isRevealed && isMoved && slide.type === "image" && !slide.hasError) {
slide.$content.hide().fadeIn("fast");
}
if (slide.pos === self.currPos) {
self.complete();
}
return;
}
// Prepare for CSS transiton
// =========================
$.fancybox.stop($slide);
//effectClassName = "fancybox-animated fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-fx-" + effect;
effectClassName = "fancybox-slide--" + (slide.pos >= self.prevPos ? "next" : "previous") + " fancybox-animated fancybox-fx-" + effect;
$slide.addClass(effectClassName).removeClass("fancybox-slide--current"); //.addClass(effectClassName);
slide.$content.removeClass("fancybox-is-hidden");
// Force reflow
forceRedraw($slide);
if (slide.type !== "image") {
slide.$content.hide().show(0);
}
$.fancybox.animate(
$slide,
"fancybox-slide--current",
duration,
function () {
$slide.removeClass(effectClassName).css({
transform: "",
opacity: ""
});
if (slide.pos === self.currPos) {
self.complete();
}
},
true
);
},
// Check if we can and have to zoom from thumbnail
//================================================
getThumbPos: function (slide) {
var rez = false,
$thumb = slide.$thumb,
thumbPos,
btw,
brw,
bbw,
blw;
if (!$thumb || !inViewport($thumb[0])) {
return false;
}
thumbPos = $.fancybox.getTranslate($thumb);
btw = parseFloat($thumb.css("border-top-width") || 0);
brw = parseFloat($thumb.css("border-right-width") || 0);
bbw = parseFloat($thumb.css("border-bottom-width") || 0);
blw = parseFloat($thumb.css("border-left-width") || 0);
rez = {
top: thumbPos.top + btw,
left: thumbPos.left + blw,
width: thumbPos.width - brw - blw,
height: thumbPos.height - btw - bbw,
scaleX: 1,
scaleY: 1
};
return thumbPos.width > 0 && thumbPos.height > 0 ? rez : false;
},
// Final adjustments after current gallery item is moved to position
// and it`s content is loaded
// ==================================================================
complete: function () {
var self = this,
current = self.current,
slides = {},
$el;
if (self.isMoved() || !current.isLoaded) {
return;
}
if (!current.isComplete) {
current.isComplete = true;
current.$slide.siblings().trigger("onReset");
self.preload("inline");
// Trigger any CSS transiton inside the slide
forceRedraw(current.$slide);
current.$slide.addClass("fancybox-slide--complete");
// Remove unnecessary slides
$.each(self.slides, function (key, slide) {
if (slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1) {
slides[slide.pos] = slide;
} else if (slide) {
$.fancybox.stop(slide.$slide);
slide.$slide.off().remove();
}
});
self.slides = slides;
}
self.isAnimating = false;
self.updateCursor();
self.trigger("afterShow");
// Autoplay first html5 video/audio
if (!!current.opts.video.autoStart) {
current.$slide
.find("video,audio")
.filter(":visible:first")
.trigger("play")
.one("ended", function () {
if (Document.exitFullscreen) {
Document.exitFullscreen();
} else if (this.webkitExitFullscreen) {
this.webkitExitFullscreen();
}
self.next();
});
}
// Try to focus on the first focusable element
if (current.opts.autoFocus && current.contentType === "html") {
// Look for the first input with autofocus attribute
$el = current.$content.find("input[autofocus]:enabled:visible:first");
if ($el.length) {
$el.trigger("focus");
} else {
self.focus(null, true);
}
}
// Avoid jumping
current.$slide.scrollTop(0).scrollLeft(0);
},
// Preload next and previous slides
// ================================
preload: function (type) {
var self = this,
prev,
next;
if (self.group.length < 2) {
return;
}
next = self.slides[self.currPos + 1];
prev = self.slides[self.currPos - 1];
if (prev && prev.type === type) {
self.loadSlide(prev);
}
if (next && next.type === type) {
self.loadSlide(next);
}
},
// Try to find and focus on the first focusable element
// ====================================================
focus: function (e, firstRun) {
var self = this,
focusableStr = [
"a[href]",
"area[href]",
'input:not([disabled]):not([type="hidden"]):not([aria-hidden])',
"select:not([disabled]):not([aria-hidden])",
"textarea:not([disabled]):not([aria-hidden])",
"button:not([disabled]):not([aria-hidden])",
"iframe",
"object",
"embed",
"video",
"audio",
"[contenteditable]",
'[tabindex]:not([tabindex^="-"])'
].join(","),
focusableItems,
focusedItemIndex;
if (self.isClosing) {
return;
}
if (e || !self.current || !self.current.isComplete) {
// Focus on any element inside fancybox
focusableItems = self.$refs.container.find("*:visible");
} else {
// Focus inside current slide
focusableItems = self.current.$slide.find("*:visible" + (firstRun ? ":not(.fancybox-close-small)" : ""));
}
focusableItems = focusableItems.filter(focusableStr).filter(function () {
return $(this).css("visibility") !== "hidden" && !$(this).hasClass("disabled");
});
if (focusableItems.length) {
focusedItemIndex = focusableItems.index(document.activeElement);
if (e && e.shiftKey) {
// Back tab
if (focusedItemIndex < 0 || focusedItemIndex == 0) {
e.preventDefault();
focusableItems.eq(focusableItems.length - 1).trigger("focus");
}
} else {
// Outside or Forward tab
if (focusedItemIndex < 0 || focusedItemIndex == focusableItems.length - 1) {
if (e) {
e.preventDefault();
}
focusableItems.eq(0).trigger("focus");
}
}
} else {
self.$refs.container.trigger("focus");
}
},
// Activates current instance - brings container to the front and enables keyboard,
// notifies other instances about deactivating
// =================================================================================
activate: function () {
var self = this;
// Deactivate all instances
$(".fancybox-container").each(function () {
var instance = $(this).data("FancyBox");
// Skip self and closing instances
if (instance && instance.id !== self.id && !instance.isClosing) {
instance.trigger("onDeactivate");
instance.removeEvents();
instance.isVisible = false;
}
});
self.isVisible = true;
if (self.current || self.isIdle) {
self.update();
self.updateControls();
}
self.trigger("onActivate");
self.addEvents();
},
// Start closing procedure
// This will start "zoom-out" animation if needed and clean everything up afterwards
// =================================================================================
close: function (e, d) {
var self = this,
current = self.current,
effect,
duration,
$content,
domRect,
opacity,
start,
end;
var done = function () {
self.cleanUp(e);
};
if (self.isClosing) {
return false;
}
self.isClosing = true;
// If beforeClose callback prevents closing, make sure content is centered
if (self.trigger("beforeClose", e) === false) {
self.isClosing = false;
requestAFrame(function () {
self.update();
});
return false;
}
// Remove all events
// If there are multiple instances, they will be set again by "activate" method
self.removeEvents();
$content = current.$content;
effect = current.opts.animationEffect;
duration = $.isNumeric(d) ? d : effect ? current.opts.animationDuration : 0;
current.$slide.removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated");
if (e !== true) {
$.fancybox.stop(current.$slide);
} else {
effect = false;
}
// Remove other slides
current.$slide
.siblings()
.trigger("onReset")
.remove();
// Trigger animations
if (duration) {
self.$refs.container
.removeClass("fancybox-is-open")
.addClass("fancybox-is-closing")
.css("transition-duration", duration + "ms");
}
// Clean up
self.hideLoading(current);
self.hideControls(true);
self.updateCursor();
// Check if possible to zoom-out
if (
effect === "zoom" &&
!($content && duration && current.type === "image" && !self.isMoved() && !current.hasError && (end = self.getThumbPos(current)))
) {
effect = "fade";
}
if (effect === "zoom") {
$.fancybox.stop($content);
domRect = $.fancybox.getTranslate($content);
start = {
top: domRect.top,
left: domRect.left,
scaleX: domRect.width / end.width,
scaleY: domRect.height / end.height,
width: end.width,
height: end.height
};
// Check if we need to animate opacity
opacity = current.opts.zoomOpacity;
if (opacity == "auto") {
opacity = Math.abs(current.width / current.height - end.width / end.height) > 0.1;
}
if (opacity) {
end.opacity = 0;
}
$.fancybox.setTranslate($content, start);
forceRedraw($content);
$.fancybox.animate($content, end, duration, done);
return true;
}
if (effect && duration) {
$.fancybox.animate(
current.$slide.addClass("fancybox-slide--previous").removeClass("fancybox-slide--current"),
"fancybox-animated fancybox-fx-" + effect,
duration,
done
);
} else {
// If skip animation
if (e === true) {
setTimeout(done, duration);
} else {
done();
}
}
return true;
},
// Final adjustments after removing the instance
// =============================================
cleanUp: function (e) {
var self = this,
instance,
$focus = self.current.opts.$orig,
x,
y;
self.current.$slide.trigger("onReset");
self.$refs.container.empty().remove();
self.trigger("afterClose", e);
// Place back focus
if (!!self.current.opts.backFocus) {
if (!$focus || !$focus.length || !$focus.is(":visible")) {
$focus = self.$trigger;
}
if ($focus && $focus.length) {
x = window.scrollX;
y = window.scrollY;
$focus.trigger("focus");
$("html, body")
.scrollTop(y)
.scrollLeft(x);
}
}
self.current = null;
// Check if there are other instances
instance = $.fancybox.getInstance();
if (instance) {
instance.activate();
} else {
$("body").removeClass("fancybox-active compensate-for-scrollbar");
$("#fancybox-style-noscroll").remove();
}
},
// Call callback and trigger an event
// ==================================
trigger: function (name, slide) {
var args = Array.prototype.slice.call(arguments, 1),
self = this,
obj = slide && slide.opts ? slide : self.current,
rez;
if (obj) {
args.unshift(obj);
} else {
obj = self;
}
args.unshift(self);
if ($.isFunction(obj.opts[name])) {
rez = obj.opts[name].apply(obj, args);
}
if (rez === false) {
return rez;
}
if (name === "afterClose" || !self.$refs) {
$D.trigger(name + ".fb", args);
} else {
self.$refs.container.trigger(name + ".fb", args);
}
},
// Update infobar values, navigation button states and reveal caption
// ==================================================================
updateControls: function () {
var self = this,
current = self.current,
index = current.index,
$container = self.$refs.container,
$caption = self.$refs.caption,
caption = current.opts.caption;
// Recalculate content dimensions
current.$slide.trigger("refresh");
// Set caption
if (caption && caption.length) {
self.$caption = $caption;
$caption
.children()
.eq(0)
.html(caption);
} else {
self.$caption = null;
}
if (!self.hasHiddenControls && !self.isIdle) {
self.showControls();
}
// Update info and navigation elements
$container.find("[data-fancybox-count]").html(self.group.length);
$container.find("[data-fancybox-index]").html(index + 1);
$container.find("[data-fancybox-prev]").prop("disabled", !current.opts.loop && index <= 0);
$container.find("[data-fancybox-next]").prop("disabled", !current.opts.loop && index >= self.group.length - 1);
if (current.type === "image") {
// Re-enable buttons; update download button source
$container
.find("[data-fancybox-zoom]")
.show()
.end()
.find("[data-fancybox-download]")
.attr("href", current.opts.image.src || current.src)
.show();
} else if (current.opts.toolbar) {
$container.find("[data-fancybox-download],[data-fancybox-zoom]").hide();
}
// Make sure focus is not on disabled button/element
if ($(document.activeElement).is(":hidden,[disabled]")) {
self.$refs.container.trigger("focus");
}
},
// Hide toolbar and caption
// ========================
hideControls: function (andCaption) {
var self = this,
arr = ["infobar", "toolbar", "nav"];
if (andCaption || !self.current.opts.preventCaptionOverlap) {
arr.push("caption");
}
this.$refs.container.removeClass(
arr
.map(function (i) {
return "fancybox-show-" + i;
})
.join(" ")
);
this.hasHiddenControls = true;
},
showControls: function () {
var self = this,
opts = self.current ? self.current.opts : self.opts,
$container = self.$refs.container;
self.hasHiddenControls = false;
self.idleSecondsCounter = 0;
$container
.toggleClass("fancybox-show-toolbar", !!(opts.toolbar && opts.buttons))
.toggleClass("fancybox-show-infobar", !!(opts.infobar && self.group.length > 1))
.toggleClass("fancybox-show-caption", !!self.$caption)
.toggleClass("fancybox-show-nav", !!(opts.arrows && self.group.length > 1))
.toggleClass("fancybox-is-modal", !!opts.modal);
},
// Toggle toolbar and caption
// ==========================
toggleControls: function () {
if (this.hasHiddenControls) {
this.showControls();
} else {
this.hideControls();
}
}
});
$.fancybox = {
version: "3.5.7",
defaults: defaults,
// Get current instance and execute a command.
//
// Examples of usage:
//
// $instance = $.fancybox.getInstance();
// $.fancybox.getInstance().jumpTo( 1 );
// $.fancybox.getInstance( 'jumpTo', 1 );
// $.fancybox.getInstance( function() {
// console.info( this.currIndex );
// });
// ======================================================
getInstance: function (command) {
var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),
args = Array.prototype.slice.call(arguments, 1);
if (instance instanceof FancyBox) {
if ($.type(command) === "string") {
instance[command].apply(instance, args);
} else if ($.type(command) === "function") {
command.apply(instance, args);
}
return instance;
}
return false;
},
// Create new instance
// ===================
open: function (items, opts, index) {
return new FancyBox(items, opts, index);
},
// Close current or all instances
// ==============================
close: function (all) {
var instance = this.getInstance();
if (instance) {
instance.close();
// Try to find and close next instance
if (all === true) {
this.close(all);
}
}
},
// Close all instances and unbind all events
// =========================================
destroy: function () {
this.close(true);
$D.add("body").off("click.fb-start", "**");
},
// Try to detect mobile devices
// ============================
isMobile: /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),
// Detect if 'translate3d' support is available
// ============================================
use3d: (function () {
var div = document.createElement("div");
return (
window.getComputedStyle &&
window.getComputedStyle(div) &&
window.getComputedStyle(div).getPropertyValue("transform") &&
!(document.documentMode && document.documentMode < 11)
);
})(),
// Helper function to get current visual state of an element
// returns array[ top, left, horizontal-scale, vertical-scale, opacity ]
// =====================================================================
getTranslate: function ($el) {
var domRect;
if (!$el || !$el.length) {
return false;
}
domRect = $el[0].getBoundingClientRect();
return {
top: domRect.top || 0,
left: domRect.left || 0,
width: domRect.width,
height: domRect.height,
opacity: parseFloat($el.css("opacity"))
};
},
// Shortcut for setting "translate3d" properties for element
// Can set be used to set opacity, too
// ========================================================
setTranslate: function ($el, props) {
var str = "",
css = {};
if (!$el || !props) {
return;
}
if (props.left !== undefined || props.top !== undefined) {
str =
(props.left === undefined ? $el.position().left : props.left) +
"px, " +
(props.top === undefined ? $el.position().top : props.top) +
"px";
if (this.use3d) {
str = "translate3d(" + str + ", 0px)";
} else {
str = "translate(" + str + ")";
}
}
if (props.scaleX !== undefined && props.scaleY !== undefined) {
str += " scale(" + props.scaleX + ", " + props.scaleY + ")";
} else if (props.scaleX !== undefined) {
str += " scaleX(" + props.scaleX + ")";
}
if (str.length) {
css.transform = str;
}
if (props.opacity !== undefined) {
css.opacity = props.opacity;
}
if (props.width !== undefined) {
css.width = props.width;
}
if (props.height !== undefined) {
css.height = props.height;
}
return $el.css(css);
},
// Simple CSS transition handler
// =============================
animate: function ($el, to, duration, callback, leaveAnimationName) {
var self = this,
from;
if ($.isFunction(duration)) {
callback = duration;
duration = null;
}
self.stop($el);
from = self.getTranslate($el);
$el.on(transitionEnd, function (e) {
// Skip events from child elements and z-index change
if (e && e.originalEvent && (!$el.is(e.originalEvent.target) || e.originalEvent.propertyName == "z-index")) {
return;
}
self.stop($el);
if ($.isNumeric(duration)) {
$el.css("transition-duration", "");
}
if ($.isPlainObject(to)) {
if (to.scaleX !== undefined && to.scaleY !== undefined) {
self.setTranslate($el, {
top: to.top,
left: to.left,
width: from.width * to.scaleX,
height: from.height * to.scaleY,
scaleX: 1,
scaleY: 1
});
}
} else if (leaveAnimationName !== true) {
$el.removeClass(to);
}
if ($.isFunction(callback)) {
callback(e);
}
});
if ($.isNumeric(duration)) {
$el.css("transition-duration", duration + "ms");
}
// Start animation by changing CSS properties or class name
if ($.isPlainObject(to)) {
if (to.scaleX !== undefined && to.scaleY !== undefined) {
delete to.width;
delete to.height;
if ($el.parent().hasClass("fancybox-slide--image")) {
$el.parent().addClass("fancybox-is-scaling");
}
}
$.fancybox.setTranslate($el, to);
} else {
$el.addClass(to);
}
// Make sure that `transitionend` callback gets fired
$el.data(
"timer",
setTimeout(function () {
$el.trigger(transitionEnd);
}, duration + 33)
);
},
stop: function ($el, callCallback) {
if ($el && $el.length) {
clearTimeout($el.data("timer"));
if (callCallback) {
$el.trigger(transitionEnd);
}
$el.off(transitionEnd).css("transition-duration", "");
$el.parent().removeClass("fancybox-is-scaling");
}
}
};
// Default click handler for "fancyboxed" links
// ============================================
function _run(e, opts) {
var items = [],
index = 0,
$target,
value,
instance;
// Avoid opening multiple times
if (e && e.isDefaultPrevented()) {
return;
}
e.preventDefault();
opts = opts || {};
if (e && e.data) {
opts = mergeOpts(e.data.options, opts);
}
$target = opts.$target || $(e.currentTarget).trigger("blur");
instance = $.fancybox.getInstance();
if (instance && instance.$trigger && instance.$trigger.is($target)) {
return;
}
if (opts.selector) {
items = $(opts.selector);
} else {
// Get all related items and find index for clicked one
value = $target.attr("data-fancybox") || "";
if (value) {
items = e.data ? e.data.items : [];
items = items.length ? items.filter('[data-fancybox="' + value + '"]') : $('[data-fancybox="' + value + '"]');
} else {
items = [$target];
}
}
index = $(items).index($target);
// Sometimes current item can not be found
if (index < 0) {
index = 0;
}
instance = $.fancybox.open(items, opts, index);
// Save last active element
instance.$trigger = $target;
}
// Create a jQuery plugin
// ======================
$.fn.fancybox = function (options) {
var selector;
options = options || {};
selector = options.selector || false;
if (selector) {
// Use body element instead of document so it executes first
$("body")
.off("click.fb-start", selector)
.on("click.fb-start", selector, {
options: options
}, _run);
} else {
this.off("click.fb-start").on(
"click.fb-start", {
items: this,
options: options
},
_run
);
}
return this;
};
// Self initializing plugin for all elements having `data-fancybox` attribute
// ==========================================================================
$D.on("click.fb-start", "[data-fancybox]", _run);
// Enable "trigger elements"
// =========================
$D.on("click.fb-start", "[data-fancybox-trigger]", function (e) {
$('[data-fancybox="' + $(this).attr("data-fancybox-trigger") + '"]')
.eq($(this).attr("data-fancybox-index") || 0)
.trigger("click.fb-start", {
$trigger: $(this)
});
});
// Track focus event for better accessibility styling
// ==================================================
(function () {
var buttonStr = ".fancybox-button",
focusStr = "fancybox-focus",
$pressed = null;
$D.on("mousedown mouseup focus blur", buttonStr, function (e) {
switch (e.type) {
case "mousedown":
$pressed = $(this);
break;
case "mouseup":
$pressed = null;
break;
case "focusin":
$(buttonStr).removeClass(focusStr);
if (!$(this).is($pressed) && !$(this).is("[disabled]")) {
$(this).addClass(focusStr);
}
break;
case "focusout":
$(buttonStr).removeClass(focusStr);
break;
}
});
})();
})(window, document, jQuery);
// ==========================================================================
//
// Media
// Adds additional media type support
//
// ==========================================================================
(function ($) {
"use strict";
// Object containing properties for each media type
var defaults = {
youtube: {
matcher: /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,
params: {
autoplay: 1,
autohide: 1,
fs: 1,
rel: 0,
hd: 1,
wmode: "transparent",
enablejsapi: 1,
html5: 1
},
paramPlace: 8,
type: "iframe",
url: "https://www.youtube-nocookie.com/embed/$4",
thumb: "https://img.youtube.com/vi/$4/hqdefault.jpg"
},
vimeo: {
matcher: /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,
params: {
autoplay: 1,
hd: 1,
show_title: 1,
show_byline: 1,
show_portrait: 0,
fullscreen: 1
},
paramPlace: 3,
type: "iframe",
url: "//player.vimeo.com/video/$2"
},
instagram: {
matcher: /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,
type: "image",
url: "//$1/p/$2/media/?size=l"
},
// Examples:
// http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16
// https://www.google.com/maps/@37.7852006,-122.4146355,14.65z
// https://www.google.com/maps/@52.2111123,2.9237542,6.61z?hl=en
// https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572
gmap_place: {
matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,
type: "iframe",
url: function (rez) {
return (
"//maps.google." +
rez[2] +
"/?ll=" +
(rez[9] ? rez[9] + "&z=" + Math.floor(rez[10]) + (rez[12] ? rez[12].replace(/^\//, "&") : "") : rez[12] + "").replace(/\?/, "&") +
"&output=" +
(rez[12] && rez[12].indexOf("layer=c") > 0 ? "svembed" : "embed")
);
}
},
// Examples:
// https://www.google.com/maps/search/Empire+State+Building/
// https://www.google.com/maps/search/?api=1&query=centurylink+field
// https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393
gmap_search: {
matcher: /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,
type: "iframe",
url: function (rez) {
return "//maps.google." + rez[2] + "/maps?q=" + rez[5].replace("query=", "q=").replace("api=1", "") + "&output=embed";
}
}
};
// Formats matching url to final form
var format = function (url, rez, params) {
if (!url) {
return;
}
params = params || "";
if ($.type(params) === "object") {
params = $.param(params, true);
}
$.each(rez, function (key, value) {
url = url.replace("$" + key, value || "");
});
if (params.length) {
url += (url.indexOf("?") > 0 ? "&" : "?") + params;
}
return url;
};
$(document).on("objectNeedsType.fb", function (e, instance, item) {
var url = item.src || "",
type = false,
media,
thumb,
rez,
params,
urlParams,
paramObj,
provider;
media = $.extend(true, {}, defaults, item.opts.media);
// Look for any matching media type
$.each(media, function (providerName, providerOpts) {
rez = url.match(providerOpts.matcher);
if (!rez) {
return;
}
type = providerOpts.type;
provider = providerName;
paramObj = {};
if (providerOpts.paramPlace && rez[providerOpts.paramPlace]) {
urlParams = rez[providerOpts.paramPlace];
if (urlParams[0] == "?") {
urlParams = urlParams.substring(1);
}
urlParams = urlParams.split("&");
for (var m = 0; m < urlParams.length; ++m) {
var p = urlParams[m].split("=", 2);
if (p.length == 2) {
paramObj[p[0]] = decodeURIComponent(p[1].replace(/\+/g, " "));
}
}
}
params = $.extend(true, {}, providerOpts.params, item.opts[providerName], paramObj);
url =
$.type(providerOpts.url) === "function" ? providerOpts.url.call(this, rez, params, item) : format(providerOpts.url, rez, params);
thumb =
$.type(providerOpts.thumb) === "function" ? providerOpts.thumb.call(this, rez, params, item) : format(providerOpts.thumb, rez);
if (providerName === "youtube") {
url = url.replace(/&t=((\d+)m)?(\d+)s/, function (match, p1, m, s) {
return "&start=" + ((m ? parseInt(m, 10) * 60 : 0) + parseInt(s, 10));
});
} else if (providerName === "vimeo") {
url = url.replace("&%23", "#");
}
return false;
});
// If it is found, then change content type and update the url
if (type) {
if (!item.opts.thumb && !(item.opts.$thumb && item.opts.$thumb.length)) {
item.opts.thumb = thumb;
}
if (type === "iframe") {
item.opts = $.extend(true, item.opts, {
iframe: {
preload: false,
attr: {
scrolling: "no"
}
}
});
}
$.extend(item, {
type: type,
src: url,
origSrc: item.src,
contentSource: provider,
contentType: type === "image" ? "image" : provider == "gmap_place" || provider == "gmap_search" ? "map" : "video"
});
} else if (url) {
item.type = item.opts.defaultType;
}
});
// Load YouTube/Video API on request to detect when video finished playing
var VideoAPILoader = {
youtube: {
src: "https://www.youtube.com/iframe_api",
class: "YT",
loading: false,
loaded: false
},
vimeo: {
src: "https://player.vimeo.com/api/player.js",
class: "Vimeo",
loading: false,
loaded: false
},
load: function (vendor) {
var _this = this,
script;
if (this[vendor].loaded) {
setTimeout(function () {
_this.done(vendor);
});
return;
}
if (this[vendor].loading) {
return;
}
this[vendor].loading = true;
script = document.createElement("script");
script.type = "text/javascript";
script.src = this[vendor].src;
if (vendor === "youtube") {
window.onYouTubeIframeAPIReady = function () {
_this[vendor].loaded = true;
_this.done(vendor);
};
} else {
script.onload = function () {
_this[vendor].loaded = true;
_this.done(vendor);
};
}
document.body.appendChild(script);
},
done: function (vendor) {
var instance, $el, player;
if (vendor === "youtube") {
delete window.onYouTubeIframeAPIReady;
}
instance = $.fancybox.getInstance();
if (instance) {
$el = instance.current.$content.find("iframe");
if (vendor === "youtube" && YT !== undefined && YT) {
player = new YT.Player($el.attr("id"), {
events: {
onStateChange: function (e) {
if (e.data == 0) {
instance.next();
}
}
}
});
} else if (vendor === "vimeo" && Vimeo !== undefined && Vimeo) {
player = new Vimeo.Player($el);
player.on("ended", function () {
instance.next();
});
}
}
}
};
$(document).on({
"afterShow.fb": function (e, instance, current) {
if (instance.group.length > 1 && (current.contentSource === "youtube" || current.contentSource === "vimeo")) {
VideoAPILoader.load(current.contentSource);
}
}
});
})(jQuery);
// ==========================================================================
//
// Guestures
// Adds touch guestures, handles click and tap events
//
// ==========================================================================
(function (window, document, $) {
"use strict";
var requestAFrame = (function () {
return (
window.requestAnimationFrame ||
window.webkitRequestAnimationFrame ||
window.mozRequestAnimationFrame ||
window.oRequestAnimationFrame ||
// if all else fails, use setTimeout
function (callback) {
return window.setTimeout(callback, 1000 / 60);
}
);
})();
var cancelAFrame = (function () {
return (
window.cancelAnimationFrame ||
window.webkitCancelAnimationFrame ||
window.mozCancelAnimationFrame ||
window.oCancelAnimationFrame ||
function (id) {
window.clearTimeout(id);
}
);
})();
var getPointerXY = function (e) {
var result = [];
e = e.originalEvent || e || window.e;
e = e.touches && e.touches.length ? e.touches : e.changedTouches && e.changedTouches.length ? e.changedTouches : [e];
for (var key in e) {
if (e[key].pageX) {
result.push({
x: e[key].pageX,
y: e[key].pageY
});
} else if (e[key].clientX) {
result.push({
x: e[key].clientX,
y: e[key].clientY
});
}
}
return result;
};
var distance = function (point2, point1, what) {
if (!point1 || !point2) {
return 0;
}
if (what === "x") {
return point2.x - point1.x;
} else if (what === "y") {
return point2.y - point1.y;
}
return Math.sqrt(Math.pow(point2.x - point1.x, 2) + Math.pow(point2.y - point1.y, 2));
};
var isClickable = function ($el) {
if (
$el.is('a,area,button,[role="button"],input,label,select,summary,textarea,video,audio,iframe') ||
$.isFunction($el.get(0).onclick) ||
$el.data("selectable")
) {
return true;
}
// Check for attributes like data-fancybox-next or data-fancybox-close
for (var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++) {
if (atts[i].nodeName.substr(0, 14) === "data-fancybox-") {
return true;
}
}
return false;
};
var hasScrollbars = function (el) {
var overflowY = window.getComputedStyle(el)["overflow-y"],
overflowX = window.getComputedStyle(el)["overflow-x"],
vertical = (overflowY === "scroll" || overflowY === "auto") && el.scrollHeight > el.clientHeight,
horizontal = (overflowX === "scroll" || overflowX === "auto") && el.scrollWidth > el.clientWidth;
return vertical || horizontal;
};
var isScrollable = function ($el) {
var rez = false;
while (true) {
rez = hasScrollbars($el.get(0));
if (rez) {
break;
}
$el = $el.parent();
if (!$el.length || $el.hasClass("fancybox-stage") || $el.is("body")) {
break;
}
}
return rez;
};
var Guestures = function (instance) {
var self = this;
self.instance = instance;
self.$bg = instance.$refs.bg;
self.$stage = instance.$refs.stage;
self.$container = instance.$refs.container;
self.destroy();
self.$container.on("touchstart.fb.touch mousedown.fb.touch", $.proxy(self, "ontouchstart"));
};
Guestures.prototype.destroy = function () {
var self = this;
self.$container.off(".fb.touch");
$(document).off(".fb.touch");
if (self.requestId) {
cancelAFrame(self.requestId);
self.requestId = null;
}
if (self.tapped) {
clearTimeout(self.tapped);
self.tapped = null;
}
};
Guestures.prototype.ontouchstart = function (e) {
var self = this,
$target = $(e.target),
instance = self.instance,
current = instance.current,
$slide = current.$slide,
$content = current.$content,
isTouchDevice = e.type == "touchstart";
// Do not respond to both (touch and mouse) events
if (isTouchDevice) {
self.$container.off("mousedown.fb.touch");
}
// Ignore right click
if (e.originalEvent && e.originalEvent.button == 2) {
return;
}
// Ignore taping on links, buttons, input elements
if (!$slide.length || !$target.length || isClickable($target) || isClickable($target.parent())) {
return;
}
// Ignore clicks on the scrollbar
if (!$target.is("img") && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left) {
return;
}
// Ignore clicks while zooming or closing
if (!current || instance.isAnimating || current.$slide.hasClass("fancybox-animated")) {
e.stopPropagation();
e.preventDefault();
return;
}
self.realPoints = self.startPoints = getPointerXY(e);
if (!self.startPoints.length) {
return;
}
// Allow other scripts to catch touch event if "touch" is set to false
if (current.touch) {
e.stopPropagation();
}
self.startEvent = e;
self.canTap = true;
self.$target = $target;
self.$content = $content;
self.opts = current.opts.touch;
self.isPanning = false;
self.isSwiping = false;
self.isZooming = false;
self.isScrolling = false;
self.canPan = instance.canPan();
self.startTime = new Date().getTime();
self.distanceX = self.distanceY = self.distance = 0;
self.canvasWidth = Math.round($slide[0].clientWidth);
self.canvasHeight = Math.round($slide[0].clientHeight);
self.contentLastPos = null;
self.contentStartPos = $.fancybox.getTranslate(self.$content) || {
top: 0,
left: 0
};
self.sliderStartPos = $.fancybox.getTranslate($slide);
// Since position will be absolute, but we need to make it relative to the stage
self.stagePos = $.fancybox.getTranslate(instance.$refs.stage);
self.sliderStartPos.top -= self.stagePos.top;
self.sliderStartPos.left -= self.stagePos.left;
self.contentStartPos.top -= self.stagePos.top;
self.contentStartPos.left -= self.stagePos.left;
$(document)
.off(".fb.touch")
.on(isTouchDevice ? "touchend.fb.touch touchcancel.fb.touch" : "mouseup.fb.touch mouseleave.fb.touch", $.proxy(self, "ontouchend"))
.on(isTouchDevice ? "touchmove.fb.touch" : "mousemove.fb.touch", $.proxy(self, "ontouchmove"));
if ($.fancybox.isMobile) {
document.addEventListener("scroll", self.onscroll, true);
}
// Skip if clicked outside the sliding area
if (!(self.opts || self.canPan) || !($target.is(self.$stage) || self.$stage.find($target).length)) {
if ($target.is(".fancybox-image")) {
e.preventDefault();
}
if (!($.fancybox.isMobile && $target.parents(".fancybox-caption").length)) {
return;
}
}
self.isScrollable = isScrollable($target) || isScrollable($target.parent());
// Check if element is scrollable and try to prevent default behavior (scrolling)
if (!($.fancybox.isMobile && self.isScrollable)) {
e.preventDefault();
}
// One finger or mouse click - swipe or pan an image
if (self.startPoints.length === 1 || current.hasError) {
if (self.canPan) {
$.fancybox.stop(self.$content);
self.isPanning = true;
} else {
self.isSwiping = true;
}
self.$container.addClass("fancybox-is-grabbing");
}
// Two fingers - zoom image
if (self.startPoints.length === 2 && current.type === "image" && (current.isLoaded || current.$ghost)) {
self.canTap = false;
self.isSwiping = false;
self.isPanning = false;
self.isZooming = true;
$.fancybox.stop(self.$content);
self.centerPointStartX = (self.startPoints[0].x + self.startPoints[1].x) * 0.5 - $(window).scrollLeft();
self.centerPointStartY = (self.startPoints[0].y + self.startPoints[1].y) * 0.5 - $(window).scrollTop();
self.percentageOfImageAtPinchPointX = (self.centerPointStartX - self.contentStartPos.left) / self.contentStartPos.width;
self.percentageOfImageAtPinchPointY = (self.centerPointStartY - self.contentStartPos.top) / self.contentStartPos.height;
self.startDistanceBetweenFingers = distance(self.startPoints[0], self.startPoints[1]);
}
};
Guestures.prototype.onscroll = function (e) {
var self = this;
self.isScrolling = true;
document.removeEventListener("scroll", self.onscroll, true);
};
Guestures.prototype.ontouchmove = function (e) {
var self = this;
// Make sure user has not released over iframe or disabled element
if (e.originalEvent.buttons !== undefined && e.originalEvent.buttons === 0) {
self.ontouchend(e);
return;
}
if (self.isScrolling) {
self.canTap = false;
return;
}
self.newPoints = getPointerXY(e);
if (!(self.opts || self.canPan) || !self.newPoints.length || !self.newPoints.length) {
return;
}
if (!(self.isSwiping && self.isSwiping === true)) {
e.preventDefault();
}
self.distanceX = distance(self.newPoints[0], self.startPoints[0], "x");
self.distanceY = distance(self.newPoints[0], self.startPoints[0], "y");
self.distance = distance(self.newPoints[0], self.startPoints[0]);
// Skip false ontouchmove events (Chrome)
if (self.distance > 0) {
if (self.isSwiping) {
self.onSwipe(e);
} else if (self.isPanning) {
self.onPan();
} else if (self.isZooming) {
self.onZoom();
}
}
};
Guestures.prototype.onSwipe = function (e) {
var self = this,
instance = self.instance,
swiping = self.isSwiping,
left = self.sliderStartPos.left || 0,
angle;
// If direction is not yet determined
if (swiping === true) {
// We need at least 10px distance to correctly calculate an angle
if (Math.abs(self.distance) > 10) {
self.canTap = false;
if (instance.group.length < 2 && self.opts.vertical) {
self.isSwiping = "y";
} else if (instance.isDragging || self.opts.vertical === false || (self.opts.vertical === "auto" && $(window).width() > 800)) {
self.isSwiping = "x";
} else {
angle = Math.abs((Math.atan2(self.distanceY, self.distanceX) * 180) / Math.PI);
self.isSwiping = angle > 45 && angle < 135 ? "y" : "x";
}
if (self.isSwiping === "y" && $.fancybox.isMobile && self.isScrollable) {
self.isScrolling = true;
return;
}
instance.isDragging = self.isSwiping;
// Reset points to avoid jumping, because we dropped first swipes to calculate the angle
self.startPoints = self.newPoints;
$.each(instance.slides, function (index, slide) {
var slidePos, stagePos;
$.fancybox.stop(slide.$slide);
slidePos = $.fancybox.getTranslate(slide.$slide);
stagePos = $.fancybox.getTranslate(instance.$refs.stage);
slide.$slide
.css({
transform: "",
opacity: "",
"transition-duration": ""
})
.removeClass("fancybox-animated")
.removeClass(function (index, className) {
return (className.match(/(^|\s)fancybox-fx-\S+/g) || []).join(" ");
});
if (slide.pos === instance.current.pos) {
self.sliderStartPos.top = slidePos.top - stagePos.top;
self.sliderStartPos.left = slidePos.left - stagePos.left;
}
$.fancybox.setTranslate(slide.$slide, {
top: slidePos.top - stagePos.top,
left: slidePos.left - stagePos.left
});
});
// Stop slideshow
if (instance.SlideShow && instance.SlideShow.isActive) {
instance.SlideShow.stop();
}
}
return;
}
// Sticky edges
if (swiping == "x") {
if (
self.distanceX > 0 &&
(self.instance.group.length < 2 || (self.instance.current.index === 0 && !self.instance.current.opts.loop))
) {
left = left + Math.pow(self.distanceX, 0.8);
} else if (
self.distanceX < 0 &&
(self.instance.group.length < 2 ||
(self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop))
) {
left = left - Math.pow(-self.distanceX, 0.8);
} else {
left = left + self.distanceX;
}
}
self.sliderLastPos = {
top: swiping == "x" ? 0 : self.sliderStartPos.top + self.distanceY,
left: left
};
if (self.requestId) {
cancelAFrame(self.requestId);
self.requestId = null;
}
self.requestId = requestAFrame(function () {
if (self.sliderLastPos) {
$.each(self.instance.slides, function (index, slide) {
var pos = slide.pos - self.instance.currPos;
$.fancybox.setTranslate(slide.$slide, {
top: self.sliderLastPos.top,
left: self.sliderLastPos.left + pos * self.canvasWidth + pos * slide.opts.gutter
});
});
self.$container.addClass("fancybox-is-sliding");
}
});
};
Guestures.prototype.onPan = function () {
var self = this;
// Prevent accidental movement (sometimes, when tapping casually, finger can move a bit)
if (distance(self.newPoints[0], self.realPoints[0]) < ($.fancybox.isMobile ? 10 : 5)) {
self.startPoints = self.newPoints;
return;
}
self.canTap = false;
self.contentLastPos = self.limitMovement();
if (self.requestId) {
cancelAFrame(self.requestId);
}
self.requestId = requestAFrame(function () {
$.fancybox.setTranslate(self.$content, self.contentLastPos);
});
};
// Make panning sticky to the edges
Guestures.prototype.limitMovement = function () {
var self = this;
var canvasWidth = self.canvasWidth;
var canvasHeight = self.canvasHeight;
var distanceX = self.distanceX;
var distanceY = self.distanceY;
var contentStartPos = self.contentStartPos;
var currentOffsetX = contentStartPos.left;
var currentOffsetY = contentStartPos.top;
var currentWidth = contentStartPos.width;
var currentHeight = contentStartPos.height;
var minTranslateX, minTranslateY, maxTranslateX, maxTranslateY, newOffsetX, newOffsetY;
if (currentWidth > canvasWidth) {
newOffsetX = currentOffsetX + distanceX;
} else {
newOffsetX = currentOffsetX;
}
newOffsetY = currentOffsetY + distanceY;
// Slow down proportionally to traveled distance
minTranslateX = Math.max(0, canvasWidth * 0.5 - currentWidth * 0.5);
minTranslateY = Math.max(0, canvasHeight * 0.5 - currentHeight * 0.5);
maxTranslateX = Math.min(canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5);
maxTranslateY = Math.min(canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5);
// ->
if (distanceX > 0 && newOffsetX > minTranslateX) {
newOffsetX = minTranslateX - 1 + Math.pow(-minTranslateX + currentOffsetX + distanceX, 0.8) || 0;
}
// <-
if (distanceX < 0 && newOffsetX < maxTranslateX) {
newOffsetX = maxTranslateX + 1 - Math.pow(maxTranslateX - currentOffsetX - distanceX, 0.8) || 0;
}
// \/
if (distanceY > 0 && newOffsetY > minTranslateY) {
newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8) || 0;
}
// /\
if (distanceY < 0 && newOffsetY < maxTranslateY) {
newOffsetY = maxTranslateY + 1 - Math.pow(maxTranslateY - currentOffsetY - distanceY, 0.8) || 0;
}
return {
top: newOffsetY,
left: newOffsetX
};
};
Guestures.prototype.limitPosition = function (newOffsetX, newOffsetY, newWidth, newHeight) {
var self = this;
var canvasWidth = self.canvasWidth;
var canvasHeight = self.canvasHeight;
if (newWidth > canvasWidth) {
newOffsetX = newOffsetX > 0 ? 0 : newOffsetX;
newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX;
} else {
// Center horizontally
newOffsetX = Math.max(0, canvasWidth / 2 - newWidth / 2);
}
if (newHeight > canvasHeight) {
newOffsetY = newOffsetY > 0 ? 0 : newOffsetY;
newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY;
} else {
// Center vertically
newOffsetY = Math.max(0, canvasHeight / 2 - newHeight / 2);
}
return {
top: newOffsetY,
left: newOffsetX
};
};
Guestures.prototype.onZoom = function () {
var self = this;
// Calculate current distance between points to get pinch ratio and new width and height
var contentStartPos = self.contentStartPos;
var currentWidth = contentStartPos.width;
var currentHeight = contentStartPos.height;
var currentOffsetX = contentStartPos.left;
var currentOffsetY = contentStartPos.top;
var endDistanceBetweenFingers = distance(self.newPoints[0], self.newPoints[1]);
var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers;
var newWidth = Math.floor(currentWidth * pinchRatio);
var newHeight = Math.floor(currentHeight * pinchRatio);
// This is the translation due to pinch-zooming
var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX;
var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY;
// Point between the two touches
var centerPointEndX = (self.newPoints[0].x + self.newPoints[1].x) / 2 - $(window).scrollLeft();
var centerPointEndY = (self.newPoints[0].y + self.newPoints[1].y) / 2 - $(window).scrollTop();
// And this is the translation due to translation of the centerpoint
// between the two fingers
var translateFromTranslatingX = centerPointEndX - self.centerPointStartX;
var translateFromTranslatingY = centerPointEndY - self.centerPointStartY;
// The new offset is the old/current one plus the total translation
var newOffsetX = currentOffsetX + (translateFromZoomingX + translateFromTranslatingX);
var newOffsetY = currentOffsetY + (translateFromZoomingY + translateFromTranslatingY);
var newPos = {
top: newOffsetY,
left: newOffsetX,
scaleX: pinchRatio,
scaleY: pinchRatio
};
self.canTap = false;
self.newWidth = newWidth;
self.newHeight = newHeight;
self.contentLastPos = newPos;
if (self.requestId) {
cancelAFrame(self.requestId);
}
self.requestId = requestAFrame(function () {
$.fancybox.setTranslate(self.$content, self.contentLastPos);
});
};
Guestures.prototype.ontouchend = function (e) {
var self = this;
var swiping = self.isSwiping;
var panning = self.isPanning;
var zooming = self.isZooming;
var scrolling = self.isScrolling;
self.endPoints = getPointerXY(e);
self.dMs = Math.max(new Date().getTime() - self.startTime, 1);
self.$container.removeClass("fancybox-is-grabbing");
$(document).off(".fb.touch");
document.removeEventListener("scroll", self.onscroll, true);
if (self.requestId) {
cancelAFrame(self.requestId);
self.requestId = null;
}
self.isSwiping = false;
self.isPanning = false;
self.isZooming = false;
self.isScrolling = false;
self.instance.isDragging = false;
if (self.canTap) {
return self.onTap(e);
}
self.speed = 100;
// Speed in px/ms
self.velocityX = (self.distanceX / self.dMs) * 0.5;
self.velocityY = (self.distanceY / self.dMs) * 0.5;
if (panning) {
self.endPanning();
} else if (zooming) {
self.endZooming();
} else {
self.endSwiping(swiping, scrolling);
}
return;
};
Guestures.prototype.endSwiping = function (swiping, scrolling) {
var self = this,
ret = false,
len = self.instance.group.length,
distanceX = Math.abs(self.distanceX),
canAdvance = swiping == "x" && len > 1 && ((self.dMs > 130 && distanceX > 10) || distanceX > 50),
speedX = 300;
self.sliderLastPos = null;
// Close if swiped vertically / navigate if horizontally
if (swiping == "y" && !scrolling && Math.abs(self.distanceY) > 50) {
// Continue vertical movement
$.fancybox.animate(
self.instance.current.$slide, {
top: self.sliderStartPos.top + self.distanceY + self.velocityY * 150,
opacity: 0
},
200
);
ret = self.instance.close(true, 250);
} else if (canAdvance && self.distanceX > 0) {
ret = self.instance.previous(speedX);
} else if (canAdvance && self.distanceX < 0) {
ret = self.instance.next(speedX);
}
if (ret === false && (swiping == "x" || swiping == "y")) {
self.instance.centerSlide(200);
}
self.$container.removeClass("fancybox-is-sliding");
};
// Limit panning from edges
// ========================
Guestures.prototype.endPanning = function () {
var self = this,
newOffsetX,
newOffsetY,
newPos;
if (!self.contentLastPos) {
return;
}
if (self.opts.momentum === false || self.dMs > 350) {
newOffsetX = self.contentLastPos.left;
newOffsetY = self.contentLastPos.top;
} else {
// Continue movement
newOffsetX = self.contentLastPos.left + self.velocityX * 500;
newOffsetY = self.contentLastPos.top + self.velocityY * 500;
}
newPos = self.limitPosition(newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height);
newPos.width = self.contentStartPos.width;
newPos.height = self.contentStartPos.height;
$.fancybox.animate(self.$content, newPos, 366);
};
Guestures.prototype.endZooming = function () {
var self = this;
var current = self.instance.current;
var newOffsetX, newOffsetY, newPos, reset;
var newWidth = self.newWidth;
var newHeight = self.newHeight;
if (!self.contentLastPos) {
return;
}
newOffsetX = self.contentLastPos.left;
newOffsetY = self.contentLastPos.top;
reset = {
top: newOffsetY,
left: newOffsetX,
width: newWidth,
height: newHeight,
scaleX: 1,
scaleY: 1
};
// Reset scalex/scaleY values; this helps for perfomance and does not break animation
$.fancybox.setTranslate(self.$content, reset);
if (newWidth < self.canvasWidth && newHeight < self.canvasHeight) {
self.instance.scaleToFit(150);
} else if (newWidth > current.width || newHeight > current.height) {
self.instance.scaleToActual(self.centerPointStartX, self.centerPointStartY, 150);
} else {
newPos = self.limitPosition(newOffsetX, newOffsetY, newWidth, newHeight);
$.fancybox.animate(self.$content, newPos, 150);
}
};
Guestures.prototype.onTap = function (e) {
var self = this;
var $target = $(e.target);
var instance = self.instance;
var current = instance.current;
var endPoints = (e && getPointerXY(e)) || self.startPoints;
var tapX = endPoints[0] ? endPoints[0].x - $(window).scrollLeft() - self.stagePos.left : 0;
var tapY = endPoints[0] ? endPoints[0].y - $(window).scrollTop() - self.stagePos.top : 0;
var where;
var process = function (prefix) {
var action = current.opts[prefix];
if ($.isFunction(action)) {
action = action.apply(instance, [current, e]);
}
if (!action) {
return;
}
switch (action) {
case "close":
instance.close(self.startEvent);
break;
case "toggleControls":
instance.toggleControls();
break;
case "next":
instance.next();
break;
case "nextOrClose":
if (instance.group.length > 1) {
instance.next();
} else {
instance.close(self.startEvent);
}
break;
case "zoom":
if (current.type == "image" && (current.isLoaded || current.$ghost)) {
if (instance.canPan()) {
instance.scaleToFit();
} else if (instance.isScaledDown()) {
instance.scaleToActual(tapX, tapY);
} else if (instance.group.length < 2) {
instance.close(self.startEvent);
}
}
break;
}
};
// Ignore right click
if (e.originalEvent && e.originalEvent.button == 2) {
return;
}
// Skip if clicked on the scrollbar
if (!$target.is("img") && tapX > $target[0].clientWidth + $target.offset().left) {
return;
}
// Check where is clicked
if ($target.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container")) {
where = "Outside";
} else if ($target.is(".fancybox-slide")) {
where = "Slide";
} else if (
instance.current.$content &&
instance.current.$content
.find($target)
.addBack()
.filter($target).length
) {
where = "Content";
} else {
return;
}
// Check if this is a double tap
if (self.tapped) {
// Stop previously created single tap
clearTimeout(self.tapped);
self.tapped = null;
// Skip if distance between taps is too big
if (Math.abs(tapX - self.tapX) > 50 || Math.abs(tapY - self.tapY) > 50) {
return this;
}
// OK, now we assume that this is a double-tap
process("dblclick" + where);
} else {
// Single tap will be processed if user has not clicked second time within 300ms
// or there is no need to wait for double-tap
self.tapX = tapX;
self.tapY = tapY;
if (current.opts["dblclick" + where] && current.opts["dblclick" + where] !== current.opts["click" + where]) {
self.tapped = setTimeout(function () {
self.tapped = null;
if (!instance.isAnimating) {
process("click" + where);
}
}, 500);
} else {
process("click" + where);
}
}
return this;
};
$(document)
.on("onActivate.fb", function (e, instance) {
if (instance && !instance.Guestures) {
instance.Guestures = new Guestures(instance);
}
})
.on("beforeClose.fb", function (e, instance) {
if (instance && instance.Guestures) {
instance.Guestures.destroy();
}
});
})(window, document, jQuery);
// ==========================================================================
//
// SlideShow
// Enables slideshow functionality
//
// Example of usage:
// $.fancybox.getInstance().SlideShow.start()
//
// ==========================================================================
(function (document, $) {
"use strict";
$.extend(true, $.fancybox.defaults, {
btnTpl: {
slideShow: '<button data-fancybox-play class="fancybox-button fancybox-button--play" title="{{PLAY_START}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M6.5 5.4v13.2l11-6.6z"/></svg>' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M8.33 5.75h2.2v12.5h-2.2V5.75zm5.15 0h2.2v12.5h-2.2V5.75z"/></svg>' +
"</button>"
},
slideShow: {
autoStart: false,
speed: 3000,
progress: true
}
});
var SlideShow = function (instance) {
this.instance = instance;
this.init();
};
$.extend(SlideShow.prototype, {
timer: null,
isActive: false,
$button: null,
init: function () {
var self = this,
instance = self.instance,
opts = instance.group[instance.currIndex].opts.slideShow;
self.$button = instance.$refs.toolbar.find("[data-fancybox-play]").on("click", function () {
self.toggle();
});
if (instance.group.length < 2 || !opts) {
self.$button.hide();
} else if (opts.progress) {
self.$progress = $('<div class="fancybox-progress"></div>').appendTo(instance.$refs.inner);
}
},
set: function (force) {
var self = this,
instance = self.instance,
current = instance.current;
// Check if reached last element
if (current && (force === true || current.opts.loop || instance.currIndex < instance.group.length - 1)) {
if (self.isActive && current.contentType !== "video") {
if (self.$progress) {
$.fancybox.animate(self.$progress.show(), {
scaleX: 1
}, current.opts.slideShow.speed);
}
self.timer = setTimeout(function () {
if (!instance.current.opts.loop && instance.current.index == instance.group.length - 1) {
instance.jumpTo(0);
} else {
instance.next();
}
}, current.opts.slideShow.speed);
}
} else {
self.stop();
instance.idleSecondsCounter = 0;
instance.showControls();
}
},
clear: function () {
var self = this;
clearTimeout(self.timer);
self.timer = null;
if (self.$progress) {
self.$progress.removeAttr("style").hide();
}
},
start: function () {
var self = this,
current = self.instance.current;
if (current) {
self.$button
.attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_STOP)
.removeClass("fancybox-button--play")
.addClass("fancybox-button--pause");
self.isActive = true;
if (current.isComplete) {
self.set(true);
}
self.instance.trigger("onSlideShowChange", true);
}
},
stop: function () {
var self = this,
current = self.instance.current;
self.clear();
self.$button
.attr("title", (current.opts.i18n[current.opts.lang] || current.opts.i18n.en).PLAY_START)
.removeClass("fancybox-button--pause")
.addClass("fancybox-button--play");
self.isActive = false;
self.instance.trigger("onSlideShowChange", false);
if (self.$progress) {
self.$progress.removeAttr("style").hide();
}
},
toggle: function () {
var self = this;
if (self.isActive) {
self.stop();
} else {
self.start();
}
}
});
$(document).on({
"onInit.fb": function (e, instance) {
if (instance && !instance.SlideShow) {
instance.SlideShow = new SlideShow(instance);
}
},
"beforeShow.fb": function (e, instance, current, firstRun) {
var SlideShow = instance && instance.SlideShow;
if (firstRun) {
if (SlideShow && current.opts.slideShow.autoStart) {
SlideShow.start();
}
} else if (SlideShow && SlideShow.isActive) {
SlideShow.clear();
}
},
"afterShow.fb": function (e, instance, current) {
var SlideShow = instance && instance.SlideShow;
if (SlideShow && SlideShow.isActive) {
SlideShow.set();
}
},
"afterKeydown.fb": function (e, instance, current, keypress, keycode) {
var SlideShow = instance && instance.SlideShow;
// "P" or Spacebar
if (SlideShow && current.opts.slideShow && (keycode === 80 || keycode === 32) && !$(document.activeElement).is("button,a,input")) {
keypress.preventDefault();
SlideShow.toggle();
}
},
"beforeClose.fb onDeactivate.fb": function (e, instance) {
var SlideShow = instance && instance.SlideShow;
if (SlideShow) {
SlideShow.stop();
}
}
});
// Page Visibility API to pause slideshow when window is not active
$(document).on("visibilitychange", function () {
var instance = $.fancybox.getInstance(),
SlideShow = instance && instance.SlideShow;
if (SlideShow && SlideShow.isActive) {
if (document.hidden) {
SlideShow.clear();
} else {
SlideShow.set();
}
}
});
})(document, jQuery);
// ==========================================================================
//
// FullScreen
// Adds fullscreen functionality
//
// ==========================================================================
(function (document, $) {
"use strict";
// Collection of methods supported by user browser
var fn = (function () {
var fnMap = [
["requestFullscreen", "exitFullscreen", "fullscreenElement", "fullscreenEnabled", "fullscreenchange", "fullscreenerror"],
// new WebKit
[
"webkitRequestFullscreen",
"webkitExitFullscreen",
"webkitFullscreenElement",
"webkitFullscreenEnabled",
"webkitfullscreenchange",
"webkitfullscreenerror"
],
// old WebKit (Safari 5.1)
[
"webkitRequestFullScreen",
"webkitCancelFullScreen",
"webkitCurrentFullScreenElement",
"webkitCancelFullScreen",
"webkitfullscreenchange",
"webkitfullscreenerror"
],
[
"mozRequestFullScreen",
"mozCancelFullScreen",
"mozFullScreenElement",
"mozFullScreenEnabled",
"mozfullscreenchange",
"mozfullscreenerror"
],
["msRequestFullscreen", "msExitFullscreen", "msFullscreenElement", "msFullscreenEnabled", "MSFullscreenChange", "MSFullscreenError"]
];
var ret = {};
for (var i = 0; i < fnMap.length; i++) {
var val = fnMap[i];
if (val && val[1] in document) {
for (var j = 0; j < val.length; j++) {
ret[fnMap[0][j]] = val[j];
}
return ret;
}
}
return false;
})();
if (fn) {
var FullScreen = {
request: function (elem) {
elem = elem || document.documentElement;
elem[fn.requestFullscreen](elem.ALLOW_KEYBOARD_INPUT);
},
exit: function () {
document[fn.exitFullscreen]();
},
toggle: function (elem) {
elem = elem || document.documentElement;
if (this.isFullscreen()) {
this.exit();
} else {
this.request(elem);
}
},
isFullscreen: function () {
return Boolean(document[fn.fullscreenElement]);
},
enabled: function () {
return Boolean(document[fn.fullscreenEnabled]);
}
};
$.extend(true, $.fancybox.defaults, {
btnTpl: {
fullScreen: '<button data-fancybox-fullscreen class="fancybox-button fancybox-button--fsenter" title="{{FULL_SCREEN}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M7 14H5v5h5v-2H7v-3zm-2-4h2V7h3V5H5v5zm12 7h-3v2h5v-5h-2v3zM14 5v2h3v3h2V5h-5z"/></svg>' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M5 16h3v3h2v-5H5zm3-8H5v2h5V5H8zm6 11h2v-3h3v-2h-5zm2-11V5h-2v5h5V8z"/></svg>' +
"</button>"
},
fullScreen: {
autoStart: false
}
});
$(document).on(fn.fullscreenchange, function () {
var isFullscreen = FullScreen.isFullscreen(),
instance = $.fancybox.getInstance();
if (instance) {
// If image is zooming, then force to stop and reposition properly
if (instance.current && instance.current.type === "image" && instance.isAnimating) {
instance.isAnimating = false;
instance.update(true, true, 0);
if (!instance.isComplete) {
instance.complete();
}
}
instance.trigger("onFullscreenChange", isFullscreen);
instance.$refs.container.toggleClass("fancybox-is-fullscreen", isFullscreen);
instance.$refs.toolbar
.find("[data-fancybox-fullscreen]")
.toggleClass("fancybox-button--fsenter", !isFullscreen)
.toggleClass("fancybox-button--fsexit", isFullscreen);
}
});
}
$(document).on({
"onInit.fb": function (e, instance) {
var $container;
if (!fn) {
instance.$refs.toolbar.find("[data-fancybox-fullscreen]").remove();
return;
}
if (instance && instance.group[instance.currIndex].opts.fullScreen) {
$container = instance.$refs.container;
$container.on("click.fb-fullscreen", "[data-fancybox-fullscreen]", function (e) {
e.stopPropagation();
e.preventDefault();
FullScreen.toggle();
});
if (instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true) {
FullScreen.request();
}
// Expose API
instance.FullScreen = FullScreen;
} else if (instance) {
instance.$refs.toolbar.find("[data-fancybox-fullscreen]").hide();
}
},
"afterKeydown.fb": function (e, instance, current, keypress, keycode) {
// "F"
if (instance && instance.FullScreen && keycode === 70) {
keypress.preventDefault();
instance.FullScreen.toggle();
}
},
"beforeClose.fb": function (e, instance) {
if (instance && instance.FullScreen && instance.$refs.container.hasClass("fancybox-is-fullscreen")) {
FullScreen.exit();
}
}
});
})(document, jQuery);
// ==========================================================================
//
// Thumbs
// Displays thumbnails in a grid
//
// ==========================================================================
(function (document, $) {
"use strict";
var CLASS = "fancybox-thumbs",
CLASS_ACTIVE = CLASS + "-active";
// Make sure there are default values
$.fancybox.defaults = $.extend(
true, {
btnTpl: {
thumbs: '<button data-fancybox-thumbs class="fancybox-button fancybox-button--thumbs" title="{{THUMBS}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M14.59 14.59h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76h-3.76v-3.76zm-4.47 0h3.76v3.76H5.65v-3.76zm8.94-4.47h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76h-3.76V5.65zm-4.47 0h3.76v3.76H5.65V5.65z"/></svg>' +
"</button>"
},
thumbs: {
autoStart: false, // Display thumbnails on opening
hideOnClose: true, // Hide thumbnail grid when closing animation starts
parentEl: ".fancybox-container", // Container is injected into this element
axis: "y" // Vertical (y) or horizontal (x) scrolling
}
},
$.fancybox.defaults
);
var FancyThumbs = function (instance) {
this.init(instance);
};
$.extend(FancyThumbs.prototype, {
$button: null,
$grid: null,
$list: null,
isVisible: false,
isActive: false,
init: function (instance) {
var self = this,
group = instance.group,
enabled = 0;
self.instance = instance;
self.opts = group[instance.currIndex].opts.thumbs;
instance.Thumbs = self;
self.$button = instance.$refs.toolbar.find("[data-fancybox-thumbs]");
// Enable thumbs if at least two group items have thumbnails
for (var i = 0, len = group.length; i < len; i++) {
if (group[i].thumb) {
enabled++;
}
if (enabled > 1) {
break;
}
}
if (enabled > 1 && !!self.opts) {
self.$button.removeAttr("style").on("click", function () {
self.toggle();
});
self.isActive = true;
} else {
self.$button.hide();
}
},
create: function () {
var self = this,
instance = self.instance,
parentEl = self.opts.parentEl,
list = [],
src;
if (!self.$grid) {
// Create main element
self.$grid = $('<div class="' + CLASS + " " + CLASS + "-" + self.opts.axis + '"></div>').appendTo(
instance.$refs.container
.find(parentEl)
.addBack()
.filter(parentEl)
);
// Add "click" event that performs gallery navigation
self.$grid.on("click", "a", function () {
instance.jumpTo($(this).attr("data-index"));
});
}
// Build the list
if (!self.$list) {
self.$list = $('<div class="' + CLASS + '__list">').appendTo(self.$grid);
}
$.each(instance.group, function (i, item) {
src = item.thumb;
if (!src && item.type === "image") {
src = item.src;
}
list.push(
'<a href="javascript:;" tabindex="0" data-index="' +
i +
'"' +
(src && src.length ? ' style="background-image:url(' + src + ')"' : 'class="fancybox-thumbs-missing"') +
"></a>"
);
});
self.$list[0].innerHTML = list.join("");
if (self.opts.axis === "x") {
// Set fixed width for list element to enable horizontal scrolling
self.$list.width(
parseInt(self.$grid.css("padding-right"), 10) +
instance.group.length *
self.$list
.children()
.eq(0)
.outerWidth(true)
);
}
},
focus: function (duration) {
var self = this,
$list = self.$list,
$grid = self.$grid,
thumb,
thumbPos;
if (!self.instance.current) {
return;
}
thumb = $list
.children()
.removeClass(CLASS_ACTIVE)
.filter('[data-index="' + self.instance.current.index + '"]')
.addClass(CLASS_ACTIVE);
thumbPos = thumb.position();
// Check if need to scroll to make current thumb visible
if (self.opts.axis === "y" && (thumbPos.top < 0 || thumbPos.top > $list.height() - thumb.outerHeight())) {
$list.stop().animate({
scrollTop: $list.scrollTop() + thumbPos.top
},
duration
);
} else if (
self.opts.axis === "x" &&
(thumbPos.left < $grid.scrollLeft() || thumbPos.left > $grid.scrollLeft() + ($grid.width() - thumb.outerWidth()))
) {
$list
.parent()
.stop()
.animate({
scrollLeft: thumbPos.left
},
duration
);
}
},
update: function () {
var that = this;
that.instance.$refs.container.toggleClass("fancybox-show-thumbs", this.isVisible);
if (that.isVisible) {
if (!that.$grid) {
that.create();
}
that.instance.trigger("onThumbsShow");
that.focus(0);
} else if (that.$grid) {
that.instance.trigger("onThumbsHide");
}
// Update content position
that.instance.update();
},
hide: function () {
this.isVisible = false;
this.update();
},
show: function () {
this.isVisible = true;
this.update();
},
toggle: function () {
this.isVisible = !this.isVisible;
this.update();
}
});
$(document).on({
"onInit.fb": function (e, instance) {
var Thumbs;
if (instance && !instance.Thumbs) {
Thumbs = new FancyThumbs(instance);
if (Thumbs.isActive && Thumbs.opts.autoStart === true) {
Thumbs.show();
}
}
},
"beforeShow.fb": function (e, instance, item, firstRun) {
var Thumbs = instance && instance.Thumbs;
if (Thumbs && Thumbs.isVisible) {
Thumbs.focus(firstRun ? 0 : 250);
}
},
"afterKeydown.fb": function (e, instance, current, keypress, keycode) {
var Thumbs = instance && instance.Thumbs;
// "G"
if (Thumbs && Thumbs.isActive && keycode === 71) {
keypress.preventDefault();
Thumbs.toggle();
}
},
"beforeClose.fb": function (e, instance) {
var Thumbs = instance && instance.Thumbs;
if (Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false) {
Thumbs.$grid.hide();
}
}
});
})(document, jQuery);
//// ==========================================================================
//
// Share
// Displays simple form for sharing current url
//
// ==========================================================================
(function (document, $) {
"use strict";
$.extend(true, $.fancybox.defaults, {
btnTpl: {
share: '<button data-fancybox-share class="fancybox-button fancybox-button--share" title="{{SHARE}}">' +
'<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><path d="M2.55 19c1.4-8.4 9.1-9.8 11.9-9.8V5l7 7-7 6.3v-3.5c-2.8 0-10.5 2.1-11.9 4.2z"/></svg>' +
"</button>"
},
share: {
url: function (instance, item) {
return (
(!instance.currentHash && !(item.type === "inline" || item.type === "html") ? item.origSrc || item.src : false) || window.location
);
},
tpl: '<div class="fancybox-share">' +
"<h1>{{SHARE}}</h1>" +
"<p>" +
'<a class="fancybox-share__button fancybox-share__button--fb" href="https://www.facebook.com/sharer/sharer.php?u={{url}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m287 456v-299c0-21 6-35 35-35h38v-63c-7-1-29-3-55-3-54 0-91 33-91 94v306m143-254h-205v72h196" /></svg>' +
"<span>Facebook</span>" +
"</a>" +
'<a class="fancybox-share__button fancybox-share__button--tw" href="https://twitter.com/intent/tweet?url={{url}}&text={{descr}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m456 133c-14 7-31 11-47 13 17-10 30-27 37-46-15 10-34 16-52 20-61-62-157-7-141 75-68-3-129-35-169-85-22 37-11 86 26 109-13 0-26-4-37-9 0 39 28 72 65 80-12 3-25 4-37 2 10 33 41 57 77 57-42 30-77 38-122 34 170 111 378-32 359-208 16-11 30-25 41-42z" /></svg>' +
"<span>Twitter</span>" +
"</a>" +
'<a class="fancybox-share__button fancybox-share__button--pt" href="https://www.pinterest.com/pin/create/button/?url={{url}}&description={{descr}}&media={{media}}">' +
'<svg viewBox="0 0 512 512" xmlns="http://www.w3.org/2000/svg"><path d="m265 56c-109 0-164 78-164 144 0 39 15 74 47 87 5 2 10 0 12-5l4-19c2-6 1-8-3-13-9-11-15-25-15-45 0-58 43-110 113-110 62 0 96 38 96 88 0 67-30 122-73 122-24 0-42-19-36-44 6-29 20-60 20-81 0-19-10-35-31-35-25 0-44 26-44 60 0 21 7 36 7 36l-30 125c-8 37-1 83 0 87 0 3 4 4 5 2 2-3 32-39 42-75l16-64c8 16 31 29 56 29 74 0 124-67 124-157 0-69-58-132-146-132z" fill="#fff"/></svg>' +
"<span>Pinterest</span>" +
"</a>" +
"</p>" +
'<p><input class="fancybox-share__input" type="text" value="{{url_raw}}" onclick="select()" /></p>' +
"</div>"
}
});
function escapeHtml(string) {
var entityMap = {
"&": "&amp;",
"<": "&lt;",
">": "&gt;",
'"': "&quot;",
"'": "&#39;",
"/": "&#x2F;",
"`": "&#x60;",
"=": "&#x3D;"
};
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}
$(document).on("click", "[data-fancybox-share]", function () {
var instance = $.fancybox.getInstance(),
current = instance.current || null,
url,
tpl;
if (!current) {
return;
}
if ($.type(current.opts.share.url) === "function") {
url = current.opts.share.url.apply(current, [instance, current]);
}
tpl = current.opts.share.tpl
.replace(/\{\{media\}\}/g, current.type === "image" ? encodeURIComponent(current.src) : "")
.replace(/\{\{url\}\}/g, encodeURIComponent(url))
.replace(/\{\{url_raw\}\}/g, escapeHtml(url))
.replace(/\{\{descr\}\}/g, instance.$caption ? encodeURIComponent(instance.$caption.text()) : "");
$.fancybox.open({
src: instance.translate(instance, tpl),
type: "html",
opts: {
touch: false,
animationEffect: false,
afterLoad: function (shareInstance, shareCurrent) {
// Close self if parent instance is closing
instance.$refs.container.one("beforeClose.fb", function () {
shareInstance.close(null, 0);
});
// Opening links in a popup window
shareCurrent.$content.find(".fancybox-share__button").click(function () {
window.open(this.href, "Share", "width=550, height=450");
return false;
});
},
mobile: {
autoFocus: false
}
}
});
});
})(document, jQuery);
// ==========================================================================
//
// Hash
// Enables linking to each modal
//
// ==========================================================================
(function (window, document, $) {
"use strict";
// Simple $.escapeSelector polyfill (for jQuery prior v3)
if (!$.escapeSelector) {
$.escapeSelector = function (sel) {
var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g;
var fcssescape = function (ch, asCodePoint) {
if (asCodePoint) {
// U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER
if (ch === "\0") {
return "\uFFFD";
}
// Control characters and (dependent upon position) numbers get escaped as code points
return ch.slice(0, -1) + "\\" + ch.charCodeAt(ch.length - 1).toString(16) + " ";
}
// Other potentially-special ASCII characters get backslash-escaped
return "\\" + ch;
};
return (sel + "").replace(rcssescape, fcssescape);
};
}
// Get info about gallery name and current index from url
function parseUrl() {
var hash = window.location.hash.substr(1),
rez = hash.split("-"),
index = rez.length > 1 && /^\+?\d+$/.test(rez[rez.length - 1]) ? parseInt(rez.pop(-1), 10) || 1 : 1,
gallery = rez.join("-");
return {
hash: hash,
/* Index is starting from 1 */
index: index < 1 ? 1 : index,
gallery: gallery
};
}
// Trigger click evnt on links to open new fancyBox instance
function triggerFromUrl(url) {
if (url.gallery !== "") {
// If we can find element matching 'data-fancybox' atribute,
// then triggering click event should start fancyBox
$("[data-fancybox='" + $.escapeSelector(url.gallery) + "']")
.eq(url.index - 1)
.focus()
.trigger("click.fb-start");
}
}
// Get gallery name from current instance
function getGalleryID(instance) {
var opts, ret;
if (!instance) {
return false;
}
opts = instance.current ? instance.current.opts : instance.opts;
ret = opts.hash || (opts.$orig ? opts.$orig.data("fancybox") || opts.$orig.data("fancybox-trigger") : "");
return ret === "" ? false : ret;
}
// Start when DOM becomes ready
$(function () {
// Check if user has disabled this module
if ($.fancybox.defaults.hash === false) {
return;
}
// Update hash when opening/closing fancyBox
$(document).on({
"onInit.fb": function (e, instance) {
var url, gallery;
if (instance.group[instance.currIndex].opts.hash === false) {
return;
}
url = parseUrl();
gallery = getGalleryID(instance);
// Make sure gallery start index matches index from hash
if (gallery && url.gallery && gallery == url.gallery) {
instance.currIndex = url.index - 1;
}
},
"beforeShow.fb": function (e, instance, current, firstRun) {
var gallery;
if (!current || current.opts.hash === false) {
return;
}
// Check if need to update window hash
gallery = getGalleryID(instance);
if (!gallery) {
return;
}
// Variable containing last hash value set by fancyBox
// It will be used to determine if fancyBox needs to close after hash change is detected
instance.currentHash = gallery + (instance.group.length > 1 ? "-" + (current.index + 1) : "");
// If current hash is the same (this instance most likely is opened by hashchange), then do nothing
if (window.location.hash === "#" + instance.currentHash) {
return;
}
if (firstRun && !instance.origHash) {
instance.origHash = window.location.hash;
}
if (instance.hashTimer) {
clearTimeout(instance.hashTimer);
}
// Update hash
instance.hashTimer = setTimeout(function () {
if ("replaceState" in window.history) {
window.history[firstRun ? "pushState" : "replaceState"]({},
document.title,
window.location.pathname + window.location.search + "#" + instance.currentHash
);
if (firstRun) {
instance.hasCreatedHistory = true;
}
} else {
window.location.hash = instance.currentHash;
}
instance.hashTimer = null;
}, 300);
},
"beforeClose.fb": function (e, instance, current) {
if (!current || current.opts.hash === false) {
return;
}
clearTimeout(instance.hashTimer);
// Goto previous history entry
if (instance.currentHash && instance.hasCreatedHistory) {
window.history.back();
} else if (instance.currentHash) {
if ("replaceState" in window.history) {
window.history.replaceState({}, document.title, window.location.pathname + window.location.search + (instance.origHash || ""));
} else {
window.location.hash = instance.origHash;
}
}
instance.currentHash = null;
}
});
// Check if need to start/close after url has changed
$(window).on("hashchange.fb", function () {
var url = parseUrl(),
fb = null;
// Find last fancyBox instance that has "hash"
$.each(
$(".fancybox-container")
.get()
.reverse(),
function (index, value) {
var tmp = $(value).data("FancyBox");
if (tmp && tmp.currentHash) {
fb = tmp;
return false;
}
}
);
if (fb) {
// Now, compare hash values
if (fb.currentHash !== url.gallery + "-" + url.index && !(url.index === 1 && fb.currentHash == url.gallery)) {
fb.currentHash = null;
fb.close();
}
} else if (url.gallery !== "") {
triggerFromUrl(url);
}
});
// Check current hash and trigger click event on matching element to start fancyBox, if needed
setTimeout(function () {
if (!$.fancybox.getInstance()) {
triggerFromUrl(parseUrl());
}
}, 50);
});
})(window, document, jQuery);
// ==========================================================================
//
// Wheel
// Basic mouse weheel support for gallery navigation
//
// ==========================================================================
(function (document, $) {
"use strict";
var prevTime = new Date().getTime();
$(document).on({
"onInit.fb": function (e, instance, current) {
instance.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll", function (e) {
var current = instance.current,
currTime = new Date().getTime();
if (instance.group.length < 2 || current.opts.wheel === false || (current.opts.wheel === "auto" && current.type !== "image")) {
return;
}
e.preventDefault();
e.stopPropagation();
if (current.$slide.hasClass("fancybox-animated")) {
return;
}
e = e.originalEvent || e;
if (currTime - prevTime < 250) {
return;
}
prevTime = currTime;
instance[(-e.deltaY || -e.deltaX || e.wheelDelta || -e.detail) < 0 ? "next" : "previous"]();
});
}
});
})(document, jQuery);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -1,15 +0,0 @@
MODULE=fancybox
cd ..
# old releases not needed anymore
mkdir -p $MODULE/dist
rm $MODULE/dist/*
# create release for actual version
zip -r9 $MODULE/dist/release.zip $MODULE/* -x $MODULE/dist/\* -x $MODULE/test/\* $MODULE/createrelease
echo dist/release.zip created.
cd $MODULE

View file

@ -1,61 +0,0 @@
<?php
/**
* Name: Fancybox
* Description: Open media attachments of posts into a fancybox overlay.
* Version: 1.05
* Author: Grischa Brockhaus <grischa@brockha.us>
* Status: Unsupported
*/
use Friendica\App;
use Friendica\Core\Hook;
use Friendica\DI;
function fancybox_install()
{
Hook::register('head', __FILE__, 'fancybox_head');
Hook::register('footer', __FILE__, 'fancybox_footer');
Hook::register('prepare_body_final', __FILE__, 'fancybox_render');
}
function fancybox_head(string &$b)
{
DI::page()->registerStylesheet(__DIR__ . '/asset/fancybox/jquery.fancybox.min.css');
}
function fancybox_footer(string &$str)
{
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/jquery.fancybox.min.js');
DI::page()->registerFooterScript(__DIR__ . '/asset/fancybox/fancybox.config.js');
}
function fancybox_render(array &$b){
$gallery = 'gallery-' . $b['item']['uri-id'] ?? random_int(1000000, 10000000);
// performWithEscapedBlocks escapes block defined with 2nd par pattern that won't be processed.
// We don't want to touch images in class="type-link":
$b['html'] = \Friendica\Util\Strings::performWithEscapedBlocks(
$b['html'],
'#<div class="type-link">.*?</div>#s',
function ($text) use ($gallery) {
// This processes images inlined in posts
// Frio / Vier hooks für lightbox are un-hooked in fancybox-config.js. So this works for them, too!
//if (!in_array(DI::app()->getCurrentTheme(),['vier','frio']))
$text = preg_replace(
'#<a[^>]*href="([^"]*)"[^>]*>(<img[^>]*src="[^"]*"[^>]*>)</a>#',
'<a data-fancybox="' . $gallery . '" href="$1">$2</a>',
$text);
// Local content images attached:
$text = preg_replace_callback(
'#<div class="(body-attach|imagegrid-column)">.*?</div>#s',
function ($matches) use ($gallery) {
return str_replace('<a href', '<a data-fancybox="' . $gallery . '" href', $matches[0]);
},
$text
);
return $text;
}
);
}

View file

@ -1,42 +0,0 @@
<?php
/**
*
* Name: NameThingy
* Description: The Ultimate Random Name Generator
* Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Status: Unsupported
*/
use Friendica\App;
use Friendica\Core\Hook;
use Friendica\DI;
function namethingy_install()
{
Hook::register('app_menu', 'addon/namethingy/namethingy.php', 'namethingy_app_menu');
}
function namethingy_app_menu(App $a, array &$b)
{
$b['app_menu'][] = '<div class="app-title"><a href="namethingy">NameThingy</a></div>';
}
/**
* This is a statement rather than an actual function definition. The simple
* existence of this method is checked to figure out if the addon offers a
* module.
*/
function namethingy_module() {}
function namethingy_content(App $a)
{
$baseurl = DI::baseUrl()->get() . '/addon/namethingy';
$o .= <<< EOT
<iframe src="http://namethingy.com" width="900" height="700" />
EOT;
return $o;
}

View file

@ -1,30 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: notimeline.php:48
msgid "No Timeline Settings"
msgstr ""
#: notimeline.php:50
msgid "Disable Archive selector on profile wall"
msgstr ""
#: notimeline.php:56
msgid "Save Settings"
msgstr ""

View file

@ -1,32 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-02-22 00:46+0000\n"
"Last-Translator: Farida Khalaf <faridakhalaf@hotmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: notimeline.php:48
msgid "No Timeline Settings"
msgstr "لا يوجد إعدادات للتسلسل  الزمني"
#: notimeline.php:50
msgid "Disable Archive selector on profile wall"
msgstr "تعطيل محدد الأرشيف على جدار الملف الشخصي"
#: notimeline.php:56
msgid "Save Settings"
msgstr "حفظ الإعدادات"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['No Timeline Settings'] = 'لا يوجد إعدادات للتسلسل  الزمني';
$a->strings['Disable Archive selector on profile wall'] = 'تعطيل محدد الأرشيف على جدار الملف الشخصي';
$a->strings['Save Settings'] = 'حفظ الإعدادات';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "No s'han actualitzat els ajustos de la línia de temps";
$a->strings["No Timeline Settings"] = "No hi han ajustos de la línia de temps";
$a->strings["Disable Archive selector on profile wall"] = "Desactivar el selector d'arxius del mur de perfils";
$a->strings["Submit"] = "Enviar";

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Michal Šupler <msupler@gmail.com>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2015-02-11 19:38+0000\n"
"Last-Translator: Michal Šupler <msupler@gmail.com>\n"
"Language-Team: Czech (http://www.transifex.com/projects/p/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Nastavení No Timeline aktualizováno."
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "Nastavení No Timeline"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr "Znemožnit použití archivu na této profilové zdi."
#: notimeline.php:64
msgid "Submit"
msgstr "Odeslat"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n==1)) { return 0; } else if (($n>=2 && $n<=4)) { return 1; } else { return 2; }
}}
$a->strings['No Timeline settings updated.'] = 'Nastavení No Timeline aktualizováno.';
$a->strings['No Timeline Settings'] = 'Nastavení No Timeline';
$a->strings['Disable Archive selector on profile wall'] = 'Znemožnit použití archivu na této profilové zdi.';
$a->strings['Submit'] = 'Odeslat';

View file

@ -1,37 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Andreas H., 2014
# Ulf Rompe <transifex.com@rompe.org>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2019-02-18 15:06+0000\n"
"Last-Translator: Ulf Rompe <transifex.com@rompe.org>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Keine Timeline-Einstellungen aktualisiert."
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "Keine Timeline-Einstellungen"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr "Deaktiviere Archiv-Auswahl auf deiner Pinnwand"
#: notimeline.php:64
msgid "Submit"
msgstr "Senden"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline settings updated.'] = 'Keine Timeline-Einstellungen aktualisiert.';
$a->strings['No Timeline Settings'] = 'Keine Timeline-Einstellungen';
$a->strings['Disable Archive selector on profile wall'] = 'Deaktiviere Archiv-Auswahl auf deiner Pinnwand';
$a->strings['Submit'] = 'Senden';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "No Timeline agordojn ĝisdatigita.";
$a->strings["No Timeline Settings"] = "No Timeline Agordoj";
$a->strings["Disable Archive selector on profile wall"] = "Malaktivigi la Arkivo elektilo sur la profilmuro";
$a->strings["Submit"] = "Sendi";

View file

@ -1,33 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Albert, 2016
# Senex Petrovic <javierruizo@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-04-06 01:47+0000\n"
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:48
msgid "No Timeline Settings"
msgstr "No hay ajustes de Línea de Tiempo"
#: notimeline.php:50
msgid "Disable Archive selector on profile wall"
msgstr "Deshabilitar el selector Archivo en el muro de perfil"
#: notimeline.php:56
msgid "Save Settings"
msgstr "Grabar ajustes"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline Settings'] = 'No hay ajustes de Línea de Tiempo';
$a->strings['Disable Archive selector on profile wall'] = 'Deshabilitar el selector Archivo en el muro de perfil';
$a->strings['Save Settings'] = 'Grabar ajustes';

View file

@ -1,37 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2018-04-08 16:10+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "No Timeline -asetukset päivitetty"
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "No Timeline -asetukset"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr ""
#: notimeline.php:64
msgid "Submit"
msgstr "Lähetä"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline settings updated.'] = 'No Timeline -asetukset päivitetty';
$a->strings['No Timeline Settings'] = 'No Timeline -asetukset';
$a->strings['Submit'] = 'Lähetä';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "Pas de mise à jour de paramètres du calendrier.";
$a->strings["No Timeline Settings"] = "Pas de paramètres de calendrier";
$a->strings["Disable Archive selector on profile wall"] = "Désactiver le sélecteur d'archives sur le mur";
$a->strings["Submit"] = "Envoyer";

View file

@ -1,32 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Balázs Úr, 2020-2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-03-25 22:50+0000\n"
"Last-Translator: Balázs Úr\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:48
msgid "No Timeline Settings"
msgstr "Nincs idővonal beállításai"
#: notimeline.php:50
msgid "Disable Archive selector on profile wall"
msgstr "Archiválás kiválasztó letiltása a profil falán"
#: notimeline.php:56
msgid "Save Settings"
msgstr "Beállítások mentése"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline Settings'] = 'Nincs idővonal beállításai';
$a->strings['Disable Archive selector on profile wall'] = 'Archiválás kiválasztó letiltása a profil falán';
$a->strings['Save Settings'] = 'Beállítások mentése';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "";
$a->strings["No Timeline Settings"] = "";
$a->strings["Disable Archive selector on profile wall"] = "";
$a->strings["Submit"] = "Senda inn";

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014-2015
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2017-09-20 06:08+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Impostazioni \"No Timeline\" aggiornate."
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "Impostazioni \"No Timeline\""
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr "Disabilita il selettore dell'archivio sulla pagina del profilo"
#: notimeline.php:64
msgid "Submit"
msgstr "Invia"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline settings updated.'] = 'Impostazioni "No Timeline" aggiornate.';
$a->strings['No Timeline Settings'] = 'Impostazioni "No Timeline"';
$a->strings['Disable Archive selector on profile wall'] = 'Disabilita il selettore dell\'archivio sulla pagina del profilo';
$a->strings['Submit'] = 'Invia';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "";
$a->strings["No Timeline Settings"] = "";
$a->strings["Disable Archive selector on profile wall"] = "";
$a->strings["Submit"] = "Lagre";

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Jeroen De Meerleer <me@jeroened.be>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2018-08-24 13:48+0000\n"
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Geen tijdlijn instellingen opgeslagen"
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "No Timeline instellingen"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr ""
#: notimeline.php:64
msgid "Submit"
msgstr ""

View file

@ -1,9 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['No Timeline settings updated.'] = 'Geen tijdlijn instellingen opgeslagen';
$a->strings['No Timeline Settings'] = 'No Timeline instellingen';

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2018-03-31 19:17+0000\n"
"Last-Translator: Waldemar Stoczkowski <waldemar.stoczkowski@gmail.com>\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Nie zaktualizowano ustawień osi czasu."
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "Brak ustawień osi czasu"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr "Wyłącz selektor Archiwum na ścianie profilowej"
#: notimeline.php:64
msgid "Submit"
msgstr "Wyślij"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['No Timeline settings updated.'] = 'Nie zaktualizowano ustawień osi czasu.';
$a->strings['No Timeline Settings'] = 'Brak ustawień osi czasu';
$a->strings['Disable Archive selector on profile wall'] = 'Wyłącz selektor Archiwum na ścianie profilowej';
$a->strings['Submit'] = 'Wyślij';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "";
$a->strings["No Timeline Settings"] = "";
$a->strings["Disable Archive selector on profile wall"] = "";
$a->strings["Submit"] = "Enviar";

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# Doru DEACONU <dumitrudeaconu@yahoo.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2014-11-27 14:16+0000\n"
"Last-Translator: Doru DEACONU <dumitrudeaconu@yahoo.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "Configurările pentru Lipsă Cronologie, au fost actualizate."
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "Configurări pentru Lipsă Cronologie"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr "Dezactivare selector Arhivă din peretele de profil"
#: notimeline.php:64
msgid "Submit"
msgstr "Trimite"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['No Timeline settings updated.'] = 'Configurările pentru Lipsă Cronologie, au fost actualizate.';
$a->strings['No Timeline Settings'] = 'Configurări pentru Lipsă Cronologie';
$a->strings['Disable Archive selector on profile wall'] = 'Dezactivare selector Arhivă din peretele de profil';
$a->strings['Submit'] = 'Trimite';

View file

@ -1,6 +0,0 @@
<?php
$a->strings["No Timeline settings updated."] = "";
$a->strings["No Timeline Settings"] = "";
$a->strings["Disable Archive selector on profile wall"] = "";
$a->strings["Submit"] = "Подтвердить";

View file

@ -1,3 +0,0 @@
<?php
$a->strings["Submit"] = "Spara";

View file

@ -1,36 +0,0 @@
# ADDON notimeline
# Copyright (C)
# This file is distributed under the same license as the Friendica notimeline addon package.
#
#
# Translators:
# 朱陈锬 <tangenters@outlook.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2018-06-16 09:44+0000\n"
"Last-Translator: 朱陈锬 <tangenters@outlook.com>\n"
"Language-Team: Chinese (China) (http://www.transifex.com/Friendica/friendica/language/zh_CN/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: zh_CN\n"
"Plural-Forms: nplurals=1; plural=0;\n"
#: notimeline.php:32
msgid "No Timeline settings updated."
msgstr "时间轴设置未更新。"
#: notimeline.php:56
msgid "No Timeline Settings"
msgstr "无时间轴设置"
#: notimeline.php:58
msgid "Disable Archive selector on profile wall"
msgstr ""
#: notimeline.php:64
msgid "Submit"
msgstr "提交"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_zh_cn")) {
function string_plural_select_zh_cn($n){
$n = intval($n);
return intval(0);
}}
$a->strings['No Timeline settings updated.'] = '时间轴设置未更新。';
$a->strings['No Timeline Settings'] = '无时间轴设置';
$a->strings['Submit'] = '提交';

View file

@ -1,14 +0,0 @@
#notimeline-label {
float: left;
width: 200px;
margin-bottom: 25px;
}
#notimeline-checkbox {
float: left;
}

View file

@ -1,57 +0,0 @@
<?php
/**
* Name: Notimeline
* Description: Disable "Archives" widget on profile page
* Version: 1.0
* Author: Mike Macgirvin <http://macgirvin.com/profile/mike>
* Status: Unsupported
*
*/
use Friendica\Core\Hook;
use Friendica\DI;
function notimeline_install()
{
Hook::register('addon_settings', 'addon/notimeline/notimeline.php', 'notimeline_settings');
Hook::register('addon_settings_post', 'addon/notimeline/notimeline.php', 'notimeline_settings_post');
}
function notimeline_settings_post($a, $post)
{
if (!local_user() || empty($_POST['notimeline-submit'])) {
return;
}
DI::pConfig()->set(local_user(), 'system', 'no_wall_archive_widget', intval($_POST['notimeline']));
}
function notimeline_settings(&$a, &$s)
{
if (! local_user()) {
return;
}
/* Add our stylesheet to the page so we can make our settings look nice */
DI::page()['htmlhead'] .= '<link rel="stylesheet" type="text/css" href="' . DI::baseUrl()->get() . '/addon/notimeline/notimeline.css' . '" media="all" />' . "\r\n";
/* Get the current state of our config variable */
$notimeline = DI::pConfig()->get(local_user(), 'system', 'no_wall_archive_widget', false);
$notimeline_checked = (($notimeline) ? ' checked="checked" ' : '');
/* Add some HTML to the existing form */
$s .= '<div class="settings-block">';
$s .= '<h3>' . DI::l10n()->t('No Timeline Settings') . '</h3>';
$s .= '<div id="notimeline-wrapper">';
$s .= '<label id="notimeline-label" for="notimeline-checkbox">' . DI::l10n()->t('Disable Archive selector on profile wall') . '</label>';
$s .= '<input id="notimeline-checkbox" type="checkbox" name="notimeline" value="1" ' . $notimeline_checked . '/>';
$s .= '</div><div class="clear"></div>';
/* provide a submit button */
$s .= '<div class="settings-submit-wrapper" ><input type="submit" name="notimeline-submit" class="settings-submit" value="' . DI::l10n()->t('Save Settings') . '" /></div></div>';
}

View file

@ -1,30 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr ""
#: superblock.php:40
msgid "Superblock"
msgstr ""
#: superblock.php:129
msgid "Block Completely"
msgstr ""

View file

@ -1,36 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Farida Khalaf <faridakhalaf@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-02-20 05:33+0000\n"
"Last-Translator: Farida Khalaf <faridakhalaf@hotmail.com>\n"
"Language-Team: Arabic (http://www.transifex.com/Friendica/friendica/language/ar/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ar\n"
"Plural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\n"
#: superblock.php:38 superblock.php:42
msgid "Superblock"
msgstr "حظر تام"
#: superblock.php:45
msgid "Comma separated profile URLS to block"
msgstr "عناوين URL للملف الشخصي مفصولة بفاصلة للحظر"
#: superblock.php:49
msgid "Save Settings"
msgstr "حفظ الإعدادات"
#: superblock.php:138
msgid "Block Completely"
msgstr "حظر كامل"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_ar")) {
function string_plural_select_ar($n){
$n = intval($n);
if ($n==0) { return 0; } else if ($n==1) { return 1; } else if ($n==2) { return 2; } else if ($n%100>=3 && $n%100<=10) { return 3; } else if ($n%100>=11 && $n%100<=99) { return 4; } else { return 5; }
}}
$a->strings['Superblock'] = 'حظر تام';
$a->strings['Comma separated profile URLS to block'] = 'عناوين URL للملف الشخصي مفصولة بفاصلة للحظر';
$a->strings['Save Settings'] = 'حفظ الإعدادات';
$a->strings['Block Completely'] = 'حظر كامل';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "Configuració de \"Bloqueig\"";
$a->strings["Comma separated profile URLS to block"] = "URLS dels perfils a bloquejar, separats per comes";
$a->strings["Submit"] = "Enviar";
$a->strings["BLOCKEM Settings saved."] = "Guardada la configuració de BLOQUEIG.";
$a->strings["Blocked %s - Click to open/close"] = "Bloquejar %s - Clica per obrir/tancar";
$a->strings["Unblock Author"] = "Desbloquejar Autor";
$a->strings["Block Author"] = "Bloquejar Autor";
$a->strings["blockem settings updated"] = "Actualitzar la Configuració de bloqueig";

View file

@ -1,46 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Aditoo, 2018
# Aditoo, 2018
# michal_s <msupler@gmail.com>, 2014
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:25+0200\n"
"PO-Revision-Date: 2018-08-18 12:27+0000\n"
"Last-Translator: Aditoo\n"
"Language-Team: Czech (http://www.transifex.com/Friendica/friendica/language/cs/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: cs\n"
"Plural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\n"
#: superblock.php:47 superblock.php:51
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:54
msgid "Comma separated profile URLS to block"
msgstr "Čárkou oddělené URL adresy profilů určených k ignorování"
#: superblock.php:58
msgid "Save Settings"
msgstr "Uložit nastavení"
#: superblock.php:71
msgid "SUPERBLOCK Settings saved."
msgstr "Nastavení SUPERBLOCK uložena"
#: superblock.php:144
msgid "Block Completely"
msgstr "Zablokovat úplně"
#: superblock.php:165
msgid "superblock settings updated"
msgstr "nastavení superblock aktualizována"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_cs")) {
function string_plural_select_cs($n){
$n = intval($n);
if (($n == 1 && $n % 1 == 0)) { return 0; } else if (($n >= 2 && $n <= 4 && $n % 1 == 0)) { return 1; } else if (($n % 1 != 0 )) { return 2; } else { return 3; }
}}
$a->strings['Superblock'] = 'Superblock';
$a->strings['Comma separated profile URLS to block'] = 'Čárkou oddělené URL adresy profilů určených k ignorování';
$a->strings['Save Settings'] = 'Uložit nastavení';
$a->strings['SUPERBLOCK Settings saved.'] = 'Nastavení SUPERBLOCK uložena';
$a->strings['Block Completely'] = 'Zablokovat úplně';
$a->strings['superblock settings updated'] = 'nastavení superblock aktualizována';

View file

@ -1,32 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Anton <dev@atjn.dk>, 2022
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: 2014-06-23 12:55+0000\n"
"Last-Translator: Anton <dev@atjn.dk>, 2022\n"
"Language-Team: Danish (Denmark) (http://www.transifex.com/Friendica/friendica/language/da_DK/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: da_DK\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr "Kommasepareret liste over profil-URL'er som skal blokeres"
#: superblock.php:40
msgid "Superblock"
msgstr "Superblokér"
#: superblock.php:129
msgid "Block Completely"
msgstr "Blokér fuldstændigt"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_da_dk")) {
function string_plural_select_da_dk($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Comma separated profile URLs to block'] = 'Kommasepareret liste over profil-URL\'er som skal blokeres';
$a->strings['Superblock'] = 'Superblokér';
$a->strings['Block Completely'] = 'Blokér fuldstændigt';

View file

@ -1,35 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Andreas H., 2018
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2014-2015
# Tobias Diekershoff <tobias.diekershoff@gmx.net>, 2017-2018,2022
# Ulf Rompe <transifex.com@rompe.org>, 2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: 2022-01-22 17:42+0000\n"
"Last-Translator: Tobias Diekershoff <tobias.diekershoff@gmx.net>\n"
"Language-Team: German (http://www.transifex.com/Friendica/friendica/language/de/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: de\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr "Profil-URLs, die geblockt werden sollen (durch Kommas getrennt)"
#: superblock.php:40
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:129
msgid "Block Completely"
msgstr "Vollständig blockieren"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_de")) {
function string_plural_select_de($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Comma separated profile URLs to block'] = 'Profil-URLs, die geblockt werden sollen (durch Kommas getrennt)';
$a->strings['Superblock'] = 'Superblock';
$a->strings['Block Completely'] = 'Vollständig blockieren';

View file

@ -1,45 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Andy H3 <andy@hubup.pro>, 2019
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:25+0200\n"
"PO-Revision-Date: 2019-06-05 14:43+0000\n"
"Last-Translator: Andy H3 <andy@hubup.pro>\n"
"Language-Team: English (United Kingdom) (http://www.transifex.com/Friendica/friendica/language/en_GB/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_GB\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:47 superblock.php:51
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:54
msgid "Comma separated profile URLS to block"
msgstr "Profile URLs to block (separated by commas)"
#: superblock.php:58
msgid "Save Settings"
msgstr "Save settings"
#: superblock.php:71
msgid "SUPERBLOCK Settings saved."
msgstr "Superblock settings saved."
#: superblock.php:144
msgid "Block Completely"
msgstr "Block completely"
#: superblock.php:165
msgid "superblock settings updated"
msgstr "Superblock settings updated"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_gb")) {
function string_plural_select_en_gb($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Superblock'] = 'Superblock';
$a->strings['Comma separated profile URLS to block'] = 'Profile URLs to block (separated by commas)';
$a->strings['Save Settings'] = 'Save settings';
$a->strings['SUPERBLOCK Settings saved.'] = 'Superblock settings saved.';
$a->strings['Block Completely'] = 'Block completely';
$a->strings['superblock settings updated'] = 'Superblock settings updated';

View file

@ -1,44 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# R C <miqrogroove@gmail.com>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-21 08:45+0200\n"
"PO-Revision-Date: 2018-06-13 02:39+0000\n"
"Last-Translator: R C <miqrogroove@gmail.com>\n"
"Language-Team: English (United States) (http://www.transifex.com/Friendica/friendica/language/en_US/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: en_US\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:53 superblock.php:57
msgid "\"Superblock\""
msgstr ""
#: superblock.php:60
msgid "Comma separated profile URLS to block"
msgstr "Comma-separated profile URLs to block"
#: superblock.php:64
msgid "Save Settings"
msgstr ""
#: superblock.php:76
msgid "SUPERBLOCK Settings saved."
msgstr ""
#: superblock.php:148
msgid "Block Completely"
msgstr ""
#: superblock.php:168
msgid "superblock settings updated"
msgstr ""

View file

@ -1,8 +0,0 @@
<?php
if(! function_exists("string_plural_select_en_us")) {
function string_plural_select_en_us($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Comma separated profile URLS to block'] = 'Comma-separated profile URLs to block';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" Agordoj";
$a->strings["Comma separated profile URLS to block"] = "Blokotaj URL adresoj, disigita per komo";
$a->strings["Submit"] = "Sendi";
$a->strings["BLOCKEM Settings saved."] = "Konservis Agordojn de BLOCKEM.";
$a->strings["Blocked %s - Click to open/close"] = "%s blokita - Klaku por malfermi/fermi";
$a->strings["Unblock Author"] = "Malbloki Aŭtoron";
$a->strings["Block Author"] = "Bloki Aŭtoron";
$a->strings["blockem settings updated"] = "Ĝisdatigis la blockem agordojn";

View file

@ -1,38 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Albert, 2016-2017
# juanman <juanma@disroot.org>, 2017
# Senex Petrovic <javierruizo@hotmail.com>, 2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-02-01 18:15+0100\n"
"PO-Revision-Date: 2021-04-06 02:09+0000\n"
"Last-Translator: Senex Petrovic <javierruizo@hotmail.com>\n"
"Language-Team: Spanish (http://www.transifex.com/Friendica/friendica/language/es/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: es\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:38 superblock.php:42
msgid "Superblock"
msgstr "Soperbloquéo"
#: superblock.php:45
msgid "Comma separated profile URLS to block"
msgstr "Perfil de URLS a bloque separado por comas"
#: superblock.php:49
msgid "Save Settings"
msgstr "Guardar configuración"
#: superblock.php:138
msgid "Block Completely"
msgstr "Bloquear completamente"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_es")) {
function string_plural_select_es($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Superblock'] = 'Soperbloquéo';
$a->strings['Comma separated profile URLS to block'] = 'Perfil de URLS a bloque separado por comas';
$a->strings['Save Settings'] = 'Guardar configuración';
$a->strings['Block Completely'] = 'Bloquear completamente';

View file

@ -1,45 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Kris, 2018
# Kris, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-04-21 08:45+0200\n"
"PO-Revision-Date: 2018-04-16 16:00+0000\n"
"Last-Translator: Kris\n"
"Language-Team: Finnish (Finland) (http://www.transifex.com/Friendica/friendica/language/fi_FI/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fi_FI\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:53 superblock.php:57
msgid "\"Superblock\""
msgstr "\"Superblock\""
#: superblock.php:60
msgid "Comma separated profile URLS to block"
msgstr "Estettävien profiilien URL-osoitteet pilkulla erotettuina"
#: superblock.php:64
msgid "Save Settings"
msgstr "Tallenna asetukset"
#: superblock.php:76
msgid "SUPERBLOCK Settings saved."
msgstr "Superblock -asetukset tallennettu."
#: superblock.php:148
msgid "Block Completely"
msgstr "Estä kokonaan"
#: superblock.php:168
msgid "superblock settings updated"
msgstr "superblock -asetukset päivitetty"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_fi_fi")) {
function string_plural_select_fi_fi($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['"Superblock"'] = '"Superblock"';
$a->strings['Comma separated profile URLS to block'] = 'Estettävien profiilien URL-osoitteet pilkulla erotettuina';
$a->strings['Save Settings'] = 'Tallenna asetukset';
$a->strings['SUPERBLOCK Settings saved.'] = 'Superblock -asetukset tallennettu.';
$a->strings['Block Completely'] = 'Estä kokonaan';
$a->strings['superblock settings updated'] = 'superblock -asetukset päivitetty';

View file

@ -1,33 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# ButterflyOfFire, 2020
# Hypolite Petovan <hypolite@mrpetovan.com>, 2022
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: 2014-06-23 12:55+0000\n"
"Last-Translator: Hypolite Petovan <hypolite@mrpetovan.com>, 2022\n"
"Language-Team: French (http://www.transifex.com/Friendica/friendica/language/fr/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: fr\n"
"Plural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr "Liste d'URLs de profils à bloquer séparées par des virgules"
#: superblock.php:40
msgid "Superblock"
msgstr ""
#: superblock.php:129
msgid "Block Completely"
msgstr "Bloquer complètement"

View file

@ -1,9 +0,0 @@
<?php
if(! function_exists("string_plural_select_fr")) {
function string_plural_select_fr($n){
$n = intval($n);
if (($n == 0 || $n == 1)) { return 0; } else if ($n != 0 && $n % 1000000 == 0) { return 1; } else { return 2; }
}}
$a->strings['Comma separated profile URLs to block'] = 'Liste d\'URLs de profils à bloquer séparées par des virgules';
$a->strings['Block Completely'] = 'Bloquer complètement';

View file

@ -1,32 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Balázs Úr, 2020-2021
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: 2021-12-23 19:29+0000\n"
"Last-Translator: Balázs Úr\n"
"Language-Team: Hungarian (http://www.transifex.com/Friendica/friendica/language/hu/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: hu\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr "Tiltandó profil URL-ek vesszővel elválasztott listája"
#: superblock.php:40
msgid "Superblock"
msgstr "Szuper tiltás"
#: superblock.php:129
msgid "Block Completely"
msgstr "Tiltás teljesen"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_hu")) {
function string_plural_select_hu($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Comma separated profile URLs to block'] = 'Tiltandó profil URL-ek vesszővel elválasztott listája';
$a->strings['Superblock'] = 'Szuper tiltás';
$a->strings['Block Completely'] = 'Tiltás teljesen';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "\"Blockem\" stillingar";
$a->strings["Comma separated profile URLS to block"] = "Banna lista af forsíðum (komma á milli)";
$a->strings["Submit"] = "Senda inn";
$a->strings["BLOCKEM Settings saved."] = "BLOCKEM stillingar vistaðar.";
$a->strings["Blocked %s - Click to open/close"] = "%s sett í straff - Smella til að taka úr/setja á";
$a->strings["Unblock Author"] = "Leyfa notanda";
$a->strings["Block Author"] = "Banna notanda";
$a->strings["blockem settings updated"] = "";

View file

@ -1,44 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# fabrixxm <fabrix.xm@gmail.com>, 2014-2015,2017,2019
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:25+0200\n"
"PO-Revision-Date: 2019-03-11 14:21+0000\n"
"Last-Translator: fabrixxm <fabrix.xm@gmail.com>\n"
"Language-Team: Italian (http://www.transifex.com/Friendica/friendica/language/it/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: it\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:47 superblock.php:51
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:54
msgid "Comma separated profile URLS to block"
msgstr "Lista, separata da virgola, di indirizzi di profili da bloccare"
#: superblock.php:58
msgid "Save Settings"
msgstr "Salva Impostazioni"
#: superblock.php:71
msgid "SUPERBLOCK Settings saved."
msgstr "Impostazioni \"Superblocco\" salvate."
#: superblock.php:144
msgid "Block Completely"
msgstr "Blocca Completamente"
#: superblock.php:165
msgid "superblock settings updated"
msgstr "impostazioni \"superblocco\" aggiornate."

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_it")) {
function string_plural_select_it($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Superblock'] = 'Superblock';
$a->strings['Comma separated profile URLS to block'] = 'Lista, separata da virgola, di indirizzi di profili da bloccare';
$a->strings['Save Settings'] = 'Salva Impostazioni';
$a->strings['SUPERBLOCK Settings saved.'] = 'Impostazioni "Superblocco" salvate.';
$a->strings['Block Completely'] = 'Blocca Completamente';
$a->strings['superblock settings updated'] = 'impostazioni "superblocco" aggiornate.';

View file

@ -1,10 +0,0 @@
<?php
$a->strings["\"Blockem\" Settings"] = "";
$a->strings["Comma separated profile URLS to block"] = "";
$a->strings["Submit"] = "Lagre";
$a->strings["BLOCKEM Settings saved."] = "";
$a->strings["Blocked %s - Click to open/close"] = "";
$a->strings["Unblock Author"] = "";
$a->strings["Block Author"] = "";
$a->strings["blockem settings updated"] = "";

View file

@ -1,44 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Jeroen De Meerleer <me@jeroened.be>, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-08-17 10:25+0200\n"
"PO-Revision-Date: 2018-08-24 13:51+0000\n"
"Last-Translator: Jeroen De Meerleer <me@jeroened.be>\n"
"Language-Team: Dutch (http://www.transifex.com/Friendica/friendica/language/nl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: nl\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: superblock.php:47 superblock.php:51
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:54
msgid "Comma separated profile URLS to block"
msgstr ""
#: superblock.php:58
msgid "Save Settings"
msgstr "Instellingen opslaan"
#: superblock.php:71
msgid "SUPERBLOCK Settings saved."
msgstr "SUPERBLOCK instellingen opgeslagen"
#: superblock.php:144
msgid "Block Completely"
msgstr ""
#: superblock.php:165
msgid "superblock settings updated"
msgstr "Superblock instellingen opgeslagen"

View file

@ -1,11 +0,0 @@
<?php
if(! function_exists("string_plural_select_nl")) {
function string_plural_select_nl($n){
$n = intval($n);
return intval($n != 1);
}}
$a->strings['Superblock'] = 'Superblock';
$a->strings['Save Settings'] = 'Instellingen opslaan';
$a->strings['SUPERBLOCK Settings saved.'] = 'SUPERBLOCK instellingen opgeslagen';
$a->strings['superblock settings updated'] = 'Superblock instellingen opgeslagen';

View file

@ -1,33 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
# Piotr Strębski <strebski@gmail.com>, 2022
# Waldemar Stoczkowski, 2018
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2021-11-21 19:16-0500\n"
"PO-Revision-Date: 2014-06-23 12:55+0000\n"
"Last-Translator: Piotr Strębski <strebski@gmail.com>, 2022\n"
"Language-Team: Polish (http://www.transifex.com/Friendica/friendica/language/pl/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pl\n"
"Plural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\n"
#: superblock.php:35
msgid "Comma separated profile URLs to block"
msgstr "Oddzielone przecinkami adresy URL profilów do zablokowania"
#: superblock.php:40
msgid "Superblock"
msgstr "Superblock"
#: superblock.php:129
msgid "Block Completely"
msgstr "Całkowicie zablokuj"

View file

@ -1,10 +0,0 @@
<?php
if(! function_exists("string_plural_select_pl")) {
function string_plural_select_pl($n){
$n = intval($n);
if ($n==1) { return 0; } else if (($n%10>=2 && $n%10<=4) && ($n%100<12 || $n%100>14)) { return 1; } else if ($n!=1 && ($n%10>=0 && $n%10<=1) || ($n%10>=5 && $n%10<=9) || ($n%100>=12 && $n%100<=14)) { return 2; } else { return 3; }
}}
$a->strings['Comma separated profile URLs to block'] = 'Oddzielone przecinkami adresy URL profilów do zablokowania';
$a->strings['Superblock'] = 'Superblock';
$a->strings['Block Completely'] = 'Całkowicie zablokuj';

View file

@ -1,53 +0,0 @@
# ADDON blockem
# Copyright (C)
# This file is distributed under the same license as the Friendica blockem addon package.
#
#
# Translators:
# Beatriz Vital <vitalb@riseup.net>, 2016
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2013-02-27 05:01-0500\n"
"PO-Revision-Date: 2016-08-16 12:51+0000\n"
"Last-Translator: Beatriz Vital <vitalb@riseup.net>\n"
"Language-Team: Portuguese (Brazil) (http://www.transifex.com/Friendica/friendica/language/pt_BR/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: pt_BR\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
#: blockem.php:51
msgid "\"Blockem\" Settings"
msgstr "Configurações do \"Blockem\""
#: blockem.php:53
msgid "Comma separated profile URLS to block"
msgstr "URLs de perfis a serem bloqueados, separados por vírgulas"
#: blockem.php:57
msgid "Submit"
msgstr "Enviar"
#: blockem.php:70
msgid "BLOCKEM Settings saved."
msgstr "As configurações do Blockem foram salvas."
#: blockem.php:105
#, php-format
msgid "Blocked %s - Click to open/close"
msgstr "Bloqueou %s - Clique para abrir/fechar"
#: blockem.php:160
msgid "Unblock Author"
msgstr "Desbloquear autor"
#: blockem.php:162
msgid "Block Author"
msgstr "Bloquear autor"
#: blockem.php:194
msgid "blockem settings updated"
msgstr "As configurações do Blockem foram atualizadas."

View file

@ -1,15 +0,0 @@
<?php
if(! function_exists("string_plural_select_pt_br")) {
function string_plural_select_pt_br($n){
$n = intval($n);
return intval($n > 1);
}}
$a->strings['"Blockem" Settings'] = 'Configurações do "Blockem"';
$a->strings['Comma separated profile URLS to block'] = 'URLs de perfis a serem bloqueados, separados por vírgulas';
$a->strings['Submit'] = 'Enviar';
$a->strings['BLOCKEM Settings saved.'] = 'As configurações do Blockem foram salvas.';
$a->strings['Blocked %s - Click to open/close'] = 'Bloqueou %s - Clique para abrir/fechar';
$a->strings['Unblock Author'] = 'Desbloquear autor';
$a->strings['Block Author'] = 'Bloquear autor';
$a->strings['blockem settings updated'] = 'As configurações do Blockem foram atualizadas.';

View file

@ -1,43 +0,0 @@
# ADDON superblock
# Copyright (C)
# This file is distributed under the same license as the Friendica superblock addon package.
#
#
# Translators:
msgid ""
msgstr ""
"Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-06-23 14:45+0200\n"
"PO-Revision-Date: 2014-07-08 12:08+0000\n"
"Last-Translator: Arian - Cazare Muncitori <arianserv@gmail.com>\n"
"Language-Team: Romanian (Romania) (http://www.transifex.com/projects/p/friendica/language/ro_RO/)\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Language: ro_RO\n"
"Plural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\n"
#: superblock.php:52
msgid "\"Superblock\" Settings"
msgstr "Configurări \"Superblock\""
#: superblock.php:54
msgid "Comma separated profile URLS to block"
msgstr "Adresele URL de profil, de blocat, separate prin virgulă"
#: superblock.php:58
msgid "Save Settings"
msgstr "Salvare Configurări"
#: superblock.php:71
msgid "SUPERBLOCK Settings saved."
msgstr "Configurările SUPERBLOCK au fost salvate."
#: superblock.php:143
msgid "Block Completely"
msgstr "Blocare Completă"
#: superblock.php:163
msgid "superblock settings updated"
msgstr "Configurările superblock au fost actualizate"

View file

@ -1,13 +0,0 @@
<?php
if(! function_exists("string_plural_select_ro")) {
function string_plural_select_ro($n){
$n = intval($n);
if ($n==1) { return 0; } else if ((($n%100>19)||(($n%100==0)&&($n!=0)))) { return 2; } else { return 1; }
}}
$a->strings['"Superblock" Settings'] = 'Configurări "Superblock"';
$a->strings['Comma separated profile URLS to block'] = 'Adresele URL de profil, de blocat, separate prin virgulă';
$a->strings['Save Settings'] = 'Salvare Configurări';
$a->strings['SUPERBLOCK Settings saved.'] = 'Configurările SUPERBLOCK au fost salvate.';
$a->strings['Block Completely'] = 'Blocare Completă';
$a->strings['superblock settings updated'] = 'Configurările superblock au fost actualizate';

Some files were not shown because too many files have changed in this diff Show more