Merge remote-tracking branch 'friendica/master'

This commit is contained in:
Fabio Comuni 2011-12-19 18:04:04 +01:00
commit 2a3f94e452
23 changed files with 276 additions and 59 deletions

View file

@ -9,9 +9,9 @@ require_once('include/nav.php');
require_once('include/cache.php'); require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '2.3.1194' ); define ( 'FRIENDICA_VERSION', '2.3.1199' );
define ( 'DFRN_PROTOCOL_VERSION', '2.22' ); define ( 'DFRN_PROTOCOL_VERSION', '2.22' );
define ( 'DB_UPDATE_VERSION', 1111 ); define ( 'DB_UPDATE_VERSION', 1112 );
define ( 'EOL', "<br />\r\n" ); define ( 'EOL', "<br />\r\n" );
define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' ); define ( 'ATOM_TIME', 'Y-m-d\TH:i:s\Z' );

View file

@ -694,6 +694,7 @@ CREATE TABLE IF NOT EXISTS `gcontact` (
`url` CHAR( 255 ) NOT NULL , `url` CHAR( 255 ) NOT NULL ,
`nurl` CHAR( 255 ) NOT NULL , `nurl` CHAR( 255 ) NOT NULL ,
`photo` CHAR( 255 ) NOT NULL, `photo` CHAR( 255 ) NOT NULL,
`connect` CHAR( 255 ) NOT NULL,
INDEX ( `nurl` ) INDEX ( `nurl` )
) ENGINE = MyISAM DEFAULT CHARSET=utf8; ) ENGINE = MyISAM DEFAULT CHARSET=utf8;

View file

@ -11,6 +11,7 @@ function stripcode_br_cb($s) {
function tryoembed($match){ function tryoembed($match){
$url = ((count($match)==2)?$match[1]:$match[2]); $url = ((count($match)==2)?$match[1]:$match[2]);
logger('tryoembed: $url');
$o = oembed_fetch_url($url); $o = oembed_fetch_url($url);
@ -180,22 +181,18 @@ function bbcode($Text,$preserve_nl = false) {
$Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text); $Text = preg_replace("/\[iframe\](.*?)\[\/iframe\]/ism", '<iframe src="$1" width="425" height="350"><a href="$1">$1</a></iframe>', $Text);
/*if (get_pconfig(local_user(), 'oembed', 'use_for_youtube' )==1){ // Youtube extensions
// use oembed for youtube links $Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);
$Text = preg_replace("/\[youtube\]/",'[embed]',$Text); $Text = preg_replace_callback("/\[youtube\](www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);
$Text = preg_replace("/\[\/youtube\]/",'[/embed]',$Text); $Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text);
} else {*/
// Youtube extensions
$Text = preg_replace_callback("/\[youtube\](https?:\/\/www.youtube.com\/watch\?v\=.*?)\[\/youtube\]/ism", 'tryoembed', $Text);
$Text = preg_replace_callback("/\[youtube\](https?:\/\/youtu.be\/.*?)\[\/youtube\]/ism",'tryoembed',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/watch\?v\=(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/www.youtube.com\/embed\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text); $Text = preg_replace("/\[youtube\]https?:\/\/youtu.be\/(.*?)\[\/youtube\]/ism",'[youtube]$1[/youtube]',$Text);
$Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="425" height="350" src="http://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $Text); $Text = preg_replace("/\[youtube\]([A-Za-z0-9\-_=]+)(.*?)\[\/youtube\]/ism", '<iframe width="425" height="350" src="http://www.youtube.com/embed/$1" frameborder="0" ></iframe>', $Text);
//}
$Text = preg_replace_callback("/\[vimeo\](https?:\/\/player.vimeo.com\/video\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); $Text = preg_replace_callback("/\[vimeo\](https?:\/\/player.vimeo.com\/video\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text);
$Text = preg_replace_callback("/\[vimeo\](https?:\/\/vimeo.com\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text); $Text = preg_replace_callback("/\[vimeo\](https?:\/\/vimeo.com\/[0-9]+).*?\[\/vimeo\]/ism",'tryoembed',$Text);

View file

@ -40,17 +40,31 @@ function poco_load($cid,$uid = 0,$url = null) {
if(! $url) if(! $url)
return; return;
logger('poco_load: ' . $url, LOGGER_DATA); $url = $url . (($uid) ? '/@me/@all?fields=displayName,urls,photos' : '?fields=displayName,urls,photos') ;
$s = fetch_url($url . '/@me/@all?fields=displayName,urls,photos'); logger('poco_load: ' . $url, LOGGER_DEBUG);
$s = fetch_url($url);
logger('poco_load: returns ' . $s, LOGGER_DATA);
logger('poco_load: return code: ' . $a->get_curl_code(), LOGGER_DEBUG);
if(($a->get_curl_code() > 299) || (! $s)) if(($a->get_curl_code() > 299) || (! $s))
return; return;
$j = json_decode($s); $j = json_decode($s);
logger('poco_load: json: ' . print_r($j,true),LOGGER_DATA);
$total = 0;
foreach($j->entry as $entry) { foreach($j->entry as $entry) {
$total ++;
$profile_url = ''; $profile_url = '';
$profile_photo = ''; $profile_photo = '';
$connect_url = '';
$name = ''; $name = '';
$name = $entry->displayName; $name = $entry->displayName;
@ -58,13 +72,18 @@ function poco_load($cid,$uid = 0,$url = null) {
foreach($entry->urls as $url) { foreach($entry->urls as $url) {
if($url->type == 'profile') { if($url->type == 'profile') {
$profile_url = $url->value; $profile_url = $url->value;
break; continue;
} }
if($url->type == 'webfinger') {
$connect_url = str_replace('acct:' , '', $url->value);
continue;
}
} }
foreach($entry->photos as $photo) { foreach($entry->photos as $photo) {
if($photo->type == 'profile') { if($photo->type == 'profile') {
$profile_photo = $photo->value; $profile_photo = $photo->value;
break; continue;
} }
} }
@ -79,21 +98,23 @@ function poco_load($cid,$uid = 0,$url = null) {
$gcid = $x[0]['id']; $gcid = $x[0]['id'];
if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo) { if($x[0]['name'] != $name || $x[0]['photo'] != $profile_photo) {
q("update gcontact set `name` = '%s', `photo` = '%s' where q("update gcontact set `name` = '%s', `photo` = '%s', `connect` = '%s'
`nurl` = '%s' limit 1", where `nurl` = '%s' limit 1",
dbesc($name), dbesc($name),
dbesc($profile_photo), dbesc($profile_photo),
dbesc($connect_url),
dbesc(normalise_link($profile_url)) dbesc(normalise_link($profile_url))
); );
} }
} }
else { else {
q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`) q("insert into `gcontact` (`name`,`url`,`nurl`,`photo`,`connect`)
values ( '%s', '%s', '%s', '%s') ", values ( '%s', '%s', '%s', '%s','%s') ",
dbesc($name), dbesc($name),
dbesc($profile_url), dbesc($profile_url),
dbesc(normalise_link($profile_url)), dbesc(normalise_link($profile_url)),
dbesc($profile_photo) dbesc($profile_photo),
dbesc($connect_url)
); );
$x = q("select * from `gcontact` where `nurl` = '%s' limit 1", $x = q("select * from `gcontact` where `nurl` = '%s' limit 1",
dbesc(normalise_link($profile_url)) dbesc(normalise_link($profile_url))
@ -127,6 +148,7 @@ function poco_load($cid,$uid = 0,$url = null) {
} }
} }
logger("poco_load: loaded $total entries",LOGGER_DEBUG);
q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY", q("delete from glink where `cid` = %d and `uid` = %d and `updated` < UTC_TIMESTAMP - INTERVAL 2 DAY",
intval($cid), intval($cid),
@ -222,20 +244,22 @@ function suggestion_query($uid, $start = 0, $limit = 40) {
intval($limit) intval($limit)
); );
if(count($r)) if(count($r) && count($r) >= ($limit -1))
return $r; return $r;
$r = q("SELECT gcontact.* from gcontact $r2 = q("SELECT gcontact.* from gcontact
left join glink on glink.gcid = gcontact.id left join glink on glink.gcid = gcontact.id
where uid = 0 and cid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d) where glink.uid = 0 and glink.cid = 0 and not gcontact.nurl in ( select nurl from contact where uid = %d)
and not gcontact.id in ( select gcid from gcign where uid = %d ) and not gcontact.id in ( select gcid from gcign where uid = %d )
order by rand limit %d, %d ", order by rand() limit %d, %d ",
intval($uid),
intval($uid), intval($uid),
intval($start), intval($start),
intval($limit) intval($limit)
); );
return $r;
return array_merge($r,$r2);
} }

View file

@ -635,7 +635,7 @@ function search($s,$id='search-box',$url='/search',$save = false) {
if(! function_exists('valid_email')) { if(! function_exists('valid_email')) {
function valid_email($x){ function valid_email($x){
if(preg_match('/^[_a-zA-Z0-9-]+(\.[_a-zA-Z0-9-]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$x)) if(preg_match('/^[_a-zA-Z0-9\-\+]+(\.[_a-zA-Z0-9\-\+]+)*@[a-zA-Z0-9-]+(\.[a-zA-Z0-9-]+)+$/',$x))
return true; return true;
return false; return false;
}} }}

View file

@ -241,27 +241,34 @@
$('.tread-wrapper',data).each(function() { $('.tread-wrapper',data).each(function() {
var ident = $(this).attr('id'); var ident = $(this).attr('id');
if($('#' + ident).length == 0 && profile_page == 1) { if($('#' + ident).length == 0 && profile_page == 1) {
$('img',this).each(function() { $('img',this).each(function() {
$(this).attr('src',$(this).attr('dst')); $(this).attr('src',$(this).attr('dst'));
}); });
$('#' + prev).after($(this)); $('#' + prev).after($(this));
} }
else {
$('img',this).each(function() {
$(this).attr('src',$(this).attr('dst'));
});
$('#' + ident).replaceWith($(this));
}
prev = ident; prev = ident;
}); });
// reset vars for inserting individual items // reset vars for inserting individual items
prev = 'live-' + src; /* prev = 'live-' + src;
$('.wall-item-outside-wrapper',data).each(function() { $('.wall-item-outside-wrapper',data).each(function() {
var ident = $(this).attr('id'); var ident = $(this).attr('id');
// If not on page 1, only add new conversation items to existing conversations on this page
if($('#' + ident).length == 0 && (profile_page == 1 || prev != 'live-' + src)) { if($('#' + ident).length == 0 && prev != 'live-' + src) {
$('img',this).each(function() { $('img',this).each(function() {
$(this).attr('src',$(this).attr('dst')); $(this).attr('src',$(this).attr('dst'));
}); });
$('#' + prev).after($(this)); $('#' + prev).after($(this));
} }
else { else {
$('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago')); $('#' + ident + ' ' + '.wall-item-ago').replaceWith($(this).find('.wall-item-ago'));
@ -276,7 +283,7 @@
} }
prev = ident; prev = ident;
}); });
*/
$('.like-rotator').hide(); $('.like-rotator').hide();
if(commentBusy) { if(commentBusy) {
commentBusy = false; commentBusy = false;

View file

@ -1,7 +1,7 @@
<?php <?php
/** /**
* Friendika admin * Friendica admin
*/ */
require_once("include/remoteupdate.php"); require_once("include/remoteupdate.php");
@ -277,7 +277,7 @@ function admin_page_site(&$a) {
/* Banner */ /* Banner */
$banner = get_config('system','banner'); $banner = get_config('system','banner');
if($banner == false) if($banner == false)
$banner = '<a href="http://project.friendika.com"><img id="logo-img" src="images/friendika-32.png" alt="logo" /></a><span id="logo-text"><a href="http://project.friendika.com">Friendika</a></span>'; $banner = '<a href="http://friendica.com"><img id="logo-img" src="images/friendica-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendica.com">Friendica</a></span>';
$banner = htmlspecialchars($banner); $banner = htmlspecialchars($banner);
//echo "<pre>"; var_dump($lang_choices); die("</pre>"); //echo "<pre>"; var_dump($lang_choices); die("</pre>");
@ -325,7 +325,7 @@ function admin_page_site(&$a) {
'$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), "Display a Community page showing all recent public postings on this site."), '$no_community_page' => array('no_community_page', t("Show Community Page"), !get_config('system','no_community_page'), "Display a Community page showing all recent public postings on this site."),
'$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disable'), "Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."), '$ostatus_disabled' => array('ostatus_disabled', t("Enable OStatus support"), !get_config('system','ostatus_disable'), "Provide built-in OStatus \x28identi.ca, status.net, etc.\x29 compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."),
'$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), "Provide built-in Diaspora network compatibility."), '$diaspora_enabled' => array('diaspora_enabled', t("Enable Diaspora support"), get_config('system','diaspora_enabled'), "Provide built-in Diaspora network compatibility."),
'$dfrn_only' => array('dfrn_only', t('Only allow Friendika contacts'), get_config('system','dfrn_only'), "All contacts must use Friendika protocols. All other built-in communication protocols disabled."), '$dfrn_only' => array('dfrn_only', t('Only allow Friendica contacts'), get_config('system','dfrn_only'), "All contacts must use Friendica protocols. All other built-in communication protocols disabled."),
'$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), "If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."), '$verifyssl' => array('verifyssl', t("Verify SSL"), get_config('system','verifyssl'), "If you wish, you can turn on strict certificate checking. This will mean you cannot connect (at all) to self-signed SSL sites."),
'$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""), '$proxyuser' => array('proxyuser', t("Proxy user"), get_config('system','proxyuser'), ""),
'$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""), '$proxy' => array('proxy', t("Proxy URL"), get_config('system','proxy'), ""),
@ -657,7 +657,7 @@ function admin_page_logs(&$a){
// name, label, value, help string, extra data... // name, label, value, help string, extra data...
'$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""), '$debugging' => array('debugging', t("Debugging"),get_config('system','debugging'), ""),
'$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendika index.php.")), '$logfile' => array('logfile', t("Log file"), get_config('system','logfile'), t("Must be writable by web server. Relative to your Friendica top-level directory.")),
'$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices), '$loglevel' => array('loglevel', t("Log level"), get_config('system','loglevel'), "", $log_choices),
)); ));
} }

View file

@ -2,7 +2,7 @@
require_once('Scrape.php'); require_once('Scrape.php');
function follow_post(&$a) { function follow_init(&$a) {
if(! local_user()) { if(! local_user()) {
notice( t('Permission denied.') . EOL); notice( t('Permission denied.') . EOL);
@ -10,7 +10,7 @@ function follow_post(&$a) {
// NOTREACHED // NOTREACHED
} }
$url = $orig_url = notags(trim($_POST['url'])); $url = $orig_url = notags(trim($_REQUEST['url']));
// remove ajax junk, e.g. Twitter // remove ajax junk, e.g. Twitter
@ -22,6 +22,14 @@ function follow_post(&$a) {
// NOTREACHED // NOTREACHED
} }
if(! $url) {
notice( t('Connect URL missing.') . EOL);
goaway($_SESSION['return_url']);
// NOTREACHED
}
$ret = probe_url($url); $ret = probe_url($url);
if($ret['network'] === NETWORK_DFRN) { if($ret['network'] === NETWORK_DFRN) {
@ -202,7 +210,9 @@ function follow_post(&$a) {
} }
} }
goaway($a->get_baseurl() . '/contacts/' . $contact_id); if(strstr($_SESSION['return_url'],'contacts'))
// goaway($_SESSION['return_url']); goaway($a->get_baseurl() . '/contacts/' . $contact_id);
goaway($_SESSION['return_url']);
// NOTREACHED // NOTREACHED
} }

View file

@ -3,6 +3,9 @@
if(! function_exists('home_init')) { if(! function_exists('home_init')) {
function home_init(&$a) { function home_init(&$a) {
$ret = array();
call_hooks('home_init',$ret);
if(local_user() && ($a->user['nickname'])) if(local_user() && ($a->user['nickname']))
goaway( $a->get_baseurl() . "/profile/" . $a->user['nickname'] ); goaway( $a->get_baseurl() . "/profile/" . $a->user['nickname'] );

View file

@ -398,9 +398,13 @@ function item_post(&$a) {
continue; continue;
$basetag = str_replace('_',' ',substr($tag,1)); $basetag = str_replace('_',' ',substr($tag,1));
$body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body); $body = str_replace($tag,'#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]',$body);
if(strlen($str_tags))
$str_tags .= ','; $newtag = '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]';
$str_tags .= '#[url=' . $a->get_baseurl() . '/search?search=' . rawurlencode($basetag) . ']' . $basetag . '[/url]'; if(! stristr($str_tags,$newtag)) {
if(strlen($str_tags))
$str_tags .= ',';
$str_tags .= $newtag;
}
continue; continue;
} }
if(strpos($tag,'@') === 0) { if(strpos($tag,'@') === 0) {

View file

@ -7,6 +7,8 @@ function match_content(&$a) {
if(! local_user()) if(! local_user())
return; return;
$_SESSION['return_url'] = $a->get_baseurl() . '/' . $a->cmd;
$o .= '<h2>' . t('Profile Match') . '</h2>'; $o .= '<h2>' . t('Profile Match') . '</h2>';
$r = q("SELECT `pub_keywords`, `prv_keywords` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1", $r = q("SELECT `pub_keywords`, `prv_keywords` FROM `profile` WHERE `is-default` = 1 AND `uid` = %d LIMIT 1",
@ -41,14 +43,20 @@ function match_content(&$a) {
} }
if(count($j->results)) { if(count($j->results)) {
$tpl = get_markup_template('match.tpl'); $tpl = get_markup_template('match.tpl');
foreach($j->results as $jj) { foreach($j->results as $jj) {
$connlnk = $a->get_baseurl() . '/follow/?url=' . $jj->url;
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$url' => $jj->url, '$url' => $jj->url,
'$name' => $jj->name, '$name' => $jj->name,
'$photo' => $jj->photo, '$photo' => $jj->photo,
'$inttxt' => ' ' . t('is interested in:'),
'$conntxt' => t('Connect'),
'$connlnk' => $connlnk,
'$tags' => $jj->tags '$tags' => $jj->tags
)); ));
} }

View file

@ -3,7 +3,7 @@
function newmember_content(&$a) { function newmember_content(&$a) {
$o = '<h3>' . t('Welcome to Friendika') . '</h3>'; $o = '<h3>' . t('Welcome to Friendica') . '</h3>';
$o .= '<h3>' . t('New Member Checklist') . '</h3>'; $o .= '<h3>' . t('New Member Checklist') . '</h3>';
@ -25,13 +25,13 @@ function newmember_content(&$a) {
$mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1); $mail_disabled = ((function_exists('imap_open') && (! get_config('system','imap_disabled'))) ? 0 : 1);
if(! $mail_disabled) if(! $mail_disabled)
$o .= '<li>' . '<a href="settings">' . t('Enter your email access information on your Settings page if you wish to import and interact with friends or mailing lists from your email INBOX') . '</a></li>' . EOL; $o .= '<li>' . '<a href="settings/connectors">' . t('Enter your email access information on your Connector Settings page if you wish to import and interact with friends or mailing lists from your email INBOX') . '</a></li>' . EOL;
$o .= '<li>' . '<a href="profiles">' . t('Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors.') . '</a></li>' . EOL; $o .= '<li>' . '<a href="profiles">' . t('Edit your <strong>default</strong> profile to your liking. Review the settings for hiding your list of friends and hiding the profile from unknown visitors.') . '</a></li>' . EOL;
$o .= '<li>' . '<a href="profiles">' . t('Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships.') . '</a></li>' . EOL; $o .= '<li>' . '<a href="profiles">' . t('Set some public keywords for your default profile which describe your interests. We may be able to find other people with similar interests and suggest friendships.') . '</a></li>' . EOL;
$o .= '<li>' . '<a href="contacts">' . t('Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Connect</em> dialog.') . '</a></li>' . EOL; $o .= '<li>' . '<a href="contacts">' . t('Your Contacts page is your gateway to managing friendships and connecting with friends on other networks. Typically you enter their address or site URL in the <em>Add New Contact</em> dialog.') . '</a></li>' . EOL;
$o .= '<li>' . '<a href="directory">' . t('The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested.') . '</a></li>' . EOL; $o .= '<li>' . '<a href="directory">' . t('The Directory page lets you find other people in this network or other federated sites. Look for a <em>Connect</em> or <em>Follow</em> link on their profile page. Provide your own Identity Address if requested.') . '</a></li>' . EOL;

View file

@ -125,8 +125,11 @@ function poco_init(&$a) {
$entry['id'] = $rr['id']; $entry['id'] = $rr['id'];
if($fields_ret['displayName']) if($fields_ret['displayName'])
$entry['displayName'] = $rr['name']; $entry['displayName'] = $rr['name'];
if($fields_ret['urls']) if($fields_ret['urls']) {
$entry['urls'] = array(array('value' => $rr['url'], 'type' => 'profile')); $entry['urls'] = array(array('value' => $rr['url'], 'type' => 'profile'));
if($rr['addr'] && ($rr['network'] !== NETWORK_MAIL))
$entry['urls'][] = array('value' => 'acct:' . $rr['addr'], 'type' => 'webfinger');
}
if($fields_ret['preferredUsername']) if($fields_ret['preferredUsername'])
$entry['preferredUsername'] = $rr['nick']; $entry['preferredUsername'] = $rr['nick'];
if($fields_ret['photos']) if($fields_ret['photos'])

View file

@ -29,6 +29,8 @@ function suggest_content(&$a) {
return; return;
} }
$_SESSION['return_url'] = $a->get_baseurl() . '/' . $a->cmd;
$a->page['aside'] .= follow_widget(); $a->page['aside'] .= follow_widget();
$a->page['aside'] .= findpeople_widget(); $a->page['aside'] .= findpeople_widget();
@ -39,19 +41,23 @@ function suggest_content(&$a) {
$r = suggestion_query(local_user()); $r = suggestion_query(local_user());
if(! count($r)) { if(! count($r)) {
$o .= t('No suggestions. This works best when you have more than one contact/friend.'); $o .= t('No suggestions available. If this is a new site, please try again in 24 hours.');
return $o; return $o;
} }
$tpl = get_markup_template('suggest_friends.tpl'); $tpl = get_markup_template('suggest_friends.tpl');
foreach($r as $rr) { foreach($r as $rr) {
$connlnk = $a->get_baseurl() . '/follow/?url=' . (($rr['connect']) ? $rr['connect'] : $rr['url']);
$o .= replace_macros($tpl,array( $o .= replace_macros($tpl,array(
'$url' => $rr['url'], '$url' => $rr['url'],
'$name' => $rr['name'], '$name' => $rr['name'],
'$photo' => $rr['photo'], '$photo' => $rr['photo'],
'$ignlnk' => $a->get_baseurl() . '/suggest?ignore=' . $rr['id'], '$ignlnk' => $a->get_baseurl() . '/suggest?ignore=' . $rr['id'],
'$conntxt' => t('Connect'),
'$connlnk' => $connlnk,
'$ignore' => t('Ignore/Hide') '$ignore' => t('Ignore/Hide')
)); ));
} }

View file

@ -1,6 +1,6 @@
<?php <?php
define( 'UPDATE_VERSION' , 1111 ); define( 'UPDATE_VERSION' , 1112 );
/** /**
* *
@ -944,3 +944,7 @@ function update_1110() {
} }
function update_1111() {
q("ALTER TABLE `gcontact` ADD `connect` CHAR( 255 ) NOT NULL ");
}

View file

@ -9,4 +9,8 @@
<a href="$url" title="$name[$tags]">$name</a> <a href="$url" title="$name[$tags]">$name</a>
</div> </div>
<div class="profile-match-end"></div> <div class="profile-match-end"></div>
{{ if $connlnk }}
<div class="profile-match-connect"><a href="$connlnk" title="$conntxt">$conntxt</a></div>
{{ endif }}
</div> </div>

View file

@ -2,6 +2,6 @@
{{ if $entry.id }}<id>$entry.id</id>{{ endif }} {{ if $entry.id }}<id>$entry.id</id>{{ endif }}
{{ if $entry.displayName }}<displayName>$entry.displayName</displayName>{{ endif }} {{ if $entry.displayName }}<displayName>$entry.displayName</displayName>{{ endif }}
{{ if $entry.preferredUsername }}<preferredUsername>$entry.preferredUsername</preferredUsername>{{ endif }} {{ if $entry.preferredUsername }}<preferredUsername>$entry.preferredUsername</preferredUsername>{{ endif }}
{{ if $entry.urls }}<urls><value>$entry.urls.value</value><type>$entry.urls.type</type></urls>{{ endif }} {{ if $entry.urls }}{{ for $entry.urls as $url }}<urls><value>$url.value</value><type>$url.type</type></urls>{{ endfor }}{{ endif }}
{{ if $entry.photos }}<photos><value>$entry.photos.value</value><type>$entry.photos.type</type></photos>{{ endif }} {{ if $entry.photos }}{{ for $entry.photos as $photo }}<photos><value>$photo.value</value><type>$photo.type</type></photos>{{ endfor }}{{ endif }}
</entry> </entry>

View file

@ -10,4 +10,7 @@
<a href="$url" title="$name">$name</a> <a href="$url" title="$name">$name</a>
</div> </div>
<div class="profile-match-end"></div> <div class="profile-match-end"></div>
{{ if $connlnk }}
<div class="profile-match-connect"><a href="$connlnk" title="$conntxt">$conntxt</a></div>
{{ endif }}
</div> </div>

View file

@ -2,3 +2,48 @@
$a->theme_info = array( $a->theme_info = array(
'extends' => 'duepuntozero', 'extends' => 'duepuntozero',
); );
$a->page['htmlhead'] .= <<< EOT
<script>
$(document).ready(function() {
$('.group-edit-icon').hover(
function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.sidebar-group-element').hover(
function() {
id = $(this).attr('id');
$('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
);
$('.savedsearchdrop').hover(
function() {
$(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.savedsearchterm').hover(
function() {
id = $(this).attr('id');
$('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
);
});
</script>
EOT;

View file

@ -2383,6 +2383,11 @@ aside input[type='text'] {
clear: both; clear: both;
} }
.profile-match-connect {
text-align: center;
font-weight: bold;
}
.profile-match-wrapper { .profile-match-wrapper {
float: left; float: left;
padding: 10px; padding: 10px;

View file

@ -2,3 +2,48 @@
$a->theme_info = array( $a->theme_info = array(
'extends' => 'duepuntozero', 'extends' => 'duepuntozero',
); );
$a->page['htmlhead'] .= <<< EOT
<script>
$(document).ready(function() {
$('.group-edit-icon').hover(
function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.sidebar-group-element').hover(
function() {
id = $(this).attr('id');
$('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
);
$('.savedsearchdrop').hover(
function() {
$(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.savedsearchterm').hover(
function() {
id = $(this).attr('id');
$('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
);
});
</script>
EOT;

View file

@ -2,3 +2,48 @@
$a->theme_info = array( $a->theme_info = array(
'extends' => 'duepuntozero', 'extends' => 'duepuntozero',
); );
$a->page['htmlhead'] .= <<< EOT
<script>
$(document).ready(function() {
$('.group-edit-icon').hover(
function() {
$(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.sidebar-group-element').hover(
function() {
id = $(this).attr('id');
$('#edit-' + id).addClass('icon'); $('#edit-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#edit-' + id).removeClass('icon');$('#edit-' + id).addClass('iconspacer');}
);
$('.savedsearchdrop').hover(
function() {
$(this).addClass('drop'); $(this).addClass('icon'); $(this).removeClass('iconspacer');},
function() {
$(this).removeClass('drop'); $(this).removeClass('icon'); $(this).addClass('iconspacer');}
);
$('.savedsearchterm').hover(
function() {
id = $(this).attr('id');
$('#drop-' + id).addClass('icon'); $('#drop-' + id).addClass('drophide'); $('#drop-' + id).removeClass('iconspacer');},
function() {
id = $(this).attr('id');
$('#drop-' + id).removeClass('icon');$('#drop-' + id).removeClass('drophide'); $('#drop-' + id).addClass('iconspacer');}
);
});
</script>
EOT;

View file

@ -4,7 +4,10 @@
<img src="$photo" alt="$name" /> <img src="$photo" alt="$name" />
</a> </a>
</div> </div>
<span><a href="$url">$name</a> is interested in:<br />$tags</span> <span><a href="$url">$name</a>$inttxt<br />$tags</span>
<div class="profile-match-break"></div> <div class="profile-match-break"></div>
{{ if $connlnk }}
<div class="profile-match-connect"><a href="$connlnk" title="$conntxt">$conntxt</a></div>
{{ endif }}
<div class="profile-match-end"></div> <div class="profile-match-end"></div>
</div> </div>