Merge remote-tracking branch 'upstream/develop' into 1505-ostatus

This commit is contained in:
Michael Vogel 2015-05-29 10:55:07 +02:00
commit 594f3e2815
21 changed files with 1858 additions and 1387 deletions

View File

@ -785,12 +785,21 @@ function diaspora_is_redmatrix($url) {
}
function diaspora_plink($addr, $guid) {
$r = q("SELECT `url`, `nick` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", $addr);
$r = q("SELECT `url`, `nick`, `network` FROM `fcontact` WHERE `addr`='%s' LIMIT 1", $addr);
// Fallback
if (!$r)
return 'https://'.substr($addr,strpos($addr,'@')+1).'/posts/'.$guid;
// Friendica contacts are often detected as Diaspora contacts in the "fcontact" table
// So we try another way as well.
$s = q("SELECT `network` FROM `gcontact` WHERE `nurl`='%s' LIMIT 1", dbesc(normalise_link($r[0]["url"])));
if ($s)
$r[0]["network"] = $s[0]["network"];
if ($r[0]["network"] == NETWORK_DFRN)
return(str_replace("/profile/".$r[0]["nick"]."/", "/display/".$guid, $r[0]["url"]."/"));
if (diaspora_is_redmatrix($r[0]["url"]))
return $r[0]["url"]."/?f=&mid=".$guid;
@ -833,12 +842,19 @@ function diaspora_post($importer,$xml,$msg) {
$body = diaspora2bb($xml->raw_message);
// Add OEmbed and other information to the body
if (!diaspora_is_redmatrix($contact['url']))
$body = add_page_info_to_body($body, false, true);
$datarray = array();
$datarray["object"] = json_encode($xml);
if($xml->photo->remote_photo_path AND $xml->photo->remote_photo_name)
$datarray["object-type"] = ACTIVITY_OBJ_PHOTO;
else {
$datarray['object-type'] = ACTIVITY_OBJ_NOTE;
// Add OEmbed and other information to the body
if (!diaspora_is_redmatrix($contact['url']))
$body = add_page_info_to_body($body, false, true);
}
$str_tags = '';
$cnt = preg_match_all('/@\[url=(.*?)\[\/url\]/ism',$body,$matches,PREG_SET_ORDER);
@ -872,7 +888,10 @@ function diaspora_post($importer,$xml,$msg) {
$datarray['author-avatar'] = $contact['thumb'];
$datarray['body'] = $body;
$datarray['tag'] = $str_tags;
$datarray['app'] = 'Diaspora';
if ($xml->provider_display_name)
$datarray["app"] = unxmlify($xml->provider_display_name);
else
$datarray['app'] = 'Diaspora';
// if empty content it might be a photo that hasn't arrived yet. If a photo arrives, we'll make it visible.
@ -921,6 +940,8 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) {
$author = $item["author"];
$guid = $item["guid"];
$private = $item["private"];
$object = $item["object"];
$objecttype = $item["object-type"];
$message_id = $author.':'.$guid;
$r = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `guid` = '%s' LIMIT 1",
@ -954,6 +975,8 @@ function diaspora_store_by_guid($guid, $server, $uid = 0) {
$datarray['tag'] = $str_tags;
$datarray['app'] = $app;
$datarray['visible'] = ((strlen($body)) ? 1 : 0);
$datarray['object'] = $object;
$datarray['object-type'] = $objecttype;
if ($datarray['contact-id'] == 0)
return false;
@ -1001,11 +1024,14 @@ function diaspora_fetch_message($guid, $server, $level = 0) {
$item["guid"] = unxmlify($source_xml->post->status_message->guid);
$item["private"] = (unxmlify($source_xml->post->status_message->public) == 'false');
$item["object"] = json_encode($source_xml->post);
if(strlen($source_xml->post->asphoto->objectId) && ($source_xml->post->asphoto->objectId != 0) && ($source_xml->post->asphoto->image_url)) {
$item["object-type"] = ACTIVITY_OBJ_PHOTO;
$body = '[url=' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '][img]' . notags(unxmlify($source_xml->post->asphoto->objectId)) . '[/img][/url]' . "\n";
$body = scale_external_images($body,false);
} elseif($source_xml->post->asphoto->image_url) {
$item["object-type"] = ACTIVITY_OBJ_PHOTO;
$body = '[img]' . notags(unxmlify($source_xml->post->asphoto->image_url)) . '[/img]' . "\n";
$body = scale_external_images($body);
} elseif($source_xml->post->status_message) {
@ -1015,18 +1041,25 @@ function diaspora_fetch_message($guid, $server, $level = 0) {
if($source_xml->post->status_message->photo->remote_photo_path AND
$source_xml->post->status_message->photo->remote_photo_name) {
$item["object-type"] = ACTIVITY_OBJ_PHOTO;
$remote_photo_path = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_path));
$remote_photo_name = notags(unxmlify($source_xml->post->status_message->photo->remote_photo_name));
$body = '[img]'.$remote_photo_path.$remote_photo_name.'[/img]'."\n".$body;
logger('embedded picture link found: '.$body, LOGGER_DEBUG);
}
} else
$item["object-type"] = ACTIVITY_OBJ_NOTE;
$body = scale_external_images($body);
// Add OEmbed and other information to the body
$body = add_page_info_to_body($body, false, true);
// To-Do: It could be a repeated redmatrix item
// Then we shouldn't add further data to it
if ($item["object-type"] == ACTIVITY_OBJ_NOTE)
$body = add_page_info_to_body($body, false, true);
} elseif($source_xml->post->reshare) {
// Reshare of a reshare
return diaspora_fetch_message($source_xml->post->reshare->root_guid, $server, ++$level);
@ -1081,16 +1114,17 @@ function diaspora_reshare($importer,$xml,$msg) {
$orig_author = notags(unxmlify($xml->root_diaspora_id));
$orig_guid = notags(unxmlify($xml->root_guid));
$orig_url = $a->get_baseurl()."/display/".$orig_guid;
$create_original_post = false;
// Do we already have this item?
$r = q("SELECT `body`, `tag`, `app`, `created`, `author-link`, `plink` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
$r = q("SELECT `body`, `tag`, `app`, `created`, `plink`, `object`, `object-type`, `uri` FROM `item` WHERE `guid` = '%s' AND `visible` AND NOT `deleted` AND `body` != '' LIMIT 1",
dbesc($orig_guid),
dbesc(NETWORK_DIASPORA)
);
if(count($r)) {
logger('reshared message '.$orig_guid." reshared by ".$guid.' already exists on system: '.$orig_url);
logger('reshared message '.$orig_guid." reshared by ".$guid.' already exists on system.');
// Maybe it is already a reshared item?
// Then refetch the content, since there can be many side effects with reshared posts from other networks or reshares from reshares
@ -1102,9 +1136,10 @@ function diaspora_reshare($importer,$xml,$msg) {
$str_tags = $r[0]["tag"];
$app = $r[0]["app"];
$orig_created = $r[0]["created"];
$orig_author = $r[0]["author-link"];
$create_original_post = ($body != "");
$orig_url = $a->get_baseurl()."/display/".$orig_guid;
$orig_plink = $r[0]["plink"];
$orig_uri = $r[0]["uri"];
$object = $r[0]["object"];
$objecttype = $r[0]["object-type"];
}
}
@ -1113,8 +1148,6 @@ function diaspora_reshare($importer,$xml,$msg) {
$str_tags = "";
$app = "";
$orig_url = 'https://'.substr($orig_author,strpos($orig_author,'@')+1).'/posts/'.$orig_guid;
$server = 'https://'.substr($orig_author,strpos($orig_author,'@')+1);
logger('1st try: reshared message '.$orig_guid." reshared by ".$guid.' will be fetched from original server: '.$server);
$item = diaspora_fetch_message($orig_guid, $server);
@ -1142,11 +1175,16 @@ function diaspora_reshare($importer,$xml,$msg) {
$orig_created = $item["created"];
$orig_author = $item["author"];
$orig_guid = $item["guid"];
$orig_plink = diaspora_plink($orig_author, $orig_guid);
$orig_uri = $orig_author.':'.$orig_guid;
$create_original_post = ($body != "");
$orig_url = $a->get_baseurl()."/display/".$orig_guid;
$object = $item["object"];
$objecttype = $item["object-type"];
}
}
$plink = diaspora_plink($diaspora_handle, $guid);
$person = find_diaspora_person_by_handle($orig_author);
$created = unxmlify($xml->created_at);
@ -1154,8 +1192,6 @@ function diaspora_reshare($importer,$xml,$msg) {
$datarray = array();
$plink = diaspora_plink($diaspora_handle, $guid);
$datarray['uid'] = $importer['uid'];
$datarray['contact-id'] = $contact['id'];
$datarray['wall'] = 0;
@ -1184,6 +1220,9 @@ function diaspora_reshare($importer,$xml,$msg) {
$datarray['body'] = $body;
}
$datarray["object"] = json_encode($xml);
$datarray['object-type'] = $objecttype;
$datarray['tag'] = $str_tags;
$datarray['app'] = $app;
@ -1199,9 +1238,10 @@ function diaspora_reshare($importer,$xml,$msg) {
$datarray2['uid'] = 0;
$datarray2['contact-id'] = get_contact($person['url'], 0);
$datarray2['guid'] = $orig_guid;
$datarray2['uri'] = $datarray2['parent-uri'] = $orig_author.':'.$orig_guid;
$datarray2['uri'] = $datarray2['parent-uri'] = $orig_uri;
$datarray2['changed'] = $datarray2['created'] = $datarray2['edited'] = $datarray2['commented'] = $datarray2['received'] = datetime_convert('UTC','UTC',$orig_created);
$datarray2['plink'] = diaspora_plink($orig_author, $orig_guid);
$datarray2['parent'] = 0;
$datarray2['plink'] = $orig_plink;
$datarray2['author-name'] = $person['name'];
$datarray2['author-link'] = $person['url'];
@ -1210,6 +1250,7 @@ function diaspora_reshare($importer,$xml,$msg) {
$datarray2['owner-link'] = $datarray2['author-link'];
$datarray2['owner-avatar'] = $datarray2['author-avatar'];
$datarray2['body'] = $body;
$datarray2["object"] = $object;
DiasporaFetchGuid($datarray2);
$message_id = item_store($datarray2);
@ -1295,6 +1336,8 @@ function diaspora_asphoto($importer,$xml,$msg) {
$datarray['author-link'] = $contact['url'];
$datarray['author-avatar'] = $contact['thumb'];
$datarray['body'] = $body;
$datarray["object"] = json_encode($xml);
$datarray['object-type'] = ACTIVITY_OBJ_PHOTO;
$datarray['app'] = 'Diaspora/Cubbi.es';
@ -1464,6 +1507,8 @@ function diaspora_comment($importer,$xml,$msg) {
$datarray['author-link'] = $person['url'];
$datarray['author-avatar'] = ((x($person,'thumb')) ? $person['thumb'] : $person['photo']);
$datarray['body'] = $body;
$datarray["object"] = json_encode($xml);
$datarray["object-type"] = ACTIVITY_OBJ_COMMENT;
// We can't be certain what the original app is if the message is relayed.
if(($parent_item['origin']) && (! $parent_author_signature))

View File

@ -464,12 +464,27 @@ function get_atom_elements($feed, $item, $contact = array()) {
// look for a photo. We should check media size and find the best one,
// but for now let's just find any author photo
// Additionally we look for an alternate author link. On OStatus this one is the one we want.
// Search for ostatus conversation url
$authorlinks = $item->feed->data["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["feed"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["author"][0]["child"]["http://www.w3.org/2005/Atom"]["link"];
if (is_array($authorlinks)) {
foreach ($authorlinks as $link) {
$linkdata = array_shift($link["attribs"]);
if ($linkdata["rel"] == "alternate")
$res["author-link"] = $linkdata["href"];
};
}
$rawauthor = $item->get_item_tags(SIMPLEPIE_NAMESPACE_ATOM_10,'author');
if($rawauthor && $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link']) {
$base = $rawauthor[0]['child'][SIMPLEPIE_NAMESPACE_ATOM_10]['link'];
foreach($base as $link) {
if($link['attribs']['']['rel'] === 'alternate')
$res['author-link'] = unxmlify($link['attribs']['']['href']);
if(!x($res, 'author-avatar') || !$res['author-avatar']) {
if($link['attribs']['']['rel'] === 'photo' || $link['attribs']['']['rel'] === 'avatar')
$res['author-avatar'] = unxmlify($link['attribs']['']['href']);
@ -828,7 +843,7 @@ function get_atom_elements($feed, $item, $contact = array()) {
logger('get_atom_elements: Looking for status.net repeated message');
$message = $child["http://activitystrea.ms/spec/1.0/"]["object"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["content"][0]["data"];
$orig_uri = $child["http://activitystrea.ms/spec/1.0/"]["object"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["id"][0]["data"];
$orig_id = ostatus_convert_href($child["http://activitystrea.ms/spec/1.0/"]["object"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10]["id"][0]["data"]);
$author = $child[SIMPLEPIE_NAMESPACE_ATOM_10]["author"][0]["child"][SIMPLEPIE_NAMESPACE_ATOM_10];
$uri = $author["uri"][0]["data"];
$name = $author["name"][0]["data"];
@ -836,10 +851,10 @@ function get_atom_elements($feed, $item, $contact = array()) {
$avatar = $avatar["href"];
if (($name != "") and ($uri != "") and ($avatar != "") and ($message != "")) {
logger('get_atom_elements: fixing sender of repeated message.');
logger('get_atom_elements: fixing sender of repeated message. '.$orig_id, LOGGER_DEBUG);
if (!intval(get_config('system','wall-to-wall_share'))) {
$prefix = share_header($name, $uri, $avatar, "", "", $orig_uri);
$prefix = share_header($name, $uri, $avatar, "", "", $orig_link);
$res["body"] = $prefix.html2bbcode($message)."[/share]";
} else {
@ -864,8 +879,11 @@ function get_atom_elements($feed, $item, $contact = array()) {
$conversation = array_shift($link["attribs"]);
if ($conversation["rel"] == "ostatus:conversation") {
$res["ostatus_conversation"] = $conversation["href"];
$res["ostatus_conversation"] = ostatus_convert_href($conversation["href"]);
logger('get_atom_elements: found conversation url '.$res["ostatus_conversation"]);
} elseif ($conversation["rel"] == "alternate") {
$res["plink"] = $conversation["href"];
logger('get_atom_elements: found plink '.$res["plink"]);
}
};
}
@ -1090,6 +1108,14 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
unset($arr['dsprsig']);
}
// Converting the plink
if ($arr['network'] == NETWORK_OSTATUS) {
if (isset($arr['plink']))
$arr['plink'] = ostatus_convert_href($arr['plink']);
elseif (isset($arr['uri']))
$arr['plink'] = ostatus_convert_href($arr['uri']);
}
// if an OStatus conversation url was passed in, it is stored and then
// removed from the array.
$ostatus_conversation = null;
@ -1115,7 +1141,7 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
/* check for create date and expire time */
$uid = intval($arr['uid']);
$r = q("SELECT expire FROM user WHERE uid = %d", $uid);
$r = q("SELECT expire FROM user WHERE uid = %d", intval($uid));
if(count($r)) {
$expire_interval = $r[0]['expire'];
if ($expire_interval>0) {
@ -1141,6 +1167,19 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
}
}
// If there is no guid then take the same guid that was taken before for the same plink
if ((trim($arr['guid']) == "") AND (trim($arr['plink']) != "")) {
logger('item_store: checking for an existing guid for plink '.$arr['plink'], LOGGER_DEBUG);
$r = q("SELECT `guid` FROM `item` WHERE `plink` = '%s' AND `guid` != '' LIMIT 1",
dbesc(trim($arr['plink']))
);
if(count($r)) {
$arr['guid'] = $r[0]["guid"];
logger('item_store: found guid '.$arr['guid'].' for plink '.$arr['plink'], LOGGER_DEBUG);
}
}
// Shouldn't happen but we want to make absolutely sure it doesn't leak from a plugin.
// Deactivated, since the bbcode parser can handle with it - and it destroys posts with some smileys that contain "<"
//if((strpos($arr['body'],'<') !== false) || (strpos($arr['body'],'>') !== false))
@ -1347,12 +1386,36 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
}
}
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `uid` = %d LIMIT 1",
$r = q("SELECT `id` FROM `item` WHERE `uri` = '%s' AND `network` = '%s' AND `uid` = %d LIMIT 1",
dbesc($arr['uri']),
dbesc($arr['network']),
intval($arr['uid'])
);
if($r && count($r)) {
logger('item-store: duplicate item ignored. ' . print_r($arr,true));
logger('duplicated item with the same uri found. ' . print_r($arr,true));
return 0;
}
$r = q("SELECT `id` FROM `item` WHERE `plink` = '%s' AND `network` = '%s' AND `uid` = %d LIMIT 1",
dbesc($arr['plink']),
dbesc($arr['network']),
intval($arr['uid'])
);
if($r && count($r)) {
logger('duplicated item with the same plink found. ' . print_r($arr,true));
return 0;
}
// Check for an existing post with the same content. There seems to be a problem with OStatus.
$r = q("SELECT `id` FROM `item` WHERE `body` = '%s' AND `network` = '%s' AND `created` = '%s' AND `contact-id` = %d AND `uid` = %d LIMIT 1",
dbesc($arr['body']),
dbesc($arr['network']),
dbesc($arr['created']),
intval($arr['contact-id']),
intval($arr['uid'])
);
if($r && count($r)) {
logger('duplicated item with the same body found. ' . print_r($arr,true));
return 0;
}
@ -2167,6 +2230,12 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
return;
}
// Test - remove before flight
// if ($contact['network'] === NETWORK_OSTATUS) {
// $tempfile = tempnam(get_temppath(), "ostatus");
// file_put_contents($tempfile, $xml);
// }
$feed = new SimplePie();
$feed->set_raw_data($xml);
if($datedir)
@ -4745,6 +4814,18 @@ function drop_item($id,$interactive = true) {
// ignore the result
}
// If item has attachments, drop them
foreach(explode(",",$item['attach']) as $attach){
preg_match("|attach/(\d+)|", $attach, $matches);
q("DELETE FROM `attach` WHERE `id` = %d AND `uid` = %d",
intval($matches[1]),
local_user()
);
// ignore the result
}
// clean up item_id and sign meta-data tables
/*
@ -4821,6 +4902,7 @@ function drop_item($id,$interactive = true) {
// Add a relayable_retraction signature for Diaspora.
store_diaspora_retract_sig($item, $a->user, $a->get_baseurl());
}
$drop_id = intval($item['id']);
// send the notification upstream/downstream as the case may be

View File

@ -1,8 +1,33 @@
<?php
require_once("include/Contact.php");
define('OSTATUS_DEFAULT_POLL_INTERVAL', 30); // given in minutes
define('OSTATUS_DEFAULT_POLL_TIMEFRAME', 1440); // given in minutes
function check_conversations() {
function ostatus_convert_href($href) {
$elements = explode(":",$href);
if ((count($elements) <= 2) OR ($elements[0] != "tag"))
return $href;
$server = explode(",", $elements[1]);
$conversation = explode("=", $elements[2]);
if ((count($elements) == 4) AND ($elements[2] == "post"))
return "http://".$server[0]."/notice/".$elements[3];
if ((count($conversation) != 2) OR ($conversation[1] ==""))
return $href;
if ($elements[3] == "objectType=thread")
return "http://".$server[0]."/conversation/".$conversation[1];
else
return "http://".$server[0]."/notice/".$conversation[1];
return $href;
}
function check_conversations($override = false) {
$last = get_config('system','ostatus_last_poll');
$poll_interval = intval(get_config('system','ostatus_poll_interval'));
@ -10,16 +35,16 @@ function check_conversations() {
$poll_interval = OSTATUS_DEFAULT_POLL_INTERVAL;
// Don't poll if the interval is set negative
if ($poll_interval < 0)
if (($poll_interval < 0) AND !$override)
return;
$poll_timeframe = intval(get_config('system','ostatus_poll_timeframe'));
if(! $poll_timeframe)
if (!$poll_timeframe)
$poll_timeframe = OSTATUS_DEFAULT_POLL_TIMEFRAME;
if($last) {
if ($last AND !$override) {
$next = $last + ($poll_interval * 60);
if($next > time()) {
if ($next > time()) {
logger('poll interval not reached');
return;
}
@ -36,7 +61,7 @@ function check_conversations() {
complete_conversation($id, $url);
}
logger(' cron_end');
logger('cron_end');
set_config('system','ostatus_last_poll', time());
}
@ -44,6 +69,8 @@ function check_conversations() {
function complete_conversation($itemid, $conversation_url, $only_add_conversation = false) {
global $a;
$conversation_url = ostatus_convert_href($conversation_url);
if (intval(get_config('system','ostatus_poll_interval')) == -2)
return;
@ -107,12 +134,16 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
$items = array_reverse($items);
foreach ($items as $single_conv) {
// status.net changed the format of the activity streams. This is a quick fix.
if (@is_string($single_conv->object->id))
if (isset($single_conv->object->id))
$single_conv->id = $single_conv->object->id;
if (@!$single_conv->id AND $single_conv->provider->url AND $single_conv->statusnet_notice_info->local_id)
$single_conv->id = $single_conv->provider->url."notice/".$single_conv->statusnet_notice_info->local_id;
logger("Got id ".$single_conv->id, LOGGER_DEBUG);
$plink = ostatus_convert_href($single_conv->id);
if (isset($single_conv->object->url))
$plink = ostatus_convert_href($single_conv->object->url);
logger("Got url ".$plink, LOGGER_DEBUG);
if (@!$single_conv->id)
continue;
@ -120,8 +151,9 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
if ($first_id == "") {
$first_id = $single_conv->id;
$new_parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($message["uid"]), dbesc($first_id));
$new_parents = q("SELECT `id`, `uri`, `contact-id`, `type`, `verb`, `visible` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `network` IN ('%s','%s') LIMIT 1",
intval($message["uid"]), dbesc($first_id),
dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DFRN));
if ($new_parents) {
$parent = $new_parents[0];
logger('adopting new parent '.$parent["id"].' for '.$itemid);
@ -136,12 +168,21 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
else
$parent_uri = $parent["uri"];
$message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' LIMIT 1",
intval($message["uid"]), dbesc($single_conv->id));
$message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `plink` = '%s' AND `network` IN ('%s','%s') LIMIT 1",
intval($message["uid"]), dbesc($plink),
dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DFRN));
if (!$message_exists)
$message_exists = q("SELECT `id` FROM `item` WHERE `uid` = %d AND `uri` = '%s' AND `network` IN ('%s','%s') LIMIT 1",
intval($message["uid"]), dbesc($single_conv->id),
dbesc(NETWORK_OSTATUS), dbesc(NETWORK_DFRN));
if ($message_exists) {
if ($parent["id"] != 0) {
$existing_message = $message_exists[0];
logger('updating id '.$existing_message["id"].' to parent '.$parent["id"].' uri '.$parent["uri"].' thread '.$parent_uri, LOGGER_DEBUG);
// This is partly bad, since the entry in the thread table isn't updated
$r = q("UPDATE `item` SET `parent` = %d, `parent-uri` = '%s', `thr-parent` = '%s' WHERE `id` = %d",
intval($parent["id"]),
@ -152,21 +193,32 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
continue;
}
$actor = $single_conv->actor->id;
if (isset($single_conv->actor->url))
$actor = $single_conv->actor->url;
$contact = q("SELECT `id` FROM `contact` WHERE `uid` = %d AND `nurl` = '%s' AND `network` != '%s'",
$message["uid"], normalise_link($single_conv->actor->id), NETWORK_STATUSNET);
$message["uid"], normalise_link($actor), NETWORK_STATUSNET);
if (count($contact)) {
logger("Found contact for url ".$single_conv->actor->id, LOGGER_DEBUG);
logger("Found contact for url ".$actor, LOGGER_DEBUG);
$contact_id = $contact[0]["id"];
} else {
logger("No contact found for url ".$single_conv->actor->id, LOGGER_DEBUG);
logger("No contact found for url ".$actor, LOGGER_DEBUG);
// Adding a global contact
// To-Do: Use this data for the post
$global_contact_id = get_contact($actor, 0);
logger("Global contact ".$global_contact_id." found for url ".$actor, LOGGER_DEBUG);
$contact_id = $parent["contact-id"];
}
$arr = array();
$arr["network"] = NETWORK_OSTATUS;
$arr["uri"] = $single_conv->id;
$arr["plink"] = $single_conv->id;
$arr["plink"] = $plink;
$arr["uid"] = $message["uid"];
$arr["contact-id"] = $contact_id;
if ($parent["id"] != 0)
@ -182,17 +234,26 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
if ($arr["owner-name"] == '')
$arr["owner-name"] = $single_conv->actor->displayName;
$arr["owner-link"] = $single_conv->actor->id;
$arr["owner-link"] = $actor;
$arr["owner-avatar"] = $single_conv->actor->image->url;
//$arr["author-name"] = $single_conv->actor->contact->displayName;
//$arr["author-name"] = $single_conv->actor->contact->preferredUsername;
$arr["author-name"] = $arr["owner-name"];
$arr["author-link"] = $single_conv->actor->id;
$arr["author-link"] = $actor;
$arr["author-avatar"] = $single_conv->actor->image->url;
$arr["body"] = html2bbcode($single_conv->content);
$arr["app"] = strip_tags($single_conv->statusnet_notice_info->source);
if ($arr["app"] == "")
if (isset($single_conv->status_net->notice_info->source))
$arr["app"] = strip_tags($single_conv->status_net->notice_info->source);
elseif (isset($single_conv->statusnet->notice_info->source))
$arr["app"] = strip_tags($single_conv->statusnet->notice_info->source);
elseif (isset($single_conv->statusnet_notice_info->source))
$arr["app"] = strip_tags($single_conv->statusnet_notice_info->source);
elseif (isset($single_conv->provider->displayName))
$arr["app"] = $single_conv->provider->displayName;
else
$arr["app"] = "OStatus";
$arr["verb"] = $parent["verb"];
$arr["visible"] = $parent["visible"];
$arr["location"] = $single_conv->location->displayName;
@ -206,6 +267,8 @@ function complete_conversation($itemid, $conversation_url, $only_add_conversatio
$newitem = item_store($arr);
logger('Stored new item '.$plink.' under id '.$newitem, LOGGER_DEBUG);
// Add the conversation entry (but don't fetch the whole conversation)
complete_conversation($newitem, $conversation_url, true);

View File

@ -20,13 +20,15 @@ function allfriends_content(&$a) {
intval(local_user())
);
$a->page['aside'] .= '<div class="vcard">'
. '<div class="fn label">' . $c[0]['name'] . '</div>'
. '<div id="profile-photo-wrapper">'
. '<a href="/contacts/' . $cid . '"><img class="photo" width="175" height="175"
src="' . $c[0]['photo'] . '" alt="' . $c[0]['name'] . '" /></div>'
. '</div>';
$vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array(
'$name' => $c[0]['name'],
'$photo' => $c[0]['photo'],
'url' => z_root() . '/contacts/' . $cid
));
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $vcard_widget;
if(! count($c))
return;

View File

@ -28,13 +28,15 @@ function common_content(&$a) {
);
}
$a->page['aside'] .= '<div class="vcard">'
. '<div class="fn label">' . $c[0]['name'] . '</div>'
. '<div id="profile-photo-wrapper">'
. '<img class="photo" width="175" height="175"
src="' . $c[0]['photo'] . '" alt="' . $c[0]['name'] . '" /></div>'
. '</div>';
$vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array(
'$name' => $c[0]['name'],
'$photo' => $c[0]['photo'],
'url' => z_root() . '/contacts/' . $cid
));
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $vcard_widget;
if(! count($c))
return;

View File

@ -22,11 +22,12 @@ function crepair_init(&$a) {
if($contact_id) {
$a->data['contact'] = $r[0];
$o .= '<div class="vcard">';
$o .= '<div class="fn">' . $a->data['contact']['name'] . '</div>';
$o .= '<div id="profile-photo-wrapper"><img class="photo" style="width: 175px; height: 175px;" src="' . $a->data['contact']['photo'] . '" alt="' . $a->data['contact']['name'] . '" /></div>';
$o .= '</div>';
$a->page['aside'] .= $o;
$tpl = get_markup_template("vcard-widget.tpl");
$vcard_widget .= replace_macros($tpl, array(
'$name' => $a->data['contact']['name'],
'$photo' => $a->data['contact']['photo']
));
$a->page['aside'] .= $vcard_widget;
}
}

View File

@ -59,21 +59,30 @@ function events_post(&$a) {
// and we'll waste a bunch of time responding to it. Time that
// could've been spent doing something else.
if(strcmp($finish,$start) < 0)
$finish = $start;
$summary = escape_tags(trim($_POST['summary']));
$desc = escape_tags(trim($_POST['desc']));
$location = escape_tags(trim($_POST['location']));
$type = 'event';
$action = ($event_id == '') ? 'new' : "event/" . $event_id;
$onerror_url = $a->get_baseurl() . "/events/" . $action . "?summary=$summary&description=$desc&location=$location&start=$start_text&finish=$finish_text&adjust=$adjust&nofinish=$nofinish";
if(strcmp($finish,$start) < 0 && !$nofinish) {
notice( t('Event can not end before it has started.') . EOL);
if(intval($_REQUEST['preview'])) {
echo( t('Event can not end before it has started.'));
killme();
}
goaway($onerror_url);
}
if((! $summary) || (! $start)) {
notice( t('Event title and start time are required.') . EOL);
if(intval($_REQUEST['preview'])) {
echo( t('Event title and start time are required.'));
killme();
}
goaway($a->get_baseurl() . '/events/new');
goaway($onerror_url);
}
$share = ((intval($_POST['share'])) ? intval($_POST['share']) : 0);

View File

@ -30,10 +30,14 @@ function photos_init(&$a) {
$a->data['user'] = $r[0];
$o .= '<div class="vcard">';
$o .= '<div class="fn">' . $a->data['user']['username'] . '</div>';
$o .= '<div id="profile-photo-wrapper"><img class="photo" style="width: 175px; height: 175px;" src="' . $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg') . '" alt="' . $a->data['user']['username'] . '" /></div>';
$o .= '</div>';
$profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
$tpl = get_markup_template("vcard-widget.tpl");
$vcard_widget .= replace_macros($tpl, array(
'$name' => $a->data['user']['username'],
'$photo' => $profilephoto
));
$sql_extra = permissions_sql($a->data['user']['uid']);
@ -72,6 +76,7 @@ function photos_init(&$a) {
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $vcard_widget;
$a->page['aside'] .= $o;

View File

@ -177,9 +177,9 @@ function search_content(&$a) {
if($tag)
$o .= '<h2>Items tagged with: ' . $search . '</h2>';
$o .= '<h2>' . sprintf( t('Items tagged with: %s'), $search) . '</h2>';
else
$o .= '<h2>Search results for: ' . $search . '</h2>';
$o .= '<h2>' . sprintf( t('Search results for: %s'), $search) . '</h2>';
logger("Start Conversation for '".$search."'", LOGGER_DEBUG);
$o .= conversation($a,$r,'search',false);

View File

@ -28,10 +28,14 @@ function videos_init(&$a) {
$a->data['user'] = $r[0];
$o .= '<div class="vcard">';
$o .= '<div class="fn">' . $a->data['user']['username'] . '</div>';
$o .= '<div id="profile-photo-wrapper"><img class="photo" style="width: 175px; height: 175px;" src="' . $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg') . '" alt="' . $a->data['user']['username'] . '" /></div>';
$o .= '</div>';
$profilephoto = $a->get_cached_avatar_image($a->get_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg');
$tpl = get_markup_template("vcard-widget.tpl");
$vcard_widget = replace_macros($tpl, array(
'$name' => $a->data['user']['username'],
'$photo' => $profilephoto
));
/*$sql_extra = permissions_sql($a->data['user']['uid']);
@ -70,7 +74,7 @@ function videos_init(&$a) {
if(! x($a->page,'aside'))
$a->page['aside'] = '';
$a->page['aside'] .= $o;
$a->page['aside'] .= $vcard_widget;
$tpl = get_markup_template("videos_head.tpl");
@ -92,9 +96,76 @@ function videos_init(&$a) {
function videos_post(&$a) {
return;
$owner_uid = $a->data['user']['uid'];
if (local_user() != $owner_uid) goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
if(($a->argc == 2) && x($_POST,'delete') && x($_POST, 'id')) {
// Check if we should do HTML-based delete confirmation
if(!x($_REQUEST,'confirm')) {
if(x($_REQUEST,'canceled')) goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
$drop_url = $a->query_string;
$a->page['content'] = replace_macros(get_markup_template('confirm.tpl'), array(
'$method' => 'post',
'$message' => t('Do you really want to delete this video?'),
'$extra_inputs' => [
['name'=>'id', 'value'=> $_POST['id']],
['name'=>'delete', 'value'=>'x']
],
'$confirm' => t('Delete Video'),
'$confirm_url' => $drop_url,
'$confirm_name' => 'confirm', // Needed so that confirmation will bring us back into this if statement
'$cancel' => t('Cancel'),
));
$a->error = 1; // Set $a->error so the other module functions don't execute
return;
}
$video_id = $_POST['id'];
$r = q("SELECT `id` FROM `attach` WHERE `uid` = %d AND `id` = '%s' LIMIT 1",
intval(local_user()),
dbesc($video_id)
);
if(count($r)) {
q("DELETE FROM `attach` WHERE `uid` = %d AND `id` = '%s'",
intval(local_user()),
dbesc($video_id)
);
$i = q("SELECT * FROM `item` WHERE `attach` like '%%attach/%s%%' AND `uid` = %d LIMIT 1",
dbesc($video_id),
intval(local_user())
);
#echo "<pre>"; var_dump($i); killme();
if(count($i)) {
q("UPDATE `item` SET `deleted` = 1, `edited` = '%s', `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d",
dbesc(datetime_convert()),
dbesc(datetime_convert()),
dbesc($i[0]['uri']),
intval(local_user())
);
create_tags_from_itemuri($i[0]['uri'], local_user());
delete_thread_uri($i[0]['uri'], local_user());
$url = $a->get_baseurl();
$drop_id = intval($i[0]['id']);
if($i[0]['visible'])
proc_run('php',"include/notifier.php","drop","$drop_id");
}
}
goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
return; // NOTREACHED
}
goaway($a->get_baseurl() . '/videos/' . $a->data['user']['nickname']);
// DELETED -- look at mod/photos.php if you want to implement
}
@ -318,6 +389,7 @@ function videos_content(&$a) {
'$can_post' => $can_post,
'$upload' => array(t('Upload New Videos'), $a->get_baseurl().'/videos/'.$a->data['user']['nickname'].'/upload'),
'$videos' => $videos,
'$delete_url' => (($can_post)?$a->get_baseurl().'/videos/'.$a->data['user']['nickname']:False)
));

View File

@ -8,7 +8,7 @@ msgid ""
msgstr ""
"Project-Id-Version: 3.4.0\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2015-05-21 10:43+0200\n"
"POT-Creation-Date: 2015-05-24 10:38+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
@ -29,9 +29,9 @@ msgstr ""
#: ../../mod/photos.php:1084 ../../mod/photos.php:1203
#: ../../mod/photos.php:1514 ../../mod/photos.php:1565
#: ../../mod/photos.php:1609 ../../mod/photos.php:1697
#: ../../mod/invite.php:140 ../../mod/events.php:491 ../../mod/mood.php:137
#: ../../mod/invite.php:140 ../../mod/events.php:500 ../../mod/mood.php:137
#: ../../mod/message.php:335 ../../mod/message.php:564
#: ../../mod/profiles.php:686 ../../mod/install.php:248
#: ../../mod/profiles.php:682 ../../mod/install.php:248
#: ../../mod/install.php:286 ../../mod/crepair.php:190
#: ../../mod/content.php:710 ../../mod/poke.php:199 ../../mod/localtime.php:45
msgid "Submit"
@ -233,7 +233,7 @@ msgid "Your photos"
msgstr ""
#: ../../view/theme/diabook/theme.php:127 ../../boot.php:2156
#: ../../include/nav.php:80 ../../mod/events.php:382
#: ../../include/nav.php:80 ../../mod/events.php:385
msgid "Events"
msgstr ""
@ -260,7 +260,7 @@ msgid "event"
msgstr ""
#: ../../view/theme/diabook/theme.php:466
#: ../../view/theme/diabook/theme.php:475 ../../include/diaspora.php:2060
#: ../../view/theme/diabook/theme.php:475 ../../include/diaspora.php:2061
#: ../../include/conversation.php:121 ../../include/conversation.php:130
#: ../../include/conversation.php:248 ../../include/conversation.php:257
#: ../../mod/like.php:149 ../../mod/like.php:319 ../../mod/subthread.php:87
@ -268,14 +268,14 @@ msgstr ""
msgid "status"
msgstr ""
#: ../../view/theme/diabook/theme.php:471 ../../include/diaspora.php:2060
#: ../../view/theme/diabook/theme.php:471 ../../include/diaspora.php:2061
#: ../../include/conversation.php:126 ../../include/conversation.php:253
#: ../../include/text.php:1995 ../../mod/like.php:149
#: ../../mod/subthread.php:87 ../../mod/tagger.php:62
msgid "photo"
msgstr ""
#: ../../view/theme/diabook/theme.php:480 ../../include/diaspora.php:2076
#: ../../view/theme/diabook/theme.php:480 ../../include/diaspora.php:2077
#: ../../include/conversation.php:137 ../../mod/like.php:166
#, php-format
msgid "%1$s likes %2$s's %3$s"
@ -375,7 +375,7 @@ msgstr ""
msgid "Permission denied"
msgstr ""
#: ../../index.php:382 ../../include/items.php:4838 ../../mod/attach.php:33
#: ../../index.php:382 ../../include/items.php:4851 ../../mod/attach.php:33
#: ../../mod/wallmessage.php:9 ../../mod/wallmessage.php:33
#: ../../mod/wallmessage.php:79 ../../mod/wallmessage.php:103
#: ../../mod/group.php:19 ../../mod/delegate.php:12
@ -389,9 +389,9 @@ msgstr ""
#: ../../mod/notes.php:20 ../../mod/network.php:4 ../../mod/photos.php:134
#: ../../mod/photos.php:1050 ../../mod/follow.php:9 ../../mod/follow.php:39
#: ../../mod/follow.php:78 ../../mod/uimport.php:23 ../../mod/invite.php:15
#: ../../mod/invite.php:101 ../../mod/events.php:152 ../../mod/mood.php:114
#: ../../mod/invite.php:101 ../../mod/events.php:155 ../../mod/mood.php:114
#: ../../mod/message.php:38 ../../mod/message.php:174
#: ../../mod/profiles.php:165 ../../mod/profiles.php:618
#: ../../mod/profiles.php:165 ../../mod/profiles.php:614
#: ../../mod/install.php:151 ../../mod/crepair.php:119 ../../mod/poke.php:135
#: ../../mod/display.php:501 ../../mod/dfrn_confirm.php:55
#: ../../mod/item.php:169 ../../mod/item.php:185
@ -415,8 +415,9 @@ msgstr ""
msgid "Comment"
msgstr ""
#: ../../boot.php:751 ../../include/contact_widgets.php:205
#: ../../object/Item.php:393 ../../mod/content.php:606
#: ../../boot.php:751 ../../include/items.php:4962
#: ../../include/contact_widgets.php:205 ../../object/Item.php:393
#: ../../mod/content.php:606
msgid "show more"
msgstr ""
@ -515,28 +516,28 @@ msgstr ""
msgid "Manage/edit profiles"
msgstr ""
#: ../../boot.php:1600 ../../boot.php:1626 ../../mod/profiles.php:804
#: ../../boot.php:1600 ../../boot.php:1626 ../../mod/profiles.php:800
msgid "Change profile photo"
msgstr ""
#: ../../boot.php:1601 ../../mod/profiles.php:805
#: ../../boot.php:1601 ../../mod/profiles.php:801
msgid "Create New Profile"
msgstr ""
#: ../../boot.php:1611 ../../mod/profiles.php:816
#: ../../boot.php:1611 ../../mod/profiles.php:812
msgid "Profile Image"
msgstr ""
#: ../../boot.php:1614 ../../mod/profiles.php:818
#: ../../boot.php:1614 ../../mod/profiles.php:814
msgid "visible to everybody"
msgstr ""
#: ../../boot.php:1615 ../../mod/profiles.php:819
#: ../../boot.php:1615 ../../mod/profiles.php:815
msgid "Edit visibility"
msgstr ""
#: ../../boot.php:1637 ../../include/event.php:42
#: ../../include/bb2diaspora.php:155 ../../mod/events.php:483
#: ../../include/bb2diaspora.php:155 ../../mod/events.php:492
#: ../../mod/directory.php:136
msgid "Location:"
msgstr ""
@ -803,12 +804,12 @@ msgstr ""
msgid "Ability to mute notifications for a thread"
msgstr ""
#: ../../include/items.php:2330 ../../include/datetime.php:477
#: ../../include/items.php:2330 ../../include/datetime.php:457
#, php-format
msgid "%s's birthday"
msgstr ""
#: ../../include/items.php:2331 ../../include/datetime.php:478
#: ../../include/items.php:2331 ../../include/datetime.php:458
#, php-format
msgid "Happy Birthday %s"
msgstr ""
@ -839,21 +840,22 @@ msgstr ""
#: ../../mod/contacts.php:411 ../../mod/register.php:233
#: ../../mod/dfrn_request.php:845 ../../mod/api.php:105
#: ../../mod/suggest.php:29 ../../mod/follow.php:54 ../../mod/message.php:209
#: ../../mod/profiles.php:661 ../../mod/profiles.php:664
#: ../../mod/profiles.php:657 ../../mod/profiles.php:660
msgid "Yes"
msgstr ""
#: ../../include/items.php:4686 ../../include/conversation.php:1128
#: ../../mod/settings.php:622 ../../mod/settings.php:648
#: ../../mod/contacts.php:414 ../../mod/editpost.php:148
#: ../../mod/dfrn_request.php:859 ../../mod/fbrowser.php:81
#: ../../mod/fbrowser.php:116 ../../mod/suggest.php:32
#: ../../mod/photos.php:203 ../../mod/photos.php:292 ../../mod/follow.php:65
#: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94 ../../mod/message.php:212
#: ../../mod/contacts.php:414 ../../mod/videos.php:116
#: ../../mod/editpost.php:148 ../../mod/dfrn_request.php:859
#: ../../mod/fbrowser.php:81 ../../mod/fbrowser.php:116
#: ../../mod/suggest.php:32 ../../mod/photos.php:203 ../../mod/photos.php:292
#: ../../mod/follow.php:65 ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
#: ../../mod/message.php:212
msgid "Cancel"
msgstr ""
#: ../../include/items.php:4904
#: ../../include/items.php:4956
msgid "Archives"
msgstr ""
@ -1349,11 +1351,11 @@ msgstr ""
msgid "for %1$d %2$s"
msgstr ""
#: ../../include/profile_advanced.php:46 ../../mod/profiles.php:714
#: ../../include/profile_advanced.php:46 ../../mod/profiles.php:710
msgid "Sexual Preference:"
msgstr ""
#: ../../include/profile_advanced.php:50 ../../mod/profiles.php:716
#: ../../include/profile_advanced.php:50 ../../mod/profiles.php:712
msgid "Hometown:"
msgstr ""
@ -1361,7 +1363,7 @@ msgstr ""
msgid "Tags:"
msgstr ""
#: ../../include/profile_advanced.php:54 ../../mod/profiles.php:717
#: ../../include/profile_advanced.php:54 ../../mod/profiles.php:713
msgid "Political Views:"
msgstr ""
@ -1373,11 +1375,11 @@ msgstr ""
msgid "Hobbies/Interests:"
msgstr ""
#: ../../include/profile_advanced.php:62 ../../mod/profiles.php:721
#: ../../include/profile_advanced.php:62 ../../mod/profiles.php:717
msgid "Likes:"
msgstr ""
#: ../../include/profile_advanced.php:64 ../../mod/profiles.php:722
#: ../../include/profile_advanced.php:64 ../../mod/profiles.php:718
msgid "Dislikes:"
msgstr ""
@ -1783,71 +1785,75 @@ msgstr ""
msgid "Miscellaneous"
msgstr ""
#: ../../include/datetime.php:153 ../../include/datetime.php:290
msgid "year"
#: ../../include/datetime.php:141
msgid "YYYY-MM-DD or MM-DD"
msgstr ""
#: ../../include/datetime.php:158 ../../include/datetime.php:291
msgid "month"
msgstr ""
#: ../../include/datetime.php:163 ../../include/datetime.php:293
msgid "day"
msgstr ""
#: ../../include/datetime.php:276
#: ../../include/datetime.php:256
msgid "never"
msgstr ""
#: ../../include/datetime.php:282
#: ../../include/datetime.php:262
msgid "less than a second ago"
msgstr ""
#: ../../include/datetime.php:290
#: ../../include/datetime.php:270
msgid "year"
msgstr ""
#: ../../include/datetime.php:270
msgid "years"
msgstr ""
#: ../../include/datetime.php:291
#: ../../include/datetime.php:271
msgid "month"
msgstr ""
#: ../../include/datetime.php:271
msgid "months"
msgstr ""
#: ../../include/datetime.php:292
#: ../../include/datetime.php:272
msgid "week"
msgstr ""
#: ../../include/datetime.php:292
#: ../../include/datetime.php:272
msgid "weeks"
msgstr ""
#: ../../include/datetime.php:293
#: ../../include/datetime.php:273
msgid "day"
msgstr ""
#: ../../include/datetime.php:273
msgid "days"
msgstr ""
#: ../../include/datetime.php:294
#: ../../include/datetime.php:274
msgid "hour"
msgstr ""
#: ../../include/datetime.php:294
#: ../../include/datetime.php:274
msgid "hours"
msgstr ""
#: ../../include/datetime.php:295
#: ../../include/datetime.php:275
msgid "minute"
msgstr ""
#: ../../include/datetime.php:295
#: ../../include/datetime.php:275
msgid "minutes"
msgstr ""
#: ../../include/datetime.php:296
#: ../../include/datetime.php:276
msgid "second"
msgstr ""
#: ../../include/datetime.php:296
#: ../../include/datetime.php:276
msgid "seconds"
msgstr ""
#: ../../include/datetime.php:305
#: ../../include/datetime.php:285
#, php-format
msgid "%1$d %2$s ago"
msgstr ""
@ -1986,7 +1992,7 @@ msgstr ""
msgid "Sharing notification from Diaspora network"
msgstr ""
#: ../../include/diaspora.php:2493
#: ../../include/diaspora.php:2494
msgid "Attachments:"
msgstr ""
@ -2261,7 +2267,7 @@ msgstr ""
#: ../../include/conversation.php:1125 ../../object/Item.php:690
#: ../../mod/editpost.php:145 ../../mod/photos.php:1566
#: ../../mod/photos.php:1610 ../../mod/photos.php:1698
#: ../../mod/events.php:489 ../../mod/content.php:719
#: ../../mod/events.php:498 ../../mod/content.php:719
msgid "Preview"
msgstr ""
@ -2533,7 +2539,7 @@ msgstr ""
msgid "December"
msgstr ""
#: ../../include/text.php:1424 ../../mod/videos.php:301
#: ../../include/text.php:1424 ../../mod/videos.php:368
msgid "View Video"
msgstr ""
@ -2546,7 +2552,7 @@ msgid "Click to open/close"
msgstr ""
#: ../../include/text.php:1674 ../../include/text.php:1684
#: ../../mod/events.php:347
#: ../../mod/events.php:350
msgid "link to source"
msgstr ""
@ -3868,8 +3874,8 @@ msgstr ""
#: ../../mod/settings.php:1108 ../../mod/settings.php:1109
#: ../../mod/settings.php:1110 ../../mod/register.php:234
#: ../../mod/dfrn_request.php:845 ../../mod/api.php:106
#: ../../mod/follow.php:54 ../../mod/profiles.php:661
#: ../../mod/profiles.php:665
#: ../../mod/follow.php:54 ../../mod/profiles.php:657
#: ../../mod/profiles.php:661
msgid "No"
msgstr ""
@ -4643,30 +4649,38 @@ msgstr ""
msgid "Tips for New Members"
msgstr ""
#: ../../mod/videos.php:115 ../../mod/dfrn_request.php:777
#: ../../mod/videos.php:108
msgid "Do you really want to delete this video?"
msgstr ""
#: ../../mod/videos.php:113
msgid "Delete Video"
msgstr ""
#: ../../mod/videos.php:182 ../../mod/dfrn_request.php:777
#: ../../mod/viewcontacts.php:19 ../../mod/photos.php:920
#: ../../mod/search.php:89 ../../mod/community.php:18
#: ../../mod/display.php:214 ../../mod/directory.php:33
msgid "Public access denied."
msgstr ""
#: ../../mod/videos.php:125
#: ../../mod/videos.php:192
msgid "No videos selected"
msgstr ""
#: ../../mod/videos.php:226 ../../mod/photos.php:1031
#: ../../mod/videos.php:293 ../../mod/photos.php:1031
msgid "Access to this item is restricted."
msgstr ""
#: ../../mod/videos.php:308 ../../mod/photos.php:1808
#: ../../mod/videos.php:375 ../../mod/photos.php:1808
msgid "View Album"
msgstr ""
#: ../../mod/videos.php:317
#: ../../mod/videos.php:384
msgid "Recent Videos"
msgstr ""
#: ../../mod/videos.php:319
#: ../../mod/videos.php:386
msgid "Upload New Videos"
msgstr ""
@ -6642,72 +6656,67 @@ msgstr ""
msgid "is interested in:"
msgstr ""
#: ../../mod/events.php:68 ../../mod/events.php:70
#: ../../mod/events.php:71 ../../mod/events.php:73
msgid "Event title and start time are required."
msgstr ""
#: ../../mod/events.php:303
#: ../../mod/events.php:306
msgid "l, F j"
msgstr ""
#: ../../mod/events.php:325
#: ../../mod/events.php:328
msgid "Edit event"
msgstr ""
#: ../../mod/events.php:383
#: ../../mod/events.php:386
msgid "Create New Event"
msgstr ""
#: ../../mod/events.php:384
#: ../../mod/events.php:387
msgid "Previous"
msgstr ""
#: ../../mod/events.php:385 ../../mod/install.php:207
#: ../../mod/events.php:388 ../../mod/install.php:207
msgid "Next"
msgstr ""
#: ../../mod/events.php:458
msgid "hour:minute"
msgstr ""
#: ../../mod/events.php:468
#: ../../mod/events.php:480
msgid "Event details"
msgstr ""
#: ../../mod/events.php:469
#, php-format
msgid "Format is %s %s. Starting date and Title are required."
#: ../../mod/events.php:481
msgid "Starting date and Title are required."
msgstr ""
#: ../../mod/events.php:471
#: ../../mod/events.php:482
msgid "Event Starts:"
msgstr ""
#: ../../mod/events.php:471 ../../mod/events.php:485
#: ../../mod/events.php:482 ../../mod/events.php:494
msgid "Required"
msgstr ""
#: ../../mod/events.php:474
#: ../../mod/events.php:484
msgid "Finish date/time is not known or not relevant"
msgstr ""
#: ../../mod/events.php:476
#: ../../mod/events.php:486
msgid "Event Finishes:"
msgstr ""
#: ../../mod/events.php:479
#: ../../mod/events.php:488
msgid "Adjust for viewer timezone"
msgstr ""
#: ../../mod/events.php:481
#: ../../mod/events.php:490
msgid "Description:"
msgstr ""
#: ../../mod/events.php:485
#: ../../mod/events.php:494
msgid "Title:"
msgstr ""
#: ../../mod/events.php:487
#: ../../mod/events.php:496
msgid "Share this event"
msgstr ""
@ -6842,7 +6851,7 @@ msgid "Not available."
msgstr ""
#: ../../mod/profiles.php:18 ../../mod/profiles.php:133
#: ../../mod/profiles.php:179 ../../mod/profiles.php:630
#: ../../mod/profiles.php:179 ../../mod/profiles.php:626
#: ../../mod/dfrn_confirm.php:64
msgid "Profile not found."
msgstr ""
@ -6867,278 +6876,277 @@ msgstr ""
msgid "Profile Name is required."
msgstr ""
#: ../../mod/profiles.php:340
#: ../../mod/profiles.php:336
msgid "Marital Status"
msgstr ""
#: ../../mod/profiles.php:344
#: ../../mod/profiles.php:340
msgid "Romantic Partner"
msgstr ""
#: ../../mod/profiles.php:348
#: ../../mod/profiles.php:344
msgid "Likes"
msgstr ""
#: ../../mod/profiles.php:352
#: ../../mod/profiles.php:348
msgid "Dislikes"
msgstr ""
#: ../../mod/profiles.php:356
#: ../../mod/profiles.php:352
msgid "Work/Employment"
msgstr ""
#: ../../mod/profiles.php:359
#: ../../mod/profiles.php:355
msgid "Religion"
msgstr ""
#: ../../mod/profiles.php:363
#: ../../mod/profiles.php:359
msgid "Political Views"
msgstr ""
#: ../../mod/profiles.php:367
#: ../../mod/profiles.php:363
msgid "Gender"
msgstr ""
#: ../../mod/profiles.php:371
#: ../../mod/profiles.php:367
msgid "Sexual Preference"
msgstr ""
#: ../../mod/profiles.php:375
#: ../../mod/profiles.php:371
msgid "Homepage"
msgstr ""
#: ../../mod/profiles.php:379 ../../mod/profiles.php:698
#: ../../mod/profiles.php:375 ../../mod/profiles.php:694
msgid "Interests"
msgstr ""
#: ../../mod/profiles.php:383
#: ../../mod/profiles.php:379
msgid "Address"
msgstr ""
#: ../../mod/profiles.php:390 ../../mod/profiles.php:694
#: ../../mod/profiles.php:386 ../../mod/profiles.php:690
msgid "Location"
msgstr ""
#: ../../mod/profiles.php:473
#: ../../mod/profiles.php:469
msgid "Profile updated."
msgstr ""
#: ../../mod/profiles.php:568
#: ../../mod/profiles.php:564
msgid " and "
msgstr ""
#: ../../mod/profiles.php:576
#: ../../mod/profiles.php:572
msgid "public profile"
msgstr ""
#: ../../mod/profiles.php:579
#: ../../mod/profiles.php:575
#, php-format
msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
msgstr ""
#: ../../mod/profiles.php:580
#: ../../mod/profiles.php:576
#, php-format
msgid " - Visit %1$s's %2$s"
msgstr ""
#: ../../mod/profiles.php:583
#: ../../mod/profiles.php:579
#, php-format
msgid "%1$s has an updated %2$s, changing %3$s."
msgstr ""
#: ../../mod/profiles.php:658
#: ../../mod/profiles.php:654
msgid "Hide contacts and friends:"
msgstr ""
#: ../../mod/profiles.php:663
#: ../../mod/profiles.php:659
msgid "Hide your contact/friend list from viewers of this profile?"
msgstr ""
#: ../../mod/profiles.php:685
#: ../../mod/profiles.php:681
msgid "Edit Profile Details"
msgstr ""
#: ../../mod/profiles.php:687
#: ../../mod/profiles.php:683
msgid "Change Profile Photo"
msgstr ""
#: ../../mod/profiles.php:688
#: ../../mod/profiles.php:684
msgid "View this profile"
msgstr ""
#: ../../mod/profiles.php:689
#: ../../mod/profiles.php:685
msgid "Create a new profile using these settings"
msgstr ""
#: ../../mod/profiles.php:690
#: ../../mod/profiles.php:686
msgid "Clone this profile"
msgstr ""
#: ../../mod/profiles.php:691
#: ../../mod/profiles.php:687
msgid "Delete this profile"
msgstr ""
#: ../../mod/profiles.php:692
#: ../../mod/profiles.php:688
msgid "Basic information"
msgstr ""
#: ../../mod/profiles.php:693
#: ../../mod/profiles.php:689
msgid "Profile picture"
msgstr ""
#: ../../mod/profiles.php:695
#: ../../mod/profiles.php:691
msgid "Preferences"
msgstr ""
#: ../../mod/profiles.php:696
#: ../../mod/profiles.php:692
msgid "Status information"
msgstr ""
#: ../../mod/profiles.php:697
#: ../../mod/profiles.php:693
msgid "Additional information"
msgstr ""
#: ../../mod/profiles.php:699 ../../mod/newmember.php:36
#: ../../mod/profiles.php:695 ../../mod/newmember.php:36
#: ../../mod/profile_photo.php:244
msgid "Upload Profile Photo"
msgstr ""
#: ../../mod/profiles.php:700
#: ../../mod/profiles.php:696
msgid "Profile Name:"
msgstr ""
#: ../../mod/profiles.php:701
#: ../../mod/profiles.php:697
msgid "Your Full Name:"
msgstr ""
#: ../../mod/profiles.php:702
#: ../../mod/profiles.php:698
msgid "Title/Description:"
msgstr ""
#: ../../mod/profiles.php:703
#: ../../mod/profiles.php:699
msgid "Your Gender:"
msgstr ""
#: ../../mod/profiles.php:704
#, php-format
msgid "Birthday (%s):"
#: ../../mod/profiles.php:700
msgid "Birthday :"
msgstr ""
#: ../../mod/profiles.php:705
#: ../../mod/profiles.php:701
msgid "Street Address:"
msgstr ""
#: ../../mod/profiles.php:706
#: ../../mod/profiles.php:702
msgid "Locality/City:"
msgstr ""
#: ../../mod/profiles.php:707
#: ../../mod/profiles.php:703
msgid "Postal/Zip Code:"
msgstr ""
#: ../../mod/profiles.php:708
#: ../../mod/profiles.php:704
msgid "Country:"
msgstr ""
#: ../../mod/profiles.php:709
#: ../../mod/profiles.php:705
msgid "Region/State:"
msgstr ""
#: ../../mod/profiles.php:710
#: ../../mod/profiles.php:706
msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
msgstr ""
#: ../../mod/profiles.php:711
#: ../../mod/profiles.php:707
msgid "Who: (if applicable)"
msgstr ""
#: ../../mod/profiles.php:712
#: ../../mod/profiles.php:708
msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
msgstr ""
#: ../../mod/profiles.php:713
#: ../../mod/profiles.php:709
msgid "Since [date]:"
msgstr ""
#: ../../mod/profiles.php:715
#: ../../mod/profiles.php:711
msgid "Homepage URL:"
msgstr ""
#: ../../mod/profiles.php:718
#: ../../mod/profiles.php:714
msgid "Religious Views:"
msgstr ""
#: ../../mod/profiles.php:719
#: ../../mod/profiles.php:715
msgid "Public Keywords:"
msgstr ""
#: ../../mod/profiles.php:720
#: ../../mod/profiles.php:716
msgid "Private Keywords:"
msgstr ""
#: ../../mod/profiles.php:723
#: ../../mod/profiles.php:719
msgid "Example: fishing photography software"
msgstr ""
#: ../../mod/profiles.php:724
#: ../../mod/profiles.php:720
msgid "(Used for suggesting potential friends, can be seen by others)"
msgstr ""
#: ../../mod/profiles.php:725
#: ../../mod/profiles.php:721
msgid "(Used for searching profiles, never shown to others)"
msgstr ""
#: ../../mod/profiles.php:726
#: ../../mod/profiles.php:722
msgid "Tell us about yourself..."
msgstr ""
#: ../../mod/profiles.php:727
#: ../../mod/profiles.php:723
msgid "Hobbies/Interests"
msgstr ""
#: ../../mod/profiles.php:728
#: ../../mod/profiles.php:724
msgid "Contact information and Social Networks"
msgstr ""
#: ../../mod/profiles.php:729
#: ../../mod/profiles.php:725
msgid "Musical interests"
msgstr ""
#: ../../mod/profiles.php:730
#: ../../mod/profiles.php:726
msgid "Books, literature"
msgstr ""
#: ../../mod/profiles.php:731
#: ../../mod/profiles.php:727
msgid "Television"
msgstr ""
#: ../../mod/profiles.php:732
#: ../../mod/profiles.php:728
msgid "Film/dance/culture/entertainment"
msgstr ""
#: ../../mod/profiles.php:733
#: ../../mod/profiles.php:729
msgid "Love/romance"
msgstr ""
#: ../../mod/profiles.php:734
#: ../../mod/profiles.php:730
msgid "Work/employment"
msgstr ""
#: ../../mod/profiles.php:735
#: ../../mod/profiles.php:731
msgid "School/education"
msgstr ""
#: ../../mod/profiles.php:740
#: ../../mod/profiles.php:736
msgid ""
"This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
"be visible to anybody using the internet."
msgstr ""
#: ../../mod/profiles.php:750 ../../mod/directory.php:113
#: ../../mod/profiles.php:746 ../../mod/directory.php:113
msgid "Age: "
msgstr ""
#: ../../mod/profiles.php:803
#: ../../mod/profiles.php:799
msgid "Edit/Manage Profiles"
msgstr ""

File diff suppressed because it is too large Load Diff

View File

@ -76,13 +76,6 @@ $a->strings["Page not found."] = "Stránka nenalezena";
$a->strings["Permission denied"] = "Nedostatečné oprávnění";
$a->strings["Permission denied."] = "Přístup odmítnut.";
$a->strings["toggle mobile"] = "přepnout mobil";
$a->strings["Do you wish to confirm your identity (<tt>%s</tt>) with <tt>%s</tt>"] = "Přejete si potvrdit vaši identitu (<tt>%s</tt>) s <tt>%s</tt>";
$a->strings["Confirm"] = "Potvrdit";
$a->strings["Do not confirm"] = "Nepotvrzovat";
$a->strings["Trust This Site"] = "Důvěřovat tomuto webu";
$a->strings["No Identifier Sent"] = "Nezaslán žádný identifikátor";
$a->strings["Requested identity don't match logged in user."] = "Požadovaná identita neodpovídá přihlášenému uživateli";
$a->strings["Please wait; you are being redirected to <%s>"] = "Čekejte prosím, budete přesměrován na <%s>";
$a->strings["Delete this item?"] = "Odstranit tuto položku?";
$a->strings["Comment"] = "Okomentovat";
$a->strings["show more"] = "zobrazit více";
@ -194,6 +187,7 @@ $a->strings["edit"] = "editovat";
$a->strings["Groups"] = "Skupiny";
$a->strings["Edit group"] = "Editovat skupinu";
$a->strings["Create a new group"] = "Vytvořit novou skupinu";
$a->strings["Group Name: "] = "Název skupiny: ";
$a->strings["Contacts not in any group"] = "Kontakty, které nejsou v žádné skupině";
$a->strings["add"] = "přidat";
$a->strings["Wall Photos"] = "Fotografie na zdi";
@ -745,7 +739,6 @@ $a->strings["Group not found."] = "Skupina nenalezena.";
$a->strings["Group name changed."] = "Název skupiny byl změněn.";
$a->strings["Save Group"] = "Uložit Skupinu";
$a->strings["Create a group of contacts/friends."] = "Vytvořit skupinu kontaktů / přátel.";
$a->strings["Group Name: "] = "Název skupiny: ";
$a->strings["Group removed."] = "Skupina odstraněna. ";
$a->strings["Unable to remove group."] = "Nelze odstranit skupinu.";
$a->strings["Group Editor"] = "Editor skupin";
@ -844,6 +837,9 @@ $a->strings["Plugin Settings"] = "Nastavení doplňku";
$a->strings["Off"] = "Vypnuto";
$a->strings["On"] = "Zapnuto";
$a->strings["Additional Features"] = "Další Funkčnosti";
$a->strings["General Social Media Settings"] = "General Social Media nastavení";
$a->strings["Disable intelligent shortening"] = "Vypnout inteligentní zkracování";
$a->strings["Normally the system tries to find the best link to add to shortened posts. If this option is enabled then every shortened post will always point to the original friendica post."] = "Normálně se systém snaží nalézt nejlepší link pro přidání zkrácených příspěvků. Pokud je tato volba aktivní, pak každý zkrácený příspěvek bude vždy ukazovat na originální friencika příspěvek";
$a->strings["Built-in support for %s connectivity is %s"] = "Vestavěná podpora pro připojení s %s je %s";
$a->strings["enabled"] = "povoleno";
$a->strings["disabled"] = "zakázáno";
@ -950,6 +946,9 @@ $a->strings["You receive a private message"] = "obdržíte soukromou zprávu";
$a->strings["You receive a friend suggestion"] = "Obdržel jste návrh přátelství";
$a->strings["You are tagged in a post"] = "Jste označen v příspěvku";
$a->strings["You are poked/prodded/etc. in a post"] = "Byl Jste šťouchnout v příspěvku";
$a->strings["Activate desktop notifications"] = "Aktivovat upozornění na desktopu";
$a->strings["Note: This is an experimental feature, as being not supported by each browser"] = "Poznámka: Jedná se o experimentální funkci, protože není podporovaná všemi prohlížeči";
$a->strings["You will now receive desktop notifications!"] = "Nyní obdržíte notifikace na desktopu!";
$a->strings["Text-only notification emails"] = "Pouze textové notifikační e-maily";
$a->strings["Send text only notification emails, without the html part"] = "Posílat pouze textové notifikační e-maily, bez html části.";
$a->strings["Advanced Account/Page Type Settings"] = "Pokročilé nastavení účtu/stránky";
@ -1116,6 +1115,7 @@ $a->strings["Invalid profile URL."] = "Neplatné URL profilu.";
$a->strings["Your introduction has been sent."] = "Vaše žádost o propojení byla odeslána.";
$a->strings["Please login to confirm introduction."] = "Prosím přihlašte se k potvrzení žádosti o propojení.";
$a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Jste přihlášeni pod nesprávnou identitou Prosím, přihlaste se do <strong>tohoto</strong> profilu.";
$a->strings["Confirm"] = "Potvrdit";
$a->strings["Hide this contact"] = "Skrýt tento kontakt";
$a->strings["Welcome home %s."] = "Vítejte doma %s.";
$a->strings["Please confirm your introduction/connection request to %s."] = "Prosím potvrďte Vaši žádost o propojení %s.";
@ -1277,6 +1277,8 @@ $a->strings["Poll interval"] = "Dotazovací interval";
$a->strings["Delay background polling processes by this many seconds to reduce system load. If 0, use delivery interval."] = "Tímto nastavením ovlivníte prodlení mezi aktualizačními procesy běžícími na pozadí, čímž můžete snížit systémovou zátěž. Pokud 0, použijte doručovací interval.";
$a->strings["Maximum Load Average"] = "Maximální průměrné zatížení";
$a->strings["Maximum system load before delivery and poll processes are deferred - default 50."] = "Maximální zatížení systému před pozastavením procesů zajišťujících doručování aktualizací - defaultně 50";
$a->strings["Maximum Load Average (Frontend)"] = "Maximální průměrné zatížení (Frontend)";
$a->strings["Maximum system load before the frontend quits service - default 50."] = "Maximální zatížení systému předtím, než frontend ukončí službu - defaultně 50";
$a->strings["Use MySQL full text engine"] = "Použít fulltextový vyhledávací stroj MySQL";
$a->strings["Activates the full text engine. Speeds up search - but can only search for four and more characters."] = "Aktivuje fulltextový vyhledávací stroj. Zrychluje vyhledávání ale pouze pro vyhledávání čtyř a více znaků";
$a->strings["Suppress Language"] = "Potlačit Jazyk";
@ -1451,6 +1453,7 @@ $a->strings["Private photo"] = "Soukromé fotografie";
$a->strings["Public photo"] = "Veřejné fotografie";
$a->strings["Recent Photos"] = "Aktuální fotografie";
$a->strings["The post was created"] = "Příspěvek byl vytvořen";
$a->strings["You already added this contact."] = "Již jste si tento kontakt přidali.";
$a->strings["Contact added"] = "Kontakt přidán";
$a->strings["Move account"] = "Přesunout účet";
$a->strings["You can import an account from another Friendica server."] = "Můžete importovat účet z jiného Friendica serveru.";
@ -1510,6 +1513,7 @@ $a->strings["bb2dia2bb: "] = "bb2dia2bb: ";
$a->strings["bb2md2html2bb: "] = "bb2md2html2bb: ";
$a->strings["Source input (Diaspora format): "] = "Vstupní data (ve formátu Diaspora): ";
$a->strings["diaspora2bb: "] = "diaspora2bb: ";
$a->strings["Not Extended"] = "Nerozšířeně";
$a->strings["Tag removed"] = "Štítek odstraněn";
$a->strings["Remove Item Tag"] = "Odebrat štítek položky";
$a->strings["Select a tag to remove: "] = "Vyberte štítek k odebrání: ";
@ -1717,6 +1721,7 @@ $a->strings["Return to contact editor"] = "Návrat k editoru kontaktu";
$a->strings["No mirroring"] = "Žádné zrcadlení";
$a->strings["Mirror as forwarded posting"] = "Zrcadlit pro přeposlané příspěvky";
$a->strings["Mirror as my own posting"] = "Zrcadlit jako mé vlastní příspěvky";
$a->strings["Refetch contact data"] = "Znovu načíst data kontaktu";
$a->strings["Account Nickname"] = "Přezdívka účtu";
$a->strings["@Tagname - overrides Name/Nickname"] = "@Tagname - upřednostněno před Jménem/Přezdívkou";
$a->strings["Account URL"] = "URL adresa účtu";

View File

@ -1,6 +1,9 @@
<div class="vcard">
<div class="fn"><a href="{{$url}}">{{$name}}</a></div>
<div id="profile-photo-wrapper"><a href="{{$url}}"><img class="photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></a></div>
</div>
<div class="vcard">
<div class="fn">{{$name}}</div>
{{if $url}}
<div id="profile-photo-wrapper"><a href="{{$url}}"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></a></div>
{{else}}
<div id="profile-photo-wrapper"><img class="vcard-photo photo" style="width: 175px; height: 175px;" src="{{$photo}}" alt="{{$name}}" /></div>
{{/if}}
</div>

View File

@ -9,5 +9,11 @@
</video>
{{*<div class="video-top-album-name"><a href="{{$video.album.link}}" class="video-top-album-link" title="{{$video.album.alt}}" >{{$video.album.name}}</a></div>*}}
{{if $delete_url }}
<form method="post" action="{{$delete_url}}">
<input type="submit" name="delete" value="X" class="video-delete"></input>
<input type="hidden" name="id" value="{{$video.id}}"></input>
</form>
{{/if}}
</div>

View File

@ -3446,3 +3446,25 @@ ul.menu-popup {
ul.menu-popup { left: 0px; top 20px; }
}
/* videos page */
.videos .video-top-wrapper {
width: 300px;
float: left;
margin: 0px 10px 10px 0px;
position: relative;
}
.videos .video-top-wrapper .video-js {
width: 300px!important;
height: 232px!important;
}
.videos .video-top-wrapper .video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
.videos .video-top-wrapper:hover .video-delete {
opacity: 1;
}

View File

@ -1965,6 +1965,27 @@ ul.tabs li .active {
width: 50px;
float: left;
}
/* videos page */
.videos .video-top-wrapper {
width: 200px;
float: left;
margin: 0px 10px 10px 0px;
position: relative;
}
.videos .video-top-wrapper .video-js {
width: 200px!important;
height: 132px!important;
}
.videos .video-top-wrapper .video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
.videos .video-top-wrapper:hover .video-delete {
opacity: 1;
}
/* photo albums */
#photo-edit-link-wrap {
margin-bottom: 10px;

View File

@ -1965,6 +1965,27 @@ ul.tabs li .active {
width: 50px;
float: left;
}
/* videos page */
.videos .video-top-wrapper {
width: 200px;
float: left;
margin: 0px 10px 10px 0px;
position: relative;
}
.videos .video-top-wrapper .video-js {
width: 200px!important;
height: 132px!important;
}
.videos .video-top-wrapper .video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
.videos .video-top-wrapper:hover .video-delete {
opacity: 1;
}
/* photo albums */
#photo-edit-link-wrap {
margin-bottom: 10px;

View File

@ -1965,6 +1965,27 @@ ul.tabs li .active {
width: 50px;
float: left;
}
/* videos page */
.videos .video-top-wrapper {
width: 200px;
float: left;
margin: 0px 10px 10px 0px;
position: relative;
}
.videos .video-top-wrapper .video-js {
width: 200px!important;
height: 132px!important;
}
.videos .video-top-wrapper .video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
.videos .video-top-wrapper:hover .video-delete {
opacity: 1;
}
/* photo albums */
#photo-edit-link-wrap {
margin-bottom: 10px;

View File

@ -86,7 +86,9 @@ code {
}
/* tool */
.tool {
height: auto; overflow: auto;
.label { float: left;}
@ -95,6 +97,8 @@ code {
}
/* popup notifications */
#jGrowl.top-right {
top: 30px;
@ -140,7 +144,6 @@ header {
#logo-text { font-size: 22px }
}
}
/* nav */
nav {
width: 100%; height: 32px;
@ -299,6 +302,8 @@ ul.menu-popup {
}
/* aside 230px*/
aside {
display: table-cell;
@ -1031,6 +1036,7 @@ span[id^="showmore-wrap"] {
}
#acl-wrapper {
width: 690px;
float:left;
@ -1172,6 +1178,7 @@ ul.tabs {
overflow: auto;
width: 100%;
label {
float: left;
width: 200px;
@ -1193,6 +1200,7 @@ ul.tabs {
}
.onoff {
float: left;
width: 80px;
@ -1310,6 +1318,32 @@ ul.tabs {
width: 50px; float: left;
}
/* videos page */
.videos {
.video-top-wrapper {
width: 200px; float: left;
margin: 0px 10px 10px 0px;
position: relative;
.video-js {
width: 200px!important;
height: 132px!important;
}
.video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
&:hover .video-delete {
opacity: 1;
}
}
}
/* photo albums */
@photosize: 150px;
@ -1577,6 +1611,7 @@ footer { height: 100px; display: table-row; }
}
/* edit buttons for comments */
.icon.dim { opacity: 0.3;filter:alpha(opacity=30); }
.comment-edit-bb {
list-style: none;
@ -1660,3 +1695,4 @@ footer { height: 100px; display: table-row; }
border: 0px;
color: @FieldHelpColor;
}

View File

@ -2828,3 +2828,24 @@ a.mail-list-link {
.profile-view-actions{
float:right;
}
/* videos page */
.videos .video-top-wrapper {
width: 300px;
float: left;
margin: 0px 10px 10px 0px;
position: relative;
}
.videos .video-top-wrapper .video-js {
width: 300px!important;
height: 232px!important;
}
.videos .video-top-wrapper .video-delete {
position: absolute;
opacity: 0;
right: 0px;
top: 0px;
transition: opacity 0.5s;
}
.videos .video-top-wrapper:hover .video-delete {
opacity: 1;
}