aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--.gitlab-ci.yml95
-rw-r--r--CHANGELOG10
-rw-r--r--Zotlabs/Daemon/Cache_embeds.php27
-rw-r--r--Zotlabs/Daemon/Notifier.php13
-rw-r--r--Zotlabs/Lib/Activity.php50
-rw-r--r--Zotlabs/Lib/Apps.php376
-rw-r--r--Zotlabs/Lib/Libzot.php288
-rw-r--r--Zotlabs/Lib/PConfig.php21
-rw-r--r--Zotlabs/Lib/Share.php1
-rw-r--r--Zotlabs/Lib/ThreadItem.php34
-rw-r--r--Zotlabs/Lib/ThreadListener.php53
-rw-r--r--Zotlabs/Module/Admin.php2
-rw-r--r--Zotlabs/Module/Admin/Addons.php5
-rw-r--r--Zotlabs/Module/Admin/Site.php2
-rw-r--r--Zotlabs/Module/Affinity.php94
-rw-r--r--Zotlabs/Module/Cards.php16
-rw-r--r--Zotlabs/Module/Chanview.php2
-rw-r--r--Zotlabs/Module/Connedit.php2
-rw-r--r--Zotlabs/Module/Display.php5
-rw-r--r--Zotlabs/Module/Embed.php22
-rw-r--r--Zotlabs/Module/Embedphotos.php122
-rw-r--r--Zotlabs/Module/Events.php4
-rw-r--r--Zotlabs/Module/Group.php11
-rw-r--r--Zotlabs/Module/Item.php151
-rw-r--r--Zotlabs/Module/Mail.php4
-rw-r--r--Zotlabs/Module/Network.php8
-rw-r--r--Zotlabs/Module/Notes.php20
-rw-r--r--Zotlabs/Module/Oep.php11
-rw-r--r--Zotlabs/Module/Photos.php2
-rw-r--r--Zotlabs/Module/Profiles.php28
-rw-r--r--Zotlabs/Module/Settings/Featured.php42
-rw-r--r--Zotlabs/Module/Share.php140
-rw-r--r--Zotlabs/Module/Viewsrc.php4
-rw-r--r--Zotlabs/Photo/PhotoDriver.php498
-rw-r--r--Zotlabs/Photo/PhotoGd.php176
-rw-r--r--Zotlabs/Photo/PhotoImagick.php (renamed from include/photo/photo_imagick.php)143
-rw-r--r--Zotlabs/Web/Session.php46
-rw-r--r--Zotlabs/Widget/Affinity.php89
-rw-r--r--Zotlabs/Widget/Settings_menu.php7
-rw-r--r--Zotlabs/Zot6/Zot6Handler.php36
-rw-r--r--app/affinity.apd7
-rwxr-xr-xboot.php32
-rw-r--r--doc/hook/jot_header_tpl_filter.bb5
-rw-r--r--doc/hook/jot_tpl_filter.bb5
-rw-r--r--doc/hooklist.bb6
-rw-r--r--include/attach.php60
-rw-r--r--include/contact_widgets.php40
-rw-r--r--include/conversation.php19
-rw-r--r--include/event.php17
-rw-r--r--include/features.php8
-rw-r--r--include/feedutils.php20
-rw-r--r--include/help.php30
-rw-r--r--include/import.php9
-rwxr-xr-xinclude/items.php65
-rw-r--r--include/message.php2
-rw-r--r--include/photo/photo_driver.php857
-rw-r--r--include/photo/photo_gd.php162
-rw-r--r--include/photos.php2
-rwxr-xr-xinclude/plugin.php17
-rw-r--r--include/text.php369
-rw-r--r--include/zot.php22
-rw-r--r--install/sample-lighttpd.conf2
-rw-r--r--install/sample-nginx.conf5
-rw-r--r--tests/unit/Photo/PhotoGdTest.php147
-rw-r--r--tests/unit/get_tags_test.php17
-rw-r--r--tests/unit/includes/PhotodriverTest.php39
-rw-r--r--util/Doxyfile4
-rwxr-xr-xutil/admins60
-rw-r--r--util/hmessages.po3297
-rw-r--r--vendor/composer/autoload_classmap.php7
-rw-r--r--vendor/composer/autoload_static.php7
-rw-r--r--view/js/main.js13
-rw-r--r--view/ru/hmessages.po2349
-rw-r--r--view/ru/hstrings.php164
-rwxr-xr-xview/tpl/conv_item.tpl3
-rwxr-xr-xview/tpl/conv_list.tpl3
-rwxr-xr-xview/tpl/group_edit.tpl1
-rwxr-xr-xview/tpl/jot-header.tpl12
-rwxr-xr-xview/tpl/jot.tpl12
-rwxr-xr-xview/tpl/remote_friends_common.tpl3
80 files changed, 6177 insertions, 4382 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d162d57ba..43c65f365 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -1,36 +1,49 @@
# Select image from https://hub.docker.com/_/php/
-image: php:7.1
+#image: php:7.2
+# Use a prepared Hubzilla image to optimise pipeline run
+image: registry.gitlab.com/dawnbreak/hubzilla/core:php7.2
+
+
+stages:
+ - test
+ - deploy
+
# Select what we should cache
cache:
paths:
- vendor/
+ - .cache/
+
+# global variables for all jobs, if no job specific variables
variables:
- # Configure mysql service (https://hub.docker.com/_/mysql/)
+ # Tell composer to use the project workspace .cache folder
+ COMPOSER_CACHE_DIR: "$CI_PROJECT_DIR/.cache/composer"
+ # Ignore a Composer warning
+ COMPOSER_ALLOW_SUPERUSER: 1
+ # Configure MySQL/MariaDB service (https://hub.docker.com/_/mysql/, https://hub.docker.com/_/mariadb/)
MYSQL_DATABASE: hello_world_test
MYSQL_ROOT_PASSWORD: mysql
+ # Configure PostgreSQL service (https://hub.docker.com/_/postgres/)
+ POSTGRES_DB: ci-db
+ POSTGRES_USER: ci-user
+ POSTGRES_PASSWORD: ci-pass
+
before_script:
-# prevent error installing buggy postgresql-client package
-- mkdir -p /usr/share/man/man1 /usr/share/man/man7
-- apt-get update -yqq
-- apt-get install -yqq --no-install-recommends git mysql-client postgresql-client libmcrypt-dev libpq-dev libcurl4-gnutls-dev libicu-dev libvpx-dev libjpeg-dev libpng-dev libxpm-dev zlib1g-dev libfreetype6-dev libxml2-dev libexpat1-dev libbz2-dev libgmp3-dev libldap2-dev unixodbc-dev libaspell-dev libpcre3-dev libtidy-dev
-# Install PHP extensions
-- docker-php-ext-install mbstring mcrypt pdo_mysql pdo_pgsql curl json intl gd xml zip bz2 opcache
# Install & enable Xdebug for code coverage reports
- pecl install xdebug
- docker-php-ext-enable xdebug
-# Install and run Composer
+# Install composer
- curl -sS https://getcomposer.org/installer | php
# Install dev libraries from composer
- php composer.phar install --no-progress
-# Configure PHP values, needed for phpunit code coverage HTML generation
-- echo "memory_limit = 256M" > /usr/local/etc/php/conf.d/hubzilla.ini
-# We test PHP7 with MySQL
-test:php:mysql:
+# test PHP7 with MySQL 5.7
+php7.2_mysql 1/2:
+ stage: test
services:
- mysql:5.7
script:
@@ -39,14 +52,38 @@ test:php:mysql:
- echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
- vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
-# test PHP7 with PostgreSQL
-test:php:postgres:
+
+# test PHP7 with MySQL latest (8)
+php7.2_mysql 2/2:
+ stage: test
+ services:
+ - name: mysql:latest
+ command: ["--default-authentication-plugin=mysql_native_password"]
+ script:
+ - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
+
+
+# test PHP7 with MariaDB latest (10.3)
+php7.2_mariadb:
+ stage: test
+ services:
+ - name: mariadb:latest
+ alias: mysql
+ script:
+ - echo "USE $MYSQL_DATABASE; $(cat ./install/schema_mysql.sql)" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "SHOW DATABASES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - echo "USE $MYSQL_DATABASE; SHOW TABLES;" | mysql --user=root --password="$MYSQL_ROOT_PASSWORD" --host=mysql "$MYSQL_DATABASE"
+ - vendor/bin/phpunit --configuration tests/phpunit.xml --coverage-text
+
+
+# test PHP7 with PostgreSQL latest
+php7.2_postgres:
+ stage: test
services:
- postgres:latest
- variables:
- POSTGRES_DB: ci-db
- POSTGRES_USER: ci-user
- POSTGRES_PASSWORD: ci-pass
script:
- export PGPASSWORD=$POSTGRES_PASSWORD
- psql --version
@@ -67,3 +104,23 @@ test:php:postgres:
name: "$CI_COMMIT_REF_SLUG-$CI_JOB_NAME"
paths:
- tests/results/
+
+
+# Generate Doxygen API Documentation and deploy it at GitLab pages
+pages:
+ stage: deploy
+ cache: {}
+ image: php:7-cli-alpine
+ before_script:
+ - apk update
+ - apk add doxygen ttf-freefont graphviz
+ script:
+ - doxygen util/Doxyfile
+ - mv doc/html/ public/
+ - echo "API documentation should be accessible at https://hubzilla.frama.io/core/ soon"
+ artifacts:
+ paths:
+ - public
+ only:
+ # Only generate it on main repo's master branch
+ - master@hubzilla/core
diff --git a/CHANGELOG b/CHANGELOG
index 5d0f35cc1..0e3e89a9e 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,3 +1,13 @@
+Hubzilla 3.8.9 (2018-02-03)
+ - Fix typos in mod oep
+ - Fix page jumping when liking collapsed/expanded post
+ - Fix failure to import mail in mod import
+ - Fix wrong channel count in mod new_channel
+ - Fix diaspora addon regression
+ - Remove deprecated diaspora addon endpoint
+ - Fix wrong function call in gallery addon
+
+
Hubzilla 3.8.8 (2018-12-22)
- Fix issue with linkinfo
- Fix cURL with HTTP/2
diff --git a/Zotlabs/Daemon/Cache_embeds.php b/Zotlabs/Daemon/Cache_embeds.php
new file mode 100644
index 000000000..08088abd6
--- /dev/null
+++ b/Zotlabs/Daemon/Cache_embeds.php
@@ -0,0 +1,27 @@
+<?php /** @file */
+
+namespace Zotlabs\Daemon;
+
+
+class Cache_embeds {
+
+ static public function run($argc,$argv) {
+
+ if(! $argc == 2)
+ return;
+
+ $c = q("select body from item where id = %d ",
+ dbesc(intval($argv[1]))
+ );
+
+ if(! $c)
+ return;
+
+ $item = $c[0];
+
+ // bbcode conversion by default processes embeds that aren't already cached.
+ // Ignore the returned html output.
+
+ bbcode($item['body']);
+ }
+}
diff --git a/Zotlabs/Daemon/Notifier.php b/Zotlabs/Daemon/Notifier.php
index beb30ed96..df73d977d 100644
--- a/Zotlabs/Daemon/Notifier.php
+++ b/Zotlabs/Daemon/Notifier.php
@@ -434,6 +434,8 @@ class Notifier {
$x['body'] = 'private';
logger('notifier: encoded item: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
+ //logger('notifier: encoded activity: ' . print_r($activity,true), LOGGER_DATA, LOG_DEBUG);
+
stringify_array_elms($recipients);
if(! $recipients) {
logger('no recipients');
@@ -677,6 +679,17 @@ class Notifier {
}
$packet_type = (($upstream || $uplink) ? 'response' : 'activity');
+
+ // block zot private reshares from zot6, as this could cause a number of privacy issues
+ // due to parenting differences between the reshare implementations. In zot a reshare is
+ // a standalone parent activity and in zot6 it is a followup/child of the original activity.
+ // For public reshares, some comments to the reshare on the zot fork will not make it to zot6
+ // due to these different message models. This cannot be prevented at this time.
+
+ if($packet_type === 'activity' && $activity['type'] === 'Announce' && intval($target_item['item_private'])) {
+ continue;
+ }
+
$packet = Libzot::build_packet($channel,$packet_type,$zenv,$activity,'activitystreams',(($private) ? $hub['hubloc_sitekey'] : null),$hub['site_crypto']);
}
else {
diff --git a/Zotlabs/Lib/Activity.php b/Zotlabs/Lib/Activity.php
index 154421b6a..bcbe53df7 100644
--- a/Zotlabs/Lib/Activity.php
+++ b/Zotlabs/Lib/Activity.php
@@ -35,6 +35,9 @@ class Activity {
if($x['type'] === ACTIVITY_OBJ_EVENT) {
return self::fetch_event($x);
}
+ if($x['type'] === ACTIVITY_OBJ_PHOTO) {
+ return self::fetch_image($x);
+ }
return $x;
@@ -102,6 +105,29 @@ class Activity {
}
}
+
+ static function fetch_image($x) {
+
+
+ $ret = [
+ 'type' => 'Image',
+ 'id' => $x['id'],
+ 'name' => $x['title'],
+ 'content' => bbcode($x['body']),
+ 'source' => [ 'mediaType' => 'text/bbcode', 'content' => $x['body'] ],
+ 'published' => datetime_convert('UTC','UTC',$x['created'],ATOM_TIME),
+ 'updated' => datetime_convert('UTC','UTC', $x['edited'],ATOM_TIME),
+ 'url' => [
+ 'type' => 'Link',
+ 'mediaType' => $x['link'][0]['type'],
+ 'href' => $x['link'][0]['href'],
+ 'width' => $x['link'][0]['width'],
+ 'height' => $x['link'][0]['height']
+ ]
+ ];
+ return $ret;
+ }
+
static function fetch_event($x) {
// convert old Zot event objects to ActivityStreams Event objects
@@ -210,7 +236,7 @@ class Activity {
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/item/' . urlencode($i['mid']));
if($i['title'])
- $ret['title'] = bbcode($i['title']);
+ $ret['name'] = $i['title'];
$ret['published'] = datetime_convert('UTC','UTC',$i['created'],ATOM_TIME);
if($i['created'] !== $i['edited'])
@@ -385,10 +411,17 @@ class Activity {
$ret['type'] = 'Tombstone';
$ret['formerType'] = self::activity_obj_mapper($i['obj_type']);
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/item/' . urlencode($i['mid']));
+ $actor = self::encode_person($i['author'],false);
+ if($actor)
+ $ret['actor'] = $actor;
+ else
+ return [];
return $ret;
}
$ret['type'] = self::activity_mapper($i['verb']);
+
+
$ret['id'] = ((strpos($i['mid'],'http') === 0) ? $i['mid'] : z_root() . '/activity/' . urlencode($i['mid']));
if($i['title'])
@@ -460,6 +493,10 @@ class Activity {
if(! is_array($i['obj'])) {
$i['obj'] = json_decode($i['obj'],true);
}
+ if($i['obj']['type'] === ACTIVITY_OBJ_PHOTO) {
+ $i['obj']['id'] = $i['id'];
+ }
+
$obj = self::encode_object($i['obj']);
if($obj)
$ret['object'] = $obj;
@@ -1374,6 +1411,9 @@ class Activity {
$s['owner_xchan'] = $act->actor['id'];
$s['author_xchan'] = $act->actor['id'];
+ // ensure we store the original actor
+ self::actor_store($act->actor['id'],$act->actor);
+
$s['mid'] = $act->obj['id'];
$s['parent_mid'] = $act->parent_id;
@@ -1446,7 +1486,8 @@ class Activity {
$s['verb'] = self::activity_decode_mapper($act->type);
- if($act->type === 'Tombstone') {
+
+ if($act->type === 'Tombstone' || ($act->type === 'Create' && $act->obj['type'] === 'Tombstone')) {
$s['item_deleted'] = 1;
}
@@ -1455,7 +1496,6 @@ class Activity {
$s['obj_type'] = ACTIVITY_OBJ_COMMENT;
}
-
if($act->obj['type'] === 'Event') {
$s['obj'] = [];
$s['obj']['asld'] = $act->obj;
@@ -1609,7 +1649,9 @@ class Activity {
}
- if($act->obj['type'] === 'Image') {
+ // avoid double images from hubzilla to zap/osada
+
+ if($act->obj['type'] === 'Image' && strpos($s['body'],'zrl=') === false) {
$ptr = null;
diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php
index de7439ed7..56283ff76 100644
--- a/Zotlabs/Lib/Apps.php
+++ b/Zotlabs/Lib/Apps.php
@@ -1,32 +1,34 @@
-<?php /** @file */
+<?php
namespace Zotlabs\Lib;
-/**
- * Apps
- *
- */
-
require_once('include/plugin.php');
require_once('include/channel.php');
-
+/**
+ * @brief Apps class.
+ *
+ */
class Apps {
static public $available_apps = null;
static public $installed_apps = null;
-
static public $base_apps = null;
-
-
+ /**
+ * @brief
+ *
+ * @param boolean $translate (optional) default true
+ * @return array
+ */
static public function get_system_apps($translate = true) {
+ $ret = [];
- $ret = array();
if(is_dir('apps'))
$files = glob('apps/*.apd');
else
$files = glob('app/*.apd');
+
if($files) {
foreach($files as $f) {
$x = self::parse_app_description($f,$translate);
@@ -50,14 +52,17 @@ class Apps {
}
}
- call_hooks('get_system_apps',$ret);
+ /**
+ * @hooks get_system_apps
+ * Hook to manipulate the system apps array.
+ */
+ call_hooks('get_system_apps', $ret);
return $ret;
-
}
static public function get_base_apps() {
- $x = get_config('system','base_apps',[
+ $x = get_config('system','base_apps',[
'Connections',
'Network',
'Settings',
@@ -72,7 +77,13 @@ class Apps {
'Mail',
'Profile Photo'
]);
- call_hooks('get_base_apps',$x);
+
+ /**
+ * @hooks get_base_apps
+ * Hook to manipulate the base apps array.
+ */
+ call_hooks('get_base_apps', $x);
+
return $x;
}
@@ -81,7 +92,7 @@ class Apps {
return;
self::$base_apps = self::get_base_apps();
-
+
$apps = self::get_system_apps(false);
self::$available_apps = q("select * from app where app_channel = 0");
@@ -106,6 +117,7 @@ class Apps {
// $id will be boolean true or false to install an app, or an integer id to update an existing app
if($id === false)
continue;
+
if($id !== true) {
// if we already installed this app, but it changed, preserve any categories we created
$s = EMPTY_STR;
@@ -126,16 +138,17 @@ class Apps {
$app['guid'] = hash('whirlpool',$app['name']);
$app['system'] = 1;
self::app_install(local_channel(),$app);
-
}
- }
+ }
}
/**
- * Install the system app if no system apps have been installed, or if a new system app
+ * Install the system app if no system apps have been installed, or if a new system app
* is discovered, or if the version of a system app changes.
+ *
+ * @param array $app
+ * @return boolean|int
*/
-
static public function check_install_system_app($app) {
if((! is_array(self::$available_apps)) || (! count(self::$available_apps))) {
return true;
@@ -159,17 +172,16 @@ class Apps {
return $notfound;
}
-
/**
- * Install the system app if no system apps have been installed, or if a new system app
- * is discovered, or if the version of a system app changes.
+ * Install the personal app if no personal apps have been installed, or if a new personal app
+ * is discovered, or if the version of a personal app changes.
+ *
+ * @param array $app
+ * @return boolean|int
*/
-
-
-
static public function check_install_personal_app($app) {
$installed = false;
- foreach(self::$installed_apps as $iapp) {
+ foreach(self::$installed_apps as $iapp) {
if($iapp['app_id'] == hash('whirlpool',$app['name'])) {
$installed = true;
if(($iapp['app_version'] != $app['version'])
@@ -189,19 +201,24 @@ class Apps {
return strcasecmp($a['name'],$b['name']);
}
-
- static public function parse_app_description($f,$translate = true) {
-
- $ret = array();
+ /**
+ * @brief Parse app description.
+ *
+ * @param string $f filename
+ * @param boolean $translate (optional) default true
+ * @return boolean|array
+ */
+ static public function parse_app_description($f, $translate = true) {
+ $ret = [];
+ $matches = [];
$baseurl = z_root();
- $channel = \App::get_channel();
- $address = (($channel) ? $channel['channel_address'] : '');
-
+ //$channel = \App::get_channel();
+ //$address = (($channel) ? $channel['channel_address'] : '');
+
//future expansion
$observer = \App::get_observer();
-
$lines = @file($f);
if($lines) {
@@ -210,7 +227,7 @@ class Apps {
$ret[$matches[1]] = trim($matches[2]);
}
}
- }
+ }
if(! $ret['photo'])
$ret['photo'] = $baseurl . '/' . get_default_profile_photo(80);
@@ -292,15 +309,18 @@ class Apps {
if($ret) {
if($translate)
self::translate_system_apps($ret);
+
return $ret;
}
+
return false;
- }
+ }
static public function translate_system_apps(&$arr) {
$apps = array(
'Apps' => t('Apps'),
+ 'Affinity Tool' => t('Affinity Tool'),
'Articles' => t('Articles'),
'Cards' => t('Cards'),
'Admin' => t('Site Admin'),
@@ -311,17 +331,17 @@ class Apps {
'Remote Diagnostics' => t('Remote Diagnostics'),
'Suggest Channels' => t('Suggest Channels'),
'Login' => t('Login'),
- 'Channel Manager' => t('Channel Manager'),
+ 'Channel Manager' => t('Channel Manager'),
'Network' => t('Stream'),
'Settings' => t('Settings'),
'Files' => t('Files'),
'Webpages' => t('Webpages'),
'Wiki' => t('Wiki'),
- 'Channel Home' => t('Channel Home'),
+ 'Channel Home' => t('Channel Home'),
'View Profile' => t('View Profile'),
- 'Photos' => t('Photos'),
- 'Events' => t('Events'),
- 'Directory' => t('Directory'),
+ 'Photos' => t('Photos'),
+ 'Events' => t('Events'),
+ 'Directory' => t('Directory'),
'Help' => t('Help'),
'Mail' => t('Mail'),
'Mood' => t('Mood'),
@@ -366,30 +386,31 @@ class Apps {
if(array_key_exists($arr[$x]['name'],$apps)) {
$arr[$x]['name'] = $apps[$arr[$x]['name']];
} else {
- // Try to guess by app name if not in list
- $arr[$x]['name'] = t(trim($arr[$x]['name']));
+ // Try to guess by app name if not in list
+ $arr[$x]['name'] = t(trim($arr[$x]['name']));
}
}
}
-
}
-
- // papp is a portable app
-
- static public function app_render($papp,$mode = 'view') {
-
- /**
- * modes:
- * view: normal mode for viewing an app via bbcode from a conversation or page
- * provides install/update button if you're logged in locally
- * install: like view but does not display app-bin options if they are present
- * list: normal mode for viewing an app on the app page
- * no buttons are shown
- * edit: viewing the app page in editing mode provides a delete button
- * nav: render apps for app-bin
- */
-
+ /**
+ * @brief
+ *
+ * @param array $papp
+ * papp is a portable app
+ * @param string $mode (optional) default 'view'
+ * Render modes:
+ * * \b view: normal mode for viewing an app via bbcode from a conversation or page
+ * provides install/update button if you're logged in locally
+ * * \b install: like view but does not display app-bin options if they are present
+ * * \b list: normal mode for viewing an app on the app page
+ * no buttons are shown
+ * * \b edit: viewing the app page in editing mode provides a delete button
+ * * \b nav: render apps for app-bin
+ *
+ * @return void|string Parsed HTML
+ */
+ static public function app_render($papp, $mode = 'view') {
$installed = false;
if(! $papp)
@@ -414,7 +435,7 @@ class Apps {
$sys = get_sys_channel();
$view_channel = $sys['channel_id'];
}
- self::app_macros($view_channel,$papp);
+ self::app_macros($view_channel,$papp);
}
if(strpos($papp['url'], ',')) {
@@ -427,7 +448,6 @@ class Apps {
$papp['url'] = z_root() . ((strpos($papp['url'],'/') === 0) ? '' : '/') . $papp['url'];
-
foreach($papp as $k => $v) {
if(strpos($v,'http') === 0 && $k != 'papp') {
if(! (local_channel() && strpos($v,z_root()) === 0)) {
@@ -509,7 +529,7 @@ class Apps {
if($x) {
$hosturl = $x['scheme'] . '://' . $x['host'] . '/';
}
- }
+ }
}
$install_action = (($installed) ? t('Update') : t('Install'));
@@ -592,8 +612,14 @@ class Apps {
return false;
}
-
- static public function can_delete($uid,$app) {
+ /**
+ * @brief
+ *
+ * @param mixed $uid If not set return false, otherwise no influence
+ * @param array $app
+ * @return boolean
+ */
+ static public function can_delete($uid, $app) {
if(! $uid) {
return false;
}
@@ -601,7 +627,7 @@ class Apps {
$base_apps = self::get_base_apps();
if($base_apps) {
foreach($base_apps as $b) {
- if($app['guid'] === hash('whirlpool',$b)) {
+ if($app['guid'] === hash('whirlpool', $b)) {
return false;
}
}
@@ -613,7 +639,6 @@ class Apps {
static public function app_destroy($uid,$app) {
if($uid && $app['guid']) {
-
$x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
@@ -622,7 +647,7 @@ class Apps {
if(! intval($x[0]['app_deleted'])) {
$x[0]['app_deleted'] = 1;
if(self::can_delete($uid,$app)) {
- $r = q("delete from app where app_id = '%s' and app_channel = %d",
+ q("delete from app where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -630,10 +655,15 @@ class Apps {
intval(TERM_OBJ_APP),
intval($x[0]['id'])
);
+ /**
+ * @hooks app_destroy
+ * Called after app entry got removed from database
+ * and provide app array from database.
+ */
call_hooks('app_destroy', $x[0]);
}
else {
- $r = q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
+ q("update app set app_deleted = 1 where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -647,22 +677,23 @@ class Apps {
}
}
}
-
}
- static public function app_undestroy($uid,$app) {
-
- // undelete a system app
-
+ /**
+ * @brief Undelete a system app.
+ *
+ * @param int $uid
+ * @param array $app
+ */
+ static public function app_undestroy($uid, $app) {
if($uid && $app['guid']) {
-
$x = q("select * from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
);
if($x) {
if($x[0]['app_system']) {
- $r = q("update app set app_deleted = 0 where app_id = '%s' and app_channel = %d",
+ q("update app set app_deleted = 0 where app_id = '%s' and app_channel = %d",
dbesc($app['guid']),
intval($uid)
);
@@ -671,7 +702,15 @@ class Apps {
}
}
- static public function app_feature($uid,$app,$term) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param array $app
+ * @param string $term
+ * @return void
+ */
+ static public function app_feature($uid, $app, $term) {
$r = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
dbesc($app['guid']),
intval($uid)
@@ -695,23 +734,37 @@ class Apps {
}
}
- static public function app_installed($uid,$app,$bypass_filter=false) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param array $app
+ * @param boolean $bypass_filter (optional) default false
+ * @return boolean
+ */
+ static public function app_installed($uid, $app, $bypass_filter = false) {
$r = q("select id from app where app_id = '%s' and app_channel = %d limit 1",
- dbesc((array_key_exists('guid',$app)) ? $app['guid'] : ''),
+ dbesc((array_key_exists('guid', $app)) ? $app['guid'] : ''),
intval($uid)
);
- if (!$bypass_filter) {
+ if(!$bypass_filter) {
$filter_arr = [
- 'uid'=>$uid,
- 'app'=>$app,
- 'installed'=>$r
+ 'uid' => $uid,
+ 'app' => $app,
+ 'installed' => $r
];
- call_hooks('app_installed_filter',$filter_arr);
+ /**
+ * @hooks app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
@@ -727,11 +780,17 @@ class Apps {
'app'=>$app,
'installed'=>$r
];
- call_hooks('addon_app_installed_filter',$filter_arr);
+ /**
+ * @hooks addon_app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('addon_app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
static public function system_app_installed($uid,$app,$bypass_filter=false) {
@@ -746,28 +805,39 @@ class Apps {
'app'=>$app,
'installed'=>$r
];
- call_hooks('system_app_installed_filter',$filter_arr);
+ /**
+ * @hooks system_app_installed_filter
+ * * \e int \b uid
+ * * \e array \b app
+ * * \e mixed \b installed - return value
+ */
+ call_hooks('system_app_installed_filter', $filter_arr);
$r = $filter_arr['installed'];
}
- return(($r) ? true : false);
+ return(($r) ? true : false);
}
-
-
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param boolean $deleted
+ * @param array $cats
+ * @return boolean|array
+ */
static public function app_list($uid, $deleted = false, $cats = []) {
- if($deleted)
- $sql_extra = "";
+ if($deleted)
+ $sql_extra = '';
else
- $sql_extra = " and app_deleted = 0 ";
+ $sql_extra = ' and app_deleted = 0 ';
if($cats) {
-
- $cat_sql_extra = " and ( ";
+ $cat_sql_extra = ' and ( ';
foreach($cats as $cat) {
if(strpos($cat_sql_extra, 'term'))
- $cat_sql_extra .= "or ";
+ $cat_sql_extra .= 'or ';
$cat_sql_extra .= "term = '" . dbesc($cat) . "' ";
}
@@ -779,11 +849,13 @@ class Apps {
);
if(! $r)
return $r;
- $sql_extra .= " and app.id in ( ";
+
+ $sql_extra .= ' and app.id in ( ';
$s = '';
foreach($r as $rr) {
if($s)
$s .= ',';
+
$s .= intval($rr['oid']);
}
$sql_extra .= $s . ') ';
@@ -794,12 +866,26 @@ class Apps {
);
if($r) {
- $hookinfo = Array('uid'=>$uid,'deleted'=>$deleted,'cats'=>$cats,'apps'=>$r);
- call_hooks('app_list',$hookinfo);
+ $hookinfo = [
+ 'uid' => $uid,
+ 'deleted' => $deleted,
+ 'cats' => $cats,
+ 'apps' => $r,
+ ];
+ /**
+ * @hooks app_list
+ * * \e int \b uid
+ * * \e boolean \b deleted
+ * * \e array \b cats
+ * * \e array \b apps - return value
+ */
+ call_hooks('app_list', $hookinfo);
$r = $hookinfo['apps'];
- for($x = 0; $x < count($r); $x ++) {
+
+ for($x = 0; $x < count($r); $x++) {
if(! $r[$x]['app_system'])
$r[$x]['type'] = 'personal';
+
$r[$x]['term'] = q("select * from term where otype = %d and oid = %d",
intval(TERM_OBJ_APP),
intval($r[$x]['id'])
@@ -807,7 +893,7 @@ class Apps {
}
}
- return($r);
+ return $r;
}
static public function app_order($uid,$apps,$menu) {
@@ -839,13 +925,14 @@ class Apps {
$ret[] = $ap;
}
}
- return $ret;
+ return $ret;
}
static function find_app_in_array($name,$arr) {
if(! $arr)
return false;
+
foreach($arr as $x) {
if($x['name'] === $name) {
return $x;
@@ -854,8 +941,16 @@ class Apps {
return false;
}
- static function moveup($uid,$guid,$menu) {
- $syslist = array();
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param int $guid
+ * @param string $menu
+ * @return void
+ */
+ static function moveup($uid, $guid, $menu) {
+ $syslist = [];
$conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
@@ -865,6 +960,7 @@ class Apps {
$papp = self::app_encode($li);
if($menu !== 'nav_pinned_app' && strpos($papp['categories'],'nav_pinned_app') !== false)
continue;
+
$syslist[] = $papp;
}
}
@@ -877,8 +973,6 @@ class Apps {
if(! $syslist)
return;
- $newlist = [];
-
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
@@ -887,6 +981,7 @@ class Apps {
}
if(! $position)
return;
+
$dest_position = $position - 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
@@ -898,11 +993,18 @@ class Apps {
}
set_pconfig($uid,'system',$conf,implode(',',$narr));
-
}
- static function movedown($uid,$guid,$menu) {
- $syslist = array();
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param int $guid
+ * @param string $menu
+ * @return void
+ */
+ static function movedown($uid, $guid, $menu) {
+ $syslist = [];
$conf = (($menu === 'nav_featured_app') ? 'app_order' : 'app_pin_order');
@@ -912,6 +1014,7 @@ class Apps {
$papp = self::app_encode($li);
if($menu !== 'nav_pinned_app' && strpos($papp['categories'],'nav_pinned_app') !== false)
continue;
+
$syslist[] = $papp;
}
}
@@ -924,8 +1027,6 @@ class Apps {
if(! $syslist)
return;
- $newlist = [];
-
foreach($syslist as $k => $li) {
if($li['guid'] === $guid) {
$position = $k;
@@ -934,6 +1035,7 @@ class Apps {
}
if($position >= count($syslist) - 1)
return;
+
$dest_position = $position + 1;
$saved = $syslist[$dest_position];
$syslist[$dest_position] = $syslist[$position];
@@ -945,7 +1047,6 @@ class Apps {
}
set_pconfig($uid,'system',$conf,implode(',',$narr));
-
}
static public function app_decode($s) {
@@ -953,8 +1054,14 @@ class Apps {
return json_decode($x,true);
}
-
- static public function app_macros($uid,&$arr) {
+ /**
+ * @brief
+ *
+ * @param int $uid
+ * @param[in,out] array $arr
+ * @return void
+ */
+ static public function app_macros($uid, &$arr) {
if(! intval($uid))
return;
@@ -962,21 +1069,17 @@ class Apps {
$baseurl = z_root();
$channel = channelx_by_n($uid);
$address = (($channel) ? $channel['channel_address'] : '');
-
+
//future expansion
- $observer = \App::get_observer();
-
+ //$observer = \App::get_observer();
+
$arr['url'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['url']);
$arr['photo'] = str_replace(array('$baseurl','$nick'),array($baseurl,$address),$arr['photo']);
-
}
-
-
-
static public function app_store($arr) {
//logger('app_store: ' . print_r($arr,true));
@@ -1160,16 +1263,20 @@ class Apps {
}
return $ret;
-
}
-
- static public function app_encode($app,$embed = false) {
-
- $ret = array();
+ /**
+ * @brief
+ *
+ * @param array $app
+ * @param boolean $embed (optional) default false
+ * @return array|string
+ */
+ static public function app_encode($app, $embed = false) {
+ $ret = [];
$ret['type'] = 'personal';
-
+
if($app['app_id'])
$ret['guid'] = $app['app_id'];
@@ -1202,7 +1309,7 @@ class Apps {
if($app['app_price'])
$ret['price'] = $app['app_price'];
-
+
if($app['app_page'])
$ret['page'] = $app['app_page'];
@@ -1226,12 +1333,12 @@ class Apps {
foreach($app['term'] as $t) {
if($s)
$s .= ',';
+
$s .= $t['term'];
}
$ret['categories'] = $s;
}
-
if(! $embed)
return $ret;
@@ -1239,18 +1346,15 @@ class Apps {
if(array_key_exists('categories',$ret))
unset($ret['categories']);
-
+
$j = json_encode($ret);
- return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
+ return '[app]' . chunk_split(base64_encode($j),72,"\n") . '[/app]';
}
static public function papp_encode($papp) {
return chunk_split(base64_encode(json_encode($papp)),72,"\n");
-
}
}
-
-
diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php
index e66c929bf..019237568 100644
--- a/Zotlabs/Lib/Libzot.php
+++ b/Zotlabs/Lib/Libzot.php
@@ -2,11 +2,6 @@
namespace Zotlabs\Lib;
-/**
- * @brief lowlevel implementation of Zot6 protocol.
- *
- */
-
use Zotlabs\Zot6\HTTPSig;
use Zotlabs\Access\Permissions;
use Zotlabs\Access\PermissionLimits;
@@ -14,14 +9,17 @@ use Zotlabs\Daemon\Master;
require_once('include/crypto.php');
-
+/**
+ * @brief Lowlevel implementation of Zot6 protocol.
+ *
+ */
class Libzot {
/**
* @brief Generates a unique string for use as a zot guid.
*
- * Generates a unique string for use as a zot guid using our DNS-based url, the
- * channel nickname and some entropy.
+ * Generates a unique string for use as a zot guid using our DNS-based url,
+ * the channel nickname and some entropy.
* The entropy ensures uniqueness against re-installs where the same URL and
* nickname are chosen.
*
@@ -32,9 +30,8 @@ class Libzot {
* immediate universe.
*
* @param string $channel_nick a unique nickname of controlling entity
- * @returns string
+ * @return string
*/
-
static function new_uid($channel_nick) {
$rawstr = z_root() . '/' . $channel_nick . '.' . mt_rand();
return(base64url_encode(hash('whirlpool', $rawstr, true), true));
@@ -52,8 +49,8 @@ class Libzot {
*
* @param string $guid
* @param string $pubkey
+ * @return string
*/
-
static function make_xchan_hash($guid, $pubkey) {
return base64url_encode(hash('whirlpool', $guid . $pubkey, true));
}
@@ -65,10 +62,8 @@ class Libzot {
* should only be used by channels which are defined on this hub.
*
* @param string $hash - xchan_hash
- * @returns array of hubloc (hub location structures)
- *
+ * @return array of hubloc (hub location structures)
*/
-
static function get_hublocs($hash) {
/* Only search for active hublocs - e.g. those that haven't been marked deleted */
@@ -92,16 +87,17 @@ class Libzot {
* packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check'
* @param array $recipients
* envelope recipients, array of portable_id's; empty for public posts
- * @param string msg
+ * @param string $msg
* optional message
+ * @param string $encoding
+ * optional encoding, default 'activitystreams'
* @param string $remote_key
* optional public site key of target hub used to encrypt entire packet
* NOTE: remote_key and encrypted packets are required for 'auth_check' packets, optional for all others
* @param string $methods
- * optional comma separated list of encryption methods @ref self::best_algorithm()
+ * optional comma separated list of encryption methods @ref best_algorithm()
* @returns string json encoded zot packet
*/
-
static function build_packet($channel, $type = 'activity', $recipients = null, $msg = '', $encoding = 'activitystreams', $remote_key = null, $methods = '') {
$sig_method = get_config('system','signature_algorithm','sha256');
@@ -146,11 +142,10 @@ class Libzot {
* @brief Choose best encryption function from those available on both sites.
*
* @param string $methods
- * comma separated list of encryption methods
+ * Comma separated list of encryption methods
* @return string first match from our site method preferences crypto_methods() array
- * of a method which is common to both sites; or 'aes256cbc' if no matches are found.
+ * of a method which is common to both sites; or 'aes256cbc' if no matches are found.
*/
-
static function best_algorithm($methods) {
$x = [
@@ -164,7 +159,6 @@ class Libzot {
* * \e string \b methods - comma separated list of encryption methods
* * \e string \b result - the algorithm to return
*/
-
call_hooks('zot_best_algorithm', $x);
if($x['result'])
@@ -190,7 +184,7 @@ class Libzot {
/**
- * @brief send a zot message
+ * @brief Send a zot message.
*
* @see z_post_url()
*
@@ -200,18 +194,17 @@ class Libzot {
* @param array $crypto (required if encrypted httpsig, requires hubloc_sitekey and site_crypto elements)
* @return array see z_post_url() for returned data format
*/
-
static function zot($url, $data, $channel = null,$crypto = null) {
if($channel) {
- $headers = [
- 'X-Zot-Token' => random_string(),
- 'Digest' => HTTPSig::generate_digest_header($data),
+ $headers = [
+ 'X-Zot-Token' => random_string(),
+ 'Digest' => HTTPSig::generate_digest_header($data),
'Content-type' => 'application/x-zot+json',
'(request-target)' => 'post ' . get_request_string($url)
];
- $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false,'sha512',
+ $h = HTTPSig::create_sig($headers,$channel['channel_prvkey'],channel_url($channel),false,'sha512',
(($crypto) ? [ 'key' => $crypto['hubloc_sitekey'], 'algorithm' => self::best_algorithm($crypto['site_crypto']) ] : false));
}
else {
@@ -227,7 +220,6 @@ class Libzot {
/**
* @brief Refreshes after permission changed or friending, etc.
*
- *
* refresh is typically invoked when somebody has changed permissions of a channel and they are notified
* to fetch new permissions via a finger/discovery operation. This may result in a new connection
* (abook entry) being added to a local channel and it may result in auto-permissions being granted.
@@ -251,7 +243,6 @@ class Libzot {
* * \b true if successful
* * otherwise \b false
*/
-
static function refresh($them, $channel = null, $force = false) {
logger('them: ' . print_r($them,true), LOGGER_DATA, LOG_DEBUG);
@@ -265,13 +256,13 @@ class Libzot {
}
else {
$r = null;
-
+
// if they re-installed the server we could end up with the wrong record - pointing to the old install.
// We'll order by reverse id to try and pick off the newest one first and hopefully end up with the
// correct hubloc. If this doesn't work we may have to re-write this section to try them all.
if(array_key_exists('xchan_addr',$them) && $them['xchan_addr']) {
- $r = q("select hubloc_id_url, hubloc_primary from hubloc where hubloc_addr = '%s' order by hubloc_id desc",
+ $r = q("select hubloc_id_url, hubloc_primary from hubloc where hubloc_addr = '%s' and hubloc_network = 'zot6' order by hubloc_id desc",
dbesc($them['xchan_addr'])
);
}
@@ -317,7 +308,7 @@ class Libzot {
if(! $hsig_valid) {
logger('http signature not valid: ' . print_r($hsig,true));
- return $result;
+ return false;
}
@@ -356,7 +347,7 @@ class Libzot {
);
if($r) {
-logger('4');
+
// connection exists
// if the dob is the same as what we have stored (disregarding the year), keep the one
@@ -416,7 +407,7 @@ logger('4');
if($y) {
logger("New introduction received for {$channel['channel_name']}");
$new_perms = get_all_perms($channel['channel_id'],$x['hash'],false);
-
+
// Send a clone sync packet and a permissions update if permissions have changed
$new_connection = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_xchan = '%s' and abook_channel = %d and abook_self = 0 order by abook_created desc limit 1",
@@ -524,10 +515,14 @@ logger('4');
return false;
}
-
-
-
- static function valid_hub($sender,$site_id) {
+ /**
+ * @brief
+ *
+ * @param string $sender
+ * @param string $site_id
+ * @return null|array
+ */
+ static function valid_hub($sender, $site_id) {
$r = q("select hubloc.*, site.site_crypto from hubloc left join site on hubloc_url = site_url where hubloc_hash = '%s' and hubloc_site_id = '%s' limit 1",
dbesc($sender),
@@ -548,7 +543,6 @@ logger('4');
}
return $r[0];
-
}
/**
@@ -559,21 +553,14 @@ logger('4');
* origination address. This will fetch the discovery packet of the sender,
* which contains the public key we need to verify our guid and url signatures.
*
- * @param array $arr an associative array which must contain:
- * * \e string \b guid => guid of conversant
- * * \e string \b guid_sig => guid signed with conversant's private key
- * * \e string \b url => URL of the origination hub of this communication
- * * \e string \b url_sig => URL signed with conversant's private key
+ * @param string $id
*
* @return array An associative array with
- * * \b success boolean true or false
- * * \b message (optional) error string only if success is false
+ * * \e boolean \b success
+ * * \e string \b message (optional, unused) error string only if success is false
*/
-
static function register_hub($id) {
- $id_hash = false;
- $valid = false;
$hsig_valid = false;
$result = [ 'success' => false ];
@@ -807,7 +794,7 @@ logger('4');
// If setting for the default profile, unset the profile photo flag from any other photos I own
if($is_default_profile) {
- q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d AND resource_id != '%s' AND aid = %d AND uid = %d",
+ q("UPDATE photo SET photo_usage = %d WHERE photo_usage = %d AND resource_id != '%s' AND aid = %d AND uid = %d",
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE),
dbesc($hash),
@@ -954,8 +941,8 @@ logger('4');
* @param string $hub - url of site we just contacted
* @param array $arr - output of z_post_url()
* @param array $outq - The queue structure attached to this request
+ * @return void
*/
-
static function process_response($hub, $arr, $outq) {
logger('remote: ' . print_r($arr,true),LOGGER_DATA);
@@ -986,7 +973,7 @@ logger('4');
if(! $x['success']) {
// handle remote validation issues
-
+
$b = q("update dreport set dreport_result = '%s', dreport_time = '%s' where dreport_queue = '%s'",
dbesc(($x['message']) ? $x['message'] : 'unknown delivery error'),
dbesc(datetime_convert()),
@@ -994,7 +981,7 @@ logger('4');
);
}
- if(is_array($x) && array_key_exists('delivery_report',$x) && is_array($x['delivery_report'])) {
+ if(is_array($x) && array_key_exists('delivery_report',$x) && is_array($x['delivery_report'])) {
foreach($x['delivery_report'] as $xx) {
call_hooks('dreport_process',$xx);
@@ -1083,11 +1070,6 @@ logger('4');
*
* @param array $arr
* 'pickup' structure returned from remote site
- * @param string $sender_url
- * the url specified by the sender in the initial communication.
- * We will verify the sender and url in each returned message structure and
- * also verify that all the messages returned match the site url that we are
- * currently processing.
*
* @returns array
* Suitable for logging remotely, enumerating the processing results of each message/recipient combination
@@ -1095,7 +1077,6 @@ logger('4');
* * [1] => \e string $delivery_status
* * [2] => \e string $address
*/
-
static function import($arr) {
$env = $arr;
@@ -1117,7 +1098,7 @@ logger('4');
$has_data = array_key_exists('data',$env) && $env['data'];
$data = (($has_data) ? $env['data'] : false);
- $AS = null;
+ $AS = null;
if($env['encoding'] === 'activitystreams') {
@@ -1175,7 +1156,6 @@ logger('4');
$deliveries = self::public_recips($env,$AS);
-
}
$deliveries = array_unique($deliveries);
@@ -1194,31 +1174,31 @@ logger('4');
//logger($AS->debug());
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
- );
+ );
if($r) {
$arr['author_xchan'] = $r[0]['hubloc_hash'];
}
- $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($env['sender'])
- );
+ );
// in individual delivery, change owner if needed
if($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
}
else {
- $arr['owner_xchan'] = $env['sender'];
+ $arr['owner_xchan'] = $env['sender'];
}
if($private) {
$arr['item_private'] = true;
}
- // @fixme - spoofable
+ /// @FIXME - spoofable
if($AS->data['hubloc']) {
$arr['item_verified'] = true;
}
@@ -1247,12 +1227,19 @@ logger('4');
}
if ($result) {
$return = array_merge($return, $result);
- }
+ }
return $return;
}
- static function is_top_level($env,$act) {
+ /**
+ * @brief
+ *
+ * @param array $env
+ * @param object $act
+ * @return boolean
+ */
+ static function is_top_level($env, $act) {
if($env['encoding'] === 'zot' && array_key_exists('flags',$env) && in_array('thread_parent', $env['flags'])) {
return true;
}
@@ -1295,9 +1282,9 @@ logger('4');
* Some of these will be rejected, but this gives us a place to start.
*
* @param array $msg
- * @return NULL|array
+ * @param object $act
+ * @return array
*/
-
static function public_recips($msg, $act) {
require_once('include/channel.php');
@@ -1442,7 +1429,7 @@ logger('4');
* will normally arrive first via sync delivery, but this isn't guaranteed.
* There's a chance the current delivery could take place before the cloned copy arrives
* hence the item could have the wrong ACL and *could* be used in subsequent deliveries or
- * access checks.
+ * access checks.
*/
if($sender === $channel['channel_portable_id'] && $arr['author_xchan'] === $channel['channel_portable_id'] && $arr['mid'] === $arr['parent_mid']) {
@@ -1497,14 +1484,37 @@ logger('4');
intval($channel['channel_id'])
);
if ($parent) {
- $allowed = can_comment_on_post($d,$parent[0]);
+ $allowed = can_comment_on_post($sender,$parent[0]);
}
}
- if($request) {
- $allowed = true;
+
+ if ($request) {
+
+ // Conversation fetches (e.g. $request == true) take place for
+ // a) new comments on expired posts
+ // b) hyperdrive (friend-of-friend) conversations
+ // c) Repeats of posts by others
+
+
+ // over-ride normal connection permissions for hyperdrive (friend-of-friend) conversations
+ // (if hyperdrive is enabled) and repeated posts by a friend.
+ // If $allowed is already true, this is probably the conversation of a direct friend or a
+ // conversation fetch for a new comment on an expired post
+ // Comments of all these activities are allowed and will only be rejected (later) if the parent
+ // doesn't exist.
+
+ if ($perm === 'send_stream') {
+ if (get_pconfig($channel['channel_id'],'system','hyperdrive',false) || $arr['verb'] === ACTIVITY_SHARE) {
+ $allowed = true;
+ }
+ }
+ else {
+ $allowed = true;
+ }
+
$friendofriend = true;
}
-
+
if (! $allowed) {
logger("permission denied for delivery to channel {$channel['channel_id']} {$channel['channel_address']}");
$DR->update('permission denied');
@@ -1513,16 +1523,18 @@ logger('4');
}
}
-logger('item: ' . print_r($arr,true), LOGGER_DATA);
+ // logger('item: ' . print_r($arr,true), LOGGER_DATA);
if($arr['mid'] !== $arr['parent_mid']) {
-logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"');
+
+ logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"');
+
// check source route.
// We are only going to accept comments from this sender if the comment has the same route as the top-level-post,
// this is so that permissions mismatches between senders apply to the entire conversation
// As a side effect we will also do a preliminary check that we have the top-level-post, otherwise
// processing it is pointless.
-
+
$r = q("select route, id, owner_xchan, item_private from item where mid = '%s' and uid = %d limit 1",
dbesc($arr['parent_mid']),
intval($channel['channel_id'])
@@ -1537,10 +1549,7 @@ logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"')
// have the copy and we don't want the request to loop.
// Also don't do this if this comment came from a conversation request packet.
// It's possible that comments are allowed but posting isn't and that could
- // cause a conversation fetch loop. We can detect these packets since they are
- // delivered via a 'notify' packet type that has a message_id element in the
- // initial zot packet (just like the corresponding 'request' packet type which
- // makes the request).
+ // cause a conversation fetch loop.
// We'll also check the send_stream permission - because if it isn't allowed,
// the top level post is unlikely to be imported and
// this is just an exercise in futility.
@@ -1551,14 +1560,14 @@ logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"')
}
continue;
}
-
+
if($relay || $friendofriend || (intval($r[0]['item_private']) === 0 && intval($arr['item_private']) === 0)) {
// reset the route in case it travelled a great distance upstream
// use our parent's route so when we go back downstream we'll match
// with whatever route our parent has.
// Also friend-of-friend conversations may have been imported without a route,
// but we are now getting comments via listener delivery
- // and if there is no privacy on this or the parent, we don't care about the route,
+ // and if there is no privacy on this or the parent, we don't care about the route,
// so just set the owner and route accordingly.
$arr['route'] = $r[0]['route'];
$arr['owner_xchan'] = $r[0]['owner_xchan'];
@@ -1601,7 +1610,7 @@ logger('checking source: "' . $arr['mid'] . '" != "' . $arr['parent_mid'] . '"')
$arr['route'] = $last_prior_route;
}
}
-logger('hey');
+
$ab = q("select * from abook where abook_channel = %d and abook_xchan = '%s'",
intval($channel['channel_id']),
dbesc($arr['owner_xchan'])
@@ -1612,13 +1621,13 @@ logger('hey');
// remove_community_tag is a no-op if this isn't a community tag activity
self::remove_community_tag($sender,$arr,$channel['channel_id']);
-
+
// set these just in case we need to store a fresh copy of the deleted post.
// This could happen if the delete got here before the original post did.
$arr['aid'] = $channel['channel_account_id'];
$arr['uid'] = $channel['channel_id'];
-
+
$item_id = self::delete_imported_item($sender,$arr,$channel['channel_id'],$relay);
$DR->update(($item_id) ? 'deleted' : 'delete_failed');
$result[] = $DR->get();
@@ -1714,7 +1723,7 @@ logger('hey');
* * \e array \b item
* * \e array \b sender
* * \e array \b channel
- */
+ */
call_hooks('activity_received', $parr);
// don't add a source route if it's a relay or later recipients will get a route mismatch
if(! $relay)
@@ -1779,17 +1788,17 @@ logger('hey');
logger($AS->debug());
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
- );
+ );
if(! $r) {
$y = import_author_xchan([ 'url' => $AS->actor['id'] ]);
if($y) {
- $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $r = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($AS->actor['id'])
);
- }
+ }
if(! $r) {
logger('FOF Activity: no actor');
continue;
@@ -1809,9 +1818,9 @@ logger('hey');
$arr['author_xchan'] = $r[0]['hubloc_hash'];
}
- $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' limit 1",
+ $s = q("select hubloc_hash from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($a['signature']['signer'])
- );
+ );
if($s) {
$arr['owner_xchan'] = $s[0]['hubloc_hash'];
@@ -1820,7 +1829,8 @@ logger('hey');
$arr['owner_xchan'] = $a['signature']['signer'];
}
- // @fixme - spoofable
+
+ /// @FIXME - spoofable
if($AS->data['hubloc']) {
$arr['item_verified'] = true;
}
@@ -1834,7 +1844,7 @@ logger('hey');
$result = self::process_delivery($arr['owner_xchan'],$arr, [ $channel['channel_portable_id'] ],false,false,true);
if ($result) {
$ret = array_merge($ret, $result);
- }
+ }
}
return $ret;
@@ -1851,8 +1861,8 @@ logger('hey');
* * \e int \b obj_type
* * \e int \b mid
* @param int $uid
+ * @return void
*/
-
static function remove_community_tag($sender, $arr, $uid) {
if(! (activity_match($arr['verb'], ACTIVITY_TAG) && ($arr['obj_type'] == ACTIVITY_OBJ_TAGTERM)))
@@ -1880,7 +1890,7 @@ logger('hey');
}
$i = $r[0];
-
+
if($i['target'])
$i['target'] = json_decode($i['target'],true);
if($i['object'])
@@ -1923,8 +1933,8 @@ logger('hey');
* @param array $orig
* @param int $uid
* @param boolean $tag_delivery
+ * @return void|array
*/
-
static function update_imported_item($sender, $item, $orig, $uid, $tag_delivery) {
// If this is a comment being updated, remove any privacy information
@@ -2064,7 +2074,7 @@ logger('hey');
}
foreach($deliveries as $d) {
-
+
$DR = new DReport(z_root(),$sender,$d,$arr['mid']);
$r = q("select * from channel where channel_portable_id = '%s' limit 1",
@@ -2083,7 +2093,7 @@ logger('hey');
if(! perm_is_allowed($channel['channel_id'],$sender,'post_mail')) {
- /*
+ /*
* Always allow somebody to reply if you initiated the conversation. It's anti-social
* and a bit rude to send a private message to somebody and block their ability to respond.
* If you are being harrassed and want to put an end to it, delete the conversation.
@@ -2143,12 +2153,13 @@ logger('hey');
* @brief Processes delivery of profile.
*
* @see import_directory_profile()
+ *
* @param array $sender an associative array
* * \e string \b hash a xchan_hash
* @param array $arr
* @param array $deliveries (unused)
+ * @return void
*/
-
static function process_profile_delivery($sender, $arr, $deliveries) {
logger('process_profile_delivery', LOGGER_DEBUG);
@@ -2169,6 +2180,7 @@ logger('hey');
* * \e string \b hash a xchan_hash
* @param array $arr
* @param array $deliveries (unused) deliveries is irrelevant
+ * @return void
*/
static function process_location_delivery($sender, $arr, $deliveries) {
@@ -2186,7 +2198,7 @@ logger('hey');
$x = Libsync::sync_locations($xchan,$arr,true);
logger('results: ' . print_r($x,true), LOGGER_DEBUG);
if($x['changed']) {
- $guid = random_string() . '@' . App::get_hostname();
+ //$guid = random_string() . '@' . App::get_hostname();
Libzotdir::update_modtime($sender,$r[0]['xchan_guid'],$arr['locations'][0]['address'],UPDATE_FLAGS_UPDATED);
}
}
@@ -2210,8 +2222,8 @@ logger('hey');
*
* @param string $sender_hash A channel hash
* @param array $locations
+ * @return void
*/
-
static function check_location_move($sender_hash, $locations) {
if(! $locations)
@@ -2253,7 +2265,6 @@ logger('hey');
}
-
/**
* @brief Returns an array with all known distinct hubs for this channel.
*
@@ -2262,7 +2273,6 @@ logger('hey');
* * \e string \b channel_hash the hash of the channel
* @return array an array with associative arrays
*/
-
static function encode_locations($channel) {
$ret = [];
@@ -2303,7 +2313,7 @@ logger('hey');
if(! $z['site_id']) {
$z['site_id'] = Libzot::make_xchan_hash($z['url'],$z['sitekey']);
}
-
+
$ret[] = $z;
}
}
@@ -2316,10 +2326,8 @@ logger('hey');
* @brief
*
* @param array $arr
- * @param string $pubkey
* @return boolean true if updated or inserted
*/
-
static function import_site($arr) {
if( (! is_array($arr)) || (! $arr['url']) || (! $arr['site_sig']))
@@ -2594,20 +2602,20 @@ logger('hey');
$feed = ((x($arr,'feed')) ? intval($arr['feed']) : 0);
if($ztarget) {
- $t = q("select * from hubloc where hubloc_id_url = '%s' limit 1",
+ $t = q("select * from hubloc where hubloc_id_url = '%s' and hubloc_network = 'zot6' limit 1",
dbesc($ztarget)
);
if($t) {
-
+
$ztarget_hash = $t[0]['hubloc_hash'];
}
else {
-
+
// should probably perform discovery of the requestor (target) but if they actually had
- // permissions we would know about them and we only want to know who they are to
+ // permissions we would know about them and we only want to know who they are to
// enumerate their specific permissions
-
+
$ztarget_hash = EMPTY_STR;
}
}
@@ -2754,7 +2762,7 @@ logger('hey');
$ret['id'] = $e['xchan_guid'];
$ret['id_sig'] = self::sign($e['xchan_guid'], $e['channel_prvkey']);
- $ret['primary_location'] = [
+ $ret['primary_location'] = [
'address' => $e['xchan_addr'],
'url' => $e['xchan_url'],
'connections_url' => $e['xchan_connurl'],
@@ -2776,7 +2784,7 @@ logger('hey');
$ret['searchable'] = $searchable;
$ret['adult_content'] = $adult_channel;
$ret['public_forum'] = $public_forum;
-
+
$ret['comments'] = map_scope(PermissionLimits::Get($e['channel_id'],'post_comments'));
$ret['mail'] = map_scope(PermissionLimits::Get($e['channel_id'],'post_mail'));
@@ -2834,14 +2842,20 @@ logger('hey');
$ret['locations'] = $x;
$ret['site'] = self::site_info();
+ /**
+ * @hooks zotinfo
+ * Hook to manipulate the zotinfo array before it is returned.
+ */
+ call_hooks('zotinfo', $ret);
- call_hooks('zotinfo',$ret);
-
- return($ret);
-
+ return $ret;
}
-
+ /**
+ * @brief Get siteinfo.
+ *
+ * @return array
+ */
static function site_info() {
$signing_key = get_config('system','prvkey');
@@ -2878,7 +2892,7 @@ logger('hey');
if($dirmode != DIRECTORY_MODE_STANDALONE) {
$register_policy = intval(get_config('system','register_policy'));
-
+
if($register_policy == REGISTER_CLOSED)
$ret['site']['register_policy'] = 'closed';
if($register_policy == REGISTER_APPROVE)
@@ -2925,18 +2939,16 @@ logger('hey');
}
return $ret['site'];
-
}
/**
* @brief
*
* @param array $hub
- * @param string $sitekey (optional, default empty)
+ * @param string $site_id (optional, default empty)
*
* @return string hubloc_url
*/
-
static function update_hub_connected($hub, $site_id = '') {
if ($site_id) {
@@ -2995,12 +3007,21 @@ logger('hey');
return $hub['hubloc_url'];
}
-
+ /**
+ * @brief
+ *
+ * @param string $data
+ * @param string $key
+ * @param string $alg (optional) default 'sha256'
+ * @return string
+ */
static function sign($data,$key,$alg = 'sha256') {
if(! $key)
return 'no key';
+
$sig = '';
openssl_sign($data,$sig,$key,$alg);
+
return $alg . '.' . base64url_encode($sig);
}
@@ -3013,24 +3034,27 @@ logger('hey');
if ($key && count($x) === 2) {
$alg = $x[0];
$signature = base64url_decode($x[1]);
-
+
$verify = @openssl_verify($data,$signature,$key,$alg);
if ($verify === (-1)) {
while ($msg = openssl_error_string()) {
logger('openssl_verify: ' . $msg,LOGGER_NORMAL,LOG_ERR);
}
- btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
+ btlogger('openssl_verify: key: ' . $key, LOGGER_DEBUG, LOG_ERR);
}
}
return(($verify > 0) ? true : false);
}
-
-
+ /**
+ * @brief
+ *
+ * @return boolean
+ */
static function is_zot_request() {
-
$x = getBestSupportedMimeType([ 'application/x-zot+json' ]);
+
return(($x) ? true : false);
}
diff --git a/Zotlabs/Lib/PConfig.php b/Zotlabs/Lib/PConfig.php
index 69f4de2db..c08c11e75 100644
--- a/Zotlabs/Lib/PConfig.php
+++ b/Zotlabs/Lib/PConfig.php
@@ -112,9 +112,11 @@ class PConfig {
* The configuration key to set
* @param string $value
* The value to store
+ * @param string $updated (optional)
+ * The datetime to store
* @return mixed Stored $value or false
*/
- static public function Set($uid, $family, $key, $value, $updated=NULL) {
+ static public function Set($uid, $family, $key, $value, $updated = NULL) {
// this catches subtle errors where this function has been called
// with local_channel() when not logged in (which returns false)
@@ -239,7 +241,9 @@ class PConfig {
* The category of the configuration value
* @param string $key
* The configuration key to delete
- * @return mixed
+ * @param string $updated (optional)
+ * The datetime to store
+ * @return boolean
*/
static public function Delete($uid, $family, $key, $updated = NULL) {
@@ -271,22 +275,13 @@ class PConfig {
dbesc($key)
);
+ // Synchronize delete with clones.
+
if ($family != 'hz_delpconfig') {
$hash = hash('sha256',$family.':'.$key);
set_pconfig($uid,'hz_delpconfig',$hash,$updated);
}
- // Synchronize delete with clones.
-
- if(! array_key_exists('transient', \App::$config[$uid]))
- \App::$config[$uid]['transient'] = array();
- if(! array_key_exists($family, \App::$config[$uid]['transient']))
- \App::$config[$uid]['transient'][$family] = array();
-
- if ($new) {
- \App::$config[$uid]['transient'][$family]['pcfgdel:'.$key] = $updated;
- }
-
return $ret;
}
diff --git a/Zotlabs/Lib/Share.php b/Zotlabs/Lib/Share.php
index d3ecbf7fa..3a2ab1783 100644
--- a/Zotlabs/Lib/Share.php
+++ b/Zotlabs/Lib/Share.php
@@ -54,6 +54,7 @@ class Share {
if(! $this->item)
return $obj;
+ $obj['asld'] = $this->item['mid'];
$obj['type'] = $this->item['obj_type'];
$obj['id'] = $this->item['mid'];
$obj['content'] = $this->item['body'];
diff --git a/Zotlabs/Lib/ThreadItem.php b/Zotlabs/Lib/ThreadItem.php
index 83d243177..40c0fca4b 100644
--- a/Zotlabs/Lib/ThreadItem.php
+++ b/Zotlabs/Lib/ThreadItem.php
@@ -76,7 +76,7 @@ class ThreadItem {
* _ false on failure
*/
- public function get_template_data($conv_responses, $thread_level=1) {
+ public function get_template_data($conv_responses, $thread_level=1, $conv_flags = []) {
$result = array();
@@ -101,6 +101,7 @@ class ThreadItem {
|| strlen($item['deny_cid']) || strlen($item['deny_gid']))))
? t('Private Message')
: false);
+
$shareable = ((($conv->get_profile_owner() == local_channel() && local_channel()) && ($item['item_private'] != 1)) ? true : false);
// allow an exemption for sharing stuff from your private feeds
@@ -115,6 +116,19 @@ class ThreadItem {
$privacy_warning = true;
}
+ if ($lock) {
+ if (($item['mid'] == $item['parent_mid']) && count(get_terms_oftype($item['term'],TERM_FORUM))) {
+ $privacy_warning = true;
+ $conv_flags['parent_privacy_warning'] = true;
+ }
+ }
+
+ $privacy_warning = (isset($conv_flags['parent_privacy_warning'])) ? $conv_flags['parent_privacy_warning'] : $privacy_warning;
+
+ if ($lock && $privacy_warning) {
+ $lock = t('Privacy conflict. Discretion advised.');
+ }
+
$mode = $conv->get_mode();
switch($item['item_type']) {
@@ -293,8 +307,15 @@ class ThreadItem {
$dislike = array( t("I don't like this \x28toggle\x29"), t("dislike"));
}
- if ($shareable)
- $share = array( t('Share This'), t('share'));
+ if ($shareable) {
+ // This actually turns out not to be possible in some protocol stacks without opening up hundreds of new issues.
+ // Will allow it only for uri resolvable sources.
+ if(strpos($item['mid'],'http') === 0) {
+ $share = []; //Not yet ready for primetime
+ //$share = array( t('Repeat This'), t('repeat'));
+ }
+ $embed = array( t('Share This'), t('share'));
+ }
$dreport = '';
@@ -408,12 +429,13 @@ class ThreadItem {
'like' => $like,
'dislike' => ((feature_enabled($conv->get_profile_owner(),'dislike')) ? $dislike : ''),
'share' => $share,
+ 'embed' => $embed,
'rawmid' => $item['mid'],
'plink' => get_plink($item),
'edpost' => $edpost, // ((feature_enabled($conv->get_profile_owner(),'edit_posts')) ? $edpost : ''),
- 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts')) ? $star : ''),
+ 'star' => ((feature_enabled($conv->get_profile_owner(),'star_posts') && ($item['item_type'] == ITEM_TYPE_POST)) ? $star : ''),
'tagger' => ((feature_enabled($conv->get_profile_owner(),'commtag')) ? $tagger : ''),
- 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing')) ? $filer : ''),
+ 'filer' => ((feature_enabled($conv->get_profile_owner(),'filing') && ($item['item_type'] == ITEM_TYPE_POST)) ? $filer : ''),
'bookmark' => (($conv->get_profile_owner() == local_channel() && local_channel() && $has_bookmarks) ? t('Save Bookmarks') : ''),
'addtocal' => (($has_event) ? t('Add to Calendar') : ''),
'drop' => $drop,
@@ -470,7 +492,7 @@ class ThreadItem {
if(($this->get_display_mode() === 'normal') && ($nb_children > 0)) {
foreach($children as $child) {
- $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1);
+ $result['children'][] = $child->get_template_data($conv_responses, $thread_level + 1,$conv_flags);
}
// Collapse
if(($nb_children > $visible_comments) || ($thread_level > 1)) {
diff --git a/Zotlabs/Lib/ThreadListener.php b/Zotlabs/Lib/ThreadListener.php
new file mode 100644
index 000000000..308e02255
--- /dev/null
+++ b/Zotlabs/Lib/ThreadListener.php
@@ -0,0 +1,53 @@
+<?php
+
+namespace Zotlabs\Lib;
+
+class ThreadListener {
+
+ static public function store($target_id,$portable_id,$ltype = 0) {
+ $x = self::fetch($target_id,$portable_id,$ltype = 0);
+ if(! $x) {
+ $r = q("insert into listeners ( target_id, portable_id, ltype ) values ( '%s', '%s' , %d ) ",
+ dbesc($target_id),
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ }
+ }
+
+ static public function fetch($target_id,$portable_id,$ltype = 0) {
+ $x = q("select * from listeners where target_id = '%s' and portable_id = '%s' and ltype = %d limit 1",
+ dbesc($target_id),
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ if($x) {
+ return $x[0];
+ }
+ return false;
+ }
+
+ static public function fetch_by_target($target_id,$ltype = 0) {
+ $x = q("select * from listeners where target_id = '%s' and ltype = %d",
+ dbesc($target_id),
+ intval($ltype)
+ );
+
+ return $x;
+ }
+
+ static public function delete_by_target($target_id, $ltype = 0) {
+ return q("delete from listeners where target_id = '%s' and ltype = %d",
+ dbesc($target_id),
+ intval($ltype)
+ );
+ }
+
+ static public function delete_by_pid($portable_id, $ltype = 0) {
+ return q("delete from listeners where portable_id = '%s' and ltype = %d",
+ dbesc($portable_id),
+ intval($ltype)
+ );
+ }
+
+}
diff --git a/Zotlabs/Module/Admin.php b/Zotlabs/Module/Admin.php
index 8ccdaf4f5..88b84b9d2 100644
--- a/Zotlabs/Module/Admin.php
+++ b/Zotlabs/Module/Admin.php
@@ -86,7 +86,7 @@ class Admin extends \Zotlabs\Web\Controller {
// list total user accounts, expirations etc.
$accounts = array();
- $r = q("SELECT COUNT(*) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
+ $r = q("SELECT COUNT(CASE WHEN account_id > 0 THEN 1 ELSE NULL END) AS total, COUNT(CASE WHEN account_expires > %s THEN 1 ELSE NULL END) AS expiring, COUNT(CASE WHEN account_expires < %s AND account_expires > '%s' THEN 1 ELSE NULL END) AS expired, COUNT(CASE WHEN (account_flags & %d)>0 THEN 1 ELSE NULL END) AS blocked FROM account",
db_utcnow(),
db_utcnow(),
dbesc(NULL_DATE),
diff --git a/Zotlabs/Module/Admin/Addons.php b/Zotlabs/Module/Admin/Addons.php
index b35922aef..b8e3e3a2e 100644
--- a/Zotlabs/Module/Admin/Addons.php
+++ b/Zotlabs/Module/Admin/Addons.php
@@ -375,6 +375,9 @@ class Addons {
if($files) {
foreach($files as $file) {
if (is_dir($file)){
+ if($file == 'addon/addon_common/')
+ continue;
+
list($tmp, $id) = array_map('trim', explode('/', $file));
$info = get_plugin_info($id);
$enabled = in_array($id,\App::$plugins);
@@ -476,4 +479,4 @@ class Addons {
return(strcmp(strtolower($a[2]['name']),strtolower($b[2]['name'])));
}
-} \ No newline at end of file
+}
diff --git a/Zotlabs/Module/Admin/Site.php b/Zotlabs/Module/Admin/Site.php
index 09b038729..55c8ca928 100644
--- a/Zotlabs/Module/Admin/Site.php
+++ b/Zotlabs/Module/Admin/Site.php
@@ -119,7 +119,7 @@ class Site {
del_config('system', 'admininfo');
} else {
require_once('include/text.php');
- linkify_tags($a, $admininfo, local_channel());
+ linkify_tags($admininfo, local_channel());
set_config('system', 'admininfo', $admininfo);
}
set_config('system','siteinfo',$siteinfo);
diff --git a/Zotlabs/Module/Affinity.php b/Zotlabs/Module/Affinity.php
new file mode 100644
index 000000000..f0d99f1e7
--- /dev/null
+++ b/Zotlabs/Module/Affinity.php
@@ -0,0 +1,94 @@
+<?php
+
+namespace Zotlabs\Module;
+
+use App;
+use Zotlabs\Lib\Apps;
+use Zotlabs\Lib\Libsync;
+
+class Affinity extends \Zotlabs\Web\Controller {
+
+ function post() {
+
+ if(! local_channel())
+ return;
+
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool'))
+ return;
+
+ check_form_security_token_redirectOnErr('affinity', 'affinity');
+
+ $cmax = intval($_POST['affinity_cmax']);
+ if($cmax < 0 || $cmax > 99)
+ $cmax = 99;
+
+ $cmin = intval($_POST['affinity_cmin']);
+ if($cmin < 0 || $cmin > 99)
+ $cmin = 0;
+
+ $lock = intval($_POST['affinity_lock']);
+
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ set_pconfig(local_channel(),'affinity','lock',$lock);
+
+ info( t('Affinity Tool settings updated.') . EOL);
+
+ Libsync::build_sync_packet();
+
+ }
+
+
+ function get() {
+
+ if(! local_channel())
+ return;
+
+ $desc = t('This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream.');
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool')) {
+ //Do not display any associated widgets at this point
+ App::$pdl = '';
+
+ $o = '<b>' . t('Affinity Tool App') . ' (' . t('Not Installed') . '):</b><br>';
+ $o .= $desc;
+ return $o;
+ }
+
+ $text = t('The numbers below represent the minimum and maximum slider default positions for your network/stream page as a percentage.');
+
+ $content = '<div class="section-content-info-wrapper">' . $text . '</div>';
+
+ $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
+ $cmax = (($cmax) ? $cmax : 99);
+ $content .= replace_macros(get_markup_template('field_input.tpl'), array(
+ '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
+ ));
+
+ $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
+ $cmin = (($cmin) ? $cmin : 0);
+ $content .= replace_macros(get_markup_template('field_input.tpl'), array(
+ '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
+ ));
+
+ $lock = intval(get_pconfig(local_channel(),'affinity','lock',1));
+
+ $content .= replace_macros(get_markup_template('field_checkbox.tpl'), array(
+ '$field' => array('affinity_lock', t('Persistent affinity levels'), $lock, t('If disabled the max and min levels will be reset to default after page reload'), ['No','Yes'])
+ ));
+
+ $tpl = get_markup_template("settings_addon.tpl");
+
+ $o = replace_macros($tpl, array(
+ '$action_url' => 'affinity',
+ '$form_security_token' => get_form_security_token("affinity"),
+ '$title' => t('Affinity Tool Settings'),
+ '$content' => $content,
+ '$baseurl' => z_root(),
+ '$submit' => t('Submit'),
+ ));
+
+ return $o;
+ }
+
+
+}
diff --git a/Zotlabs/Module/Cards.php b/Zotlabs/Module/Cards.php
index b66de158b..3f0e93de5 100644
--- a/Zotlabs/Module/Cards.php
+++ b/Zotlabs/Module/Cards.php
@@ -10,9 +10,13 @@ require_once('include/channel.php');
require_once('include/conversation.php');
require_once('include/acl_selectors.php');
+/**
+ * @brief Provides the Cards module.
+ *
+ */
class Cards extends Controller {
- function init() {
+ public function init() {
if(argc() > 1)
$which = argv(1);
@@ -20,14 +24,15 @@ class Cards extends Controller {
return;
profile_load($which);
-
}
/**
* {@inheritDoc}
- * @see \Zotlabs\Web\Controller::get()
+ * @see \\Zotlabs\\Web\\Controller::get()
+ *
+ * @return string Parsed HTML from template 'cards.tpl'
*/
- function get($update = 0, $load = false) {
+ public function get($update = 0, $load = false) {
if(observer_prohibited(true)) {
return login();
@@ -99,7 +104,6 @@ class Cards extends Controller {
}
-
if(perm_is_allowed($owner, $ob_hash, 'write_pages')) {
$x = [
@@ -110,7 +114,7 @@ class Cards extends Controller {
'nickname' => $channel['channel_address'],
'lockstate' => (($channel['channel_allow_cid'] || $channel['channel_allow_gid']
|| $channel['channel_deny_cid'] || $channel['channel_deny_gid']) ? 'lock' : 'unlock'),
- 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
+ 'acl' => (($is_owner) ? populate_acl($channel_acl, false,
PermissionDescription::fromGlobalPermission('view_pages')) : ''),
'permissions' => $channel_acl,
'showacl' => (($is_owner) ? true : false),
diff --git a/Zotlabs/Module/Chanview.php b/Zotlabs/Module/Chanview.php
index 779c7e646..2e653d030 100644
--- a/Zotlabs/Module/Chanview.php
+++ b/Zotlabs/Module/Chanview.php
@@ -106,7 +106,7 @@ class Chanview extends \Zotlabs\Web\Controller {
if (\App::$poi) {
$url = \App::$poi['xchan_url'];
- if(\App::$poi['xchan_network'] === 'zot') {
+ if(in_array(\App::$poi['xchan_network'], ['zot', 'zot6'])) {
$is_zot = true;
}
if(local_channel()) {
diff --git a/Zotlabs/Module/Connedit.php b/Zotlabs/Module/Connedit.php
index c14bcd0dd..a587324df 100644
--- a/Zotlabs/Module/Connedit.php
+++ b/Zotlabs/Module/Connedit.php
@@ -710,7 +710,7 @@ class Connedit extends \Zotlabs\Web\Controller {
$tpl = get_markup_template("abook_edit.tpl");
- if(feature_enabled(local_channel(),'affinity')) {
+ if(Apps::system_app_installed(local_channel(),'Affinity Tool')) {
$sections['affinity'] = [
'label' => t('Affinity'),
diff --git a/Zotlabs/Module/Display.php b/Zotlabs/Module/Display.php
index e3691702d..04e5f9fce 100644
--- a/Zotlabs/Module/Display.php
+++ b/Zotlabs/Module/Display.php
@@ -178,8 +178,7 @@ class Display extends \Zotlabs\Web\Controller {
$static = ((array_key_exists('static',$_REQUEST)) ? intval($_REQUEST['static']) : 0);
-
-
+
$simple_update = (($update) ? " AND item_unseen = 1 " : '');
if($update && $_SESSION['loadtime'])
@@ -314,7 +313,7 @@ class Display extends \Zotlabs\Web\Controller {
}
}
- if(! $r) {
+ if($r === null) {
// in case somebody turned off public access to sys channel content using permissions
// make that content unsearchable by ensuring the owner_xchan can't match
if(! perm_is_allowed($sysid,$observer_hash,'view_stream'))
diff --git a/Zotlabs/Module/Embed.php b/Zotlabs/Module/Embed.php
new file mode 100644
index 000000000..77b9254dd
--- /dev/null
+++ b/Zotlabs/Module/Embed.php
@@ -0,0 +1,22 @@
+<?php
+namespace Zotlabs\Module;
+
+require_once('include/security.php');
+require_once('include/bbcode.php');
+
+
+class Embed extends \Zotlabs\Web\Controller {
+
+ function init() {
+
+ $post_id = ((argc() > 1) ? intval(argv(1)) : 0);
+
+ if(! $post_id)
+ killme();
+
+ echo '[share=' . $post_id . '][/share]';
+ killme();
+
+ }
+
+}
diff --git a/Zotlabs/Module/Embedphotos.php b/Zotlabs/Module/Embedphotos.php
index bcbb0e116..2df14c239 100644
--- a/Zotlabs/Module/Embedphotos.php
+++ b/Zotlabs/Module/Embedphotos.php
@@ -3,8 +3,10 @@
namespace Zotlabs\Module;
/**
- * @brief
+ * @brief Embedphoto endpoint.
*
+ * Provide an AJAX endpoint to fill the embedPhotoModal with folders and photos
+ * selection.
*/
class Embedphotos extends \Zotlabs\Web\Controller {
@@ -13,42 +15,42 @@ class Embedphotos extends \Zotlabs\Web\Controller {
}
/**
+ * @brief This is the POST destination for the embedphotos button.
*
- * This is the POST destination for the embedphotos button
- *
+ * @return string A JSON string.
*/
- function post() {
+ public function post() {
if (argc() > 1 && argv(1) === 'album') {
// API: /embedphotos/album
- $name = (x($_POST,'name') ? $_POST['name'] : null );
- if(!$name) {
+ $name = (x($_POST, 'name') ? $_POST['name'] : null );
+ if (!$name) {
json_return_and_die(array('errormsg' => 'Error retrieving album', 'status' => false));
}
$album = $this->embedphotos_widget_album(array('channel' => \App::get_channel(), 'album' => $name));
json_return_and_die(array('status' => true, 'content' => $album));
}
- if(argc() > 1 && argv(1) === 'albumlist') {
+ if (argc() > 1 && argv(1) === 'albumlist') {
// API: /embedphotos/albumlist
- $album_list = $this->embedphotos_album_list($a);
+ $album_list = $this->embedphotos_album_list();
json_return_and_die(array('status' => true, 'albumlist' => $album_list));
}
- if(argc() > 1 && argv(1) === 'photolink') {
+ if (argc() > 1 && argv(1) === 'photolink') {
// API: /embedphotos/photolink
- $href = (x($_POST,'href') ? $_POST['href'] : null );
- if(!$href) {
+ $href = (x($_POST, 'href') ? $_POST['href'] : null );
+ if (!$href) {
json_return_and_die(array('errormsg' => 'Error retrieving link ' . $href, 'status' => false));
}
- $resource_id = array_pop(explode("/", $href));
+ $resource_id = array_pop(explode('/', $href));
$r = q("SELECT obj from item where resource_type = 'photo' and resource_id = '%s' limit 1",
dbesc($resource_id)
);
- if(!$r) {
+ if (!$r) {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
}
$obj = json_decode($r[0]['obj'], true);
- if(x($obj,'body')) {
+ if (x($obj, 'body')) {
$photolink = $obj['body'];
- } elseif (x($obj,'bbcode')) {
+ } elseif (x($obj, 'bbcode')) {
$photolink = $obj['bbcode'];
} else {
json_return_and_die(array('errormsg' => 'Error retrieving resource ' . $resource_id, 'status' => false));
@@ -58,48 +60,51 @@ class Embedphotos extends \Zotlabs\Web\Controller {
}
/**
- * Copied from include/widgets.php::widget_album() with a modification to get the profile_uid from
- * the input array as in widget_item()
+ * @brief Get photos from an album.
+ *
+ * @see \\Zotlabs\\Widget\\Album::widget()
*
- * @param array $args
- * @return string with HTML
+ * @param array $args associative array with
+ * * \e array \b channel
+ * * \e string \b album
+ * @return string with HTML code from 'photo_album.tpl'
*/
- function embedphotos_widget_album($args) {
-
+ protected function embedphotos_widget_album($args) {
$channel_id = 0;
- if(array_key_exists('channel', $args))
+
+ if (array_key_exists('channel', $args)) {
$channel = $args['channel'];
- $channel_id = intval($channel['channel_id']);
- if(! $channel_id)
+ $channel_id = intval($channel['channel_id']);
+ }
+ if (! $channel_id)
$channel_id = \App::$profile_uid;
- if(! $channel_id)
+ if (! $channel_id)
return '';
- $owner_uid = $channel_id;
require_once('include/security.php');
$sql_extra = permissions_sql($channel_id);
- if(! perm_is_allowed($channel_id,get_observer_hash(),'view_storage'))
+ if (! perm_is_allowed($channel_id, get_observer_hash(), 'view_storage'))
return '';
- if($args['album'])
+ if (isset($args['album']))
$album = (($args['album'] === '/') ? '' : $args['album']);
- if($args['title'])
+ if (isset($args['title']))
$title = $args['title'];
/**
- * This may return incorrect permissions if you have multiple directories of the same name.
+ * @note This may return incorrect permissions if you have multiple directories of the same name.
* It is a limitation of the photo table using a name for a photo album instead of a folder hash
*/
- if($album) {
+ if ($album) {
require_once('include/attach.php');
$x = q("select hash from attach where filename = '%s' and uid = %d limit 1",
dbesc($album),
- intval($owner_uid)
+ intval($channel_id)
);
- if($x) {
- $y = attach_can_view_folder($owner_uid,get_observer_hash(),$x[0]['hash']);
- if(! $y)
+ if ($x) {
+ $y = attach_can_view_folder($channel_id, get_observer_hash(), $x[0]['hash']);
+ if (! $y)
return '';
}
}
@@ -110,30 +115,33 @@ class Embedphotos extends \Zotlabs\Web\Controller {
(SELECT resource_id, max(imgscale) imgscale FROM photo WHERE uid = %d AND album = '%s' AND imgscale <= 4 AND photo_usage IN ( %d, %d ) $sql_extra GROUP BY resource_id) ph
ON (p.resource_id = ph.resource_id AND p.imgscale = ph.imgscale)
ORDER BY created $order",
- intval($owner_uid),
+ intval($channel_id),
dbesc($album),
intval(PHOTO_NORMAL),
intval(PHOTO_PROFILE)
);
- $photos = array();
- if(count($r)) {
+ $photos = [];
+ if (count($r)) {
$twist = 'rotright';
- foreach($r as $rr) {
- if($twist == 'rotright')
+ foreach ($r as $rr) {
+ if ($twist == 'rotright')
$twist = 'rotleft';
else
$twist = 'rotright';
+ $ph = photo_factory('');
+ $phototypes = $ph->supportedTypes();
+
$ext = $phototypes[$rr['mimetype']];
$imgalt_e = $rr['filename'];
$desc_e = $rr['description'];
- $imagelink = (z_root() . '/photos/' . \App::$data['channel']['channel_address'] . '/image/' . $rr['resource_id']
+ $imagelink = (z_root() . '/photos/' . $channel['channel_address'] . '/image/' . $rr['resource_id']
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''));
- $photos[] = array(
+ $photos[] = [
'id' => $rr['id'],
'twist' => ' ' . $twist . rand(2,4),
'link' => $imagelink,
@@ -143,35 +151,43 @@ class Embedphotos extends \Zotlabs\Web\Controller {
'desc'=> $desc_e,
'ext' => $ext,
'hash'=> $rr['resource_id'],
- 'unknown' => t('Unknown')
- );
+ 'unknown' => t('Unknown'),
+ ];
}
}
$tpl = get_markup_template('photo_album.tpl');
- $o .= replace_macros($tpl, array(
+ $o = replace_macros($tpl, [
'$photos' => $photos,
'$album' => (($title) ? $title : $album),
'$album_id' => rand(),
- '$album_edit' => array(t('Edit Album'), $album_edit),
+ '$album_edit' => array(t('Edit Album'), false),
'$can_post' => false,
'$upload' => array(t('Upload'), z_root() . '/photos/' . \App::$profile['channel_address'] . '/upload/' . bin2hex($album)),
'$order' => false,
- '$upload_form' => $upload_form,
- '$no_fullscreen_btn' => true
- ));
+ '$upload_form' => '',
+ '$no_fullscreen_btn' => true,
+ ]);
return $o;
}
- function embedphotos_album_list($a) {
+ /**
+ * @brief Get albums observer is allowed to see.
+ *
+ * @see photos_albums_list()
+ *
+ * @return NULL|array
+ */
+ protected function embedphotos_album_list() {
require_once('include/photos.php');
$p = photos_albums_list(\App::get_channel(), \App::get_observer());
- if($p['success']) {
+
+ if ($p['success']) {
return $p['albums'];
- } else {
- return null;
}
+
+ return null;
}
}
diff --git a/Zotlabs/Module/Events.php b/Zotlabs/Module/Events.php
index 7e5204e62..e883db49f 100644
--- a/Zotlabs/Module/Events.php
+++ b/Zotlabs/Module/Events.php
@@ -97,8 +97,8 @@ class Events extends \Zotlabs\Web\Controller {
$type = escape_tags(trim($_POST['type']));
require_once('include/text.php');
- linkify_tags($a, $desc, local_channel());
- linkify_tags($a, $location, local_channel());
+ linkify_tags($desc, local_channel());
+ linkify_tags($location, local_channel());
//$action = ($event_hash == '') ? 'new' : "event/" . $event_hash;
diff --git a/Zotlabs/Module/Group.php b/Zotlabs/Module/Group.php
index 3dcf903ad..12edf8428 100644
--- a/Zotlabs/Module/Group.php
+++ b/Zotlabs/Module/Group.php
@@ -66,6 +66,9 @@ class Group extends Controller {
$groupname = notags(trim($_POST['groupname']));
$public = intval($_POST['public']);
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras_post',$hookinfo);
+
if((strlen($groupname)) && (($groupname != $group['gname']) || ($public != $group['visible']))) {
$r = q("UPDATE pgrp SET gname = '%s', visible = %d WHERE uid = %d AND id = %d",
dbesc($groupname),
@@ -76,8 +79,6 @@ class Group extends Controller {
if($r)
info( t('Privacy group updated.') . EOL );
- $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
- call_hooks ('privacygroup_extras_post',$hookinfo);
build_sync_packet(local_channel(),null,true);
}
@@ -242,6 +243,10 @@ class Group extends Controller {
}
}
+ $hookinfo = [ 'pgrp_extras' => '', 'group'=>$group['id'] ];
+ call_hooks ('privacygroup_extras',$hookinfo);
+ $pgrp_extras = $hookinfo['pgrp_extras'];
+
$context = $context + array(
'$title' => sprintf(t('Privacy Group: %s'), $group['gname']),
'$details_label' => t('Edit'),
@@ -252,6 +257,7 @@ class Group extends Controller {
'$form_security_token_edit' => get_form_security_token('group_edit'),
'$delete' => t('Delete Group'),
'$form_security_token_drop' => get_form_security_token("group_drop"),
+ '$pgrp_extras' => $pgrp_extras,
);
}
@@ -295,6 +301,7 @@ class Group extends Controller {
$context['$groupeditor'] = $groupeditor;
$context['$desc'] = t('Click a channel to toggle membership');
+ $context['$pgrp_extras'] = $pgrp_extras;
if($change) {
$tpl = get_markup_template('groupeditor.tpl');
diff --git a/Zotlabs/Module/Item.php b/Zotlabs/Module/Item.php
index 24949c626..ebcf632ef 100644
--- a/Zotlabs/Module/Item.php
+++ b/Zotlabs/Module/Item.php
@@ -6,6 +6,13 @@ use Zotlabs\Lib\IConfig;
use Zotlabs\Lib\Enotify;
use Zotlabs\Web\Controller;
use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Activity;
+use Zotlabs\Lib\ActivityStreams;
+use Zotlabs\Lib\LDSignatures;
+use Zotlabs\Zot6\HTTPSig;
+use Zotlabs\Lib\Libzot;
+use Zotlabs\Lib\ThreadListener;
+use App;
require_once('include/crypto.php');
require_once('include/items.php');
@@ -30,6 +37,144 @@ require_once('include/security.php');
class Item extends Controller {
+
+ function init() {
+
+ if(Libzot::is_zot_request()) {
+
+ $conversation = false;
+
+ $item_id = argv(1);
+
+ if(! $item_id)
+ http_status_exit(404, 'Not found');
+
+
+ $portable_id = EMPTY_STR;
+
+ $sigdata = HTTPSig::verify(EMPTY_STR);
+ if($sigdata['portable_id'] && $sigdata['header_valid']) {
+ $portable_id = $sigdata['portable_id'];
+ }
+
+ $item_normal = " and item.item_hidden = 0 and item.item_type = 0 and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_blocked = 0 ";
+
+ $sql_extra = item_permissions_sql(0);
+
+ $r = q("select * from item where mid = '%s' $item_normal $sql_extra limit 1",
+ dbesc(z_root() . '/item/' . $item_id)
+ );
+ if(! $r) {
+
+
+ $r = q("select * from item where mid = '%s' $item_normal limit 1",
+ dbesc(z_root() . '/item/' . $item_id)
+ );
+ if($r) {
+ http_status_exit(403, 'Forbidden');
+ }
+ http_status_exit(404, 'Not found');
+ }
+
+
+ $items = q("select parent as item_id from item where mid = '%s' and uid = %d $item_normal $sql_extra ",
+ dbesc($r[0]['parent_mid']),
+ intval($r[0]['uid'])
+ );
+ if(! $items) {
+ http_status_exit(404, 'Not found');
+ }
+
+ $r = $items;
+
+ $parents_str = ids_to_querystr($r,'item_id');
+
+ $items = q("SELECT item.*, item.id AS item_id FROM item WHERE item.parent IN ( %s ) $item_normal $sql_extra ",
+ dbesc($parents_str)
+ );
+
+ if(! $items) {
+ http_status_exit(404, 'Not found');
+ }
+
+ $r = $items;
+ xchan_query($r,true);
+ $items = fetch_post_tags($r,true);
+
+ $observer = App::get_observer();
+ $parent = $items[0];
+ $recips = (($parent['owner']['xchan_network'] === 'activitypub') ? get_iconfig($parent['id'],'activitypub','recips', []) : []);
+ $to = (($recips && array_key_exists('to',$recips) && is_array($recips['to'])) ? $recips['to'] : null);
+ $nitems = [];
+ foreach($items as $i) {
+
+ $mids = [];
+
+ if(intval($i['item_private'])) {
+ if(! $observer) {
+ continue;
+ }
+ // ignore private reshare, possibly from hubzilla
+ if($i['verb'] === 'Announce') {
+ if(! in_array($i['thr_parent'],$mids)) {
+ $mids[] = $i['thr_parent'];
+ }
+ continue;
+ }
+ // also ignore any children of the private reshares
+ if(in_array($i['thr_parent'],$mids)) {
+ continue;
+ }
+
+ if((! $to) || (! in_array($observer['xchan_url'],$to))) {
+ continue;
+ }
+
+ }
+ $nitems[] = $i;
+ }
+
+ if(! $nitems)
+ http_status_exit(404, 'Not found');
+
+ $chan = channelx_by_n($nitems[0]['uid']);
+
+ if(! $chan)
+ http_status_exit(404, 'Not found');
+
+ if(! perm_is_allowed($chan['channel_id'],get_observer_hash(),'view_stream'))
+ http_status_exit(403, 'Forbidden');
+
+ $i = Activity::encode_item_collection($nitems,'conversation/' . $item_id,'OrderedCollection',( defined('NOMADIC') ? false : true));
+ if($portable_id) {
+ ThreadListener::store(z_root() . '/item/' . $item_id,$portable_id);
+ }
+
+ if(! $i)
+ http_status_exit(404, 'Not found');
+
+ $x = array_merge(['@context' => [
+ ACTIVITYSTREAMS_JSONLD_REV,
+ 'https://w3id.org/security/v1',
+ z_root() . ZOT_APSCHEMA_REV
+ ]], $i);
+
+ $headers = [];
+ $headers['Content-Type'] = 'application/x-zot+json' ;
+ $x['signature'] = LDSignatures::sign($x,$chan);
+ $ret = json_encode($x, JSON_UNESCAPED_SLASHES);
+ $headers['Digest'] = HTTPSig::generate_digest_header($ret);
+ $headers['(request-target)'] = strtolower($_SERVER['REQUEST_METHOD']) . ' ' . $_SERVER['REQUEST_URI'];
+ $h = HTTPSig::create_sig($headers,$chan['channel_prvkey'],channel_url($chan));
+ HTTPSig::set_headers($h);
+ echo $ret;
+ killme();
+
+ }
+ }
+
+
+
function post() {
// This will change. Figure out who the observer is and whether or not
@@ -553,8 +698,8 @@ class Item extends Controller {
// Look for tags and linkify them
- $results = linkify_tags($a, $summary, ($uid) ? $uid : $profile_uid);
- $results = linkify_tags($a, $body, ($uid) ? $uid : $profile_uid);
+ $results = linkify_tags($summary, ($uid) ? $uid : $profile_uid);
+ $results = linkify_tags($body, ($uid) ? $uid : $profile_uid);
if($results) {
@@ -639,9 +784,9 @@ class Item extends Controller {
if(preg_match_all('/(\[share=(.*?)\](.*?)\[\/share\])/',$body,$match)) {
+
// process share by id
- $verb = ACTIVITY_SHARE;
$i = 0;
foreach($match[2] as $mtch) {
$reshare = new \Zotlabs\Lib\Share($mtch);
diff --git a/Zotlabs/Module/Mail.php b/Zotlabs/Module/Mail.php
index d38c1d88c..3202d38a5 100644
--- a/Zotlabs/Module/Mail.php
+++ b/Zotlabs/Module/Mail.php
@@ -34,7 +34,7 @@ class Mail extends \Zotlabs\Web\Controller {
}
else {
$body = cleanup_bbcode($body);
- $results = linkify_tags($a, $body, local_channel());
+ $results = linkify_tags($body, local_channel());
if(preg_match_all('/(\[attachment\](.*?)\[\/attachment\])/',$body,$match)) {
$attachments = array();
@@ -111,7 +111,7 @@ class Mail extends \Zotlabs\Web\Controller {
}
require_once('include/text.php');
- linkify_tags($a, $body, local_channel());
+ linkify_tags($body, local_channel());
if(! $recipient) {
diff --git a/Zotlabs/Module/Network.php b/Zotlabs/Module/Network.php
index d5cc06d09..2019082ed 100644
--- a/Zotlabs/Module/Network.php
+++ b/Zotlabs/Module/Network.php
@@ -1,6 +1,8 @@
<?php
namespace Zotlabs\Module;
+use Zotlabs\Lib\Group;
+use Zotlabs\Lib\Apps;
use App;
require_once('include/items.php');
@@ -114,8 +116,8 @@ class Network extends \Zotlabs\Web\Controller {
$def_acl = array('allow_gid' => '<' . $r[0]['hash'] . '>');
}
- $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
- $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
+ $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : (-1));
+ $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : (-1));
$cid = ((x($_GET,'cid')) ? intval($_GET['cid']) : 0);
$star = ((x($_GET,'star')) ? intval($_GET['star']) : 0);
@@ -132,7 +134,7 @@ class Network extends \Zotlabs\Web\Controller {
$deftag = '';
- if (feature_enabled(local_channel(),'affinity')) {
+ if (Apps::system_app_installed(local_channel(),'Affinity Tool')) {
$affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
if ($affinity_locked) {
set_pconfig(local_channel(),'affinity','cmin',$cmin);
diff --git a/Zotlabs/Module/Notes.php b/Zotlabs/Module/Notes.php
index 178a6bce0..7572f7420 100644
--- a/Zotlabs/Module/Notes.php
+++ b/Zotlabs/Module/Notes.php
@@ -1,28 +1,31 @@
<?php
-namespace Zotlabs\Module; /** @file */
+namespace Zotlabs\Module;
use App;
use Zotlabs\Web\Controller;
use Zotlabs\Lib\Apps;
+/**
+ * @brief Notes Module controller.
+ */
class Notes extends Controller {
function post() {
-
+
if(! local_channel())
return EMPTY_STR;
if(! Apps::system_app_installed(local_channel(), 'Notes'))
return EMPTY_STR;
-
+
$ret = array('success' => true);
if(array_key_exists('note_text',$_REQUEST)) {
$body = escape_tags($_REQUEST['note_text']);
-
+
// I've had my notes vanish into thin air twice in four years.
- // Provide a backup copy if there were contents previously
+ // Provide a backup copy if there were contents previously
// and there are none being saved now.
-
+
if(! $body) {
$old_text = get_pconfig(local_channel(),'notes','text');
if($old_text)
@@ -40,11 +43,9 @@ class Notes extends Controller {
logger('notes saved.', LOGGER_DEBUG);
json_return_and_die($ret);
-
}
function get() {
-
if(! local_channel())
return EMPTY_STR;
@@ -61,7 +62,6 @@ class Notes extends Controller {
$arr = ['app' => true];
return $w->widget($arr);
-
}
-
+
}
diff --git a/Zotlabs/Module/Oep.php b/Zotlabs/Module/Oep.php
index 0f20a5f9a..c0d8e15e5 100644
--- a/Zotlabs/Module/Oep.php
+++ b/Zotlabs/Module/Oep.php
@@ -181,7 +181,7 @@ class Oep extends \Zotlabs\Web\Controller {
dbesc($res)
);
if($r) {
- $sql_extra = "and item.id = " . intval($r[0]['iid']) . " ";
+ $sql_extra .= " and item.id = " . intval($r[0]['iid']) . " ";
}
else {
return $ret;
@@ -194,6 +194,9 @@ class Oep extends \Zotlabs\Web\Controller {
intval(ITEM_TYPE_CARD)
);
+ if(! $r)
+ return;
+
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,6) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
@@ -255,7 +258,6 @@ class Oep extends \Zotlabs\Web\Controller {
if(! $channel)
return $ret;
-
if(! perm_is_allowed($channel['channel_id'],get_observer_hash(),'view_pages'))
return $ret;
@@ -265,7 +267,7 @@ class Oep extends \Zotlabs\Web\Controller {
dbesc($res)
);
if($r) {
- $sql_extra = "and item.id = " . intval($r[0]['iid']) . " ";
+ $sql_extra .= " and item.id = " . intval($r[0]['iid']) . " ";
}
else {
return $ret;
@@ -278,6 +280,9 @@ class Oep extends \Zotlabs\Web\Controller {
intval(ITEM_TYPE_ARTICLE)
);
+ if(! $r)
+ return;
+
$item_normal = " and item.item_hidden = 0 and item.item_type in (0,7) and item.item_deleted = 0
and item.item_unpublished = 0 and item.item_delayed = 0 and item.item_pending_remove = 0
and item.item_blocked = 0 ";
diff --git a/Zotlabs/Module/Photos.php b/Zotlabs/Module/Photos.php
index 3833d5088..a761dbd14 100644
--- a/Zotlabs/Module/Photos.php
+++ b/Zotlabs/Module/Photos.php
@@ -422,7 +422,7 @@ class Photos extends \Zotlabs\Web\Controller {
require_once('include/text.php');
$profile_uid = \App::$profile['profile_uid'];
- $results = linkify_tags($a, $rawtags, (local_channel()) ? local_channel() : $profile_uid);
+ $results = linkify_tags($rawtags, (local_channel()) ? local_channel() : $profile_uid);
$success = $results['success'];
$post_tags = array();
diff --git a/Zotlabs/Module/Profiles.php b/Zotlabs/Module/Profiles.php
index de4075ba9..33e7d8a9d 100644
--- a/Zotlabs/Module/Profiles.php
+++ b/Zotlabs/Module/Profiles.php
@@ -354,20 +354,20 @@ class Profiles extends \Zotlabs\Web\Controller {
require_once('include/text.php');
- linkify_tags($a, $likes, local_channel());
- linkify_tags($a, $dislikes, local_channel());
- linkify_tags($a, $about, local_channel());
- linkify_tags($a, $interest, local_channel());
- linkify_tags($a, $interest, local_channel());
- linkify_tags($a, $contact, local_channel());
- linkify_tags($a, $channels, local_channel());
- linkify_tags($a, $music, local_channel());
- linkify_tags($a, $book, local_channel());
- linkify_tags($a, $tv, local_channel());
- linkify_tags($a, $film, local_channel());
- linkify_tags($a, $romance, local_channel());
- linkify_tags($a, $work, local_channel());
- linkify_tags($a, $education, local_channel());
+ linkify_tags($likes, local_channel());
+ linkify_tags($dislikes, local_channel());
+ linkify_tags($about, local_channel());
+ linkify_tags($interest, local_channel());
+ linkify_tags($interest, local_channel());
+ linkify_tags($contact, local_channel());
+ linkify_tags($channels, local_channel());
+ linkify_tags($music, local_channel());
+ linkify_tags($book, local_channel());
+ linkify_tags($tv, local_channel());
+ linkify_tags($film, local_channel());
+ linkify_tags($romance, local_channel());
+ linkify_tags($work, local_channel());
+ linkify_tags($education, local_channel());
$with = ((x($_POST,'with')) ? escape_tags(trim($_POST['with'])) : '');
diff --git a/Zotlabs/Module/Settings/Featured.php b/Zotlabs/Module/Settings/Featured.php
index 1d903fcf7..d5d740aff 100644
--- a/Zotlabs/Module/Settings/Featured.php
+++ b/Zotlabs/Module/Settings/Featured.php
@@ -10,24 +10,6 @@ class Featured {
call_hooks('feature_settings_post', $_POST);
- if($_POST['affinity_slider-submit']) {
- $cmax = intval($_POST['affinity_cmax']);
- if($cmax < 0 || $cmax > 99)
- $cmax = 99;
- $cmin = intval($_POST['affinity_cmin']);
- if($cmin < 0 || $cmin > 99)
- $cmin = 0;
-
- $lock = ($_POST['affinity_lock']) ? intval($_POST['affinity_lock']) : 1;
-
- set_pconfig(local_channel(),'affinity','cmin',$cmin);
- set_pconfig(local_channel(),'affinity','cmax',$cmax);
- set_pconfig(local_channel(),'affinity','lock',$lock);
-
- info( t('Affinity Slider settings updated.') . EOL);
-
- }
-
build_sync_packet();
return;
}
@@ -41,34 +23,10 @@ class Featured {
if(! $r)
$settings_addons = t('No feature settings configured');
- if(feature_enabled(local_channel(),'affinity')) {
-
- $cmax = intval(get_pconfig(local_channel(),'affinity','cmax'));
- $cmax = (($cmax) ? $cmax : 99);
- $setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmax', t('Default maximum affinity level'), $cmax, t('0-99 default 99'))
- ));
- $cmin = intval(get_pconfig(local_channel(),'affinity','cmin'));
- $cmin = (($cmin) ? $cmin : 0);
- $setting_fields .= replace_macros(get_markup_template('field_input.tpl'), array(
- '$field' => array('affinity_cmin', t('Default minimum affinity level'), $cmin, t('0-99 - default 0'))
- ));
- $lock = intval(get_pconfig(local_channel(),'affinity','lock',1));
- $setting_fields .= replace_macros(get_markup_template('field_checkbox.tpl'), array(
- '$field' => array('affinity_lock', t('Always reset on new page visit.'), $lock, t('default: yes'), Array('No','Yes'))
- ));
-
- $settings_addons .= replace_macros(get_markup_template('generic_addon_settings.tpl'), array(
- '$addon' => array('affinity_slider', '' . t('Affinity Slider Settings'), '', t('Submit')),
- '$content' => $setting_fields
- ));
- }
-
call_hooks('feature_settings', $settings_addons);
$this->sortpanels($settings_addons);
-
$tpl = get_markup_template("settings_addons.tpl");
$o .= replace_macros($tpl, array(
'$form_security_token' => get_form_security_token("settings_featured"),
diff --git a/Zotlabs/Module/Share.php b/Zotlabs/Module/Share.php
index c6d0be051..53a06b072 100644
--- a/Zotlabs/Module/Share.php
+++ b/Zotlabs/Module/Share.php
@@ -1,6 +1,11 @@
<?php
namespace Zotlabs\Module;
+use App;
+use Zotlabs\Daemon\Master;
+use Zotlabs\Lib\Activity;
+
+
require_once('include/security.php');
require_once('include/bbcode.php');
@@ -14,23 +19,23 @@ class Share extends \Zotlabs\Web\Controller {
if(! $post_id)
killme();
- echo '[share=' . $post_id . '][/share]';
- killme();
+ if(! local_channel()) {
+ killme();
+ }
+ $observer = App::get_observer();
- /**
- * The remaining code is deprecated and handled in Zotlabs/Lib/Share.php at post
- * submission time.
- */
+ $channel = App::get_channel();
- if(! (local_channel() || remote_channel()))
- killme();
-
$r = q("SELECT * from item left join xchan on author_xchan = xchan_hash WHERE id = %d LIMIT 1",
intval($post_id)
);
if(! $r)
killme();
+
+
+
+
if(($r[0]['item_private']) && ($r[0]['xchan_network'] !== 'rss'))
killme();
@@ -46,59 +51,86 @@ class Share extends \Zotlabs\Web\Controller {
if($r[0]['mimetype'] !== 'text/bbcode')
killme();
-
- /** @FIXME eventually we want to post remotely via rpost on your home site */
- // When that works remove this next bit:
-
- if(! local_channel())
- killme();
-
+
xchan_query($r);
- $is_photo = (($r[0]['obj_type'] === ACTIVITY_OBJ_PHOTO) ? true : false);
- if($is_photo) {
- $object = json_decode($r[0]['obj'],true);
- $photo_bb = $object['body'];
- }
-
- if (strpos($r[0]['body'], "[/share]") !== false) {
- $pos = strpos($r[0]['body'], "[share");
- $o = substr($r[0]['body'], $pos);
- } else {
- $o = "[share author='" . urlencode($r[0]['author']['xchan_name']) .
- "' profile='" . $r[0]['author']['xchan_url'] .
- "' avatar='" . $r[0]['author']['xchan_photo_s'] .
- "' link='" . $r[0]['plink'] .
- "' auth='" . (($r[0]['author']['network'] === 'zot') ? 'true' : 'false') .
- "' posted='" . $r[0]['created'] .
- "' message_id='" . $r[0]['mid'] .
- "']";
- if($r[0]['title'])
- $o .= '[b]'.$r[0]['title'].'[/b]'."\r\n";
- $o .= (($is_photo) ? $photo_bb . "\r\n" . $r[0]['body'] : $r[0]['body']);
- $o .= "[/share]";
- }
-
- if(local_channel()) {
- echo $o;
+ $arr = [];
+
+ $item = $r[0];
+
+ $owner_uid = $r[0]['uid'];
+ $owner_aid = $r[0]['aid'];
+
+ $can_comment = false;
+ if((array_key_exists('owner',$item)) && intval($item['owner']['abook_self']))
+ $can_comment = perm_is_allowed($item['uid'],$observer['xchan_hash'],'post_comments');
+ else
+ $can_comment = can_comment_on_post($observer['xchan_hash'],$item);
+
+ if(! $can_comment) {
+ notice( t('Permission denied') . EOL);
killme();
}
+
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($item['owner_xchan'])
+ );
+
+ if($r)
+ $thread_owner = $r[0];
+ else
+ killme();
- $observer = \App::get_observer();
- $parsed = $observer['xchan_url'];
- if($parsed) {
- $post_url = $parsed['scheme'] . '://' . $parsed['host'] . (($parsed['port']) ? ':' . $parsed['port'] : '')
- . '/rpost';
+ $r = q("select * from xchan where xchan_hash = '%s' limit 1",
+ dbesc($item['author_xchan'])
+ );
+ if($r)
+ $item_author = $r[0];
+ else
+ killme();
- /**
- * @FIXME we were probably called from JS so we don't know the return page.
- * In fact we won't be able to load the remote page.
- * we might need an iframe
- */
+
+ $arr['aid'] = $owner_aid;
+ $arr['uid'] = $owner_uid;
+
+ $arr['item_origin'] = 1;
+ $arr['item_wall'] = $item['item_wall'];
+ $arr['uuid'] = item_message_id();
+ $arr['mid'] = z_root() . '/activity/' . $arr['uuid'];
+ $arr['parent_mid'] = $item['mid'];
+
+ $mention = '@[zrl=' . $item['author']['xchan_url'] . ']' . $item['author']['xchan_name'] . '[/zrl]';
+ $arr['body'] = sprintf( t('&#x1f501; Repeated %1$s\'s %2$s'), $mention, Activity::activity_obj_mapper($item['obj_type']));
+
+ $arr['author_xchan'] = $channel['channel_hash'];
+ $arr['owner_xchan'] = $item['author_xchan'];
+ $arr['obj'] = Activity::encode_item($item);
+ $arr['obj_type'] = $item['obj_type'];
+ $arr['verb'] = 'Announce';
+
+ $post = item_store($arr);
+
+ $post_id = $post['item_id'];
+
+ $arr['id'] = $post_id;
- $x = z_post_url($post_url, array('f' => '', 'body' => $o ));
- killme();
+ call_hooks('post_local_end', $arr);
+
+ info( t('Post repeated') . EOL);
+
+ $r = q("select * from item where id = %d",
+ intval($post_id)
+ );
+ if($r) {
+ xchan_query($r);
+ $sync_item = fetch_post_tags($r);
+ build_sync_packet($channel['channel_id'], [ 'item' => [ encode_item($sync_item[0],true) ] ]);
}
+
+ Master::Summon([ 'Notifier','like',$post_id ]);
+
+ killme();
+
}
}
diff --git a/Zotlabs/Module/Viewsrc.php b/Zotlabs/Module/Viewsrc.php
index 119990b57..b73d81283 100644
--- a/Zotlabs/Module/Viewsrc.php
+++ b/Zotlabs/Module/Viewsrc.php
@@ -28,7 +28,7 @@ class Viewsrc extends \Zotlabs\Web\Controller {
$item_normal = item_normal();
if(local_channel() && $item_id) {
- $r = q("select id, item_flags, mimetype, item_obscured, body, llink, plink from item where uid in (%d , %d) and id = %d $item_normal limit 1",
+ $r = q("select id, mid, item_flags, mimetype, item_obscured, body, llink, plink from item where uid in (%d , %d) and id = %d $item_normal limit 1",
intval(local_channel()),
intval($sys['channel_id']),
intval($item_id)
@@ -53,7 +53,7 @@ class Viewsrc extends \Zotlabs\Web\Controller {
if(is_ajax()) {
echo '<div class="p-1">';
- echo '<div>id: ' . $r[0]['id'] . ' | <a href="' . $r[0]['plink'] . '" target="_blank">plink</a> | <a href="' . $r[0]['llink'] . '" target="_blank">llink</a></div>';
+ echo '<div>id: ' . $r[0]['id'] . ' | <a href="' . $r[0]['plink'] . '" target="_blank">plink</a> | <a href="' . $r[0]['llink'] . '" target="_blank">llink</a><br>mid: ' . $r[0]['mid'] . '</div>';
echo '<hr>';
echo '<pre class="p-1">' . $o . '</pre>';
echo '</div>';
diff --git a/Zotlabs/Photo/PhotoDriver.php b/Zotlabs/Photo/PhotoDriver.php
new file mode 100644
index 000000000..c47a7c3b2
--- /dev/null
+++ b/Zotlabs/Photo/PhotoDriver.php
@@ -0,0 +1,498 @@
+<?php
+
+namespace Zotlabs\Photo;
+
+/**
+ * @brief Abstract photo driver class.
+ *
+ * Inheritance seems not to be the best design pattern for such photo drivers.
+ */
+abstract class PhotoDriver {
+
+ /**
+ * @brief This variable keeps the image.
+ *
+ * For GD it is a PHP image resource.
+ * For ImageMagick it is an \Imagick object.
+ *
+ * @var resource|\Imagick
+ */
+ protected $image;
+
+ /**
+ * @var integer
+ */
+ protected $width;
+
+ /**
+ * @var integer
+ */
+ protected $height;
+
+ /**
+ * @var boolean
+ */
+ protected $valid;
+
+ /**
+ * @brief The mimetype of the image.
+ *
+ * @var string
+ */
+ protected $type;
+
+ /**
+ * @brief Supported mimetypes by the used photo driver.
+ *
+ * @var array
+ */
+ protected $types;
+
+ /**
+ * @brief Return an array with supported mimetypes.
+ *
+ * @return array
+ * Associative array with mimetype as key and file extension as value.
+ */
+ abstract public function supportedTypes();
+
+ abstract protected function load($data, $type);
+
+ abstract protected function destroy();
+
+ abstract protected function setDimensions();
+
+ /**
+ * @brief Return the current image.
+ *
+ * @fixme Shouldn't his method be protected, because outside of the current
+ * driver it makes no sense at all because of the different return values.
+ *
+ * @return boolean|resource|\Imagick
+ * false on failure, a PHP image resource for GD driver, an \Imagick object
+ * for ImageMagick driver.
+ */
+ abstract public function getImage();
+
+ abstract public function doScaleImage($new_width, $new_height);
+
+ abstract public function rotate($degrees);
+
+ abstract public function flip($horiz = true, $vert = false);
+
+ /**
+ * @brief Crops the image.
+ *
+ * @param int $maxx width of the new image
+ * @param int $maxy height of the new image
+ * @param int $x x-offset for region
+ * @param int $y y-offset for region
+ * @param int $w width of region
+ * @param int $h height of region
+ *
+ * @return boolean|void false on failure
+ */
+ abstract public function cropImageRect($maxx, $maxy, $x, $y, $w, $h);
+
+ /**
+ * @brief Return a binary string from the image resource.
+ *
+ * @return string A Binary String.
+ */
+ abstract public function imageString();
+
+ abstract public function clearexif();
+
+
+ /**
+ * @brief PhotoDriver constructor.
+ *
+ * @param string $data Image
+ * @param string $type mimetype
+ */
+ public function __construct($data, $type = '') {
+ $this->types = $this->supportedTypes();
+ if(! array_key_exists($type, $this->types)) {
+ $type = 'image/jpeg';
+ }
+ $this->type = $type;
+ $this->valid = false;
+ $this->load($data, $type);
+ }
+
+ public function __destruct() {
+ if($this->is_valid())
+ $this->destroy();
+ }
+
+ /**
+ * @brief Is it a valid image object.
+ *
+ * @return boolean
+ */
+ public function is_valid() {
+ return $this->valid;
+ }
+
+ /**
+ * @brief Get the width of the image.
+ *
+ * @return boolean|number Width of image in pixels, or false on failure
+ */
+ public function getWidth() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->width;
+ }
+
+ /**
+ * @brief Get the height of the image.
+ *
+ * @return boolean|number Height of image in pixels, or false on failure
+ */
+ public function getHeight() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->height;
+ }
+
+ /**
+ * @brief Saves the image resource to a file in filesystem.
+ *
+ * @param string $path Path and filename where to save the image
+ * @return boolean False on failure, otherwise true
+ */
+ public function saveImage($path) {
+ if(! $this->is_valid())
+ return false;
+
+ return (file_put_contents($path, $this->imageString()) ? true : false);
+ }
+
+ /**
+ * @brief Return mimetype of the image resource.
+ *
+ * @return boolean|string False on failure, otherwise mimetype.
+ */
+ public function getType() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->type;
+ }
+
+ /**
+ * @brief Return file extension of the image resource.
+ *
+ * @return boolean|string False on failure, otherwise file extension.
+ */
+ public function getExt() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->types[$this->getType()];
+ }
+
+ /**
+ * @brief Scale image to max pixel size in either dimension.
+ *
+ * @param int $max maximum pixel size in either dimension
+ * @param boolean $float_height (optional)
+ * If true allow height to float to any length on tall images, constraining
+ * only the width
+ * @return boolean|void false on failure, otherwise void
+ */
+ public function scaleImage($max, $float_height = true) {
+ if(! $this->is_valid())
+ return false;
+
+ $width = $this->width;
+ $height = $this->height;
+
+ $dest_width = $dest_height = 0;
+
+ if((! $width) || (! $height))
+ return false;
+
+ if($width > $max && $height > $max) {
+
+ // very tall image (greater than 16:9)
+ // constrain the width - let the height float.
+
+ if(((($height * 9) / 16) > $width) && ($float_height)) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } // else constrain both dimensions
+ elseif($width > $height) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } else {
+ $dest_width = intval(($width * $max) / $height);
+ $dest_height = $max;
+ }
+ } else {
+ if($width > $max) {
+ $dest_width = $max;
+ $dest_height = intval(($height * $max) / $width);
+ } else {
+ if($height > $max) {
+
+ // very tall image (greater than 16:9)
+ // but width is OK - don't do anything
+
+ if(((($height * 9) / 16) > $width) && ($float_height)) {
+ $dest_width = $width;
+ $dest_height = $height;
+ } else {
+ $dest_width = intval(($width * $max) / $height);
+ $dest_height = $max;
+ }
+ } else {
+ $dest_width = $width;
+ $dest_height = $height;
+ }
+ }
+ }
+ $this->doScaleImage($dest_width, $dest_height);
+ }
+
+ public function scaleImageUp($min) {
+ if(! $this->is_valid()) {
+ return false;
+ }
+
+ $width = $this->width;
+ $height = $this->height;
+
+ $dest_width = $dest_height = 0;
+
+ if((! $width) || (! $height))
+ return false;
+
+ if($width < $min && $height < $min) {
+ if($width > $height) {
+ $dest_width = $min;
+ $dest_height = intval(($height * $min) / $width);
+ } else {
+ $dest_width = intval(($width * $min) / $height);
+ $dest_height = $min;
+ }
+ } else {
+ if($width < $min) {
+ $dest_width = $min;
+ $dest_height = intval(($height * $min) / $width);
+ } else {
+ if($height < $min) {
+ $dest_width = intval(($width * $min) / $height);
+ $dest_height = $min;
+ } else {
+ $dest_width = $width;
+ $dest_height = $height;
+ }
+ }
+ }
+ $this->doScaleImage($dest_width, $dest_height);
+ }
+
+ /**
+ * @brief Scales image to a square.
+ *
+ * @param int $dim Pixel of square image
+ * @return boolean|void false on failure, otherwise void
+ */
+ public function scaleImageSquare($dim) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->doScaleImage($dim, $dim);
+ }
+
+ /**
+ * @brief Crops a square image.
+ *
+ * @see cropImageRect()
+ *
+ * @param int $max size of the new image
+ * @param int $x x-offset for region
+ * @param int $y y-offset for region
+ * @param int $w width of region
+ * @param int $h height of region
+ *
+ * @return boolean|void false on failure
+ */
+ public function cropImage($max, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->cropImageRect($max, $max, $x, $y, $w, $h);
+ }
+
+ /**
+ * @brief Reads exif data from a given filename.
+ *
+ * @param string $filename
+ * @return boolean|array
+ */
+ public function exif($filename) {
+ if((! function_exists('exif_read_data'))
+ || (! in_array($this->getType(), ['image/jpeg', 'image/tiff'])))
+ {
+ return false;
+ }
+
+ /*
+ * PHP 7.2 allows you to use a stream resource, which should reduce/avoid
+ * memory exhaustion on large images.
+ */
+
+ if(version_compare(PHP_VERSION, '7.2.0') >= 0) {
+ $f = @fopen($filename, 'rb');
+ } else {
+ $f = $filename;
+ }
+
+ if($f) {
+ return @exif_read_data($f, null, true);
+ }
+
+ return false;
+ }
+
+ /**
+ * @brief Orients current image based on exif orientation information.
+ *
+ * @param array $exif
+ * @return boolean true if oriented, otherwise false
+ */
+ public function orient($exif) {
+ if(! ($this->is_valid() && $exif)) {
+ return false;
+ }
+
+ $ort = ((array_key_exists('IFD0', $exif)) ? $exif['IFD0']['Orientation'] : $exif['Orientation']);
+
+ if(! $ort) {
+ return false;
+ }
+
+ switch($ort) {
+ case 1 : // nothing
+ break;
+ case 2 : // horizontal flip
+ $this->flip();
+ break;
+ case 3 : // 180 rotate left
+ $this->rotate(180);
+ break;
+ case 4 : // vertical flip
+ $this->flip(false, true);
+ break;
+ case 5 : // vertical flip + 90 rotate right
+ $this->flip(false, true);
+ $this->rotate(-90);
+ break;
+ case 6 : // 90 rotate right
+ $this->rotate(-90);
+ break;
+ case 7 : // horizontal flip + 90 rotate right
+ $this->flip();
+ $this->rotate(-90);
+ break;
+ case 8 : // 90 rotate left
+ $this->rotate(90);
+ break;
+ default :
+ break;
+ }
+
+ return true;
+ }
+
+ /**
+ * @brief Save photo to database.
+ *
+ * @param array $arr
+ * @param boolean $skipcheck (optional) default false
+ * @return boolean|array
+ */
+ public function save($arr, $skipcheck = false) {
+ if(! ($skipcheck || $this->is_valid())) {
+ logger('Attempt to store invalid photo.');
+ return false;
+ }
+
+ $p = [];
+
+ $p['aid'] = ((intval($arr['aid'])) ? intval($arr['aid']) : 0);
+ $p['uid'] = ((intval($arr['uid'])) ? intval($arr['uid']) : 0);
+ $p['xchan'] = (($arr['xchan']) ? $arr['xchan'] : '');
+ $p['resource_id'] = (($arr['resource_id']) ? $arr['resource_id'] : '');
+ $p['filename'] = (($arr['filename']) ? $arr['filename'] : '');
+ $p['mimetype'] = (($arr['mimetype']) ? $arr['mimetype'] : $this->getType());
+ $p['album'] = (($arr['album']) ? $arr['album'] : '');
+ $p['imgscale'] = ((intval($arr['imgscale'])) ? intval($arr['imgscale']) : 0);
+ $p['allow_cid'] = (($arr['allow_cid']) ? $arr['allow_cid'] : '');
+ $p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
+ $p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
+ $p['deny_gid'] = (($arr['deny_gid']) ? $arr['deny_gid'] : '');
+ $p['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
+ $p['title'] = (($arr['title']) ? $arr['title'] : '');
+ $p['description'] = (($arr['description']) ? $arr['description'] : '');
+ $p['photo_usage'] = intval($arr['photo_usage']);
+ $p['os_storage'] = intval($arr['os_storage']);
+ $p['os_path'] = $arr['os_path'];
+ $p['os_syspath'] = ((array_key_exists('os_syspath', $arr)) ? $arr['os_syspath'] : '');
+ $p['display_path'] = (($arr['display_path']) ? $arr['display_path'] : '');
+ $p['width'] = (($arr['width']) ? $arr['width'] : $this->getWidth());
+ $p['height'] = (($arr['height']) ? $arr['height'] : $this->getHeight());
+ $p['expires'] = (($arr['expires']) ? $arr['expires'] : gmdate('Y-m-d H:i:s', time() + get_config('system', 'photo_cache_time', 86400)));
+
+ if(! intval($p['imgscale']))
+ logger('save: ' . print_r($arr, true), LOGGER_DATA);
+
+ $x = q("select id, created from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1", dbesc($p['resource_id']), intval($p['uid']), dbesc($p['xchan']), intval($p['imgscale']));
+
+ if($x) {
+ $p['created'] = (($x['created']) ? $x['created'] : $p['edited']);
+ $r = q("UPDATE photo set
+ aid = %d,
+ uid = %d,
+ xchan = '%s',
+ resource_id = '%s',
+ created = '%s',
+ edited = '%s',
+ filename = '%s',
+ mimetype = '%s',
+ album = '%s',
+ height = %d,
+ width = %d,
+ content = '%s',
+ os_storage = %d,
+ filesize = %d,
+ imgscale = %d,
+ photo_usage = %d,
+ title = '%s',
+ description = '%s',
+ os_path = '%s',
+ display_path = '%s',
+ allow_cid = '%s',
+ allow_gid = '%s',
+ deny_cid = '%s',
+ deny_gid = '%s',
+ expires = '%s'
+ where id = %d",
+ intval($p['aid']), intval($p['uid']), dbesc($p['xchan']), dbesc($p['resource_id']), dbescdate($p['created']), dbescdate($p['edited']), dbesc(basename($p['filename'])), dbesc($p['mimetype']), dbesc($p['album']), intval($p['height']), intval($p['width']), (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())), intval($p['os_storage']), (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())), intval($p['imgscale']), intval($p['photo_usage']), dbesc($p['title']), dbesc($p['description']), dbesc($p['os_path']), dbesc($p['display_path']), dbesc($p['allow_cid']), dbesc($p['allow_gid']), dbesc($p['deny_cid']), dbesc($p['deny_gid']), dbescdate($p['expires']), intval($x[0]['id']));
+ } else {
+ $p['created'] = (($arr['created']) ? $arr['created'] : $p['edited']);
+ $r = q("INSERT INTO photo
+ ( aid, uid, xchan, resource_id, created, edited, filename, mimetype, album, height, width, content, os_storage, filesize, imgscale, photo_usage, title, description, os_path, display_path, allow_cid, allow_gid, deny_cid, deny_gid, expires )
+ VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )", intval($p['aid']), intval($p['uid']), dbesc($p['xchan']), dbesc($p['resource_id']), dbescdate($p['created']), dbescdate($p['edited']), dbesc(basename($p['filename'])), dbesc($p['mimetype']), dbesc($p['album']), intval($p['height']), intval($p['width']), (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())), intval($p['os_storage']), (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())), intval($p['imgscale']), intval($p['photo_usage']), dbesc($p['title']), dbesc($p['description']), dbesc($p['os_path']), dbesc($p['display_path']), dbesc($p['allow_cid']), dbesc($p['allow_gid']), dbesc($p['deny_cid']), dbesc($p['deny_gid']), dbescdate($p['expires']));
+ }
+ logger('Photo save imgscale ' . $p['imgscale'] . ' returned ' . intval($r));
+
+ return $r;
+ }
+
+}
diff --git a/Zotlabs/Photo/PhotoGd.php b/Zotlabs/Photo/PhotoGd.php
new file mode 100644
index 000000000..4054e1866
--- /dev/null
+++ b/Zotlabs/Photo/PhotoGd.php
@@ -0,0 +1,176 @@
+<?php
+
+namespace Zotlabs\Photo;
+
+/**
+ * @brief GD photo driver.
+ *
+ */
+class PhotoGd extends PhotoDriver {
+
+ /**
+ * {@inheritDoc}
+ * @see \Zotlabs\Photo\PhotoDriver::supportedTypes()
+ */
+ public function supportedTypes() {
+ $t = [];
+ $t['image/jpeg'] = 'jpg';
+ if(imagetypes() & IMG_PNG)
+ $t['image/png'] = 'png';
+ if(imagetypes() & IMG_GIF)
+ $t['image/gif'] = 'gif';
+
+ return $t;
+ }
+
+ protected function load($data, $type) {
+ $this->valid = false;
+ if(! $data)
+ return;
+
+ $this->image = @imagecreatefromstring($data);
+ if($this->image !== false) {
+ $this->valid = true;
+ $this->setDimensions();
+ imagealphablending($this->image, false);
+ imagesavealpha($this->image, true);
+ }
+ }
+
+ protected function setDimensions() {
+ $this->width = imagesx($this->image);
+ $this->height = imagesy($this->image);
+ }
+
+ /**
+ * @brief GD driver does not preserve EXIF, so not need to clear it.
+ *
+ * @return void
+ */
+ public function clearexif() {
+ return;
+ }
+
+ protected function destroy() {
+ if($this->is_valid()) {
+ imagedestroy($this->image);
+ }
+ }
+
+ /**
+ * @brief Return a PHP image resource of the current image.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::getImage()
+ *
+ * @return boolean|resource
+ */
+ public function getImage() {
+ if(! $this->is_valid())
+ return false;
+
+ return $this->image;
+ }
+
+ public function doScaleImage($dest_width, $dest_height) {
+
+ $dest = imagecreatetruecolor($dest_width, $dest_height);
+ $width = imagesx($this->image);
+ $height = imagesy($this->image);
+
+ imagealphablending($dest, false);
+ imagesavealpha($dest, true);
+ if($this->type == 'image/png')
+ imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
+
+ imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
+ if($this->image)
+ imagedestroy($this->image);
+
+ $this->image = $dest;
+ $this->setDimensions();
+ }
+
+ public function rotate($degrees) {
+ if(! $this->is_valid())
+ return false;
+
+ $this->image = imagerotate($this->image, $degrees, 0);
+ $this->setDimensions();
+ }
+
+ public function flip($horiz = true, $vert = false) {
+ if(! $this->is_valid())
+ return false;
+
+ $w = imagesx($this->image);
+ $h = imagesy($this->image);
+ $flipped = imagecreate($w, $h);
+ if($horiz) {
+ for($x = 0; $x < $w; $x++) {
+ imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h);
+ }
+ }
+ if($vert) {
+ for($y = 0; $y < $h; $y++) {
+ imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1);
+ }
+ }
+ $this->image = $flipped;
+ $this->setDimensions(); // Shouldn't really be necessary
+ }
+
+ public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
+
+ $dest = imagecreatetruecolor($maxx, $maxy);
+ imagealphablending($dest, false);
+ imagesavealpha($dest, true);
+ if($this->type == 'image/png')
+ imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
+
+ imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $maxx, $maxy, $w, $h);
+ if($this->image)
+ imagedestroy($this->image);
+
+ $this->image = $dest;
+ $this->setDimensions();
+ }
+
+ /**
+ * {@inheritDoc}
+ * @see \Zotlabs\Photo\PhotoDriver::imageString()
+ */
+ public function imageString() {
+ if(! $this->is_valid())
+ return false;
+
+ $quality = false;
+
+ ob_start();
+
+ switch($this->getType()){
+ case 'image/png':
+ $quality = get_config('system', 'png_quality');
+ if((! $quality) || ($quality > 9))
+ $quality = PNG_QUALITY;
+
+ \imagepng($this->image, NULL, $quality);
+ break;
+ case 'image/jpeg':
+ // gd can lack imagejpeg(), but we verify during installation it is available
+ default:
+ $quality = get_config('system', 'jpeg_quality');
+ if((! $quality) || ($quality > 100))
+ $quality = JPEG_QUALITY;
+
+ \imagejpeg($this->image, NULL, $quality);
+ break;
+ }
+ $string = ob_get_contents();
+ ob_end_clean();
+
+ return $string;
+ }
+
+}
diff --git a/include/photo/photo_imagick.php b/Zotlabs/Photo/PhotoImagick.php
index cb3ad27fb..a7026e8ca 100644
--- a/include/photo/photo_imagick.php
+++ b/Zotlabs/Photo/PhotoImagick.php
@@ -1,45 +1,44 @@
-<?php /** @file */
+<?php
+namespace Zotlabs\Photo;
-require_once('include/photo/photo_driver.php');
+/**
+ * @brief ImageMagick photo driver.
+ */
+class PhotoImagick extends PhotoDriver {
-
-class photo_imagick extends photo_driver {
-
-
- function supportedTypes() {
- return array(
+ public function supportedTypes() {
+ return [
'image/jpeg' => 'jpg',
'image/png' => 'png',
- 'image/gif' => 'gif'
- );
+ 'image/gif' => 'gif',
+ ];
}
- public function get_FormatsMap() {
- return array(
+ private function get_FormatsMap() {
+ return [
'image/jpeg' => 'JPG',
'image/png' => 'PNG',
- 'image/gif' => 'GIF'
- );
+ 'image/gif' => 'GIF',
+ ];
}
- function load($data, $type) {
+ protected function load($data, $type) {
$this->valid = false;
- $this->image = new Imagick();
+ $this->image = new \Imagick();
if(! $data)
return;
try {
$this->image->readImageBlob($data);
- }
- catch (Exception $e) {
- logger('imagick readImageBlob() exception:' . print_r($e,true));
+ } catch(\Exception $e) {
+ logger('Imagick readImageBlob() exception:' . print_r($e, true));
return;
}
- /**
+ /*
* Setup the image to the format it will be saved to
*/
@@ -52,19 +51,18 @@ class photo_imagick extends photo_driver {
// Always coalesce, if it is not a multi-frame image it won't hurt anyway
$this->image = $this->image->coalesceImages();
-
$this->valid = true;
$this->setDimensions();
- /**
+ /*
* setup the compression here, so we'll do it only once
*/
switch($this->getType()) {
- case "image/png":
- $quality = get_config('system','png_quality');
+ case 'image/png':
+ $quality = get_config('system', 'png_quality');
if((! $quality) || ($quality > 9))
$quality = PNG_QUALITY;
- /**
+ /*
* From http://www.imagemagick.org/script/command-line-options.php#quality:
*
* 'For the MNG and PNG image formats, the quality value sets
@@ -75,56 +73,64 @@ class photo_imagick extends photo_driver {
$quality = $quality * 10;
$this->image->setCompressionQuality($quality);
break;
- case "image/jpeg":
- $quality = get_config('system','jpeg_quality');
+ case 'image/jpeg':
+ $quality = get_config('system', 'jpeg_quality');
if((! $quality) || ($quality > 100))
$quality = JPEG_QUALITY;
$this->image->setCompressionQuality($quality);
default:
break;
-
}
}
}
- public function destroy() {
+ protected function destroy() {
if($this->is_valid()) {
$this->image->clear();
$this->image->destroy();
}
}
-
- public function setDimensions() {
+ protected function setDimensions() {
$this->width = $this->image->getImageWidth();
$this->height = $this->image->getImageHeight();
}
-
+ /**
+ * @brief Strips the image of all profiles and comments.
+ *
+ * Keep ICC profile for better colors.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::clearexif()
+ */
public function clearexif() {
-
- $profiles = $this->image->getImageProfiles("icc", true);
+ $profiles = $this->image->getImageProfiles('icc', true);
$this->image->stripImage();
- if(!empty($profiles)) {
- $this->image->profileImage("icc", $profiles['icc']);
+ if(! empty($profiles)) {
+ $this->image->profileImage('icc', $profiles['icc']);
}
}
-
+ /**
+ * @brief Return a \Imagick object of the current image.
+ *
+ * @see \Zotlabs\Photo\PhotoDriver::getImage()
+ *
+ * @return boolean|\Imagick
+ */
public function getImage() {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image = $this->image->deconstructImages();
return $this->image;
}
- public function doScaleImage($dest_width,$dest_height) {
-
- /**
+ public function doScaleImage($dest_width, $dest_height) {
+ /*
* If it is not animated, there will be only one iteration here,
* so don't bother checking
*/
@@ -132,82 +138,63 @@ class photo_imagick extends photo_driver {
$this->image->setFirstIterator();
do {
$this->image->scaleImage($dest_width, $dest_height);
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
$this->setDimensions();
}
public function rotate($degrees) {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
// ImageMagick rotates in the opposite direction of imagerotate()
- $this->image->rotateImage(new ImagickPixel(), -$degrees);
- } while ($this->image->nextImage());
+ $this->image->rotateImage(new \ImagickPixel(), -$degrees);
+ } while($this->image->nextImage());
$this->setDimensions();
}
public function flip($horiz = true, $vert = false) {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
if($horiz) $this->image->flipImage();
if($vert) $this->image->flopImage();
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
$this->setDimensions(); // Shouldn't really be necessary
}
- public function cropImage($max,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $this->image->setFirstIterator();
- do {
- $this->image->cropImage($w, $h, $x, $y);
- /**
- * We need to remove the canvas,
- * or the image is not resized to the crop:
- * http://php.net/manual/en/imagick.cropimage.php#97232
- */
- $this->image->setImagePage(0, 0, 0, 0);
- } while ($this->image->nextImage());
-
- $this->doScaleImage($max,$max);
- }
-
- public function cropImageRect($maxx,$maxy,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
+ public function cropImageRect($maxx, $maxy, $x, $y, $w, $h) {
+ if(! $this->is_valid())
+ return false;
$this->image->setFirstIterator();
do {
$this->image->cropImage($w, $h, $x, $y);
- /**
+ /*
* We need to remove the canvas,
* or the image is not resized to the crop:
* http://php.net/manual/en/imagick.cropimage.php#97232
*/
$this->image->setImagePage(0, 0, 0, 0);
- } while ($this->image->nextImage());
+ } while($this->image->nextImage());
- $this->doScaleImage($maxx,$maxy);
+ $this->doScaleImage($maxx, $maxy);
}
public function imageString() {
- if(!$this->is_valid())
- return FALSE;
+ if(! $this->is_valid())
+ return false;
/* Clean it */
$this->image = $this->image->deconstructImages();
+
return $this->image->getImagesBlob();
}
-
-
}
diff --git a/Zotlabs/Web/Session.php b/Zotlabs/Web/Session.php
index 4f2a3f1f7..fe0a3fbf9 100644
--- a/Zotlabs/Web/Session.php
+++ b/Zotlabs/Web/Session.php
@@ -15,7 +15,7 @@ class Session {
private $handler = null;
private $session_started = false;
-
+ private $custom_handler = false;
public function init() {
$gc_probability = 50;
@@ -23,25 +23,46 @@ class Session {
ini_set('session.gc_probability', $gc_probability);
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_httponly', 1);
-
+
+ $this->custom_handler = boolval(get_config('system', 'session_custom', false));
+
/*
* Set our session storage functions.
*/
+
+ if($this->custom_handler) {
+ /* Custom handler (files, memached, redis..) */
+
+ $session_save_handler = strval(get_config('system', 'session_save_handler', Null));
+ $session_save_path = strval(get_config('system', 'session_save_path', Null));
+ $session_gc_probability = intval(get_config('system', 'session_gc_probability', 1));
+ $session_gc_divisor = intval(get_config('system', 'session_gc_divisor', 100));
+ if(!$session_save_handler || !$session_save_path) {
+ logger('Session save handler or path not set.',LOGGER_NORMAL,LOG_ERR);
+ }
+ else {
+ ini_set('session.save_handler', $session_save_handler);
+ ini_set('session.save_path', $session_save_path);
+ ini_set('session.gc_probability', $session_gc_probability);
+ ini_set('session.gc_divisor', $session_gc_divisor);
+ }
+ }
+ else {
+ $handler = new \Zotlabs\Web\SessionHandler();
- $handler = new \Zotlabs\Web\SessionHandler();
-
- $this->handler = $handler;
+ $this->handler = $handler;
- $x = session_set_save_handler($handler,false);
- if(! $x)
- logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
+ $x = session_set_save_handler($handler,false);
+ if(! $x)
+ logger('Session save handler initialisation failed.',LOGGER_NORMAL,LOG_ERR);
+ }
// Force cookies to be secure (https only) if this site is SSL enabled.
// Must be done before session_start().
$arr = session_get_cookie_params();
-
+
// Note when setting cookies: set the domain to false which creates a single domain
// cookie. If you use a hostname it will create a .domain.com wildcard which will
// have some nasty side effects if you have any other subdomains running hubzilla.
@@ -86,14 +107,15 @@ class Session {
$arr = session_get_cookie_params();
- if($this->handler && $this->session_started) {
+ if(($this->handler || $this->custom_handler) && $this->session_started) {
session_regenerate_id(true);
// force SessionHandler record creation with the new session_id
// which occurs as a side effect of read()
-
- $this->handler->read(session_id());
+ if (! $this->custom_handler) {
+ $this->handler->read(session_id());
+ }
}
else
logger('no session handler');
diff --git a/Zotlabs/Widget/Affinity.php b/Zotlabs/Widget/Affinity.php
index 28190e187..572af0503 100644
--- a/Zotlabs/Widget/Affinity.php
+++ b/Zotlabs/Widget/Affinity.php
@@ -2,60 +2,65 @@
namespace Zotlabs\Widget;
+use Zotlabs\Lib\Apps;
+
class Affinity {
function widget($arr) {
if(! local_channel())
- return '';
-
- $default_cmin = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
- $default_cmax = ((feature_enabled(local_channel(),'affinity')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
+ return;
+
+ if(! Apps::system_app_installed(local_channel(),'Affinity Tool'))
+ return;
+
+ $default_cmin = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmin',0) : 0);
+ $default_cmax = ((Apps::system_app_installed(local_channel(),'Affinity Tool')) ? get_pconfig(local_channel(),'affinity','cmax',99) : 99);
$cmin = ((x($_REQUEST,'cmin')) ? intval($_REQUEST['cmin']) : $default_cmin);
$cmax = ((x($_REQUEST,'cmax')) ? intval($_REQUEST['cmax']) : $default_cmax);
- if(feature_enabled(local_channel(),'affinity')) {
-
- $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
- if ($affinity_locked) {
- set_pconfig(local_channel(),'affinity','cmin',$cmin);
- set_pconfig(local_channel(),'affinity','cmax',$cmax);
- }
-
- $labels = array(
- t('Me'),
- t('Family'),
- t('Friends'),
- t('Acquaintances'),
- t('All')
- );
- call_hooks('affinity_labels',$labels);
- $label_str = '';
-
- if($labels) {
- foreach($labels as $l) {
- if($label_str) {
- $label_str .= ", '|'";
- $label_str .= ", '" . $l . "'";
- }
- else
- $label_str .= "'" . $l . "'";
+ $affinity_locked = intval(get_pconfig(local_channel(),'affinity','lock',1));
+ if ($affinity_locked) {
+ set_pconfig(local_channel(),'affinity','cmin',$cmin);
+ set_pconfig(local_channel(),'affinity','cmax',$cmax);
+ }
+
+ $labels = array(
+ t('Me'),
+ t('Family'),
+ t('Friends'),
+ t('Acquaintances'),
+ t('All')
+ );
+ call_hooks('affinity_labels',$labels);
+
+ $label_str = '';
+
+ if($labels) {
+ foreach($labels as $l) {
+ if($label_str) {
+ $label_str .= ", '|'";
+ $label_str .= ", '" . $l . "'";
}
+ else
+ $label_str .= "'" . $l . "'";
}
-
- $tpl = get_markup_template('main_slider.tpl');
- $x = replace_macros($tpl,array(
- '$val' => $cmin . ',' . $cmax,
- '$refresh' => t('Refresh'),
- '$labels' => $label_str,
- ));
-
- $arr = array('html' => $x);
- call_hooks('main_slider',$arr);
- return $arr['html'];
}
- return '';
+
+ $tpl = get_markup_template('main_slider.tpl');
+ $x = replace_macros($tpl,array(
+ '$val' => $cmin . ',' . $cmax,
+ '$refresh' => t('Refresh'),
+ '$labels' => $label_str,
+ ));
+
+ $arr = array('html' => $x);
+ call_hooks('main_slider',$arr);
+
+ return $arr['html'];
+
+
}
}
diff --git a/Zotlabs/Widget/Settings_menu.php b/Zotlabs/Widget/Settings_menu.php
index c537c3835..25b80a4b4 100644
--- a/Zotlabs/Widget/Settings_menu.php
+++ b/Zotlabs/Widget/Settings_menu.php
@@ -42,19 +42,12 @@ class Settings_menu {
);
-
$tabs[] = array(
'label' => t('Display settings'),
'url' => z_root().'/settings/display',
'selected' => ((argv(1) === 'display') ? 'active' : ''),
);
- $tabs[] = array(
- 'label' => t('Addon settings'),
- 'url' => z_root().'/settings/featured',
- 'selected' => ((argv(1) === 'featured') ? 'active' : ''),
- );
-
if($hublocs) {
$tabs[] = array(
'label' => t('Manage locations'),
diff --git a/Zotlabs/Zot6/Zot6Handler.php b/Zotlabs/Zot6/Zot6Handler.php
index e320e7825..8f8957037 100644
--- a/Zotlabs/Zot6/Zot6Handler.php
+++ b/Zotlabs/Zot6/Zot6Handler.php
@@ -29,7 +29,7 @@ class Zot6Handler implements IHandler {
// Implementation of specific methods follows;
- // These generally do a small amout of validation and call Libzot
+ // These generally do a small amout of validation and call Libzot
// to do any heavy lifting
static function reply_notify($data,$hub) {
@@ -40,7 +40,7 @@ class Zot6Handler implements IHandler {
$x = Libzot::fetch($data);
$ret['delivery_report'] = $x;
-
+
$ret['success'] = true;
return $ret;
@@ -58,11 +58,11 @@ class Zot6Handler implements IHandler {
*
* @param array $sender
* @param array $recipients
+ * @param array $hub
*
- * @return json_return_and_die()
+ * @return array
*/
-
- static function reply_refresh($sender, $recipients,$hub) {
+ static function reply_refresh($sender, $recipients, $hub) {
$ret = array('success' => false);
if($recipients) {
@@ -70,19 +70,18 @@ class Zot6Handler implements IHandler {
// This would be a permissions update, typically for one connection
foreach ($recipients as $recip) {
-
$r = q("select channel.*,xchan.* from channel
left join xchan on channel_portable_id = xchan_hash
where xchan_hash ='%s' limit 1",
dbesc($recip)
);
-
+ /// @FIXME $msgtype is undefined
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], $r[0], (($msgtype === 'force_refresh') ? true : false));
}
}
else {
// system wide refresh
-
+ /// @FIXME $msgtype is undefined
$x = Libzot::refresh( [ 'hubloc_id_url' => $hub['hubloc_id_url'] ], null, (($msgtype === 'force_refresh') ? true : false));
}
@@ -100,17 +99,16 @@ class Zot6Handler implements IHandler {
* for that packet. We will create a message_list array of the entire conversation starting with
* the missing parent and invoke delivery to the sender of the packet.
*
- * Zotlabs/Daemon/Deliver.php (for local delivery) and
+ * Zotlabs/Daemon/Deliver.php (for local delivery) and
* mod/post.php???? @fixme (for web delivery) detect the existence of
* this 'message_list' at the destination and split it into individual messages which are
* processed/delivered in order.
*
- *
* @param array $data
+ * @param array $hub
* @return array
*/
-
- static function reply_message_request($data,$hub) {
+ static function reply_message_request($data, $hub) {
$ret = [ 'success' => false ];
$message_id = EMPTY_STR;
@@ -153,11 +151,10 @@ class Zot6Handler implements IHandler {
/*
* fetch the requested conversation
*/
-
+ /// @FIXME $sender_hash is undefined
$messages = zot_feed($c[0]['channel_id'],$sender_hash, [ 'message_id' => $data['message_id'], 'encoding' => 'activitystreams' ]);
return (($messages) ? : [] );
-
}
static function rekey_request($sender,$data,$hub) {
@@ -183,7 +180,7 @@ class Zot6Handler implements IHandler {
dbesc($oldhash)
);
}
- else
+ else
return $ret;
@@ -219,10 +216,10 @@ class Zot6Handler implements IHandler {
*
* @param array $sender
* @param array $recipients
+ * @param array $hub
*
- * return json_return_and_die()
+ * @return array
*/
-
static function reply_purge($sender, $recipients, $hub) {
$ret = array('success' => false);
@@ -259,9 +256,4 @@ class Zot6Handler implements IHandler {
return $ret;
}
-
-
-
-
-
}
diff --git a/app/affinity.apd b/app/affinity.apd
new file mode 100644
index 000000000..3860581aa
--- /dev/null
+++ b/app/affinity.apd
@@ -0,0 +1,7 @@
+version: 1
+url: $baseurl/affinity
+requires: local_channel
+name: Affinity Tool
+photo: icon:arrows-h
+categories: Networking
+desc: This app presents a slider control in your connection editor and also on your network page. The slider represents your degree of friendship (affinity) with each connection. It allows you to zoom in or out and display conversations from only your closest friends or everybody in your stream.
diff --git a/boot.php b/boot.php
index 321f1a93b..5be2b29f3 100755
--- a/boot.php
+++ b/boot.php
@@ -50,7 +50,7 @@ require_once('include/attach.php');
require_once('include/bbcode.php');
define ( 'PLATFORM_NAME', 'hubzilla' );
-define ( 'STD_VERSION', '3.9.5' );
+define ( 'STD_VERSION', '3.9.6' );
define ( 'ZOT_REVISION', '6.0a' );
define ( 'DB_UPDATE_VERSION', 1230 );
@@ -83,7 +83,6 @@ define ( 'DIRECTORY_REALM', 'RED_GLOBAL');
define ( 'DIRECTORY_FALLBACK_MASTER', 'https://zotadel.net');
$DIRECTORY_FALLBACK_SERVERS = array(
- 'https://hubzilla.zottel.net',
'https://zotadel.net',
'https://zotsite.net'
);
@@ -468,7 +467,7 @@ define ( 'NAMESPACE_YMEDIA', 'http://search.yahoo.com/mrss/' );
define ( 'ACTIVITYSTREAMS_JSONLD_REV', 'https://www.w3.org/ns/activitystreams' );
-define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.2' );
+define ( 'ZOT_APSCHEMA_REV', '/apschema/v1.3' );
/**
* activity stream defines
*/
@@ -513,6 +512,7 @@ define ( 'ACTIVITY_MOOD', NAMESPACE_ZOT . '/activity/mood' );
define ( 'ACTIVITY_OBJ_COMMENT', NAMESPACE_ACTIVITY_SCHEMA . 'comment' );
define ( 'ACTIVITY_OBJ_ACTIVITY',NAMESPACE_ACTIVITY_SCHEMA . 'activity' );
define ( 'ACTIVITY_OBJ_NOTE', NAMESPACE_ACTIVITY_SCHEMA . 'note' );
+define ( 'ACTIVITY_OBJ_ARTICLE', NAMESPACE_ACTIVITY_SCHEMA . 'article' );
define ( 'ACTIVITY_OBJ_PERSON', NAMESPACE_ACTIVITY_SCHEMA . 'person' );
define ( 'ACTIVITY_OBJ_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'photo' );
define ( 'ACTIVITY_OBJ_P_PHOTO', NAMESPACE_ACTIVITY_SCHEMA . 'profile-photo' );
@@ -733,11 +733,11 @@ class App {
private static $perms = null; // observer permissions
private static $widgets = array(); // widgets for this page
public static $config = array(); // config cache
- public static $override_intltext_templates = array();
- public static $override_markup_templates = array();
- public static $override_templateroot = null;
- public static $override_helproot = null;
- public static $override_helpfiles = array();
+ public static $override_intltext_templates = array();
+ public static $override_markup_templates = array();
+ public static $override_templateroot = null;
+ public static $override_helproot = null;
+ public static $override_helpfiles = array();
public static $session = null;
public static $groups;
@@ -888,7 +888,7 @@ class App {
// removing trailing / - maybe a nginx problem
if (substr(self::$query_string, 0, 1) == "/")
self::$query_string = substr(self::$query_string, 1);
- // change the first & to ?
+ // change the first & to ?
self::$query_string = preg_replace('/&/','?',self::$query_string,1);
}
@@ -1579,7 +1579,7 @@ function login($register = false, $form_id = 'main-login', $hiddens = false, $lo
// Here's the current description of how the register link works (2018-05-15)
- // Register links are enabled on the site home page and login page and navbar.
+ // Register links are enabled on the site home page and login page and navbar.
// They are not shown by default on other pages which may require login.
// If the register link is enabled and registration is closed, the request is directed
@@ -1591,10 +1591,10 @@ function login($register = false, $form_id = 'main-login', $hiddens = false, $lo
// system.register_link may or may not be the same destination as system.sellpage
- // system.sellpage is the destination linked from the /pubsites page on other sites. If
+ // system.sellpage is the destination linked from the /pubsites page on other sites. If
// system.sellpage is not set, the 'register' link in /pubsites will go to 'register' on your
- // site.
-
+ // site.
+
// If system.register_link is set to the word 'none', no registration link will be shown on
// your site.
@@ -1833,8 +1833,6 @@ function proc_run(){
$args = func_get_args();
- $newargs = array();
-
if(! count($args))
return;
@@ -2282,7 +2280,7 @@ function construct_page() {
$cspheader = "Content-Security-Policy:";
foreach ($cspsettings as $cspdirective => $csp) {
if (!in_array($cspdirective,$validcspdirectives)) {
- logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
+ logger("INVALID CSP DIRECTIVE: ".$cspdirective,LOGGER_DEBUG);
continue;
}
$cspsettingsarray=array_unique($cspsettings[$cspdirective]);
@@ -2401,7 +2399,7 @@ function z_get_temp_dir() {
if(! $temp_dir)
$temp_dir = sys_get_temp_dir();
- return $upload_dir;
+ return $temp_dir;
}
diff --git a/doc/hook/jot_header_tpl_filter.bb b/doc/hook/jot_header_tpl_filter.bb
new file mode 100644
index 000000000..b17d81d03
--- /dev/null
+++ b/doc/hook/jot_header_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_header_tpl_filter[/h2]
+
+Allows addon developers to modify the values of replacements fed into jot-header.tpl
+
+cxref: include/conversation.php
diff --git a/doc/hook/jot_tpl_filter.bb b/doc/hook/jot_tpl_filter.bb
new file mode 100644
index 000000000..426da3c56
--- /dev/null
+++ b/doc/hook/jot_tpl_filter.bb
@@ -0,0 +1,5 @@
+[h2]jot_tpl_filter[/h2]
+
+Allows addon developers to alter the macro replacements prior to being fed into jot.tpl
+
+cxref: include/conversation.php
diff --git a/doc/hooklist.bb b/doc/hooklist.bb
index 6d56d5e71..5a804c819 100644
--- a/doc/hooklist.bb
+++ b/doc/hooklist.bb
@@ -370,6 +370,12 @@ Hooks allow plugins/addons to "hook into" the code at many points and alter the
[zrl=[baseurl]/help/hook/jot_tool]jot_tool[/zrl]
Deprecated and possibly obsolete. Allows one to add action buttons to the post editor.
+[zrl=[baseurl]/help/hook/jot_tpl_filter]jot_tpl_filter[/zrl]
+ Called to filter template vars before replacement in jot.tpl.
+
+[zrl=[baseurl]/help/hook/jot_header_tpl_filter]jot_header_tpl_filter[/zrl]
+ Called to filter template vars before replacement in jot_header.tpl.
+
[zrl=[baseurl]/help/hook/legal_webbie]legal_webbie[/zrl]
Called to validate a channel address
diff --git a/include/attach.php b/include/attach.php
index dd718aa14..17a47d9ac 100644
--- a/include/attach.php
+++ b/include/attach.php
@@ -137,7 +137,7 @@ function z_mime_content_type($filename) {
* @param string $hash (optional)
* @param string $filename (optional)
* @param string $filetype (optional)
- * @return associative array with:
+ * @return array Associative array with:
* * \e boolean \b success
* * \e int|boolean \b results amount of found results, or false
* * \e string \b message with error messages if any
@@ -176,15 +176,17 @@ function attach_count_files($channel_id, $observer, $hash = '', $filename = '',
/**
* @brief Returns a list of files/attachments.
*
- * @param $channel_id
- * @param $observer
- * @param $hash (optional)
- * @param $filename (optional)
- * @param $filetype (optional)
- * @param $orderby
- * @param $start
- * @param $entries
- * @return associative array with:
+ * @param int $channel_id
+ * @param string $observer
+ * @param string $hash (optional)
+ * @param string $filename (optional)
+ * @param string $filetype (optional)
+ * @param string $orderby (optional)
+ * @param int $start (optional)
+ * @param int $entries (optional)
+ * @param string $since (optional)
+ * @param string $until (optional)
+ * @return array an associative array with:
* * \e boolean \b success
* * \e array|boolean \b results array with results, or false
* * \e string \b message with error messages if any
@@ -1428,8 +1430,17 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
if(! $r) {
attach_drop_photo($channel_id,$resource);
- $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo'=>$is_photo];
- call_hooks("attach_delete",$arr);
+ $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo' => $is_photo];
+
+ /**
+ * @hooks attach_delete
+ * Called when deleting an attachment from channel.
+ * * \e int \b channel_id - the channel_id
+ * * \e string \b resource
+ * * \e int \b is_photo
+ */
+ call_hooks('attach_delete', $arr);
+
return;
}
@@ -1488,8 +1499,15 @@ function attach_delete($channel_id, $resource, $is_photo = 0) {
intval($channel_id)
);
- $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo'=>$is_photo];
- call_hooks("attach_delete",$arr);
+ $arr = ['channel_id' => $channel_id, 'resource' => $resource, 'is_photo' => $is_photo];
+ /**
+ * @hooks attach_delete
+ * Called when deleting an attachment from channel.
+ * * \e int \b channel_id - the channel_id
+ * * \e string \b resource
+ * * \e int \b is_photo
+ */
+ call_hooks('attach_delete', $arr);
file_activity($channel_id, $object, $object['allow_cid'], $object['allow_gid'], $object['deny_cid'], $object['deny_gid'], 'update', true);
@@ -1868,7 +1886,7 @@ function file_activity($channel_id, $object, $allow_cid, $allow_gid, $deny_cid,
* @param int $channel_id
* @param string $hash
* @param string $url
- * @return array An associative array for the specified file.
+ * @return array Associative array for the specified file.
*/
function get_file_activity_object($channel_id, $hash, $url) {
@@ -2110,7 +2128,7 @@ function attach_export_data($channel, $resource_id, $deleted = false) {
if($attach_ptr['is_photo']) {
- // This query could potentially result in a few megabytes of data use.
+ // This query could potentially result in a few megabytes of data use.
$r = q("select * from photo where resource_id = '%s' and uid = %d order by imgscale asc",
dbesc($resource_id),
@@ -2352,7 +2370,7 @@ function attach_move($channel_id, $resource_id, $new_folder_hash) {
$filename = $r[0]['filename'];
- // don't do duplicate check unless our parent folder has changed.
+ // don't do duplicate check unless our parent folder has changed.
if($r[0]['folder'] !== $new_folder_hash) {
@@ -2468,7 +2486,7 @@ function attach_move($channel_id, $resource_id, $new_folder_hash) {
/**
- * Used to generate a select input box of all your folders
+ * Used to generate a select input box of all your folders
*/
@@ -2551,10 +2569,10 @@ function attach_syspaths($channel_id,$attach_hash) {
/**
* in earlier releases we did not fill in os_path and display_path in the attach DB structure.
- * (It was not needed or used). Going forward we intend to make use of these fields.
+ * (It was not needed or used). Going forward we intend to make use of these fields.
* A cron task checks for empty values (as older attachments may have arrived at our site
- * in a clone operation) and executes attach_syspaths() to generate these field values and correct
- * the attach table entry. The operation is limited to 100 DB entries at a time so as not to
+ * in a clone operation) and executes attach_syspaths() to generate these field values and correct
+ * the attach table entry. The operation is limited to 100 DB entries at a time so as not to
* overload the system in any cron run. Eventually it will catch up with old attach structures
* and switch into maintenance mode to correct any that might arrive in clone packets from older
* sites.
diff --git a/include/contact_widgets.php b/include/contact_widgets.php
index a105bca19..6ad276b00 100644
--- a/include/contact_widgets.php
+++ b/include/contact_widgets.php
@@ -7,14 +7,14 @@ function findpeople_widget() {
if(get_config('system','invitation_only')) {
$x = get_pconfig(local_channel(),'system','invites_remaining');
if($x || is_site_admin()) {
- App::$page['aside'] .= '<div class="side-link" id="side-invite-remain">'
- . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
- . '</div>' . $inv;
+ App::$page['aside'] .= '<div class="side-link" id="side-invite-remain">'
+ . sprintf( tt('%d invitation available','%d invitations available',$x), $x)
+ . '</div>';
}
}
$advanced_search = ((local_channel() && feature_enabled(local_channel(),'advanced_dirsearch')) ? t('Advanced') : false);
-
+
return replace_macros(get_markup_template('peoplefind.tpl'),array(
'$findpeople' => t('Find Channels'),
'$desc' => t('Enter name or interest'),
@@ -22,7 +22,7 @@ function findpeople_widget() {
'$hint' => t('Examples: Robert Morgenstein, Fishing'),
'$findthem' => t('Find'),
'$suggest' => t('Channel Suggestions'),
- '$similar' => '', // FIXME and uncomment when mod/match working // t('Similar Interests'),
+ '$similar' => '', /// @FIXME fixme and uncomment when mod/match working // t('Similar Interests'),
'$random' => t('Random Profile'),
'$inv' => t('Invite Friends'),
'$advanced_search' => $advanced_search,
@@ -56,12 +56,11 @@ function fileas_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
function categories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -100,14 +99,13 @@ function categories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
return '';
}
function cardcategories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -128,7 +126,7 @@ function cardcategories_widget($baseurl,$selected = '') {
$item_normal
$sql_extra
order by term.term asc",
- intval(App::$profile['profile_uid']),
+ intval(App::$profile['profile_uid']),
intval(TERM_CATEGORY),
intval(TERM_OBJ_POST),
dbesc(App::$profile['channel_hash'])
@@ -144,15 +142,15 @@ function cardcategories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
+
return '';
}
function articlecategories_widget($baseurl,$selected = '') {
-
+
if(! feature_enabled(App::$profile['profile_uid'],'categories'))
return '';
@@ -173,7 +171,7 @@ function articlecategories_widget($baseurl,$selected = '') {
$item_normal
$sql_extra
order by term.term asc",
- intval(App::$profile['profile_uid']),
+ intval(App::$profile['profile_uid']),
intval(TERM_CATEGORY),
intval(TERM_OBJ_POST),
dbesc(App::$profile['channel_hash'])
@@ -189,17 +187,14 @@ function articlecategories_widget($baseurl,$selected = '') {
'$all' => t('Everything'),
'$terms' => $terms,
'$base' => $baseurl,
-
));
}
+
return '';
}
-
-
-
function common_friends_visitor_widget($profile_uid,$cnt = 25) {
if(local_channel() == $profile_uid)
@@ -218,17 +213,14 @@ function common_friends_visitor_widget($profile_uid,$cnt = 25) {
return;
$r = common_friends($profile_uid,$observer_hash,0,$cnt,true);
-
- return replace_macros(get_markup_template('remote_friends_common.tpl'), array(
+
+ return replace_macros(get_markup_template('remote_friends_common.tpl'), [
'$desc' => t('Common Connections'),
'$base' => z_root(),
'$uid' => $profile_uid,
- '$cid' => $observer,
'$linkmore' => (($t > $cnt) ? 'true' : ''),
'$more' => sprintf( t('View all %d common connections'), $t),
- '$items' => $r
- ));
+ '$items' => $r,
+ ]);
};
-
-
diff --git a/include/conversation.php b/include/conversation.php
index 041994b90..e2dd02ffc 100644
--- a/include/conversation.php
+++ b/include/conversation.php
@@ -1328,7 +1328,7 @@ function hz_status_editor($a, $x, $popup = false) {
$tpl = get_markup_template('jot-header.tpl');
- App::$page['htmlhead'] .= replace_macros($tpl, array(
+ $tplmacros = [
'$baseurl' => z_root(),
'$editselect' => (($plaintext) ? 'none' : '/(profile-jot-text|prvmail-text)/'),
'$pretext' => ((x($x,'pretext')) ? $x['pretext'] : ''),
@@ -1349,7 +1349,10 @@ function hz_status_editor($a, $x, $popup = false) {
'$nocomment_disabled' => t('Comments disabled'),
'$auto_save_draft' => $feature_auto_save_draft,
'$reset' => $reset
- ));
+ ];
+
+ call_hooks('jot_header_tpl_filter',$tplmacros);
+ App::$page['htmlhead'] .= replace_macros($tpl, $tplmacros);
$tpl = get_markup_template('jot.tpl');
@@ -1389,7 +1392,7 @@ function hz_status_editor($a, $x, $popup = false) {
$sharebutton = (x($x,'button') ? $x['button'] : t('Share'));
$placeholdtext = (x($x,'content_label') ? $x['content_label'] : $sharebutton);
- $o .= replace_macros($tpl, array(
+ $tplmacros = [
'$return_path' => ((x($x, 'return_path')) ? $x['return_path'] : App::$query_string),
'$action' => z_root() . '/item',
'$share' => $sharebutton,
@@ -1463,9 +1466,15 @@ function hz_status_editor($a, $x, $popup = false) {
'$bbcode' => ((x($x, 'bbcode')) ? $x['bbcode'] : false),
'$parent' => ((array_key_exists('parent',$x) && $x['parent']) ? $x['parent'] : 0),
'$reset' => $reset,
- '$is_owner' => ((local_channel() && (local_channel() == $x['profile_uid'])) ? true : false)
- ));
+ '$is_owner' => ((local_channel() && (local_channel() == $x['profile_uid'])) ? true : false),
+ '$custommoretoolsdropdown' => '',
+ '$custommoretoolsbuttons' => '',
+ '$customsubmitright' => []
+ ];
+
+ call_hooks('jot_tpl_filter',$tplmacros);
+ $o .= replace_macros($tpl, $tplmacros);
if ($popup === true) {
$o = '<div id="jot-popup" style="display:none">' . $o . '</div>';
}
diff --git a/include/event.php b/include/event.php
index a34250e7a..fdb9e1415 100644
--- a/include/event.php
+++ b/include/event.php
@@ -6,6 +6,10 @@
use Sabre\VObject;
+use Ramsey\Uuid\Uuid;
+use Ramsey\Uuid\Exception\UnsatisfiedDependencyException;
+
+
require_once('include/bbcode.php');
/**
@@ -463,8 +467,13 @@ function event_store_event($arr) {
$hash = $arr['external_id'];
elseif(array_key_exists('event_hash',$arr))
$hash = $arr['event_hash'];
- else
- $hash = random_string() . '@' . App::get_hostname();
+ else {
+ try {
+ $hash = Uuid::uuid4()->toString();
+ } catch (UnsatisfiedDependencyException $e) {
+ $hash = random_string(48);
+ }
+ }
$r = q("INSERT INTO event ( uid,aid,event_xchan,event_hash,created,edited,dtstart,dtend,summary,description,location,etype,
adjust,nofinish, event_status, event_status_date, event_percent, event_repeat, event_sequence, event_priority, event_vdata, allow_cid,allow_gid,deny_cid,deny_gid)
@@ -1126,8 +1135,8 @@ function event_store_item($arr, $event) {
}
if(! $arr['mid']) {
- $arr['uuid'] = item_message_id();
- $arr['mid'] = z_root() . '/item/' . $arr['uuid'];
+ $arr['uuid'] = $event['event_hash'];
+ $arr['mid'] = z_root() . '/event/' . $event['event_hash'];
}
$item_arr['aid'] = $z[0]['channel_account_id'];
diff --git a/include/features.php b/include/features.php
index 05ce3db32..35a4c0dd4 100644
--- a/include/features.php
+++ b/include/features.php
@@ -361,14 +361,6 @@ function get_features($filtered = true, $level = (-1)) {
],
[
- 'affinity',
- t('Affinity Tool'),
- t('Filter stream activity by depth of relationships'),
- false,
- get_config('feature_lock','affinity')
- ],
-
- [
'suggest',
t('Suggest Channels'),
t('Show friend and connection suggestions'),
diff --git a/include/feedutils.php b/include/feedutils.php
index afbe4229e..5e52828c3 100644
--- a/include/feedutils.php
+++ b/include/feedutils.php
@@ -261,13 +261,13 @@ function construct_activity_target($item) {
* @param SimplePie $item
* @return array $author
*/
-
function get_atom_author($feed, $item) {
$author = [];
$found_author = $item->get_author();
if($found_author) {
+ /// @FIXME $rawauthor is undefined here
if($rawauthor) {
if($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data'])
$author['full_name'] = unxmlify($rawauthor[0]['child'][NAMESPACE_POCO]['displayName'][0]['data']);
@@ -398,10 +398,10 @@ function get_atom_author($feed, $item) {
'author' => $author
];
/**
- * @hooks parse_atom
+ * @hooks parse_atom_author
* * \e SimplePie \b feed - The original SimplePie feed
* * \e SimplePie \b item
- * * \e array \b result - the result array that will also get returned
+ * * \e array \b author - the result array that will also get returned
*/
call_hooks('parse_atom_author', $arr);
@@ -416,10 +416,8 @@ function get_atom_author($feed, $item) {
*
* @param SimplePie $feed
* @param SimplePie $item
- * @param[out] array $author
* @return array Associative array with the parsed item data
*/
-
function get_atom_elements($feed, $item) {
require_once('include/html2bbcode.php');
@@ -669,10 +667,10 @@ function get_atom_elements($feed, $item) {
$termterm = notags(trim(unxmlify($term)));
// Mastodon auto generates an nsfw category tag for any 'content-warning' message.
- // Most people use CW and use both summary/content as a spoiler and we honour that
- // construct so the post will already be collapsed. The generated tag is almost
+ // Most people use CW and use both summary/content as a spoiler and we honour that
+ // construct so the post will already be collapsed. The generated tag is almost
// always wrong and even if it isn't we would already be doing the right thing.
-
+
if($mastodon && $termterm === 'nsfw' && $summary && $res['body'])
continue;
@@ -1336,7 +1334,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) {
continue;
}
- }
+ }
if(! post_is_importable($datarray, $contact))
continue;
@@ -1492,7 +1490,7 @@ function consume_feed($xml, $importer, &$contact, $pass = 0) {
if( ! \Zotlabs\Lib\MessageFilter::evaluate($datarray,get_config('system','pubstream_incl'),get_config('system','pubstream_excl'))) {
continue;
}
- }
+ }
if(! post_is_importable($datarray, $contact))
continue;
@@ -1900,7 +1898,7 @@ function atom_entry($item, $type, $author, $owner, $comment = false, $cid = 0, $
$body = $item['body'];
- if($summary)
+ if($summary)
$body = preg_replace('|^(.*?)\[summary\](.*?)\[/summary\](.*?)$|ism','$1$3',$item['body']);
if($compat)
diff --git a/include/help.php b/include/help.php
index 61dbc7bb3..e82fa96da 100644
--- a/include/help.php
+++ b/include/help.php
@@ -7,9 +7,10 @@ use \Michelf\MarkdownExtra;
* @brief
*
* @param string $path
- * @return string|unknown
+ * @param string $suffix (optional) default null
+ * @return string
*/
-function get_help_fullpath($path,$suffix=null) {
+function get_help_fullpath($path, $suffix = null) {
$docroot = (\App::$override_helproot) ? \App::$override_helproot : 'doc/';
$docroot = (substr($docroot,-1)!='/') ? $docroot .= '/' : $docroot;
@@ -49,8 +50,8 @@ function get_help_fullpath($path,$suffix=null) {
/**
* @brief
*
- * @param string $tocpath
- * @return string|unknown
+ * @param string $tocpath (optional) default false
+ * @return string
*/
function get_help_content($tocpath = false) {
@@ -171,16 +172,20 @@ function preg_callback_help_include($matches) {
}
/**
- * @brief
+ * @brief Determines help language.
+ *
+ * If the language was specified in the URL, override the language preference
+ * of the browser. Default to English if both of these are absent.
*
- * @return boolean|array
+ * @return array Associative array with:
+ * * \e string \b language - 2-letter ISO 639-1 code ("en")
+ * * \e boolean \b from_url - true if language from URL overrides browser default
*/
function determine_help_language() {
$lang_detect = new Text_LanguageDetect();
// Set this mode to recognize language by the short code like "en", "ru", etc.
$lang_detect->setNameMode(2);
- // If the language was specified in the URL, override the language preference
- // of the browser. Default to English if both of these are absent.
+
if($lang_detect->languageExists(argv(1))) {
$lang = argv(1);
$from_url = true;
@@ -211,10 +216,10 @@ function find_doc_file($s) {
}
/**
- * @brief
+ * @brief Search in doc files.
*
- * @param string $s
- * @return number|mixed|unknown|boolean
+ * @param string $s The search string to search for
+ * @return array
*/
function search_doc_files($s) {
@@ -275,7 +280,6 @@ function doc_rank_sort($s1, $s2) {
*
* @return string
*/
-
function load_context_help() {
$path = App::$cmd;
@@ -305,7 +309,7 @@ function load_context_help() {
* @brief
*
* @param string $s
- * @return void|boolean[]|number[]|string[]|unknown[]
+ * @return void|array
*/
function store_doc_file($s) {
diff --git a/include/import.php b/include/import.php
index 3bd8b4105..f391400bd 100644
--- a/include/import.php
+++ b/include/import.php
@@ -12,6 +12,7 @@ require_once('include/perm_upgrade.php');
* @param array $channel
* @param int $account_id
* @param int $seize
+ * @param string $newname (optional)
* @return boolean|array
*/
function import_channel($channel, $account_id, $seize, $newname = '') {
@@ -650,7 +651,7 @@ function import_items($channel, $items, $sync = false, $relocate = null) {
// preserve conversations you've been involved in from being expired
$stored = $item_result['item'];
- if((is_array($stored)) && ($stored['id'] != $stored['parent'])
+ if((is_array($stored)) && ($stored['id'] != $stored['parent'])
&& ($stored['author_xchan'] === $channel['channel_hash'])) {
retain_item($stored['item']['parent']);
}
@@ -672,7 +673,7 @@ function import_items($channel, $items, $sync = false, $relocate = null) {
/**
* @brief Sync items to channel.
*
- * @see import_items
+ * @see import_items()
*
* @param array $channel where to import to
* @param array $items
@@ -1049,7 +1050,7 @@ function import_mail($channel, $mails, $sync = false) {
/**
* @brief Synchronise mails.
*
- * @see import_mail
+ * @see import_mail()
* @param array $channel
* @param array $mails
*/
@@ -1337,7 +1338,7 @@ function sync_files($channel, $files) {
if($str)
$str .= ",";
-
+
$str .= " " . TQUOT . $k . TQUOT . " = '" . (($k === 'content') ? dbescbin($v) : dbesc($v)) . "' ";
}
$r = dbq("update photo set " . $str . " where id = " . intval($exists[0]['id']) );
diff --git a/include/items.php b/include/items.php
index e5f2be003..30e758add 100755
--- a/include/items.php
+++ b/include/items.php
@@ -7,6 +7,7 @@
use Zotlabs\Lib\Enotify;
use Zotlabs\Lib\MarkdownSoap;
use Zotlabs\Lib\MessageFilter;
+use Zotlabs\Lib\ThreadListener;
use Zotlabs\Lib\IConfig;
use Zotlabs\Access\PermissionLimits;
use Zotlabs\Access\AccessList;
@@ -25,7 +26,7 @@ require_once('include/permissions.php');
*
* @param array $item
* @param[out] boolean $private_envelope
- * @param boolean $include_groups
+ * @param boolean $include_groups
* @return array containing the recipients
*/
function collect_recipients($item, &$private_envelope,$include_groups = true) {
@@ -97,9 +98,9 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
if(array_key_exists('public_policy',$item) && $item['public_policy'] !== 'self') {
$hookinfo = [
- 'recipients' => [],
- 'item' => $item,
- 'private_envelope' => $private_envelope,
+ 'recipients' => [],
+ 'item' => $item,
+ 'private_envelope' => $private_envelope,
'include_groups' => $include_groups
];
@@ -141,6 +142,22 @@ function collect_recipients($item, &$private_envelope,$include_groups = true) {
// $recipients[] = $sys['xchan_hash'];
}
+
+ // Forward to thread listeners, *unless* there is even a remote hint that the item
+ // might have some privacy attached. This could be (for instance) an ActivityPub DM
+ // in the middle of a public thread. Unless we can guarantee beyond all doubt that
+ // this is public, don't allow it to go to thread listeners.
+
+ if(! intval($item['item_private'])) {
+ $r = ThreadListener::fetch_by_target($item['parent_mid']);
+ if($r) {
+ foreach($r as $rv) {
+ $recipients[] = $rv['portable_id'];
+ }
+ }
+ }
+
+
// Add the authors of any posts in this thread, if they are known to us.
// This is specifically designed to forward wall-to-wall posts to the original author,
// in case they aren't a connection but have permission to write on our wall.
@@ -410,7 +427,7 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
if(! $arr['mid']) {
- $arr['uuid'] = ((x($arr,'uuid')) ? $arr['uuid'] : item_message_id());
+ $arr['uuid'] = ((x($arr,'uuid')) ? $arr['uuid'] : item_message_id());
}
$arr['mid'] = ((x($arr,'mid')) ? $arr['mid'] : z_root() . '/item/' . $arr['uuid']);
$arr['parent_mid'] = ((x($arr,'parent_mid')) ? $arr['parent_mid'] : $arr['mid']);
@@ -469,6 +486,8 @@ function post_activity_item($arr, $allow_code = false, $deliver = true) {
*/
call_hooks('post_local_end', $ret['activity']);
}
+ else
+ return $ret;
if($post_id && $deliver) {
Master::Summon([ 'Notifier','activity',$post_id ]);
@@ -2048,6 +2067,11 @@ function item_store($arr, $allow_exec = false, $deliver = true) {
item_update_parent_commented($arr);
+
+ if(strpos($arr['body'],'[embed]') !== false) {
+ Master::Summon([ 'Cache_embeds', $current_post ]);
+ }
+
// If _creating_ a deleted item, don't propagate it further or send out notifications.
// We need to store the item details just in case the delete came in before the original post,
// so that we have an item in the DB that's marked deleted and won't store a fresh post
@@ -2384,6 +2408,13 @@ function item_store_update($arr, $allow_exec = false, $deliver = true) {
*/
call_hooks('item_stored_update',$arr);
+ if(strpos($arr['body'],'[embed]') !== false) {
+ Master::Summon([ 'Cache_embeds', $orig_post_id ]);
+ }
+
+
+
+
if($deliver) {
send_status_notifications($orig_post_id,$arr);
tag_deliver($uid,$orig_post_id);
@@ -2400,15 +2431,15 @@ function item_update_parent_commented($item) {
$update_parent = true;
- // update the commented timestamp on the parent
+ // update the commented timestamp on the parent
// - unless this is a moderated comment or a potential clone of an older item
- // which we don't wish to bring to the surface. As the queue only holds deliveries
- // for 3 days, it's suspected of being an older cloned item if the creation time
+ // which we don't wish to bring to the surface. As the queue only holds deliveries
+ // for 3 days, it's suspected of being an older cloned item if the creation time
//is older than that.
if(intval($item['item_blocked']) === ITEM_MODERATED)
$update_parent = false;
-
+
if($item['created'] < datetime_convert('','','now - 4 days'))
$update_parent = false;
@@ -3004,7 +3035,9 @@ function tgroup_check($uid, $item) {
* @param array $channel
* @param array $item
* @param int $item_id
- * @param boolean $parent
+ * @param array $parent
+ * @param boolean $edit (optional) default false
+ * @return void
*/
function start_delivery_chain($channel, $item, $item_id, $parent, $edit = false) {
@@ -3039,7 +3072,7 @@ function start_delivery_chain($channel, $item, $item_id, $parent, $edit = false)
}
// This will change the author to the post owner. Useful for RSS feeds which are to be syndicated
- // to federated platforms which can't verify the identity of the author.
+ // to federated platforms which can't verify the identity of the author.
// This MAY cause you to run afoul of copyright law.
$rewrite_author = intval(get_abconfig($channel['channel_id'],$item['owner_xchan'],'system','rself'));
@@ -3552,7 +3585,7 @@ function item_expire($uid,$days,$comment_days = 7) {
if(! $comment_days)
$comment_days = 7;
-
+
// $expire_network_only = save your own wall posts
// and just expire conversations started by others
// do not enable this until we can pass bulk delete messages through zot
@@ -3853,6 +3886,8 @@ function delete_item_lowlevel($item, $stage = DROPITEM_NORMAL, $force = false) {
intval(TERM_OBJ_POST)
);
+ ThreadListener::delete_by_target($item['mid']);
+
/** @FIXME remove notifications for this item */
return true;
@@ -4547,7 +4582,7 @@ function set_linkified_perms($linkified, &$str_contact_allow, &$str_group_allow,
$first_access_tag = true;
foreach($linkified as $x) {
- $access_tag = $x['access_tag'];
+ $access_tag = $x['success']['access_tag'];
if(($access_tag) && (! $parent_item)) {
logger('access_tag: ' . $tag . ' ' . print_r($access_tag,true), LOGGER_DATA);
if ($first_access_tag && (! get_pconfig($profile_uid,'system','no_private_mention_acl_override'))) {
@@ -4892,7 +4927,7 @@ function copy_of_pubitem($channel,$mid) {
dbesc($mid),
intval($syschan['channel_id'])
);
-
+
if($r) {
$items = fetch_post_tags($r,true);
foreach($items as $rv) {
@@ -4918,5 +4953,5 @@ function copy_of_pubitem($channel,$mid) {
}
}
- return $result;
+ return $result;
}
diff --git a/include/message.php b/include/message.php
index 936c01631..037c59c60 100644
--- a/include/message.php
+++ b/include/message.php
@@ -44,7 +44,7 @@ function send_message($uid = 0, $recipient = '', $body = '', $subject = '', $rep
$body = cleanup_bbcode($body);
- $results = linkify_tags($a, $body, $uid);
+ $results = linkify_tags($body, $uid);
if(! $raw) {
if(preg_match_all("/\[attachment\](.*?)\[\/attachment\]/",((strpos($body,'[/crypt]')) ? $_POST['media_str'] : $body),$match)) {
diff --git a/include/photo/photo_driver.php b/include/photo/photo_driver.php
index 5c8ed9bdc..c11580bdc 100644
--- a/include/photo/photo_driver.php
+++ b/include/photo/photo_driver.php
@@ -1,18 +1,34 @@
-<?php /** @file */
+<?php
+use Zotlabs\Photo\PhotoDriver;
+use Zotlabs\Photo\PhotoGd;
+use Zotlabs\Photo\PhotoImagick;
+
+/**
+ * @brief Return a PhotoDriver object.
+ *
+ * Use this factory when manipulating images.
+ *
+ * Return a photo driver object implementing ImageMagick or GD.
+ *
+ * @param string $data Image data
+ * @param string $type Mimetype
+ * @return null|PhotoDriver
+ * NULL if unsupported image type or failure, otherwise photo driver object
+ */
function photo_factory($data, $type = null) {
$ph = null;
+ $m = null;
-
- $unsupported_types = array(
+ $unsupported_types = [
'image/bmp',
'image/vnd.microsoft.icon',
'image/tiff',
- 'image/svg+xml'
- );
+ 'image/svg+xml',
+ ];
- if($type && in_array(strtolower($type),$unsupported_types)) {
- logger('photo_factory: unsupported image type');
+ if($type && in_array(strtolower($type), $unsupported_types)) {
+ logger('Unsupported image type ' . $type);
return null;
}
@@ -21,475 +37,47 @@ function photo_factory($data, $type = null) {
if(class_exists('Imagick') && !$ignore_imagick) {
$v = Imagick::getVersion();
preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
- if(version_compare($m[1],'6.6.7') >= 0) {
- require_once('include/photo/photo_imagick.php');
- $ph = new photo_imagick($data,$type);
- }
- else {
+ if(version_compare($m[1], '6.6.7') >= 0) {
+ $ph = new PhotoImagick($data, $type);
+ } else {
// earlier imagick versions have issues with scaling png's
// don't log this because it will just fill the logfile.
- // leave this note here so those who are looking for why
+ // leave this note here so those who are looking for why
// we aren't using imagick can find it
}
}
if(! $ph) {
- require_once('include/photo/photo_gd.php');
- $ph = new photo_gd($data,$type);
+ $ph = new PhotoGd($data, $type);
}
return $ph;
}
-
-
-abstract class photo_driver {
-
- protected $image;
- protected $width;
- protected $height;
- protected $valid;
- protected $type;
- protected $types;
-
- abstract function supportedTypes();
-
- abstract function load($data,$type);
-
- abstract function destroy();
-
- abstract function setDimensions();
-
- abstract function getImage();
-
- abstract function doScaleImage($new_width,$new_height);
-
- abstract function rotate($degrees);
-
- abstract function flip($horiz = true, $vert = false);
-
- abstract function cropImage($max,$x,$y,$w,$h);
-
- abstract function cropImageRect($maxx,$maxy,$x,$y,$w,$h);
-
- abstract function imageString();
-
- abstract function clearexif();
-
- public function __construct($data, $type='') {
- $this->types = $this->supportedTypes();
- if (! array_key_exists($type,$this->types)){
- $type='image/jpeg';
- }
- $this->type = $type;
- $this->valid = false;
- $this->load($data,$type);
- }
-
- public function __destruct() {
- if($this->is_valid())
- $this->destroy();
- }
-
- public function is_valid() {
- return $this->valid;
- }
-
- public function getWidth() {
- if(!$this->is_valid())
- return FALSE;
- return $this->width;
- }
-
- public function getHeight() {
- if(!$this->is_valid())
- return FALSE;
- return $this->height;
- }
-
-
- public function saveImage($path) {
- if(!$this->is_valid())
- return FALSE;
- return (file_put_contents($path, $this->imageString()) ? true : false);
- }
-
-
- public function getType() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->type;
- }
-
- public function getExt() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->types[$this->getType()];
- }
-
- /**
- * @brief scale image
- * int $max maximum pixel size in either dimension
- * boolean $float_height - if true allow height to float to any length on tall images,
- * constraining only the width
- */
-
- public function scaleImage($max, $float_height = true) {
- if(!$this->is_valid())
- return FALSE;
-
- $width = $this->width;
- $height = $this->height;
-
- $dest_width = $dest_height = 0;
-
- if((! $width)|| (! $height))
- return FALSE;
-
- if($width > $max && $height > $max) {
-
- // very tall image (greater than 16:9)
- // constrain the width - let the height float.
-
- if(((($height * 9) / 16) > $width) && ($float_height)) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
-
- // else constrain both dimensions
-
- elseif($width > $height) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
- else {
- $dest_width = intval(( $width * $max ) / $height);
- $dest_height = $max;
- }
- }
- else {
- if( $width > $max ) {
- $dest_width = $max;
- $dest_height = intval(( $height * $max ) / $width);
- }
- else {
- if( $height > $max ) {
-
- // very tall image (greater than 16:9)
- // but width is OK - don't do anything
-
- if(((($height * 9) / 16) > $width) && ($float_height)) {
- $dest_width = $width;
- $dest_height = $height;
- }
- else {
- $dest_width = intval(( $width * $max ) / $height);
- $dest_height = $max;
- }
- }
- else {
- $dest_width = $width;
- $dest_height = $height;
- }
- }
- }
- $this->doScaleImage($dest_width,$dest_height);
- }
-
- public function scaleImageUp($min) {
- if(!$this->is_valid())
- return FALSE;
-
-
- $width = $this->width;
- $height = $this->height;
-
- $dest_width = $dest_height = 0;
-
- if((! $width)|| (! $height))
- return FALSE;
-
- if($width < $min && $height < $min) {
- if($width > $height) {
- $dest_width = $min;
- $dest_height = intval(( $height * $min ) / $width);
- }
- else {
- $dest_width = intval(( $width * $min ) / $height);
- $dest_height = $min;
- }
- }
- else {
- if( $width < $min ) {
- $dest_width = $min;
- $dest_height = intval(( $height * $min ) / $width);
- }
- else {
- if( $height < $min ) {
- $dest_width = intval(( $width * $min ) / $height);
- $dest_height = $min;
- }
- else {
- $dest_width = $width;
- $dest_height = $height;
- }
- }
- }
- $this->doScaleImage($dest_width,$dest_height);
- }
-
-
- public function scaleImageSquare($dim) {
- if(!$this->is_valid())
- return FALSE;
- $this->doScaleImage($dim,$dim);
- }
-
-
- /**
- * @brief reads exif data from filename
- */
-
- public function exif($filename) {
-
-
- if((! function_exists('exif_read_data'))
- || (! in_array($this->getType(), [ 'image/jpeg' , 'image/tiff'] ))) {
- return false;
- }
-
- /*
- * PHP 7.2 allows you to use a stream resource, which should reduce/avoid
- * memory exhaustion on large images.
- */
-
- if(version_compare(PHP_VERSION,'7.2.0') >= 0) {
- $f = @fopen($filename,'rb');
- }
- else {
- $f = $filename;
- }
-
- if($f) {
- return @exif_read_data($f,null,true);
- }
-
- return false;
- }
-
- /**
- * @brief orients current image based on exif orientation information
- */
-
- public function orient($exif) {
-
- if(! ($this->is_valid() && $exif)) {
- return false;
- }
-
- $ort = ((array_key_exists('IFD0',$exif)) ? $exif['IFD0']['Orientation'] : $exif['Orientation']);
-
- if(! $ort) {
- return false;
- }
-
- switch($ort) {
- case 1: // nothing
- break;
- case 2: // horizontal flip
- $this->flip();
- break;
- case 3: // 180 rotate left
- $this->rotate(180);
- break;
- case 4: // vertical flip
- $this->flip(false, true);
- break;
- case 5: // vertical flip + 90 rotate right
- $this->flip(false, true);
- $this->rotate(-90);
- break;
- case 6: // 90 rotate right
- $this->rotate(-90);
- break;
- case 7: // horizontal flip + 90 rotate right
- $this->flip();
- $this->rotate(-90);
- break;
- case 8: // 90 rotate left
- $this->rotate(90);
- break;
- default:
- break;
- }
-
- return true;
- }
-
-
- public function save($arr, $skipcheck = false) {
-
- if(! ($skipcheck || $this->is_valid())) {
- logger('attempt to store invalid photo.');
- return false;
- }
-
- $p = array();
-
- $p['aid'] = ((intval($arr['aid'])) ? intval($arr['aid']) : 0);
- $p['uid'] = ((intval($arr['uid'])) ? intval($arr['uid']) : 0);
- $p['xchan'] = (($arr['xchan']) ? $arr['xchan'] : '');
- $p['resource_id'] = (($arr['resource_id']) ? $arr['resource_id'] : '');
- $p['filename'] = (($arr['filename']) ? $arr['filename'] : '');
- $p['mimetype'] = (($arr['mimetype']) ? $arr['mimetype'] : $this->getType());
- $p['album'] = (($arr['album']) ? $arr['album'] : '');
- $p['imgscale'] = ((intval($arr['imgscale'])) ? intval($arr['imgscale']) : 0);
- $p['allow_cid'] = (($arr['allow_cid']) ? $arr['allow_cid'] : '');
- $p['allow_gid'] = (($arr['allow_gid']) ? $arr['allow_gid'] : '');
- $p['deny_cid'] = (($arr['deny_cid']) ? $arr['deny_cid'] : '');
- $p['deny_gid'] = (($arr['deny_gid']) ? $arr['deny_gid'] : '');
- $p['edited'] = (($arr['edited']) ? $arr['edited'] : datetime_convert());
- $p['title'] = (($arr['title']) ? $arr['title'] : '');
- $p['description'] = (($arr['description']) ? $arr['description'] : '');
- $p['photo_usage'] = intval($arr['photo_usage']);
- $p['os_storage'] = intval($arr['os_storage']);
- $p['os_path'] = $arr['os_path'];
- $p['os_syspath'] = ((array_key_exists('os_syspath',$arr)) ? $arr['os_syspath'] : '');
- $p['display_path'] = (($arr['display_path']) ? $arr['display_path'] : '');
- $p['width'] = (($arr['width']) ? $arr['width'] : $this->getWidth());
- $p['height'] = (($arr['height']) ? $arr['height'] : $this->getHeight());
- $p['expires'] = (($arr['expires']) ? $arr['expires'] : gmdate('Y-m-d H:i:s', time() + get_config('system','photo_cache_time', 86400)));
-
- if(! intval($p['imgscale']))
- logger('save: ' . print_r($arr,true), LOGGER_DATA);
-
- $x = q("select id, created from photo where resource_id = '%s' and uid = %d and xchan = '%s' and imgscale = %d limit 1",
- dbesc($p['resource_id']),
- intval($p['uid']),
- dbesc($p['xchan']),
- intval($p['imgscale'])
- );
-
- if($x) {
- $p['created'] = (($x['created']) ? $x['created'] : $p['edited']);
- $r = q("UPDATE photo set
- aid = %d,
- uid = %d,
- xchan = '%s',
- resource_id = '%s',
- created = '%s',
- edited = '%s',
- filename = '%s',
- mimetype = '%s',
- album = '%s',
- height = %d,
- width = %d,
- content = '%s',
- os_storage = %d,
- filesize = %d,
- imgscale = %d,
- photo_usage = %d,
- title = '%s',
- description = '%s',
- os_path = '%s',
- display_path = '%s',
- allow_cid = '%s',
- allow_gid = '%s',
- deny_cid = '%s',
- deny_gid = '%s',
- expires = '%s'
- where id = %d",
-
- intval($p['aid']),
- intval($p['uid']),
- dbesc($p['xchan']),
- dbesc($p['resource_id']),
- dbescdate($p['created']),
- dbescdate($p['edited']),
- dbesc(basename($p['filename'])),
- dbesc($p['mimetype']),
- dbesc($p['album']),
- intval($p['height']),
- intval($p['width']),
- (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
- intval($p['os_storage']),
- (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())),
- intval($p['imgscale']),
- intval($p['photo_usage']),
- dbesc($p['title']),
- dbesc($p['description']),
- dbesc($p['os_path']),
- dbesc($p['display_path']),
- dbesc($p['allow_cid']),
- dbesc($p['allow_gid']),
- dbesc($p['deny_cid']),
- dbesc($p['deny_gid']),
- dbescdate($p['expires']),
- intval($x[0]['id'])
- );
- }
- else {
- $p['created'] = (($arr['created']) ? $arr['created'] : $p['edited']);
- $r = q("INSERT INTO photo
- ( aid, uid, xchan, resource_id, created, edited, filename, mimetype, album, height, width, content, os_storage, filesize, imgscale, photo_usage, title, description, os_path, display_path, allow_cid, allow_gid, deny_cid, deny_gid, expires )
- VALUES ( %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, '%s', %d, %d, %d, %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s' )",
- intval($p['aid']),
- intval($p['uid']),
- dbesc($p['xchan']),
- dbesc($p['resource_id']),
- dbescdate($p['created']),
- dbescdate($p['edited']),
- dbesc(basename($p['filename'])),
- dbesc($p['mimetype']),
- dbesc($p['album']),
- intval($p['height']),
- intval($p['width']),
- (intval($p['os_storage']) ? dbescbin($p['os_syspath']) : dbescbin($this->imageString())),
- intval($p['os_storage']),
- (intval($p['os_storage']) ? @filesize($p['os_syspath']) : strlen($this->imageString())),
- intval($p['imgscale']),
- intval($p['photo_usage']),
- dbesc($p['title']),
- dbesc($p['description']),
- dbesc($p['os_path']),
- dbesc($p['display_path']),
- dbesc($p['allow_cid']),
- dbesc($p['allow_gid']),
- dbesc($p['deny_cid']),
- dbesc($p['deny_gid']),
- dbescdate($p['expires'])
- );
- }
- logger('photo save ' . $p['imgscale'] . ' returned ' . intval($r));
- return $r;
- }
-
-}
-
-
-
/**
- * Guess image mimetype from filename or from Content-Type header
+ * @brief Guess image mimetype from filename or from Content-Type header.
*
- * @arg $filename string Image filename
- * @arg $headers string Headers to check for Content-Type (from curl request)
+ * @param string $filename
+ * Image filename
+ * @param string $headers (optional)
+ * Headers to check for Content-Type (from curl request)
+ * @return null|string Guessed mimetype
*/
-
function guess_image_type($filename, $headers = '') {
// logger('Photo: guess_image_type: '.$filename . ($headers?' from curl headers':''), LOGGER_DEBUG);
$type = null;
- if ($headers) {
- $hdrs=array();
- $h = explode("\n",$headers);
+ $m = null;
+
+ if($headers) {
+ $hdrs = [];
+ $h = explode("\n", $headers);
foreach ($h as $l) {
- list($k,$v) = array_map("trim", explode(":", trim($l), 2));
+ list($k, $v) = array_map('trim', explode(':', trim($l), 2));
$hdrs[strtolower($k)] = $v;
}
- logger('Curl headers: '.var_export($hdrs, true), LOGGER_DEBUG);
- if (array_key_exists('content-type', $hdrs)) {
+ logger('Curl headers: ' .var_export($hdrs, true), LOGGER_DEBUG);
+ if(array_key_exists('content-type', $hdrs)) {
$ph = photo_factory('');
$types = $ph->supportedTypes();
@@ -498,13 +86,13 @@ function guess_image_type($filename, $headers = '') {
}
}
- if (is_null($type)){
+ if(is_null($type)){
$ignore_imagick = get_config('system', 'ignore_imagick');
// Guessing from extension? Isn't that... dangerous?
if(class_exists('Imagick') && file_exists($filename) && is_readable($filename) && !$ignore_imagick) {
$v = Imagick::getVersion();
preg_match('/ImageMagick ([0-9]+\.[0-9]+\.[0-9]+)/', $v['versionString'], $m);
- if(version_compare($m[1],'6.6.7') >= 0) {
+ if(version_compare($m[1], '6.6.7') >= 0) {
/**
* Well, this not much better,
* but at least it comes from the data inside the image,
@@ -516,7 +104,7 @@ function guess_image_type($filename, $headers = '') {
else {
// earlier imagick versions have issues with scaling png's
// don't log this because it will just fill the logfile.
- // leave this note here so those who are looking for why
+ // leave this note here so those who are looking for why
// we aren't using imagick can find it
}
}
@@ -532,7 +120,7 @@ function guess_image_type($filename, $headers = '') {
}
}
- if(is_null($type) && (strpos($filename,'http') === false)) {
+ if(is_null($type) && (strpos($filename, 'http') === false)) {
$size = getimagesize($filename);
$ph = photo_factory('');
$types = $ph->supportedTypes();
@@ -551,33 +139,36 @@ function guess_image_type($filename, $headers = '') {
}
logger('Photo: guess_image_type: filename = ' . $filename . ' type = ' . $type, LOGGER_DEBUG);
- return $type;
+ return $type;
}
-
-function delete_thing_photo($url,$ob_hash) {
+/**
+ * @brief Delete thing photo from database.
+ *
+ * @param string $url
+ * @param string $ob_hash
+ * @return void
+ */
+function delete_thing_photo($url, $ob_hash) {
$hash = basename($url);
- $hash = substr($hash,0,strpos($hash,'-'));
+ $hash = substr($hash, 0, strpos($hash, '-'));
- // hashes should be 32 bytes.
+ // hashes should be 32 bytes.
if((! $ob_hash) || (strlen($hash) < 16))
- return;
+ return;
- $r = q("delete from photo where xchan = '%s' and photo_usage = %d and resource_id = '%s'",
+ q("delete from photo where xchan = '%s' and photo_usage = %d and resource_id = '%s'",
dbesc($ob_hash),
intval(PHOTO_THING),
dbesc($hash)
);
-
}
-
-
/**
- * @brief fetches an photo from external site and prepares its miniatures.
+ * @brief Fetches a photo from external site and prepares its miniatures.
*
* @param string $photo
* external URL to fetch base image
@@ -596,223 +187,215 @@ function delete_thing_photo($url,$ob_hash) {
* * \e boolean \b 4 => TRUE if fetch failure
* * \e string \b 5 => modification date
*/
+function import_xchan_photo($photo, $xchan, $thing = false, $force = false) {
+ $modified = '';
+ $o = null;
+
+ $flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
+ $album = (($thing) ? 'Things' : 'Contact Photos');
+
+ logger('Updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
+
+ if($thing) {
+ $hash = photo_new_resource();
+ } else {
+ $r = q("select resource_id, edited, mimetype from photo where xchan = '%s' and photo_usage = %d and imgscale = 4 limit 1", dbesc($xchan), intval(PHOTO_XCHAN));
+ if($r) {
+ $hash = $r[0]['resource_id'];
+ $modified = $r[0]['edited'];
+ $type = $r[0]['mimetype'];
+ } else {
+ $hash = photo_new_resource();
+ }
+ }
-function import_xchan_photo($photo,$xchan,$thing = false,$force = false) {
-
- $modified = '';
-
- $flags = (($thing) ? PHOTO_THING : PHOTO_XCHAN);
- $album = (($thing) ? 'Things' : 'Contact Photos');
-
- logger('import_xchan_photo: updating channel photo from ' . $photo . ' for ' . $xchan, LOGGER_DEBUG);
-
- if($thing) {
- $hash = photo_new_resource();
- }
- else {
- $r = q("select resource_id, edited, mimetype from photo where xchan = '%s' and photo_usage = %d and imgscale = 4 limit 1",
- dbesc($xchan),
- intval(PHOTO_XCHAN)
- );
- if($r) {
- $hash = $r[0]['resource_id'];
- $modified = $r[0]['edited'];
- $type = $r[0]['mimetype'];
- }
- else {
- $hash = photo_new_resource();
- }
- }
-
- $photo_failure = false;
- $img_str = '';
-
- if($photo) {
- $filename = basename($photo);
-
- if($force || $modified == '') {
- $result = z_fetch_url($photo,true);
- }
- else {
- $h = array('headers' => array("If-Modified-Since: " . gmdate("D, d M Y H:i:s", strtotime($modified . "Z")) . " GMT"));
- $result = z_fetch_url($photo,true,0,$h);
- }
-
- if($result['success']) {
- $img_str = $result['body'];
- $type = guess_image_type($photo, $result['header']);
- $modified = gmdate('Y-m-d H:i:s', (preg_match('/last-modified: (.+) \S+/i', $result['header'], $o) ? strtotime($o[1] . 'Z') : time()));
- if(is_null($type))
- $photo_failure = true;
- }
- elseif($result['return_code'] == 304) {
- $photo = z_root() . '/photo/' . $hash . '-4';
- $thumb = z_root() . '/photo/' . $hash . '-5';
- $micro = z_root() . '/photo/' . $hash . '-6';
- }
- else {
- $photo_failure = true;
- }
-
- }
- else
- $photo_failure = true;
-
- if(! $photo_failure && $result['return_code'] != 304) {
- $img = photo_factory($img_str, $type);
- if($img->is_valid()) {
- $width = $img->getWidth();
- $height = $img->getHeight();
-
- if($width && $height) {
- if(($width / $height) > 1.2) {
- // crop out the sides
- $margin = $width - $height;
- $img->cropImage(300,($margin / 2),0,$height,$height);
- }
- elseif(($height / $width) > 1.2) {
- // crop out the bottom
- $margin = $height - $width;
- $img->cropImage(300,0,0,$width,$width);
-
- }
- else {
- $img->scaleImageSquare(300);
- }
-
- }
- else
- $photo_failure = true;
-
- $p = array(
- 'xchan' => $xchan,
- 'resource_id' => $hash,
- 'filename' => basename($photo),
- 'album' => $album,
- 'photo_usage' => $flags,
- 'imgscale' => 4,
- 'edited' => $modified
- );
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $img->scaleImage(80);
- $p['imgscale'] = 5;
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $img->scaleImage(48);
- $p['imgscale'] = 6;
-
- $r = $img->save($p);
-
- if($r === false)
- $photo_failure = true;
-
- $photo = z_root() . '/photo/' . $hash . '-4';
- $thumb = z_root() . '/photo/' . $hash . '-5';
- $micro = z_root() . '/photo/' . $hash . '-6';
- }
- else {
- logger('import_xchan_photo: invalid image from ' . $photo);
- $photo_failure = true;
- }
- }
- if($photo_failure) {
- $default = get_default_profile_photo();
- $photo = z_root() . '/' . $default;
- $thumb = z_root() . '/' . get_default_profile_photo(80);
- $micro = z_root() . '/' . get_default_profile_photo(48);
- $type = 'image/png';
- $modified = gmdate('Y-m-d H:i:s', filemtime($default));
- }
-
- logger('HTTP code: ' . $result['return_code'] . '; modified: ' . $modified . '; failure: ' . ($photo_failure ? 'yes' : 'no') . '; URL: ' . $photo, LOGGER_DEBUG);
- return(array($photo,$thumb,$micro,$type,$photo_failure,$modified));
-
-}
-
-function import_channel_photo_from_url($photo,$aid,$uid) {
+ $photo_failure = false;
+ $img_str = '';
if($photo) {
- $filename = basename($photo);
- $result = z_fetch_url($photo,true);
+ if($force || $modified == '') {
+ $result = z_fetch_url($photo, true);
+ } else {
+ $h = [
+ 'headers' => [
+ 'If-Modified-Since: ' . gmdate('D, d M Y H:i:s', strtotime($modified . 'Z')) . ' GMT'
+ ]
+ ];
+ $result = z_fetch_url($photo, true, 0, $h);
+ }
if($result['success']) {
$img_str = $result['body'];
$type = guess_image_type($photo, $result['header']);
+ $modified = gmdate('Y-m-d H:i:s', (preg_match('/last-modified: (.+) \S+/i', $result['header'], $o) ? strtotime($o[1] . 'Z') : time()));
+ if(is_null($type))
+ $photo_failure = true;
+ } elseif($result['return_code'] == 304) {
+ $photo = z_root() . '/photo/' . $hash . '-4';
+ $thumb = z_root() . '/photo/' . $hash . '-5';
+ $micro = z_root() . '/photo/' . $hash . '-6';
+ } else {
+ $photo_failure = true;
+ }
+ } else {
+ $photo_failure = true;
+ }
+
+ if(!$photo_failure && $result['return_code'] != 304) {
+ $img = photo_factory($img_str, $type);
+ if($img->is_valid()) {
+ $width = $img->getWidth();
+ $height = $img->getHeight();
+
+ if($width && $height) {
+ if(($width / $height) > 1.2) {
+ // crop out the sides
+ $margin = $width - $height;
+ $img->cropImage(300, ($margin / 2), 0, $height, $height);
+ } elseif(($height / $width) > 1.2) {
+ // crop out the bottom
+ $margin = $height - $width;
+ $img->cropImage(300, 0, 0, $width, $width);
+ } else {
+ $img->scaleImageSquare(300);
+ }
+ } else {
+ $photo_failure = true;
+ }
- if(is_null($type))
- $photo_failure = true;
+ $p = [
+ 'xchan' => $xchan,
+ 'resource_id' => $hash,
+ 'filename' => basename($photo),
+ 'album' => $album,
+ 'photo_usage' => $flags,
+ 'imgscale' => 4,
+ 'edited' => $modified,
+ ];
+
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $img->scaleImage(80);
+ $p['imgscale'] = 5;
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $img->scaleImage(48);
+ $p['imgscale'] = 6;
+ $r = $img->save($p);
+ if($r === false)
+ $photo_failure = true;
+
+ $photo = z_root() . '/photo/' . $hash . '-4';
+ $thumb = z_root() . '/photo/' . $hash . '-5';
+ $micro = z_root() . '/photo/' . $hash . '-6';
+ } else {
+ logger('Invalid image from ' . $photo);
+ $photo_failure = true;
}
}
- else {
- $photo_failure = true;
+ if($photo_failure) {
+ $default = get_default_profile_photo();
+ $photo = z_root() . '/' . $default;
+ $thumb = z_root() . '/' . get_default_profile_photo(80);
+ $micro = z_root() . '/' . get_default_profile_photo(48);
+ $type = 'image/png';
+ $modified = gmdate('Y-m-d H:i:s', filemtime($default));
}
- import_channel_photo($img_str,$type,$aid,$uid);
+ logger('HTTP code: ' . $result['return_code'] . '; modified: ' . $modified
+ . '; failure: ' . ($photo_failure ? 'yes' : 'no') . '; URL: ' . $photo, LOGGER_DEBUG);
- return $type;
+ return([$photo, $thumb, $micro, $type, $photo_failure, $modified]);
}
+/**
+ * @brief Import channel photo from a URL.
+ *
+ * @param string $photo URL to a photo
+ * @param int $aid
+ * @param int $uid channel_id
+ * @return null|string Guessed image mimetype or null.
+ */
+function import_channel_photo_from_url($photo, $aid, $uid) {
+ $type = null;
-function import_channel_photo($photo,$type,$aid,$uid) {
+ if($photo) {
+ $result = z_fetch_url($photo, true);
- logger('import_channel_photo: importing channel photo for ' . $uid, LOGGER_DEBUG);
+ if($result['success']) {
+ $img_str = $result['body'];
+ $type = guess_image_type($photo, $result['header']);
- $hash = photo_new_resource();
+ import_channel_photo($img_str, $type, $aid, $uid);
+ }
+ }
- $photo_failure = false;
+ return $type;
+}
+/**
+ * @brief Import a channel photo and prepare its miniatures.
+ *
+ * @param string $photo Image data
+ * @param string $type
+ * @param int $aid
+ * @param int $uid channel_id
+ * @return boolean|string false on failure, otherwise resource_id of photo
+ */
+function import_channel_photo($photo, $type, $aid, $uid) {
+ logger('Importing channel photo for ' . $uid, LOGGER_DEBUG);
+
+ $photo_failure = false;
+ $hash = photo_new_resource();
$filename = $hash;
$img = photo_factory($photo, $type);
if($img->is_valid()) {
+ // config array for image save method
+ $p = [
+ 'aid' => $aid,
+ 'uid' => $uid,
+ 'resource_id' => $hash,
+ 'filename' => $filename,
+ 'album' => t('Profile Photos'),
+ 'photo_usage' => PHOTO_PROFILE,
+ 'imgscale' => 4,
+ ];
+
+ // photo size
$img->scaleImageSquare(300);
-
- $p = array('aid' => $aid, 'uid' => $uid, 'resource_id' => $hash, 'filename' => $filename, 'album' => t('Profile Photos'), 'photo_usage' => PHOTO_PROFILE, 'imgscale' => 4);
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
+ // thumb size
$img->scaleImage(80);
$p['imgscale'] = 5;
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
+ // micro size
$img->scaleImage(48);
$p['imgscale'] = 6;
-
$r = $img->save($p);
-
if($r === false)
$photo_failure = true;
- }
- else {
- logger('import_channel_photo: invalid image.');
+ } else {
+ logger('Invalid image.');
$photo_failure = true;
}
- //return(($photo_failure)? false : true);
-
if($photo_failure)
return false;
else
return $hash;
-
}
diff --git a/include/photo/photo_gd.php b/include/photo/photo_gd.php
deleted file mode 100644
index e98ac2827..000000000
--- a/include/photo/photo_gd.php
+++ /dev/null
@@ -1,162 +0,0 @@
-<?php /** @file */
-
-
-require_once('include/photo/photo_driver.php');
-
-
-class photo_gd extends photo_driver {
-
- function supportedTypes() {
- $t = array();
- $t['image/jpeg'] ='jpg';
- if (imagetypes() & IMG_PNG) $t['image/png'] = 'png';
- if (imagetypes() & IMG_GIF) $t['image/gif'] = 'gif';
- return $t;
-
- }
-
- function load($data, $type) {
- $this->valid = false;
- if(! $data)
- return;
-
- $this->image = @imagecreatefromstring($data);
- if($this->image !== FALSE) {
- $this->valid = true;
- $this->setDimensions();
- imagealphablending($this->image, false);
- imagesavealpha($this->image, true);
- }
- }
-
- function setDimensions() {
- $this->width = imagesx($this->image);
- $this->height = imagesy($this->image);
- }
-
-
- public function clearexif() {
- return;
- }
-
-
- public function destroy() {
- if($this->is_valid()) {
- imagedestroy($this->image);
- }
- }
-
- public function getImage() {
- if(!$this->is_valid())
- return FALSE;
-
- return $this->image;
- }
-
- public function doScaleImage($dest_width,$dest_height) {
-
- $dest = imagecreatetruecolor( $dest_width, $dest_height );
- $width = imagesx($this->image);
- $height = imagesy($this->image);
-
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, 0, 0, $dest_width, $dest_height, $width, $height);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
- public function rotate($degrees) {
- if(!$this->is_valid())
- return FALSE;
-
- $this->image = imagerotate($this->image,$degrees,0);
- $this->setDimensions();
- }
-
- public function flip($horiz = true, $vert = false) {
- if(!$this->is_valid())
- return FALSE;
-
- $w = imagesx($this->image);
- $h = imagesy($this->image);
- $flipped = imagecreate($w, $h);
- if($horiz) {
- for ($x = 0; $x < $w; $x++) {
- imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h);
- }
- }
- if($vert) {
- for ($y = 0; $y < $h; $y++) {
- imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1);
- }
- }
- $this->image = $flipped;
- $this->setDimensions(); // Shouldn't really be necessary
- }
-
- public function cropImage($max,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $dest = imagecreatetruecolor( $max, $max );
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $max, $max, $w, $h);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
- public function cropImageRect($maxx,$maxy,$x,$y,$w,$h) {
- if(!$this->is_valid())
- return FALSE;
-
- $dest = imagecreatetruecolor( $maxx, $maxy );
- imagealphablending($dest, false);
- imagesavealpha($dest, true);
- if ($this->type=='image/png') imagefill($dest, 0, 0, imagecolorallocatealpha($dest, 0, 0, 0, 127)); // fill with alpha
- imagecopyresampled($dest, $this->image, 0, 0, $x, $y, $maxx, $maxy, $w, $h);
- if($this->image)
- imagedestroy($this->image);
- $this->image = $dest;
- $this->setDimensions();
- }
-
-
-
- public function imageString() {
- if(!$this->is_valid())
- return FALSE;
-
- $quality = FALSE;
-
- ob_start();
-
- switch($this->getType()){
- case "image/png":
- $quality = get_config('system','png_quality');
- if((! $quality) || ($quality > 9))
- $quality = PNG_QUALITY;
- imagepng($this->image,NULL, $quality);
- break;
- case "image/jpeg":
- default:
- $quality = get_config('system','jpeg_quality');
- if((! $quality) || ($quality > 100))
- $quality = JPEG_QUALITY;
- imagejpeg($this->image,NULL,$quality);
- break;
- }
- $string = ob_get_contents();
- ob_end_clean();
-
- return $string;
- }
-
-}
diff --git a/include/photos.php b/include/photos.php
index ae51703e0..44406e0b0 100644
--- a/include/photos.php
+++ b/include/photos.php
@@ -356,7 +356,7 @@ function photo_upload($channel, $observer, $args) {
$large_photos = feature_enabled($channel['channel_id'], 'large_photos');
- linkify_tags($a, $args['body'], $channel_id);
+ linkify_tags($args['body'], $channel_id);
if($large_photos) {
$scale = 1;
diff --git a/include/plugin.php b/include/plugin.php
index ec14fd945..c789ad522 100755
--- a/include/plugin.php
+++ b/include/plugin.php
@@ -7,13 +7,15 @@
/**
- * @brief Handle errors in plugin calls
+ * @brief Handle errors in plugin calls.
*
* @param string $plugin name of the addon
- * @param string $error_text text of error
- * @param bool $uninstall uninstall plugin
+ * @param string $notice UI visible text of error
+ * @param string $log technical error message for logging
+ * @param bool $uninstall (optional) default false
+ * uninstall plugin on error
*/
-function handleerrors_plugin($plugin,$notice,$log,$uninstall=false){
+function handleerrors_plugin($plugin, $notice, $log, $uninstall = false){
logger("Addons: [" . $plugin . "] Error: ".$log, LOGGER_ERROR);
if ($notice != '') {
notice("[" . $plugin . "] Error: ".$notice, LOGGER_ERROR);
@@ -23,7 +25,7 @@ function handleerrors_plugin($plugin,$notice,$log,$uninstall=false){
$idx = array_search($plugin, \App::$plugins);
unset(\App::$plugins[$idx]);
uninstall_plugin($plugin);
- set_config("system","addon", implode(", ",\App::$plugins));
+ set_config("system", "addon", implode(", ", \App::$plugins));
}
}
@@ -381,8 +383,6 @@ function unregister_hook($hook, $file, $function) {
* array in their theme_init() and use this to customise the app behaviour.
* use insert_hook($hookname,$function_name) to do this.
*/
-
-
function load_hooks() {
App::$hooks = [];
@@ -1085,10 +1085,11 @@ function get_markup_template($s, $root = '') {
}
/**
- * @brief
+ * @brief Test if a folder exists.
*
* @param string $folder
* @return boolean|string
+ * False if folder does not exist, or canonicalized absolute pathname
*/
function folder_exists($folder) {
// Get canonicalized absolute pathname
diff --git a/include/text.php b/include/text.php
index 26cb61977..b017b038a 100644
--- a/include/text.php
+++ b/include/text.php
@@ -41,12 +41,12 @@ function replace_macros($s, $r) {
$t = App::template_engine();
- try {
- $output = $t->replace_macros($arr['template'], $arr['params']);
- } catch (Exception $e) {
- logger("Unable to render template: ".$e->getMessage());
- $output = "<h3>ERROR: there was an error creating the output.</h3>";
- }
+ try {
+ $output = $t->replace_macros($arr['template'], $arr['params']);
+ } catch (Exception $e) {
+ logger('Unable to render template: ' . $e->getMessage());
+ $output = '<h3>ERROR: there was an error creating the output.</h3>';
+ }
return $output;
}
@@ -539,7 +539,14 @@ function paginate(&$a) {
return $o;
}
-
+/**
+ * @brief
+ *
+ * @param int $i
+ * @param string $more
+ * @param string $less
+ * @return string Parsed HTML from template 'alt_pager.tpl'
+ */
function alt_pager($i, $more = '', $less = '') {
if(! $more)
@@ -810,7 +817,7 @@ function activity_match($haystack,$needle) {
* and strip the period from any tags which end with one.
*
* @param string $s
- * @return Returns array of tags found, or empty array.
+ * @return array Returns an array of tags found, or empty array.
*/
function get_tags($s) {
$ret = array();
@@ -826,6 +833,9 @@ function get_tags($s) {
// ignore anything in [color= ], because it may contain color codes which are mistaken for tags
$s = preg_replace('/\[color=(.*?)\]/sm','',$s);
+ // skip anchors in URL
+ $s = preg_replace('/\[url=(.*?)\]/sm','',$s);
+
// match any double quoted tags
if(preg_match_all('/([@#\!]\&quot\;.*?\&quot\;)/',$s,$match)) {
@@ -897,6 +907,7 @@ function tag_sort_length($a,$b) {
function total_sort($a,$b) {
if($a['total'] == $b['total'])
return 0;
+
return(($b['total'] > $a['total']) ? 1 : (-1));
}
@@ -983,7 +994,7 @@ function contact_block() {
// There is no setting to discover if you are bi-directionally connected
// Use the ability to post comments as an indication that this relationship is more
- // than wishful thinking; even though soapbox channels and feeds will disable it.
+ // than wishful thinking; even though soapbox channels and feeds will disable it.
if(! intval(get_abconfig(App::$profile['uid'],$rr['xchan_hash'],'their_perms','post_comments'))) {
$rr['oneway'] = true;
@@ -1001,9 +1012,15 @@ function contact_block() {
'$micropro' => $micropro,
));
- $arr = array('contacts' => $r, 'output' => $o);
-
+ $arr = ['contacts' => $r, 'output' => $o];
+ /**
+ * @hooks contact_block_end
+ * Called at the end of contact_block(), but can not manipulate the output.
+ * * \e array \b contacts - Result array from database
+ * * \e string \b output - the generated output
+ */
call_hooks('contact_block_end', $arr);
+
return $o;
}
@@ -1090,7 +1107,7 @@ function searchbox($s,$id='search-box',$url='/search',$save = false) {
* @return string
*/
function linkify($s, $me = false) {
- $s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\@\~\#\'\%\$\!\+\,\@]*)/u", (($me) ? ' <a href="$1" rel="me" >$1</a>' : ' <a href="$1" >$1</a>'), $s);
+ $s = preg_replace("/(https?\:\/\/[a-zA-Z0-9\pL\:\/\-\?\&\;\.\=\_\@\~\#\'\%\$\!\+\,\@]*)/u", (($me) ? ' <a href="$1" rel="me nofollow" >$1</a>' : ' <a href="$1" >$1</a>'), $s);
$s = preg_replace("/\<(.*?)(src|href)=(.*?)\&amp\;(.*?)\>/ism",'<$1$2=$3&$4>',$s);
return($s);
@@ -1105,23 +1122,27 @@ function linkify($s, $me = false) {
* to a local redirector which uses https and which redirects to the selected content
*
* @param string $s
- * @param int $uid
* @returns string
*/
function sslify($s) {
-
+
// Local photo cache
- $str = array(
+ $str = [
'body' => $s,
'uid' => local_channel()
- );
+ ];
+ /**
+ * @hooks cache_body_hook
+ * * \e string \b body The content to parse and also the return value
+ * * \e int|bool \b uid
+ */
call_hooks('cache_body_hook', $str);
-
+
$s = $str['body'];
if (strpos(z_root(),'https:') === false)
return $s;
-
+
// By default we'll only sslify img tags because media files will probably choke.
// You can set sslify_everything if you want - but it will likely white-screen if it hits your php memory limit.
// The downside is that http: media files will likely be blocked by your browser
@@ -1219,7 +1240,11 @@ function get_mood_verbs() {
/**
* @brief Function to list all smilies, both internal and from addons.
*
- * @return Returns array with keys 'texts' and 'icons'
+ * @param boolean $default_only (optional) default false
+ * true will prevent that plugins can add smilies
+ * @return array Returns an associative array with:
+ * * \e array \b texts
+ * * \e array \b icons
*/
function list_smilies($default_only = false) {
@@ -1297,6 +1322,11 @@ function list_smilies($default_only = false) {
if($default_only)
return $params;
+ /**
+ * @hooks smile
+ * * \e array \b texts - default values and also return value
+ * * \e array \b icons - default values and also return value
+ */
call_hooks('smilie', $params);
return $params;
@@ -1452,7 +1482,7 @@ function theme_attachments(&$item) {
foreach($arr as $r) {
$icon = getIconFromType($r['type']);
-
+
if($r['title'])
$label = urldecode(htmlspecialchars($r['title'], ENT_COMPAT, 'UTF-8'));
@@ -1622,6 +1652,10 @@ function generate_named_map($location) {
function prepare_body(&$item,$attach = false,$opts = false) {
+ /**
+ * @hooks prepare_body_init
+ * * \e array \b item
+ */
call_hooks('prepare_body_init', $item);
$s = '';
@@ -1653,13 +1687,19 @@ function prepare_body(&$item,$attach = false,$opts = false) {
$event = (($item['obj_type'] === ACTIVITY_OBJ_EVENT) ? format_event_obj($item['obj']) : false);
- $prep_arr = array(
+ $prep_arr = [
'item' => $item,
'html' => $event ? $event['content'] : $s,
'event' => $event['header'],
'photo' => $photo
- );
-
+ ];
+ /**
+ * @hooks prepare_body
+ * * \e array \b item
+ * * \e string \b html - the parsed HTML to return
+ * * \e string \b event - the event header to return
+ * * \e string \b photo - the photo to return
+ */
call_hooks('prepare_body', $prep_arr);
$s = $prep_arr['html'];
@@ -1729,17 +1769,24 @@ function prepare_binary($item) {
/**
- * @brief Given a text string, convert from bbcode to html and add smilie icons.
+ * @brief Given a text string, convert from content_type to HTML.
*
- * @param string $text
- * @param string $content_type (optional) default text/bbcode
- * @param boolean $cache (optional) default false
+ * Take a text in plain text, html, markdown, bbcode, PDL or PHP and prepare
+ * it to return HTML.
*
+ * In bbcode this function will add smilie icons.
+ *
+ * @param string $text
+ * @param string $content_type (optional)
+ * default 'text/bbcode', other values are 'text/plain', 'text/html',
+ * 'text/markdown', 'application/x-pdl', 'application/x-php'
+ * @param boolean|array $opts (optional)
+ * default false, otherwise configuration array for bbcode()
* @return string
+ * The parsed $text as prepared HTML.
*/
function prepare_text($text, $content_type = 'text/bbcode', $opts = false) {
-
switch($content_type) {
case 'text/plain':
$s = escape_tags($text);
@@ -1779,8 +1826,8 @@ function prepare_text($text, $content_type = 'text/bbcode', $opts = false) {
default:
require_once('include/bbcode.php');
- if(stristr($text,'[nosmile]'))
- $s = bbcode($text, [ 'cache' => $cache ]);
+ if(stristr($text, '[nosmile]'))
+ $s = bbcode($text, ((is_array($opts)) ? $opts : [] ));
else
$s = smilies(bbcode($text, ((is_array($opts)) ? $opts : [] )));
@@ -2140,7 +2187,7 @@ function legal_webbie($s) {
return '';
// WARNING: This regex may not work in a federated environment.
- // You will probably want something like
+ // You will probably want something like
// preg_replace('/([^a-z0-9\_])/','',strtolower($s));
$r = preg_replace('/([^a-z0-9\-\_])/','',strtolower($s));
@@ -2239,19 +2286,24 @@ function ids_to_querystr($arr,$idx = 'id',$quote = false) {
}
/**
- * @brief array_elm_to_str($arr,$elm,$delim = ',') extract unique individual elements from an array of arrays and return them as a string separated by a delimiter
- * similar to ids_to_querystr, but allows a different delimiter instead of a db-quote option
- * empty elements (evaluated after trim()) are ignored.
- * @param $arr array
- * @param $elm array key to extract from sub-array
- * @param $delim string default ','
- * @param $each filter function to apply to each element before evaluation, default is 'trim'.
+ * @brief Extract unique individual elements from an array of arrays and return
+ * them as a string separated by a delimiter.
+ *
+ * Similar to ids_to_querystr, but allows a different delimiter instead of a
+ * db-quote option empty elements (evaluated after trim()) are ignored.
+ *
+ * @see ids_to_querystr()
+ *
+ * @param array $arr
+ * @param string $elm key to extract from sub-array
+ * @param string $delim (optional) default ','
+ * @param string $each (optional) default is 'trim'
+ * Filter function to apply to each element before evaluation.
* @returns string
*/
-
-function array_elm_to_str($arr,$elm,$delim = ',',$each = 'trim') {
-
+function array_elm_to_str($arr, $elm, $delim = ',', $each = 'trim') {
$tmp = [];
+
if($arr && is_array($arr)) {
foreach($arr as $x) {
if(is_array($x) && array_key_exists($elm,$x)) {
@@ -2262,7 +2314,8 @@ function array_elm_to_str($arr,$elm,$delim = ',',$each = 'trim') {
}
}
}
- return implode($delim,$tmp);
+
+ return implode($delim, $tmp);
}
function trim_and_unpunify($s) {
@@ -2486,9 +2539,9 @@ function design_tools() {
}
/**
- * @brief Creates website portation tools menu
+ * @brief Creates website portation tools menu.
*
- * @return string
+ * @return string Parsed HTML code from template 'website_portation_tools.tpl'
*/
function website_portation_tools() {
@@ -2501,7 +2554,7 @@ function website_portation_tools() {
$sys = true;
}
- return replace_macros(get_markup_template('website_portation_tools.tpl'), array(
+ return replace_macros(get_markup_template('website_portation_tools.tpl'), [
'$title' => t('Import'),
'$import_label' => t('Import website...'),
'$import_placeholder' => t('Select folder to import'),
@@ -2518,7 +2571,7 @@ function website_portation_tools() {
'$cloud_export_desc' => t('/path/to/export/folder'),
'$cloud_export_hint' => t('Enter a path to a cloud files destination.'),
'$cloud_export_select' => t('Specify folder'),
- ));
+ ]);
}
/**
@@ -2578,8 +2631,9 @@ function extra_query_args() {
* @param boolean $in_network default true
* @return boolean true if replaced, false if not replaced
*/
-function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $in_network = true) {
+function handle_tag(&$body, &$str_tags, $profile_uid, $tag, $in_network = true) {
+ $channel = App::get_channel();
$replaced = false;
$r = null;
$match = array();
@@ -2635,21 +2689,20 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$str_tags .= $newtag;
}
- return [
- 'replaced' => $replaced,
- 'termtype' => $termtype,
- 'term' => $basetag,
- 'url' => $url,
- 'contact' => []
- ];
-
+ return [ [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $basetag,
+ 'url' => $url,
+ 'contact' => [],
+ 'access_tag' => '',
+ ]];
}
// END hashtags
// BEGIN mentions
-
if ( in_array($termtype, [ TERM_MENTION, TERM_FORUM ] )) {
// The @! tag and !! tag will alter permissions
@@ -2660,13 +2713,13 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$exclusive = (((strpos(substr($tag,1), '!') === 0) && $in_network) ? true : false);
//is it already replaced?
- if(strpos($tag,'[zrl=') || strpos($tag,'[url='))
+ if(strpos($tag,"[zrl=") || strpos($tag,"[url="))
return $replaced;
// get the channel name
// First extract the name or name fragment we are going to replace
- $name = substr($tag,(($exclusive) ? 2 : 1));
+ $name = substr($tag,(($exclusive) ? 2 : 1));
$newname = $name; // make a copy that we can mess with
$tagcid = 0;
@@ -2678,7 +2731,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
$newname = substr($name,1);
$newname = substr($newname,0,-1);
- $r = q("select * from xchan where xchan_addr = '%s' or xchan_url = '%s' limit 1",
+ $r = q("select * from xchan where xchan_addr = '%s' or xchan_url = '%s'",
dbesc($newname),
dbesc($newname)
);
@@ -2701,7 +2754,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// select someone from this user's contacts by name
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_name = '%s' AND abook_channel = %d LIMIT 1",
+ WHERE xchan_name = '%s' AND abook_channel = %d ",
dbesc($newname),
intval($profile_uid)
);
@@ -2709,8 +2762,8 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// select anybody by full hubloc_addr
if((! $r) && strpos($newname,'@')) {
- $r = q("SELECT * FROM xchan left join hubloc on xchan_hash = hubloc_hash
- WHERE hubloc_addr = '%s' LIMIT 1",
+ $r = q("SELECT * FROM xchan left join hubloc on xchan_hash = hubloc_hash
+ WHERE hubloc_addr = '%s' ",
dbesc($newname)
);
}
@@ -2719,7 +2772,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
if(! $r) {
$r = q("SELECT * FROM abook left join xchan on abook_xchan = xchan_hash
- WHERE xchan_addr like ('%s') AND abook_channel = %d LIMIT 1",
+ WHERE xchan_addr like ('%s') AND abook_channel = %d ",
dbesc(((strpos($newname,'@')) ? $newname : $newname . '@%')),
intval($profile_uid)
);
@@ -2727,17 +2780,62 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
}
+
+
+
+
+ $fn_results = [];
+ $access_tag = EMPTY_STR;
+
+
// $r is set if we found something
- $channel = App::get_channel();
-
if($r) {
- $profile = $r[0]['xchan_url'];
- $newname = $r[0]['xchan_name'];
- // add the channel's xchan_hash to $access_tag if exclusive
- if($exclusive) {
- $access_tag .= 'cid:' . $r[0]['xchan_hash'];
+ foreach($r as $xc) {
+ $profile = $xc['xchan_url'];
+ $newname = $xc['xchan_name'];
+ // add the channel's xchan_hash to $access_tag if exclusive
+ if($exclusive) {
+ $access_tag = 'cid:' . $xc['xchan_hash'];
+ }
+
+ // if there is a url for this channel
+
+ if(isset($profile)) {
+ $replaced = true;
+ //create profile link
+ $profile = str_replace(',','%2c',$profile);
+ $url = $profile;
+ if($termtype === TERM_FORUM) {
+ $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+ else {
+ // ( $termtype === TERM_MENTION )
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+
+ // append tag to str_tags
+ if(! stristr($str_tags,$newtag)) {
+ if(strlen($str_tags))
+ $str_tags .= ',';
+ $str_tags .= $newtag;
+ }
+ }
+
+
+ $fn_results[] = [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $newname,
+ 'url' => $url,
+ 'access_tag' => $access_tag,
+ 'contact' => (($r) ? $xc : []),
+ ];
+
}
+
}
else {
@@ -2749,7 +2847,6 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
// weird - as all the other tags are linked to something.
if(local_channel() && local_channel() == $profile_uid) {
- require_once('include/group.php');
$grp = group_byname($profile_uid,$name);
if($grp) {
@@ -2766,58 +2863,62 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i
}
}
}
- }
- // if there is a url for this channel
- if(isset($profile)) {
- $replaced = true;
- //create profile link
- $profile = str_replace(',','%2c',$profile);
- $url = $profile;
- if($termtype === TERM_FORUM) {
- $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
- $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- }
- else {
- // ( $termtype === TERM_MENTION )
- $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
- $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
- }
+ // if there is a url for this channel
- // append tag to str_tags
- if(! stristr($str_tags,$newtag)) {
- if(strlen($str_tags))
- $str_tags .= ',';
- $str_tags .= $newtag;
+ if(isset($profile)) {
+ $replaced = true;
+ //create profile link
+ $profile = str_replace(',','%2c',$profile);
+ $url = $profile;
+ if($termtype === TERM_FORUM) {
+ $newtag = '!' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('!' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+ else {
+ // ( $termtype === TERM_MENTION )
+ $newtag = '@' . (($exclusive) ? '!' : '') . '[zrl=' . $profile . ']' . $newname . '[/zrl]';
+ $body = str_replace('@' . (($exclusive) ? '!' : '') . $name, $newtag, $body);
+ }
+
+ // append tag to str_tags
+ if(! stristr($str_tags,$newtag)) {
+ if(strlen($str_tags))
+ $str_tags .= ',';
+ $str_tags .= $newtag;
+ }
}
+
+ $fn_results[] = [
+ 'replaced' => $replaced,
+ 'termtype' => $termtype,
+ 'term' => $newname,
+ 'url' => $url,
+ 'access_tag' => $access_tag,
+ 'contact' => [],
+ ];
}
}
+
+ return $fn_results;
- return [
- 'replaced' => $replaced,
- 'termtype' => $termtype,
- 'term' => $newname,
- 'url' => $url,
- 'contact' => (($r) ? $r[0] : [])
- ];
}
-function linkify_tags($a, &$body, $uid, $in_network = true) {
+function linkify_tags(&$body, $uid, $in_network = true) {
$str_tags = EMPTY_STR;
- $tagged = [];
$results = [];
$tags = get_tags($body);
if(count($tags)) {
foreach($tags as $tag) {
- $access_tag = '';
- $success = handle_tag($a, $body, $access_tag, $str_tags, ($uid) ? $uid : App::$profile_uid , $tag, $in_network);
+ $success = handle_tag($body, $str_tags, ($uid) ? $uid : App::$profile_uid , $tag, $in_network);
- $results[] = array('success' => $success, 'access_tag' => $access_tag);
- if($success['replaced']) $tagged[] = $tag;
+ foreach($success as $handled_tag) {
+ $results[] = [ 'success' => $handled_tag ];
+ }
}
}
@@ -2875,7 +2976,7 @@ function getIconFromType($type) {
'video/x-matroska' => 'fa-file-video-o'
);
- $catMap = [
+ $catMap = [
'application' => 'fa-file-code-o',
'multipart' => 'fa-folder',
'audio' => 'fa-file-audio-o',
@@ -2883,7 +2984,7 @@ function getIconFromType($type) {
'text' => 'fa-file-text-o',
'image' => 'fa=file-picture-o',
'message' => 'fa-file-text-o'
- ];
+ ];
$iconFromType = '';
@@ -2893,7 +2994,7 @@ function getIconFromType($type) {
}
else {
$parts = explode('/',$type);
- if($parts[0] && $catMap[$parts[0]]) {
+ if($parts[0] && $catMap[$parts[0]]) {
$iconFromType = $catMap[$parts[0]];
}
}
@@ -2981,9 +3082,9 @@ function item_url_replace($channel,&$item,$old,$new,$oldnick = '') {
json_url_replace('/' . $oldnick . '/' ,'/' . $channel['channel_address'] . '/' ,$item['target']);
}
- $x = preg_replace("/".preg_quote($old,'/')."\/(search|\w+\/".$channel['channel_address'].")/", $new.'/${1}', $item['body']);
- if($x) {
- $item['body'] = $x;
+ $x = preg_replace("/".preg_quote($old,'/')."\/(search|\w+\/".$channel['channel_address'].")/", $new.'/${1}', $item['body']);
+ if($x) {
+ $item['body'] = $x;
$item['sig'] = base64url_encode(rsa_sign($item['body'],$channel['channel_prvkey']));
$item['item_verified'] = 1;
}
@@ -3093,7 +3194,13 @@ function pdl_selector($uid, $current='') {
intval($uid)
);
- $arr = array('channel_id' => $uid, 'current' => $current, 'entries' => $r);
+ $arr = ['channel_id' => $uid, 'current' => $current, 'entries' => $r];
+ /**
+ * @hooks pdl_selector
+ * * \e int \b channel_id
+ * * \e string \b current
+ * * \e array \b entries - Result from database query
+ */
call_hooks('pdl_selector', $arr);
$entries = $arr['entries'];
@@ -3149,7 +3256,7 @@ function flatten_array_recursive($arr) {
* @param string $lang Which language should be highlighted
* @return string
* Important: The returned text has the text pattern 'http' translated to '%eY9-!' which should be converted back
- * after further processing. This was done to prevent oembed links from occurring inside code blocks.
+ * after further processing. This was done to prevent oembed links from occurring inside code blocks.
* See include/bbcode.php
*/
function text_highlight($s, $lang) {
@@ -3168,7 +3275,6 @@ function text_highlight($s, $lang) {
'language' => $lang,
'success' => false
];
-
/**
* @hooks text_highlight
* * \e string \b text
@@ -3369,13 +3475,17 @@ function punify($s) {
}
-// Be aware that unpunify will only convert domain names and not pathnames
-
+/**
+ * Be aware that unpunify() will only convert domain names and not pathnames.
+ *
+ * @param string $s
+ * @return string
+ */
function unpunify($s) {
require_once('vendor/simplepie/simplepie/idn/idna_convert.class.php');
$x = new idna_convert(['encoding' => 'utf8']);
- return $x->decode($s);
+ return $x->decode($s);
}
@@ -3383,7 +3493,7 @@ function unique_multidim_array($array, $key) {
$temp_array = array();
$i = 0;
$key_array = array();
-
+
foreach($array as $val) {
if (!in_array($val[$key], $key_array)) {
$key_array[$i] = $val[$key];
@@ -3411,7 +3521,7 @@ function get_forum_channels($uid) {
intval($uid)
);
- if($x2) {
+ if($x2) {
$xf = ids_to_querystr($x2,'xchan',true);
// private forums
@@ -3424,7 +3534,7 @@ function get_forum_channels($uid) {
}
}
- $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
+ $sql_extra = (($xf) ? " and ( xchan_hash in (" . $xf . ") or xchan_pubforum = 1 ) " : " and xchan_pubforum = 1 ");
$r = q("select abook_id, xchan_hash, xchan_name, xchan_url, xchan_addr, xchan_photo_s from abook left join xchan on abook_xchan = xchan_hash where xchan_deleted = 0 and abook_channel = %d and abook_pending = 0 and abook_ignored = 0 and abook_blocked = 0 and abook_archived = 0 $sql_extra order by xchan_name",
intval($uid)
@@ -3460,14 +3570,14 @@ function print_array($arr, $level = 0) {
$o .= $tabs . '[' . $k . '] => ' . print_array($v, $level + 1) . "\n";
}
else {
- $o .= $tabs . '[' . $k . '] => ' . print_val($v) . ",\n";
+ $o .= $tabs . '[' . $k . '] => ' . print_val($v) . ",\n";
}
}
}
$o .= substr($tabs,0,-1) . ']' . (($level) ? ',' : ';' ). "\n";
return $o;
}
-
+
}
function print_val($v) {
@@ -3494,7 +3604,7 @@ function array_path_exists($str,$arr) {
}
else {
return false;
- }
+ }
}
return true;
}
@@ -3511,12 +3621,11 @@ function array_path_exists($str,$arr) {
*/
function new_uuid() {
- try {
- $hash = Uuid::uuid4()->toString();
- } catch (UnsatisfiedDependencyException $e) {
- $hash = random_string(48);
- }
+ try {
+ $hash = Uuid::uuid4()->toString();
+ } catch (UnsatisfiedDependencyException $e) {
+ $hash = random_string(48);
+ }
- return $hash;
+ return $hash;
}
-
diff --git a/include/zot.php b/include/zot.php
index bc2187f91..3b089831b 100644
--- a/include/zot.php
+++ b/include/zot.php
@@ -174,7 +174,7 @@ function zot_build_packet($channel, $type = 'notify', $recipients = null, $remot
* packet type: one of 'ping', 'pickup', 'purge', 'refresh', 'keychange', 'force_refresh', 'notify', 'auth_check'
* @param array $recipients
* envelope information, array ( 'guid' => string, 'guid_sig' => string ); empty for public posts
- * @param string msg
+ * @param string $msg
* optional message
* @param string $remote_key
* optional public site key of target hub used to encrypt entire packet
@@ -1829,7 +1829,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
else {
$arr['item_wall'] = 0;
}
-
+
if ((! $tag_delivery) && (! $local_public)) {
$allowed = (perm_is_allowed($channel['channel_id'],$sender['hash'],$perm));
@@ -1843,7 +1843,7 @@ function process_delivery($sender, $arr, $deliveries, $relay, $public = false, $
$allowed = can_comment_on_post($d['hash'],$parent[0]);
}
}
-
+
if (! $allowed) {
logger("permission denied for delivery to channel {$channel['channel_id']} {$channel['channel_address']}");
$DR->update('permission denied');
@@ -2330,7 +2330,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
if(! perm_is_allowed($channel['channel_id'],$sender['hash'],'post_mail')) {
- /*
+ /*
* Always allow somebody to reply if you initiated the conversation. It's anti-social
* and a bit rude to send a private message to somebody and block their ability to respond.
* If you are being harrassed and want to put an end to it, delete the conversation.
@@ -2358,7 +2358,7 @@ function process_mail_delivery($sender, $arr, $deliveries) {
);
if($r) {
if(intval($arr['mail_recalled'])) {
- msg_drop($r[0]['id'], $channel['channel_id'], $r[0]['conv_guid']);
+ msg_drop($r[0]['id'], $channel['channel_id'], $r[0]['conv_guid']);
$DR->update('mail recalled');
$result[] = $DR->get();
logger('mail_recalled');
@@ -3247,7 +3247,7 @@ function build_sync_packet($uid = 0, $packet = null, $groups_changed = false) {
$channel = $r[0];
- // don't provide these in the export
+ // don't provide these in the export
unset($channel['channel_active']);
unset($channel['channel_password']);
@@ -3616,7 +3616,7 @@ function process_channel_sync_delivery($sender, $arr, $deliveries) {
if(array_key_exists('channel_pageflags',$arr['channel']) && intval($arr['channel']['channel_pageflags'])) {
// Several pageflags are site-specific and cannot be sync'd.
- // Only allow those bits which are shareable from the remote and then
+ // Only allow those bits which are shareable from the remote and then
// logically OR with the local flags
$arr['channel']['channel_pageflags'] = $arr['channel']['channel_pageflags'] & (PAGE_HIDDEN|PAGE_AUTOCONNECT|PAGE_APPLICATION|PAGE_PREMIUM|PAGE_ADULT);
@@ -4974,9 +4974,9 @@ function zot_reply_pickup($data) {
// It's possible that we have more than 100 messages waiting to be sent.
// See if there are any more messages in the queue.
- $x = q("select * from outq where outq_posturl = '%s' order by outq_created limit 1",
- dbesc($data['callback'])
- );
+ $x = q("select * from outq where outq_posturl = '%s' order by outq_created limit 1",
+ dbesc($data['callback'])
+ );
// If so, kick off a new delivery notification for the next batch
if ($x) {
@@ -5057,7 +5057,7 @@ function zot_reply_auth_check($data,$encrypted_packet) {
}
// There should be exactly one recipient, the original auth requestor
-
+ /// @FIXME $recipients is undefined here.
$ret['message'] .= 'recipients ' . print_r($recipients,true) . EOL;
if ($data['recipients']) {
diff --git a/install/sample-lighttpd.conf b/install/sample-lighttpd.conf
index db26c3b64..b65d86645 100644
--- a/install/sample-lighttpd.conf
+++ b/install/sample-lighttpd.conf
@@ -79,7 +79,7 @@ $HTTP["url"] =~ "\.(out|log|htaccess)$" {
url.access-deny = ("")
}
-$HTTP["url"] =~ "(^|/)\.git|(^|/)store" {
+$HTTP["url"] =~ "(^|/)\.git|(^|/)store|(^|/)util" {
url.access-deny = ("")
}
diff --git a/install/sample-nginx.conf b/install/sample-nginx.conf
index 839f208ae..6a986d426 100644
--- a/install/sample-nginx.conf
+++ b/install/sample-nginx.conf
@@ -141,5 +141,10 @@ server {
deny all;
}
+#deny access to util
+ location ~ /util {
+ deny all;
+ }
+
}
diff --git a/tests/unit/Photo/PhotoGdTest.php b/tests/unit/Photo/PhotoGdTest.php
new file mode 100644
index 000000000..1d4f9467f
--- /dev/null
+++ b/tests/unit/Photo/PhotoGdTest.php
@@ -0,0 +1,147 @@
+<?php
+
+namespace Zotlabs\Tests\Unit\Photo;
+
+use Zotlabs\Photo\PhotoGd;
+use phpmock\phpunit\PHPMock;
+use Zotlabs\Tests\Unit\UnitTestCase;
+
+/**
+ * @brief PhotoGd test case.
+ *
+ * These tests are not really useful yet, just some obvious behaviour.
+ *
+ * @todo Compare the actual results.
+ * @todo Test different image types.
+ */
+class PhotoGdTest extends UnitTestCase {
+
+ use PHPMock;
+
+ /**
+ * @var PhotoGd
+ */
+ private $photoGd;
+
+ /**
+ * Prepares the environment before running a test.
+ */
+ protected function setUp() {
+ parent::setUp();
+
+ $data = file_get_contents('images/hz-16.png');
+
+ $this->photoGd = new PhotoGd($data, 'image/png');
+ }
+
+ /**
+ * Cleans up the environment after running a test.
+ */
+ protected function tearDown() {
+ $this->photoGd = null;
+
+ parent::tearDown();
+ }
+
+ /**
+ * Tests PhotoGd->supportedTypes()
+ *
+ * Without mocking gd this check is environment dependent.
+ *
+ public function testSupportedTypes() {
+ $sft = $this->photoGd->supportedTypes();
+
+ $this->assertArrayHasKey('image/jpeg', $sft);
+ $this->assertArrayHasKey('image/gif', $sft);
+ $this->assertArrayHasKey('image/png', $sft);
+
+ $this->assertArrayNotHasKey('image/foo', $sft);
+ }
+ */
+
+ /**
+ * Tests PhotoGd->clearexif()
+ */
+ public function testClearexifIsNotImplementedInGdAndDoesNotAlterImageOrReturnSomething() {
+ $data_before = $this->photoGd->getImage();
+ $this->assertNull($this->photoGd->clearexif());
+ $this->assertSame($data_before, $this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->getImage()
+ */
+ public function testGetimageReturnsAResource() {
+ $res = $this->photoGd->getImage();
+ $this->assertIsResource($res);
+ $this->assertEquals('gd', get_resource_type($res));
+ }
+ public function testGetimageReturnsFalseOnFailure() {
+ $this->photoGd = new PhotoGd('');
+ $this->assertFalse($this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->doScaleImage()
+ */
+ public function testDoscaleImageSetsCorrectDimensions() {
+ $this->photoGd->doScaleImage(5, 8);
+
+ $this->assertSame(5, $this->photoGd->getWidth());
+ $this->assertSame(8, $this->photoGd->getHeight());
+ }
+
+ /**
+ * Tests PhotoGd->rotate()
+ */
+ public function testRotate360DegreesCreatesANewImage() {
+ $data = $this->photoGd->getImage();
+ $this->photoGd->rotate(360);
+ $this->assertNotEquals($data, $this->photoGd->getImage());
+ }
+
+ /**
+ * Tests PhotoGd->flip()
+ *
+ public function testFlip() {
+ // TODO Auto-generated PhotoGdTest->testFlip()
+ $this->markTestIncomplete("flip test not implemented");
+
+ $this->photoGd->flip();
+ }
+ */
+
+ /**
+ * Tests PhotoGd->cropImageRect()
+ */
+ public function testCropimagerectSetsCorrectDimensions() {
+ $this->photoGd->cropImageRect(10, 12, 1, 2, 11, 11);
+
+ $this->assertSame(10, $this->photoGd->getWidth());
+ $this->assertSame(12, $this->photoGd->getHeight());
+ }
+
+ /**
+ * Tests PhotoGd->imageString()
+ */
+ public function testImagestringReturnsABinaryString() {
+ // Create a stub for global function get_config()
+ // get_config('system', 'png_quality')
+ // get_config('system', 'jpeg_quality');
+ $gc = $this->getFunctionMock('Zotlabs\Photo', 'get_config');
+ $gc->expects($this->once())->willReturnCallback(
+ function() {
+ switch($this->photoGd->getType()){
+ case 'image/png':
+ return 7;
+ case 'image/jpeg':
+ default:
+ return 70;
+ }
+ }
+ );
+
+ $this->assertIsString($this->photoGd->imageString());
+ }
+
+}
diff --git a/tests/unit/get_tags_test.php b/tests/unit/get_tags_test.php
index 40f016747..bdffd8311 100644
--- a/tests/unit/get_tags_test.php
+++ b/tests/unit/get_tags_test.php
@@ -106,10 +106,9 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$tags=get_tags($text);
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
//correct tags found?
@@ -117,7 +116,6 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(in_array("@Mike", $tags));
//correct output from handle_tag?
- $this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url]", $text);
}
@@ -135,9 +133,8 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertEquals(1, count($tags));
$this->assertTrue(in_array("@Mike.because", $tags));
- $inform='';
$str_tags='';
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tags[0]);
+ handle_tag($text, $str_tags, 11, $tags[0]);
// (mike) - This is a tricky case.
// we support mentions as in @mike@example.com - which contains a period.
@@ -149,7 +146,6 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
// $this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
// $this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url].because", $text);
- $this->assertEquals("", $inform);
$this->assertEquals("", $str_tags);
}
@@ -195,13 +191,11 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
$this->assertTrue(in_array("@Mike This", $tags));
$this->assertTrue(in_array("#test_case", $tags));
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
- $this->assertEquals("cid:15", $inform);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url],#[url=baseurl/search?tag=test%20case]test case[/url]", $str_tags);
$this->assertEquals("hi @[url=http://justatest.de]Mike Lastname[/url] This is a #[url=baseurl/search?tag=test%20case]test case[/url]", $text);
@@ -255,16 +249,13 @@ class GetTagsTest extends PHPUnit_Framework_TestCase {
//happens right now, but it shouldn't be necessary
$this->assertTrue(in_array("@mike+15 id", $tags));
- $inform='';
$str_tags='';
foreach($tags as $tag) {
- handle_tag($this->a, $text, $inform, $str_tags, 11, $tag);
+ handle_tag($text, $str_tags, 11, $tag);
}
$this->assertEquals("Test with @[url=http://justatest.de]Mike Lastname[/url] id tag", $text);
$this->assertEquals("@[url=http://justatest.de]Mike Lastname[/url]", $str_tags);
- // this test may produce two cid:15 entries - which is OK because duplicates are pruned before delivery
- $this->assertContains("cid:15",$inform);
}
/**
diff --git a/tests/unit/includes/PhotodriverTest.php b/tests/unit/includes/PhotodriverTest.php
new file mode 100644
index 000000000..6f6ad0ffe
--- /dev/null
+++ b/tests/unit/includes/PhotodriverTest.php
@@ -0,0 +1,39 @@
+<?php
+
+namespace Zotlabs\Tests\Unit\includes;
+
+//use Zotlabs\Photo\PhotoGd;
+use Zotlabs\Tests\Unit\UnitTestCase;
+//use phpmock\phpunit\PHPMock;
+
+/**
+ * @brief Unit Test cases for include/photo/photo_driver.php file.
+ */
+class PhotodriverTest extends UnitTestCase {
+ //use PHPMock;
+
+ public function testPhotofactoryReturnsNullForUnsupportedType() {
+ // php-mock can not mock global functions which is called by a global function.
+ // If the calling function is in a namespace it would work.
+ //$logger = $this->getFunctionMock(__NAMESPACE__, 'logger');
+ //$logger->expects($this->once());
+
+ //$ph = \photo_factory('', 'image/bmp');
+ //$this->assertNull($ph);
+
+ $this->markTestIncomplete('Need to mock logger(), otherwise not unit testable.');
+ }
+
+ public function testPhotofactoryReturnsPhotogdIfConfigIgnore_imagickIsSet() {
+ // php-mock can not mock global functions which is called by a global function.
+ // If the calling function is in a namespace it would work.
+ //$gc = $this->getFunctionMock(__NAMESPACE__, 'get_config');
+ // simulate get_config('system', 'ignore_imagick') configured
+ //$gc->expects($this->once())->willReturn(1)
+
+ //$ph = \photo_factory(file_get_contents('images/hz-16.png'), 'image/png');
+ //$this->assertInstanceOf(PhotoGd::class, $ph);
+
+ $this->markTestIncomplete('Need to mock get_config(), otherwise not unit testable.');
+ }
+} \ No newline at end of file
diff --git a/util/Doxyfile b/util/Doxyfile
index 7be774a81..14464df81 100644
--- a/util/Doxyfile
+++ b/util/Doxyfile
@@ -1,7 +1,8 @@
INPUT = README.md index.php boot.php include/ install/ util/ view/ Zotlabs/
RECURSIVE = YES
PROJECT_NAME = "The Hubzilla"
-PROJECT_LOGO = images/rm-64.png
+PROJECT_LOGO = images/hz-64.png
+IMAGE_PATH = images/
EXCLUDE = .htconfig.php library/ doc/ store/ vendor/ .git/ util/zotsh/easywebdav/ util/generate-hooks-index/
EXCLUDE_PATTERNS = *smarty3* *strings.php *.out *test*
OUTPUT_DIRECTORY = doc
@@ -33,5 +34,6 @@ INTERACTIVE_SVG = YES
CLASS_GRAPH = YES
COLLABORATION_GRAPH = NO
# fix @var (https://bugzilla.gnome.org/show_bug.cgi?id=626105)
+# Should be obsolete with doxygen >= 1.8.15
#INPUT_FILTER = "sed -e 's/@var\s/@see /'"
INPUT_FILTER = "php util/Doxygen_phpvarfilter.php"
diff --git a/util/admins b/util/admins
new file mode 100755
index 000000000..3c7f0e83e
--- /dev/null
+++ b/util/admins
@@ -0,0 +1,60 @@
+#!/usr/bin/env php
+<?php
+
+if(!file_exists('include/cli_startup.php')) {
+ echo 'Run admins from the top level Hubzilla web directory, as util/admins <args>' . PHP_EOL;
+ exit(1);
+}
+
+
+
+require_once('include/cli_startup.php');
+
+cli_startup();
+
+$helpArgs = getopt('h', array('help'));
+if (count($helpArgs) === 1) {
+ echo <<<'EndOfOutput'
+adds, removes, or lists admins
+
+Usage: util/admins
+ util/admins list
+ util/admins add <account_id>
+ util/admins remove <account_id>
+
+EndOfOutput;
+ return;
+}
+
+if($argc == 1) {
+ $r = q("select account_id, account_roles, account_email from account");
+ if($r) {
+ foreach($r as $rr) {
+ echo sprintf('%4u %s %s', $rr['account_id'], $rr['account_email'],(($rr['account_roles'] & 4096) ? '*' : '')) . PHP_EOL;
+ }
+ }
+}
+
+
+
+if($argc > 1 && $argv[1] === 'list') {
+ $r = q("select account_id, account_roles, account_email from account where (account_roles & 4096) > 0");
+ if($r) {
+ foreach($r as $rr) {
+ echo sprintf('%4u %s %s', $rr['account_id'], $rr['account_email'],(($rr['account_roles'] & 4096) ? '*' : '')) . PHP_EOL;
+ }
+ }
+}
+
+
+if($argc > 2 && $argv[1] === 'add' && intval($argv[2])) {
+ $r = q("update account set account_roles = (account_roles | 4096) where account_id = %d",
+ intval($argv[2])
+ );
+}
+
+if($argc > 2 && $argv[1] === 'remove' && intval($argv[2])) {
+ $r = q("update account set account_roles = (account_roles - 4096) where account_id = %d and (account_roles & 4096) > 0",
+ intval($argv[2])
+ );
+}
diff --git a/util/hmessages.po b/util/hmessages.po
index 9561cab2b..91cc1f191 100644
--- a/util/hmessages.po
+++ b/util/hmessages.po
@@ -6,9 +6,9 @@
#, fuzzy
msgid ""
msgstr ""
-"Project-Id-Version: 3.9.2\n"
+"Project-Id-Version: 3.9.6\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-19 11:04+0200\n"
+"POT-Creation-Date: 2019-02-19 10:11+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"
@@ -150,11 +150,11 @@ msgid "Special - Group Repository"
msgstr ""
#: ../../Zotlabs/Access/PermissionRoles.php:306
-#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Connedit.php:935
#: ../../Zotlabs/Module/Profiles.php:795 ../../include/selectors.php:60
#: ../../include/selectors.php:77 ../../include/selectors.php:115
-#: ../../include/selectors.php:151 ../../include/event.php:1315
-#: ../../include/event.php:1322 ../../include/connections.php:703
+#: ../../include/selectors.php:151 ../../include/event.php:1327
+#: ../../include/event.php:1334 ../../include/connections.php:703
#: ../../include/connections.php:710
msgid "Other"
msgstr ""
@@ -163,22 +163,22 @@ msgstr ""
msgid "Custom/Expert Mode"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:34
+#: ../../Zotlabs/Module/Blocks.php:33 ../../Zotlabs/Module/Articles.php:42
#: ../../Zotlabs/Module/Editlayout.php:31 ../../Zotlabs/Module/Connect.php:17
#: ../../Zotlabs/Module/Achievements.php:15 ../../Zotlabs/Module/Hcard.php:12
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Profile.php:20
#: ../../Zotlabs/Module/Menu.php:91 ../../Zotlabs/Module/Layouts.php:31
-#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:37
+#: ../../Zotlabs/Module/Editwebpage.php:32 ../../Zotlabs/Module/Cards.php:42
#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Filestorage.php:51
-#: ../../addon/gallery/Mod_Gallery.php:47 ../../include/channel.php:1204
+#: ../../addon/gallery/Mod_Gallery.php:49 ../../include/channel.php:1253
msgid "Requested profile is not available."
msgstr ""
#: ../../Zotlabs/Module/Blocks.php:73 ../../Zotlabs/Module/Blocks.php:80
#: ../../Zotlabs/Module/Invite.php:21 ../../Zotlabs/Module/Invite.php:102
-#: ../../Zotlabs/Module/Articles.php:80 ../../Zotlabs/Module/Editlayout.php:67
-#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:119
-#: ../../Zotlabs/Module/Channel.php:286 ../../Zotlabs/Module/Channel.php:325
+#: ../../Zotlabs/Module/Articles.php:88 ../../Zotlabs/Module/Editlayout.php:67
+#: ../../Zotlabs/Module/Editlayout.php:90 ../../Zotlabs/Module/Channel.php:168
+#: ../../Zotlabs/Module/Channel.php:335 ../../Zotlabs/Module/Channel.php:374
#: ../../Zotlabs/Module/Settings.php:59 ../../Zotlabs/Module/Locs.php:87
#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Events.php:271
#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Regmod.php:20
@@ -191,17 +191,17 @@ msgstr ""
#: ../../Zotlabs/Module/Thing.php:300 ../../Zotlabs/Module/Thing.php:341
#: ../../Zotlabs/Module/Api.php:24 ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
-#: ../../Zotlabs/Module/Mood.php:124 ../../Zotlabs/Module/Connections.php:32
+#: ../../Zotlabs/Module/Mood.php:126 ../../Zotlabs/Module/Connections.php:32
#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Bookmarks.php:70
#: ../../Zotlabs/Module/Photos.php:69 ../../Zotlabs/Module/Wiki.php:59
#: ../../Zotlabs/Module/Wiki.php:285 ../../Zotlabs/Module/Wiki.php:428
#: ../../Zotlabs/Module/Pdledit.php:34 ../../Zotlabs/Module/Poke.php:157
#: ../../Zotlabs/Module/Profile_photo.php:302
#: ../../Zotlabs/Module/Profile_photo.php:315
-#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:229
-#: ../../Zotlabs/Module/Item.php:248 ../../Zotlabs/Module/Item.php:258
-#: ../../Zotlabs/Module/Item.php:1110 ../../Zotlabs/Module/Page.php:34
-#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:390
+#: ../../Zotlabs/Module/Authtest.php:16 ../../Zotlabs/Module/Item.php:376
+#: ../../Zotlabs/Module/Item.php:395 ../../Zotlabs/Module/Item.php:405
+#: ../../Zotlabs/Module/Item.php:1281 ../../Zotlabs/Module/Page.php:34
+#: ../../Zotlabs/Module/Page.php:133 ../../Zotlabs/Module/Connedit.php:399
#: ../../Zotlabs/Module/Chat.php:115 ../../Zotlabs/Module/Chat.php:120
#: ../../Zotlabs/Module/Menu.php:129 ../../Zotlabs/Module/Menu.php:140
#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
@@ -213,15 +213,15 @@ msgstr ""
#: ../../Zotlabs/Module/Editwebpage.php:89
#: ../../Zotlabs/Module/Editwebpage.php:107
#: ../../Zotlabs/Module/Editwebpage.php:121 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Cards.php:81 ../../Zotlabs/Module/Webpages.php:133
+#: ../../Zotlabs/Module/Cards.php:86 ../../Zotlabs/Module/Webpages.php:133
#: ../../Zotlabs/Module/Block.php:24 ../../Zotlabs/Module/Block.php:74
#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Sources.php:80
-#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Suggest.php:32
+#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Suggest.php:32
#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Mail.php:146
#: ../../Zotlabs/Module/Register.php:77
#: ../../Zotlabs/Module/Cover_photo.php:313
#: ../../Zotlabs/Module/Cover_photo.php:326
-#: ../../Zotlabs/Module/Display.php:448 ../../Zotlabs/Module/Network.php:17
+#: ../../Zotlabs/Module/Display.php:446 ../../Zotlabs/Module/Network.php:19
#: ../../Zotlabs/Module/Filestorage.php:15
#: ../../Zotlabs/Module/Filestorage.php:70
#: ../../Zotlabs/Module/Filestorage.php:96
@@ -232,13 +232,14 @@ msgstr ""
#: ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Notifications.php:11 ../../Zotlabs/Lib/Chatroom.php:133
#: ../../Zotlabs/Web/WebServer.php:123 ../../addon/keepout/keepout.php:36
-#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:40
-#: ../../include/attach.php:150 ../../include/attach.php:197
-#: ../../include/attach.php:270 ../../include/attach.php:379
-#: ../../include/attach.php:393 ../../include/attach.php:400
-#: ../../include/attach.php:482 ../../include/attach.php:1042
-#: ../../include/attach.php:1116 ../../include/attach.php:1281
-#: ../../include/items.php:3675 ../../include/photos.php:27
+#: ../../addon/flashcards/Mod_Flashcards.php:167
+#: ../../addon/openid/Mod_Id.php:53 ../../addon/pumpio/pumpio.php:44
+#: ../../include/attach.php:150 ../../include/attach.php:199
+#: ../../include/attach.php:272 ../../include/attach.php:381
+#: ../../include/attach.php:395 ../../include/attach.php:402
+#: ../../include/attach.php:484 ../../include/attach.php:1044
+#: ../../include/attach.php:1118 ../../include/attach.php:1283
+#: ../../include/items.php:3781 ../../include/photos.php:27
msgid "Permission denied."
msgstr ""
@@ -247,7 +248,7 @@ msgstr ""
msgid "Block Name"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2465
+#: ../../Zotlabs/Module/Blocks.php:154 ../../include/text.php:2534
msgid "Blocks"
msgstr ""
@@ -265,11 +266,11 @@ msgstr ""
msgid "Edited"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:108
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116
#: ../../Zotlabs/Module/Cdav.php:1230 ../../Zotlabs/Module/New_channel.php:189
-#: ../../Zotlabs/Module/Connedit.php:922 ../../Zotlabs/Module/Menu.php:181
+#: ../../Zotlabs/Module/Connedit.php:938 ../../Zotlabs/Module/Menu.php:181
#: ../../Zotlabs/Module/Layouts.php:185 ../../Zotlabs/Module/Profiles.php:798
-#: ../../Zotlabs/Module/Cards.php:109 ../../Zotlabs/Module/Webpages.php:254
+#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Webpages.php:254
#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:390
#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
@@ -283,21 +284,21 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:322
#: ../../Zotlabs/Module/Connections.php:342 ../../Zotlabs/Module/Wiki.php:211
#: ../../Zotlabs/Module/Wiki.php:384 ../../Zotlabs/Module/Menu.php:175
-#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:235
+#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Module/Group.php:252
#: ../../Zotlabs/Module/Editwebpage.php:142
#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Card_edit.php:99
-#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:534
-#: ../../Zotlabs/Lib/ThreadItem.php:130 ../../Zotlabs/Storage/Browser.php:290
+#: ../../Zotlabs/Module/Oauth.php:173 ../../Zotlabs/Lib/Apps.php:556
+#: ../../Zotlabs/Lib/ThreadItem.php:147 ../../Zotlabs/Storage/Browser.php:290
#: ../../Zotlabs/Widget/Cdav.php:126 ../../Zotlabs/Widget/Cdav.php:162
-#: ../../include/channel.php:1303 ../../include/channel.php:1307
+#: ../../include/channel.php:1352 ../../include/channel.php:1356
#: ../../include/menu.php:118
msgid "Edit"
msgstr ""
-#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1104
+#: ../../Zotlabs/Module/Blocks.php:161 ../../Zotlabs/Module/Photos.php:1117
#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194
#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Widget/Cdav.php:124
-#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1389
+#: ../../addon/hsse/hsse.php:186 ../../include/conversation.php:1392
msgid "Share"
msgstr ""
@@ -309,12 +310,12 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:176 ../../Zotlabs/Module/Thing.php:267
#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Connections.php:292
-#: ../../Zotlabs/Module/Photos.php:1205 ../../Zotlabs/Module/Connedit.php:655
-#: ../../Zotlabs/Module/Connedit.php:924 ../../Zotlabs/Module/Profiles.php:800
+#: ../../Zotlabs/Module/Photos.php:1220 ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:940 ../../Zotlabs/Module/Profiles.php:800
#: ../../Zotlabs/Module/Editwebpage.php:167
#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Card_edit.php:129
-#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:535
-#: ../../Zotlabs/Lib/ThreadItem.php:150 ../../Zotlabs/Storage/Browser.php:291
+#: ../../Zotlabs/Module/Oauth.php:174 ../../Zotlabs/Lib/Apps.php:557
+#: ../../Zotlabs/Lib/ThreadItem.php:167 ../../Zotlabs/Storage/Browser.php:291
#: ../../include/conversation.php:691 ../../include/conversation.php:736
msgid "Delete"
msgstr ""
@@ -360,20 +361,44 @@ msgstr[1] ""
msgid "Invite App"
msgstr ""
-#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51
#: ../../Zotlabs/Module/Cdav.php:839 ../../Zotlabs/Module/Cdav.php:848
#: ../../Zotlabs/Module/Permcats.php:62 ../../Zotlabs/Module/Lang.php:17
#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Pubstream.php:20
#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Tokens.php:99
#: ../../Zotlabs/Module/Oauth2.php:106 ../../Zotlabs/Module/Randprof.php:29
-#: ../../Zotlabs/Module/Mood.php:132 ../../Zotlabs/Module/Bookmarks.php:78
+#: ../../Zotlabs/Module/Mood.php:134 ../../Zotlabs/Module/Bookmarks.php:78
#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Pdledit.php:42
#: ../../Zotlabs/Module/Poke.php:165 ../../Zotlabs/Module/Chat.php:102
-#: ../../Zotlabs/Module/Notes.php:55 ../../Zotlabs/Module/Defperms.php:189
-#: ../../Zotlabs/Module/Group.php:101 ../../Zotlabs/Module/Cards.php:46
-#: ../../Zotlabs/Module/Webpages.php:48 ../../Zotlabs/Module/Sources.php:88
-#: ../../Zotlabs/Module/Suggest.php:40 ../../Zotlabs/Module/Probe.php:18
-#: ../../Zotlabs/Module/Oauth.php:100
+#: ../../Zotlabs/Module/Notes.php:56 ../../Zotlabs/Module/Affinity.php:52
+#: ../../Zotlabs/Module/Defperms.php:189 ../../Zotlabs/Module/Group.php:106
+#: ../../Zotlabs/Module/Cards.php:51 ../../Zotlabs/Module/Webpages.php:48
+#: ../../Zotlabs/Module/Sources.php:88 ../../Zotlabs/Module/Suggest.php:40
+#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Oauth.php:100
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22 ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/wppost/Mod_Wppost.php:41 ../../addon/nsfw/Mod_Nsfw.php:33
+#: ../../addon/ijpost/Mod_Ijpost.php:35 ../../addon/dwpost/Mod_Dwpost.php:36
+#: ../../addon/gallery/Mod_Gallery.php:58 ../../addon/ljpost/Mod_Ljpost.php:36
+#: ../../addon/startpage/Mod_Startpage.php:50
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+#: ../../addon/photocache/Mod_Photocache.php:42
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34 ../../addon/rtof/Mod_Rtof.php:36
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+#: ../../addon/superblock/Mod_Superblock.php:20
+#: ../../addon/nofed/Mod_Nofed.php:33 ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+#: ../../addon/libertree/Mod_Libertree.php:35
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+#: ../../addon/twitter/Mod_Twitter.php:78
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/xmpp/Mod_Xmpp.php:35 ../../addon/pumpio/Mod_Pumpio.php:53
msgid "Not Installed"
msgstr ""
@@ -432,7 +457,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Channels.php:147
#: ../../Zotlabs/Module/Admin/Themes.php:158
#: ../../Zotlabs/Module/Admin/Site.php:289
-#: ../../Zotlabs/Module/Admin/Addons.php:438
+#: ../../Zotlabs/Module/Admin/Addons.php:441
#: ../../Zotlabs/Module/Admin/Profs.php:178
#: ../../Zotlabs/Module/Admin/Account_edit.php:73
#: ../../Zotlabs/Module/Admin/Security.php:112
@@ -446,83 +471,84 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Account.php:103
#: ../../Zotlabs/Module/Settings/Profiles.php:50
#: ../../Zotlabs/Module/Settings/Manage.php:41
-#: ../../Zotlabs/Module/Settings/Featured.php:54
#: ../../Zotlabs/Module/Settings/Channel_home.php:89
#: ../../Zotlabs/Module/Settings/Directory.php:41
#: ../../Zotlabs/Module/Settings/Editor.php:41
#: ../../Zotlabs/Module/Settings/Display.php:189
#: ../../Zotlabs/Module/Settings/Network.php:61
#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326
-#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:565
+#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Import.php:574
#: ../../Zotlabs/Module/Oauth2.php:116 ../../Zotlabs/Module/Cal.php:344
-#: ../../Zotlabs/Module/Mood.php:156 ../../Zotlabs/Module/Photos.php:1084
-#: ../../Zotlabs/Module/Photos.php:1124 ../../Zotlabs/Module/Photos.php:1242
+#: ../../Zotlabs/Module/Mood.php:158 ../../Zotlabs/Module/Photos.php:1097
+#: ../../Zotlabs/Module/Photos.php:1138 ../../Zotlabs/Module/Photos.php:1257
#: ../../Zotlabs/Module/Wiki.php:215 ../../Zotlabs/Module/Pdledit.php:107
-#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Connedit.php:888
+#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Connedit.php:904
#: ../../Zotlabs/Module/Chat.php:211 ../../Zotlabs/Module/Chat.php:250
#: ../../Zotlabs/Module/Email_validation.php:40
-#: ../../Zotlabs/Module/Pconfig.php:111 ../../Zotlabs/Module/Defperms.php:265
-#: ../../Zotlabs/Module/Group.php:140 ../../Zotlabs/Module/Group.php:156
-#: ../../Zotlabs/Module/Profiles.php:723 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Sources.php:125 ../../Zotlabs/Module/Sources.php:162
-#: ../../Zotlabs/Module/Xchan.php:15 ../../Zotlabs/Module/Mail.php:431
-#: ../../Zotlabs/Module/Filestorage.php:183 ../../Zotlabs/Module/Rate.php:166
-#: ../../Zotlabs/Module/Oauth.php:111 ../../Zotlabs/Lib/ThreadItem.php:767
-#: ../../Zotlabs/Widget/Eventstools.php:16
+#: ../../Zotlabs/Module/Pconfig.php:116 ../../Zotlabs/Module/Affinity.php:87
+#: ../../Zotlabs/Module/Defperms.php:265 ../../Zotlabs/Module/Group.php:150
+#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Profiles.php:723
+#: ../../Zotlabs/Module/Editpost.php:85 ../../Zotlabs/Module/Sources.php:125
+#: ../../Zotlabs/Module/Sources.php:162 ../../Zotlabs/Module/Xchan.php:15
+#: ../../Zotlabs/Module/Mail.php:431 ../../Zotlabs/Module/Filestorage.php:183
+#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Oauth.php:111
+#: ../../Zotlabs/Lib/ThreadItem.php:795 ../../Zotlabs/Widget/Eventstools.php:16
#: ../../Zotlabs/Widget/Wiki_pages.php:42
#: ../../Zotlabs/Widget/Wiki_pages.php:99
#: ../../view/theme/redbasic_c/php/config.php:95
#: ../../view/theme/redbasic/php/config.php:94
-#: ../../addon/skeleton/skeleton.php:65 ../../addon/planets/planets.php:153
+#: ../../addon/skeleton/Mod_Skeleton.php:51
#: ../../addon/openclipatar/openclipatar.php:53
#: ../../addon/wppost/Mod_Wppost.php:97 ../../addon/nsfw/Mod_Nsfw.php:61
-#: ../../addon/ijpost/ijpost.php:89 ../../addon/dwpost/dwpost.php:89
+#: ../../addon/ijpost/Mod_Ijpost.php:72 ../../addon/dwpost/Mod_Dwpost.php:71
#: ../../addon/likebanner/likebanner.php:57
-#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:53
-#: ../../addon/ljpost/ljpost.php:86 ../../addon/startpage/Mod_Startpage.php:73
-#: ../../addon/diaspora/Mod_Diaspora.php:99 ../../addon/hzfiles/hzfiles.php:84
-#: ../../addon/visage/visage.php:170 ../../addon/nsabait/nsabait.php:161
-#: ../../addon/mailtest/mailtest.php:100
-#: ../../addon/openstreetmap/openstreetmap.php:168
-#: ../../addon/fuzzloc/fuzzloc.php:191 ../../addon/rtof/rtof.php:101
-#: ../../addon/jappixmini/jappixmini.php:371
-#: ../../addon/channelreputation/channelreputation.php:139
-#: ../../addon/nofed/nofed.php:80 ../../addon/redred/redred.php:119
+#: ../../addon/redphotos/redphotos.php:136 ../../addon/irc/irc.php:45
+#: ../../addon/ljpost/Mod_Ljpost.php:73
+#: ../../addon/startpage/Mod_Startpage.php:73
+#: ../../addon/diaspora/Mod_Diaspora.php:99
+#: ../../addon/photocache/Mod_Photocache.php:67
+#: ../../addon/hzfiles/hzfiles.php:84 ../../addon/mailtest/mailtest.php:100
+#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:56 ../../addon/rtof/Mod_Rtof.php:72
+#: ../../addon/jappixmini/Mod_Jappixmini.php:261
+#: ../../addon/channelreputation/channelreputation.php:140
+#: ../../addon/nofed/Mod_Nofed.php:53 ../../addon/redred/Mod_Redred.php:90
#: ../../addon/logrot/logrot.php:35 ../../addon/frphotos/frphotos.php:97
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:63
-#: ../../addon/chords/Mod_Chords.php:60 ../../addon/libertree/libertree.php:85
-#: ../../addon/flattrwidget/flattrwidget.php:124
-#: ../../addon/statusnet/statusnet.php:322
-#: ../../addon/statusnet/statusnet.php:380
-#: ../../addon/statusnet/statusnet.php:432
-#: ../../addon/statusnet/statusnet.php:900 ../../addon/twitter/twitter.php:221
-#: ../../addon/twitter/twitter.php:268
-#: ../../addon/smileybutton/smileybutton.php:219
-#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1263
+#: ../../addon/chords/Mod_Chords.php:60
+#: ../../addon/libertree/Mod_Libertree.php:70
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:92
+#: ../../addon/statusnet/Mod_Statusnet.php:193
+#: ../../addon/statusnet/Mod_Statusnet.php:251
+#: ../../addon/statusnet/Mod_Statusnet.php:306
+#: ../../addon/statusnet/statusnet.php:602
+#: ../../addon/twitter/Mod_Twitter.php:184
+#: ../../addon/smileybutton/Mod_Smileybutton.php:55
+#: ../../addon/cart/Settings/Cart.php:114 ../../addon/cart/cart.php:1264
#: ../../addon/cart/submodules/manualcat.php:248
#: ../../addon/cart/submodules/hzservices.php:640
#: ../../addon/cart/submodules/subscriptions.php:410
-#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/pageheader.php:48
-#: ../../addon/xmpp/xmpp.php:69 ../../addon/pumpio/pumpio.php:237
+#: ../../addon/piwik/piwik.php:95 ../../addon/pageheader/Mod_Pageheader.php:54
+#: ../../addon/xmpp/Mod_Xmpp.php:70 ../../addon/pumpio/Mod_Pumpio.php:115
#: ../../addon/redfiles/redfiles.php:124 ../../addon/hubwall/hubwall.php:95
#: ../../include/js_strings.php:22
msgid "Submit"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Articles.php:51
msgid "Articles App"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:44
+#: ../../Zotlabs/Module/Articles.php:52
msgid "Create interactive articles"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:107
+#: ../../Zotlabs/Module/Articles.php:115
msgid "Add Article"
msgstr ""
-#: ../../Zotlabs/Module/Articles.php:214 ../../Zotlabs/Lib/Apps.php:302
-#: ../../include/nav.php:482
+#: ../../Zotlabs/Module/Articles.php:222 ../../Zotlabs/Lib/Apps.php:324
+#: ../../include/nav.php:512
msgid "Articles"
msgstr ""
@@ -550,11 +576,11 @@ msgstr ""
#: ../../Zotlabs/Module/Editlayout.php:140 ../../Zotlabs/Module/Cdav.php:944
#: ../../Zotlabs/Module/Cdav.php:1233 ../../Zotlabs/Module/Article_edit.php:131
-#: ../../Zotlabs/Module/Admin/Addons.php:423
+#: ../../Zotlabs/Module/Admin/Addons.php:426
#: ../../Zotlabs/Module/Oauth2.php:117 ../../Zotlabs/Module/Oauth2.php:145
#: ../../Zotlabs/Module/Editblock.php:141 ../../Zotlabs/Module/Wiki.php:368
#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Connedit.php:925 ../../Zotlabs/Module/Fbrowser.php:66
+#: ../../Zotlabs/Module/Connedit.php:941 ../../Zotlabs/Module/Fbrowser.php:66
#: ../../Zotlabs/Module/Fbrowser.php:88 ../../Zotlabs/Module/Profiles.php:801
#: ../../Zotlabs/Module/Editwebpage.php:169
#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Filer.php:55
@@ -562,17 +588,18 @@ msgstr ""
#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Card_edit.php:131
#: ../../Zotlabs/Module/Oauth.php:112 ../../Zotlabs/Module/Oauth.php:138
#: ../../addon/hsse/hsse.php:209 ../../addon/hsse/hsse.php:258
-#: ../../include/conversation.php:1412 ../../include/conversation.php:1461
+#: ../../include/conversation.php:1415 ../../include/conversation.php:1464
msgid "Cancel"
msgstr ""
#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Subthread.php:86
-#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Cloud.php:126
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Dreport.php:10
-#: ../../Zotlabs/Module/Dreport.php:68 ../../Zotlabs/Module/Like.php:296
-#: ../../Zotlabs/Web/WebServer.php:122 ../../addon/redphotos/redphotos.php:119
-#: ../../addon/hzfiles/hzfiles.php:73 ../../addon/frphotos/frphotos.php:82
-#: ../../addon/redfiles/redfiles.php:109 ../../include/items.php:384
+#: ../../Zotlabs/Module/Import_items.php:120 ../../Zotlabs/Module/Share.php:71
+#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Group.php:98
+#: ../../Zotlabs/Module/Dreport.php:10 ../../Zotlabs/Module/Dreport.php:79
+#: ../../Zotlabs/Module/Like.php:301 ../../Zotlabs/Web/WebServer.php:122
+#: ../../addon/redphotos/redphotos.php:119 ../../addon/hzfiles/hzfiles.php:73
+#: ../../addon/frphotos/frphotos.php:82 ../../addon/redfiles/redfiles.php:109
+#: ../../include/items.php:416
msgid "Permission denied"
msgstr ""
@@ -584,8 +611,8 @@ msgstr ""
msgid "Profile Visibility Editor"
msgstr ""
-#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:337
-#: ../../include/channel.php:1651
+#: ../../Zotlabs/Module/Profperm.php:113 ../../Zotlabs/Lib/Apps.php:359
+#: ../../include/channel.php:1700
msgid "Profile"
msgstr ""
@@ -611,12 +638,12 @@ msgid "Summary: "
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:811 ../../Zotlabs/Module/Cdav.php:812
-#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Embedphotos.php:146
-#: ../../Zotlabs/Module/Photos.php:819 ../../Zotlabs/Module/Photos.php:1275
-#: ../../Zotlabs/Lib/Activity.php:858 ../../Zotlabs/Lib/Apps.php:994
-#: ../../Zotlabs/Lib/Apps.php:1078 ../../Zotlabs/Storage/Browser.php:164
+#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Embedphotos.php:154
+#: ../../Zotlabs/Module/Photos.php:832 ../../Zotlabs/Module/Photos.php:1296
+#: ../../Zotlabs/Lib/Activity.php:1011 ../../Zotlabs/Lib/Apps.php:1113
+#: ../../Zotlabs/Lib/Apps.php:1197 ../../Zotlabs/Storage/Browser.php:164
#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84
-#: ../../addon/pubcrawl/as.php:963 ../../include/conversation.php:1166
+#: ../../addon/pubcrawl/as.php:959 ../../include/conversation.php:1166
msgid "Unknown"
msgstr ""
@@ -685,14 +712,14 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:924 ../../Zotlabs/Module/Events.php:690
#: ../../Zotlabs/Module/Events.php:699 ../../Zotlabs/Module/Cal.php:338
-#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:973
+#: ../../Zotlabs/Module/Cal.php:345 ../../Zotlabs/Module/Photos.php:986
msgid "Previous"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:925 ../../Zotlabs/Module/Events.php:691
#: ../../Zotlabs/Module/Events.php:700 ../../Zotlabs/Module/Setup.php:263
#: ../../Zotlabs/Module/Cal.php:339 ../../Zotlabs/Module/Cal.php:346
-#: ../../Zotlabs/Module/Photos.php:982
+#: ../../Zotlabs/Module/Photos.php:995
msgid "Next"
msgstr ""
@@ -748,8 +775,8 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1215 ../../Zotlabs/Module/Sharedwithme.php:104
#: ../../Zotlabs/Module/Admin/Channels.php:159
#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
-#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:907
-#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:144
+#: ../../Zotlabs/Module/Wiki.php:218 ../../Zotlabs/Module/Connedit.php:923
+#: ../../Zotlabs/Module/Chat.php:259 ../../Zotlabs/Module/Group.php:154
#: ../../Zotlabs/Module/Oauth.php:113 ../../Zotlabs/Module/Oauth.php:139
#: ../../Zotlabs/Lib/NativeWikiPage.php:561
#: ../../Zotlabs/Storage/Browser.php:285
@@ -758,15 +785,15 @@ msgstr ""
msgid "Name"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:908
+#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:924
msgid "Organisation"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:909
+#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:925
msgid "Title"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Connedit.php:910
+#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Connedit.php:926
#: ../../Zotlabs/Module/Profiles.php:786
msgid "Phone"
msgstr ""
@@ -774,97 +801,97 @@ msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1219
#: ../../Zotlabs/Module/Admin/Accounts.php:171
#: ../../Zotlabs/Module/Admin/Accounts.php:183
-#: ../../Zotlabs/Module/Connedit.php:911 ../../Zotlabs/Module/Profiles.php:787
+#: ../../Zotlabs/Module/Connedit.php:927 ../../Zotlabs/Module/Profiles.php:787
#: ../../addon/openid/MysqlProvider.php:56
-#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/rtof.php:93
-#: ../../addon/redred/redred.php:107 ../../include/network.php:1779
+#: ../../addon/openid/MysqlProvider.php:57 ../../addon/rtof/Mod_Rtof.php:57
+#: ../../addon/redred/Mod_Redred.php:71 ../../include/network.php:1721
msgid "Email"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Connedit.php:912
+#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Connedit.php:928
#: ../../Zotlabs/Module/Profiles.php:788
msgid "Instant messenger"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Connedit.php:929
#: ../../Zotlabs/Module/Profiles.php:789
msgid "Website"
msgstr ""
#: ../../Zotlabs/Module/Cdav.php:1222 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:914 ../../Zotlabs/Module/Profiles.php:502
+#: ../../Zotlabs/Module/Connedit.php:930 ../../Zotlabs/Module/Profiles.php:502
#: ../../Zotlabs/Module/Profiles.php:790
msgid "Address"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Connedit.php:931
#: ../../Zotlabs/Module/Profiles.php:791
msgid "Note"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Connedit.php:916
-#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1308
+#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Profiles.php:792 ../../include/event.php:1320
#: ../../include/connections.php:696
msgid "Mobile"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Connedit.php:917
-#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1309
+#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Profiles.php:793 ../../include/event.php:1321
#: ../../include/connections.php:697
msgid "Home"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Connedit.php:918
-#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1312
+#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Profiles.php:794 ../../include/event.php:1324
#: ../../include/connections.php:700
msgid "Work"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Connedit.php:936
#: ../../Zotlabs/Module/Profiles.php:796
-#: ../../addon/jappixmini/jappixmini.php:368
+#: ../../addon/jappixmini/Mod_Jappixmini.php:216
msgid "Add Contact"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Connedit.php:921
+#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Connedit.php:937
#: ../../Zotlabs/Module/Profiles.php:797
msgid "Add Field"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Admin/Addons.php:453
+#: ../../Zotlabs/Module/Cdav.php:1231 ../../Zotlabs/Module/Admin/Addons.php:456
#: ../../Zotlabs/Module/Oauth2.php:58 ../../Zotlabs/Module/Oauth2.php:144
-#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Profiles.php:799
+#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Module/Profiles.php:799
#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137
-#: ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Lib/Apps.php:535
msgid "Update"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:942
msgid "P.O. Box"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:927
+#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:943
msgid "Additional"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:928
+#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:944
msgid "Street"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:945
msgid "Locality"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:946
msgid "Region"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:947
msgid "ZIP Code"
msgstr ""
-#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Connedit.php:948
#: ../../Zotlabs/Module/Profiles.php:757
msgid "Country"
msgstr ""
@@ -903,7 +930,7 @@ msgid ""
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:350
+#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:372
msgid "Permission Categories"
msgstr ""
@@ -912,58 +939,58 @@ msgid "Permission category name"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:121 ../../Zotlabs/Module/Tokens.php:181
-#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Defperms.php:266
+#: ../../Zotlabs/Module/Connedit.php:908 ../../Zotlabs/Module/Defperms.php:266
msgid "My Settings"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:123 ../../Zotlabs/Module/Tokens.php:183
-#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Defperms.php:264
+#: ../../Zotlabs/Module/Connedit.php:903 ../../Zotlabs/Module/Defperms.php:264
msgid "inherited"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:126 ../../Zotlabs/Module/Tokens.php:186
-#: ../../Zotlabs/Module/Connedit.php:894 ../../Zotlabs/Module/Defperms.php:269
+#: ../../Zotlabs/Module/Connedit.php:910 ../../Zotlabs/Module/Defperms.php:269
msgid "Individual Permissions"
msgstr ""
#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187
-#: ../../Zotlabs/Module/Connedit.php:895
+#: ../../Zotlabs/Module/Connedit.php:911
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
"individual settings. You can <strong>not</strong> change those settings here."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:39 ../../Zotlabs/Module/Ochannel.php:32
-#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/chess.php:508
+#: ../../Zotlabs/Module/Channel.php:41 ../../Zotlabs/Module/Ochannel.php:32
+#: ../../Zotlabs/Module/Chat.php:31 ../../addon/chess/Mod_Chess.php:343
msgid "You must be logged in to see this page."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:54 ../../Zotlabs/Module/Hcard.php:37
+#: ../../Zotlabs/Module/Channel.php:98 ../../Zotlabs/Module/Hcard.php:37
#: ../../Zotlabs/Module/Profile.php:45
msgid "Posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:61 ../../Zotlabs/Module/Hcard.php:44
+#: ../../Zotlabs/Module/Channel.php:105 ../../Zotlabs/Module/Hcard.php:44
#: ../../Zotlabs/Module/Profile.php:52
msgid "Only posts"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:116
+#: ../../Zotlabs/Module/Channel.php:165
msgid "Insufficient permissions. Request redirected to profile page."
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:133 ../../Zotlabs/Module/Network.php:163
+#: ../../Zotlabs/Module/Channel.php:182 ../../Zotlabs/Module/Network.php:173
msgid "Search Results For:"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:168 ../../Zotlabs/Module/Hq.php:134
+#: ../../Zotlabs/Module/Channel.php:217 ../../Zotlabs/Module/Hq.php:134
#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Display.php:80
-#: ../../Zotlabs/Module/Network.php:193
+#: ../../Zotlabs/Module/Network.php:203
msgid "Reset form"
msgstr ""
-#: ../../Zotlabs/Module/Channel.php:424 ../../Zotlabs/Module/Display.php:374
+#: ../../Zotlabs/Module/Channel.php:476 ../../Zotlabs/Module/Display.php:373
msgid ""
"You must enable javascript for your browser to be able to view this content."
msgstr ""
@@ -1050,7 +1077,7 @@ msgstr ""
msgid "You have got no unseen posts..."
msgstr ""
-#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:545
+#: ../../Zotlabs/Module/Search.php:17 ../../Zotlabs/Module/Photos.php:558
#: ../../Zotlabs/Module/Ratings.php:83 ../../Zotlabs/Module/Directory.php:67
#: ../../Zotlabs/Module/Directory.php:72 ../../Zotlabs/Module/Display.php:29
#: ../../Zotlabs/Module/Viewconnections.php:23
@@ -1058,9 +1085,9 @@ msgid "Public access denied."
msgstr ""
#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:338
-#: ../../Zotlabs/Lib/Apps.php:328 ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../Zotlabs/Widget/Activity_filter.php:150 ../../include/text.php:1068
-#: ../../include/text.php:1080 ../../include/acl_selectors.php:118
+#: ../../Zotlabs/Lib/Apps.php:350 ../../Zotlabs/Widget/Sitesearch.php:31
+#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../include/text.php:1084
+#: ../../include/text.php:1096 ../../include/acl_selectors.php:118
#: ../../include/nav.php:183
msgid "Search"
msgstr ""
@@ -1083,7 +1110,7 @@ msgstr ""
msgid "The unmoderated public stream of this hub"
msgstr ""
-#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:352
+#: ../../Zotlabs/Module/Pubstream.php:109 ../../Zotlabs/Lib/Apps.php:374
#: ../../Zotlabs/Widget/Notifications.php:142
msgid "Public Stream"
msgstr ""
@@ -1114,7 +1141,7 @@ msgstr ""
msgid "Manage Channel Locations"
msgstr ""
-#: ../../Zotlabs/Module/Locs.php:119 ../../Zotlabs/Module/Admin.php:115
+#: ../../Zotlabs/Module/Locs.php:119
msgid "Primary"
msgstr ""
@@ -1140,21 +1167,21 @@ msgstr ""
msgid "Use this form to drop the location if the hub is no longer operating."
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of Pinned Navbar Apps"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of App Tray Apps"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid ""
"Use arrows to move the corresponding app left (top) or right (bottom) in the "
"navbar"
msgstr ""
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid "Use arrows to move the corresponding app up or down in the app tray"
msgstr ""
@@ -1210,50 +1237,41 @@ msgstr ""
#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:255
#: ../../Zotlabs/Module/Settings/Channel.php:309
#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Import.php:554 ../../Zotlabs/Module/Import.php:558
-#: ../../Zotlabs/Module/Import.php:559 ../../Zotlabs/Module/Api.php:99
-#: ../../Zotlabs/Module/Photos.php:699 ../../Zotlabs/Module/Wiki.php:227
-#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:397
-#: ../../Zotlabs/Module/Connedit.php:780 ../../Zotlabs/Module/Menu.php:162
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:99
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
+#: ../../Zotlabs/Module/Connedit.php:796 ../../Zotlabs/Module/Menu.php:162
#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Defperms.php:197
#: ../../Zotlabs/Module/Profiles.php:681 ../../Zotlabs/Module/Sources.php:124
#: ../../Zotlabs/Module/Sources.php:159
#: ../../Zotlabs/Module/Filestorage.php:178
#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1630
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/Mod_Wppost.php:82
-#: ../../addon/wppost/Mod_Wppost.php:86 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/fuzzloc/fuzzloc.php:178
-#: ../../addon/rtof/rtof.php:81 ../../addon/rtof/rtof.php:85
-#: ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359
-#: ../../addon/channelreputation/channelreputation.php:111
-#: ../../addon/nofed/nofed.php:72 ../../addon/nofed/nofed.php:76
-#: ../../addon/redred/redred.php:95 ../../addon/redred/redred.php:99
-#: ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:246
-#: ../../addon/twitter/twitter.php:255 ../../addon/twitter/twitter.php:264
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
-#: ../../addon/cart/cart.php:1257
+#: ../../addon/cart/cart.php:1258
#: ../../addon/cart/submodules/paypalbutton.php:87
#: ../../addon/cart/submodules/paypalbutton.php:95
#: ../../addon/cart/submodules/manualcat.php:63
@@ -1264,9 +1282,8 @@ msgstr ""
#: ../../addon/cart/submodules/hzservices.php:650
#: ../../addon/cart/submodules/subscriptions.php:153
#: ../../addon/cart/submodules/subscriptions.php:425
-#: ../../addon/xmpp/xmpp.php:53 ../../addon/pumpio/pumpio.php:219
-#: ../../addon/pumpio/pumpio.php:223 ../../addon/pumpio/pumpio.php:227
-#: ../../addon/pumpio/pumpio.php:231 ../../include/dir_fns.php:143
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
msgid "No"
msgstr ""
@@ -1277,49 +1294,40 @@ msgstr ""
#: ../../Zotlabs/Module/Removeme.php:63 ../../Zotlabs/Module/Admin/Site.php:257
#: ../../Zotlabs/Module/Settings/Channel.php:309
#: ../../Zotlabs/Module/Settings/Display.php:89
-#: ../../Zotlabs/Module/Import.php:554 ../../Zotlabs/Module/Import.php:558
-#: ../../Zotlabs/Module/Import.php:559 ../../Zotlabs/Module/Api.php:98
-#: ../../Zotlabs/Module/Photos.php:699 ../../Zotlabs/Module/Wiki.php:227
-#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:397
+#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
+#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Module/Api.php:98
+#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Connedit.php:406
#: ../../Zotlabs/Module/Menu.php:162 ../../Zotlabs/Module/Menu.php:221
#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Sources.php:124 ../../Zotlabs/Module/Sources.php:159
#: ../../Zotlabs/Module/Filestorage.php:178
#: ../../Zotlabs/Module/Filestorage.php:186 ../../Zotlabs/Lib/Libzotdir.php:162
#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1630
+#: ../../Zotlabs/Storage/Browser.php:405 ../../boot.php:1634
#: ../../view/theme/redbasic_c/php/config.php:100
#: ../../view/theme/redbasic_c/php/config.php:115
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116
-#: ../../addon/planets/planets.php:149 ../../addon/wppost/Mod_Wppost.php:82
-#: ../../addon/wppost/Mod_Wppost.php:86 ../../addon/ijpost/ijpost.php:73
-#: ../../addon/ijpost/ijpost.php:85 ../../addon/dwpost/dwpost.php:73
-#: ../../addon/dwpost/dwpost.php:85 ../../addon/ljpost/ljpost.php:70
-#: ../../addon/ljpost/ljpost.php:82 ../../addon/visage/visage.php:166
-#: ../../addon/nsabait/nsabait.php:157 ../../addon/fuzzloc/fuzzloc.php:178
-#: ../../addon/rtof/rtof.php:81 ../../addon/rtof/rtof.php:85
-#: ../../addon/jappixmini/jappixmini.php:309
-#: ../../addon/jappixmini/jappixmini.php:313
-#: ../../addon/jappixmini/jappixmini.php:343
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
-#: ../../addon/jappixmini/jappixmini.php:359
-#: ../../addon/channelreputation/channelreputation.php:111
-#: ../../addon/nofed/nofed.php:72 ../../addon/nofed/nofed.php:76
-#: ../../addon/redred/redred.php:95 ../../addon/redred/redred.php:99
-#: ../../addon/libertree/libertree.php:69
-#: ../../addon/libertree/libertree.php:81
-#: ../../addon/flattrwidget/flattrwidget.php:120
-#: ../../addon/statusnet/statusnet.php:389
-#: ../../addon/statusnet/statusnet.php:411
-#: ../../addon/statusnet/statusnet.php:415
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:246
-#: ../../addon/twitter/twitter.php:255 ../../addon/twitter/twitter.php:264
-#: ../../addon/smileybutton/smileybutton.php:211
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/wppost/Mod_Wppost.php:82 ../../addon/wppost/Mod_Wppost.php:86
+#: ../../addon/ijpost/Mod_Ijpost.php:61 ../../addon/dwpost/Mod_Dwpost.php:60
+#: ../../addon/ljpost/Mod_Ljpost.php:62 ../../addon/rtof/Mod_Rtof.php:49
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
+#: ../../addon/channelreputation/channelreputation.php:108
+#: ../../addon/nofed/Mod_Nofed.php:42 ../../addon/redred/Mod_Redred.php:63
+#: ../../addon/libertree/Mod_Libertree.php:59
+#: ../../addon/statusnet/Mod_Statusnet.php:260
+#: ../../addon/statusnet/Mod_Statusnet.php:282
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:162
+#: ../../addon/twitter/Mod_Twitter.php:171
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
#: ../../addon/cart/Settings/Cart.php:59 ../../addon/cart/Settings/Cart.php:71
-#: ../../addon/cart/cart.php:1257
+#: ../../addon/cart/cart.php:1258
#: ../../addon/cart/submodules/paypalbutton.php:87
#: ../../addon/cart/submodules/paypalbutton.php:95
#: ../../addon/cart/submodules/manualcat.php:63
@@ -1330,9 +1338,8 @@ msgstr ""
#: ../../addon/cart/submodules/hzservices.php:650
#: ../../addon/cart/submodules/subscriptions.php:153
#: ../../addon/cart/submodules/subscriptions.php:425
-#: ../../addon/xmpp/xmpp.php:53 ../../addon/pumpio/pumpio.php:219
-#: ../../addon/pumpio/pumpio.php:223 ../../addon/pumpio/pumpio.php:227
-#: ../../addon/pumpio/pumpio.php:231 ../../include/dir_fns.php:143
+#: ../../addon/pumpio/Mod_Pumpio.php:94 ../../addon/pumpio/Mod_Pumpio.php:98
+#: ../../addon/pumpio/Mod_Pumpio.php:102 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
msgid "Yes"
msgstr ""
@@ -1443,8 +1450,8 @@ msgid "Event not found."
msgstr ""
#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Like.php:386 ../../include/conversation.php:119
-#: ../../include/text.php:2031 ../../include/event.php:1153
+#: ../../Zotlabs/Module/Like.php:394 ../../include/conversation.php:119
+#: ../../include/text.php:2094 ../../include/event.php:1165
msgid "event"
msgstr ""
@@ -1505,14 +1512,14 @@ msgstr ""
msgid "Edit Location"
msgstr ""
-#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Photos.php:1125
-#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:777
-#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1356
+#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Photos.php:1139
+#: ../../Zotlabs/Module/Webpages.php:262 ../../Zotlabs/Lib/ThreadItem.php:805
+#: ../../addon/hsse/hsse.php:153 ../../include/conversation.php:1359
msgid "Preview"
msgstr ""
#: ../../Zotlabs/Module/Events.php:481 ../../addon/hsse/hsse.php:225
-#: ../../include/conversation.php:1428
+#: ../../include/conversation.php:1431
msgid "Permission settings"
msgstr ""
@@ -1537,7 +1544,7 @@ msgid "Delete event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:663 ../../Zotlabs/Module/Cal.php:314
-#: ../../include/text.php:1850
+#: ../../include/text.php:1913
msgid "Link to Source"
msgstr ""
@@ -1554,7 +1561,7 @@ msgid "Create Event"
msgstr ""
#: ../../Zotlabs/Module/Events.php:692 ../../Zotlabs/Module/Cal.php:340
-#: ../../include/channel.php:1654
+#: ../../include/channel.php:1703
msgid "Export"
msgstr ""
@@ -1626,27 +1633,27 @@ msgstr ""
msgid "Hub not found."
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Tagger.php:69
-#: ../../Zotlabs/Module/Like.php:384 ../../Zotlabs/Lib/Activity.php:1570
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Tagger.php:69
+#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Lib/Activity.php:1959
#: ../../addon/redphotos/redphotohelper.php:71
-#: ../../addon/diaspora/Receiver.php:1539 ../../addon/pubcrawl/as.php:1511
-#: ../../include/conversation.php:116 ../../include/text.php:2028
+#: ../../addon/diaspora/Receiver.php:1551 ../../addon/pubcrawl/as.php:1504
+#: ../../include/conversation.php:116 ../../include/text.php:2091
msgid "photo"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:111 ../../Zotlabs/Module/Like.php:384
-#: ../../Zotlabs/Lib/Activity.php:1570 ../../addon/diaspora/Receiver.php:1539
-#: ../../addon/pubcrawl/as.php:1511 ../../include/conversation.php:144
-#: ../../include/text.php:2034
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Module/Like.php:392
+#: ../../Zotlabs/Lib/Activity.php:1959 ../../addon/diaspora/Receiver.php:1551
+#: ../../addon/pubcrawl/as.php:1504 ../../include/conversation.php:144
+#: ../../include/text.php:2097
msgid "status"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:142
+#: ../../Zotlabs/Module/Subthread.php:143
#, php-format
msgid "%1$s is following %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Subthread.php:144
+#: ../../Zotlabs/Module/Subthread.php:145
#, php-format
msgid "%1$s stopped following %2$s's %3$s"
msgstr ""
@@ -1667,9 +1674,9 @@ msgid "Insert web link"
msgstr ""
#: ../../Zotlabs/Module/Article_edit.php:117
-#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:700
-#: ../../Zotlabs/Module/Photos.php:1070 ../../Zotlabs/Module/Card_edit.php:117
-#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1424
+#: ../../Zotlabs/Module/Editblock.php:129 ../../Zotlabs/Module/Photos.php:713
+#: ../../Zotlabs/Module/Photos.php:1083 ../../Zotlabs/Module/Card_edit.php:117
+#: ../../addon/hsse/hsse.php:221 ../../include/conversation.php:1427
msgid "Title (optional)"
msgstr ""
@@ -1708,7 +1715,7 @@ msgid "Use this form to import existing posts and content from an export file."
msgstr ""
#: ../../Zotlabs/Module/Import_items.php:127
-#: ../../Zotlabs/Module/Import.php:548
+#: ../../Zotlabs/Module/Import.php:557
msgid "File to Upload"
msgstr ""
@@ -1719,8 +1726,8 @@ msgstr ""
#: ../../Zotlabs/Module/New_channel.php:157
#: ../../Zotlabs/Module/New_channel.php:164
-#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:256
-#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:293
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
+#: ../../Zotlabs/Widget/Notifications.php:162 ../../include/nav.php:323
msgid "Loading"
msgstr ""
@@ -1844,7 +1851,7 @@ msgid "NEW"
msgstr ""
#: ../../Zotlabs/Module/Sharedwithme.php:106
-#: ../../Zotlabs/Storage/Browser.php:287 ../../include/text.php:1457
+#: ../../Zotlabs/Storage/Browser.php:287 ../../include/text.php:1496
msgid "Size"
msgstr ""
@@ -1890,7 +1897,7 @@ msgid ""
msgstr ""
#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
-#: ../../Zotlabs/Module/Setup.php:756
+#: ../../Zotlabs/Module/Setup.php:761
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr ""
@@ -2034,229 +2041,235 @@ msgstr ""
msgid "PHP register_argc_argv"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:446
+#: ../../Zotlabs/Module/Setup.php:448
+msgid ""
+"This is not sufficient to upload larger images or files. You should be able "
+"to upload at least 4 MB at once."
+msgstr ""
+
+#: ../../Zotlabs/Module/Setup.php:450
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to "
"upload is set to %s. You are allowed to upload up to %d files at once."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:451
+#: ../../Zotlabs/Module/Setup.php:456
msgid "You can adjust these settings in the server php.ini file."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:453
+#: ../../Zotlabs/Module/Setup.php:458
msgid "PHP upload limits"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:476
+#: ../../Zotlabs/Module/Setup.php:481
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:477
+#: ../../Zotlabs/Module/Setup.php:482
msgid ""
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
"installation.php\"."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:480
+#: ../../Zotlabs/Module/Setup.php:485
msgid "Generate encryption keys"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:502
msgid "libCurl PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:498
+#: ../../Zotlabs/Module/Setup.php:503
msgid "GD graphics PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:499
+#: ../../Zotlabs/Module/Setup.php:504
msgid "OpenSSL PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:500
+#: ../../Zotlabs/Module/Setup.php:505
msgid "PDO database PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:501
+#: ../../Zotlabs/Module/Setup.php:506
msgid "mb_string PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:502
+#: ../../Zotlabs/Module/Setup.php:507
msgid "xml PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:503
+#: ../../Zotlabs/Module/Setup.php:508
msgid "zip PHP module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:512 ../../Zotlabs/Module/Setup.php:514
msgid "Apache mod_rewrite module"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:507
+#: ../../Zotlabs/Module/Setup.php:512
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+#: ../../Zotlabs/Module/Setup.php:518 ../../Zotlabs/Module/Setup.php:521
msgid "exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:518
msgid ""
"Error: exec is required but is either not installed or has been disabled in "
"php.ini"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+#: ../../Zotlabs/Module/Setup.php:524 ../../Zotlabs/Module/Setup.php:527
msgid "shell_exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:524
msgid ""
"Error: shell_exec is required but is either not installed or has been "
"disabled in php.ini"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:527
+#: ../../Zotlabs/Module/Setup.php:532
msgid "Error: libCURL PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:531
+#: ../../Zotlabs/Module/Setup.php:536
msgid ""
"Error: GD PHP module with JPEG support or ImageMagick graphics library "
"required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:535
+#: ../../Zotlabs/Module/Setup.php:540
msgid "Error: openssl PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:546
msgid ""
"Error: PDO database PHP module missing a driver for either mysql or pgsql."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:546
+#: ../../Zotlabs/Module/Setup.php:551
msgid "Error: PDO database PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:550
+#: ../../Zotlabs/Module/Setup.php:555
msgid "Error: mb_string PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:554
+#: ../../Zotlabs/Module/Setup.php:559
msgid "Error: xml PHP module required for DAV but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:558
+#: ../../Zotlabs/Module/Setup.php:563
msgid "Error: zip PHP module required but not installed."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:577 ../../Zotlabs/Module/Setup.php:586
+#: ../../Zotlabs/Module/Setup.php:582 ../../Zotlabs/Module/Setup.php:591
msgid ".htconfig.php is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:582
+#: ../../Zotlabs/Module/Setup.php:587
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\" "
"in the top folder of your web server and it is unable to do so."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:583
+#: ../../Zotlabs/Module/Setup.php:588
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:584
+#: ../../Zotlabs/Module/Setup.php:589
msgid "Please see install/INSTALL.txt for additional information."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:600
+#: ../../Zotlabs/Module/Setup.php:605
msgid ""
"This software uses the Smarty3 template engine to render its web views. "
"Smarty3 compiles templates to PHP to speed up rendering."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:606
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
"write access to the directory %s under the top level web folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:602 ../../Zotlabs/Module/Setup.php:623
+#: ../../Zotlabs/Module/Setup.php:607 ../../Zotlabs/Module/Setup.php:628
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:603
+#: ../../Zotlabs/Module/Setup.php:608
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:606
+#: ../../Zotlabs/Module/Setup.php:611
#, php-format
msgid "%s is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:622
+#: ../../Zotlabs/Module/Setup.php:627
msgid ""
"This software uses the store directory to save uploaded files. The web "
"server needs to have write access to the store directory under the top level "
"web folder"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:626
+#: ../../Zotlabs/Module/Setup.php:631
msgid "store is writable"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:663
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access "
"to this site."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:664
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:660
+#: ../../Zotlabs/Module/Setup.php:665
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:666
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:662
+#: ../../Zotlabs/Module/Setup.php:667
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:663
+#: ../../Zotlabs/Module/Setup.php:668
msgid ""
"Providers are available that issue free certificates which are browser-valid."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:665
+#: ../../Zotlabs/Module/Setup.php:670
msgid ""
"If you are confident that the certificate is valid and signed by a trusted "
"authority, check to see if you have failed to install an intermediate cert. "
@@ -2264,36 +2277,36 @@ msgid ""
"server communications."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:672
msgid "SSL certificate validation"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:673
+#: ../../Zotlabs/Module/Setup.php:678
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
"Test: "
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:676
+#: ../../Zotlabs/Module/Setup.php:681
msgid "Url rewrite is working"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:690
+#: ../../Zotlabs/Module/Setup.php:695
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:714 ../../addon/rendezvous/rendezvous.php:401
+#: ../../Zotlabs/Module/Setup.php:719 ../../addon/rendezvous/rendezvous.php:401
msgid "Errors encountered creating database tables."
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:754
+#: ../../Zotlabs/Module/Setup.php:759
msgid "<h1>What next?</h1>"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:755
+#: ../../Zotlabs/Module/Setup.php:760
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr ""
@@ -2458,7 +2471,7 @@ msgstr[1] ""
msgid "Account not found"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2497
+#: ../../Zotlabs/Module/Admin/Accounts.php:91 ../../include/channel.php:2562
#, php-format
msgid "Account '%s' deleted"
msgstr ""
@@ -2480,9 +2493,9 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:156
#: ../../Zotlabs/Module/Admin/Site.php:287
#: ../../Zotlabs/Module/Admin/Addons.php:341
-#: ../../Zotlabs/Module/Admin/Addons.php:436
+#: ../../Zotlabs/Module/Admin/Addons.php:439
#: ../../Zotlabs/Module/Admin/Security.php:92
-#: ../../Zotlabs/Module/Admin.php:140
+#: ../../Zotlabs/Module/Admin.php:138
msgid "Administration"
msgstr ""
@@ -2520,12 +2533,12 @@ msgid "Deny"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:176
-#: ../../Zotlabs/Module/Connedit.php:623
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Block"
msgstr ""
#: ../../Zotlabs/Module/Admin/Accounts.php:177
-#: ../../Zotlabs/Module/Connedit.php:623
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Unblock"
msgstr ""
@@ -2667,7 +2680,7 @@ msgstr ""
msgid "Disallow Code"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:391
+#: ../../Zotlabs/Module/Admin/Channels.php:154 ../../include/nav.php:421
msgid "Channel"
msgstr ""
@@ -2698,8 +2711,8 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:72
#: ../../Zotlabs/Module/Admin/Addons.php:259 ../../Zotlabs/Module/Thing.php:94
#: ../../Zotlabs/Module/Viewsrc.php:25 ../../Zotlabs/Module/Display.php:45
-#: ../../Zotlabs/Module/Display.php:452 ../../Zotlabs/Module/Filestorage.php:24
-#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3587
+#: ../../Zotlabs/Module/Display.php:450 ../../Zotlabs/Module/Filestorage.php:24
+#: ../../Zotlabs/Module/Admin.php:62 ../../include/items.php:3693
msgid "Item not found."
msgstr ""
@@ -2728,9 +2741,9 @@ msgid "Toggle"
msgstr ""
#: ../../Zotlabs/Module/Admin/Themes.php:125
-#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:314
+#: ../../Zotlabs/Module/Admin/Addons.php:344 ../../Zotlabs/Lib/Apps.php:336
#: ../../Zotlabs/Widget/Newmember.php:53
-#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../include/nav.php:97
+#: ../../Zotlabs/Widget/Settings_menu.php:61 ../../include/nav.php:97
msgid "Settings"
msgstr ""
@@ -2758,7 +2771,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:187
#: ../../view/theme/redbasic_c/php/config.php:15
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3087
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3210
msgid "Default"
msgstr ""
@@ -2831,7 +2844,7 @@ msgid "Advanced"
msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:297
-#: ../../addon/statusnet/statusnet.php:891
+#: ../../addon/statusnet/statusnet.php:593
msgid "Site name"
msgstr ""
@@ -3027,7 +3040,7 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Site.php:323
#: ../../Zotlabs/Module/Admin/Site.php:324
-#: ../../Zotlabs/Module/Connedit.php:876 ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
@@ -3212,7 +3225,7 @@ msgid "Plugin %s enabled."
msgstr ""
#: ../../Zotlabs/Module/Admin/Addons.php:342
-#: ../../Zotlabs/Module/Admin/Addons.php:437 ../../Zotlabs/Widget/Admin.php:27
+#: ../../Zotlabs/Module/Admin/Addons.php:440 ../../Zotlabs/Widget/Admin.php:27
msgid "Addons"
msgstr ""
@@ -3237,56 +3250,56 @@ msgid "Requires: "
msgstr ""
#: ../../Zotlabs/Module/Admin/Addons.php:358
-#: ../../Zotlabs/Module/Admin/Addons.php:442
+#: ../../Zotlabs/Module/Admin/Addons.php:445
msgid "Disabled - version incompatibility"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:411
+#: ../../Zotlabs/Module/Admin/Addons.php:414
msgid "Enter the public git repository URL of the addon repo."
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:412
+#: ../../Zotlabs/Module/Admin/Addons.php:415
msgid "Addon repo git URL"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:413
+#: ../../Zotlabs/Module/Admin/Addons.php:416
msgid "Custom repo name"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:413
+#: ../../Zotlabs/Module/Admin/Addons.php:416
msgid "(optional)"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:414
+#: ../../Zotlabs/Module/Admin/Addons.php:417
msgid "Download Addon Repo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:421
+#: ../../Zotlabs/Module/Admin/Addons.php:424
msgid "Install new repo"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Module/Admin/Addons.php:425 ../../Zotlabs/Lib/Apps.php:535
msgid "Install"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:445
+#: ../../Zotlabs/Module/Admin/Addons.php:448
msgid "Manage Repos"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:446
+#: ../../Zotlabs/Module/Admin/Addons.php:449
msgid "Installed Addon Repositories"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:447
+#: ../../Zotlabs/Module/Admin/Addons.php:450
msgid "Install a New Addon Repository"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:454
+#: ../../Zotlabs/Module/Admin/Addons.php:457
msgid "Switch branch"
msgstr ""
-#: ../../Zotlabs/Module/Admin/Addons.php:455
-#: ../../Zotlabs/Module/Photos.php:1022 ../../Zotlabs/Module/Tagrm.php:137
+#: ../../Zotlabs/Module/Admin/Addons.php:458
+#: ../../Zotlabs/Module/Photos.php:1035 ../../Zotlabs/Module/Tagrm.php:137
#: ../../addon/superblock/Mod_Superblock.php:91
msgid "Remove"
msgstr ""
@@ -3333,8 +3346,9 @@ msgstr ""
#: ../../Zotlabs/Module/Admin/Profs.php:94
#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
-#: ../../Zotlabs/Widget/Notes.php:23 ../../include/text.php:1069
-#: ../../include/text.php:1081
+#: ../../Zotlabs/Widget/Notes.php:23
+#: ../../addon/queueworker/Mod_Queueworker.php:102 ../../include/text.php:1085
+#: ../../include/text.php:1097
msgid "Save"
msgstr ""
@@ -3540,7 +3554,7 @@ msgid "Visible to:"
msgstr ""
#: ../../Zotlabs/Module/Lockview.php:117 ../../Zotlabs/Module/Lockview.php:153
-#: ../../Zotlabs/Module/Acl.php:120 ../../include/acl_selectors.php:88
+#: ../../Zotlabs/Module/Acl.php:121 ../../include/acl_selectors.php:88
msgctxt "acl"
msgid "Profile"
msgstr ""
@@ -3558,19 +3572,19 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:75
#: ../../Zotlabs/Module/Settings/Channel.php:78
#: ../../Zotlabs/Module/Settings/Channel.php:89
-#: ../../Zotlabs/Module/Connedit.php:712 ../../Zotlabs/Widget/Affinity.php:24
-#: ../../include/selectors.php:134 ../../include/channel.php:444
-#: ../../include/channel.php:445 ../../include/channel.php:452
+#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:32
+#: ../../include/selectors.php:134 ../../include/channel.php:493
+#: ../../include/channel.php:494 ../../include/channel.php:501
msgid "Friends"
msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:266
#: ../../Zotlabs/Module/Defperms.php:111
#: ../../addon/rendezvous/rendezvous.php:82
-#: ../../addon/openstreetmap/openstreetmap.php:184
+#: ../../addon/openstreetmap/openstreetmap.php:185
#: ../../addon/msgfooter/msgfooter.php:54 ../../addon/logrot/logrot.php:54
-#: ../../addon/twitter/twitter.php:775 ../../addon/piwik/piwik.php:116
-#: ../../addon/xmpp/xmpp.php:102
+#: ../../addon/twitter/twitter.php:605 ../../addon/piwik/piwik.php:116
+#: ../../addon/xmpp/xmpp.php:54
msgid "Settings updated."
msgstr ""
@@ -3644,7 +3658,7 @@ msgstr ""
msgid "Basic Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1528
+#: ../../Zotlabs/Module/Settings/Channel.php:499 ../../include/channel.php:1577
msgid "Full Name:"
msgstr ""
@@ -3861,7 +3875,7 @@ msgstr ""
#: ../../Zotlabs/Module/Settings/Channel.php:572
#: ../../Zotlabs/Module/Settings/Channel.php:573
#: ../../Zotlabs/Module/Settings/Channel.php:574
-#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
msgid "Recommended"
msgstr ""
@@ -4070,39 +4084,15 @@ msgstr ""
msgid "Channel Manager Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:23
-msgid "Affinity Slider settings updated."
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:38
+#: ../../Zotlabs/Module/Settings/Featured.php:24
msgid "No feature settings configured"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "Default maximum affinity level"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:45
-msgid "0-99 default 99"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "Default minimum affinity level"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:50
-msgid "0-99 - default 0"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:54
-msgid "Affinity Slider Settings"
-msgstr ""
-
-#: ../../Zotlabs/Module/Settings/Featured.php:67
+#: ../../Zotlabs/Module/Settings/Featured.php:33
msgid "Addon Settings"
msgstr ""
-#: ../../Zotlabs/Module/Settings/Featured.php:68
+#: ../../Zotlabs/Module/Settings/Featured.php:34
msgid "Please save/submit changes to any panel before opening another."
msgstr ""
@@ -4228,18 +4218,18 @@ msgstr ""
msgid "Stream Settings"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:140 ../../Zotlabs/Module/Photos.php:813
-#: ../../Zotlabs/Module/Photos.php:1352 ../../Zotlabs/Widget/Portfolio.php:87
+#: ../../Zotlabs/Module/Embedphotos.php:148 ../../Zotlabs/Module/Photos.php:826
+#: ../../Zotlabs/Module/Photos.php:1374 ../../Zotlabs/Widget/Portfolio.php:87
#: ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:156 ../../Zotlabs/Module/Photos.php:844
+#: ../../Zotlabs/Module/Embedphotos.php:164 ../../Zotlabs/Module/Photos.php:857
#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr ""
-#: ../../Zotlabs/Module/Embedphotos.php:158 ../../Zotlabs/Module/Photos.php:714
+#: ../../Zotlabs/Module/Embedphotos.php:166 ../../Zotlabs/Module/Photos.php:727
#: ../../Zotlabs/Module/Profile_photo.php:459
#: ../../Zotlabs/Module/Cover_photo.php:395
#: ../../Zotlabs/Storage/Browser.php:392 ../../Zotlabs/Widget/Cdav.php:133
@@ -4299,7 +4289,7 @@ msgstr ""
msgid "Expires (yyyy-mm-dd)"
msgstr ""
-#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:891
+#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907
msgid "Their Settings"
msgstr ""
@@ -4361,8 +4351,8 @@ msgid "URL for photo of thing (optional)"
msgstr ""
#: ../../Zotlabs/Module/Thing.php:319 ../../Zotlabs/Module/Thing.php:372
-#: ../../Zotlabs/Module/Photos.php:704 ../../Zotlabs/Module/Photos.php:1073
-#: ../../Zotlabs/Module/Connedit.php:677 ../../Zotlabs/Module/Chat.php:243
+#: ../../Zotlabs/Module/Photos.php:717 ../../Zotlabs/Module/Photos.php:1086
+#: ../../Zotlabs/Module/Connedit.php:690 ../../Zotlabs/Module/Chat.php:243
#: ../../Zotlabs/Module/Filestorage.php:170 ../../include/acl_selectors.php:123
msgid "Permissions"
msgstr ""
@@ -4383,56 +4373,56 @@ msgstr ""
msgid "Connection added."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:146
+#: ../../Zotlabs/Module/Import.php:155
#, php-format
msgid "Your service plan only allows %d channels."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:173
+#: ../../Zotlabs/Module/Import.php:182
msgid "No channel. Import failed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:513
+#: ../../Zotlabs/Module/Import.php:522
#: ../../addon/diaspora/import_diaspora.php:141
msgid "Import completed."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:541
+#: ../../Zotlabs/Module/Import.php:550
msgid "You must be logged in to use this feature."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:546
+#: ../../Zotlabs/Module/Import.php:555
msgid "Import Channel"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:547
+#: ../../Zotlabs/Module/Import.php:556
msgid ""
"Use this form to import an existing channel from a different server/hub. You "
"may retrieve the channel identity from the old server/hub via the network or "
"provide an export file."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:549
+#: ../../Zotlabs/Module/Import.php:558
msgid "Or provide the old server/hub details"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:551
+#: ../../Zotlabs/Module/Import.php:560
msgid "Your old identity address (xyz@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:552
+#: ../../Zotlabs/Module/Import.php:561
msgid "Your old login email address"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:553
+#: ../../Zotlabs/Module/Import.php:562
msgid "Your old login password"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:554
+#: ../../Zotlabs/Module/Import.php:563
msgid "Import a few months of posts if possible (limited by available memory"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:556
+#: ../../Zotlabs/Module/Import.php:565
msgid ""
"For either option, please choose whether to make this hub your new primary "
"address, or whether your old location should continue this role. You will be "
@@ -4440,44 +4430,44 @@ msgid ""
"location for files, photos, and media."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:558
+#: ../../Zotlabs/Module/Import.php:567
msgid "Make this hub my primary location"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:559
+#: ../../Zotlabs/Module/Import.php:568
msgid "Move this channel (disable all previous locations)"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:560
+#: ../../Zotlabs/Module/Import.php:569
msgid "Use this channel nickname instead of the one provided"
msgstr ""
-#: ../../Zotlabs/Module/Import.php:560
+#: ../../Zotlabs/Module/Import.php:569
msgid ""
"Leave blank to keep your existing channel nickname. You will be randomly "
"assigned a similar nickname if either name is already allocated on this site."
msgstr ""
-#: ../../Zotlabs/Module/Import.php:562
+#: ../../Zotlabs/Module/Import.php:571
msgid ""
"This process may take several minutes to complete. Please submit the form "
"only once and leave this page open until finished."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:35
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "Authentication failed."
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:75 ../../boot.php:1626
-#: ../../include/channel.php:2341
+#: ../../Zotlabs/Module/Rmagic.php:93 ../../boot.php:1630
+#: ../../include/channel.php:2405
msgid "Remote Authentication"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:76 ../../include/channel.php:2342
+#: ../../Zotlabs/Module/Rmagic.php:94 ../../include/channel.php:2406
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr ""
-#: ../../Zotlabs/Module/Rmagic.php:77 ../../include/channel.php:2343
+#: ../../Zotlabs/Module/Rmagic.php:95 ../../include/channel.php:2407
msgid "Authenticate"
msgstr ""
@@ -4504,7 +4494,7 @@ msgstr ""
#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141
-#: ../../addon/statusnet/statusnet.php:893 ../../addon/twitter/twitter.php:785
+#: ../../addon/statusnet/statusnet.php:595 ../../addon/twitter/twitter.php:615
msgid "Consumer Secret"
msgstr ""
@@ -4570,7 +4560,7 @@ msgstr ""
msgid "Permissions denied."
msgstr ""
-#: ../../Zotlabs/Module/Cal.php:343 ../../include/text.php:2489
+#: ../../Zotlabs/Module/Cal.php:343 ../../include/text.php:2558
msgid "Import"
msgstr ""
@@ -4628,21 +4618,21 @@ msgstr ""
msgid "Create Custom App"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:75 ../../include/conversation.php:268
+#: ../../Zotlabs/Module/Mood.php:76 ../../include/conversation.php:268
#, php-format
msgctxt "mood"
msgid "%1$s is %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:132
+#: ../../Zotlabs/Module/Mood.php:134
msgid "Mood App"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:133 ../../Zotlabs/Module/Mood.php:153
+#: ../../Zotlabs/Module/Mood.php:135 ../../Zotlabs/Module/Mood.php:155
msgid "Set your current mood and tell your friends"
msgstr ""
-#: ../../Zotlabs/Module/Mood.php:152 ../../Zotlabs/Lib/Apps.php:325
+#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:347
msgid "Mood"
msgstr ""
@@ -4683,7 +4673,7 @@ msgstr ""
#: ../../Zotlabs/Module/Connections.php:97
#: ../../Zotlabs/Module/Connections.php:111
-#: ../../Zotlabs/Module/Connedit.php:714 ../../Zotlabs/Widget/Affinity.php:26
+#: ../../Zotlabs/Module/Connedit.php:727 ../../Zotlabs/Widget/Affinity.php:34
msgid "All"
msgstr ""
@@ -4778,7 +4768,7 @@ msgid "Ignore connection"
msgstr ""
#: ../../Zotlabs/Module/Connections.php:308
-#: ../../Zotlabs/Module/Connedit.php:631
+#: ../../Zotlabs/Module/Connedit.php:644
msgid "Ignore"
msgstr ""
@@ -4786,8 +4776,8 @@ msgstr ""
msgid "Recent activity"
msgstr ""
-#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:308
-#: ../../include/text.php:981 ../../include/features.php:125
+#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:330
+#: ../../include/text.php:991 ../../include/features.php:125
msgid "Connections"
msgstr ""
@@ -4869,190 +4859,190 @@ msgstr ""
msgid "Delete Album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1085
+#: ../../Zotlabs/Module/Photos.php:174 ../../Zotlabs/Module/Photos.php:1098
msgid "Delete Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:556
+#: ../../Zotlabs/Module/Photos.php:569
msgid "No photos selected"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:605
+#: ../../Zotlabs/Module/Photos.php:618
msgid "Access to this item is restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:648
+#: ../../Zotlabs/Module/Photos.php:661
#, php-format
msgid "%1$.2f MB of %2$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:651
+#: ../../Zotlabs/Module/Photos.php:664
#, php-format
msgid "%1$.2f MB photo storage used."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:693
+#: ../../Zotlabs/Module/Photos.php:706
msgid "Upload Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:697
+#: ../../Zotlabs/Module/Photos.php:710
msgid "Enter an album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:698
+#: ../../Zotlabs/Module/Photos.php:711
msgid "or select an existing album (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:699
+#: ../../Zotlabs/Module/Photos.php:712
msgid "Create a status post for this upload"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:701
+#: ../../Zotlabs/Module/Photos.php:714
msgid "Description (optional)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:787
+#: ../../Zotlabs/Module/Photos.php:800
msgid "Show Newest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:789
+#: ../../Zotlabs/Module/Photos.php:802
msgid "Show Oldest First"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:846 ../../Zotlabs/Module/Photos.php:1383
+#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1405
msgid "Add Photos"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:894
+#: ../../Zotlabs/Module/Photos.php:907
msgid "Permission denied. Access to this item may be restricted."
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:896
+#: ../../Zotlabs/Module/Photos.php:909
msgid "Photo not available"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:954
+#: ../../Zotlabs/Module/Photos.php:967
msgid "Use as profile photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:955
+#: ../../Zotlabs/Module/Photos.php:968
msgid "Use as cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:962
+#: ../../Zotlabs/Module/Photos.php:975
msgid "Private Photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:977
+#: ../../Zotlabs/Module/Photos.php:990
msgid "View Full Size"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1059
+#: ../../Zotlabs/Module/Photos.php:1072
msgid "Edit photo"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1061
+#: ../../Zotlabs/Module/Photos.php:1074
msgid "Rotate CW (right)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1062
+#: ../../Zotlabs/Module/Photos.php:1075
msgid "Rotate CCW (left)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1065
+#: ../../Zotlabs/Module/Photos.php:1078
msgid "Move photo to album"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1066
+#: ../../Zotlabs/Module/Photos.php:1079
msgid "Enter a new album name"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1067
+#: ../../Zotlabs/Module/Photos.php:1080
msgid "or select an existing one (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1072
+#: ../../Zotlabs/Module/Photos.php:1085
msgid "Add a Tag"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1080
+#: ../../Zotlabs/Module/Photos.php:1093
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1083
+#: ../../Zotlabs/Module/Photos.php:1096
msgid "Flag as adult in album view"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1102 ../../Zotlabs/Lib/ThreadItem.php:289
+#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:306
msgid "I like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1103 ../../Zotlabs/Lib/ThreadItem.php:290
+#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:307
msgid "I don't like this (toggle)"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1105 ../../Zotlabs/Lib/ThreadItem.php:441
+#: ../../Zotlabs/Module/Photos.php:1118 ../../Zotlabs/Lib/ThreadItem.php:469
#: ../../include/conversation.php:787
msgid "Please wait"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1121 ../../Zotlabs/Module/Photos.php:1239
-#: ../../Zotlabs/Lib/ThreadItem.php:764
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Module/Photos.php:1254
+#: ../../Zotlabs/Lib/ThreadItem.php:792
msgid "This is you"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1123 ../../Zotlabs/Module/Photos.php:1241
-#: ../../Zotlabs/Lib/ThreadItem.php:766 ../../include/js_strings.php:6
+#: ../../Zotlabs/Module/Photos.php:1137 ../../Zotlabs/Module/Photos.php:1256
+#: ../../Zotlabs/Lib/ThreadItem.php:794 ../../include/js_strings.php:6
msgid "Comment"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:619
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
msgctxt "title"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1139 ../../include/conversation.php:619
+#: ../../Zotlabs/Module/Photos.php:1154 ../../include/conversation.php:619
msgctxt "title"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Agree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Disagree"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1140 ../../include/conversation.php:620
+#: ../../Zotlabs/Module/Photos.php:1155 ../../include/conversation.php:620
msgctxt "title"
msgid "Abstain"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Not attending"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1141 ../../include/conversation.php:621
+#: ../../Zotlabs/Module/Photos.php:1156 ../../include/conversation.php:621
msgctxt "title"
msgid "Might attend"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1158 ../../Zotlabs/Module/Photos.php:1170
-#: ../../Zotlabs/Lib/ThreadItem.php:214 ../../Zotlabs/Lib/ThreadItem.php:226
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Photos.php:1185
+#: ../../Zotlabs/Lib/ThreadItem.php:231 ../../Zotlabs/Lib/ThreadItem.php:243
msgid "View all"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1162 ../../Zotlabs/Lib/ThreadItem.php:218
-#: ../../include/conversation.php:1693 ../../include/channel.php:1546
+#: ../../Zotlabs/Module/Photos.php:1177 ../../Zotlabs/Lib/ThreadItem.php:235
+#: ../../include/conversation.php:1702 ../../include/channel.php:1595
#: ../../include/taxonomy.php:661
msgctxt "noun"
msgid "Like"
@@ -5060,47 +5050,48 @@ msgid_plural "Likes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1167 ../../Zotlabs/Lib/ThreadItem.php:223
-#: ../../include/conversation.php:1696
+#: ../../Zotlabs/Module/Photos.php:1182 ../../Zotlabs/Lib/ThreadItem.php:240
+#: ../../include/conversation.php:1705
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Module/Photos.php:1267
+#: ../../Zotlabs/Module/Photos.php:1288
msgid "Photo Tools"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1276
+#: ../../Zotlabs/Module/Photos.php:1297
msgid "In This Photo:"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1281
+#: ../../Zotlabs/Module/Photos.php:1302
msgid "Map"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1289 ../../Zotlabs/Lib/ThreadItem.php:429
+#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:457
msgctxt "noun"
msgid "Likes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1290 ../../Zotlabs/Lib/ThreadItem.php:430
+#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:458
msgctxt "noun"
msgid "Dislikes"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1295 ../../Zotlabs/Lib/ThreadItem.php:435
+#: ../../Zotlabs/Module/Photos.php:1316 ../../Zotlabs/Lib/ThreadItem.php:463
#: ../../include/acl_selectors.php:125
msgid "Close"
msgstr ""
-#: ../../Zotlabs/Module/Photos.php:1367 ../../Zotlabs/Module/Photos.php:1380
-#: ../../Zotlabs/Module/Photos.php:1381 ../../include/photos.php:668
+#: ../../Zotlabs/Module/Photos.php:1389 ../../Zotlabs/Module/Photos.php:1402
+#: ../../Zotlabs/Module/Photos.php:1403 ../../include/photos.php:670
msgid "Recent Photos"
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:35 ../../addon/cart/cart.php:1297
+#: ../../Zotlabs/Module/Wiki.php:35
+#: ../../addon/flashcards/Mod_Flashcards.php:34 ../../addon/cart/cart.php:1298
msgid "Profile Unavailable."
msgstr ""
@@ -5113,7 +5104,7 @@ msgid "Provide a wiki for your channel"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:77 ../../addon/cart/myshop.php:37
-#: ../../addon/cart/cart.php:1440
+#: ../../addon/cart/cart.php:1444
#: ../../addon/cart/submodules/paypalbutton.php:456
#: ../../addon/cart/manual_payments.php:93
msgid "Invalid channel"
@@ -5131,8 +5122,8 @@ msgstr ""
msgid "Error downloading wiki: "
msgstr ""
-#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:19
-#: ../../include/nav.php:506
+#: ../../Zotlabs/Module/Wiki.php:206 ../../Zotlabs/Widget/Wiki_list.php:15
+#: ../../include/nav.php:536
msgid "Wikis"
msgstr ""
@@ -5156,18 +5147,18 @@ msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
#: ../../Zotlabs/Widget/Wiki_pages.php:38
#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../addon/mdpost/mdpost.php:41
-#: ../../include/text.php:1892
+#: ../../include/text.php:1955
msgid "Markdown"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Module/Wiki.php:371
#: ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1890
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1953
msgid "BBcode"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:217 ../../Zotlabs/Widget/Wiki_pages.php:38
-#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1893
+#: ../../Zotlabs/Widget/Wiki_pages.php:95 ../../include/text.php:1956
msgid "Text"
msgstr ""
@@ -5233,14 +5224,14 @@ msgid "Embed image from photo albums"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:400 ../../addon/hsse/hsse.php:208
-#: ../../include/conversation.php:1411
+#: ../../include/conversation.php:1414
msgid "Embed an image from your albums"
msgstr ""
#: ../../Zotlabs/Module/Wiki.php:402 ../../Zotlabs/Module/Profile_photo.php:466
#: ../../Zotlabs/Module/Cover_photo.php:400 ../../addon/hsse/hsse.php:210
-#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1413
-#: ../../include/conversation.php:1460
+#: ../../addon/hsse/hsse.php:257 ../../include/conversation.php:1416
+#: ../../include/conversation.php:1463
msgid "OK"
msgstr ""
@@ -5335,6 +5326,15 @@ msgstr ""
msgid "You must be authenticated."
msgstr ""
+#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1473
+#, php-format
+msgid "&#x1f501; Repeated %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Module/Share.php:119
+msgid "Post repeated"
+msgstr ""
+
#: ../../Zotlabs/Module/Chanview.php:139
msgid "toggle full screen mode"
msgstr ""
@@ -5391,7 +5391,7 @@ msgstr ""
msgid "Poke somebody in your addressbook"
msgstr ""
-#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:326
+#: ../../Zotlabs/Module/Poke.php:199 ../../Zotlabs/Lib/Apps.php:348
#: ../../include/conversation.php:1098
msgid "Poke"
msgstr ""
@@ -5427,7 +5427,7 @@ msgstr ""
#: ../../Zotlabs/Module/Profile_photo.php:120
#: ../../Zotlabs/Module/Profile_photo.php:248
-#: ../../include/photo/photo_driver.php:741
+#: ../../include/photo/photo_driver.php:367
msgid "Profile Photos"
msgstr ""
@@ -5534,73 +5534,73 @@ msgstr ""
msgid "Online"
msgstr ""
-#: ../../Zotlabs/Module/Item.php:194
+#: ../../Zotlabs/Module/Item.php:341
msgid "Unable to locate original post."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:479
+#: ../../Zotlabs/Module/Item.php:628
msgid "Empty post discarded."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:866
+#: ../../Zotlabs/Module/Item.php:1037
msgid "Duplicate post suppressed."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1011
+#: ../../Zotlabs/Module/Item.php:1182
msgid "System error. Post not saved."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1047
+#: ../../Zotlabs/Module/Item.php:1218
msgid "Your comment is awaiting approval."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1164
+#: ../../Zotlabs/Module/Item.php:1335
msgid "Unable to obtain post information from database."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1171
+#: ../../Zotlabs/Module/Item.php:1342
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr ""
-#: ../../Zotlabs/Module/Item.php:1178
+#: ../../Zotlabs/Module/Item.php:1349
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:337
+#: ../../Zotlabs/Module/Ping.php:338
msgid "sent you a private message"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:390
+#: ../../Zotlabs/Module/Ping.php:394
msgid "added your channel"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:414
+#: ../../Zotlabs/Module/Ping.php:419
msgid "requires approval"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:424
+#: ../../Zotlabs/Module/Ping.php:429
msgid "g A l F d"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:442
+#: ../../Zotlabs/Module/Ping.php:447
msgid "[today]"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:451
+#: ../../Zotlabs/Module/Ping.php:457
msgid "posted an event"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:484
+#: ../../Zotlabs/Module/Ping.php:491
msgid "shared a file with you"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:659
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Private forum"
msgstr ""
-#: ../../Zotlabs/Module/Ping.php:659
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Public forum"
msgstr ""
@@ -5612,7 +5612,7 @@ msgstr ""
#: ../../Zotlabs/Module/Display.php:140 ../../Zotlabs/Module/Display.php:157
#: ../../Zotlabs/Module/Display.php:174
#: ../../Zotlabs/Lib/NativeWikiPage.php:521 ../../Zotlabs/Web/Router.php:185
-#: ../../include/help.php:132
+#: ../../addon/chess/Mod_Chess.php:447 ../../include/help.php:132
msgid "Page not found."
msgstr ""
@@ -5626,302 +5626,302 @@ msgid ""
"non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:80 ../../Zotlabs/Module/Defperms.php:67
+#: ../../Zotlabs/Module/Connedit.php:81 ../../Zotlabs/Module/Defperms.php:67
msgid "Could not access contact record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:110
+#: ../../Zotlabs/Module/Connedit.php:112
msgid "Could not locate selected profile."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:247
+#: ../../Zotlabs/Module/Connedit.php:256
msgid "Connection updated."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:249
+#: ../../Zotlabs/Module/Connedit.php:258
msgid "Failed to update connection record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:303
+#: ../../Zotlabs/Module/Connedit.php:312
msgid "is now connected to"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:428
+#: ../../Zotlabs/Module/Connedit.php:437
msgid "Could not access address book record."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:476
+#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489
msgid "Refresh failed - channel is currently unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:491 ../../Zotlabs/Module/Connedit.php:500
-#: ../../Zotlabs/Module/Connedit.php:509 ../../Zotlabs/Module/Connedit.php:518
-#: ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513
+#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "Unable to set address book parameters."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:555
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "Connection has been removed."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:595 ../../Zotlabs/Lib/Apps.php:319
+#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:341
#: ../../addon/openclipatar/openclipatar.php:57
#: ../../include/conversation.php:1038 ../../include/nav.php:106
msgid "View Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:598
+#: ../../Zotlabs/Module/Connedit.php:611
#, php-format
msgid "View %s's profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:602
+#: ../../Zotlabs/Module/Connedit.php:615
msgid "Refresh Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:605
+#: ../../Zotlabs/Module/Connedit.php:618
msgid "Fetch updated permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:609
+#: ../../Zotlabs/Module/Connedit.php:622
msgid "Refresh Photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:612
+#: ../../Zotlabs/Module/Connedit.php:625
msgid "Fetch updated photo"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:616 ../../include/conversation.php:1048
+#: ../../Zotlabs/Module/Connedit.php:629 ../../include/conversation.php:1048
msgid "Recent Activity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:619
+#: ../../Zotlabs/Module/Connedit.php:632
msgid "View recent posts and comments"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:626
+#: ../../Zotlabs/Module/Connedit.php:639
msgid "Block (or Unblock) all communications with this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:627
+#: ../../Zotlabs/Module/Connedit.php:640
msgid "This connection is blocked!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:631
+#: ../../Zotlabs/Module/Connedit.php:644
msgid "Unignore"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:634
+#: ../../Zotlabs/Module/Connedit.php:647
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:635
+#: ../../Zotlabs/Module/Connedit.php:648
msgid "This connection is ignored!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:639
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Unarchive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:639
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Archive"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:642
+#: ../../Zotlabs/Module/Connedit.php:655
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:643
+#: ../../Zotlabs/Module/Connedit.php:656
msgid "This connection is archived!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Unhide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Hide"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:650
+#: ../../Zotlabs/Module/Connedit.php:663
msgid "Hide or Unhide this connection from your other connections"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:651
+#: ../../Zotlabs/Module/Connedit.php:664
msgid "This connection is hidden!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:658
+#: ../../Zotlabs/Module/Connedit.php:671
msgid "Delete this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:666
+#: ../../Zotlabs/Module/Connedit.php:679
msgid "Fetch Vcard"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:669
+#: ../../Zotlabs/Module/Connedit.php:682
msgid "Fetch electronic calling card for this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:680
+#: ../../Zotlabs/Module/Connedit.php:693
msgid "Open Individual Permissions section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:703
+#: ../../Zotlabs/Module/Connedit.php:716
msgid "Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:706
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Open Set Affinity section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:710 ../../Zotlabs/Widget/Affinity.php:22
+#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:30
msgid "Me"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:711 ../../Zotlabs/Widget/Affinity.php:23
+#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:31
msgid "Family"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:713 ../../Zotlabs/Widget/Affinity.php:25
+#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:33
msgid "Acquaintances"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:740
+#: ../../Zotlabs/Module/Connedit.php:756
msgid "Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:743
+#: ../../Zotlabs/Module/Connedit.php:759
msgid "Open Custom Filter section by default"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:780
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Approve this connection"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:780
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Accept connection to allow communication"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:785
+#: ../../Zotlabs/Module/Connedit.php:801
msgid "Set Affinity"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:788
+#: ../../Zotlabs/Module/Connedit.php:804
msgid "Set Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:791
+#: ../../Zotlabs/Module/Connedit.php:807
msgid "Set Affinity & Profile"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:839
+#: ../../Zotlabs/Module/Connedit.php:855
msgid "This connection is unreachable from this location."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:840
+#: ../../Zotlabs/Module/Connedit.php:856
msgid "This connection may be unreachable from other channel locations."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:842
+#: ../../Zotlabs/Module/Connedit.php:858
msgid "Location independence is not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:848
+#: ../../Zotlabs/Module/Connedit.php:864
msgid ""
"This connection is unreachable from this location. Location independence is "
"not supported by their network."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:851 ../../Zotlabs/Module/Defperms.php:254
+#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:254
msgid "Connection Default Permissions"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:851 ../../include/items.php:4200
+#: ../../Zotlabs/Module/Connedit.php:867 ../../include/items.php:4308
#, php-format
msgid "Connection: %s"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:852 ../../Zotlabs/Module/Defperms.php:255
+#: ../../Zotlabs/Module/Connedit.php:868 ../../Zotlabs/Module/Defperms.php:255
msgid "Apply these permissions automatically"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:852
+#: ../../Zotlabs/Module/Connedit.php:868
msgid "Connection requests will be approved without your interaction"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:853 ../../Zotlabs/Module/Defperms.php:256
+#: ../../Zotlabs/Module/Connedit.php:869 ../../Zotlabs/Module/Defperms.php:256
msgid "Permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:854 ../../Zotlabs/Module/Defperms.php:257
+#: ../../Zotlabs/Module/Connedit.php:870 ../../Zotlabs/Module/Defperms.php:257
msgid "Add permission role"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:861
+#: ../../Zotlabs/Module/Connedit.php:877
msgid "This connection's primary address is"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:862
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "Available locations:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:867 ../../Zotlabs/Module/Defperms.php:261
+#: ../../Zotlabs/Module/Connedit.php:883 ../../Zotlabs/Module/Defperms.php:261
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:868
+#: ../../Zotlabs/Module/Connedit.php:884
msgid "Connection Tools"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:870
+#: ../../Zotlabs/Module/Connedit.php:886
msgid "Slide to adjust your degree of friendship"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:871 ../../Zotlabs/Module/Rate.php:155
+#: ../../Zotlabs/Module/Connedit.php:887 ../../Zotlabs/Module/Rate.php:155
#: ../../include/js_strings.php:20
msgid "Rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:872
+#: ../../Zotlabs/Module/Connedit.php:888
msgid "Slide to adjust your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:873 ../../Zotlabs/Module/Connedit.php:878
+#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
msgid "Optionally explain your rating"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:875
+#: ../../Zotlabs/Module/Connedit.php:891
msgid "Custom Filter"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:876
+#: ../../Zotlabs/Module/Connedit.php:892
msgid "Only import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:893
msgid "Do not import posts with this text"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:879
+#: ../../Zotlabs/Module/Connedit.php:895
msgid "This information is public!"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:900
msgid "Connection Pending Approval"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:889
+#: ../../Zotlabs/Module/Connedit.php:905
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:896
+#: ../../Zotlabs/Module/Connedit.php:912
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -5929,11 +5929,11 @@ msgid ""
"any impact unless the inherited setting changes."
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:897
+#: ../../Zotlabs/Module/Connedit.php:913
msgid "Last update:"
msgstr ""
-#: ../../Zotlabs/Module/Connedit.php:905
+#: ../../Zotlabs/Module/Connedit.php:921
msgid "Details"
msgstr ""
@@ -5976,8 +5976,8 @@ msgid "Please enter a link URL:"
msgstr ""
#: ../../Zotlabs/Module/Chat.php:221 ../../Zotlabs/Module/Mail.php:294
-#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:781
-#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1458
+#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Lib/ThreadItem.php:809
+#: ../../addon/hsse/hsse.php:255 ../../include/conversation.php:1461
msgid "Encrypt text"
msgstr ""
@@ -6010,13 +6010,13 @@ msgstr ""
msgid "min"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:320
-#: ../../include/features.php:391 ../../include/nav.php:414
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:342
+#: ../../include/features.php:383 ../../include/nav.php:444
msgid "Photos"
msgstr ""
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:315
-#: ../../Zotlabs/Storage/Browser.php:272 ../../include/nav.php:422
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:337
+#: ../../Zotlabs/Storage/Browser.php:272 ../../include/nav.php:452
msgid "Files"
msgstr ""
@@ -6056,7 +6056,7 @@ msgstr ""
msgid "Submit and proceed"
msgstr ""
-#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2466
+#: ../../Zotlabs/Module/Menu.php:170 ../../include/text.php:2535
msgid "Menus"
msgstr ""
@@ -6108,12 +6108,12 @@ msgstr ""
msgid "Allow bookmarks"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2467
+#: ../../Zotlabs/Module/Layouts.php:184 ../../include/text.php:2536
msgid "Layouts"
msgstr ""
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:323
-#: ../../include/nav.php:168 ../../include/nav.php:289
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:345
+#: ../../include/nav.php:168 ../../include/nav.php:319
#: ../../include/help.php:117 ../../include/help.php:125
msgid "Help"
msgstr ""
@@ -6130,11 +6130,11 @@ msgstr ""
msgid "Download PDL file"
msgstr ""
-#: ../../Zotlabs/Module/Notes.php:55
+#: ../../Zotlabs/Module/Notes.php:56
msgid "Notes App"
msgstr ""
-#: ../../Zotlabs/Module/Notes.php:56
+#: ../../Zotlabs/Module/Notes.php:57
msgid "A simple notes app with a widget (note: notes are not encrypted)"
msgstr ""
@@ -6179,13 +6179,13 @@ msgstr ""
msgid "Post not found."
msgstr ""
-#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:202
-#: ../../include/bbcode.php:354
+#: ../../Zotlabs/Module/Tagger.php:77 ../../include/markdown.php:200
+#: ../../include/bbcode.php:343
msgid "post"
msgstr ""
#: ../../Zotlabs/Module/Tagger.php:79 ../../include/conversation.php:146
-#: ../../include/text.php:2036
+#: ../../include/text.php:2099
msgid "comment"
msgstr ""
@@ -6194,21 +6194,72 @@ msgstr ""
msgid "%1$s tagged %2$s's %3$s with %4$s"
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:27 ../../Zotlabs/Module/Pconfig.php:63
+#: ../../Zotlabs/Module/Pconfig.php:32 ../../Zotlabs/Module/Pconfig.php:68
msgid "This setting requires special processing and editing has been blocked."
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:52
+#: ../../Zotlabs/Module/Pconfig.php:57
msgid "Configuration Editor"
msgstr ""
-#: ../../Zotlabs/Module/Pconfig.php:53
+#: ../../Zotlabs/Module/Pconfig.php:58
msgid ""
"Warning: Changing some settings could render your channel inoperable. Please "
"leave this page unless you are comfortable with and knowledgeable about how "
"to correctly use this feature."
msgstr ""
+#: ../../Zotlabs/Module/Affinity.php:35
+msgid "Affinity Tool settings updated."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:47
+msgid ""
+"This app presents a slider control in your connection editor and also on "
+"your network page. The slider represents your degree of friendship "
+"(affinity) with each connection. It allows you to zoom in or out and display "
+"conversations from only your closest friends or everybody in your stream."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:52
+msgid "Affinity Tool App"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:57
+msgid ""
+"The numbers below represent the minimum and maximum slider default positions "
+"for your network/stream page as a percentage."
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "Default maximum affinity level"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:64
+msgid "0-99 default 99"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "Default minimum affinity level"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:70
+msgid "0-99 - default 0"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid "Persistent affinity levels"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:76
+msgid ""
+"If disabled the max and min levels will be reset to default after page reload"
+msgstr ""
+
+#: ../../Zotlabs/Module/Affinity.php:84
+msgid "Affinity Tool Settings"
+msgstr ""
+
#: ../../Zotlabs/Module/Defperms.php:189
msgid "Default Permissions App"
msgstr ""
@@ -6252,76 +6303,76 @@ msgstr ""
msgid "Could not create privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:200
-#: ../../include/items.php:4167
+#: ../../Zotlabs/Module/Group.php:61 ../../Zotlabs/Module/Group.php:213
+#: ../../include/items.php:4275
msgid "Privacy group not found."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:77
+#: ../../Zotlabs/Module/Group.php:80
msgid "Privacy group updated."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:101
+#: ../../Zotlabs/Module/Group.php:106
msgid "Privacy Groups App"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:102
+#: ../../Zotlabs/Module/Group.php:107
msgid "Management of privacy groups"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:132 ../../Zotlabs/Module/Group.php:143
-#: ../../Zotlabs/Lib/Apps.php:339 ../../Zotlabs/Lib/Group.php:324
-#: ../../Zotlabs/Widget/Activity_filter.php:70 ../../include/nav.php:95
+#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153
+#: ../../Zotlabs/Lib/Apps.php:361 ../../Zotlabs/Lib/Group.php:324
+#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../include/nav.php:95
#: ../../include/group.php:320
msgid "Privacy Groups"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:133
+#: ../../Zotlabs/Module/Group.php:142
msgid "Add Group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:137
+#: ../../Zotlabs/Module/Group.php:146
msgid "Privacy group name"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:239
+#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256
msgid "Members are visible to other channels"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:145 ../../Zotlabs/Module/Help.php:81
+#: ../../Zotlabs/Module/Group.php:155 ../../Zotlabs/Module/Help.php:81
msgid "Members"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:170
+#: ../../Zotlabs/Module/Group.php:182
msgid "Privacy group removed."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:172
+#: ../../Zotlabs/Module/Group.php:185
msgid "Unable to remove privacy group."
msgstr ""
-#: ../../Zotlabs/Module/Group.php:234
+#: ../../Zotlabs/Module/Group.php:251
#, php-format
msgid "Privacy Group: %s"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:236
+#: ../../Zotlabs/Module/Group.php:253
msgid "Privacy group name: "
msgstr ""
-#: ../../Zotlabs/Module/Group.php:241
+#: ../../Zotlabs/Module/Group.php:258
msgid "Delete Group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:251
+#: ../../Zotlabs/Module/Group.php:269
msgid "Group members"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:253
+#: ../../Zotlabs/Module/Group.php:271
msgid "Not in this group"
msgstr ""
-#: ../../Zotlabs/Module/Group.php:285
+#: ../../Zotlabs/Module/Group.php:303
msgid "Click a channel to toggle membership"
msgstr ""
@@ -6416,7 +6467,7 @@ msgid "View this profile"
msgstr ""
#: ../../Zotlabs/Module/Profiles.php:725 ../../Zotlabs/Module/Profiles.php:824
-#: ../../include/channel.php:1326
+#: ../../include/channel.php:1375
msgid "Edit visibility"
msgstr ""
@@ -6428,7 +6479,7 @@ msgstr ""
msgid "Change cover photo"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1296
+#: ../../Zotlabs/Module/Profiles.php:728 ../../include/channel.php:1345
msgid "Change profile photo"
msgstr ""
@@ -6594,11 +6645,11 @@ msgstr ""
msgid "Communications"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1322
+#: ../../Zotlabs/Module/Profiles.php:820 ../../include/channel.php:1371
msgid "Profile Image"
msgstr ""
-#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1303
+#: ../../Zotlabs/Module/Profiles.php:830 ../../include/channel.php:1352
#: ../../include/nav.php:109
msgid "Edit Profiles"
msgstr ""
@@ -6678,7 +6729,7 @@ msgstr ""
msgid "Create a new channel"
msgstr ""
-#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:312
+#: ../../Zotlabs/Module/Manage.php:170 ../../Zotlabs/Lib/Apps.php:334
#: ../../include/nav.php:92
msgid "Channel Manager"
msgstr ""
@@ -6713,20 +6764,20 @@ msgstr ""
msgid "Delegated Channel"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:46
+#: ../../Zotlabs/Module/Cards.php:51
msgid "Cards App"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:47
+#: ../../Zotlabs/Module/Cards.php:52
msgid "Create personal planning cards"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:108
+#: ../../Zotlabs/Module/Cards.php:112
msgid "Add Card"
msgstr ""
-#: ../../Zotlabs/Module/Cards.php:203 ../../Zotlabs/Lib/Apps.php:303
-#: ../../include/nav.php:471
+#: ../../Zotlabs/Module/Cards.php:207 ../../Zotlabs/Lib/Apps.php:325
+#: ../../include/nav.php:501
msgid "Cards"
msgstr ""
@@ -6825,8 +6876,8 @@ msgstr ""
msgid "Export selected"
msgstr ""
-#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:316
-#: ../../include/nav.php:494
+#: ../../Zotlabs/Module/Webpages.php:252 ../../Zotlabs/Lib/Apps.php:338
+#: ../../include/nav.php:524
msgid "Webpages"
msgstr ""
@@ -6868,13 +6919,13 @@ msgid ""
"password."
msgstr ""
-#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:221
-#: ../../include/channel.php:606
+#: ../../Zotlabs/Module/Changeaddr.php:46 ../../include/channel.php:222
+#: ../../include/channel.php:655
msgid "Reserved nickname. Please choose another."
msgstr ""
-#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:226
-#: ../../include/channel.php:611
+#: ../../Zotlabs/Module/Changeaddr.php:51 ../../include/channel.php:227
+#: ../../include/channel.php:660
msgid ""
"Nickname has unsupported characters or is already being used on this site."
msgstr ""
@@ -6903,69 +6954,69 @@ msgstr ""
msgid "Edit post"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:45
+#: ../../Zotlabs/Module/Dreport.php:56
msgid "Invalid message"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:78
+#: ../../Zotlabs/Module/Dreport.php:90
msgid "no results"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:93
+#: ../../Zotlabs/Module/Dreport.php:104
msgid "channel sync processed"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:97
+#: ../../Zotlabs/Module/Dreport.php:108
msgid "queued"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:101
+#: ../../Zotlabs/Module/Dreport.php:112
msgid "posted"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:105
+#: ../../Zotlabs/Module/Dreport.php:116
msgid "accepted for delivery"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:109
+#: ../../Zotlabs/Module/Dreport.php:120
msgid "updated"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:112
+#: ../../Zotlabs/Module/Dreport.php:123
msgid "update ignored"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:115
+#: ../../Zotlabs/Module/Dreport.php:126
msgid "permission denied"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:119
+#: ../../Zotlabs/Module/Dreport.php:130
msgid "recipient not found"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:122
+#: ../../Zotlabs/Module/Dreport.php:133
msgid "mail recalled"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:125
+#: ../../Zotlabs/Module/Dreport.php:136
msgid "duplicate mail received"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:128
+#: ../../Zotlabs/Module/Dreport.php:139
msgid "mail delivered"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:148
+#: ../../Zotlabs/Module/Dreport.php:159
#, php-format
msgid "Delivery report for %1$s"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:151 ../../Zotlabs/Widget/Wiki_pages.php:41
+#: ../../Zotlabs/Module/Dreport.php:162 ../../Zotlabs/Widget/Wiki_pages.php:41
#: ../../Zotlabs/Widget/Wiki_pages.php:98
msgid "Options"
msgstr ""
-#: ../../Zotlabs/Module/Dreport.php:152
+#: ../../Zotlabs/Module/Dreport.php:163
msgid "Redeliver"
msgstr ""
@@ -6993,7 +7044,7 @@ msgstr ""
msgid "*"
msgstr ""
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:344
+#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:366
msgid "Channel Sources"
msgstr ""
@@ -7062,89 +7113,89 @@ msgstr ""
msgid "Unable to remove source."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:54
+#: ../../Zotlabs/Module/Like.php:56
msgid "Like/Dislike"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:59
+#: ../../Zotlabs/Module/Like.php:61
msgid "This action is restricted to members."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:60
+#: ../../Zotlabs/Module/Like.php:62
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
"\"register\">register as a new $Projectname member</a> to continue."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
-#: ../../Zotlabs/Module/Like.php:173
+#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137
+#: ../../Zotlabs/Module/Like.php:175
msgid "Invalid request."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:121 ../../include/conversation.php:122
+#: ../../Zotlabs/Module/Like.php:123 ../../include/conversation.php:122
msgid "channel"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:150
+#: ../../Zotlabs/Module/Like.php:152
msgid "thing"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:196
+#: ../../Zotlabs/Module/Like.php:198
msgid "Channel unavailable."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:244
+#: ../../Zotlabs/Module/Like.php:246
msgid "Previous action reversed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:438 ../../Zotlabs/Lib/Activity.php:1605
-#: ../../addon/diaspora/Receiver.php:1568 ../../addon/pubcrawl/as.php:1546
+#: ../../Zotlabs/Module/Like.php:447 ../../Zotlabs/Lib/Activity.php:1994
+#: ../../addon/diaspora/Receiver.php:1491 ../../addon/pubcrawl/as.php:1540
#: ../../include/conversation.php:160
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:440 ../../Zotlabs/Lib/Activity.php:1607
-#: ../../addon/pubcrawl/as.php:1548 ../../include/conversation.php:163
+#: ../../Zotlabs/Module/Like.php:449 ../../Zotlabs/Lib/Activity.php:1996
+#: ../../addon/pubcrawl/as.php:1542 ../../include/conversation.php:163
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:442
+#: ../../Zotlabs/Module/Like.php:451
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:444
+#: ../../Zotlabs/Module/Like.php:453
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:446
+#: ../../Zotlabs/Module/Like.php:455
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:448 ../../addon/diaspora/Receiver.php:2111
+#: ../../Zotlabs/Module/Like.php:457 ../../addon/diaspora/Receiver.php:2137
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:450 ../../addon/diaspora/Receiver.php:2113
+#: ../../Zotlabs/Module/Like.php:459 ../../addon/diaspora/Receiver.php:2139
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:452 ../../addon/diaspora/Receiver.php:2115
+#: ../../Zotlabs/Module/Like.php:461 ../../addon/diaspora/Receiver.php:2141
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr ""
-#: ../../Zotlabs/Module/Like.php:564
+#: ../../Zotlabs/Module/Like.php:572
msgid "Action completed."
msgstr ""
-#: ../../Zotlabs/Module/Like.php:565
+#: ../../Zotlabs/Module/Like.php:573
msgid "Thank you."
msgstr ""
@@ -7171,12 +7222,12 @@ msgstr ""
msgid "Homepage: "
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:323 ../../include/channel.php:1571
+#: ../../Zotlabs/Module/Directory.php:323 ../../include/channel.php:1620
msgid "Age:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1398
-#: ../../include/event.php:54 ../../include/event.php:86
+#: ../../Zotlabs/Module/Directory.php:328 ../../include/channel.php:1447
+#: ../../include/event.php:58 ../../include/event.php:90
msgid "Location:"
msgstr ""
@@ -7184,17 +7235,17 @@ msgstr ""
msgid "Description:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1600
+#: ../../Zotlabs/Module/Directory.php:339 ../../include/channel.php:1649
msgid "Hometown:"
msgstr ""
-#: ../../Zotlabs/Module/Directory.php:341 ../../include/channel.php:1606
+#: ../../Zotlabs/Module/Directory.php:341 ../../include/channel.php:1655
msgid "About:"
msgstr ""
#: ../../Zotlabs/Module/Directory.php:342 ../../Zotlabs/Module/Suggest.php:71
#: ../../Zotlabs/Widget/Follow.php:32 ../../Zotlabs/Widget/Suggestions.php:44
-#: ../../include/conversation.php:1058 ../../include/channel.php:1383
+#: ../../include/conversation.php:1058 ../../include/channel.php:1432
#: ../../include/connections.php:110
msgid "Connect"
msgstr ""
@@ -7361,7 +7412,7 @@ msgid "Send"
msgstr ""
#: ../../Zotlabs/Module/Mail.php:292 ../../Zotlabs/Module/Mail.php:434
-#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1453
+#: ../../addon/hsse/hsse.php:250 ../../include/conversation.php:1456
msgid "Set expiration date"
msgstr ""
@@ -7453,12 +7504,12 @@ msgstr ""
msgid "menu"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:183
+#: ../../Zotlabs/Module/Impel.php:185
#, php-format
msgid "%s element installed"
msgstr ""
-#: ../../Zotlabs/Module/Impel.php:186
+#: ../../Zotlabs/Module/Impel.php:188
#, php-format
msgid "%s element installation failed"
msgstr ""
@@ -7487,7 +7538,7 @@ msgstr ""
msgid "or select an existing folder (doubleclick)"
msgstr ""
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:164
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:181
msgid "Save to Folder"
msgstr ""
@@ -7606,7 +7657,7 @@ msgstr ""
msgid "yes"
msgstr ""
-#: ../../Zotlabs/Module/Register.php:289 ../../boot.php:1605
+#: ../../Zotlabs/Module/Register.php:289 ../../boot.php:1609
#: ../../include/nav.php:156
msgid "Register"
msgstr ""
@@ -7622,30 +7673,30 @@ msgstr ""
msgid "Cover Photos"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:269 ../../include/items.php:4544
+#: ../../Zotlabs/Module/Cover_photo.php:269 ../../include/items.php:4652
msgid "female"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:270 ../../include/items.php:4545
+#: ../../Zotlabs/Module/Cover_photo.php:270 ../../include/items.php:4653
#, php-format
msgid "%1$s updated her %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:271 ../../include/items.php:4546
+#: ../../Zotlabs/Module/Cover_photo.php:271 ../../include/items.php:4654
msgid "male"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:272 ../../include/items.php:4547
+#: ../../Zotlabs/Module/Cover_photo.php:272 ../../include/items.php:4655
#, php-format
msgid "%1$s updated his %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:274 ../../include/items.php:4549
+#: ../../Zotlabs/Module/Cover_photo.php:274 ../../include/items.php:4657
#, php-format
msgid "%1$s updated their %2$s"
msgstr ""
-#: ../../Zotlabs/Module/Cover_photo.php:276 ../../include/channel.php:2088
+#: ../../Zotlabs/Module/Cover_photo.php:276 ../../include/channel.php:2137
msgid "cover photo"
msgstr ""
@@ -7661,7 +7712,7 @@ msgstr ""
msgid "Documentation Search"
msgstr ""
-#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:404
+#: ../../Zotlabs/Module/Help.php:80 ../../include/nav.php:434
msgid "About"
msgstr ""
@@ -7685,11 +7736,11 @@ msgstr ""
msgid "Contents"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:393
+#: ../../Zotlabs/Module/Display.php:391
msgid "Article"
msgstr ""
-#: ../../Zotlabs/Module/Display.php:445
+#: ../../Zotlabs/Module/Display.php:443
msgid "Item has been removed."
msgstr ""
@@ -7705,27 +7756,27 @@ msgstr ""
msgid "Select a tag to remove: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:107
+#: ../../Zotlabs/Module/Network.php:109
msgid "No such group"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:148
+#: ../../Zotlabs/Module/Network.php:158
msgid "No such channel"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:231
+#: ../../Zotlabs/Module/Network.php:242
msgid "Privacy group is empty"
msgstr ""
-#: ../../Zotlabs/Module/Network.php:242
+#: ../../Zotlabs/Module/Network.php:252
msgid "Privacy group: "
msgstr ""
-#: ../../Zotlabs/Module/Network.php:291 ../../addon/redred/redred.php:65
+#: ../../Zotlabs/Module/Network.php:325 ../../addon/redred/Mod_Redred.php:29
msgid "Invalid channel."
msgstr ""
-#: ../../Zotlabs/Module/Acl.php:359
+#: ../../Zotlabs/Module/Acl.php:360
msgid "network"
msgstr ""
@@ -7829,47 +7880,43 @@ msgstr ""
msgid "Expiring accounts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:116
-msgid "Clones"
-msgstr ""
-
-#: ../../Zotlabs/Module/Admin.php:122
+#: ../../Zotlabs/Module/Admin.php:120
msgid "Message queues"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:136
+#: ../../Zotlabs/Module/Admin.php:134
msgid "Your software should be updated"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:141
+#: ../../Zotlabs/Module/Admin.php:139
msgid "Summary"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:144
+#: ../../Zotlabs/Module/Admin.php:142
msgid "Registered accounts"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:145
+#: ../../Zotlabs/Module/Admin.php:143
msgid "Pending registrations"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:146
+#: ../../Zotlabs/Module/Admin.php:144
msgid "Registered channels"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:147
+#: ../../Zotlabs/Module/Admin.php:145
msgid "Active addons"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:148
+#: ../../Zotlabs/Module/Admin.php:146
msgid "Version"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:149
+#: ../../Zotlabs/Module/Admin.php:147
msgid "Repository version (master)"
msgstr ""
-#: ../../Zotlabs/Module/Admin.php:150
+#: ../../Zotlabs/Module/Admin.php:148
msgid "Repository version (dev)"
msgstr ""
@@ -7922,7 +7969,7 @@ msgid ""
"Password reset failed."
msgstr ""
-#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1634
+#: ../../Zotlabs/Module/Lostpass.php:91 ../../boot.php:1638
msgid "Password Reset"
msgstr ""
@@ -7984,7 +8031,7 @@ msgid "OAuth authentication tokens for mobile and remote apps"
msgstr ""
#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140
-#: ../../addon/statusnet/statusnet.php:894 ../../addon/twitter/twitter.php:784
+#: ../../addon/statusnet/statusnet.php:596 ../../addon/twitter/twitter.php:614
msgid "Consumer Key"
msgstr ""
@@ -8001,14 +8048,39 @@ msgid "Connected OAuth Apps"
msgstr ""
#: ../../Zotlabs/Module/Notifications.php:60
-#: ../../Zotlabs/Lib/ThreadItem.php:422
+#: ../../Zotlabs/Lib/ThreadItem.php:450
msgid "Mark all seen"
msgstr ""
-#: ../../Zotlabs/Lib/Activity.php:1417 ../../Zotlabs/Lib/Activity.php:1614
-#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1221
-#: ../../addon/pubcrawl/as.php:1376 ../../addon/pubcrawl/as.php:1555
-#: ../../include/network.php:1778
+#: ../../Zotlabs/Lib/Activity.php:1458
+#, php-format
+msgid "Likes %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1461
+#, php-format
+msgid "Doesn't like %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1464
+#, php-format
+msgid "Will attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1467
+#, php-format
+msgid "Will not attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1470
+#, php-format
+msgid "May attend %1$s's %2$s"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Activity.php:1806 ../../Zotlabs/Lib/Activity.php:2003
+#: ../../widget/Netselect/Netselect.php:42 ../../addon/pubcrawl/as.php:1214
+#: ../../addon/pubcrawl/as.php:1369 ../../addon/pubcrawl/as.php:1549
+#: ../../include/network.php:1720
msgid "ActivityPub"
msgstr ""
@@ -8036,179 +8108,183 @@ msgstr ""
msgid "5. Wizard - I probably know more than you do"
msgstr ""
-#: ../../Zotlabs/Lib/Libzot.php:663 ../../include/zot.php:800
+#: ../../Zotlabs/Lib/Libzot.php:652 ../../include/zot.php:802
msgid "Unable to verify channel signature"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:301
+#: ../../Zotlabs/Lib/Apps.php:322
msgid "Apps"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:304
+#: ../../Zotlabs/Lib/Apps.php:323
+msgid "Affinity Tool"
+msgstr ""
+
+#: ../../Zotlabs/Lib/Apps.php:326
msgid "Site Admin"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:305 ../../addon/buglink/buglink.php:16
+#: ../../Zotlabs/Lib/Apps.php:327 ../../addon/buglink/buglink.php:16
msgid "Report Bug"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:306 ../../include/nav.php:460
+#: ../../Zotlabs/Lib/Apps.php:328 ../../include/nav.php:490
msgid "Bookmarks"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:307 ../../Zotlabs/Widget/Chatroom_list.php:16
-#: ../../include/nav.php:447 ../../include/nav.php:450
+#: ../../Zotlabs/Lib/Apps.php:329 ../../Zotlabs/Widget/Chatroom_list.php:16
+#: ../../include/nav.php:477 ../../include/nav.php:480
msgid "Chatrooms"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:309
+#: ../../Zotlabs/Lib/Apps.php:331
msgid "Remote Diagnostics"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:310 ../../include/features.php:373
+#: ../../Zotlabs/Lib/Apps.php:332 ../../include/features.php:365
msgid "Suggest Channels"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:311 ../../boot.php:1625 ../../include/nav.php:118
+#: ../../Zotlabs/Lib/Apps.php:333 ../../boot.php:1629 ../../include/nav.php:118
#: ../../include/nav.php:122
msgid "Login"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:313
+#: ../../Zotlabs/Lib/Apps.php:335
msgid "Stream"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:317 ../../include/nav.php:509
+#: ../../Zotlabs/Lib/Apps.php:339 ../../include/nav.php:539
msgid "Wiki"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:318 ../../include/features.php:96
+#: ../../Zotlabs/Lib/Apps.php:340 ../../include/features.php:96
msgid "Channel Home"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:321 ../../include/features.php:269
+#: ../../Zotlabs/Lib/Apps.php:343 ../../include/features.php:269
msgid "Events"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:322 ../../include/features.php:176
+#: ../../Zotlabs/Lib/Apps.php:344 ../../include/features.php:176
msgid "Directory"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:324
+#: ../../Zotlabs/Lib/Apps.php:346
msgid "Mail"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:327
+#: ../../Zotlabs/Lib/Apps.php:349
msgid "Chat"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:329
+#: ../../Zotlabs/Lib/Apps.php:351
msgid "Probe"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:330
+#: ../../Zotlabs/Lib/Apps.php:352
msgid "Suggest"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:331
+#: ../../Zotlabs/Lib/Apps.php:353
msgid "Random Channel"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:332
+#: ../../Zotlabs/Lib/Apps.php:354
msgid "Invite"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:333 ../../Zotlabs/Widget/Admin.php:26
+#: ../../Zotlabs/Lib/Apps.php:355 ../../Zotlabs/Widget/Admin.php:26
msgid "Features"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:334 ../../addon/openid/MysqlProvider.php:69
+#: ../../Zotlabs/Lib/Apps.php:356 ../../addon/openid/MysqlProvider.php:69
msgid "Language"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:335
+#: ../../Zotlabs/Lib/Apps.php:357
msgid "Post"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:336 ../../addon/openid/MysqlProvider.php:58
+#: ../../Zotlabs/Lib/Apps.php:358 ../../addon/openid/MysqlProvider.php:58
#: ../../addon/openid/MysqlProvider.php:59
#: ../../addon/openid/MysqlProvider.php:60
msgid "Profile Photo"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:338 ../../include/features.php:405
+#: ../../Zotlabs/Lib/Apps.php:360 ../../include/features.php:397
msgid "Profiles"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:340
+#: ../../Zotlabs/Lib/Apps.php:362
msgid "Notifications"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:341
+#: ../../Zotlabs/Lib/Apps.php:363
msgid "Order Apps"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:342 ../../include/features.php:82
+#: ../../Zotlabs/Lib/Apps.php:364 ../../include/features.php:82
msgid "CalDAV"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:343
+#: ../../Zotlabs/Lib/Apps.php:365
msgid "CardDAV"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:345
+#: ../../Zotlabs/Lib/Apps.php:367
msgid "Guest Access"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:346 ../../Zotlabs/Widget/Notes.php:21
+#: ../../Zotlabs/Lib/Apps.php:368 ../../Zotlabs/Widget/Notes.php:21
msgid "Notes"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:347
+#: ../../Zotlabs/Lib/Apps.php:369
msgid "OAuth Apps Manager"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:348
+#: ../../Zotlabs/Lib/Apps.php:370
msgid "OAuth2 Apps Manager"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:349
+#: ../../Zotlabs/Lib/Apps.php:371
msgid "PDL Editor"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:351
+#: ../../Zotlabs/Lib/Apps.php:373
msgid "Premium Channel"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:353
+#: ../../Zotlabs/Lib/Apps.php:375
msgid "My Chatrooms"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:354
+#: ../../Zotlabs/Lib/Apps.php:376
msgid "Channel Export"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:531
+#: ../../Zotlabs/Lib/Apps.php:553
msgid "Purchase"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:536
+#: ../../Zotlabs/Lib/Apps.php:558
msgid "Undelete"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:545
+#: ../../Zotlabs/Lib/Apps.php:567
msgid "Add to app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:546
+#: ../../Zotlabs/Lib/Apps.php:568
msgid "Remove from app-tray"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:547
+#: ../../Zotlabs/Lib/Apps.php:569
msgid "Pin to navbar"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:548
+#: ../../Zotlabs/Lib/Apps.php:570
msgid "Unpin from navbar"
msgstr ""
@@ -8305,8 +8381,8 @@ msgstr ""
msgid "Compare"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:746
-#: ../../include/bbcode.php:916
+#: ../../Zotlabs/Lib/NativeWikiPage.php:603 ../../include/bbcode.php:735
+#: ../../include/bbcode.php:905
msgid "Different viewers will see this text differently"
msgstr ""
@@ -8441,7 +8517,7 @@ msgstr ""
msgid "Room is full"
msgstr ""
-#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2571
+#: ../../Zotlabs/Lib/Libsync.php:733 ../../include/zot.php:2591
#, php-format
msgid "Unable to verify site signature for %s"
msgstr ""
@@ -8450,8 +8526,8 @@ msgstr ""
msgid "$Projectname Notification"
msgstr ""
-#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:308
-#: ../../addon/diaspora/util.php:321 ../../addon/diaspora/p.php:48
+#: ../../Zotlabs/Lib/Enotify.php:61 ../../addon/diaspora/util.php:313
+#: ../../addon/diaspora/util.php:326 ../../addon/diaspora/p.php:48
msgid "$projectname"
msgstr ""
@@ -8713,11 +8789,11 @@ msgstr ""
msgid "edited a comment dated %s"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWiki.php:152
+#: ../../Zotlabs/Lib/NativeWiki.php:143
msgid "Wiki updated successfully"
msgstr ""
-#: ../../Zotlabs/Lib/NativeWiki.php:206
+#: ../../Zotlabs/Lib/NativeWiki.php:197
msgid "Wiki files deleted successfully"
msgstr ""
@@ -8731,210 +8807,214 @@ msgstr ""
msgid "Update %s failed. See error logs."
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:99 ../../include/conversation.php:700
+#: ../../Zotlabs/Lib/ThreadItem.php:102 ../../include/conversation.php:700
msgid "Private Message"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:154 ../../Zotlabs/Storage/Browser.php:280
+#: ../../Zotlabs/Lib/ThreadItem.php:129
+msgid "Privacy conflict. Discretion advised."
+msgstr ""
+
+#: ../../Zotlabs/Lib/ThreadItem.php:171 ../../Zotlabs/Storage/Browser.php:280
msgid "Admin Delete"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:160 ../../include/conversation.php:690
+#: ../../Zotlabs/Lib/ThreadItem.php:177 ../../include/conversation.php:690
msgid "Select"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I will not attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:185
+#: ../../Zotlabs/Lib/ThreadItem.php:202
msgid "I might attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I agree"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I disagree"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:195
+#: ../../Zotlabs/Lib/ThreadItem.php:212
msgid "I abstain"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:249 ../../include/conversation.php:695
+#: ../../Zotlabs/Lib/ThreadItem.php:266 ../../include/conversation.php:695
msgid "Toggle Star Status"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:260 ../../include/conversation.php:707
+#: ../../Zotlabs/Lib/ThreadItem.php:277 ../../include/conversation.php:707
msgid "Message signature validated"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:261 ../../include/conversation.php:708
+#: ../../Zotlabs/Lib/ThreadItem.php:278 ../../include/conversation.php:708
msgid "Message signature incorrect"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:269
+#: ../../Zotlabs/Lib/ThreadItem.php:286
msgid "Add Tag"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:273 ../../include/conversation.php:891
+#: ../../Zotlabs/Lib/ThreadItem.php:290 ../../include/conversation.php:891
msgid "Conversation Tools"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:289 ../../include/taxonomy.php:575
+#: ../../Zotlabs/Lib/ThreadItem.php:306 ../../include/taxonomy.php:575
msgid "like"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:290 ../../include/taxonomy.php:576
+#: ../../Zotlabs/Lib/ThreadItem.php:307 ../../include/taxonomy.php:576
msgid "dislike"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "Share This"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:294
+#: ../../Zotlabs/Lib/ThreadItem.php:317
msgid "share"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:303
+#: ../../Zotlabs/Lib/ThreadItem.php:327
msgid "Delivery Report"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:321
+#: ../../Zotlabs/Lib/ThreadItem.php:347
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
msgstr[0] ""
msgstr[1] ""
-#: ../../Zotlabs/Lib/ThreadItem.php:355 ../../Zotlabs/Lib/ThreadItem.php:356
+#: ../../Zotlabs/Lib/ThreadItem.php:381 ../../Zotlabs/Lib/ThreadItem.php:382
#, php-format
msgid "View %s's profile - %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:359
+#: ../../Zotlabs/Lib/ThreadItem.php:385
msgid "to"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:360
+#: ../../Zotlabs/Lib/ThreadItem.php:386
msgid "via"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:361
+#: ../../Zotlabs/Lib/ThreadItem.php:387
msgid "Wall-to-Wall"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:362
+#: ../../Zotlabs/Lib/ThreadItem.php:388
msgid "via Wall-To-Wall:"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:375 ../../include/conversation.php:766
+#: ../../Zotlabs/Lib/ThreadItem.php:402 ../../include/conversation.php:766
#, php-format
msgid "from %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:378 ../../include/conversation.php:769
+#: ../../Zotlabs/Lib/ThreadItem.php:405 ../../include/conversation.php:769
#, php-format
msgid "last edited: %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:379 ../../include/conversation.php:770
+#: ../../Zotlabs/Lib/ThreadItem.php:406 ../../include/conversation.php:770
#, php-format
msgid "Expires: %s"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:387
+#: ../../Zotlabs/Lib/ThreadItem.php:414
msgid "Attend"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:388
+#: ../../Zotlabs/Lib/ThreadItem.php:415
msgid "Attendance Options"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:389
+#: ../../Zotlabs/Lib/ThreadItem.php:416
msgid "Vote"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:390
+#: ../../Zotlabs/Lib/ThreadItem.php:417
msgid "Voting Options"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:411
+#: ../../Zotlabs/Lib/ThreadItem.php:439
#: ../../addon/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:412
+#: ../../Zotlabs/Lib/ThreadItem.php:440
msgid "Add to Calendar"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:440 ../../include/conversation.php:483
+#: ../../Zotlabs/Lib/ThreadItem.php:468 ../../include/conversation.php:483
msgid "This is an unsaved preview"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:473 ../../include/js_strings.php:7
+#: ../../Zotlabs/Lib/ThreadItem.php:501 ../../include/js_strings.php:7
#, php-format
msgid "%s show all"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:768 ../../addon/hsse/hsse.php:200
-#: ../../include/conversation.php:1403
+#: ../../Zotlabs/Lib/ThreadItem.php:796 ../../addon/hsse/hsse.php:200
+#: ../../include/conversation.php:1406
msgid "Bold"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:769 ../../addon/hsse/hsse.php:201
-#: ../../include/conversation.php:1404
+#: ../../Zotlabs/Lib/ThreadItem.php:797 ../../addon/hsse/hsse.php:201
+#: ../../include/conversation.php:1407
msgid "Italic"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:770 ../../addon/hsse/hsse.php:202
-#: ../../include/conversation.php:1405
+#: ../../Zotlabs/Lib/ThreadItem.php:798 ../../addon/hsse/hsse.php:202
+#: ../../include/conversation.php:1408
msgid "Underline"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:771 ../../addon/hsse/hsse.php:203
-#: ../../include/conversation.php:1406
+#: ../../Zotlabs/Lib/ThreadItem.php:799 ../../addon/hsse/hsse.php:203
+#: ../../include/conversation.php:1409
msgid "Quote"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:772 ../../addon/hsse/hsse.php:204
-#: ../../include/conversation.php:1407
+#: ../../Zotlabs/Lib/ThreadItem.php:800 ../../addon/hsse/hsse.php:204
+#: ../../include/conversation.php:1410
msgid "Code"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:773
+#: ../../Zotlabs/Lib/ThreadItem.php:801
msgid "Image"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:774 ../../addon/hsse/hsse.php:205
-#: ../../include/conversation.php:1408
+#: ../../Zotlabs/Lib/ThreadItem.php:802 ../../addon/hsse/hsse.php:205
+#: ../../include/conversation.php:1411
msgid "Attach/Upload file"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:775
+#: ../../Zotlabs/Lib/ThreadItem.php:803
msgid "Insert Link"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:776
+#: ../../Zotlabs/Lib/ThreadItem.php:804
msgid "Video"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:786
+#: ../../Zotlabs/Lib/ThreadItem.php:814
msgid "Your full name (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:787
+#: ../../Zotlabs/Lib/ThreadItem.php:815
msgid "Your email address (required)"
msgstr ""
-#: ../../Zotlabs/Lib/ThreadItem.php:788
+#: ../../Zotlabs/Lib/ThreadItem.php:816
msgid "Your website URL (optional)"
msgstr ""
@@ -8954,7 +9034,7 @@ msgstr ""
msgid "parent"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2824
+#: ../../Zotlabs/Storage/Browser.php:131 ../../include/text.php:2941
msgid "Collection"
msgstr ""
@@ -8966,8 +9046,8 @@ msgstr ""
msgid "Addressbook"
msgstr ""
-#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:433
-#: ../../include/nav.php:436
+#: ../../Zotlabs/Storage/Browser.php:140 ../../include/nav.php:463
+#: ../../include/nav.php:466
msgid "Calendar"
msgstr ""
@@ -9018,7 +9098,7 @@ msgid "Drop files here to immediately upload"
msgstr ""
#: ../../Zotlabs/Widget/Forums.php:100
-#: ../../Zotlabs/Widget/Activity_filter.php:102
+#: ../../Zotlabs/Widget/Activity_filter.php:73
#: ../../Zotlabs/Widget/Notifications.php:119
#: ../../Zotlabs/Widget/Notifications.php:120
msgid "Forums"
@@ -9101,8 +9181,8 @@ msgid "Select an addressbook to import to"
msgstr ""
#: ../../Zotlabs/Widget/Appcategories.php:43
-#: ../../include/contact_widgets.php:97 ../../include/contact_widgets.php:141
-#: ../../include/contact_widgets.php:186 ../../include/taxonomy.php:409
+#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139
+#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409
#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511
#: ../../include/taxonomy.php:532
msgid "Categories"
@@ -9110,8 +9190,8 @@ msgstr ""
#: ../../Zotlabs/Widget/Appcategories.php:46 ../../Zotlabs/Widget/Filer.php:31
#: ../../widget/Netselect/Netselect.php:26 ../../include/contact_widgets.php:56
-#: ../../include/contact_widgets.php:100 ../../include/contact_widgets.php:144
-#: ../../include/contact_widgets.php:189
+#: ../../include/contact_widgets.php:99 ../../include/contact_widgets.php:142
+#: ../../include/contact_widgets.php:187
msgid "Everything"
msgstr ""
@@ -9180,71 +9260,67 @@ msgctxt "widget"
msgid "Activity"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:26
-msgid "Personal Posts"
-msgstr ""
-
-#: ../../Zotlabs/Widget/Activity_filter.php:30
-msgid "Show posts that mention or involve me"
+#: ../../Zotlabs/Widget/Activity_filter.php:36
+#, php-format
+msgid "Show posts related to the %s privacy group"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:41
-msgid "Starred Posts"
+#: ../../Zotlabs/Widget/Activity_filter.php:45
+msgid "Show my privacy groups"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:45
-msgid "Show posts that I have starred"
+#: ../../Zotlabs/Widget/Activity_filter.php:66
+msgid "Show posts to this forum"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:65
-#, php-format
-msgid "Show posts related to the %s privacy group"
+#: ../../Zotlabs/Widget/Activity_filter.php:77
+msgid "Show forums"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:74
-msgid "Show my privacy groups"
+#: ../../Zotlabs/Widget/Activity_filter.php:91
+msgid "Starred Posts"
msgstr ""
#: ../../Zotlabs/Widget/Activity_filter.php:95
-msgid "Show posts to this forum"
+msgid "Show posts that I have starred"
msgstr ""
#: ../../Zotlabs/Widget/Activity_filter.php:106
-msgid "Show forums"
+msgid "Personal Posts"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:130
+#: ../../Zotlabs/Widget/Activity_filter.php:110
+msgid "Show posts that mention or involve me"
+msgstr ""
+
+#: ../../Zotlabs/Widget/Activity_filter.php:131
#, php-format
msgid "Show posts that I have filed to %s"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:136
+#: ../../Zotlabs/Widget/Activity_filter.php:137
#: ../../Zotlabs/Widget/Filer.php:28 ../../include/contact_widgets.php:53
#: ../../include/features.php:325
msgid "Saved Folders"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:140
+#: ../../Zotlabs/Widget/Activity_filter.php:141
msgid "Show filed post categories"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:154
+#: ../../Zotlabs/Widget/Activity_filter.php:155
msgid "Panel search"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:164
-#: ../../Zotlabs/Widget/Notifications.php:27
-#: ../../Zotlabs/Widget/Notifications.php:46
-#: ../../Zotlabs/Widget/Notifications.php:122
-#: ../../Zotlabs/Widget/Notifications.php:153
+#: ../../Zotlabs/Widget/Activity_filter.php:165
msgid "Filter by name"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:179
+#: ../../Zotlabs/Widget/Activity_filter.php:180
msgid "Remove active filter"
msgstr ""
-#: ../../Zotlabs/Widget/Activity_filter.php:195
+#: ../../Zotlabs/Widget/Activity_filter.php:196
msgid "Stream Filters"
msgstr ""
@@ -9318,7 +9394,7 @@ msgstr ""
msgid "Page name"
msgstr ""
-#: ../../Zotlabs/Widget/Affinity.php:45
+#: ../../Zotlabs/Widget/Affinity.php:54
msgid "Refresh"
msgstr ""
@@ -9467,15 +9543,11 @@ msgstr ""
msgid "Channel settings"
msgstr ""
-#: ../../Zotlabs/Widget/Settings_menu.php:47
+#: ../../Zotlabs/Widget/Settings_menu.php:46
msgid "Display settings"
msgstr ""
#: ../../Zotlabs/Widget/Settings_menu.php:53
-msgid "Addon settings"
-msgstr ""
-
-#: ../../Zotlabs/Widget/Settings_menu.php:60
msgid "Manage locations"
msgstr ""
@@ -9505,6 +9577,13 @@ msgstr ""
msgid "Show new posts only"
msgstr ""
+#: ../../Zotlabs/Widget/Notifications.php:27
+#: ../../Zotlabs/Widget/Notifications.php:46
+#: ../../Zotlabs/Widget/Notifications.php:122
+#: ../../Zotlabs/Widget/Notifications.php:153
+msgid "Filter by name or address"
+msgstr ""
+
#: ../../Zotlabs/Widget/Notifications.php:35
msgid "New Home Activity"
msgstr ""
@@ -9611,67 +9690,67 @@ msgstr ""
msgid "Network/Protocol"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1782
+#: ../../widget/Netselect/Netselect.php:28 ../../include/network.php:1724
msgid "Zot"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1780
+#: ../../widget/Netselect/Netselect.php:31 ../../include/network.php:1722
msgid "Diaspora"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1773
-#: ../../include/network.php:1774
+#: ../../widget/Netselect/Netselect.php:33 ../../include/network.php:1715
+#: ../../include/network.php:1716
msgid "Friendica"
msgstr ""
-#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1775
+#: ../../widget/Netselect/Netselect.php:38 ../../include/network.php:1717
msgid "OStatus"
msgstr ""
-#: ../../boot.php:1604
+#: ../../boot.php:1608
msgid "Create an account to access services and applications"
msgstr ""
-#: ../../boot.php:1624 ../../include/nav.php:103 ../../include/nav.php:132
+#: ../../boot.php:1628 ../../include/nav.php:103 ../../include/nav.php:132
#: ../../include/nav.php:151
msgid "Logout"
msgstr ""
-#: ../../boot.php:1628
+#: ../../boot.php:1632
msgid "Login/Email"
msgstr ""
-#: ../../boot.php:1629
+#: ../../boot.php:1633
msgid "Password"
msgstr ""
-#: ../../boot.php:1630
+#: ../../boot.php:1634
msgid "Remember me"
msgstr ""
-#: ../../boot.php:1633
+#: ../../boot.php:1637
msgid "Forgot your password?"
msgstr ""
-#: ../../boot.php:2431
+#: ../../boot.php:2433
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr ""
-#: ../../boot.php:2436
+#: ../../boot.php:2438
msgid "Website SSL certificate is not valid. Please correct."
msgstr ""
-#: ../../boot.php:2552
+#: ../../boot.php:2554
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr ""
-#: ../../boot.php:2557
+#: ../../boot.php:2559
msgid "Cron/Scheduled tasks not running."
msgstr ""
-#: ../../boot.php:2558 ../../include/datetime.php:238
+#: ../../boot.php:2560 ../../include/datetime.php:238
msgid "never"
msgstr ""
@@ -9803,7 +9882,7 @@ msgstr ""
msgid "Errors encountered deleting database table "
msgstr ""
-#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:782
+#: ../../addon/rendezvous/rendezvous.php:95 ../../addon/twitter/twitter.php:612
msgid "Submit Settings"
msgstr ""
@@ -9928,15 +10007,23 @@ msgstr ""
msgid "You have no rendezvous. Press the button above to create a rendezvous!"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:59
+#: ../../addon/skeleton/Mod_Skeleton.php:32
+msgid "Skeleton App"
+msgstr ""
+
+#: ../../addon/skeleton/Mod_Skeleton.php:33
+msgid "A skeleton for addons, you can copy/paste"
+msgstr ""
+
+#: ../../addon/skeleton/Mod_Skeleton.php:40
msgid "Some setting"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:61
+#: ../../addon/skeleton/Mod_Skeleton.php:40
msgid "A setting"
msgstr ""
-#: ../../addon/skeleton/skeleton.php:64
+#: ../../addon/skeleton/Mod_Skeleton.php:48
msgid "Skeleton Settings"
msgstr ""
@@ -9947,6 +10034,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/gnusoc/Mod_Gnusoc.php:22
+msgid "GNU-Social Protocol App"
+msgstr ""
+
#: ../../addon/gnusoc/Mod_Gnusoc.php:34
msgid "GNU-Social Protocol"
msgstr ""
@@ -9960,16 +10051,21 @@ msgstr ""
msgid "%1$s is now following %2$s"
msgstr ""
-#: ../../addon/planets/planets.php:121
-msgid "Planets Settings updated."
+#: ../../addon/planets/Mod_Planets.php:20
+#: ../../addon/planets/Mod_Planets.php:23
+msgid "Random Planet App"
msgstr ""
-#: ../../addon/planets/planets.php:149
-msgid "Enable Planets Plugin"
+#: ../../addon/planets/Mod_Planets.php:23
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+#: ../../addon/nsabait/Mod_Nsabait.php:24 ../../addon/hsse/Mod_Hsse.php:26
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Installed"
msgstr ""
-#: ../../addon/planets/planets.php:153
-msgid "Planets Settings"
+#: ../../addon/planets/Mod_Planets.php:25
+msgid ""
+"Set a random planet from the Star Wars Empire as your location when posting"
msgstr ""
#: ../../addon/openclipatar/openclipatar.php:50
@@ -10001,7 +10097,7 @@ msgstr ""
msgid "Page to load after image selection."
msgstr ""
-#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1307
+#: ../../addon/openclipatar/openclipatar.php:58 ../../include/channel.php:1356
#: ../../include/nav.php:111
msgid "Edit Profile"
msgstr ""
@@ -10090,10 +10186,97 @@ msgid ""
"view"
msgstr ""
+#: ../../addon/totp/Settings/Totp.php:90
+msgid ""
+"You haven't set a TOTP secret yet.\n"
+"Please click the button below to generate one and register this site\n"
+"with your preferred authenticator app."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:93
+msgid "Your TOTP secret is"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:94
+msgid ""
+"Be sure to save it somewhere in case you lose or replace your mobile "
+"device.\n"
+"Use your mobile device to scan the QR code below to register this site\n"
+"with your preferred authenticator app."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:99
+msgid "Test"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:100
+msgid "Generate New Secret"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:101
+msgid "Go"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:102
+msgid "Enter your password"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:103
+msgid "enter TOTP code from your device"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:104
+msgid "Pass!"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:105
+msgid "Fail"
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:106
+msgid "Incorrect password, try again."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:107
+msgid "Record your new TOTP secret and rescan the QR code above."
+msgstr ""
+
+#: ../../addon/totp/Settings/Totp.php:115
+msgid "TOTP Settings"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:23
+msgid "TOTP Two-Step Verification"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:24
+msgid "Enter the 2-step verification generated by your authenticator app:"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:25
+msgid "Success!"
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:26
+msgid "Invalid code, please try again."
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:27
+msgid "Too many invalid codes..."
+msgstr ""
+
+#: ../../addon/totp/Mod_Totp.php:28
+msgid "Verify"
+msgstr ""
+
#: ../../addon/wppost/Mod_Wppost.php:28
msgid "Wordpress Settings saved."
msgstr ""
+#: ../../addon/wppost/Mod_Wppost.php:41
+msgid "Wordpress Post App"
+msgstr ""
+
#: ../../addon/wppost/Mod_Wppost.php:42
msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API"
msgstr ""
@@ -10151,6 +10334,10 @@ msgstr ""
msgid "NSFW Settings saved."
msgstr ""
+#: ../../addon/nsfw/Mod_Nsfw.php:33
+msgid "NSFW App"
+msgstr ""
+
#: ../../addon/nsfw/Mod_Nsfw.php:34
msgid "Collapse content that contains predefined words"
msgstr ""
@@ -10177,56 +10364,80 @@ msgstr ""
msgid "NSFW"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:42
-msgid "Post to Insanejournal"
+#: ../../addon/queueworker/Mod_Queueworker.php:73
+msgid "Max queueworker threads"
+msgstr ""
+
+#: ../../addon/queueworker/Mod_Queueworker.php:87
+msgid "Assume workers dead after ___ seconds"
+msgstr ""
+
+#: ../../addon/queueworker/Mod_Queueworker.php:99
+msgid "Queueworker Settings"
+msgstr ""
+
+#: ../../addon/ijpost/Mod_Ijpost.php:23
+msgid "Insane Journal Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/ijpost/Mod_Ijpost.php:35
+msgid "Insane Journal Crosspost Connector App"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:73
-msgid "Enable InsaneJournal Post Plugin"
+#: ../../addon/ijpost/Mod_Ijpost.php:36
+msgid "Relay public postings to Insane Journal"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:77
+#: ../../addon/ijpost/Mod_Ijpost.php:53
msgid "InsaneJournal username"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:81
+#: ../../addon/ijpost/Mod_Ijpost.php:57
msgid "InsaneJournal password"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:85
+#: ../../addon/ijpost/Mod_Ijpost.php:61
msgid "Post to InsaneJournal by default"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:89
-msgid "InsaneJournal Post Settings"
+#: ../../addon/ijpost/Mod_Ijpost.php:69
+msgid "Insane Journal Crosspost Connector"
msgstr ""
-#: ../../addon/ijpost/ijpost.php:104
-msgid "Insane Journal Settings saved."
+#: ../../addon/ijpost/ijpost.php:45
+msgid "Post to Insane Journal"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:42
+#: ../../addon/dwpost/dwpost.php:48
msgid "Post to Dreamwidth"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:73
-msgid "Enable Dreamwidth Post Plugin"
+#: ../../addon/dwpost/Mod_Dwpost.php:24
+msgid "Dreamwidth Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/dwpost/Mod_Dwpost.php:36
+msgid "Dreamwidth Crosspost Connector App"
+msgstr ""
+
+#: ../../addon/dwpost/Mod_Dwpost.php:37
+msgid "Relay public postings to Dreamwidth"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:77
+#: ../../addon/dwpost/Mod_Dwpost.php:52
msgid "Dreamwidth username"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:81
+#: ../../addon/dwpost/Mod_Dwpost.php:56
msgid "Dreamwidth password"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:85
+#: ../../addon/dwpost/Mod_Dwpost.php:60
msgid "Post to Dreamwidth by default"
msgstr ""
-#: ../../addon/dwpost/dwpost.php:89
-msgid "Dreamwidth Post Settings"
+#: ../../addon/dwpost/Mod_Dwpost.php:68
+msgid "Dreamwidth Crosspost Connector"
msgstr ""
#: ../../addon/notifyadmin/notifyadmin.php:34
@@ -10360,68 +10571,72 @@ msgstr ""
msgid "0 or blank to import all available"
msgstr ""
-#: ../../addon/irc/irc.php:45
-msgid "Channels to auto connect"
+#: ../../addon/irc/Mod_Irc.php:23 ../../addon/irc/irc.php:41
+msgid "Popular Channels"
msgstr ""
-#: ../../addon/irc/irc.php:45 ../../addon/irc/irc.php:49
-msgid "Comma separated list"
+#: ../../addon/irc/irc.php:37
+msgid "Channels to auto connect"
msgstr ""
-#: ../../addon/irc/irc.php:49 ../../addon/irc/irc.php:96
-msgid "Popular Channels"
+#: ../../addon/irc/irc.php:37 ../../addon/irc/irc.php:41
+msgid "Comma separated list"
msgstr ""
-#: ../../addon/irc/irc.php:53
+#: ../../addon/irc/irc.php:45
msgid "IRC Settings"
msgstr ""
-#: ../../addon/irc/irc.php:69
+#: ../../addon/irc/irc.php:54
msgid "IRC settings saved."
msgstr ""
-#: ../../addon/irc/irc.php:74
+#: ../../addon/irc/irc.php:58
msgid "IRC Chatroom"
msgstr ""
-#: ../../addon/gallery/gallery.php:47 ../../addon/gallery/Mod_Gallery.php:115
+#: ../../addon/gallery/gallery.php:38 ../../addon/gallery/Mod_Gallery.php:135
msgid "Gallery"
msgstr ""
-#: ../../addon/gallery/gallery.php:50
+#: ../../addon/gallery/gallery.php:41
msgid "Photo Gallery"
msgstr ""
-#: ../../addon/gallery/Mod_Gallery.php:57
+#: ../../addon/gallery/Mod_Gallery.php:58
+msgid "Gallery App"
+msgstr ""
+
+#: ../../addon/gallery/Mod_Gallery.php:59
msgid "A simple gallery for your photo albums"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:42
-msgid "Post to LiveJournal"
+#: ../../addon/ljpost/Mod_Ljpost.php:36
+msgid "Livejournal Crosspost Connector App"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:70
-msgid "Enable LiveJournal Post Plugin"
+#: ../../addon/ljpost/Mod_Ljpost.php:37
+msgid "Relay public posts to Livejournal"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:74
-msgid "LiveJournal username"
+#: ../../addon/ljpost/Mod_Ljpost.php:54
+msgid "Livejournal username"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:78
-msgid "LiveJournal password"
+#: ../../addon/ljpost/Mod_Ljpost.php:58
+msgid "Livejournal password"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:82
-msgid "Post to LiveJournal by default"
+#: ../../addon/ljpost/Mod_Ljpost.php:62
+msgid "Post to Livejournal by default"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:86
-msgid "LiveJournal Post Settings"
+#: ../../addon/ljpost/Mod_Ljpost.php:70
+msgid "Livejournal Crosspost Connector"
msgstr ""
-#: ../../addon/ljpost/ljpost.php:101
-msgid "LiveJournal Settings saved."
+#: ../../addon/ljpost/ljpost.php:45
+msgid "Post to Livejournal"
msgstr ""
#: ../../addon/openid/openid.php:49
@@ -10442,7 +10657,7 @@ msgstr ""
msgid "Last Name"
msgstr ""
-#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/redred.php:111
+#: ../../addon/openid/MysqlProvider.php:54 ../../addon/redred/Mod_Redred.php:75
msgid "Nickname"
msgstr ""
@@ -10503,12 +10718,12 @@ msgid "Login failed."
msgstr ""
#: ../../addon/openid/Mod_Id.php:85 ../../include/selectors.php:60
-#: ../../include/selectors.php:77 ../../include/channel.php:1487
+#: ../../include/selectors.php:77 ../../include/channel.php:1536
msgid "Male"
msgstr ""
#: ../../addon/openid/Mod_Id.php:87 ../../include/selectors.php:60
-#: ../../include/selectors.php:77 ../../include/channel.php:1485
+#: ../../include/selectors.php:77 ../../include/channel.php:1534
msgid "Female"
msgstr ""
@@ -10528,6 +10743,10 @@ msgstr ""
msgid "&lt;blush&gt;"
msgstr ""
+#: ../../addon/startpage/Mod_Startpage.php:50
+msgid "Startpage App"
+msgstr ""
+
#: ../../addon/startpage/Mod_Startpage.php:51
msgid "Set a preferred page to load on login from home page"
msgstr ""
@@ -10699,6 +10918,11 @@ msgstr ""
msgid "declared undying love for"
msgstr ""
+#: ../../addon/diaspora/Receiver.php:1495
+#, php-format
+msgid "%1$s dislikes %2$s's %3$s"
+msgstr ""
+
#: ../../addon/diaspora/Mod_Diaspora.php:40
msgid "Diaspora Protocol Settings updated."
msgstr ""
@@ -10710,6 +10934,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/diaspora/Mod_Diaspora.php:55
+msgid "Diaspora Protocol App"
+msgstr ""
+
#: ../../addon/diaspora/Mod_Diaspora.php:74
msgid "Allow any Diaspora member to comment on your public posts"
msgstr ""
@@ -10734,10 +10962,36 @@ msgstr ""
msgid "No username found in import file."
msgstr ""
-#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:72
+#: ../../addon/diaspora/import_diaspora.php:43 ../../include/import.php:73
msgid "Unable to create a unique channel address. Import failed."
msgstr ""
+#: ../../addon/photocache/Mod_Photocache.php:27
+msgid "Photo Cache settings saved."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:36
+msgid ""
+"Photo Cache addon saves a copy of images from external sites locally to "
+"increase your anonymity in the web."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:42
+msgid "Photo Cache App"
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:53
+msgid "Minimal photo size for caching"
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:55
+msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default."
+msgstr ""
+
+#: ../../addon/photocache/Mod_Photocache.php:64
+msgid "Photo Cache"
+msgstr ""
+
#: ../../addon/testdrive/testdrive.php:104
#, php-format
msgid "Your account on %s will expire in a few days."
@@ -10751,6 +11005,11 @@ msgstr ""
msgid "Add some colour to tag clouds"
msgstr ""
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../addon/rainbowtag/Mod_Rainbowtag.php:26
+msgid "Rainbow Tag App"
+msgstr ""
+
#: ../../addon/rainbowtag/Mod_Rainbowtag.php:34
msgid "Rainbow Tag"
msgstr ""
@@ -10807,7 +11066,7 @@ msgid ""
msgstr ""
#: ../../addon/gravatar/gravatar.php:150 ../../addon/msgfooter/msgfooter.php:46
-#: ../../addon/xmpp/xmpp.php:91
+#: ../../addon/xmpp/xmpp.php:43
msgid "Save Settings"
msgstr ""
@@ -10851,45 +11110,25 @@ msgstr ""
msgid "Until modified date yyyy-mm-dd"
msgstr ""
-#: ../../addon/visage/visage.php:93
-msgid "Recent Channel/Profile Viewers"
-msgstr ""
-
-#: ../../addon/visage/visage.php:98
-msgid "This plugin/addon has not been configured."
+#: ../../addon/visage/Mod_Visage.php:21
+msgid "Who viewed my channel/profile"
msgstr ""
-#: ../../addon/visage/visage.php:99
-#, php-format
-msgid "Please visit the Visage settings on %s"
-msgstr ""
-
-#: ../../addon/visage/visage.php:99
-msgid "your feature settings page"
+#: ../../addon/visage/Mod_Visage.php:25
+msgid "Recent Channel/Profile Viewers"
msgstr ""
-#: ../../addon/visage/visage.php:112
+#: ../../addon/visage/Mod_Visage.php:36
msgid "No entries."
msgstr ""
-#: ../../addon/visage/visage.php:166
-msgid "Enable Visage Visitor Logging"
-msgstr ""
-
-#: ../../addon/visage/visage.php:170
-msgid "Visage Settings"
-msgstr ""
-
-#: ../../addon/nsabait/nsabait.php:125
-msgid "Nsabait Settings updated."
-msgstr ""
-
-#: ../../addon/nsabait/nsabait.php:157
-msgid "Enable NSAbait Plugin"
+#: ../../addon/nsabait/Mod_Nsabait.php:20
+#: ../../addon/nsabait/Mod_Nsabait.php:24
+msgid "NSA Bait App"
msgstr ""
-#: ../../addon/nsabait/nsabait.php:161
-msgid "NSAbait Settings"
+#: ../../addon/nsabait/Mod_Nsabait.php:26
+msgid "Make yourself a political target"
msgstr ""
#: ../../addon/mailtest/mailtest.php:19
@@ -10924,40 +11163,40 @@ msgstr ""
msgid "View Larger"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid "Tile Server URL"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:169
+#: ../../addon/openstreetmap/openstreetmap.php:170
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank"
"\">public tile servers</a>"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid "Nominatim (reverse geocoding) Server URL"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:170
+#: ../../addon/openstreetmap/openstreetmap.php:171
msgid ""
"A list of <a href=\"http://wiki.openstreetmap.org/wiki/Nominatim\" target="
"\"_blank\">Nominatim servers</a>"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid "Default zoom"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:171
+#: ../../addon/openstreetmap/openstreetmap.php:172
msgid ""
"The default zoom level. (1:world, 18:highest, also depends on tile server)"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include marker on map"
msgstr ""
-#: ../../addon/openstreetmap/openstreetmap.php:172
+#: ../../addon/openstreetmap/openstreetmap.php:173
msgid "Include a marker on the map."
msgstr ""
@@ -10965,120 +11204,128 @@ msgstr ""
msgid "text to include in all outgoing posts from this site"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:148
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:22
msgid "Fuzzloc Settings updated."
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:175
-msgid ""
-"Fuzzloc allows you to blur your precise location if your channel uses "
-"browser location mapping."
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:34
+msgid "Fuzzy Location App"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:178
-msgid "Enable Fuzzloc Plugin"
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:35
+msgid ""
+"Blur your precise location if your channel uses browser location mapping"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:182
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:40
msgid "Minimum offset in meters"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:186
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:44
msgid "Maximum offset in meters"
msgstr ""
-#: ../../addon/fuzzloc/fuzzloc.php:191
-msgid "Fuzzloc Settings"
+#: ../../addon/fuzzloc/Mod_Fuzzloc.php:53
+msgid "Fuzzy Location"
msgstr ""
-#: ../../addon/rtof/rtof.php:45
+#: ../../addon/rtof/rtof.php:51
msgid "Post to Friendica"
msgstr ""
-#: ../../addon/rtof/rtof.php:62
-msgid "rtof Settings saved."
+#: ../../addon/rtof/Mod_Rtof.php:24
+msgid "Friendica Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/rtof/Mod_Rtof.php:36
+msgid "Friendica Crosspost Connector App"
msgstr ""
-#: ../../addon/rtof/rtof.php:81
-msgid "Allow posting to Friendica"
+#: ../../addon/rtof/Mod_Rtof.php:37
+msgid "Relay public postings to a connected Friendica account"
msgstr ""
-#: ../../addon/rtof/rtof.php:85
+#: ../../addon/rtof/Mod_Rtof.php:49
msgid "Send public postings to Friendica by default"
msgstr ""
-#: ../../addon/rtof/rtof.php:89
+#: ../../addon/rtof/Mod_Rtof.php:53
msgid "Friendica API Path"
msgstr ""
-#: ../../addon/rtof/rtof.php:89 ../../addon/redred/redred.php:103
+#: ../../addon/rtof/Mod_Rtof.php:53 ../../addon/redred/Mod_Redred.php:67
msgid "https://{sitename}/api"
msgstr ""
-#: ../../addon/rtof/rtof.php:93
+#: ../../addon/rtof/Mod_Rtof.php:57
msgid "Friendica login name"
msgstr ""
-#: ../../addon/rtof/rtof.php:97
+#: ../../addon/rtof/Mod_Rtof.php:61
msgid "Friendica password"
msgstr ""
-#: ../../addon/rtof/rtof.php:101
-msgid "Hubzilla to Friendica Post Settings"
+#: ../../addon/rtof/Mod_Rtof.php:69
+msgid "Friendica Crosspost Connector"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:305 ../../include/channel.php:1403
-#: ../../include/channel.php:1574
-msgid "Status:"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:96
+msgid "Jappixmini App"
+msgstr ""
+
+#: ../../addon/jappixmini/Mod_Jappixmini.php:97
+msgid "Provides a Facebook-like chat using Jappix Mini"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:309
-msgid "Activate addon"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:157 ../../include/channel.php:1452
+#: ../../include/channel.php:1623
+msgid "Status:"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:313
+#: ../../addon/jappixmini/Mod_Jappixmini.php:161
msgid "Hide Jappixmini Chat-Widget from the webinterface"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:318
+#: ../../addon/jappixmini/Mod_Jappixmini.php:166
msgid "Jabber username"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:324
+#: ../../addon/jappixmini/Mod_Jappixmini.php:172
msgid "Jabber server"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:330
+#: ../../addon/jappixmini/Mod_Jappixmini.php:178
msgid "Jabber BOSH host URL"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:337
+#: ../../addon/jappixmini/Mod_Jappixmini.php:185
msgid "Jabber password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:343
+#: ../../addon/jappixmini/Mod_Jappixmini.php:191
msgid "Encrypt Jabber password with Hubzilla password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:347 ../../addon/redred/redred.php:115
+#: ../../addon/jappixmini/Mod_Jappixmini.php:195
+#: ../../addon/redred/Mod_Redred.php:79
msgid "Hubzilla password"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:351
-#: ../../addon/jappixmini/jappixmini.php:355
+#: ../../addon/jappixmini/Mod_Jappixmini.php:199
+#: ../../addon/jappixmini/Mod_Jappixmini.php:203
msgid "Approve subscription requests from Hubzilla contacts automatically"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:359
+#: ../../addon/jappixmini/Mod_Jappixmini.php:207
msgid "Purge internal list of jabber addresses of contacts"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:364
+#: ../../addon/jappixmini/Mod_Jappixmini.php:212
msgid "Configuration Help"
msgstr ""
-#: ../../addon/jappixmini/jappixmini.php:371
-msgid "Jappix Mini Settings"
+#: ../../addon/jappixmini/Mod_Jappixmini.php:258
+msgid "Jappixmini Settings"
msgstr ""
#: ../../addon/upgrade_info/upgrade_info.php:43
@@ -11111,81 +11358,85 @@ msgstr ""
msgid "Do not show this again"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:101
-#: ../../addon/channelreputation/channelreputation.php:102
+#: ../../addon/channelreputation/channelreputation.php:98
+#: ../../addon/channelreputation/channelreputation.php:99
#: ../../addon/cart/myshop.php:141 ../../addon/cart/myshop.php:177
#: ../../addon/cart/myshop.php:211 ../../addon/cart/myshop.php:259
#: ../../addon/cart/myshop.php:294 ../../addon/cart/myshop.php:317
msgid "Access Denied"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:109
+#: ../../addon/channelreputation/channelreputation.php:106
msgid "Enable Community Moderation"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:117
+#: ../../addon/channelreputation/channelreputation.php:114
msgid "Reputation automatically given to new members"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:118
+#: ../../addon/channelreputation/channelreputation.php:115
msgid "Reputation will never fall below this value"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:119
+#: ../../addon/channelreputation/channelreputation.php:116
msgid "Minimum reputation before posting is allowed"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:120
+#: ../../addon/channelreputation/channelreputation.php:117
msgid "Minimum reputation before commenting is allowed"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:121
+#: ../../addon/channelreputation/channelreputation.php:118
msgid "Minimum reputation before a member is able to moderate other posts"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:122
+#: ../../addon/channelreputation/channelreputation.php:119
msgid ""
"Max ratio of moderator's reputation that can be added to/deducted from "
"reputation of person being moderated"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:123
+#: ../../addon/channelreputation/channelreputation.php:120
msgid "Reputation \"cost\" to post"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:124
+#: ../../addon/channelreputation/channelreputation.php:121
msgid "Reputation \"cost\" to comment"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:125
+#: ../../addon/channelreputation/channelreputation.php:122
msgid ""
"Reputation automatically recovers at this rate per hour until it reaches "
"minimum_to_post"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:126
+#: ../../addon/channelreputation/channelreputation.php:123
msgid ""
"When minimum_to_moderate > reputation > minimum_to_post reputation recovers "
"at this rate per hour"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:138
+#: ../../addon/channelreputation/channelreputation.php:137
msgid "Community Moderation Settings"
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:359
+#: ../../addon/channelreputation/channelreputation.php:365
msgid "Can moderate reputation on my channel."
msgstr ""
-#: ../../addon/channelreputation/channelreputation.php:544
-#: ../../addon/channelreputation/channelreputation.php:547
+#: ../../addon/channelreputation/channelreputation.php:549
+#: ../../addon/channelreputation/channelreputation.php:552
msgid "Channel Reputation"
msgstr ""
-#: ../../addon/superblock/superblock.php:318
+#: ../../addon/superblock/superblock.php:337
msgid "Block Completely"
msgstr ""
+#: ../../addon/superblock/Mod_Superblock.php:20
+msgid "Superblock App"
+msgstr ""
+
#: ../../addon/superblock/Mod_Superblock.php:21
msgid "Block channels"
msgstr ""
@@ -11202,60 +11453,71 @@ msgstr ""
msgid "No channels currently blocked"
msgstr ""
-#: ../../addon/nofed/nofed.php:42
-msgid "Federate"
+#: ../../addon/nofed/Mod_Nofed.php:21
+msgid "nofed Settings saved."
msgstr ""
-#: ../../addon/nofed/nofed.php:56
-msgid "nofed Settings saved."
+#: ../../addon/nofed/Mod_Nofed.php:33
+msgid "No Federation App"
msgstr ""
-#: ../../addon/nofed/nofed.php:72
-msgid "Allow Federation Toggle"
+#: ../../addon/nofed/Mod_Nofed.php:34
+msgid ""
+"Prevent posting from being federated to anybody. It will exist only on your "
+"channel page."
msgstr ""
-#: ../../addon/nofed/nofed.php:76
+#: ../../addon/nofed/Mod_Nofed.php:42
msgid "Federate posts by default"
msgstr ""
-#: ../../addon/nofed/nofed.php:80
-msgid "NoFed Settings"
+#: ../../addon/nofed/Mod_Nofed.php:50
+msgid "No Federation"
msgstr ""
-#: ../../addon/redred/redred.php:45
-msgid "Post to Red"
+#: ../../addon/nofed/nofed.php:47
+msgid "Federate"
msgstr ""
-#: ../../addon/redred/redred.php:60
+#: ../../addon/redred/Mod_Redred.php:24
msgid "Channel is required."
msgstr ""
-#: ../../addon/redred/redred.php:76
-msgid "redred Settings saved."
+#: ../../addon/redred/Mod_Redred.php:38
+msgid "Hubzilla Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/redred/Mod_Redred.php:50
+#: ../../addon/statusnet/Mod_Statusnet.php:146
+msgid "Hubzilla Crosspost Connector App"
msgstr ""
-#: ../../addon/redred/redred.php:95
-msgid "Allow posting to another Hubzilla Channel"
+#: ../../addon/redred/Mod_Redred.php:51
+msgid "Relay public postings to another Hubzilla channel"
msgstr ""
-#: ../../addon/redred/redred.php:99
+#: ../../addon/redred/Mod_Redred.php:63
msgid "Send public postings to Hubzilla channel by default"
msgstr ""
-#: ../../addon/redred/redred.php:103
+#: ../../addon/redred/Mod_Redred.php:67
msgid "Hubzilla API Path"
msgstr ""
-#: ../../addon/redred/redred.php:107
+#: ../../addon/redred/Mod_Redred.php:71
msgid "Hubzilla login name"
msgstr ""
-#: ../../addon/redred/redred.php:111
+#: ../../addon/redred/Mod_Redred.php:75
msgid "Hubzilla channel name"
msgstr ""
-#: ../../addon/redred/redred.php:119
-msgid "Hubzilla Crosspost Settings"
+#: ../../addon/redred/Mod_Redred.php:87
+msgid "Hubzilla Crosspost Connector"
+msgstr ""
+
+#: ../../addon/redred/redred.php:50
+msgid "Post to Hubzilla"
msgstr ""
#: ../../addon/logrot/logrot.php:36
@@ -11298,6 +11560,10 @@ msgstr ""
msgid "WYSIWYG status editor"
msgstr ""
+#: ../../addon/hsse/Mod_Hsse.php:21 ../../addon/hsse/Mod_Hsse.php:26
+msgid "WYSIWYG Status App"
+msgstr ""
+
#: ../../addon/hsse/Mod_Hsse.php:34
msgid "WYSIWYG Status"
msgstr ""
@@ -11334,35 +11600,35 @@ msgstr ""
msgid "Comments disabled"
msgstr ""
-#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1398
+#: ../../addon/hsse/hsse.php:195 ../../include/conversation.php:1401
msgid "Page link name"
msgstr ""
-#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1401
+#: ../../addon/hsse/hsse.php:198 ../../include/conversation.php:1404
msgid "Post as"
msgstr ""
-#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1415
+#: ../../addon/hsse/hsse.php:212 ../../include/conversation.php:1418
msgid "Toggle voting"
msgstr ""
-#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1418
+#: ../../addon/hsse/hsse.php:215 ../../include/conversation.php:1421
msgid "Disable comments"
msgstr ""
-#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1419
+#: ../../addon/hsse/hsse.php:216 ../../include/conversation.php:1422
msgid "Toggle comments"
msgstr ""
-#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1427
+#: ../../addon/hsse/hsse.php:224 ../../include/conversation.php:1430
msgid "Categories (optional, comma-separated list)"
msgstr ""
-#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1450
+#: ../../addon/hsse/hsse.php:247 ../../include/conversation.php:1453
msgid "Other networks and post services"
msgstr ""
-#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1456
+#: ../../addon/hsse/hsse.php:253 ../../include/conversation.php:1459
msgid "Set publish date"
msgstr ""
@@ -11377,6 +11643,10 @@ msgid ""
"locations."
msgstr ""
+#: ../../addon/pubcrawl/Mod_Pubcrawl.php:40
+msgid "Activitypub Protocol App"
+msgstr ""
+
#: ../../addon/pubcrawl/Mod_Pubcrawl.php:48
msgid "Deliver to ActivityPub recipients in privacy groups"
msgstr ""
@@ -11407,72 +11677,68 @@ msgstr ""
msgid "Project Creator and Tech Lead"
msgstr ""
-#: ../../addon/donate/donate.php:23
-msgid "Admin, developer, directorymin, support bloke"
-msgstr ""
-
-#: ../../addon/donate/donate.php:50
+#: ../../addon/donate/donate.php:49
msgid ""
"And the hundreds of other people and organisations who helped make the "
"Hubzilla possible."
msgstr ""
-#: ../../addon/donate/donate.php:53
+#: ../../addon/donate/donate.php:52
msgid ""
"The Redmatrix/Hubzilla projects are provided primarily by volunteers giving "
"their time and expertise - and often paying out of pocket for services they "
"share with others."
msgstr ""
-#: ../../addon/donate/donate.php:54
+#: ../../addon/donate/donate.php:53
msgid ""
"There is no corporate funding and no ads, and we do not collect and sell "
"your personal information. (We don't control your personal information - "
"<strong>you do</strong>.)"
msgstr ""
-#: ../../addon/donate/donate.php:55
+#: ../../addon/donate/donate.php:54
msgid ""
"Help support our ground-breaking work in decentralisation, web identity, and "
"privacy."
msgstr ""
-#: ../../addon/donate/donate.php:57
+#: ../../addon/donate/donate.php:56
msgid ""
"Your donations keep servers and services running and also helps us to "
"provide innovative new features and continued development."
msgstr ""
-#: ../../addon/donate/donate.php:60
+#: ../../addon/donate/donate.php:59
msgid "Donate"
msgstr ""
-#: ../../addon/donate/donate.php:62
+#: ../../addon/donate/donate.php:61
msgid ""
"Choose a project, developer, or public hub to support with a one-time "
"donation"
msgstr ""
-#: ../../addon/donate/donate.php:63
+#: ../../addon/donate/donate.php:62
msgid "Donate Now"
msgstr ""
-#: ../../addon/donate/donate.php:64
+#: ../../addon/donate/donate.php:63
msgid ""
"<strong><em>Or</em></strong> become a project sponsor (Hubzilla Project only)"
msgstr ""
-#: ../../addon/donate/donate.php:65
+#: ../../addon/donate/donate.php:64
msgid ""
"Please indicate if you would like your first name or full name (or nothing) "
"to appear in our sponsor listing"
msgstr ""
-#: ../../addon/donate/donate.php:66
+#: ../../addon/donate/donate.php:65
msgid "Sponsor"
msgstr ""
-#: ../../addon/donate/donate.php:69
+#: ../../addon/donate/donate.php:68
msgid "Special thanks to: "
msgstr ""
@@ -11522,128 +11788,137 @@ msgstr ""
msgid "Quick Reference"
msgstr ""
-#: ../../addon/libertree/libertree.php:38
+#: ../../addon/libertree/libertree.php:43
msgid "Post to Libertree"
msgstr ""
-#: ../../addon/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
+#: ../../addon/libertree/Mod_Libertree.php:25
+msgid "Libertree Crosspost Connector Settings saved."
+msgstr ""
+
+#: ../../addon/libertree/Mod_Libertree.php:35
+msgid "Libertree Crosspost Connector App"
+msgstr ""
+
+#: ../../addon/libertree/Mod_Libertree.php:36
+msgid "Relay public posts to Libertree"
msgstr ""
-#: ../../addon/libertree/libertree.php:73
+#: ../../addon/libertree/Mod_Libertree.php:51
msgid "Libertree API token"
msgstr ""
-#: ../../addon/libertree/libertree.php:77
+#: ../../addon/libertree/Mod_Libertree.php:55
msgid "Libertree site URL"
msgstr ""
-#: ../../addon/libertree/libertree.php:81
+#: ../../addon/libertree/Mod_Libertree.php:59
msgid "Post to Libertree by default"
msgstr ""
-#: ../../addon/libertree/libertree.php:85
-msgid "Libertree Post Settings"
+#: ../../addon/libertree/Mod_Libertree.php:67
+msgid "Libertree Crosspost Connector"
msgstr ""
-#: ../../addon/libertree/libertree.php:99
-msgid "Libertree Settings saved."
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:41
+msgid "Flattr widget settings updated."
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:45
-msgid "Flattr this!"
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:53
+msgid "Flattr Widget App"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:83
-msgid "Flattr widget settings updated."
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:54
+msgid "Add a Flattr button to your channel page"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:100
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:65
msgid "Flattr user"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:104
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
msgid "URL of the Thing to flattr"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:104
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:69
msgid "If empty channel URL is used"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:108
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
msgid "Title of the Thing to flattr"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:108
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:73
msgid "If empty \"channel name on The Hubzilla\" will be used"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "Static or dynamic flattr button"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "static"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:112
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:77
msgid "dynamic"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "Alignment of the widget"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "left"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:116
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:81
msgid "right"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:120
-msgid "Enable Flattr widget"
+#: ../../addon/flattrwidget/Mod_Flattrwidget.php:89
+msgid "Flattr Widget"
msgstr ""
-#: ../../addon/flattrwidget/flattrwidget.php:124
-msgid "Flattr Widget Settings"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:143
-msgid "Post to GNU social"
+#: ../../addon/flattrwidget/flattrwidget.php:50
+msgid "Flattr this!"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:195
+#: ../../addon/statusnet/Mod_Statusnet.php:61
msgid ""
"Please contact your site administrator.<br />The provided API URL is not "
"valid."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:232
+#: ../../addon/statusnet/Mod_Statusnet.php:98
msgid "We could not contact the GNU social API with the Path you entered."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:266
+#: ../../addon/statusnet/Mod_Statusnet.php:130
msgid "GNU social settings updated."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:310
+#: ../../addon/statusnet/Mod_Statusnet.php:147
+msgid ""
+"Relay public postings to a connected GNU social account (formerly StatusNet)"
+msgstr ""
+
+#: ../../addon/statusnet/Mod_Statusnet.php:181
msgid "Globally Available GNU social OAuthKeys"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:312
+#: ../../addon/statusnet/Mod_Statusnet.php:183
msgid ""
"There are preconfigured OAuth key pairs for some GNU social servers "
"available. If you are using one of them, please use these credentials.<br /"
">If not feel free to connect to any other GNU social instance (see below)."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:327
+#: ../../addon/statusnet/Mod_Statusnet.php:198
msgid "Provide your own OAuth Credentials"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:329
+#: ../../addon/statusnet/Mod_Statusnet.php:200
msgid ""
"No consumer key pair for GNU social found. Register your Hubzilla Account as "
"an desktop client on your GNU social account, copy the consumer key pair "
@@ -11652,27 +11927,27 @@ msgid ""
"Hubzilla installation at your favourite GNU social installation."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:333
+#: ../../addon/statusnet/Mod_Statusnet.php:204
msgid "OAuth Consumer Key"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:337
+#: ../../addon/statusnet/Mod_Statusnet.php:208
msgid "OAuth Consumer Secret"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Base API Path"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:341
+#: ../../addon/statusnet/Mod_Statusnet.php:212
msgid "Remember the trailing /"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:345
+#: ../../addon/statusnet/Mod_Statusnet.php:216
msgid "GNU social application name"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:368
+#: ../../addon/statusnet/Mod_Statusnet.php:239
msgid ""
"To connect to your GNU social account click the button below to get a "
"security code from GNU social which you have to copy into the input box "
@@ -11680,31 +11955,32 @@ msgid ""
"posted to GNU social."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:370
+#: ../../addon/statusnet/Mod_Statusnet.php:241
msgid "Log in with GNU social"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:373
+#: ../../addon/statusnet/Mod_Statusnet.php:244
msgid "Copy the security code from GNU social here"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:383
+#: ../../addon/statusnet/Mod_Statusnet.php:254
msgid "Cancel Connection Process"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:385
+#: ../../addon/statusnet/Mod_Statusnet.php:256
msgid "Current GNU social API is"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:389
+#: ../../addon/statusnet/Mod_Statusnet.php:260
msgid "Cancel GNU social Connection"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:401 ../../addon/twitter/twitter.php:236
+#: ../../addon/statusnet/Mod_Statusnet.php:272
+#: ../../addon/twitter/Mod_Twitter.php:147
msgid "Currently connected to: "
msgstr ""
-#: ../../addon/statusnet/statusnet.php:406
+#: ../../addon/statusnet/Mod_Statusnet.php:277
msgid ""
"<strong>Note</strong>: Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -11712,39 +11988,34 @@ msgid ""
"informing the visitor that the access to your profile has been restricted."
msgstr ""
-#: ../../addon/statusnet/statusnet.php:411
-msgid "Allow posting to GNU social"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:411
-msgid ""
-"If enabled your public postings can be posted to the associated GNU-social "
-"account"
-msgstr ""
-
-#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid "Post to GNU social by default"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:415
+#: ../../addon/statusnet/Mod_Statusnet.php:282
msgid ""
"If enabled your public postings will be posted to the associated GNU-social "
"account by default"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:424 ../../addon/twitter/twitter.php:264
+#: ../../addon/statusnet/Mod_Statusnet.php:291
+#: ../../addon/twitter/Mod_Twitter.php:171
msgid "Clear OAuth configuration"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:432
-msgid "GNU social Post Settings"
+#: ../../addon/statusnet/Mod_Statusnet.php:303
+msgid "GNU-Social Crosspost Connector"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:892
+#: ../../addon/statusnet/statusnet.php:145
+msgid "Post to GNU social"
+msgstr ""
+
+#: ../../addon/statusnet/statusnet.php:594
msgid "API URL"
msgstr ""
-#: ../../addon/statusnet/statusnet.php:895
+#: ../../addon/statusnet/statusnet.php:597
msgid "Application name"
msgstr ""
@@ -11760,57 +12031,65 @@ msgstr ""
msgid "Enter some text"
msgstr ""
-#: ../../addon/chess/chess.php:353 ../../addon/chess/chess.php:542
+#: ../../addon/chess/Mod_Chess.php:180 ../../addon/chess/Mod_Chess.php:377
msgid "Invalid game."
msgstr ""
-#: ../../addon/chess/chess.php:359 ../../addon/chess/chess.php:582
+#: ../../addon/chess/Mod_Chess.php:186 ../../addon/chess/Mod_Chess.php:417
msgid "You are not a player in this game."
msgstr ""
-#: ../../addon/chess/chess.php:415
+#: ../../addon/chess/Mod_Chess.php:242
msgid "You must be a local channel to create a game."
msgstr ""
-#: ../../addon/chess/chess.php:433
+#: ../../addon/chess/Mod_Chess.php:260
msgid "You must select one opponent that is not yourself."
msgstr ""
-#: ../../addon/chess/chess.php:444
+#: ../../addon/chess/Mod_Chess.php:271
msgid "Random color chosen."
msgstr ""
-#: ../../addon/chess/chess.php:452
+#: ../../addon/chess/Mod_Chess.php:279
msgid "Error creating new game."
msgstr ""
-#: ../../addon/chess/chess.php:486 ../../include/channel.php:1158
+#: ../../addon/chess/Mod_Chess.php:306 ../../include/channel.php:1207
msgid "Requested channel is not available."
msgstr ""
-#: ../../addon/chess/chess.php:500
+#: ../../addon/chess/Mod_Chess.php:311 ../../addon/chess/Mod_Chess.php:333
+msgid "Chess not installed."
+msgstr ""
+
+#: ../../addon/chess/Mod_Chess.php:326
msgid "You must select a local channel /chess/channelname"
msgstr ""
-#: ../../addon/chess/chess.php:1066
+#: ../../addon/chess/chess.php:642
msgid "Enable notifications"
msgstr ""
-#: ../../addon/twitter/twitter.php:102
-msgid "Post to Twitter"
+#: ../../addon/twitter/Mod_Twitter.php:65
+msgid "Twitter settings updated."
msgstr ""
-#: ../../addon/twitter/twitter.php:158
-msgid "Twitter settings updated."
+#: ../../addon/twitter/Mod_Twitter.php:78
+msgid "Twitter Crosspost Connector App"
msgstr ""
-#: ../../addon/twitter/twitter.php:187
+#: ../../addon/twitter/Mod_Twitter.php:79
+msgid "Relay public posts to Twitter"
+msgstr ""
+
+#: ../../addon/twitter/Mod_Twitter.php:103
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr ""
-#: ../../addon/twitter/twitter.php:209
+#: ../../addon/twitter/Mod_Twitter.php:125
msgid ""
"At this Hubzilla instance the Twitter plugin was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
@@ -11819,15 +12098,15 @@ msgid ""
"be posted to Twitter."
msgstr ""
-#: ../../addon/twitter/twitter.php:211
+#: ../../addon/twitter/Mod_Twitter.php:127
msgid "Log in with Twitter"
msgstr ""
-#: ../../addon/twitter/twitter.php:214
+#: ../../addon/twitter/Mod_Twitter.php:130
msgid "Copy the PIN from Twitter here"
msgstr ""
-#: ../../addon/twitter/twitter.php:241
+#: ../../addon/twitter/Mod_Twitter.php:152
msgid ""
"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -11835,47 +12114,45 @@ msgid ""
"the visitor that the access to your profile has been restricted."
msgstr ""
-#: ../../addon/twitter/twitter.php:246
-msgid "Allow posting to Twitter"
-msgstr ""
-
-#: ../../addon/twitter/twitter.php:246
-msgid ""
-"If enabled your public postings can be posted to the associated Twitter "
-"account"
-msgstr ""
-
-#: ../../addon/twitter/twitter.php:250
+#: ../../addon/twitter/Mod_Twitter.php:157
msgid "Twitter post length"
msgstr ""
-#: ../../addon/twitter/twitter.php:250
+#: ../../addon/twitter/Mod_Twitter.php:157
msgid "Maximum tweet length"
msgstr ""
-#: ../../addon/twitter/twitter.php:255
+#: ../../addon/twitter/Mod_Twitter.php:162
msgid "Send public postings to Twitter by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:255
+#: ../../addon/twitter/Mod_Twitter.php:162
msgid ""
"If enabled your public postings will be posted to the associated Twitter "
"account by default"
msgstr ""
-#: ../../addon/twitter/twitter.php:273
-msgid "Twitter Post Settings"
+#: ../../addon/twitter/Mod_Twitter.php:181
+msgid "Twitter Crosspost Connector"
+msgstr ""
+
+#: ../../addon/twitter/twitter.php:107
+msgid "Post to Twitter"
+msgstr ""
+
+#: ../../addon/smileybutton/Mod_Smileybutton.php:35
+msgid "Smileybutton App"
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:211
-msgid "Deactivate the feature"
+#: ../../addon/smileybutton/Mod_Smileybutton.php:36
+msgid "Adds a smileybutton to the jot editor"
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:215
+#: ../../addon/smileybutton/Mod_Smileybutton.php:44
msgid "Hide the button and show the smilies directly."
msgstr ""
-#: ../../addon/smileybutton/smileybutton.php:219
+#: ../../addon/smileybutton/Mod_Smileybutton.php:52
msgid "Smileybutton Settings"
msgstr ""
@@ -11891,7 +12168,7 @@ msgstr ""
msgid "Base Merchant Currency"
msgstr ""
-#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1262
+#: ../../addon/cart/Settings/Cart.php:111 ../../addon/cart/cart.php:1263
msgid "Cart Settings"
msgstr ""
@@ -11899,7 +12176,7 @@ msgstr ""
msgid "Access Denied."
msgstr ""
-#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1330
+#: ../../addon/cart/myshop.php:111 ../../addon/cart/cart.php:1334
msgid "Order Not Found"
msgstr ""
@@ -11912,53 +12189,53 @@ msgstr ""
msgid "DB Cleanup Failure"
msgstr ""
-#: ../../addon/cart/cart.php:564
+#: ../../addon/cart/cart.php:565
msgid "[cart] Item Added"
msgstr ""
-#: ../../addon/cart/cart.php:952
+#: ../../addon/cart/cart.php:953
msgid "Order already checked out."
msgstr ""
-#: ../../addon/cart/cart.php:1255
+#: ../../addon/cart/cart.php:1256
msgid "Drop database tables when uninstalling."
msgstr ""
-#: ../../addon/cart/cart.php:1274 ../../addon/cart/cart.php:1277
+#: ../../addon/cart/cart.php:1275 ../../addon/cart/cart.php:1278
msgid "Shop"
msgstr ""
-#: ../../addon/cart/cart.php:1391
+#: ../../addon/cart/cart.php:1395
msgid "Cart utilities for orders and payments"
msgstr ""
-#: ../../addon/cart/cart.php:1429
+#: ../../addon/cart/cart.php:1433
msgid "You must be logged into the Grid to shop."
msgstr ""
-#: ../../addon/cart/cart.php:1462
+#: ../../addon/cart/cart.php:1466
#: ../../addon/cart/submodules/paypalbutton.php:392
#: ../../addon/cart/manual_payments.php:68
msgid "Order not found."
msgstr ""
-#: ../../addon/cart/cart.php:1470
+#: ../../addon/cart/cart.php:1474
msgid "Access denied."
msgstr ""
-#: ../../addon/cart/cart.php:1522 ../../addon/cart/cart.php:1665
+#: ../../addon/cart/cart.php:1526 ../../addon/cart/cart.php:1669
msgid "No Order Found"
msgstr ""
-#: ../../addon/cart/cart.php:1531
+#: ../../addon/cart/cart.php:1535
msgid "An unknown error has occurred Please start again."
msgstr ""
-#: ../../addon/cart/cart.php:1698
+#: ../../addon/cart/cart.php:1702
msgid "Invalid Payment Type. Please start again."
msgstr ""
-#: ../../addon/cart/cart.php:1705
+#: ../../addon/cart/cart.php:1709
msgid "Order not found"
msgstr ""
@@ -12332,6 +12609,10 @@ msgstr ""
msgid "Send your identity to all websites"
msgstr ""
+#: ../../addon/sendzid/Mod_Sendzid.php:20
+msgid "Sendzid App"
+msgstr ""
+
#: ../../addon/sendzid/Mod_Sendzid.php:32
msgid "Send ZID"
msgstr ""
@@ -12390,16 +12671,24 @@ msgstr ""
msgid "I won!"
msgstr ""
-#: ../../addon/pageheader/pageheader.php:43
-msgid "Message to display on every page on this server"
+#: ../../addon/pageheader/Mod_Pageheader.php:22
+msgid "pageheader Settings saved."
msgstr ""
-#: ../../addon/pageheader/pageheader.php:48
-msgid "Pageheader Settings"
+#: ../../addon/pageheader/Mod_Pageheader.php:34
+msgid "Page Header App"
msgstr ""
-#: ../../addon/pageheader/pageheader.php:64
-msgid "pageheader Settings saved."
+#: ../../addon/pageheader/Mod_Pageheader.php:35
+msgid "Inserts a page header"
+msgstr ""
+
+#: ../../addon/pageheader/Mod_Pageheader.php:43
+msgid "Message to display on every page on this server"
+msgstr ""
+
+#: ../../addon/pageheader/Mod_Pageheader.php:51
+msgid "Page Header"
msgstr ""
#: ../../addon/authchoose/Mod_Authchoose.php:22
@@ -12407,6 +12696,11 @@ msgid ""
"Allow magic authentication only to websites of your immediate connections"
msgstr ""
+#: ../../addon/authchoose/Mod_Authchoose.php:28
+#: ../../addon/authchoose/Mod_Authchoose.php:33
+msgid "Authchoose App"
+msgstr ""
+
#: ../../addon/authchoose/Mod_Authchoose.php:39
msgid "Authchoose"
msgstr ""
@@ -12499,35 +12793,39 @@ msgstr ""
msgid "jealous"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:31
+#: ../../addon/xmpp/Mod_Xmpp.php:23
msgid "XMPP settings updated."
msgstr ""
-#: ../../addon/xmpp/xmpp.php:53
-msgid "Enable Chat"
+#: ../../addon/xmpp/Mod_Xmpp.php:35
+msgid "XMPP App"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:58
+#: ../../addon/xmpp/Mod_Xmpp.php:36
+msgid "Embedded XMPP (Jabber) client"
+msgstr ""
+
+#: ../../addon/xmpp/Mod_Xmpp.php:52
msgid "Individual credentials"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:64
+#: ../../addon/xmpp/Mod_Xmpp.php:58
msgid "Jabber BOSH server"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:69
+#: ../../addon/xmpp/Mod_Xmpp.php:67
msgid "XMPP Settings"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:92
+#: ../../addon/xmpp/xmpp.php:44
msgid "Jabber BOSH host"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:93
+#: ../../addon/xmpp/xmpp.php:45
msgid "Use central userbase"
msgstr ""
-#: ../../addon/xmpp/xmpp.php:93
+#: ../../addon/xmpp/xmpp.php:45
msgid ""
"If enabled, members will automatically login to an ejabberd server that has "
"to be installed on this machine with synchronized credentials via the "
@@ -12538,64 +12836,68 @@ msgstr ""
msgid "Who likes me?"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:148
-msgid "You are now authenticated to pumpio."
+#: ../../addon/pumpio/Mod_Pumpio.php:40
+msgid "Pump.io Settings saved."
msgstr ""
-#: ../../addon/pumpio/pumpio.php:149
-msgid "return to the featured settings page"
+#: ../../addon/pumpio/Mod_Pumpio.php:53
+msgid "Pump.io Crosspost Connector App"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:163
-msgid "Post to Pump.io"
+#: ../../addon/pumpio/Mod_Pumpio.php:54
+msgid "Relay public posts to pump.io"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:198
+#: ../../addon/pumpio/Mod_Pumpio.php:73
msgid "Pump.io servername"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:198
+#: ../../addon/pumpio/Mod_Pumpio.php:73
msgid "Without \"http://\" or \"https://\""
msgstr ""
-#: ../../addon/pumpio/pumpio.php:202
+#: ../../addon/pumpio/Mod_Pumpio.php:77
msgid "Pump.io username"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:202
+#: ../../addon/pumpio/Mod_Pumpio.php:77
msgid "Without the servername"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:213
+#: ../../addon/pumpio/Mod_Pumpio.php:88
msgid "You are not authenticated to pumpio"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:215
+#: ../../addon/pumpio/Mod_Pumpio.php:90
msgid "(Re-)Authenticate your pump.io connection"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:219
-msgid "Enable pump.io Post Plugin"
-msgstr ""
-
-#: ../../addon/pumpio/pumpio.php:223
+#: ../../addon/pumpio/Mod_Pumpio.php:94
msgid "Post to pump.io by default"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:227
+#: ../../addon/pumpio/Mod_Pumpio.php:98
msgid "Should posts be public"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:231
+#: ../../addon/pumpio/Mod_Pumpio.php:102
msgid "Mirror all public posts"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:237
-msgid "Pump.io Post Settings"
+#: ../../addon/pumpio/Mod_Pumpio.php:112
+msgid "Pump.io Crosspost Connector"
msgstr ""
-#: ../../addon/pumpio/pumpio.php:266
-msgid "PumpIO Settings saved."
+#: ../../addon/pumpio/pumpio.php:152
+msgid "You are now authenticated to pumpio."
+msgstr ""
+
+#: ../../addon/pumpio/pumpio.php:153
+msgid "return to the featured settings page"
+msgstr ""
+
+#: ../../addon/pumpio/pumpio.php:168
+msgid "Post to Pump.io"
msgstr ""
#: ../../addon/ldapauth/ldapauth.php:70
@@ -12714,11 +13016,11 @@ msgstr ""
msgid "Hermaphrodite"
msgstr ""
-#: ../../include/selectors.php:60 ../../include/channel.php:1491
+#: ../../include/selectors.php:60 ../../include/channel.php:1540
msgid "Neuter"
msgstr ""
-#: ../../include/selectors.php:60 ../../include/channel.php:1493
+#: ../../include/selectors.php:60 ../../include/channel.php:1542
msgid "Non-specific"
msgstr ""
@@ -12918,8 +13220,8 @@ msgstr ""
msgid "%1$s poked %2$s"
msgstr ""
-#: ../../include/conversation.php:251 ../../include/text.php:1146
-#: ../../include/text.php:1150
+#: ../../include/conversation.php:251 ../../include/text.php:1176
+#: ../../include/text.php:1180
msgid "poked"
msgstr ""
@@ -13017,42 +13319,42 @@ msgstr ""
msgid "%s don't like this."
msgstr ""
-#: ../../include/conversation.php:1699
+#: ../../include/conversation.php:1708
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1702
+#: ../../include/conversation.php:1711
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1705
+#: ../../include/conversation.php:1714
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1708
+#: ../../include/conversation.php:1717
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1711
+#: ../../include/conversation.php:1720
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
msgstr[0] ""
msgstr[1] ""
-#: ../../include/conversation.php:1714
+#: ../../include/conversation.php:1723
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
@@ -13064,11 +13366,11 @@ msgstr[1] ""
msgid "%1$s's bookmarks"
msgstr ""
-#: ../../include/import.php:25
+#: ../../include/import.php:26
msgid "Unable to import a removed channel."
msgstr ""
-#: ../../include/import.php:51
+#: ../../include/import.php:52
msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr ""
@@ -13077,369 +13379,369 @@ msgstr ""
msgid "Cloned channel not found. Import failed."
msgstr ""
-#: ../../include/text.php:498
+#: ../../include/text.php:501
msgid "prev"
msgstr ""
-#: ../../include/text.php:500
+#: ../../include/text.php:503
msgid "first"
msgstr ""
-#: ../../include/text.php:529
+#: ../../include/text.php:532
msgid "last"
msgstr ""
-#: ../../include/text.php:532
+#: ../../include/text.php:535
msgid "next"
msgstr ""
-#: ../../include/text.php:543
+#: ../../include/text.php:553
msgid "older"
msgstr ""
-#: ../../include/text.php:545
+#: ../../include/text.php:555
msgid "newer"
msgstr ""
-#: ../../include/text.php:969
+#: ../../include/text.php:979
msgid "No connections"
msgstr ""
-#: ../../include/text.php:1001
+#: ../../include/text.php:1011
#, php-format
msgid "View all %s connections"
msgstr ""
-#: ../../include/text.php:1057
+#: ../../include/text.php:1073
#, php-format
msgid "Network: %s"
msgstr ""
-#: ../../include/text.php:1146 ../../include/text.php:1150
+#: ../../include/text.php:1176 ../../include/text.php:1180
msgid "poke"
msgstr ""
-#: ../../include/text.php:1151
+#: ../../include/text.php:1181
msgid "ping"
msgstr ""
-#: ../../include/text.php:1151
+#: ../../include/text.php:1181
msgid "pinged"
msgstr ""
-#: ../../include/text.php:1152
+#: ../../include/text.php:1182
msgid "prod"
msgstr ""
-#: ../../include/text.php:1152
+#: ../../include/text.php:1182
msgid "prodded"
msgstr ""
-#: ../../include/text.php:1153
+#: ../../include/text.php:1183
msgid "slap"
msgstr ""
-#: ../../include/text.php:1153
+#: ../../include/text.php:1183
msgid "slapped"
msgstr ""
-#: ../../include/text.php:1154
+#: ../../include/text.php:1184
msgid "finger"
msgstr ""
-#: ../../include/text.php:1154
+#: ../../include/text.php:1184
msgid "fingered"
msgstr ""
-#: ../../include/text.php:1155
+#: ../../include/text.php:1185
msgid "rebuff"
msgstr ""
-#: ../../include/text.php:1155
+#: ../../include/text.php:1185
msgid "rebuffed"
msgstr ""
-#: ../../include/text.php:1178
+#: ../../include/text.php:1208
msgid "happy"
msgstr ""
-#: ../../include/text.php:1179
+#: ../../include/text.php:1209
msgid "sad"
msgstr ""
-#: ../../include/text.php:1180
+#: ../../include/text.php:1210
msgid "mellow"
msgstr ""
-#: ../../include/text.php:1181
+#: ../../include/text.php:1211
msgid "tired"
msgstr ""
-#: ../../include/text.php:1182
+#: ../../include/text.php:1212
msgid "perky"
msgstr ""
-#: ../../include/text.php:1183
+#: ../../include/text.php:1213
msgid "angry"
msgstr ""
-#: ../../include/text.php:1184
+#: ../../include/text.php:1214
msgid "stupefied"
msgstr ""
-#: ../../include/text.php:1185
+#: ../../include/text.php:1215
msgid "puzzled"
msgstr ""
-#: ../../include/text.php:1186
+#: ../../include/text.php:1216
msgid "interested"
msgstr ""
-#: ../../include/text.php:1187
+#: ../../include/text.php:1217
msgid "bitter"
msgstr ""
-#: ../../include/text.php:1188
+#: ../../include/text.php:1218
msgid "cheerful"
msgstr ""
-#: ../../include/text.php:1189
+#: ../../include/text.php:1219
msgid "alive"
msgstr ""
-#: ../../include/text.php:1190
+#: ../../include/text.php:1220
msgid "annoyed"
msgstr ""
-#: ../../include/text.php:1191
+#: ../../include/text.php:1221
msgid "anxious"
msgstr ""
-#: ../../include/text.php:1192
+#: ../../include/text.php:1222
msgid "cranky"
msgstr ""
-#: ../../include/text.php:1193
+#: ../../include/text.php:1223
msgid "disturbed"
msgstr ""
-#: ../../include/text.php:1194
+#: ../../include/text.php:1224
msgid "frustrated"
msgstr ""
-#: ../../include/text.php:1195
+#: ../../include/text.php:1225
msgid "depressed"
msgstr ""
-#: ../../include/text.php:1196
+#: ../../include/text.php:1226
msgid "motivated"
msgstr ""
-#: ../../include/text.php:1197
+#: ../../include/text.php:1227
msgid "relaxed"
msgstr ""
-#: ../../include/text.php:1198
+#: ../../include/text.php:1228
msgid "surprised"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:95
+#: ../../include/text.php:1416 ../../include/js_strings.php:95
msgid "Monday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:96
+#: ../../include/text.php:1416 ../../include/js_strings.php:96
msgid "Tuesday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:97
+#: ../../include/text.php:1416 ../../include/js_strings.php:97
msgid "Wednesday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:98
+#: ../../include/text.php:1416 ../../include/js_strings.php:98
msgid "Thursday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:99
+#: ../../include/text.php:1416 ../../include/js_strings.php:99
msgid "Friday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:100
+#: ../../include/text.php:1416 ../../include/js_strings.php:100
msgid "Saturday"
msgstr ""
-#: ../../include/text.php:1377 ../../include/js_strings.php:94
+#: ../../include/text.php:1416 ../../include/js_strings.php:94
msgid "Sunday"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:70
+#: ../../include/text.php:1420 ../../include/js_strings.php:70
msgid "January"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:71
+#: ../../include/text.php:1420 ../../include/js_strings.php:71
msgid "February"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:72
+#: ../../include/text.php:1420 ../../include/js_strings.php:72
msgid "March"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:73
+#: ../../include/text.php:1420 ../../include/js_strings.php:73
msgid "April"
msgstr ""
-#: ../../include/text.php:1381
+#: ../../include/text.php:1420
msgid "May"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:75
+#: ../../include/text.php:1420 ../../include/js_strings.php:75
msgid "June"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:76
+#: ../../include/text.php:1420 ../../include/js_strings.php:76
msgid "July"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:77
+#: ../../include/text.php:1420 ../../include/js_strings.php:77
msgid "August"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:78
+#: ../../include/text.php:1420 ../../include/js_strings.php:78
msgid "September"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:79
+#: ../../include/text.php:1420 ../../include/js_strings.php:79
msgid "October"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:80
+#: ../../include/text.php:1420 ../../include/js_strings.php:80
msgid "November"
msgstr ""
-#: ../../include/text.php:1381 ../../include/js_strings.php:81
+#: ../../include/text.php:1420 ../../include/js_strings.php:81
msgid "December"
msgstr ""
-#: ../../include/text.php:1455
+#: ../../include/text.php:1494
msgid "Unknown Attachment"
msgstr ""
-#: ../../include/text.php:1457 ../../include/feedutils.php:860
+#: ../../include/text.php:1496 ../../include/feedutils.php:858
msgid "unknown"
msgstr ""
-#: ../../include/text.php:1493
+#: ../../include/text.php:1532
msgid "remove category"
msgstr ""
-#: ../../include/text.php:1567
+#: ../../include/text.php:1606
msgid "remove from file"
msgstr ""
-#: ../../include/text.php:1709 ../../include/message.php:13
+#: ../../include/text.php:1765 ../../include/message.php:13
msgid "Download binary/encrypted content"
msgstr ""
-#: ../../include/text.php:1872 ../../include/language.php:423
+#: ../../include/text.php:1935 ../../include/language.php:423
msgid "default"
msgstr ""
-#: ../../include/text.php:1880
+#: ../../include/text.php:1943
msgid "Page layout"
msgstr ""
-#: ../../include/text.php:1880
+#: ../../include/text.php:1943
msgid "You can create your own with the layouts tool"
msgstr ""
-#: ../../include/text.php:1891
+#: ../../include/text.php:1954
msgid "HTML"
msgstr ""
-#: ../../include/text.php:1894
+#: ../../include/text.php:1957
msgid "Comanche Layout"
msgstr ""
-#: ../../include/text.php:1899
+#: ../../include/text.php:1962
msgid "PHP"
msgstr ""
-#: ../../include/text.php:1908
+#: ../../include/text.php:1971
msgid "Page content type"
msgstr ""
-#: ../../include/text.php:2041
+#: ../../include/text.php:2104
msgid "activity"
msgstr ""
-#: ../../include/text.php:2142
+#: ../../include/text.php:2205
msgid "a-z, 0-9, -, and _ only"
msgstr ""
-#: ../../include/text.php:2462
+#: ../../include/text.php:2531
msgid "Design Tools"
msgstr ""
-#: ../../include/text.php:2468
+#: ../../include/text.php:2537
msgid "Pages"
msgstr ""
-#: ../../include/text.php:2490
+#: ../../include/text.php:2559
msgid "Import website..."
msgstr ""
-#: ../../include/text.php:2491
+#: ../../include/text.php:2560
msgid "Select folder to import"
msgstr ""
-#: ../../include/text.php:2492
+#: ../../include/text.php:2561
msgid "Import from a zipped folder:"
msgstr ""
-#: ../../include/text.php:2493
+#: ../../include/text.php:2562
msgid "Import from cloud files:"
msgstr ""
-#: ../../include/text.php:2494
+#: ../../include/text.php:2563
msgid "/cloud/channel/path/to/folder"
msgstr ""
-#: ../../include/text.php:2495
+#: ../../include/text.php:2564
msgid "Enter path to website files"
msgstr ""
-#: ../../include/text.php:2496
+#: ../../include/text.php:2565
msgid "Select folder"
msgstr ""
-#: ../../include/text.php:2497
+#: ../../include/text.php:2566
msgid "Export website..."
msgstr ""
-#: ../../include/text.php:2498
+#: ../../include/text.php:2567
msgid "Export to a zip file"
msgstr ""
-#: ../../include/text.php:2499
+#: ../../include/text.php:2568
msgid "website.zip"
msgstr ""
-#: ../../include/text.php:2500
+#: ../../include/text.php:2569
msgid "Enter a name for the zip file."
msgstr ""
-#: ../../include/text.php:2501
+#: ../../include/text.php:2570
msgid "Export to cloud files"
msgstr ""
-#: ../../include/text.php:2502
+#: ../../include/text.php:2571
msgid "/path/to/export/folder"
msgstr ""
-#: ../../include/text.php:2503
+#: ../../include/text.php:2572
msgid "Enter a path to a cloud files destination."
msgstr ""
-#: ../../include/text.php:2504
+#: ../../include/text.php:2573
msgid "Specify folder"
msgstr ""
@@ -13478,16 +13780,16 @@ msgstr ""
msgid "Advanced example: name=fred and country=iceland"
msgstr ""
-#: ../../include/contact_widgets.php:223
+#: ../../include/contact_widgets.php:218
msgid "Common Connections"
msgstr ""
-#: ../../include/contact_widgets.php:228
+#: ../../include/contact_widgets.php:222
#, php-format
msgid "View all %d common connections"
msgstr ""
-#: ../../include/markdown.php:200 ../../include/bbcode.php:358
+#: ../../include/markdown.php:198 ../../include/bbcode.php:347
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr ""
@@ -13843,92 +14145,92 @@ msgstr ""
msgid "Stored post could not be verified."
msgstr ""
-#: ../../include/activities.php:41
+#: ../../include/activities.php:42
msgid " and "
msgstr ""
-#: ../../include/activities.php:49
+#: ../../include/activities.php:50
msgid "public profile"
msgstr ""
-#: ../../include/activities.php:58
+#: ../../include/activities.php:59
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr ""
-#: ../../include/activities.php:59
+#: ../../include/activities.php:60
#, php-format
msgid "Visit %1$s's %2$s"
msgstr ""
-#: ../../include/activities.php:62
+#: ../../include/activities.php:63
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
-#: ../../include/attach.php:265 ../../include/attach.php:374
+#: ../../include/attach.php:267 ../../include/attach.php:376
msgid "Item was not found."
msgstr ""
-#: ../../include/attach.php:282
+#: ../../include/attach.php:284
msgid "Unknown error."
msgstr ""
-#: ../../include/attach.php:567
+#: ../../include/attach.php:569
msgid "No source file."
msgstr ""
-#: ../../include/attach.php:589
+#: ../../include/attach.php:591
msgid "Cannot locate file to replace"
msgstr ""
-#: ../../include/attach.php:608
+#: ../../include/attach.php:610
msgid "Cannot locate file to revise/update"
msgstr ""
-#: ../../include/attach.php:750
+#: ../../include/attach.php:752
#, php-format
msgid "File exceeds size limit of %d"
msgstr ""
-#: ../../include/attach.php:771
+#: ../../include/attach.php:773
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr ""
-#: ../../include/attach.php:953
+#: ../../include/attach.php:955
msgid "File upload failed. Possible system limit or action terminated."
msgstr ""
-#: ../../include/attach.php:982
+#: ../../include/attach.php:984
msgid "Stored file could not be verified. Upload failed."
msgstr ""
-#: ../../include/attach.php:1056 ../../include/attach.php:1072
+#: ../../include/attach.php:1058 ../../include/attach.php:1074
msgid "Path not available."
msgstr ""
-#: ../../include/attach.php:1121 ../../include/attach.php:1286
+#: ../../include/attach.php:1123 ../../include/attach.php:1288
msgid "Empty pathname"
msgstr ""
-#: ../../include/attach.php:1147
+#: ../../include/attach.php:1149
msgid "duplicate filename or path"
msgstr ""
-#: ../../include/attach.php:1172
+#: ../../include/attach.php:1174
msgid "Path not found."
msgstr ""
-#: ../../include/attach.php:1240
+#: ../../include/attach.php:1242
msgid "mkdir failed."
msgstr ""
-#: ../../include/attach.php:1244
+#: ../../include/attach.php:1246
msgid "database storage failed."
msgstr ""
-#: ../../include/attach.php:1292
+#: ../../include/attach.php:1294
msgid "Empty path"
msgstr ""
@@ -13938,301 +14240,297 @@ msgid ""
"form has been opened for too long (>3 hours) before submitting it."
msgstr ""
-#: ../../include/items.php:911 ../../include/items.php:971
+#: ../../include/items.php:955 ../../include/items.php:1015
msgid "(Unknown)"
msgstr ""
-#: ../../include/items.php:1157
+#: ../../include/items.php:1203
msgid "Visible to anybody on the internet."
msgstr ""
-#: ../../include/items.php:1159
+#: ../../include/items.php:1205
msgid "Visible to you only."
msgstr ""
-#: ../../include/items.php:1161
+#: ../../include/items.php:1207
msgid "Visible to anybody in this network."
msgstr ""
-#: ../../include/items.php:1163
+#: ../../include/items.php:1209
msgid "Visible to anybody authenticated."
msgstr ""
-#: ../../include/items.php:1165
+#: ../../include/items.php:1211
#, php-format
msgid "Visible to anybody on %s."
msgstr ""
-#: ../../include/items.php:1167
+#: ../../include/items.php:1213
msgid "Visible to all connections."
msgstr ""
-#: ../../include/items.php:1169
+#: ../../include/items.php:1215
msgid "Visible to approved connections."
msgstr ""
-#: ../../include/items.php:1171
+#: ../../include/items.php:1217
msgid "Visible to specific connections."
msgstr ""
-#: ../../include/items.php:4183
+#: ../../include/items.php:4291
msgid "Privacy group is empty."
msgstr ""
-#: ../../include/items.php:4190
+#: ../../include/items.php:4298
#, php-format
msgid "Privacy group: %s"
msgstr ""
-#: ../../include/items.php:4202
+#: ../../include/items.php:4310
msgid "Connection not found."
msgstr ""
-#: ../../include/items.php:4551
+#: ../../include/items.php:4659
msgid "profile photo"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
#, php-format
msgid "[Edited %s]"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
msgctxt "edit_activity"
msgid "Post"
msgstr ""
-#: ../../include/items.php:4742
+#: ../../include/items.php:4851
msgctxt "edit_activity"
msgid "Comment"
msgstr ""
-#: ../../include/channel.php:42
+#: ../../include/channel.php:43
msgid "Unable to obtain identity information from database"
msgstr ""
-#: ../../include/channel.php:75
+#: ../../include/channel.php:76
msgid "Empty name"
msgstr ""
-#: ../../include/channel.php:78
+#: ../../include/channel.php:79
msgid "Name too long"
msgstr ""
-#: ../../include/channel.php:195
+#: ../../include/channel.php:196
msgid "No account identifier"
msgstr ""
-#: ../../include/channel.php:207
+#: ../../include/channel.php:208
msgid "Nickname is required."
msgstr ""
-#: ../../include/channel.php:284
+#: ../../include/channel.php:287
msgid "Unable to retrieve created identity"
msgstr ""
-#: ../../include/channel.php:380
+#: ../../include/channel.php:429
msgid "Default Profile"
msgstr ""
-#: ../../include/channel.php:539 ../../include/channel.php:628
+#: ../../include/channel.php:588 ../../include/channel.php:677
msgid "Unable to retrieve modified identity"
msgstr ""
-#: ../../include/channel.php:1304
+#: ../../include/channel.php:1353
msgid "Create New Profile"
msgstr ""
-#: ../../include/channel.php:1325
+#: ../../include/channel.php:1374
msgid "Visible to everybody"
msgstr ""
-#: ../../include/channel.php:1402 ../../include/channel.php:1530
+#: ../../include/channel.php:1451 ../../include/channel.php:1579
msgid "Gender:"
msgstr ""
-#: ../../include/channel.php:1404 ../../include/channel.php:1598
+#: ../../include/channel.php:1453 ../../include/channel.php:1647
msgid "Homepage:"
msgstr ""
-#: ../../include/channel.php:1405
+#: ../../include/channel.php:1454
msgid "Online Now"
msgstr ""
-#: ../../include/channel.php:1458
+#: ../../include/channel.php:1507
msgid "Change your profile photo"
msgstr ""
-#: ../../include/channel.php:1489
+#: ../../include/channel.php:1538
msgid "Trans"
msgstr ""
-#: ../../include/channel.php:1535
+#: ../../include/channel.php:1584
msgid "Like this channel"
msgstr ""
-#: ../../include/channel.php:1559
+#: ../../include/channel.php:1608
msgid "j F, Y"
msgstr ""
-#: ../../include/channel.php:1560
+#: ../../include/channel.php:1609
msgid "j F"
msgstr ""
-#: ../../include/channel.php:1567
+#: ../../include/channel.php:1616
msgid "Birthday:"
msgstr ""
-#: ../../include/channel.php:1580
+#: ../../include/channel.php:1629
#, php-format
msgid "for %1$d %2$s"
msgstr ""
-#: ../../include/channel.php:1592
+#: ../../include/channel.php:1641
msgid "Tags:"
msgstr ""
-#: ../../include/channel.php:1596
+#: ../../include/channel.php:1645
msgid "Sexual Preference:"
msgstr ""
-#: ../../include/channel.php:1602
+#: ../../include/channel.php:1651
msgid "Political Views:"
msgstr ""
-#: ../../include/channel.php:1604
+#: ../../include/channel.php:1653
msgid "Religion:"
msgstr ""
-#: ../../include/channel.php:1608
+#: ../../include/channel.php:1657
msgid "Hobbies/Interests:"
msgstr ""
-#: ../../include/channel.php:1610
+#: ../../include/channel.php:1659
msgid "Likes:"
msgstr ""
-#: ../../include/channel.php:1612
+#: ../../include/channel.php:1661
msgid "Dislikes:"
msgstr ""
-#: ../../include/channel.php:1614
+#: ../../include/channel.php:1663
msgid "Contact information and Social Networks:"
msgstr ""
-#: ../../include/channel.php:1616
+#: ../../include/channel.php:1665
msgid "My other channels:"
msgstr ""
-#: ../../include/channel.php:1618
+#: ../../include/channel.php:1667
msgid "Musical interests:"
msgstr ""
-#: ../../include/channel.php:1620
+#: ../../include/channel.php:1669
msgid "Books, literature:"
msgstr ""
-#: ../../include/channel.php:1622
+#: ../../include/channel.php:1671
msgid "Television:"
msgstr ""
-#: ../../include/channel.php:1624
+#: ../../include/channel.php:1673
msgid "Film/dance/culture/entertainment:"
msgstr ""
-#: ../../include/channel.php:1626
+#: ../../include/channel.php:1675
msgid "Love/Romance:"
msgstr ""
-#: ../../include/channel.php:1628
+#: ../../include/channel.php:1677
msgid "Work/employment:"
msgstr ""
-#: ../../include/channel.php:1630
+#: ../../include/channel.php:1679
msgid "School/education:"
msgstr ""
-#: ../../include/channel.php:1653
+#: ../../include/channel.php:1702
msgid "Like this thing"
msgstr ""
-#: ../../include/event.php:24 ../../include/event.php:71
+#: ../../include/event.php:28 ../../include/event.php:75
msgid "l F d, Y \\@ g:i A"
msgstr ""
-#: ../../include/event.php:32 ../../include/event.php:75
+#: ../../include/event.php:36 ../../include/event.php:79
msgid "Starts:"
msgstr ""
-#: ../../include/event.php:42 ../../include/event.php:79
+#: ../../include/event.php:46 ../../include/event.php:83
msgid "Finishes:"
msgstr ""
-#: ../../include/event.php:1011
+#: ../../include/event.php:1020
msgid "This event has been added to your calendar."
msgstr ""
-#: ../../include/event.php:1227
+#: ../../include/event.php:1239
msgid "Not specified"
msgstr ""
-#: ../../include/event.php:1228
+#: ../../include/event.php:1240
msgid "Needs Action"
msgstr ""
-#: ../../include/event.php:1229
+#: ../../include/event.php:1241
msgid "Completed"
msgstr ""
-#: ../../include/event.php:1230
+#: ../../include/event.php:1242
msgid "In Process"
msgstr ""
-#: ../../include/event.php:1231
+#: ../../include/event.php:1243
msgid "Cancelled"
msgstr ""
-#: ../../include/event.php:1310 ../../include/connections.php:698
+#: ../../include/event.php:1322 ../../include/connections.php:698
msgid "Home, Voice"
msgstr ""
-#: ../../include/event.php:1311 ../../include/connections.php:699
+#: ../../include/event.php:1323 ../../include/connections.php:699
msgid "Home, Fax"
msgstr ""
-#: ../../include/event.php:1313 ../../include/connections.php:701
+#: ../../include/event.php:1325 ../../include/connections.php:701
msgid "Work, Voice"
msgstr ""
-#: ../../include/event.php:1314 ../../include/connections.php:702
+#: ../../include/event.php:1326 ../../include/connections.php:702
msgid "Work, Fax"
msgstr ""
-#: ../../include/network.php:770
-msgid "view full size"
-msgstr ""
-
-#: ../../include/network.php:1776
+#: ../../include/network.php:1718
msgid "GNU-Social"
msgstr ""
-#: ../../include/network.php:1777
+#: ../../include/network.php:1719
msgid "RSS/Atom"
msgstr ""
-#: ../../include/network.php:1781
+#: ../../include/network.php:1723
msgid "Facebook"
msgstr ""
-#: ../../include/network.php:1783
+#: ../../include/network.php:1725
msgid "LinkedIn"
msgstr ""
-#: ../../include/network.php:1784
+#: ../../include/network.php:1726
msgid "XMPP/IM"
msgstr ""
-#: ../../include/network.php:1785
+#: ../../include/network.php:1727
msgid "MySpace"
msgstr ""
@@ -14269,22 +14567,17 @@ msgid ""
"permissions set who is allowed to view the post."
msgstr ""
-#: ../../include/dba/dba_driver.php:178
-#, php-format
-msgid "Cannot locate DNS info for database server '%s'"
-msgstr ""
-
-#: ../../include/bbcode.php:200 ../../include/bbcode.php:1201
-#: ../../include/bbcode.php:1204 ../../include/bbcode.php:1209
-#: ../../include/bbcode.php:1212 ../../include/bbcode.php:1215
-#: ../../include/bbcode.php:1218 ../../include/bbcode.php:1223
-#: ../../include/bbcode.php:1226 ../../include/bbcode.php:1231
-#: ../../include/bbcode.php:1234 ../../include/bbcode.php:1237
-#: ../../include/bbcode.php:1240
+#: ../../include/bbcode.php:200 ../../include/bbcode.php:1190
+#: ../../include/bbcode.php:1193 ../../include/bbcode.php:1198
+#: ../../include/bbcode.php:1201 ../../include/bbcode.php:1204
+#: ../../include/bbcode.php:1207 ../../include/bbcode.php:1212
+#: ../../include/bbcode.php:1215 ../../include/bbcode.php:1220
+#: ../../include/bbcode.php:1223 ../../include/bbcode.php:1226
+#: ../../include/bbcode.php:1229
msgid "Image/photo"
msgstr ""
-#: ../../include/bbcode.php:239 ../../include/bbcode.php:1251
+#: ../../include/bbcode.php:239 ../../include/bbcode.php:1240
msgid "Encrypted content"
msgstr ""
@@ -14300,51 +14593,51 @@ msgid ""
"to install it on this site."
msgstr ""
-#: ../../include/bbcode.php:350
+#: ../../include/bbcode.php:339
msgid "card"
msgstr ""
-#: ../../include/bbcode.php:352
+#: ../../include/bbcode.php:341
msgid "article"
msgstr ""
-#: ../../include/bbcode.php:435 ../../include/bbcode.php:443
+#: ../../include/bbcode.php:424 ../../include/bbcode.php:432
msgid "Click to open/close"
msgstr ""
-#: ../../include/bbcode.php:443
+#: ../../include/bbcode.php:432
msgid "spoiler"
msgstr ""
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View article"
msgstr ""
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View summary"
msgstr ""
-#: ../../include/bbcode.php:1189
+#: ../../include/bbcode.php:1178
msgid "$1 wrote:"
msgstr ""
-#: ../../include/oembed.php:224
+#: ../../include/oembed.php:226
msgid "View PDF"
msgstr ""
-#: ../../include/oembed.php:347
+#: ../../include/oembed.php:356
msgid " by "
msgstr ""
-#: ../../include/oembed.php:348
+#: ../../include/oembed.php:357
msgid " on "
msgstr ""
-#: ../../include/oembed.php:377
+#: ../../include/oembed.php:386
msgid "Embedded content"
msgstr ""
-#: ../../include/oembed.php:386
+#: ../../include/oembed.php:395
msgid "Embedding disabled"
msgstr ""
@@ -14377,11 +14670,11 @@ msgstr ""
msgid "Provide a personal tag cloud on your channel page"
msgstr ""
-#: ../../include/features.php:116 ../../include/features.php:381
+#: ../../include/features.php:116 ../../include/features.php:373
msgid "Use blog/list mode"
msgstr ""
-#: ../../include/features.php:117 ../../include/features.php:382
+#: ../../include/features.php:117 ../../include/features.php:374
msgid "Comments will be displayed separately"
msgstr ""
@@ -14592,47 +14885,39 @@ msgstr ""
msgid "Ability to display only posts that you've interacted on"
msgstr ""
-#: ../../include/features.php:365
-msgid "Affinity Tool"
-msgstr ""
-
#: ../../include/features.php:366
-msgid "Filter stream activity by depth of relationships"
-msgstr ""
-
-#: ../../include/features.php:374
msgid "Show friend and connection suggestions"
msgstr ""
-#: ../../include/features.php:395
+#: ../../include/features.php:387
msgid "Photo Location"
msgstr ""
-#: ../../include/features.php:396
+#: ../../include/features.php:388
msgid "If location data is available on uploaded photos, link this to a map."
msgstr ""
-#: ../../include/features.php:409
+#: ../../include/features.php:401
msgid "Advanced Profiles"
msgstr ""
-#: ../../include/features.php:410
+#: ../../include/features.php:402
msgid "Additional profile sections and selections"
msgstr ""
-#: ../../include/features.php:417
+#: ../../include/features.php:409
msgid "Profile Import/Export"
msgstr ""
-#: ../../include/features.php:418
+#: ../../include/features.php:410
msgid "Save and load profile details across sites/channels"
msgstr ""
-#: ../../include/features.php:425
+#: ../../include/features.php:417
msgid "Multiple Profiles"
msgstr ""
-#: ../../include/features.php:426
+#: ../../include/features.php:418
msgid "Ability to create multiple profiles"
msgstr ""
@@ -14877,55 +15162,55 @@ msgstr ""
msgid "Site Setup and Configuration"
msgstr ""
-#: ../../include/nav.php:299
+#: ../../include/nav.php:329
msgid "@name, !forum, #tag, ?doc, content"
msgstr ""
-#: ../../include/nav.php:300
+#: ../../include/nav.php:330
msgid "Please wait..."
msgstr ""
-#: ../../include/nav.php:306
+#: ../../include/nav.php:336
msgid "Add Apps"
msgstr ""
-#: ../../include/nav.php:307
+#: ../../include/nav.php:337
msgid "Arrange Apps"
msgstr ""
-#: ../../include/nav.php:308
+#: ../../include/nav.php:338
msgid "Toggle System Apps"
msgstr ""
-#: ../../include/nav.php:394
+#: ../../include/nav.php:424
msgid "Status Messages and Posts"
msgstr ""
-#: ../../include/nav.php:407
+#: ../../include/nav.php:437
msgid "Profile Details"
msgstr ""
-#: ../../include/nav.php:417 ../../include/photos.php:667
+#: ../../include/nav.php:447 ../../include/photos.php:669
msgid "Photo Albums"
msgstr ""
-#: ../../include/nav.php:425
+#: ../../include/nav.php:455
msgid "Files and Storage"
msgstr ""
-#: ../../include/nav.php:463
+#: ../../include/nav.php:493
msgid "Saved Bookmarks"
msgstr ""
-#: ../../include/nav.php:474
+#: ../../include/nav.php:504
msgid "View Cards"
msgstr ""
-#: ../../include/nav.php:485
+#: ../../include/nav.php:515
msgid "View Articles"
msgstr ""
-#: ../../include/nav.php:497
+#: ../../include/nav.php:527
msgid "View Webpages"
msgstr ""
@@ -14952,15 +15237,15 @@ msgctxt "photo_upload"
msgid "%1$s posted %2$s to %3$s"
msgstr ""
-#: ../../include/photos.php:672
+#: ../../include/photos.php:674
msgid "Upload New Photos"
msgstr ""
-#: ../../include/zot.php:773
+#: ../../include/zot.php:775
msgid "Invalid data packet"
msgstr ""
-#: ../../include/zot.php:4235
+#: ../../include/zot.php:4288
msgid "invalid target signature"
msgstr ""
diff --git a/vendor/composer/autoload_classmap.php b/vendor/composer/autoload_classmap.php
index ff64c904f..de9c63bdc 100644
--- a/vendor/composer/autoload_classmap.php
+++ b/vendor/composer/autoload_classmap.php
@@ -811,6 +811,7 @@ return array(
'Zotlabs\\Access\\PermissionRoles' => $baseDir . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => $baseDir . '/Zotlabs/Access/Permissions.php',
'Zotlabs\\Daemon\\Addon' => $baseDir . '/Zotlabs/Daemon/Addon.php',
+ 'Zotlabs\\Daemon\\Cache_embeds' => $baseDir . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Checksites' => $baseDir . '/Zotlabs/Daemon/Checksites.php',
'Zotlabs\\Daemon\\Cli_suggest' => $baseDir . '/Zotlabs/Daemon/Cli_suggest.php',
'Zotlabs\\Daemon\\Cron' => $baseDir . '/Zotlabs/Daemon/Cron.php',
@@ -876,6 +877,7 @@ return array(
'Zotlabs\\Lib\\System' => $baseDir . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => $baseDir . '/Zotlabs/Lib/Techlevels.php',
'Zotlabs\\Lib\\ThreadItem' => $baseDir . '/Zotlabs/Lib/ThreadItem.php',
+ 'Zotlabs\\Lib\\ThreadListener' => $baseDir . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => $baseDir . '/Zotlabs/Lib/ThreadStream.php',
'Zotlabs\\Lib\\Verify' => $baseDir . '/Zotlabs/Lib/Verify.php',
'Zotlabs\\Lib\\Webfinger' => $baseDir . '/Zotlabs/Lib/Webfinger.php',
@@ -896,6 +898,7 @@ return array(
'Zotlabs\\Module\\Admin\\Security' => $baseDir . '/Zotlabs/Module/Admin/Security.php',
'Zotlabs\\Module\\Admin\\Site' => $baseDir . '/Zotlabs/Module/Admin/Site.php',
'Zotlabs\\Module\\Admin\\Themes' => $baseDir . '/Zotlabs/Module/Admin/Themes.php',
+ 'Zotlabs\\Module\\Affinity' => $baseDir . '/Zotlabs/Module/Affinity.php',
'Zotlabs\\Module\\Api' => $baseDir . '/Zotlabs/Module/Api.php',
'Zotlabs\\Module\\Appman' => $baseDir . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => $baseDir . '/Zotlabs/Module/Apporder.php',
@@ -938,6 +941,7 @@ return array(
'Zotlabs\\Module\\Editwebpage' => $baseDir . '/Zotlabs/Module/Editwebpage.php',
'Zotlabs\\Module\\Email_resend' => $baseDir . '/Zotlabs/Module/Email_resend.php',
'Zotlabs\\Module\\Email_validation' => $baseDir . '/Zotlabs/Module/Email_validation.php',
+ 'Zotlabs\\Module\\Embed' => $baseDir . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => $baseDir . '/Zotlabs/Module/Embedphotos.php',
'Zotlabs\\Module\\Events' => $baseDir . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Fbrowser' => $baseDir . '/Zotlabs/Module/Fbrowser.php',
@@ -1092,6 +1096,9 @@ return array(
'Zotlabs\\Module\\Zot_probe' => $baseDir . '/Zotlabs/Module/Zot_probe.php',
'Zotlabs\\Module\\Zotfeed' => $baseDir . '/Zotlabs/Module/Zotfeed.php',
'Zotlabs\\Module\\Zping' => $baseDir . '/Zotlabs/Module/Zping.php',
+ 'Zotlabs\\Photo\\PhotoDriver' => $baseDir . '/Zotlabs/Photo/PhotoDriver.php',
+ 'Zotlabs\\Photo\\PhotoGd' => $baseDir . '/Zotlabs/Photo/PhotoGd.php',
+ 'Zotlabs\\Photo\\PhotoImagick' => $baseDir . '/Zotlabs/Photo/PhotoImagick.php',
'Zotlabs\\Render\\Comanche' => $baseDir . '/Zotlabs/Render/Comanche.php',
'Zotlabs\\Render\\SimpleTemplate' => $baseDir . '/Zotlabs/Render/SimpleTemplate.php',
'Zotlabs\\Render\\SmartyInterface' => $baseDir . '/Zotlabs/Render/SmartyInterface.php',
diff --git a/vendor/composer/autoload_static.php b/vendor/composer/autoload_static.php
index 69c31dd65..d4daa13e6 100644
--- a/vendor/composer/autoload_static.php
+++ b/vendor/composer/autoload_static.php
@@ -979,6 +979,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Access\\PermissionRoles' => __DIR__ . '/../..' . '/Zotlabs/Access/PermissionRoles.php',
'Zotlabs\\Access\\Permissions' => __DIR__ . '/../..' . '/Zotlabs/Access/Permissions.php',
'Zotlabs\\Daemon\\Addon' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Addon.php',
+ 'Zotlabs\\Daemon\\Cache_embeds' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cache_embeds.php',
'Zotlabs\\Daemon\\Checksites' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Checksites.php',
'Zotlabs\\Daemon\\Cli_suggest' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cli_suggest.php',
'Zotlabs\\Daemon\\Cron' => __DIR__ . '/../..' . '/Zotlabs/Daemon/Cron.php',
@@ -1044,6 +1045,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Lib\\System' => __DIR__ . '/../..' . '/Zotlabs/Lib/System.php',
'Zotlabs\\Lib\\Techlevels' => __DIR__ . '/../..' . '/Zotlabs/Lib/Techlevels.php',
'Zotlabs\\Lib\\ThreadItem' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadItem.php',
+ 'Zotlabs\\Lib\\ThreadListener' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadListener.php',
'Zotlabs\\Lib\\ThreadStream' => __DIR__ . '/../..' . '/Zotlabs/Lib/ThreadStream.php',
'Zotlabs\\Lib\\Verify' => __DIR__ . '/../..' . '/Zotlabs/Lib/Verify.php',
'Zotlabs\\Lib\\Webfinger' => __DIR__ . '/../..' . '/Zotlabs/Lib/Webfinger.php',
@@ -1064,6 +1066,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Admin\\Security' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Security.php',
'Zotlabs\\Module\\Admin\\Site' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Site.php',
'Zotlabs\\Module\\Admin\\Themes' => __DIR__ . '/../..' . '/Zotlabs/Module/Admin/Themes.php',
+ 'Zotlabs\\Module\\Affinity' => __DIR__ . '/../..' . '/Zotlabs/Module/Affinity.php',
'Zotlabs\\Module\\Api' => __DIR__ . '/../..' . '/Zotlabs/Module/Api.php',
'Zotlabs\\Module\\Appman' => __DIR__ . '/../..' . '/Zotlabs/Module/Appman.php',
'Zotlabs\\Module\\Apporder' => __DIR__ . '/../..' . '/Zotlabs/Module/Apporder.php',
@@ -1106,6 +1109,7 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Editwebpage' => __DIR__ . '/../..' . '/Zotlabs/Module/Editwebpage.php',
'Zotlabs\\Module\\Email_resend' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_resend.php',
'Zotlabs\\Module\\Email_validation' => __DIR__ . '/../..' . '/Zotlabs/Module/Email_validation.php',
+ 'Zotlabs\\Module\\Embed' => __DIR__ . '/../..' . '/Zotlabs/Module/Embed.php',
'Zotlabs\\Module\\Embedphotos' => __DIR__ . '/../..' . '/Zotlabs/Module/Embedphotos.php',
'Zotlabs\\Module\\Events' => __DIR__ . '/../..' . '/Zotlabs/Module/Events.php',
'Zotlabs\\Module\\Fbrowser' => __DIR__ . '/../..' . '/Zotlabs/Module/Fbrowser.php',
@@ -1260,6 +1264,9 @@ class ComposerStaticInit7b34d7e50a62201ec5d5e526a5b8b35d
'Zotlabs\\Module\\Zot_probe' => __DIR__ . '/../..' . '/Zotlabs/Module/Zot_probe.php',
'Zotlabs\\Module\\Zotfeed' => __DIR__ . '/../..' . '/Zotlabs/Module/Zotfeed.php',
'Zotlabs\\Module\\Zping' => __DIR__ . '/../..' . '/Zotlabs/Module/Zping.php',
+ 'Zotlabs\\Photo\\PhotoDriver' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoDriver.php',
+ 'Zotlabs\\Photo\\PhotoGd' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoGd.php',
+ 'Zotlabs\\Photo\\PhotoImagick' => __DIR__ . '/../..' . '/Zotlabs/Photo/PhotoImagick.php',
'Zotlabs\\Render\\Comanche' => __DIR__ . '/../..' . '/Zotlabs/Render/Comanche.php',
'Zotlabs\\Render\\SimpleTemplate' => __DIR__ . '/../..' . '/Zotlabs/Render/SimpleTemplate.php',
'Zotlabs\\Render\\SmartyInterface' => __DIR__ . '/../..' . '/Zotlabs/Render/SmartyInterface.php',
diff --git a/view/js/main.js b/view/js/main.js
index ee11ab1c6..4e4431f33 100644
--- a/view/js/main.js
+++ b/view/js/main.js
@@ -400,12 +400,12 @@ function viewsrc(id) {
function showHideComments(id) {
if( $('#collapsed-comments-' + id).is(':visible')) {
$('#collapsed-comments-' + id + ' .autotime').timeago('dispose');
- $('#collapsed-comments-' + id).slideUp();
+ $('#collapsed-comments-' + id).hide();
$('#hide-comments-' + id).html(aStr.showmore);
$('#hide-comments-total-' + id).show();
} else {
$('#collapsed-comments-' + id + ' .autotime').timeago();
- $('#collapsed-comments-' + id).slideDown();
+ $('#collapsed-comments-' + id).show();
$('#hide-comments-' + id).html(aStr.showfewer);
$('#hide-comments-total-' + id).hide();
}
@@ -734,6 +734,7 @@ function updateConvItems(mode,data) {
title.replace(/\s+$/, '');
if (title) {
savedTitle = title + " " + savedTitle;
+ document.title = title;
}
}
}
@@ -769,7 +770,7 @@ function updateConvItems(mode,data) {
mediaPlaying = false;
});
- var bimgs = ((preloadImages) ? false : $(".wall-item-body img").not(function() { return this.complete; }));
+ var bimgs = ((preloadImages) ? false : $(".wall-item-body img, .wall-photo-item img").not(function() { return this.complete; }));
var bimgcount = bimgs.length;
if (bimgcount) {
@@ -845,10 +846,10 @@ function collapseHeight() {
});
var collapsedContentHeight = Math.ceil($("#region_2").height());
- contentHeightDiff = origContentHeight - collapsedContentHeight;
+ contentHeightDiff = liking ? 0 : origContentHeight - collapsedContentHeight;
console.log('collapseHeight() - contentHeightDiff: ' + contentHeightDiff + 'px');
- if(i){
+ if(i && !liking){
var sval = position - cDiff + ($(".divgrow-showmore").outerHeight() * i);
console.log('collapsed above viewport count: ' + i);
$(window).scrollTop(sval);
@@ -999,7 +1000,7 @@ function liveUpdate(notify_id) {
$("#profile-jot-text-loading").hide();
// adjust scroll position if new content was added above viewport
- if(update_mode === 'update') {
+ if(update_mode === 'update' && !justifiedGalleryActive) {
$(window).scrollTop($(window).scrollTop() + $("#region_2").height() - orgHeight + contentHeightDiff);
}
diff --git a/view/ru/hmessages.po b/view/ru/hmessages.po
index 76c24a404..68bfc2aa5 100644
--- a/view/ru/hmessages.po
+++ b/view/ru/hmessages.po
@@ -5,14 +5,14 @@
#
# Translators:
# Alex <info@pixelbits.de>, 2016-2017
-# Max Kostikov <max@kostikov.co>, 2018
+# Max Kostikov <max@kostikov.co>, 2018-2019
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: hubzilla\n"
"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2018-10-18 11:03+0200\n"
-"PO-Revision-Date: 2018-12-04 12:19+0200\n"
+"POT-Creation-Date: 2019-02-12 11:46+0200\n"
+"PO-Revision-Date: 2019-02-12 11:52+0200\n"
"Last-Translator: Max Kostikov <max@kostikov.co>\n"
"Language-Team: Russian (http://www.transifex.com/Friendica/hubzilla/language/ru/)\n"
"MIME-Version: 1.0\n"
@@ -25,7 +25,7 @@ msgstr ""
msgid "Source channel not found."
msgstr "Канал-источник Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
-#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3096
+#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3210
#: ../../Zotlabs/Module/Admin/Site.php:187
msgid "Default"
msgstr "По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
@@ -42,7 +42,7 @@ msgstr "Ѐокус (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Hubzilla)"
#: ../../Zotlabs/Module/Email_validation.php:40
#: ../../Zotlabs/Module/Poke.php:217 ../../Zotlabs/Module/Appman.php:155
#: ../../Zotlabs/Module/Profiles.php:723 ../../Zotlabs/Module/Photos.php:1097
-#: ../../Zotlabs/Module/Photos.php:1137 ../../Zotlabs/Module/Photos.php:1255
+#: ../../Zotlabs/Module/Photos.php:1138 ../../Zotlabs/Module/Photos.php:1257
#: ../../Zotlabs/Module/Oauth.php:111 ../../Zotlabs/Module/Events.php:495
#: ../../Zotlabs/Module/Rate.php:166 ../../Zotlabs/Module/Locs.php:121
#: ../../Zotlabs/Module/Sources.php:125 ../../Zotlabs/Module/Sources.php:162
@@ -61,7 +61,7 @@ msgstr "Ѐокус (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Hubzilla)"
#: ../../Zotlabs/Module/Settings/Directory.php:41
#: ../../Zotlabs/Module/Settings/Photos.php:41
#: ../../Zotlabs/Module/Settings/Profiles.php:50
-#: ../../Zotlabs/Module/Settings/Featured.php:54
+#: ../../Zotlabs/Module/Settings/Featured.php:62
#: ../../Zotlabs/Module/Settings/Connections.php:41
#: ../../Zotlabs/Module/Settings/Channel.php:493
#: ../../Zotlabs/Module/Filestorage.php:183 ../../Zotlabs/Module/Cal.php:344
@@ -79,35 +79,33 @@ msgstr "Ѐокус (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Hubzilla)"
#: ../../Zotlabs/Module/Admin/Account_edit.php:73
#: ../../Zotlabs/Module/Tokens.php:188 ../../Zotlabs/Module/Thing.php:326
#: ../../Zotlabs/Module/Thing.php:379 ../../Zotlabs/Module/Editpost.php:85
-#: ../../Zotlabs/Module/Connedit.php:893 ../../Zotlabs/Module/Group.php:140
-#: ../../Zotlabs/Module/Group.php:156 ../../Zotlabs/Module/Mood.php:158
+#: ../../Zotlabs/Module/Connedit.php:904 ../../Zotlabs/Module/Group.php:150
+#: ../../Zotlabs/Module/Group.php:166 ../../Zotlabs/Module/Mood.php:158
#: ../../Zotlabs/Module/Invite.php:168 ../../Zotlabs/Module/Connect.php:124
#: ../../Zotlabs/Module/Pdledit.php:107 ../../Zotlabs/Module/Wiki.php:215
#: ../../Zotlabs/Module/Import.php:574
#: ../../Zotlabs/Module/Import_items.php:129
#: ../../Zotlabs/Widget/Wiki_pages.php:42
#: ../../Zotlabs/Widget/Wiki_pages.php:99
-#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Lib/ThreadItem.php:773
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:89
+#: ../../Zotlabs/Widget/Eventstools.php:16 ../../Zotlabs/Lib/ThreadItem.php:791
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:71
#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:191
#: ../../extend/addon/hzaddons/redphotos/redphotos.php:136
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:72
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:73
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:72
#: ../../extend/addon/hzaddons/redfiles/redfiles.php:124
-#: ../../extend/addon/hzaddons/twitter/twitter.php:221
-#: ../../extend/addon/hzaddons/twitter/twitter.php:268
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:184
#: ../../extend/addon/hzaddons/logrot/logrot.php:35
#: ../../extend/addon/hzaddons/likebanner/likebanner.php:57
#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:169
#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:67
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:371
#: ../../extend/addon/hzaddons/piwik/piwik.php:95
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:237
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:161
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:115
#: ../../extend/addon/hzaddons/mailtest/mailtest.php:100
#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:53
#: ../../extend/addon/hzaddons/hzfiles/hzfiles.php:84
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:89
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:73
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:193
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:251
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:306
@@ -118,25 +116,23 @@ msgstr "Ѐокус (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ Hubzilla)"
#: ../../extend/addon/hzaddons/cart/submodules/subscriptions.php:410
#: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:640
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:248
-#: ../../extend/addon/hzaddons/cart/cart.php:1263
-#: ../../extend/addon/hzaddons/nofed/nofed.php:80
-#: ../../extend/addon/hzaddons/planets/planets.php:153
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:48
+#: ../../extend/addon/hzaddons/cart/cart.php:1264
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:53
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:54
#: ../../extend/addon/hzaddons/hubwall/hubwall.php:95
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:219
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:55
#: ../../extend/addon/hzaddons/frphotos/frphotos.php:97
#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:124
#: ../../extend/addon/hzaddons/xmpp/xmpp.php:69
-#: ../../extend/addon/hzaddons/visage/visage.php:170
#: ../../extend/addon/hzaddons/irc/irc.php:53
#: ../../extend/addon/hzaddons/chords/Mod_Chords.php:60
-#: ../../extend/addon/hzaddons/libertree/libertree.php:85
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:70
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:90
#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:63
#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:99
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:97
#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:61
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:65
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:51
msgid "Submit"
msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ"
@@ -151,7 +147,7 @@ msgstr "Узкая панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
-#: ../../boot.php:1630 ../../Zotlabs/Storage/Browser.php:405
+#: ../../boot.php:1635 ../../Zotlabs/Storage/Browser.php:405
#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Api.php:99
#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
@@ -164,32 +160,27 @@ msgstr "Узкая панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Mitem.php:176
#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256
#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:255
-#: ../../Zotlabs/Module/Connedit.php:398 ../../Zotlabs/Module/Connedit.php:785
+#: ../../Zotlabs/Module/Connedit.php:406 ../../Zotlabs/Module/Connedit.php:796
#: ../../Zotlabs/Module/Wiki.php:227 ../../Zotlabs/Module/Wiki.php:228
#: ../../Zotlabs/Module/Import.php:563 ../../Zotlabs/Module/Import.php:567
#: ../../Zotlabs/Module/Import.php:568 ../../Zotlabs/Lib/Libzotdir.php:162
#: ../../Zotlabs/Lib/Libzotdir.php:163 ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:60
#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:178
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:49
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:62
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:61
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:162
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:171
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:309
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:313
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:351
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:355
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:359
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:94
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:98
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:102
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:260
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:282
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:291
@@ -206,17 +197,12 @@ msgstr "Узкая панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258
-#: ../../extend/addon/hzaddons/cart/cart.php:1257
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
+#: ../../extend/addon/hzaddons/cart/cart.php:1258
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:42
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:44
#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:120
#: ../../extend/addon/hzaddons/xmpp/xmpp.php:53
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:59
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:63
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:82
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:86
@@ -226,7 +212,7 @@ msgstr "НСт"
#: ../../view/theme/redbasic/php/config.php:99
#: ../../view/theme/redbasic/php/config.php:116 ../../include/dir_fns.php:143
#: ../../include/dir_fns.php:144 ../../include/dir_fns.php:145
-#: ../../boot.php:1630 ../../Zotlabs/Storage/Browser.php:405
+#: ../../boot.php:1635 ../../Zotlabs/Storage/Browser.php:405
#: ../../Zotlabs/Module/Defperms.php:197 ../../Zotlabs/Module/Profiles.php:681
#: ../../Zotlabs/Module/Photos.php:712 ../../Zotlabs/Module/Api.php:98
#: ../../Zotlabs/Module/Events.php:472 ../../Zotlabs/Module/Events.php:473
@@ -239,32 +225,27 @@ msgstr "НСт"
#: ../../Zotlabs/Module/Menu.php:221 ../../Zotlabs/Module/Mitem.php:176
#: ../../Zotlabs/Module/Mitem.php:177 ../../Zotlabs/Module/Mitem.php:256
#: ../../Zotlabs/Module/Mitem.php:257 ../../Zotlabs/Module/Admin/Site.php:257
-#: ../../Zotlabs/Module/Connedit.php:398 ../../Zotlabs/Module/Wiki.php:227
+#: ../../Zotlabs/Module/Connedit.php:406 ../../Zotlabs/Module/Wiki.php:227
#: ../../Zotlabs/Module/Wiki.php:228 ../../Zotlabs/Module/Import.php:563
#: ../../Zotlabs/Module/Import.php:567 ../../Zotlabs/Module/Import.php:568
#: ../../Zotlabs/Lib/Libzotdir.php:162 ../../Zotlabs/Lib/Libzotdir.php:163
#: ../../Zotlabs/Lib/Libzotdir.php:165
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:60
#: ../../extend/addon/hzaddons/fuzzloc/fuzzloc.php:178
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:49
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:62
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:61
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:162
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:171
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:309
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:313
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:343
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:351
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:355
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:359
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:94
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:98
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:102
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:260
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:282
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:291
@@ -281,17 +262,12 @@ msgstr "НСт"
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:63
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254
#: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258
-#: ../../extend/addon/hzaddons/cart/cart.php:1257
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
+#: ../../extend/addon/hzaddons/cart/cart.php:1258
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:42
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:44
#: ../../extend/addon/hzaddons/flattrwidget/flattrwidget.php:120
#: ../../extend/addon/hzaddons/xmpp/xmpp.php:53
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:59
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:63
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:82
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:86
@@ -344,7 +320,7 @@ msgstr "НапримСр: 1rem, 100%, 16px"
#: ../../view/theme/redbasic/php/config.php:110
msgid "Set font-color for posts and comments"
-msgstr "Π¦Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° для постов ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²"
+msgstr "Π¦Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²"
#: ../../view/theme/redbasic/php/config.php:111
msgid "Set radius of corners"
@@ -461,9 +437,9 @@ msgstr "НСспСцифичСский"
#: ../../include/selectors.php:60 ../../include/selectors.php:77
#: ../../include/selectors.php:115 ../../include/selectors.php:151
#: ../../include/connections.php:703 ../../include/connections.php:710
-#: ../../include/event.php:1318 ../../include/event.php:1325
+#: ../../include/event.php:1327 ../../include/event.php:1334
#: ../../Zotlabs/Module/Cdav.php:1227 ../../Zotlabs/Module/Profiles.php:795
-#: ../../Zotlabs/Module/Connedit.php:924
+#: ../../Zotlabs/Module/Connedit.php:935
#: ../../Zotlabs/Access/PermissionRoles.php:306
msgid "Other"
msgstr "Π”Ρ€ΡƒΠ³ΠΎΠΉ"
@@ -567,7 +543,7 @@ msgstr "Π­Ρ€ΠΎΡ‚ΠΎΠΌΠ°Π½"
#: ../../Zotlabs/Module/Settings/Channel.php:75
#: ../../Zotlabs/Module/Settings/Channel.php:78
#: ../../Zotlabs/Module/Settings/Channel.php:89
-#: ../../Zotlabs/Module/Connedit.php:717 ../../Zotlabs/Widget/Affinity.php:24
+#: ../../Zotlabs/Module/Connedit.php:725 ../../Zotlabs/Widget/Affinity.php:29
msgid "Friends"
msgstr "Π”Ρ€ΡƒΠ·ΡŒΡ"
@@ -655,18 +631,18 @@ msgstr "Всё Ρ€Π°Π²Π½ΠΎ"
msgid "Ask me"
msgstr "Бпроси мСня"
-#: ../../include/photos.php:27 ../../include/items.php:3703
-#: ../../include/attach.php:150 ../../include/attach.php:197
-#: ../../include/attach.php:270 ../../include/attach.php:379
-#: ../../include/attach.php:393 ../../include/attach.php:400
-#: ../../include/attach.php:482 ../../include/attach.php:1042
-#: ../../include/attach.php:1116 ../../include/attach.php:1281
+#: ../../include/photos.php:27 ../../include/items.php:3779
+#: ../../include/attach.php:150 ../../include/attach.php:199
+#: ../../include/attach.php:272 ../../include/attach.php:381
+#: ../../include/attach.php:395 ../../include/attach.php:402
+#: ../../include/attach.php:484 ../../include/attach.php:1044
+#: ../../include/attach.php:1118 ../../include/attach.php:1283
#: ../../Zotlabs/Module/Mail.php:146 ../../Zotlabs/Module/Defperms.php:181
#: ../../Zotlabs/Module/Network.php:17 ../../Zotlabs/Module/Common.php:38
-#: ../../Zotlabs/Module/Item.php:231 ../../Zotlabs/Module/Item.php:250
-#: ../../Zotlabs/Module/Item.php:260 ../../Zotlabs/Module/Item.php:1136
+#: ../../Zotlabs/Module/Item.php:376 ../../Zotlabs/Module/Item.php:395
+#: ../../Zotlabs/Module/Item.php:405 ../../Zotlabs/Module/Item.php:1281
#: ../../Zotlabs/Module/Achievements.php:34
-#: ../../Zotlabs/Module/Display.php:448 ../../Zotlabs/Module/Poke.php:157
+#: ../../Zotlabs/Module/Display.php:447 ../../Zotlabs/Module/Poke.php:157
#: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101
#: ../../Zotlabs/Module/Appman.php:87 ../../Zotlabs/Module/Profiles.php:198
#: ../../Zotlabs/Module/Profiles.php:635 ../../Zotlabs/Module/Photos.php:69
@@ -691,9 +667,9 @@ msgstr "Бпроси мСня"
#: ../../Zotlabs/Module/Filestorage.php:140
#: ../../Zotlabs/Module/Editblock.php:67
#: ../../Zotlabs/Module/Service_limits.php:11
-#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Channel.php:163
-#: ../../Zotlabs/Module/Channel.php:330 ../../Zotlabs/Module/Channel.php:369
-#: ../../Zotlabs/Module/Like.php:185 ../../Zotlabs/Module/Bookmarks.php:70
+#: ../../Zotlabs/Module/Message.php:18 ../../Zotlabs/Module/Channel.php:168
+#: ../../Zotlabs/Module/Channel.php:335 ../../Zotlabs/Module/Channel.php:374
+#: ../../Zotlabs/Module/Like.php:187 ../../Zotlabs/Module/Bookmarks.php:70
#: ../../Zotlabs/Module/Viewsrc.php:19 ../../Zotlabs/Module/Menu.php:129
#: ../../Zotlabs/Module/Menu.php:140 ../../Zotlabs/Module/Setup.php:209
#: ../../Zotlabs/Module/Mitem.php:129 ../../Zotlabs/Module/Notifications.php:11
@@ -706,22 +682,22 @@ msgstr "Бпроси мСня"
#: ../../Zotlabs/Module/Moderate.php:13 ../../Zotlabs/Module/Webpages.php:133
#: ../../Zotlabs/Module/Profile_photo.php:302
#: ../../Zotlabs/Module/Profile_photo.php:315
-#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Connedit.php:391
+#: ../../Zotlabs/Module/Editpost.php:17 ../../Zotlabs/Module/Connedit.php:399
#: ../../Zotlabs/Module/Group.php:14 ../../Zotlabs/Module/Group.php:30
#: ../../Zotlabs/Module/Connections.php:32 ../../Zotlabs/Module/Mood.php:126
#: ../../Zotlabs/Module/Card_edit.php:51
#: ../../Zotlabs/Module/Article_edit.php:51 ../../Zotlabs/Module/Blocks.php:73
#: ../../Zotlabs/Module/Blocks.php:80 ../../Zotlabs/Module/Invite.php:21
-#: ../../Zotlabs/Module/Invite.php:102 ../../Zotlabs/Module/Articles.php:80
+#: ../../Zotlabs/Module/Invite.php:102 ../../Zotlabs/Module/Articles.php:88
#: ../../Zotlabs/Module/Cloud.php:40 ../../Zotlabs/Module/Pdledit.php:34
#: ../../Zotlabs/Module/Wiki.php:59 ../../Zotlabs/Module/Wiki.php:285
#: ../../Zotlabs/Module/Wiki.php:428 ../../Zotlabs/Module/Manage.php:10
-#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Cards.php:81
+#: ../../Zotlabs/Module/Suggest.php:32 ../../Zotlabs/Module/Cards.php:86
#: ../../Zotlabs/Module/Layouts.php:71 ../../Zotlabs/Module/Layouts.php:78
#: ../../Zotlabs/Module/Layouts.php:89 ../../Zotlabs/Web/WebServer.php:123
#: ../../Zotlabs/Lib/Chatroom.php:133
#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:167
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:40
+#: ../../extend/addon/hzaddons/pumpio/pumpio.php:44
#: ../../extend/addon/hzaddons/openid/Mod_Id.php:53
#: ../../extend/addon/hzaddons/keepout/keepout.php:36
msgid "Permission denied."
@@ -755,12 +731,12 @@ msgctxt "photo_upload"
msgid "%1$s posted %2$s to %3$s"
msgstr "%1$s ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π» %2$s Π² %3$s"
-#: ../../include/photos.php:669 ../../include/nav.php:417
+#: ../../include/photos.php:669 ../../include/nav.php:447
msgid "Photo Albums"
msgstr "Π€ΠΎΡ‚ΠΎΠ°Π»ΡŒΠ±ΠΎΠΌΡ‹"
-#: ../../include/photos.php:670 ../../Zotlabs/Module/Photos.php:1380
-#: ../../Zotlabs/Module/Photos.php:1393 ../../Zotlabs/Module/Photos.php:1394
+#: ../../include/photos.php:670 ../../Zotlabs/Module/Photos.php:1389
+#: ../../Zotlabs/Module/Photos.php:1402 ../../Zotlabs/Module/Photos.php:1403
msgid "Recent Photos"
msgstr "ПослСдниС Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ"
@@ -851,24 +827,24 @@ msgstr "Π Π°ΡΡˆΠΈΡ€Π΅Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€: name=ivan and country=russia"
msgid "Saved Folders"
msgstr "Π‘ΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½Ρ‹Π΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ"
-#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:100
-#: ../../include/contact_widgets.php:144 ../../include/contact_widgets.php:189
+#: ../../include/contact_widgets.php:56 ../../include/contact_widgets.php:99
+#: ../../include/contact_widgets.php:142 ../../include/contact_widgets.php:187
#: ../../Zotlabs/Widget/Filer.php:31 ../../Zotlabs/Widget/Appcategories.php:46
msgid "Everything"
msgstr "Всё"
-#: ../../include/contact_widgets.php:97 ../../include/contact_widgets.php:141
-#: ../../include/contact_widgets.php:186 ../../include/taxonomy.php:409
+#: ../../include/contact_widgets.php:96 ../../include/contact_widgets.php:139
+#: ../../include/contact_widgets.php:184 ../../include/taxonomy.php:409
#: ../../include/taxonomy.php:491 ../../include/taxonomy.php:511
#: ../../include/taxonomy.php:532 ../../Zotlabs/Widget/Appcategories.php:43
msgid "Categories"
msgstr "ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ"
-#: ../../include/contact_widgets.php:223
+#: ../../include/contact_widgets.php:218
msgid "Common Connections"
msgstr "ΠžΠ±Ρ‰ΠΈΠ΅ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹"
-#: ../../include/contact_widgets.php:228
+#: ../../include/contact_widgets.php:222
#, php-format
msgid "View all %d common connections"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС %d ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
@@ -880,7 +856,7 @@ msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС %d ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
#: ../../Zotlabs/Module/Editblock.php:114 ../../Zotlabs/Module/Menu.php:175
#: ../../Zotlabs/Module/Admin/Profs.php:175
#: ../../Zotlabs/Module/Editwebpage.php:142 ../../Zotlabs/Module/Thing.php:266
-#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Group.php:235
+#: ../../Zotlabs/Module/Webpages.php:255 ../../Zotlabs/Module/Group.php:252
#: ../../Zotlabs/Module/Connections.php:284
#: ../../Zotlabs/Module/Connections.php:322
#: ../../Zotlabs/Module/Connections.php:342
@@ -888,8 +864,8 @@ msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС %d ΠΎΠ±Ρ‰ΠΈΡ… ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
#: ../../Zotlabs/Module/Article_edit.php:99 ../../Zotlabs/Module/Blocks.php:160
#: ../../Zotlabs/Module/Wiki.php:211 ../../Zotlabs/Module/Wiki.php:384
#: ../../Zotlabs/Module/Layouts.php:193 ../../Zotlabs/Widget/Cdav.php:126
-#: ../../Zotlabs/Widget/Cdav.php:162 ../../Zotlabs/Lib/Apps.php:534
-#: ../../Zotlabs/Lib/ThreadItem.php:133
+#: ../../Zotlabs/Widget/Cdav.php:162 ../../Zotlabs/Lib/Apps.php:555
+#: ../../Zotlabs/Lib/ThreadItem.php:144
msgid "Edit"
msgstr "Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ"
@@ -947,9 +923,9 @@ msgstr "Π—Π°ΠΏΡ€ΠΎΡˆΠ΅Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» Π½Π΅ доступСн."
#: ../../Zotlabs/Module/Editblock.php:31 ../../Zotlabs/Module/Menu.php:91
#: ../../Zotlabs/Module/Hcard.php:12 ../../Zotlabs/Module/Editwebpage.php:32
#: ../../Zotlabs/Module/Webpages.php:39 ../../Zotlabs/Module/Blocks.php:33
-#: ../../Zotlabs/Module/Articles.php:34 ../../Zotlabs/Module/Connect.php:17
-#: ../../Zotlabs/Module/Cards.php:37 ../../Zotlabs/Module/Layouts.php:31
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:47
+#: ../../Zotlabs/Module/Articles.php:42 ../../Zotlabs/Module/Connect.php:17
+#: ../../Zotlabs/Module/Cards.php:42 ../../Zotlabs/Module/Layouts.php:31
+#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:49
msgid "Requested profile is not available."
msgstr "Π—Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Π΅ΠΌΡ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ Π½Π΅ доступСн."
@@ -991,8 +967,8 @@ msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ"
msgid "Connect"
msgstr "ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ"
-#: ../../include/channel.php:1447 ../../include/event.php:54
-#: ../../include/event.php:86 ../../Zotlabs/Module/Directory.php:328
+#: ../../include/channel.php:1447 ../../include/event.php:58
+#: ../../include/event.php:90 ../../Zotlabs/Module/Directory.php:328
msgid "Location:"
msgstr "ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅:"
@@ -1029,9 +1005,9 @@ msgstr "ПолноС имя:"
msgid "Like this channel"
msgstr "нравится этот ΠΊΠ°Π½Π°Π»"
-#: ../../include/channel.php:1595 ../../include/conversation.php:1693
-#: ../../include/taxonomy.php:661 ../../Zotlabs/Module/Photos.php:1175
-#: ../../Zotlabs/Lib/ThreadItem.php:221
+#: ../../include/channel.php:1595 ../../include/conversation.php:1702
+#: ../../include/taxonomy.php:661 ../../Zotlabs/Module/Photos.php:1177
+#: ../../Zotlabs/Lib/ThreadItem.php:232
msgctxt "noun"
msgid "Like"
msgid_plural "Likes"
@@ -1133,7 +1109,7 @@ msgid "School/education:"
msgstr "Π¨ΠΊΠΎΠ»Π° / ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅:"
#: ../../include/channel.php:1700 ../../Zotlabs/Module/Profperm.php:113
-#: ../../Zotlabs/Lib/Apps.php:337
+#: ../../Zotlabs/Lib/Apps.php:358
msgid "Profile"
msgstr "ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
@@ -1150,25 +1126,25 @@ msgstr "Экспорт"
msgid "cover photo"
msgstr "фотография ΠΎΠ±Π»ΠΎΠΆΠΊΠΈ"
-#: ../../include/channel.php:2390 ../../boot.php:1626
-#: ../../Zotlabs/Module/Rmagic.php:75
+#: ../../include/channel.php:2405 ../../boot.php:1631
+#: ../../Zotlabs/Module/Rmagic.php:93
msgid "Remote Authentication"
msgstr "УдалСнная аутСнтификация"
-#: ../../include/channel.php:2391 ../../Zotlabs/Module/Rmagic.php:76
+#: ../../include/channel.php:2406 ../../Zotlabs/Module/Rmagic.php:94
msgid "Enter your channel address (e.g. channel@example.com)"
msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ адрСс вашСго ΠΊΠ°Π½Π°Π»Π° (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€: channel@example.com)"
-#: ../../include/channel.php:2392 ../../Zotlabs/Module/Rmagic.php:77
+#: ../../include/channel.php:2407 ../../Zotlabs/Module/Rmagic.php:95
msgid "Authenticate"
msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° подлинности"
-#: ../../include/channel.php:2547 ../../Zotlabs/Module/Admin/Accounts.php:91
+#: ../../include/channel.php:2562 ../../Zotlabs/Module/Admin/Accounts.php:91
#, php-format
msgid "Account '%s' deleted"
msgstr "Аккаунт '%s' ΡƒΠ΄Π°Π»Π΅Π½"
-#: ../../include/message.php:13 ../../include/text.php:1718
+#: ../../include/message.php:13 ../../include/text.php:1765
msgid "Download binary/encrypted content"
msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Π΄Π²ΠΎΠΈΡ‡Π½ΠΎΠ΅ / Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ содСрТимоС"
@@ -1188,21 +1164,21 @@ msgstr "[Π±Π΅Π· Ρ‚Π΅ΠΌΡ‹]"
msgid "Stored post could not be verified."
msgstr "Бохранённая публикация Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π°."
-#: ../../include/markdown.php:200 ../../include/bbcode.php:358
+#: ../../include/markdown.php:198 ../../include/bbcode.php:347
#, php-format
msgid "%1$s wrote the following %2$s %3$s"
msgstr "%1$s Π±Ρ‹Π»Π° создана %2$s %3$s"
-#: ../../include/markdown.php:202 ../../include/bbcode.php:354
+#: ../../include/markdown.php:200 ../../include/bbcode.php:343
#: ../../Zotlabs/Module/Tagger.php:77
msgid "post"
msgstr "публикация"
-#: ../../include/items.php:384 ../../Zotlabs/Module/Dreport.php:10
-#: ../../Zotlabs/Module/Dreport.php:79 ../../Zotlabs/Module/Profperm.php:28
-#: ../../Zotlabs/Module/Like.php:296 ../../Zotlabs/Module/Subthread.php:86
-#: ../../Zotlabs/Module/Group.php:93 ../../Zotlabs/Module/Cloud.php:126
-#: ../../Zotlabs/Module/Import_items.php:120
+#: ../../include/items.php:416 ../../Zotlabs/Module/Dreport.php:10
+#: ../../Zotlabs/Module/Dreport.php:79 ../../Zotlabs/Module/Share.php:71
+#: ../../Zotlabs/Module/Profperm.php:28 ../../Zotlabs/Module/Like.php:301
+#: ../../Zotlabs/Module/Subthread.php:86 ../../Zotlabs/Module/Group.php:98
+#: ../../Zotlabs/Module/Cloud.php:126 ../../Zotlabs/Module/Import_items.php:120
#: ../../Zotlabs/Web/WebServer.php:122
#: ../../extend/addon/hzaddons/redphotos/redphotos.php:119
#: ../../extend/addon/hzaddons/redfiles/redfiles.php:109
@@ -1211,112 +1187,112 @@ msgstr "публикация"
msgid "Permission denied"
msgstr "Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½"
-#: ../../include/items.php:921 ../../include/items.php:981
+#: ../../include/items.php:953 ../../include/items.php:1013
msgid "(Unknown)"
msgstr "(НСизвСстный)"
-#: ../../include/items.php:1169
+#: ../../include/items.php:1201
msgid "Visible to anybody on the internet."
msgstr "Π’ΠΈΠ΄Π΅Π½ всСм Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚Π΅."
-#: ../../include/items.php:1171
+#: ../../include/items.php:1203
msgid "Visible to you only."
msgstr "Π’ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²Π°ΠΌ."
-#: ../../include/items.php:1173
+#: ../../include/items.php:1205
msgid "Visible to anybody in this network."
msgstr "Π’ΠΈΠ΄Π½ΠΎ всСм Π² этой сСти."
-#: ../../include/items.php:1175
+#: ../../include/items.php:1207
msgid "Visible to anybody authenticated."
msgstr "Π’ΠΈΠ΄Π½ΠΎ всСм Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ."
-#: ../../include/items.php:1177
+#: ../../include/items.php:1209
#, php-format
msgid "Visible to anybody on %s."
msgstr "Π’ΠΈΠ΄Π½ΠΎ всСм Π² %s."
-#: ../../include/items.php:1179
+#: ../../include/items.php:1211
msgid "Visible to all connections."
msgstr "Π’ΠΈΠ΄Π½ΠΎ всСм ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ."
-#: ../../include/items.php:1181
+#: ../../include/items.php:1213
msgid "Visible to approved connections."
msgstr "Π’ΠΈΠ΄Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ."
-#: ../../include/items.php:1183
+#: ../../include/items.php:1215
msgid "Visible to specific connections."
msgstr "Π’ΠΈΠ΄Π½ΠΎ ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°ΠΌ."
-#: ../../include/items.php:3615 ../../Zotlabs/Module/Display.php:45
-#: ../../Zotlabs/Module/Display.php:452 ../../Zotlabs/Module/Admin.php:62
+#: ../../include/items.php:3691 ../../Zotlabs/Module/Display.php:45
+#: ../../Zotlabs/Module/Display.php:451 ../../Zotlabs/Module/Admin.php:62
#: ../../Zotlabs/Module/Filestorage.php:24 ../../Zotlabs/Module/Viewsrc.php:25
#: ../../Zotlabs/Module/Admin/Addons.php:259
#: ../../Zotlabs/Module/Admin/Themes.php:72 ../../Zotlabs/Module/Thing.php:94
msgid "Item not found."
msgstr "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
-#: ../../include/items.php:4195 ../../Zotlabs/Module/Group.php:61
-#: ../../Zotlabs/Module/Group.php:200
+#: ../../include/items.php:4273 ../../Zotlabs/Module/Group.php:61
+#: ../../Zotlabs/Module/Group.php:213
msgid "Privacy group not found."
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°."
-#: ../../include/items.php:4211
+#: ../../include/items.php:4289
msgid "Privacy group is empty."
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности пуста"
-#: ../../include/items.php:4218
+#: ../../include/items.php:4296
#, php-format
msgid "Privacy group: %s"
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности: %s"
-#: ../../include/items.php:4228 ../../Zotlabs/Module/Connedit.php:856
+#: ../../include/items.php:4306 ../../Zotlabs/Module/Connedit.php:867
#, php-format
msgid "Connection: %s"
msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚: %s"
-#: ../../include/items.php:4230
+#: ../../include/items.php:4308
msgid "Connection not found."
msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
-#: ../../include/items.php:4572 ../../Zotlabs/Module/Cover_photo.php:269
+#: ../../include/items.php:4650 ../../Zotlabs/Module/Cover_photo.php:269
msgid "female"
msgstr "ΠΆΠ΅Π½Ρ‰ΠΈΠ½Π°"
-#: ../../include/items.php:4573 ../../Zotlabs/Module/Cover_photo.php:270
+#: ../../include/items.php:4651 ../../Zotlabs/Module/Cover_photo.php:270
#, php-format
msgid "%1$s updated her %2$s"
msgstr "%1$s ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»Π° Π΅Ρ‘ %2$s"
-#: ../../include/items.php:4574 ../../Zotlabs/Module/Cover_photo.php:271
+#: ../../include/items.php:4652 ../../Zotlabs/Module/Cover_photo.php:271
msgid "male"
msgstr "ΠΌΡƒΠΆΡ‡ΠΈΠ½Π°"
-#: ../../include/items.php:4575 ../../Zotlabs/Module/Cover_photo.php:272
+#: ../../include/items.php:4653 ../../Zotlabs/Module/Cover_photo.php:272
#, php-format
msgid "%1$s updated his %2$s"
msgstr "%1$s ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Π΅Π³ΠΎ %2$s"
-#: ../../include/items.php:4577 ../../Zotlabs/Module/Cover_photo.php:274
+#: ../../include/items.php:4655 ../../Zotlabs/Module/Cover_photo.php:274
#, php-format
msgid "%1$s updated their %2$s"
msgstr "%1$s ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ ΠΈΡ… %2$s"
-#: ../../include/items.php:4579
+#: ../../include/items.php:4657
msgid "profile photo"
msgstr "Ѐотография профиля"
-#: ../../include/items.php:4771
+#: ../../include/items.php:4849
#, php-format
msgid "[Edited %s]"
msgstr "[ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΎ %s]"
-#: ../../include/items.php:4771
+#: ../../include/items.php:4849
msgctxt "edit_activity"
msgid "Post"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ"
-#: ../../include/items.php:4771
+#: ../../include/items.php:4849
msgctxt "edit_activity"
msgid "Comment"
msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"
@@ -1356,7 +1332,7 @@ msgstr "Π’Ρ‹ΠΊΠ»."
msgid "On"
msgstr "Π’ΠΊΠ»."
-#: ../../include/features.php:82 ../../Zotlabs/Lib/Apps.php:342
+#: ../../include/features.php:82 ../../Zotlabs/Lib/Apps.php:363
msgid "CalDAV"
msgstr ""
@@ -1368,7 +1344,7 @@ msgstr "ΠΠ°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€Π½ΡƒΡŽ нСдСлю с понСдСль
msgid "Default is Sunday"
msgstr "По ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ - Π²ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅"
-#: ../../include/features.php:96 ../../Zotlabs/Lib/Apps.php:318
+#: ../../include/features.php:96 ../../Zotlabs/Lib/Apps.php:339
msgid "Channel Home"
msgstr "Главная ΠΊΠ°Π½Π°Π»Π°"
@@ -1396,8 +1372,8 @@ msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅ΠΆΠΈΠΌ Π±Π»ΠΎΠ³Π° / списка"
msgid "Comments will be displayed separately"
msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ"
-#: ../../include/features.php:125 ../../include/text.php:980
-#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:308
+#: ../../include/features.php:125 ../../include/text.php:991
+#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:329
msgid "Connections"
msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹"
@@ -1445,7 +1421,7 @@ msgstr "ΠŸΠΎΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ сообщСния"
msgid "Ability to mark special posts with a star indicator"
msgstr "Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ сообщСния ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ-Π·Π²Ρ‘Π·Π΄ΠΎΡ‡ΠΊΠΎΠΉ"
-#: ../../include/features.php:176 ../../Zotlabs/Lib/Apps.php:322
+#: ../../include/features.php:176 ../../Zotlabs/Lib/Apps.php:343
msgid "Directory"
msgstr "ΠšΠ°Ρ‚Π°Π»ΠΎΠ³"
@@ -1540,7 +1516,7 @@ msgid ""
"prevent accidental loss of compositions"
msgstr "АвтоматичСски сохраняСт Ρ‡Π΅Ρ€Π½ΠΎΠ²ΠΈΠΊΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² Π² локальном Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° для прСдотвращСния ΠΈΡ… случайной ΡƒΡ‚Ρ€Π°Ρ‚Ρ‹"
-#: ../../include/features.php:269 ../../Zotlabs/Lib/Apps.php:321
+#: ../../include/features.php:269 ../../Zotlabs/Lib/Apps.php:342
msgid "Events"
msgstr "Бобытия"
@@ -1632,7 +1608,7 @@ msgstr "Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ сходства / соотвСтствия"
msgid "Filter stream activity by depth of relationships"
msgstr "Π€ΠΈΠ»ΡŒΡ‚Ρ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΡ‚ΠΎΠΊΠΈ активности ΠΏΠΎ Π³Π»ΡƒΠ±ΠΈΠ½Π΅ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ"
-#: ../../include/features.php:373 ../../Zotlabs/Lib/Apps.php:310
+#: ../../include/features.php:373 ../../Zotlabs/Lib/Apps.php:331
msgid "Suggest Channels"
msgstr "ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹"
@@ -1640,8 +1616,8 @@ msgstr "ΠŸΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹"
msgid "Show friend and connection suggestions"
msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ прСдлоТСния Π² Π΄Ρ€ΡƒΠ·ΡŒΡ"
-#: ../../include/features.php:391 ../../include/nav.php:414
-#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:320
+#: ../../include/features.php:391 ../../include/nav.php:444
+#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:341
msgid "Photos"
msgstr "Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ"
@@ -1653,7 +1629,7 @@ msgstr "ΠœΠ΅ΡΡ‚ΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ"
msgid "If location data is available on uploaded photos, link this to a map."
msgstr "Если Π΄Π°Π½Π½Ρ‹Π΅ ΠΎ мСстополоТСнии доступны Π½Π° Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ, ΡΠ²ΡΠ·Π°Ρ‚ΡŒ ΠΈΡ… с ΠΊΠ°Ρ€Ρ‚ΠΎΠΉ."
-#: ../../include/features.php:405 ../../Zotlabs/Lib/Apps.php:338
+#: ../../include/features.php:405 ../../Zotlabs/Lib/Apps.php:359
msgid "Profiles"
msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
@@ -1697,465 +1673,466 @@ msgstr "послСдний"
msgid "next"
msgstr "ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ"
-#: ../../include/text.php:546
+#: ../../include/text.php:553
msgid "older"
msgstr "ΡΡ‚Π°Ρ€ΡˆΠ΅"
-#: ../../include/text.php:548
+#: ../../include/text.php:555
msgid "newer"
msgstr "Π½ΠΎΠ²Π΅Π΅"
-#: ../../include/text.php:968
+#: ../../include/text.php:979
msgid "No connections"
msgstr "НСт ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
-#: ../../include/text.php:1000
+#: ../../include/text.php:1011
#, php-format
msgid "View all %s connections"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС %s ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
-#: ../../include/text.php:1056
+#: ../../include/text.php:1073
#, php-format
msgid "Network: %s"
msgstr "Π‘Π΅Ρ‚ΡŒ: %s"
-#: ../../include/text.php:1067 ../../include/text.php:1079
+#: ../../include/text.php:1084 ../../include/text.php:1096
#: ../../include/acl_selectors.php:118 ../../include/nav.php:183
#: ../../Zotlabs/Module/Search.php:44 ../../Zotlabs/Module/Connections.php:338
#: ../../Zotlabs/Widget/Sitesearch.php:31
-#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../Zotlabs/Lib/Apps.php:328
+#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../Zotlabs/Lib/Apps.php:349
msgid "Search"
msgstr "Поиск"
-#: ../../include/text.php:1068 ../../include/text.php:1080
+#: ../../include/text.php:1085 ../../include/text.php:1097
#: ../../Zotlabs/Module/Admin/Profs.php:94
#: ../../Zotlabs/Module/Admin/Profs.php:114 ../../Zotlabs/Module/Rbmark.php:32
#: ../../Zotlabs/Module/Rbmark.php:104 ../../Zotlabs/Module/Filer.php:53
#: ../../Zotlabs/Widget/Notes.php:23
+#: ../../extend/addon/hzaddons/queueworker/Mod_Queueworker.php:102
msgid "Save"
msgstr "Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ"
-#: ../../include/text.php:1155 ../../include/text.php:1159
+#: ../../include/text.php:1176 ../../include/text.php:1180
msgid "poke"
msgstr "Π’ΠΊΠ½ΡƒΡ‚ΡŒ"
-#: ../../include/text.php:1155 ../../include/text.php:1159
+#: ../../include/text.php:1176 ../../include/text.php:1180
#: ../../include/conversation.php:251
msgid "poked"
msgstr "Ρ‚ΠΊΠ½ΡƒΡ‚"
-#: ../../include/text.php:1160
+#: ../../include/text.php:1181
msgid "ping"
msgstr "ΠŸΠΈΠ½Π³Π°Π½ΡƒΡ‚ΡŒ"
-#: ../../include/text.php:1160
+#: ../../include/text.php:1181
msgid "pinged"
msgstr "ΠžΡ‚ΠΏΠΈΠ½Π³ΠΎΠ²Π°Π½"
-#: ../../include/text.php:1161
+#: ../../include/text.php:1182
msgid "prod"
msgstr "ΠŸΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚ΡŒ"
-#: ../../include/text.php:1161
+#: ../../include/text.php:1182
msgid "prodded"
msgstr "ΠŸΠΎΠ΄Ρ‚ΠΎΠ»ΠΊΠ½ΡƒΡ‚"
-#: ../../include/text.php:1162
+#: ../../include/text.php:1183
msgid "slap"
msgstr "Π¨Π»Ρ‘ΠΏΠ½ΡƒΡ‚ΡŒ"
-#: ../../include/text.php:1162
+#: ../../include/text.php:1183
msgid "slapped"
msgstr "Π¨Π»Ρ‘ΠΏΠ½ΡƒΡ‚"
-#: ../../include/text.php:1163
+#: ../../include/text.php:1184
msgid "finger"
msgstr "Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ"
-#: ../../include/text.php:1163
+#: ../../include/text.php:1184
msgid "fingered"
msgstr "Π£ΠΊΠ°Π·Π°Π½"
-#: ../../include/text.php:1164
+#: ../../include/text.php:1185
msgid "rebuff"
msgstr "Π”Π°Ρ‚ΡŒ ΠΎΡ‚ΠΏΠΎΡ€"
-#: ../../include/text.php:1164
+#: ../../include/text.php:1185
msgid "rebuffed"
msgstr "Π”Π°Π½ ΠΎΡ‚ΠΏΠΎΡ€"
-#: ../../include/text.php:1187
+#: ../../include/text.php:1208
msgid "happy"
msgstr "счастливый"
-#: ../../include/text.php:1188
+#: ../../include/text.php:1209
msgid "sad"
msgstr "грустный"
-#: ../../include/text.php:1189
+#: ../../include/text.php:1210
msgid "mellow"
msgstr "спокойный"
-#: ../../include/text.php:1190
+#: ../../include/text.php:1211
msgid "tired"
msgstr "усталый"
-#: ../../include/text.php:1191
+#: ../../include/text.php:1212
msgid "perky"
msgstr "вСсёлый"
-#: ../../include/text.php:1192
+#: ../../include/text.php:1213
msgid "angry"
msgstr "сСрдитый"
-#: ../../include/text.php:1193
+#: ../../include/text.php:1214
msgid "stupefied"
msgstr "ΠΎΡ‚ΡƒΠΏΠ΅Π²ΡˆΠΈΠΉ"
-#: ../../include/text.php:1194
+#: ../../include/text.php:1215
msgid "puzzled"
msgstr "Π½Π΅Π΄ΠΎΡƒΠΌΠ΅Π²Π°ΡŽΡ‰ΠΈΠΉ"
-#: ../../include/text.php:1195
+#: ../../include/text.php:1216
msgid "interested"
msgstr "заинтСрСсованный"
-#: ../../include/text.php:1196
+#: ../../include/text.php:1217
msgid "bitter"
msgstr "Π΅Π΄ΠΊΠΈΠΉ"
-#: ../../include/text.php:1197
+#: ../../include/text.php:1218
msgid "cheerful"
msgstr "Π±ΠΎΠ΄Ρ€Ρ‹ΠΉ"
-#: ../../include/text.php:1198
+#: ../../include/text.php:1219
msgid "alive"
msgstr "энСргичный"
-#: ../../include/text.php:1199
+#: ../../include/text.php:1220
msgid "annoyed"
msgstr "Ρ€Π°Π·Π΄Ρ€Π°ΠΆΡ‘Π½Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1200
+#: ../../include/text.php:1221
msgid "anxious"
msgstr "обСспокоСнный"
-#: ../../include/text.php:1201
+#: ../../include/text.php:1222
msgid "cranky"
msgstr "ΠΊΠ°ΠΏΡ€ΠΈΠ·Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1202
+#: ../../include/text.php:1223
msgid "disturbed"
msgstr "встрСвоТСнный"
-#: ../../include/text.php:1203
+#: ../../include/text.php:1224
msgid "frustrated"
msgstr "Ρ€Π°Π·ΠΎΡ‡Π°Ρ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1204
+#: ../../include/text.php:1225
msgid "depressed"
msgstr "ΠΏΠΎΠ΄Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1205
+#: ../../include/text.php:1226
msgid "motivated"
msgstr "ΠΌΠΎΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1206
+#: ../../include/text.php:1227
msgid "relaxed"
msgstr "расслаблСнный"
-#: ../../include/text.php:1207
+#: ../../include/text.php:1228
msgid "surprised"
msgstr "ΡƒΠ΄ΠΈΠ²Π»Π΅Π½Π½Ρ‹ΠΉ"
-#: ../../include/text.php:1386 ../../include/js_strings.php:95
+#: ../../include/text.php:1416 ../../include/js_strings.php:95
msgid "Monday"
msgstr "ПонСдСльник"
-#: ../../include/text.php:1386 ../../include/js_strings.php:96
+#: ../../include/text.php:1416 ../../include/js_strings.php:96
msgid "Tuesday"
msgstr "Π’Ρ‚ΠΎΡ€Π½ΠΈΠΊ"
-#: ../../include/text.php:1386 ../../include/js_strings.php:97
+#: ../../include/text.php:1416 ../../include/js_strings.php:97
msgid "Wednesday"
msgstr "Π‘Ρ€Π΅Π΄Π°"
-#: ../../include/text.php:1386 ../../include/js_strings.php:98
+#: ../../include/text.php:1416 ../../include/js_strings.php:98
msgid "Thursday"
msgstr "Π§Π΅Ρ‚Π²Π΅Ρ€Π³"
-#: ../../include/text.php:1386 ../../include/js_strings.php:99
+#: ../../include/text.php:1416 ../../include/js_strings.php:99
msgid "Friday"
msgstr "ΠŸΡΡ‚Π½ΠΈΡ†Π°"
-#: ../../include/text.php:1386 ../../include/js_strings.php:100
+#: ../../include/text.php:1416 ../../include/js_strings.php:100
msgid "Saturday"
msgstr "Π‘ΡƒΠ±Π±ΠΎΡ‚Π°"
-#: ../../include/text.php:1386 ../../include/js_strings.php:94
+#: ../../include/text.php:1416 ../../include/js_strings.php:94
msgid "Sunday"
msgstr "Π’ΠΎΡΠΊΡ€Π΅ΡΠ΅Π½ΡŒΠ΅"
-#: ../../include/text.php:1390 ../../include/js_strings.php:70
+#: ../../include/text.php:1420 ../../include/js_strings.php:70
msgid "January"
msgstr "Π―Π½Π²Π°Ρ€ΡŒ"
-#: ../../include/text.php:1390 ../../include/js_strings.php:71
+#: ../../include/text.php:1420 ../../include/js_strings.php:71
msgid "February"
msgstr "Π€Π΅Π²Ρ€Π°Π»ΡŒ"
-#: ../../include/text.php:1390 ../../include/js_strings.php:72
+#: ../../include/text.php:1420 ../../include/js_strings.php:72
msgid "March"
msgstr "ΠœΠ°Ρ€Ρ‚"
-#: ../../include/text.php:1390 ../../include/js_strings.php:73
+#: ../../include/text.php:1420 ../../include/js_strings.php:73
msgid "April"
msgstr "ΠΠΏΡ€Π΅Π»ΡŒ"
-#: ../../include/text.php:1390
+#: ../../include/text.php:1420
msgid "May"
msgstr "Май"
-#: ../../include/text.php:1390 ../../include/js_strings.php:75
+#: ../../include/text.php:1420 ../../include/js_strings.php:75
msgid "June"
msgstr "Июнь"
-#: ../../include/text.php:1390 ../../include/js_strings.php:76
+#: ../../include/text.php:1420 ../../include/js_strings.php:76
msgid "July"
msgstr "Июль"
-#: ../../include/text.php:1390 ../../include/js_strings.php:77
+#: ../../include/text.php:1420 ../../include/js_strings.php:77
msgid "August"
msgstr "Август"
-#: ../../include/text.php:1390 ../../include/js_strings.php:78
+#: ../../include/text.php:1420 ../../include/js_strings.php:78
msgid "September"
msgstr "Π‘Π΅Π½Ρ‚ΡΠ±Ρ€ΡŒ"
-#: ../../include/text.php:1390 ../../include/js_strings.php:79
+#: ../../include/text.php:1420 ../../include/js_strings.php:79
msgid "October"
msgstr "ΠžΠΊΡ‚ΡΠ±Ρ€ΡŒ"
-#: ../../include/text.php:1390 ../../include/js_strings.php:80
+#: ../../include/text.php:1420 ../../include/js_strings.php:80
msgid "November"
msgstr "ΠΠΎΡΠ±Ρ€ΡŒ"
-#: ../../include/text.php:1390 ../../include/js_strings.php:81
+#: ../../include/text.php:1420 ../../include/js_strings.php:81
msgid "December"
msgstr "Π”Π΅ΠΊΠ°Π±Ρ€ΡŒ"
-#: ../../include/text.php:1464
+#: ../../include/text.php:1494
msgid "Unknown Attachment"
msgstr "НСизвСстноС Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠ΅"
-#: ../../include/text.php:1466 ../../Zotlabs/Storage/Browser.php:287
+#: ../../include/text.php:1496 ../../Zotlabs/Storage/Browser.php:287
#: ../../Zotlabs/Module/Sharedwithme.php:106
msgid "Size"
msgstr "Π Π°Π·ΠΌΠ΅Ρ€"
-#: ../../include/text.php:1466 ../../include/feedutils.php:860
+#: ../../include/text.php:1496 ../../include/feedutils.php:858
msgid "unknown"
msgstr "нСизвСстный"
-#: ../../include/text.php:1502
+#: ../../include/text.php:1532
msgid "remove category"
msgstr "ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΡŽ"
-#: ../../include/text.php:1576
+#: ../../include/text.php:1606
msgid "remove from file"
msgstr "ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°"
-#: ../../include/text.php:1859 ../../Zotlabs/Module/Events.php:663
+#: ../../include/text.php:1913 ../../Zotlabs/Module/Events.php:663
#: ../../Zotlabs/Module/Cal.php:314
msgid "Link to Source"
msgstr "Бсылка Π½Π° источник"
-#: ../../include/text.php:1881 ../../include/language.php:423
+#: ../../include/text.php:1935 ../../include/language.php:423
msgid "default"
msgstr "ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../include/text.php:1889
+#: ../../include/text.php:1943
msgid "Page layout"
msgstr "Π¨Π°Π±Π»ΠΎΠ½ страницы"
-#: ../../include/text.php:1889
+#: ../../include/text.php:1943
msgid "You can create your own with the layouts tool"
msgstr "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ свой собствСнный с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ инструмСнта шаблонов"
-#: ../../include/text.php:1899 ../../Zotlabs/Module/Wiki.php:217
+#: ../../include/text.php:1953 ../../Zotlabs/Module/Wiki.php:217
#: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38
#: ../../Zotlabs/Widget/Wiki_pages.php:95
msgid "BBcode"
msgstr ""
-#: ../../include/text.php:1900
+#: ../../include/text.php:1954
msgid "HTML"
msgstr ""
-#: ../../include/text.php:1901 ../../Zotlabs/Module/Wiki.php:217
+#: ../../include/text.php:1955 ../../Zotlabs/Module/Wiki.php:217
#: ../../Zotlabs/Module/Wiki.php:371 ../../Zotlabs/Widget/Wiki_pages.php:38
#: ../../Zotlabs/Widget/Wiki_pages.php:95
#: ../../extend/addon/hzaddons/mdpost/mdpost.php:41
msgid "Markdown"
msgstr "Π Π°Π·ΠΌΠ΅Ρ‚ΠΊΠ° Markdown"
-#: ../../include/text.php:1902 ../../Zotlabs/Module/Wiki.php:217
+#: ../../include/text.php:1956 ../../Zotlabs/Module/Wiki.php:217
#: ../../Zotlabs/Widget/Wiki_pages.php:38
#: ../../Zotlabs/Widget/Wiki_pages.php:95
msgid "Text"
msgstr "ВСкст"
-#: ../../include/text.php:1903
+#: ../../include/text.php:1957
msgid "Comanche Layout"
msgstr "Π¨Π°Π±Π»ΠΎΠ½ Comanche"
-#: ../../include/text.php:1908
+#: ../../include/text.php:1962
msgid "PHP"
msgstr ""
-#: ../../include/text.php:1917
+#: ../../include/text.php:1971
msgid "Page content type"
msgstr "Π’ΠΈΠΏ содСрТимого страницы"
-#: ../../include/text.php:2037 ../../include/conversation.php:116
-#: ../../Zotlabs/Module/Tagger.php:69 ../../Zotlabs/Module/Like.php:387
-#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:1570
+#: ../../include/text.php:2091 ../../include/conversation.php:116
+#: ../../Zotlabs/Module/Tagger.php:69 ../../Zotlabs/Module/Like.php:392
+#: ../../Zotlabs/Module/Subthread.php:112 ../../Zotlabs/Lib/Activity.php:1959
#: ../../extend/addon/hzaddons/redphotos/redphotohelper.php:71
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1494
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1541
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1504
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1551
msgid "photo"
msgstr "Ρ„ΠΎΡ‚ΠΎ"
-#: ../../include/text.php:2040 ../../include/conversation.php:119
-#: ../../include/event.php:1156 ../../Zotlabs/Module/Tagger.php:73
-#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Like.php:389
+#: ../../include/text.php:2094 ../../include/conversation.php:119
+#: ../../include/event.php:1165 ../../Zotlabs/Module/Tagger.php:73
+#: ../../Zotlabs/Module/Events.php:260 ../../Zotlabs/Module/Like.php:394
msgid "event"
msgstr "событиС"
-#: ../../include/text.php:2043 ../../include/conversation.php:144
-#: ../../Zotlabs/Module/Like.php:387 ../../Zotlabs/Module/Subthread.php:112
-#: ../../Zotlabs/Lib/Activity.php:1570
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1494
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1541
+#: ../../include/text.php:2097 ../../include/conversation.php:144
+#: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112
+#: ../../Zotlabs/Lib/Activity.php:1959
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1504
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1551
msgid "status"
msgstr "статус"
-#: ../../include/text.php:2045 ../../include/conversation.php:146
+#: ../../include/text.php:2099 ../../include/conversation.php:146
#: ../../Zotlabs/Module/Tagger.php:79
msgid "comment"
msgstr "ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"
-#: ../../include/text.php:2050
+#: ../../include/text.php:2104
msgid "activity"
msgstr "Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ"
-#: ../../include/text.php:2151
+#: ../../include/text.php:2205
msgid "a-z, 0-9, -, and _ only"
msgstr "Волько a-z, 0-9, -, и _"
-#: ../../include/text.php:2471
+#: ../../include/text.php:2531
msgid "Design Tools"
msgstr "Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°"
-#: ../../include/text.php:2474 ../../Zotlabs/Module/Blocks.php:154
+#: ../../include/text.php:2534 ../../Zotlabs/Module/Blocks.php:154
msgid "Blocks"
msgstr "Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ"
-#: ../../include/text.php:2475 ../../Zotlabs/Module/Menu.php:170
+#: ../../include/text.php:2535 ../../Zotlabs/Module/Menu.php:170
msgid "Menus"
msgstr "МСню"
-#: ../../include/text.php:2476 ../../Zotlabs/Module/Layouts.php:184
+#: ../../include/text.php:2536 ../../Zotlabs/Module/Layouts.php:184
msgid "Layouts"
msgstr "Π¨Π°Π±Π»ΠΎΠ½Ρ‹"
-#: ../../include/text.php:2477
+#: ../../include/text.php:2537
msgid "Pages"
msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Ρ‹"
-#: ../../include/text.php:2498 ../../Zotlabs/Module/Cal.php:343
+#: ../../include/text.php:2558 ../../Zotlabs/Module/Cal.php:343
msgid "Import"
msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../include/text.php:2499
+#: ../../include/text.php:2559
msgid "Import website..."
msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π²Π΅Π±-сайта..."
-#: ../../include/text.php:2500
+#: ../../include/text.php:2560
msgid "Select folder to import"
msgstr "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°"
-#: ../../include/text.php:2501
+#: ../../include/text.php:2561
msgid "Import from a zipped folder:"
msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° Π² zip-Π°Ρ€Ρ…ΠΈΠ²Π΅:"
-#: ../../include/text.php:2502
+#: ../../include/text.php:2562
msgid "Import from cloud files:"
msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ· сСтСвых Ρ„Π°ΠΉΠ»ΠΎΠ²:"
-#: ../../include/text.php:2503
+#: ../../include/text.php:2563
msgid "/cloud/channel/path/to/folder"
msgstr ""
-#: ../../include/text.php:2504
+#: ../../include/text.php:2564
msgid "Enter path to website files"
msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ„Π°ΠΉΠ»Π°ΠΌ Π²Π΅Π±-сайта"
-#: ../../include/text.php:2505
+#: ../../include/text.php:2565
msgid "Select folder"
msgstr "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³"
-#: ../../include/text.php:2506
+#: ../../include/text.php:2566
msgid "Export website..."
msgstr "Экспорт Π²Π΅Π±-сайта..."
-#: ../../include/text.php:2507
+#: ../../include/text.php:2567
msgid "Export to a zip file"
msgstr "Π­ΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ZIP Ρ„Π°ΠΉΠ»."
-#: ../../include/text.php:2508
+#: ../../include/text.php:2568
msgid "website.zip"
msgstr ""
-#: ../../include/text.php:2509
+#: ../../include/text.php:2569
msgid "Enter a name for the zip file."
msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ имя для ZIP Ρ„Π°ΠΉΠ»Π°."
-#: ../../include/text.php:2510
+#: ../../include/text.php:2570
msgid "Export to cloud files"
msgstr "Π­ΡΠΊΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² сСтСвыС Ρ„Π°ΠΉΠ»Ρ‹:"
-#: ../../include/text.php:2511
+#: ../../include/text.php:2571
msgid "/path/to/export/folder"
msgstr ""
-#: ../../include/text.php:2512
+#: ../../include/text.php:2572
msgid "Enter a path to a cloud files destination."
msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€Π°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΡŽ сСтСвых Ρ„Π°ΠΉΠ»ΠΎΠ²."
-#: ../../include/text.php:2513
+#: ../../include/text.php:2573
msgid "Specify folder"
msgstr "Π£ΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³"
-#: ../../include/text.php:2833 ../../Zotlabs/Storage/Browser.php:131
+#: ../../include/text.php:2941 ../../Zotlabs/Storage/Browser.php:131
msgid "Collection"
msgstr "ΠšΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΡ"
-#: ../../include/import.php:25
+#: ../../include/import.php:26
msgid "Unable to import a removed channel."
msgstr "НСвозмоТно ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΠ΄Π°Π»Ρ‘Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π»."
-#: ../../include/import.php:51
+#: ../../include/import.php:52
msgid ""
"Cannot create a duplicate channel identifier on this system. Import failed."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ ΠΊΠ°Π½Π°Π»Π°. Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½."
-#: ../../include/import.php:72
+#: ../../include/import.php:73
#: ../../extend/addon/hzaddons/diaspora/import_diaspora.php:43
msgid "Unable to create a unique channel address. Import failed."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ адрСс ΠΊΠ°Π½Π°Π»Π°. Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½."
-#: ../../include/import.php:116
+#: ../../include/import.php:117
msgid "Cloned channel not found. Import failed."
msgstr "Клон ΠΊΠ°Π½Π°Π»Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½. Π˜ΠΌΠΏΠΎΡ€Ρ‚ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½."
@@ -2175,9 +2152,9 @@ msgid "edit"
msgstr "Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
#: ../../include/group.php:320 ../../include/nav.php:95
-#: ../../Zotlabs/Module/Group.php:132 ../../Zotlabs/Module/Group.php:143
+#: ../../Zotlabs/Module/Group.php:141 ../../Zotlabs/Module/Group.php:153
#: ../../Zotlabs/Widget/Activity_filter.php:41 ../../Zotlabs/Lib/Group.php:324
-#: ../../Zotlabs/Lib/Apps.php:339
+#: ../../Zotlabs/Lib/Apps.php:360
msgid "Privacy Groups"
msgstr "Π“Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности"
@@ -2229,7 +2206,7 @@ msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π°ΠΊΠΊΠ°ΡƒΠ½
#: ../../include/account.php:314
#, php-format
msgid "Registration confirmation for %s"
-msgstr "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ рСгистрации для %s"
+msgstr "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ рСгистрации Π½Π° %s"
#: ../../include/account.php:385
#, php-format
@@ -2270,16 +2247,16 @@ msgstr "Π­Ρ‚ΠΎ дСйствиС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·-Π·Π° ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π
msgid "Invalid data packet"
msgstr "НСвСрный ΠΏΠ°ΠΊΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹Ρ…"
-#: ../../include/zot.php:802 ../../Zotlabs/Lib/Libzot.php:667
+#: ../../include/zot.php:802 ../../Zotlabs/Lib/Libzot.php:652
msgid "Unable to verify channel signature"
msgstr "НСвозмоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ подпись ΠΊΠ°Π½Π°Π»Π°"
-#: ../../include/zot.php:2575 ../../Zotlabs/Lib/Libsync.php:733
+#: ../../include/zot.php:2591 ../../Zotlabs/Lib/Libsync.php:733
#, php-format
msgid "Unable to verify site signature for %s"
msgstr "НСвозмоТно ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ подпись сайта %s"
-#: ../../include/zot.php:4272
+#: ../../include/zot.php:4288
msgid "invalid target signature"
msgstr "нСдопустимая цСлСвая подпись"
@@ -2324,8 +2301,8 @@ msgid "Help:"
msgstr "ΠŸΠΎΠΌΠΎΡ‰ΡŒ:"
#: ../../include/help.php:117 ../../include/help.php:125
-#: ../../include/nav.php:168 ../../include/nav.php:289
-#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:323
+#: ../../include/nav.php:168 ../../include/nav.php:319
+#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:344
msgid "Help"
msgstr "ΠŸΠΎΠΌΠΎΡ‰ΡŒ"
@@ -2340,17 +2317,17 @@ msgstr "НС найдСно"
msgid "Page not found."
msgstr "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½Π°."
-#: ../../include/bbcode.php:200 ../../include/bbcode.php:1201
-#: ../../include/bbcode.php:1204 ../../include/bbcode.php:1209
-#: ../../include/bbcode.php:1212 ../../include/bbcode.php:1215
-#: ../../include/bbcode.php:1218 ../../include/bbcode.php:1223
-#: ../../include/bbcode.php:1226 ../../include/bbcode.php:1231
-#: ../../include/bbcode.php:1234 ../../include/bbcode.php:1237
-#: ../../include/bbcode.php:1240
+#: ../../include/bbcode.php:200 ../../include/bbcode.php:1190
+#: ../../include/bbcode.php:1193 ../../include/bbcode.php:1198
+#: ../../include/bbcode.php:1201 ../../include/bbcode.php:1204
+#: ../../include/bbcode.php:1207 ../../include/bbcode.php:1212
+#: ../../include/bbcode.php:1215 ../../include/bbcode.php:1220
+#: ../../include/bbcode.php:1223 ../../include/bbcode.php:1226
+#: ../../include/bbcode.php:1229
msgid "Image/photo"
msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ / фотография"
-#: ../../include/bbcode.php:239 ../../include/bbcode.php:1251
+#: ../../include/bbcode.php:239 ../../include/bbcode.php:1240
msgid "Encrypted content"
msgstr "Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Π½ΠΎΠ΅ содСрТаниС"
@@ -2382,54 +2359,54 @@ msgstr "Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
msgid "menu"
msgstr "мСню"
-#: ../../include/bbcode.php:350
+#: ../../include/bbcode.php:339
msgid "card"
msgstr "ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠ°"
-#: ../../include/bbcode.php:352
+#: ../../include/bbcode.php:341
msgid "article"
msgstr "ΡΡ‚Π°Ρ‚ΡŒΡ"
-#: ../../include/bbcode.php:435 ../../include/bbcode.php:443
+#: ../../include/bbcode.php:424 ../../include/bbcode.php:432
msgid "Click to open/close"
msgstr "НаТмитС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ/Π·Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ"
-#: ../../include/bbcode.php:443
+#: ../../include/bbcode.php:432
msgid "spoiler"
msgstr "спойлСр"
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View article"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΡΡ‚Π°Ρ‚ΡŒΠΈ"
-#: ../../include/bbcode.php:456
+#: ../../include/bbcode.php:445
msgid "View summary"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Ρ€Π΅Π·ΡŽΠΌΠ΅"
-#: ../../include/bbcode.php:746 ../../include/bbcode.php:916
+#: ../../include/bbcode.php:735 ../../include/bbcode.php:905
#: ../../Zotlabs/Lib/NativeWikiPage.php:603
msgid "Different viewers will see this text differently"
msgstr "Π Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π·Ρ€ΠΈΡ‚Π΅Π»ΠΈ увидят этот тСкст ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ"
-#: ../../include/bbcode.php:1189
+#: ../../include/bbcode.php:1178
msgid "$1 wrote:"
msgstr "$1 писал:"
-#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:121
+#: ../../include/conversation.php:122 ../../Zotlabs/Module/Like.php:123
msgid "channel"
msgstr "ΠΊΠ°Π½Π°Π»"
-#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:441
-#: ../../Zotlabs/Lib/Activity.php:1605
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1529
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1570
+#: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447
+#: ../../Zotlabs/Lib/Activity.php:1994
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1540
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1491
#, php-format
msgid "%1$s likes %2$s's %3$s"
msgstr "%1$s нравится %3$s %2$s"
-#: ../../include/conversation.php:163 ../../Zotlabs/Module/Like.php:443
-#: ../../Zotlabs/Lib/Activity.php:1607
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1531
+#: ../../include/conversation.php:163 ../../Zotlabs/Module/Like.php:449
+#: ../../Zotlabs/Lib/Activity.php:1996
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1542
#, php-format
msgid "%1$s doesn't like %2$s's %3$s"
msgstr "%1$s Π½Π΅ нравится %2$s %3$s"
@@ -2460,75 +2437,75 @@ msgctxt "mood"
msgid "%1$s is %2$s"
msgstr "%1$s Π² %2$s"
-#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:446
+#: ../../include/conversation.php:483 ../../Zotlabs/Lib/ThreadItem.php:464
msgid "This is an unsaved preview"
msgstr "Π­Ρ‚ΠΎ нСсохранённый просмотр"
-#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1152
+#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1154
msgctxt "title"
msgid "Likes"
msgstr "Нравится"
-#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1152
+#: ../../include/conversation.php:619 ../../Zotlabs/Module/Photos.php:1154
msgctxt "title"
msgid "Dislikes"
msgstr "НС нравится"
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
+#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1155
msgctxt "title"
msgid "Agree"
msgstr "БогласСн"
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
+#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1155
msgctxt "title"
msgid "Disagree"
msgstr "НС согласСн"
-#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1153
+#: ../../include/conversation.php:620 ../../Zotlabs/Module/Photos.php:1155
msgctxt "title"
msgid "Abstain"
msgstr "ВоздСрТался"
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
+#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1156
msgctxt "title"
msgid "Attending"
msgstr "ΠŸΠΎΡΠ΅Ρ‰Π°ΡŽ"
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
+#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1156
msgctxt "title"
msgid "Not attending"
msgstr "НС ΠΏΠΎΡΠ΅Ρ‰Π°ΡŽ"
-#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1154
+#: ../../include/conversation.php:621 ../../Zotlabs/Module/Photos.php:1156
msgctxt "title"
msgid "Might attend"
msgstr "Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ посСщу"
-#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:163
+#: ../../include/conversation.php:690 ../../Zotlabs/Lib/ThreadItem.php:174
msgid "Select"
msgstr "Π’Ρ‹Π±Ρ€Π°Ρ‚ΡŒ"
#: ../../include/conversation.php:691 ../../include/conversation.php:736
#: ../../Zotlabs/Storage/Browser.php:291 ../../Zotlabs/Module/Cdav.php:942
#: ../../Zotlabs/Module/Cdav.php:1232 ../../Zotlabs/Module/Profiles.php:800
-#: ../../Zotlabs/Module/Photos.php:1218 ../../Zotlabs/Module/Oauth.php:174
+#: ../../Zotlabs/Module/Photos.php:1220 ../../Zotlabs/Module/Oauth.php:174
#: ../../Zotlabs/Module/Oauth2.php:195 ../../Zotlabs/Module/Editlayout.php:138
#: ../../Zotlabs/Module/Editblock.php:139
#: ../../Zotlabs/Module/Admin/Channels.php:149
#: ../../Zotlabs/Module/Admin/Profs.php:176
#: ../../Zotlabs/Module/Admin/Accounts.php:175
#: ../../Zotlabs/Module/Editwebpage.php:167 ../../Zotlabs/Module/Thing.php:267
-#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Connedit.php:660
-#: ../../Zotlabs/Module/Connedit.php:929
+#: ../../Zotlabs/Module/Webpages.php:257 ../../Zotlabs/Module/Connedit.php:668
+#: ../../Zotlabs/Module/Connedit.php:940
#: ../../Zotlabs/Module/Connections.php:292
#: ../../Zotlabs/Module/Card_edit.php:129
#: ../../Zotlabs/Module/Article_edit.php:129
-#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Lib/Apps.php:535
-#: ../../Zotlabs/Lib/ThreadItem.php:153
+#: ../../Zotlabs/Module/Blocks.php:162 ../../Zotlabs/Lib/Apps.php:556
+#: ../../Zotlabs/Lib/ThreadItem.php:164
msgid "Delete"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ"
-#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:252
+#: ../../include/conversation.php:695 ../../Zotlabs/Lib/ThreadItem.php:263
msgid "Toggle Star Status"
msgstr "ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ статус ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ"
@@ -2536,11 +2513,11 @@ msgstr "ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ статус ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ"
msgid "Private Message"
msgstr "Π›ΠΈΡ‡Π½ΠΎΠ΅ сообщСниС"
-#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:263
+#: ../../include/conversation.php:707 ../../Zotlabs/Lib/ThreadItem.php:274
msgid "Message signature validated"
msgstr "Подпись сообщСния ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π°"
-#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:264
+#: ../../include/conversation.php:708 ../../Zotlabs/Lib/ThreadItem.php:275
msgid "Message signature incorrect"
msgstr "Подпись сообщСния нСвСрная"
@@ -2563,17 +2540,17 @@ msgstr "ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:"
msgid "Filed under:"
msgstr "Π₯Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄:"
-#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:381
+#: ../../include/conversation.php:766 ../../Zotlabs/Lib/ThreadItem.php:398
#, php-format
msgid "from %s"
msgstr "ΠΎΡ‚ %s"
-#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:384
+#: ../../include/conversation.php:769 ../../Zotlabs/Lib/ThreadItem.php:401
#, php-format
msgid "last edited: %s"
msgstr "послСднСС Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅: %s"
-#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:385
+#: ../../include/conversation.php:770 ../../Zotlabs/Lib/ThreadItem.php:402
#, php-format
msgid "Expires: %s"
msgstr "Π‘Ρ€ΠΎΠΊ дСйствия: %s"
@@ -2583,7 +2560,7 @@ msgid "View in context"
msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π² контСкстС"
#: ../../include/conversation.php:787 ../../Zotlabs/Module/Photos.php:1118
-#: ../../Zotlabs/Lib/ThreadItem.php:447
+#: ../../Zotlabs/Lib/ThreadItem.php:465
msgid "Please wait"
msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ поТалуйста"
@@ -2595,7 +2572,7 @@ msgstr "ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ"
msgid "Loading..."
msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°..."
-#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:276
+#: ../../include/conversation.php:891 ../../Zotlabs/Lib/ThreadItem.php:287
msgid "Conversation Tools"
msgstr "Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ общСния"
@@ -2616,12 +2593,12 @@ msgid "Unfollow Thread"
msgstr "ΠŸΡ€Π΅ΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π΅ΠΌΡƒ"
#: ../../include/conversation.php:1038 ../../include/nav.php:106
-#: ../../Zotlabs/Module/Connedit.php:600 ../../Zotlabs/Lib/Apps.php:319
+#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:340
#: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:57
msgid "View Profile"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
-#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:621
+#: ../../include/conversation.php:1048 ../../Zotlabs/Module/Connedit.php:629
msgid "Recent Activity"
msgstr "ПослСдниС дСйствия"
@@ -2639,19 +2616,19 @@ msgid "Ratings"
msgstr "ΠžΡ†Π΅Π½ΠΊΠΈ"
#: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199
-#: ../../Zotlabs/Lib/Apps.php:326
+#: ../../Zotlabs/Lib/Apps.php:347
msgid "Poke"
msgstr "Π’ΠΊΠ½ΡƒΡ‚ΡŒ"
#: ../../include/conversation.php:1166 ../../Zotlabs/Storage/Browser.php:164
#: ../../Zotlabs/Module/Cdav.php:811 ../../Zotlabs/Module/Cdav.php:812
#: ../../Zotlabs/Module/Cdav.php:819 ../../Zotlabs/Module/Photos.php:832
-#: ../../Zotlabs/Module/Photos.php:1288
-#: ../../Zotlabs/Module/Embedphotos.php:146
+#: ../../Zotlabs/Module/Photos.php:1296
+#: ../../Zotlabs/Module/Embedphotos.php:154
#: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84
-#: ../../Zotlabs/Lib/Apps.php:994 ../../Zotlabs/Lib/Apps.php:1078
-#: ../../Zotlabs/Lib/Activity.php:858
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:949
+#: ../../Zotlabs/Lib/Apps.php:1112 ../../Zotlabs/Lib/Apps.php:1196
+#: ../../Zotlabs/Lib/Activity.php:1011
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:959
msgid "Unknown"
msgstr "НСизвСстный"
@@ -2789,14 +2766,14 @@ msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹"
msgid "Comments disabled"
msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹"
-#: ../../include/conversation.php:1356 ../../Zotlabs/Module/Photos.php:1138
+#: ../../include/conversation.php:1359 ../../Zotlabs/Module/Photos.php:1139
#: ../../Zotlabs/Module/Events.php:480 ../../Zotlabs/Module/Webpages.php:262
-#: ../../Zotlabs/Lib/ThreadItem.php:783
+#: ../../Zotlabs/Lib/ThreadItem.php:801
#: ../../extend/addon/hzaddons/hsse/hsse.php:153
msgid "Preview"
msgstr "ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр"
-#: ../../include/conversation.php:1389 ../../Zotlabs/Module/Photos.php:1117
+#: ../../include/conversation.php:1392 ../../Zotlabs/Module/Photos.php:1117
#: ../../Zotlabs/Module/Webpages.php:256 ../../Zotlabs/Module/Blocks.php:161
#: ../../Zotlabs/Module/Wiki.php:301 ../../Zotlabs/Module/Layouts.php:194
#: ../../Zotlabs/Widget/Cdav.php:124
@@ -2804,52 +2781,52 @@ msgstr "ΠŸΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ просмотр"
msgid "Share"
msgstr "ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ"
-#: ../../include/conversation.php:1398
+#: ../../include/conversation.php:1401
#: ../../extend/addon/hzaddons/hsse/hsse.php:195
msgid "Page link name"
msgstr "НазваниС ссылки Π½Π° страницу "
-#: ../../include/conversation.php:1401
+#: ../../include/conversation.php:1404
#: ../../extend/addon/hzaddons/hsse/hsse.php:198
msgid "Post as"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ"
-#: ../../include/conversation.php:1403 ../../Zotlabs/Lib/ThreadItem.php:774
+#: ../../include/conversation.php:1406 ../../Zotlabs/Lib/ThreadItem.php:792
#: ../../extend/addon/hzaddons/hsse/hsse.php:200
msgid "Bold"
msgstr "Π–ΠΈΡ€Π½Ρ‹ΠΉ"
-#: ../../include/conversation.php:1404 ../../Zotlabs/Lib/ThreadItem.php:775
+#: ../../include/conversation.php:1407 ../../Zotlabs/Lib/ThreadItem.php:793
#: ../../extend/addon/hzaddons/hsse/hsse.php:201
msgid "Italic"
msgstr "ΠšΡƒΡ€ΡΠΈΠ²"
-#: ../../include/conversation.php:1405 ../../Zotlabs/Lib/ThreadItem.php:776
+#: ../../include/conversation.php:1408 ../../Zotlabs/Lib/ThreadItem.php:794
#: ../../extend/addon/hzaddons/hsse/hsse.php:202
msgid "Underline"
msgstr "ΠŸΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠ½ΡƒΡ‚Ρ‹ΠΉ"
-#: ../../include/conversation.php:1406 ../../Zotlabs/Lib/ThreadItem.php:777
+#: ../../include/conversation.php:1409 ../../Zotlabs/Lib/ThreadItem.php:795
#: ../../extend/addon/hzaddons/hsse/hsse.php:203
msgid "Quote"
msgstr "Π¦ΠΈΡ‚Π°Ρ‚Π°"
-#: ../../include/conversation.php:1407 ../../Zotlabs/Lib/ThreadItem.php:778
+#: ../../include/conversation.php:1410 ../../Zotlabs/Lib/ThreadItem.php:796
#: ../../extend/addon/hzaddons/hsse/hsse.php:204
msgid "Code"
msgstr "Код"
-#: ../../include/conversation.php:1408 ../../Zotlabs/Lib/ThreadItem.php:780
+#: ../../include/conversation.php:1411 ../../Zotlabs/Lib/ThreadItem.php:798
#: ../../extend/addon/hzaddons/hsse/hsse.php:205
msgid "Attach/Upload file"
msgstr "ΠŸΡ€ΠΈΠΊΡ€Π΅ΠΏΠΈΡ‚ΡŒ/Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»"
-#: ../../include/conversation.php:1411 ../../Zotlabs/Module/Wiki.php:400
+#: ../../include/conversation.php:1414 ../../Zotlabs/Module/Wiki.php:400
#: ../../extend/addon/hzaddons/hsse/hsse.php:208
msgid "Embed an image from your albums"
msgstr "Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π°ΡˆΠΈΡ… альбомов"
-#: ../../include/conversation.php:1412 ../../include/conversation.php:1461
+#: ../../include/conversation.php:1415 ../../include/conversation.php:1464
#: ../../Zotlabs/Module/Cdav.php:944 ../../Zotlabs/Module/Cdav.php:1233
#: ../../Zotlabs/Module/Profiles.php:801 ../../Zotlabs/Module/Tagrm.php:15
#: ../../Zotlabs/Module/Tagrm.php:138 ../../Zotlabs/Module/Oauth.php:112
@@ -2861,7 +2838,7 @@ msgstr "Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π°ΡˆΠΈΡ… альбомов
#: ../../Zotlabs/Module/Admin/Addons.php:423
#: ../../Zotlabs/Module/Editwebpage.php:169
#: ../../Zotlabs/Module/Profile_photo.php:465
-#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Connedit.php:930
+#: ../../Zotlabs/Module/Editpost.php:109 ../../Zotlabs/Module/Connedit.php:941
#: ../../Zotlabs/Module/Card_edit.php:131
#: ../../Zotlabs/Module/Article_edit.php:131 ../../Zotlabs/Module/Wiki.php:368
#: ../../Zotlabs/Module/Wiki.php:401 ../../Zotlabs/Module/Filer.php:55
@@ -2870,7 +2847,7 @@ msgstr "Π’ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ· Π²Π°ΡˆΠΈΡ… альбомов
msgid "Cancel"
msgstr "ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ"
-#: ../../include/conversation.php:1413 ../../include/conversation.php:1460
+#: ../../include/conversation.php:1416 ../../include/conversation.php:1463
#: ../../Zotlabs/Module/Cover_photo.php:400
#: ../../Zotlabs/Module/Profile_photo.php:466 ../../Zotlabs/Module/Wiki.php:402
#: ../../extend/addon/hzaddons/hsse/hsse.php:210
@@ -2878,22 +2855,22 @@ msgstr "ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ"
msgid "OK"
msgstr ""
-#: ../../include/conversation.php:1415
+#: ../../include/conversation.php:1418
#: ../../extend/addon/hzaddons/hsse/hsse.php:212
msgid "Toggle voting"
msgstr "ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ голосованиС"
-#: ../../include/conversation.php:1418
+#: ../../include/conversation.php:1421
#: ../../extend/addon/hzaddons/hsse/hsse.php:215
msgid "Disable comments"
msgstr "ΠžΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ"
-#: ../../include/conversation.php:1419
+#: ../../include/conversation.php:1422
#: ../../extend/addon/hzaddons/hsse/hsse.php:216
msgid "Toggle comments"
msgstr "ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ"
-#: ../../include/conversation.php:1424 ../../Zotlabs/Module/Photos.php:713
+#: ../../include/conversation.php:1427 ../../Zotlabs/Module/Photos.php:713
#: ../../Zotlabs/Module/Photos.php:1083 ../../Zotlabs/Module/Editblock.php:129
#: ../../Zotlabs/Module/Card_edit.php:117
#: ../../Zotlabs/Module/Article_edit.php:117
@@ -2901,41 +2878,41 @@ msgstr "ΠŸΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ"
msgid "Title (optional)"
msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)"
-#: ../../include/conversation.php:1427
+#: ../../include/conversation.php:1430
#: ../../extend/addon/hzaddons/hsse/hsse.php:224
msgid "Categories (optional, comma-separated list)"
msgstr "ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, список Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ)"
-#: ../../include/conversation.php:1428 ../../Zotlabs/Module/Events.php:481
+#: ../../include/conversation.php:1431 ../../Zotlabs/Module/Events.php:481
#: ../../extend/addon/hzaddons/hsse/hsse.php:225
msgid "Permission settings"
msgstr "Настройки Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ"
-#: ../../include/conversation.php:1450
+#: ../../include/conversation.php:1453
#: ../../extend/addon/hzaddons/hsse/hsse.php:247
msgid "Other networks and post services"
msgstr "Π”Ρ€ΡƒΠ³ΠΈΠ΅ сСти ΠΈ слуТбы ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ"
-#: ../../include/conversation.php:1453 ../../Zotlabs/Module/Mail.php:292
+#: ../../include/conversation.php:1456 ../../Zotlabs/Module/Mail.php:292
#: ../../Zotlabs/Module/Mail.php:434
#: ../../extend/addon/hzaddons/hsse/hsse.php:250
msgid "Set expiration date"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ срок дСйствия"
-#: ../../include/conversation.php:1456
+#: ../../include/conversation.php:1459
#: ../../extend/addon/hzaddons/hsse/hsse.php:253
msgid "Set publish date"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΄Π°Ρ‚Ρƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
-#: ../../include/conversation.php:1458 ../../Zotlabs/Module/Mail.php:294
+#: ../../include/conversation.php:1461 ../../Zotlabs/Module/Mail.php:294
#: ../../Zotlabs/Module/Mail.php:436 ../../Zotlabs/Module/Chat.php:221
-#: ../../Zotlabs/Lib/ThreadItem.php:787
+#: ../../Zotlabs/Lib/ThreadItem.php:805
#: ../../extend/addon/hzaddons/hsse/hsse.php:255
msgid "Encrypt text"
msgstr "Π—Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Ρ‚ΡŒ тСкст"
-#: ../../include/conversation.php:1696 ../../Zotlabs/Module/Photos.php:1180
-#: ../../Zotlabs/Lib/ThreadItem.php:226
+#: ../../include/conversation.php:1705 ../../Zotlabs/Module/Photos.php:1182
+#: ../../Zotlabs/Lib/ThreadItem.php:237
msgctxt "noun"
msgid "Dislike"
msgid_plural "Dislikes"
@@ -2943,7 +2920,7 @@ msgstr[0] "НС нравится"
msgstr[1] "НС нравится"
msgstr[2] "НС нравится"
-#: ../../include/conversation.php:1699
+#: ../../include/conversation.php:1708
msgctxt "noun"
msgid "Attending"
msgid_plural "Attending"
@@ -2951,7 +2928,7 @@ msgstr[0] "ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚"
msgstr[1] "ΠŸΠΎΡΠ΅Ρ‚ΡΡ‚"
msgstr[2] "ΠŸΠΎΡΠ΅Ρ‚ΡΡ‚"
-#: ../../include/conversation.php:1702
+#: ../../include/conversation.php:1711
msgctxt "noun"
msgid "Not Attending"
msgid_plural "Not Attending"
@@ -2959,13 +2936,13 @@ msgstr[0] "НС посСтит"
msgstr[1] "НС посСтят"
msgstr[2] "НС посСтят"
-#: ../../include/conversation.php:1705
+#: ../../include/conversation.php:1714
msgctxt "noun"
msgid "Undecided"
msgid_plural "Undecided"
msgstr "НС Ρ€Π΅ΡˆΠΈΠ»"
-#: ../../include/conversation.php:1708
+#: ../../include/conversation.php:1717
msgctxt "noun"
msgid "Agree"
msgid_plural "Agrees"
@@ -2973,7 +2950,7 @@ msgstr[0] "БогласСн"
msgstr[1] "Богласны"
msgstr[2] "Богласны"
-#: ../../include/conversation.php:1711
+#: ../../include/conversation.php:1720
msgctxt "noun"
msgid "Disagree"
msgid_plural "Disagrees"
@@ -2981,7 +2958,7 @@ msgstr[0] "НС согласСн"
msgstr[1] "НС согласны"
msgstr[2] "НС согласны"
-#: ../../include/conversation.php:1714
+#: ../../include/conversation.php:1723
msgctxt "noun"
msgid "Abstain"
msgid_plural "Abstains"
@@ -3018,7 +2995,7 @@ msgstr "Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ"
msgid "wants"
msgstr "Ρ…ΠΎΡ‚Π΅Ρ‚ΡŒ"
-#: ../../include/taxonomy.php:575 ../../Zotlabs/Lib/ThreadItem.php:292
+#: ../../include/taxonomy.php:575 ../../Zotlabs/Lib/ThreadItem.php:303
msgid "like"
msgstr "нравится"
@@ -3026,7 +3003,7 @@ msgstr "нравится"
msgid "likes"
msgstr "нравится"
-#: ../../include/taxonomy.php:576 ../../Zotlabs/Lib/ThreadItem.php:293
+#: ../../include/taxonomy.php:576 ../../Zotlabs/Lib/ThreadItem.php:304
msgid "dislike"
msgstr "Π½Π΅ нравится"
@@ -3042,12 +3019,12 @@ msgstr "Π’Ρ‹Π±ΠΎΡ€ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ языка"
msgid "Delete this item?"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ этот элСмСнт?"
-#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1136
-#: ../../Zotlabs/Module/Photos.php:1254 ../../Zotlabs/Lib/ThreadItem.php:772
+#: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1137
+#: ../../Zotlabs/Module/Photos.php:1256 ../../Zotlabs/Lib/ThreadItem.php:790
msgid "Comment"
msgstr "ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"
-#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:479
+#: ../../include/js_strings.php:7 ../../Zotlabs/Lib/ThreadItem.php:497
#, php-format
msgid "%s show all"
msgstr "%s ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ всё"
@@ -3104,7 +3081,7 @@ msgid "Rate This Channel (this is public)"
msgstr "ΠžΡ†Π΅Π½ΠΊa этoΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π° (общСдоступно)"
#: ../../include/js_strings.php:20 ../../Zotlabs/Module/Rate.php:155
-#: ../../Zotlabs/Module/Connedit.php:876
+#: ../../Zotlabs/Module/Connedit.php:887
msgid "Rating"
msgstr "ΠžΡ†Π΅Π½ΠΊΠ°"
@@ -3380,39 +3357,35 @@ msgstr "Волько ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΡƒΠΌΡ‹"
msgid "This Website Only"
msgstr "Волько этот Π²Π΅Π±-сайт"
-#: ../../include/network.php:771
-msgid "view full size"
-msgstr "ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€"
-
-#: ../../include/network.php:1774 ../../include/network.php:1775
+#: ../../include/network.php:1715 ../../include/network.php:1716
msgid "Friendica"
msgstr ""
-#: ../../include/network.php:1776
+#: ../../include/network.php:1717
msgid "OStatus"
msgstr ""
-#: ../../include/network.php:1777
+#: ../../include/network.php:1718
msgid "GNU-Social"
msgstr ""
-#: ../../include/network.php:1778
+#: ../../include/network.php:1719
msgid "RSS/Atom"
msgstr ""
-#: ../../include/network.php:1779 ../../Zotlabs/Lib/Activity.php:1417
-#: ../../Zotlabs/Lib/Activity.php:1614
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1204
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1359
-#: ../../extend/addon/hzaddons/pubcrawl/as.php:1538
+#: ../../include/network.php:1720 ../../Zotlabs/Lib/Activity.php:1806
+#: ../../Zotlabs/Lib/Activity.php:2003
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1214
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1369
+#: ../../extend/addon/hzaddons/pubcrawl/as.php:1549
msgid "ActivityPub"
msgstr ""
-#: ../../include/network.php:1780 ../../Zotlabs/Module/Cdav.php:1219
+#: ../../include/network.php:1721 ../../Zotlabs/Module/Cdav.php:1219
#: ../../Zotlabs/Module/Profiles.php:787
#: ../../Zotlabs/Module/Admin/Accounts.php:171
#: ../../Zotlabs/Module/Admin/Accounts.php:183
-#: ../../Zotlabs/Module/Connedit.php:916
+#: ../../Zotlabs/Module/Connedit.php:927
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:57
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:56
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:57
@@ -3420,27 +3393,27 @@ msgstr ""
msgid "Email"
msgstr "ЭлСктронная ΠΏΠΎΡ‡Ρ‚Π°"
-#: ../../include/network.php:1781
+#: ../../include/network.php:1722
msgid "Diaspora"
msgstr ""
-#: ../../include/network.php:1782
+#: ../../include/network.php:1723
msgid "Facebook"
msgstr ""
-#: ../../include/network.php:1783
+#: ../../include/network.php:1724
msgid "Zot"
msgstr ""
-#: ../../include/network.php:1784
+#: ../../include/network.php:1725
msgid "LinkedIn"
msgstr ""
-#: ../../include/network.php:1785
+#: ../../include/network.php:1726
msgid "XMPP/IM"
msgstr ""
-#: ../../include/network.php:1786
+#: ../../include/network.php:1727
msgid "MySpace"
msgstr ""
@@ -3468,7 +3441,7 @@ msgstr "YYYY-MM-DD ΠΈΠ»ΠΈ MM-DD"
msgid "Required"
msgstr "ВрСбуСтся"
-#: ../../include/datetime.php:238 ../../boot.php:2558
+#: ../../include/datetime.php:238 ../../boot.php:2561
msgid "never"
msgstr "Π½ΠΈΠΊΠΎΠ³Π΄Π°"
@@ -3589,12 +3562,12 @@ msgstr "НС ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ"
#: ../../include/acl_selectors.php:123 ../../Zotlabs/Module/Photos.php:717
#: ../../Zotlabs/Module/Photos.php:1086 ../../Zotlabs/Module/Chat.php:243
#: ../../Zotlabs/Module/Filestorage.php:170 ../../Zotlabs/Module/Thing.php:319
-#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Connedit.php:682
+#: ../../Zotlabs/Module/Thing.php:372 ../../Zotlabs/Module/Connedit.php:690
msgid "Permissions"
msgstr "Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
-#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1308
-#: ../../Zotlabs/Lib/ThreadItem.php:441
+#: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1316
+#: ../../Zotlabs/Lib/ThreadItem.php:459
msgid "Close"
msgstr "Π—Π°ΠΊΡ€Ρ‹Ρ‚ΡŒ"
@@ -3618,73 +3591,73 @@ msgstr "НовоС окно"
msgid "Open the selected location in a different window or browser tab"
msgstr "ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠ΅ мСстополоТСниС Π² Π΄Ρ€ΡƒΠ³ΠΎΠΌ ΠΎΠΊΠ½Π΅ ΠΈΠ»ΠΈ Π²ΠΊΠ»Π°Π΄ΠΊΠ΅ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°"
-#: ../../include/connections.php:696 ../../include/event.php:1311
+#: ../../include/connections.php:696 ../../include/event.php:1320
#: ../../Zotlabs/Module/Cdav.php:1224 ../../Zotlabs/Module/Profiles.php:792
-#: ../../Zotlabs/Module/Connedit.php:921
+#: ../../Zotlabs/Module/Connedit.php:932
msgid "Mobile"
msgstr "ΠœΠΎΠ±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ"
-#: ../../include/connections.php:697 ../../include/event.php:1312
+#: ../../include/connections.php:697 ../../include/event.php:1321
#: ../../Zotlabs/Module/Cdav.php:1225 ../../Zotlabs/Module/Profiles.php:793
-#: ../../Zotlabs/Module/Connedit.php:922
+#: ../../Zotlabs/Module/Connedit.php:933
msgid "Home"
msgstr "Π”ΠΎΠΌΠ°ΡˆΠ½ΠΈΠΉ"
-#: ../../include/connections.php:698 ../../include/event.php:1313
+#: ../../include/connections.php:698 ../../include/event.php:1322
msgid "Home, Voice"
msgstr "Π”ΠΎΠΌ, голос"
-#: ../../include/connections.php:699 ../../include/event.php:1314
+#: ../../include/connections.php:699 ../../include/event.php:1323
msgid "Home, Fax"
msgstr "Π”ΠΎΠΌ, факс"
-#: ../../include/connections.php:700 ../../include/event.php:1315
+#: ../../include/connections.php:700 ../../include/event.php:1324
#: ../../Zotlabs/Module/Cdav.php:1226 ../../Zotlabs/Module/Profiles.php:794
-#: ../../Zotlabs/Module/Connedit.php:923
+#: ../../Zotlabs/Module/Connedit.php:934
msgid "Work"
msgstr "Π Π°Π±ΠΎΡ‡ΠΈΠΉ"
-#: ../../include/connections.php:701 ../../include/event.php:1316
+#: ../../include/connections.php:701 ../../include/event.php:1325
msgid "Work, Voice"
msgstr "Π Π°Π±ΠΎΡ‚Π°, голос"
-#: ../../include/connections.php:702 ../../include/event.php:1317
+#: ../../include/connections.php:702 ../../include/event.php:1326
msgid "Work, Fax"
msgstr "Π Π°Π±ΠΎΡ‚Π°, факс"
-#: ../../include/event.php:24 ../../include/event.php:71
+#: ../../include/event.php:28 ../../include/event.php:75
msgid "l F d, Y \\@ g:i A"
msgstr ""
-#: ../../include/event.php:32 ../../include/event.php:75
+#: ../../include/event.php:36 ../../include/event.php:79
msgid "Starts:"
msgstr "Начало:"
-#: ../../include/event.php:42 ../../include/event.php:79
+#: ../../include/event.php:46 ../../include/event.php:83
msgid "Finishes:"
msgstr "ΠžΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠ΅:"
-#: ../../include/event.php:1011
+#: ../../include/event.php:1020
msgid "This event has been added to your calendar."
msgstr "Π­Ρ‚ΠΎ событиС Π±Ρ‹Π»ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π² ваш ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ."
-#: ../../include/event.php:1230
+#: ../../include/event.php:1239
msgid "Not specified"
msgstr "НС ΡƒΠΊΠ°Π·Π°Π½ΠΎ"
-#: ../../include/event.php:1231
+#: ../../include/event.php:1240
msgid "Needs Action"
msgstr "Π’Ρ€Π΅Π±ΡƒΠ΅Ρ‚ дСйствия"
-#: ../../include/event.php:1232
+#: ../../include/event.php:1241
msgid "Completed"
msgstr "Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ"
-#: ../../include/event.php:1233
+#: ../../include/event.php:1242
msgid "In Process"
msgstr "Π’ процСссС"
-#: ../../include/event.php:1234
+#: ../../include/event.php:1243
msgid "Cancelled"
msgstr "ΠžΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ"
@@ -3718,7 +3691,7 @@ msgid "Click to authenticate to your home hub"
msgstr "НаТмитС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сСбя Π½Π° домашнСм ΡƒΠ·Π»Π΅"
#: ../../include/nav.php:92 ../../Zotlabs/Module/Manage.php:170
-#: ../../Zotlabs/Lib/Apps.php:312
+#: ../../Zotlabs/Lib/Apps.php:333
msgid "Channel Manager"
msgstr "ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ ΠΊΠ°Π½Π°Π»ΠΎΠ²"
@@ -3733,7 +3706,7 @@ msgstr "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ вашим Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ бСзопасностΠ
#: ../../include/nav.php:97 ../../Zotlabs/Module/Admin/Addons.php:344
#: ../../Zotlabs/Module/Admin/Themes.php:125
#: ../../Zotlabs/Widget/Newmember.php:53
-#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../Zotlabs/Lib/Apps.php:314
+#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../Zotlabs/Lib/Apps.php:335
msgid "Settings"
msgstr "Настройки"
@@ -3742,7 +3715,7 @@ msgid "Account/Channel Settings"
msgstr "Настройки Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π° / ΠΊΠ°Π½Π°Π»Π°"
#: ../../include/nav.php:103 ../../include/nav.php:132
-#: ../../include/nav.php:151 ../../boot.php:1624
+#: ../../include/nav.php:151 ../../boot.php:1629
msgid "Logout"
msgstr "Π’Ρ‹Ρ…ΠΎΠ΄"
@@ -3762,8 +3735,8 @@ msgstr "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ / Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ"
msgid "Edit your profile"
msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
-#: ../../include/nav.php:118 ../../include/nav.php:122 ../../boot.php:1625
-#: ../../Zotlabs/Lib/Apps.php:311
+#: ../../include/nav.php:118 ../../include/nav.php:122 ../../boot.php:1630
+#: ../../Zotlabs/Lib/Apps.php:332
msgid "Login"
msgstr "Π’ΠΎΠΉΡ‚ΠΈ"
@@ -3779,7 +3752,7 @@ msgstr "Π”ΠΎΠΌΠΎΠΉ"
msgid "Log me out of this site"
msgstr "Π’Ρ‹ΠΉΡ‚ΠΈ с этого сайта"
-#: ../../include/nav.php:156 ../../boot.php:1605
+#: ../../include/nav.php:156 ../../boot.php:1610
#: ../../Zotlabs/Module/Register.php:289
msgid "Register"
msgstr "РСгистрация"
@@ -3804,110 +3777,110 @@ msgstr "АдминистрированиС"
msgid "Site Setup and Configuration"
msgstr "Установка ΠΈ конфигурация сайта"
-#: ../../include/nav.php:293 ../../Zotlabs/Module/Defperms.php:256
+#: ../../include/nav.php:323 ../../Zotlabs/Module/Defperms.php:256
#: ../../Zotlabs/Module/New_channel.php:157
#: ../../Zotlabs/Module/New_channel.php:164
-#: ../../Zotlabs/Module/Connedit.php:858
+#: ../../Zotlabs/Module/Connedit.php:869
#: ../../Zotlabs/Widget/Notifications.php:162
msgid "Loading"
msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ°"
-#: ../../include/nav.php:299
+#: ../../include/nav.php:329
msgid "@name, !forum, #tag, ?doc, content"
msgstr "@имя, !Ρ„ΠΎΡ€ΡƒΠΌ, #Ρ‚Π΅Π³, ?Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚, содСрТимоС"
-#: ../../include/nav.php:300
+#: ../../include/nav.php:330
msgid "Please wait..."
msgstr "ΠŸΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ поТалуйста ..."
-#: ../../include/nav.php:306
+#: ../../include/nav.php:336
msgid "Add Apps"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ прилоТСния"
-#: ../../include/nav.php:307
+#: ../../include/nav.php:337
msgid "Arrange Apps"
msgstr "Π£ΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΡ‚ΡŒ прилоТСния"
-#: ../../include/nav.php:308
+#: ../../include/nav.php:338
msgid "Toggle System Apps"
msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ систСмныС прилоТСния"
-#: ../../include/nav.php:391 ../../Zotlabs/Module/Admin/Channels.php:154
+#: ../../include/nav.php:421 ../../Zotlabs/Module/Admin/Channels.php:154
msgid "Channel"
msgstr "Канал"
-#: ../../include/nav.php:394
+#: ../../include/nav.php:424
msgid "Status Messages and Posts"
msgstr "Бтатусы ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
-#: ../../include/nav.php:404 ../../Zotlabs/Module/Help.php:80
+#: ../../include/nav.php:434 ../../Zotlabs/Module/Help.php:80
msgid "About"
msgstr "О сСбС"
-#: ../../include/nav.php:407
+#: ../../include/nav.php:437
msgid "Profile Details"
msgstr "Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅"
-#: ../../include/nav.php:422 ../../Zotlabs/Storage/Browser.php:272
-#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:315
+#: ../../include/nav.php:452 ../../Zotlabs/Storage/Browser.php:272
+#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:336
msgid "Files"
msgstr "Π€Π°ΠΉΠ»Ρ‹"
-#: ../../include/nav.php:425
+#: ../../include/nav.php:455
msgid "Files and Storage"
msgstr "Π€Π°ΠΉΠ»Ρ‹ ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅"
-#: ../../include/nav.php:433 ../../include/nav.php:436
+#: ../../include/nav.php:463 ../../include/nav.php:466
#: ../../Zotlabs/Storage/Browser.php:140
msgid "Calendar"
msgstr "ΠšΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ"
-#: ../../include/nav.php:447 ../../include/nav.php:450
-#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:307
+#: ../../include/nav.php:477 ../../include/nav.php:480
+#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:328
msgid "Chatrooms"
msgstr "Π§Π°Ρ‚Ρ‹"
-#: ../../include/nav.php:460 ../../Zotlabs/Lib/Apps.php:306
+#: ../../include/nav.php:490 ../../Zotlabs/Lib/Apps.php:327
msgid "Bookmarks"
msgstr "Π—Π°ΠΊΠ»Π°Π΄ΠΊΠΈ"
-#: ../../include/nav.php:463
+#: ../../include/nav.php:493
msgid "Saved Bookmarks"
msgstr "Π‘ΠΎΡ…Ρ€Π°Π½Ρ‘Π½Π½Ρ‹Π΅ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ"
-#: ../../include/nav.php:471 ../../Zotlabs/Module/Cards.php:203
-#: ../../Zotlabs/Lib/Apps.php:303
+#: ../../include/nav.php:501 ../../Zotlabs/Module/Cards.php:207
+#: ../../Zotlabs/Lib/Apps.php:324
msgid "Cards"
msgstr "ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ"
-#: ../../include/nav.php:474
+#: ../../include/nav.php:504
msgid "View Cards"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ"
-#: ../../include/nav.php:482 ../../Zotlabs/Module/Articles.php:214
-#: ../../Zotlabs/Lib/Apps.php:302
+#: ../../include/nav.php:512 ../../Zotlabs/Module/Articles.php:222
+#: ../../Zotlabs/Lib/Apps.php:323
msgid "Articles"
msgstr "Π‘Ρ‚Π°Ρ‚ΡŒΠΈ"
-#: ../../include/nav.php:485
+#: ../../include/nav.php:515
msgid "View Articles"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ статСй"
-#: ../../include/nav.php:494 ../../Zotlabs/Module/Webpages.php:252
-#: ../../Zotlabs/Lib/Apps.php:316
+#: ../../include/nav.php:524 ../../Zotlabs/Module/Webpages.php:252
+#: ../../Zotlabs/Lib/Apps.php:337
msgid "Webpages"
msgstr "Π’Π΅Π±-страницы"
-#: ../../include/nav.php:497
+#: ../../include/nav.php:527
msgid "View Webpages"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ Π²Π΅Π±-страниц"
-#: ../../include/nav.php:506 ../../Zotlabs/Module/Wiki.php:206
+#: ../../include/nav.php:536 ../../Zotlabs/Module/Wiki.php:206
#: ../../Zotlabs/Widget/Wiki_list.php:15
msgid "Wikis"
msgstr ""
-#: ../../include/nav.php:509 ../../Zotlabs/Lib/Apps.php:317
+#: ../../include/nav.php:539 ../../Zotlabs/Lib/Apps.php:338
msgid "Wiki"
msgstr ""
@@ -3916,117 +3889,117 @@ msgstr ""
msgid "%1$s's bookmarks"
msgstr "Π—Π°ΠΊΠ»Π°Π΄ΠΊΠΈ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ %1$s"
-#: ../../include/attach.php:265 ../../include/attach.php:374
+#: ../../include/attach.php:267 ../../include/attach.php:376
msgid "Item was not found."
msgstr "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
-#: ../../include/attach.php:282
+#: ../../include/attach.php:284
msgid "Unknown error."
msgstr "НСизвСстная ошибка."
-#: ../../include/attach.php:567
+#: ../../include/attach.php:569
msgid "No source file."
msgstr "НСт исходного Ρ„Π°ΠΉΠ»Π°."
-#: ../../include/attach.php:589
+#: ../../include/attach.php:591
msgid "Cannot locate file to replace"
msgstr "НС удаСтся Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» для Π·Π°ΠΌΠ΅Π½Ρ‹"
-#: ../../include/attach.php:608
+#: ../../include/attach.php:610
msgid "Cannot locate file to revise/update"
msgstr "НС удаСтся Π½Π°ΠΉΡ‚ΠΈ Ρ„Π°ΠΉΠ» для пСрСсмотра / обновлСния"
-#: ../../include/attach.php:750
+#: ../../include/attach.php:752
#, php-format
msgid "File exceeds size limit of %d"
msgstr "Π€Π°ΠΉΠ» ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ ΠΏΡ€Π΅Π΄Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ %d"
-#: ../../include/attach.php:771
+#: ../../include/attach.php:773
#, php-format
msgid "You have reached your limit of %1$.0f Mbytes attachment storage."
msgstr "Π’Ρ‹ достигли ΠΏΡ€Π΅Π΄Π΅Π»Π° %1$.0f ΠœΠ±Π°ΠΉΡ‚ для хранСния Π²Π»ΠΎΠΆΠ΅Π½ΠΈΠΉ."
-#: ../../include/attach.php:953
+#: ../../include/attach.php:955
msgid "File upload failed. Possible system limit or action terminated."
msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Ρ„Π°ΠΉΠ»Π° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ систСма ΠΏΠ΅Ρ€Π΅Π³Ρ€ΡƒΠΆΠ΅Π½Π° ΠΈΠ»ΠΈ ΠΏΠΎΠΏΡ‹Ρ‚ΠΊΠ° ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π΅Π½Π°."
-#: ../../include/attach.php:982
+#: ../../include/attach.php:984
msgid "Stored file could not be verified. Upload failed."
msgstr "Π€Π°ΠΉΠ» для сохранСния Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½. Π—Π°Π³Ρ€ΡƒΠ·ΠΊΠ° Π½Π΅ ΡƒΠ΄Π°Π»Π°ΡΡŒ."
-#: ../../include/attach.php:1056 ../../include/attach.php:1072
+#: ../../include/attach.php:1058 ../../include/attach.php:1074
msgid "Path not available."
msgstr "ΠŸΡƒΡ‚ΡŒ нСдоступСн."
-#: ../../include/attach.php:1121 ../../include/attach.php:1286
+#: ../../include/attach.php:1123 ../../include/attach.php:1288
msgid "Empty pathname"
msgstr "ΠŸΡƒΡΡ‚ΠΎΠ΅ имя ΠΏΡƒΡ‚ΠΈ"
-#: ../../include/attach.php:1147
+#: ../../include/attach.php:1149
msgid "duplicate filename or path"
msgstr "Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ΡΡ имя Ρ„Π°ΠΉΠ»Π° ΠΈΠ»ΠΈ ΠΏΡƒΡ‚ΠΈ"
-#: ../../include/attach.php:1172
+#: ../../include/attach.php:1174
msgid "Path not found."
msgstr "ΠŸΡƒΡ‚ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
-#: ../../include/attach.php:1240
+#: ../../include/attach.php:1242
msgid "mkdir failed."
msgstr "mkdir Π½Π΅ удался"
-#: ../../include/attach.php:1244
+#: ../../include/attach.php:1246
msgid "database storage failed."
msgstr "ошибка ΠΏΡ€ΠΈ записи Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…."
-#: ../../include/attach.php:1292
+#: ../../include/attach.php:1294
msgid "Empty path"
msgstr "ΠŸΡƒΡΡ‚ΠΎΠ΅ имя ΠΏΡƒΡ‚ΠΈ"
-#: ../../include/photo/photo_driver.php:779
+#: ../../include/photo/photo_driver.php:782
#: ../../Zotlabs/Module/Profile_photo.php:120
#: ../../Zotlabs/Module/Profile_photo.php:248
msgid "Profile Photos"
msgstr "Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ профиля"
-#: ../../boot.php:1604
+#: ../../boot.php:1609
msgid "Create an account to access services and applications"
msgstr "Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚ для доступа ΠΊ слуТбам ΠΈ прилоТСниям"
-#: ../../boot.php:1628
+#: ../../boot.php:1633
msgid "Login/Email"
msgstr "ΠŸΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ / email"
-#: ../../boot.php:1629
+#: ../../boot.php:1634
msgid "Password"
msgstr "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ"
-#: ../../boot.php:1630
+#: ../../boot.php:1635
msgid "Remember me"
msgstr "Π—Π°ΠΏΠΎΠΌΠ½ΠΈΡ‚ΡŒ мСня"
-#: ../../boot.php:1633
+#: ../../boot.php:1638
msgid "Forgot your password?"
msgstr "Π—Π°Π±Ρ‹Π»ΠΈ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ ΠΈΠ»ΠΈ Π»ΠΎΠ³ΠΈΠ½?"
-#: ../../boot.php:1634 ../../Zotlabs/Module/Lostpass.php:91
+#: ../../boot.php:1639 ../../Zotlabs/Module/Lostpass.php:91
msgid "Password Reset"
msgstr "Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ ΠΏΠ°Ρ€ΠΎΠ»ΡŒ"
-#: ../../boot.php:2431
+#: ../../boot.php:2434
#, php-format
msgid "[$Projectname] Website SSL error for %s"
msgstr "[$Projectname] Ошибка SSL/TLS Π²Π΅Π±-сайта для %s"
-#: ../../boot.php:2436
+#: ../../boot.php:2439
msgid "Website SSL certificate is not valid. Please correct."
msgstr "SSL/TLS сСртификат Π²Π΅Π±-сайт нСдСйствитСлСн. Π˜ΡΠΏΡ€Π°Π²ΡŒΡ‚Π΅ это."
-#: ../../boot.php:2552
+#: ../../boot.php:2555
#, php-format
msgid "[$Projectname] Cron tasks not running on %s"
msgstr "[$Projectname] Задания Cron Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° %s"
-#: ../../boot.php:2557
+#: ../../boot.php:2560
msgid "Cron/Scheduled tasks not running."
msgstr "Задания Cron / ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊΠ° Π½Π΅ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹."
@@ -4061,9 +4034,9 @@ msgstr "ΠžΠ±Ρ‰ΠΈΠ΅"
#: ../../Zotlabs/Storage/Browser.php:276 ../../Zotlabs/Storage/Browser.php:390
#: ../../Zotlabs/Module/Cdav.php:1230 ../../Zotlabs/Module/Profiles.php:798
#: ../../Zotlabs/Module/New_channel.php:189 ../../Zotlabs/Module/Menu.php:181
-#: ../../Zotlabs/Module/Webpages.php:254 ../../Zotlabs/Module/Connedit.php:927
-#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:108
-#: ../../Zotlabs/Module/Cards.php:109 ../../Zotlabs/Module/Layouts.php:185
+#: ../../Zotlabs/Module/Webpages.php:254 ../../Zotlabs/Module/Connedit.php:938
+#: ../../Zotlabs/Module/Blocks.php:159 ../../Zotlabs/Module/Articles.php:116
+#: ../../Zotlabs/Module/Cards.php:113 ../../Zotlabs/Module/Layouts.php:185
#: ../../Zotlabs/Widget/Cdav.php:128 ../../Zotlabs/Widget/Cdav.php:165
msgid "Create"
msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ"
@@ -4072,7 +4045,7 @@ msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ"
msgid "Add Files"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹"
-#: ../../Zotlabs/Storage/Browser.php:280 ../../Zotlabs/Lib/ThreadItem.php:157
+#: ../../Zotlabs/Storage/Browser.php:280 ../../Zotlabs/Lib/ThreadItem.php:168
msgid "Admin Delete"
msgstr "Π£Π΄Π°Π»Π΅Π½ΠΎ администратором"
@@ -4081,7 +4054,7 @@ msgstr "Π£Π΄Π°Π»Π΅Π½ΠΎ администратором"
#: ../../Zotlabs/Module/Sharedwithme.php:104 ../../Zotlabs/Module/Chat.php:259
#: ../../Zotlabs/Module/Oauth2.php:118 ../../Zotlabs/Module/Oauth2.php:146
#: ../../Zotlabs/Module/Admin/Channels.php:159
-#: ../../Zotlabs/Module/Connedit.php:912 ../../Zotlabs/Module/Group.php:144
+#: ../../Zotlabs/Module/Connedit.php:923 ../../Zotlabs/Module/Group.php:154
#: ../../Zotlabs/Module/Wiki.php:218
#: ../../Zotlabs/Widget/Wiki_page_history.php:22
#: ../../Zotlabs/Lib/NativeWikiPage.php:561
@@ -4122,7 +4095,7 @@ msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ»"
#: ../../Zotlabs/Storage/Browser.php:392 ../../Zotlabs/Module/Photos.php:727
#: ../../Zotlabs/Module/Cover_photo.php:395
-#: ../../Zotlabs/Module/Embedphotos.php:158
+#: ../../Zotlabs/Module/Embedphotos.php:166
#: ../../Zotlabs/Module/Profile_photo.php:459
#: ../../Zotlabs/Widget/Portfolio.php:110 ../../Zotlabs/Widget/Cdav.php:133
#: ../../Zotlabs/Widget/Cdav.php:169 ../../Zotlabs/Widget/Album.php:97
@@ -4275,7 +4248,7 @@ msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ записи ΠΊΠΎΠ½
#: ../../Zotlabs/Module/Defperms.php:111
#: ../../Zotlabs/Module/Settings/Channel.php:266
-#: ../../extend/addon/hzaddons/twitter/twitter.php:775
+#: ../../extend/addon/hzaddons/twitter/twitter.php:605
#: ../../extend/addon/hzaddons/logrot/logrot.php:54
#: ../../extend/addon/hzaddons/openstreetmap/openstreetmap.php:185
#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:82
@@ -4296,13 +4269,41 @@ msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ\""
#: ../../Zotlabs/Module/Chat.php:102 ../../Zotlabs/Module/Oauth2.php:106
#: ../../Zotlabs/Module/Uexport.php:61 ../../Zotlabs/Module/Bookmarks.php:78
#: ../../Zotlabs/Module/Probe.php:18 ../../Zotlabs/Module/Tokens.php:99
-#: ../../Zotlabs/Module/Notes.php:55 ../../Zotlabs/Module/Webpages.php:48
-#: ../../Zotlabs/Module/Group.php:101 ../../Zotlabs/Module/Mood.php:134
+#: ../../Zotlabs/Module/Notes.php:56 ../../Zotlabs/Module/Webpages.php:48
+#: ../../Zotlabs/Module/Group.php:106 ../../Zotlabs/Module/Mood.php:134
#: ../../Zotlabs/Module/Lang.php:17 ../../Zotlabs/Module/Randprof.php:29
-#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Invite.php:110 ../../Zotlabs/Module/Articles.php:51
#: ../../Zotlabs/Module/Connect.php:104 ../../Zotlabs/Module/Pdledit.php:42
#: ../../Zotlabs/Module/Wiki.php:52 ../../Zotlabs/Module/Suggest.php:40
-#: ../../Zotlabs/Module/Cards.php:46
+#: ../../Zotlabs/Module/Cards.php:51
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:36
+#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:28
+#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:58
+#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:36
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:35
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:78
+#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:20
+#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:42
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:53
+#: ../../extend/addon/hzaddons/nsabait/Mod_Nsabait.php:20
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:36
+#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:146
+#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:50
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:33
+#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:21
+#: ../../extend/addon/hzaddons/planets/Mod_Planets.php:20
+#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../extend/addon/hzaddons/gnusoc/Mod_Gnusoc.php:22
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:34
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:35
+#: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:20
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:35
+#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:50
+#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:40
+#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:55
+#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:41
+#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:33
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:32
msgid "Not Installed"
msgstr "Π½Π΅ установлСно"
@@ -4310,11 +4311,11 @@ msgstr "Π½Π΅ установлСно"
msgid "Set custom default permissions for new connections"
msgstr "Настройка ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π½ΠΎΠ²Ρ‹Ρ… ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ "
-#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:856
+#: ../../Zotlabs/Module/Defperms.php:254 ../../Zotlabs/Module/Connedit.php:867
msgid "Connection Default Permissions"
msgstr "Π Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°"
-#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:857
+#: ../../Zotlabs/Module/Defperms.php:255 ../../Zotlabs/Module/Connedit.php:868
msgid "Apply these permissions automatically"
msgstr "ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ автоматичСски"
@@ -4324,15 +4325,15 @@ msgid ""
"If enabled, connection requests will be approved without your interaction"
msgstr "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, запросы ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Ρ‹ Π±Π΅Π· вашСго участия"
-#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:858
+#: ../../Zotlabs/Module/Defperms.php:256 ../../Zotlabs/Module/Connedit.php:869
msgid "Permission role"
msgstr "Роль Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:859
+#: ../../Zotlabs/Module/Defperms.php:257 ../../Zotlabs/Module/Connedit.php:870
msgid "Add permission role"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ€ΠΎΠ»ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:872
+#: ../../Zotlabs/Module/Defperms.php:261 ../../Zotlabs/Module/Connedit.php:883
msgid ""
"The permissions indicated on this page will be applied to all new "
"connections."
@@ -4343,17 +4344,17 @@ msgid "Automatic approval settings"
msgstr "Настройки автоматичСского одобрСния"
#: ../../Zotlabs/Module/Defperms.php:264 ../../Zotlabs/Module/Permcats.php:123
-#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Connedit.php:892
+#: ../../Zotlabs/Module/Tokens.php:183 ../../Zotlabs/Module/Connedit.php:903
msgid "inherited"
msgstr "наслСдуСтся"
#: ../../Zotlabs/Module/Defperms.php:266 ../../Zotlabs/Module/Permcats.php:121
-#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Connedit.php:897
+#: ../../Zotlabs/Module/Tokens.php:181 ../../Zotlabs/Module/Connedit.php:908
msgid "My Settings"
msgstr "Мои настройки"
#: ../../Zotlabs/Module/Defperms.php:269 ../../Zotlabs/Module/Permcats.php:126
-#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Connedit.php:899
+#: ../../Zotlabs/Module/Tokens.php:186 ../../Zotlabs/Module/Connedit.php:910
msgid "Individual Permissions"
msgstr "Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
@@ -4385,7 +4386,7 @@ msgid ""
"connections."
msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эту Ρ„ΠΎΡ€ΠΌΡƒ для создания ΠΏΡ€Π°Π²ΠΈΠ» Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π³Ρ€ΡƒΠΏΠΏ людСй ΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²."
-#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:350
+#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:371
msgid "Permission Categories"
msgstr "ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ"
@@ -4394,7 +4395,7 @@ msgid "Permission category name"
msgstr "НаимСнованиС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ"
#: ../../Zotlabs/Module/Permcats.php:127 ../../Zotlabs/Module/Tokens.php:187
-#: ../../Zotlabs/Module/Connedit.php:900
+#: ../../Zotlabs/Module/Connedit.php:911
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -4418,65 +4419,65 @@ msgstr "НС найдСно."
msgid "Invalid message"
msgstr "НСвСрноС сообщСниС"
-#: ../../Zotlabs/Module/Dreport.php:89
+#: ../../Zotlabs/Module/Dreport.php:90
msgid "no results"
msgstr "НичСго Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ."
-#: ../../Zotlabs/Module/Dreport.php:103
+#: ../../Zotlabs/Module/Dreport.php:104
msgid "channel sync processed"
msgstr "синхронизация ΠΊΠ°Π½Π°Π»Π° Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½Π°"
-#: ../../Zotlabs/Module/Dreport.php:107
+#: ../../Zotlabs/Module/Dreport.php:108
msgid "queued"
msgstr "Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ"
-#: ../../Zotlabs/Module/Dreport.php:111
+#: ../../Zotlabs/Module/Dreport.php:112
msgid "posted"
msgstr "ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ"
-#: ../../Zotlabs/Module/Dreport.php:115
+#: ../../Zotlabs/Module/Dreport.php:116
msgid "accepted for delivery"
msgstr "принято ΠΊ доставкС"
-#: ../../Zotlabs/Module/Dreport.php:119
+#: ../../Zotlabs/Module/Dreport.php:120
msgid "updated"
msgstr "ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΎ"
-#: ../../Zotlabs/Module/Dreport.php:122
+#: ../../Zotlabs/Module/Dreport.php:123
msgid "update ignored"
msgstr "ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ игнорируСтся"
-#: ../../Zotlabs/Module/Dreport.php:125
+#: ../../Zotlabs/Module/Dreport.php:126
msgid "permission denied"
msgstr "доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½"
-#: ../../Zotlabs/Module/Dreport.php:129
+#: ../../Zotlabs/Module/Dreport.php:130
msgid "recipient not found"
msgstr "ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»ΡŒ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½"
-#: ../../Zotlabs/Module/Dreport.php:132
+#: ../../Zotlabs/Module/Dreport.php:133
msgid "mail recalled"
msgstr "ΠΏΠΎΡ‡Ρ‚Π° ΠΎΡ‚ΠΎΠ·Π²Π°Π½Π°"
-#: ../../Zotlabs/Module/Dreport.php:135
+#: ../../Zotlabs/Module/Dreport.php:136
msgid "duplicate mail received"
msgstr "ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π΅Π΅ сообщСниС"
-#: ../../Zotlabs/Module/Dreport.php:138
+#: ../../Zotlabs/Module/Dreport.php:139
msgid "mail delivered"
msgstr "ΠΏΠΎΡ‡Ρ‚Π° доставлСн"
-#: ../../Zotlabs/Module/Dreport.php:158
+#: ../../Zotlabs/Module/Dreport.php:159
#, php-format
msgid "Delivery report for %1$s"
msgstr "ΠžΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ доставкС для %1$s"
-#: ../../Zotlabs/Module/Dreport.php:161 ../../Zotlabs/Widget/Wiki_pages.php:41
+#: ../../Zotlabs/Module/Dreport.php:162 ../../Zotlabs/Widget/Wiki_pages.php:41
#: ../../Zotlabs/Widget/Wiki_pages.php:98
msgid "Options"
msgstr "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹"
-#: ../../Zotlabs/Module/Dreport.php:162
+#: ../../Zotlabs/Module/Dreport.php:163
msgid "Redeliver"
msgstr "Π”ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ"
@@ -4484,29 +4485,29 @@ msgstr "Π”ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ"
msgid "No such group"
msgstr "НСт Ρ‚Π°ΠΊΠΎΠΉ Π³Ρ€ΡƒΠΏΠΏΡ‹"
-#: ../../Zotlabs/Module/Network.php:149
+#: ../../Zotlabs/Module/Network.php:156
msgid "No such channel"
msgstr "НСт Ρ‚Π°ΠΊΠΎΠ³ΠΎ ΠΊΠ°Π½Π°Π»Π°"
-#: ../../Zotlabs/Module/Network.php:164 ../../Zotlabs/Module/Channel.php:177
+#: ../../Zotlabs/Module/Network.php:171 ../../Zotlabs/Module/Channel.php:182
msgid "Search Results For:"
msgstr "Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска для:"
-#: ../../Zotlabs/Module/Network.php:194 ../../Zotlabs/Module/Display.php:80
-#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Channel.php:212
+#: ../../Zotlabs/Module/Network.php:201 ../../Zotlabs/Module/Display.php:80
+#: ../../Zotlabs/Module/Pubstream.php:94 ../../Zotlabs/Module/Channel.php:217
#: ../../Zotlabs/Module/Hq.php:134
msgid "Reset form"
msgstr "ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ"
-#: ../../Zotlabs/Module/Network.php:233
+#: ../../Zotlabs/Module/Network.php:240
msgid "Privacy group is empty"
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности пуста"
-#: ../../Zotlabs/Module/Network.php:243
+#: ../../Zotlabs/Module/Network.php:250
msgid "Privacy group: "
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности: "
-#: ../../Zotlabs/Module/Network.php:316
+#: ../../Zotlabs/Module/Network.php:323
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:29
msgid "Invalid channel."
msgstr "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π»."
@@ -4526,7 +4527,7 @@ msgid ""
"A verification token was sent to your email address [%s]. Enter that token "
"here to complete the account verification step. Please allow a few minutes "
"for delivery, and check your spam folder if you do not see the message."
-msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±Ρ‹Π» выслн Π½Π° ваш адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ [%s]. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот Ρ‚ΠΎΠΊΠ΅Π½ здСсь для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этапа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ доставки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ \"Π‘ΠΏΠ°ΠΌ\" Ссли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ письма."
+msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ваш адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ [%s]. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот Ρ‚ΠΎΠΊΠ΅Π½ здСсь для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этапа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ доставки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ \"Π‘ΠΏΠ°ΠΌ\" Ссли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ письма."
#: ../../Zotlabs/Module/Email_validation.php:38
msgid "Resend Email"
@@ -4552,36 +4553,36 @@ msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΎΠ±Ρ‰ΠΈΠΉ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
msgid "network"
msgstr "ΡΠ΅Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Item.php:196
+#: ../../Zotlabs/Module/Item.php:341
msgid "Unable to locate original post."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ."
-#: ../../Zotlabs/Module/Item.php:483
+#: ../../Zotlabs/Module/Item.php:628
msgid "Empty post discarded."
msgstr "ΠŸΡƒΡΡ‚Π°Ρ публикация ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Π°."
-#: ../../Zotlabs/Module/Item.php:892
+#: ../../Zotlabs/Module/Item.php:1037
msgid "Duplicate post suppressed."
msgstr "ПодавлСна Π΄ΡƒΠ±Π»ΠΈΡ€ΡƒΡŽΡ‰Π°ΡΡΡ публикация."
-#: ../../Zotlabs/Module/Item.php:1037
+#: ../../Zotlabs/Module/Item.php:1182
msgid "System error. Post not saved."
msgstr "БистСмная ошибка. ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π½Π΅ сохранСна."
-#: ../../Zotlabs/Module/Item.php:1073
+#: ../../Zotlabs/Module/Item.php:1218
msgid "Your comment is awaiting approval."
msgstr "Π’Π°Ρˆ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ ΠΎΠΆΠΈΠ΄Π°Π΅Ρ‚ одобрСния."
-#: ../../Zotlabs/Module/Item.php:1190
+#: ../../Zotlabs/Module/Item.php:1335
msgid "Unable to obtain post information from database."
msgstr "НСвозмоТно ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈΠ· Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…"
-#: ../../Zotlabs/Module/Item.php:1197
+#: ../../Zotlabs/Module/Item.php:1342
#, php-format
msgid "You have reached your limit of %1$.0f top level posts."
msgstr "Π’Ρ‹ достигли вашСго ограничСния Π² %1$.0f ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ высокого уровня."
-#: ../../Zotlabs/Module/Item.php:1204
+#: ../../Zotlabs/Module/Item.php:1349
#, php-format
msgid "You have reached your limit of %1$.0f webpages."
msgstr "Π’Ρ‹ достигли вашСго ограничСния Π² %1$.0f страниц."
@@ -4597,16 +4598,16 @@ msgstr "НСкоторыС прСдлоТСния ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ
msgid "Public access denied."
msgstr "ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ доступ Π·Π°ΠΏΡ€Π΅Ρ‰Π΅Π½."
-#: ../../Zotlabs/Module/Display.php:374 ../../Zotlabs/Module/Channel.php:468
+#: ../../Zotlabs/Module/Display.php:374 ../../Zotlabs/Module/Channel.php:476
msgid ""
"You must enable javascript for your browser to be able to view this content."
msgstr "Для просмотра этого содСрТимого Π² вашСм Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½ JavaScript"
-#: ../../Zotlabs/Module/Display.php:393
+#: ../../Zotlabs/Module/Display.php:392
msgid "Article"
msgstr "Π‘Ρ‚Π°Ρ‚ΡŒΡ"
-#: ../../Zotlabs/Module/Display.php:445
+#: ../../Zotlabs/Module/Display.php:444
msgid "Item has been removed."
msgstr "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Ρ‘Π½."
@@ -4614,35 +4615,35 @@ msgstr "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Ρ‘Π½."
msgid "sent you a private message"
msgstr "ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ» Π²Π°ΠΌ Π»ΠΈΡ‡Π½ΠΎΠ΅ сообщСниС"
-#: ../../Zotlabs/Module/Ping.php:392
+#: ../../Zotlabs/Module/Ping.php:394
msgid "added your channel"
msgstr "добавил ваш канал"
-#: ../../Zotlabs/Module/Ping.php:417
+#: ../../Zotlabs/Module/Ping.php:419
msgid "requires approval"
msgstr "ВрСбуСтся ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅"
-#: ../../Zotlabs/Module/Ping.php:427
+#: ../../Zotlabs/Module/Ping.php:429
msgid "g A l F d"
msgstr "g A l F d"
-#: ../../Zotlabs/Module/Ping.php:445
+#: ../../Zotlabs/Module/Ping.php:447
msgid "[today]"
msgstr "[сСгодня]"
-#: ../../Zotlabs/Module/Ping.php:455
+#: ../../Zotlabs/Module/Ping.php:457
msgid "posted an event"
msgstr "событиС ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ"
-#: ../../Zotlabs/Module/Ping.php:489
+#: ../../Zotlabs/Module/Ping.php:491
msgid "shared a file with you"
msgstr "с Π²Π°ΠΌΠΈ подСлились Ρ„Π°ΠΉΠ»ΠΎΠΌ"
-#: ../../Zotlabs/Module/Ping.php:671
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Private forum"
msgstr "Частный Ρ„ΠΎΡ€ΡƒΠΌ"
-#: ../../Zotlabs/Module/Ping.php:671
+#: ../../Zotlabs/Module/Ping.php:673
msgid "Public forum"
msgstr "ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ Ρ„ΠΎΡ€ΡƒΠΌ"
@@ -4909,49 +4910,49 @@ msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ всё"
msgid "Sorry! Editing of recurrent events is not yet implemented."
msgstr "ΠŸΡ€ΠΎΡΡ‚ΠΈΡ‚Π΅, Π½ΠΎ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ событий ΠΏΠΎΠΊΠ° Π½Π΅ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ."
-#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:913
+#: ../../Zotlabs/Module/Cdav.php:1216 ../../Zotlabs/Module/Connedit.php:924
msgid "Organisation"
msgstr "ΠžΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΡ"
-#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:914
+#: ../../Zotlabs/Module/Cdav.php:1217 ../../Zotlabs/Module/Connedit.php:925
msgid "Title"
msgstr "НаимСнованиС"
#: ../../Zotlabs/Module/Cdav.php:1218 ../../Zotlabs/Module/Profiles.php:786
-#: ../../Zotlabs/Module/Connedit.php:915
+#: ../../Zotlabs/Module/Connedit.php:926
msgid "Phone"
msgstr "Π’Π΅Π»Π΅Ρ„ΠΎΠ½"
#: ../../Zotlabs/Module/Cdav.php:1220 ../../Zotlabs/Module/Profiles.php:788
-#: ../../Zotlabs/Module/Connedit.php:917
+#: ../../Zotlabs/Module/Connedit.php:928
msgid "Instant messenger"
msgstr "ΠœΠ΅ΡΡΠ΅Π½Π΄ΠΆΠ΅Ρ€"
#: ../../Zotlabs/Module/Cdav.php:1221 ../../Zotlabs/Module/Profiles.php:789
-#: ../../Zotlabs/Module/Connedit.php:918
+#: ../../Zotlabs/Module/Connedit.php:929
msgid "Website"
msgstr "Π’Π΅Π±-сайт"
#: ../../Zotlabs/Module/Cdav.php:1222 ../../Zotlabs/Module/Profiles.php:502
#: ../../Zotlabs/Module/Profiles.php:790 ../../Zotlabs/Module/Locs.php:118
#: ../../Zotlabs/Module/Admin/Channels.php:160
-#: ../../Zotlabs/Module/Connedit.php:919
+#: ../../Zotlabs/Module/Connedit.php:930
msgid "Address"
msgstr "АдрСс"
#: ../../Zotlabs/Module/Cdav.php:1223 ../../Zotlabs/Module/Profiles.php:791
-#: ../../Zotlabs/Module/Connedit.php:920
+#: ../../Zotlabs/Module/Connedit.php:931
msgid "Note"
msgstr "Π—Π°ΠΌΠ΅Ρ‚ΠΊΠ°"
#: ../../Zotlabs/Module/Cdav.php:1228 ../../Zotlabs/Module/Profiles.php:796
-#: ../../Zotlabs/Module/Connedit.php:925
+#: ../../Zotlabs/Module/Connedit.php:936
#: ../../extend/addon/hzaddons/jappixmini/jappixmini.php:368
msgid "Add Contact"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚"
#: ../../Zotlabs/Module/Cdav.php:1229 ../../Zotlabs/Module/Profiles.php:797
-#: ../../Zotlabs/Module/Connedit.php:926
+#: ../../Zotlabs/Module/Connedit.php:937
msgid "Add Field"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅"
@@ -4959,36 +4960,36 @@ msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎΠ»Π΅"
#: ../../Zotlabs/Module/Oauth.php:53 ../../Zotlabs/Module/Oauth.php:137
#: ../../Zotlabs/Module/Oauth2.php:58 ../../Zotlabs/Module/Oauth2.php:144
#: ../../Zotlabs/Module/Admin/Addons.php:453
-#: ../../Zotlabs/Module/Connedit.php:928 ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Lib/Apps.php:534
msgid "Update"
msgstr "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:931
+#: ../../Zotlabs/Module/Cdav.php:1234 ../../Zotlabs/Module/Connedit.php:942
msgid "P.O. Box"
msgstr "абонСнтский ящик"
-#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:932
+#: ../../Zotlabs/Module/Cdav.php:1235 ../../Zotlabs/Module/Connedit.php:943
msgid "Additional"
msgstr "Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ"
-#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:933
+#: ../../Zotlabs/Module/Cdav.php:1236 ../../Zotlabs/Module/Connedit.php:944
msgid "Street"
msgstr "Π£Π»ΠΈΡ†Π°"
-#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:934
+#: ../../Zotlabs/Module/Cdav.php:1237 ../../Zotlabs/Module/Connedit.php:945
msgid "Locality"
msgstr "НасСлённый ΠΏΡƒΠ½ΠΊΡ‚"
-#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:935
+#: ../../Zotlabs/Module/Cdav.php:1238 ../../Zotlabs/Module/Connedit.php:946
msgid "Region"
msgstr "Π Π΅Π³ΠΈΠΎΠ½"
-#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:936
+#: ../../Zotlabs/Module/Cdav.php:1239 ../../Zotlabs/Module/Connedit.php:947
msgid "ZIP Code"
msgstr "ИндСкс"
#: ../../Zotlabs/Module/Cdav.php:1240 ../../Zotlabs/Module/Profiles.php:757
-#: ../../Zotlabs/Module/Connedit.php:937
+#: ../../Zotlabs/Module/Connedit.php:948
msgid "Country"
msgstr "Π‘Ρ‚Ρ€Π°Π½Π°"
@@ -5020,6 +5021,15 @@ msgstr "vCard"
msgid "You must be logged in to see this page."
msgstr "Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эту страницу."
+#: ../../Zotlabs/Module/Share.php:103 ../../Zotlabs/Lib/Activity.php:1473
+#, php-format
+msgid "&#x1f501; Repeated %1$s's %2$s"
+msgstr "&#x1f501; ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» %1$s %2$s"
+
+#: ../../Zotlabs/Module/Share.php:119
+msgid "Post repeated"
+msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ повторяСтся"
+
#: ../../Zotlabs/Module/Notify.php:61 ../../Zotlabs/Module/Notifications.php:55
msgid "No more system notifications."
msgstr "НСт Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ систСмы."
@@ -5542,18 +5552,18 @@ msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ"
msgid "Show Oldest First"
msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ старыС ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ"
-#: ../../Zotlabs/Module/Photos.php:826 ../../Zotlabs/Module/Photos.php:1365
-#: ../../Zotlabs/Module/Embedphotos.php:140
+#: ../../Zotlabs/Module/Photos.php:826 ../../Zotlabs/Module/Photos.php:1374
+#: ../../Zotlabs/Module/Embedphotos.php:148
#: ../../Zotlabs/Widget/Portfolio.php:87 ../../Zotlabs/Widget/Album.php:78
msgid "View Photo"
msgstr "ΠŸΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ"
-#: ../../Zotlabs/Module/Photos.php:857 ../../Zotlabs/Module/Embedphotos.php:156
+#: ../../Zotlabs/Module/Photos.php:857 ../../Zotlabs/Module/Embedphotos.php:164
#: ../../Zotlabs/Widget/Portfolio.php:108 ../../Zotlabs/Widget/Album.php:95
msgid "Edit Album"
msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π€ΠΎΡ‚ΠΎΠ°Π»ΡŒΠ±ΠΎΠΌ"
-#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1396
+#: ../../Zotlabs/Module/Photos.php:859 ../../Zotlabs/Module/Photos.php:1405
msgid "Add Photos"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ"
@@ -5623,42 +5633,42 @@ msgstr "ΠŸΡ€ΠΈΠΌΠ΅Ρ€: @bob, @Barbara_Jensen, @jim@example.com"
msgid "Flag as adult in album view"
msgstr "ΠŸΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ альбом \"для взрослых\""
-#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:292
+#: ../../Zotlabs/Module/Photos.php:1115 ../../Zotlabs/Lib/ThreadItem.php:303
msgid "I like this (toggle)"
msgstr "ΠΌΠ½Π΅ это нравится (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅)"
-#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:293
+#: ../../Zotlabs/Module/Photos.php:1116 ../../Zotlabs/Lib/ThreadItem.php:304
msgid "I don't like this (toggle)"
msgstr "ΠΌΠ½Π΅ это Π½Π΅ нравится (ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅)"
-#: ../../Zotlabs/Module/Photos.php:1134 ../../Zotlabs/Module/Photos.php:1252
-#: ../../Zotlabs/Lib/ThreadItem.php:770
+#: ../../Zotlabs/Module/Photos.php:1135 ../../Zotlabs/Module/Photos.php:1254
+#: ../../Zotlabs/Lib/ThreadItem.php:788
msgid "This is you"
msgstr "Π­Ρ‚ΠΎ Π²Ρ‹"
-#: ../../Zotlabs/Module/Photos.php:1171 ../../Zotlabs/Module/Photos.php:1183
-#: ../../Zotlabs/Lib/ThreadItem.php:217 ../../Zotlabs/Lib/ThreadItem.php:229
+#: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Photos.php:1185
+#: ../../Zotlabs/Lib/ThreadItem.php:228 ../../Zotlabs/Lib/ThreadItem.php:240
msgid "View all"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ всС"
-#: ../../Zotlabs/Module/Photos.php:1280
+#: ../../Zotlabs/Module/Photos.php:1288
msgid "Photo Tools"
msgstr "Π€ΠΎΡ‚ΠΎ-Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹"
-#: ../../Zotlabs/Module/Photos.php:1289
+#: ../../Zotlabs/Module/Photos.php:1297
msgid "In This Photo:"
msgstr "На этой Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ:"
-#: ../../Zotlabs/Module/Photos.php:1294
+#: ../../Zotlabs/Module/Photos.php:1302
msgid "Map"
msgstr "ΠšΠ°Ρ€Ρ‚Π°"
-#: ../../Zotlabs/Module/Photos.php:1302 ../../Zotlabs/Lib/ThreadItem.php:435
+#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:453
msgctxt "noun"
msgid "Likes"
msgstr "Нравится"
-#: ../../Zotlabs/Module/Photos.php:1303 ../../Zotlabs/Lib/ThreadItem.php:436
+#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:454
msgctxt "noun"
msgid "Dislikes"
msgstr "НС нравится"
@@ -5815,7 +5825,7 @@ msgid "Name of application"
msgstr "НазваниС прилоТСния"
#: ../../Zotlabs/Module/Oauth.php:114 ../../Zotlabs/Module/Oauth.php:140
-#: ../../extend/addon/hzaddons/twitter/twitter.php:784
+#: ../../extend/addon/hzaddons/twitter/twitter.php:614
#: ../../extend/addon/hzaddons/statusnet/statusnet.php:596
msgid "Consumer Key"
msgstr "ΠšΠ»ΡŽΡ‡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°"
@@ -5827,7 +5837,7 @@ msgstr "Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Π½ автоматичСскиС - ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚Π΅
#: ../../Zotlabs/Module/Oauth.php:115 ../../Zotlabs/Module/Oauth.php:141
#: ../../Zotlabs/Module/Oauth2.php:119 ../../Zotlabs/Module/Oauth2.php:147
-#: ../../extend/addon/hzaddons/twitter/twitter.php:785
+#: ../../extend/addon/hzaddons/twitter/twitter.php:615
#: ../../extend/addon/hzaddons/statusnet/statusnet.php:595
msgid "Consumer Secret"
msgstr "Код ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°"
@@ -6025,7 +6035,7 @@ msgid "The unmoderated public stream of this hub"
msgstr "НСмодСрируСмый ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ с этого Ρ…Π°Π±Π°"
#: ../../Zotlabs/Module/Pubstream.php:109
-#: ../../Zotlabs/Widget/Notifications.php:142 ../../Zotlabs/Lib/Apps.php:352
+#: ../../Zotlabs/Widget/Notifications.php:142 ../../Zotlabs/Lib/Apps.php:373
msgid "Public Stream"
msgstr "ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ"
@@ -6319,21 +6329,21 @@ msgid ""
"check your email for further instructions."
msgstr "Π­Ρ‚ΠΎΡ‚ сайт Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ адрСса элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹. ПослС заполнСния этой Ρ„ΠΎΡ€ΠΌΡ‹, поТалуйста, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ваш ΠΏΠΎΡ‡Ρ‚ΠΎΠ²Ρ‹ΠΉ ящик для Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… инструкций."
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of Pinned Navbar Apps"
msgstr "Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
-#: ../../Zotlabs/Module/Apporder.php:44
+#: ../../Zotlabs/Module/Apporder.php:47
msgid "Change Order of App Tray Apps"
msgstr "Π˜Π·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ порядок ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ Π² Π»ΠΎΡ‚ΠΊΠ΅"
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid ""
"Use arrows to move the corresponding app left (top) or right (bottom) in the "
"navbar"
msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стрСлки для пСрСмСщСния прилоТСния Π²Π»Π΅Π²ΠΎ (Π²Π²Π΅Ρ€Ρ…) ΠΈΠ»ΠΈ Π²ΠΏΡ€Π°Π²ΠΎ (Π²Π½ΠΈΠ·) Π² ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
-#: ../../Zotlabs/Module/Apporder.php:45
+#: ../../Zotlabs/Module/Apporder.php:48
msgid "Use arrows to move the corresponding app up or down in the app tray"
msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стрСлки для пСрСмСщСния прилоТСния Π²Π²Π΅Ρ€Ρ… ΠΈΠ»ΠΈ Π²Π½ΠΈΠ· Π² Π»ΠΎΡ‚ΠΊΠ΅"
@@ -6341,7 +6351,7 @@ msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ стрСлки для пСрСмСщСния ΠΏΡ€
msgid "Documentation Search"
msgstr "Поиск Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ"
-#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:145
+#: ../../Zotlabs/Module/Help.php:81 ../../Zotlabs/Module/Group.php:155
msgid "Members"
msgstr "Участники"
@@ -6475,7 +6485,7 @@ msgstr "АвтоматичСский ΠΈΠΌΠΏΠΎΡ€Ρ‚ ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚Π° ΠΈΠ· Π΄Ρ€ΡƒΠ³
msgid "*"
msgstr ""
-#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:344
+#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:365
msgid "Channel Sources"
msgstr "Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ ΠΊΠ°Π½Π°Π»Π°"
@@ -6870,39 +6880,47 @@ msgstr "Настройки Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ"
msgid "Profiles Settings"
msgstr "Настройки ΠΏΡ€ΠΎΡ„ΠΈΠ»Π΅ΠΉ"
-#: ../../Zotlabs/Module/Settings/Featured.php:23
+#: ../../Zotlabs/Module/Settings/Featured.php:27
msgid "Affinity Slider settings updated."
msgstr "ΠžΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹ настройки слайдСра cходства."
-#: ../../Zotlabs/Module/Settings/Featured.php:38
+#: ../../Zotlabs/Module/Settings/Featured.php:42
msgid "No feature settings configured"
msgstr "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π½Π΅ настроСны"
-#: ../../Zotlabs/Module/Settings/Featured.php:45
+#: ../../Zotlabs/Module/Settings/Featured.php:49
msgid "Default maximum affinity level"
msgstr "ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сходства ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ."
-#: ../../Zotlabs/Module/Settings/Featured.php:45
+#: ../../Zotlabs/Module/Settings/Featured.php:49
msgid "0-99 default 99"
msgstr "0-99 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 99)"
-#: ../../Zotlabs/Module/Settings/Featured.php:50
+#: ../../Zotlabs/Module/Settings/Featured.php:54
msgid "Default minimum affinity level"
msgstr "ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сходства ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ."
-#: ../../Zotlabs/Module/Settings/Featured.php:50
+#: ../../Zotlabs/Module/Settings/Featured.php:54
msgid "0-99 - default 0"
msgstr "0-99 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0)"
-#: ../../Zotlabs/Module/Settings/Featured.php:54
+#: ../../Zotlabs/Module/Settings/Featured.php:58
+msgid "Always reset on new page visit."
+msgstr "ВсСгда ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ посСщСнии Π½ΠΎΠ²ΠΎΠΉ страницы."
+
+#: ../../Zotlabs/Module/Settings/Featured.php:58
+msgid "default: yes"
+msgstr "ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: Π΄Π°"
+
+#: ../../Zotlabs/Module/Settings/Featured.php:62
msgid "Affinity Slider Settings"
msgstr "Настройки слайдСра сходства"
-#: ../../Zotlabs/Module/Settings/Featured.php:67
+#: ../../Zotlabs/Module/Settings/Featured.php:75
msgid "Addon Settings"
msgstr "Настройки Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ"
-#: ../../Zotlabs/Module/Settings/Featured.php:68
+#: ../../Zotlabs/Module/Settings/Featured.php:76
msgid "Please save/submit changes to any panel before opening another."
msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° сохранитС / ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ."
@@ -7395,7 +7413,7 @@ msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π»ΠΎΠΊ"
msgid "No service class restrictions found."
msgstr "ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ класса обслуТиваниС Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ."
-#: ../../Zotlabs/Module/Channel.php:160
+#: ../../Zotlabs/Module/Channel.php:165
msgid "Insufficient permissions. Request redirected to profile page."
msgstr "НСдостаточно ΠΏΡ€Π°Π². Запрос ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° страницу профиля."
@@ -7473,75 +7491,75 @@ msgstr "НСт Π½Π° мСстС"
msgid "Online"
msgstr "Π’ сСти"
-#: ../../Zotlabs/Module/Like.php:54
+#: ../../Zotlabs/Module/Like.php:56
msgid "Like/Dislike"
msgstr "Нравится / Π½Π΅ нравится"
-#: ../../Zotlabs/Module/Like.php:59
+#: ../../Zotlabs/Module/Like.php:61
msgid "This action is restricted to members."
msgstr "Π­Ρ‚ΠΎ дСйствиС доступно Ρ‚ΠΎΠ»ΡŒΠΊΠΎ участникам."
-#: ../../Zotlabs/Module/Like.php:60
+#: ../../Zotlabs/Module/Like.php:62
msgid ""
"Please <a href=\"rmagic\">login with your $Projectname ID</a> or <a href="
"\"register\">register as a new $Projectname member</a> to continue."
msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, для продолТСния <a href=\"rmagic\"> Π²ΠΎΠΉΠ΄ΠΈΡ‚Π΅ с вашим $Projectname ID</a> ΠΈΠ»ΠΈ <a href=\"register\">Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΡƒΠΉΡ‚Π΅ΡΡŒ ΠΊΠ°ΠΊ Π½ΠΎΠ²Ρ‹ΠΉ участник $Projectname</a>."
-#: ../../Zotlabs/Module/Like.php:109 ../../Zotlabs/Module/Like.php:135
-#: ../../Zotlabs/Module/Like.php:173
+#: ../../Zotlabs/Module/Like.php:111 ../../Zotlabs/Module/Like.php:137
+#: ../../Zotlabs/Module/Like.php:175
msgid "Invalid request."
msgstr "НСвСрный запрос."
-#: ../../Zotlabs/Module/Like.php:150
+#: ../../Zotlabs/Module/Like.php:152
msgid "thing"
msgstr "ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚"
-#: ../../Zotlabs/Module/Like.php:196
+#: ../../Zotlabs/Module/Like.php:198
msgid "Channel unavailable."
msgstr "Канал нСдоступСн."
-#: ../../Zotlabs/Module/Like.php:244
+#: ../../Zotlabs/Module/Like.php:246
msgid "Previous action reversed."
msgstr "ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π΅ дСйствиС ΠΎΡ‚ΠΌΠ΅Π½Π΅Π½ΠΎ."
-#: ../../Zotlabs/Module/Like.php:445
+#: ../../Zotlabs/Module/Like.php:451
#, php-format
msgid "%1$s agrees with %2$s's %3$s"
msgstr "%1$s согласСн с %2$s %3$s"
-#: ../../Zotlabs/Module/Like.php:447
+#: ../../Zotlabs/Module/Like.php:453
#, php-format
msgid "%1$s doesn't agree with %2$s's %3$s"
msgstr "%1$s нС согласСн с %2$s %3$s"
-#: ../../Zotlabs/Module/Like.php:449
+#: ../../Zotlabs/Module/Like.php:455
#, php-format
msgid "%1$s abstains from a decision on %2$s's %3$s"
msgstr "%1$s воздСрТиваСтся ΠΎΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎ %2$s%3$s"
-#: ../../Zotlabs/Module/Like.php:451
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2120
+#: ../../Zotlabs/Module/Like.php:457
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2137
#, php-format
msgid "%1$s is attending %2$s's %3$s"
msgstr "%1$s посСщаСт %2$s%3$s"
-#: ../../Zotlabs/Module/Like.php:453
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2122
+#: ../../Zotlabs/Module/Like.php:459
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2139
#, php-format
msgid "%1$s is not attending %2$s's %3$s"
msgstr "%1$s Π½Π΅ посСщаСт %2$s%3$s"
-#: ../../Zotlabs/Module/Like.php:455
-#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2124
+#: ../../Zotlabs/Module/Like.php:461
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2141
#, php-format
msgid "%1$s may attend %2$s's %3$s"
msgstr "%1$s ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ %2$s%3$s"
-#: ../../Zotlabs/Module/Like.php:566
+#: ../../Zotlabs/Module/Like.php:572
msgid "Action completed."
msgstr "ДСйствиС Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ."
-#: ../../Zotlabs/Module/Like.php:567
+#: ../../Zotlabs/Module/Like.php:573
msgid "Thank you."
msgstr "Бпасибо."
@@ -7800,7 +7818,7 @@ msgid ""
msgstr "Π’Π°ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ понадобится ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» \"install/schema_xxx.sql\" Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…."
#: ../../Zotlabs/Module/Setup.php:198 ../../Zotlabs/Module/Setup.php:262
-#: ../../Zotlabs/Module/Setup.php:756
+#: ../../Zotlabs/Module/Setup.php:761
msgid "Please see the file \"install/INSTALL.txt\"."
msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚Π΅ΡΡŒ ΠΊ Ρ„Π°ΠΉΠ»Ρƒ \"install/INSTALL.txt\"."
@@ -7944,229 +7962,235 @@ msgstr "Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для функционирования Π΄ΠΎ
msgid "PHP register_argc_argv"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:446
+#: ../../Zotlabs/Module/Setup.php:448
+msgid ""
+"This is not sufficient to upload larger images or files. You should be able "
+"to upload at least 4 MB at once."
+msgstr "Π­Ρ‚ΠΎΠ³ΠΎ нСдостаточно для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 4 Мб Π·Π° Ρ€Π°Π·."
+
+#: ../../Zotlabs/Module/Setup.php:450
#, php-format
msgid ""
"Your max allowed total upload size is set to %s. Maximum size of one file to "
"upload is set to %s. You are allowed to upload up to %d files at once."
msgstr "Максимально Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ установлСн Π² %s. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ установлСн Π² %s. Π’Π°ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄ΠΎ %d Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΡ‘ΠΌ."
-#: ../../Zotlabs/Module/Setup.php:451
+#: ../../Zotlabs/Module/Setup.php:456
msgid "You can adjust these settings in the server php.ini file."
msgstr "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти настройки Π² Ρ„Π°ΠΉΠ»Π΅ php.ini Π½Π° сСрвСрС."
-#: ../../Zotlabs/Module/Setup.php:453
+#: ../../Zotlabs/Module/Setup.php:458
msgid "PHP upload limits"
msgstr "ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² PHP"
-#: ../../Zotlabs/Module/Setup.php:476
+#: ../../Zotlabs/Module/Setup.php:481
msgid ""
"Error: the \"openssl_pkey_new\" function on this system is not able to "
"generate encryption keys"
msgstr "Ошибка: функция \"openssl_pkey_new\" Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ»ΡŽΡ‡ΠΈ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Setup.php:477
+#: ../../Zotlabs/Module/Setup.php:482
msgid ""
"If running under Windows, please see \"http://www.php.net/manual/en/openssl."
"installation.php\"."
msgstr "Если Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ΄ Windows, см. \"http://www.php.net/manual/en/openssl.installation.php\"."
-#: ../../Zotlabs/Module/Setup.php:480
+#: ../../Zotlabs/Module/Setup.php:485
msgid "Generate encryption keys"
msgstr "ГСнСрация ΠΊΠ»ΡŽΡ‡Π΅ΠΉ ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Setup.php:497
+#: ../../Zotlabs/Module/Setup.php:502
msgid "libCurl PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP libcURL"
-#: ../../Zotlabs/Module/Setup.php:498
+#: ../../Zotlabs/Module/Setup.php:503
msgid "GD graphics PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π³Ρ€Π°Ρ„ΠΈΠΊΠΈ PHP GD"
-#: ../../Zotlabs/Module/Setup.php:499
+#: ../../Zotlabs/Module/Setup.php:504
msgid "OpenSSL PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP OpenSSL"
-#: ../../Zotlabs/Module/Setup.php:500
+#: ../../Zotlabs/Module/Setup.php:505
msgid "PDO database PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… PHP PDO"
-#: ../../Zotlabs/Module/Setup.php:501
+#: ../../Zotlabs/Module/Setup.php:506
msgid "mb_string PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP mb_string"
-#: ../../Zotlabs/Module/Setup.php:502
+#: ../../Zotlabs/Module/Setup.php:507
msgid "xml PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP xml"
-#: ../../Zotlabs/Module/Setup.php:503
+#: ../../Zotlabs/Module/Setup.php:508
msgid "zip PHP module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP zip"
-#: ../../Zotlabs/Module/Setup.php:507 ../../Zotlabs/Module/Setup.php:509
+#: ../../Zotlabs/Module/Setup.php:512 ../../Zotlabs/Module/Setup.php:514
msgid "Apache mod_rewrite module"
msgstr "ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Apache mod_rewrite"
-#: ../../Zotlabs/Module/Setup.php:507
+#: ../../Zotlabs/Module/Setup.php:512
msgid ""
"Error: Apache webserver mod-rewrite module is required but not installed."
msgstr "Ошибка: Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ mod_rewrite Π²Π΅Π±-сСрвСра Apache Π½Π΅ установлСн."
-#: ../../Zotlabs/Module/Setup.php:513 ../../Zotlabs/Module/Setup.php:516
+#: ../../Zotlabs/Module/Setup.php:518 ../../Zotlabs/Module/Setup.php:521
msgid "exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:513
+#: ../../Zotlabs/Module/Setup.php:518
msgid ""
"Error: exec is required but is either not installed or has been disabled in "
"php.ini"
msgstr "Ошибка: exec трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн ΠΈΠ»ΠΈ Π±Ρ‹Π» ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² php.ini"
-#: ../../Zotlabs/Module/Setup.php:519 ../../Zotlabs/Module/Setup.php:522
+#: ../../Zotlabs/Module/Setup.php:524 ../../Zotlabs/Module/Setup.php:527
msgid "shell_exec"
msgstr ""
-#: ../../Zotlabs/Module/Setup.php:519
+#: ../../Zotlabs/Module/Setup.php:524
msgid ""
"Error: shell_exec is required but is either not installed or has been "
"disabled in php.ini"
msgstr "Ошибка: shell_exec трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн ΠΈΠ»ΠΈ Π±Ρ‹Π» ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½ Π² php.ini"
-#: ../../Zotlabs/Module/Setup.php:527
+#: ../../Zotlabs/Module/Setup.php:532
msgid "Error: libCURL PHP module required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP libсURL трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:531
+#: ../../Zotlabs/Module/Setup.php:536
msgid ""
"Error: GD PHP module with JPEG support or ImageMagick graphics library "
"required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP GD с ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ JPEG ΠΈΠ»ΠΈ графичСская Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° ImageMagick трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСна"
-#: ../../Zotlabs/Module/Setup.php:535
+#: ../../Zotlabs/Module/Setup.php:540
msgid "Error: openssl PHP module required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP OpenSSL трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:541
+#: ../../Zotlabs/Module/Setup.php:546
msgid ""
"Error: PDO database PHP module missing a driver for either mysql or pgsql."
msgstr "Ошибка: отсутствуСт Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ MySQL ΠΈΠ»ΠΈ PgSQL Π² ΠΌΠΎΠ΄ΡƒΠ»Π΅ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… PHP PDO"
-#: ../../Zotlabs/Module/Setup.php:546
+#: ../../Zotlabs/Module/Setup.php:551
msgid "Error: PDO database PHP module required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π±Π°Π· Π΄Π°Π½Π½Ρ‹Ρ… PHP PDO трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:550
+#: ../../Zotlabs/Module/Setup.php:555
msgid "Error: mb_string PHP module required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP mb_string трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:554
+#: ../../Zotlabs/Module/Setup.php:559
msgid "Error: xml PHP module required for DAV but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP xml трСбуСтся для DAV, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:558
+#: ../../Zotlabs/Module/Setup.php:563
msgid "Error: zip PHP module required but not installed."
msgstr "Ошибка: ΠΌΠΎΠ΄ΡƒΠ»ΡŒ PHP zip трСбуСтся, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π΅ установлСн"
-#: ../../Zotlabs/Module/Setup.php:577 ../../Zotlabs/Module/Setup.php:586
+#: ../../Zotlabs/Module/Setup.php:582 ../../Zotlabs/Module/Setup.php:591
msgid ".htconfig.php is writable"
msgstr ".htconfig.php доступСн для записи"
-#: ../../Zotlabs/Module/Setup.php:582
+#: ../../Zotlabs/Module/Setup.php:587
msgid ""
"The web installer needs to be able to create a file called \".htconfig.php\" "
"in the top folder of your web server and it is unable to do so."
msgstr "Π˜Π½ΡΡ‚Π°Π»Π»ΡΡ‚ΠΎΡ€ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ возмоТности ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» с ΠΈΠΌΠ΅Π½Π΅ΠΌ \".htconfig.php\" Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ вашСго Π²Π΅Π±-сСрвСра Π½ΠΎ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ этого ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ."
-#: ../../Zotlabs/Module/Setup.php:583
+#: ../../Zotlabs/Module/Setup.php:588
msgid ""
"This is most often a permission setting, as the web server may not be able "
"to write files in your folder - even if you can."
msgstr "Π’ Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ случаСв это ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€Π°Π² доступа. Π’Π΅Π±-сСрвСр ΠΌΠΎΠΆΠ΅Ρ‚ Π½Π΅ ΠΈΠΌΠ΅Ρ‚ΡŒ возмоТности Π·Π°ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ»Ρ‹ Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π΄Π°ΠΆΠ΅ Ссли Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ это Π΄Π΅Π»Π°Ρ‚ΡŒ."
-#: ../../Zotlabs/Module/Setup.php:584
+#: ../../Zotlabs/Module/Setup.php:589
msgid "Please see install/INSTALL.txt for additional information."
msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΎΠ·Π½Π°ΠΊΠΎΠΌΡŒΡ‚Π΅ΡΡŒ с install/INSTALL.txt для Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… свСдСний."
-#: ../../Zotlabs/Module/Setup.php:600
+#: ../../Zotlabs/Module/Setup.php:605
msgid ""
"This software uses the Smarty3 template engine to render its web views. "
"Smarty3 compiles templates to PHP to speed up rendering."
msgstr "Π­Ρ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ΅ обСспСчСниС ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΠ·Π°Ρ‚ΠΎΡ€ Smarty3 для отобраТСния своих Π²Π΅Π±-страниц. Smarty3 ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ для PHP для ускорСния Ρ€Π΅Π½Π΄Π΅Ρ€ΠΈΠ½Π³Π°."
-#: ../../Zotlabs/Module/Setup.php:601
+#: ../../Zotlabs/Module/Setup.php:606
#, php-format
msgid ""
"In order to store these compiled templates, the web server needs to have "
"write access to the directory %s under the top level web folder."
msgstr "Для хранСния этих скомпилированных шаблонов Π²Π΅Π±-сСрвСр Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅Ρ‚ΡŒ доступ Π½Π° запись ΠΊ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Ρƒ %s Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня."
-#: ../../Zotlabs/Module/Setup.php:602 ../../Zotlabs/Module/Setup.php:623
+#: ../../Zotlabs/Module/Setup.php:607 ../../Zotlabs/Module/Setup.php:628
msgid ""
"Please ensure that the user that your web server runs as (e.g. www-data) has "
"write access to this folder."
msgstr "Π£Π±Π΅Π΄ΠΈΡ‚Π΅ΡΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΎΡ‚ ΠΈΠΌΠ΅Π½ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ваш Π²Π΅Π±-сСрвСр (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, www-data), ΠΈΠΌΠ΅Π΅Ρ‚ доступ Π½Π° запись Π² этот ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³."
-#: ../../Zotlabs/Module/Setup.php:603
+#: ../../Zotlabs/Module/Setup.php:608
#, php-format
msgid ""
"Note: as a security measure, you should give the web server write access to "
"%s only--not the template files (.tpl) that it contains."
msgstr "ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅. Π’ качСствС ΠΌΠ΅Ρ€Ρ‹ бСзопасности Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ доступ Π²Π΅Π±-сСрвСру для записи Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ %s Π½ΠΎ Π½Π΅ ΠΊ содСрТащимися Π² Π½Ρ‘ΠΌ Ρ„Π°ΠΉΠ»Π°ΠΌΠΈ шаблонов (.tpl)."
-#: ../../Zotlabs/Module/Setup.php:606
+#: ../../Zotlabs/Module/Setup.php:611
#, php-format
msgid "%s is writable"
msgstr "%s доступСн для записи"
-#: ../../Zotlabs/Module/Setup.php:622
+#: ../../Zotlabs/Module/Setup.php:627
msgid ""
"This software uses the store directory to save uploaded files. The web "
"server needs to have write access to the store directory under the top level "
"web folder"
msgstr "Π­Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ хранСния для Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ„Π°ΠΉΠ»ΠΎΠ². Для Π²Π΅Π±-сСрвСра трСбуСтся доступ Π½Π° запись начиная с Π²Π΅Ρ€Ρ…Π½Π΅Π³ΠΎ уровня ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° хранСния."
-#: ../../Zotlabs/Module/Setup.php:626
+#: ../../Zotlabs/Module/Setup.php:631
msgid "store is writable"
msgstr "Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ доступно для записи"
-#: ../../Zotlabs/Module/Setup.php:658
+#: ../../Zotlabs/Module/Setup.php:663
msgid ""
"SSL certificate cannot be validated. Fix certificate or disable https access "
"to this site."
msgstr "SSL certificate cannot be validated. Π—Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π³ΠΎ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ https доступ ΠΊ этому сайту."
-#: ../../Zotlabs/Module/Setup.php:659
+#: ../../Zotlabs/Module/Setup.php:664
msgid ""
"If you have https access to your website or allow connections to TCP port "
"443 (the https: port), you MUST use a browser-valid certificate. You MUST "
"NOT use self-signed certificates!"
msgstr "Если Ρƒ вас Π΅ΡΡ‚ΡŒ https-доступ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ сайту ΠΈΠ»ΠΈ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ ΠΊ TCP-ΠΏΠΎΡ€Ρ‚Ρƒ 443 (ΠΏΠΎΡ€Ρ‚ https), Π²Ρ‹ Π”ΠžΠ›Π–ΠΠ« ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ сСртификат, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°. Π’Ρ‹ НЕ Π”ΠžΠ›Π–ΠΠ« ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ самоподписанныС сСртификаты!"
-#: ../../Zotlabs/Module/Setup.php:660
+#: ../../Zotlabs/Module/Setup.php:665
msgid ""
"This restriction is incorporated because public posts from you may for "
"example contain references to images on your own hub."
msgstr "Π­Ρ‚ΠΈ ограничСния приняты ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ ссылки Π½Π° изобраТСния Π½Π° вашСм собствСнном Ρ…Π°Π±Π΅."
-#: ../../Zotlabs/Module/Setup.php:661
+#: ../../Zotlabs/Module/Setup.php:666
msgid ""
"If your certificate is not recognized, members of other sites (who may "
"themselves have valid certificates) will get a warning message on their own "
"site complaining about security issues."
msgstr "Если ваш сСртификат Π½Π΅ ΠΏΡ€ΠΈΠ·Π½Π°Π½, ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… сайтов (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ сами ΠΈΠΌΠ΅Ρ‚ΡŒ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ сСртификаты) ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π°ΡŽΡ‰Π΅Π΅ сообщСниС ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°Ρ… с Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒΡŽ."
-#: ../../Zotlabs/Module/Setup.php:662
+#: ../../Zotlabs/Module/Setup.php:667
msgid ""
"This can cause usability issues elsewhere (not just on your own site) so we "
"must insist on this requirement."
msgstr "Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ удобства использования ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… мСст (Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° вашСм собствСнном сайтС), поэтому ΠΌΡ‹ настаиваСм Π½Π° этом Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΈ."
-#: ../../Zotlabs/Module/Setup.php:663
+#: ../../Zotlabs/Module/Setup.php:668
msgid ""
"Providers are available that issue free certificates which are browser-valid."
msgstr "Доступны поставщики, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹Π΄Π°ΡŽΡ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ для Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π° бСсплатныС сСртификаты."
-#: ../../Zotlabs/Module/Setup.php:665
+#: ../../Zotlabs/Module/Setup.php:670
msgid ""
"If you are confident that the certificate is valid and signed by a trusted "
"authority, check to see if you have failed to install an intermediate cert. "
@@ -8174,37 +8198,37 @@ msgid ""
"server communications."
msgstr "Если Π²Ρ‹ ΡƒΠ²Π΅Ρ€Π΅Π½Ρ‹, Ρ‡Ρ‚ΠΎ сСртификат дСйствитСлСн ΠΈ подписан Π΄ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ ΠΎΡ€Π³Π°Π½ΠΎΠΌ, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅, установлСн Π»ΠΈ ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹Π΅ сСртификаты. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ ΠΎΠ½ΠΈ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π±Ρ€Π°ΡƒΠ·Π΅Ρ€Π°ΠΌΠΈ, Π½ΠΎ Π±Ρ‹Π²Π°ΡŽΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ для связи ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвСрами."
-#: ../../Zotlabs/Module/Setup.php:667
+#: ../../Zotlabs/Module/Setup.php:672
msgid "SSL certificate validation"
msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° SSL сСртификата"
-#: ../../Zotlabs/Module/Setup.php:673
+#: ../../Zotlabs/Module/Setup.php:678
msgid ""
"Url rewrite in .htaccess is not working. Check your server configuration."
"Test: "
msgstr "ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ URL Π² .htaccess Π½Π΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚. ΠŸΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ настройки вашСго сСрвСра."
-#: ../../Zotlabs/Module/Setup.php:676
+#: ../../Zotlabs/Module/Setup.php:681
msgid "Url rewrite is working"
msgstr "ΠŸΠ΅Ρ€Π΅Π·Π°ΠΏΠΈΡΡŒ URL Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚"
-#: ../../Zotlabs/Module/Setup.php:690
+#: ../../Zotlabs/Module/Setup.php:695
msgid ""
"The database configuration file \".htconfig.php\" could not be written. "
"Please use the enclosed text to create a configuration file in your web "
"server root."
msgstr "Π€Π°ΠΉΠ» ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… \".htconfig.php\" Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ записан. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ ΠΏΡ€ΠΈΠ»Π°Π³Π°Π΅ΠΌΡ‹ΠΉ тСкст для создания Ρ„Π°ΠΉΠ»Π° ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠΈ Π² ΠΊΠΎΡ€Π½Π΅Π²ΠΎΠΌ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π΅ Π²Π΅Π±-сСрвСра."
-#: ../../Zotlabs/Module/Setup.php:714
+#: ../../Zotlabs/Module/Setup.php:719
#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:401
msgid "Errors encountered creating database tables."
msgstr "ΠŸΡ€ΠΈ создании Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… Π²ΠΎΠ·Π½ΠΈΠΊΠ»ΠΈ ошибки."
-#: ../../Zotlabs/Module/Setup.php:754
+#: ../../Zotlabs/Module/Setup.php:759
msgid "<h1>What next?</h1>"
msgstr "<h1>Π§Ρ‚ΠΎ дальшС? </h1>"
-#: ../../Zotlabs/Module/Setup.php:755
+#: ../../Zotlabs/Module/Setup.php:760
msgid ""
"IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
msgstr "Π’Π°ΠΌ понадобится [Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ] Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π·Π°ΠΏΠ»Π°Π½ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ для ΠΎΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚Π΅Π»Ρ."
@@ -8664,7 +8688,7 @@ msgstr "Π—Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ"
msgid "Install new repo"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ"
-#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:513
+#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:534
msgid "Install"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ"
@@ -8938,7 +8962,7 @@ msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ
#: ../../Zotlabs/Module/Admin/Site.php:323
#: ../../Zotlabs/Module/Admin/Site.php:324
-#: ../../Zotlabs/Module/Connedit.php:881 ../../Zotlabs/Module/Connedit.php:882
+#: ../../Zotlabs/Module/Connedit.php:892 ../../Zotlabs/Module/Connedit.php:893
msgid ""
"words one per line or #tags or /patterns/ or lang=xx, leave blank to import "
"all posts"
@@ -9283,12 +9307,12 @@ msgid "No registrations."
msgstr "НСт Π½ΠΎΠ²Ρ‹Ρ… рСгистраций."
#: ../../Zotlabs/Module/Admin/Accounts.php:176
-#: ../../Zotlabs/Module/Connedit.php:628
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Block"
msgstr "Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
#: ../../Zotlabs/Module/Admin/Accounts.php:177
-#: ../../Zotlabs/Module/Connedit.php:628
+#: ../../Zotlabs/Module/Connedit.php:636
msgid "Unblock"
msgstr "Π Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
@@ -9452,12 +9476,12 @@ msgstr "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ"
msgid "Expires (yyyy-mm-dd)"
msgstr "Π‘Ρ€ΠΎΠΊ дСйствия (yyyy-mm-dd)"
-#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:896
+#: ../../Zotlabs/Module/Tokens.php:180 ../../Zotlabs/Module/Connedit.php:907
msgid "Their Settings"
msgstr "Π˜Ρ… настройки"
#: ../../Zotlabs/Module/Notifications.php:60
-#: ../../Zotlabs/Lib/ThreadItem.php:428
+#: ../../Zotlabs/Lib/ThreadItem.php:446
msgid "Mark all seen"
msgstr "ΠžΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ просмотрСнноС"
@@ -9558,11 +9582,11 @@ msgstr "ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ ΠΊΠ°ΠΊ: %s"
msgid "Search results for: %s"
msgstr "Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ поиска для: %s"
-#: ../../Zotlabs/Module/Notes.php:55
+#: ../../Zotlabs/Module/Notes.php:56
msgid "Notes App"
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ\""
-#: ../../Zotlabs/Module/Notes.php:56
+#: ../../Zotlabs/Module/Notes.php:57
msgid "A simple notes app with a widget (note: notes are not encrypted)"
msgstr "ΠŸΡ€ΠΎΡΡ‚ΠΎΠ΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ для Π·Π°ΠΌΠ΅Ρ‚ΠΎΠΊ с Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ΠΎΠΌ (ΠΏΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅: Π·Π°ΠΌΠ΅Ρ‚ΠΊΠΈ Π½Π΅ Π·Π°ΡˆΠΈΡ„Ρ€ΠΎΠ²Π°Π½Ρ‹)"
@@ -9696,268 +9720,268 @@ msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½."
msgid "Item is not editable"
msgstr "Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ нСльзя Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:111
+#: ../../Zotlabs/Module/Connedit.php:112
msgid "Could not locate selected profile."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ."
-#: ../../Zotlabs/Module/Connedit.php:248
+#: ../../Zotlabs/Module/Connedit.php:256
msgid "Connection updated."
msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹."
-#: ../../Zotlabs/Module/Connedit.php:250
+#: ../../Zotlabs/Module/Connedit.php:258
msgid "Failed to update connection record."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ запись ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°."
-#: ../../Zotlabs/Module/Connedit.php:304
+#: ../../Zotlabs/Module/Connedit.php:312
msgid "is now connected to"
msgstr "Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ"
-#: ../../Zotlabs/Module/Connedit.php:429
+#: ../../Zotlabs/Module/Connedit.php:437
msgid "Could not access address book record."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ записи адрСсной ΠΊΠ½ΠΈΠ³ΠΈ."
-#: ../../Zotlabs/Module/Connedit.php:477 ../../Zotlabs/Module/Connedit.php:481
+#: ../../Zotlabs/Module/Connedit.php:485 ../../Zotlabs/Module/Connedit.php:489
msgid "Refresh failed - channel is currently unavailable."
msgstr "ОбновлСниС Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ - Π² настоящСС врСмя ΠΊΠ°Π½Π°Π» нСдоступСн."
-#: ../../Zotlabs/Module/Connedit.php:496 ../../Zotlabs/Module/Connedit.php:505
-#: ../../Zotlabs/Module/Connedit.php:514 ../../Zotlabs/Module/Connedit.php:523
-#: ../../Zotlabs/Module/Connedit.php:536
+#: ../../Zotlabs/Module/Connedit.php:504 ../../Zotlabs/Module/Connedit.php:513
+#: ../../Zotlabs/Module/Connedit.php:522 ../../Zotlabs/Module/Connedit.php:531
+#: ../../Zotlabs/Module/Connedit.php:544
msgid "Unable to set address book parameters."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°ΠΌ адрСсной ΠΊΠ½ΠΈΠ³ΠΈ."
-#: ../../Zotlabs/Module/Connedit.php:560
+#: ../../Zotlabs/Module/Connedit.php:568
msgid "Connection has been removed."
msgstr "ΠšΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π±Ρ‹Π» ΡƒΠ΄Π°Π»Ρ‘Π½."
-#: ../../Zotlabs/Module/Connedit.php:603
+#: ../../Zotlabs/Module/Connedit.php:611
#, php-format
msgid "View %s's profile"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ %s профиля"
-#: ../../Zotlabs/Module/Connedit.php:607
+#: ../../Zotlabs/Module/Connedit.php:615
msgid "Refresh Permissions"
msgstr "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Connedit.php:610
+#: ../../Zotlabs/Module/Connedit.php:618
msgid "Fetch updated permissions"
msgstr "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ"
-#: ../../Zotlabs/Module/Connedit.php:614
+#: ../../Zotlabs/Module/Connedit.php:622
msgid "Refresh Photo"
msgstr "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ"
-#: ../../Zotlabs/Module/Connedit.php:617
+#: ../../Zotlabs/Module/Connedit.php:625
msgid "Fetch updated photo"
msgstr "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½Π½ΡƒΡŽ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΡŽ"
-#: ../../Zotlabs/Module/Connedit.php:624
+#: ../../Zotlabs/Module/Connedit.php:632
msgid "View recent posts and comments"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ послСдниС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ"
-#: ../../Zotlabs/Module/Connedit.php:631
+#: ../../Zotlabs/Module/Connedit.php:639
msgid "Block (or Unblock) all communications with this connection"
msgstr "Π‘Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΈΠ»ΠΈ Ρ€Π°Π·Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) связи с этим ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠΌ"
-#: ../../Zotlabs/Module/Connedit.php:632
+#: ../../Zotlabs/Module/Connedit.php:640
msgid "This connection is blocked!"
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½!"
-#: ../../Zotlabs/Module/Connedit.php:636
+#: ../../Zotlabs/Module/Connedit.php:644
msgid "Unignore"
msgstr "НС ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:636
+#: ../../Zotlabs/Module/Connedit.php:644
#: ../../Zotlabs/Module/Connections.php:308
msgid "Ignore"
msgstr "Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:639
+#: ../../Zotlabs/Module/Connedit.php:647
msgid "Ignore (or Unignore) all inbound communications from this connection"
msgstr "Π˜Π³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠ³Π½ΠΎΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) всС связи для этого ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°"
-#: ../../Zotlabs/Module/Connedit.php:640
+#: ../../Zotlabs/Module/Connedit.php:648
msgid "This connection is ignored!"
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ игнорируСтся!"
-#: ../../Zotlabs/Module/Connedit.php:644
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Unarchive"
msgstr "Π Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:644
+#: ../../Zotlabs/Module/Connedit.php:652
msgid "Archive"
msgstr "Π—Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:647
+#: ../../Zotlabs/Module/Connedit.php:655
msgid ""
"Archive (or Unarchive) this connection - mark channel dead but keep content"
msgstr "Π—Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΈΠ»ΠΈ Ρ€Π°Π·Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ) этот ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ - ΠΏΠΎΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ ΠΊΠ°Π½Π°Π» ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½Ρ‹ΠΌ Π½ΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ содСрТимоС"
-#: ../../Zotlabs/Module/Connedit.php:648
+#: ../../Zotlabs/Module/Connedit.php:656
msgid "This connection is archived!"
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Π·Π°Π°Ρ€Ρ…ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Π½!"
-#: ../../Zotlabs/Module/Connedit.php:652
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Unhide"
msgstr "ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:652
+#: ../../Zotlabs/Module/Connedit.php:660
msgid "Hide"
msgstr "Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:655
+#: ../../Zotlabs/Module/Connedit.php:663
msgid "Hide or Unhide this connection from your other connections"
msgstr "Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΎΡ‚ / для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…"
-#: ../../Zotlabs/Module/Connedit.php:656
+#: ../../Zotlabs/Module/Connedit.php:664
msgid "This connection is hidden!"
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ скрыт!"
-#: ../../Zotlabs/Module/Connedit.php:663
+#: ../../Zotlabs/Module/Connedit.php:671
msgid "Delete this connection"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚"
-#: ../../Zotlabs/Module/Connedit.php:671
+#: ../../Zotlabs/Module/Connedit.php:679
msgid "Fetch Vcard"
msgstr "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ vCard"
-#: ../../Zotlabs/Module/Connedit.php:674
+#: ../../Zotlabs/Module/Connedit.php:682
msgid "Fetch electronic calling card for this connection"
msgstr "ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΡΠ»Π΅ΠΊΡ‚Ρ€ΠΎΠ½Π½ΡƒΡŽ Ρ‚Π΅Π»Π΅Ρ„ΠΎΠ½Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ для этого ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°"
-#: ../../Zotlabs/Module/Connedit.php:685
+#: ../../Zotlabs/Module/Connedit.php:693
msgid "Open Individual Permissions section by default"
msgstr "ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Ρ€Π°Π·Π΄Π΅Π» \"Π˜Π½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ\" ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../Zotlabs/Module/Connedit.php:708
+#: ../../Zotlabs/Module/Connedit.php:716
msgid "Affinity"
msgstr "Бходство"
-#: ../../Zotlabs/Module/Connedit.php:711
+#: ../../Zotlabs/Module/Connedit.php:719
msgid "Open Set Affinity section by default"
msgstr "ΠžΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ установлСния сходства ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../Zotlabs/Module/Connedit.php:715 ../../Zotlabs/Widget/Affinity.php:22
+#: ../../Zotlabs/Module/Connedit.php:723 ../../Zotlabs/Widget/Affinity.php:27
msgid "Me"
msgstr "Π―"
-#: ../../Zotlabs/Module/Connedit.php:716 ../../Zotlabs/Widget/Affinity.php:23
+#: ../../Zotlabs/Module/Connedit.php:724 ../../Zotlabs/Widget/Affinity.php:28
msgid "Family"
msgstr "БСмья"
-#: ../../Zotlabs/Module/Connedit.php:718 ../../Zotlabs/Widget/Affinity.php:25
+#: ../../Zotlabs/Module/Connedit.php:726 ../../Zotlabs/Widget/Affinity.php:30
msgid "Acquaintances"
msgstr "Π—Π½Π°ΠΊΠΎΠΌΡ‹Π΅"
-#: ../../Zotlabs/Module/Connedit.php:719
+#: ../../Zotlabs/Module/Connedit.php:727
#: ../../Zotlabs/Module/Connections.php:97
#: ../../Zotlabs/Module/Connections.php:111
-#: ../../Zotlabs/Widget/Affinity.php:26
+#: ../../Zotlabs/Widget/Affinity.php:31
msgid "All"
msgstr "ВсС"
-#: ../../Zotlabs/Module/Connedit.php:745
+#: ../../Zotlabs/Module/Connedit.php:756
msgid "Filter"
msgstr "Π€ΠΈΠ»ΡŒΡ‚Ρ€"
-#: ../../Zotlabs/Module/Connedit.php:748
+#: ../../Zotlabs/Module/Connedit.php:759
msgid "Open Custom Filter section by default"
msgstr "ΠžΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ ΡΠ΅ΠΊΡ†ΠΈΡŽ \"НастраиваСмый Ρ„ΠΈΠ»ΡŒΡ‚Ρ€\" ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../Zotlabs/Module/Connedit.php:785
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Approve this connection"
msgstr "Π£Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ΡŒ этот ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚"
-#: ../../Zotlabs/Module/Connedit.php:785
+#: ../../Zotlabs/Module/Connedit.php:796
msgid "Accept connection to allow communication"
msgstr "ΠŸΡ€ΠΈΠ½ΡΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ€Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ связь"
-#: ../../Zotlabs/Module/Connedit.php:790
+#: ../../Zotlabs/Module/Connedit.php:801
msgid "Set Affinity"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сходство"
-#: ../../Zotlabs/Module/Connedit.php:793
+#: ../../Zotlabs/Module/Connedit.php:804
msgid "Set Profile"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:796
+#: ../../Zotlabs/Module/Connedit.php:807
msgid "Set Affinity & Profile"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ сходство ΠΈ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
-#: ../../Zotlabs/Module/Connedit.php:844
+#: ../../Zotlabs/Module/Connedit.php:855
msgid "This connection is unreachable from this location."
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ нСдоступСн для Π΄Π°Π½Π½ΠΎΠ³ΠΎ мСстополоТСния"
-#: ../../Zotlabs/Module/Connedit.php:845
+#: ../../Zotlabs/Module/Connedit.php:856
msgid "This connection may be unreachable from other channel locations."
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступСн ΠΈΠ· Π΄Ρ€ΡƒΠ³ΠΈΡ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°"
-#: ../../Zotlabs/Module/Connedit.php:847
+#: ../../Zotlabs/Module/Connedit.php:858
msgid "Location independence is not supported by their network."
msgstr "НСзависимоС мСстополоТСниС Π½Π΅ поддСрТиваСтся ΠΈΡ… ΡΠ΅Ρ‚ΡŒΡŽ."
-#: ../../Zotlabs/Module/Connedit.php:853
+#: ../../Zotlabs/Module/Connedit.php:864
msgid ""
"This connection is unreachable from this location. Location independence is "
"not supported by their network."
msgstr "Π­Ρ‚ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ нСдоступСн ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ мСстополоТСния. НСзависимоС мСстополоТСниС Π½Π΅ поддСрТиваСтся ΠΈΡ… ΡΠ΅Ρ‚ΡŒΡŽ."
-#: ../../Zotlabs/Module/Connedit.php:857
+#: ../../Zotlabs/Module/Connedit.php:868
msgid "Connection requests will be approved without your interaction"
msgstr "Запросы ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½Ρ‹ Π±Π΅Π· вашСго участия"
-#: ../../Zotlabs/Module/Connedit.php:866
+#: ../../Zotlabs/Module/Connedit.php:877
msgid "This connection's primary address is"
msgstr "Π“Π»Π°Π²Π½Ρ‹ΠΉ адрСс это ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Π°"
-#: ../../Zotlabs/Module/Connedit.php:867
+#: ../../Zotlabs/Module/Connedit.php:878
msgid "Available locations:"
msgstr "ДоступныС располоТСния:"
-#: ../../Zotlabs/Module/Connedit.php:873
+#: ../../Zotlabs/Module/Connedit.php:884
msgid "Connection Tools"
msgstr "Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Ρ‹ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
-#: ../../Zotlabs/Module/Connedit.php:875
+#: ../../Zotlabs/Module/Connedit.php:886
msgid "Slide to adjust your degree of friendship"
msgstr "ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ для настройки стСпСни Π΄Ρ€ΡƒΠΆΠ±Ρ‹"
-#: ../../Zotlabs/Module/Connedit.php:877
+#: ../../Zotlabs/Module/Connedit.php:888
msgid "Slide to adjust your rating"
msgstr "ΠŸΡ€ΠΎΠΊΡ€ΡƒΡ‚ΠΈΡ‚ΡŒ для настройки ΠΎΡ†Π΅Π½ΠΊΠΈ"
-#: ../../Zotlabs/Module/Connedit.php:878 ../../Zotlabs/Module/Connedit.php:883
+#: ../../Zotlabs/Module/Connedit.php:889 ../../Zotlabs/Module/Connedit.php:894
msgid "Optionally explain your rating"
msgstr "ΠžΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ свою ΠΎΡ†Π΅Π½ΠΊΡƒ (Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)"
-#: ../../Zotlabs/Module/Connedit.php:880
+#: ../../Zotlabs/Module/Connedit.php:891
msgid "Custom Filter"
msgstr "НастраиваСмый Ρ„ΠΈΠ»ΡŒΡ‚Ρ€"
-#: ../../Zotlabs/Module/Connedit.php:881
+#: ../../Zotlabs/Module/Connedit.php:892
msgid "Only import posts with this text"
msgstr "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с этим тСкстом"
-#: ../../Zotlabs/Module/Connedit.php:882
+#: ../../Zotlabs/Module/Connedit.php:893
msgid "Do not import posts with this text"
msgstr "НС ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ с этим тСкстом"
-#: ../../Zotlabs/Module/Connedit.php:884
+#: ../../Zotlabs/Module/Connedit.php:895
msgid "This information is public!"
msgstr "Π­Ρ‚Π° информация общСдоступна!"
-#: ../../Zotlabs/Module/Connedit.php:889
+#: ../../Zotlabs/Module/Connedit.php:900
msgid "Connection Pending Approval"
msgstr "ΠžΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ подтвСрТдСния ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ²"
-#: ../../Zotlabs/Module/Connedit.php:894
+#: ../../Zotlabs/Module/Connedit.php:905
#, php-format
msgid ""
"Please choose the profile you would like to display to %s when viewing your "
"profile securely."
msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚ ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ Π² %s ΠΏΡ€ΠΈ бСзопасном просмотрС."
-#: ../../Zotlabs/Module/Connedit.php:901
+#: ../../Zotlabs/Module/Connedit.php:912
msgid ""
"Some permissions may be inherited from your channel's <a href=\"settings"
"\"><strong>privacy settings</strong></a>, which have higher priority than "
@@ -9965,11 +9989,11 @@ msgid ""
"any impact unless the inherited setting changes."
msgstr "НСкоторыС Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдованы ΠΈΠ· <a href=\"settings\"><strong>настроСк приватности</strong></a> вашСго ΠΊΠ°Π½Π°Π»Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ высокий ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Ρ‡Π΅ΠΌ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти настройки, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π΄ΠΎ измСнСния ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ наслСдству настроСк."
-#: ../../Zotlabs/Module/Connedit.php:902
+#: ../../Zotlabs/Module/Connedit.php:913
msgid "Last update:"
msgstr "ПослСднСС обновлСниС:"
-#: ../../Zotlabs/Module/Connedit.php:910
+#: ../../Zotlabs/Module/Connedit.php:921
msgid "Details"
msgstr "БвСдСния"
@@ -9981,60 +10005,60 @@ msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности создана."
msgid "Could not create privacy group."
msgstr "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности."
-#: ../../Zotlabs/Module/Group.php:77
+#: ../../Zotlabs/Module/Group.php:80
msgid "Privacy group updated."
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Π°."
-#: ../../Zotlabs/Module/Group.php:101
+#: ../../Zotlabs/Module/Group.php:106
msgid "Privacy Groups App"
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π“Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности\""
-#: ../../Zotlabs/Module/Group.php:102
+#: ../../Zotlabs/Module/Group.php:107
msgid "Management of privacy groups"
msgstr "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π³Ρ€ΡƒΠΏΠΏΠ°ΠΌΠΈ бСзопасности."
-#: ../../Zotlabs/Module/Group.php:133
+#: ../../Zotlabs/Module/Group.php:142
msgid "Add Group"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ"
-#: ../../Zotlabs/Module/Group.php:137
+#: ../../Zotlabs/Module/Group.php:146
msgid "Privacy group name"
msgstr "Имя Π³Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности"
-#: ../../Zotlabs/Module/Group.php:138 ../../Zotlabs/Module/Group.php:239
+#: ../../Zotlabs/Module/Group.php:147 ../../Zotlabs/Module/Group.php:256
msgid "Members are visible to other channels"
msgstr "Участники ΠΊΠ°Π½Π°Π»Π° Π²ΠΈΠ΄ΠΈΠΌΡ‹Π΅ для ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Ρ…"
-#: ../../Zotlabs/Module/Group.php:170
+#: ../../Zotlabs/Module/Group.php:182
msgid "Privacy group removed."
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности ΡƒΠ΄Π°Π»Π΅Π½Π°."
-#: ../../Zotlabs/Module/Group.php:172
+#: ../../Zotlabs/Module/Group.php:185
msgid "Unable to remove privacy group."
msgstr "Ну ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ бСзопасности."
-#: ../../Zotlabs/Module/Group.php:234
+#: ../../Zotlabs/Module/Group.php:251
#, php-format
msgid "Privacy Group: %s"
msgstr "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности: %s"
-#: ../../Zotlabs/Module/Group.php:236
+#: ../../Zotlabs/Module/Group.php:253
msgid "Privacy group name: "
msgstr "НазваниС Π³Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности: "
-#: ../../Zotlabs/Module/Group.php:241
+#: ../../Zotlabs/Module/Group.php:258
msgid "Delete Group"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ Π³Ρ€ΡƒΠΏΠΏΡƒ"
-#: ../../Zotlabs/Module/Group.php:251
+#: ../../Zotlabs/Module/Group.php:269
msgid "Group members"
msgstr "Π§Π»Π΅Π½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹"
-#: ../../Zotlabs/Module/Group.php:253
+#: ../../Zotlabs/Module/Group.php:271
msgid "Not in this group"
msgstr "НС Π² этой Π³Ρ€ΡƒΠΏΠΏΠ΅"
-#: ../../Zotlabs/Module/Group.php:285
+#: ../../Zotlabs/Module/Group.php:303
msgid "Click a channel to toggle membership"
msgstr "НаТмитС Π½Π° ΠΊΠ°Π½Π°Π» для просмотра члСнства"
@@ -10173,7 +10197,7 @@ msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"НастроСниС\""
msgid "Set your current mood and tell your friends"
msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π΅ настроСниС ΠΈ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ·ΡŒΡΠΌ"
-#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:325
+#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:346
msgid "Mood"
msgstr "НастроСниС"
@@ -10280,15 +10304,15 @@ msgstr "ΠΈΠ»ΠΈ посСтитС"
msgid "3. Click [Connect]"
msgstr "ΠΠ°ΠΆΠ°Ρ‚ΡŒ [ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒΡΡ]"
-#: ../../Zotlabs/Module/Articles.php:43
+#: ../../Zotlabs/Module/Articles.php:51
msgid "Articles App"
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π‘Ρ‚Π°Ρ‚ΡŒΠΈ\""
-#: ../../Zotlabs/Module/Articles.php:44
+#: ../../Zotlabs/Module/Articles.php:52
msgid "Create interactive articles"
msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ½Ρ‚Π΅Ρ€Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ"
-#: ../../Zotlabs/Module/Articles.php:107
+#: ../../Zotlabs/Module/Articles.php:115
msgid "Add Article"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΡΡ‚Π°Ρ‚ΡŒΡŽ"
@@ -10399,7 +10423,7 @@ msgstr "БистСмный шаблон"
#: ../../Zotlabs/Module/Wiki.php:35
#: ../../extend/addon/hzaddons/flashcards/Mod_Flashcards.php:34
-#: ../../extend/addon/hzaddons/cart/cart.php:1297
+#: ../../extend/addon/hzaddons/cart/cart.php:1298
msgid "Profile Unavailable."
msgstr "ΠŸΡ€ΠΎΡ„ΠΈΠ»ΡŒ нСдоступСн."
@@ -10415,7 +10439,7 @@ msgstr "ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ Wiki для вашСго ΠΊΠ°Π½Π°Π»Π°"
#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:456
#: ../../extend/addon/hzaddons/cart/myshop.php:37
#: ../../extend/addon/hzaddons/cart/manual_payments.php:93
-#: ../../extend/addon/hzaddons/cart/cart.php:1443
+#: ../../extend/addon/hzaddons/cart/cart.php:1444
msgid "Invalid channel"
msgstr "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π»"
@@ -10573,7 +10597,7 @@ msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°"
msgid "or select an existing folder (doubleclick)"
msgstr "ΠΈΠ»ΠΈ Π²Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ (Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ Ρ‰Π΅Π»Ρ‡ΠΎΠΊ)"
-#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:167
+#: ../../Zotlabs/Module/Filer.php:54 ../../Zotlabs/Lib/ThreadItem.php:178
msgid "Save to Folder"
msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³"
@@ -10793,15 +10817,15 @@ msgstr "Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°"
msgid "Developer homepage"
msgstr "Π”ΠΎΠΌΠ°ΡˆΠ½ΡΡ страница Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°"
-#: ../../Zotlabs/Module/Cards.php:46
+#: ../../Zotlabs/Module/Cards.php:51
msgid "Cards App"
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠšΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ\""
-#: ../../Zotlabs/Module/Cards.php:47
+#: ../../Zotlabs/Module/Cards.php:52
msgid "Create personal planning cards"
msgstr "Π‘ΠΎΠ·Π΄Π°Ρ‚ΡŒ Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΠΈ планирования"
-#: ../../Zotlabs/Module/Cards.php:108
+#: ../../Zotlabs/Module/Cards.php:112
msgid "Add Card"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡ΠΊΡƒ"
@@ -10841,7 +10865,7 @@ msgstr "НСвозмоТно Π½Π°ΠΉΡ‚ΠΈ ваш сСрвСр"
msgid "Post successful."
msgstr "УспСшно ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ."
-#: ../../Zotlabs/Module/Rmagic.php:35
+#: ../../Zotlabs/Module/Rmagic.php:44
msgid "Authentication failed."
msgstr "Ошибка Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ."
@@ -10927,7 +10951,7 @@ msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΏΠΎΡ‚ΠΎΠΊΠ°. ΠŸΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄
msgid "Forums"
msgstr "Π€ΠΎΡ€ΡƒΠΌΡ‹"
-#: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:346
+#: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:367
msgid "Notes"
msgstr "Π—Π°ΠΌΠ΅Ρ‚ΠΊΠΈ"
@@ -11329,7 +11353,7 @@ msgstr "Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ мСстополоТСниСм"
msgid "Member registrations waiting for confirmation"
msgstr "РСгистрации участников, ΠΎΠΆΠΈΠ΄Π°ΡŽΡ‰ΠΈΠ΅ подвСрТдСния"
-#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:333
+#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:354
msgid "Features"
msgstr "Π€ΡƒΠ½ΠΊΡ†ΠΈΠΈ"
@@ -11423,7 +11447,7 @@ msgstr "Участники Ρ‡Π°Ρ‚Π°"
msgid "Click to show more"
msgstr "НаТмитС Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ большС"
-#: ../../Zotlabs/Widget/Affinity.php:45
+#: ../../Zotlabs/Widget/Affinity.php:50
msgid "Refresh"
msgstr "ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ"
@@ -11541,7 +11565,7 @@ msgstr "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠΎΠ΅ΠΉ страницС ΠΊΠ°Π½Π
#: ../../Zotlabs/Access/Permissions.php:67
msgid "Can comment on or like my posts"
-msgstr "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΌΠΎΠΈ посты"
+msgstr "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΌΠΎΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
#: ../../Zotlabs/Access/Permissions.php:68
msgid "Can send me private mail messages"
@@ -11647,8 +11671,8 @@ msgstr "ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠ΅ $ProjectnameΒ "
#: ../../Zotlabs/Lib/Enotify.php:61
#: ../../extend/addon/hzaddons/diaspora/p.php:48
-#: ../../extend/addon/hzaddons/diaspora/util.php:308
-#: ../../extend/addon/hzaddons/diaspora/util.php:321
+#: ../../extend/addon/hzaddons/diaspora/util.php:313
+#: ../../extend/addon/hzaddons/diaspora/util.php:326
msgid "$projectname"
msgstr ""
@@ -11988,172 +12012,184 @@ msgctxt "permcat"
msgid "publisher"
msgstr "ΠΈΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ"
-#: ../../Zotlabs/Lib/Apps.php:301
+#: ../../Zotlabs/Lib/Apps.php:322
msgid "Apps"
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ"
-#: ../../Zotlabs/Lib/Apps.php:304
+#: ../../Zotlabs/Lib/Apps.php:325
msgid "Site Admin"
msgstr "Администратор сайта"
-#: ../../Zotlabs/Lib/Apps.php:305
+#: ../../Zotlabs/Lib/Apps.php:326
#: ../../extend/addon/hzaddons/buglink/buglink.php:16
msgid "Report Bug"
msgstr "Π‘ΠΎΠΎΠ±Ρ‰ΠΈΡ‚ΡŒ ΠΎΠ± ошибкС"
-#: ../../Zotlabs/Lib/Apps.php:309
+#: ../../Zotlabs/Lib/Apps.php:330
msgid "Remote Diagnostics"
msgstr "Удалённая диагностика"
-#: ../../Zotlabs/Lib/Apps.php:313
+#: ../../Zotlabs/Lib/Apps.php:334
msgid "Stream"
msgstr "ΠŸΠΎΡ‚ΠΎΠΊ"
-#: ../../Zotlabs/Lib/Apps.php:324
+#: ../../Zotlabs/Lib/Apps.php:345
msgid "Mail"
msgstr "ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡΠΊΠ°"
-#: ../../Zotlabs/Lib/Apps.php:327
+#: ../../Zotlabs/Lib/Apps.php:348
msgid "Chat"
msgstr "Π§Π°Ρ‚"
-#: ../../Zotlabs/Lib/Apps.php:329
+#: ../../Zotlabs/Lib/Apps.php:350
msgid "Probe"
msgstr "ΠŸΡ€ΠΎΠ±Π°"
-#: ../../Zotlabs/Lib/Apps.php:330
+#: ../../Zotlabs/Lib/Apps.php:351
msgid "Suggest"
msgstr "ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Lib/Apps.php:331
+#: ../../Zotlabs/Lib/Apps.php:352
msgid "Random Channel"
msgstr "Π‘Π»ΡƒΡ‡Π°ΠΉΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π»"
-#: ../../Zotlabs/Lib/Apps.php:332
+#: ../../Zotlabs/Lib/Apps.php:353
msgid "Invite"
msgstr "ΠŸΡ€ΠΈΠ³Π»Π°ΡΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Lib/Apps.php:334
+#: ../../Zotlabs/Lib/Apps.php:355
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:69
msgid "Language"
msgstr "Π―Π·Ρ‹ΠΊ"
-#: ../../Zotlabs/Lib/Apps.php:335
+#: ../../Zotlabs/Lib/Apps.php:356
msgid "Post"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ"
-#: ../../Zotlabs/Lib/Apps.php:336
+#: ../../Zotlabs/Lib/Apps.php:357
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:58
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:59
#: ../../extend/addon/hzaddons/openid/MysqlProvider.php:60
msgid "Profile Photo"
msgstr "Ѐотография профиля"
-#: ../../Zotlabs/Lib/Apps.php:340
+#: ../../Zotlabs/Lib/Apps.php:361
msgid "Notifications"
msgstr "ΠžΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΡ"
-#: ../../Zotlabs/Lib/Apps.php:341
+#: ../../Zotlabs/Lib/Apps.php:362
msgid "Order Apps"
msgstr "ΠŸΠΎΡ€ΡΠ΄ΠΎΠΊ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ"
-#: ../../Zotlabs/Lib/Apps.php:343
+#: ../../Zotlabs/Lib/Apps.php:364
msgid "CardDAV"
msgstr ""
-#: ../../Zotlabs/Lib/Apps.php:345
+#: ../../Zotlabs/Lib/Apps.php:366
msgid "Guest Access"
msgstr "ГостСвой доступ"
-#: ../../Zotlabs/Lib/Apps.php:347
+#: ../../Zotlabs/Lib/Apps.php:368
msgid "OAuth Apps Manager"
msgstr "ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ OAuth"
-#: ../../Zotlabs/Lib/Apps.php:348
+#: ../../Zotlabs/Lib/Apps.php:369
msgid "OAuth2 Apps Manager"
msgstr "ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ OAuth2"
-#: ../../Zotlabs/Lib/Apps.php:349
+#: ../../Zotlabs/Lib/Apps.php:370
msgid "PDL Editor"
msgstr "Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ PDL"
-#: ../../Zotlabs/Lib/Apps.php:351
+#: ../../Zotlabs/Lib/Apps.php:372
msgid "Premium Channel"
msgstr "ΠŸΡ€Π΅ΠΌΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π»"
-#: ../../Zotlabs/Lib/Apps.php:353
+#: ../../Zotlabs/Lib/Apps.php:374
msgid "My Chatrooms"
msgstr "Мои Ρ‡Π°Ρ‚Ρ‹"
-#: ../../Zotlabs/Lib/Apps.php:354
+#: ../../Zotlabs/Lib/Apps.php:375
msgid "Channel Export"
msgstr "Экспорт ΠΊΠ°Π½Π°Π»Π°"
-#: ../../Zotlabs/Lib/Apps.php:531
+#: ../../Zotlabs/Lib/Apps.php:552
msgid "Purchase"
msgstr "ΠšΡƒΠΏΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Lib/Apps.php:536
+#: ../../Zotlabs/Lib/Apps.php:557
msgid "Undelete"
msgstr "Π’ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Lib/Apps.php:545
+#: ../../Zotlabs/Lib/Apps.php:566
msgid "Add to app-tray"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² app-tray"
-#: ../../Zotlabs/Lib/Apps.php:546
+#: ../../Zotlabs/Lib/Apps.php:567
msgid "Remove from app-tray"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· app-tray"
-#: ../../Zotlabs/Lib/Apps.php:547
+#: ../../Zotlabs/Lib/Apps.php:568
msgid "Pin to navbar"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
-#: ../../Zotlabs/Lib/Apps.php:548
+#: ../../Zotlabs/Lib/Apps.php:569
msgid "Unpin from navbar"
msgstr "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ с ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ"
-#: ../../Zotlabs/Lib/ThreadItem.php:188
+#: ../../Zotlabs/Lib/ThreadItem.php:126
+msgid "Privacy conflict. Discretion advised."
+msgstr "ΠšΠΎΠ½Ρ„ΠΈΠ»ΠΈΠΊΡ‚ настроСк ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ."
+
+#: ../../Zotlabs/Lib/ThreadItem.php:199
msgid "I will attend"
-msgstr "Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ"
+msgstr "Π― Π±ΡƒΠ΄Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:188
+#: ../../Zotlabs/Lib/ThreadItem.php:199
msgid "I will not attend"
-msgstr "Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ"
+msgstr "Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:188
+#: ../../Zotlabs/Lib/ThreadItem.php:199
msgid "I might attend"
msgstr "Π― Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:198
+#: ../../Zotlabs/Lib/ThreadItem.php:209
msgid "I agree"
msgstr "Я согласСн"
-#: ../../Zotlabs/Lib/ThreadItem.php:198
+#: ../../Zotlabs/Lib/ThreadItem.php:209
msgid "I disagree"
msgstr "Я нС согласСн"
-#: ../../Zotlabs/Lib/ThreadItem.php:198
+#: ../../Zotlabs/Lib/ThreadItem.php:209
msgid "I abstain"
msgstr "Π― воздСрТался"
-#: ../../Zotlabs/Lib/ThreadItem.php:272
+#: ../../Zotlabs/Lib/ThreadItem.php:283
msgid "Add Tag"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅Π³"
-#: ../../Zotlabs/Lib/ThreadItem.php:297
+#: ../../Zotlabs/Lib/ThreadItem.php:311
+msgid "Repeat This"
+msgstr "ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ это"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:311
+msgid "repeat"
+msgstr "ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅"
+
+#: ../../Zotlabs/Lib/ThreadItem.php:313
msgid "Share This"
msgstr "ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ этим"
-#: ../../Zotlabs/Lib/ThreadItem.php:297
+#: ../../Zotlabs/Lib/ThreadItem.php:313
msgid "share"
msgstr "ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ"
-#: ../../Zotlabs/Lib/ThreadItem.php:306
+#: ../../Zotlabs/Lib/ThreadItem.php:323
msgid "Delivery Report"
msgstr "ΠžΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ доставкС"
-#: ../../Zotlabs/Lib/ThreadItem.php:326
+#: ../../Zotlabs/Lib/ThreadItem.php:343
#, php-format
msgid "%d comment"
msgid_plural "%d comments"
@@ -12161,73 +12197,73 @@ msgstr[0] "%d ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ"
msgstr[1] "%d коммСнтария"
msgstr[2] "%d ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²"
-#: ../../Zotlabs/Lib/ThreadItem.php:360 ../../Zotlabs/Lib/ThreadItem.php:361
+#: ../../Zotlabs/Lib/ThreadItem.php:377 ../../Zotlabs/Lib/ThreadItem.php:378
#, php-format
msgid "View %s's profile - %s"
msgstr "ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ %s профиля - %s"
-#: ../../Zotlabs/Lib/ThreadItem.php:364
+#: ../../Zotlabs/Lib/ThreadItem.php:381
msgid "to"
msgstr "ΠΊ"
-#: ../../Zotlabs/Lib/ThreadItem.php:365
+#: ../../Zotlabs/Lib/ThreadItem.php:382
msgid "via"
msgstr "Ρ‡Π΅Ρ€Π΅Π·"
-#: ../../Zotlabs/Lib/ThreadItem.php:366
+#: ../../Zotlabs/Lib/ThreadItem.php:383
msgid "Wall-to-Wall"
msgstr "Π‘Ρ‚Π΅Π½Π°-ΠΊ-Π‘Ρ‚Π΅Π½Π΅"
-#: ../../Zotlabs/Lib/ThreadItem.php:367
+#: ../../Zotlabs/Lib/ThreadItem.php:384
msgid "via Wall-To-Wall:"
msgstr "Ρ‡Π΅Ρ€Π΅Π· Π‘Ρ‚Π΅Π½Π°-ΠΊ-Π‘Ρ‚Π΅Π½Π΅:"
-#: ../../Zotlabs/Lib/ThreadItem.php:393
+#: ../../Zotlabs/Lib/ThreadItem.php:410
msgid "Attend"
msgstr "ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:394
+#: ../../Zotlabs/Lib/ThreadItem.php:411
msgid "Attendance Options"
msgstr "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ посСщаСмости"
-#: ../../Zotlabs/Lib/ThreadItem.php:395
+#: ../../Zotlabs/Lib/ThreadItem.php:412
msgid "Vote"
msgstr "Π“ΠΎΠ»ΠΎΡΠΎΠ²Π°Ρ‚ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:396
+#: ../../Zotlabs/Lib/ThreadItem.php:413
msgid "Voting Options"
msgstr "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ голосования"
-#: ../../Zotlabs/Lib/ThreadItem.php:417
+#: ../../Zotlabs/Lib/ThreadItem.php:435
#: ../../extend/addon/hzaddons/bookmarker/bookmarker.php:38
msgid "Save Bookmarks"
msgstr "Π‘ΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π·Π°ΠΊΠ»Π°Π΄ΠΊΠΈ"
-#: ../../Zotlabs/Lib/ThreadItem.php:418
+#: ../../Zotlabs/Lib/ThreadItem.php:436
msgid "Add to Calendar"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² ΠΊΠ°Π»Π΅Π½Π΄Π°Ρ€ΡŒ"
-#: ../../Zotlabs/Lib/ThreadItem.php:779
+#: ../../Zotlabs/Lib/ThreadItem.php:797
msgid "Image"
msgstr "Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅"
-#: ../../Zotlabs/Lib/ThreadItem.php:781
+#: ../../Zotlabs/Lib/ThreadItem.php:799
msgid "Insert Link"
msgstr "Π’ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ссылку"
-#: ../../Zotlabs/Lib/ThreadItem.php:782
+#: ../../Zotlabs/Lib/ThreadItem.php:800
msgid "Video"
msgstr "Π’ΠΈΠ΄Π΅ΠΎ"
-#: ../../Zotlabs/Lib/ThreadItem.php:792
+#: ../../Zotlabs/Lib/ThreadItem.php:810
msgid "Your full name (required)"
msgstr "Π’Π°ΡˆΠ΅ ΠΏΠΎΠ»Π½ΠΎΠ΅ имя (трСбуСтся)"
-#: ../../Zotlabs/Lib/ThreadItem.php:793
+#: ../../Zotlabs/Lib/ThreadItem.php:811
msgid "Your email address (required)"
msgstr "Π’Π°Ρˆ адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ (трСбуСтся)"
-#: ../../Zotlabs/Lib/ThreadItem.php:794
+#: ../../Zotlabs/Lib/ThreadItem.php:812
msgid "Your website URL (optional)"
msgstr "URL вашСго вСбсайта (Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ)"
@@ -12304,6 +12340,31 @@ msgstr "Π­Ρ‚ΠΎ настройка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ
msgid "This is your default setting for the audience of your webpages"
msgstr "Π­Ρ‚ΠΎ настройка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π²Π΅Π±-страниц"
+#: ../../Zotlabs/Lib/Activity.php:1458
+#, php-format
+msgid "Likes %1$s's %2$s"
+msgstr "Нравится %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1461
+#, php-format
+msgid "Doesn't like %1$s's %2$s"
+msgstr "НС нравится %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1464
+#, php-format
+msgid "Will attend %1$s's %2$s"
+msgstr "ΠŸΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1467
+#, php-format
+msgid "Will not attend %1$s's %2$s"
+msgstr "НС ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1$s %2$s"
+
+#: ../../Zotlabs/Lib/Activity.php:1470
+#, php-format
+msgid "May attend %1$s's %2$s"
+msgstr "Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1$s %2$s"
+
#: ../../Zotlabs/Lib/Techlevels.php:10
msgid "0. Beginner/Basic"
msgstr "ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ"
@@ -12340,29 +12401,37 @@ msgstr "Wiki ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π°"
msgid "Use markdown for editing posts"
msgstr "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Markdown для рСдактирования ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:42
+#: ../../extend/addon/hzaddons/dwpost/dwpost.php:48
msgid "Post to Dreamwidth"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Dreamwidth"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:73
-msgid "Enable Dreamwidth Post Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth"
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:24
+msgid "Dreamwidth Crosspost Connector Settings saved."
+msgstr "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth сохранСны."
+
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:36
+msgid "Dreamwidth Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth\""
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:77
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:37
+msgid "Relay public postings to Dreamwidth"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Dreamwidth"
+
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:52
msgid "Dreamwidth username"
msgstr "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Dreamwidth"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:81
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:56
msgid "Dreamwidth password"
msgstr "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Dreamwidth"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:85
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:60
msgid "Post to Dreamwidth by default"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Dreamwidth ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/dwpost/dwpost.php:89
-msgid "Dreamwidth Post Settings"
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Dreamwidth"
+#: ../../extend/addon/hzaddons/dwpost/Mod_Dwpost.php:68
+msgid "Dreamwidth Crosspost Connector"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth"
#: ../../extend/addon/hzaddons/donate/donate.php:21
msgid "Project Servers and Resources"
@@ -12468,6 +12537,19 @@ msgid ""
"Allow magic authentication only to websites of your immediate connections"
msgstr "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²ΠΎΠ»ΡˆΠ΅Π±Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сайтах Π²Π°ΡˆΠΈΡ… нСпосрСдствСнных соСдинСний"
+#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:28
+#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:33
+msgid "Authchoose App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Authchoose"
+
+#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:33
+#: ../../extend/addon/hzaddons/nsabait/Mod_Nsabait.php:24
+#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:26
+#: ../../extend/addon/hzaddons/planets/Mod_Planets.php:23
+#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:26
+msgid "Installed"
+msgstr "УстановлСно"
+
#: ../../extend/addon/hzaddons/authchoose/Mod_Authchoose.php:39
msgid "Authchoose"
msgstr ""
@@ -12515,16 +12597,20 @@ msgstr "МаксимальноС количСство для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°"
msgid "0 or blank to import all available"
msgstr "0 ΠΈΠ»ΠΈ пусто для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° всСх доступных"
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:57
+#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:58
+msgid "Gallery App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ГалСрСя\""
+
+#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:59
msgid "A simple gallery for your photo albums"
msgstr "ΠŸΡ€ΠΎΡΡ‚Π°Ρ галлСрСя для Π²Π°ΡˆΠΈΡ… Ρ„ΠΎΡ‚ΠΎΠ°Π»ΡŒΠ±ΠΎΠΌΠΎΠ²"
-#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:115
-#: ../../extend/addon/hzaddons/gallery/gallery.php:28
+#: ../../extend/addon/hzaddons/gallery/Mod_Gallery.php:135
+#: ../../extend/addon/hzaddons/gallery/gallery.php:38
msgid "Gallery"
msgstr "ГалСрСя"
-#: ../../extend/addon/hzaddons/gallery/gallery.php:31
+#: ../../extend/addon/hzaddons/gallery/gallery.php:41
msgid "Photo Gallery"
msgstr "ЀотогалСрСя"
@@ -12532,9 +12618,13 @@ msgstr "ЀотогалСрСя"
msgid "Friendica Crosspost Connector Settings saved."
msgstr "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Friendica сохранСны."
+#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:36
+msgid "Friendica Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Friendica\""
+
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:37
msgid "Relay public postings to a connected Friendica account"
-msgstr "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись Friendica"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись Friendica"
#: ../../extend/addon/hzaddons/rtof/Mod_Rtof.php:49
msgid "Send public postings to Friendica by default"
@@ -12577,27 +12667,31 @@ msgstr "АутСнтификация Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ ΠΎΡ
msgid "Post to Insane Journal"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:24
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:23
msgid "Insane Journal Crosspost Connector Settings saved."
msgstr "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Insane Journal сохранСны."
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:37
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:35
+msgid "Insane Journal Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Insane Journal\""
+
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:36
msgid "Relay public postings to Insane Journal"
-msgstr "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Insane Journal"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:54
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:53
msgid "InsaneJournal username"
msgstr "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:58
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:57
msgid "InsaneJournal password"
msgstr "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Insane Journal"
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:62
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:61
msgid "Post to InsaneJournal by default"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Insane Journal ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:70
+#: ../../extend/addon/hzaddons/ijpost/Mod_Ijpost.php:69
msgid "Insane Journal Crosspost Connector"
msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Insane Journal"
@@ -12622,21 +12716,34 @@ msgstr "Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ваши Ρ„Π°Π
msgid "file"
msgstr "Ρ„Π°ΠΉΠ»"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:102
+#: ../../extend/addon/hzaddons/twitter/twitter.php:107
msgid "Post to Twitter"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Twitter"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:158
+#: ../../extend/addon/hzaddons/twitter/twitter.php:612
+#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:95
+msgid "Submit Settings"
+msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ настройки"
+
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:65
msgid "Twitter settings updated."
msgstr "Настройки Twitter ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:187
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:78
+msgid "Twitter Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Twitter\""
+
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:79
+msgid "Relay public posts to Twitter"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Twitter"
+
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:103
msgid ""
"No consumer key pair for Twitter found. Please contact your site "
"administrator."
msgstr "НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для Twitter. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с администратором сайта."
-#: ../../extend/addon/hzaddons/twitter/twitter.php:209
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:125
msgid ""
"At this Hubzilla instance the Twitter plugin was enabled but you have not "
"yet connected your account to your Twitter account. To do so click the "
@@ -12645,20 +12752,20 @@ msgid ""
"be posted to Twitter."
msgstr "Π’ этой установкС Hubzilla ΠΏΠ»Π°Π³ΠΈΠ½ Twitter Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ Π² Twitter. Для этого Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅ для получСния PIN-ΠΊΠΎΠ΄Π° ΠΎΡ‚ Twitter ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ. Волько ваши <strong>общСдоступныС</strong> ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² Twitter."
-#: ../../extend/addon/hzaddons/twitter/twitter.php:211
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:127
msgid "Log in with Twitter"
msgstr "Π’ΠΎΠΉΡ‚ΠΈ Π² Twitter"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:214
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:130
msgid "Copy the PIN from Twitter here"
msgstr "Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ PIN-ΠΊΠΎΠ΄ ΠΈΠ· Twitter здСсь"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:236
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:147
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:272
msgid "Currently connected to: "
msgstr "Π’ настоящСС врСмя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ:"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:241
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:152
msgid ""
"<strong>Note:</strong> Due your privacy settings (<em>Hide your profile "
"details from unknown viewers?</em>) the link potentially included in public "
@@ -12666,47 +12773,32 @@ msgid ""
"the visitor that the access to your profile has been restricted."
msgstr "<strong>Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅</strong>: Из-Π·Π° настроСк ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (<em>ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ своСго профиля ΠΎΡ‚ нСизвСстных Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ?</em>) cсылка, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² Twitter, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ посСтитСля ΠΊ пустой страницС, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ Π±Ρ‹Π» ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½."
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-msgid "Allow posting to Twitter"
-msgstr "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Twitter"
-
-#: ../../extend/addon/hzaddons/twitter/twitter.php:246
-msgid ""
-"If enabled your public postings can be posted to the associated Twitter "
-"account"
-msgstr "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² связанной ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Twitter"
-
-#: ../../extend/addon/hzaddons/twitter/twitter.php:250
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:157
msgid "Twitter post length"
msgstr "Π”Π»ΠΈΠ½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Twitter"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:250
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:157
msgid "Maximum tweet length"
msgstr "Максимальная Π΄Π»ΠΈΠ½Π° Ρ‚Π²ΠΈΡ‚Π°"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:162
msgid "Send public postings to Twitter by default"
msgstr "ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Twitter ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:255
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:162
msgid ""
"If enabled your public postings will be posted to the associated Twitter "
"account by default"
msgstr "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² связанной ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Twitter ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:264
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:171
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:291
msgid "Clear OAuth configuration"
msgstr "ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ OAuth"
-#: ../../extend/addon/hzaddons/twitter/twitter.php:273
-msgid "Twitter Post Settings"
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Twitter"
-
-#: ../../extend/addon/hzaddons/twitter/twitter.php:782
-#: ../../extend/addon/hzaddons/rendezvous/rendezvous.php:95
-msgid "Submit Settings"
-msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ настройки"
+#: ../../extend/addon/hzaddons/twitter/Mod_Twitter.php:181
+msgid "Twitter Crosspost Connector"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Twitter"
#: ../../extend/addon/hzaddons/tour/tour.php:76
msgid "Edit your profile and change settings."
@@ -12783,7 +12875,7 @@ msgstr "НаТмитС сюда Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ тСкстом,
#: ../../extend/addon/hzaddons/tour/tour.php:95
msgid "You can write an optional title for your update (good for long posts)."
-msgstr "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для вашСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… постов)."
+msgstr "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для вашСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ)."
#: ../../extend/addon/hzaddons/tour/tour.php:96
msgid "Entering some categories here makes it easier to find your post later."
@@ -12870,6 +12962,10 @@ msgstr "Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Hubzilla! Π–Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ
msgid "Block Completely"
msgstr "Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ"
+#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:20
+msgid "Superblock App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Superblock"
+
#: ../../extend/addon/hzaddons/superblock/Mod_Superblock.php:21
msgid "Block channels"
msgstr "Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π½Π°Π»Ρ‹"
@@ -13137,15 +13233,17 @@ msgid ""
"increase your anonymity in the web."
msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photo Cache сохраняСт копию ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π½Π΅ΡˆΠ½ΠΈΡ… сайтов локально для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ вашСй анонимности Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚."
+#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:42
+msgid "Photo Cache App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photo Cache"
+
#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:53
msgid "Minimal photo size for caching"
msgstr "ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ"
#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:55
-msgid ""
-"In pixels. 0 will be replaced with system default, from 1 up to 1024 (large "
-"images will be scaled to this value)."
-msgstr "Π’ пискСлях. 0 Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚ 1 Π΄ΠΎ 1024 (большиС изобраТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄ΠΎ этого значСния)."
+msgid "In pixels. From 1 up to 1024, 0 will be replaced with system default."
+msgstr "Π’ пиксСлях. ΠžΡ‚ 1 Π΄ΠΎ 1024, 0 Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ."
#: ../../extend/addon/hzaddons/photocache/Mod_Photocache.php:64
msgid "Photo Cache"
@@ -13370,77 +13468,78 @@ msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ отслСТиваниС ошибок JavaScript Π½Π° Ρ
msgid "This feature requires Piwik >= 2.2.0"
msgstr "Π­Ρ‚Π° функция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ Piwik >= 2.2.0"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:148
-msgid "You are now authenticated to pumpio."
-msgstr "Π’Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Pump.io"
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:40
+msgid "Pump.io Settings saved."
+msgstr "Настройки Pump.io сохранСны."
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:149
-msgid "return to the featured settings page"
-msgstr "ВСрнутся ΠΊ страницС настроСк"
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:53
+msgid "Pump.io Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io\""
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:163
-msgid "Post to Pump.io"
-msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io"
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:54
+msgid "Relay public posts to pump.io"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:198
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:73
msgid "Pump.io servername"
msgstr "Имя сСрвСра Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:198
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:73
msgid "Without \"http://\" or \"https://\""
msgstr "Π‘Π΅Π· \"http://\" ΠΈΠ»ΠΈ \"https://\""
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:202
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:77
msgid "Pump.io username"
msgstr "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:202
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:77
msgid "Without the servername"
msgstr "Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ сСрвСра"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:213
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:88
msgid "You are not authenticated to pumpio"
msgstr "Π’Ρ‹ Π½Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:215
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:90
msgid "(Re-)Authenticate your pump.io connection"
msgstr "ΠΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ) вашС соСдинСниС с Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:219
-msgid "Enable pump.io Post Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io"
-
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:223
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:94
msgid "Post to pump.io by default"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:227
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:98
msgid "Should posts be public"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ общСдоступными"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:231
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:102
msgid "Mirror all public posts"
msgstr "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ всС общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:237
-msgid "Pump.io Post Settings"
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Pump.io"
+#: ../../extend/addon/hzaddons/pumpio/Mod_Pumpio.php:112
+msgid "Pump.io Crosspost Connector"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io"
+
+#: ../../extend/addon/hzaddons/pumpio/pumpio.php:152
+msgid "You are now authenticated to pumpio."
+msgstr "Π’Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Pump.io"
-#: ../../extend/addon/hzaddons/pumpio/pumpio.php:266
-msgid "PumpIO Settings saved."
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Pump.io сохранСны."
+#: ../../extend/addon/hzaddons/pumpio/pumpio.php:153
+msgid "return to the featured settings page"
+msgstr "ВСрнутся ΠΊ страницС настроСк"
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:125
-msgid "Nsabait Settings updated."
-msgstr "Настройки Nsabait ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹"
+#: ../../extend/addon/hzaddons/pumpio/pumpio.php:168
+msgid "Post to Pump.io"
+msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io"
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:157
-msgid "Enable NSAbait Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ NSAbait"
+#: ../../extend/addon/hzaddons/nsabait/Mod_Nsabait.php:20
+#: ../../extend/addon/hzaddons/nsabait/Mod_Nsabait.php:24
+msgid "NSA Bait App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ NSA Bait"
-#: ../../extend/addon/hzaddons/nsabait/nsabait.php:161
-msgid "NSAbait Settings"
-msgstr "Настройки Nsabait"
+#: ../../extend/addon/hzaddons/nsabait/Mod_Nsabait.php:26
+msgid "Make yourself a political target"
+msgstr "Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ сСбя политичСской мишСнью"
#: ../../extend/addon/hzaddons/mailtest/mailtest.php:19
msgid "Send test email"
@@ -13607,29 +13706,33 @@ msgstr "Начиная с Π΄Π°Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ yyyy-mm-dd"
msgid "Until modified date yyyy-mm-dd"
msgstr "Заканчивая Π΄Π°Ρ‚ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ yyyy-mm-dd"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:42
+#: ../../extend/addon/hzaddons/ljpost/ljpost.php:45
msgid "Post to Livejournal"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Livejournal"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:73
-msgid "Enable Livejournal Post Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Livejournal"
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:36
+msgid "Livejournal Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Livejournal\""
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:77
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:37
+msgid "Relay public posts to Livejournal"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Livejournal"
+
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:54
msgid "Livejournal username"
msgstr "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Livejournal"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:81
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:58
msgid "Livejournal password"
msgstr "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Livejournal"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:85
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:62
msgid "Post to Livejournal by default"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Livejournal ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/ljpost/ljpost.php:89
-msgid "Livejournal Post Settings"
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Livejournal"
+#: ../../extend/addon/hzaddons/ljpost/Mod_Ljpost.php:70
+msgid "Livejournal Crosspost Connector"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Livejournal"
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:61
msgid ""
@@ -13645,10 +13748,15 @@ msgstr "Нам Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ с GNU So
msgid "GNU social settings updated."
msgstr "Настройки GNU Social ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹."
+#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:146
+#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:50
+msgid "Hubzilla Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla\""
+
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:147
msgid ""
"Relay public postings to a connected GNU social account (formerly StatusNet)"
-msgstr "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись GNU social (Π±Ρ‹Π²ΡˆΠ°Ρ StatusNet)"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись GNU social (Π±Ρ‹Π²ΡˆΠ°Ρ StatusNet)"
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:181
msgid "Globally Available GNU social OAuthKeys"
@@ -13742,7 +13850,7 @@ msgstr "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»Π
#: ../../extend/addon/hzaddons/statusnet/Mod_Statusnet.php:303
msgid "GNU-Social Crosspost Connector"
-msgstr ""
+msgstr "ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ GNU Social"
#: ../../extend/addon/hzaddons/statusnet/statusnet.php:145
msgid "Post to GNU social"
@@ -13915,9 +14023,13 @@ msgstr "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС Π±Ρ‹Π»ΠΎ:"
msgid "OpenID protocol error. No ID returned."
msgstr "Ошибка ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° OpenID. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½."
+#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:50
+msgid "Startpage App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Бтартовая страница\""
+
#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:51
msgid "Set a preferred page to load on login from home page"
-msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ страницу для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ с домашнСй страницы"
+msgstr "УстанавливаСт ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ страницу для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ с домашнСй страницы"
#: ../../extend/addon/hzaddons/startpage/Mod_Startpage.php:62
msgid "Page to load after login"
@@ -14006,7 +14118,7 @@ msgid "Base Merchant Currency"
msgstr "Основная торговая Π²Π°Π»ΡŽΡ‚Π°"
#: ../../extend/addon/hzaddons/cart/Settings/Cart.php:111
-#: ../../extend/addon/hzaddons/cart/cart.php:1262
+#: ../../extend/addon/hzaddons/cart/cart.php:1263
msgid "Cart Settings"
msgstr "Настройки ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ"
@@ -14160,7 +14272,7 @@ msgstr "Кнопка Paypal для ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ настроСна Π½Π΅ΠΏΡ€Π
#: ../../extend/addon/hzaddons/cart/submodules/paypalbutton.php:392
#: ../../extend/addon/hzaddons/cart/manual_payments.php:68
-#: ../../extend/addon/hzaddons/cart/cart.php:1465
+#: ../../extend/addon/hzaddons/cart/cart.php:1466
msgid "Order not found."
msgstr "Π—Π°ΠΊΠ°Π· Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½."
@@ -14173,7 +14285,7 @@ msgid "Access Denied."
msgstr "Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½."
#: ../../extend/addon/hzaddons/cart/myshop.php:111
-#: ../../extend/addon/hzaddons/cart/cart.php:1333
+#: ../../extend/addon/hzaddons/cart/cart.php:1334
msgid "Order Not Found"
msgstr "Π—Π°ΠΊΠ°Π· Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½"
@@ -14200,71 +14312,77 @@ msgstr "Π—Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΎ"
msgid "DB Cleanup Failure"
msgstr "Π‘Π±ΠΎΠΉ очистки Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ…"
-#: ../../extend/addon/hzaddons/cart/cart.php:564
+#: ../../extend/addon/hzaddons/cart/cart.php:565
msgid "[cart] Item Added"
msgstr "[cart] Π­Π»Π΅ΠΌΠ΅Π½Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½"
-#: ../../extend/addon/hzaddons/cart/cart.php:952
+#: ../../extend/addon/hzaddons/cart/cart.php:953
msgid "Order already checked out."
msgstr "Π—Π°ΠΊΠ°Π· ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½."
-#: ../../extend/addon/hzaddons/cart/cart.php:1255
+#: ../../extend/addon/hzaddons/cart/cart.php:1256
msgid "Drop database tables when uninstalling."
msgstr "Π‘Π±Ρ€ΠΎΡΠΈΡ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΡ€ΠΈ дСинсталляции"
-#: ../../extend/addon/hzaddons/cart/cart.php:1274
-#: ../../extend/addon/hzaddons/cart/cart.php:1277
+#: ../../extend/addon/hzaddons/cart/cart.php:1275
+#: ../../extend/addon/hzaddons/cart/cart.php:1278
msgid "Shop"
msgstr "Магазин"
-#: ../../extend/addon/hzaddons/cart/cart.php:1394
+#: ../../extend/addon/hzaddons/cart/cart.php:1395
msgid "Cart utilities for orders and payments"
msgstr "Π£Ρ‚ΠΈΠ»ΠΈΡ‚Ρ‹ ΠΊΠ°Ρ€Ρ‚ΠΎΡ‡Π΅ΠΊ для Π·Π°ΠΊΠ°Π·ΠΎΠ² ΠΈ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ΅ΠΉ"
-#: ../../extend/addon/hzaddons/cart/cart.php:1432
+#: ../../extend/addon/hzaddons/cart/cart.php:1433
msgid "You must be logged into the Grid to shop."
msgstr "Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π² сСти для доступа ΠΊ ΠΌΠ°Π³Π°Π·ΠΈΠ½Ρƒ"
-#: ../../extend/addon/hzaddons/cart/cart.php:1473
+#: ../../extend/addon/hzaddons/cart/cart.php:1474
msgid "Access denied."
msgstr "Доступ Π·Π°ΠΏΡ€Π΅Ρ‰Ρ‘Π½."
-#: ../../extend/addon/hzaddons/cart/cart.php:1525
-#: ../../extend/addon/hzaddons/cart/cart.php:1668
+#: ../../extend/addon/hzaddons/cart/cart.php:1526
+#: ../../extend/addon/hzaddons/cart/cart.php:1669
msgid "No Order Found"
msgstr "НСт Π½Π°ΠΉΠ΄Π΅Π½Π½Ρ‹Ρ… Π·Π°ΠΊΠ°Π·ΠΎΠ²"
-#: ../../extend/addon/hzaddons/cart/cart.php:1534
+#: ../../extend/addon/hzaddons/cart/cart.php:1535
msgid "An unknown error has occurred Please start again."
msgstr "ΠŸΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° нСизвСстная ошибка. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ снова."
-#: ../../extend/addon/hzaddons/cart/cart.php:1701
+#: ../../extend/addon/hzaddons/cart/cart.php:1702
msgid "Invalid Payment Type. Please start again."
msgstr "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Ρ‚ΠΈΠΏ ΠΏΠ»Π°Ρ‚Π΅ΠΆΠ°. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°Ρ‡Π½ΠΈΡ‚Π΅ снова."
-#: ../../extend/addon/hzaddons/cart/cart.php:1708
+#: ../../extend/addon/hzaddons/cart/cart.php:1709
msgid "Order not found"
msgstr "Π—Π°ΠΊΠ°Π· Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:42
+#: ../../extend/addon/hzaddons/nofed/nofed.php:47
msgid "Federate"
msgstr ""
-#: ../../extend/addon/hzaddons/nofed/nofed.php:56
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:21
msgid "nofed Settings saved."
msgstr "Настройки nofed сохранСны."
-#: ../../extend/addon/hzaddons/nofed/nofed.php:72
-msgid "Allow Federation Toggle"
-msgstr "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ"
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:33
+msgid "No Federation App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ No Federation"
+
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:34
+msgid ""
+"Prevent posting from being federated to anybody. It will exist only on your "
+"channel page."
+msgstr "Π—Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ. Они Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° страницС вашСго ΠΊΠ°Π½Π°Π»Π°."
-#: ../../extend/addon/hzaddons/nofed/nofed.php:76
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:42
msgid "Federate posts by default"
msgstr "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/nofed/nofed.php:80
-msgid "NoFed Settings"
-msgstr "Настройки NoFed"
+#: ../../extend/addon/hzaddons/nofed/Mod_Nofed.php:50
+msgid "No Federation"
+msgstr ""
#: ../../extend/addon/hzaddons/upgrade_info/upgrade_info.php:43
msgid "Your channel has been upgraded to the latest $Projectname version."
@@ -14361,26 +14479,34 @@ msgstr "Настройки Gravatar ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹."
msgid "WYSIWYG status editor"
msgstr "WYSIWYG Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ статуса "
+#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:21
+#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:26
+msgid "WYSIWYG Status App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"WYSIWYG статус\""
+
#: ../../extend/addon/hzaddons/hsse/Mod_Hsse.php:34
msgid "WYSIWYG Status"
msgstr "WYSIWYG статус"
-#: ../../extend/addon/hzaddons/planets/planets.php:121
-msgid "Planets Settings updated."
-msgstr "Настройки Planets ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹."
+#: ../../extend/addon/hzaddons/planets/Mod_Planets.php:20
+#: ../../extend/addon/hzaddons/planets/Mod_Planets.php:23
+msgid "Random Planet App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Блучайная ΠΏΠ»Π°Π½Π΅Ρ‚Π°\""
-#: ../../extend/addon/hzaddons/planets/planets.php:149
-msgid "Enable Planets Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Planets"
-
-#: ../../extend/addon/hzaddons/planets/planets.php:153
-msgid "Planets Settings"
-msgstr "Настройки Planets"
+#: ../../extend/addon/hzaddons/planets/Mod_Planets.php:25
+msgid ""
+"Set a random planet from the Star Wars Empire as your location when posting"
+msgstr "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠ»Π°Π½Π΅Ρ‚Ρƒ ΠΈΠ· Π˜ΠΌΠΏΠ΅Ρ€ΠΈΠΈ Π—Π²Π΅Π·Π΄Π½Ρ‹Ρ… Π’ΠΎΠΉΠ½ Π² качСствС вашСго мСстополоТСния ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:15
msgid "Add some colour to tag clouds"
msgstr "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° для ΠΎΠ±Π»Π°ΠΊΠ° Ρ‚Π΅Π³ΠΎΠ²"
+#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:21
+#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:26
+msgid "Rainbow Tag App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π Π°Π΄ΡƒΠ³Π° Ρ‚Π΅Π³ΠΎΠ²\""
+
#: ../../extend/addon/hzaddons/rainbowtag/Mod_Rainbowtag.php:34
msgid "Rainbow Tag"
msgstr "Π Π°Π΄ΡƒΠ³Π° Ρ‚Π΅Π³ΠΎΠ²"
@@ -14388,7 +14514,7 @@ msgstr "Π Π°Π΄ΡƒΠ³Π° Ρ‚Π΅Π³ΠΎΠ²"
#: ../../extend/addon/hzaddons/chess/chess.php:353
#: ../../extend/addon/hzaddons/chess/chess.php:542
msgid "Invalid game."
-msgstr "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ³Ρ€Π°"
+msgstr "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ³Ρ€Π°."
#: ../../extend/addon/hzaddons/chess/chess.php:359
#: ../../extend/addon/hzaddons/chess/chess.php:582
@@ -14435,22 +14561,117 @@ msgid ""
"locations."
msgstr "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°."
+#: ../../extend/addon/hzaddons/gnusoc/Mod_Gnusoc.php:22
+msgid "GNU-Social Protocol App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social\""
+
#: ../../extend/addon/hzaddons/gnusoc/Mod_Gnusoc.php:34
msgid "GNU-Social Protocol"
msgstr "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social"
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:43
-msgid "Message to display on every page on this server"
-msgstr "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ сообщСниС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Π½Π° этом сСрвСрС."
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:23
+msgid "TOTP Two-Step Verification"
+msgstr "Двухэтапная вСрификация TOTP"
+
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:24
+msgid "Enter the 2-step verification generated by your authenticator app:"
+msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, созданный вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
+
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:25
+msgid "Success!"
+msgstr "УспСх!"
+
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:26
+msgid "Invalid code, please try again."
+msgstr "НСвСрный ΠΊΠΎΠ΄. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Ρ‰Ρ‘ Ρ€Π°Π·."
+
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:27
+msgid "Too many invalid codes..."
+msgstr "Блишком ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ²..."
+
+#: ../../extend/addon/hzaddons/totp/Mod_Totp.php:28
+msgid "Verify"
+msgstr "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:90
+msgid ""
+"You haven't set a TOTP secret yet.\n"
+"Please click the button below to generate one and register this site\n"
+"with your preferred authenticator app."
+msgstr "Π’Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ установили сСкрСтный ΠΊΠΎΠ΄ TOTP. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сайт Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ."
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:48
-msgid "Pageheader Settings"
-msgstr "Настройки шапки страницы"
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:93
+msgid "Your TOTP secret is"
+msgstr "Π’Π°Ρˆ сСкрСтный ΠΊΠΎΠ΄ TOTP"
-#: ../../extend/addon/hzaddons/pageheader/pageheader.php:64
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:94
+msgid ""
+"Be sure to save it somewhere in case you lose or replace your mobile "
+"device.\n"
+"Use your mobile device to scan the QR code below to register this site\n"
+"with your preferred authenticator app."
+msgstr "ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сохранитС Π΅Π³ΠΎ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° случай ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ мобильного устройства. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мобильного устройства отсканируйтС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ QR-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сайт Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ."
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:99
+msgid "Test"
+msgstr "ВСст"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:100
+msgid "Generate New Secret"
+msgstr "Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСкрСтный ΠΊΠΎΠ΄"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:101
+msgid "Go"
+msgstr "Π’ΠΏΠ΅Ρ€Ρ‘Π΄"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:102
+msgid "Enter your password"
+msgstr "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ваш ΠΏΠ°Ρ€ΠΎΠ»ΡŒ"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:103
+msgid "enter TOTP code from your device"
+msgstr "Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ TOTP ΠΈΠ· вашСго устройства"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:104
+msgid "Pass!"
+msgstr "ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ!"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:105
+msgid "Fail"
+msgstr "ΠžΡ‚ΠΊΠ°Π·Π°Π½ΠΎ"
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:106
+msgid "Incorrect password, try again."
+msgstr "НСвСрный ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ снова."
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:107
+msgid "Record your new TOTP secret and rescan the QR code above."
+msgstr "Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ваш сСкрСтный ΠΊΠΎΠ΄ TOTP ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ отсканируйтС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ QR-ΠΊΠΎΠ΄."
+
+#: ../../extend/addon/hzaddons/totp/Settings/Totp.php:115
+msgid "TOTP Settings"
+msgstr "Настройки TOTP"
+
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:22
msgid "pageheader Settings saved."
msgstr "Настройки шапки страницы сохранСны."
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:34
+msgid "Page Header App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы\""
+
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:35
+msgid "Inserts a page header"
+msgstr "ВставляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы"
+
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:43
+msgid "Message to display on every page on this server"
+msgstr "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ сообщСниС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Π½Π° этом сСрвСрС."
+
+#: ../../extend/addon/hzaddons/pageheader/Mod_Pageheader.php:51
+msgid "Page Header"
+msgstr "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы"
+
#: ../../extend/addon/hzaddons/msgfooter/msgfooter.php:47
msgid "text to include in all outgoing posts from this site"
msgstr "тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΠΎ всС исходящиС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ с этого сайта"
@@ -14476,17 +14697,21 @@ msgstr "АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ отправитСля"
msgid "Test mode (only send to hub administrator)"
msgstr "ВСстовый Ρ€Π΅ΠΆΠΈΠΌ (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ администратору ΡƒΠ·Π»Π°)"
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:211
-msgid "Deactivate the feature"
-msgstr "Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ"
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:35
+msgid "Smileybutton App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Кнопка со смайликам\""
+
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:36
+msgid "Adds a smileybutton to the jot editor"
+msgstr "Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ со смайликами Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Jot"
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:215
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:44
msgid "Hide the button and show the smilies directly."
msgstr "Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ смайлики."
-#: ../../extend/addon/hzaddons/smileybutton/smileybutton.php:219
+#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:52
msgid "Smileybutton Settings"
-msgstr "Настройки ΠΊΠ½ΠΎΠΏΠΊΠΈ смайликов"
+msgstr "Настройки ΠΊΠ½ΠΎΠΏΠΊΠΈ со смайликами"
#: ../../extend/addon/hzaddons/frphotos/frphotos.php:92
msgid "Friendica Photo Album Import"
@@ -14687,6 +14912,10 @@ msgstr "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π² %s. РСгистрация Π½
msgid "Send your identity to all websites"
msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ваши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° всС Π²Π΅Π±-сайты"
+#: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:20
+msgid "Sendzid App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ZID\""
+
#: ../../extend/addon/hzaddons/sendzid/Mod_Sendzid.php:32
msgid "Send ZID"
msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ZID"
@@ -14695,6 +14924,18 @@ msgstr "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ZID"
msgid "Who likes me?"
msgstr "ΠšΠΎΠΌΡƒ я Π½Ρ€Π°Π²Π»ΡŽΡΡŒ?"
+#: ../../extend/addon/hzaddons/queueworker/Mod_Queueworker.php:73
+msgid "Max queueworker threads"
+msgstr "Макс. количСство ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ"
+
+#: ../../extend/addon/hzaddons/queueworker/Mod_Queueworker.php:87
+msgid "Assume workers dead after ___ seconds"
+msgstr "Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· сСкунд"
+
+#: ../../extend/addon/hzaddons/queueworker/Mod_Queueworker.php:99
+msgid "Queueworker Settings"
+msgstr "Настройки ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ"
+
#: ../../extend/addon/hzaddons/moremoods/moremoods.php:19
msgid "lonely"
msgstr "ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈΠΉ"
@@ -14783,35 +15024,18 @@ msgstr "Π·Π°Π²ΠΈΠ΄ΡƒΠ΅Ρ‚"
msgid "jealous"
msgstr "Ρ€Π΅Π²Π½ΡƒΠ΅Ρ‚"
-#: ../../extend/addon/hzaddons/visage/visage.php:93
+#: ../../extend/addon/hzaddons/visage/Mod_Visage.php:21
+msgid "Who viewed my channel/profile"
+msgstr "ΠšΡ‚ΠΎ смотрСл ΠΌΠΎΠΉ ΠΊΠ°Π½Π°Π» / ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ"
+
+#: ../../extend/addon/hzaddons/visage/Mod_Visage.php:25
msgid "Recent Channel/Profile Viewers"
msgstr "ПослСдниС просмотры ΠΊΠ°Π½Π°Π»Π° / профиля"
-#: ../../extend/addon/hzaddons/visage/visage.php:98
-msgid "This plugin/addon has not been configured."
-msgstr "Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ настроСно."
-
-#: ../../extend/addon/hzaddons/visage/visage.php:99
-#, php-format
-msgid "Please visit the Visage settings on %s"
-msgstr "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, посСтитС настройки Visage Π½Π° %s"
-
-#: ../../extend/addon/hzaddons/visage/visage.php:99
-msgid "your feature settings page"
-msgstr "страница Π²Π°ΡˆΠΈΡ… установочных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²"
-
-#: ../../extend/addon/hzaddons/visage/visage.php:112
+#: ../../extend/addon/hzaddons/visage/Mod_Visage.php:36
msgid "No entries."
msgstr "НСт записСй."
-#: ../../extend/addon/hzaddons/visage/visage.php:166
-msgid "Enable Visage Visitor Logging"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ посСтитСлСй Visage"
-
-#: ../../extend/addon/hzaddons/visage/visage.php:170
-msgid "Visage Settings"
-msgstr "Настройки Visage"
-
#: ../../extend/addon/hzaddons/irc/irc.php:45
msgid "Channels to auto connect"
msgstr "ΠšΠ°Π½Π°Π»Ρ‹ для автоматичСского ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ"
@@ -14884,33 +15108,37 @@ msgstr "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ струны для лСвшСй"
msgid "Quick Reference"
msgstr "Быстрая ссылка"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:38
+#: ../../extend/addon/hzaddons/libertree/libertree.php:43
msgid "Post to Libertree"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Libertree"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:69
-msgid "Enable Libertree Post Plugin"
-msgstr "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree"
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:25
+msgid "Libertree Crosspost Connector Settings saved."
+msgstr "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree сохранСны."
+
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:35
+msgid "Libertree Crosspost Connector App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree\""
-#: ../../extend/addon/hzaddons/libertree/libertree.php:73
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:36
+msgid "Relay public posts to Libertree"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Libertree"
+
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:51
msgid "Libertree API token"
msgstr "Π’ΠΎΠΊΠ΅Π½ Libertree API"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:77
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:55
msgid "Libertree site URL"
msgstr "URL сайта Libertree"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:81
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:59
msgid "Post to Libertree by default"
msgstr "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Libertree ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ"
-#: ../../extend/addon/hzaddons/libertree/libertree.php:85
-msgid "Libertree Post Settings"
-msgstr "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Libertree"
-
-#: ../../extend/addon/hzaddons/libertree/libertree.php:99
-msgid "Libertree Settings saved."
-msgstr "Настройки Libertree сохранСны."
+#: ../../extend/addon/hzaddons/libertree/Mod_Libertree.php:67
+msgid "Libertree Crosspost Connector"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree"
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:24
msgid "Channel is required."
@@ -14918,11 +15146,11 @@ msgstr "НСобходим ΠΊΠ°Π½Π°Π»."
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:38
msgid "Hubzilla Crosspost Connector Settings saved."
-msgstr ""
+msgstr "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla сохранСны."
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:51
msgid "Relay public postings to another Hubzilla channel"
-msgstr "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» Hubzilla"
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» Hubzilla"
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:63
msgid "Send public postings to Hubzilla channel by default"
@@ -14942,11 +15170,11 @@ msgstr "НазваниС канала Hubzilla"
#: ../../extend/addon/hzaddons/redred/Mod_Redred.php:87
msgid "Hubzilla Crosspost Connector"
-msgstr ""
+msgstr "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla"
#: ../../extend/addon/hzaddons/redred/redred.php:50
msgid "Post to Hubzilla"
-msgstr ""
+msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Hubzilla"
#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:25
msgid "ActivityPub Protocol Settings updated."
@@ -14959,6 +15187,10 @@ msgid ""
"locations."
msgstr "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ActivityPub Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°."
+#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:40
+msgid "Activitypub Protocol App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ActivityPub\""
+
#: ../../extend/addon/hzaddons/pubcrawl/Mod_Pubcrawl.php:48
msgid "Deliver to ActivityPub recipients in privacy groups"
msgstr "Π”ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ получатСлям ActivityPub Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… бСзопасности"
@@ -14996,6 +15228,10 @@ msgid ""
"locations."
msgstr "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°."
+#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:55
+msgid "Diaspora Protocol App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora\""
+
#: ../../extend/addon/hzaddons/diaspora/Mod_Diaspora.php:74
msgid "Allow any Diaspora member to comment on your public posts"
msgstr "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ участнику Diaspora ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ"
@@ -15016,6 +15252,11 @@ msgstr "ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, искл
msgid "Diaspora Protocol"
msgstr "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora"
+#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1495
+#, php-format
+msgid "%1$s dislikes %2$s's %3$s"
+msgstr "%1$s Π½Π΅ нравится %2$s's %3$s"
+
#: ../../extend/addon/hzaddons/wppost/wppost.php:46
msgid "Post to WordPress"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² WordPress"
@@ -15024,6 +15265,10 @@ msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² WordPress"
msgid "Wordpress Settings saved."
msgstr "Настройки WordPress сохранСны."
+#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:41
+msgid "Wordpress Post App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² Wordpress\""
+
#: ../../extend/addon/hzaddons/wppost/Mod_Wppost.php:42
msgid "Post to WordPress or anything else which uses the wordpress XMLRPC API"
msgstr "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² WordPress ΠΈΠ»ΠΈ Π² Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ wordpress XMLRPC API"
@@ -15077,6 +15322,10 @@ msgstr "%s - просмотр"
msgid "NSFW Settings saved."
msgstr "Настройки NSFW сохранСны."
+#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:33
+msgid "NSFW App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ NSFW"
+
#: ../../extend/addon/hzaddons/nsfw/Mod_Nsfw.php:34
msgid "Collapse content that contains predefined words"
msgstr "Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ содСрТимоС, содСрТащСС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слова"
@@ -15103,15 +15352,23 @@ msgstr "слово, /рСгулярноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/, lang=xx, lang!=xx
msgid "NSFW"
msgstr ""
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:59
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:32
+msgid "Skeleton App"
+msgstr "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π‘ΠΊΠ΅Π»Π΅Ρ‚\""
+
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:33
+msgid "A skeleton for addons, you can copy/paste"
+msgstr "Π‘ΠΊΠ΅Π»Π΅Ρ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ copy/paste"
+
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:40
msgid "Some setting"
msgstr "НСкоторыС настройки"
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:61
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:40
msgid "A setting"
msgstr "Настройка"
-#: ../../extend/addon/hzaddons/skeleton/skeleton.php:64
+#: ../../extend/addon/hzaddons/skeleton/Mod_Skeleton.php:48
msgid "Skeleton Settings"
msgstr "Настройки скСлСта"
@@ -15129,7 +15386,3 @@ msgstr ""
#: ../../extend/addon/hzaddons/opensearch/opensearch.php:43
msgid "Search $Projectname"
msgstr "Поиск $Projectname"
-
-#: ../../store/[data]/smarty3/compiled/3fbe720b52221cc66640ba6ea030406a047aa52a_0.file.cover_photo.tpl.php:127
-msgid "Cover Photo"
-msgstr ""
diff --git a/view/ru/hstrings.php b/view/ru/hstrings.php
index 30dd01269..c043e011b 100644
--- a/view/ru/hstrings.php
+++ b/view/ru/hstrings.php
@@ -25,7 +25,7 @@ App::$strings["Set the background color of items"] = "Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° элСм
App::$strings["Set the background color of comments"] = "Π¦Π²Π΅Ρ‚ Ρ„ΠΎΠ½Π° ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²";
App::$strings["Set font-size for the entire application"] = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ систСмный Ρ€Π°Π·ΠΌΠ΅Ρ€ ΡˆΡ€ΠΈΡ„Ρ‚Π°";
App::$strings["Examples: 1rem, 100%, 16px"] = "НапримСр: 1rem, 100%, 16px";
-App::$strings["Set font-color for posts and comments"] = "Π¦Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° для постов ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²";
+App::$strings["Set font-color for posts and comments"] = "Π¦Π²Π΅Ρ‚ ΡˆΡ€ΠΈΡ„Ρ‚Π° для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π²";
App::$strings["Set radius of corners"] = "Радиус скруглСний";
App::$strings["Example: 4px"] = "НапримСр: 4px";
App::$strings["Set shadow depth of photos"] = "Π“Π»ΡƒΠ±ΠΈΠ½Π° Ρ‚Π΅Π½Π΅ΠΉ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ";
@@ -444,7 +444,7 @@ App::$strings["An invitation is required."] = "ВрСбуСтся ΠΏΡ€ΠΈΠ³Π»Π°Ρˆ
App::$strings["Invitation could not be verified."] = "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ³Π»Π°ΡˆΠ΅Π½ΠΈΠ΅.";
App::$strings["Please enter the required information."] = "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π²Π²Π΅Π΄ΠΈΡ‚Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.";
App::$strings["Failed to store account information."] = "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°.";
-App::$strings["Registration confirmation for %s"] = "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ рСгистрации для %s";
+App::$strings["Registration confirmation for %s"] = "ΠŸΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π΅Π½ΠΈΠ΅ рСгистрации Π½Π° %s";
App::$strings["Registration request at %s"] = "Запрос рСгистрации Π½Π° %s";
App::$strings["your registration password"] = "ваш ΠΏΠ°Ρ€ΠΎΠ»ΡŒ рСгистрации";
App::$strings["Registration details for %s"] = "РСгистрационныС Π΄Π°Π½Π½Ρ‹Π΅ для %s";
@@ -729,7 +729,6 @@ App::$strings["Directory Options"] = "ΠŸΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π°";
App::$strings["Safe Mode"] = "БСзопасный Ρ€Π΅ΠΆΠΈΠΌ";
App::$strings["Public Forums Only"] = "Волько ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΡƒΠΌΡ‹";
App::$strings["This Website Only"] = "Волько этот Π²Π΅Π±-сайт";
-App::$strings["view full size"] = "ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€";
App::$strings["Friendica"] = "";
App::$strings["OStatus"] = "";
App::$strings["GNU-Social"] = "";
@@ -999,7 +998,7 @@ App::$strings["Privacy group: "] = "Π“Ρ€ΡƒΠΏΠΏΠ° бСзопасности: ";
App::$strings["Invalid channel."] = "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π».";
App::$strings["Token verification failed."] = "НС ΡƒΠ΄Π°Π»ΠΎΡΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΡƒ Ρ‚ΠΎΠΊΠ΅Π½Π°.";
App::$strings["Email Verification Required"] = "ВрСбуСтся ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° адрСса email";
-App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±Ρ‹Π» выслн Π½Π° ваш адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ [%s]. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот Ρ‚ΠΎΠΊΠ΅Π½ здСсь для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этапа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ доставки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ \"Π‘ΠΏΠ°ΠΌ\" Ссли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ письма.";
+App::$strings["A verification token was sent to your email address [%s]. Enter that token here to complete the account verification step. Please allow a few minutes for delivery, and check your spam folder if you do not see the message."] = "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½ Π±Ρ‹Π» ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ Π½Π° ваш адрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ [%s]. Π’Π²Π΅Π΄ΠΈΡ‚Π΅ этот Ρ‚ΠΎΠΊΠ΅Π½ здСсь для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ этапа ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠ΄ΠΎΠΆΠ΄ΠΈΡ‚Π΅ нСсколько ΠΌΠΈΠ½ΡƒΡ‚ для Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ доставки ΠΈ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ Π²Π°ΡˆΡƒ ΠΏΠ°ΠΏΠΊΡƒ \"Π‘ΠΏΠ°ΠΌ\" Ссли Π²Ρ‹ Π½Π΅ Π²ΠΈΠ΄ΠΈΡ‚Π΅ письма.";
App::$strings["Resend Email"] = "Π’Ρ‹ΡΠ»Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ";
App::$strings["Validation token"] = "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΎΡ‡Π½Ρ‹ΠΉ Ρ‚ΠΎΠΊΠ΅Π½";
App::$strings["No channel."] = "Канала Π½Π΅Ρ‚.";
@@ -1117,6 +1116,8 @@ App::$strings["Posts and comments"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ
App::$strings["Only posts"] = "Волько ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
App::$strings["vcard"] = "vCard";
App::$strings["You must be logged in to see this page."] = "Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ эту страницу.";
+App::$strings["&#x1f501; Repeated %1\$s's %2\$s"] = "&#x1f501; ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΠ» %1\$s %2\$s";
+App::$strings["Post repeated"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ повторяСтся";
App::$strings["No more system notifications."] = "НСт Π½ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠΎΠ²Π΅Ρ‰Π΅Π½ΠΈΠΉ систСмы.";
App::$strings["System Notifications"] = "БистСмныС оповСщСния ";
App::$strings["%s element installed"] = "%s элСмСнт установлСн";
@@ -1549,6 +1550,8 @@ App::$strings["Default maximum affinity level"] = "ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€
App::$strings["0-99 default 99"] = "0-99 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 99)";
App::$strings["Default minimum affinity level"] = "ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ сходства ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.";
App::$strings["0-99 - default 0"] = "0-99 (ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ 0)";
+App::$strings["Always reset on new page visit."] = "ВсСгда ΡΠ±Ρ€Π°ΡΡ‹Π²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ посСщСнии Π½ΠΎΠ²ΠΎΠΉ страницы.";
+App::$strings["default: yes"] = "ΠΏΠΎ-ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ: Π΄Π°";
App::$strings["Affinity Slider Settings"] = "Настройки слайдСра сходства";
App::$strings["Addon Settings"] = "Настройки Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ";
App::$strings["Please save/submit changes to any panel before opening another."] = "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° сохранитС / ΠΎΡ‚ΠΏΡ€Π°Π²ΡŒΡ‚Π΅ измСнСния Π½Π° ΠΏΠ°Π½Π΅Π»ΠΈ ΠΏΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΎΡ‚ΠΊΡ€Ρ‹Π²Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΡƒΡŽ.";
@@ -1788,6 +1791,7 @@ App::$strings["Unable to check command line PHP, as shell_exec() is disabled. Th
App::$strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Π’ консольной вСрсии PHP Π² вашСй систСмС ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½Π° опция \"register_argc_argv\".";
App::$strings["This is required for message delivery to work."] = "Π­Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для функционирования доставки сообщСний.";
App::$strings["PHP register_argc_argv"] = "";
+App::$strings["This is not sufficient to upload larger images or files. You should be able to upload at least 4 MB at once."] = "Π­Ρ‚ΠΎΠ³ΠΎ нСдостаточно для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ ΠΈΠ»ΠΈ Ρ„Π°ΠΉΠ»ΠΎΠ². Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠΌΠ΅Ρ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°Π³Ρ€ΡƒΠ·ΠΈΡ‚ΡŒ ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ 4 Мб Π·Π° Ρ€Π°Π·.";
App::$strings["Your max allowed total upload size is set to %s. Maximum size of one file to upload is set to %s. You are allowed to upload up to %d files at once."] = "Максимально Ρ€Π°Π·Ρ€Π΅ΡˆΡ‘Π½Π½Ρ‹ΠΉ ΠΎΠ±Ρ‰ΠΈΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΎΠΊ установлСн Π² %s. ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ установлСн Π² %s. Π’Π°ΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΎ Π·Π°Π³Ρ€ΡƒΠΆΠ°Ρ‚ΡŒ Π΄ΠΎ %d Ρ„Π°ΠΉΠ»ΠΎΠ² Π·Π° ΠΎΠ΄ΠΈΠ½ ΠΏΡ€ΠΈΡ‘ΠΌ.";
App::$strings["You can adjust these settings in the server php.ini file."] = "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ эти настройки Π² Ρ„Π°ΠΉΠ»Π΅ php.ini Π½Π° сСрвСрС.";
App::$strings["PHP upload limits"] = "ΠœΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² PHP";
@@ -2630,7 +2634,7 @@ App::$strings["Can view my wiki pages"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ
App::$strings["Can create/edit my channel webpages"] = "ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΈ Π²Π΅Π±-страницы";
App::$strings["Can write to my wiki pages"] = "ΠœΠΎΠΆΠ΅Ρ‚ Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΌΠΎΠΈ Π²ΠΈΠΊΠΈ-страницы";
App::$strings["Can post on my channel (wall) page"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π½Π° ΠΌΠΎΠ΅ΠΉ страницС ΠΊΠ°Π½Π°Π»Π°";
-App::$strings["Can comment on or like my posts"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΌΠΎΠΈ посты";
+App::$strings["Can comment on or like my posts"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ²ΡˆΠΈΠ΅ΡΡ ΠΌΠΎΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
App::$strings["Can send me private mail messages"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΌΠ½Π΅ Π»ΠΈΡ‡Π½Ρ‹Π΅ сообщСния ΠΏΠΎ эл. ΠΏΠΎΡ‡Ρ‚Π΅";
App::$strings["Can like/dislike profiles and profile things"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ нравится/нСнравится ΠΌΠΎΠΉ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ";
App::$strings["Can forward to all my channel connections via ! mentions in posts"] = "ΠœΠΎΠΆΠ΅Ρ‚ ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»Π°Ρ‚ΡŒ всСм подписчикам ΠΌΠΎΠ΅Π³ΠΎ ΠΊΠ°Π½Π°Π»Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ! Π² публикациях";
@@ -2757,13 +2761,16 @@ App::$strings["Add to app-tray"] = "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π² app-tray";
App::$strings["Remove from app-tray"] = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ ΠΈΠ· app-tray";
App::$strings["Pin to navbar"] = "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π° панСль Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ";
App::$strings["Unpin from navbar"] = "Π£Π΄Π°Π»ΠΈΡ‚ΡŒ с ΠΏΠ°Π½Π΅Π»ΠΈ Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ";
-App::$strings["I will attend"] = "Π― Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ";
-App::$strings["I will not attend"] = "Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ";
+App::$strings["Privacy conflict. Discretion advised."] = "ΠšΠΎΠ½Ρ„ΠΈΠ»ΠΈΠΊΡ‚ настроСк ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.";
+App::$strings["I will attend"] = "Π― Π±ΡƒΠ΄Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ";
+App::$strings["I will not attend"] = "Π― Π½Π΅ Π±ΡƒΠ΄Ρƒ ΡƒΡ‡Π°ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ";
App::$strings["I might attend"] = "Π― Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Ρƒ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ";
App::$strings["I agree"] = "Я согласСн";
App::$strings["I disagree"] = "Я нС согласСн";
App::$strings["I abstain"] = "Π― воздСрТался";
App::$strings["Add Tag"] = "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Ρ‚Π΅Π³";
+App::$strings["Repeat This"] = "ΠŸΠΎΠ²Ρ‚ΠΎΡ€ΠΈΡ‚ΡŒ это";
+App::$strings["repeat"] = "ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π΅Π½ΠΈΠ΅";
App::$strings["Share This"] = "ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ этим";
App::$strings["share"] = "ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ";
App::$strings["Delivery Report"] = "ΠžΡ‚Ρ‡Ρ‘Ρ‚ ΠΎ доставкС";
@@ -2806,6 +2813,11 @@ App::$strings["This is your default setting for who can view your default channe
App::$strings["This is your default setting for who can view your connections"] = "Π­Ρ‚ΠΎ настройка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ ваши ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹";
App::$strings["This is your default setting for who can view your file storage and photos"] = "Π­Ρ‚ΠΎ настройка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ вашС Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅ Ρ„Π°ΠΉΠ»ΠΎΠ² ΠΈ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ";
App::$strings["This is your default setting for the audience of your webpages"] = "Π­Ρ‚ΠΎ настройка ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ для Π°ΡƒΠ΄ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π²Π°ΡˆΠΈΡ… Π²Π΅Π±-страниц";
+App::$strings["Likes %1\$s's %2\$s"] = "Нравится %1\$s %2\$s";
+App::$strings["Doesn't like %1\$s's %2\$s"] = "НС нравится %1\$s %2\$s";
+App::$strings["Will attend %1\$s's %2\$s"] = "ΠŸΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1\$s %2\$s";
+App::$strings["Will not attend %1\$s's %2\$s"] = "НС ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1\$s %2\$s";
+App::$strings["May attend %1\$s's %2\$s"] = "Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Ρ‚ участиС %1\$s %2\$s";
App::$strings["0. Beginner/Basic"] = "ΠΠ°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΠΉ / Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ";
App::$strings["1. Novice - not skilled but willing to learn"] = "1. Новичок - Π½Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ, Π½ΠΎ ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΠΉ ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ";
App::$strings["2. Intermediate - somewhat comfortable"] = "2. ΠŸΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΎΡ‡Π½Ρ‹ΠΉ - Π±ΠΎΠ»Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΉ";
@@ -2816,11 +2828,13 @@ App::$strings["Wiki updated successfully"] = "Wiki ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅
App::$strings["Wiki files deleted successfully"] = "Wiki ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ ΡƒΠ΄Π°Π»Π΅Π½Π°";
App::$strings["Use markdown for editing posts"] = "Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ язык Ρ€Π°Π·ΠΌΠ΅Ρ‚ΠΊΠΈ Markdown для рСдактирования ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ";
App::$strings["Post to Dreamwidth"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Dreamwidth";
-App::$strings["Enable Dreamwidth Post Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth";
+App::$strings["Dreamwidth Crosspost Connector Settings saved."] = "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth сохранСны.";
+App::$strings["Dreamwidth Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth\"";
+App::$strings["Relay public postings to Dreamwidth"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Dreamwidth";
App::$strings["Dreamwidth username"] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Dreamwidth";
App::$strings["Dreamwidth password"] = "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Dreamwidth";
App::$strings["Post to Dreamwidth by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Dreamwidth ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
-App::$strings["Dreamwidth Post Settings"] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Dreamwidth";
+App::$strings["Dreamwidth Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Dreamwidth";
App::$strings["Project Servers and Resources"] = "Π‘Π΅Ρ€Π²Π΅Ρ€Ρ‹ ΠΈ рСсурсы ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π°";
App::$strings["Project Creator and Tech Lead"] = "Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° ΠΈ тСхничСский Ρ€ΡƒΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒ";
App::$strings["And the hundreds of other people and organisations who helped make the Hubzilla possible."] = "И сотни Π΄Ρ€ΡƒΠ³ΠΈΡ… людСй ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΉ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Π»ΠΈ Π² создании Hubzilla.";
@@ -2842,6 +2856,8 @@ App::$strings["Minimum offset in meters"] = "МинимальноС смСщСн
App::$strings["Maximum offset in meters"] = "МаксимальноС смСщСниС Π² ΠΌΠ΅Ρ‚Ρ€Π°Ρ…";
App::$strings["Fuzzloc Settings"] = "Настройки Fuzzloc";
App::$strings["Allow magic authentication only to websites of your immediate connections"] = "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π²ΠΎΠ»ΡˆΠ΅Π±Π½ΡƒΡŽ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡŽ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° сайтах Π²Π°ΡˆΠΈΡ… нСпосрСдствСнных соСдинСний";
+App::$strings["Authchoose App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Authchoose";
+App::$strings["Installed"] = "УстановлСно";
App::$strings["Authchoose"] = "";
App::$strings["Photos imported"] = "Π€ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹";
App::$strings["Redmatrix Photo Album Import"] = "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ альбом Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Redmatrix";
@@ -2853,11 +2869,13 @@ App::$strings["Import just this album"] = "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊ
App::$strings["Leave blank to import all albums"] = "ΠžΡΡ‚Π°Π²ΡŒΡ‚Π΅ пустым для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° всСх альбомов";
App::$strings["Maximum count to import"] = "МаксимальноС количСство для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°";
App::$strings["0 or blank to import all available"] = "0 ΠΈΠ»ΠΈ пусто для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π° всСх доступных";
+App::$strings["Gallery App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ГалСрСя\"";
App::$strings["A simple gallery for your photo albums"] = "ΠŸΡ€ΠΎΡΡ‚Π°Ρ галлСрСя для Π²Π°ΡˆΠΈΡ… Ρ„ΠΎΡ‚ΠΎΠ°Π»ΡŒΠ±ΠΎΠΌΠΎΠ²";
App::$strings["Gallery"] = "ГалСрСя";
App::$strings["Photo Gallery"] = "ЀотогалСрСя";
App::$strings["Friendica Crosspost Connector Settings saved."] = "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Friendica сохранСны.";
-App::$strings["Relay public postings to a connected Friendica account"] = "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись Friendica";
+App::$strings["Friendica Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Friendica\"";
+App::$strings["Relay public postings to a connected Friendica account"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись Friendica";
App::$strings["Send public postings to Friendica by default"] = "ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π²ΠΎ Friendica ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["Friendica API Path"] = "ΠŸΡƒΡ‚ΡŒ ΠΊ Friendica API";
App::$strings["https://{sitename}/api"] = "";
@@ -2869,7 +2887,8 @@ App::$strings["An account has been created for you."] = "Учётная Π·Π°ΠΏΠΈ
App::$strings["Authentication successful but rejected: account creation is disabled."] = "АутСнтификация Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π° ΡƒΡΠΏΠ΅ΡˆΠ½ΠΎ, Π½ΠΎ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½Π°: созданиС ΡƒΡ‡Π΅Ρ‚Π½ΠΎΠΉ записи ΠΎΡ‚ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ.";
App::$strings["Post to Insane Journal"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Insane Journal";
App::$strings["Insane Journal Crosspost Connector Settings saved."] = "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Insane Journal сохранСны.";
-App::$strings["Relay public postings to Insane Journal"] = "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Insane Journal";
+App::$strings["Insane Journal Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Insane Journal\"";
+App::$strings["Relay public postings to Insane Journal"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Insane Journal";
App::$strings["InsaneJournal username"] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Insane Journal";
App::$strings["InsaneJournal password"] = "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Insane Journal";
App::$strings["Post to InsaneJournal by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Insane Journal ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
@@ -2880,22 +2899,22 @@ App::$strings["Redmatrix File Storage Import"] = "Π˜ΠΌΠΏΠΎΡ€Ρ‚ Ρ„Π°ΠΉΠ»ΠΎΠ²ΠΎΠ³Π
App::$strings["This will import all your Redmatrix cloud files to this channel."] = "Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ваши Ρ„Π°ΠΉΠ»Ρ‹ Π² Redmatrix Π² этот ΠΊΠ°Π½Π°Π».";
App::$strings["file"] = "Ρ„Π°ΠΉΠ»";
App::$strings["Post to Twitter"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Twitter";
+App::$strings["Submit Settings"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ настройки";
App::$strings["Twitter settings updated."] = "Настройки Twitter ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹";
+App::$strings["Twitter Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Twitter\"";
+App::$strings["Relay public posts to Twitter"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Twitter";
App::$strings["No consumer key pair for Twitter found. Please contact your site administrator."] = "НС Π½Π°ΠΉΠ΄Π΅Π½ΠΎ ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ для Twitter. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с администратором сайта.";
App::$strings["At this Hubzilla instance the Twitter plugin was enabled but you have not yet connected your account to your Twitter account. To do so click the button below to get a PIN from Twitter which you have to copy into the input box below and submit the form. Only your <strong>public</strong> posts will be posted to Twitter."] = "Π’ этой установкС Hubzilla ΠΏΠ»Π°Π³ΠΈΠ½ Twitter Π±Ρ‹Π» Π²ΠΊΠ»ΡŽΡ‡Ρ‘Π½, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Ρƒ Π² Twitter. Для этого Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅ для получСния PIN-ΠΊΠΎΠ΄Π° ΠΎΡ‚ Twitter ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½ΡƒΠΆΠ½ΠΎ ΡΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΏΠΎΠ»Π΅ Π²Π²ΠΎΠ΄Π° ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ. Волько ваши <strong>общСдоступныС</strong> ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² Twitter.";
App::$strings["Log in with Twitter"] = "Π’ΠΎΠΉΡ‚ΠΈ Π² Twitter";
App::$strings["Copy the PIN from Twitter here"] = "Π‘ΠΊΠΎΠΏΠΈΡ€ΡƒΠΉΡ‚Π΅ PIN-ΠΊΠΎΠ΄ ΠΈΠ· Twitter здСсь";
App::$strings["Currently connected to: "] = "Π’ настоящСС врСмя ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½ ΠΊ:";
App::$strings["<strong>Note:</strong> Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to Twitter will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅</strong>: Из-Π·Π° настроСк ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (<em>ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ своСго профиля ΠΎΡ‚ нСизвСстных Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ?</em>) cсылка, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² Twitter, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ посСтитСля ΠΊ пустой страницС, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ Π±Ρ‹Π» ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½.";
-App::$strings["Allow posting to Twitter"] = "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Twitter";
-App::$strings["If enabled your public postings can be posted to the associated Twitter account"] = "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² связанной ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Twitter";
App::$strings["Twitter post length"] = "Π”Π»ΠΈΠ½Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Twitter";
App::$strings["Maximum tweet length"] = "Максимальная Π΄Π»ΠΈΠ½Π° Ρ‚Π²ΠΈΡ‚Π°";
App::$strings["Send public postings to Twitter by default"] = "ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Twitter ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["If enabled your public postings will be posted to the associated Twitter account by default"] = "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² связанной ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи Twitter ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["Clear OAuth configuration"] = "ΠžΡ‡ΠΈΡΡ‚ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΡŽ OAuth";
-App::$strings["Twitter Post Settings"] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Twitter";
-App::$strings["Submit Settings"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ настройки";
+App::$strings["Twitter Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Twitter";
App::$strings["Edit your profile and change settings."] = "ΠžΡ‚Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваш ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ ΠΈ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ настройки.";
App::$strings["Click here to see activity from your connections."] = "НаТмитС сюда для отобраТСния активности ваши ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ΠΎΠ².";
App::$strings["Click here to see your channel home."] = "НаТмитС сюда Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Π³Π»Π°Π²Π½ΡƒΡŽ страницу вашСго ΠΊΠ°Π½Π°Π»Π°.";
@@ -2913,7 +2932,7 @@ App::$strings["There are events this week. Click here too see which!"] = "На Ρ
App::$strings["You have received a new introduction. Click here to see who!"] = "Π’Ρ‹ Π±Ρ‹Π»ΠΈ прСдставлСны. НаТмитС Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΊΠΎΠΌΡƒ!";
App::$strings["There is a new system notification. Click here to see what has happened!"] = "Π­Ρ‚ΠΎ Π½ΠΎΠ²ΠΎΠ΅ систСмноС ΡƒΠ²Π΅Π΄ΠΎΠΌΠ»Π΅Π½ΠΈΠ΅. НаТмитС Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Ρ‡Ρ‚ΠΎ ΡΠ»ΡƒΡ‡ΠΈΠ»ΠΎΡΡŒ!";
App::$strings["Click here to share text, images, videos and sound."] = "НаТмитС сюда Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ тСкстом, изобраТСниями, Π²ΠΈΠ΄Π΅ΠΎ ΠΈΠ»ΠΈ Ρ‚Ρ€Π΅ΠΊΠΎΠΌ.";
-App::$strings["You can write an optional title for your update (good for long posts)."] = "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для вашСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… постов).";
+App::$strings["You can write an optional title for your update (good for long posts)."] = "Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π½Π΅ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ для вашСй ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ (ΠΆΠ΅Π»Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ для Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ).";
App::$strings["Entering some categories here makes it easier to find your post later."] = "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ здСсь Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ Π½Π°ΠΉΡ‚ΠΈ Π²Π°ΡˆΡƒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ ΠΏΠΎΠ·Π΄Π½Π΅Π΅.";
App::$strings["Share photos, links, location, etc."] = "ΠŸΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠ΅ΠΉ, ссылками, мСстополоТСниС ΠΈ Ρ‚.ΠΏ.";
App::$strings["Only want to share content for a while? Make it expire at a certain date."] = "Π₯ΠΎΡ‚ΠΈΡ‚Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ содСрТимым? УстановитС срок Π΅Π³ΠΎ дСйствия.";
@@ -2932,6 +2951,7 @@ App::$strings["If you see this icon you can be sure that the sender is who it sa
App::$strings["Danger! It seems someone tried to forge a message! This message is not necessarily from who it says it is from!"] = "ΠžΠΏΠ°ΡΠ½ΠΎΡΡ‚ΡŒ! ΠšΠ°ΠΆΠ΅Ρ‚ΡΡ, ΠΊΡ‚ΠΎ-Ρ‚ΠΎ пытался ΠΏΠΎΠ΄Π΄Π΅Π»Π°Ρ‚ΡŒ сообщСниС! Π­Ρ‚ΠΎ сообщСниС Π½Π΅ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ ΠΎΠ½ΠΎ значится!";
App::$strings["Welcome to Hubzilla! Would you like to see a tour of the UI?</p> <p>You can pause it at any time and continue where you left off by reloading the page, or navigting to another page.</p><p>You can also advance by pressing the return key"] = "Π”ΠΎΠ±Ρ€ΠΎ ΠΏΠΎΠΆΠ°Π»ΠΎΠ²Π°Ρ‚ΡŒ Π² Hubzilla! Π–Π΅Π»Π°Π΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Π·ΠΎΡ€ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠ³ΠΎ интСрфСйса?</p> <p>Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΅Π³ΠΎ ΠΏΡ€ΠΈΠΎΡΡ‚Π°Π½ΠΎΠ²Π°ΠΈΡ‚ΡŒ ΠΈ Π² любоС врСмя ΠΏΠ΅Ρ€Π΅Π·Π°Π³Ρ€ΡƒΠ·ΠΈΠ² страницу ΠΈΠ»ΠΈ пСрСйдя Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ.</p><p>Π’Π°ΠΊΠΆΠ΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°ΠΆΠ°Ρ‚ΡŒ ΠΊΠ»Π°Π²ΠΈΡˆΡƒ \"Назад\"";
App::$strings["Block Completely"] = "Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ";
+App::$strings["Superblock App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Superblock";
App::$strings["Block channels"] = "Π—Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°Π½Π°Π»Ρ‹";
App::$strings["superblock settings updated"] = "Настройки Superblock ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
App::$strings["Currently blocked"] = "Π’ настоящСС врСмя Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½";
@@ -2997,8 +3017,9 @@ App::$strings["Include marker on map"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π° ΠΊΠ
App::$strings["Include a marker on the map."] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΌΠ°Ρ€ΠΊΠ΅Ρ€ Π½Π° ΠΊΠ°Ρ€Ρ‚Π΅";
App::$strings["Photo Cache settings saved."] = "Настройки Photo Cache сохранСны.";
App::$strings["Photo Cache addon saves a copy of images from external sites locally to increase your anonymity in the web."] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photo Cache сохраняСт копию ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ с Π²Π½Π΅ΡˆΠ½ΠΈΡ… сайтов локально для ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ вашСй анонимности Π² Π˜Π½Ρ‚Π΅Ρ€Π½Π΅Ρ‚.";
+App::$strings["Photo Cache App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Photo Cache";
App::$strings["Minimal photo size for caching"] = "ΠœΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Ρ€Π°Π·ΠΌΠ΅Ρ€ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΈ для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ";
-App::$strings["In pixels. 0 will be replaced with system default, from 1 up to 1024 (large images will be scaled to this value)."] = "Π’ пискСлях. 0 Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ, ΠΎΡ‚ 1 Π΄ΠΎ 1024 (большиС изобраТСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π΄ΠΎ этого значСния).";
+App::$strings["In pixels. From 1 up to 1024, 0 will be replaced with system default."] = "Π’ пиксСлях. ΠžΡ‚ 1 Π΄ΠΎ 1024, 0 Π±ΡƒΠ΄Π΅Ρ‚ Π·Π°ΠΌΠ΅Π½Ρ‘Π½ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.";
App::$strings["Photo Cache"] = "";
App::$strings["Activate addon"] = "ΠΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅";
App::$strings["Hide Jappixmini Chat-Widget from the webinterface"] = "Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ Π²ΠΈΠ΄ΠΆΠ΅Ρ‚ Ρ‡Π°Ρ‚Π° Jappixmini ΠΈΠ· Π²Π΅Π±-интСрфСйса";
@@ -3047,24 +3068,24 @@ App::$strings["Show opt-out cookie link?"] = "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ссылку
App::$strings["Asynchronous tracking"] = "АсинхронноС отслСТиваниС";
App::$strings["Enable frontend JavaScript error tracking"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ отслСТиваниС ошибок JavaScript Π½Π° Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π΅.";
App::$strings["This feature requires Piwik >= 2.2.0"] = "Π­Ρ‚Π° функция Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Π²Π΅Ρ€ΡΠΈΡŽ Piwik >= 2.2.0";
-App::$strings["You are now authenticated to pumpio."] = "Π’Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Pump.io";
-App::$strings["return to the featured settings page"] = "ВСрнутся ΠΊ страницС настроСк";
-App::$strings["Post to Pump.io"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io";
+App::$strings["Pump.io Settings saved."] = "Настройки Pump.io сохранСны.";
+App::$strings["Pump.io Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io\"";
+App::$strings["Relay public posts to pump.io"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Pump.io";
App::$strings["Pump.io servername"] = "Имя сСрвСра Pump.io";
App::$strings["Without \"http://\" or \"https://\""] = "Π‘Π΅Π· \"http://\" ΠΈΠ»ΠΈ \"https://\"";
App::$strings["Pump.io username"] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Pump.io";
App::$strings["Without the servername"] = "Π±Π΅Π· ΠΈΠΌΠ΅Π½ΠΈ сСрвСра";
App::$strings["You are not authenticated to pumpio"] = "Π’Ρ‹ Π½Π΅ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π½Π° Pump.io";
App::$strings["(Re-)Authenticate your pump.io connection"] = "ΠΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ (ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ) вашС соСдинСниС с Pump.io";
-App::$strings["Enable pump.io Post Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io";
App::$strings["Post to pump.io by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["Should posts be public"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ общСдоступными";
App::$strings["Mirror all public posts"] = "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Ρ‚ΡŒ всС общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
-App::$strings["Pump.io Post Settings"] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Pump.io";
-App::$strings["PumpIO Settings saved."] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Pump.io сохранСны.";
-App::$strings["Nsabait Settings updated."] = "Настройки Nsabait ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹";
-App::$strings["Enable NSAbait Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ NSAbait";
-App::$strings["NSAbait Settings"] = "Настройки Nsabait";
+App::$strings["Pump.io Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Pump.io";
+App::$strings["You are now authenticated to pumpio."] = "Π’Ρ‹ Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² Pump.io";
+App::$strings["return to the featured settings page"] = "ВСрнутся ΠΊ страницС настроСк";
+App::$strings["Post to Pump.io"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Pump.io";
+App::$strings["NSA Bait App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ NSA Bait";
+App::$strings["Make yourself a political target"] = "Π‘Π΄Π΅Π»Π°Ρ‚ΡŒ сСбя политичСской мишСнью";
App::$strings["Send test email"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ тСстовый email";
App::$strings["No recipients found."] = "ΠŸΠΎΠ»ΡƒΡ‡Π°Ρ‚Π΅Π»Π΅ΠΉ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ.";
App::$strings["Mail sent."] = "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ";
@@ -3106,15 +3127,17 @@ App::$strings["Hubzilla Server base URL"] = "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ URL сСрвСра H
App::$strings["Since modified date yyyy-mm-dd"] = "Начиная с Π΄Π°Ρ‚Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ yyyy-mm-dd";
App::$strings["Until modified date yyyy-mm-dd"] = "Заканчивая Π΄Π°Ρ‚ΠΎΠΉ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ yyyy-mm-dd";
App::$strings["Post to Livejournal"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Livejournal";
-App::$strings["Enable Livejournal Post Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ Ρ€Π°ΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Livejournal";
+App::$strings["Livejournal Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Livejournal\"";
+App::$strings["Relay public posts to Livejournal"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Livejournal";
App::$strings["Livejournal username"] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Livejournal";
App::$strings["Livejournal password"] = "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ Livejournal";
App::$strings["Post to Livejournal by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Livejournal ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
-App::$strings["Livejournal Post Settings"] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Livejournal";
+App::$strings["Livejournal Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Livejournal";
App::$strings["Please contact your site administrator.<br />The provided API URL is not valid."] = "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π° ΡΠ²ΡΠΆΠΈΡ‚Π΅ΡΡŒ с администратором сайта. <br />ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ URL API нСдСйствитСлСн.";
App::$strings["We could not contact the GNU social API with the Path you entered."] = "Нам Π½Π΅ ΡƒΠ΄Π°Π»ΠΎΡΡŒ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚ с GNU Social API ΠΏΠΎ Π²Π²Π΅Π΄Ρ‘Π½Π½ΠΎΠΌΡƒ Π²Π°ΠΌΠΈ ΠΏΡƒΡ‚ΠΈ";
App::$strings["GNU social settings updated."] = "Настройки GNU Social ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
-App::$strings["Relay public postings to a connected GNU social account (formerly StatusNet)"] = "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись GNU social (Π±Ρ‹Π²ΡˆΠ°Ρ StatusNet)";
+App::$strings["Hubzilla Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla\"";
+App::$strings["Relay public postings to a connected GNU social account (formerly StatusNet)"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π½Π° ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Ρ‘Π½Π½ΡƒΡŽ ΡƒΡ‡Ρ‘Ρ‚Π½ΡƒΡŽ запись GNU social (Π±Ρ‹Π²ΡˆΠ°Ρ StatusNet)";
App::$strings["Globally Available GNU social OAuthKeys"] = "Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎ доступныС ΠΊΠ»ΡŽΡ‡ΠΈ OAuthKeys GNU Social";
App::$strings["There are preconfigured OAuth key pairs for some GNU social servers available. If you are using one of them, please use these credentials.<br />If not feel free to connect to any other GNU social instance (see below)."] = "Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ настроСнныС ΠΏΠ°Ρ€Ρ‹ ΠΊΠ»ΡŽΡ‡Π΅ΠΉ OAuth для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… доступных сСрвСров GNU social. Если Π²Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚Π΅ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ эти ΡƒΡ‡Π΅Ρ‚Π½Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅. <br />Если Π²Ρ‹ Π½Π΅ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒΡΡ ΠΊ ΠΊΠ°ΠΊΠΎΠΌΡƒ-Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ сСрвСру GNU social (см. Π½ΠΈΠΆΠ΅).";
App::$strings["Provide your own OAuth Credentials"] = "ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ ваши собствСнныС рСгистрационныС Π΄Π°Π½Π½Ρ‹Π΅ OAuth";
@@ -3133,7 +3156,7 @@ App::$strings["Cancel GNU social Connection"] = "ΠžΡ‚ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡
App::$strings["<strong>Note</strong>: Due your privacy settings (<em>Hide your profile details from unknown viewers?</em>) the link potentially included in public postings relayed to GNU social will lead the visitor to a blank page informing the visitor that the access to your profile has been restricted."] = "<strong>Π—Π°ΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅</strong>: Из-Π·Π° настроСк ΠΊΠΎΠ½Ρ„ΠΈΠ΄Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ (<em>ΡΠΊΡ€Ρ‹Ρ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ своСго профиля ΠΎΡ‚ нСизвСстных Π·Ρ€ΠΈΡ‚Π΅Π»Π΅ΠΉ?</em>) cсылка, ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π½Π°Ρ Π² общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠ΅Ρ€Π΅Π΄Π°Π½Π½Ρ‹Π΅ Π² GNU social, ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ посСтитСля ΠΊ пустой страницС, ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ Π΅Π³ΠΎ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ доступ ΠΊ Π²Π°ΡˆΠ΅ΠΌΡƒ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŽ Π±Ρ‹Π» ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½.";
App::$strings["Post to GNU social by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² GNU social ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["If enabled your public postings will be posted to the associated GNU-social account by default"] = "Если Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ, ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Ρ‹ Π² связанной ΡƒΡ‡Ρ‘Ρ‚Π½ΠΎΠΉ записи GNU social ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
-App::$strings["GNU-Social Crosspost Connector"] = "";
+App::$strings["GNU-Social Crosspost Connector"] = "ΠŸΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ GNU Social";
App::$strings["Post to GNU social"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² GNU Social";
App::$strings["API URL"] = "";
App::$strings["Application name"] = "НазваниС прилоТСния";
@@ -3172,7 +3195,8 @@ App::$strings["Birthdate"] = "Π”Π°Ρ‚Π° роТдСния";
App::$strings["We encountered a problem while logging in with the OpenID you provided. Please check the correct spelling of the ID."] = "ΠœΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ Π²Ρ…ΠΎΠ΄Π° с прСдоставлСнным Π²Π°ΠΌΠΈ OpenID. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡŒΡ‚Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΡΡ‚ΡŒ Π΅Π³ΠΎ написания.";
App::$strings["The error message was:"] = "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΠ± ошибкС Π±Ρ‹Π»ΠΎ:";
App::$strings["OpenID protocol error. No ID returned."] = "Ошибка ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° OpenID. Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ Π½Π΅ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Ρ‘Π½.";
-App::$strings["Set a preferred page to load on login from home page"] = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ страницу для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ с домашнСй страницы";
+App::$strings["Startpage App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Бтартовая страница\"";
+App::$strings["Set a preferred page to load on login from home page"] = "УстанавливаСт ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡Ρ‚ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ страницу для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ с домашнСй страницы";
App::$strings["Page to load after login"] = "Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ послС Π²Ρ…ΠΎΠ΄Π°";
App::$strings["Examples: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (leave blank for default network page (grid)."] = "ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹: &quot;apps&quot;, &quot;network?f=&gid=37&quot; (privacy collection), &quot;channel&quot; or &quot;notifications/system&quot; (ΠΎΡΡ‚Π°Π²ΡŒΡ‚Π΅ пустым для для страницы сСти ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ).";
App::$strings["Startpage"] = "Бтартовая страница";
@@ -3250,9 +3274,10 @@ App::$strings["Invalid Payment Type. Please start again."] = "НСдСйствΠ
App::$strings["Order not found"] = "Π—Π°ΠΊΠ°Π· Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½";
App::$strings["Federate"] = "";
App::$strings["nofed Settings saved."] = "Настройки nofed сохранСны.";
-App::$strings["Allow Federation Toggle"] = "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ";
+App::$strings["No Federation App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ No Federation";
+App::$strings["Prevent posting from being federated to anybody. It will exist only on your channel page."] = "Π—Π°ΠΏΡ€Π΅Ρ‰Π°Π΅Ρ‚ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ‚ΠΈΠ²Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ. Они Π±ΡƒΠ΄ΡƒΡ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° страницС вашСго ΠΊΠ°Π½Π°Π»Π°.";
App::$strings["Federate posts by default"] = "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ„Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
-App::$strings["NoFed Settings"] = "Настройки NoFed";
+App::$strings["No Federation"] = "";
App::$strings["Your channel has been upgraded to the latest \$Projectname version."] = "Π’Π°Ρˆ ΠΊΠ°Π½Π°Π» Π±Ρ‹Π» ΠΎΠ±Π½ΠΎΠ²Π»Ρ‘Π½ Π½Π° послСднюю Π²Π΅Ρ€ΡΠΈΡŽ \$Projectname.";
App::$strings["To improve usability, we have converted some features into installable stand-alone apps."] = "Π§Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ удобство использования, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ доступны Π² Π²ΠΈΠ΄Π΅ устанавливаСмых Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.";
App::$strings["Please visit the \$Projectname"] = "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, посСтитС \$Projectname";
@@ -3275,13 +3300,14 @@ App::$strings["Rating of images"] = "ΠžΡ†Π΅Π½ΠΊΠΈ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ";
App::$strings["Select the appropriate avatar rating for your site. See README"] = "Π’Ρ‹Π±Π΅Ρ€ΠΈΡ‚Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΎΡ†Π΅Π½ΠΊΡƒ Π°Π²Π°Ρ‚Π°Ρ€Π° для вашСго сайта (см. README).";
App::$strings["Gravatar settings updated."] = "Настройки Gravatar ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
App::$strings["WYSIWYG status editor"] = "WYSIWYG Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ статуса ";
+App::$strings["WYSIWYG Status App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"WYSIWYG статус\"";
App::$strings["WYSIWYG Status"] = "WYSIWYG статус";
-App::$strings["Planets Settings updated."] = "Настройки Planets ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
-App::$strings["Enable Planets Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ Planets";
-App::$strings["Planets Settings"] = "Настройки Planets";
+App::$strings["Random Planet App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Блучайная ΠΏΠ»Π°Π½Π΅Ρ‚Π°\"";
+App::$strings["Set a random planet from the Star Wars Empire as your location when posting"] = "Π£ΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ΡΠ»ΡƒΡ‡Π°ΠΉΠ½ΡƒΡŽ ΠΏΠ»Π°Π½Π΅Ρ‚Ρƒ ΠΈΠ· Π˜ΠΌΠΏΠ΅Ρ€ΠΈΠΈ Π—Π²Π΅Π·Π΄Π½Ρ‹Ρ… Π’ΠΎΠΉΠ½ Π² качСствС вашСго мСстополоТСния ΠΏΡ€ΠΈ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
App::$strings["Add some colour to tag clouds"] = "Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Ρ†Π²Π΅Ρ‚Π° для ΠΎΠ±Π»Π°ΠΊΠ° Ρ‚Π΅Π³ΠΎΠ²";
+App::$strings["Rainbow Tag App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π Π°Π΄ΡƒΠ³Π° Ρ‚Π΅Π³ΠΎΠ²\"";
App::$strings["Rainbow Tag"] = "Π Π°Π΄ΡƒΠ³Π° Ρ‚Π΅Π³ΠΎΠ²";
-App::$strings["Invalid game."] = "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ³Ρ€Π°";
+App::$strings["Invalid game."] = "ΠΠ΅Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΠΈΠ³Ρ€Π°.";
App::$strings["You are not a player in this game."] = "Π’Ρ‹ Π½Π΅ ΠΈΠ³Ρ€Π°Π΅Ρ‚Π΅ Π² эту ΠΈΠ³Ρ€Ρƒ.";
App::$strings["You must be a local channel to create a game."] = "Π’Π°Ρˆ ΠΊΠ°Π½Π°Π» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΌ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ³Ρ€Ρƒ.";
App::$strings["You must select one opponent that is not yourself."] = "Π’Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΈΠΊΠ° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ являСтся Π²Π°ΠΌΠΈ.";
@@ -3292,19 +3318,42 @@ App::$strings["Enable notifications"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ оповСщСния";
App::$strings["Follow"] = "ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ";
App::$strings["%1\$s is now following %2\$s"] = "%1\$s сСйчас отслСТиваСт %2\$s";
App::$strings["The GNU-Social protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°.";
+App::$strings["GNU-Social Protocol App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social\"";
App::$strings["GNU-Social Protocol"] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» GNU-Social";
-App::$strings["Message to display on every page on this server"] = "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ сообщСниС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Π½Π° этом сСрвСрС.";
-App::$strings["Pageheader Settings"] = "Настройки шапки страницы";
+App::$strings["TOTP Two-Step Verification"] = "Двухэтапная вСрификация TOTP";
+App::$strings["Enter the 2-step verification generated by your authenticator app:"] = "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ, созданный вашим ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
+App::$strings["Success!"] = "УспСх!";
+App::$strings["Invalid code, please try again."] = "НСвСрный ΠΊΠΎΠ΄. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ Π΅Ρ‰Ρ‘ Ρ€Π°Π·.";
+App::$strings["Too many invalid codes..."] = "Блишком ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅Π²Π΅Ρ€Π½Ρ‹Ρ… ΠΊΠΎΠ΄ΠΎΠ²...";
+App::$strings["Verify"] = "ΠŸΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ";
+App::$strings["You haven't set a TOTP secret yet.\nPlease click the button below to generate one and register this site\nwith your preferred authenticator app."] = "Π’Ρ‹ Π΅Ρ‰Π΅ Π½Π΅ установили сСкрСтный ΠΊΠΎΠ΄ TOTP. ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, Π½Π°ΠΆΠΌΠΈΡ‚Π΅ Π½Π° ΠΊΠ½ΠΎΠΏΠΊΡƒ Π½ΠΈΠΆΠ΅, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ ΠΈ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сайт Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.";
+App::$strings["Your TOTP secret is"] = "Π’Π°Ρˆ сСкрСтный ΠΊΠΎΠ΄ TOTP";
+App::$strings["Be sure to save it somewhere in case you lose or replace your mobile device.\nUse your mobile device to scan the QR code below to register this site\nwith your preferred authenticator app."] = "ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ сохранитС Π΅Π³ΠΎ Π³Π΄Π΅-Π½ΠΈΠ±ΡƒΠ΄ΡŒ Π½Π° случай ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΈΠ»ΠΈ Π·Π°ΠΌΠ΅Π½Ρ‹ мобильного устройства. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ мобильного устройства отсканируйтС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ QR-ΠΊΠΎΠ΄, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π·Π°Ρ€Π΅Π³ΠΈΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ этот сайт Π² ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΠΌ Π²Π°ΠΌΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ для Π°ΡƒΡ‚Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ.";
+App::$strings["Test"] = "ВСст";
+App::$strings["Generate New Secret"] = "Π‘Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½ΠΎΠ²Ρ‹ΠΉ сСкрСтный ΠΊΠΎΠ΄";
+App::$strings["Go"] = "Π’ΠΏΠ΅Ρ€Ρ‘Π΄";
+App::$strings["Enter your password"] = "Π’Π²Π΅Π΄ΠΈΡ‚Π΅ ваш ΠΏΠ°Ρ€ΠΎΠ»ΡŒ";
+App::$strings["enter TOTP code from your device"] = "Π²Π²Π΅Π΄ΠΈΡ‚Π΅ ΠΊΠΎΠ΄ TOTP ΠΈΠ· вашСго устройства";
+App::$strings["Pass!"] = "ΠŸΡ€ΠΈΠ½ΡΡ‚ΠΎ!";
+App::$strings["Fail"] = "ΠžΡ‚ΠΊΠ°Π·Π°Π½ΠΎ";
+App::$strings["Incorrect password, try again."] = "НСвСрный ΠΏΠ°Ρ€ΠΎΠ»ΡŒ, ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΠΉΡ‚Π΅ снова.";
+App::$strings["Record your new TOTP secret and rescan the QR code above."] = "Π—Π°ΠΏΠΈΡˆΠΈΡ‚Π΅ ваш сСкрСтный ΠΊΠΎΠ΄ TOTP ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ отсканируйтС ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹ΠΉ Π½ΠΈΠΆΠ΅ QR-ΠΊΠΎΠ΄.";
+App::$strings["TOTP Settings"] = "Настройки TOTP";
App::$strings["pageheader Settings saved."] = "Настройки шапки страницы сохранСны.";
+App::$strings["Page Header App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы\"";
+App::$strings["Inserts a page header"] = "ВставляСт Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы";
+App::$strings["Message to display on every page on this server"] = "ΠžΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅ΠΌΠΎΠ΅ сообщСниС Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ страницС Π½Π° этом сСрвСрС.";
+App::$strings["Page Header"] = "Π—Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΠΊ страницы";
App::$strings["text to include in all outgoing posts from this site"] = "тСкст, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π²ΠΎ всС исходящиС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ с этого сайта";
App::$strings["Send email to all members"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ email всСм участникам";
App::$strings["%1\$d of %2\$d messages sent."] = "%1\$d ΠΈΠ· %2\$d сообщСний ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ.";
App::$strings["Send email to all hub members."] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ email всСм участникам ΡƒΠ·Π»Π°.";
App::$strings["Sender Email address"] = "АдрСс элСктронной ΠΏΠΎΡ‡Ρ‚Ρ‹ отправитСля";
App::$strings["Test mode (only send to hub administrator)"] = "ВСстовый Ρ€Π΅ΠΆΠΈΠΌ (ΠΎΡ‚ΠΏΡ€Π°Π²ΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ администратору ΡƒΠ·Π»Π°)";
-App::$strings["Deactivate the feature"] = "Π”Π΅Π°ΠΊΡ‚ΠΈΠ²ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ";
+App::$strings["Smileybutton App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Кнопка со смайликам\"";
+App::$strings["Adds a smileybutton to the jot editor"] = "Π”ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ со смайликами Π² Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ Jot";
App::$strings["Hide the button and show the smilies directly."] = "Π‘ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΊΠ½ΠΎΠΏΠΊΡƒ ΠΈ сразу ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ смайлики.";
-App::$strings["Smileybutton Settings"] = "Настройки ΠΊΠ½ΠΎΠΏΠΊΠΈ смайликов";
+App::$strings["Smileybutton Settings"] = "Настройки ΠΊΠ½ΠΎΠΏΠΊΠΈ со смайликами";
App::$strings["Friendica Photo Album Import"] = "Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ альбом Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Friendica";
App::$strings["This will import all your Friendica photo albums to this Red channel."] = "Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ваши Π°Π»ΡŒΠ±ΠΎΠΌΡ‹ Ρ„ΠΎΡ‚ΠΎΠ³Ρ€Π°Ρ„ΠΈΠΉ Friendica Π² этот ΠΊΠ°Π½Π°Π».";
App::$strings["Friendica Server base URL"] = "Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ URL сСрвСра Friendica";
@@ -3352,8 +3401,12 @@ App::$strings["If enabled, members will automatically login to an ejabberd serve
App::$strings["New registration"] = "Новая рСгистрация";
App::$strings["Message sent to %s. New account registration: %s"] = "Π‘ΠΎΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ ΠΎΡ‚ΠΏΡ€Π°Π²Π»Π΅Π½ΠΎ Π² %s. РСгистрация Π½ΠΎΠ²ΠΎΠ³ΠΎ Π°ΠΊΠΊΠ°ΡƒΠ½Ρ‚Π°: %s";
App::$strings["Send your identity to all websites"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ваши Π΄Π°Π½Π½Ρ‹Π΅ Π½Π° всС Π²Π΅Π±-сайты";
+App::$strings["Sendzid App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ZID\"";
App::$strings["Send ZID"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ ZID";
App::$strings["Who likes me?"] = "ΠšΠΎΠΌΡƒ я Π½Ρ€Π°Π²Π»ΡŽΡΡŒ?";
+App::$strings["Max queueworker threads"] = "Макс. количСство ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ";
+App::$strings["Assume workers dead after ___ seconds"] = "Π‘Ρ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π½Π΅Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΌΠΈ Ρ‡Π΅Ρ€Π΅Π· сСкунд";
+App::$strings["Queueworker Settings"] = "Настройки ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ";
App::$strings["lonely"] = "ΠΎΠ΄ΠΈΠ½ΠΎΠΊΠΈΠΉ";
App::$strings["drunk"] = "ΠΏΡŒΡΠ½Ρ‹ΠΉ";
App::$strings["horny"] = "Π²ΠΎΠ·Π±ΡƒΠΆΠ΄Ρ‘Π½Π½Ρ‹ΠΉ";
@@ -3376,13 +3429,9 @@ App::$strings["victorious"] = "побСдивший";
App::$strings["defeated"] = "ΠΏΡ€ΠΎΠΈΠ³Ρ€Π°Π²ΡˆΠΈΠΉ";
App::$strings["envious"] = "Π·Π°Π²ΠΈΠ΄ΡƒΠ΅Ρ‚";
App::$strings["jealous"] = "Ρ€Π΅Π²Π½ΡƒΠ΅Ρ‚";
+App::$strings["Who viewed my channel/profile"] = "ΠšΡ‚ΠΎ смотрСл ΠΌΠΎΠΉ ΠΊΠ°Π½Π°Π» / ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ";
App::$strings["Recent Channel/Profile Viewers"] = "ПослСдниС просмотры ΠΊΠ°Π½Π°Π»Π° / профиля";
-App::$strings["This plugin/addon has not been configured."] = "Π­Ρ‚ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠ΅ Π½Π΅ Π±Ρ‹Π»ΠΎ настроСно.";
-App::$strings["Please visit the Visage settings on %s"] = "ΠŸΠΎΠΆΠ°Π»ΡƒΠΉΡΡ‚Π°, посСтитС настройки Visage Π½Π° %s";
-App::$strings["your feature settings page"] = "страница Π²Π°ΡˆΠΈΡ… установочных ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ²";
App::$strings["No entries."] = "НСт записСй.";
-App::$strings["Enable Visage Visitor Logging"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΆΡƒΡ€Π½Π°Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ посСтитСлСй Visage";
-App::$strings["Visage Settings"] = "Настройки Visage";
App::$strings["Channels to auto connect"] = "ΠšΠ°Π½Π°Π»Ρ‹ для автоматичСского ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ";
App::$strings["Comma separated list"] = "Бписок, Ρ€Π°Π·Π΄Π΅Π»Ρ‘Π½Π½Ρ‹ΠΉ запятыми";
App::$strings["Popular Channels"] = "ΠŸΠΎΠΏΡƒΠ»ΡΡ€Π½Ρ‹Π΅ ΠΊΠ°Π½Π°Π»Ρ‹";
@@ -3399,23 +3448,25 @@ App::$strings["Chord name: example: Em7"] = "НаимСнованиС Π°ΠΊΠΊΠΎΡ€
App::$strings["Show for left handed stringing"] = "ΠŸΠΎΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ струны для лСвшСй";
App::$strings["Quick Reference"] = "Быстрая ссылка";
App::$strings["Post to Libertree"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Libertree";
-App::$strings["Enable Libertree Post Plugin"] = "Π’ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ ΠΏΠ»Π°Π³ΠΈΠ½ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree";
+App::$strings["Libertree Crosspost Connector Settings saved."] = "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree сохранСны.";
+App::$strings["Libertree Crosspost Connector App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree\"";
+App::$strings["Relay public posts to Libertree"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Libertree";
App::$strings["Libertree API token"] = "Π’ΠΎΠΊΠ΅Π½ Libertree API";
App::$strings["Libertree site URL"] = "URL сайта Libertree";
App::$strings["Post to Libertree by default"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Libertree ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
-App::$strings["Libertree Post Settings"] = "Настройки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Π² Libertree";
-App::$strings["Libertree Settings saved."] = "Настройки Libertree сохранСны.";
+App::$strings["Libertree Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Libertree";
App::$strings["Channel is required."] = "НСобходим ΠΊΠ°Π½Π°Π».";
-App::$strings["Hubzilla Crosspost Connector Settings saved."] = "";
-App::$strings["Relay public postings to another Hubzilla channel"] = "Π Π΅Ρ‚Ρ€Π°Π½ΡΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» Hubzilla";
+App::$strings["Hubzilla Crosspost Connector Settings saved."] = "Настройки пСрСсылки ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla сохранСны.";
+App::$strings["Relay public postings to another Hubzilla channel"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»Π°Π΅Ρ‚ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠ°Π½Π°Π» Hubzilla";
App::$strings["Send public postings to Hubzilla channel by default"] = "ΠžΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ Π² ΠΊΠ°Π½Π°Π» Hubzilla ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ";
App::$strings["Hubzilla API Path"] = "ΠŸΡƒΡ‚ΡŒ ΠΊ Hubzilla API";
App::$strings["Hubzilla login name"] = "Имя Π²Ρ…ΠΎΠ΄Π° Hubzilla";
App::$strings["Hubzilla channel name"] = "НазваниС канала Hubzilla";
-App::$strings["Hubzilla Crosspost Connector"] = "";
-App::$strings["Post to Hubzilla"] = "";
+App::$strings["Hubzilla Crosspost Connector"] = "ΠŸΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΉ Hubzilla";
+App::$strings["Post to Hubzilla"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² Hubzilla";
App::$strings["ActivityPub Protocol Settings updated."] = "Настройки ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° ActivityPub ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
App::$strings["The activitypub protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ActivityPub Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°.";
+App::$strings["Activitypub Protocol App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ActivityPub\"";
App::$strings["Deliver to ActivityPub recipients in privacy groups"] = "Π”ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ получатСлям ActivityPub Π² Π³Ρ€ΡƒΠΏΠΏΠ°Ρ… бСзопасности";
App::$strings["May result in a large number of mentions and expose all the members of your privacy group"] = "ΠœΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π±ΠΎΠ»ΡŒΡˆΠΎΠΌΡƒ количСству ΡƒΠΏΠΎΠΌΠΈΠ½Π°Π½ΠΈΠΉ ΠΈ Ρ€Π°ΡΠΊΡ€Ρ‹Ρ‚ΠΈΡŽ участников Π³Ρ€ΡƒΠΏΠΏΡ‹ бСзопасности";
App::$strings["Send multi-media HTML articles"] = "ΠžΡ‚ΠΏΡ€Π°Π²ΠΈΡ‚ΡŒ HTML ΡΡ‚Π°Ρ‚ΡŒΠΈ с ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΌΠ΅Π΄ΠΈΠ°";
@@ -3424,13 +3475,16 @@ App::$strings["Activitypub Protocol"] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» ActivityPub";
App::$strings["No username found in import file."] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ Π½Π΅ Π½Π°ΠΉΠ΄Π΅Π½ΠΎ Π² Ρ„Π°ΠΉΠ»Π΅ для ΠΈΠΌΠΏΠΎΡ€Ρ‚Π°.";
App::$strings["Diaspora Protocol Settings updated."] = "Настройки ΠΏΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ»Π° Diaspora ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½Ρ‹.";
App::$strings["The diaspora protocol does not support location independence. Connections you make within that network may be unreachable from alternate channel locations."] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora Π½Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ располоТСния. Π’Π°ΡˆΠΈ ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚Ρ‹ установлСнныС Π² этой сСти ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ нСдоступны ΠΈΠ· Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½Ρ‹Ρ… мСст размСщСния ΠΊΠ°Π½Π°Π»Π°.";
+App::$strings["Diaspora Protocol App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora\"";
App::$strings["Allow any Diaspora member to comment on your public posts"] = "Π Π°Π·Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Π»ΡŽΠ±ΠΎΠΌΡƒ участнику Diaspora ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ваши общСдоступныС ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ";
App::$strings["Prevent your hashtags from being redirected to other sites"] = "ΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ‚Π΅Π³ΠΎΠ² Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ сайты";
App::$strings["Sign and forward posts and comments with no existing Diaspora signature"] = "ΠŸΠΎΠ΄ΠΏΠΈΡΡ‹Π²Π°Ρ‚ΡŒ ΠΈ ΠΎΡ‚ΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ с Π½Π΅ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ подписью Diaspora";
App::$strings["Followed hashtags (comma separated, do not include the #)"] = "ΠžΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Π΅ΠΌΡ‹Π΅ Ρ‚Π΅Π³ΠΈ (Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ, ΠΈΡΠΊΠ»ΡŽΡ‡Π°Ρ #)";
App::$strings["Diaspora Protocol"] = "ΠŸΡ€ΠΎΡ‚ΠΎΠΊΠΎΠ» Diaspora";
+App::$strings["%1\$s dislikes %2\$s's %3\$s"] = "%1\$s Π½Π΅ нравится %2\$s's %3\$s";
App::$strings["Post to WordPress"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² WordPress";
App::$strings["Wordpress Settings saved."] = "Настройки WordPress сохранСны.";
+App::$strings["Wordpress Post App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² Wordpress\"";
App::$strings["Post to WordPress or anything else which uses the wordpress XMLRPC API"] = "ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Ρ‚ΡŒ Π² WordPress ΠΈΠ»ΠΈ Π² Ρ‡Ρ‘ΠΌ-Ρ‚ΠΎ Π΅Ρ‰Ρ‘, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΌ wordpress XMLRPC API";
App::$strings["WordPress username"] = "Имя ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Ρ WordPress";
App::$strings["WordPress password"] = "ΠŸΠ°Ρ€ΠΎΠ»ΡŒ WordPress";
@@ -3444,15 +3498,17 @@ App::$strings["Wordpress Post"] = "ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ Π² WordPress";
App::$strings["Possible adult content"] = "Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ содСрТимоС для взрослых";
App::$strings["%s - view"] = "%s - просмотр";
App::$strings["NSFW Settings saved."] = "Настройки NSFW сохранСны.";
+App::$strings["NSFW App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ NSFW";
App::$strings["Collapse content that contains predefined words"] = "Π‘Π²Π΅Ρ€Π½ΡƒΡ‚ΡŒ содСрТимоС, содСрТащСС ΠΏΡ€Π΅Π΄ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ слова";
App::$strings["This app looks in posts for the words/text you specify below, and collapses any content containing those keywords so it is not displayed at inappropriate times, such as sexual innuendo that may be improper in a work setting. It is polite and recommended to tag any content containing nudity with #NSFW. This filter can also match any other word/text you specify, and can thereby be used as a general purpose content filter."] = "Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ просматриваСт ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ для слов / тСкста, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚Π΅ Π½ΠΈΠΆΠ΅, ΠΈ сворачиваСт любой ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, содСрТащий эти ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Π΅ слова, поэтому ΠΎΠ½ Π½Π΅ отобраТаСтся Π² нСподходящСС врСмя, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΡΠ΅ΠΊΡΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ инсинуации, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π½Π΅ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΌΠΈ Π² настройкС Ρ€Π°Π±ΠΎΡ‚Ρ‹. НапримСр, ΠΌΡ‹ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌ ΠΎΡ‚ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ любой ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, содСрТащий Π½Π°Π³ΠΎΡ‚Ρƒ, Ρ‚Π΅Π³ΠΎΠΌ #NSFW. Π­Ρ‚ΠΎΡ‚ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€ Ρ‚Π°ΠΊΠΆΠ΅ способСн Ρ€Π΅Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π²Π°ΠΌΠΈ слово / тСкст ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π² качСствС Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π° содСрТимого ΠΎΠ±Ρ‰Π΅Π³ΠΎ назначСния.";
App::$strings["Comma separated list of keywords to hide"] = "Бписок ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… слов для скрытия, Ρ‡Π΅Ρ€Π΅Π· Π·Π°ΠΏΡΡ‚ΡƒΡŽ";
App::$strings["Word, /regular-expression/, lang=xx, lang!=xx"] = "слово, /рСгулярноС_Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅/, lang=xx, lang!=xx";
App::$strings["NSFW"] = "";
+App::$strings["Skeleton App"] = "ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ \"Π‘ΠΊΠ΅Π»Π΅Ρ‚\"";
+App::$strings["A skeleton for addons, you can copy/paste"] = "Π‘ΠΊΠ΅Π»Π΅Ρ‚ для ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ copy/paste";
App::$strings["Some setting"] = "НСкоторыС настройки";
App::$strings["A setting"] = "Настройка";
App::$strings["Skeleton Settings"] = "Настройки скСлСта";
App::$strings["__ctx:opensearch__ Search %1\$s (%2\$s)"] = "Π˜ΡΠΊΠ°Ρ‚ΡŒ %1\$s (%2\$s)";
App::$strings["__ctx:opensearch__ \$Projectname"] = "";
App::$strings["Search \$Projectname"] = "Поиск \$Projectname";
-App::$strings["Cover Photo"] = "";
diff --git a/view/tpl/conv_item.tpl b/view/tpl/conv_item.tpl
index 69e09b272..428529de2 100755
--- a/view/tpl/conv_item.tpl
+++ b/view/tpl/conv_item.tpl
@@ -146,6 +146,9 @@
{{if $item.share}}
<a class="dropdown-item" href="#" onclick="jotShare({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-retweet" title="{{$item.share.0}}"></i>{{$item.share.0}}</a>
{{/if}}
+ {{if $item.embed}}
+ <a class="dropdown-item" href="#" onclick="jotEmbed({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-share" title="{{$item.embed.0}}"></i>{{$item.embed.0}}</a>
+ {{/if}}
{{if $item.plink}}
<a class="dropdown-item" href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="u-url"><i class="generic-icons-nav fa fa-fw fa-external-link"></i>{{$item.plink.title}}</a>
{{/if}}
diff --git a/view/tpl/conv_list.tpl b/view/tpl/conv_list.tpl
index 28e120d17..63e74b159 100755
--- a/view/tpl/conv_list.tpl
+++ b/view/tpl/conv_list.tpl
@@ -139,6 +139,9 @@
{{if $item.share}}
<a class="dropdown-item" href="#" onclick="jotShare({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-retweet" title="{{$item.share.0}}"></i>{{$item.share.0}}</a>
{{/if}}
+ {{if $item.embed}}
+ <a class="dropdown-item" href="#" onclick="jotEmbed({{$item.id}},{{$item.item_type}}); return false"><i class="generic-icons-nav fa fa-fw fa-share" title="{{$item.embed.0}}"></i>{{$item.embed.0}}</a>
+ {{/if}}
{{if $item.plink}}
<a class="dropdown-item" href="{{$item.plink.href}}" title="{{$item.plink.title}}" class="u-url"><i class="generic-icons-nav fa fa-fw fa-external-link"></i>{{$item.plink.title}}</a>
{{/if}}
diff --git a/view/tpl/group_edit.tpl b/view/tpl/group_edit.tpl
index 88f037abe..60038701e 100755
--- a/view/tpl/group_edit.tpl
+++ b/view/tpl/group_edit.tpl
@@ -13,6 +13,7 @@
<input type='hidden' name='form_security_token' value='{{$form_security_token_edit}}'>
{{include file="field_input.tpl" field=$gname}}
{{include file="field_checkbox.tpl" field=$public}}
+ {{$pgrp_extras}}
<a href="group/drop/{{$gid}}?t={{$form_security_token_drop}}" onclick="return confirmDelete();" class="btn btn-sm btn-danger">
{{$delete}}
</a>
diff --git a/view/tpl/jot-header.tpl b/view/tpl/jot-header.tpl
index b286b6071..9a44f1a54 100755
--- a/view/tpl/jot-header.tpl
+++ b/view/tpl/jot-header.tpl
@@ -198,16 +198,24 @@ var activeCommentText = '';
})
}
-
function jotShare(id,post_type) {
+ $('#like-rotator-' + id).show();
+ $.get('{{$baseurl}}/share/' + id, function(data) {
+ $('#like-rotator-' + id).hide();
+ updateInit();
+ });
+ }
+
+ function jotEmbed(id,post_type) {
if(post_type == 6) {
window.location.href = 'rpost?f=&post_id='+id;
}
else {
+
if ($('#jot-popup').length != 0) $('#jot-popup').show();
$('#like-rotator-' + id).show();
- $.get('{{$baseurl}}/share/' + id, function(data) {
+ $.get('{{$baseurl}}/embed/' + id, function(data) {
if (!editor) $("#profile-jot-text").val("");
initEditor(function(){
addeditortext(data);
diff --git a/view/tpl/jot.tpl b/view/tpl/jot.tpl
index 4eae33d13..12509fc59 100755
--- a/view/tpl/jot.tpl
+++ b/view/tpl/jot.tpl
@@ -137,8 +137,11 @@
<i id="profile-nocomment" class="fa fa-comments jot-icons"></i>
</button>
{{/if}}
+ {{if $custommoretoolsbuttons}}
+ {{$custommoretoolsbuttons}}
+ {{/if}}
</div>
- {{if $writefiles || $weblink || $setloc || $clearloc || $feature_expire || $feature_encrypt || $feature_voting}}
+ {{if $writefiles || $weblink || $setloc || $clearloc || $feature_expire || $feature_encrypt || $feature_voting || $custommoretoolsdropdown}}
<div class="btn-group d-lg-none">
<button type="button" id="more-tools" class="btn btn-outline-secondary btn-sm dropdown-toggle" data-toggle="dropdown" aria-expanded="false">
<i id="more-tools-icon" class="fa fa-cog jot-icons"></i>
@@ -176,6 +179,8 @@
{{if $feature_nocomment}}
<a class="dropdown-item" href="#" onclick="toggleNoComment(); return false;"><i id="profile-nocomment-sub" class="fa fa-comments"></i>&nbsp;{{$nocommenttitlesub}}</a>
{{/if}}
+ <hr />
+ {{$custommoretoolsdropdown}}
</div>
</div>
{{/if}}
@@ -186,6 +191,11 @@
</div>
</div>
<div id="profile-jot-submit-right" class="btn-group float-right">
+ {{foreach $customsubmitright as $csr}}
+ <button class="btn btn-outline-secondary btn-sm" {{$csr.buttonparams}} title="{{$csr.preview}}">
+ {{$csr.buttoncontent}}
+ </button>
+ {{/foreach}}
{{if $preview}}
<button class="btn btn-outline-secondary btn-sm" onclick="preview_post();return false;" title="{{$preview}}">
<i class="fa fa-eye jot-icons" ></i>
diff --git a/view/tpl/remote_friends_common.tpl b/view/tpl/remote_friends_common.tpl
index efc0ab49a..6ef3a7dde 100755
--- a/view/tpl/remote_friends_common.tpl
+++ b/view/tpl/remote_friends_common.tpl
@@ -7,10 +7,9 @@
<div class="contact-block-content">
{{foreach $items as $item}}
<div class="contact-block-div">
- <a class="contact-block-link mpfriend" href="{{$base}}/chanview?f=&url={{$item.xchan_url}}"><img class="contact-block-img mpfriend" src="{{$item.xchan_photo_s}}"alt="{{$item.xchan_name}}" title="{{$item.xchan_name}} [{{$item.xchan_addr}}]" /></a>
+ <a class="contact-block-link mpfriend" href="{{$base}}/chanview?f=&url={{$item.xchan_url}}"><img class="contact-block-img mpfriend" src="{{$item.xchan_photo_s}}" alt="{{$item.xchan_name}}" title="{{$item.xchan_name}} [{{$item.xchan_addr}}]" /></a>
</div>
{{/foreach}}
</div>
{{/if}}
</div>
-