Merge branch 'master' of https://github.com/redmatrix/hubzilla into contextual-help
This commit is contained in:
commit
59827b6dfd
6
boot.php
6
boot.php
@ -47,7 +47,7 @@ require_once('include/account.php');
|
||||
|
||||
define ( 'PLATFORM_NAME', 'hubzilla' );
|
||||
define ( 'RED_VERSION', trim(file_get_contents('version.inc')));
|
||||
define ( 'STD_VERSION', '1.3.1' );
|
||||
define ( 'STD_VERSION', '1.3.2' );
|
||||
define ( 'ZOT_REVISION', 1 );
|
||||
|
||||
define ( 'DB_UPDATE_VERSION', 1165 );
|
||||
@ -271,9 +271,11 @@ define ( 'MENU_BOOKMARK', 0x0002 );
|
||||
* Network and protocol family types
|
||||
*/
|
||||
|
||||
define ( 'NETWORK_DFRN', 'friendica-over-diaspora'); // Friendica, Mistpark, other DFRN implementations
|
||||
define ( 'NETWORK_FRND', 'friendica-over-diaspora'); // Friendica, Mistpark, other DFRN implementations
|
||||
define ( 'NETWORK_DFRN', 'dfrn'); // Friendica, Mistpark, other DFRN implementations
|
||||
define ( 'NETWORK_ZOT', 'zot'); // Zot!
|
||||
define ( 'NETWORK_OSTATUS', 'stat'); // status.net, identi.ca, GNU-social, other OStatus implementations
|
||||
define ( 'NETWORK_GNUSOCIAL', 'gnusoc'); // status.net, identi.ca, GNU-social, other OStatus implementations
|
||||
define ( 'NETWORK_FEED', 'rss'); // RSS/Atom feeds with no known "post/notify" protocol
|
||||
define ( 'NETWORK_DIASPORA', 'diaspora'); // Diaspora
|
||||
define ( 'NETWORK_MAIL', 'mail'); // IMAP/POP
|
||||
|
@ -73,16 +73,18 @@ function contact_poll_interval($current, $disabled = false) {
|
||||
function network_to_name($s) {
|
||||
|
||||
$nets = array(
|
||||
NETWORK_DFRN => t('Friendica'),
|
||||
NETWORK_OSTATUS => t('OStatus'),
|
||||
NETWORK_FEED => t('RSS/Atom'),
|
||||
NETWORK_MAIL => t('Email'),
|
||||
NETWORK_DIASPORA => t('Diaspora'),
|
||||
NETWORK_FACEBOOK => t('Facebook'),
|
||||
NETWORK_ZOT => t('Zot'),
|
||||
NETWORK_LINKEDIN => t('LinkedIn'),
|
||||
NETWORK_XMPP => t('XMPP/IM'),
|
||||
NETWORK_MYSPACE => t('MySpace'),
|
||||
NETWORK_DFRN => t('Friendica'),
|
||||
NETWORK_FRND => t('Friendica'),
|
||||
NETWORK_OSTATUS => t('OStatus'),
|
||||
NETWORK_GNUSOCIAL => t('GNU-Social'),
|
||||
NETWORK_FEED => t('RSS/Atom'),
|
||||
NETWORK_MAIL => t('Email'),
|
||||
NETWORK_DIASPORA => t('Diaspora'),
|
||||
NETWORK_FACEBOOK => t('Facebook'),
|
||||
NETWORK_ZOT => t('Zot'),
|
||||
NETWORK_LINKEDIN => t('LinkedIn'),
|
||||
NETWORK_XMPP => t('XMPP/IM'),
|
||||
NETWORK_MYSPACE => t('MySpace'),
|
||||
);
|
||||
|
||||
call_hooks('network_to_name', $nets);
|
||||
|
@ -308,11 +308,33 @@ function metorsa($m,$e) {
|
||||
return $key;
|
||||
}
|
||||
|
||||
|
||||
|
||||
function salmon_key($pubkey) {
|
||||
pemtome($pubkey,$m,$e);
|
||||
return 'RSA' . '.' . base64url_encode($m,true) . '.' . base64url_encode($e,true) ;
|
||||
}
|
||||
|
||||
|
||||
function convert_salmon_key($key) {
|
||||
|
||||
if(strstr($key,','))
|
||||
$rawkey = substr($key,strpos($key,',')+1);
|
||||
else
|
||||
$rawkey = substr($key,5);
|
||||
|
||||
$key_info = explode('.',$rawkey);
|
||||
|
||||
$m = base64url_decode($key_info[1]);
|
||||
$e = base64url_decode($key_info[2]);
|
||||
|
||||
logger('key details: ' . print_r($key_info,true), LOGGER_DATA);
|
||||
$salmon_key = metopem($m,$e);
|
||||
return $salmon_key;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function z_obscure($s) {
|
||||
return json_encode(crypto_encapsulate($s,get_config('system','pubkey')));
|
||||
}
|
||||
@ -322,3 +344,4 @@ function z_unobscure($s) {
|
||||
return $s;
|
||||
return crypto_unencapsulate(json_decode($s,true),get_config('system','prvkey'));
|
||||
}
|
||||
|
||||
|
@ -134,26 +134,29 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
|
||||
$their_perms = 0;
|
||||
$xchan_hash = '';
|
||||
|
||||
|
||||
$r = q("select * from xchan where xchan_hash = '%s' or xchan_url = '%s' limit 1",
|
||||
dbesc($url),
|
||||
dbesc($url)
|
||||
);
|
||||
|
||||
|
||||
if(! $r) {
|
||||
// attempt network auto-discovery
|
||||
if(strpos($url,'@') && (! $is_http)) {
|
||||
$d = discover_by_webbie($url);
|
||||
}
|
||||
elseif($is_http) {
|
||||
if(get_config('system','feed_contacts'))
|
||||
|
||||
$d = discover_by_webbie($url);
|
||||
|
||||
if((! $d) && ($is_http)) {
|
||||
|
||||
// try RSS discovery
|
||||
|
||||
if(get_config('system','feed_contacts')) {
|
||||
$d = discover_by_url($url);
|
||||
}
|
||||
else {
|
||||
$result['message'] = t('Protocol disabled.');
|
||||
return $result;
|
||||
}
|
||||
}
|
||||
|
||||
if($d) {
|
||||
$r = q("select * from xchan where xchan_hash = '%s' or xchan_url = '%s' limit 1",
|
||||
dbesc($url),
|
||||
@ -161,6 +164,9 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
// if discovery was a success we should have an xchan record in $r
|
||||
|
||||
if($r) {
|
||||
$xchan = $r[0];
|
||||
$xchan_hash = $r[0]['xchan_hash'];
|
||||
@ -187,28 +193,13 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
|
||||
}
|
||||
$singleton = intval($x['singleton']);
|
||||
|
||||
if((local_channel()) && $uid == local_channel()) {
|
||||
$aid = get_account_id();
|
||||
$hash = get_observer_hash();
|
||||
$ch = $a->get_channel();
|
||||
$default_group = $ch['channel_default_group'];
|
||||
}
|
||||
else {
|
||||
$r = q("select * from channel where channel_id = %d limit 1",
|
||||
intval($uid)
|
||||
);
|
||||
if(! $r) {
|
||||
$result['message'] = t('local account not found.');
|
||||
return $result;
|
||||
}
|
||||
$aid = $r[0]['channel_account_id'];
|
||||
$hash = $r[0]['channel_hash'];
|
||||
$default_group = $r[0]['channel_default_group'];
|
||||
}
|
||||
$aid = $channel['channel_account_id'];
|
||||
$hash = get_observer_hash();
|
||||
$default_group = $channel['channel_default_group'];
|
||||
|
||||
if($xchan['xchan_network'] === 'rss') {
|
||||
|
||||
if($is_http) {
|
||||
|
||||
// check service class feed limits
|
||||
|
||||
$r = q("select count(*) as total from abook where abook_account = %d and abook_feed = 1 ",
|
||||
intval($aid)
|
||||
@ -232,7 +223,6 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
|
||||
intval($uid)
|
||||
);
|
||||
|
||||
|
||||
if($r) {
|
||||
$abook_instance = $r[0]['abook_instance'];
|
||||
|
||||
@ -282,7 +272,7 @@ function new_contact($uid,$url,$channel,$interactive = false, $confirm = false)
|
||||
proc_run('php', 'include/notifier.php', 'permission_create', $result['abook']['abook_id']);
|
||||
}
|
||||
|
||||
$arr = array('channel_id' => $uid, 'abook' => $result['abook']);
|
||||
$arr = array('channel_id' => $uid, 'channel' => $channel, 'abook' => $result['abook']);
|
||||
|
||||
call_hooks('follow', $arr);
|
||||
|
||||
|
@ -211,6 +211,22 @@ function group_get_members($gid) {
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function group_get_members_xchan($gid) {
|
||||
$ret = array();
|
||||
if(intval($gid)) {
|
||||
$r = q("SELECT xchan FROM group_member WHERE gid = %d AND uid = %d",
|
||||
intval($gid),
|
||||
intval(local_channel())
|
||||
);
|
||||
if(count($r)) {
|
||||
foreach($r as $rr) {
|
||||
$ret[] = $rr['xchan'];
|
||||
}
|
||||
}
|
||||
}
|
||||
return $ret;
|
||||
}
|
||||
|
||||
function mini_group_select($uid,$group = '') {
|
||||
|
||||
$grps = array();
|
||||
|
@ -4214,7 +4214,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
|
||||
|
||||
if(($item['parent'] != $item['id']) || ($item['parent_mid'] !== $item['mid']) || (($item['thr_parent'] !== '') && ($item['thr_parent'] !== $item['mid']))) {
|
||||
$parent_item = (($item['thr_parent']) ? $item['thr_parent'] : $item['parent_mid']);
|
||||
$o .= '<thr:in-reply-to ref="' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
|
||||
$o .= '<thr:in-reply-to ref="' . z_root() . '/display/' . xmlify($parent_item) . '" type="text/html" href="' . xmlify($item['plink']) . '" />' . "\r\n";
|
||||
}
|
||||
|
||||
if(activity_match($item['obj_type'],ACTIVITY_OBJ_EVENT) && activity_match($item['verb'],ACTIVITY_POST)) {
|
||||
@ -4232,7 +4232,7 @@ function atom_entry($item,$type,$author,$owner,$comment = false,$cid = 0) {
|
||||
$o .= '<content type="' . $type . '" >' . xmlify(prepare_text($body,$item['mimetype'])) . '</content>' . "\r\n";
|
||||
}
|
||||
|
||||
$o .= '<id>' . xmlify($item['mid']) . '</id>' . "\r\n";
|
||||
$o .= '<id>' . z_root() . '/display/' . xmlify($item['mid']) . '</id>' . "\r\n";
|
||||
$o .= '<published>' . xmlify(datetime_convert('UTC','UTC',$item['created'] . '+00:00',ATOM_TIME)) . '</published>' . "\r\n";
|
||||
$o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
|
||||
|
||||
|
@ -185,9 +185,11 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
|
||||
if($ciphers)
|
||||
@curl_setopt($ch, CURLOPT_SSL_CIPHER_LIST, $ciphers);
|
||||
|
||||
if(x($opts,'headers'))
|
||||
if(x($opts,'headers')) {
|
||||
@curl_setopt($ch, CURLOPT_HTTPHEADER, $opts['headers']);
|
||||
|
||||
logger('headers: ' . print_r($opts['headers'],true) . 'redir: ' . $redirects);
|
||||
}
|
||||
|
||||
if(x($opts,'nobody'))
|
||||
@curl_setopt($ch, CURLOPT_NOBODY, $opts['nobody']);
|
||||
|
||||
@ -236,6 +238,21 @@ function z_post_url($url,$params, $redirects = 0, $opts = array()) {
|
||||
$base = substr($base,strlen($chunk));
|
||||
}
|
||||
|
||||
// would somebody take lighttpd and just shoot it?
|
||||
|
||||
if($http_code == 417) {
|
||||
curl_close($ch);
|
||||
if($opts) {
|
||||
if($opts['headers'])
|
||||
$opts['headers'][] = 'Expect:';
|
||||
else
|
||||
$opts['headers'] = array('Expect:');
|
||||
}
|
||||
else
|
||||
$opts = array('headers' => array('Expect:'));
|
||||
return z_post_url($url,$params,++$redirects,$opts);
|
||||
}
|
||||
|
||||
if($http_code == 301 || $http_code == 302 || $http_code == 303 || $http_code == 307 || $http_code == 308) {
|
||||
$matches = array();
|
||||
preg_match('/(Location:|URI:)(.*?)\n/', $header, $matches);
|
||||
@ -1044,32 +1061,16 @@ function discover_by_url($url,$arr = null) {
|
||||
}
|
||||
|
||||
|
||||
function convert_salmon_key($key) {
|
||||
|
||||
if(strstr($key,','))
|
||||
$rawkey = substr($key,strpos($key,',')+1);
|
||||
else
|
||||
$rawkey = substr($key,5);
|
||||
|
||||
$key_info = explode('.',$rawkey);
|
||||
|
||||
$m = base64url_decode($key_info[1]);
|
||||
$e = base64url_decode($key_info[2]);
|
||||
|
||||
logger('key details: ' . print_r($key_info,true), LOGGER_DEBUG);
|
||||
$salmon_key = metopem($m,$e);
|
||||
return $salmon_key;
|
||||
|
||||
}
|
||||
|
||||
|
||||
function discover_by_webbie($webbie) {
|
||||
require_once('library/HTML5/Parser.php');
|
||||
|
||||
$result = array();
|
||||
$network = null;
|
||||
$result = array();
|
||||
|
||||
$network = null;
|
||||
|
||||
$diaspora = false;
|
||||
$gnusoc = false;
|
||||
$gnusoc = false;
|
||||
$dfrn = false;
|
||||
|
||||
$has_salmon = false;
|
||||
$salmon_key = false;
|
||||
@ -1077,7 +1078,6 @@ function discover_by_webbie($webbie) {
|
||||
$diaspora_base = '';
|
||||
$diaspora_guid = '';
|
||||
$diaspora_key = '';
|
||||
$dfrn = false;
|
||||
|
||||
$webbie = strtolower($webbie);
|
||||
|
||||
@ -1085,6 +1085,10 @@ function discover_by_webbie($webbie) {
|
||||
if($x && array_key_exists('links',$x) && $x['links']) {
|
||||
foreach($x['links'] as $link) {
|
||||
if(array_key_exists('rel',$link)) {
|
||||
|
||||
// If we discover zot - don't search further; grab the info and get out of
|
||||
// here.
|
||||
|
||||
if($link['rel'] == 'http://purl.org/zot/protocol') {
|
||||
logger('discover_by_webbie: zot found for ' . $webbie, LOGGER_DEBUG);
|
||||
if(array_key_exists('zot',$x) && $x['zot']['success'])
|
||||
@ -1098,6 +1102,9 @@ function discover_by_webbie($webbie) {
|
||||
}
|
||||
}
|
||||
}
|
||||
if($link['rel'] == NAMESPACE_DFRN) {
|
||||
$dfrn = $link['href'];
|
||||
}
|
||||
if($link['rel'] == 'magic-public-key') {
|
||||
if(substr($link['href'],0,5) === 'data:') {
|
||||
$salmon_key = convert_salmon_key($link['href']);
|
||||
@ -1105,6 +1112,7 @@ function discover_by_webbie($webbie) {
|
||||
}
|
||||
if($link['rel'] == 'salmon') {
|
||||
$has_salmon = true;
|
||||
$salmon = $link['href'];
|
||||
}
|
||||
if($link['rel'] == 'http://schemas.google.com/g/2010#updates-from') {
|
||||
$atom_feed = $link['href'];
|
||||
@ -1113,82 +1121,40 @@ function discover_by_webbie($webbie) {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
logger('webfing: ' . print_r($x,true));
|
||||
logger('webfinger: ' . print_r($x,true), LOGGER_DATA, LOG_INFO);
|
||||
|
||||
$arr = array('address' => $webbie, 'success' => false, 'webfinger' => $x);
|
||||
call_hooks('discover_channel_webfinger', $arr);
|
||||
if($arr['success'])
|
||||
return true;
|
||||
|
||||
if($salmon_key && $has_salmon && $atom_feed) {
|
||||
|
||||
$gnusoc = true;
|
||||
$addr = $x['address'];
|
||||
$aliases = array();
|
||||
|
||||
$m = parse_url($x['location']);
|
||||
// Now let's make some decisions on what we may need
|
||||
// to obtain further info
|
||||
|
||||
$k = z_fetch_url($atom_feed);
|
||||
if($k['success'])
|
||||
$feed_meta = feed_meta($k['body']);
|
||||
if($feed_meta && $feed_meta['author']) {
|
||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($addr)
|
||||
);
|
||||
if($r) {
|
||||
$r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
|
||||
dbesc(($feed_meta['author']['author_name']) ? $feed_meta['author']['author_name'] : $x['nickname']),
|
||||
dbesc('gnusoc'),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($addr)
|
||||
);
|
||||
}
|
||||
else {
|
||||
$probe_atom = false;
|
||||
$probe_old = false;
|
||||
$probe_hcard = false;
|
||||
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
|
||||
dbesc($addr),
|
||||
dbesc($x['location']),
|
||||
dbesc($salmon_key),
|
||||
dbesc($addr),
|
||||
dbesc($x['location']),
|
||||
dbesc(($feed_meta['author']['author_name']) ? $feed_meta['author']['author_name'] : $x['nickname']),
|
||||
dbesc('gnusoc'),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
$address = '';
|
||||
$location = '';
|
||||
$nickname = '';
|
||||
$fullname = '';
|
||||
$avatar = '';
|
||||
$pubkey = '';
|
||||
|
||||
$r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
|
||||
dbesc($addr)
|
||||
);
|
||||
if(array_key_exists('address',$x))
|
||||
$address = $x['address'];
|
||||
if(array_key_exists('location',$x))
|
||||
$location = $x['location'];
|
||||
if(array_key_exists('nickname',$x))
|
||||
$nickname = $x['nickname'];
|
||||
|
||||
if(! $r) {
|
||||
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
|
||||
dbesc($x['location']),
|
||||
dbesc($addr),
|
||||
dbesc($addr),
|
||||
dbesc('gnusoc'),
|
||||
dbesc($m['scheme'] . '://' . $m['host']),
|
||||
dbesc($m['host']),
|
||||
dbesc($salmon),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
$photos = import_xchan_photo($feed_meta['author']['author_photo'],$addr);
|
||||
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
|
||||
dbescdate(datetime_convert()),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
dbesc($photos[3]),
|
||||
dbesc($addr)
|
||||
);
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
else {
|
||||
if(! $x)
|
||||
$probe_old = true;
|
||||
|
||||
if($probe_old) {
|
||||
$x = old_webfinger($webbie);
|
||||
if($x) {
|
||||
logger('old_webfinger: ' . print_r($x,true));
|
||||
@ -1221,174 +1187,195 @@ function discover_by_webbie($webbie) {
|
||||
$pubkey = $diaspora_key;
|
||||
$diaspora = true;
|
||||
}
|
||||
if($link['@attributes']['rel'] == 'magic-public-key') {
|
||||
if(substr($link['@attributes']['href'],0,5) === 'data:') {
|
||||
$salmon_key = convert_salmon_key($link['@attributes']['href']);
|
||||
}
|
||||
}
|
||||
if($link['@attributes']['rel'] == 'salmon') {
|
||||
$has_salmon = true;
|
||||
$salmon = $link['@attributes']['href'];
|
||||
}
|
||||
|
||||
if($link['@attributes']['rel'] == 'http://schemas.google.com/g/2010#updates-from') {
|
||||
$atom_feed = $link['@attributes']['href'];
|
||||
}
|
||||
if($link['@attributes']['rel'] === 'alias') {
|
||||
$aliases[] = $link['@attributes']['href'];
|
||||
}
|
||||
if($link['@attributes']['rel'] === 'subject') {
|
||||
$subject = $link['@attributes']['href'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if($diaspora && $diaspora_base && $diaspora_guid) {
|
||||
$guid = $diaspora_guid;
|
||||
$diaspora_base = trim($diaspora_base,'/');
|
||||
|
||||
$notify = $diaspora_base . '/receive';
|
||||
|
||||
if(strpos($webbie,'@')) {
|
||||
$addr = str_replace('acct:', '', $webbie);
|
||||
$hostname = substr($webbie,strpos($webbie,'@')+1);
|
||||
}
|
||||
$network = 'diaspora';
|
||||
// until we get a dfrn layer, we'll use diaspora protocols for Friendica,
|
||||
// but give it a different network so we can go back and fix these when we get proper support.
|
||||
// It really should be just 'friendica' but we also want to distinguish
|
||||
// between Friendica sites that we can use D* protocols with and those we can't.
|
||||
// Some Friendica sites will have Diaspora disabled.
|
||||
if($dfrn)
|
||||
$network = 'friendica-over-diaspora';
|
||||
if($hcard) {
|
||||
$vcard = scrape_vcard($hcard);
|
||||
$vcard['nick'] = substr($webbie,0,strpos($webbie,'@'));
|
||||
if(! $vcard['fn'])
|
||||
$vcard['fn'] = $webbie;
|
||||
}
|
||||
|
||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($addr)
|
||||
);
|
||||
|
||||
// fix relative urls
|
||||
if($vcard['photo'] && (strpos($vcard['photo'],'http') !== 0))
|
||||
$vcard['photo'] = $diaspora_base . '/' . $vcard['photo'];
|
||||
|
||||
/**
|
||||
*
|
||||
* Diaspora communications are notoriously unreliable and receiving profile update messages (indeed any messages)
|
||||
* are pretty much random luck. We'll check the timestamp of the xchan_name_date at a higher level and refresh
|
||||
* this record once a month; because if you miss a profile update message and they update their profile photo or name
|
||||
* you're otherwise stuck with stale info until they change their profile again - which could be years from now.
|
||||
*
|
||||
*/
|
||||
|
||||
if($r) {
|
||||
$r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
|
||||
dbesc($vcard['fn']),
|
||||
dbesc($network),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($addr)
|
||||
);
|
||||
}
|
||||
else {
|
||||
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
|
||||
dbesc($addr),
|
||||
dbesc($guid),
|
||||
dbesc($pubkey),
|
||||
dbesc($addr),
|
||||
dbesc($profile),
|
||||
dbesc($vcard['fn']),
|
||||
dbesc($network),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
|
||||
$r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
|
||||
dbesc($webbie)
|
||||
);
|
||||
|
||||
if(! $r) {
|
||||
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
|
||||
dbesc($guid),
|
||||
dbesc($addr),
|
||||
dbesc($addr),
|
||||
dbesc($network),
|
||||
dbesc(trim($diaspora_base,'/')),
|
||||
dbesc($hostname),
|
||||
dbesc($notify),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
$photos = import_xchan_photo($vcard['photo'],$addr);
|
||||
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
|
||||
dbescdate(datetime_convert()),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
dbesc($photos[3]),
|
||||
dbesc($addr)
|
||||
);
|
||||
return true;
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
if($subject || $aliases) {
|
||||
if(strpos($webbie,'@')) {
|
||||
$rhs = substr($webbie,strpos($webbie,'@')+1);
|
||||
}
|
||||
else {
|
||||
$m = parse_url($webbie);
|
||||
if($m) {
|
||||
$rhs = $m['host'] . (($m['port']) ? ':' . $m['port'] : '');
|
||||
}
|
||||
}
|
||||
|
||||
$v = array('subject' => $subject,'aliases' => $aliases);
|
||||
$address = find_webfinger_address($v,$rhs);
|
||||
$location = find_webfinger_location($v,$rhs);
|
||||
if($address)
|
||||
$nickname = substr($address,0,strpos($address,'@'));
|
||||
|
||||
}
|
||||
|
||||
if($salmon_key && $has_salmon && $atom_feed && (! $dfrn) && (! $diaspora)) {
|
||||
$gnusoc = true;
|
||||
$probe_atom = true;
|
||||
}
|
||||
|
||||
if(! $pubkey)
|
||||
$pubkey = $salmon_key;
|
||||
|
||||
if(($dfrn || $diaspora) && $hcard)
|
||||
$probe_hcard = true;
|
||||
|
||||
if(! $fullname)
|
||||
$fullname = $nickname;
|
||||
|
||||
if($probe_atom) {
|
||||
$k = z_fetch_url($atom_feed);
|
||||
if($k['success'])
|
||||
$feed_meta = feed_meta($k['body']);
|
||||
if($feed_meta) {
|
||||
|
||||
// stash any discovered pubsubhubbub hubs in case we need to follow them
|
||||
// this will save an expensive lookup later
|
||||
|
||||
if($feed_meta['hubs'] && $address) {
|
||||
set_xconfig($address,'system','push_hubs',$feed_meta['hubs']);
|
||||
set_xconfig($address,'system','feed_url',$atom_feed);
|
||||
}
|
||||
if($feed_meta['author']['author_name']) {
|
||||
$fullname = $feed_meta['author']['author_name'];
|
||||
}
|
||||
if(! $avatar) {
|
||||
if($feed_meta['author']['author_photo'])
|
||||
$avatar = $feed_meta['author']['author_photo'];
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
if($probe_hcard) {
|
||||
$vcard = scrape_vcard($hcard);
|
||||
if($vcard) {
|
||||
logger('vcard: ' . print_r($vcard,true), LOGGER_DATA);
|
||||
if($vcard['fn'])
|
||||
$fullname = $vcard['fn'];
|
||||
if($vcard['photo'] && (strpos($vcard['photo'],'http') !== 0))
|
||||
$vcard['photo'] = $diaspora_base . '/' . $vcard['photo'];
|
||||
if(! $avatar)
|
||||
$avatar = $vcard['photo'];
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(($profile) && (! $location))
|
||||
$location = $profile;
|
||||
|
||||
if($location) {
|
||||
$m = parse_url($location);
|
||||
$base = $m['scheme'] . '://' . $m['host'];
|
||||
$host = $m['host'];
|
||||
}
|
||||
|
||||
|
||||
if($diaspora && $diaspora_base && $diaspora_guid) {
|
||||
if($dfrn)
|
||||
$network = 'friendica-over-diaspora';
|
||||
else
|
||||
$network = 'diaspora';
|
||||
|
||||
$base = trim($diaspora_base,'/');
|
||||
$notify = $base . '/receive';
|
||||
|
||||
}
|
||||
else {
|
||||
if($gnusoc) {
|
||||
$network = 'gnusoc';
|
||||
$notify = $salmon;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
logger('network: ' . $network);
|
||||
logger('address: ' . $address);
|
||||
logger('fullname: ' . $fullname);
|
||||
logger('pubkey: ' . $pubkey);
|
||||
logger('location: ' . $location);
|
||||
|
||||
|
||||
|
||||
// if we have everything we need, let's create the records
|
||||
|
||||
if($network && $address && $fullname && $pubkey && $location) {
|
||||
$r = q("select * from xchan where xchan_hash = '%s' limit 1",
|
||||
dbesc($address)
|
||||
);
|
||||
if($r) {
|
||||
$r = q("update xchan set xchan_name = '%s', xchan_network = '%s', xchan_name_date = '%s' where xchan_hash = '%s' limit 1",
|
||||
dbesc($fullname),
|
||||
dbesc($network),
|
||||
dbesc(datetime_convert()),
|
||||
dbesc($address)
|
||||
);
|
||||
}
|
||||
else {
|
||||
$r = q("insert into xchan ( xchan_hash, xchan_guid, xchan_pubkey, xchan_addr, xchan_url, xchan_name, xchan_network, xchan_name_date ) values ('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s') ",
|
||||
dbesc($address),
|
||||
dbesc(($diaspora_guid) ? $diaspora_guid : $location),
|
||||
dbesc($pubkey),
|
||||
dbesc($address),
|
||||
dbesc($location),
|
||||
dbesc($fullname),
|
||||
dbesc($network),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
|
||||
$r = q("select * from hubloc where hubloc_hash = '%s' limit 1",
|
||||
dbesc($address)
|
||||
);
|
||||
|
||||
if(! $r) {
|
||||
$r = q("insert into hubloc ( hubloc_guid, hubloc_hash, hubloc_addr, hubloc_network, hubloc_url, hubloc_host, hubloc_callback, hubloc_updated, hubloc_primary ) values ('%s','%s','%s','%s','%s','%s','%s','%s', 1)",
|
||||
dbesc(($diaspora_guid) ? $diaspora_guid : $location),
|
||||
dbesc($address),
|
||||
dbesc($address),
|
||||
dbesc($network),
|
||||
dbesc($base),
|
||||
dbesc($host),
|
||||
dbesc($notify),
|
||||
dbescdate(datetime_convert())
|
||||
);
|
||||
}
|
||||
$photos = import_xchan_photo($avatar,$address);
|
||||
$r = q("update xchan set xchan_photo_date = '%s', xchan_photo_l = '%s', xchan_photo_m = '%s', xchan_photo_s = '%s', xchan_photo_mimetype = '%s' where xchan_hash = '%s'",
|
||||
dbescdate(datetime_convert()),
|
||||
dbesc($photos[0]),
|
||||
dbesc($photos[1]),
|
||||
dbesc($photos[2]),
|
||||
dbesc($photos[3]),
|
||||
dbesc($address)
|
||||
);
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
|
||||
/*
|
||||
$vcard['fn'] = notags($vcard['fn']);
|
||||
$vcard['nick'] = str_replace(' ','',notags($vcard['nick']));
|
||||
|
||||
$result['name'] = $vcard['fn'];
|
||||
$result['nick'] = $vcard['nick'];
|
||||
$result['guid'] = $guid;
|
||||
$result['url'] = $profile;
|
||||
$result['hostname'] = $hostname;
|
||||
$result['addr'] = $addr;
|
||||
$result['batch'] = $batch;
|
||||
$result['notify'] = $notify;
|
||||
$result['poll'] = $poll;
|
||||
$result['request'] = $request;
|
||||
$result['confirm'] = $confirm;
|
||||
$result['poco'] = $poco;
|
||||
$result['photo'] = $vcard['photo'];
|
||||
$result['priority'] = $priority;
|
||||
$result['network'] = $network;
|
||||
$result['alias'] = $alias;
|
||||
$result['pubkey'] = $pubkey;
|
||||
|
||||
logger('probe_url: ' . print_r($result,true), LOGGER_DEBUG);
|
||||
|
||||
return $result;
|
||||
|
||||
*/
|
||||
|
||||
/* Sample Diaspora result.
|
||||
|
||||
Array
|
||||
(
|
||||
[name] => Mike Macgirvin
|
||||
[nick] => macgirvin
|
||||
[guid] => a9174a618f8d269a
|
||||
[url] => https://joindiaspora.com/u/macgirvin
|
||||
[hostname] => joindiaspora.com
|
||||
[addr] => macgirvin@joindiaspora.com
|
||||
[batch] =>
|
||||
[notify] => https://joindiaspora.com/receive
|
||||
[poll] => https://joindiaspora.com/public/macgirvin.atom
|
||||
[request] =>
|
||||
[confirm] =>
|
||||
[poco] =>
|
||||
[photo] => https://joindiaspora.s3.amazonaws.com/uploads/images/thumb_large_fec4e6eef13ae5e56207.jpg
|
||||
[priority] =>
|
||||
[network] => diaspora
|
||||
[alias] =>
|
||||
[pubkey] => -----BEGIN PUBLIC KEY-----
|
||||
MIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAtihtyIuRDWkDpCA+I1UaQ
|
||||
jI4S7k625+A7EEJm+pL2ZVSJxeCKiFeEgHBQENjLMNNm8l8F6blxgQqE6ZJ9Spa7f
|
||||
tlaXYTRCrfxKzh02L3hR7sNA+JS/nXJaUAIo+IwpIEspmcIRbD9GB7Wv/rr+M28uH
|
||||
31EeYyDz8QL6InU/bJmnCdFvmEMBQxJOw1ih9tQp7UNJAbUMCje0WYFzBz7sfcaHL
|
||||
OyYcCOqOCBLdGucUoJzTQ9iDBVzB8j1r1JkIHoEb2moUoKUp+tkCylNfd/3IVELF9
|
||||
7w1Qjmit3m50OrJk2DQOXvCW9KQxaQNdpRPSwhvemIt98zXSeyZ1q/YjjOwG0DWDq
|
||||
AF8aLj3/oQaZndTPy/6tMiZogKaijoxj8xFLuPYDTw5VpKquriVC0z8oxyRbv4t9v
|
||||
8JZZ9BXqzmayvY3xZGGp8NulrfjW+me2bKh0/df1aHaBwpZdDTXQ6kqAiS2FfsuPN
|
||||
vg57fhfHbL1yJ4oDbNNNeI0kJTGchXqerr8C20khU/cQ2Xt31VyEZtnTB665Ceugv
|
||||
kp3t2qd8UpAVKl430S5Quqx2ymfUIdxdW08CEjnoRNEL3aOWOXfbf4gSVaXmPCR4i
|
||||
LSIeXnd14lQYK/uxW/8cTFjcmddsKxeXysoQxbSa9VdDK+KkpZdgYXYrTTofXs6v+
|
||||
4afAEhRaaY+MCAwEAAQ==
|
||||
-----END PUBLIC KEY-----
|
||||
|
||||
)
|
||||
*/
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
function webfinger_rfc7033($webbie,$zot = false) {
|
||||
|
||||
|
||||
@ -1473,8 +1460,8 @@ function find_webfinger_location($j,$rhs) {
|
||||
|
||||
function match_webfinger_location($s,$h) {
|
||||
|
||||
// GNU-social and the older StatusNet
|
||||
if(preg_match('|' . $h . '/user/([0-9]*?)$|',$s))
|
||||
// GNU-social and the older StatusNet - the $host/user/123 form doesn't work
|
||||
if(preg_match('|' . $h . '/index.php/user/([0-9]*?)$|',$s))
|
||||
return $s;
|
||||
// Redmatrix / hubzilla
|
||||
if(preg_match('|' . $h . '/channel/|',$s))
|
||||
@ -1549,7 +1536,7 @@ function fetch_lrdd_template($host) {
|
||||
|
||||
function fetch_xrd_links($url) {
|
||||
|
||||
logger('fetch_xrd_links: ' . $url);
|
||||
logger('fetch_xrd_links: ' . $url, LOGGER_DEBUG);
|
||||
|
||||
$redirects = 0;
|
||||
$x = z_fetch_url($url,false,$redirects,array('timeout' => 20));
|
||||
@ -1595,6 +1582,10 @@ logger('fetch_xrd_links: ' . $url);
|
||||
}
|
||||
}
|
||||
|
||||
if(isset($arr['xrd']['subject'])) {
|
||||
$links[]['@attributes'] = array('rel' => 'subject' , 'href' => $arr['xrd']['subject']);
|
||||
}
|
||||
|
||||
logger('fetch_xrd_links: ' . print_r($links,true), LOGGER_DATA);
|
||||
|
||||
return $links;
|
||||
|
@ -1,196 +0,0 @@
|
||||
<?php
|
||||
|
||||
require_once('include/crypto.php');
|
||||
|
||||
function get_salmon_key($uri,$keyhash) {
|
||||
$ret = array();
|
||||
|
||||
logger('Fetching salmon key for ' . $uri, LOGGER_DEBUG, LOG_INFO);
|
||||
|
||||
$x = webfinger_rfc7033($uri,true);
|
||||
|
||||
logger('webfinger returns: ' . print_r($x,true), LOGGER_DATA, LOG_DEBUG);
|
||||
|
||||
if($x && array_key_exists('links',$x) && $x['links']) {
|
||||
foreach($x['links'] as $link) {
|
||||
if(array_key_exists('rel',$link) && $link['rel'] === 'magic-public-key') {
|
||||
$ret[] = $link['href'];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
else {
|
||||
$arr = old_webfinger($uri);
|
||||
|
||||
logger('old webfinger returns: ' . print_r($arr,true), LOGGER_DATA, LOG_DEBUG);
|
||||
|
||||
if(is_array($arr)) {
|
||||
foreach($arr as $a) {
|
||||
if($a['@attributes']['rel'] === 'magic-public-key') {
|
||||
$ret[] = $a['@attributes']['href'];
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
return '';
|
||||
}
|
||||
}
|
||||
|
||||
// We have found at least one key URL
|
||||
// If it's inline, parse it - otherwise get the key
|
||||
|
||||
if(count($ret)) {
|
||||
for($x = 0; $x < count($ret); $x ++) {
|
||||
if(substr($ret[$x],0,5) === 'data:') {
|
||||
$ret[$x] = convert_salmon_key($ret[$x]);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
logger('Key located: ' . print_r($ret,true), LOGGER_DEBUG, LOG_INFO);
|
||||
|
||||
if(count($ret) == 1) {
|
||||
|
||||
// We only found one one key so we don't care if the hash matches.
|
||||
// If it's the wrong key we'll find out soon enough because
|
||||
// message verification will fail. This also covers some older
|
||||
// software which don't supply a keyhash. As long as they only
|
||||
// have one key we'll be right.
|
||||
|
||||
return $ret[0];
|
||||
}
|
||||
else {
|
||||
foreach($ret as $a) {
|
||||
$hash = base64url_encode(hash('sha256',$a));
|
||||
if($hash == $keyhash)
|
||||
return $a;
|
||||
}
|
||||
}
|
||||
|
||||
return '';
|
||||
}
|
||||
|
||||
|
||||
|
||||
function slapper($owner,$url,$slap) {
|
||||
|
||||
// does contact have a salmon endpoint?
|
||||
|
||||
if(! strlen($url))
|
||||
return;
|
||||
|
||||
|
||||
if(! $owner['channel_prvkey']) {
|
||||
logger(sprintf("channel '%s' (%d) does not have a salmon private key. Send failed.",
|
||||
$owner['channel_address'],$owner['channel_id']));
|
||||
return;
|
||||
}
|
||||
|
||||
logger('slapper called for ' .$url . '. Data: ' . $slap, LOGGER_DATA, LOG_DEBUG);
|
||||
|
||||
// create a magic envelope
|
||||
|
||||
$data = base64url_encode($slap);
|
||||
$data_type = 'application/atom+xml';
|
||||
$encoding = 'base64url';
|
||||
$algorithm = 'RSA-SHA256';
|
||||
$keyhash = base64url_encode(hash('sha256',salmon_key($owner['channel_pubkey'])),true);
|
||||
|
||||
// precomputed base64url encoding of data_type, encoding, algorithm concatenated with periods
|
||||
|
||||
$precomputed = '.YXBwbGljYXRpb24vYXRvbSt4bWw=.YmFzZTY0dXJs.UlNBLVNIQTI1Ng==';
|
||||
|
||||
$signature = base64url_encode(rsa_sign(str_replace('=','',$data . $precomputed),$owner['channel_prvkey']));
|
||||
|
||||
$signature2 = base64url_encode(rsa_sign($data . $precomputed,$owner['channel_prvkey']));
|
||||
|
||||
$signature3 = base64url_encode(rsa_sign($data,$owner['channel_prvkey']));
|
||||
|
||||
$salmon_tpl = get_markup_template('magicsig.tpl');
|
||||
|
||||
$salmon = replace_macros($salmon_tpl,array(
|
||||
'$data' => $data,
|
||||
'$encoding' => $encoding,
|
||||
'$algorithm' => $algorithm,
|
||||
'$keyhash' => $keyhash,
|
||||
'$signature' => $signature
|
||||
));
|
||||
|
||||
// slap them
|
||||
|
||||
$redirects = 0;
|
||||
|
||||
$ret = z_post_url($url,$salmon, $redirects, array('headers' => array(
|
||||
'Content-type: application/magic-envelope+xml',
|
||||
'Content-length: ' . strlen($salmon))
|
||||
));
|
||||
|
||||
|
||||
$return_code = $ret['return_code'];
|
||||
|
||||
// check for success, e.g. 2xx
|
||||
|
||||
if($return_code > 299) {
|
||||
|
||||
logger('compliant salmon failed. Falling back to status.net hack2');
|
||||
|
||||
// Entirely likely that their salmon implementation is
|
||||
// non-compliant. Let's try once more, this time only signing
|
||||
// the data, without stripping '=' chars
|
||||
|
||||
$salmon = replace_macros($salmon_tpl,array(
|
||||
'$data' => $data,
|
||||
'$encoding' => $encoding,
|
||||
'$algorithm' => $algorithm,
|
||||
'$keyhash' => $keyhash,
|
||||
'$signature' => $signature2
|
||||
));
|
||||
|
||||
$redirects = 0;
|
||||
|
||||
$ret = z_post_url($url,$salmon, $redirects, array('headers' => array(
|
||||
'Content-type: application/magic-envelope+xml',
|
||||
'Content-length: ' . strlen($salmon))
|
||||
));
|
||||
|
||||
|
||||
$return_code = $ret['return_code'];
|
||||
|
||||
if($return_code > 299) {
|
||||
|
||||
logger('compliant salmon failed. Falling back to status.net hack3');
|
||||
|
||||
// Entirely likely that their salmon implementation is
|
||||
// non-compliant. Let's try once more, this time only signing
|
||||
// the data, without the precomputed blob
|
||||
|
||||
$salmon = replace_macros($salmon_tpl,array(
|
||||
'$data' => $data,
|
||||
'$encoding' => $encoding,
|
||||
'$algorithm' => $algorithm,
|
||||
'$keyhash' => $keyhash,
|
||||
'$signature' => $signature3
|
||||
));
|
||||
|
||||
$redirects = 0;
|
||||
|
||||
$ret = z_post_url($url,$salmon, $redirects, array('headers' => array(
|
||||
'Content-type: application/magic-envelope+xml',
|
||||
'Content-length: ' . strlen($salmon))
|
||||
));
|
||||
|
||||
|
||||
$return_code = $ret['return_code'];
|
||||
}
|
||||
}
|
||||
logger('slapper for ' . $url . ' returned ' . $return_code);
|
||||
|
||||
if(! $return_code)
|
||||
return(-1);
|
||||
if(($return_code == 503) && (stristr($ret['header'],'retry-after')))
|
||||
return(-1);
|
||||
|
||||
return ((($return_code >= 200) && ($return_code < 300)) ? 0 : 1);
|
||||
}
|
||||
|
@ -1314,7 +1314,7 @@ function widget_admin($arr) {
|
||||
|
||||
$aside = array(
|
||||
'site' => array(z_root() . '/admin/site/', t('Site'), 'site'),
|
||||
'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users'),
|
||||
'users' => array(z_root() . '/admin/users/', t('Accounts'), 'users', 'pending-update', t('Member registrations waiting for confirmation')),
|
||||
'channels' => array(z_root() . '/admin/channels/', t('Channels'), 'channels'),
|
||||
'security' => array(z_root() . '/admin/security/', t('Security'), 'security'),
|
||||
'features' => array(z_root() . '/admin/features/', t('Features'), 'features'),
|
||||
@ -1330,24 +1330,29 @@ function widget_admin($arr) {
|
||||
|
||||
$r = q("SELECT * FROM addon WHERE plugin_admin = 1");
|
||||
|
||||
$aside['plugins_admin'] = array();
|
||||
$plugins = array();
|
||||
if($r) {
|
||||
foreach ($r as $h){
|
||||
$plugin = $h['name'];
|
||||
$aside['plugins_admin'][] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin');
|
||||
$plugins[] = array(z_root() . '/admin/plugins/' . $plugin, $plugin, 'plugin');
|
||||
// temp plugins with admin
|
||||
$a->plugins_admin[] = $plugin;
|
||||
}
|
||||
}
|
||||
|
||||
$aside['logs'] = array(z_root() . '/admin/logs/', t('Logs'), 'logs');
|
||||
$logs = array(z_root() . '/admin/logs/', t('Logs'), 'logs');
|
||||
|
||||
$arr = array('links' => $aside,'plugins' => $plugins,'logs' => $logs);
|
||||
call_hooks('admin_aside',$arr);
|
||||
|
||||
$o .= replace_macros(get_markup_template('admin_aside.tpl'), array(
|
||||
'$admin' => $aside,
|
||||
'$admtxt' => t('Admin'),
|
||||
'$plugadmtxt' => t('Plugin Features'),
|
||||
'$plugins' => $plugins,
|
||||
'$logtxt' => t('Logs'),
|
||||
'$h_pending' => t('User registrations waiting for confirmation'),
|
||||
'$logs' => $logs,
|
||||
'$h_pending' => t('Member registrations waiting for confirmation'),
|
||||
'$admurl'=> z_root() . '/admin/'
|
||||
));
|
||||
|
||||
|
@ -2278,6 +2278,12 @@ function check_location_move($sender_hash,$locations) {
|
||||
dbesc($sender_hash)
|
||||
);
|
||||
|
||||
// federation plugins may wish to notify connections
|
||||
// of the move on singleton networks
|
||||
|
||||
$arr = array('channel' => $r[0],'locations' => $locations);
|
||||
call_hooks('location_move',$arr);
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
19
mod/acl.php
19
mod/acl.php
@ -2,6 +2,7 @@
|
||||
|
||||
/* ACL selector json backend */
|
||||
require_once("include/acl_selectors.php");
|
||||
require_once("include/group.php");
|
||||
|
||||
function acl_init(&$a){
|
||||
|
||||
@ -47,31 +48,29 @@ function acl_init(&$a){
|
||||
$contacts = array();
|
||||
|
||||
if ($type=='' || $type=='g'){
|
||||
|
||||
$r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`,
|
||||
%s as uids
|
||||
|
||||
$r = q("SELECT `groups`.`id`, `groups`.`hash`, `groups`.`name`
|
||||
FROM `groups`,`group_member`
|
||||
WHERE `groups`.`deleted` = 0 AND `groups`.`uid` = %d
|
||||
AND `group_member`.`gid`=`groups`.`id`
|
||||
$sql_extra
|
||||
AND `group_member`.`gid`=`groups`.`id`
|
||||
$sql_extra
|
||||
GROUP BY `groups`.`id`
|
||||
ORDER BY `groups`.`name`
|
||||
LIMIT %d OFFSET %d",
|
||||
db_concat('group_member.xchan', ','),
|
||||
intval(local_channel()),
|
||||
intval($count),
|
||||
intval($start)
|
||||
);
|
||||
|
||||
foreach($r as $g){
|
||||
// logger('acl: group: ' . $g['name'] . ' members: ' . $g['uids']);
|
||||
// logger('acl: group: ' . $g['name'] . ' members: ' . group_get_members_xchan($g['id']));
|
||||
$groups[] = array(
|
||||
"type" => "g",
|
||||
"photo" => "images/twopeople.png",
|
||||
"name" => $g['name'],
|
||||
"id" => $g['id'],
|
||||
"xid" => $g['hash'],
|
||||
"uids" => explode(",",$g['uids']),
|
||||
"uids" => group_get_members_xchan($g['id']),
|
||||
"link" => ''
|
||||
);
|
||||
}
|
||||
@ -94,7 +93,7 @@ function acl_init(&$a){
|
||||
|
||||
$r = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags, abook_self
|
||||
FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE (abook_channel = %d $extra_channels_sql) AND abook_blocked = 0 and abook_pending = 0 and abook_archived = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
WHERE (abook_channel = %d $extra_channels_sql) AND abook_blocked = 0 and abook_pending = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc" ,
|
||||
intval(local_channel())
|
||||
);
|
||||
|
||||
@ -118,7 +117,7 @@ function acl_init(&$a){
|
||||
|
||||
$r2 = q("SELECT abook_id as id, xchan_hash as hash, xchan_name as name, xchan_photo_s as micro, xchan_url as url, xchan_addr as nick, abook_their_perms, abook_flags, abook_self
|
||||
FROM abook left join xchan on abook_xchan = xchan_hash
|
||||
WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND abook_blocked = 0 and abook_pending = 0 and abook_archived = 0 and abook_hidden = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc");
|
||||
WHERE abook_channel IN ($extra_channels_sql) $known_hashes_sql AND abook_blocked = 0 and abook_pending = 0 and abook_hidden = 0 and xchan_deleted = 0 $sql_extra2 order by $order_extra2 xchan_name asc");
|
||||
if($r2)
|
||||
$r = array_merge($r,$r2);
|
||||
|
||||
|
@ -134,9 +134,7 @@ function manage_content(&$a) {
|
||||
}
|
||||
}
|
||||
|
||||
$links = array(
|
||||
array( 'new_channel', t('Create a new channel'), t('Create a new channel'))
|
||||
);
|
||||
$create = array( 'new_channel', t('Create a new channel'), t('Create New'));
|
||||
|
||||
$delegates = q("select * from abook left join xchan on abook_xchan = xchan_hash where
|
||||
abook_channel = %d and (abook_their_perms & %d) > 0",
|
||||
@ -156,8 +154,6 @@ function manage_content(&$a) {
|
||||
$delegates = null;
|
||||
}
|
||||
|
||||
|
||||
|
||||
$o = replace_macros(get_markup_template('channels.tpl'), array(
|
||||
'$header' => t('Channel Manager'),
|
||||
'$msg_selected' => t('Current Channel'),
|
||||
@ -165,17 +161,17 @@ function manage_content(&$a) {
|
||||
'$desc' => t('Switch to one of your channels by selecting it.'),
|
||||
'$msg_default' => t('Default Channel'),
|
||||
'$msg_make_default' => t('Make Default'),
|
||||
'$links' => $links,
|
||||
'$create' => $create,
|
||||
'$all_channels' => $channels,
|
||||
'$mail_format' => t('%d new messages'),
|
||||
'$intros_format' => t('%d new introductions'),
|
||||
'$channel_usage_message' => $channel_usage_message,
|
||||
'$delegate_header' => t('Delegated Channels'),
|
||||
'$delegated_desc' => t('Delegated Channel'),
|
||||
'$delegates' => $delegates,
|
||||
'$locs' => t('Manage locations')
|
||||
|
||||
));
|
||||
|
||||
|
||||
return $o;
|
||||
|
||||
}
|
||||
|
@ -106,7 +106,7 @@ function oep_display_reply($args) {
|
||||
$w = (($maxwidth) ? $maxwidth : 640);
|
||||
$h = (($maxheight) ? $maxheight : $w * 2 / 3);
|
||||
|
||||
$ret['html'] = '<div style="width: ' . $w . '; height: ' . $h . ';" >' . $o . '</div>';
|
||||
$ret['html'] = '<div style="width: ' . $w . '; height: ' . $h . '; font-family: sans-serif,arial,freesans;" >' . $o . '</div>';
|
||||
|
||||
$ret['width'] = $w;
|
||||
$ret['height'] = $h;
|
||||
@ -165,7 +165,7 @@ function oep_mid_reply($args) {
|
||||
$w = (($maxwidth) ? $maxwidth : 640);
|
||||
$h = (($maxheight) ? $maxheight : $w * 2 / 3);
|
||||
|
||||
$ret['html'] = '<div style="width: ' . $w . '; height: ' . $h . ';" >' . $o . '</div>';
|
||||
$ret['html'] = '<div style="width: ' . $w . '; height: ' . $h . '; font-family: sans-serif,arial,freesans;" >' . $o . '</div>';
|
||||
|
||||
$ret['width'] = $w;
|
||||
$ret['height'] = $h;
|
||||
|
17
mod/xrd.php
17
mod/xrd.php
@ -7,8 +7,12 @@ function xrd_init(&$a) {
|
||||
$uri = urldecode(notags(trim($_GET['uri'])));
|
||||
logger('xrd: ' . $uri,LOGGER_DEBUG);
|
||||
|
||||
if(substr($uri,0,4) === 'http')
|
||||
$resource = $uri;
|
||||
|
||||
if(substr($uri,0,4) === 'http') {
|
||||
$uri = str_replace('~','',$uri);
|
||||
$name = basename($uri);
|
||||
}
|
||||
else {
|
||||
$local = str_replace('acct:', '', $uri);
|
||||
if(substr($local,0,2) == '//')
|
||||
@ -35,9 +39,18 @@ function xrd_init(&$a) {
|
||||
header("Content-type: application/xrd+xml");
|
||||
|
||||
|
||||
$aliases = array('acct:' . $r[0]['channel_address'] . '@' . $a->get_hostname(), z_root() . '/channel/' . $r[0]['channel_address'], z_root() . '/~' . $r[0]['channel_address']);
|
||||
|
||||
for($x = 0; $x < count($aliases); $x ++) {
|
||||
if($aliases[$x] === $resource)
|
||||
unset($aliases[$x]);
|
||||
}
|
||||
|
||||
|
||||
$o = replace_macros(get_markup_template('xrd_person.tpl'), array(
|
||||
'$nick' => $r[0]['channel_address'],
|
||||
'$accturi' => $uri,
|
||||
'$accturi' => $resource,
|
||||
'$aliases' => $aliases,
|
||||
'$profile_url' => $a->get_baseurl() . '/channel/' . $r[0]['channel_address'],
|
||||
'$hcard_url' => $a->get_baseurl() . '/hcard/' . $r[0]['channel_address'],
|
||||
'$atom' => $a->get_baseurl() . '/feed/' . $r[0]['channel_address'],
|
||||
|
1010
util/hmessages.po
1010
util/hmessages.po
File diff suppressed because it is too large
Load Diff
@ -1 +1 @@
|
||||
2016-03-17.1338H
|
||||
2016-03-23.1344H
|
||||
|
@ -1,57 +1,34 @@
|
||||
#channels-selected {
|
||||
color: #666666;
|
||||
font-size: 0.8em;
|
||||
.make-default-link,
|
||||
.make-default-link:hover {
|
||||
color: inherit;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
#channels-desc {
|
||||
color: #666666;
|
||||
font-size: 1.2em;
|
||||
margin-top: 15px;
|
||||
.new-notification {
|
||||
color: #c60032;
|
||||
}
|
||||
|
||||
.channel-photo-wrapper {
|
||||
display: table-cell;
|
||||
table-layout: fixed;
|
||||
vertical-align: top;
|
||||
}
|
||||
|
||||
.channel-photo-wrapper img {
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
.channel-notifications-wrapper {
|
||||
display: table-cell;
|
||||
table-layout: fixed;
|
||||
vertical-align: top;
|
||||
padding-left: 10px;
|
||||
}
|
||||
|
||||
.selected-channel {
|
||||
color: green;
|
||||
}
|
||||
|
||||
#all-channels-end {
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.channels-break {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.channel-selection-default {
|
||||
font-size: 0.8em;
|
||||
margin-bottom: 10px;
|
||||
}
|
||||
|
||||
.channel-selection {
|
||||
width: 12em;
|
||||
height: 16em;
|
||||
float: left;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.channel-selection img {
|
||||
display: block;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.channel-selection-name-link {
|
||||
font-size: 1.2em;
|
||||
margin-top: 10px;
|
||||
}
|
||||
|
||||
.channel-selection-name-link .channel-name {
|
||||
padding-top: 10px;
|
||||
word-wrap: break-word;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.channels-notifications-wrapper {
|
||||
clear: both;
|
||||
padding-top: 10px;
|
||||
}
|
||||
|
||||
.selected-channel img {
|
||||
border: 2px solid #ff0000;
|
||||
}
|
||||
|
||||
.channels-end {
|
||||
clear: both;
|
||||
}
|
File diff suppressed because it is too large
Load Diff
@ -398,42 +398,6 @@ $a->strings["__ctx:noun__ Like"] = array(
|
||||
0 => "Me gusta",
|
||||
1 => "Me gusta",
|
||||
);
|
||||
$a->strings["Miscellaneous"] = "Varios";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
|
||||
$a->strings["Required"] = "Obligatorio";
|
||||
$a->strings["never"] = "nunca";
|
||||
$a->strings["less than a second ago"] = "hace un instante";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "año",
|
||||
1 => "años",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "mes",
|
||||
1 => "meses",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "semana",
|
||||
1 => "semanas",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "día",
|
||||
1 => "días",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "hora",
|
||||
1 => "horas",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuto",
|
||||
1 => "minutos",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "segundo",
|
||||
1 => "segundos",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
|
||||
$a->strings["Invalid data packet"] = "Paquete de datos no válido";
|
||||
$a->strings["Unable to verify channel signature"] = "No ha sido posible de verificar la firma del canal";
|
||||
$a->strings["Unable to verify site signature for %s"] = "No ha sido posible de verificar la firma del sitio para %s";
|
||||
@ -614,6 +578,7 @@ $a->strings["For Administrators"] = "Para los administradores";
|
||||
$a->strings["For Developers"] = "Para los desarrolladores";
|
||||
$a->strings["Site"] = "Sitio";
|
||||
$a->strings["Accounts"] = "Cuentas";
|
||||
$a->strings["Member registrations waiting for confirmation"] = "Inscripciones en espera de aprobación";
|
||||
$a->strings["Channels"] = "Canales";
|
||||
$a->strings["Security"] = "Seguridad";
|
||||
$a->strings["Plugins"] = "Extensiones";
|
||||
@ -623,7 +588,6 @@ $a->strings["Profile Fields"] = "Campos del perfil";
|
||||
$a->strings["DB updates"] = "Actualizaciones de la base de datos";
|
||||
$a->strings["Logs"] = "Informes";
|
||||
$a->strings["Plugin Features"] = "Extensiones";
|
||||
$a->strings["User registrations waiting for confirmation"] = "Registros de usuarios pendientes de confirmación";
|
||||
$a->strings["View Photo"] = "Ver foto";
|
||||
$a->strings["Edit Album"] = "Editar álbum";
|
||||
$a->strings["prev"] = "anterior";
|
||||
@ -731,61 +695,44 @@ $a->strings["Name:"] = "Nombre:";
|
||||
$a->strings["Photo:"] = "Foto:";
|
||||
$a->strings["Please visit %s to approve or reject the suggestion."] = "Por favor, visite %s para aprobar o rechazar la sugerencia.";
|
||||
$a->strings["[Hubzilla:Notify]"] = "[Hubzilla:Aviso]";
|
||||
$a->strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
|
||||
$a->strings["Empty name"] = "Nombre vacío";
|
||||
$a->strings["Name too long"] = "Nombre demasiado largo";
|
||||
$a->strings["No account identifier"] = "Ningún identificador de la cuenta";
|
||||
$a->strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros usuarios de este sitio.";
|
||||
$a->strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
|
||||
$a->strings["Default Profile"] = "Perfil principal";
|
||||
$a->strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
|
||||
$a->strings["Requested profile is not available."] = "El perfil solicitado no está disponible.";
|
||||
$a->strings["Change profile photo"] = "Cambiar la foto del perfil";
|
||||
$a->strings["Create New Profile"] = "Crear un nuevo perfil";
|
||||
$a->strings["Profile Image"] = "Imagen del perfil";
|
||||
$a->strings["Visible to everybody"] = "Visible para todos";
|
||||
$a->strings["Edit visibility"] = "Editar visibilidad";
|
||||
$a->strings["Gender:"] = "Género:";
|
||||
$a->strings["Status:"] = "Estado:";
|
||||
$a->strings["Homepage:"] = "Página personal:";
|
||||
$a->strings["Online Now"] = "Ahora en línea";
|
||||
$a->strings["g A l F d"] = "g A l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[hoy]";
|
||||
$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
|
||||
$a->strings["Birthdays this week:"] = "Cumpleaños de esta semana:";
|
||||
$a->strings["[No description]"] = "[Sin descripción]";
|
||||
$a->strings["Event Reminders"] = "Recordatorios de eventos";
|
||||
$a->strings["Events this week:"] = "Eventos de esta semana:";
|
||||
$a->strings["Full Name:"] = "Nombre completo:";
|
||||
$a->strings["Like this channel"] = "Me gusta este canal";
|
||||
$a->strings["j F, Y"] = "j F Y";
|
||||
$a->strings["j F"] = "j F";
|
||||
$a->strings["Birthday:"] = "Cumpleaños:";
|
||||
$a->strings["Age:"] = "Edad:";
|
||||
$a->strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Orientación sexual:";
|
||||
$a->strings["Hometown:"] = "Lugar de nacimiento:";
|
||||
$a->strings["Tags:"] = "Etiquetas:";
|
||||
$a->strings["Political Views:"] = "Posición política:";
|
||||
$a->strings["Religion:"] = "Religión:";
|
||||
$a->strings["About:"] = "Sobre mí:";
|
||||
$a->strings["Hobbies/Interests:"] = "Aficciones/Intereses:";
|
||||
$a->strings["Likes:"] = "Me gusta:";
|
||||
$a->strings["Dislikes:"] = "No me gusta:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
|
||||
$a->strings["My other channels:"] = "Mis otros canales:";
|
||||
$a->strings["Musical interests:"] = "Intereses musicales:";
|
||||
$a->strings["Books, literature:"] = "Libros, literatura:";
|
||||
$a->strings["Television:"] = "Televisión:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Cine/danza/cultura/entretenimiento:";
|
||||
$a->strings["Love/Romance:"] = "Vida sentimental/amorosa:";
|
||||
$a->strings["Work/employment:"] = "Trabajo:";
|
||||
$a->strings["School/education:"] = "Estudios:";
|
||||
$a->strings["Like this thing"] = "Me gusta esto";
|
||||
$a->strings["cover photo"] = "Imagen de portada del perfil";
|
||||
$a->strings["Miscellaneous"] = "Varios";
|
||||
$a->strings["Birthday"] = "Cumpleaños";
|
||||
$a->strings["Age: "] = "Edad:";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-DD o MM-DD";
|
||||
$a->strings["Required"] = "Obligatorio";
|
||||
$a->strings["never"] = "nunca";
|
||||
$a->strings["less than a second ago"] = "hace un instante";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "hace %1\$d %2\$s";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "año",
|
||||
1 => "años",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "mes",
|
||||
1 => "meses",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "semana",
|
||||
1 => "semanas",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "día",
|
||||
1 => "días",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "hora",
|
||||
1 => "horas",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuto",
|
||||
1 => "minutos",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "segundo",
|
||||
1 => "segundos",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Cumpleaños de %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Feliz cumpleaños %1\$s";
|
||||
$a->strings["Embedded content"] = "Contenido incorporado";
|
||||
$a->strings["Embedding disabled"] = "Incrustación deshabilitada";
|
||||
$a->strings["channel"] = "el canal";
|
||||
@ -1024,6 +971,61 @@ $a->strings["male"] = "hombre";
|
||||
$a->strings["%1\$s updated his %2\$s"] = "%1\$s ha actualizado su %2\$s";
|
||||
$a->strings["%1\$s updated their %2\$s"] = "%1\$s ha actualizado su %2\$s";
|
||||
$a->strings["profile photo"] = "foto del perfil";
|
||||
$a->strings["Unable to obtain identity information from database"] = "No ha sido posible obtener información sobre la identidad desde la base de datos";
|
||||
$a->strings["Empty name"] = "Nombre vacío";
|
||||
$a->strings["Name too long"] = "Nombre demasiado largo";
|
||||
$a->strings["No account identifier"] = "Ningún identificador de la cuenta";
|
||||
$a->strings["Nickname is required."] = "Se requiere un sobrenombre (alias).";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Sobrenombre en uso. Por favor, elija otro.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "El alias contiene caracteres no admitidos o está ya en uso por otros usuarios de este sitio.";
|
||||
$a->strings["Unable to retrieve created identity"] = "No ha sido posible recuperar la identidad creada";
|
||||
$a->strings["Default Profile"] = "Perfil principal";
|
||||
$a->strings["Requested channel is not available."] = "El canal solicitado no está disponible.";
|
||||
$a->strings["Requested profile is not available."] = "El perfil solicitado no está disponible.";
|
||||
$a->strings["Change profile photo"] = "Cambiar la foto del perfil";
|
||||
$a->strings["Create New Profile"] = "Crear un nuevo perfil";
|
||||
$a->strings["Profile Image"] = "Imagen del perfil";
|
||||
$a->strings["Visible to everybody"] = "Visible para todos";
|
||||
$a->strings["Edit visibility"] = "Editar visibilidad";
|
||||
$a->strings["Gender:"] = "Género:";
|
||||
$a->strings["Status:"] = "Estado:";
|
||||
$a->strings["Homepage:"] = "Página personal:";
|
||||
$a->strings["Online Now"] = "Ahora en línea";
|
||||
$a->strings["g A l F d"] = "g A l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[hoy]";
|
||||
$a->strings["Birthday Reminders"] = "Recordatorios de cumpleaños";
|
||||
$a->strings["Birthdays this week:"] = "Cumpleaños de esta semana:";
|
||||
$a->strings["[No description]"] = "[Sin descripción]";
|
||||
$a->strings["Event Reminders"] = "Recordatorios de eventos";
|
||||
$a->strings["Events this week:"] = "Eventos de esta semana:";
|
||||
$a->strings["Full Name:"] = "Nombre completo:";
|
||||
$a->strings["Like this channel"] = "Me gusta este canal";
|
||||
$a->strings["j F, Y"] = "j F Y";
|
||||
$a->strings["j F"] = "j F";
|
||||
$a->strings["Birthday:"] = "Cumpleaños:";
|
||||
$a->strings["Age:"] = "Edad:";
|
||||
$a->strings["for %1\$d %2\$s"] = "por %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Orientación sexual:";
|
||||
$a->strings["Hometown:"] = "Lugar de nacimiento:";
|
||||
$a->strings["Tags:"] = "Etiquetas:";
|
||||
$a->strings["Political Views:"] = "Posición política:";
|
||||
$a->strings["Religion:"] = "Religión:";
|
||||
$a->strings["About:"] = "Sobre mí:";
|
||||
$a->strings["Hobbies/Interests:"] = "Aficciones/Intereses:";
|
||||
$a->strings["Likes:"] = "Me gusta:";
|
||||
$a->strings["Dislikes:"] = "No me gusta:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Información de contacto y redes sociales:";
|
||||
$a->strings["My other channels:"] = "Mis otros canales:";
|
||||
$a->strings["Musical interests:"] = "Intereses musicales:";
|
||||
$a->strings["Books, literature:"] = "Libros, literatura:";
|
||||
$a->strings["Television:"] = "Televisión:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Cine/danza/cultura/entretenimiento:";
|
||||
$a->strings["Love/Romance:"] = "Vida sentimental/amorosa:";
|
||||
$a->strings["Work/employment:"] = "Trabajo:";
|
||||
$a->strings["School/education:"] = "Estudios:";
|
||||
$a->strings["Like this thing"] = "Me gusta esto";
|
||||
$a->strings["cover photo"] = "Imagen de portada del perfil";
|
||||
$a->strings["Some blurb about what to do when you're new here"] = "Algunas propuestas para el nuevo usuario sobre qué se puede hacer aquí";
|
||||
$a->strings["network"] = "red";
|
||||
$a->strings["RSS"] = "RSS";
|
||||
@ -1800,50 +1802,48 @@ $a->strings["Sexual Preference"] = "Preferencia sexual";
|
||||
$a->strings["Homepage"] = "Página personal";
|
||||
$a->strings["Interests"] = "Intereses";
|
||||
$a->strings["Profile updated."] = "Perfil actualizado.";
|
||||
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "¿Ocultar su lista de contactos a los visitantes de este perfil?";
|
||||
$a->strings["Hide your connections list from viewers of this profile"] = "Ocultar la lista de conexiones a los visitantes del perfil";
|
||||
$a->strings["Edit Profile Details"] = "Modificar los detalles de este perfil";
|
||||
$a->strings["View this profile"] = "Ver este perfil";
|
||||
$a->strings["Change Cover Photo"] = "Cambiar la imagen de portada del perfil";
|
||||
$a->strings["Change Profile Photo"] = "Cambiar la foto del perfil";
|
||||
$a->strings["Change cover photo"] = "Cambiar la imagen de portada del perfil";
|
||||
$a->strings["Create a new profile using these settings"] = "Crear un nuevo perfil usando estos ajustes";
|
||||
$a->strings["Clone this profile"] = "Clonar este perfil";
|
||||
$a->strings["Delete this profile"] = "Eliminar este perfil";
|
||||
$a->strings["Add profile things"] = "Añadir cosas al perfil";
|
||||
$a->strings["Relation"] = "Relación";
|
||||
$a->strings["Import profile from file"] = "Importar perfil desde un fichero";
|
||||
$a->strings["Export profile to file"] = "Exportar perfil a un fichero";
|
||||
$a->strings["Profile Name"] = "Nombre del perfil";
|
||||
$a->strings["Your Full Name"] = "Nombre completo";
|
||||
$a->strings["Your gender"] = "Género";
|
||||
$a->strings["Marital status"] = "Estado civil";
|
||||
$a->strings["Sexual preference"] = "Preferencia sexual";
|
||||
$a->strings["Profile name"] = "Nombre del perfil";
|
||||
$a->strings["This is your default profile."] = "Este es su perfil principal.";
|
||||
$a->strings["Your full name"] = "Nombre completo";
|
||||
$a->strings["Title/Description"] = "Título o descripción";
|
||||
$a->strings["Your Gender"] = "Género";
|
||||
$a->strings["Birthday"] = "Cumpleaños";
|
||||
$a->strings["Street Address"] = "Dirección";
|
||||
$a->strings["Street address"] = "Dirección";
|
||||
$a->strings["Locality/City"] = "Ciudad";
|
||||
$a->strings["Postal/Zip Code"] = "Código postal";
|
||||
$a->strings["Country"] = "País";
|
||||
$a->strings["Region/State"] = "Región o Estado";
|
||||
$a->strings["<span class=\"heart\">♥</span> Marital Status"] = "<span class=\"heart\">♥</span> Estado sentimental";
|
||||
$a->strings["Postal/Zip code"] = "Código postal";
|
||||
$a->strings["Country"] = "País";
|
||||
$a->strings["Who (if applicable)"] = "Quién (si es aplicable)";
|
||||
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Por ejemplo: ana123, María González, sara@ejemplo.com";
|
||||
$a->strings["Since [date]"] = "Desde [fecha]";
|
||||
$a->strings["Since (date)"] = "Desde (fecha)";
|
||||
$a->strings["Tell us about yourself"] = "Háblenos de usted";
|
||||
$a->strings["Hometown"] = "Lugar de nacimiento";
|
||||
$a->strings["Religious Views"] = "Creencias religiosas";
|
||||
$a->strings["Political views"] = "Ideas políticas";
|
||||
$a->strings["Religious views"] = "Creencias religiosas";
|
||||
$a->strings["Keywords used in directory listings"] = "Palabras clave utilizadas en los listados de directorios";
|
||||
$a->strings["Example: fishing photography software"] = "Por ejemplo: software de fotografía submarina";
|
||||
$a->strings["Used in directory listings"] = "Visible en el directorio público del canal";
|
||||
$a->strings["Tell us about yourself..."] = "Háblenos de usted...";
|
||||
$a->strings["Hobbies/Interests"] = "Aficiones/Intereses";
|
||||
$a->strings["Contact information and Social Networks"] = "Información de contacto y redes sociales";
|
||||
$a->strings["My other channels"] = "Mis otros canales";
|
||||
$a->strings["Musical interests"] = "Preferencias musicales";
|
||||
$a->strings["Books, literature"] = "Libros, literatura";
|
||||
$a->strings["Television"] = "Televisión";
|
||||
$a->strings["Film/dance/culture/entertainment"] = "Cine/danza/cultura/entretenimiento";
|
||||
$a->strings["Love/romance"] = "Vida sentimental/amorosa";
|
||||
$a->strings["Work/employment"] = "Trabajo";
|
||||
$a->strings["School/education"] = "Estudios";
|
||||
$a->strings["This is your default profile."] = "Este es su perfil principal.";
|
||||
$a->strings["Age: "] = "Edad:";
|
||||
$a->strings["Edit/Manage Profiles"] = "Modificar/gestionar perfiles";
|
||||
$a->strings["Add profile things"] = "Añadir cosas al perfil";
|
||||
$a->strings["Include desirable objects in your profile"] = "Añadir objetos interesantes en su perfil";
|
||||
$a->strings["Film/Dance/Culture/Entertainment"] = "Cine, danza, cultura, entretenimiento";
|
||||
$a->strings["Hobbies/Interests"] = "Aficiones/Intereses";
|
||||
$a->strings["Love/Romance"] = "Vida sentimental o amorosa";
|
||||
$a->strings["School/Education"] = "Estudios";
|
||||
$a->strings["Contact information and social networks"] = "Información de contacto y redes sociales";
|
||||
$a->strings["My other channels"] = "Mis otros canales";
|
||||
$a->strings["Create New"] = "Crear un nuevo perfil";
|
||||
$a->strings["Invalid profile identifier."] = "Identificador del perfil no válido";
|
||||
$a->strings["Profile Visibility Editor"] = "Editor de visibilidad del perfil";
|
||||
$a->strings["Click on a contact to add or remove."] = "Pulsar en un contacto para añadirlo o eliminarlo.";
|
||||
@ -2167,7 +2167,7 @@ $a->strings["Last background fetch: "] = "Última actualización en segundo plan
|
||||
$a->strings["Current load average: "] = "Carga media actual:";
|
||||
$a->strings["Running at web location"] = "Corriendo en el sitio web";
|
||||
$a->strings["Please visit <a href=\"http://hubzilla.org\">hubzilla.org</a> to learn more about \$Projectname."] = "Por favor, visite <a href=\"http://hubzilla.org\">hubzilla.org</a> para más información sobre \$Projectname.";
|
||||
$a->strings["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por, favor visite";
|
||||
$a->strings["Bug reports and issues: please visit"] = "Informes de errores e incidencias: por favor visite";
|
||||
$a->strings["\$projectname issues"] = "Problemas en \$projectname";
|
||||
$a->strings["Suggestions, praise, etc. - please email \"redmatrix\" at librelist - dot com"] = "Sugerencias, elogios, etc - por favor, un correo electrónico a \"redmatrix\" en librelist - punto com";
|
||||
$a->strings["Site Administrators"] = "Administradores del sitio";
|
||||
|
1511
view/it/hmessages.po
1511
view/it/hmessages.po
File diff suppressed because it is too large
Load Diff
@ -398,42 +398,6 @@ $a->strings["__ctx:noun__ Like"] = array(
|
||||
0 => "Mi piace",
|
||||
1 => "Mi piace",
|
||||
);
|
||||
$a->strings["Miscellaneous"] = "Altro";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
|
||||
$a->strings["Required"] = "Obbligatorio";
|
||||
$a->strings["never"] = "mai";
|
||||
$a->strings["less than a second ago"] = "meno di un secondo fa";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "anno",
|
||||
1 => "anni",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "mese",
|
||||
1 => "mesi",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "settimana",
|
||||
1 => "settimane",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "giorno",
|
||||
1 => "giorni",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "ora",
|
||||
1 => "ore",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuto",
|
||||
1 => "minuti",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "secondo",
|
||||
1 => "secondi",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Compleanno di %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
|
||||
$a->strings["Invalid data packet"] = "Dati ricevuti non validi";
|
||||
$a->strings["Unable to verify channel signature"] = "Impossibile verificare la firma elettronica del canale";
|
||||
$a->strings["Unable to verify site signature for %s"] = "Impossibile verificare la firma elettronica del sito %s";
|
||||
@ -600,6 +564,7 @@ $a->strings["Chat Rooms"] = "Chat";
|
||||
$a->strings["Bookmarked Chatrooms"] = "Chat nei segnalibri";
|
||||
$a->strings["Suggested Chatrooms"] = "Chat suggerite";
|
||||
$a->strings["photo/image"] = "foto/immagine";
|
||||
$a->strings["Click to show more"] = "Clicca per mostrare tutto";
|
||||
$a->strings["Rating Tools"] = "Valutazione";
|
||||
$a->strings["Rate Me"] = "Valutami";
|
||||
$a->strings["View Ratings"] = "Vedi le valutazioni ricevute";
|
||||
@ -613,6 +578,7 @@ $a->strings["For Administrators"] = "Per gli amministratori";
|
||||
$a->strings["For Developers"] = "Per sviluppatori";
|
||||
$a->strings["Site"] = "Sito";
|
||||
$a->strings["Accounts"] = "Account";
|
||||
$a->strings["Member registrations waiting for confirmation"] = "Richieste di registrazione in attesa di conferma";
|
||||
$a->strings["Channels"] = "Canali";
|
||||
$a->strings["Security"] = "Sicurezza";
|
||||
$a->strings["Plugins"] = "Plugin";
|
||||
@ -622,7 +588,6 @@ $a->strings["Profile Fields"] = "Campi del profilo";
|
||||
$a->strings["DB updates"] = "Aggiornamenti al DB";
|
||||
$a->strings["Logs"] = "Log";
|
||||
$a->strings["Plugin Features"] = "Plugin";
|
||||
$a->strings["User registrations waiting for confirmation"] = "Registrazioni in attesa";
|
||||
$a->strings["View Photo"] = "Guarda la foto";
|
||||
$a->strings["Edit Album"] = "Modifica album";
|
||||
$a->strings["prev"] = "prec";
|
||||
@ -634,7 +599,7 @@ $a->strings["newer"] = "più nuovi";
|
||||
$a->strings["No connections"] = "Nessun contatto";
|
||||
$a->strings["View all %s connections"] = "Mostra tutti i %s contatti";
|
||||
$a->strings["poke"] = "poke";
|
||||
$a->strings["poked"] = "ha ricevuto un poke";
|
||||
$a->strings["poked"] = "ha mandato un poke";
|
||||
$a->strings["ping"] = "ping";
|
||||
$a->strings["pinged"] = "ha effettuato un ping";
|
||||
$a->strings["prod"] = "spintone";
|
||||
@ -730,61 +695,44 @@ $a->strings["Name:"] = "Nome:";
|
||||
$a->strings["Photo:"] = "Foto:";
|
||||
$a->strings["Please visit %s to approve or reject the suggestion."] = "Visita %s per approvare o rifiutare il suggerimento.";
|
||||
$a->strings["[Hubzilla:Notify]"] = "[Hubzilla]";
|
||||
$a->strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
|
||||
$a->strings["Empty name"] = "Nome vuoto";
|
||||
$a->strings["Name too long"] = "Nome troppo lungo";
|
||||
$a->strings["No account identifier"] = "Account senza identificativo";
|
||||
$a->strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
|
||||
$a->strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
|
||||
$a->strings["Default Profile"] = "Profilo predefinito";
|
||||
$a->strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
|
||||
$a->strings["Requested profile is not available."] = "Il profilo richiesto non è disponibile.";
|
||||
$a->strings["Change profile photo"] = "Cambia la foto del profilo";
|
||||
$a->strings["Create New Profile"] = "Crea un nuovo profilo";
|
||||
$a->strings["Profile Image"] = "Immagine del profilo";
|
||||
$a->strings["Visible to everybody"] = "Visibile a tutti";
|
||||
$a->strings["Edit visibility"] = "Cambia la visibilità";
|
||||
$a->strings["Gender:"] = "Sesso:";
|
||||
$a->strings["Status:"] = "Stato:";
|
||||
$a->strings["Homepage:"] = "Home page:";
|
||||
$a->strings["Online Now"] = "Online adesso";
|
||||
$a->strings["g A l F d"] = "g A l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[oggi]";
|
||||
$a->strings["Birthday Reminders"] = "Promemoria compleanni";
|
||||
$a->strings["Birthdays this week:"] = "Compleanni questa settimana:";
|
||||
$a->strings["[No description]"] = "[Nessuna descrizione]";
|
||||
$a->strings["Event Reminders"] = "Promemoria";
|
||||
$a->strings["Events this week:"] = "Eventi della settimana:";
|
||||
$a->strings["Full Name:"] = "Nome completo:";
|
||||
$a->strings["Like this channel"] = "Mi piace questo canale";
|
||||
$a->strings["j F, Y"] = "j F Y";
|
||||
$a->strings["j F"] = "j F";
|
||||
$a->strings["Birthday:"] = "Compleanno:";
|
||||
$a->strings["Age:"] = "Età:";
|
||||
$a->strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Preferenze sessuali:";
|
||||
$a->strings["Hometown:"] = "Città dove vivo:";
|
||||
$a->strings["Tags:"] = "Tag:";
|
||||
$a->strings["Political Views:"] = "Orientamento politico:";
|
||||
$a->strings["Religion:"] = "Religione:";
|
||||
$a->strings["About:"] = "Informazioni:";
|
||||
$a->strings["Hobbies/Interests:"] = "Interessi e hobby:";
|
||||
$a->strings["Likes:"] = "Mi piace:";
|
||||
$a->strings["Dislikes:"] = "Non mi piace:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Contatti e social network:";
|
||||
$a->strings["My other channels:"] = "I miei altri canali:";
|
||||
$a->strings["Musical interests:"] = "Gusti musicali:";
|
||||
$a->strings["Books, literature:"] = "Libri, letteratura:";
|
||||
$a->strings["Television:"] = "Televisione:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
|
||||
$a->strings["Love/Romance:"] = "Amore:";
|
||||
$a->strings["Work/employment:"] = "Lavoro:";
|
||||
$a->strings["School/education:"] = "Scuola:";
|
||||
$a->strings["Like this thing"] = "Mi piace";
|
||||
$a->strings["cover photo"] = "Copertina del canale";
|
||||
$a->strings["Miscellaneous"] = "Altro";
|
||||
$a->strings["Birthday"] = "Compleanno";
|
||||
$a->strings["Age: "] = "Età:";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "AAAA-MM-GG oppure MM-GG";
|
||||
$a->strings["Required"] = "Obbligatorio";
|
||||
$a->strings["never"] = "mai";
|
||||
$a->strings["less than a second ago"] = "meno di un secondo fa";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s fa";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "anno",
|
||||
1 => "anni",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "mese",
|
||||
1 => "mesi",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "settimana",
|
||||
1 => "settimane",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "giorno",
|
||||
1 => "giorni",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "ora",
|
||||
1 => "ore",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuto",
|
||||
1 => "minuti",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "secondo",
|
||||
1 => "secondi",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Compleanno di %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Buon compleanno %1\$s";
|
||||
$a->strings["Embedded content"] = "Contenuti incorporati";
|
||||
$a->strings["Embedding disabled"] = "Disabilita la creazione di contenuti incorporati";
|
||||
$a->strings["channel"] = "il canale";
|
||||
@ -1023,6 +971,61 @@ $a->strings["male"] = "maschio";
|
||||
$a->strings["%1\$s updated his %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
|
||||
$a->strings["%1\$s updated their %2\$s"] = "Aggiornamento: %2\$s di %1\$s";
|
||||
$a->strings["profile photo"] = "foto del profilo";
|
||||
$a->strings["Unable to obtain identity information from database"] = "Impossibile ottenere le informazioni di identificazione dal database";
|
||||
$a->strings["Empty name"] = "Nome vuoto";
|
||||
$a->strings["Name too long"] = "Nome troppo lungo";
|
||||
$a->strings["No account identifier"] = "Account senza identificativo";
|
||||
$a->strings["Nickname is required."] = "Il nome dell'account è obbligatorio.";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Nome utente riservato. Per favore scegline un altro.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Il nome dell'account è già in uso oppure ha dei caratteri non supportati.";
|
||||
$a->strings["Unable to retrieve created identity"] = "Impossibile caricare l'identità creata";
|
||||
$a->strings["Default Profile"] = "Profilo predefinito";
|
||||
$a->strings["Requested channel is not available."] = "Il canale che cerchi non è disponibile.";
|
||||
$a->strings["Requested profile is not available."] = "Il profilo richiesto non è disponibile.";
|
||||
$a->strings["Change profile photo"] = "Cambia la foto del profilo";
|
||||
$a->strings["Create New Profile"] = "Crea un nuovo profilo";
|
||||
$a->strings["Profile Image"] = "Immagine del profilo";
|
||||
$a->strings["Visible to everybody"] = "Visibile a tutti";
|
||||
$a->strings["Edit visibility"] = "Cambia la visibilità";
|
||||
$a->strings["Gender:"] = "Sesso:";
|
||||
$a->strings["Status:"] = "Stato:";
|
||||
$a->strings["Homepage:"] = "Home page:";
|
||||
$a->strings["Online Now"] = "Online adesso";
|
||||
$a->strings["g A l F d"] = "g A l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[oggi]";
|
||||
$a->strings["Birthday Reminders"] = "Promemoria compleanni";
|
||||
$a->strings["Birthdays this week:"] = "Compleanni questa settimana:";
|
||||
$a->strings["[No description]"] = "[Nessuna descrizione]";
|
||||
$a->strings["Event Reminders"] = "Promemoria";
|
||||
$a->strings["Events this week:"] = "Eventi della settimana:";
|
||||
$a->strings["Full Name:"] = "Nome completo:";
|
||||
$a->strings["Like this channel"] = "Mi piace questo canale";
|
||||
$a->strings["j F, Y"] = "j F Y";
|
||||
$a->strings["j F"] = "j F";
|
||||
$a->strings["Birthday:"] = "Compleanno:";
|
||||
$a->strings["Age:"] = "Età:";
|
||||
$a->strings["for %1\$d %2\$s"] = "per %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Preferenze sessuali:";
|
||||
$a->strings["Hometown:"] = "Città dove vivo:";
|
||||
$a->strings["Tags:"] = "Tag:";
|
||||
$a->strings["Political Views:"] = "Orientamento politico:";
|
||||
$a->strings["Religion:"] = "Religione:";
|
||||
$a->strings["About:"] = "Informazioni:";
|
||||
$a->strings["Hobbies/Interests:"] = "Interessi e hobby:";
|
||||
$a->strings["Likes:"] = "Mi piace:";
|
||||
$a->strings["Dislikes:"] = "Non mi piace:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Contatti e social network:";
|
||||
$a->strings["My other channels:"] = "I miei altri canali:";
|
||||
$a->strings["Musical interests:"] = "Gusti musicali:";
|
||||
$a->strings["Books, literature:"] = "Libri, letteratura:";
|
||||
$a->strings["Television:"] = "Televisione:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Film, danza, cultura, intrattenimento:";
|
||||
$a->strings["Love/Romance:"] = "Amore:";
|
||||
$a->strings["Work/employment:"] = "Lavoro:";
|
||||
$a->strings["School/education:"] = "Scuola:";
|
||||
$a->strings["Like this thing"] = "Mi piace";
|
||||
$a->strings["cover photo"] = "Copertina del canale";
|
||||
$a->strings["Some blurb about what to do when you're new here"] = "Qualche suggerimento per i nuovi utenti su cosa fare";
|
||||
$a->strings["network"] = "rete";
|
||||
$a->strings["RSS"] = "RSS";
|
||||
@ -1313,7 +1316,6 @@ $a->strings["Nothing to import."] = "Non c'è niente da importare.";
|
||||
$a->strings["Unable to download data from old server"] = "Impossibile importare i dati dal vecchio hub";
|
||||
$a->strings["Imported file is empty."] = "Il file da importare è vuoto.";
|
||||
$a->strings["Warning: Database versions differ by %1\$d updates."] = "Attenzione: le versioni di database differiscono di %1\$d aggiornamenti.";
|
||||
$a->strings["Server platform is not compatible. Operation not permitted."] = "La tecnologia del server non è compatibile. Operazione non permessa.";
|
||||
$a->strings["No channel. Import failed."] = "Nessun canale. Import fallito.";
|
||||
$a->strings["You must be logged in to use this feature."] = "Per questa funzionalità devi aver effettuato l'accesso.";
|
||||
$a->strings["Import Channel"] = "Importa un canale";
|
||||
@ -1800,50 +1802,48 @@ $a->strings["Sexual Preference"] = "Preferenze sessuali";
|
||||
$a->strings["Homepage"] = "Home page";
|
||||
$a->strings["Interests"] = "Interessi";
|
||||
$a->strings["Profile updated."] = "Profilo aggiornato.";
|
||||
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Nascondi la tua lista di contatti/amici ai visitatori di questo profilo?";
|
||||
$a->strings["Hide your connections list from viewers of this profile"] = "Nascondi la tua lista di contatti ai visitatori di questo profilo";
|
||||
$a->strings["Edit Profile Details"] = "Modifica i dettagli del profilo";
|
||||
$a->strings["View this profile"] = "Guarda questo profilo";
|
||||
$a->strings["Change Profile Photo"] = "Cambia la foto del profilo";
|
||||
$a->strings["Change cover photo"] = "Cambia la copertina del canale";
|
||||
$a->strings["Create a new profile using these settings"] = "Crea un nuovo profilo usando queste impostazioni";
|
||||
$a->strings["Clone this profile"] = "Clona questo profilo";
|
||||
$a->strings["Delete this profile"] = "Elimina questo profilo";
|
||||
$a->strings["Add profile things"] = "Aggiungi oggetti al profilo";
|
||||
$a->strings["Relation"] = "Relazione";
|
||||
$a->strings["Import profile from file"] = "Importa il profilo da un file";
|
||||
$a->strings["Export profile to file"] = "Esporta il profilo in un file";
|
||||
$a->strings["Profile Name:"] = "Nome del profilo:";
|
||||
$a->strings["Your Full Name:"] = "Il tuo nome completo:";
|
||||
$a->strings["Title/Description:"] = "Titolo/descrizione:";
|
||||
$a->strings["Your Gender:"] = "Sesso:";
|
||||
$a->strings["Birthday :"] = "Compleanno:";
|
||||
$a->strings["Street Address:"] = "Indirizzo (via/piazza):";
|
||||
$a->strings["Locality/City:"] = "Località:";
|
||||
$a->strings["Postal/Zip Code:"] = "CAP:";
|
||||
$a->strings["Country:"] = "Nazione:";
|
||||
$a->strings["Region/State:"] = "Regione/stato:";
|
||||
$a->strings["<span class=\"heart\">♥</span> Marital Status:"] = "<span class=\"heart\">♥</span> Stato sentimentale:";
|
||||
$a->strings["Who: (if applicable)"] = "Con chi: (se possibile)";
|
||||
$a->strings["Your gender"] = "Sesso";
|
||||
$a->strings["Marital status"] = "Stato civile";
|
||||
$a->strings["Sexual preference"] = "Preferenze sessuali";
|
||||
$a->strings["Profile name"] = "Nome del profilo";
|
||||
$a->strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
|
||||
$a->strings["Your full name"] = "Il tuo nome completo";
|
||||
$a->strings["Title/Description"] = "Titolo/descrizione";
|
||||
$a->strings["Street address"] = "Indirizzo (via/piazza)";
|
||||
$a->strings["Locality/City"] = "Località";
|
||||
$a->strings["Region/State"] = "Regione/stato";
|
||||
$a->strings["Postal/Zip code"] = "CAP";
|
||||
$a->strings["Country"] = "Nazione";
|
||||
$a->strings["Who (if applicable)"] = "Con chi (se possibile)";
|
||||
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Per esempio: cathy123, Cathy Williams, cathy@example.com";
|
||||
$a->strings["Since [date]:"] = "dal [data]:";
|
||||
$a->strings["Homepage URL:"] = "Indirizzo home page:";
|
||||
$a->strings["Religious Views:"] = "Orientamento religioso:";
|
||||
$a->strings["Keywords:"] = "Parole chiave, tag:";
|
||||
$a->strings["Since (date)"] = "dal (data)";
|
||||
$a->strings["Tell us about yourself"] = "Raccontaci di te...";
|
||||
$a->strings["Hometown"] = "Città dove vivo";
|
||||
$a->strings["Political views"] = "Orientamento politico";
|
||||
$a->strings["Religious views"] = "Orientamento religioso";
|
||||
$a->strings["Keywords used in directory listings"] = "Parole chiavi mostrate nell'elenco dei canali";
|
||||
$a->strings["Example: fishing photography software"] = "Per esempio: pesca fotografia programmazione";
|
||||
$a->strings["Used in directory listings"] = "Visibile negli elenchi pubblici di canali";
|
||||
$a->strings["Tell us about yourself..."] = "Raccontaci di te...";
|
||||
$a->strings["Hobbies/Interests"] = "Hobby/interessi";
|
||||
$a->strings["Contact information and Social Networks"] = "Contatti personali e i tuoi social network";
|
||||
$a->strings["My other channels"] = "I miei altri canali";
|
||||
$a->strings["Musical interests"] = "Interessi musicali";
|
||||
$a->strings["Books, literature"] = "Libri, letteratura";
|
||||
$a->strings["Television"] = "Televisione";
|
||||
$a->strings["Film/dance/culture/entertainment"] = "Film/danza/cultura/intrattenimento";
|
||||
$a->strings["Love/romance"] = "Amore";
|
||||
$a->strings["Work/employment"] = "Lavoro/impiego";
|
||||
$a->strings["School/education"] = "Scuola/educazione";
|
||||
$a->strings["This is your default profile."] = "Questo è il tuo profilo predefinito.";
|
||||
$a->strings["Age: "] = "Età:";
|
||||
$a->strings["Edit/Manage Profiles"] = "Modifica/gestisci i profili";
|
||||
$a->strings["Add profile things"] = "Aggiungi oggetti al profilo";
|
||||
$a->strings["Include desirable objects in your profile"] = "Aggiungi oggetti interessanti al tuo profilo";
|
||||
$a->strings["Film/Dance/Culture/Entertainment"] = "Film, danza, cultura, intrattenimento";
|
||||
$a->strings["Hobbies/Interests"] = "Hobby/interessi";
|
||||
$a->strings["Love/Romance"] = "Amore";
|
||||
$a->strings["School/Education"] = "Scuola/educazione";
|
||||
$a->strings["Contact information and social networks"] = "Contatti e social network";
|
||||
$a->strings["My other channels"] = "I miei altri canali";
|
||||
$a->strings["Create New"] = "Crea nuovo";
|
||||
$a->strings["Invalid profile identifier."] = "Indentificativo del profilo non valido.";
|
||||
$a->strings["Profile Visibility Editor"] = "Modifica la visibilità del profilo";
|
||||
$a->strings["Click on a contact to add or remove."] = "Clicca su un contatto per aggiungerlo o rimuoverlo.";
|
||||
|
@ -121,8 +121,10 @@ ACL.prototype.on_button_show = function(event) {
|
||||
event.stopImmediatePropagation();
|
||||
event.stopPropagation();
|
||||
|
||||
that.set_allow($(this).parent().attr('id'));
|
||||
that.on_submit();
|
||||
if(!$(this).parent().hasClass("grouphide")) {
|
||||
that.set_allow($(this).parent().attr('id'));
|
||||
that.on_submit();
|
||||
}
|
||||
|
||||
return false;
|
||||
};
|
||||
@ -231,25 +233,29 @@ ACL.prototype.update_view = function() {
|
||||
}
|
||||
$(that.group_uids[id]).each(function(i, v) {
|
||||
if(uclass == "grouphide")
|
||||
$("#c"+v).removeClass("groupshow");
|
||||
// we need attr selection here because the id can include an @ (diaspora/friendica xchans)
|
||||
$('[id="c' + v + '"]').removeClass("groupshow");
|
||||
if(uclass !== "") {
|
||||
var cls = $("#c"+v).attr('class');
|
||||
var cls = $('[id="c' + v + '"]').attr('class');
|
||||
if( cls === undefined)
|
||||
return true;
|
||||
var hiding = cls.indexOf('grouphide');
|
||||
if(hiding == -1)
|
||||
$("#c"+v).addClass(uclass);
|
||||
$('[id="c' + v + '"]').addClass(uclass);
|
||||
}
|
||||
});
|
||||
break;
|
||||
case "c":
|
||||
if (that.allow_cid.indexOf(id)>=0){
|
||||
btshow.removeClass("btn-default").addClass("btn-success");
|
||||
bthide.removeClass("btn-danger").addClass("btn-default");
|
||||
if(!$(this).hasClass("grouphide") ) {
|
||||
btshow.removeClass("btn-default").addClass("btn-success");
|
||||
bthide.removeClass("btn-danger").addClass("btn-default");
|
||||
}
|
||||
}
|
||||
if (that.deny_cid.indexOf(id)>=0){
|
||||
btshow.removeClass("btn-success").addClass("btn-default");
|
||||
bthide.removeClass("btn-default").addClass("btn-danger");
|
||||
$(this).removeClass("groupshow");
|
||||
}
|
||||
}
|
||||
});
|
||||
@ -277,7 +283,7 @@ ACL.prototype.populate = function(data) {
|
||||
$(data.items).each(function(){
|
||||
html = "<div class='acl-list-item {4} {7} {5}' title='{6}' id='{2}{3}'>"+that.item_tpl+"</div>";
|
||||
html = html.format(this.photo, this.name, this.type, this.xid, '', this.self, this.link, this.taggable);
|
||||
if (this.uids !== undefined) that.group_uids[this.id] = this.uids;
|
||||
if (this.uids !== undefined) that.group_uids[this.xid] = this.uids;
|
||||
//console.log(html);
|
||||
that.list_content.append(html);
|
||||
});
|
||||
@ -287,4 +293,4 @@ ACL.prototype.populate = function(data) {
|
||||
$(el).removeAttr("data-src");
|
||||
});
|
||||
that.update_view();
|
||||
};
|
||||
};
|
||||
|
1024
view/nl/hmessages.po
1024
view/nl/hmessages.po
File diff suppressed because it is too large
Load Diff
@ -398,42 +398,6 @@ $a->strings["__ctx:noun__ Like"] = array(
|
||||
0 => "vindt dit leuk",
|
||||
1 => "vinden dit leuk",
|
||||
);
|
||||
$a->strings["Miscellaneous"] = "Diversen";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD";
|
||||
$a->strings["Required"] = "Vereist";
|
||||
$a->strings["never"] = "nooit";
|
||||
$a->strings["less than a second ago"] = "minder dan een seconde geleden";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "jaar",
|
||||
1 => "jaren",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "maand",
|
||||
1 => "maanden",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "week",
|
||||
1 => "weken",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "dag",
|
||||
1 => "dagen",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "uur",
|
||||
1 => "uren",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuut",
|
||||
1 => "minuten",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "seconde",
|
||||
1 => "seconden",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
|
||||
$a->strings["Invalid data packet"] = "Datapakket ongeldig";
|
||||
$a->strings["Unable to verify channel signature"] = "Kanaalkenmerk kon niet worden geverifieerd. ";
|
||||
$a->strings["Unable to verify site signature for %s"] = "Hubkenmerk voor %s kon niet worden geverifieerd";
|
||||
@ -614,6 +578,7 @@ $a->strings["For Administrators"] = "Voor beheerders";
|
||||
$a->strings["For Developers"] = "Voor ontwikkelaars";
|
||||
$a->strings["Site"] = "Hub-instellingen";
|
||||
$a->strings["Accounts"] = "Accounts";
|
||||
$a->strings["Member registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten";
|
||||
$a->strings["Channels"] = "Kanalen";
|
||||
$a->strings["Security"] = "Beveiliging";
|
||||
$a->strings["Plugins"] = "Plugins";
|
||||
@ -623,7 +588,6 @@ $a->strings["Profile Fields"] = "Profielvelden";
|
||||
$a->strings["DB updates"] = "Database-updates";
|
||||
$a->strings["Logs"] = "Logboeken";
|
||||
$a->strings["Plugin Features"] = "Plugin-opties";
|
||||
$a->strings["User registrations waiting for confirmation"] = "Accounts die op goedkeuring wachten";
|
||||
$a->strings["View Photo"] = "Foto weergeven";
|
||||
$a->strings["Edit Album"] = "Album bewerken";
|
||||
$a->strings["prev"] = "vorige";
|
||||
@ -731,61 +695,44 @@ $a->strings["Name:"] = "Naam:";
|
||||
$a->strings["Photo:"] = "Foto:";
|
||||
$a->strings["Please visit %s to approve or reject the suggestion."] = "Bezoek %s om het voorstel te accepteren of af te wijzen.";
|
||||
$a->strings["[Hubzilla:Notify]"] = "[Hubzilla:Notificatie]";
|
||||
$a->strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
|
||||
$a->strings["Empty name"] = "Ontbrekende naam";
|
||||
$a->strings["Name too long"] = "Naam te lang";
|
||||
$a->strings["No account identifier"] = "Geen account-identificator";
|
||||
$a->strings["Nickname is required."] = "Bijnaam is verplicht";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
|
||||
$a->strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
|
||||
$a->strings["Default Profile"] = "Standaardprofiel";
|
||||
$a->strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
|
||||
$a->strings["Requested profile is not available."] = "Opgevraagd profiel is niet beschikbaar";
|
||||
$a->strings["Change profile photo"] = "Profielfoto veranderen";
|
||||
$a->strings["Create New Profile"] = "Nieuw profiel aanmaken";
|
||||
$a->strings["Profile Image"] = "Profielfoto";
|
||||
$a->strings["Visible to everybody"] = "Voor iedereen zichtbaar";
|
||||
$a->strings["Edit visibility"] = "Zichtbaarheid bewerken";
|
||||
$a->strings["Gender:"] = "Geslacht:";
|
||||
$a->strings["Status:"] = "Status:";
|
||||
$a->strings["Homepage:"] = "Homepagina:";
|
||||
$a->strings["Online Now"] = "Nu online";
|
||||
$a->strings["g A l F d"] = "G:i, l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[vandaag]";
|
||||
$a->strings["Birthday Reminders"] = "Verjaardagsherinneringen";
|
||||
$a->strings["Birthdays this week:"] = "Verjaardagen deze week:";
|
||||
$a->strings["[No description]"] = "[Geen omschrijving]";
|
||||
$a->strings["Event Reminders"] = "Herinneringen";
|
||||
$a->strings["Events this week:"] = "Gebeurtenissen deze week:";
|
||||
$a->strings["Full Name:"] = "Volledige naam:";
|
||||
$a->strings["Like this channel"] = "Vind dit kanaal leuk";
|
||||
$a->strings["j F, Y"] = "F j Y";
|
||||
$a->strings["j F"] = "F j";
|
||||
$a->strings["Birthday:"] = "Geboortedatum:";
|
||||
$a->strings["Age:"] = "Leeftijd:";
|
||||
$a->strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Seksuele voorkeur:";
|
||||
$a->strings["Hometown:"] = "Oorspronkelijk uit:";
|
||||
$a->strings["Tags:"] = "Tags:";
|
||||
$a->strings["Political Views:"] = "Politieke overtuigingen:";
|
||||
$a->strings["Religion:"] = "Religie:";
|
||||
$a->strings["About:"] = "Over:";
|
||||
$a->strings["Hobbies/Interests:"] = "Hobby's/interesses:";
|
||||
$a->strings["Likes:"] = "Houdt van:";
|
||||
$a->strings["Dislikes:"] = "Houdt niet van:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
|
||||
$a->strings["My other channels:"] = "Mijn andere kanalen";
|
||||
$a->strings["Musical interests:"] = "Muzikale interesses:";
|
||||
$a->strings["Books, literature:"] = "Boeken, literatuur:";
|
||||
$a->strings["Television:"] = "Televisie:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
|
||||
$a->strings["Love/Romance:"] = "Liefde/romantiek:";
|
||||
$a->strings["Work/employment:"] = "Werk/beroep:";
|
||||
$a->strings["School/education:"] = "School/opleiding:";
|
||||
$a->strings["Like this thing"] = "Vind dit ding leuk";
|
||||
$a->strings["cover photo"] = "omslagfoto";
|
||||
$a->strings["Miscellaneous"] = "Diversen";
|
||||
$a->strings["Birthday"] = "Verjaardag of geboortedatum";
|
||||
$a->strings["Age: "] = "Leeftijd:";
|
||||
$a->strings["YYYY-MM-DD or MM-DD"] = "JJJJ-MM-DD of MM-DD";
|
||||
$a->strings["Required"] = "Vereist";
|
||||
$a->strings["never"] = "nooit";
|
||||
$a->strings["less than a second ago"] = "minder dan een seconde geleden";
|
||||
$a->strings["__ctx:e.g. 22 hours ago, 1 minute ago__ %1\$d %2\$s ago"] = "%1\$d %2\$s geleden";
|
||||
$a->strings["__ctx:relative_date__ year"] = array(
|
||||
0 => "jaar",
|
||||
1 => "jaren",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ month"] = array(
|
||||
0 => "maand",
|
||||
1 => "maanden",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ week"] = array(
|
||||
0 => "week",
|
||||
1 => "weken",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ day"] = array(
|
||||
0 => "dag",
|
||||
1 => "dagen",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ hour"] = array(
|
||||
0 => "uur",
|
||||
1 => "uren",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ minute"] = array(
|
||||
0 => "minuut",
|
||||
1 => "minuten",
|
||||
);
|
||||
$a->strings["__ctx:relative_date__ second"] = array(
|
||||
0 => "seconde",
|
||||
1 => "seconden",
|
||||
);
|
||||
$a->strings["%1\$s's birthday"] = "Verjaardag van %1\$s";
|
||||
$a->strings["Happy Birthday %1\$s"] = "Gefeliciteerd met je verjaardag %1\$s";
|
||||
$a->strings["Embedded content"] = "Ingesloten (embedded) inhoud";
|
||||
$a->strings["Embedding disabled"] = "Insluiten (embedding) uitgeschakeld";
|
||||
$a->strings["channel"] = "kanaal";
|
||||
@ -1024,6 +971,61 @@ $a->strings["male"] = "man";
|
||||
$a->strings["%1\$s updated his %2\$s"] = "%1\$s heeft zijn %2\$s bijgewerkt";
|
||||
$a->strings["%1\$s updated their %2\$s"] = "De %2\$s van %1\$s is bijgewerkt";
|
||||
$a->strings["profile photo"] = "profielfoto";
|
||||
$a->strings["Unable to obtain identity information from database"] = "Niet in staat om identiteitsinformatie uit de database te verkrijgen";
|
||||
$a->strings["Empty name"] = "Ontbrekende naam";
|
||||
$a->strings["Name too long"] = "Naam te lang";
|
||||
$a->strings["No account identifier"] = "Geen account-identificator";
|
||||
$a->strings["Nickname is required."] = "Bijnaam is verplicht";
|
||||
$a->strings["Reserved nickname. Please choose another."] = "Deze naam is gereserveerd. Kies een andere.";
|
||||
$a->strings["Nickname has unsupported characters or is already being used on this site."] = "Deze naam heeft niet ondersteunde karakters of is al op deze hub in gebruik.";
|
||||
$a->strings["Unable to retrieve created identity"] = "Niet in staat om aangemaakte identiteit te vinden";
|
||||
$a->strings["Default Profile"] = "Standaardprofiel";
|
||||
$a->strings["Requested channel is not available."] = "Opgevraagd kanaal is niet beschikbaar.";
|
||||
$a->strings["Requested profile is not available."] = "Opgevraagd profiel is niet beschikbaar";
|
||||
$a->strings["Change profile photo"] = "Profielfoto veranderen";
|
||||
$a->strings["Create New Profile"] = "Nieuw profiel aanmaken";
|
||||
$a->strings["Profile Image"] = "Profielfoto";
|
||||
$a->strings["Visible to everybody"] = "Voor iedereen zichtbaar";
|
||||
$a->strings["Edit visibility"] = "Zichtbaarheid bewerken";
|
||||
$a->strings["Gender:"] = "Geslacht:";
|
||||
$a->strings["Status:"] = "Status:";
|
||||
$a->strings["Homepage:"] = "Homepagina:";
|
||||
$a->strings["Online Now"] = "Nu online";
|
||||
$a->strings["g A l F d"] = "G:i, l d F";
|
||||
$a->strings["F d"] = "d F";
|
||||
$a->strings["[today]"] = "[vandaag]";
|
||||
$a->strings["Birthday Reminders"] = "Verjaardagsherinneringen";
|
||||
$a->strings["Birthdays this week:"] = "Verjaardagen deze week:";
|
||||
$a->strings["[No description]"] = "[Geen omschrijving]";
|
||||
$a->strings["Event Reminders"] = "Herinneringen";
|
||||
$a->strings["Events this week:"] = "Gebeurtenissen deze week:";
|
||||
$a->strings["Full Name:"] = "Volledige naam:";
|
||||
$a->strings["Like this channel"] = "Vind dit kanaal leuk";
|
||||
$a->strings["j F, Y"] = "F j Y";
|
||||
$a->strings["j F"] = "F j";
|
||||
$a->strings["Birthday:"] = "Geboortedatum:";
|
||||
$a->strings["Age:"] = "Leeftijd:";
|
||||
$a->strings["for %1\$d %2\$s"] = "voor %1\$d %2\$s";
|
||||
$a->strings["Sexual Preference:"] = "Seksuele voorkeur:";
|
||||
$a->strings["Hometown:"] = "Oorspronkelijk uit:";
|
||||
$a->strings["Tags:"] = "Tags:";
|
||||
$a->strings["Political Views:"] = "Politieke overtuigingen:";
|
||||
$a->strings["Religion:"] = "Religie:";
|
||||
$a->strings["About:"] = "Over:";
|
||||
$a->strings["Hobbies/Interests:"] = "Hobby's/interesses:";
|
||||
$a->strings["Likes:"] = "Houdt van:";
|
||||
$a->strings["Dislikes:"] = "Houdt niet van:";
|
||||
$a->strings["Contact information and Social Networks:"] = "Contactinformatie en sociale netwerken:";
|
||||
$a->strings["My other channels:"] = "Mijn andere kanalen";
|
||||
$a->strings["Musical interests:"] = "Muzikale interesses:";
|
||||
$a->strings["Books, literature:"] = "Boeken, literatuur:";
|
||||
$a->strings["Television:"] = "Televisie:";
|
||||
$a->strings["Film/dance/culture/entertainment:"] = "Films/dansen/cultuur/vermaak:";
|
||||
$a->strings["Love/Romance:"] = "Liefde/romantiek:";
|
||||
$a->strings["Work/employment:"] = "Werk/beroep:";
|
||||
$a->strings["School/education:"] = "School/opleiding:";
|
||||
$a->strings["Like this thing"] = "Vind dit ding leuk";
|
||||
$a->strings["cover photo"] = "omslagfoto";
|
||||
$a->strings["Some blurb about what to do when you're new here"] = "Welkom op \$Projectname. Klik op de tab ontdekken of klik rechtsboven op de <a href=\"directory\">kanalengids</a>, om kanalen te vinden. Rechtsboven vind je ook <a href=\"directory\">apps</a>, waar je vrijwel alle functies van \$Projectname kunt vinden. Voor <a href=\"directory\">hulp</a> met \$Projectname klik je op het vraagteken.";
|
||||
$a->strings["network"] = "netwerk";
|
||||
$a->strings["RSS"] = "RSS";
|
||||
@ -1800,50 +1802,48 @@ $a->strings["Sexual Preference"] = "Seksuele voorkeur";
|
||||
$a->strings["Homepage"] = "Homepage";
|
||||
$a->strings["Interests"] = "Interesses";
|
||||
$a->strings["Profile updated."] = "Profiel bijgewerkt";
|
||||
$a->strings["Hide your contact/friend list from viewers of this profile?"] = "Laat de lijst met connecties niet aan bezoekers van dit profiel zien.";
|
||||
$a->strings["Hide your connections list from viewers of this profile"] = "Laat de lijst met connecties niet aan bezoekers van dit profiel zien.";
|
||||
$a->strings["Edit Profile Details"] = "Profiel bewerken";
|
||||
$a->strings["View this profile"] = "Profiel weergeven";
|
||||
$a->strings["Change Cover Photo"] = "Omslagfoto wijzigen";
|
||||
$a->strings["Change Profile Photo"] = "Profielfoto wijzigen";
|
||||
$a->strings["Change cover photo"] = "Omslagfoto wijzigen";
|
||||
$a->strings["Create a new profile using these settings"] = "Een nieuw profiel aanmaken met dit profiel als basis";
|
||||
$a->strings["Clone this profile"] = "Dit profiel klonen";
|
||||
$a->strings["Delete this profile"] = "Dit profiel verwijderen";
|
||||
$a->strings["Add profile things"] = "Dingen aan je profiel toevoegen";
|
||||
$a->strings["Relation"] = "Relatie";
|
||||
$a->strings["Import profile from file"] = "Profiel vanuit bestand importeren";
|
||||
$a->strings["Export profile to file"] = "Profiel naar bestand exporteren";
|
||||
$a->strings["Profile Name"] = "Profielnaam";
|
||||
$a->strings["Your Full Name"] = "Jouw volledige naam";
|
||||
$a->strings["Your gender"] = "Jouw geslacht";
|
||||
$a->strings["Marital status"] = "Burgerlijke staat";
|
||||
$a->strings["Sexual preference"] = "Seksuele voorkeur";
|
||||
$a->strings["Profile name"] = "Profielnaam";
|
||||
$a->strings["This is your default profile."] = "Dit is jouw standaardprofiel";
|
||||
$a->strings["Your full name"] = "Jouw volledige naam";
|
||||
$a->strings["Title/Description"] = "Titel/omschrijving";
|
||||
$a->strings["Your Gender"] = "Jouw geslacht";
|
||||
$a->strings["Birthday"] = "Verjaardag of geboortedatum";
|
||||
$a->strings["Street Address"] = "Straat en huisnummer";
|
||||
$a->strings["Street address"] = "Straat en huisnummer";
|
||||
$a->strings["Locality/City"] = "Woonplaats";
|
||||
$a->strings["Postal/Zip Code"] = "Postcode";
|
||||
$a->strings["Country"] = "Land";
|
||||
$a->strings["Region/State"] = "Provincie/gewest/deelstaat";
|
||||
$a->strings["<span class=\"heart\">♥</span> Marital Status"] = "<span class=\"heart\">♥</span> Huwelijkse staat";
|
||||
$a->strings["Postal/Zip code"] = "Postcode";
|
||||
$a->strings["Country"] = "Land";
|
||||
$a->strings["Who (if applicable)"] = "Wie (wanneer van toepassing)";
|
||||
$a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Voorbeelden: petra123, Petra Jansen, petra@voorbeeld.nl";
|
||||
$a->strings["Since [date]"] = "Sinds [datum]";
|
||||
$a->strings["Since (date)"] = "Sinds (datum)";
|
||||
$a->strings["Tell us about yourself"] = "Vertel ons iets over jezelf";
|
||||
$a->strings["Hometown"] = "Oorspronkelijk uit";
|
||||
$a->strings["Religious Views"] = "Religieuze overtuigingen";
|
||||
$a->strings["Political views"] = "Politieke overtuigingen";
|
||||
$a->strings["Religious views"] = "Religieuze overtuigingen";
|
||||
$a->strings["Keywords used in directory listings"] = "Trefwoorden voor in de kanalengids";
|
||||
$a->strings["Example: fishing photography software"] = "Voorbeeld: muziek, fotografie, software";
|
||||
$a->strings["Used in directory listings"] = "Wordt in de kanalengids gebruikt";
|
||||
$a->strings["Tell us about yourself..."] = "Vertel ons iets over jezelf...";
|
||||
$a->strings["Hobbies/Interests"] = "Hobby's/interesses";
|
||||
$a->strings["Contact information and Social Networks"] = "Contactinformatie en sociale netwerken";
|
||||
$a->strings["My other channels"] = "Mijn andere kanalen";
|
||||
$a->strings["Musical interests"] = "Muzikale interesses";
|
||||
$a->strings["Books, literature"] = "Boeken/literatuur";
|
||||
$a->strings["Television"] = "Televisie";
|
||||
$a->strings["Film/dance/culture/entertainment"] = "Film/dans/cultuur/entertainment";
|
||||
$a->strings["Love/romance"] = "Liefde/romantiek";
|
||||
$a->strings["Work/employment"] = "Werk/arbeid";
|
||||
$a->strings["School/education"] = "School/onderwijs";
|
||||
$a->strings["This is your default profile."] = "Dit is jouw standaardprofiel";
|
||||
$a->strings["Age: "] = "Leeftijd:";
|
||||
$a->strings["Edit/Manage Profiles"] = "Profielen bewerken/beheren";
|
||||
$a->strings["Add profile things"] = "Dingen aan je profiel toevoegen";
|
||||
$a->strings["Include desirable objects in your profile"] = "Voeg door jou gewenste dingen aan jouw profiel toe";
|
||||
$a->strings["Film/Dance/Culture/Entertainment"] = "Film/dans/cultuur/entertainment";
|
||||
$a->strings["Hobbies/Interests"] = "Hobby's/interesses";
|
||||
$a->strings["Love/Romance"] = "Liefde/romantiek";
|
||||
$a->strings["School/Education"] = "School/opleiding";
|
||||
$a->strings["Contact information and social networks"] = "Contactinformatie en sociale netwerken";
|
||||
$a->strings["My other channels"] = "Mijn andere kanalen";
|
||||
$a->strings["Create New"] = "Nieuwe aanmaken";
|
||||
$a->strings["Invalid profile identifier."] = "Ongeldige profiel-identificator";
|
||||
$a->strings["Profile Visibility Editor"] = "Zichtbaarheid profiel ";
|
||||
$a->strings["Click on a contact to add or remove."] = "Klik op een connectie om deze toe te voegen of te verwijderen";
|
||||
|
@ -915,7 +915,15 @@ a.rconnect:hover, a.rateme:hover, div.rateme:hover {
|
||||
border-radius: $radiuspx;
|
||||
}
|
||||
|
||||
.acl-list-item img{
|
||||
.acl-list-item.grouphide {
|
||||
border: 1px solid red;
|
||||
}
|
||||
|
||||
.acl-list-item.groupshow {
|
||||
border: 1px solid green;
|
||||
}
|
||||
|
||||
.acl-list-item img {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
float: left;
|
||||
|
@ -15,14 +15,11 @@
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
{{/if}}
|
||||
|
||||
<div id="acl-wrapper">
|
||||
<button id="acl-showall" class="btn btn-block btn-default"><i class="icon-globe"></i> {{$showall}}</button>
|
||||
<input type="text" id="acl-search" placeholder="">
|
||||
|
||||
<div id="acl-list">
|
||||
<div id="acl-list-content"></div>
|
||||
|
||||
</div>
|
||||
<span id="acl-fields"></span>
|
||||
</div>
|
||||
|
@ -5,7 +5,7 @@
|
||||
$("nav").bind('nav-update', function(e,data){
|
||||
var elm = $('#pending-update');
|
||||
var register = $(data).find('register').text();
|
||||
if (register=="0") { reigster=""; elm.hide();} else { elm.show(); }
|
||||
if (register=="0") { register=""; elm.hide();} else { elm.show(); }
|
||||
elm.html(register);
|
||||
});
|
||||
});
|
||||
@ -13,16 +13,9 @@
|
||||
<div class="widget">
|
||||
<h3>{{$admtxt}}</h3>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li><a href='{{$admin.site.0}}'>{{$admin.site.1}}</a></li>
|
||||
<li><a href='{{$admin.users.0}}'>{{$admin.users.1}}<span id='pending-update' title='{{$h_pending}}'></span></a></li>
|
||||
<li><a href='{{$admin.channels.0}}'>{{$admin.channels.1}}</a></li>
|
||||
<li><a href='{{$admin.security.0}}'>{{$admin.security.1}}</a></li>
|
||||
<li><a href='{{$admin.queue.0}}'>{{$admin.queue.1}}</a></li>
|
||||
<li><a href='{{$admin.plugins.0}}'>{{$admin.plugins.1}}</a></li>
|
||||
<li><a href='{{$admin.themes.0}}'>{{$admin.themes.1}}</a></li>
|
||||
<li><a href='{{$admin.features.0}}'>{{$admin.features.1}}</a></li>
|
||||
<li><a href='{{$admin.profs.0}}'>{{$admin.profs.1}}</a></li>
|
||||
<li><a href='{{$admin.dbsync.0}}'>{{$admin.dbsync.1}}</a></li>
|
||||
{{foreach $admin as $link}}
|
||||
<li><a href='{{$link.0}}'>{{$link.1}}{{if $link.3}}<span id='{{$link.3}}' title='{{$link.4}}'></span>{{/if}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
@ -34,11 +27,11 @@
|
||||
{{/if}}
|
||||
|
||||
|
||||
{{if $admin.plugins_admin}}
|
||||
{{if $plugins}}
|
||||
<div class="widget">
|
||||
<h3>{{$plugadmtxt}}</h3>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
{{foreach $admin.plugins_admin as $l}}
|
||||
{{foreach $plugins as $l}}
|
||||
<li><a href='{{$l.0}}'>{{$l.1}}</a></li>
|
||||
{{/foreach}}
|
||||
</ul>
|
||||
@ -48,6 +41,6 @@
|
||||
<div class="widget">
|
||||
<h3>{{$logtxt}}</h3>
|
||||
<ul class="nav nav-pills nav-stacked">
|
||||
<li><a href='{{$admin.logs.0}}'>{{$admin.logs.1}}</a></li>
|
||||
<li><a href='{{$logs.0}}'>{{$logs.1}}</a></li>
|
||||
</ul>
|
||||
</div>
|
||||
|
@ -1,12 +1,53 @@
|
||||
<div class='channel-selection {{if $selected == $channel.channel_id}}selected-channel{{/if}}'>
|
||||
{{if $channel.default_links}}
|
||||
{{if $channel.default}}
|
||||
<div class="channel-selection-default default"><i class="icon-check"></i> {{$msg_default}}</div>
|
||||
{{else}}
|
||||
<div class="channel-selection-default"><a href="manage/{{$channel.channel_id}}/default"><i class="icon-check-empty" title="{{$msg_make_default}}"></i></a></div>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
<a href="{{$channel.link}}" class="channel-selection-photo-link" title="{{$channel.channel_name}}"><img class="channel-photo" src="{{$channel.xchan_photo_m}}" alt="{{$channel.channel_name}}" /></a>
|
||||
<div class="channels-notifications-wrapper">{{if $channel.delegate}}{{else}}<a href='manage/{{$channel.channel_id}}/message' style="{{if $channel.mail != 0}}color:#c60032;{{/if}}" title='{{$channel.mail|string_format:$mail_format}}'><i class="icon-envelope"></i> {{$channel.mail}}</a> <a href='manage/{{$channel.channel_id}}/connections/ifpending' style="{{if $channel.intros != 0}}color:#c60032;{{/if}}" title='{{$channel.intros|string_format:$intros_format}}'><i class="icon-user"></i> {{$channel.intros}}</a>{{/if}}</div>
|
||||
<a href="{{$channel.link}}" class="channel-selection-name-link" title="{{$channel.channel_name}}"><div class="channel-name">{{$channel.channel_name}}</div></a>
|
||||
<div class="section-subtitle-wrapper">
|
||||
<div class="pull-right">
|
||||
{{if $channel.default_links}}
|
||||
{{if $channel.default}}
|
||||
<div>
|
||||
<i class="icon-check"></i> {{$msg_default}}
|
||||
</div>
|
||||
{{else}}
|
||||
<a href="manage/{{$channel.channel_id}}/default" class="make-default-link">
|
||||
<i class="icon-check-empty"></i> {{$msg_make_default}}
|
||||
</a>
|
||||
{{/if}}
|
||||
{{/if}}
|
||||
{{if $channel.delegate}}
|
||||
{{$delegated_desc}}
|
||||
{{/if}}
|
||||
</div>
|
||||
<h3>
|
||||
{{if $selected == $channel.channel_id}}
|
||||
<i class="selected-channel icon-circle" title="{{$msg_selected}}"></i>
|
||||
{{/if}}
|
||||
{{if $channel.delegate}}
|
||||
<i class="icon-circle-arrow-right" title="{{$delegated_desc}}"></i>
|
||||
{{/if}}
|
||||
{{if $selected != $channel.channel_id}}<a href="{{$channel.link}}" title="{{$channel.channel_name}}">{{/if}}
|
||||
{{$channel.channel_name}}
|
||||
{{if $selected != $channel.channel_id}}</a>{{/if}}
|
||||
</h3>
|
||||
<div class="clear"></div>
|
||||
</div>
|
||||
<div class="section-content-wrapper">
|
||||
<div class="channel-photo-wrapper">
|
||||
{{if $selected != $channel.channel_id}}<a href="{{$channel.link}}" class="channel-selection-photo-link" title="{{$channel.channel_name}}">{{/if}}
|
||||
<img class="channel-photo" src="{{$channel.xchan_photo_m}}" alt="{{$channel.channel_name}}" />
|
||||
{{if $selected != $channel.channel_id}}</a>{{/if}}
|
||||
</div>
|
||||
<div class="channel-notifications-wrapper">
|
||||
{{if !$channel.delegate}}
|
||||
<div class="channel-notification">
|
||||
<i class="icon-envelope{{if $channel.mail != 0}} new-notification{{/if}}"></i>
|
||||
{{if $channel.mail != 0}}<a href="manage/{{$channel.channel_id}}/mail/combined">{{/if}}{{$channel.mail|string_format:$mail_format}}{{if $channel.mail != 0}}</a>{{/if}}
|
||||
</div>
|
||||
<div class="channel-notification">
|
||||
<i class="icon-user{{if $channel.intros != 0}} new-notification{{/if}}"></i>
|
||||
{{if $channel.intros != 0}}<a href='manage/{{$channel.channel_id}}/connections/ifpending'>{{/if}}{{$channel.intros|string_format:$intros_format}}{{if $channel.intros != 0}}</a>{{/if}}
|
||||
</div>
|
||||
<div class="channel-link">
|
||||
<i class="icon-map-marker"></i>
|
||||
<a href="manage/{{$channel.channel_id}}/locs">{{$locs}}</a>
|
||||
</div>
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,38 +1,24 @@
|
||||
<div class="generic-content-wrapper-styled">
|
||||
<h3>{{$header}}</h3>
|
||||
|
||||
{{if $links}}
|
||||
{{foreach $links as $l}}
|
||||
<a class="channels-links" href="{{$l.0}}" title="{{$l.1}}">{{$l.2}}</a>
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
<div class="channels-break"></div>
|
||||
|
||||
{{if $channel_usage_message}}
|
||||
<div id="channel-usage-message" class="usage-message">
|
||||
{{$channel_usage_message}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div id="channels-desc" class="descriptive-text">{{$desc}}</div>
|
||||
|
||||
<div id="all-channels">
|
||||
{{foreach $all_channels as $chn}}
|
||||
{{include file="channel.tpl" channel=$chn}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
<div class="channels-end all"></div>
|
||||
|
||||
{{if $delegates}}
|
||||
<hr />
|
||||
<h3>{{$delegate_header}}</h3>
|
||||
<div id="delegated-channels">
|
||||
{{foreach $delegates as $chn}}
|
||||
{{include file="channel.tpl" channel=$chn}}
|
||||
{{/foreach}}
|
||||
</div>
|
||||
|
||||
<div class="channels-end all"></div>
|
||||
{{/if}}
|
||||
|
||||
<div class="generic-content-wrapper">
|
||||
<div class="section-title-wrapper">
|
||||
<a class="btn btn-success btn-xs pull-right" href="{{$create.0}}" title="{{$create.1}}"><i class="icon-plus-sign"></i> {{$create.2}}</a>
|
||||
<h2>{{$header}}</h2>
|
||||
</div>
|
||||
<div class="section-content-wrapper-np">
|
||||
{{if $channel_usage_message}}
|
||||
<div id="channel-usage-message" class="section-content-warning-wrapper">
|
||||
{{$channel_usage_message}}
|
||||
</div>
|
||||
{{/if}}
|
||||
<div id="channels-desc" class="section-content-info-wrapper">
|
||||
{{$desc}}
|
||||
</div>
|
||||
{{foreach $all_channels as $chn}}
|
||||
{{include file="channel.tpl" channel=$chn}}
|
||||
{{/foreach}}
|
||||
{{if $delegates}}
|
||||
{{foreach $delegates as $chn}}
|
||||
{{include file="channel.tpl" channel=$chn}}
|
||||
{{/foreach}}
|
||||
{{/if}}
|
||||
</div>
|
||||
</div>
|
||||
|
@ -1,9 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<me:env xmlns:me="http://salmon-protocol.org/ns/magic-env">
|
||||
<me:data type="application/atom+xml">
|
||||
{{$data}}
|
||||
</me:data>
|
||||
<me:encoding>{{$encoding}}</me:encoding>
|
||||
<me:alg>{{$algorithm}}</me:alg>
|
||||
<me:sig key_id="{{$keyhash}}">{{$signature}}</me:sig>
|
||||
</me:env>
|
@ -2,7 +2,10 @@
|
||||
<XRD xmlns="http://docs.oasis-open.org/ns/xri/xrd-1.0">
|
||||
|
||||
<Subject>{{$accturi}}</Subject>
|
||||
|
||||
{{if $aliases}}{{foreach $aliases as $a}}
|
||||
<Alias>{{$a}}</Alias>
|
||||
{{/foreach}}{{/if}}
|
||||
|
||||
<Link rel="http://schemas.google.com/g/2010#updates-from"
|
||||
type="application/atom+xml"
|
||||
href="{{$atom}}" />
|
||||
|
Reference in New Issue
Block a user