Merge remote-tracking branch 'upstream/master'

This commit is contained in:
Thomas Willingham 2013-08-14 20:44:17 +01:00
commit a0dfd44f91
27 changed files with 1330 additions and 519 deletions

View File

@ -43,7 +43,7 @@ require_once('include/taxonomy.php');
define ( 'RED_PLATFORM', 'Red Matrix' );
define ( 'RED_VERSION', trim(file_get_contents('version.inc')) . 'R');
define ( 'ZOT_REVISION', 1 );
define ( 'DB_UPDATE_VERSION', 1058 );
define ( 'DB_UPDATE_VERSION', 1059 );
define ( 'EOL', '<br />' . "\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );
@ -288,6 +288,10 @@ define ( 'ATTACH_FLAG_OS', 0x0002);
define ( 'MENU_ITEM_ZID', 0x0001);
define ( 'MENU_ITEM_NEWWIN', 0x0002);
/**
* Maximum number of "people who like (or don't like) this" that we will list by name
*/
@ -434,8 +438,8 @@ define ( 'ACCOUNT_PENDING', 0x0010 );
* Account roles
*/
define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 );
define ( 'ACCOUNT_ROLE_ADMIN', 0x1000 );
define ( 'ACCOUNT_ROLE_ALLOWCODE', 0x0001 );
/**
* Item visibility
@ -450,6 +454,7 @@ define ( 'ITEM_DELETED', 0x0010);
define ( 'ITEM_UNPUBLISHED', 0x0020);
define ( 'ITEM_WEBPAGE', 0x0040); // is a static web page, not a conversational item
define ( 'ITEM_DELAYED_PUBLISH', 0x0080);
define ( 'ITEM_BUILDBLOCK', 0x0100); // Named thusly to make sure nobody confuses this with ITEM_BLOCKED
/**
* Item Flags
@ -1618,20 +1623,13 @@ function profile_sidebar($profile, $block = 0) {
call_hooks('profile_sidebar_enter', $profile);
// don't show connect link to yourself
$connect = (($profile['uid'] != local_user()) ? t('Connect') : False);
require_once('include/Contact.php');
// don't show connect link to authenticated visitors either
if(remote_user() && count($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $profile['uid']) {
$connect = false;
break;
}
}
}
$connect_url = rconnect_url($profile['uid'],get_observer_hash());
$connect = (($connect_url) ? t('Connect') : '');
if($connect_url)
$connect_url = $connect_url . '/follow?f=1&url=' . $profile['channel_address'] . '@' . $a->get_hostname();
// show edit profile to yourself
if($is_owner) {
@ -1692,16 +1690,27 @@ function profile_sidebar($profile, $block = 0) {
$contact_block = contact_block();
}
$channel_menu = false;
$menu = get_pconfig($profile['uid'],'system','channel_menu');
if($menu) {
require_once('include/menu.php');
$m = menu_fetch($menu,$profile['uid'],$observer['xchan_hash']);
if($m)
$channel_menu = menu_render($m);
}
$tpl = get_markup_template('profile_vcard.tpl');
$o .= replace_macros($tpl, array(
'$profile' => $profile,
'$connect' => $connect,
'$connect_url' => $connect_url,
'$location' => $location,
'$gender' => $gender,
'$pdesc' => $pdesc,
'$marital' => $marital,
'$homepage' => $homepage,
'$chanmenu' => $channel_menu,
'$contact_block' => $contact_block,
));

View File

@ -1,6 +1,31 @@
<?php /** @file */
function rconnect_url($channel_id,$xchan) {
if(! $xchan)
return '';
$r = q("select abook_id from abook where abook_channel = %d and abook_xchan = '%s' limit 1",
intval($channel_id),
dbesc($xchan)
);
if($r)
return '';
$r = q("select hubloc_url from hubloc where hubloc_hash = '%s' and ( hubloc_flags & %d ) limit 1",
dbesc($xchan),
intval(HUBLOC_FLAGS_PRIMARY)
);
if($r)
return $r[0]['hubloc_url'];
return '';
}
function abook_connections($channel_id, $sql_conditions = '') {
$r = q("select * from abook left join xchan on abook_xchan = xchan_hash where abook_channel = %d
and not ( abook_flags & %d ) $sql_conditions",

View File

@ -6,6 +6,7 @@ require_once('include/plugin.php');
require_once('include/text.php');
require_once('include/language.php');
require_once('include/datetime.php');
require_once('include/crypto.php');
function check_account_email($email) {

View File

@ -1342,7 +1342,7 @@ function encode_rel_links($links) {
return xmlify($o);
}
function item_store($arr,$force_parent = false) {
function item_store($arr,$allow_exec = false) {
if(! $arr['uid']) {
logger('item_store: no uid');
@ -1357,6 +1357,13 @@ function item_store($arr,$force_parent = false) {
unset($arr['parent']);
$arr['mimetype'] = ((x($arr,'mimetype')) ? notags(trim($arr['mimetype'])) : 'text/bbcode');
if(($arr['mimetype'] == 'application/x-php') && (! $allow_exec)) {
logger('item_store: php mimetype but allow_exec is denied.');
return 0;
}
$arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
$arr['body'] = ((x($arr,'body')) ? trim($arr['body']) : '');
@ -1369,7 +1376,7 @@ function item_store($arr,$force_parent = false) {
// this is a bit messy - we really need an input filter chain that temporarily undoes obscuring
if($arr['mimetype'] != 'text/html') {
if($arr['mimetype'] != 'text/html' && $arr['mimetype'] != 'application/x-php') {
if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
$arr['body'] = escape_tags($arr['body']);
if((strpos($arr['title'],'<') !== false) || (strpos($arr['title'],'>') !== false))
@ -1665,7 +1672,7 @@ function item_store($arr,$force_parent = false) {
function item_store_update($arr,$force_parent = false) {
function item_store_update($arr,$allow_exec = false) {
if(! intval($arr['uid'])) {
logger('item_store_update: no uid');
@ -1696,24 +1703,35 @@ function item_store_update($arr,$force_parent = false) {
$arr = $translate['item'];
}
$arr['mimetype'] = ((x($arr,'mimetype')) ? notags(trim($arr['mimetype'])) : 'text/bbcode');
if(($arr['mimetype'] == 'application/x-php') && (! $allow_exec)) {
logger('item_store: php mimetype but allow_exec is denied.');
return 0;
}
// Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
$arr['body'] = escape_tags($arr['body']);
if($arr['mimetype'] != 'text/html' && $arr['mimetype'] != 'application/x-php') {
if((x($arr,'object')) && is_array($arr['object'])) {
activity_sanitise($arr['object']);
$arr['object'] = json_encode($arr['object']);
}
if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
$arr['body'] = escape_tags($arr['body']);
if((x($arr,'target')) && is_array($arr['target'])) {
activity_sanitise($arr['target']);
$arr['target'] = json_encode($arr['target']);
}
if((x($arr,'object')) && is_array($arr['object'])) {
activity_sanitise($arr['object']);
$arr['object'] = json_encode($arr['object']);
}
if((x($arr,'attach')) && is_array($arr['attach'])) {
activity_sanitise($arr['attach']);
$arr['attach'] = json_encode($arr['attach']);
if((x($arr,'target')) && is_array($arr['target'])) {
activity_sanitise($arr['target']);
$arr['target'] = json_encode($arr['target']);
}
if((x($arr,'attach')) && is_array($arr['attach'])) {
activity_sanitise($arr['attach']);
$arr['attach'] = json_encode($arr['attach']);
}
}
$orig = q("select * from item where id = %d and uid = %d limit 1",
@ -1740,7 +1758,6 @@ function item_store_update($arr,$force_parent = false) {
$arr['commented'] = datetime_convert();
$arr['received'] = datetime_convert();
$arr['changed'] = datetime_convert();
$arr['mimetype'] = ((x($arr,'mimetype')) ? notags(trim($arr['mimetype'])) : 'text/bbcode');
$arr['title'] = ((x($arr,'title')) ? notags(trim($arr['title'])) : '');
$arr['location'] = ((x($arr,'location')) ? notags(trim($arr['location'])) : '');
$arr['coord'] = ((x($arr,'coord')) ? notags(trim($arr['coord'])) : '');
@ -2692,7 +2709,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
}
}
$r = item_store($datarray,$force_parent);
$r = item_store($datarray);
continue;
}
@ -3127,21 +3144,28 @@ function item_expire($uid,$days) {
// and just expire conversations started by others
$expire_network_only = get_pconfig($uid,'expire','network_only');
$sql_extra = ((intval($expire_network_only)) ? " AND wall = 0 " : "");
$sql_extra = ((intval($expire_network_only)) ? " AND not (item_flags & " . intval(ITEM_WALL) . ") " : "");
$r = q("SELECT * FROM `item`
WHERE `uid` = %d
AND `created` < UTC_TIMESTAMP() - INTERVAL %d DAY
AND `id` = `parent`
$sql_extra
AND `deleted` = 0",
AND NOT (item_restrict & %d )
AND NOT (item_restrict & %d )
AND NOT (item_restrict & %d ) ",
intval($uid),
intval($days)
intval($days),
intval(ITEM_DELETED),
intval(ITEM_WEBPAGE),
intval(ITEM_BUILDBLOCK)
);
if(! count($r))
if(! $r)
return;
$r = fetch_post_tags($r,true);
$expire_items = get_pconfig($uid, 'expire','items');
$expire_items = (($expire_items===false)?1:intval($expire_items)); // default if not set: 1
@ -3158,20 +3182,19 @@ function item_expire($uid,$days) {
foreach($r as $item) {
// don't expire filed items
if(strpos($item['file'],'[') !== false)
$terms = get_terms_oftype($item['term'],TERM_FILE);
if($terms)
continue;
// Only expire posts, not photos and photo comments
if($expire_photos==0 && strlen($item['resource_id']))
if($expire_photos==0 && ($item['resource_type'] === 'photo'))
continue;
if($expire_starred==0 && intval($item['starred']))
continue;
if($expire_notes==0 && $item['type']=='note')
continue;
if($expire_items==0 && $item['type']!='note')
if($expire_starred==0 && ($item['item_flags'] & ITEM_STARRED))
continue;
drop_item($item['id'],false);

258
include/menu.php Normal file
View File

@ -0,0 +1,258 @@
<?php /** @file */
require_once('include/security.php');
function menu_fetch($name,$uid,$observer_xchan) {
$sql_options = permissions_sql($uid);
$r = q("select * from menu where menu_channel_id = %d and menu_name = '%s' limit 1",
intval($uid),
dbesc($name)
);
if($r) {
$x = q("select * from menu_item where mitem_menu_id = %d and mitem_channel_id = %d
$sql_options
order by mitem_order asc, mitem_desc asc",
intval($r[0]['menu_id']),
intval($uid)
);
return array('menu' => $r[0], 'items' => $x );
}
return null;
}
function menu_render($menu) {
if(! $menu)
return '';
for($x = 0; $x < count($menu['items']); $x ++)
if($menu['items']['mitem_flags'] & MENU_ITEM_ZID)
$menu['items']['mitem_link'] = zid($menu['items']['mitem_link']);
if($menu['items']['mitem_flags'] & MENU_ITEM_NEWWIN)
$menu['items']['newwin'] = '1';
return replace_macros(get_markup_template('usermenu.tpl'),array(
'$menu' => $menu['menu'],
'$items' => $menu['items']
));
}
function menu_fetch_id($menu_id,$channel_id) {
$r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1",
intval($menu_id),
intval($channel_id)
);
return (($r) ? $r[0] : false);
}
function menu_create($arr) {
$menu_name = trim(escape_tags($arr['menu_name']));
$menu_desc = trim(escape_tags($arr['menu_desc']));
if(! $menu_desc)
$menu_desc = $menu_name;
if(! $menu_name)
return false;
$menu_channel_id = intval($arr['menu_channel_id']);
$r = q("select * from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
dbesc($menu_name),
intval($menu_channel_id)
);
if($r)
return false;
$r = q("insert into menu ( menu_name, menu_desc, menu_channel_id )
values( '%s', '%s', %d )",
dbesc($menu_name),
dbesc($menu_desc),
intval($menu_channel_id)
);
if(! $r)
return false;
$r = q("select menu_id from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
dbesc($menu_name),
intval($menu_channel_id)
);
if($r)
return $r[0]['menu_id'];
return false;
}
function menu_list($channel_id) {
$r = q("select * from menu where menu_channel_id = %d order by menu_name",
intval($channel_id)
);
return $r;
}
function menu_edit($arr) {
$menu_id = intval($arr['menu_id']);
$menu_name = trim(escape_tags($arr['menu_name']));
$menu_desc = trim(escape_tags($arr['menu_desc']));
if(! $menu_desc)
$menu_desc = $menu_name;
if(! $menu_name)
return false;
$r = q("select menu_id from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
dbesc($menu_name),
intval($menu_channel_id)
);
if(($r) && ($r[0]['menu_id'] != $menu_id)) {
logger('menu_edit: duplicate menu name for channel ' . $menu_channel_id);
return false;
}
$menu_channel_id = intval($arr['menu_channel_id']);
$r = q("select * from menu where menu_id = %d and menu_channel_id = %d limit 1",
intval($menu_id),
intval($menu_channel_id)
);
if(! $r) {
logger('menu_edit: not found: ' . print_r($arr,true));
return false;
}
$r = q("select * from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
dbesc($menu_name),
intval($menu_channel_id)
);
if($r)
return false;
return q("update menu set menu_name = '%s', menu_desc = '%s'
where menu_id = %d and menu_channel_id = %d limit 1",
dbesc($menu_name),
dbesc($menu_desc),
intval($menu_id),
intval($menu_channel_id)
);
}
function menu_delete($menu_name, $uid) {
$r = q("select menu_id from menu where menu_name = '%s' and menu_channel_id = %d limit 1",
dbesc($menu_name),
intval($uid)
);
if($r)
return menu_delete_id($r[0]['menu_id'],$uid);
return false;
}
function menu_delete_id($menu_id, $uid) {
$r = q("select menu_id from menu where menu_id = %d and menu_channel_id = %d limit 1",
intval($menu_id),
intval($uid)
);
if($r) {
$x = q("delete from menu_item where mitem_menu_id = %d and mitem_channel_id = %d",
intval($menu_id),
intval($uid)
);
return q("delete from menu where menu_id = %d and menu_channel_id = %d limit 1",
intval($menu_id),
intval($uid)
);
}
return false;
}
function menu_add_item($menu_id, $uid, $arr) {
$mitem_link = escape_tags($arr['mitem_link']);
$mitem_desc = escape_tags($arr['mitem_desc']);
$mitem_order = intval($arr['mitem_order']);
$mitem_flags = intval($arr['mitem_flags']);
$allow_cid = perms2str($arr['allow_cid']);
$allow_gid = perms2str($arr['allow_gid']);
$deny_cid = perms2str($arr['deny_cid']);
$deny_gid = perms2str($arr['deny_gid']);
$r = q("insert into menu_item ( mitem_link, mitem_desc, mitem_flags, allow_cid, allow_gid, deny_cid, deny_gid, mitem_channel_id, mitem_menu_id, mitem_order ) values ( '%s', '%s', %d, '%s', '%s', '%s', '%s', %d, %d, %d ) ",
dbesc($mitem_link),
dbesc($mitem_desc),
intval($mitem_flags),
dbesc($allow_cid),
dbesc($allow_gid),
dbesc($deny_cid),
dbesc($deny_gid),
intval($uid),
intval($menu_id),
intval($mitem_order)
);
return $r;
}
function menu_edit_item($menu_id, $uid, $arr) {
$mitem_id = intval($arr['mitem_id']);
$mitem_link = escape_tags($arr['mitem_link']);
$mitem_desc = escape_tags($arr['mitem_desc']);
$mitem_order = intval($arr['mitem_order']);
$mitem_flags = intval($arr['mitem_flags']);
$allow_cid = perms2str($arr['allow_cid']);
$allow_gid = perms2str($arr['allow_gid']);
$deny_cid = perms2str($arr['deny_cid']);
$deny_gid = perms2str($arr['deny_gid']);
$r = q("update menu_item set mitem_link = '%s', mitem_desc = '%s', mitem_flags = %d, allow_cid = '%s', allow_gid = '%s', deny_cid = '%s', deny_gid = '%s', mitem_order = %d where mitem_channel_id = %d and mitem_menu_id = %d and mitem_id = %d limit 1",
dbesc($mitem_link),
dbesc($mitem_desc),
intval($mitem_flags),
dbesc($allow_cid),
dbesc($allow_gid),
dbesc($deny_cid),
dbesc($deny_gid),
intval($mitem_order),
intval($uid),
intval($menu_id),
intval($mitem_id)
);
return $r;
}
function menu_del_item($menu_id,$uid,$item_id) {
$r = q("delete from menu_item where mitem_menu_id = %d and mitem_channel_id = %d and mitem_id = %d limit 1",
intval($menu_id),
intval($uid),
intval($item_id)
);
return $r;
}

View File

@ -241,6 +241,11 @@ function notifier_run($argv, $argc){
return;
}
if($target_item['item_restrict'] & ITEM_BUILDBLOCK) {
logger('notifier: target item ITEM_BUILDBLOCK', LOGGER_DEBUG);
return;
}
$s = q("select * from channel where channel_id = %d limit 1",
intval($target_item['uid'])

View File

@ -1142,6 +1142,22 @@ function prepare_text($text,$content_type = 'text/bbcode') {
$s = Markdown($text);
break;
// No security checking is done here at display time - so we need to verify
// that the author is allowed to use PHP before storing. We also cannot allow
// importation of PHP text bodies from other sites. Therefore this content
// type is only valid for web pages (and profile details).
// It may be possible to provide a PHP message body which is evaluated on the
// sender's site before sending it elsewhere. In that case we will have a
// different content-type here.
case 'application/x-php':
ob_start();
eval($text);
$s = ob_get_contents();
ob_end_clean();
break;
case 'text/bbcode':
case '':
default:

View File

@ -583,9 +583,14 @@ function import_xchan($arr) {
intval(HUBLOC_FLAGS_PRIMARY),
intval($r[0]['hubloc_id'])
);
update_modtime($xchan_hash);
$changed = true;
}
update_modtime($xchan_hash);
$changed = true;
continue;
}
if(! $location['sitekey']) {
logger('import_xchan: empty hubloc sitekey. ' . print_r($location,true));
continue;
}

View File

@ -47,7 +47,7 @@ you might have trouble getting everything to work.]
`mkdir view/tpl/smarty3`
`chown 777 view/smarty3`
`chmod 777 view/tpl/smarty3`
- For installing addons

View File

@ -530,15 +530,18 @@ CREATE TABLE IF NOT EXISTS `manage` (
CREATE TABLE IF NOT EXISTS `menu` (
`menu_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`menu_channel_id` int(10) unsigned NOT NULL DEFAULT '0',
`menu_name` char(255) NOT NULL DEFAULT '',
`menu_desc` char(255) NOT NULL DEFAULT '',
PRIMARY KEY (`menu_id`),
KEY `menu_channel_id` (`menu_channel_id`)
KEY `menu_channel_id` (`menu_channel_id`),
KEY `menu_name` (`menu_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
CREATE TABLE IF NOT EXISTS `menu_item` (
`mitem_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`mitem_link` char(255) NOT NULL DEFAULT '',
`mitem_desc` char(255) NOT NULL DEFAULT '',
`mitem_flags` int(11) NOT NULL DEFAULT '0',
`allow_cid` mediumtext NOT NULL,
`allow_gid` mediumtext NOT NULL,
`deny_cid` mediumtext NOT NULL,
@ -547,6 +550,7 @@ CREATE TABLE IF NOT EXISTS `menu_item` (
`mitem_menu_id` int(10) unsigned NOT NULL DEFAULT '0',
`mitem_order` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`mitem_id`),
KEY `mitem_flags` (`mitem_flags`),
KEY `mitem_channel_id` (`mitem_channel_id`),
KEY `mitem_menu_id` (`mitem_menu_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

View File

@ -1,6 +1,6 @@
<?php
define( 'UPDATE_VERSION' , 1058 );
define( 'UPDATE_VERSION' , 1059 );
/**
*
@ -670,3 +670,15 @@ function update_r1057() {
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}
function update_r1058() {
$r1 = q("ALTER TABLE `menu` ADD `menu_name` CHAR( 255 ) NOT NULL DEFAULT '' AFTER `menu_channel_id` ,
ADD INDEX ( `menu_name` ) ");
$r2 = q("ALTER TABLE `menu_item` ADD `mitem_flags` INT NOT NULL DEFAULT '0' AFTER `mitem_desc` ,
ADD INDEX ( `mitem_flags` ) ");
if($r1 && $r2)
return UPDATE_SUCCESS;
return UPDATE_FAILED;
}

View File

@ -70,6 +70,7 @@ function item_post(&$a) {
$categories = ((x($_REQUEST,'category')) ? escape_tags($_REQUEST['category']) : '');
$webpage = ((x($_REQUEST,'webpage')) ? intval($_REQUEST['webpage']) : 0);
$pagetitle = ((x($_REQUEST,'pagetitle')) ? escape_tags($_REQUEST['pagetitle']): '');
$buildblock = ((x($_REQUEST,'buildblock')) ? intval($_REQUEST['buildblock']) : 0);
if($pagetitle) {
require_once('library/urlify/URLify.php');
@ -492,6 +493,8 @@ function item_post(&$a) {
if($webpage)
$item_restrict = $item_restrict | ITEM_WEBPAGE;
if($buildblock)
$item_restrict = $item_restrict | ITEM_BUILDBLOCK;
if(! strlen($verb))

115
mod/menu.php Normal file
View File

@ -0,0 +1,115 @@
<?php
require_once('include/menu.php');
function menu_post(&$a) {
if(! local_user())
return;
$_REQUEST['menu_channel_id'] = local_user();
$menu_id = ((argc() > 1) ? intval(argv(1)) : 0);
if($menu_id) {
$_REQUEST['menu_id'] = intval(argv(1));
$r = menu_edit($_REQUEST);
if($r) {
info( t('Menu updated.') . EOL);
goaway(z_root() . '/mitem/' . $menu_id);
}
else
notice( t('Unable to update menu.'). EOL);
}
else {
$r = menu_create($_REQUEST);
if($r) {
info( t('Menu created.') . EOL);
goaway(z_root() . '/mitem/' . $r);
}
else
notice( t('Unable to create menu.'). EOL);
}
}
function menu_content(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return '';
}
if(argc() == 1) {
// list menus
$x = menu_list(local_user());
if($x) {
$o = replace_macros(get_markup_template('menulist.tpl'),array(
'$title' => t('Manage Menus'),
'$menus' => $x,
'$edit' => t('Edit'),
'$drop' => t('Drop'),
'$new' => t('New'),
'$hintnew' => t('Create a new menu'),
'$hintdrop' => t('Delete this menu'),
'$hintcontent' => t('Edit menu contents'),
'$hintedit' => t('Edit this menu')
));
}
return $o;
}
if(argc() > 1) {
if(argv(1) === 'new') {
$o = replace_macros(get_markup_template('menuedit.tpl'), array(
'$header' => t('New Menu'),
'$menu_name' => array('menu_name', t('Menu name'), '', t('Must be unique, only seen by you'), '*'),
'$menu_desc' => array('menu_desc', t('Menu title'), '', t('Menu title as seen by others'), ''),
'$submit' => t('Create')
));
return $o;
}
elseif(intval(argv(1))) {
$m = menu_fetch_id(intval(argv(1)),local_user());
if(! $m) {
notice( t('Menu not found.') . EOL);
return '';
}
if(argc() == 3 && argv(2) == 'drop') {
$r = menu_delete_id(intval(argv(1)),local_user());
if($r)
info( t('Menu deleted.') . EOL);
else
notice( t('Menu could not be deleted.'). EOL);
goaway(z_root() . '/menu');
}
else {
$o = replace_macros(get_markup_template('menuedit.tpl'), array(
'$header' => t('Edit Menu'),
'$menu_id' => intval(argv(1)),
'$hintedit' => t('Add or remove entries to this menu'),
'$editcontents' => t('Edit menu contents'),
'$menu_name' => array('menu_name', t('Menu name'), $m['menu_name'], t('Must be unique, only seen by you'), '*'),
'$menu_desc' => array('menu_desc', t('Menu title'), $m['menu_desc'], t('Menu title as seen by others'), ''),
'$submit' => t('Modify')
));
return $o;
}
}
else {
notice( t('Not found.') . EOL);
return;
}
}
}

200
mod/mitem.php Normal file
View File

@ -0,0 +1,200 @@
<?php
require_once('include/menu.php');
function mitem_init(&$a) {
if(! local_user())
return;
if(argc() < 2)
return;
$m = menu_fetch_id(intval(argv(1)),local_user());
if(! $m) {
notice( t('Menu not found.') . EOL);
return '';
}
$a->data['menu'] = $m;
}
function mitem_post(&$a) {
if(! local_user())
return;
if(! $a->data['menu'])
return;
$_REQUEST['mitem_channel_id'] = local_user();
$_REQUEST['menu_id'] = $a->data['menu']['menu_id'];
$_REQUEST['mitem_flags'] = 0;
if($_REQUEST['usezid'])
$_REQUEST['mitem_flags'] |= MENU_ITEM_ZID;
if($_REQUEST['newwin'])
$_REQUEST['mitem_flags'] |= MENU_ITEM_NEWWIN;
// FIXME!!!!
if ((! $_REQUEST['contact_allow'])
&& (! $_REQUEST['group_allow'])
&& (! $_REQUEST['contact_deny'])
&& (! $_REQUEST['group_deny'])) {
$str_group_allow = $channel['channel_allow_gid'];
$str_contact_allow = $channel['channel_allow_cid'];
$str_group_deny = $channel['channel_deny_gid'];
$str_contact_deny = $channel['channel_deny_cid'];
}
else {
// use the posted permissions
$str_group_allow = perms2str($_REQUEST['group_allow']);
$str_contact_allow = perms2str($_REQUEST['contact_allow']);
$str_group_deny = perms2str($_REQUEST['group_deny']);
$str_contact_deny = perms2str($_REQUEST['contact_deny']);
}
$mitem_id = ((argc() > 2) ? intval(argv(2)) : 0);
if($mitem_id) {
$_REQUEST['mitem_id'] = $mitem_id;
$r = menu_edit_item($_REQUEST['menu_id'],local_user(),$_REQUEST);
if($r) {
info( t('Menu element updated.') . EOL);
goaway(z_root() . '/mitem/' . $_REQUEST['menu_id']);
}
else
notice( t('Unable to update menu element.') . EOL);
}
else {
$r = menu_add_item($_REQUEST['menu_id'],local_user(),$_REQUEST);
if($r) {
info( t('Menu element added.') . EOL);
goaway(z_root() . '/mitem/' . $_REQUEST['menu_id']);
}
else
notice( t('Unable to add menu element.') . EOL);
}
}
function mitem_content(&$a) {
if(! local_user()) {
notice( t('Permission denied.') . EOL);
return '';
}
if(argc() < 2 || (! $a->data['menu'])) {
notice( t('Not found.') . EOL);
return '';
}
$m = menu_fetch($a->data['menu']['menu_name'],local_user(), get_observer_hash());
$a->set_widget('menu_preview',menu_render($m));
if(argc() == 2) {
$r = q("select * from menu_item where mitem_menu_id = %d and mitem_channel_id = %d order by mitem_order asc, mitem_desc asc",
intval($a->data['menu']['menu_id']),
local_user()
);
if($r) {
$o = replace_macros(get_markup_template('mitemlist.tpl'),array(
'$title' => t('Manage Menu Elements'),
'$menuname' => $a->data['menu']['menu_name'],
'$menudesc' => $a->data['menu']['menu_desc'],
'$edmenu' => t('Edit menu'),
'$menu_id' => $a->data['menu']['menu_id'],
'$mlist' => $r,
'$edit' => t('Edit element'),
'$drop' => t('Drop element'),
'$new' => t('New element'),
'$hintmenu' => t('Edit this menu container'),
'$hintnew' => t('Add menu element'),
'$hintdrop' => t('Delete this menu item'),
'$hintedit' => t('Edit this menu item')
));
}
return $o;
}
if(argc() > 2) {
if(argv(2) === 'new') {
$o = replace_macros(get_markup_template('mitemedit.tpl'), array(
'$header' => t('New Menu Element'),
'$menu_id' => $a->data['menu']['menu_id'],
'$mitem_desc' => array('mitem_desc', t('Link text'), '', '','*'),
'$mitem_link' => array('mitem_link', t('URL of link'), '', '', '*'),
'$usezid' => array('usezid', t('Use Red magic-auth if available'), true, ''),
'$newwin' => array('newwin', t('Open link in new window'), false,''),
// permissions go here
'$mitem_order' => array('mitem_order', t('Order in list'),'0',t('Higher numbers will sink to bottom of listing')),
'$submit' => t('Create')
));
return $o;
}
elseif(intval(argv(2))) {
$m = q("select * from menu_item where mitem_id = %d and mitem_channel_id = %d limit 1",
intval(argv(2)),
intval(local_user())
);
if(! $m) {
notice( t('Menu item not found.') . EOL);
goaway(z_root() . '/menu');
}
$mitem = $m[0];
if(argc() == 4 && argv(3) == 'drop') {
$r = menu_del_item($mitem['mitem_menu_id'], local_user(),intval(argv(2)));
if($r)
info( t('Menu item deleted.') . EOL);
else
notice( t('Menu item could not be deleted.'). EOL);
goaway(z_root() . '/mitem/' . $mitem['mitem_menu_id']);
}
else {
// edit menu item
$o = replace_macros(get_markup_template('mitemedit.tpl'), array(
'$header' => t('Edit Menu Element'),
'$menu_id' => $a->data['menu']['menu_id'],
'$mitem_id' => intval(argv(2)),
'$mitem_desc' => array('mitem_desc', t('Link text'), $mitem['mitem_desc'], '','*'),
'$mitem_link' => array('mitem_link', t('URL of link'), $mitem['mitem_link'], '', '*'),
'$usezid' => array('usezid', t('Use Red magic-auth if available'), (($mitem['mitem_flags'] & MENU_ITEM_ZID) ? 1 : 0), ''),
'$newwin' => array('newwin', t('Open link in new window'), (($mitem['mitem_flags'] & MENU_ITEM_NEWWIN) ? 1 : 0),''),
// permissions go here
'$mitem_order' => array('mitem_order', t('Order in list'),$mitem['mitem_order'],t('Higher numbers will sink to bottom of listing')),
'$submit' => t('Modify')
));
return $o;
}
}
}
}

View File

@ -330,7 +330,6 @@ function settings_post(&$a) {
$expire_items = ((x($_POST,'expire_items')) ? intval($_POST['expire_items']) : 0);
$expire_notes = ((x($_POST,'expire_notes')) ? intval($_POST['expire_notes']) : 0);
$expire_starred = ((x($_POST,'expire_starred')) ? intval($_POST['expire_starred']) : 0);
$expire_photos = ((x($_POST,'expire_photos'))? intval($_POST['expire_photos']) : 0);
$expire_network_only = ((x($_POST,'expire_network_only'))? intval($_POST['expire_network_only']) : 0);

View File

@ -1 +1 @@
2013-08-09.400
2013-08-14.405

File diff suppressed because it is too large Load Diff

View File

@ -27,26 +27,26 @@ $a->strings["%1\$s commented on [zrl=%2\$s]%3\$s's %4\$s[/zrl]"] = "%1\$s про
$a->strings["%1\$s commented on [zrl=%2\$s]your %3\$s[/zrl]"] = "%1\$s прокомментировал на [zrl=%2\$s]your %3\$s[/zrl]";
$a->strings["[Red:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Red:Уведомление] Комментарий к разговору #%1\$d по %2\$s";
$a->strings["%s commented on an item/conversation you have been following."] = "";
$a->strings["Please visit %s to view and/or reply to the conversation."] = "";
$a->strings["Please visit %s to view and/or reply to the conversation."] = "Пожалуйста, посетите %s для просмотра и/или ответа разговора.";
$a->strings["[Red:Notify] %s posted to your profile wall"] = "";
$a->strings["%1\$s posted to your profile wall at %2\$s"] = "";
$a->strings["%1\$s posted to [zrl=%2\$s]your wall[/zrl]"] = "";
$a->strings["[Red:Notify] %s tagged you"] = "";
$a->strings["%1\$s tagged you at %2\$s"] = "";
$a->strings["%1\$s [zrl=%2\$s]tagged you[/zrl]."] = "";
$a->strings["[Red:Notify] %1\$s poked you"] = "";
$a->strings["%1\$s poked you at %2\$s"] = "";
$a->strings["%1\$s [zrl=%2\$s]poked you[/zrl]."] = "";
$a->strings["[Red:Notify] %s tagged your post"] = "";
$a->strings["%1\$s tagged your post at %2\$s"] = "";
$a->strings["%1\$s tagged [zrl=%2\$s]your post[/zrl]"] = "";
$a->strings["[Red:Notify] Introduction received"] = "";
$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "";
$a->strings["You've received [zrl=%1\$s]an introduction[/zrl] from %2\$s."] = "";
$a->strings["You may visit their profile at %s"] = "";
$a->strings["[Red:Notify] %s tagged you"] = "[Red:Уведомление] %s добавил у вас тег";
$a->strings["%1\$s tagged you at %2\$s"] = "%1\$s добавил у вас тег в %2\$s";
$a->strings["%1\$s [zrl=%2\$s]tagged you[/zrl]."] = "%1\$s [zrl=%2\$s]добавил у вас тег[/zrl].";
$a->strings["[Red:Notify] %1\$s poked you"] = "[Red:Уведомление] %1\$s подпихнул вас";
$a->strings["%1\$s poked you at %2\$s"] = "%1\$s подпихнул вас в %2\$s";
$a->strings["%1\$s [zrl=%2\$s]poked you[/zrl]."] = "%1\$s [zrl=%2\$s]подпихнул вас[/zrl].";
$a->strings["[Red:Notify] %s tagged your post"] = "[Red:Уведомление] %s добавил у вас в сообщении тег";
$a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s добавил у вас в сообщении тег %2\$s";
$a->strings["%1\$s tagged [zrl=%2\$s]your post[/zrl]"] = "%1\$s добавил тег [zrl=%2\$s] у вас в сообщении[/zrl]";
$a->strings["[Red:Notify] Introduction received"] = "[Red:Уведомление] введение получено";
$a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Вы получили введение от '%1\$s' at %2\$s";
$a->strings["You've received [zrl=%1\$s]an introduction[/zrl] from %2\$s."] = "Вы получили [zrl=%1\$s]введение[/zrl] от %2\$s.";
$a->strings["You may visit their profile at %s"] = "Вы можете посетить ​​профиль в %s";
$a->strings["Please visit %s to approve or reject the introduction."] = "";
$a->strings["[Red:Notify] Friend suggestion received"] = "";
$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "";
$a->strings["[Red:Notify] Friend suggestion received"] = "[Red:Уведомление] Получено предложение дружить";
$a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Вы получили предложение дружить с '%1\$s' от %2\$s";
$a->strings["You've received [zrl=%1\$s]a friend suggestion[/zrl] for %2\$s from %3\$s."] = "";
$a->strings["Name:"] = "Имя:";
$a->strings["Photo:"] = "Фото:";
@ -54,19 +54,19 @@ $a->strings["Please visit %s to approve or reject the suggestion."] = "";
$a->strings["Connect"] = "Добавить";
$a->strings["New window"] = "Новое окно";
$a->strings["Open the selected location in a different window or browser tab"] = "";
$a->strings["Poke"] = "";
$a->strings["Poke"] = "Подпихнуть";
$a->strings["View Status"] = "Просмотр состояния";
$a->strings["View Profile"] = "Просмотр профиля";
$a->strings["View Photos"] = "Просмотр фотографий";
$a->strings["Network Posts"] = "Сообщения сети";
$a->strings["Edit Contact"] = "Редактировать контакт";
$a->strings["Send PM"] = "Отправить PM";
$a->strings["Edit Contact"] = "Редактировать канал";
$a->strings["Send PM"] = "Отправить личное сообщение";
$a->strings["Unknown | Not categorised"] = "Неизвестные | Без категории";
$a->strings["Block immediately"] = "Немедленно заблокировать";
$a->strings["Shady, spammer, self-marketer"] = "";
$a->strings["Known to me, but no opinion"] = "";
$a->strings["OK, probably harmless"] = "OK, наверное безвредно";
$a->strings["Reputable, has my trust"] = "";
$a->strings["Reputable, has my trust"] = "Авторитетно, имеет мое доверие";
$a->strings["Frequently"] = "Часто";
$a->strings["Hourly"] = "Ежечасно";
$a->strings["Twice daily"] = "Два раза в день";
@ -83,7 +83,7 @@ $a->strings["Zot!"] = "Zot!";
$a->strings["LinkedIn"] = "LinkedIn";
$a->strings["XMPP/IM"] = "XMPP/IM";
$a->strings["MySpace"] = "MySpace";
$a->strings["Add New Connection"] = "Добавить новый контакт";
$a->strings["Add New Connection"] = "Добавить новый канал";
$a->strings["Enter the channel address"] = "Введите адрес вашего канала";
$a->strings["Example: bob@example.com, http://example.com/barbara"] = "Пример: bob@example.com, http://example.com/barbara";
$a->strings["%d invitation available"] = array(
@ -96,7 +96,7 @@ $a->strings["Enter name or interest"] = "Впишите имя или интер
$a->strings["Connect/Follow"] = "Добавить/следовать";
$a->strings["Examples: Robert Morgenstein, Fishing"] = "Примеры: Владимир Ильич, Революционер";
$a->strings["Find"] = "Поиск";
$a->strings["Channel Suggestions"] = "Рекомендации контактов";
$a->strings["Channel Suggestions"] = "Рекомендации каналов";
$a->strings["Similar Interests"] = "Похожие интересы";
$a->strings["Random Profile"] = "Случайные";
$a->strings["Invite Friends"] = "Пригласить друзей";
@ -104,9 +104,9 @@ $a->strings["Saved Folders"] = "Запомненные папки";
$a->strings["Everything"] = "Все";
$a->strings["Categories"] = "Категории";
$a->strings["%d connection in common"] = array(
0 => "%d совместная связь",
1 => "%d совместные связи",
2 => "%d совместные контакты",
0 => "%d совместный канал",
1 => "%d совместных канала",
2 => "%d совместных каналов",
);
$a->strings["show more"] = "показать все";
$a->strings["Miscellaneous"] = "Прочее";
@ -173,7 +173,7 @@ $a->strings["Ability to tag existing posts"] = "";
$a->strings["Post Categories"] = "Категории сообщения";
$a->strings["Add categories to your posts"] = "";
$a->strings["Ability to file posts under folders"] = "";
$a->strings["Dislike Posts"] = "";
$a->strings["Dislike Posts"] = "Сообщение не нравится";
$a->strings["Ability to dislike posts/comments"] = "";
$a->strings["Star Posts"] = "Помечать сообщения";
$a->strings["Ability to mark special posts with a star indicator"] = "";
@ -194,8 +194,8 @@ $a->strings["show fewer"] = "показать меньше";
$a->strings["Password too short"] = "Пароль слишком короткий";
$a->strings["Passwords do not match"] = "Пароли не совпадают";
$a->strings["everybody"] = "все";
$a->strings["timeago.prefixAgo"] = "";
$a->strings["timeago.suffixAgo"] = "";
$a->strings["timeago.prefixAgo"] = "timeago.prefixAgo";
$a->strings["timeago.suffixAgo"] = "timeago.suffixAgo";
$a->strings["ago"] = "тому назад";
$a->strings["from now"] = "";
$a->strings["less than a minute"] = "менее чем одну минуту назад";
@ -209,7 +209,7 @@ $a->strings["about a month"] = "около месяца";
$a->strings["%d months"] = "%d мес.";
$a->strings["about a year"] = "около года";
$a->strings["%d years"] = "%d лет";
$a->strings["timeago.numbers"] = "";
$a->strings["timeago.numbers"] = "timeago.numbers";
$a->strings["No recipient provided."] = "";
$a->strings["[no subject]"] = "[без темы]";
$a->strings["Unable to determine sender."] = "";
@ -235,7 +235,7 @@ $a->strings["About:"] = "О себе:";
$a->strings["Hobbies/Interests:"] = "Хобби / интересы:";
$a->strings["Likes:"] = "Что вам нравится:";
$a->strings["Dislikes:"] = "Что вам не нравится:";
$a->strings["Contact information and Social Networks:"] = "Контактная информация и социальные сети:";
$a->strings["Contact information and Social Networks:"] = "Информация и социальные сети канала:";
$a->strings["Musical interests:"] = "Музыкальные интересы:";
$a->strings["Books, literature:"] = "Книги, литература:";
$a->strings["Television:"] = "Телевидение:";
@ -249,7 +249,7 @@ $a->strings["Welcome back "] = "Добро пожаловать";
$a->strings["The form security token was not correct. This probably happened because the form has been opened for too long (>3 hours) before submitting it."] = "";
$a->strings["Logout"] = "Выход";
$a->strings["End this session"] = "Закончить эту сессию";
$a->strings["Home"] = "Моя страница";
$a->strings["Home"] = "Мой канал";
$a->strings["Your posts and conversations"] = "Ваши сообщения и разговоры";
$a->strings["Your profile page"] = "Страницa вашего профиля";
$a->strings["Edit Profiles"] = "Редактирование профилей";
@ -277,8 +277,8 @@ $a->strings["See all matrix notifications"] = "Просмотреть все о
$a->strings["Mark all matrix notifications seen"] = "Пометить все оповещения матрицы как прочитанное";
$a->strings["See all channel notifications"] = "Просмотреть все оповещения канала";
$a->strings["Mark all channel notifications seen"] = "Пометить все оповещения канала как прочитанное";
$a->strings["Intros"] = "Контакты";
$a->strings["New Connections"] = "Новые контакты";
$a->strings["Intros"] = "Каналы";
$a->strings["New Connections"] = "Новые каналы";
$a->strings["See all channel introductions"] = "Просмотреть все введения канала";
$a->strings["Notices"] = "Оповещения";
$a->strings["Notifications"] = "Оповещения";
@ -299,7 +299,7 @@ $a->strings["Channel Select"] = "Выбор канала";
$a->strings["Manage Your Channels"] = "Управление каналов";
$a->strings["Settings"] = "Настройки";
$a->strings["Account/Channel Settings"] = "Настройки аккаунта/канала";
$a->strings["Connections"] = "Контакты";
$a->strings["Connections"] = "Связи";
$a->strings["Manage/Edit Friends and Connections"] = "";
$a->strings["Admin"] = "Администрация";
$a->strings["Site Setup and Configuration"] = "Установка и конфигурация сайта";
@ -375,23 +375,23 @@ $a->strings["It's complicated"] = "Это сложно";
$a->strings["Don't care"] = "Не заботьтесь";
$a->strings["Ask me"] = "Спроси меня";
$a->strings["Not a valid email address"] = "Не действительный адрес электронной почты";
$a->strings["Your email domain is not among those allowed on this site"] = "";
$a->strings["Your email address is already registered at this site."] = "";
$a->strings["An invitation is required."] = "";
$a->strings["Invitation could not be verified."] = "";
$a->strings["Please enter the required information."] = "";
$a->strings["Failed to store account information."] = "";
$a->strings["Your email domain is not among those allowed on this site"] = "Домен электронной почты не входит в число тех, которые разрешены на этом сайте";
$a->strings["Your email address is already registered at this site."] = "Ваш адрес электронной почты уже зарегистрирован на этом сайте.";
$a->strings["An invitation is required."] = "Требуется приглашение.";
$a->strings["Invitation could not be verified."] = "Не удалось проверить приглашение.";
$a->strings["Please enter the required information."] = "Пожалуйста, введите необходимую информацию.";
$a->strings["Failed to store account information."] = "Не удалось сохранить информацию аккаунта.";
$a->strings["Registration request at %s"] = "Требуется регистрация на %s";
$a->strings["Administrator"] = "Администратор";
$a->strings["your registration password"] = "Ваш пароль регистрации";
$a->strings["Registration details for %s"] = "Регистрационные данные для %s";
$a->strings["Account approved."] = "Аккаунт утвержден.";
$a->strings["Registration revoked for %s"] = "Регистрация отозвана для %s";
$a->strings["Unable to obtain identity information from database"] = "";
$a->strings["Unable to obtain identity information from database"] = "Невозможно получить идентификационную информацию из базы данных";
$a->strings["Empty name"] = "Пустое имя";
$a->strings["Name too long"] = "Слишком длинное имя";
$a->strings["No account identifier"] = "идентификатор аккаунта отсутствует";
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "";
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Псевдоним имеет недопустимые символы или уже используется на этом сайте.";
$a->strings["Unable to retrieve created identity"] = "";
$a->strings["Default Profile"] = "Профиль по умолчанию";
$a->strings["Click here to upgrade."] = "Нажмите здесь, чтобы обновить.";
@ -406,16 +406,16 @@ $a->strings["last"] = "последний";
$a->strings["next"] = "следующий";
$a->strings["older"] = "старший";
$a->strings["newer"] = "новее";
$a->strings["No connections"] = "Нет контактов";
$a->strings["No connections"] = "Нет каналов";
$a->strings["%d Connection"] = array(
0 => "%d Связи",
1 => "%d Связи",
2 => "%d Контактов",
0 => "%d канал",
1 => "%d канала",
2 => "%d каналов",
);
$a->strings["View Connections"] = "Просмотр контактов";
$a->strings["View Connections"] = "Просмотр открытых каналов";
$a->strings["Save"] = "Запомнить";
$a->strings["poke"] = "";
$a->strings["poked"] = "";
$a->strings["poke"] = "подпихнуть";
$a->strings["poked"] = "подпихнул";
$a->strings["ping"] = "";
$a->strings["pinged"] = "";
$a->strings["prod"] = "";
@ -510,20 +510,20 @@ $a->strings["Can edit my \"public\" pages"] = "Может редактирова
$a->strings["Can administer my channel resources"] = "Может администрировать мои ресурсы канала";
$a->strings["Extremely advanced. Leave this alone unless you know what you are doing"] = "";
$a->strings["Tags"] = "Тэги";
$a->strings["have"] = "";
$a->strings["has"] = "";
$a->strings["want"] = "";
$a->strings["wants"] = "";
$a->strings["have"] = "иметь";
$a->strings["has"] = "есть";
$a->strings["want"] = "хотеть";
$a->strings["wants"] = "хочет";
$a->strings["like"] = "мне нравиться";
$a->strings["likes"] = "мне нравиться";
$a->strings["dislike"] = "мне не-нравиться";
$a->strings["dislikes"] = "мне не-нравиться";
$a->strings["Item was not found."] = "";
$a->strings["Item was not found."] = "Элемент не найден.";
$a->strings["No source file."] = "Нет исходного файла.";
$a->strings["Cannot locate file to replace"] = "Не удается найти файл, чтобы заменить";
$a->strings["Cannot locate file to revise/update"] = "Не удается найти файл для пересмотра / обновления";
$a->strings["File exceeds size limit of %d"] = "";
$a->strings["File upload failed. Possible system limit or action terminated."] = "";
$a->strings["File exceeds size limit of %d"] = "Файл превышает предельный размер %d";
$a->strings["File upload failed. Possible system limit or action terminated."] = "Загрузка файла не удалась. Возможно система перегружена или попытка прекращена.";
$a->strings["Stored file could not be verified. Upload failed."] = "";
$a->strings["Path not available."] = "Путь недоступен.";
$a->strings["Private Message"] = "Личное сообщение";
@ -533,11 +533,11 @@ $a->strings["Select"] = "Выбрать";
$a->strings["save to folder"] = "сохранить в папку";
$a->strings["add star"] = "добавить маркировку";
$a->strings["remove star"] = "удалить маркировку";
$a->strings["toggle star status"] = "";
$a->strings["toggle star status"] = "переключение статуса маркировки";
$a->strings["starred"] = "помеченные";
$a->strings["add tag"] = "добавить тег";
$a->strings["I like this (toggle)"] = "";
$a->strings["I don't like this (toggle)"] = "";
$a->strings["I like this (toggle)"] = "мне это нравится (переключение)";
$a->strings["I don't like this (toggle)"] = "мне это не нравится (переключение)";
$a->strings["Share this"] = "Поделиться этим";
$a->strings["share"] = "поделиться";
$a->strings["View %s's profile - %s"] = "";
@ -548,8 +548,8 @@ $a->strings[" from %s"] = " от %s";
$a->strings["Please wait"] = "Подождите пожалуйста";
$a->strings["%d comment"] = array(
0 => "%d комментарий",
1 => "%d комментариев",
2 => "%d комментария",
1 => "%d комментария",
2 => "%d комментариев",
);
$a->strings["This is you"] = "Это вы";
$a->strings["Submit"] = "Отправить";
@ -563,12 +563,12 @@ $a->strings["Link"] = "Ссылка";
$a->strings["Video"] = "Видео";
$a->strings["Preview"] = "Предварительный просмотр";
$a->strings["channel"] = "канал";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "";
$a->strings["%1\$s is now connected with %2\$s"] = "";
$a->strings["%1\$s poked %2\$s"] = "";
$a->strings["%1\$s is currently %2\$s"] = "";
$a->strings["View %s's profile @ %s"] = "";
$a->strings["%1\$s likes %2\$s's %3\$s"] = "%1\$s нравится %2\$s's %3\$s";
$a->strings["%1\$s doesn't like %2\$s's %3\$s"] = "%1\$s не нравится %2\$s's %3\$s";
$a->strings["%1\$s is now connected with %2\$s"] = "%1\$s теперь соединен с %2\$s";
$a->strings["%1\$s poked %2\$s"] = "%1\$s подпихнул %2\$s";
$a->strings["%1\$s is currently %2\$s"] = "%1\$s в настоящее время %2\$s";
$a->strings["View %s's profile @ %s"] = "Просмотр %s's профиля @ %s";
$a->strings["View in context"] = "Показать в контексте";
$a->strings["Loading..."] = "Загрузка...";
$a->strings["Delete Selected Items"] = "Удалить выбранные элементы";
@ -578,7 +578,7 @@ $a->strings["%s doesn't like this."] = "%s не нравится это.";
$a->strings["<span %1\$s>%2\$d people</span> like this."] = "<span %1\$s>%2\$d чел.</span> нравится это.";
$a->strings["<span %1\$s>%2\$d people</span> don't like this."] = "<span %1\$s>%2\$d чел.</span> не нравится это.";
$a->strings["and"] = "и";
$a->strings[", and %d other people"] = "";
$a->strings[", and %d other people"] = ", и %d другие люди";
$a->strings["%s like this."] = "%s нравится это.";
$a->strings["%s don't like this."] = "%s не нравится это.";
$a->strings["Visible to <strong>everybody</strong>"] = "Видно для <strong>всех</strong>";
@ -614,17 +614,17 @@ $a->strings["Permission denied"] = "Доступ запрещен";
$a->strings["Item not found."] = "Элемент не найден.";
$a->strings["Archives"] = "Архивы";
$a->strings["Collection not found."] = "Коллекция не найдена.";
$a->strings["Collection has no members."] = "";
$a->strings["Connection not found."] = "Контакт не найден.";
$a->strings["Collection has no members."] = "В коллекции нет ни одного пользователя.";
$a->strings["Connection not found."] = "Канал не найден.";
$a->strings["Image/photo"] = "Изображение / фото";
$a->strings["%1\$s wrote the following %2\$s %3\$s"] = "";
$a->strings["post"] = "сообщение";
$a->strings["$1 wrote:"] = "$1 писал:";
$a->strings["Encrypted content"] = "Зашифрованное содержание";
$a->strings["No channel."] = "Не канал.";
$a->strings["Common connections"] = "Общие контакты";
$a->strings["No connections in common."] = "Общих контактов нет.";
$a->strings["Event title and start time are required."] = "";
$a->strings["Common connections"] = "Общие каналы";
$a->strings["No connections in common."] = "Общих каналов нет.";
$a->strings["Event title and start time are required."] = "Название события и время начала требуется.";
$a->strings["l, F j"] = "l, F j";
$a->strings["Edit event"] = "Редактировать мероприятие";
$a->strings["Create New Event"] = "Создать новое мероприятие";
@ -635,16 +635,16 @@ $a->strings["Event details"] = "Детали мероприятия";
$a->strings["Format is %s %s. Starting date and Title are required."] = "Формат: %s %s. Дата начала и название необходимы.";
$a->strings["Event Starts:"] = "Начало мероприятий:";
$a->strings["Required"] = "Необходимо";
$a->strings["Finish date/time is not known or not relevant"] = "";
$a->strings["Finish date/time is not known or not relevant"] = "Дата окончания / время окончания не известны или не релевантны";
$a->strings["Event Finishes:"] = "\t\nКонец мероприятий:";
$a->strings["Adjust for viewer timezone"] = "";
$a->strings["Adjust for viewer timezone"] = "Отрегулируйте для просмотра часовых поясов";
$a->strings["Description:"] = "Описание:";
$a->strings["Title:"] = "Заголовок:";
$a->strings["Share this event"] = "Поделиться этим мероприятием";
$a->strings["Object store: failed"] = "";
$a->strings["thing/stuff added"] = "";
$a->strings["OBJ: %1\$s %2\$s %3\$s"] = "";
$a->strings["not yet implemented."] = "";
$a->strings["not yet implemented."] = "еще не реализовано.";
$a->strings["Add Stuff to your Profile"] = "";
$a->strings["Select a profile"] = "Выберите профиль";
$a->strings["Select a category of stuff. e.g. I ______ something"] = "";
@ -655,19 +655,19 @@ $a->strings["Total invitation limit exceeded."] = "";
$a->strings["%s : Not a valid email address."] = "%s : Не действительный адрес электронной почты.";
$a->strings["Please join us on Red"] = "Пожалуйста, присоединяйтесь к нам в Red";
$a->strings["Invitation limit exceeded. Please contact your site administrator."] = "";
$a->strings["%s : Message delivery failed."] = "";
$a->strings["%s : Message delivery failed."] = "%s : Доставка сообщения не удалась.";
$a->strings["%d message sent."] = array(
0 => "",
1 => "",
2 => "",
0 => "%d сообщение отправленно.",
1 => "%d сообщения отправленно.",
2 => "%d сообщений отправленно.",
);
$a->strings["You have no more invitations available"] = "";
$a->strings["You have no more invitations available"] = "У вас больше нет приглашений";
$a->strings["Send invitations"] = "Послать приглашения";
$a->strings["Enter email addresses, one per line:"] = "Введите адреса электронной почты, по одному на строку:";
$a->strings["Your message:"] = "Ваше сообщение:";
$a->strings["You are cordially invited to join me and some other close friends on the Red Matrix - a revolutionary new decentralised social and information tool."] = "";
$a->strings["You will need to supply this invitation code: \$invite_code"] = "";
$a->strings["Please visit my channel at"] = "";
$a->strings["Please visit my channel at"] = "Пожалуйста, посетите мой канал на";
$a->strings["Once you have registered, please connect with my Red Matrix channel address:"] = "";
$a->strings["For more information about the Red Matrix Project and why it has the potential to change the internet as we know it, please visit http://getzot.com"] = "";
$a->strings["Friends of %s"] = "Друзья %s";
@ -681,7 +681,7 @@ $a->strings["Do you want to authorize this application to access your posts and
$a->strings["Yes"] = "Да";
$a->strings["No"] = "Нет";
$a->strings["You must be logged in to see this page."] = "";
$a->strings["No installed applications."] = "";
$a->strings["No installed applications."] = "Нет установленных приложений.";
$a->strings["Applications"] = "Приложения";
$a->strings["Invalid item."] = "Недействительный элемент.";
$a->strings["Channel not found."] = "Канал не найден.";
@ -786,12 +786,12 @@ $a->strings["Consumer Key"] = "Ключ клиента";
$a->strings["Consumer Secret"] = "Секрет клиента";
$a->strings["Redirect"] = "Перенаправление";
$a->strings["Icon url"] = "URL-адрес значка";
$a->strings["You can't edit this application."] = "";
$a->strings["You can't edit this application."] = "Вы не можете редактировать это приложение.";
$a->strings["Connected Apps"] = "Подключенные приложения";
$a->strings["Client key starts with"] = "";
$a->strings["No name"] = "Без названия";
$a->strings["Remove authorization"] = "Удалить разрешение";
$a->strings["No feature settings configured"] = "";
$a->strings["No feature settings configured"] = "Параметры функций не настроены";
$a->strings["Feature Settings"] = "Настройки функции";
$a->strings["Account Settings"] = "Настройки аккаунта";
$a->strings["Password Settings"] = "Настройки пароля";
@ -805,22 +805,22 @@ $a->strings["Off"] = "Выкл.";
$a->strings["On"] = "Вкл.";
$a->strings["Additional Features"] = "Дополнительные функции";
$a->strings["Connector Settings"] = "Настройки соединителя";
$a->strings["No special theme for mobile devices"] = "";
$a->strings["No special theme for mobile devices"] = "Нет специальной темы для мобильных устройств";
$a->strings["Display Settings"] = "Настройки отображения";
$a->strings["Display Theme:"] = "Тема отображения:";
$a->strings["Mobile Theme:"] = "";
$a->strings["Mobile Theme:"] = "Мобильная тема отображения:";
$a->strings["Update browser every xx seconds"] = "Обновление браузера каждые ХХ секунд";
$a->strings["Minimum of 10 seconds, no maximum"] = "Минимум 10 секунд, без максимума";
$a->strings["Maximum number of conversations to load at any time:"] = "";
$a->strings["Maximum of 100 items"] = "Максимум 100 элементов";
$a->strings["Don't show emoticons"] = "";
$a->strings["Don't show emoticons"] = "Не показывать emoticons";
$a->strings["Nobody except yourself"] = "Никто, кроме вас";
$a->strings["Only those you specifically allow"] = "Только комы вы разрешили";
$a->strings["Anybody in your address book"] = "Любой в вашей адресной книге";
$a->strings["Anybody on this website"] = "Любой на этом веб-сайте";
$a->strings["Anybody in this network"] = "Любой в этой сети";
$a->strings["Anybody on the internet"] = "Любой в интернете";
$a->strings["Publish your default profile in the network directory"] = "";
$a->strings["Publish your default profile in the network directory"] = "Публикация вашего профиля по умолчанию в каталоге сети";
$a->strings["Allow us to suggest you as a potential friend to new members?"] = "";
$a->strings["or"] = "или";
$a->strings["Your channel address is"] = "Адрес вашего канала:";
@ -866,12 +866,12 @@ $a->strings["You are poked/prodded/etc. in a post"] = "";
$a->strings["Advanced Account/Page Type Settings"] = "";
$a->strings["Change the behaviour of this account for special situations"] = "";
$a->strings["Public access denied."] = "Общественный доступ запрещен.";
$a->strings["No connections."] = "Никаких контактов.";
$a->strings["No connections."] = "Никаких каналов.";
$a->strings["Visit %s's profile [%s]"] = "";
$a->strings["View Connnections"] = "Просмотр контактов";
$a->strings["View Connnections"] = "Просмотр каналов";
$a->strings["Tag removed"] = "Тег удален";
$a->strings["Remove Item Tag"] = "Удалить Тег";
$a->strings["Select a tag to remove: "] = "";
$a->strings["Select a tag to remove: "] = "Выбрать тег для удаления: ";
$a->strings["Remove"] = "Удалить";
$a->strings["No potential page delegates located."] = "";
$a->strings["Delegate Page Management"] = "";
@ -896,7 +896,7 @@ $a->strings["Create a collection of channels."] = "";
$a->strings["Collection Name: "] = "Название коллекции:";
$a->strings["Members are visible to other channels"] = "";
$a->strings["Collection removed."] = "Коллекция удалена.";
$a->strings["Unable to remove collection."] = "";
$a->strings["Unable to remove collection."] = "Невозможно удалить коллекцию.";
$a->strings["Collection Editor"] = "Редактор коллекций";
$a->strings["Members"] = "Участники";
$a->strings["All Connected Channels"] = "Все подключенные каналы";
@ -908,7 +908,7 @@ $a->strings["Delete Photo"] = "Удалить фотографию";
$a->strings["%1\$s was tagged in %2\$s by %3\$s"] = "";
$a->strings["a photo"] = "фотография";
$a->strings["No photos selected"] = "Никакие фотографии не выбраны";
$a->strings["Access to this item is restricted."] = "";
$a->strings["Access to this item is restricted."] = "Доступ к этому элементу ограничен.";
$a->strings["You have used %1$.2f Mbytes of %2$.2f Mbytes photo storage."] = "";
$a->strings["You have used %1$.2f Mbytes of photo storage."] = "";
$a->strings["Upload Photos"] = "Загрузить фотографии";
@ -916,7 +916,7 @@ $a->strings["New album name: "] = "Название нового альбома:
$a->strings["or existing album name: "] = "или существующий альбом:";
$a->strings["Do not show a status post for this upload"] = "";
$a->strings["Permissions"] = "Разрешения";
$a->strings["Contact Photos"] = "Фотографии контактов";
$a->strings["Contact Photos"] = "Фотографии канала";
$a->strings["Edit Album"] = "Редактировать Фотоальбом";
$a->strings["Show Newest First"] = "Показать новые первыми";
$a->strings["Show Oldest First"] = "Показать старые первыми";
@ -994,8 +994,8 @@ $a->strings["Everybody"] = "Все";
$a->strings["Search Results For:"] = "Результаты поиска для:";
$a->strings["No such group"] = "Нет такой группы";
$a->strings["Group is empty"] = "Группа пуста";
$a->strings["Contact: "] = "Контакт: ";
$a->strings["Invalid contact."] = "Неправильный контакт.";
$a->strings["Contact: "] = "Канал: ";
$a->strings["Invalid contact."] = "Недействительный канал.";
$a->strings["Theme settings updated."] = "Настройки темы обновленны.";
$a->strings["Site"] = "Сайт";
$a->strings["Users"] = "Пользователи";
@ -1005,18 +1005,21 @@ $a->strings["DB updates"] = "Обновления базы данных";
$a->strings["Logs"] = "Журналы";
$a->strings["Plugin Features"] = "Функции плагинов";
$a->strings["User registrations waiting for confirmation"] = "Регистрации пользователей, которые ждут подтверждения";
$a->strings["Message queues"] = "Очередь непрочитанный сообщений";
$a->strings["Message queues"] = "Непрочитанный сообщений";
$a->strings["Administration"] = "Администрация";
$a->strings["Summary"] = "Резюме";
$a->strings["Registered users"] = "Зарегистрированных пользователeй";
$a->strings["Pending registrations"] = "Утверждения регистрации ждут";
$a->strings["Version"] = "Версия";
$a->strings["Registered users"] = "Всего пользователeй";
$a->strings["Pending registrations"] = "Ждут утверждения";
$a->strings["Version"] = "Версия системы";
$a->strings["Active plugins"] = "Активные плагины";
$a->strings["Site settings updated."] = "Настройки сайта обновлены.";
$a->strings["No special theme for accessibility"] = "";
$a->strings["Closed"] = "Регистрация закрыта";
$a->strings["Requires approval"] = "Регистрация требует подтверждения";
$a->strings["Open"] = "Регистрация открыта";
$a->strings["Private"] = "Личный доступ";
$a->strings["Paid Access"] = "Платный доступ";
$a->strings["Free Access"] = "Свободный доступ";
$a->strings["No SSL policy, links will track page SSL state"] = "";
$a->strings["Force all links to use SSL"] = "Заставить все ссылки использовать SSL";
$a->strings["Registration"] = "Регистрация";
@ -1028,8 +1031,8 @@ $a->strings["Banner/Logo"] = "Баннер / логотип";
$a->strings["System language"] = "Язык системы";
$a->strings["System theme"] = "Тема системы";
$a->strings["Default system theme - may be over-ridden by user profiles - <a href='#' id='cnftheme'>change theme settings</a>"] = "";
$a->strings["Mobile system theme"] = "";
$a->strings["Theme for mobile devices"] = "";
$a->strings["Mobile system theme"] = "Мобильная тема системы";
$a->strings["Theme for mobile devices"] = "Тема для мобильных устройств";
$a->strings["Accessibility system theme"] = "";
$a->strings["Accessibility theme"] = "";
$a->strings["Channel to use for this website's static pages"] = "";
@ -1039,6 +1042,7 @@ $a->strings["Determines whether generated links should be forced to use SSL"] =
$a->strings["Maximum image size"] = "Максимальный размер";
$a->strings["Maximum size in bytes of uploaded images. Default is 0, which means no limits."] = "";
$a->strings["Register policy"] = "Статус регистрации";
$a->strings["Access policy"] = "Правила доступа";
$a->strings["Register text"] = "Текст регистрации";
$a->strings["Will be displayed prominently on the registration page."] = "";
$a->strings["Accounts abandoned after x days"] = "";
@ -1076,14 +1080,14 @@ $a->strings["%s user blocked/unblocked"] = array(
2 => "",
);
$a->strings["%s user deleted"] = array(
0 => "%s контакт удален",
1 => "%s контакта удалены",
2 => "%s контакты удалены",
0 => "%s канал удален",
1 => "%s канала удалены",
2 => "%s каналов удалено",
);
$a->strings["Account not found"] = "Аккаунт не найден";
$a->strings["User '%s' deleted"] = "Контакт '%s' удален";
$a->strings["User '%s' unblocked"] = "Контакт '%s' разрешен";
$a->strings["User '%s' blocked"] = "Контакт '%s' заблокирован";
$a->strings["User '%s' deleted"] = "Пользователь '%s' удален";
$a->strings["User '%s' unblocked"] = "Пользователь '%s' разрешен";
$a->strings["User '%s' blocked"] = "Пользователь '%s' заблокирован";
$a->strings["Normal Account"] = "Нормальный аккаунт";
$a->strings["Soapbox Account"] = "Soapbox аккаунт";
$a->strings["Community/Celebrity Account"] = "Community/Celebrity аккаунт";
@ -1091,7 +1095,7 @@ $a->strings["Automatic Friend Account"] = "Аккаунт \"автоматиче
$a->strings["select all"] = "выбрать все";
$a->strings["User registrations waiting for confirm"] = "Регистрации пользователей ждут подтверждения";
$a->strings["Request date"] = "Дата запроса";
$a->strings["No registrations."] = "Регистраций нет.";
$a->strings["No registrations."] = "Новых регистраций пока нет.";
$a->strings["Approve"] = "Утвердить";
$a->strings["Deny"] = "Запретить";
$a->strings["Block"] = "Заблокировать";
@ -1119,12 +1123,12 @@ $a->strings["Log file"] = "Файл журнала";
$a->strings["Must be writable by web server. Relative to your Red top-level directory."] = "Должна быть доступна для записи веб-сервером. Относительно верхнего уровня веб-сайта.";
$a->strings["Log level"] = "Уровень журнала";
$a->strings["Ignore"] = "Игнорировать";
$a->strings["Connection updated."] = "Контакт обновлен.";
$a->strings["Connection update failed."] = "Ошибка обновления контакта.";
$a->strings["Connection updated."] = "Канал обновлен.";
$a->strings["Connection update failed."] = "Ошибка обновления канала.";
$a->strings["Introductions and Connection Requests"] = "";
$a->strings["No pending introductions."] = "Введений в ожидании нет.";
$a->strings["System error. Please try again later."] = "Системная ошибка. Пожалуйста, повторите попытку позже.";
$a->strings["Hide this contact from others"] = "Скрыть этот контакт от других";
$a->strings["Hide this contact from others"] = "Скрыть этот канал от других";
$a->strings["Post a new friend activity"] = "";
$a->strings["if applicable"] = "если это применимо";
$a->strings["Discard"] = "Отменить";
@ -1144,22 +1148,22 @@ $a->strings["Channel has been unhidden"] = "Канал открыт";
$a->strings["Channel has been hidden"] = "Канал скрыт";
$a->strings["Channel has been approved"] = "Канал одобрен";
$a->strings["Channel has been unapproved"] = "Канал не одобрен";
$a->strings["Contact has been removed."] = "Контакт удален.";
$a->strings["View %s's profile"] = "";
$a->strings["Contact has been removed."] = "Канал удален.";
$a->strings["View %s's profile"] = "Просмотр %s's профиля";
$a->strings["Refresh Permissions"] = "Обновить разрешения";
$a->strings["Fetch updated permissions"] = "";
$a->strings["Block or Unblock this connection"] = "Запретить или разрешить этот контакт";
$a->strings["Block or Unblock this connection"] = "Запретить или разрешить этот канал";
$a->strings["Unignore"] = "Не игнорировать";
$a->strings["Ignore or Unignore this connection"] = "Игнорировать или не игнорировать этот контакт";
$a->strings["Ignore or Unignore this connection"] = "Игнорировать или не игнорировать этот канал";
$a->strings["Unarchive"] = "Разархивировать";
$a->strings["Archive"] = "Заархивировать";
$a->strings["Archive or Unarchive this connection"] = " Заархивировать или разархивировать этот контакт";
$a->strings["Archive or Unarchive this connection"] = " Заархивировать или разархивировать этот канал";
$a->strings["Unhide"] = "Показать";
$a->strings["Hide"] = "Скрыть";
$a->strings["Hide or Unhide this connection"] = "Скрыть или показывать этот контакт";
$a->strings["Delete this connection"] = "Удалить этот контакт";
$a->strings["Hide or Unhide this connection"] = "Скрыть или показывать этот канал";
$a->strings["Delete this connection"] = "Удалить этот канал";
$a->strings["Unknown"] = "Неизвестный";
$a->strings["Approve this connection"] = "Утвердить этот контакт";
$a->strings["Approve this connection"] = "Утвердить этот канал";
$a->strings["Accept connection to allow communication"] = "";
$a->strings["Automatic Permissions Settings"] = "Настройки автоматических разрешений";
$a->strings["Connections: settings for %s"] = "";
@ -1169,12 +1173,12 @@ $a->strings["Connection has no individual permissions!"] = "";
$a->strings["This may be appropriate based on your <a href=\"settings\">privacy settings</a>, though you may wish to review the \"Advanced Permissions\"."] = "";
$a->strings["Profile Visibility"] = "Видимость профиля";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "";
$a->strings["Contact Information / Notes"] = "Контактная информация / Примечания";
$a->strings["Edit contact notes"] = "Редактировать примечания контакта";
$a->strings["Contact Information / Notes"] = "Информация / Примечания о канале";
$a->strings["Edit contact notes"] = "Редактировать примечания канала";
$a->strings["Their Settings"] = "Их настройки";
$a->strings["My Settings"] = "Мои настройки";
$a->strings["Forum Members"] = "Участники форума";
$a->strings["Soapbox"] = "";
$a->strings["Soapbox"] = "Soapbox";
$a->strings["Full Sharing"] = "Полный обмен";
$a->strings["Cautious Sharing"] = "";
$a->strings["Follow Only"] = "Только следовать";
@ -1182,12 +1186,12 @@ $a->strings["Individual Permissions"] = "Индивидуальные разре
$a->strings["Individual permissions are only enabled for <a href=\"settings\">privacy settings</a> which are set to \"Only those you specifically allow\". Otherwise they are controlled by your privacy settings."] = "";
$a->strings["Advanced Permissions"] = "Дополнительные разрешения";
$a->strings["Quick Links"] = "Быстрые ссылки";
$a->strings["Visit %s's profile - %s"] = "";
$a->strings["Block/Unblock contact"] = "Запретить/разрешить контакт";
$a->strings["Ignore contact"] = "Игнорировать контакт";
$a->strings["Visit %s's profile - %s"] = "Посетить %s's ​​профиль - %s";
$a->strings["Block/Unblock contact"] = "Запретить/разрешить канал";
$a->strings["Ignore contact"] = "Игнорировать канал";
$a->strings["Repair URL settings"] = "Ремонт настройки URL";
$a->strings["View conversations"] = "Просмотр разговоров";
$a->strings["Delete contact"] = "Удалить контакт";
$a->strings["Delete contact"] = "Удалить канал";
$a->strings["Last update:"] = "Последнее обновление:";
$a->strings["Update public posts"] = "Обновить публичные сообщения";
$a->strings["Update now"] = "Обновить сейчас";
@ -1202,19 +1206,19 @@ $a->strings["Hidden"] = "Скрытые";
$a->strings["Archived"] = "Зархивированные";
$a->strings["All"] = "Все";
$a->strings["Suggestions"] = "Рекомендации";
$a->strings["Suggest new connections"] = "Предлагать новые контакты";
$a->strings["Show pending (new) connections"] = "Просмотр (новых) ждущих контактов";
$a->strings["All Connections"] = "Все контакты";
$a->strings["Show all connections"] = "Просмотр всех контактв";
$a->strings["Suggest new connections"] = "Предлагать новые каналы";
$a->strings["Show pending (new) connections"] = "Просмотр (новых) ждущих каналов";
$a->strings["All Connections"] = "Все каналы";
$a->strings["Show all connections"] = "Просмотр всех каналов";
$a->strings["Unblocked"] = "Разрешенные";
$a->strings["Only show unblocked connections"] = "Показать только разрешенные контакты";
$a->strings["Only show blocked connections"] = "Показать только заблокированные контакты";
$a->strings["Only show ignored connections"] = "Показать только проигнорированные контакты";
$a->strings["Only show archived connections"] = "Показать только архивированные контакты";
$a->strings["Only show hidden connections"] = "Показать только скрытые контакты";
$a->strings["Only show unblocked connections"] = "Показать только разрешенные каналы";
$a->strings["Only show blocked connections"] = "Показать только заблокированные каналы";
$a->strings["Only show ignored connections"] = "Показать только проигнорированные каналы";
$a->strings["Only show archived connections"] = "Показать только архивированные каналы";
$a->strings["Only show hidden connections"] = "Показать только скрытые каналы";
$a->strings["%1\$s [%2\$s]"] = "%1\$s [%2\$s]";
$a->strings["Edit contact"] = "Редактировать контакт";
$a->strings["Search your connections"] = "Поиск контактов";
$a->strings["Edit contact"] = "Редактировать канал";
$a->strings["Search your connections"] = "Поиск каналов";
$a->strings["Finding: "] = "Поиск:";
$a->strings["This site is not a directory server"] = "Этот сайт не является сервером каталога";
$a->strings["Remote privacy information not available."] = "";
@ -1269,7 +1273,7 @@ $a->strings["Example: fishing photography software"] = "Пример: fishing ph
$a->strings["Used in directory listings"] = "";
$a->strings["Tell us about yourself..."] = "Расскажите нам о себе ...";
$a->strings["Hobbies/Interests"] = "Хобби / интересы";
$a->strings["Contact information and Social Networks"] = "Контактная информация и социальные сети";
$a->strings["Contact information and Social Networks"] = "Информация и социальные сети канала";
$a->strings["My other channels"] = "Мои другие каналы";
$a->strings["Musical interests"] = "Музыкальные интересы";
$a->strings["Books, literature"] = "Книги, литература";
@ -1289,14 +1293,14 @@ $a->strings["Add a Channel"] = "Добавить канал";
$a->strings["A channel is your own collection of related web pages. A channel can be used to hold social network profiles, blogs, conversation groups and forums, celebrity pages, and much more. You may create as many channels as your service provider allows."] = "";
$a->strings["Channel Name"] = "Имя канала";
$a->strings["Examples: \"Bob Jameson\", \"Lisa and her Horses\", \"Soccer\", \"Aviation Group\" "] = "";
$a->strings["Choose a short nickname"] = "";
$a->strings["Choose a short nickname"] = "Выберите короткий псевдоним";
$a->strings["Your nickname will be used to create an easily remembered channel address (like an email address) which you can share with others."] = "";
$a->strings["Or <a href=\"import\">import an existing channel</a> from another location"] = "";
$a->strings["Create"] = "Создать";
$a->strings["No valid account found."] = "";
$a->strings["No valid account found."] = "Действительный аккаунт не найден.";
$a->strings["Password reset request issued. Check your email."] = "";
$a->strings["Site Member (%s)"] = "";
$a->strings["Password reset requested at %s"] = "";
$a->strings["Site Member (%s)"] = "Участник сайта (%s)";
$a->strings["Password reset requested at %s"] = "Требуется сброс пароля на %s";
$a->strings["Request could not be verified. (You may have previously submitted it.) Password reset failed."] = "";
$a->strings["Password Reset"] = "Сбросить пароль";
$a->strings["Your password has been reset as requested."] = "";
@ -1336,12 +1340,12 @@ $a->strings["Profile Match"] = "";
$a->strings["No keywords to match. Please add keywords to your default profile."] = "";
$a->strings["is interested in:"] = "заинтересован в:";
$a->strings["Contact settings applied."] = "";
$a->strings["Contact update failed."] = "Ошибка обновления контакта.";
$a->strings["Contact not found."] = "Контакт не найден.";
$a->strings["Repair Contact Settings"] = "Починить настройки контакта";
$a->strings["Contact update failed."] = "Ошибка обновления канала.";
$a->strings["Contact not found."] = "Канал не найден.";
$a->strings["Repair Contact Settings"] = "Починить настройки канала";
$a->strings["<strong>WARNING: This is highly advanced</strong> and if you enter incorrect information your communications with this contact may stop working."] = "";
$a->strings["Please use your browser 'Back' button <strong>now</strong> if you are uncertain what to do on this page."] = "";
$a->strings["Return to contact editor"] = "Вернуться к редактору контакта";
$a->strings["Return to contact editor"] = "Вернуться к редактору канала";
$a->strings["Account Nickname"] = "Псевдоним аккаунта";
$a->strings["@Tagname - overrides Name/Nickname"] = "";
$a->strings["Account URL"] = "URL аккаунта";
@ -1426,7 +1430,7 @@ $a->strings["Invalid profile identifier."] = "";
$a->strings["Profile Visibility Editor"] = "Редактор видимости профиля";
$a->strings["Click on a contact to add or remove."] = "";
$a->strings["Visible To"] = "Видно";
$a->strings["All Contacts (with secure profile access)"] = "Все контакты (с доступом защищенному профилю)";
$a->strings["All Contacts (with secure profile access)"] = "Все каналы (с доступом защищенному профилю)";
$a->strings["Version %s"] = "Версия %s";
$a->strings["Installed plugins/addons/apps:"] = "";
$a->strings["No installed plugins/addons/apps"] = "";
@ -1461,17 +1465,17 @@ $a->strings["Set your current mood and tell your friends"] = "";
$a->strings["Theme settings"] = "Настройки темы";
$a->strings["Set font-size for posts and comments"] = "";
$a->strings["Set line-height for posts and comments"] = "";
$a->strings["Set colour scheme"] = "";
$a->strings["Set colour scheme"] = "Установите цветовую схему";
$a->strings["Draw shadows"] = "";
$a->strings["Navigation bar colour"] = "";
$a->strings["Display style"] = "";
$a->strings["Display style"] = "Стиль отображения";
$a->strings["Display colour of links - hex value, do not include the #"] = "";
$a->strings["Icons"] = "Значки";
$a->strings["Shiny style"] = "";
$a->strings["Corner radius"] = "";
$a->strings["Corner radius"] = "Угловой радиус";
$a->strings["0-99 default: 5"] = "0-99 по умолчанию: 5";
$a->strings["Update %s failed. See error logs."] = "";
$a->strings["Update Error at %s"] = "";
$a->strings["Update Error at %s"] = "Ошибка обновления на %s";
$a->strings["Create a New Account"] = "Создать новый аккаунт";
$a->strings["Password"] = "Пароль";
$a->strings["Remember me"] = "Запомнить";
@ -1494,4 +1498,4 @@ $a->strings["Profile Details"] = "Сведения о профиле";
$a->strings["Events and Calendar"] = "Мероприятия и календарь";
$a->strings["Webpages"] = "Веб-страницы";
$a->strings["Manage Webpages"] = "";
$a->strings["toggle mobile"] = "";
$a->strings["toggle mobile"] = "мобильное подключение";

View File

@ -2065,7 +2065,7 @@ aside input[type='text'] {
width: 174px;
}
.widget {
.widget, .pmenu {
border-bottom: 1px solid #eec;
padding: 8px;
margin-top: 5px;
@ -2091,6 +2091,18 @@ aside input[type='text'] {
margin-right: 50px;
}
.rconnect {
display: block;
color: #FFFFFF;
margin-top: 15px;
background-color: #FF6666;
-webkit-border-radius: $radiuspx ;
-moz-border-radius: $radiuspx;
border-radius: $radiuspx;
padding: 5px;
font-weight: bold;
}
#dfrn-request-networks {
margin-bottom: 30px;
@ -3586,3 +3598,11 @@ margin-right: auto;
div.page-list-item {
margin: 20px;
}
.pmenu ul {
list-style-type: none;
}
.pmenu li {
margin-left: -20px;
}

View File

@ -1,6 +1,6 @@
<div class='field input'>
<label for='id_{{$field.0}}' id='label_{{$field.0}}'>{{$field.1}}</label>
<input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">
<input name='{{$field.0}}' id='id_{{$field.0}}' value="{{$field.2}}">{{if $field.4}} <span class="required">{{$field.4}}</span> {{/if}}
<span id='help_{{$field.0}}' class='field_help'>{{$field.3}}</span>
<div id='end_{{$field.0}}' class='field_end'></div>
</div>

21
view/tpl/menuedit.tpl Normal file
View File

@ -0,0 +1,21 @@
<h2>{{$header}}</h2>
{{if $menu_id}}
<a href="mitem/{{$menu_id}}" title="{{$hintedit}}">{{$editcontents}}</a>
{{/if}}
<form id="menuedit" action="menu{{if $menu_id}}/{{$menu_id}}{{/if}}" method="post" >
{{if $menu_id}}
<input type="hidden" name="menu_id" value="{{$menu_id}}" />
{{/if}}
{{include file="field_input.tpl" field=$menu_name}}
{{include file="field_input.tpl" field=$menu_desc}}
<div class="menuedit-submit-wrapper" >
<input type="submit" name="submit" class="menuedit-submit" value="{{$submit}}" />
</div>
</form>

16
view/tpl/menulist.tpl Normal file
View File

@ -0,0 +1,16 @@
<h1>{{$title}}</h1>
<a href="menu/new" title="{{$hintnew}}">{{$hintnew}}</a>
<br />
{{if $menus }}
<ul id="menulist">
{{foreach $menus as $m }}
<li><a href="menu/{{$m.menu_id}}" title="{{$hintedit}}">{{$edit}}</a> | <a href="menu/{{$m.menu_id}}/drop" title={{$hintdrop}}>{{$drop}}</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="mitem/{{$m.menu_id}}" title="{{$hintcontent}}">{{$m.menu_name}}</a></li>
{{/foreach}}
</ul>
{{/if}}

21
view/tpl/mitemedit.tpl Normal file
View File

@ -0,0 +1,21 @@
<h2>{{$header}}</h2>
<form id="mitemedit" action="mitem/{{$menu_id}}{{if $mitem_id}}/{{$mitem_id}}{{/if}}" method="post" >
<input type="hidden" name="menu_id" value="{{$menu_id}}" />
{{if $mitem_id}}
<input type="hidden" name="mitem_id" value="{{$mitem_id}}" />
{{/if}}
{{include file="field_input.tpl" field=$mitem_desc}}
{{include file="field_input.tpl" field=$mitem_link}}
{{include file="field_input.tpl" field=$mitem_order}}
{{include file="field_checkbox.tpl" field=$usezid}}
{{include file="field_checkbox.tpl" field=$newwin}}
<div class="mitemedit-submit-wrapper" >
<input type="submit" name="submit" class="mitemedit-submit" value="{{$submit}}" />
</div>
</form>

18
view/tpl/mitemlist.tpl Normal file
View File

@ -0,0 +1,18 @@
<h1>{{$title}}</h1>
<h2>{{$menudesc}} ({{$menuname}})</h2>
<a href="menu/{{$menu_id}}" title="{{$hintmenu}}">{{$edmenu}}</a><br />
<a href="mitem/{{$menu_id}}/new" title="{{$hintnew}}">{{$hintnew}}</a>
<br />
{{if $mlist }}
<ul id="mitemlist">
{{foreach $mlist as $m }}
<li><a href="mitem/{{$menu_id}}/{{$m.mitem_id}}" title="{{$hintedit}}">{{$edit}}</a> | <a href="mitem/{{$menu_id}}/{{$m.mitem_id}}/drop" title={{$hintdrop}}>{{$drop}}</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href="mitem/{{$menu_id}}/{{$m.mitem_id}}" title="{{$hintcontent}}">{{$m.mitem_desc}}</a> ({{$m.mitem_link}})</li>
{{/foreach}}
</ul>
{{/if}}

View File

@ -44,9 +44,16 @@
{{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" >{{$profile.homepage}}</a></dd></dl>{{/if}}
{{if $connect}}
<a href="{{$connect_url}}" class="rconnect">{{$connect}}</a>
{{/if}}
</div>
<div id="vcard-end"></div>
{{$chanmenu}}
{{$contact_block}}

13
view/tpl/usermenu.tpl Normal file
View File

@ -0,0 +1,13 @@
<div class="pmenu">
{{if $menu.menu_desc}}
<h3 class="pmenu-title">{{$menu.menu_desc}}</h3>
{{/if}}
{{if $items }}
<ul class="pmenu-body">
{{foreach $items as $mitem }}
<li class="pmenu-item"><a href="{{$mitem.mitem_link}}" {{if $mitem.newwin}}target="_blank"{{/if}}>{{$mitem.mitem_desc}}</a></li>
{{/foreach }}
</ul>
{{/if}}
<div class="pmenu-end"></div>
</div>