Merge remote-tracking branch 'upstream/develop' into 1512-contact-rework

Conflicts:
	mod/contacts.php
	mod/crepair.php
This commit is contained in:
Michael Vogel 2015-12-03 14:38:04 +01:00
commit 1a170c8743
26 changed files with 269 additions and 177 deletions

View file

@ -45,39 +45,9 @@ if(! function_exists('profile_load')) {
return; return;
} }
if(remote_user() && count($_SESSION['remote'])) { $pdata = get_profiledata_by_nick($nickname, $user[0]['uid'], $profile);
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $user[0]['uid']) {
$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
intval($visitor['cid'])
);
if(count($r))
$profile = $r[0]['profile-id'];
break;
}
}
}
$r = null; if(($pdata === false) || (!count($pdata)) && !count($profiledata)) {
if($profile) {
$profile_int = intval($profile);
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `contact`.`addr` AS faddr, `user`.* FROM `profile`
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d AND `contact`.`self` = 1 LIMIT 1",
dbesc($nickname),
intval($profile_int)
);
}
if((!$r) && (!count($r))) {
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `contact`.`addr` AS faddr, `user`.* FROM `profile`
INNER JOIN `contact` ON `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 AND `contact`.`self` = 1 LIMIT 1",
dbesc($nickname)
);
}
if(($r === false) || (!count($r)) && !count($profiledata)) {
logger('profile error: ' . $a->query_string, LOGGER_DEBUG); logger('profile error: ' . $a->query_string, LOGGER_DEBUG);
notice( t('Requested profile is not available.') . EOL ); notice( t('Requested profile is not available.') . EOL );
$a->error = 404; $a->error = 404;
@ -86,16 +56,16 @@ if(! function_exists('profile_load')) {
// fetch user tags if this isn't the default profile // fetch user tags if this isn't the default profile
if(!$r[0]['is-default']) { if(!$pdata['is-default']) {
$x = q("SELECT `pub_keywords` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1", $x = q("SELECT `pub_keywords` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
intval($r[0]['profile_uid']) intval($pdata['profile_uid'])
); );
if($x && count($x)) if($x && count($x))
$r[0]['pub_keywords'] = $x[0]['pub_keywords']; $pdata['pub_keywords'] = $x[0]['pub_keywords'];
} }
$a->profile = $r[0]; $a->profile = $pdata;
$a->profile_uid = $r[0]['profile_uid']; $a->profile_uid = $pdata['profile_uid'];
$a->profile['mobile-theme'] = get_pconfig($a->profile['profile_uid'], 'system', 'mobile_theme'); $a->profile['mobile-theme'] = get_pconfig($a->profile['profile_uid'], 'system', 'mobile_theme');
$a->profile['network'] = NETWORK_DFRN; $a->profile['network'] = NETWORK_DFRN;
@ -147,6 +117,58 @@ if(! function_exists('profile_load')) {
} }
/**
* @brief Get all profil data of a local user
* If the viewer is an authenticated remote viewer, the profile displayed is the
* one that has been configured for his/her viewing in the Contact manager.
* Passing a non-zero profile ID can also allow a preview of a selected profile
* by the owner
*
* @param string $nickname
* @param int $uid
* @param int $profile
* ID of the profile
* @returns array
* Includes all available profile data
*/
function get_profiledata_by_nick($nickname, $uid = 0, $profile = 0) {
if(remote_user() && count($_SESSION['remote'])) {
foreach($_SESSION['remote'] as $visitor) {
if($visitor['uid'] == $uid) {
$r = q("SELECT `profile-id` FROM `contact` WHERE `id` = %d LIMIT 1",
intval($visitor['cid'])
);
if(count($r))
$profile = $r[0]['profile-id'];
break;
}
}
}
$r = null;
if($profile) {
$profile_int = intval($profile);
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `contact`.`addr`, `user`.* FROM `profile`
INNER JOIN `contact` on `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
WHERE `user`.`nickname` = '%s' AND `profile`.`id` = %d AND `contact`.`self` = 1 LIMIT 1",
dbesc($nickname),
intval($profile_int)
);
}
if((!$r) && (!count($r))) {
$r = q("SELECT `profile`.`uid` AS `profile_uid`, `profile`.* , `contact`.`avatar-date` AS picdate, `contact`.`addr`, `user`.* FROM `profile`
INNER JOIN `contact` ON `contact`.`uid` = `profile`.`uid` INNER JOIN `user` ON `profile`.`uid` = `user`.`uid`
WHERE `user`.`nickname` = '%s' AND `profile`.`is-default` = 1 AND `contact`.`self` = 1 LIMIT 1",
dbesc($nickname)
);
}
return $r[0];
}
/** /**
* *
* Function: profile_sidebar * Function: profile_sidebar
@ -161,8 +183,6 @@ if(! function_exists('profile_load')) {
* Exceptions: Returns empty string if passed $profile is wrong type or not populated * Exceptions: Returns empty string if passed $profile is wrong type or not populated
* *
*/ */
if(! function_exists('profile_sidebar')) { if(! function_exists('profile_sidebar')) {
function profile_sidebar($profile, $block = 0) { function profile_sidebar($profile, $block = 0) {
$a = get_app(); $a = get_app();
@ -170,7 +190,7 @@ if(! function_exists('profile_sidebar')) {
$o = ''; $o = '';
$location = false; $location = false;
$address = false; $address = false;
$pdesc = true; // $pdesc = true;
if((! is_array($profile)) && (! count($profile))) if((! is_array($profile)) && (! count($profile)))
return $o; return $o;
@ -178,12 +198,8 @@ if(! function_exists('profile_sidebar')) {
$profile['picdate'] = urlencode($profile['picdate']); $profile['picdate'] = urlencode($profile['picdate']);
if (($profile['network'] != "") AND ($profile['network'] != NETWORK_DFRN)) { if (($profile['network'] != "") AND ($profile['network'] != NETWORK_DFRN)) {
require_once('include/contact_selectors.php'); $profile['network_name'] = format_network_name($profile['network'],$profile['url']);
if ($profile['url'] != "") } else
$profile['network_name'] = '<a href="'.$profile['url'].'">'.network_to_name($profile['network'], $profile['url'])."</a>";
else
$profile['network_name'] = network_to_name($profile['network']);
} else
$profile['network_name'] = ""; $profile['network_name'] = "";
call_hooks('profile_sidebar_enter', $profile); call_hooks('profile_sidebar_enter', $profile);
@ -270,6 +286,16 @@ if(! function_exists('profile_sidebar')) {
); );
} }
// check if profile is a forum
if((x($profile['page-flags']) == 2)
|| (x($profile['page-flags']) == 5)
|| (x($profile['forum']))
|| (x($profile['prv']))
|| (x($profile['community'])))
$account_type = t('Forum');
else
$account_type = "";
if((x($profile,'address') == 1) if((x($profile,'address') == 1)
|| (x($profile,'locality') == 1) || (x($profile,'locality') == 1)
|| (x($profile,'region') == 1) || (x($profile,'region') == 1)
@ -344,9 +370,10 @@ if(! function_exists('profile_sidebar')) {
'$remoteconnect' => $remoteconnect, '$remoteconnect' => $remoteconnect,
'$subscribe_feed' => $subscribe_feed, '$subscribe_feed' => $subscribe_feed,
'$wallmessage' => $wallmessage, '$wallmessage' => $wallmessage,
'$account_type' => $account_type,
'$location' => $location, '$location' => $location,
'$gender' => $gender, '$gender' => $gender,
'$pdesc' => $pdesc, // '$pdesc' => $pdesc,
'$marital' => $marital, '$marital' => $marital,
'$homepage' => $homepage, '$homepage' => $homepage,
'$about' => $about, '$about' => $about,

View file

@ -1250,8 +1250,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
if ($notify) if ($notify)
$guid_prefix = ""; $guid_prefix = "";
else else {
$guid_prefix = $arr['network']; $parsed = parse_url($arr["author-link"]);
$guid_prefix = hash("crc32", $parsed["host"]);
}
$arr['wall'] = ((x($arr,'wall')) ? intval($arr['wall']) : 0); $arr['wall'] = ((x($arr,'wall')) ? intval($arr['wall']) : 0);
$arr['guid'] = ((x($arr,'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $guid_prefix)); $arr['guid'] = ((x($arr,'guid')) ? notags(trim($arr['guid'])) : get_guid(32, $guid_prefix));
@ -2320,6 +2322,9 @@ function edited_timestamp_is_newer($existing, $update) {
function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) { function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
if ($contact['network'] === NETWORK_OSTATUS) { if ($contact['network'] === NETWORK_OSTATUS) {
if ($pass < 2) { if ($pass < 2) {
// Test - remove before flight
//$tempfile = tempnam(get_temppath(), "ostatus2");
//file_put_contents($tempfile, $xml);
logger("Consume OStatus messages ", LOGGER_DEBUG); logger("Consume OStatus messages ", LOGGER_DEBUG);
ostatus_import($xml,$importer,$contact, $hub); ostatus_import($xml,$importer,$contact, $hub);
} }

View file

@ -1282,6 +1282,14 @@ function ostatus_add_author($doc, $owner, $profile) {
return $author; return $author;
} }
/*
To-Do: Picture attachments should look like this:
<a href="https://status.pirati.ca/attachment/572819" title="https://status.pirati.ca/file/heluecht-20151202T222602-rd3u49p.gif"
class="attachment thumbnail" id="attachment-572819" rel="nofollow external">https://status.pirati.ca/attachment/572819</a>
*/
function ostatus_entry($doc, $item, $owner, $toplevel = false) { function ostatus_entry($doc, $item, $owner, $toplevel = false) {
$a = get_app(); $a = get_app();

View file

@ -2289,32 +2289,23 @@ function formatBytes($bytes, $precision = 2) {
} }
/** /**
* @brief Translate the PAGE type flags in human readable string * @brief translate and format the networkname of a contact
* *
* @param int $page_type * @param string $network
* @return string $trans_type * Networkname of the contact (e.g. dfrn, rss and so on)
* @param sting $url
* The contact url
* @return string
*/ */
function page_type_translate($page_type) { function format_network_name($network, $url = 0) {
if ($network != "") {
require_once('include/contact_selectors.php');
if ($url != "")
$network_name = '<a href="'.$url.'">'.network_to_name($network, $url)."</a>";
else
$network_name = network_to_name($network);
// ToDo: we need a good interpretable translation for PAGE_SOAPBOX return $network_name;
// and PAGE_PRVGROUP
switch ($page_type) {
case PAGE_NORMAL:
$trans_type = t('Normal Account');
break;
case PAGE_SOAPBOX:
$trans_type = t('Fan Page');
break;
case PAGE_COMMUNITY:
$trans_type = t('Community Forum');
break;
case PAGE_FREELOVE:
$trans_type = t('Open Forum');
break;
case PAGE_PRVGROUP:
$trans_type = t('Private Forum');
break;
} }
return $trans_type;
} }

View file

@ -35,10 +35,20 @@ function contacts_init(&$a) {
if($contact_id) { if($contact_id) {
$a->data['contact'] = $r[0]; $a->data['contact'] = $r[0];
if (($a->data['contact']['network'] != "") AND ($a->data['contact']['network'] != NETWORK_DFRN)) {
$networkname = format_network_name($a->data['contact']['network'],$a->data['contact']['url']);
} else
$networkname = '';
$vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array( $vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array(
'$name' => htmlentities($a->data['contact']['name']), '$name' => htmlentities($a->data['contact']['name']),
'$photo' => $a->data['contact']['photo'], '$photo' => $a->data['contact']['photo'],
'$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? z_root()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url'] '$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? z_root()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url'],
'$addr' => (($a->data['contact']['addr'] != "") ? ($a->data['contact']['addr']) : ""),
'$network_name' => $networkname,
'$network' => t('Network:'),
'account_type' => (($a->data['contact']['forum'] || $a->data['contact']['prv']) ? t('Forum') : '')
)); ));
$finpeople_widget = ''; $finpeople_widget = '';
$follow_widget = ''; $follow_widget = '';
@ -570,16 +580,8 @@ function contacts_content(&$a) {
$follow = $a->get_baseurl(true)."/follow?url=".urlencode($contact["url"]); $follow = $a->get_baseurl(true)."/follow?url=".urlencode($contact["url"]);
$header = $contact["name"];
if ($contact["addr"] != "")
$header .= " <".$contact["addr"].">";
$header .= " (".network_to_name($contact['network'], $contact['url']).")";
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
//'$header' => t('Contact Editor'), //'$header' => t('Contact Editor'),
//'$header' => htmlentities($header),
'$tab_str' => $tab_str, '$tab_str' => $tab_str,
'$submit' => t('Submit'), '$submit' => t('Submit'),
'$lbl_vis1' => t('Profile Visibility'), '$lbl_vis1' => t('Profile Visibility'),
@ -922,23 +924,8 @@ function contact_posts($a, $contact_id) {
intval($a->pager['itemspage']) intval($a->pager['itemspage'])
); );
if (!$r)
$o = $contact["url"]." - ".$contact_id;
$tab_str = contacts_tab($a, $contact_id, 1); $tab_str = contacts_tab($a, $contact_id, 1);
$header = $contact["name"];
if ($contact["addr"] != "")
$header .= " <".$contact["addr"].">";
$header .= " (".network_to_name($contact['network'], $contact['url']).")";
//$tpl = get_markup_template("section_title.tpl");
//$o = replace_macros($tpl,array(
// '$title' => htmlentities($header)
//));
$o .= $tab_str; $o .= $tab_str;
$o .= conversation($a,$r,'community',false); $o .= conversation($a,$r,'community',false);

View file

@ -23,14 +23,9 @@ function crepair_init(&$a) {
$a->page['aside'] = ''; $a->page['aside'] = '';
if($contact_id) { if($contact_id) {
$a->data['contact'] = $r[0]; $a->data['contact'] = $r[0];
$tpl = get_markup_template("vcard-widget.tpl"); $contact = $r[0];
$vcard_widget .= replace_macros($tpl, array( profile_load($a, "", 0, get_contact_details_by_url($contact["url"]));
'$name' => htmlentities($a->data['contact']['name']),
'$photo' => $a->data['contact']['photo']
));
$a->page['aside'] .= $vcard_widget;
} }
} }
@ -161,17 +156,10 @@ function crepair_content(&$a) {
$tab_str = contacts_tab($a, $contact['id'], 5); $tab_str = contacts_tab($a, $contact['id'], 5);
$header = $contact["name"];
if ($contact["addr"] != "")
$header .= " <".$contact["addr"].">";
$header .= " (".network_to_name($contact['network'], $contact['url']).")";
$tpl = get_markup_template('crepair.tpl'); $tpl = get_markup_template('crepair.tpl');
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
//'$title' => t('Repair Contact Settings'), //'$title' => t('Repair Contact Settings'),
//'$title' => htmlentities($header),
'$tab_str' => $tab_str, '$tab_str' => $tab_str,
'$warning' => $warning, '$warning' => $warning,
'$info' => $info, '$info' => $info,

View file

@ -86,7 +86,7 @@ function directory_content(&$a) {
$limit = intval($a->pager['start']).",".intval($a->pager['itemspage']); $limit = intval($a->pager['start']).",".intval($a->pager['itemspage']);
$r = $db->q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`, $r = $db->q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` , `user`.`page-flags`,
`contact`.`addr` AS faddr, `contact`.`url` AS profile_url FROM `profile` `contact`.`addr`, `contact`.`url` AS profile_url FROM `profile`
LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid`
LEFT JOIN `contact` ON `contact`.`uid` = `user`.`uid` LEFT JOIN `contact` ON `contact`.`uid` = `user`.`uid`
WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 AND `contact`.`self` $sql_extra $order LIMIT ".$limit); WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 AND `contact`.`self` $sql_extra $order LIMIT ".$limit);
@ -102,7 +102,7 @@ function directory_content(&$a) {
$community = ''; $community = '';
$itemurl= ''; $itemurl= '';
$itemurl = (($rr['faddr'] != "") ? $rr['faddr'] : $rr['profile_url']); $itemurl = (($rr['addr'] != "") ? $rr['addr'] : $rr['profile_url']);
$profile_link = z_root() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']); $profile_link = z_root() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);

View file

@ -24,24 +24,32 @@ function photos_init(&$a) {
if($a->argc > 1) { if($a->argc > 1) {
$nick = $a->argv[1]; $nick = $a->argv[1];
$r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1", $user = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1",
dbesc($nick) dbesc($nick)
); );
if(! count($r)) if(! count($user))
return; return;
$a->data['user'] = $r[0]; $a->data['user'] = $user[0];
$a->profile_uid = $r[0]['uid']; $a->profile_uid = $user[0]['uid'];
$is_owner = (local_user() && (local_user() == $a->profile_uid)); $is_owner = (local_user() && (local_user() == $a->profile_uid));
$profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg'); $profile = get_profiledata_by_nick($nick, $a->profile_uid);
if((x($profile['page-flags']) == 2) || (x($profile['page-flags']) == 5))
$account_type = t('Forum');
else
$account_type = "";
$tpl = get_markup_template("vcard-widget.tpl"); $tpl = get_markup_template("vcard-widget.tpl");
$vcard_widget .= replace_macros($tpl, array( $vcard_widget .= replace_macros($tpl, array(
'$name' => $a->data['user']['username'], '$name' => $profile['name'],
'$photo' => $profilephoto '$photo' => $profile['photo'],
'$addr' => (($profile['addr'] != "") ? $profile['addr'] : ""),
'$account_type' => $account_type,
'$pdesc' => (($profile['pdesc'] != "") ? $profile['pdesc'] : ""),
)); ));
@ -89,7 +97,7 @@ function photos_init(&$a) {
$photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'),array( $photo_albums_widget = replace_macros(get_markup_template('photo_albums.tpl'),array(
'$nick' => $a->data['user']['nickname'], '$nick' => $a->data['user']['nickname'],
'$title' => t('Photo Albums'), '$title' => t('Photo Albums'),
'recent' => t('Recent Photos'), '$recent' => t('Recent Photos'),
'$albums' => $albums['albums'], '$albums' => $albums['albums'],
'$baseurl' => z_root(), '$baseurl' => z_root(),
'$upload' => array( t('Upload New Photos'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload'), '$upload' => array( t('Upload New Photos'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload'),

View file

@ -21,23 +21,31 @@ function videos_init(&$a) {
if($a->argc > 1) { if($a->argc > 1) {
$nick = $a->argv[1]; $nick = $a->argv[1];
$r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1", $user = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1",
dbesc($nick) dbesc($nick)
); );
if(! count($r)) if(! count($user))
return; return;
$a->data['user'] = $r[0]; $a->data['user'] = $user[0];
$a->profile_uid = $r[0]['uid']; $a->profile_uid = $user[0]['uid'];
$profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg'); $profile = get_profiledata_by_nick($nick, $a->profile_uid);
if((x($profile['page-flags']) == 2) || (x($profile['page-flags']) == 5))
$account_type = t('Forum');
else
$account_type = "";
$tpl = get_markup_template("vcard-widget.tpl"); $tpl = get_markup_template("vcard-widget.tpl");
$vcard_widget = replace_macros($tpl, array( $vcard_widget .= replace_macros($tpl, array(
'$name' => $a->data['user']['username'], '$name' => $profile['name'],
'$photo' => $profilephoto '$photo' => $profile['photo'],
'$addr' => (($profile['addr'] != "") ? $profile['addr'] : ""),
'$account_type' => $account_type,
'$pdesc' => (($profile['pdesc'] != "") ? $profile['pdesc'] : ""),
)); ));
@ -53,7 +61,7 @@ function videos_init(&$a) {
$albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true); $albums_visible = ((intval($a->data['user']['hidewall']) && (! local_user()) && (! remote_user())) ? false : true);
if($albums_visible) { if($albums_visible) {
$o .= '<div id="side-bar-photos-albums" class="widget">'; $o .= '<div id="sidebar-photos-albums" class="widget">';
$o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '">' . t('Photo Albums') . '</a></h3>'; $o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '">' . t('Photo Albums') . '</a></h3>';
$o .= '<ul>'; $o .= '<ul>';

View file

@ -1,17 +1,24 @@
<div id="side-bar-photos-albums" class="widget"> <div id="sidebar-photos-albums" class="widget">
<h3>{{$title}}</h3> <h3>{{$title}}</h3>
<ul> <ul role=menu" class="sidebar-photos-albums-ul">
<li><a href="{{$baseurl}}/photos/{{$nick}}" title="{{$title}}" >{{$recent}}</a></li> <li role="menuitem" class="sidebar-photos-albums-li">
<a href="{{$baseurl}}/photos/{{$nick}}" class="sidebar-photos-albums-element" title="{{$title}}" >{{$recent}}</a>
</li>
{{if $albums}} {{if $albums}}
{{foreach $albums as $al}} {{foreach $albums as $al}}
{{if $al.text}} {{if $al.text}}
<li><a href="{{$baseurl}}/photos/{{$nick}}/album/{{$al.bin2hex}}"><span class="badge pull-right">{{$al.total}}</span>{{$al.text}}</a></li> <li role="menuitem" class="sidebar-photos-albums-li">
<a href="{{$baseurl}}/photos/{{$nick}}/album/{{$al.bin2hex}}" class="sidebar-photos-albums-element">
<span class="badge pull-right">{{$al.total}}</span>{{$al.text}}
</a>
</li>
{{/if}} {{/if}}
{{/foreach}} {{/foreach}}
{{/if}} {{/if}}
</ul> </ul>
{{if $can_post}} {{if $can_post}}
<div class="photos-upload-link" ><a href="{{$upload.1}}">{{$upload.0}}</a></div> <div class="photos-upload-link" ><a href="{{$upload.1}}">{{$upload.0}}</a></div>
{{/if}} {{/if}}
</div> </div>

View file

@ -3,15 +3,16 @@
<div class="fn label p-name">{{$profile.name}}</div> <div class="fn label p-name">{{$profile.name}}</div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $profile.picdate}} {{if $profile.picdate}}
<div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></a></div> <div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></a></div>
{{else}} {{else}}
<div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" width="175" height="175" src="{{$profile.photo}}" alt="{{$profile.name}}"></a></div> <div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" width="175" height="175" src="{{$profile.photo}}" alt="{{$profile.name}}"></a></div>
{{/if}} {{/if}}
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}} {{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>

View file

@ -1,9 +1,14 @@
<div class="vcard"> <div class="vcard">
<div class="fn">{{$name}}</div> <div class="fn">{{$name}}</div>
{{if $url}} {{if $addr}}<div class="p-addr">{{$addr}}</div>{{/if}}
<div id="profile-photo-wrapper"><a href="{{$url}}"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></a></div> {{if $pdesc}}<div class="title">{{$pdesc}}</div>{{/if}}
{{else}} {{if $url}}
<div id="profile-photo-wrapper"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></div> <div id="profile-photo-wrapper"><a href="{{$url}}"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></a></div>
{{/if}} {{else}}
<div id="profile-photo-wrapper"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></div>
{{/if}}
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$network_name}}</dd></dl>{{/if}}
<div id="profile-vcard-break"></div>
</div> </div>

View file

@ -2492,14 +2492,14 @@ aside input[type='text'] {
margin-bottom: 25px; margin-bottom: 25px;
} }
.location-label, .gender-label, .marital-label, .homepage-label { .location-label, .gender-label, .marital-label, .homepage-label, .network-label {
float: left; float: left;
text-align: right; text-align: right;
display: block; display: block;
width: 65px; width: 65px;
} }
.adr, .x-gender, .marital-text, .homepage-url { .adr, .x-gender, .marital-text, .homepage-url, .x-network {
float: left; float: left;
display: block; display: block;
margin-left: 8px; margin-left: 8px;
@ -2538,11 +2538,16 @@ aside input[type='text'] {
} }
.vcard .title, .vcard .title,
.vcard .p-faddr { .vcard .p-addr {
margin-bottom: 5px; margin-bottom: 5px;
margin-left: 12px; margin-left: 12px;
} }
.vcard .account-type {
font-size: 120%;
margin-bottom: 13px;
}
.vcard dl { .vcard dl {
clear: both; clear: both;
} }

View file

@ -3,12 +3,14 @@
<div class="fn label">{{$profile.name}}</div> <div class="fn label">{{$profile.name}}</div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div> <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>

View file

@ -3081,14 +3081,14 @@ aside input[type='text'] {
margin-bottom: 25px; margin-bottom: 25px;
} }
.location-label, .gender-label, .marital-label, .homepage-label { .location-label, .gender-label, .marital-label, .homepage-label, .network-label {
float: left; float: left;
text-align: right; text-align: right;
display: block; display: block;
width: 65px; width: 65px;
} }
.adr, .x-gender, .marital-text, .homepage-url { .adr, .x-gender, .marital-text, .homepage-url, .x-network {
float: left; float: left;
display: block; display: block;
margin-left: 8px; margin-left: 8px;
@ -3127,11 +3127,17 @@ aside input[type='text'] {
} }
.vcard .title, .vcard .title,
.vcard .p-faddr { .vcard .p-addr,
.vcard .account-type {
margin-bottom: 5px; margin-bottom: 5px;
margin-left: 12px; margin-left: 12px;
} }
.vcard .account-type {
font-size: 120%;
margin-bottom: 13px;
}
.vcard dl { .vcard dl {
clear: both; clear: both;
} }

View file

@ -3,12 +3,14 @@
<div class="fn label">{{$profile.name}}</div> <div class="fn label">{{$profile.name}}</div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div> <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>

View file

@ -2867,14 +2867,14 @@ aside input[type='text'] {
margin-bottom: 25px; margin-bottom: 25px;
} }
.location-label, .gender-label, .marital-label, .homepage-label { .location-label, .gender-label, .marital-label, .homepage-label, .network-label {
float: left; float: left;
text-align: right; text-align: right;
display: block; display: block;
width: 65px; width: 65px;
} }
.adr, .x-gender, .marital-text, .homepage-url { .adr, .x-gender, .marital-text, .homepage-url, .x-network {
float: left; float: left;
display: block; display: block;
margin-left: 8px; margin-left: 8px;
@ -2913,10 +2913,15 @@ aside input[type='text'] {
} }
.vcard .title, .vcard .title,
.vcard .p-faddr { .vcard .p-addr,
.vcard .account-type {
margin-bottom: 5px; margin-bottom: 5px;
margin-left: 12px; margin-left: 12px;
} }
.vcard .account-type {
font-size: 120%;
margin-bottom: 13px;
}
.vcard dl { .vcard dl {
clear: both; clear: both;

View file

@ -3,12 +3,14 @@
<div class="fn label">{{$profile.name}}</div> <div class="fn label">{{$profile.name}}</div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div> <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>

View file

@ -833,9 +833,13 @@ aside .vcard .fn {
aside .vcard .title { aside .vcard .title {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .p-faddr { aside .vcard .p-addr {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .account-type {
font-size: 14px;
margin-bottom: 13px;
}
aside .vcard dl { aside .vcard dl {
height: auto; height: auto;
overflow: auto; overflow: auto;

View file

@ -833,9 +833,13 @@ aside .vcard .fn {
aside .vcard .title { aside .vcard .title {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .p-faddr { aside .vcard .p-addr {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .account-type {
font-size: 14px;
margin-bottom: 13px;
}
aside .vcard dl { aside .vcard dl {
height: auto; height: auto;
overflow: auto; overflow: auto;

View file

@ -833,9 +833,13 @@ aside .vcard .fn {
aside .vcard .title { aside .vcard .title {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .p-faddr { aside .vcard .p-addr {
margin-bottom: 5px; margin-bottom: 5px;
} }
aside .vcard .account-type {
font-size: 14px;
margin-bottom: 13px;
}
aside .vcard dl { aside .vcard dl {
height: auto; height: auto;
overflow: auto; overflow: auto;

View file

@ -332,7 +332,8 @@ aside {
.vcard { .vcard {
.fn { font-size: 16px; font-weight: bold; margin-bottom: 5px; } .fn { font-size: 16px; font-weight: bold; margin-bottom: 5px; }
.title { margin-bottom: 5px; } .title { margin-bottom: 5px; }
.p-faddr{ margin-bottom: 5px; } .p-addr { margin-bottom: 5px; }
.account-type { font-size: 14px; margin-bottom: 13px; }
dl { height: auto; overflow: auto; } dl { height: auto; overflow: auto; }
dt {float: left; margin-left: 0px; width: 35%; text-align: right; color: @VCardLabelColor; } dt {float: left; margin-left: 0px; width: 35%; text-align: right; color: @VCardLabelColor; }
dd {float: left; margin-left: 4px; width: 60%;} dd {float: left; margin-left: 4px; width: 60%;}

View file

@ -26,12 +26,14 @@
{{/if}} {{/if}}
</div> </div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}" /></div> <div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}" /></div>
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>

View file

@ -665,6 +665,10 @@ aside h4 {
font-size: 1em; font-size: 1em;
} }
.vcard .account-type {
font-size: 1.2em;
}
.vcard dd { .vcard dd {
font-size: 12px; font-size: 12px;
font-variant: normal; font-variant: normal;
@ -2164,20 +2168,20 @@ div[id$="wrapper"] br {
-webkit-border-radius: 5px; -webkit-border-radius: 5px;
} }
#side-bar-photos-albums { #sidebar-photos-albums {
} }
#photo-albums-upload-link { #photo-albums-upload-link {
margin: 20px; margin: 20px;
} }
#side-bar-photos-albums h3:before { #sidebar-photos-albums h3:before {
content: url("images/photography.png"); content: url("images/photography.png");
padding-right: 10px; padding-right: 10px;
vertical-align: middle; vertical-align: middle;
} }
#side-bar-photos-albums li { #sidebar-photos-albums li {
font-size: 14px; font-size: 14px;
font-variant: none; font-variant: none;
text-align: left; text-align: left;
@ -4554,7 +4558,8 @@ hr.line-dots {
.location-label, .location-label,
.gender-label, .gender-label,
.marital-label, .marital-label,
.homepage-label { .homepage-label,
.network-label {
float: left; float: left;
text-align: left; text-align: left;
display: block; display: block;
@ -4564,7 +4569,8 @@ hr.line-dots {
.adr, .adr,
.x-gender, .x-gender,
.marital-text, .marital-text,
.homepage-url { .homepage-url,
.x-network {
float: left; float: left;
display: block; display: block;
margin-left: 8px; margin-left: 8px;

View file

@ -419,9 +419,10 @@ code {
opacity: 1; opacity: 1;
} }
.sidebar-group-li:hover, #sidebar-new-group:hover, #sidebar-edit-groups:hover, #forum-widget-collapse:hover, .sidebar-group-li:hover, #sidebar-new-group:hover, #sidebar-edit-groups:hover,#forum-widget-collapse:hover,
#sidebar-ungrouped:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar li:hover, #forumlist-sidebar-right li:hover, #sidebar-ungrouped:hover, .side-link:hover, .nets-ul li:hover, #forumlist-sidebar li:hover, #forumlist-sidebar-right li:hover,
.nets-all:hover, .saved-search-li:hover, li.tool:hover, .admin.link:hover, aside h4 a:hover, right_aside h4 a:hover, #message-new:hover { .nets-all:hover, .saved-search-li:hover, li.tool:hover, .admin.link:hover, aside h4 a:hover, right_aside h4 a:hover, #message-new:hover,
#sidebar-photos-albums li:hover, .photos-upload-link:hover {
/* background-color: #ddd; */ /* background-color: #ddd; */
/* background-color: #e5e5e5; */ /* background-color: #e5e5e5; */
background-color: #F5F5F5; background-color: #F5F5F5;
@ -448,6 +449,12 @@ code {
display: block; display: block;
} }
.photos-upload-link {
padding-top: 3px;
padding-bottom: 3px;
display: block;
}
#forumlist-sidebar { #forumlist-sidebar {
padding-top: 3px; padding-top: 3px;
padding-bottom: 3px; padding-bottom: 3px;
@ -467,7 +474,7 @@ code {
display: inline-block; display: inline-block;
} }
a.nets-link, .side-link a, #sidebar-new-group a, #sidebar-edit-groups a, a.savedsearchterm, a.fileas-link, aside h4 a, right_aside h4 a { a.nets-link, .side-link a, #sidebar-new-group a, #sidebar-edit-groups a, a.savedsearchterm,a.fileas-link, aside h4 a, right_aside h4 a {
display: block; display: block;
color: #737373; color: #737373;
} }
@ -494,7 +501,7 @@ a.sidebar-group-element {
color: black; color: black;
} }
#forumlist-sidebar a, #forumlist-sidebar-right a, .tool a, .admin.link a { #forumlist-sidebar a, #forumlist-sidebar-right a, .tool a, .admin.link a, #sidebar-photos-albums a {
color: #737373; color: #737373;
} }
@ -993,11 +1000,17 @@ aside .vcard .fn {
} }
aside .vcard .title { aside .vcard .title {
margin-bottom: 5px; margin-bottom: 5px;
float: left;
} }
aside .vcard dl { aside .vcard dl {
height: auto; height: auto;
overflow: auto; overflow: auto;
} }
aside .vcard .account-type {
margin-bottom: 13px;
font-size: 14px;
font-weight: bold;
}
aside select { aside select {
background-color: white; background-color: white;

View file

@ -13,16 +13,17 @@
{{/if}} {{/if}}
</div> </div>
{{if $profile.faddr}}<div class="p-faddr">{{$profile.faddr}}</div>{{/if}} {{if $profile.addr}}<div class="p-addr">{{$profile.addr}}</div>{{/if}}
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $profile.pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $profile.picdate}} {{if $profile.picdate}}
<div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></a></div> <div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></a></div>
{{else}} {{else}}
<div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" src="{{$profile.photo}}" alt="{{$profile.name}}"></a></div> <div id="profile-photo-wrapper"><a href="{{$profile.url}}"><img class="photo u-photo" src="{{$profile.photo}}" alt="{{$profile.name}}"></a></div>
{{/if}} {{/if}}
{{if $account_type}}<div class="account-type">{{$account_type}}</div>{{/if}}
{{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}} {{if $profile.network_name}}<dl class="network"><dt class="network-label">{{$network}}</dt><dd class="x-network">{{$profile.network_name}}</dd></dl>{{/if}}
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt> <dl class="location"><dt class="location-label">{{$location}}</dt>