Merge remote-tracking branch 'upstream/develop' into 1412-api-attachments

pull/1272/head
Michael Vogel 2014-12-31 15:45:51 +01:00
commit d80c375220
16 changed files with 7697 additions and 7497 deletions

50
doc/Developers-Intro.md Normal file
View File

@ -0,0 +1,50 @@
Where to get started to help improve Friendica?
===============================================
* [Home](help)
Do you want to help us improve Friendica? Here we have compiled some hints on how to get started and some tasks to help you choose. A project like Friendica is the sum of many different contributions. **Very different skills are required to make good software. Some of them involve coding, others do not.** We are looking for helpers in all areas, whether you write text or code, whether you spread the word to convince people or design new icons. Whether you feel like an expert or like a newbie - join us with your ideas!
**Contact us**
The discussion of Friendica development takes place in the following Friendica forums:
* The main [forum for Friendica development](https://friendika.openmindspace.org/profile/friendicadevelopers)
* The [forum for Friendica theme development](https://friendica.eu/profile/ftdevs)
**Help other users**
Remember the questions you had when you first tried Friendica? A good place to start can be to help new people find their way around Friendica in the [general support forum](https://helpers.pyxis.uberspace.de/profile/helpers). Welcome them, answer their questions, point them to documentation or ping other helpers directly if you can't help but think you know who can.
**Translations**
The documentation contains help on how to translate Friendica in the /help/translations page.
* Check if the user interface has already been translated to your language.
* If not, we might want to start with translating the /help pages.
**Design**
Are you good at designing things? If you have seen Friendica you probably have ideas to improve it, haven't you?
* Make plans for a better Friendica interface design and share them with us.
* Tell us if you are able to realize your ideas or what kind of help you need. We can't promise we have the right skills in the group but we'll try.
* Choose a thing to start with, e.g. work on the icon set of your favourite theme
**Programming**
* **Issues:** Have a look at our issue tracker on gihub!
* Try to reproduce a bug that needs more inquries and write down what you find out.
* If a bug looks fixed, ask the bug reporters for feedback to find out if the bug can be closed.
* Fix a bug if you can.
* **Web interface:** The thing many people want most is a better interface, preferably a responsive Friendica theme. This is a piece of work! If you want to get involved here:
* Look at the first steps that were made (e.g. the clean theme). Ask us to find out whom to talk to about their experiences.
* Talk to design people if you know any.
* Let us know about your plans [in the dev forum](https://friendika.openmindspace.org/profile/friendicadevelopers) and the [theme developer forum](https://friendica.eu/profile/ftdevs). Do not worry about cross-posting.
* **Client software:** There are free software clients that do somehow work with Friendica but most of them need love and maintenance. Also, they were mostly made for other platforms using the StatusNet API. This means they lack:w
the features that are really specific to Friendica. Popular clients you might want to have a look at are:
* [Hotot (Linux)](http://hotot.org/) - abandoned
* [Friendica for Android](https://github.com/max-weller/friendica-for-android) - abandoned
* You can find more working client software in [Wikipedia](https://en.wikipedia.org/wiki/Friendica).

View File

@ -1,23 +0,0 @@
Friendica Developer Guide
===================
**Here is how you can join us.**
First, get yourself a working git package on the system where you will be
doing development.
Create your own github account.
You may fork/clone the Friendica repository from [https://github.com/friendica/friendica.git](https://github.com/friendica/friendica.git).
Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/)
to create and use your own tracking fork on github
Then go to your github page and create a "Pull request" when you are ready
to notify us to merge your work.
**Important**
Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.
Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Friendica developer to review the code.

36
doc/Github.md Normal file
View File

@ -0,0 +1,36 @@
Friendica on Github
===================
* [Home](help)
**Here is how you can work on the code with us**
1. Install git on the system you will be developing on.
2. Create your own [github](https://github.com) account.
3. Fork the Friendica repository from [https://github.com/friendica/friendica.git](https://github.com/friendica/friendica.git).
4. Clone your fork from your Github account to your machine. Follow the instructions provided here: [http://help.github.com/fork-a-repo/](http://help.github.com/fork-a-repo/) to create and use your own tracking fork on github
5. Commit your changes to your fork. Then go to your github page and create a "Pull request" to notify us to merge your work.
**Branches**
There are two branches in the main repo on Github:
1. master: This branch contains stable releases only.
2. develop: This branch contains the latest code. This is what you want to work with.
**Important**
Please pull in any changes from the project repository and merge them with your work **before** issuing a pull request. We reserve the right to reject any patch which results in a large number of merge conflicts. This is especially true in the case of language translations - where we may not be able to understand the subtle differences between conflicting versions.
Also - **test your changes**. Don't assume that a simple fix won't break something else. If possible get an experienced Friendica developer to review the code.
**Vagrant**
[Vagrant](https://www.vagrantup.com/) is a virtualization solution for developers. No need to setup up a webserver etc. before actually starting. Vagrant creates a virtual machine (an Ubuntu 12.04) for you that you can just run inside VirtualBox and start to work directly on Friendica. What you need to do:
1. Install VirtualBox and vagrant.
2. git clone Friendica (note the Vagrantfile inside).
3. Run vagrant up, have some patience.
4. Run vagrant ssh to log into the virtual machine.
5. It depends on the network setup of your host and virtual box guest how you reach the friendica web interface of the VM.

View File

@ -1,7 +1,7 @@
Friendica Documentation and Resources Friendica Documentation and Resources
===================================== =====================================
**Contents** **User Manual**
* General functions - first steps * General functions - first steps
* [Account Basics](help/Account-Basics) * [Account Basics](help/Account-Basics)
@ -10,7 +10,7 @@ Friendica Documentation and Resources
* [BBCode tag reference](help/BBCode) * [BBCode tag reference](help/BBCode)
* [Comment, sort and delete posts](help/Text_comment) * [Comment, sort and delete posts](help/Text_comment)
* [Profiles](help/Profiles) * [Profiles](help/Profiles)
* You and other user * You and other users
* [Connectors](help/Connectors) * [Connectors](help/Connectors)
* [Making Friends](help/Making-Friends) * [Making Friends](help/Making-Friends)
* [Groups and Privacy](help/Groups-and-Privacy) * [Groups and Privacy](help/Groups-and-Privacy)
@ -19,12 +19,11 @@ Friendica Documentation and Resources
* [Chats](help/Chats) * [Chats](help/Chats)
* Further information * Further information
* [Improve Performance](help/Improve-Performance) * [Improve Performance](help/Improve-Performance)
* [Move Account](help/Move-Account) * [Move your account](help/Move-Account)
* [Remove Account](help/Remove-Account) * [Delete your account](help/Remove-Account)
* [Bugs and Issues](help/Bugs-and-Issues)
* [Frequently asked questions (FAQ)](help/FAQ) * [Frequently asked questions (FAQ)](help/FAQ)
**Technical Documentation** **Admin Manual**
* [Install](help/Install) * [Install](help/Install)
* [Settings](help/Settings) * [Settings](help/Settings)
@ -32,10 +31,14 @@ Friendica Documentation and Resources
* [Installing Connectors (Facebook/Twitter/StatusNet)](help/Installing-Connectors) * [Installing Connectors (Facebook/Twitter/StatusNet)](help/Installing-Connectors)
* [Message Flow](help/Message-Flow) * [Message Flow](help/Message-Flow)
* [Using SSL with Friendica](help/SSL) * [Using SSL with Friendica](help/SSL)
* [Developers](help/Developers)
* [Twitter/StatusNet API Functions](help/api) * [Twitter/StatusNet API Functions](help/api)
* [Translation of Friendica](help/translations)
**Developer Manual**
* [Where to get started?](help/Developers-Intro)
* [Help on Github](help/Github)
* [How to translate Friendica](help/translations)
* [Bugs and Issues](help/Bugs-and-Issues)
**External Resources** **External Resources**

View File

@ -196,6 +196,24 @@ Current hooks:
'email' => email to look up the avatar for 'email' => email to look up the avatar for
'url' => the (string) generated URL of the avatar 'url' => the (string) generated URL of the avatar
**'emailer_send_prepare'** - called from Emailer::send() before building the mime message
$b is (array) , params to Emailer::send()
'fromName' => name of the sender
'fromEmail' => email fo the sender
'replyTo' => replyTo address to direct responses
'toEmail' => destination email address
'messageSubject' => subject of the message
'htmlVersion' => html version of the message
'textVersion' => text only version of the message
'additionalMailHeader' => additions to the smtp mail header
**'emailer_send'** - called before calling PHP's mail()
$b is (array) , params to mail()
'to'
'subject'
'body'
'headers'
A complete list of all hook callbacks with file locations (generated 14-Feb-2012): Please see the source for details of any hooks not documented above. A complete list of all hook callbacks with file locations (generated 14-Feb-2012): Please see the source for details of any hooks not documented above.

View File

@ -14,9 +14,12 @@ class Emailer {
* @param htmlVersion html version of the message * @param htmlVersion html version of the message
* @param textVersion text only version of the message * @param textVersion text only version of the message
* @param additionalMailHeader additions to the smtp mail header * @param additionalMailHeader additions to the smtp mail header
* @param optional uid user id of the destination user
*/ */
static public function send($params) { static public function send($params) {
call_hooks('emailer_send_prepare', $params);
$fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8'); $fromName = email_header_encode(html_entity_decode($params['fromName'],ENT_QUOTES,'UTF-8'),'UTF-8');
$messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8'); $messageSubject = email_header_encode(html_entity_decode($params['messageSubject'],ENT_QUOTES,'UTF-8'),'UTF-8');
@ -49,11 +52,18 @@ class Emailer {
"--" . $mimeBoundary . "--\n"; // message ending "--" . $mimeBoundary . "--\n"; // message ending
// send the message // send the message
$hookdata = array(
'to' => $params['toEmail'],
'subject' => $messageSubject,
'body' => $multipartMessageBody,
'headers' => $messageHeader
);
call_hooks("emailer_send", $hookdata);
$res = mail( $res = mail(
$params['toEmail'], // send to address $hookdata['to'], // send to address
$messageSubject, // subject $hookdata['subject'], // subject
$multipartMessageBody, // message body $hookdata['body'], // message body
$messageHeader // message headers $hookdata['headers'] // message headers
); );
logger("header " . 'To: ' . $params['toEmail'] . "\n" . $messageHeader, LOGGER_DEBUG); logger("header " . 'To: ' . $params['toEmail'] . "\n" . $messageHeader, LOGGER_DEBUG);
logger("return value " . (($res)?"true":"false"), LOGGER_DEBUG); logger("return value " . (($res)?"true":"false"), LOGGER_DEBUG);

View File

@ -197,6 +197,7 @@
} }
function api_error(&$a, $type, $error) { function api_error(&$a, $type, $error) {
# TODO: https://dev.twitter.com/overview/api/response-codes
$r = "<status><error>".$error."</error><request>".$a->query_string."</request></status>"; $r = "<status><error>".$error."</error><request>".$a->query_string."</request></status>";
switch($type){ switch($type){
case "xml": case "xml":
@ -884,7 +885,7 @@
'in_reply_to_user_id_str' => $in_reply_to_user_id_str, 'in_reply_to_user_id_str' => $in_reply_to_user_id_str,
'in_reply_to_screen_name' => $in_reply_to_screen_name, 'in_reply_to_screen_name' => $in_reply_to_screen_name,
'geo' => NULL, 'geo' => NULL,
'favorited' => false, 'favorited' => $lastwall['starred'] ? true : false,
// attachments // attachments
'user' => $user_info, 'user' => $user_info,
'statusnet_html' => trim(bbcode($lastwall['body'], false, false)), 'statusnet_html' => trim(bbcode($lastwall['body'], false, false)),
@ -983,7 +984,7 @@
'in_reply_to_user_id_str' => $in_reply_to_user_id_str, 'in_reply_to_user_id_str' => $in_reply_to_user_id_str,
'in_reply_to_screen_name' => $in_reply_to_screen_name, 'in_reply_to_screen_name' => $in_reply_to_screen_name,
'geo' => NULL, 'geo' => NULL,
'favorited' => false, 'favorited' => $lastwall['starred'] ? true : false,
'statusnet_html' => trim(bbcode($lastwall['body'], false, false)), 'statusnet_html' => trim(bbcode($lastwall['body'], false, false)),
'statusnet_conversation_id' => $lastwall['parent'], 'statusnet_conversation_id' => $lastwall['parent'],
); );
@ -1102,9 +1103,9 @@
// We aren't going to try to figure out at the item, group, and page // We aren't going to try to figure out at the item, group, and page
// level which items you've seen and which you haven't. If you're looking // level which items you've seen and which you haven't. If you're looking
// at the network timeline just mark everything seen. // at the network timeline just mark everything seen.
$r = q("UPDATE `item` SET `unseen` = 0 $r = q("UPDATE `item` SET `unseen` = 0
WHERE `unseen` = 1 AND `uid` = %d", WHERE `unseen` = 1 AND `uid` = %d",
//intval($user_info['uid']) //intval($user_info['uid'])
intval(api_user()) intval(api_user())
@ -1198,7 +1199,7 @@
api_register_func('api/statuses/public_timeline','api_statuses_public_timeline', true); api_register_func('api/statuses/public_timeline','api_statuses_public_timeline', true);
/** /**
* *
*/ */
function api_statuses_show(&$a, $type){ function api_statuses_show(&$a, $type){
if (api_user()===false) return false; if (api_user()===false) return false;
@ -1419,9 +1420,9 @@
api_register_func('api/statuses/destroy','api_statuses_destroy', true); api_register_func('api/statuses/destroy','api_statuses_destroy', true);
/** /**
* *
* http://developer.twitter.com/doc/get/statuses/mentions * http://developer.twitter.com/doc/get/statuses/mentions
* *
*/ */
function api_statuses_mentions(&$a, $type){ function api_statuses_mentions(&$a, $type){
if (api_user()===false) return false; if (api_user()===false) return false;
@ -1568,6 +1569,66 @@
api_register_func('api/statuses/user_timeline','api_statuses_user_timeline', true); api_register_func('api/statuses/user_timeline','api_statuses_user_timeline', true);
/**
* Star/unstar an item
* param: id : id of the item
*
* api v1 : https://web.archive.org/web/20131019055350/https://dev.twitter.com/docs/api/1/post/favorites/create/%3Aid
*/
function api_favorites_create_destroy(&$a, $type){
if (api_user()===false) return false;
# for versioned api.
# TODO: we need a better global soluton
$action_argv_id=2;
if ($a->argv[1]=="1.1") $action_argv_id=3;
if ($a->argc<=$action_argv_id) die(api_error($a, $type, t("Invalid request.")));
$action = str_replace(".".$type,"",$a->argv[$action_argv_id]);
if ($a->argc==$action_argv_id+2) {
$itemid = intval($a->argv[$action_argv_id+1]);
} else {
$itemid = intval($_REQUEST['id']);
}
if ($action!="create" && $action!="destroy") die(api_error($a, $type, t("Invalid action. ".$action)));
$item = q("SELECT * FROM item WHERE id=%d AND uid=%d",
$itemid, api_user());
if ($item===false || count($item)==0) die(api_error($a, $type, t("Invalid item.")));
switch($action){
case "create":
$r = q("UPDATE item SET starred=1 WHERE id=%d AND uid=%d",
$itemid, api_user());
$item[0]['starred']=1;
break;
case "destroy":
$r = q("UPDATE item SET starred=0 WHERE id=%d AND uid=%d",
$itemid, api_user());
$item[0]['starred']=0;
break;
}
if ($r===false) die(api_error($a, $type, t("DB error")));
$user_info = api_get_user($a);
$ret = api_format_items($item,$user_info)[0];
$data = array('$status' => $ret);
switch($type){
case "atom":
case "rss":
$data = api_rss_extra($a, $data, $user_info);
}
return api_apply_template("status", $type, $data);
}
api_register_func('api/favorites/create', 'api_favorites_create_destroy', true);
api_register_func('api/favorites/destroy', 'api_favorites_create_destroy', true);
function api_favorites(&$a, $type){ function api_favorites(&$a, $type){
global $called_api; global $called_api;
@ -1603,7 +1664,7 @@
`contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`, `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
`contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid` `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
FROM `item`, `contact` FROM `item`, `contact`
WHERE `item`.`uid` = %d AND `verb` = '%s' WHERE `item`.`uid` = %d
AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0 AND `item`.`visible` = 1 and `item`.`moderated` = 0 AND `item`.`deleted` = 0
AND `item`.`starred` = 1 AND `item`.`starred` = 1
AND `contact`.`id` = `item`.`contact-id` AND `contact`.`id` = `item`.`contact-id`
@ -1612,7 +1673,6 @@
AND `item`.`id`>%d AND `item`.`id`>%d
ORDER BY `item`.`id` DESC LIMIT %d ,%d ", ORDER BY `item`.`id` DESC LIMIT %d ,%d ",
intval(api_user()), intval(api_user()),
dbesc(ACTIVITY_POST),
intval($since_id), intval($since_id),
intval($start), intval($count) intval($start), intval($count)
); );
@ -1633,6 +1693,9 @@
api_register_func('api/favorites','api_favorites', true); api_register_func('api/favorites','api_favorites', true);
function api_format_as($a, $ret, $user_info) { function api_format_as($a, $ret, $user_info) {
$as = array(); $as = array();
@ -1907,7 +1970,7 @@
$text); $text);
return $text; return $text;
} }
function api_format_items($r,$user_info, $filter_user = false) { function api_format_items($r,$user_info, $filter_user = false) {
$a = get_app(); $a = get_app();
@ -1965,23 +2028,23 @@
//$statusbody = trim(html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 5, true), 0)); //$statusbody = trim(html2plain(bbcode(api_clean_plain_items($item['body']), false, false, 5, true), 0));
$html = bbcode(api_clean_plain_items($item['body']), false, false, 2, true); $html = bbcode(api_clean_plain_items($item['body']), false, false, 2, true);
$statusbody = trim(html2plain($html, 0)); $statusbody = trim(html2plain($html, 0));
// handle data: images // handle data: images
$statusbody = api_format_items_embeded_images($item,$statusbody); $statusbody = api_format_items_embeded_images($item,$statusbody);
$statustitle = trim($item['title']); $statustitle = trim($item['title']);
if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false)) if (($statustitle != '') and (strpos($statusbody, $statustitle) !== false))
$statustext = trim($statusbody); $statustext = trim($statusbody);
else else
$statustext = trim($statustitle."\n\n".$statusbody); $statustext = trim($statustitle."\n\n".$statusbody);
if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000)) if (($item["network"] == NETWORK_FEED) and (strlen($statustext)> 1000))
$statustext = substr($statustext, 0, 1000)."... \n".$item["plink"]; $statustext = substr($statustext, 0, 1000)."... \n".$item["plink"];
$statushtml = trim(bbcode($item['body'], false, false)); $statushtml = trim(bbcode($item['body'], false, false));
$status = array( $status = array(
'text' => $statustext, 'text' => $statustext,
'truncated' => False, 'truncated' => False,
@ -2367,7 +2430,7 @@
if ($user_id !="") { if ($user_id !="") {
$sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id); $sql_extra .= ' AND `mail`.`contact-id` = ' . intval($user_id);
} }
elseif($screen_name !=""){ elseif($screen_name !=""){
$sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'"; $sql_extra .= " AND `contact`.`nick` = '" . dbesc($screen_name). "'";
} }
@ -2377,7 +2440,7 @@
intval($since_id), intval($since_id),
intval($start), intval($count) intval($start), intval($count)
); );
$ret = Array(); $ret = Array();
foreach($r as $item) { foreach($r as $item) {
@ -2479,7 +2542,7 @@
echo json_encode($r[0]); echo json_encode($r[0]);
} }
killme(); killme();
} }
api_register_func('api/friendica/photos/list', 'api_fr_photos_list', true); api_register_func('api/friendica/photos/list', 'api_fr_photos_list', true);
@ -2697,9 +2760,6 @@ function api_best_nickname(&$contacts) {
/* /*
Not implemented by now: Not implemented by now:
favorites
favorites/create
favorites/destroy
statuses/retweets_of_me statuses/retweets_of_me
friendships/create friendships/create
friendships/destroy friendships/destroy

View File

@ -598,6 +598,7 @@ function notification($params) {
// use the Emailer class to send the message // use the Emailer class to send the message
return Emailer::send(array( return Emailer::send(array(
'uid' => $params['uid'],
'fromName' => $sender_name, 'fromName' => $sender_name,
'fromEmail' => $sender_email, 'fromEmail' => $sender_email,
'replyTo' => $sender_email, 'replyTo' => $sender_email,

View File

@ -1183,8 +1183,6 @@ function photos_content(&$a) {
intval($a->pager['itemspage']) intval($a->pager['itemspage'])
); );
$o .= '<h3 id="photo-album-title">' . $album . '</h3>';
if($cmd === 'edit') { if($cmd === 'edit') {
if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
if($can_post) { if($can_post) {
@ -1211,25 +1209,18 @@ function photos_content(&$a) {
else { else {
if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) { if(($album !== t('Profile Photos')) && ($album !== 'Contact Photos') && ($album !== t('Contact Photos'))) {
if($can_post) { if($can_post) {
$o .= '<div id="album-edit-link"><a href="'. $a->get_baseurl() . '/photos/' $edit = array(t('Edit Album'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/edit');
. $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '/edit' . '">'
. t('Edit Album') . '</a></div>';
} }
} }
} }
if($_GET['order'] === 'posted') if($_GET['order'] === 'posted')
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '" >' . t('Show Newest First') . '</a></div>'; $order = array(t('Show Newest First'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album));
else else
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '?f=&order=posted" >' . t('Show Oldest First') . '</a></div>'; $order = array(t('Show Oldest First'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($album) . '?f=&order=posted');
$photos = array();
if($can_post) {
$o .= '<div class="photos-upload-link" ><a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload/' . bin2hex($album) . '" >' . t('Upload New Photos') . '</a></div>';
}
$tpl = get_markup_template('photo_album.tpl');
if(count($r)) if(count($r))
$twist = 'rotright'; $twist = 'rotright';
foreach($r as $rr) { foreach($r as $rr) {
@ -1248,20 +1239,31 @@ function photos_content(&$a) {
$imgalt_e = $rr['filename']; $imgalt_e = $rr['filename'];
$desc_e = $rr['desc']; $desc_e = $rr['desc'];
} }
$o .= replace_macros($tpl,array( $photos[] = array(
'$id' => $rr['id'], 'id' => $rr['id'],
'$twist' => ' ' . $twist . rand(2,4), 'twist' => ' ' . $twist . rand(2,4),
'$photolink' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id'] 'link' => $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $rr['resource-id']
. (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''), . (($_GET['order'] === 'posted') ? '?f=&order=posted' : ''),
'$phototitle' => t('View Photo'), 'title' => t('View Photo'),
'$imgsrc' => $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' .$ext, 'src' => $a->get_baseurl() . '/photo/' . $rr['resource-id'] . '-' . $rr['scale'] . '.' .$ext,
'$imgalt' => $imgalt_e, 'alt' => $imgalt_e,
'$desc'=> $desc_e 'desc'=> $desc_e,
)); 'ext' => $ext,
'hash'=> $rr['resource_id'],
);
} }
$o .= '<div id="photo-album-end"></div>';
$tpl = get_markup_template('photo_album.tpl');
$o .= replace_macros($tpl, array(
'$photos' => $photos,
'$album' => $album,
'$can_post' => $can_post,
'$upload' => array(t('Upload New Photos'), $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/upload/' . bin2hex($album)),
'$order' => $order,
'$edit' => $edit
));
$o .= paginate($a); $o .= paginate($a);
return $o; return $o;

View File

@ -9,6 +9,7 @@
# Lionel Triay <zapimax38@free.fr>, 2013 # Lionel Triay <zapimax38@free.fr>, 2013
# Marquis_de_Carabas <olivier@free-beer.ch>, 2012 # Marquis_de_Carabas <olivier@free-beer.ch>, 2012
# Olivier <olivier+transifex@migeot.org>, 2011-2012 # Olivier <olivier+transifex@migeot.org>, 2011-2012
# Sylvain Lagacé, 2014
# tomamplius <thomas@lgy.fr>, 2014 # tomamplius <thomas@lgy.fr>, 2014
# Tubuntu <tubuntu@testimonium.be>, 2013-2014 # Tubuntu <tubuntu@testimonium.be>, 2013-2014
msgid "" msgid ""
@ -16,8 +17,8 @@ msgstr ""
"Project-Id-Version: friendica\n" "Project-Id-Version: friendica\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2014-10-22 10:05+0200\n" "POT-Creation-Date: 2014-10-22 10:05+0200\n"
"PO-Revision-Date: 2014-12-09 10:59+0000\n" "PO-Revision-Date: 2014-12-30 15:30+0000\n"
"Last-Translator: Jak <jacques@riseup.net>\n" "Last-Translator: Sylvain Lagacé\n"
"Language-Team: French (http://www.transifex.com/projects/p/friendica/language/fr/)\n" "Language-Team: French (http://www.transifex.com/projects/p/friendica/language/fr/)\n"
"MIME-Version: 1.0\n" "MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n" "Content-Type: text/plain; charset=UTF-8\n"
@ -74,15 +75,15 @@ msgstr "mis en avant"
#: ../../object/Item.php:208 #: ../../object/Item.php:208
msgid "ignore thread" msgid "ignore thread"
msgstr "" msgstr "ignorer le fil"
#: ../../object/Item.php:209 #: ../../object/Item.php:209
msgid "unignore thread" msgid "unignore thread"
msgstr "" msgstr "Ne plus ignorer le fil"
#: ../../object/Item.php:210 #: ../../object/Item.php:210
msgid "toggle ignore status" msgid "toggle ignore status"
msgstr "" msgstr "Ignorer le statut"
#: ../../object/Item.php:213 #: ../../object/Item.php:213
msgid "ignored" msgid "ignored"
@ -1338,13 +1339,13 @@ msgstr "Fourni nativement la compatibilité avec OStatus (StatusNet, GNU Social
#: ../../mod/admin.php:634 #: ../../mod/admin.php:634
msgid "OStatus conversation completion interval" msgid "OStatus conversation completion interval"
msgstr "" msgstr "Achèvement de l'intervalle de conversation OStatus "
#: ../../mod/admin.php:634 #: ../../mod/admin.php:634
msgid "" msgid ""
"How often shall the poller check for new entries in OStatus conversations? " "How often shall the poller check for new entries in OStatus conversations? "
"This can be a very ressource task." "This can be a very ressource task."
msgstr "" msgstr "Combien de fois le poller devra vérifier les nouvelles entrées dans les conversations OStatus? Cela peut utilisé beaucoup de ressources."
#: ../../mod/admin.php:635 #: ../../mod/admin.php:635
msgid "Enable Diaspora support" msgid "Enable Diaspora support"
@ -1451,7 +1452,7 @@ msgstr "Durée du cache en secondes"
msgid "" msgid ""
"How long should the cache files be hold? Default value is 86400 seconds (One" "How long should the cache files be hold? Default value is 86400 seconds (One"
" day). To disable the item cache, set the value to -1." " day). To disable the item cache, set the value to -1."
msgstr "" msgstr "Combien de temps les fichiers de cache doivent être maintenu? La valeur par défaut est 86400 secondes (une journée). Pour désactiver le cache de l'item, définissez la valeur à -1."
#: ../../mod/admin.php:649 #: ../../mod/admin.php:649
msgid "Maximum numbers of comments per post" msgid "Maximum numbers of comments per post"
@ -1475,13 +1476,13 @@ msgstr "Chemin de base de l'installation"
#: ../../mod/admin.php:653 #: ../../mod/admin.php:653
msgid "Disable picture proxy" msgid "Disable picture proxy"
msgstr "" msgstr "Désactiver le proxy image "
#: ../../mod/admin.php:653 #: ../../mod/admin.php:653
msgid "" msgid ""
"The picture proxy increases performance and privacy. It shouldn't be used on" "The picture proxy increases performance and privacy. It shouldn't be used on"
" systems with very low bandwith." " systems with very low bandwith."
msgstr "" msgstr "Le proxy d'image augmente les performances et l'intimité. Il ne devrait pas être utilisé sur des systèmes avec une très faible bande passante."
#: ../../mod/admin.php:655 #: ../../mod/admin.php:655
msgid "New base url" msgid "New base url"
@ -1489,14 +1490,14 @@ msgstr "Nouvelle URL de base"
#: ../../mod/admin.php:657 #: ../../mod/admin.php:657
msgid "Disable noscrape" msgid "Disable noscrape"
msgstr "" msgstr "Désactiver le noscrape"
#: ../../mod/admin.php:657 #: ../../mod/admin.php:657
msgid "" msgid ""
"The noscrape feature speeds up directory submissions by using JSON data " "The noscrape feature speeds up directory submissions by using JSON data "
"instead of HTML scraping. Disabling it will cause higher load on your server" "instead of HTML scraping. Disabling it will cause higher load on your server"
" and the directory server." " and the directory server."
msgstr "" msgstr "La fonction de noscrape accélère les répertoires de mémoire en utilisant des données JSON lieu de grattage HTML. En le désactivant il entraîne une charge plus élevée sur votre serveur et le serveur d'annuaire."
#: ../../mod/admin.php:674 #: ../../mod/admin.php:674
msgid "Update has been marked successful" msgid "Update has been marked successful"
@ -1505,17 +1506,17 @@ msgstr "Mise-à-jour validée comme 'réussie'"
#: ../../mod/admin.php:682 #: ../../mod/admin.php:682
#, php-format #, php-format
msgid "Database structure update %s was successfully applied." msgid "Database structure update %s was successfully applied."
msgstr "" msgstr "La structure de base de données pour la mise à jour %s a été appliquée avec succès."
#: ../../mod/admin.php:685 #: ../../mod/admin.php:685
#, php-format #, php-format
msgid "Executing of database structure update %s failed with error: %s" msgid "Executing of database structure update %s failed with error: %s"
msgstr "" msgstr "L'exécution de la mise à jour %s pour la structure de base de données a échoué avec l'erreur: %s"
#: ../../mod/admin.php:697 #: ../../mod/admin.php:697
#, php-format #, php-format
msgid "Executing %s failed with error: %s" msgid "Executing %s failed with error: %s"
msgstr "" msgstr "L'exécution %s a échoué avec l'erreur: %s"
#: ../../mod/admin.php:700 #: ../../mod/admin.php:700
#, php-format #, php-format
@ -1530,7 +1531,7 @@ msgstr "La mise-à-jour %s n'a pas retourné de détails. Impossible de savoir s
#: ../../mod/admin.php:706 #: ../../mod/admin.php:706
#, php-format #, php-format
msgid "There was no additional update function %s that needed to be called." msgid "There was no additional update function %s that needed to be called."
msgstr "" msgstr "Il n'y avait aucune fonction supplémentaire de mise à jour %s qui devait être appelé"
#: ../../mod/admin.php:725 #: ../../mod/admin.php:725
msgid "No failed updates." msgid "No failed updates."
@ -3043,11 +3044,11 @@ msgstr "Notification des nouvelles publications"
#: ../../mod/contacts.php:504 #: ../../mod/contacts.php:504
msgid "Send a notification of every new post of this contact" msgid "Send a notification of every new post of this contact"
msgstr "" msgstr "Envoyer une notification de chaque nouveau message en provenance de ce contact"
#: ../../mod/contacts.php:505 #: ../../mod/contacts.php:505
msgid "Fetch further information for feeds" msgid "Fetch further information for feeds"
msgstr "" msgstr "Chercher plus d'informations pour les flux"
#: ../../mod/contacts.php:556 #: ../../mod/contacts.php:556
msgid "Suggestions" msgid "Suggestions"
@ -3816,11 +3817,11 @@ msgstr "Ne pas afficher les émoticônes (smileys grahiques)"
#: ../../mod/settings.php:887 #: ../../mod/settings.php:887
msgid "Don't show notices" msgid "Don't show notices"
msgstr "" msgstr "Ne plus afficher les avis"
#: ../../mod/settings.php:888 #: ../../mod/settings.php:888
msgid "Infinite scroll" msgid "Infinite scroll"
msgstr "" msgstr "Défilement infini"
#: ../../mod/settings.php:889 #: ../../mod/settings.php:889
msgid "Automatic updates only at the top of the network page" msgid "Automatic updates only at the top of the network page"

View File

@ -15,9 +15,9 @@ $a->strings["add star"] = "mett en avant";
$a->strings["remove star"] = "ne plus mettre en avant"; $a->strings["remove star"] = "ne plus mettre en avant";
$a->strings["toggle star status"] = "mettre en avant"; $a->strings["toggle star status"] = "mettre en avant";
$a->strings["starred"] = "mis en avant"; $a->strings["starred"] = "mis en avant";
$a->strings["ignore thread"] = ""; $a->strings["ignore thread"] = "ignorer le fil";
$a->strings["unignore thread"] = ""; $a->strings["unignore thread"] = "Ne plus ignorer le fil";
$a->strings["toggle ignore status"] = ""; $a->strings["toggle ignore status"] = "Ignorer le statut";
$a->strings["ignored"] = "ignoré"; $a->strings["ignored"] = "ignoré";
$a->strings["add tag"] = "ajouter une étiquette"; $a->strings["add tag"] = "ajouter une étiquette";
$a->strings["I like this (toggle)"] = "J'aime (bascule)"; $a->strings["I like this (toggle)"] = "J'aime (bascule)";
@ -290,8 +290,8 @@ $a->strings["Show Community Page"] = "Montrer la \"Place publique\"";
$a->strings["Display a Community page showing all recent public postings on this site."] = "Afficher une page Communauté avec toutes les publications publiques récentes du site."; $a->strings["Display a Community page showing all recent public postings on this site."] = "Afficher une page Communauté avec toutes les publications publiques récentes du site.";
$a->strings["Enable OStatus support"] = "Activer le support d'OStatus"; $a->strings["Enable OStatus support"] = "Activer le support d'OStatus";
$a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Fourni nativement la compatibilité avec OStatus (StatusNet, GNU Social etc.). Touts les communications utilisant OStatus sont public, des avertissements liés à la vie privée seront affichés si utile."; $a->strings["Provide built-in OStatus (StatusNet, GNU Social etc.) compatibility. All communications in OStatus are public, so privacy warnings will be occasionally displayed."] = "Fourni nativement la compatibilité avec OStatus (StatusNet, GNU Social etc.). Touts les communications utilisant OStatus sont public, des avertissements liés à la vie privée seront affichés si utile.";
$a->strings["OStatus conversation completion interval"] = ""; $a->strings["OStatus conversation completion interval"] = "Achèvement de l'intervalle de conversation OStatus ";
$a->strings["How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."] = ""; $a->strings["How often shall the poller check for new entries in OStatus conversations? This can be a very ressource task."] = "Combien de fois le poller devra vérifier les nouvelles entrées dans les conversations OStatus? Cela peut utilisé beaucoup de ressources.";
$a->strings["Enable Diaspora support"] = "Activer le support de Diaspora"; $a->strings["Enable Diaspora support"] = "Activer le support de Diaspora";
$a->strings["Provide built-in Diaspora network compatibility."] = "Fournir une compatibilité Diaspora intégrée."; $a->strings["Provide built-in Diaspora network compatibility."] = "Fournir une compatibilité Diaspora intégrée.";
$a->strings["Only allow Friendica contacts"] = "N'autoriser que les contacts Friendica"; $a->strings["Only allow Friendica contacts"] = "N'autoriser que les contacts Friendica";
@ -314,24 +314,24 @@ $a->strings["Suppress Language"] = "Supprimer un langage";
$a->strings["Suppress language information in meta information about a posting."] = "Supprimer les informations de langue dans les métadonnées des publications."; $a->strings["Suppress language information in meta information about a posting."] = "Supprimer les informations de langue dans les métadonnées des publications.";
$a->strings["Path to item cache"] = "Chemin vers le cache des objets."; $a->strings["Path to item cache"] = "Chemin vers le cache des objets.";
$a->strings["Cache duration in seconds"] = "Durée du cache en secondes"; $a->strings["Cache duration in seconds"] = "Durée du cache en secondes";
$a->strings["How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1."] = ""; $a->strings["How long should the cache files be hold? Default value is 86400 seconds (One day). To disable the item cache, set the value to -1."] = "Combien de temps les fichiers de cache doivent être maintenu? La valeur par défaut est 86400 secondes (une journée). Pour désactiver le cache de l'item, définissez la valeur à -1.";
$a->strings["Maximum numbers of comments per post"] = "Nombre maximum de commentaires par publication"; $a->strings["Maximum numbers of comments per post"] = "Nombre maximum de commentaires par publication";
$a->strings["How much comments should be shown for each post? Default value is 100."] = "Combien de commentaires doivent être affichés pour chaque publication? Valeur par défaut: 100."; $a->strings["How much comments should be shown for each post? Default value is 100."] = "Combien de commentaires doivent être affichés pour chaque publication? Valeur par défaut: 100.";
$a->strings["Path for lock file"] = "Chemin vers le ficher de verrouillage"; $a->strings["Path for lock file"] = "Chemin vers le ficher de verrouillage";
$a->strings["Temp path"] = "Chemin des fichiers temporaires"; $a->strings["Temp path"] = "Chemin des fichiers temporaires";
$a->strings["Base path to installation"] = "Chemin de base de l'installation"; $a->strings["Base path to installation"] = "Chemin de base de l'installation";
$a->strings["Disable picture proxy"] = ""; $a->strings["Disable picture proxy"] = "Désactiver le proxy image ";
$a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = ""; $a->strings["The picture proxy increases performance and privacy. It shouldn't be used on systems with very low bandwith."] = "Le proxy d'image augmente les performances et l'intimité. Il ne devrait pas être utilisé sur des systèmes avec une très faible bande passante.";
$a->strings["New base url"] = "Nouvelle URL de base"; $a->strings["New base url"] = "Nouvelle URL de base";
$a->strings["Disable noscrape"] = ""; $a->strings["Disable noscrape"] = "Désactiver le noscrape";
$a->strings["The noscrape feature speeds up directory submissions by using JSON data instead of HTML scraping. Disabling it will cause higher load on your server and the directory server."] = ""; $a->strings["The noscrape feature speeds up directory submissions by using JSON data instead of HTML scraping. Disabling it will cause higher load on your server and the directory server."] = "La fonction de noscrape accélère les répertoires de mémoire en utilisant des données JSON lieu de grattage HTML. En le désactivant il entraîne une charge plus élevée sur votre serveur et le serveur d'annuaire.";
$a->strings["Update has been marked successful"] = "Mise-à-jour validée comme 'réussie'"; $a->strings["Update has been marked successful"] = "Mise-à-jour validée comme 'réussie'";
$a->strings["Database structure update %s was successfully applied."] = ""; $a->strings["Database structure update %s was successfully applied."] = "La structure de base de données pour la mise à jour %s a été appliquée avec succès.";
$a->strings["Executing of database structure update %s failed with error: %s"] = ""; $a->strings["Executing of database structure update %s failed with error: %s"] = "L'exécution de la mise à jour %s pour la structure de base de données a échoué avec l'erreur: %s";
$a->strings["Executing %s failed with error: %s"] = ""; $a->strings["Executing %s failed with error: %s"] = "L'exécution %s a échoué avec l'erreur: %s";
$a->strings["Update %s was successfully applied."] = "Mise-à-jour %s appliquée avec succès."; $a->strings["Update %s was successfully applied."] = "Mise-à-jour %s appliquée avec succès.";
$a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise-à-jour %s n'a pas retourné de détails. Impossible de savoir si elle a réussi."; $a->strings["Update %s did not return a status. Unknown if it succeeded."] = "La mise-à-jour %s n'a pas retourné de détails. Impossible de savoir si elle a réussi.";
$a->strings["There was no additional update function %s that needed to be called."] = ""; $a->strings["There was no additional update function %s that needed to be called."] = "Il n'y avait aucune fonction supplémentaire de mise à jour %s qui devait être appelé";
$a->strings["No failed updates."] = "Pas de mises-à-jour échouées."; $a->strings["No failed updates."] = "Pas de mises-à-jour échouées.";
$a->strings["Check database structure"] = "Vérifier la structure de la base de données"; $a->strings["Check database structure"] = "Vérifier la structure de la base de données";
$a->strings["Failed Updates"] = "Mises-à-jour échouées"; $a->strings["Failed Updates"] = "Mises-à-jour échouées";
@ -672,8 +672,8 @@ $a->strings["Currently ignored"] = "Actuellement ignoré";
$a->strings["Currently archived"] = "Actuellement archivé"; $a->strings["Currently archived"] = "Actuellement archivé";
$a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Les réponses et \"j'aime\" à vos publications publiques <strong>peuvent</strong> être toujours visibles"; $a->strings["Replies/likes to your public posts <strong>may</strong> still be visible"] = "Les réponses et \"j'aime\" à vos publications publiques <strong>peuvent</strong> être toujours visibles";
$a->strings["Notification for new posts"] = "Notification des nouvelles publications"; $a->strings["Notification for new posts"] = "Notification des nouvelles publications";
$a->strings["Send a notification of every new post of this contact"] = ""; $a->strings["Send a notification of every new post of this contact"] = "Envoyer une notification de chaque nouveau message en provenance de ce contact";
$a->strings["Fetch further information for feeds"] = ""; $a->strings["Fetch further information for feeds"] = "Chercher plus d'informations pour les flux";
$a->strings["Suggestions"] = "Suggestions"; $a->strings["Suggestions"] = "Suggestions";
$a->strings["Suggest potential friends"] = "Suggérer des amis potentiels"; $a->strings["Suggest potential friends"] = "Suggérer des amis potentiels";
$a->strings["All Contacts"] = "Tous les contacts"; $a->strings["All Contacts"] = "Tous les contacts";
@ -844,8 +844,8 @@ $a->strings["Number of items to display per page:"] = "Nombre déléments par
$a->strings["Maximum of 100 items"] = "Maximum de 100 éléments"; $a->strings["Maximum of 100 items"] = "Maximum de 100 éléments";
$a->strings["Number of items to display per page when viewed from mobile device:"] = "Nombre d'éléments a afficher par page pour un appareil mobile"; $a->strings["Number of items to display per page when viewed from mobile device:"] = "Nombre d'éléments a afficher par page pour un appareil mobile";
$a->strings["Don't show emoticons"] = "Ne pas afficher les émoticônes (smileys grahiques)"; $a->strings["Don't show emoticons"] = "Ne pas afficher les émoticônes (smileys grahiques)";
$a->strings["Don't show notices"] = ""; $a->strings["Don't show notices"] = "Ne plus afficher les avis";
$a->strings["Infinite scroll"] = ""; $a->strings["Infinite scroll"] = "Défilement infini";
$a->strings["Automatic updates only at the top of the network page"] = ""; $a->strings["Automatic updates only at the top of the network page"] = "";
$a->strings["User Types"] = ""; $a->strings["User Types"] = "";
$a->strings["Community Types"] = ""; $a->strings["Community Types"] = "";

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +1,19 @@
<h3 id="photo-album-title">{{$album}}</h3>
{{if $edit}}
<div id="album-edit-link"><a href="{{$edit.1}}" title="{{$edit.0}}">{{$edit.0}}</a></div>
{{/if}}
<div class="photos-upload-link" ><a href="{{$order.1}}" title="{{$order.0}}">{{$order.0}}</a></div>
{{if $can_post}}
<div class="photos-upload-link" ><a href="{{$upload.1}}">{{$upload.0}}</a></div>
{{/if}}
{{foreach $photos as $photo}}
<div class="photo-album-image-wrapper" id="photo-album-image-wrapper-{{$id}}"> <div class="photo-album-image-wrapper" id="photo-album-image-wrapper-{{$id}}">
<a href="{{$photolink}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$id}}" title="{{$phototitle}}"> <a href="{{$photo.link}}" class="photo-album-photo-link" id="photo-album-photo-link-{{$id}}" title="{{$photo.title}}">
<img src="{{$imgsrc}}" alt="{{$imgalt}}" title="{{$phototitle}}" class="photo-album-photo lframe resize{{$twist}}" id="photo-album-photo-{{$id}}" /> <img src="{{$photo.src}}" alt="{{if $photo.album.name}}{{$photo.album.name}}{{elseif $photo.desc}}{{$photo.desc}}{{elseif $photo.alt}}{{$photo.alt}}{{else}}{{$photo.unknown}}{{/if}}" title="{{$photo.title}}" class="photo-album-photo lframe resize{{$twist}}" id="photo-album-photo-{{$id}}" />
<p class='caption'>{{$desc}}</p> <p class='caption'>{{$photo.desc}}</p>
</a> </a>
</div> </div>
<div class="photo-album-image-wrapper-end"></div> <div class="photo-album-image-wrapper-end"></div>
{{/foreach}}

View File

@ -1,39 +1,39 @@
<div class="vcard"> <div class="vcard h-card">
<div class="fn label">{{$profile.name}}</div> <div class="fn label p-name">{{$profile.name}}</div>
{{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}} {{if $pdesc}}<div class="title">{{$profile.pdesc}}</div>{{/if}}
{{if $profile.picdate}} {{if $profile.picdate}}
<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 u-photo" width="175" height="175" src="{{$profile.photo}}?rev={{$profile.picdate}}" alt="{{$profile.name}}"></div>
{{else}} {{else}}
<div id="profile-photo-wrapper"><img class="photo" width="175" height="175" src="{{$profile.photo}}" alt="{{$profile.name}}"></div> <div id="profile-photo-wrapper"><img class="photo u-photo" width="175" height="175" src="{{$profile.photo}}" alt="{{$profile.name}}"></div>
{{/if}} {{/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>
<dd class="adr"> <dd class="adr">
{{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>
<span class="postal-code">{{$profile.postal_code}}</span> <span class="postal-code p-postal-code">{{$profile.postal_code}}</span>
</span> </span>
{{if $profile.country_name}}<span class="country-name">{{$profile.country_name}}</span>{{/if}} {{if $profile.country_name}}<span class="country-name p-country-name">{{$profile.country_name}}</span>{{/if}}
</dd> </dd>
</dl> </dl>
{{/if}} {{/if}}
{{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender">{{$profile.gender}}</dd></dl>{{/if}} {{if $gender}}<dl class="mf"><dt class="gender-label">{{$gender}}</dt> <dd class="x-gender p-gender-identity">{{$profile.gender}}</dd></dl>{{/if}}
{{if $profile.pubkey}}<div class="key" style="display:none;">{{$profile.pubkey}}</div>{{/if}} {{if $profile.pubkey}}<div class="key u-key" style="display:none;">{{$profile.pubkey}}</div>{{/if}}
{{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}} {{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
{{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" target="_blank">{{$profile.homepage}}</a></dd></dl>{{/if}} {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url u-url"><a href="{{$profile.homepage}}" rel="me" target="_blank">{{$profile.homepage}}</a></dd></dl>{{/if}}
{{include file="diaspora_vcard.tpl"}} {{include file="diaspora_vcard.tpl"}}

View File

@ -1,15 +1,15 @@
<div class="vcard"> <div class="vcard h-card">
<div class="tool"> <div class="tool">
<div class="fn label">{{$profile.name}}</div> <div class="fn label p-name">{{$profile.name}}</div>
{{if $profile.edit}} {{if $profile.edit}}
<div class="action"> <div class="action">
<a class="icon s16 edit ttright" href="#" rel="#profiles-menu" title="{{$profile.edit.3}}"><span>{{$profile.edit.1}}</span></a> <a class="icon s16 edit ttright" href="#" rel="#profiles-menu" title="{{$profile.edit.3}}"><span>{{$profile.edit.1}}</span></a>
<ul id="profiles-menu" class="menu-popup"> <ul id="profiles-menu" class="menu-popup">
{{foreach $profile.menu.entries as $e}} {{foreach $profile.menu.entries as $e}}
<li> <li>
<a href="profiles/{{$e.id}}"><img src='{{$e.photo}}'>{{$e.profile_name}}</a> <a href="profiles/{{$e.id}}"><img class="u-photo" src='{{$e.photo}}'>{{$e.profile_name}}</a>
</li> </li>
{{/foreach}} {{/foreach}}
<li><a href="profile_photo" >{{$profile.menu.chg_photo}}</a></li> <li><a href="profile_photo" >{{$profile.menu.chg_photo}}</a></li>
@ -36,11 +36,11 @@
{{if $location}} {{if $location}}
<dl class="location"><dt class="location-label">{{$location}}</dt><br> <dl class="location"><dt class="location-label">{{$location}}</dt><br>
<dd class="adr"> <dd class="adr">
{{if $profile.address}}<div class="street-address">{{$profile.address}}</div>{{/if}} {{if $profile.address}}<div class="street-address p-street-address">{{$profile.address}}</div>{{/if}}
<span class="city-state-zip"> <span class="city-state-zip">
<span class="locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}} <span class="locality p-locality">{{$profile.locality}}</span>{{if $profile.locality}}, {{/if}}
<span class="region">{{$profile.region}}</span> <span class="region p-region">{{$profile.region}}</span>
<span class="postal-code">{{$profile.postal_code}}</span> <span class="postal-code p-postal-code">{{$profile.postal_code}}</span>
</span> </span>
{{if $profile.country_name}}<span class="country-name">{{$profile.country_name}}</span>{{/if}} {{if $profile.country_name}}<span class="country-name">{{$profile.country_name}}</span>{{/if}}
</dd> </dd>
@ -53,7 +53,7 @@
{{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}} {{if $marital}}<dl class="marital"><dt class="marital-label"><span class="heart">&hearts;</span>{{$marital}}</dt><dd class="marital-text">{{$profile.marital}}</dd></dl>{{/if}}
{{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" target="_blank">{{$profile.homepage}}</a></dd></dl>{{/if}} {{if $homepage}}<dl class="homepage"><dt class="homepage-label">{{$homepage}}</dt><dd class="homepage-url"><a href="{{$profile.homepage}}" class="u-url" rel="me" target="_blank">{{$profile.homepage}}</a></dd></dl>{{/if}}
{{include file="diaspora_vcard.tpl"}} {{include file="diaspora_vcard.tpl"}}