diff options
41 files changed, 1455 insertions, 838 deletions
@@ -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/Lib/Activity.php b/Zotlabs/Lib/Activity.php index 8cfa18997..bcbe53df7 100644 --- a/Zotlabs/Lib/Activity.php +++ b/Zotlabs/Lib/Activity.php @@ -236,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']) @@ -1411,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; @@ -1483,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; } @@ -1492,7 +1496,6 @@ class Activity { $s['obj_type'] = ACTIVITY_OBJ_COMMENT; } - if($act->obj['type'] === 'Event') { $s['obj'] = []; $s['obj']['asld'] = $act->obj; diff --git a/Zotlabs/Lib/Apps.php b/Zotlabs/Lib/Apps.php index 9edd00667..56283ff76 100644 --- a/Zotlabs/Lib/Apps.php +++ b/Zotlabs/Lib/Apps.php @@ -320,6 +320,7 @@ class Apps { 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'), diff --git a/Zotlabs/Lib/Libzot.php b/Zotlabs/Lib/Libzot.php index 27502009c..019237568 100644 --- a/Zotlabs/Lib/Libzot.php +++ b/Zotlabs/Lib/Libzot.php @@ -1487,8 +1487,31 @@ class Libzot { $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; } @@ -1500,7 +1523,7 @@ class Libzot { } } - logger('item: ' . print_r($arr,true), LOGGER_DATA); + // logger('item: ' . print_r($arr,true), LOGGER_DATA); if($arr['mid'] !== $arr['parent_mid']) { @@ -1526,19 +1549,11 @@ class Libzot { // 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. - - if((! get_pconfig($channel['channel_id'],'system','hyperdrive',false)) || (! $arr['verb'] === 'Announce')) { - continue; - } - if((! $relay) && (! $request) && (! $local_public) && perm_is_allowed($channel['channel_id'],$sender,'send_stream')) { self::fetch_conversation($channel,$arr['parent_mid']); @@ -1814,6 +1829,7 @@ class Libzot { $arr['owner_xchan'] = $a['signature']['signer']; } + /// @FIXME - spoofable if($AS->data['hubloc']) { $arr['item_verified'] = true; 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/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/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/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/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/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/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('🔁 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/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/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. @@ -468,7 +468,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 +513,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' ); 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/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/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/items.php b/include/items.php index 1fe98c119..a14e3db3a 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; @@ -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. @@ -3867,6 +3884,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; @@ -4561,7 +4580,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'))) { 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/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/text.php b/include/text.php index 925c8e997..b017b038a 100644 --- a/include/text.php +++ b/include/text.php @@ -1107,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)=(.*?)\&\;(.*?)\>/ism",'<$1$2=$3&$4>',$s); return($s); @@ -2631,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(); @@ -2688,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 @@ -2713,7 +2713,7 @@ 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 @@ -2731,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) ); @@ -2754,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) ); @@ -2763,7 +2763,7 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i if((! $r) && strpos($newname,'@')) { $r = q("SELECT * FROM xchan left join hubloc on xchan_hash = hubloc_hash - WHERE hubloc_addr = '%s' LIMIT 1", + WHERE hubloc_addr = '%s' ", dbesc($newname) ); } @@ -2772,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) ); @@ -2780,17 +2780,62 @@ function handle_tag($a, &$body, &$access_tag, &$str_tags, $profile_uid, $tag, $i } - // $r is set if we found something - $channel = App::get_channel(); + + + + $fn_results = []; + $access_tag = EMPTY_STR; + + + // $r is set if we found something 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 { @@ -2802,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) { @@ -2819,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 ]; + } } } 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/view/js/main.js b/view/js/main.js index fca9d125d..4718fb98f 100644 --- a/view/js/main.js +++ b/view/js/main.js @@ -734,6 +734,7 @@ function updateConvItems(mode,data) { title.replace(/\s+$/, ''); if (title) { savedTitle = title + " " + savedTitle; + document.title = title; } } } diff --git a/view/ru/hmessages.po b/view/ru/hmessages.po index f8c34f95d..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: 2019-01-25 21:03+0200\n" -"PO-Revision-Date: 2019-01-25 21:07+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:3162 +#: ../../view/theme/redbasic/php/config.php:15 ../../include/text.php:3210 #: ../../Zotlabs/Module/Admin/Site.php:187 msgid "Default" msgstr "По умолчанию" @@ -87,27 +87,25 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../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 @@ -119,24 +117,22 @@ msgstr "Фокус (по умолчанию Hubzilla)" #: ../../extend/addon/hzaddons/cart/submodules/hzservices.php:640 #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:248 #: ../../extend/addon/hzaddons/cart/cart.php:1264 -#: ../../extend/addon/hzaddons/nofed/nofed.php:80 -#: ../../extend/addon/hzaddons/planets/planets.php:153 -#: ../../extend/addon/hzaddons/pageheader/pageheader.php:48 +#: ../../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:1634 ../../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 @@ -169,27 +165,22 @@ msgstr "Узкая панель навигации" #: ../../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 @@ -207,16 +198,11 @@ msgstr "Узкая панель навигации" #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254 #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258 #: ../../extend/addon/hzaddons/cart/cart.php:1258 -#: ../../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/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:1634 ../../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 @@ -244,27 +230,22 @@ msgstr "Нет" #: ../../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 @@ -282,16 +263,11 @@ msgstr "Нет" #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:254 #: ../../extend/addon/hzaddons/cart/submodules/manualcat.php:258 #: ../../extend/addon/hzaddons/cart/cart.php:1258 -#: ../../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/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" @@ -655,7 +631,7 @@ msgstr "Всё равно" msgid "Ask me" msgstr "Спроси меня" -#: ../../include/photos.php:27 ../../include/items.php:3750 +#: ../../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 @@ -663,8 +639,8 @@ msgstr "Спроси меня" #: ../../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:447 ../../Zotlabs/Module/Poke.php:157 #: ../../Zotlabs/Module/Profile.php:85 ../../Zotlabs/Module/Profile.php:101 @@ -721,7 +697,7 @@ msgstr "Спроси меня" #: ../../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." @@ -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 общих контактов" @@ -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:536 -#: ../../Zotlabs/Lib/ThreadItem.php:133 +#: ../../Zotlabs/Widget/Cdav.php:162 ../../Zotlabs/Lib/Apps.php:555 +#: ../../Zotlabs/Lib/ThreadItem.php:144 msgid "Edit" msgstr "Изменить" @@ -1029,9 +1005,9 @@ msgstr "Полное имя:" msgid "Like this channel" msgstr "нравится этот канал" -#: ../../include/channel.php:1595 ../../include/conversation.php:1693 +#: ../../include/channel.php:1595 ../../include/conversation.php:1702 #: ../../include/taxonomy.php:661 ../../Zotlabs/Module/Photos.php:1177 -#: ../../Zotlabs/Lib/ThreadItem.php:221 +#: ../../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:339 +#: ../../Zotlabs/Lib/Apps.php:358 msgid "Profile" msgstr "Профиль" @@ -1150,7 +1126,7 @@ msgstr "Экспорт" msgid "cover photo" msgstr "фотография обложки" -#: ../../include/channel.php:2405 ../../boot.php:1630 +#: ../../include/channel.php:2405 ../../boot.php:1631 #: ../../Zotlabs/Module/Rmagic.php:93 msgid "Remote Authentication" msgstr "Удаленная аутентификация" @@ -1198,11 +1174,11 @@ msgstr "%1$s была создана %2$s %3$s" msgid "post" msgstr "публикация" -#: ../../include/items.php:399 ../../Zotlabs/Module/Dreport.php:10 -#: ../../Zotlabs/Module/Dreport.php:79 ../../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 +#: ../../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,44 +1187,44 @@ msgstr "публикация" msgid "Permission denied" msgstr "Доступ запрещен" -#: ../../include/items.php:936 ../../include/items.php:996 +#: ../../include/items.php:953 ../../include/items.php:1013 msgid "(Unknown)" msgstr "(Неизвестный)" -#: ../../include/items.php:1184 +#: ../../include/items.php:1201 msgid "Visible to anybody on the internet." msgstr "Виден всем в интернете." -#: ../../include/items.php:1186 +#: ../../include/items.php:1203 msgid "Visible to you only." msgstr "Видно только вам." -#: ../../include/items.php:1188 +#: ../../include/items.php:1205 msgid "Visible to anybody in this network." msgstr "Видно всем в этой сети." -#: ../../include/items.php:1190 +#: ../../include/items.php:1207 msgid "Visible to anybody authenticated." msgstr "Видно всем аутентифицированным." -#: ../../include/items.php:1192 +#: ../../include/items.php:1209 #, php-format msgid "Visible to anybody on %s." msgstr "Видно всем в %s." -#: ../../include/items.php:1194 +#: ../../include/items.php:1211 msgid "Visible to all connections." msgstr "Видно всем контактам." -#: ../../include/items.php:1196 +#: ../../include/items.php:1213 msgid "Visible to approved connections." msgstr "Видно только одобренным контактам." -#: ../../include/items.php:1198 +#: ../../include/items.php:1215 msgid "Visible to specific connections." msgstr "Видно указанным контактам." -#: ../../include/items.php:3662 ../../Zotlabs/Module/Display.php:45 +#: ../../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 @@ -1256,67 +1232,67 @@ msgstr "Видно указанным контактам." msgid "Item not found." msgstr "Элемент не найден." -#: ../../include/items.php:4242 ../../Zotlabs/Module/Group.php:61 +#: ../../include/items.php:4273 ../../Zotlabs/Module/Group.php:61 #: ../../Zotlabs/Module/Group.php:213 msgid "Privacy group not found." msgstr "Группа безопасности не найдена." -#: ../../include/items.php:4258 +#: ../../include/items.php:4289 msgid "Privacy group is empty." msgstr "Группа безопасности пуста" -#: ../../include/items.php:4265 +#: ../../include/items.php:4296 #, php-format msgid "Privacy group: %s" msgstr "Группа безопасности: %s" -#: ../../include/items.php:4275 ../../Zotlabs/Module/Connedit.php:867 +#: ../../include/items.php:4306 ../../Zotlabs/Module/Connedit.php:867 #, php-format msgid "Connection: %s" msgstr "Контакт: %s" -#: ../../include/items.php:4277 +#: ../../include/items.php:4308 msgid "Connection not found." msgstr "Контакт не найден." -#: ../../include/items.php:4619 ../../Zotlabs/Module/Cover_photo.php:269 +#: ../../include/items.php:4650 ../../Zotlabs/Module/Cover_photo.php:269 msgid "female" msgstr "женщина" -#: ../../include/items.php:4620 ../../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:4621 ../../Zotlabs/Module/Cover_photo.php:271 +#: ../../include/items.php:4652 ../../Zotlabs/Module/Cover_photo.php:271 msgid "male" msgstr "мужчина" -#: ../../include/items.php:4622 ../../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:4624 ../../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:4626 +#: ../../include/items.php:4657 msgid "profile photo" msgstr "Фотография профиля" -#: ../../include/items.php:4818 +#: ../../include/items.php:4849 #, php-format msgid "[Edited %s]" msgstr "[Отредактировано %s]" -#: ../../include/items.php:4818 +#: ../../include/items.php:4849 msgctxt "edit_activity" msgid "Post" msgstr "Публикация" -#: ../../include/items.php:4818 +#: ../../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:344 +#: ../../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:320 +#: ../../include/features.php:96 ../../Zotlabs/Lib/Apps.php:339 msgid "Channel Home" msgstr "Главная канала" @@ -1397,7 +1373,7 @@ msgid "Comments will be displayed separately" msgstr "Комментарии будут отображаться отдельно" #: ../../include/features.php:125 ../../include/text.php:991 -#: ../../Zotlabs/Module/Connections.php:334 ../../Zotlabs/Lib/Apps.php:310 +#: ../../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:324 +#: ../../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:323 +#: ../../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:312 +#: ../../include/features.php:373 ../../Zotlabs/Lib/Apps.php:331 msgid "Suggest Channels" msgstr "Предлагаемые каналы" @@ -1641,7 +1617,7 @@ msgid "Show friend and connection suggestions" msgstr "Показать предложения в друзья" #: ../../include/features.php:391 ../../include/nav.php:444 -#: ../../Zotlabs/Module/Fbrowser.php:29 ../../Zotlabs/Lib/Apps.php:322 +#: ../../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:340 +#: ../../include/features.php:405 ../../Zotlabs/Lib/Apps.php:359 msgid "Profiles" msgstr "Редактировать профиль" @@ -1723,7 +1699,7 @@ msgstr "Сеть: %s" #: ../../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:330 +#: ../../Zotlabs/Widget/Activity_filter.php:151 ../../Zotlabs/Lib/Apps.php:349 msgid "Search" msgstr "Поиск" @@ -2020,10 +1996,10 @@ msgstr "Тип содержимого страницы" #: ../../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:1951 +#: ../../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:1545 +#: ../../extend/addon/hzaddons/pubcrawl/as.php:1504 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1551 msgid "photo" msgstr "фото" @@ -2035,9 +2011,9 @@ msgstr "событие" #: ../../include/text.php:2097 ../../include/conversation.php:144 #: ../../Zotlabs/Module/Like.php:392 ../../Zotlabs/Module/Subthread.php:112 -#: ../../Zotlabs/Lib/Activity.php:1951 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1494 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1545 +#: ../../Zotlabs/Lib/Activity.php:1959 +#: ../../extend/addon/hzaddons/pubcrawl/as.php:1504 +#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1551 msgid "status" msgstr "статус" @@ -2138,7 +2114,7 @@ msgstr "Введите путь к расположению сетевых фа msgid "Specify folder" msgstr "Указать каталог" -#: ../../include/text.php:2893 ../../Zotlabs/Storage/Browser.php:131 +#: ../../include/text.php:2941 ../../Zotlabs/Storage/Browser.php:131 msgid "Collection" msgstr "Коллекция" @@ -2178,7 +2154,7 @@ msgstr "редактировать" #: ../../include/group.php:320 ../../include/nav.php:95 #: ../../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:341 +#: ../../Zotlabs/Lib/Apps.php:360 msgid "Privacy Groups" msgstr "Группы безопасности" @@ -2230,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 @@ -2271,7 +2247,7 @@ msgstr "Это действие невозможно из-за ограниче msgid "Invalid data packet" msgstr "Неверный пакет данных" -#: ../../include/zot.php:802 ../../Zotlabs/Lib/Libzot.php:653 +#: ../../include/zot.php:802 ../../Zotlabs/Lib/Libzot.php:652 msgid "Unable to verify channel signature" msgstr "Невозможно проверить подпись канала" @@ -2326,7 +2302,7 @@ msgstr "Помощь:" #: ../../include/help.php:117 ../../include/help.php:125 #: ../../include/nav.php:168 ../../include/nav.php:319 -#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:325 +#: ../../Zotlabs/Module/Layouts.php:186 ../../Zotlabs/Lib/Apps.php:344 msgid "Help" msgstr "Помощь" @@ -2421,16 +2397,16 @@ msgid "channel" msgstr "канал" #: ../../include/conversation.php:160 ../../Zotlabs/Module/Like.php:447 -#: ../../Zotlabs/Lib/Activity.php:1986 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1530 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:1575 +#: ../../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:449 -#: ../../Zotlabs/Lib/Activity.php:1988 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1532 +#: ../../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" @@ -2461,7 +2437,7 @@ 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 "Это несохранённый просмотр" @@ -2505,7 +2481,7 @@ 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 "Выбрать" @@ -2524,12 +2500,12 @@ msgstr "Выбрать" #: ../../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:537 -#: ../../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 "Переключить статус пометки" @@ -2537,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 "Подпись сообщения неверная" @@ -2564,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" @@ -2584,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 "Подождите пожалуйста" @@ -2596,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 "Инструменты общения" @@ -2617,7 +2593,7 @@ msgid "Unfollow Thread" msgstr "Прекратить отслеживать тему" #: ../../include/conversation.php:1038 ../../include/nav.php:106 -#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:321 +#: ../../Zotlabs/Module/Connedit.php:608 ../../Zotlabs/Lib/Apps.php:340 #: ../../extend/addon/hzaddons/openclipatar/openclipatar.php:57 msgid "View Profile" msgstr "Просмотреть профиль" @@ -2640,7 +2616,7 @@ msgid "Ratings" msgstr "Оценки" #: ../../include/conversation.php:1098 ../../Zotlabs/Module/Poke.php:199 -#: ../../Zotlabs/Lib/Apps.php:328 +#: ../../Zotlabs/Lib/Apps.php:347 msgid "Poke" msgstr "Ткнуть" @@ -2650,9 +2626,9 @@ msgstr "Ткнуть" #: ../../Zotlabs/Module/Photos.php:1296 #: ../../Zotlabs/Module/Embedphotos.php:154 #: ../../Zotlabs/Widget/Portfolio.php:95 ../../Zotlabs/Widget/Album.php:84 -#: ../../Zotlabs/Lib/Apps.php:1010 ../../Zotlabs/Lib/Apps.php:1094 -#: ../../Zotlabs/Lib/Activity.php:1006 -#: ../../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 "Неизвестный" @@ -2790,14 +2766,14 @@ msgstr "Комментарии включены" msgid "Comments disabled" msgstr "Комментарии отключены" -#: ../../include/conversation.php:1356 ../../Zotlabs/Module/Photos.php:1139 +#: ../../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 @@ -2805,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 @@ -2871,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 @@ -2879,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 @@ -2902,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:1182 -#: ../../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" @@ -2944,7 +2920,7 @@ msgstr[0] "Не нравится" msgstr[1] "Не нравится" msgstr[2] "Не нравится" -#: ../../include/conversation.php:1699 +#: ../../include/conversation.php:1708 msgctxt "noun" msgid "Attending" msgid_plural "Attending" @@ -2952,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" @@ -2960,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" @@ -2974,7 +2950,7 @@ msgstr[0] "Согласен" msgstr[1] "Согласны" msgstr[2] "Согласны" -#: ../../include/conversation.php:1711 +#: ../../include/conversation.php:1720 msgctxt "noun" msgid "Disagree" msgid_plural "Disagrees" @@ -2982,7 +2958,7 @@ msgstr[0] "Не согласен" msgstr[1] "Не согласны" msgstr[2] "Не согласны" -#: ../../include/conversation.php:1714 +#: ../../include/conversation.php:1723 msgctxt "noun" msgid "Abstain" msgid_plural "Abstains" @@ -3019,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 "нравится" @@ -3027,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 "не нравится" @@ -3044,11 +3020,11 @@ msgid "Delete this item?" msgstr "Удалить этот элемент?" #: ../../include/js_strings.php:6 ../../Zotlabs/Module/Photos.php:1137 -#: ../../Zotlabs/Module/Photos.php:1256 ../../Zotlabs/Lib/ThreadItem.php:772 +#: ../../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 показать всё" @@ -3397,11 +3373,11 @@ msgstr "" msgid "RSS/Atom" msgstr "" -#: ../../include/network.php:1720 ../../Zotlabs/Lib/Activity.php:1798 -#: ../../Zotlabs/Lib/Activity.php:1995 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1204 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1359 -#: ../../extend/addon/hzaddons/pubcrawl/as.php:1539 +#: ../../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 "" @@ -3465,7 +3441,7 @@ msgstr "YYYY-MM-DD или MM-DD" msgid "Required" msgstr "Требуется" -#: ../../include/datetime.php:238 ../../boot.php:2562 +#: ../../include/datetime.php:238 ../../boot.php:2561 msgid "never" msgstr "никогда" @@ -3591,7 +3567,7 @@ msgid "Permissions" msgstr "Разрешения" #: ../../include/acl_selectors.php:125 ../../Zotlabs/Module/Photos.php:1316 -#: ../../Zotlabs/Lib/ThreadItem.php:441 +#: ../../Zotlabs/Lib/ThreadItem.php:459 msgid "Close" msgstr "Закрыть" @@ -3715,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:314 +#: ../../Zotlabs/Lib/Apps.php:333 msgid "Channel Manager" msgstr "Менеджер каналов" @@ -3730,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:316 +#: ../../Zotlabs/Widget/Settings_menu.php:68 ../../Zotlabs/Lib/Apps.php:335 msgid "Settings" msgstr "Настройки" @@ -3739,7 +3715,7 @@ msgid "Account/Channel Settings" msgstr "Настройки аккаунта / канала" #: ../../include/nav.php:103 ../../include/nav.php:132 -#: ../../include/nav.php:151 ../../boot.php:1628 +#: ../../include/nav.php:151 ../../boot.php:1629 msgid "Logout" msgstr "Выход" @@ -3759,8 +3735,8 @@ msgstr "Управление / редактирование профилей" msgid "Edit your profile" msgstr "Редактировать профиль" -#: ../../include/nav.php:118 ../../include/nav.php:122 ../../boot.php:1629 -#: ../../Zotlabs/Lib/Apps.php:313 +#: ../../include/nav.php:118 ../../include/nav.php:122 ../../boot.php:1630 +#: ../../Zotlabs/Lib/Apps.php:332 msgid "Login" msgstr "Войти" @@ -3776,7 +3752,7 @@ msgstr "Домой" msgid "Log me out of this site" msgstr "Выйти с этого сайта" -#: ../../include/nav.php:156 ../../boot.php:1609 +#: ../../include/nav.php:156 ../../boot.php:1610 #: ../../Zotlabs/Module/Register.php:289 msgid "Register" msgstr "Регистрация" @@ -3846,7 +3822,7 @@ msgid "Profile Details" msgstr "Информация о профиле" #: ../../include/nav.php:452 ../../Zotlabs/Storage/Browser.php:272 -#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:317 +#: ../../Zotlabs/Module/Fbrowser.php:85 ../../Zotlabs/Lib/Apps.php:336 msgid "Files" msgstr "Файлы" @@ -3860,11 +3836,11 @@ msgid "Calendar" msgstr "Календарь" #: ../../include/nav.php:477 ../../include/nav.php:480 -#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:309 +#: ../../Zotlabs/Widget/Chatroom_list.php:16 ../../Zotlabs/Lib/Apps.php:328 msgid "Chatrooms" msgstr "Чаты" -#: ../../include/nav.php:490 ../../Zotlabs/Lib/Apps.php:308 +#: ../../include/nav.php:490 ../../Zotlabs/Lib/Apps.php:327 msgid "Bookmarks" msgstr "Закладки" @@ -3873,7 +3849,7 @@ msgid "Saved Bookmarks" msgstr "Сохранённые закладки" #: ../../include/nav.php:501 ../../Zotlabs/Module/Cards.php:207 -#: ../../Zotlabs/Lib/Apps.php:305 +#: ../../Zotlabs/Lib/Apps.php:324 msgid "Cards" msgstr "Карточки" @@ -3882,7 +3858,7 @@ msgid "View Cards" msgstr "Просмотреть карточки" #: ../../include/nav.php:512 ../../Zotlabs/Module/Articles.php:222 -#: ../../Zotlabs/Lib/Apps.php:304 +#: ../../Zotlabs/Lib/Apps.php:323 msgid "Articles" msgstr "Статьи" @@ -3891,7 +3867,7 @@ msgid "View Articles" msgstr "Просмотр статей" #: ../../include/nav.php:524 ../../Zotlabs/Module/Webpages.php:252 -#: ../../Zotlabs/Lib/Apps.php:318 +#: ../../Zotlabs/Lib/Apps.php:337 msgid "Webpages" msgstr "Веб-страницы" @@ -3904,7 +3880,7 @@ msgstr "Просмотр веб-страниц" msgid "Wikis" msgstr "" -#: ../../include/nav.php:539 ../../Zotlabs/Lib/Apps.php:319 +#: ../../include/nav.php:539 ../../Zotlabs/Lib/Apps.php:338 msgid "Wiki" msgstr "" @@ -3985,45 +3961,45 @@ msgstr "Пустое имя пути" msgid "Profile Photos" msgstr "Фотографии профиля" -#: ../../boot.php:1608 +#: ../../boot.php:1609 msgid "Create an account to access services and applications" msgstr "Создайте аккаунт для доступа к службам и приложениям" -#: ../../boot.php:1632 +#: ../../boot.php:1633 msgid "Login/Email" msgstr "Пользователь / email" -#: ../../boot.php:1633 +#: ../../boot.php:1634 msgid "Password" msgstr "Пароль" -#: ../../boot.php:1634 +#: ../../boot.php:1635 msgid "Remember me" msgstr "Запомнить меня" -#: ../../boot.php:1637 +#: ../../boot.php:1638 msgid "Forgot your password?" msgstr "Забыли пароль или логин?" -#: ../../boot.php:1638 ../../Zotlabs/Module/Lostpass.php:91 +#: ../../boot.php:1639 ../../Zotlabs/Module/Lostpass.php:91 msgid "Password Reset" msgstr "Сбросить пароль" -#: ../../boot.php:2435 +#: ../../boot.php:2434 #, php-format msgid "[$Projectname] Website SSL error for %s" msgstr "[$Projectname] Ошибка SSL/TLS веб-сайта для %s" -#: ../../boot.php:2440 +#: ../../boot.php:2439 msgid "Website SSL certificate is not valid. Please correct." msgstr "SSL/TLS сертификат веб-сайт недействителен. Исправьте это." -#: ../../boot.php:2556 +#: ../../boot.php:2555 #, php-format msgid "[$Projectname] Cron tasks not running on %s" msgstr "[$Projectname] Задания Cron не запущены на %s" -#: ../../boot.php:2561 +#: ../../boot.php:2560 msgid "Cron/Scheduled tasks not running." msgstr "Задания Cron / планировщика не запущены." @@ -4069,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 "Удалено администратором" @@ -4272,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 @@ -4293,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/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: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: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 "не установлено" @@ -4382,7 +4386,7 @@ msgid "" "connections." msgstr "Используйте эту форму для создания правил разрешений для различных групп людей и контактов." -#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:352 +#: ../../Zotlabs/Module/Permcats.php:112 ../../Zotlabs/Lib/Apps.php:371 msgid "Permission Categories" msgstr "Категории разрешений" @@ -4523,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" @@ -4549,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 страниц." @@ -4956,7 +4960,7 @@ 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:939 ../../Zotlabs/Lib/Apps.php:515 +#: ../../Zotlabs/Module/Connedit.php:939 ../../Zotlabs/Lib/Apps.php:534 msgid "Update" msgstr "Обновить" @@ -5017,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 "🔁 Repeated %1$s's %2$s" +msgstr "🔁 Повторил %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 "Нет новых оповещений системы." @@ -5620,21 +5633,21 @@ 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:1135 ../../Zotlabs/Module/Photos.php:1254 -#: ../../Zotlabs/Lib/ThreadItem.php:770 +#: ../../Zotlabs/Lib/ThreadItem.php:788 msgid "This is you" msgstr "Это вы" #: ../../Zotlabs/Module/Photos.php:1173 ../../Zotlabs/Module/Photos.php:1185 -#: ../../Zotlabs/Lib/ThreadItem.php:217 ../../Zotlabs/Lib/ThreadItem.php:229 +#: ../../Zotlabs/Lib/ThreadItem.php:228 ../../Zotlabs/Lib/ThreadItem.php:240 msgid "View all" msgstr "Просмотреть все" @@ -5650,12 +5663,12 @@ msgstr "На этой фотографии:" msgid "Map" msgstr "Карта" -#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:435 +#: ../../Zotlabs/Module/Photos.php:1310 ../../Zotlabs/Lib/ThreadItem.php:453 msgctxt "noun" msgid "Likes" msgstr "Нравится" -#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:436 +#: ../../Zotlabs/Module/Photos.php:1311 ../../Zotlabs/Lib/ThreadItem.php:454 msgctxt "noun" msgid "Dislikes" msgstr "Не нравится" @@ -5812,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 "Ключ клиента" @@ -5824,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 "Код клиента" @@ -6022,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:354 +#: ../../Zotlabs/Widget/Notifications.php:142 ../../Zotlabs/Lib/Apps.php:373 msgid "Public Stream" msgstr "Публичный поток" @@ -6472,7 +6485,7 @@ msgstr "Автоматический импорт контента из друг msgid "*" msgstr "" -#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:346 +#: ../../Zotlabs/Module/Sources.php:107 ../../Zotlabs/Lib/Apps.php:365 msgid "Channel Sources" msgstr "Источники канала" @@ -7525,19 +7538,19 @@ msgid "%1$s abstains from a decision on %2$s's %3$s" msgstr "%1$s воздерживается от решения по %2$s%3$s" #: ../../Zotlabs/Module/Like.php:457 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2133 +#: ../../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:459 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2135 +#: ../../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:461 -#: ../../extend/addon/hzaddons/diaspora/Receiver.php:2137 +#: ../../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" @@ -8675,7 +8688,7 @@ msgstr "Загрузить репозиторий расширений" msgid "Install new repo" msgstr "Установить новый репозиторий" -#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:515 +#: ../../Zotlabs/Module/Admin/Addons.php:422 ../../Zotlabs/Lib/Apps.php:534 msgid "Install" msgstr "Установить" @@ -9468,7 +9481,7 @@ msgid "Their Settings" msgstr "Их настройки" #: ../../Zotlabs/Module/Notifications.php:60 -#: ../../Zotlabs/Lib/ThreadItem.php:428 +#: ../../Zotlabs/Lib/ThreadItem.php:446 msgid "Mark all seen" msgstr "Отметить как просмотренное" @@ -9569,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 "Простое приложение для заметок с виджетом (примечание: заметки не зашифрованы)" @@ -10184,7 +10197,7 @@ msgstr "Приложение \"Настроение\"" msgid "Set your current mood and tell your friends" msgstr "Установить текущее настроение и рассказать друзьям" -#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:327 +#: ../../Zotlabs/Module/Mood.php:154 ../../Zotlabs/Lib/Apps.php:346 msgid "Mood" msgstr "Настроение" @@ -10584,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 "Сохранить в каталог" @@ -10938,7 +10951,7 @@ msgstr "Просмотр публичного потока. Предупрежд msgid "Forums" msgstr "Форумы" -#: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:348 +#: ../../Zotlabs/Widget/Notes.php:21 ../../Zotlabs/Lib/Apps.php:367 msgid "Notes" msgstr "Заметки" @@ -11340,7 +11353,7 @@ msgstr "Управление местоположением" msgid "Member registrations waiting for confirmation" msgstr "Регистрации участников, ожидающие подверждения" -#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:335 +#: ../../Zotlabs/Widget/Admin.php:26 ../../Zotlabs/Lib/Apps.php:354 msgid "Features" msgstr "Функции" @@ -11552,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" @@ -11658,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 "" @@ -11999,172 +12012,184 @@ msgctxt "permcat" msgid "publisher" msgstr "издатель" -#: ../../Zotlabs/Lib/Apps.php:303 +#: ../../Zotlabs/Lib/Apps.php:322 msgid "Apps" msgstr "Приложения" -#: ../../Zotlabs/Lib/Apps.php:306 +#: ../../Zotlabs/Lib/Apps.php:325 msgid "Site Admin" msgstr "Администратор сайта" -#: ../../Zotlabs/Lib/Apps.php:307 +#: ../../Zotlabs/Lib/Apps.php:326 #: ../../extend/addon/hzaddons/buglink/buglink.php:16 msgid "Report Bug" msgstr "Сообщить об ошибке" -#: ../../Zotlabs/Lib/Apps.php:311 +#: ../../Zotlabs/Lib/Apps.php:330 msgid "Remote Diagnostics" msgstr "Удалённая диагностика" -#: ../../Zotlabs/Lib/Apps.php:315 +#: ../../Zotlabs/Lib/Apps.php:334 msgid "Stream" msgstr "Поток" -#: ../../Zotlabs/Lib/Apps.php:326 +#: ../../Zotlabs/Lib/Apps.php:345 msgid "Mail" msgstr "Переписка" -#: ../../Zotlabs/Lib/Apps.php:329 +#: ../../Zotlabs/Lib/Apps.php:348 msgid "Chat" msgstr "Чат" -#: ../../Zotlabs/Lib/Apps.php:331 +#: ../../Zotlabs/Lib/Apps.php:350 msgid "Probe" msgstr "Проба" -#: ../../Zotlabs/Lib/Apps.php:332 +#: ../../Zotlabs/Lib/Apps.php:351 msgid "Suggest" msgstr "Предложить" -#: ../../Zotlabs/Lib/Apps.php:333 +#: ../../Zotlabs/Lib/Apps.php:352 msgid "Random Channel" msgstr "Случайный канал" -#: ../../Zotlabs/Lib/Apps.php:334 +#: ../../Zotlabs/Lib/Apps.php:353 msgid "Invite" msgstr "Пригласить" -#: ../../Zotlabs/Lib/Apps.php:336 +#: ../../Zotlabs/Lib/Apps.php:355 #: ../../extend/addon/hzaddons/openid/MysqlProvider.php:69 msgid "Language" msgstr "Язык" -#: ../../Zotlabs/Lib/Apps.php:337 +#: ../../Zotlabs/Lib/Apps.php:356 msgid "Post" msgstr "Публикация" -#: ../../Zotlabs/Lib/Apps.php:338 +#: ../../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:342 +#: ../../Zotlabs/Lib/Apps.php:361 msgid "Notifications" msgstr "Оповещения" -#: ../../Zotlabs/Lib/Apps.php:343 +#: ../../Zotlabs/Lib/Apps.php:362 msgid "Order Apps" msgstr "Порядок приложений" -#: ../../Zotlabs/Lib/Apps.php:345 +#: ../../Zotlabs/Lib/Apps.php:364 msgid "CardDAV" msgstr "" -#: ../../Zotlabs/Lib/Apps.php:347 +#: ../../Zotlabs/Lib/Apps.php:366 msgid "Guest Access" msgstr "Гостевой доступ" -#: ../../Zotlabs/Lib/Apps.php:349 +#: ../../Zotlabs/Lib/Apps.php:368 msgid "OAuth Apps Manager" msgstr "Менеджер OAuth" -#: ../../Zotlabs/Lib/Apps.php:350 +#: ../../Zotlabs/Lib/Apps.php:369 msgid "OAuth2 Apps Manager" msgstr "Менеджер OAuth2" -#: ../../Zotlabs/Lib/Apps.php:351 +#: ../../Zotlabs/Lib/Apps.php:370 msgid "PDL Editor" msgstr "Редактор PDL" -#: ../../Zotlabs/Lib/Apps.php:353 +#: ../../Zotlabs/Lib/Apps.php:372 msgid "Premium Channel" msgstr "Премиальный канал" -#: ../../Zotlabs/Lib/Apps.php:355 +#: ../../Zotlabs/Lib/Apps.php:374 msgid "My Chatrooms" msgstr "Мои чаты" -#: ../../Zotlabs/Lib/Apps.php:356 +#: ../../Zotlabs/Lib/Apps.php:375 msgid "Channel Export" msgstr "Экспорт канала" -#: ../../Zotlabs/Lib/Apps.php:533 +#: ../../Zotlabs/Lib/Apps.php:552 msgid "Purchase" msgstr "Купить" -#: ../../Zotlabs/Lib/Apps.php:538 +#: ../../Zotlabs/Lib/Apps.php:557 msgid "Undelete" msgstr "Восстановить" -#: ../../Zotlabs/Lib/Apps.php:547 +#: ../../Zotlabs/Lib/Apps.php:566 msgid "Add to app-tray" msgstr "Добавить в app-tray" -#: ../../Zotlabs/Lib/Apps.php:548 +#: ../../Zotlabs/Lib/Apps.php:567 msgid "Remove from app-tray" msgstr "Удалить из app-tray" -#: ../../Zotlabs/Lib/Apps.php:549 +#: ../../Zotlabs/Lib/Apps.php:568 msgid "Pin to navbar" msgstr "Добавить на панель навигации" -#: ../../Zotlabs/Lib/Apps.php:550 +#: ../../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 "Я буду участвовать" -#: ../../Zotlabs/Lib/ThreadItem.php:188 +#: ../../Zotlabs/Lib/ThreadItem.php:199 msgid "I will not attend" 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" @@ -12172,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 вашего вебсайта (необязательно)" @@ -12315,36 +12340,31 @@ msgstr "Это настройка по умолчанию для тех, кто msgid "This is your default setting for the audience of your webpages" msgstr "Это настройка по умолчанию для аудитории ваших веб-страниц" -#: ../../Zotlabs/Lib/Activity.php:1450 +#: ../../Zotlabs/Lib/Activity.php:1458 #, php-format msgid "Likes %1$s's %2$s" msgstr "Нравится %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1453 +#: ../../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:1456 +#: ../../Zotlabs/Lib/Activity.php:1464 #, php-format msgid "Will attend %1$s's %2$s" msgstr "Примет участие %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1459 +#: ../../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:1462 +#: ../../Zotlabs/Lib/Activity.php:1470 #, php-format msgid "May attend %1$s's %2$s" msgstr "Возможно примет участие %1$s %2$s" -#: ../../Zotlabs/Lib/Activity.php:1465 -#, php-format -msgid "🔁 Repeated %1$s's %2$s" -msgstr "🔁 Повторил %1$s %2$s" - #: ../../Zotlabs/Lib/Techlevels.php:10 msgid "0. Beginner/Basic" msgstr "Начинающий / Базовый" @@ -12381,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" @@ -12509,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 "" @@ -12556,6 +12597,10 @@ msgstr "Максимальное количество для импорта" msgid "0 or blank to import all available" msgstr "0 или пусто для импорта всех доступных" +#: ../../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 "Простая галлерея для ваших фотоальбомов" @@ -12573,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" @@ -12618,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" @@ -12663,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 " @@ -12686,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 " @@ -12707,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." @@ -12824,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." @@ -12911,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 "Заблокировать каналы" @@ -13178,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" @@ -13411,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" @@ -13648,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/Mod_Ljpost.php:37 +msgid "Relay public posts to Livejournal" +msgstr "Пересылает общедоступные публикации в Livejournal" -#: ../../extend/addon/hzaddons/ljpost/ljpost.php:77 +#: ../../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 "" @@ -13686,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" @@ -13956,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" @@ -14287,25 +14358,31 @@ msgstr "Недействительный тип платежа. Пожалуйс 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/nofed.php:76 +#: ../../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/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." @@ -14402,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 "Радуга тегов" @@ -14429,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 @@ -14476,6 +14561,10 @@ 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" @@ -14563,17 +14652,25 @@ msgstr "Запишите ваш секретный код TOTP и повторн msgid "TOTP Settings" msgstr "Настройки TOTP" -#: ../../extend/addon/hzaddons/pageheader/pageheader.php:43 +#: ../../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/pageheader.php:48 -msgid "Pageheader Settings" -msgstr "Настройки шапки страницы" - -#: ../../extend/addon/hzaddons/pageheader/pageheader.php:64 -msgid "pageheader Settings saved." -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" @@ -14600,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/smileybutton.php:215 +#: ../../extend/addon/hzaddons/smileybutton/Mod_Smileybutton.php:36 +msgid "Adds a smileybutton to the jot editor" +msgstr "Добавлять кнопку со смайликами в редактор Jot" + +#: ../../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" @@ -14811,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" @@ -14919,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 "Каналы для автоматического подключения" @@ -15020,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." @@ -15058,7 +15150,7 @@ 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" @@ -15095,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 в группах безопасности" @@ -15132,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 комментировать ваши общедоступные публикации" @@ -15152,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" @@ -15160,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" @@ -15213,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 "Свернуть содержимое, содержащее предопределенные слова" @@ -15239,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 "Настройки скелета" diff --git a/view/ru/hstrings.php b/view/ru/hstrings.php index ee4c31619..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"; @@ -998,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."] = "Канала нет."; @@ -1116,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["🔁 Repeated %1\$s's %2\$s"] = "🔁 Повторил %1\$s %2\$s"; +App::$strings["Post repeated"] = "Публикация повторяется"; App::$strings["No more system notifications."] = "Нет новых оповещений системы."; App::$strings["System Notifications"] = "Системные оповещения "; App::$strings["%s element installed"] = "%s элемент установлен"; @@ -2632,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"] = "Может пересылать всем подписчикам моего канала используя ! в публикациях"; @@ -2759,6 +2761,7 @@ 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["Privacy conflict. Discretion advised."] = "Конфиликт настроек конфиденциальности."; App::$strings["I will attend"] = "Я буду участвовать"; App::$strings["I will not attend"] = "Я не буду участвовать"; App::$strings["I might attend"] = "Я возможно буду присутствовать"; @@ -2766,6 +2769,8 @@ 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"] = "Отчёт о доставке"; @@ -2813,7 +2818,6 @@ 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["🔁 Repeated %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. Промежуточный - более удобный"; @@ -2824,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."; @@ -2850,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"; @@ -2861,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"] = ""; @@ -2877,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 по умолчанию"; @@ -2888,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."] = "Нажмите сюда чтобы увидеть главную страницу вашего канала."; @@ -2921,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."] = "Хотите только поделиться временным содержимым? Установите срок его действия."; @@ -2940,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"] = "В настоящее время заблокирован"; @@ -3005,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 из веб-интерфейса"; @@ -3055,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."] = "Сообщение отправлено"; @@ -3114,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"; @@ -3180,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: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (leave blank for default network page (grid)."] = "Примеры: "apps", "network?f=&gid=37" (privacy collection), "channel" or "notifications/system" (оставьте пустым для для страницы сети по умолчанию)."; App::$strings["Startpage"] = "Стартовая страница"; @@ -3258,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"; @@ -3283,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."] = "Вы должны выбрать противника который не является вами."; @@ -3300,6 +3318,7 @@ 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["TOTP Two-Step Verification"] = "Двухэтапная верификация TOTP"; App::$strings["Enter the 2-step verification generated by your authenticator app:"] = "Введите код проверки, созданный вашим приложением для аутентификации"; @@ -3320,18 +3339,21 @@ 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["Message to display on every page on this server"] = "Отображаемое сообщение на каждой странице на этом сервере."; -App::$strings["Pageheader Settings"] = "Настройки шапки страницы"; 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"; @@ -3379,6 +3401,7 @@ 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"] = "Макс. количество обработчиков очереди"; @@ -3406,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"] = "Популярные каналы"; @@ -3429,15 +3448,16 @@ 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."] = "Настройки пересылки публикаций Hubzilla сохранены."; -App::$strings["Relay public postings to another Hubzilla channel"] = "Ретранслировать общедоступные публикации в другой канал 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"; @@ -3446,6 +3466,7 @@ App::$strings["Hubzilla Crosspost Connector"] = "Пересылка публик 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 статьи с мультимедиа"; @@ -3454,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"; @@ -3474,11 +3498,14 @@ 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"] = "Настройки скелета"; 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/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> {{$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> |