Merge remote branch 'upstream/master'

Conflicts:
	include/bb2diaspora.php
This commit is contained in:
Michael Vogel 2012-06-23 12:50:00 +02:00
commit a81af2e042
40 changed files with 5542 additions and 4766 deletions

View file

@ -10,7 +10,7 @@ require_once('include/nav.php');
require_once('include/cache.php'); require_once('include/cache.php');
define ( 'FRIENDICA_PLATFORM', 'Friendica'); define ( 'FRIENDICA_PLATFORM', 'Friendica');
define ( 'FRIENDICA_VERSION', '3.0.1377' ); define ( 'FRIENDICA_VERSION', '3.0.1382' );
define ( 'DFRN_PROTOCOL_VERSION', '2.23' ); define ( 'DFRN_PROTOCOL_VERSION', '2.23' );
define ( 'DB_UPDATE_VERSION', 1149 ); define ( 'DB_UPDATE_VERSION', 1149 );
@ -77,14 +77,6 @@ define ( 'CONTACT_IS_SHARING', 2);
define ( 'CONTACT_IS_FRIEND', 3); define ( 'CONTACT_IS_FRIEND', 3);
/**
* Hook array order
*/
define ( 'HOOK_HOOK', 0);
define ( 'HOOK_FILE', 1);
define ( 'HOOK_FUNCTION', 2);
/** /**
* DB update return values * DB update return values
*/ */
@ -332,6 +324,9 @@ if(! class_exists('App')) {
private $curl_code; private $curl_code;
private $curl_headers; private $curl_headers;
private $cached_profile_image;
private $cached_profile_picdate;
function __construct() { function __construct() {
global $default_timezone; global $default_timezone;
@ -543,6 +538,28 @@ if(! class_exists('App')) {
return $this->curl_headers; return $this->curl_headers;
} }
function get_cached_avatar_image($avatar_image){
if($this->cached_profile_image[$avatar_image])
return $this->cached_profile_image[$avatar_image];
$path_parts = explode("/",$avatar_image);
$common_filename = $path_parts[count($path_parts)-1];
if($this->cached_profile_picdate[$common_filename]){
$this->cached_profile_image[$avatar_image] = $avatar_image . $this->cached_profile_picdate[$common_filename];
} else {
$r = q("SELECT `contact`.`avatar-date` AS picdate FROM `contact` WHERE `contact`.`thumb` like \"%%/%s\"",
$common_filename);
if(! count($r)){
$this->cached_profile_image[$avatar_image] = $avatar_image;
} else {
$this->cached_profile_picdate[$common_filename] = "?rev=" . urlencode($r[0]['picdate']);
$this->cached_profile_image[$avatar_image] = $avatar_image . $this->cached_profile_picdate[$common_filename];
}
}
return $this->cached_profile_image[$avatar_image];
}
} }
} }
@ -1130,9 +1147,9 @@ if(! function_exists('profile_sidebar')) {
'fullname' => $profile['name'], 'fullname' => $profile['name'],
'firstname' => $firstname, 'firstname' => $firstname,
'lastname' => $lastname, 'lastname' => $lastname,
'photo300' => $a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg', 'photo300' => $a->get_cached_avatar_image($a->get_baseurl() . '/photo/custom/300/' . $profile['uid'] . '.jpg'),
'photo100' => $a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg', 'photo100' => $a->get_cached_avatar_image($a->get_baseurl() . '/photo/custom/100/' . $profile['uid'] . '.jpg'),
'photo50' => $a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg', 'photo50' => $a->get_cached_avatar_image($a->get_baseurl() . '/photo/custom/50/' . $profile['uid'] . '.jpg'),
); );
if (!$block){ if (!$block){
@ -1367,7 +1384,7 @@ if(! function_exists('proc_run')) {
if(! function_exists('current_theme')) { if(! function_exists('current_theme')) {
function current_theme(){ function current_theme(){
$app_base_themes = array('duepuntozero', 'loozah'); $app_base_themes = array('duepuntozero', 'dispy', 'quattro');
$a = get_app(); $a = get_app();
@ -1385,7 +1402,7 @@ if(! function_exists('current_theme')) {
return($t); return($t);
} }
$fallback = glob('view/theme/*/style.[css|php]'); $fallback = array_merge(glob('view/theme/*/style.css'),glob('view/theme/*/style.php'));
if(count($fallback)) if(count($fallback))
return (str_replace('view/theme/','', substr($fallback[0],0,-10))); return (str_replace('view/theme/','', substr($fallback[0],0,-10)));

View file

@ -123,6 +123,69 @@ class Photo {
$this->height = imagesy($this->image); $this->height = imagesy($this->image);
} }
public function flip($horiz = true, $vert = false) {
$w = imagesx($this->image);
$h = imagesy($this->image);
$flipped = imagecreate($w, $h);
if($horiz) {
for ($x = 0; $x < $w; $x++) {
imagecopy($flipped, $this->image, $x, 0, $w - $x - 1, 0, 1, $h);
}
}
if($vert) {
for ($y = 0; $y < $h; $y++) {
imagecopy($flipped, $this->image, 0, $y, 0, $h - $y - 1, $w, 1);
}
}
$this->image = $flipped;
}
public function orient($filename) {
// based off comment on http://php.net/manual/en/function.imagerotate.php
if(! function_exists('exif_read_data'))
return;
$exif = exif_read_data($filename);
$ort = $exif['Orientation'];
switch($ort)
{
case 1: // nothing
break;
case 2: // horizontal flip
$this->flip();
break;
case 3: // 180 rotate left
$this->rotate(180);
break;
case 4: // vertical flip
$this->flip(false, true);
break;
case 5: // vertical flip + 90 rotate right
$this->flip(false, true);
$this->rotate(-90);
break;
case 6: // 90 rotate right
$this->rotate(-90);
break;
case 7: // horizontal flip + 90 rotate right
$this->flip();
$this->rotate(-90);
break;
case 8: // 90 rotate left
$this->rotate(90);
break;
}
}
public function scaleImageUp($min) { public function scaleImageUp($min) {

View file

@ -352,10 +352,11 @@ function probe_url($url, $mode = PROBE_NORMAL) {
$email_conversant = false; $email_conversant = false;
$twitter = ((strpos($url,'twitter.com') !== false) ? true : false); $twitter = ((strpos($url,'twitter.com') !== false) ? true : false);
$lastfm = ((strpos($url,'last.fm/user') !== false) ? true : false);
$at_addr = ((strpos($url,'@') !== false) ? true : false); $at_addr = ((strpos($url,'@') !== false) ? true : false);
if(! $twitter) { if((! $twitter) && (! $lastfm)) {
if(strpos($url,'mailto:') !== false && $at_addr) { if(strpos($url,'mailto:') !== false && $at_addr) {
$url = str_replace('mailto:','',$url); $url = str_replace('mailto:','',$url);
@ -564,6 +565,14 @@ function probe_url($url, $mode = PROBE_NORMAL) {
$vcard['fn'] = $tid . '@twitter'; $vcard['fn'] = $tid . '@twitter';
} }
if($lastfm) {
$profile = $url;
$poll = str_replace(array('www.','last.fm/'),array('','ws.audioscrobbler.com/1.0/'),$url) . '/recenttracks.rss';
$vcard['nick'] = basename($url);
$vcard['fn'] = $vcard['nick'] . t(' on Last.fm');
$network = NETWORK_FEED;
}
if(! x($vcard,'fn')) if(! x($vcard,'fn'))
if(x($vcard,'nick')) if(x($vcard,'nick'))
$vcard['fn'] = $vcard['nick']; $vcard['fn'] = $vcard['nick'];

View file

@ -719,14 +719,18 @@
if ($page<0) $page=0; if ($page<0) $page=0;
$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
$max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0); $max_id = (x($_REQUEST,'max_id')?$_REQUEST['max_id']:0);
$exclude_replies = (x($_REQUEST,'exclude_replies')?1:0);
//$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
$start = $page*$count; $start = $page*$count;
//$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false); //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false);
$sql_extra = '';
if ($max_id > 0) if ($max_id > 0)
$sql_extra = 'AND `item`.`id` <= '.intval($max_id); $sql_extra .= ' AND `item`.`id` <= '.intval($max_id);
if ($exclude_replies > 0)
$sql_extra .= ' AND `item`.`parent` = `item`.`id`';
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@ -860,6 +864,8 @@
logger('API: api_statuses_show: '.$id); logger('API: api_statuses_show: '.$id);
//$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false); //$include_entities = (x($_REQUEST,'include_entities')?$_REQUEST['include_entities']:false);
//$sql_extra = "";
if ($_GET["conversation"] == "true") $sql_extra .= " AND `item`.`parent` = %d ORDER BY `received` ASC "; else $sql_extra .= " AND `item`.`id` = %d";
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
@ -870,12 +876,16 @@
AND `contact`.`id` = `item`.`contact-id` AND `contact`.`id` = `item`.`contact-id`
AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0 AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
$sql_extra $sql_extra
AND `item`.`id`=%d", ",
intval($id) intval($id)
); );
//var_dump($r);
$ret = api_format_items($r,$user_info); $ret = api_format_items($r,$user_info);
//var_dump($ret);
if ($_GET["conversation"] == "true") {
$data = array('$statuses' => $ret);
return api_apply_template("timeline", $type, $data);
} else {
$data = array('$status' => $ret[0]); $data = array('$status' => $ret[0]);
/*switch($type){ /*switch($type){
case "atom": case "atom":
@ -884,6 +894,7 @@
}*/ }*/
return api_apply_template("status", $type, $data); return api_apply_template("status", $type, $data);
} }
}
api_register_func('api/statuses/show','api_statuses_show', true); api_register_func('api/statuses/show','api_statuses_show', true);
@ -1061,11 +1072,14 @@
$page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0); $page = (x($_REQUEST,'page')?$_REQUEST['page']-1:0);
if ($page<0) $page=0; if ($page<0) $page=0;
$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); $since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
$exclude_replies = (x($_REQUEST,'exclude_replies')?1:0);
//$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0); //$since_id = 0;//$since_id = (x($_REQUEST,'since_id')?$_REQUEST['since_id']:0);
$start = $page*$count; $start = $page*$count;
if ($user_info['self']==1) $sql_extra = "AND `item`.`wall` = 1 "; $sql_extra = '';
if ($user_info['self']==1) $sql_extra .= " AND `item`.`wall` = 1 ";
if ($exclude_replies > 0) $sql_extra .= ' AND `item`.`parent` = `item`.`id`';
$r = q("SELECT `item`.*, `item`.`id` AS `item_id`, $r = q("SELECT `item`.*, `item`.`id` AS `item_id`,
`contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,

View file

@ -67,6 +67,22 @@ function stripdcode_br_cb($s) {
} }
function diaspora_ul($s) {
// Replace "[\\*]" followed by any number (including zero) of
// spaces by "* " to match Diaspora's list format
return preg_replace("/\[\\\\\*\]( *)/", "* ", $s[1]);
}
function diaspora_ol($s) {
// A hack: Diaspora will create a properly-numbered ordered list even
// if you use '1.' for each element of the list, like:
// 1. First element
// 1. Second element
// 1. Third element
return preg_replace("/\[\\\\\*\]( *)/", "1. ", $s[1]);
}
function bb2diaspora($Text,$preserve_nl = false) { function bb2diaspora($Text,$preserve_nl = false) {
@ -95,6 +111,11 @@ function bb2diaspora($Text,$preserve_nl = false) {
if($preserve_nl) if($preserve_nl)
$Text = str_replace(array("\n","\r"), array('',''),$Text); $Text = str_replace(array("\n","\r"), array('',''),$Text);
else
// Remove the "return" character, as Diaspora uses only the "newline"
// character, so having the "return" character can cause signature
// failures
$Text = str_replace("\r", "", $Text);
// Set up the parameters for a URL search string // Set up the parameters for a URL search string
@ -136,38 +157,45 @@ function bb2diaspora($Text,$preserve_nl = false) {
// Check for bold text // Check for bold text
$Text = preg_replace("(\[b\](.*?)\[\/b\])is",'**$1**',$Text); $Text = preg_replace("(\[b\](.*?)\[\/b\])is",'**$1**',$Text);
// Check for Italics text // Check for italics text
$Text = preg_replace("(\[i\](.*?)\[\/i\])is",'_$1_',$Text); $Text = preg_replace("(\[i\](.*?)\[\/i\])is",'_$1_',$Text);
// Check for Underline text // Check for underline text
// $Text = preg_replace("(\[u\](.*?)\[\/u\])is",'<u>$1</u>',$Text); // Replace with italics since Diaspora doesn't have underline
$Text = preg_replace("(\[u\](.*?)\[\/u\])is",'_$1_',$Text);
// Check for strike-through text // Check for strike-through text
// $Text = preg_replace("(\[s\](.*?)\[\/s\])is",'<strike>$1</strike>',$Text); $Text = preg_replace("(\[s\](.*?)\[\/s\])is",'**[strike]**$1**[/strike]**',$Text);
// Check for over-line text // Check for over-line text
// $Text = preg_replace("(\[o\](.*?)\[\/o\])is",'<span class="overline">$1</span>',$Text); // $Text = preg_replace("(\[o\](.*?)\[\/o\])is",'<span class="overline">$1</span>',$Text);
// Check for colored text // Check for colored text
// $Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","<span style=\"color: $1;\">$2</span>",$Text); // Remove color since Diaspora doesn't support it
$Text = preg_replace("(\[color=(.*?)\](.*?)\[\/color\])is","$2",$Text);
// Check for sized text // Check for sized text
// $Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","<span style=\"font-size: $1;\">$2</span>",$Text); // Remove it since Diaspora doesn't support sizes very well
$Text = preg_replace("(\[size=(.*?)\](.*?)\[\/size\])is","$2",$Text);
// Check for list text // Check for list text
// $Text = preg_replace("/\[list\](.*?)\[\/list\]/is", '<ul class="listbullet">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[list\](.*?)\[\/list\]/is", 'diaspora_ul', $Text);
// $Text = preg_replace("/\[list=1\](.*?)\[\/list\]/is", '<ul class="listdecimal">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[ul\](.*?)\[\/ul\]/is", 'diaspora_ul', $Text);
// $Text = preg_replace("/\[list=i\](.*?)\[\/list\]/s",'<ul class="listlowerroman">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[list=1\](.*?)\[\/list\]/is", 'diaspora_ol', $Text);
// $Text = preg_replace("/\[list=I\](.*?)\[\/list\]/s", '<ul class="listupperroman">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[list=i\](.*?)\[\/list\]/s",'diaspora_ol', $Text);
// $Text = preg_replace("/\[list=a\](.*?)\[\/list\]/s", '<ul class="listloweralpha">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[list=I\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
// $Text = preg_replace("/\[list=A\](.*?)\[\/list\]/s", '<ul class="listupperalpha">$1</ul>' ,$Text); $Text = preg_replace_callback("/\[list=a\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[list=A\](.*?)\[\/list\]/s", 'diaspora_ol', $Text);
$Text = preg_replace_callback("/\[ol\](.*?)\[\/ol\]/is", 'diaspora_ol', $Text);
// $Text = preg_replace("/\[li\](.*?)\[\/li\]/s", '<li>$1</li>' ,$Text); // $Text = preg_replace("/\[li\](.*?)\[\/li\]/s", '<li>$1</li>' ,$Text);
// $Text = preg_replace("/\[td\](.*?)\[\/td\]/s", '<td>$1</td>' ,$Text); // Just get rid of table tags since Diaspora doesn't support tables
// $Text = preg_replace("/\[tr\](.*?)\[\/tr\]/s", '<tr>$1</tr>' ,$Text); $Text = preg_replace("/\[th\](.*?)\[\/th\]/s", '$1' ,$Text);
// $Text = preg_replace("/\[table\](.*?)\[\/table\]/s", '<table>$1</table>' ,$Text); $Text = preg_replace("/\[td\](.*?)\[\/td\]/s", '$1' ,$Text);
$Text = preg_replace("/\[tr\](.*?)\[\/tr\]/s", '$1' ,$Text);
$Text = preg_replace("/\[table\](.*?)\[\/table\]/s", '$1' ,$Text);
// $Text = preg_replace("/\[table border=1\](.*?)\[\/table\]/s", '<table border="1" >$1</table>' ,$Text); $Text = preg_replace("/\[table border=(.*?)\](.*?)\[\/table\]/s", '$2' ,$Text);
// $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/s", '<table border="0" >$1</table>' ,$Text); // $Text = preg_replace("/\[table border=0\](.*?)\[\/table\]/s", '<table border="0" >$1</table>' ,$Text);
@ -189,6 +217,7 @@ function bb2diaspora($Text,$preserve_nl = false) {
// $QuoteLayout = '<blockquote>$1</blockquote>'; // $QuoteLayout = '<blockquote>$1</blockquote>';
// Check for [quote] text // Check for [quote] text
$Text = preg_replace("/\[quote\](.*?)\[\/quote\]/is",">$1\n\n", $Text); $Text = preg_replace("/\[quote\](.*?)\[\/quote\]/is",">$1\n\n", $Text);
$Text = preg_replace("/\[quote=(.*?)\](.*?)\[\/quote\]/is",">$2\n\n", $Text);
// Images // Images
@ -235,6 +264,11 @@ function bb2diaspora($Text,$preserve_nl = false) {
$Text = preg_replace_callback('/\[(.*?)\]\((.*?)\)/ism','unescape_underscores_in_links',$Text); $Text = preg_replace_callback('/\[(.*?)\]\((.*?)\)/ism','unescape_underscores_in_links',$Text);
*/ */
// Remove any leading or trailing whitespace, as this will mess up
// the Diaspora signature verification and cause the item to disappear
$Text = trim($Text);
call_hooks('bb2diaspora',$Text); call_hooks('bb2diaspora',$Text);
return $Text; return $Text;

View file

@ -308,7 +308,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
if(($normalised != 'mailbox') && (x($a->contacts[$normalised]))) if(($normalised != 'mailbox') && (x($a->contacts[$normalised])))
$profile_avatar = $a->contacts[$normalised]['thumb']; $profile_avatar = $a->contacts[$normalised]['thumb'];
else else
$profile_avatar = ((strlen($item['author-avatar'])) ? $item['author-avatar'] : $item['thumb']); $profile_avatar = ((strlen($item['author-avatar'])) ? $a->get_cached_avatar_image($item['author-avatar']) : $item['thumb']);
$locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => ''); $locate = array('location' => $item['location'], 'coord' => $item['coord'], 'html' => '');
call_hooks('render_location',$locate); call_hooks('render_location',$locate);
@ -657,7 +657,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
if(($normalised != 'mailbox') && (x($a->contacts,$normalised))) if(($normalised != 'mailbox') && (x($a->contacts,$normalised)))
$profile_avatar = $a->contacts[$normalised]['thumb']; $profile_avatar = $a->contacts[$normalised]['thumb'];
else else
$profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $thumb); $profile_avatar = (((strlen($item['author-avatar'])) && $diff_author) ? $item['author-avatar'] : $a->get_cached_avatar_image($thumb));
$like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : ''); $like = ((x($alike,$item['id'])) ? format_like($alike[$item['id']],$alike[$item['id'] . '-l'],'like',$item['id']) : '');
$dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : ''); $dislike = ((x($dlike,$item['id'])) ? format_like($dlike[$item['id']],$dlike[$item['id'] . '-l'],'dislike',$item['id']) : '');

View file

@ -2162,7 +2162,7 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
$a = get_app(); $a = get_app();
$myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
$theiraddr = $contact['addr']; // $theiraddr = $contact['addr'];
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
// return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent. // return the items ordered by `item`.`id`, in which case the wrong item is chosen as the parent.
@ -2226,7 +2226,10 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$a = get_app(); $a = get_app();
$myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3); $myaddr = $owner['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
$theiraddr = $contact['addr']; // $theiraddr = $contact['addr'];
$body = $item['body'];
$text = html_entity_decode(bb2diaspora($body));
// The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always // The first item in the `item` table with the parent id is the parent. However, MySQL doesn't always
@ -2245,26 +2248,30 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
$relay_retract = false; $relay_retract = false;
$sql_sign_id = 'iid'; $sql_sign_id = 'iid';
if( $item['deleted']) { if( $item['deleted']) {
$tpl = get_markup_template('diaspora_relayable_retraction.tpl');
$relay_retract = true; $relay_retract = true;
$sql_sign_id = 'retract_iid';
$target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment'); $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
$sender_signed_text = $item['guid'] . ';' . $target_type ;
$sql_sign_id = 'retract_iid';
$tpl = get_markup_template('diaspora_relayable_retraction.tpl');
} }
elseif($item['verb'] === ACTIVITY_LIKE) { elseif($item['verb'] === ACTIVITY_LIKE) {
$tpl = get_markup_template('diaspora_like_relay.tpl');
$like = true; $like = true;
$target_type = 'Post'; $target_type = 'Post';
// $positive = (($item['deleted']) ? 'false' : 'true'); // $positive = (($item['deleted']) ? 'false' : 'true');
$positive = 'true'; $positive = 'true';
$sender_signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $myaddr;
$tpl = get_markup_template('diaspora_like_relay.tpl');
} }
else { else { // item is a comment
$sender_signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $myaddr;
$tpl = get_markup_template('diaspora_comment_relay.tpl'); $tpl = get_markup_template('diaspora_comment_relay.tpl');
} }
$body = $item['body'];
$text = html_entity_decode(bb2diaspora($body));
// fetch the original signature if the relayable was created by a Diaspora // fetch the original signature if the relayable was created by a Diaspora
// or DFRN user. Relayables for other networks are not supported. // or DFRN user. Relayables for other networks are not supported.
@ -2285,51 +2292,20 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
// function is called // function is called
logger('diaspora_send_relay: original author signature not found, cannot send relayable'); logger('diaspora_send_relay: original author signature not found, cannot send relayable');
return; return;
/*
$itemcontact = q("select * from contact where `id` = %d limit 1",
intval($item['contact-id'])
);
if(count($itemcontact)) {
if(! $itemcontact[0]['self']) {
$prefix = sprintf( t('[Relayed] Comment authored by %s from network %s'),
'['. $item['author-name'] . ']' . '(' . $item['author-link'] . ')',
network_to_name($itemcontact['network'])) . "\n";
// "$body" was assigned to "$text" above. It isn't used after that, so I don't think
// the following change will do anything
$body = $prefix . $body;
// I think this comment will fail upon reaching Diaspora, because "$signed_text" is not defined
}
}
else {
// I'm confused about this "else." Since it sets "$handle = $myaddr," it seems like it should be for the case
// where the top-level post owner commented on his own post, i.e. "$itemcontact[0]['self']" is true. But it's
// positioned to be for the case where "count($itemcontact)" is 0.
$handle = $myaddr;
if($like)
$signed_text = $item['guid'] . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $handle;
elseif($relay_retract)
$signed_text = $item['guid'] . ';' . $target_type;
else
$signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $handle;
$authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
q("insert into sign (`" . $sql_sign_id . "`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
intval($item['id']),
dbesc($signed_text),
dbesc($authorsig),
dbesc($handle)
);
}
*/
} }
// sign it with the top-level owner's signature // Sign the relayable with the top-level owner's signature
//
// We'll use the $sender_signed_text that we just created, instead of the $signed_text
// stored in the database, because that provides the best chance that Diaspora will
// be able to reconstruct the signed text the same way we did. This is particularly a
// concern for the comment, whose signed text includes the text of the comment. The
// smallest change in the text of the comment, including removing whitespace, will
// make the signature verification fail. Since we translate from BB code to Diaspora's
// markup at the top of this function, which is AFTER we placed the original $signed_text
// in the database, it's hazardous to trust the original $signed_text.
$parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')); $parentauthorsig = base64_encode(rsa_sign($sender_signed_text,$owner['uprvkey'],'sha256'));
$msg = replace_macros($tpl,array( $msg = replace_macros($tpl,array(
'$guid' => xmlify($item['guid']), '$guid' => xmlify($item['guid']),

View file

@ -123,7 +123,7 @@ function notification($params) {
if($params['type'] == NOTIFY_TAGSELF) { if($params['type'] == NOTIFY_TAGSELF) {
$subject = sprintf( t('[Friendica:Notify] %s tagged you') , $params['source_name']); $subject = sprintf( t('[Friendica:Notify] %s tagged you') , $params['source_name']);
$preamble = sprintf( t('%1$s tagged you at %2$s') , $params['source_name'], $sitename); $preamble = sprintf( t('%1$s tagged you at %2$s') , $params['source_name'], $sitename);
$epreamble = sprintf( t('%1$s [url=%2s]tagged you[/url].') , $epreamble = sprintf( t('%1$s [url=%2$s]tagged you[/url].') ,
'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]',
$params['link']); $params['link']);

View file

@ -446,6 +446,8 @@ function get_atom_elements($feed,$item) {
$res['body'] = $purifier->purify($res['body']); $res['body'] = $purifier->purify($res['body']);
$res['body'] = @html2bbcode($res['body']); $res['body'] = @html2bbcode($res['body']);
} }
elseif(! $have_real_body) { elseif(! $have_real_body) {
@ -814,6 +816,12 @@ function item_store($arr,$force_parent = false) {
if($r[0]['private']) if($r[0]['private'])
$arr['private'] = 1; $arr['private'] = 1;
// Edge case. We host a public forum that was originally posted to privately.
// The original author commented, but as this is a comment, the permissions
// weren't fixed up so it will still show the comment as private unless we fix it here.
if((intval($r[0]['forum_mode']) == 1) && (! $r[0]['private']))
$arr['private'] = 0;
} }
else { else {
@ -1258,6 +1266,12 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
return 3; return 3;
} }
if($contact['term-date'] != '0000-00-00 00:00:00') {
logger("dfrn_deliver: $url back from the dead - removing mark for death");
require_once('include/Contact.php');
unmark_for_death($contact);
}
$res = parse_xml_string($xml); $res = parse_xml_string($xml);
return $res->status; return $res->status;

View file

@ -53,9 +53,9 @@ function nav(&$a) {
$nav['usermenu'][] = Array('notes/', t('Personal notes'), "", t('Your personal photos')); $nav['usermenu'][] = Array('notes/', t('Personal notes'), "", t('Your personal photos'));
// user info // user info
$r = q("SELECT `micro`,`avatar-date` FROM `contact` WHERE uid=%d AND self=1", intval($a->user['uid'])); $r = q("SELECT micro FROM contact WHERE uid=%d AND self=1", intval($a->user['uid']));
$userinfo = array( $userinfo = array(
'icon' => (count($r) ? $r[0]['micro']."?rev=".urlencode($r[0]['avatar-date']): $a->get_baseurl($ssl_state)."/images/person-48.jpg"), 'icon' => (count($r) ? $a->get_cached_avatar_image($r[0]['micro']) : $a->get_baseurl($ssl_state)."/images/person-48.jpg"),
'name' => $a->user['username'], 'name' => $a->user['username'],
); );

View file

@ -148,7 +148,9 @@ function load_hooks() {
$r = q("SELECT * FROM `hook` WHERE 1"); $r = q("SELECT * FROM `hook` WHERE 1");
if(count($r)) { if(count($r)) {
foreach($r as $rr) { foreach($r as $rr) {
$a->hooks[] = array($rr['hook'], $rr['file'], $rr['function']); if(! array_key_exists($rr['hook'],$a->hooks))
$a->hooks[$rr['hook']] = array();
$a->hooks[$rr['hook']][] = array($rr['file'],$rr['function']);
} }
} }
}} }}
@ -158,25 +160,24 @@ if(! function_exists('call_hooks')) {
function call_hooks($name, &$data = null) { function call_hooks($name, &$data = null) {
$a = get_app(); $a = get_app();
if(count($a->hooks)) { if((is_array($a->hooks)) && (array_key_exists($name,$a->hooks))) {
foreach($a->hooks as $hook) { foreach($a->hooks[$name] as $hook) {
if($hook[HOOK_HOOK] === $name) { @include_once($hook[0]);
@include_once($hook[HOOK_FILE]); if(function_exists($hook[1])) {
if(function_exists($hook[HOOK_FUNCTION])) { $func = $hook[1];
$func = $hook[HOOK_FUNCTION];
$func($a,$data); $func($a,$data);
} }
else { else {
// remove orphan hooks // remove orphan hooks
q("delete from hook where hook = '%s' and file = '$s' and function = '%s' limit 1", q("delete from hook where hook = '%s' and file = '$s' and function = '%s' limit 1",
dbesc($hook[HOOK_HOOK]), dbesc($name),
dbesc($hook[HOOK_FILE]), dbesc($hook[0]),
dbesc($hook[HOOK_FUNCTION]) dbesc($hook[1])
); );
} }
} }
} }
}
}} }}

View file

@ -246,7 +246,10 @@ if(! $install)
if($a->module_loaded) { if($a->module_loaded) {
$a->page['page_title'] = $a->module; $a->page['page_title'] = $a->module;
$placeholder = '';
if(function_exists($a->module . '_init')) { if(function_exists($a->module . '_init')) {
call_hooks($a->module . '_mod_init', $placeholder);
$func = $a->module . '_init'; $func = $a->module . '_init';
$func($a); $func($a);
} }
@ -266,18 +269,25 @@ if($a->module_loaded) {
if(($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error) if(($_SERVER['REQUEST_METHOD'] === 'POST') && (! $a->error)
&& (function_exists($a->module . '_post')) && (function_exists($a->module . '_post'))
&& (! x($_POST,'auth-params'))) { && (! x($_POST,'auth-params'))) {
call_hooks($a->module . '_mod_post', $_POST);
$func = $a->module . '_post'; $func = $a->module . '_post';
$func($a); $func($a);
} }
if((! $a->error) && (function_exists($a->module . '_afterpost'))) { if((! $a->error) && (function_exists($a->module . '_afterpost'))) {
call_hooks($a->module . '_mod_afterpost',$placeholder);
$func = $a->module . '_afterpost'; $func = $a->module . '_afterpost';
$func($a); $func($a);
} }
if((! $a->error) && (function_exists($a->module . '_content'))) { if((! $a->error) && (function_exists($a->module . '_content'))) {
$arr = array('content' => $a->page['content']);
call_hooks($a->module . '_mod_content', $arr);
$a->page['content'] = $arr['content'];
$func = $a->module . '_content'; $func = $a->module . '_content';
$a->page['content'] .= $func($a); $arr = array('content' => $func($a));
call_hooks($a->module . '_mod_aftercontent', $arr);
$a->page['content'] .= $arr['content'];
} }
} }

View file

@ -709,7 +709,7 @@ class SimplePie
* @see SimplePie::strip_htmltags() * @see SimplePie::strip_htmltags()
* @access private * @access private
*/ */
var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
/** /**
* The SimplePie class contains feed level data and options * The SimplePie class contains feed level data and options
@ -14803,7 +14803,7 @@ class SimplePie_Sanitize
// Options // Options
var $remove_div = true; var $remove_div = true;
var $image_handler = ''; var $image_handler = '';
var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'); var $strip_htmltags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style');
var $encode_instead_of_strip = false; var $encode_instead_of_strip = false;
var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc'); var $strip_attributes = array('bgsound', 'class', 'expr', 'id', 'style', 'onclick', 'onerror', 'onfinish', 'onmouseover', 'onmouseout', 'onfocus', 'onblur', 'lowsrc', 'dynsrc');
var $strip_comments = false; var $strip_comments = false;
@ -14892,7 +14892,7 @@ class SimplePie_Sanitize
} }
} }
function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'iframe', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style')) function strip_htmltags($tags = array('base', 'blink', 'body', 'doctype', 'embed', 'font', 'form', 'frame', 'frameset', 'html', 'input', 'marquee', 'meta', 'noscript', 'object', 'param', 'script', 'style'))
{ {
if ($tags) if ($tags)
{ {

View file

@ -479,12 +479,13 @@ function contacts_content(&$a) {
$searching = false;
if($search) { if($search) {
$search_hdr = $search; $search_hdr = $search;
$search = dbesc($search.'*'); $search_txt = dbesc(protect_sprintf(preg_quote($search)));
$searching = true;
} }
$sql_extra .= ((strlen($search)) ? " AND MATCH `name` AGAINST ('$search' IN BOOLEAN MODE) " : ""); $sql_extra .= (($searching) ? " AND `name` REGEXP '$search_txt' " : "");
if($nets) if($nets)
$sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets)); $sql_extra .= sprintf(" AND network = '%s' ", dbesc($nets));
@ -501,7 +502,6 @@ function contacts_content(&$a) {
} }
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ", $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 0 AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ",
intval($_SESSION['uid']), intval($_SESSION['uid']),
intval($a->pager['start']), intval($a->pager['start']),
@ -568,7 +568,7 @@ function contacts_content(&$a) {
'$total' => $total, '$total' => $total,
'$search' => $search_hdr, '$search' => $search_hdr,
'$desc' => t('Search your contacts'), '$desc' => t('Search your contacts'),
'$finding' => (strlen($search) ? t('Finding: ') . "'" . $search . "'" : ""), '$finding' => (($searching) ? t('Finding: ') . "'" . $search . "'" : ""),
'$submit' => t('Find'), '$submit' => t('Find'),
'$cmd' => $a->cmd, '$cmd' => $a->cmd,
'$contacts' => $contacts, '$contacts' => $contacts,

View file

@ -443,7 +443,7 @@ function dfrn_poll_content(&$a) {
$encrypted_id = ''; $encrypted_id = '';
$id_str = $my_id . '.' . mt_rand(1000,9999); $id_str = $my_id . '.' . mt_rand(1000,9999);
if($r[0]['duplex'] && strlen($r[0]['pubkey'])) { if(($r[0]['duplex'] && strlen($r[0]['pubkey'])) || (! strlen($r[0]['prvkey']))) {
openssl_public_encrypt($hash,$challenge,$r[0]['pubkey']); openssl_public_encrypt($hash,$challenge,$r[0]['pubkey']);
openssl_public_encrypt($id_str,$encrypted_id,$r[0]['pubkey']); openssl_public_encrypt($id_str,$encrypted_id,$r[0]['pubkey']);
} }

View file

@ -170,7 +170,7 @@ function dfrn_request_post(&$a) {
info( t("Introduction complete.") . EOL); info( t("Introduction complete.") . EOL);
} }
$r = q("select id from contact where uid = %d and url = '%s' and `site-pubkey` = '%s limit 1", $r = q("select id from contact where uid = %d and url = '%s' and `site-pubkey` = '%s' limit 1",
intval(local_user()), intval(local_user()),
dbesc($dfrn_url), dbesc($dfrn_url),
$parms['key'] // this was already escaped $parms['key'] // this was already escaped

View file

@ -73,7 +73,7 @@ function directory_content(&$a) {
$order = " ORDER BY `name` ASC "; $order = " ORDER BY `name` ASC ";
$r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `contact`.`avatar-date` AS picdate, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT join `contact` on `contact`.`uid` = `profile`.`uid` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 AND `self` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ", $r = q("SELECT `profile`.*, `profile`.`uid` AS `profile_uid`, `user`.`nickname`, `user`.`timezone` FROM `profile` LEFT JOIN `user` ON `user`.`uid` = `profile`.`uid` WHERE `is-default` = 1 $publish AND `user`.`blocked` = 0 $sql_extra $order LIMIT %d , %d ",
intval($a->pager['start']), intval($a->pager['start']),
intval($a->pager['itemspage']) intval($a->pager['itemspage'])
); );
@ -116,7 +116,7 @@ function directory_content(&$a) {
$entry = replace_macros($tpl,array( $entry = replace_macros($tpl,array(
'$id' => $rr['id'], '$id' => $rr['id'],
'$profile-link' => $profile_link, '$profile-link' => $profile_link,
'$photo' => $rr[$photo] . '?rev=' . urlencode($rr['picdate']), '$photo' => $a->get_cached_avatar_image($rr[$photo]),
'$alt-text' => $rr['name'], '$alt-text' => $rr['name'],
'$name' => $rr['name'], '$name' => $rr['name'],
'$details' => $pdesc . $details '$details' => $pdesc . $details

View file

@ -407,6 +407,7 @@ function message_content(&$a) {
'$parent' => $parent, '$parent' => $parent,
'$upload' => t('Upload photo'), '$upload' => t('Upload photo'),
'$insert' => t('Insert web link'), '$insert' => t('Insert web link'),
'$submit' => t('Submit'),
'$wait' => t('Please wait') '$wait' => t('Please wait')
)); ));

View file

@ -16,7 +16,7 @@ function photos_init(&$a) {
if($a->argc > 1) { if($a->argc > 1) {
$nick = $a->argv[1]; $nick = $a->argv[1];
$r = q("SELECT `user`.*, `contact`.`avatar-date` AS picdate FROM `user` LEFT JOIN `contact` on `contact`.`uid` = `user`.`uid` WHERE `user`.`nickname` = '%s' AND `user`.`blocked` = 0 LIMIT 1", $r = q("SELECT * FROM `user` WHERE `nickname` = '%s' AND `blocked` = 0 LIMIT 1",
dbesc($nick) dbesc($nick)
); );
@ -36,7 +36,7 @@ function photos_init(&$a) {
$o .= '<div class="vcard">'; $o .= '<div class="vcard">';
$o .= '<div class="fn">' . $a->data['user']['username'] . '</div>'; $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_baseurl() . '/photo/profile/' . $a->data['user']['uid'] . '.jpg?rev=' . urlencode($a->data['user']['picdate']) . '" alt="' . $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>'; $o .= '</div>';
if(! intval($a->data['user']['hidewall'])) { if(! intval($a->data['user']['hidewall'])) {
@ -306,7 +306,8 @@ function photos_post(&$a) {
$albname = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y'); $albname = datetime_convert('UTC',date_default_timezone_get(),'now', 'Y');
if((x($_POST,'rotate') !== false) && (intval($_POST['rotate']) == 1)) { if((x($_POST,'rotate') !== false) &&
( (intval($_POST['rotate']) == 1) || (intval($_POST['rotate']) == 2) )) {
logger('rotate'); logger('rotate');
$r = q("select * from photo where `resource-id` = '%s' and uid = %d and scale = 0 limit 1", $r = q("select * from photo where `resource-id` = '%s' and uid = %d and scale = 0 limit 1",
@ -316,7 +317,8 @@ function photos_post(&$a) {
if(count($r)) { if(count($r)) {
$ph = new Photo($r[0]['data'], $r[0]['type']); $ph = new Photo($r[0]['data'], $r[0]['type']);
if($ph->is_valid()) { if($ph->is_valid()) {
$ph->rotate(270); $rotate_deg = ( (intval($_POST['rotate']) == 1) ? 270 : 90 );
$ph->rotate($rotate_deg);
$width = $ph->getWidth(); $width = $ph->getWidth();
$height = $ph->getHeight(); $height = $ph->getHeight();
@ -718,6 +720,7 @@ function photos_post(&$a) {
killme(); killme();
} }
$ph->orient($src);
@unlink($src); @unlink($src);
$width = $ph->getWidth(); $width = $ph->getWidth();
@ -1250,7 +1253,8 @@ function photos_content(&$a) {
$edit_tpl = get_markup_template('photo_edit.tpl'); $edit_tpl = get_markup_template('photo_edit.tpl');
$edit = replace_macros($edit_tpl, array( $edit = replace_macros($edit_tpl, array(
'$id' => $ph[0]['id'], '$id' => $ph[0]['id'],
'$rotate' => t('Rotate CW'), '$rotatecw' => t('Rotate CW (right)'),
'$rotateccw' => t('Rotate CCW (left)'),
'$album' => template_escape($ph[0]['album']), '$album' => template_escape($ph[0]['album']),
'$newalbum' => t('New album name'), '$newalbum' => t('New album name'),
'$nickname' => $a->data['user']['nickname'], '$nickname' => $a->data['user']['nickname'],

View file

@ -635,7 +635,7 @@ function profiles_content(&$a) {
} }
else { else {
$r = q("SELECT `profile`.*, `contact`.`avatar-date` AS picdate FROM `profile` LEFT JOIN `contact` on `contact`.`uid` = `profile`.`uid` WHERE `profile`.`uid` = %d and contact.self = 1", $r = q("SELECT * FROM `profile` WHERE `uid` = %d",
local_user()); local_user());
if(count($r)) { if(count($r)) {
@ -652,7 +652,7 @@ function profiles_content(&$a) {
foreach($r as $rr) { foreach($r as $rr) {
$o .= replace_macros($tpl, array( $o .= replace_macros($tpl, array(
'$photo' => $rr['thumb'] . '?rev=' . urlencode($rr['picdate']), '$photo' => $a->get_cached_avatar_image($rr['thumb']),
'$id' => $rr['id'], '$id' => $rr['id'],
'$alt' => t('Profile Image'), '$alt' => t('Profile Image'),
'$profile_name' => $rr['profile-name'], '$profile_name' => $rr['profile-name'],

View file

@ -8,26 +8,23 @@ function share_init(&$a) {
if((! $post_id) || (! local_user())) if((! $post_id) || (! local_user()))
killme(); killme();
$r = q("SELECT * FROM `item` WHERE `id` = %d LIMIT 1", $r = q("SELECT item.*, contact.network FROM `item`
intval($post_id) left join contact on `item`.`contact-id` = `contact`.`id`
WHERE `item`.`id` = %d AND `item`.`uid` = %d LIMIT 1",
intval($post_id),
intval(local_user())
); );
if(! count($r) || $r[0]['private']) if(! count($r) || ($r[0]['private'] && ($r[0]['network'] != NETWORK_FEED)))
killme(); killme();
$o = ''; $o = '';
// if(local_user() && intval(get_pconfig(local_user(),'system','plaintext'))) {
$o .= "\xE2\x99\xb2" . ' [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]' . "\n"; $o .= "\xE2\x99\xb2" . ' [url=' . $r[0]['author-link'] . ']' . $r[0]['author-name'] . '[/url]' . "\n";
if($r[0]['title']) if($r[0]['title'])
$o .= '[b]' . $r[0]['title'] . '[/b]' . "\n"; $o .= '[b]' . $r[0]['title'] . '[/b]' . "\n";
$o .= $r[0]['body'] . "\n"; $o .= $r[0]['body'] . "\n";
// }
// else {
// $o .= '&#x2672; <a href="' . $r[0]['author-link'] . '">' . $r[0]['author-name'] . '</a><br />';
// if($r[0]['title'])
// $o .= '<strong>' . $r[0]['title'] . '</strong><br />';
// $o .= $r[0]['body'] . "\n";
// }
echo $o; echo $o;
killme(); killme();
} }

182
spec/zot-2012.txt Normal file
View file

@ -0,0 +1,182 @@
Initial cut at Zot-2012 protocol. This is a very rough draft of some very rough ideas and concepts.
It is not yet intended to be a definitive specification and many things like the security handshakes are yet to be specified precisely.
All communications are https
First create a global unique userid
Site userid:
https://macgirvin.com/1
$guuid = base64url_encode(hash('whirlpool','https://macgirvin.com/1.' . mt_rand(1000000,9999999),1);
Then create a hashed site destination.
$gduid = base64url_encode(hash('whirlpool', $guuid . 'https://macgirvin.com',1);
These two keys will identify you as a person+site pair in the future.
You will also obtain a password upon introducing yourself to a site.
This can be used to edit locations in the future. You will always keep your global unique userid
The steps to connect with somebody are to first register your location with their site.
Then introduce yourself to the person. This contains flags for the desired relationship.
At some future time, they may confirm and adjust the relationship based on their comfort level.
Lack of confirmation is tantamount to denial.
You can set either or both of FOLLOW and SHARE which indicates the relationship from your viewpoint.
They may do likewise.
A relationship is based on you as a person and provided you register new locations with the site you can post from anywhere.
You do not need to register locations with each person, only with the site.
Introduce yourself to a site:
POST https://example.com/post
{
'type' => 'register'
'person' => $guuid
'address' => $gduid
'site' => 'https://macgirvin.com'
'info' => 'mike@macgirvin.com'
}
Returns:
{
'success' => 'true'
'pass' => me_encrypt($random_string)
}
---
Add location
---
POST https://example.com/post
{
'type' => 'location'
'person' => $guuid
'address' => $new_gduid
'site' => 'https://newsite.com'
'info' => 'mike@newsite.com'
'pass' => me_encrypt($gduid . '.' . $pass)
}
Returns:
{
'success' => 'true'
'pass' => me_encrypt($random_string)
}
---
Remove location
---
POST https://example.com/post
{
'type' => 'remove_location'
'person' => $guuid
'address' => $gduid
'pass' => me_encrypt($pass)
}
Returns:
{
'success' => 'true'
'message' => 'OK'
}
------------
Make friends
------------
This message may be reversed/repeated by the destination site to confirm.
flags is the desired friendship bits. The same message may be used with different flags
to edit or remove a relationship.
POST https://example.com/post
{
'type' => 'contact'
'person' => $gduid
'address' => $guuid
'target' => 'bobjones@example.com'
'flags' => HIDDEN=0,FOLLOW=1,SHARE=1,NOHIDDEN=1,NOFOLLOW=0,NOSHARE=0
'confirm' => me_encrypt($guuid . '.' . $pass)
}
Returns:
{
'success' => 'true'
'message' => 'OK'
'flags' => PENDING=1
}
-------
Message
-------
Passing messages is done asynchronously. This may (potentially) relieve a lot of the burden of distribution from the posting site. If you're on site 'A' and make a post, site 'A' just contacts any downstream sites and informs them that there is new content (via a $post_id). The downstream site initiates the actual data transfer.
POST https://example.com/post
{
'type' => 'post'
'person' => $guuid
'address' => $gduid
'post' => $post_id
}
Returns:
{
'success' => 'true'
'message' => 'OK'
}
--------
Callback
--------
POST https://macgirvin.com/post
{
'type' => 'retrieve'
'retrieve' => $post_id
'challenge' => you_encrypt('abc123')
'verify' => me_encrypt('xyz456' . '.' . $gduid)
}
Returns:
{
'success' => 'true'
'message' => 'OK'
'response' => 'abc123'
'data' => encrypted or raw structured post
}

View file

@ -6,9 +6,9 @@
#, fuzzy #, fuzzy
msgid "" msgid ""
msgstr "" msgstr ""
"Project-Id-Version: 3.0.1377\n" "Project-Id-Version: 3.0.1382\n"
"Report-Msgid-Bugs-To: \n" "Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2012-06-17 10:00-0700\n" "POT-Creation-Date: 2012-06-22 10:00-0700\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n" "Language-Team: LANGUAGE <LL@li.org>\n"
@ -36,7 +36,7 @@ msgstr ""
#: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44 #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
#: ../../mod/fsuggest.php:78 ../../mod/events.php:138 ../../mod/api.php:26 #: ../../mod/fsuggest.php:78 ../../mod/events.php:138 ../../mod/api.php:26
#: ../../mod/api.php:31 ../../mod/photos.php:133 ../../mod/photos.php:928 #: ../../mod/api.php:31 ../../mod/photos.php:133 ../../mod/photos.php:931
#: ../../mod/editpost.php:10 ../../mod/install.php:151 #: ../../mod/editpost.php:10 ../../mod/install.php:151
#: ../../mod/notifications.php:66 ../../mod/contacts.php:145 #: ../../mod/notifications.php:66 ../../mod/contacts.php:145
#: ../../mod/settings.php:106 ../../mod/settings.php:537 #: ../../mod/settings.php:106 ../../mod/settings.php:537
@ -55,8 +55,8 @@ msgstr ""
#: ../../mod/profiles.php:385 ../../mod/delegate.php:6 #: ../../mod/profiles.php:385 ../../mod/delegate.php:6
#: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:507 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:507
#: ../../addon/dav/layout.fnk.php:353 ../../include/items.php:3387 #: ../../addon/dav/layout.fnk.php:353 ../../include/items.php:3401
#: ../../index.php:299 #: ../../index.php:309
msgid "Permission denied." msgid "Permission denied."
msgstr "" msgstr ""
@ -123,20 +123,21 @@ msgid "New photo from this URL"
msgstr "" msgstr ""
#: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107 #: ../../mod/crepair.php:166 ../../mod/fsuggest.php:107
#: ../../mod/events.php:428 ../../mod/photos.php:963 ../../mod/photos.php:1021 #: ../../mod/events.php:428 ../../mod/photos.php:966 ../../mod/photos.php:1024
#: ../../mod/photos.php:1266 ../../mod/photos.php:1306 #: ../../mod/photos.php:1270 ../../mod/photos.php:1310
#: ../../mod/photos.php:1346 ../../mod/photos.php:1377 #: ../../mod/photos.php:1350 ../../mod/photos.php:1381
#: ../../mod/install.php:246 ../../mod/install.php:284 #: ../../mod/install.php:246 ../../mod/install.php:284
#: ../../mod/localtime.php:45 ../../mod/contacts.php:343 #: ../../mod/localtime.php:45 ../../mod/contacts.php:343
#: ../../mod/settings.php:555 ../../mod/settings.php:701 #: ../../mod/settings.php:555 ../../mod/settings.php:701
#: ../../mod/settings.php:762 ../../mod/settings.php:969 #: ../../mod/settings.php:762 ../../mod/settings.php:969
#: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/admin.php:420 #: ../../mod/group.php:85 ../../mod/message.php:216 ../../mod/message.php:410
#: ../../mod/admin.php:656 ../../mod/admin.php:792 ../../mod/admin.php:991 #: ../../mod/admin.php:420 ../../mod/admin.php:656 ../../mod/admin.php:792
#: ../../mod/admin.php:1078 ../../mod/profiles.php:554 #: ../../mod/admin.php:991 ../../mod/admin.php:1078 ../../mod/profiles.php:554
#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:609 #: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:609
#: ../../addon/snautofollow/snautofollow.php:64 #: ../../addon/snautofollow/snautofollow.php:64
#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158 #: ../../addon/nsfw/nsfw.php:57 ../../addon/page/page.php:164
#: ../../addon/planets/planets.php:158
#: ../../addon/uhremotestorage/uhremotestorage.php:89 #: ../../addon/uhremotestorage/uhremotestorage.php:89
#: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93 #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93
#: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92 #: ../../addon/drpost/drpost.php:110 ../../addon/startpage/startpage.php:92
@ -226,7 +227,7 @@ msgid "link to source"
msgstr "" msgstr ""
#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131 #: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131
#: ../../include/nav.php:52 ../../boot.php:1529 #: ../../include/nav.php:52 ../../boot.php:1546
msgid "Events" msgid "Events"
msgstr "" msgstr ""
@ -277,7 +278,7 @@ msgid "Description:"
msgstr "" msgstr ""
#: ../../mod/events.php:423 ../../include/event.php:37 #: ../../mod/events.php:423 ../../include/event.php:37
#: ../../include/bb2diaspora.php:265 ../../boot.php:1109 #: ../../include/bb2diaspora.php:265 ../../boot.php:1126
msgid "Location:" msgid "Location:"
msgstr "" msgstr ""
@ -354,19 +355,19 @@ msgstr ""
msgid "No" msgid "No"
msgstr "" msgstr ""
#: ../../mod/photos.php:44 ../../boot.php:1523 #: ../../mod/photos.php:44 ../../boot.php:1540
msgid "Photo Albums" msgid "Photo Albums"
msgstr "" msgstr ""
#: ../../mod/photos.php:52 ../../mod/photos.php:154 ../../mod/photos.php:942 #: ../../mod/photos.php:52 ../../mod/photos.php:154 ../../mod/photos.php:945
#: ../../mod/photos.php:1013 ../../mod/photos.php:1028 #: ../../mod/photos.php:1016 ../../mod/photos.php:1031
#: ../../mod/photos.php:1455 ../../mod/photos.php:1467 #: ../../mod/photos.php:1459 ../../mod/photos.php:1471
#: ../../addon/communityhome/communityhome.php:110 #: ../../addon/communityhome/communityhome.php:110
#: ../../view/theme/diabook/theme.php:598 #: ../../view/theme/diabook/theme.php:598
msgid "Contact Photos" msgid "Contact Photos"
msgstr "" msgstr ""
#: ../../mod/photos.php:59 ../../mod/photos.php:1038 ../../mod/photos.php:1505 #: ../../mod/photos.php:59 ../../mod/photos.php:1041 ../../mod/photos.php:1509
msgid "Upload New Photos" msgid "Upload New Photos"
msgstr "" msgstr ""
@ -378,8 +379,8 @@ msgstr ""
msgid "Contact information unavailable" msgid "Contact information unavailable"
msgstr "" msgstr ""
#: ../../mod/photos.php:154 ../../mod/photos.php:656 ../../mod/photos.php:1013 #: ../../mod/photos.php:154 ../../mod/photos.php:658 ../../mod/photos.php:1016
#: ../../mod/photos.php:1028 ../../mod/profile_photo.php:60 #: ../../mod/photos.php:1031 ../../mod/profile_photo.php:60
#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74 #: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
#: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254 #: ../../mod/profile_photo.php:176 ../../mod/profile_photo.php:254
#: ../../mod/profile_photo.php:263 #: ../../mod/profile_photo.php:263
@ -393,19 +394,19 @@ msgstr ""
msgid "Album not found." msgid "Album not found."
msgstr "" msgstr ""
#: ../../mod/photos.php:182 ../../mod/photos.php:1022 #: ../../mod/photos.php:182 ../../mod/photos.php:1025
msgid "Delete Album" msgid "Delete Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:245 ../../mod/photos.php:1267 #: ../../mod/photos.php:245 ../../mod/photos.php:1271
msgid "Delete Photo" msgid "Delete Photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:587 #: ../../mod/photos.php:589
msgid "was tagged in a" msgid "was tagged in a"
msgstr "" msgstr ""
#: ../../mod/photos.php:587 ../../mod/like.php:185 ../../mod/tagger.php:70 #: ../../mod/photos.php:589 ../../mod/like.php:185 ../../mod/tagger.php:70
#: ../../addon/communityhome/communityhome.php:163 #: ../../addon/communityhome/communityhome.php:163
#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316 #: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316
#: ../../include/diaspora.php:1709 ../../include/conversation.php:53 #: ../../include/diaspora.php:1709 ../../include/conversation.php:53
@ -413,172 +414,176 @@ msgstr ""
msgid "photo" msgid "photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:587 #: ../../mod/photos.php:589
msgid "by" msgid "by"
msgstr "" msgstr ""
#: ../../mod/photos.php:692 ../../addon/js_upload/js_upload.php:315 #: ../../mod/photos.php:694 ../../addon/js_upload/js_upload.php:315
msgid "Image exceeds size limit of " msgid "Image exceeds size limit of "
msgstr "" msgstr ""
#: ../../mod/photos.php:700 #: ../../mod/photos.php:702
msgid "Image file is empty." msgid "Image file is empty."
msgstr "" msgstr ""
#: ../../mod/photos.php:714 ../../mod/profile_photo.php:126 #: ../../mod/photos.php:716 ../../mod/profile_photo.php:126
#: ../../mod/wall_upload.php:86 #: ../../mod/wall_upload.php:86
msgid "Unable to process image." msgid "Unable to process image."
msgstr "" msgstr ""
#: ../../mod/photos.php:734 ../../mod/profile_photo.php:259 #: ../../mod/photos.php:737 ../../mod/profile_photo.php:259
#: ../../mod/wall_upload.php:105 #: ../../mod/wall_upload.php:105
msgid "Image upload failed." msgid "Image upload failed."
msgstr "" msgstr ""
#: ../../mod/photos.php:820 ../../mod/community.php:16 #: ../../mod/photos.php:823 ../../mod/community.php:16
#: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17 #: ../../mod/dfrn_request.php:759 ../../mod/viewcontacts.php:17
#: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
msgid "Public access denied." msgid "Public access denied."
msgstr "" msgstr ""
#: ../../mod/photos.php:830 #: ../../mod/photos.php:833
msgid "No photos selected" msgid "No photos selected"
msgstr "" msgstr ""
#: ../../mod/photos.php:909 #: ../../mod/photos.php:912
msgid "Access to this item is restricted." msgid "Access to this item is restricted."
msgstr "" msgstr ""
#: ../../mod/photos.php:970 #: ../../mod/photos.php:973
msgid "Upload Photos" msgid "Upload Photos"
msgstr "" msgstr ""
#: ../../mod/photos.php:973 ../../mod/photos.php:1017 #: ../../mod/photos.php:976 ../../mod/photos.php:1020
msgid "New album name: " msgid "New album name: "
msgstr "" msgstr ""
#: ../../mod/photos.php:974 #: ../../mod/photos.php:977
msgid "or existing album name: " msgid "or existing album name: "
msgstr "" msgstr ""
#: ../../mod/photos.php:975 #: ../../mod/photos.php:978
msgid "Do not show a status post for this upload" msgid "Do not show a status post for this upload"
msgstr "" msgstr ""
#: ../../mod/photos.php:977 ../../mod/photos.php:1262 #: ../../mod/photos.php:980 ../../mod/photos.php:1266
msgid "Permissions" msgid "Permissions"
msgstr "" msgstr ""
#: ../../mod/photos.php:1032 #: ../../mod/photos.php:1035
msgid "Edit Album" msgid "Edit Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:1056 ../../mod/photos.php:1488 #: ../../mod/photos.php:1059 ../../mod/photos.php:1492
msgid "View Photo" msgid "View Photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1091 #: ../../mod/photos.php:1094
msgid "Permission denied. Access to this item may be restricted." msgid "Permission denied. Access to this item may be restricted."
msgstr "" msgstr ""
#: ../../mod/photos.php:1093 #: ../../mod/photos.php:1096
msgid "Photo not available" msgid "Photo not available"
msgstr "" msgstr ""
#: ../../mod/photos.php:1143 #: ../../mod/photos.php:1146
msgid "View photo" msgid "View photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1143 #: ../../mod/photos.php:1146
msgid "Edit photo" msgid "Edit photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1144 #: ../../mod/photos.php:1147
msgid "Use as profile photo" msgid "Use as profile photo"
msgstr "" msgstr ""
#: ../../mod/photos.php:1150 ../../include/conversation.php:490 #: ../../mod/photos.php:1153 ../../include/conversation.php:490
msgid "Private Message" msgid "Private Message"
msgstr "" msgstr ""
#: ../../mod/photos.php:1172 #: ../../mod/photos.php:1175
msgid "View Full Size" msgid "View Full Size"
msgstr "" msgstr ""
#: ../../mod/photos.php:1240 #: ../../mod/photos.php:1243
msgid "Tags: " msgid "Tags: "
msgstr "" msgstr ""
#: ../../mod/photos.php:1243 #: ../../mod/photos.php:1246
msgid "[Remove any tag]" msgid "[Remove any tag]"
msgstr "" msgstr ""
#: ../../mod/photos.php:1253 #: ../../mod/photos.php:1256
msgid "Rotate CW" msgid "Rotate CW (right)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1255 #: ../../mod/photos.php:1257
msgid "Rotate CCW (left)"
msgstr ""
#: ../../mod/photos.php:1259
msgid "New album name" msgid "New album name"
msgstr "" msgstr ""
#: ../../mod/photos.php:1258 #: ../../mod/photos.php:1262
msgid "Caption" msgid "Caption"
msgstr "" msgstr ""
#: ../../mod/photos.php:1260 #: ../../mod/photos.php:1264
msgid "Add a Tag" msgid "Add a Tag"
msgstr "" msgstr ""
#: ../../mod/photos.php:1264 #: ../../mod/photos.php:1268
msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping" msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
msgstr "" msgstr ""
#: ../../mod/photos.php:1284 ../../include/conversation.php:554 #: ../../mod/photos.php:1288 ../../include/conversation.php:554
msgid "I like this (toggle)" msgid "I like this (toggle)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1285 ../../include/conversation.php:555 #: ../../mod/photos.php:1289 ../../include/conversation.php:555
msgid "I don't like this (toggle)" msgid "I don't like this (toggle)"
msgstr "" msgstr ""
#: ../../mod/photos.php:1286 ../../include/conversation.php:989 #: ../../mod/photos.php:1290 ../../include/conversation.php:989
msgid "Share" msgid "Share"
msgstr "" msgstr ""
#: ../../mod/photos.php:1287 ../../mod/editpost.php:104 #: ../../mod/photos.php:1291 ../../mod/editpost.php:104
#: ../../mod/wallmessage.php:145 ../../mod/message.php:215 #: ../../mod/wallmessage.php:145 ../../mod/message.php:215
#: ../../mod/message.php:410 ../../include/conversation.php:371 #: ../../mod/message.php:411 ../../include/conversation.php:371
#: ../../include/conversation.php:731 ../../include/conversation.php:1008 #: ../../include/conversation.php:731 ../../include/conversation.php:1008
msgid "Please wait" msgid "Please wait"
msgstr "" msgstr ""
#: ../../mod/photos.php:1303 ../../mod/photos.php:1343 #: ../../mod/photos.php:1307 ../../mod/photos.php:1347
#: ../../mod/photos.php:1374 ../../include/conversation.php:577 #: ../../mod/photos.php:1378 ../../include/conversation.php:577
msgid "This is you" msgid "This is you"
msgstr "" msgstr ""
#: ../../mod/photos.php:1305 ../../mod/photos.php:1345 #: ../../mod/photos.php:1309 ../../mod/photos.php:1349
#: ../../mod/photos.php:1376 ../../include/conversation.php:579 #: ../../mod/photos.php:1380 ../../include/conversation.php:579
#: ../../boot.php:523 #: ../../boot.php:518
msgid "Comment" msgid "Comment"
msgstr "" msgstr ""
#: ../../mod/photos.php:1307 ../../mod/editpost.php:125 #: ../../mod/photos.php:1311 ../../mod/editpost.php:125
#: ../../include/conversation.php:589 ../../include/conversation.php:1026 #: ../../include/conversation.php:589 ../../include/conversation.php:1026
msgid "Preview" msgid "Preview"
msgstr "" msgstr ""
#: ../../mod/photos.php:1404 ../../mod/settings.php:618 #: ../../mod/photos.php:1408 ../../mod/settings.php:618
#: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:663 #: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:663
#: ../../include/conversation.php:328 ../../include/conversation.php:609 #: ../../include/conversation.php:328 ../../include/conversation.php:609
msgid "Delete" msgid "Delete"
msgstr "" msgstr ""
#: ../../mod/photos.php:1494 #: ../../mod/photos.php:1498
msgid "View Album" msgid "View Album"
msgstr "" msgstr ""
#: ../../mod/photos.php:1503 #: ../../mod/photos.php:1507
msgid "Recent Photos" msgid "Recent Photos"
msgstr "" msgstr ""
@ -821,7 +826,7 @@ msgstr ""
msgid "Confirm" msgid "Confirm"
msgstr "" msgstr ""
#: ../../mod/dfrn_request.php:715 ../../include/items.php:2783 #: ../../mod/dfrn_request.php:715 ../../include/items.php:2797
msgid "[Name Withheld]" msgid "[Name Withheld]"
msgstr "" msgstr ""
@ -1193,7 +1198,7 @@ msgid "is interested in:"
msgstr "" msgstr ""
#: ../../mod/match.php:58 ../../mod/suggest.php:59 #: ../../mod/match.php:58 ../../mod/suggest.php:59
#: ../../include/contact_widgets.php:9 ../../boot.php:1053 #: ../../include/contact_widgets.php:9 ../../boot.php:1070
msgid "Connect" msgid "Connect"
msgstr "" msgstr ""
@ -1723,8 +1728,8 @@ msgstr ""
#: ../../addon/facebook/facebook.php:692 #: ../../addon/facebook/facebook.php:692
#: ../../addon/facebook/facebook.php:1182 #: ../../addon/facebook/facebook.php:1182
#: ../../addon/public_server/public_server.php:62 #: ../../addon/public_server/public_server.php:62
#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2792 #: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2806
#: ../../boot.php:703 #: ../../boot.php:720
msgid "Administrator" msgid "Administrator"
msgstr "" msgstr ""
@ -1734,7 +1739,7 @@ msgid ""
"Password reset failed." "Password reset failed."
msgstr "" msgstr ""
#: ../../mod/lostpass.php:83 ../../boot.php:835 #: ../../mod/lostpass.php:83 ../../boot.php:852
msgid "Password Reset" msgid "Password Reset"
msgstr "" msgstr ""
@ -2409,7 +2414,7 @@ msgstr ""
msgid "Invalid contact." msgid "Invalid contact."
msgstr "" msgstr ""
#: ../../mod/notes.php:44 ../../boot.php:1535 #: ../../mod/notes.php:44 ../../boot.php:1552
msgid "Personal Notes" msgid "Personal Notes"
msgstr "" msgstr ""
@ -2618,7 +2623,7 @@ msgstr ""
msgid "Group name changed." msgid "Group name changed."
msgstr "" msgstr ""
#: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:298 #: ../../mod/group.php:72 ../../mod/profperm.php:19 ../../index.php:308
msgid "Permission denied" msgid "Permission denied"
msgstr "" msgstr ""
@ -2660,7 +2665,7 @@ msgstr ""
#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128 #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:79 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:79
#: ../../include/nav.php:50 ../../boot.php:1514 #: ../../include/nav.php:50 ../../boot.php:1531
msgid "Profile" msgid "Profile"
msgstr "" msgstr ""
@ -2764,7 +2769,7 @@ msgstr ""
msgid "Choose a nickname: " msgid "Choose a nickname: "
msgstr "" msgstr ""
#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:801 #: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:818
msgid "Register" msgid "Register"
msgstr "" msgstr ""
@ -2798,7 +2803,7 @@ msgstr ""
#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159 #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:159
#: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37 #: ../../mod/admin.php:700 ../../mod/admin.php:899 ../../mod/display.php:37
#: ../../mod/display.php:142 ../../include/items.php:3234 #: ../../mod/display.php:142 ../../include/items.php:3248
msgid "Item not found." msgid "Item not found."
msgstr "" msgstr ""
@ -2807,7 +2812,7 @@ msgid "Access denied."
msgstr "" msgstr ""
#: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130 #: ../../mod/fbrowser.php:25 ../../view/theme/diabook/theme.php:130
#: ../../include/nav.php:51 ../../boot.php:1520 #: ../../include/nav.php:51 ../../boot.php:1537
msgid "Photos" msgid "Photos"
msgstr "" msgstr ""
@ -3610,7 +3615,7 @@ msgstr ""
msgid "FTP Password" msgid "FTP Password"
msgstr "" msgstr ""
#: ../../mod/profile.php:21 ../../boot.php:966 #: ../../mod/profile.php:21 ../../boot.php:983
msgid "Requested profile is not available." msgid "Requested profile is not available."
msgstr "" msgstr ""
@ -3985,23 +3990,23 @@ msgstr ""
msgid "Edit/Manage Profiles" msgid "Edit/Manage Profiles"
msgstr "" msgstr ""
#: ../../mod/profiles.php:645 ../../boot.php:1075 #: ../../mod/profiles.php:645 ../../boot.php:1092
msgid "Change profile photo" msgid "Change profile photo"
msgstr "" msgstr ""
#: ../../mod/profiles.php:646 ../../boot.php:1076 #: ../../mod/profiles.php:646 ../../boot.php:1093
msgid "Create New Profile" msgid "Create New Profile"
msgstr "" msgstr ""
#: ../../mod/profiles.php:657 ../../boot.php:1086 #: ../../mod/profiles.php:657 ../../boot.php:1103
msgid "Profile Image" msgid "Profile Image"
msgstr "" msgstr ""
#: ../../mod/profiles.php:659 ../../boot.php:1089 #: ../../mod/profiles.php:659 ../../boot.php:1106
msgid "visible to everybody" msgid "visible to everybody"
msgstr "" msgstr ""
#: ../../mod/profiles.php:660 ../../boot.php:1090 #: ../../mod/profiles.php:660 ../../boot.php:1107
msgid "Edit visibility" msgid "Edit visibility"
msgstr "" msgstr ""
@ -4615,16 +4620,32 @@ msgstr ""
msgid "%s - Click to open/close" msgid "%s - Click to open/close"
msgstr "" msgstr ""
#: ../../addon/page/page.php:48 #: ../../addon/page/page.php:58 ../../addon/page/page.php:88
msgid "Forums" msgid "Forums"
msgstr "" msgstr ""
#: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87 #: ../../addon/page/page.php:73 ../../addon/page/page.php:107
#: ../../include/contact_widgets.php:188 ../../include/conversation.php:476 #: ../../addon/showmore/showmore.php:87 ../../include/contact_widgets.php:188
#: ../../boot.php:524 #: ../../include/conversation.php:476 ../../boot.php:519
msgid "show more" msgid "show more"
msgstr "" msgstr ""
#: ../../addon/page/page.php:125
msgid "Page settings updated."
msgstr ""
#: ../../addon/page/page.php:151
msgid "Page Settings"
msgstr ""
#: ../../addon/page/page.php:153
msgid "How many forums to display on sidebar without paging"
msgstr ""
#: ../../addon/page/page.php:156
msgid "Randomise Page/Forum list"
msgstr ""
#: ../../addon/planets/planets.php:150 #: ../../addon/planets/planets.php:150
msgid "Planets Settings" msgid "Planets Settings"
msgstr "" msgstr ""
@ -4637,7 +4658,7 @@ msgstr ""
#: ../../addon/communityhome/communityhome.php:34 #: ../../addon/communityhome/communityhome.php:34
#: ../../addon/communityhome/twillingham/communityhome.php:28 #: ../../addon/communityhome/twillingham/communityhome.php:28
#: ../../addon/communityhome/twillingham/communityhome.php:34 #: ../../addon/communityhome/twillingham/communityhome.php:34
#: ../../include/nav.php:64 ../../boot.php:822 #: ../../include/nav.php:64 ../../boot.php:839
msgid "Login" msgid "Login"
msgstr "" msgstr ""
@ -6051,7 +6072,7 @@ msgstr ""
msgid "Set colour scheme" msgid "Set colour scheme"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:17 ../../boot.php:1111 #: ../../include/profile_advanced.php:17 ../../boot.php:1128
msgid "Gender:" msgid "Gender:"
msgstr "" msgstr ""
@ -6064,7 +6085,7 @@ msgid "j F"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:30 ../../include/datetime.php:450 #: ../../include/profile_advanced.php:30 ../../include/datetime.php:450
#: ../../include/items.php:1446 #: ../../include/items.php:1460
msgid "Birthday:" msgid "Birthday:"
msgstr "" msgstr ""
@ -6072,7 +6093,7 @@ msgstr ""
msgid "Age:" msgid "Age:"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:37 ../../boot.php:1114 #: ../../include/profile_advanced.php:37 ../../boot.php:1131
msgid "Status:" msgid "Status:"
msgstr "" msgstr ""
@ -6081,7 +6102,7 @@ msgstr ""
msgid "for %1$d %2$s" msgid "for %1$d %2$s"
msgstr "" msgstr ""
#: ../../include/profile_advanced.php:48 ../../boot.php:1116 #: ../../include/profile_advanced.php:48 ../../boot.php:1133
msgid "Homepage:" msgid "Homepage:"
msgstr "" msgstr ""
@ -6454,6 +6475,10 @@ msgstr ""
msgid "noreply" msgid "noreply"
msgstr "" msgstr ""
#: ../../include/Scrape.php:572
msgid " on Last.fm"
msgstr ""
#: ../../include/text.php:243 #: ../../include/text.php:243
msgid "prev" msgid "prev"
msgstr "" msgstr ""
@ -6660,7 +6685,7 @@ msgstr ""
msgid "Contacts not in any group" msgid "Contacts not in any group"
msgstr "" msgstr ""
#: ../../include/nav.php:46 ../../boot.php:821 #: ../../include/nav.php:46 ../../boot.php:838
msgid "Logout" msgid "Logout"
msgstr "" msgstr ""
@ -6668,7 +6693,7 @@ msgstr ""
msgid "End this session" msgid "End this session"
msgstr "" msgstr ""
#: ../../include/nav.php:49 ../../boot.php:1508 #: ../../include/nav.php:49 ../../boot.php:1525
msgid "Status" msgid "Status"
msgstr "" msgstr ""
@ -6748,11 +6773,11 @@ msgstr ""
msgid "Manage other pages" msgid "Manage other pages"
msgstr "" msgstr ""
#: ../../include/nav.php:138 ../../boot.php:1069 #: ../../include/nav.php:138 ../../boot.php:1086
msgid "Profiles" msgid "Profiles"
msgstr "" msgstr ""
#: ../../include/nav.php:138 ../../boot.php:1069 #: ../../include/nav.php:138 ../../boot.php:1086
msgid "Manage/edit profiles" msgid "Manage/edit profiles"
msgstr "" msgstr ""
@ -7039,7 +7064,7 @@ msgstr ""
#: ../../include/enotify.php:126 #: ../../include/enotify.php:126
#, php-format #, php-format
msgid "%1$s [url=%2s]tagged you[/url]." msgid "%1$s [url=%2$s]tagged you[/url]."
msgstr "" msgstr ""
#: ../../include/enotify.php:137 #: ../../include/enotify.php:137
@ -7163,15 +7188,15 @@ msgstr ""
msgid "following" msgid "following"
msgstr "" msgstr ""
#: ../../include/items.php:2790 #: ../../include/items.php:2804
msgid "A new person is sharing with you at " msgid "A new person is sharing with you at "
msgstr "" msgstr ""
#: ../../include/items.php:2790 #: ../../include/items.php:2804
msgid "You have a new follower at " msgid "You have a new follower at "
msgstr "" msgstr ""
#: ../../include/items.php:3452 #: ../../include/items.php:3466
msgid "Archives" msgid "Archives"
msgstr "" msgstr ""
@ -7523,96 +7548,96 @@ msgstr ""
msgid "permissions" msgid "permissions"
msgstr "" msgstr ""
#: ../../boot.php:522 #: ../../boot.php:517
msgid "Delete this item?" msgid "Delete this item?"
msgstr "" msgstr ""
#: ../../boot.php:525 #: ../../boot.php:520
msgid "show fewer" msgid "show fewer"
msgstr "" msgstr ""
#: ../../boot.php:698 #: ../../boot.php:715
#, php-format #, php-format
msgid "Update %s failed. See error logs." msgid "Update %s failed. See error logs."
msgstr "" msgstr ""
#: ../../boot.php:700 #: ../../boot.php:717
#, php-format #, php-format
msgid "Update Error at %s" msgid "Update Error at %s"
msgstr "" msgstr ""
#: ../../boot.php:800 #: ../../boot.php:817
msgid "Create a New Account" msgid "Create a New Account"
msgstr "" msgstr ""
#: ../../boot.php:824 #: ../../boot.php:841
msgid "Nickname or Email address: " msgid "Nickname or Email address: "
msgstr "" msgstr ""
#: ../../boot.php:825 #: ../../boot.php:842
msgid "Password: " msgid "Password: "
msgstr "" msgstr ""
#: ../../boot.php:828 #: ../../boot.php:845
msgid "Or login using OpenID: " msgid "Or login using OpenID: "
msgstr "" msgstr ""
#: ../../boot.php:834 #: ../../boot.php:851
msgid "Forgot your password?" msgid "Forgot your password?"
msgstr "" msgstr ""
#: ../../boot.php:1001 #: ../../boot.php:1018
msgid "Edit profile" msgid "Edit profile"
msgstr "" msgstr ""
#: ../../boot.php:1061 #: ../../boot.php:1078
msgid "Message" msgid "Message"
msgstr "" msgstr ""
#: ../../boot.php:1177 ../../boot.php:1253 #: ../../boot.php:1194 ../../boot.php:1270
msgid "g A l F d" msgid "g A l F d"
msgstr "" msgstr ""
#: ../../boot.php:1178 ../../boot.php:1254 #: ../../boot.php:1195 ../../boot.php:1271
msgid "F d" msgid "F d"
msgstr "" msgstr ""
#: ../../boot.php:1223 ../../boot.php:1294 #: ../../boot.php:1240 ../../boot.php:1311
msgid "[today]" msgid "[today]"
msgstr "" msgstr ""
#: ../../boot.php:1235 #: ../../boot.php:1252
msgid "Birthday Reminders" msgid "Birthday Reminders"
msgstr "" msgstr ""
#: ../../boot.php:1236 #: ../../boot.php:1253
msgid "Birthdays this week:" msgid "Birthdays this week:"
msgstr "" msgstr ""
#: ../../boot.php:1287 #: ../../boot.php:1304
msgid "[No description]" msgid "[No description]"
msgstr "" msgstr ""
#: ../../boot.php:1305 #: ../../boot.php:1322
msgid "Event Reminders" msgid "Event Reminders"
msgstr "" msgstr ""
#: ../../boot.php:1306 #: ../../boot.php:1323
msgid "Events this week:" msgid "Events this week:"
msgstr "" msgstr ""
#: ../../boot.php:1511 #: ../../boot.php:1528
msgid "Status Messages and Posts" msgid "Status Messages and Posts"
msgstr "" msgstr ""
#: ../../boot.php:1517 #: ../../boot.php:1534
msgid "Profile Details" msgid "Profile Details"
msgstr "" msgstr ""
#: ../../boot.php:1532 #: ../../boot.php:1549
msgid "Events and Calendar" msgid "Events and Calendar"
msgstr "" msgstr ""
#: ../../boot.php:1538 #: ../../boot.php:1555
msgid "Only You Can See This" msgid "Only You Can See This"
msgstr "" msgstr ""

File diff suppressed because it is too large Load diff

View file

@ -331,6 +331,7 @@ $a->strings["Archive"] = "Archivieren";
$a->strings["Toggle Archive status"] = "Archiviert-Status ein-/ausschalten"; $a->strings["Toggle Archive status"] = "Archiviert-Status ein-/ausschalten";
$a->strings["Repair"] = "Reparieren"; $a->strings["Repair"] = "Reparieren";
$a->strings["Advanced Contact Settings"] = "Fortgeschrittene Kontakteinstellungen"; $a->strings["Advanced Contact Settings"] = "Fortgeschrittene Kontakteinstellungen";
$a->strings["Communications lost with this contact!"] = "Verbindungen mit diesem Kontakt verloren!";
$a->strings["Contact Editor"] = "Kontakt Editor"; $a->strings["Contact Editor"] = "Kontakt Editor";
$a->strings["Profile Visibility"] = "Profil-Sichtbarkeit"; $a->strings["Profile Visibility"] = "Profil-Sichtbarkeit";
$a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines deiner Profile das angezeigt werden soll, wenn %s dein Profil aufruft."; $a->strings["Please choose the profile you would like to display to %s when viewing your profile securely."] = "Bitte wähle eines deiner Profile das angezeigt werden soll, wenn %s dein Profil aufruft.";
@ -678,6 +679,8 @@ $a->strings["Plugins"] = "Plugins";
$a->strings["Themes"] = "Themen"; $a->strings["Themes"] = "Themen";
$a->strings["DB updates"] = "DB Updates"; $a->strings["DB updates"] = "DB Updates";
$a->strings["Logs"] = "Protokolle"; $a->strings["Logs"] = "Protokolle";
$a->strings["Admin"] = "Administration";
$a->strings["Plugin Features"] = "Plugin Features";
$a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten"; $a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten";
$a->strings["Normal Account"] = "Normales Konto"; $a->strings["Normal Account"] = "Normales Konto";
$a->strings["Soapbox Account"] = "Marktschreier-Konto"; $a->strings["Soapbox Account"] = "Marktschreier-Konto";
@ -1001,6 +1004,9 @@ $a->strings["Facebook post failed. Queued for retry."] = "Veröffentlichung bei
$a->strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Deine Facebook Anmeldedaten sind ungültig geworden. Bitte re-authentifiziere dich."; $a->strings["Your Facebook connection became invalid. Please Re-authenticate."] = "Deine Facebook Anmeldedaten sind ungültig geworden. Bitte re-authentifiziere dich.";
$a->strings["Facebook connection became invalid"] = "Facebook Anmeldedaten sind ungültig geworden"; $a->strings["Facebook connection became invalid"] = "Facebook Anmeldedaten sind ungültig geworden";
$a->strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Hallo %1\$s,\n\ndie Verbindung zwischen deinem Account auf %2\$s und Facebook funktioniert derzeit nicht. Dies ist normalerweise das Ergebnis einer Passwortänderung bei Facebook. Um die Verbindung wieder zu aktivieren musst du %3\$sden Facebook-Connector neu authentifizieren%4\$s."; $a->strings["Hi %1\$s,\n\nThe connection between your accounts on %2\$s and Facebook became invalid. This usually happens after you change your Facebook-password. To enable the connection again, you have to %3\$sre-authenticate the Facebook-connector%4\$s."] = "Hallo %1\$s,\n\ndie Verbindung zwischen deinem Account auf %2\$s und Facebook funktioniert derzeit nicht. Dies ist normalerweise das Ergebnis einer Passwortänderung bei Facebook. Um die Verbindung wieder zu aktivieren musst du %3\$sden Facebook-Connector neu authentifizieren%4\$s.";
$a->strings["StatusNet AutoFollow settings updated."] = "StatusNet AutoFollow Einstellungen aktualisiert.";
$a->strings["StatusNet AutoFollow Settings"] = "StatusNet AutoFollow Einstellungen";
$a->strings["Automatically follow any StatusNet followers/mentioners"] = "Automatisch allen StatusNet Followern/Erwähnungen folgen";
$a->strings["Lifetime of the cache (in hours)"] = "Lebenszeit des Caches (in Stunden)"; $a->strings["Lifetime of the cache (in hours)"] = "Lebenszeit des Caches (in Stunden)";
$a->strings["Cache Statistics"] = "Cache Statistik"; $a->strings["Cache Statistics"] = "Cache Statistik";
$a->strings["Number of items"] = "Anzahl der Einträge"; $a->strings["Number of items"] = "Anzahl der Einträge";
@ -1049,6 +1055,54 @@ $a->strings["Most active users"] = "Aktivste Nutzer";
$a->strings["Latest photos"] = "Neueste Fotos"; $a->strings["Latest photos"] = "Neueste Fotos";
$a->strings["Latest likes"] = "Neueste Favoriten"; $a->strings["Latest likes"] = "Neueste Favoriten";
$a->strings["event"] = "Veranstaltung"; $a->strings["event"] = "Veranstaltung";
$a->strings["U.S. Time Format (mm/dd/YYYY)"] = "U.S. Datumsformat (mm/dd/YYYY)";
$a->strings["German Time Format (dd.mm.YYYY)"] = "Deutsches Datumsformat (dd.mm.YYYY)";
$a->strings["Error"] = "Fehler";
$a->strings["No access"] = "Kein Zugriff";
$a->strings["New event"] = "Neue Veranstaltung";
$a->strings["Today"] = "Heute";
$a->strings["Day"] = "Tag";
$a->strings["Week"] = "Woche";
$a->strings["Month"] = "Monat";
$a->strings["Reload"] = "Neu Laden";
$a->strings["Date"] = "Datum";
$a->strings["Not found"] = "Nicht gefunden";
$a->strings["Go back to the calendar"] = "Zurück zum Kalender";
$a->strings["Starts"] = "Beginnt";
$a->strings["Ends"] = "Endet";
$a->strings["Description"] = "Beschreibung";
$a->strings["Notification"] = "Benachrichtigung";
$a->strings["Minutes"] = "Minuten";
$a->strings["Hours"] = "Stunden";
$a->strings["Days"] = "Tage";
$a->strings["before"] = "vorher";
$a->strings["Calendar Settings"] = "Kalender Einstellungen";
$a->strings["Date format"] = "Datumsformat";
$a->strings["Time zone"] = "Zeitzone";
$a->strings["Limitations"] = "Einschränkungen";
$a->strings["Warning"] = "Warnung";
$a->strings["Synchronization (iPhone, Thunderbird Lightning, Android, ...)"] = "Synchronisation (iPhone, Thunderbird Lightning, Android, ...)";
$a->strings["Synchronizing this calendar with the iPhone"] = "Diesen Kalender mit dem iPhone synchronisieren";
$a->strings["Synchronizing your Friendica-Contacts with the iPhone"] = "Friendica-Kontakte mit dem iPhone synchronisieren";
$a->strings["Friendica-Contacts"] = "Friendica-Kontakte";
$a->strings["Your Friendica-Contacts"] = "Deine Friendica-Kontakte";
$a->strings["Calendar"] = "Kalender";
$a->strings["Extended calendar with CalDAV-support"] = "Erweiterter Kalender mit CalDAV Unterstützung.";
$a->strings["The database tables have been installed."] = "Die Datenbank-Tabellen wurden installiert.";
$a->strings["An error occurred during the installation."] = "Während der Installation trat ein Fehler auf.";
$a->strings["No system-wide settings yet."] = "Momentan keine systemweiten Einstellungen.";
$a->strings["Database status"] = "Datenbank Status";
$a->strings["Installed"] = "Installiert";
$a->strings["Upgrade needed"] = "Upgrade erforderlich";
$a->strings["Upgrade"] = "Upgrade";
$a->strings["Not installed"] = "Nicht installiert";
$a->strings["Install"] = "Installieren";
$a->strings["Troubleshooting"] = "Problembehebung";
$a->strings["Manual creation of the database tables:"] = "Manuelles anlegen der Datenbank Tabellen:";
$a->strings["Show SQL-statements"] = "SQL-Anweisungen anzeigen";
$a->strings["Private Calendar"] = "Privater Kalender";
$a->strings["Friendica Events: Mine"] = "Meine Friendica-Veranstaltungen";
$a->strings["Friendica Events: Contacts"] = "Friendica Veranstaltungen meiner Kontakte";
$a->strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"] = "Ermöglicht dir, deine friendica id (%s) mit externen unhosted-fähigen Speichern (z.B. ownCloud) zu verbinden. Siehe <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"; $a->strings["Allow to use your friendica id (%s) to connecto to external unhosted-enabled storage (like ownCloud). See <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>"] = "Ermöglicht dir, deine friendica id (%s) mit externen unhosted-fähigen Speichern (z.B. ownCloud) zu verbinden. Siehe <a href=\"http://www.w3.org/community/unhosted/wiki/RemoteStorage#WebFinger\">RemoteStorage WebFinger</a>";
$a->strings["Template URL (with {category})"] = "Vorlagen URL (mit {Kategorie})"; $a->strings["Template URL (with {category})"] = "Vorlagen URL (mit {Kategorie})";
$a->strings["OAuth end-point"] = "OAuth end-point"; $a->strings["OAuth end-point"] = "OAuth end-point";
@ -1118,6 +1172,9 @@ $a->strings["How to contact the operator via email. (will be displayed obfuscate
$a->strings["Footer note"] = "Fußnote"; $a->strings["Footer note"] = "Fußnote";
$a->strings["Text for the footer. You can use BBCode here."] = "Text für die Fußzeile. Du kannst BBCode verwenden."; $a->strings["Text for the footer. You can use BBCode here."] = "Text für die Fußzeile. Du kannst BBCode verwenden.";
$a->strings["Report Bug"] = "Fehlerreport erstellen"; $a->strings["Report Bug"] = "Fehlerreport erstellen";
$a->strings["No Timeline settings updated."] = "Keine Timeline-Einstellungen aktualisiert.";
$a->strings["No Timeline Settings"] = "Keine Timeline-Einstellungen";
$a->strings["Disable Archive selector on profile wall"] = "Deaktiviere Archiv-Auswahl auf Deiner Pinnwand";
$a->strings["\"Blockem\" Settings"] = "\"Blockem\"-Einstellungen"; $a->strings["\"Blockem\" Settings"] = "\"Blockem\"-Einstellungen";
$a->strings["Comma separated profile URLS to block"] = "Profil-URLs, die blockiert werden sollen (durch Kommas getrennt)"; $a->strings["Comma separated profile URLS to block"] = "Profil-URLs, die blockiert werden sollen (durch Kommas getrennt)";
$a->strings["BLOCKEM Settings saved."] = "BLOCKEM-Einstellungen gesichert."; $a->strings["BLOCKEM Settings saved."] = "BLOCKEM-Einstellungen gesichert.";
@ -1136,6 +1193,12 @@ $a->strings["Tile Server URL"] = "Tile Server URL";
$a->strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Tile Server</a>"; $a->strings["A list of <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">public tile servers</a>"] = "Eine Liste <a href=\"http://wiki.openstreetmap.org/wiki/TMS\" target=\"_blank\">öffentlicher Tile Server</a>";
$a->strings["Default zoom"] = "Standard Zoom"; $a->strings["Default zoom"] = "Standard Zoom";
$a->strings["The default zoom level. (1:world, 18:highest)"] = "Standard Zoomlevel (1: Welt; 18: höchstes)"; $a->strings["The default zoom level. (1:world, 18:highest)"] = "Standard Zoomlevel (1: Welt; 18: höchstes)";
$a->strings["Post to libertree"] = "bei libertree veröffentlichen";
$a->strings["libertree Post Settings"] = "libertree Post Einstellungen";
$a->strings["Enable Libertree Post Plugin"] = "Libertree Post Plugin aktivieren";
$a->strings["Libertree API token"] = "Libertree API Token";
$a->strings["Libertree site URL"] = "Libertree URL";
$a->strings["Post to Libertree by default"] = "Standardmäßig bei libertree veröffentlichen";
$a->strings["The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail."] = "Mit dem MathJax Addon können mathematische Formeln, die mit LaTeX geschrieben wurden, dargestellt werden. Die Formel wird mit den üblichen $$ oder einem eqnarray Block gekennzeichnet. Formeln werden in allen Beiträgen auf deiner Pinnwand, dem Netzwerkstream sowie privaten Nachrichten gerendert."; $a->strings["The MathJax addon renders mathematical formulae written using the LaTeX syntax surrounded by the usual $$ or an eqnarray block in the postings of your wall,network tab and private mail."] = "Mit dem MathJax Addon können mathematische Formeln, die mit LaTeX geschrieben wurden, dargestellt werden. Die Formel wird mit den üblichen $$ oder einem eqnarray Block gekennzeichnet. Formeln werden in allen Beiträgen auf deiner Pinnwand, dem Netzwerkstream sowie privaten Nachrichten gerendert.";
$a->strings["Use the MathJax renderer"] = "MathJax verwenden"; $a->strings["Use the MathJax renderer"] = "MathJax verwenden";
$a->strings["MathJax Base URL"] = "MathJax Basis-URL"; $a->strings["MathJax Base URL"] = "MathJax Basis-URL";
@ -1190,6 +1253,7 @@ $a->strings["Send public postings to StatusNet by default"] = "Veröffentliche
$a->strings["Send linked #-tags and @-names to StatusNet"] = "Sende verlinkte #-Tags und @-Namen nach StatusNet"; $a->strings["Send linked #-tags and @-names to StatusNet"] = "Sende verlinkte #-Tags und @-Namen nach StatusNet";
$a->strings["Clear OAuth configuration"] = "OAuth-Konfiguration löschen"; $a->strings["Clear OAuth configuration"] = "OAuth-Konfiguration löschen";
$a->strings["API URL"] = "API-URL"; $a->strings["API URL"] = "API-URL";
$a->strings["Infinite Improbability Drive"] = "Infinite Improbability Drive";
$a->strings["Post to Tumblr"] = "Bei Tumblr veröffentlichen"; $a->strings["Post to Tumblr"] = "Bei Tumblr veröffentlichen";
$a->strings["Tumblr Post Settings"] = "Tumblr-Beitragseinstellungen"; $a->strings["Tumblr Post Settings"] = "Tumblr-Beitragseinstellungen";
$a->strings["Enable Tumblr Post Plugin"] = "Tumblr-Plugin aktivieren"; $a->strings["Enable Tumblr Post Plugin"] = "Tumblr-Plugin aktivieren";
@ -1478,7 +1542,6 @@ $a->strings["Manage other pages"] = "Andere Seiten verwalten";
$a->strings["Profiles"] = "Profile"; $a->strings["Profiles"] = "Profile";
$a->strings["Manage/edit profiles"] = "Profile verwalten/editieren"; $a->strings["Manage/edit profiles"] = "Profile verwalten/editieren";
$a->strings["Manage/edit friends and contacts"] = "Freunde und Kontakte verwalten/editieren"; $a->strings["Manage/edit friends and contacts"] = "Freunde und Kontakte verwalten/editieren";
$a->strings["Admin"] = "Administration";
$a->strings["Site setup and configuration"] = "Einstellungen der Seite und Konfiguration"; $a->strings["Site setup and configuration"] = "Einstellungen der Seite und Konfiguration";
$a->strings["Nothing new here"] = "Keine Neuigkeiten."; $a->strings["Nothing new here"] = "Keine Neuigkeiten.";
$a->strings["Add New Contact"] = "Neuen Kontakt hinzufügen"; $a->strings["Add New Contact"] = "Neuen Kontakt hinzufügen";
@ -1530,38 +1593,33 @@ $a->strings["Thank You,"] = "Danke,";
$a->strings["%s Administrator"] = "der Administrator von %s"; $a->strings["%s Administrator"] = "der Administrator von %s";
$a->strings["%s <!item_type!>"] = "%s <!item_type!>"; $a->strings["%s <!item_type!>"] = "%s <!item_type!>";
$a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica Meldung] Neue Nachricht erhalten von %s"; $a->strings["[Friendica:Notify] New mail received at %s"] = "[Friendica Meldung] Neue Nachricht erhalten von %s";
$a->strings["%s sent you a new private message at %s."] = "%s hat dir eine neue private Nachricht auf %s geschrieben."; $a->strings["%1\$s sent you a new private message at %2\$s."] = "%1\$s hat Dir eine neues private Nachricht geschickt auf %2\$s.";
$a->strings["%s sent you %s."] = "%s hat Dir %s geschickt"; $a->strings["%1\$s sent you %2\$s."] = "%1\$s schickte Dir %2\$s.";
$a->strings["a private message"] = "eine private Nachricht"; $a->strings["a private message"] = "eine private Nachricht";
$a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten."; $a->strings["Please visit %s to view and/or reply to your private messages."] = "Bitte besuche %s, um deine privaten Nachrichten anzusehen und/oder zu beantworten.";
$a->strings["%s's"] = "%s's"; $a->strings["%1\$s commented on [url=%2\$s]a %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]a %3\$s[/url]";
$a->strings["your"] = "Dein"; $a->strings["%1\$s commented on [url=%2\$s]%3\$s's %4\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]%3\$s's %4\$s[/url]";
$a->strings["[Friendica:Notify] Comment to conversation #%d by %s"] = "[Friendica Meldung] Kommentar zum Beitrag #%d von %s"; $a->strings["%1\$s commented on [url=%2\$s]your %3\$s[/url]"] = "%1\$s kommentierte [url=%2\$s]Deinen Beitrag %3\$s[/url]";
$a->strings["[Friendica:Notify] Comment to conversation #%1\$d by %2\$s"] = "[Friendica Meldung] Kommentar zum Beitrag #%1\$d von %2\$s";
$a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem du folgst."; $a->strings["%s commented on an item/conversation you have been following."] = "%s hat einen Beitrag kommentiert, dem du folgst.";
$a->strings["%s commented on %s."] = "%s kommentierte %s.";
$a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren."; $a->strings["Please visit %s to view and/or reply to the conversation."] = "Bitte besuche %s, um die Konversation anzusehen und/oder zu kommentieren.";
$a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben"; $a->strings["[Friendica:Notify] %s posted to your profile wall"] = "[Friendica Meldung] %s hat auf Deine Pinnwand geschrieben";
$a->strings["%s posted to your profile wall at %s"] = "%s hat auf deine Pinnwand bei %s gepostet"; $a->strings["%1\$s posted to your profile wall at %2\$s"] = "%1\$s schrieb auf Deine Pinnwand auf %2\$s";
$a->strings["%s posted to %s"] = "%s schrieb an %s"; $a->strings["%1\$s posted to [url=%2s]your wall[/url]"] = "%1\$s schrieb auf [url=%2s]Deine Pinnwand[/url]";
$a->strings["your profile wall."] = "Deine Pinnwand";
$a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica Meldung] %s hat Dich erwähnt"; $a->strings["[Friendica:Notify] %s tagged you"] = "[Friendica Meldung] %s hat Dich erwähnt";
$a->strings["%s tagged you at %s"] = "%s hat dich auf %s erwähnt"; $a->strings["%1\$s tagged you at %2\$s"] = "%1\$s erwähnte Dich auf %2\$s";
$a->strings["%s %s."] = "%s %s."; $a->strings["%1\$s [url=%2s]tagged you[/url]."] = "%1\$s [url=%2s]erwähnte Dich[/url].";
$a->strings["tagged you"] = "erwähnte Dich";
$a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica Meldung] %s markierte Deinen Beitrag"; $a->strings["[Friendica:Notify] %s tagged your post"] = "[Friendica Meldung] %s markierte Deinen Beitrag";
$a->strings["%s tagged your post at %s"] = "%s hat deinen Beitrag auf %s getaggt"; $a->strings["%1\$s tagged your post at %2\$s"] = "%1\$s erwähnte Deinen Beitrag auf %2\$s";
$a->strings["%s tagged %s"] = "%s markierte %s"; $a->strings["%1\$s tagged [url=%2\$s]your post[/url]"] = "%1\$s erwähnte [url=%2\$s]Deinen Beitrag[/url]";
$a->strings["your post"] = "deinen Beitrag";
$a->strings["[Friendica:Notify] Introduction received"] = "[Friendica Meldung] Kontaktanfrage erhalten"; $a->strings["[Friendica:Notify] Introduction received"] = "[Friendica Meldung] Kontaktanfrage erhalten";
$a->strings["You've received an introduction from '%s' at %s"] = "Du hast eine Kontaktanfrage von '%s' auf %s erhalten"; $a->strings["You've received an introduction from '%1\$s' at %2\$s"] = "Du hast eine Kontaktanfrage erhalten von '%1\$s' auf %2\$s";
$a->strings["You've received %s from %s."] = "Du hast %s von %s erhalten."; $a->strings["You've received [url=%1\$s]an introduction[/url] from %2\$s."] = "Du hast eine [url=%1\$s]Kontaktanfrage[/url] erhalten von %2\$s.";
$a->strings["an introduction"] = "eine Kontaktanfrage";
$a->strings["You may visit their profile at %s"] = "Hier kannst du das Profil betrachten: %s"; $a->strings["You may visit their profile at %s"] = "Hier kannst du das Profil betrachten: %s";
$a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen."; $a->strings["Please visit %s to approve or reject the introduction."] = "Bitte besuche %s, um die Kontaktanfrage anzunehmen oder abzulehnen.";
$a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica Meldung] Kontaktvorschlag erhalten"; $a->strings["[Friendica:Notify] Friend suggestion received"] = "[Friendica Meldung] Kontaktvorschlag erhalten";
$a->strings["You've received a friend suggestion from '%s' at %s"] = "Du hast von '%s' einen Kontaktvorschlag erhalten auf %s"; $a->strings["You've received a friend suggestion from '%1\$s' at %2\$s"] = "Du hast einen Freunde-Vorschlag erhalten von '%1\$s' auf %2\$s";
$a->strings["You've received %s for %s from %s."] = "Du hast %s für %s von %s erhalten."; $a->strings["You've received [url=%1\$s]a friend suggestion[/url] for %2\$s from %3\$s."] = "Du hast einen [url=%1\$s]Freunde-Vorschlag[/url] erhalten %2\$s von %3\$s.";
$a->strings["a friend suggestion"] = "ein Freunde Vorschlag";
$a->strings["Name:"] = "Name:"; $a->strings["Name:"] = "Name:";
$a->strings["Photo:"] = "Foto:"; $a->strings["Photo:"] = "Foto:";
$a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."; $a->strings["Please visit %s to approve or reject the suggestion."] = "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen.";
@ -1579,6 +1637,7 @@ $a->strings["Unable to retrieve contact information."] = "Konnte die Kontaktinfo
$a->strings["following"] = "folgen"; $a->strings["following"] = "folgen";
$a->strings["A new person is sharing with you at "] = "Eine neue Person teilt mit dir auf "; $a->strings["A new person is sharing with you at "] = "Eine neue Person teilt mit dir auf ";
$a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf "; $a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf ";
$a->strings["Archives"] = "Archiv";
$a->strings["image/photo"] = "Bild/Foto"; $a->strings["image/photo"] = "Bild/Foto";
$a->strings["link"] = "Verweis"; $a->strings["link"] = "Verweis";
$a->strings["An invitation is required."] = "Du benötigst eine Einladung."; $a->strings["An invitation is required."] = "Du benötigst eine Einladung.";

View file

@ -18,8 +18,12 @@
<div id="photo-edit-tags-end"></div> <div id="photo-edit-tags-end"></div>
<div id="photo-edit-rotate-wrapper"> <div id="photo-edit-rotate-wrapper">
<div id="photo-edit-rotate-label">$rotate</div> <div id="photo-edit-rotate-label">
<input type="checkbox" name="rotate" value="1" /> $rotatecw<br>
$rotateccw
</div>
<input type="radio" name="rotate" value="1" /><br>
<input type="radio" name="rotate" value="2" />
</div> </div>
<div id="photo-edit-rotate-end"></div> <div id="photo-edit-rotate-end"></div>

View file

@ -151,6 +151,10 @@ blockquote {
overflow: none; overflow: none;
} }
.editicon:hover { .editicon {
background-color: #ccc; background-color: #333;
}
#datebrowse-sidebar select {
color:#99CCFF !important;
} }

View file

@ -150,3 +150,7 @@ blockquote {
.editicon { .editicon {
background-color: #333; background-color: #333;
} }
#datebrowse-sidebar select {
color:#99CCFF !important;
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

After

Width:  |  Height:  |  Size: 28 KiB

View file

@ -14,9 +14,9 @@
height="200" height="200"
id="svg3403" id="svg3403"
version="1.1" version="1.1"
inkscape:version="0.48+devel r" inkscape:version="0.48.3.1 r9886"
sodipodi:docname="icons.svg" sodipodi:docname="icons.svg"
inkscape:export-filename="/var/www3/kisikew.org/portal/pub/fd/view/theme/dispy-dark/icons.png" inkscape:export-filename="/var/www3/kisikew.org/portal/pub/fd/view/theme/dispy/dark/icons.png"
inkscape:export-xdpi="90" inkscape:export-xdpi="90"
inkscape:export-ydpi="90"> inkscape:export-ydpi="90">
<defs <defs
@ -52,8 +52,8 @@
inkscape:pageopacity="0" inkscape:pageopacity="0"
inkscape:pageshadow="2" inkscape:pageshadow="2"
inkscape:zoom="1.9403009" inkscape:zoom="1.9403009"
inkscape:cx="95.950174" inkscape:cx="127.81563"
inkscape:cy="115.58345" inkscape:cy="128.63003"
inkscape:document-units="px" inkscape:document-units="px"
inkscape:current-layer="layer1" inkscape:current-layer="layer1"
showgrid="true" showgrid="true"
@ -1127,16 +1127,16 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path4319" id="path4319"
d="m -44.467884,1107.2152 0,17.7252 1.161165,3.7983 c 1.200046,4.2782 1.065706,4.1105 2.322331,0 l 1.161165,-3.7983 0,-17.7252 z" d="m -44.467884,1107.2152 0,17.7252 1.161165,3.7983 c 1.200046,4.2782 1.065706,4.1105 2.322331,0 l 1.161165,-3.7983 0,-17.7252 z"
style="fill:none;stroke:#999999;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#e6e6e6;stroke-width:0.66930836000000005;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" /> transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" />
<path <path
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path4321" id="path4321"
d="m -44.467884,1124.9404 4.644661,0" d="m -44.467884,1124.9404 4.644661,0"
style="fill:none;stroke:#999999;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" style="fill:none;stroke:#e6e6e6;stroke-width:0.66930836000000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" /> transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" />
<path <path
style="fill:none;stroke:#999999;stroke-width:0.66930836;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0" style="fill:none;stroke:#e6e6e6;stroke-width:0.66930836000000005;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;stroke-dashoffset:0"
d="m -42.239747,1107.2336 0,17.6813" d="m -42.239747,1107.2336 0,17.6813"
id="path4323" id="path4323"
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
@ -1146,7 +1146,7 @@
inkscape:connector-curvature="0" inkscape:connector-curvature="0"
id="path4325" id="path4325"
d="m -43.348187,1128.4959 c 1.108441,-0.8952 1.929509,-0.3581 2.381097,0.045 -0.328428,1.1191 -1.190549,3.9391 -1.190549,3.9391 z" d="m -43.348187,1128.4959 c 1.108441,-0.8952 1.929509,-0.3581 2.381097,0.045 -0.328428,1.1191 -1.190549,3.9391 -1.190549,3.9391 z"
style="fill:#999999;stroke:#999999;stroke-width:0.66930836;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none" style="fill:#999999;stroke:#e6e6e6;stroke-width:0.66930836000000005;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none"
transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" /> transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" />
<rect <rect
ry="0.42804927" ry="0.42804927"
@ -1156,7 +1156,7 @@
height="1.8614606" height="1.8614606"
width="5.1800866" width="5.1800866"
id="rect4327" id="rect4327"
style="fill:#999999;fill-opacity:1;stroke:#999999" style="fill:#999999;fill-opacity:1;stroke:#e6e6e6"
transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" /> transform="matrix(0.52823691,0.52823691,-0.52823691,0.52823691,773.22931,313.68781)" />
<path <path
style="fill:none;stroke:#e6e6e6;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none" style="fill:none;stroke:#e6e6e6;stroke-width:0.66930836;stroke-miterlimit:4;stroke-dasharray:none"

Before

Width:  |  Height:  |  Size: 120 KiB

After

Width:  |  Height:  |  Size: 120 KiB

View file

@ -78,16 +78,19 @@ h6{font-size:xx-small;}
#login_openid label{width:180px !important;} #login_openid label{width:180px !important;}
nav{height:60px;background-color:#1d1f1d;color:#eeeeee;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeee;border:0px;}nav a:hover{text-decoration:none;color:#eeeeee;border:0px;} nav{height:60px;background-color:#1d1f1d;color:#eeeeee;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeee;border:0px;}nav a:hover{text-decoration:none;color:#eeeeee;border:0px;}
nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;} nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeee;background-color:#555753;}ul#user-menu-popup li a:hover{color:#2e2f2e;background-color:#eeeeee;} #site-location{font-weight:bold;font-style:italic;font-size:small;width:30em;position:relative;left:-3.5em;top:3em;}
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:3px 0 0;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeee;background-color:#555753;}ul#user-menu-popup li a:hover{color:#2e2f2e;background-color:#eeeeee;}
ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;} ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;}
nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(dark/icons.png) 0 0 no-repeat;} nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(dark/icons.png) 0 0 no-repeat;}
#nav-admin-link{background-position:0 -154px;}#nav-admin-link:hover{background-position:-22px -154px;}
#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;} #nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
#nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;} #nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;}
#nav-directory-link{background-position:-44px -154px;}#nav-directory-link:hover{background-position:-66px -154px;} #nav-directory-link{background-position:-44px -154px;}#nav-directory-link:hover{background-position:-66px -154px;}
#nav-help-link{background-position:0 -110px;}#nav-help-link:hover{background-position:-22px -110px;} #nav-help-link{background-position:0 -110px;}#nav-help-link:hover{background-position:-22px -110px;}
#nav-home-link{background-position:-44px -132px;}#nav-home-link:hover{background-position:-66px -132px;} #nav-home-link{background-position:-44px -132px;}#nav-home-link:hover{background-position:-66px -132px;}
#nav-intro-link{background-position:0px -190px;}#nav-intro-link:hover{background-position:-44px -190px;} #nav-intro-link{background-position:0px -88px;}#nav-intro-link:hover{background-position:-22px -88px;}
#nav-login-link,#nav-logout-link{background-position:0 -88px;}#nav-login-link:hover,#nav-logout-link:hover{background-position:-22px -88px;} #nav-login-link,#nav-logout-link{background-position:0 -88px;}#nav-login-link:hover,#nav-logout-link:hover{background-position:-22px -88px;}
#nav-manage-link{background-position:0px -22px;}#nav-manage-link:hover{background-position:-22px -22px;}
#nav-messages-link{background-position:-44px -88px;}#nav-messages-link:hover{background-position:-66px -88px;} #nav-messages-link{background-position:-44px -88px;}#nav-messages-link:hover{background-position:-66px -88px;}
#nav-notify-link,#nav-notifications-linkmenu{background-position:-44px -110px;} #nav-notify-link,#nav-notifications-linkmenu{background-position:-44px -110px;}
#nav-notify-link:hover{background-position:-66px -110px;} #nav-notify-link:hover{background-position:-66px -110px;}
@ -105,14 +108,15 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;} #notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#1d1f1d;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;} #nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#1d1f1d;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;}
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;} #nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
#nav-buttons-2{clear:both;list-style:none;padding:0px;margin:0px;left:136px;top:-20px;position:relative;width:6em;height:25px;}#nav-buttons-2>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(dark/icons.png) -190px -60px no-repeat;} .floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(dark/icons.png) -190px -60px no-repeat;}
.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;} .search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#1d1f1d;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
#search-text,#mini-search-text{background:white;color:#2e2f2e;} #search-text,#mini-search-text{background:white;color:#2e2f2e;}
#search-text{border:1px solid #eeeeee;margin:5px 0;} #search-text{border:1px solid #eeeeee;margin:5px 0;}
#mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;} #mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;} #scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:80%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;} #user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:35%;margin:5px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;top:4px;left:7px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;} #user-menu-label{font-size:small;padding:0px 20px 10px 5px;height:10px;display:block;}
.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;} .nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(dark/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;} .nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
#net-update{background-position:0px 0px;} #net-update{background-position:0px 0px;}

View file

@ -445,13 +445,22 @@ nav {
font-weight: bold; font-weight: bold;
margin-left: 3px; } } margin-left: 3px; } }
} }
#site-location {
font-weight: bold;
font-style: italic;
font-size: small;
width: 30em;
position: relative;
left: -3.5em;
top: 3em;
}
ul#user-menu-popup { ul#user-menu-popup {
display: none; display: none;
position: absolute; position: absolute;
background-color: @menu_bg_colour; background-color: @menu_bg_colour;
width: 100%; width: 100%;
padding: 10px 0px; padding: 10px 0px;
margin: 0px; margin: 3px 0 0;
top: 20px; top: 20px;
left: 0; left: 0;
font-size: small; font-size: small;
@ -481,6 +490,12 @@ nav .nav-link {
text-indent: 50px; text-indent: 50px;
background: transparent url(dark/icons.png) 0 0 no-repeat; background: transparent url(dark/icons.png) 0 0 no-repeat;
} }
#nav-admin-link {
background-position: 0 -154px;
&:hover {
background-position: -22px -154px;
}
}
#nav-apps-link { #nav-apps-link {
background-position: 0 -66px; background-position: 0 -66px;
&:hover { &:hover {
@ -513,9 +528,9 @@ nav .nav-link {
} }
} }
#nav-intro-link { #nav-intro-link {
background-position: 0px -190px; background-position: 0px -88px;
&:hover { &:hover {
background-position: -44px -190px; background-position: -22px -88px;
} }
} }
#nav-login-link, #nav-login-link,
@ -525,6 +540,12 @@ nav .nav-link {
background-position: -22px -88px; background-position: -22px -88px;
} }
} }
#nav-manage-link {
background-position: 0px -22px;
&:hover {
background-position: -22px -22px;
}
}
#nav-messages-link { #nav-messages-link {
background-position: -44px -88px; background-position: -44px -88px;
&:hover { &:hover {
@ -653,6 +674,21 @@ nav #nav-notifications-linkmenu {
margin: 0px -4px 0px 0px; margin: 0px -4px 0px 0px;
} }
} }
#nav-buttons-2 {
clear: both;
list-style: none;
padding: 0px;
margin: 0px;
left: 136px;
top: -20px;
position: relative;
.box(6em, 25px);
> li {
padding: 0;
display: inline-block;
margin: 0px -4px 0px 0px;
}
}
.floaterflip { .floaterflip {
display: block; display: block;
position: fixed; position: fixed;
@ -702,17 +738,17 @@ nav #nav-notifications-linkmenu {
#user-menu { #user-menu {
.box_shadow(5px, 0, 10px, 0); .box_shadow(5px, 0, 10px, 0);
display: block; display: block;
width: 80%; width: 35%;
margin: 3px 0 0 0; margin: 5px 0 0 0;
position: relative; position: relative;
.rounded_corners; .rounded_corners;
background-color: @menu_bg_colour; background-color: @menu_bg_colour;
background-image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q=="); background-image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");
background-position: 98% center; background-position: 98% center;
background-repeat: no-repeat; background-repeat: no-repeat;
clear: both; /* clear: both;*/
top: 4px; top: 4px;
left: 10px; left: 7px;
padding: 2px; padding: 2px;
> a { > a {
vertical-align: top; vertical-align: top;
@ -721,8 +757,9 @@ nav #nav-notifications-linkmenu {
} }
#user-menu-label { #user-menu-label {
font-size: small; font-size: small;
padding: 3px 20px 9px 5px; padding: 0px 20px 10px 5px;
height: 10px; height: 10px;
display: block;
} }
.nav-ajax-update, .nav-ajax-update,
.nav-ajax-left { .nav-ajax-left {

View file

@ -78,16 +78,19 @@ h6{font-size:xx-small;}
#login_openid label{width:180px !important;} #login_openid label{width:180px !important;}
nav{height:60px;background-color:#2e3436;color:#eeeeec;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeec;border:0px;}nav a:hover{text-decoration:none;color:#eeeeec;border:0px;} nav{height:60px;background-color:#2e3436;color:#eeeeec;position:relative;padding:20px 20px 10px 95px;}nav a{text-decoration:none;color:#eeeeec;border:0px;}nav a:hover{text-decoration:none;color:#eeeeec;border:0px;}
nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;} nav #banner{display:block;position:absolute;left:51px;top:25px;}nav #banner #logo-text a{font-size:40px;font-weight:bold;margin-left:3px;}
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:0px;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeec;background-color:#555753;}ul#user-menu-popup li a:hover{color:#eeeeec;background-color:#111111;} #site-location{font-weight:bold;font-style:italic;font-size:small;width:30em;position:relative;left:-3.5em;top:3em;}
ul#user-menu-popup{display:none;position:absolute;background-color:#555753;width:100%;padding:10px 0px;margin:3px 0 0;top:20px;left:0;font-size:small;line-height:1;-o-border-radius:0 0 5px 5px;-webkit-border-radius:0 0 5px 5px;-moz-border-radius:0 0 5px 5px;-ms-border-radius:0 0 5px 5px;border-radius:0 0 5px 5px;-moz-box-shadow:5px 5px 10px 0px #111111;-o-box-shadow:5px 5px 10px 0px #111111;-webkit-box-shadow:5px 5px 10px 0px #111111;-ms-box-shadow:5px 5px 10px 0px #111111;box-shadow:5px 5px 10px 0px #111111;z-index:10000;}ul#user-menu-popup li{display:block;}ul#user-menu-popup li a{display:block;padding:5px;color:#eeeeec;background-color:#555753;}ul#user-menu-popup li a:hover{color:#eeeeec;background-color:#111111;}
ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;} ul#user-menu-popup li a.nav-sep{border-top:1px solid #2e302e;}
nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(light/icons.png) 0 0 no-repeat;} nav .nav-link{display:inline-block;width:22px;height:22px;overflow:hidden;margin:0px 5px 5px;text-indent:50px;background:transparent url(light/icons.png) 0 0 no-repeat;}
#nav-admin-link{background-position:0 -154px;}#nav-admin-link:hover{background-position:-22px -154px;}
#nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;} #nav-apps-link{background-position:0 -66px;}#nav-apps-link:hover{background-position:-22px -66px;}
#nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;} #nav-community-link,#nav-contacts-link{background-position:0 -22px;}#nav-community-link:hover,#nav-contacts-link:hover{background-position:-22px -22px;}
#nav-directory-link{background-position:-44px -154px;}#nav-directory-link:hover{background-position:-66px -154px;} #nav-directory-link{background-position:-44px -154px;}#nav-directory-link:hover{background-position:-66px -154px;}
#nav-help-link{background-position:0 -110px;}#nav-help-link:hover{background-position:-22px -110px;} #nav-help-link{background-position:0 -110px;}#nav-help-link:hover{background-position:-22px -110px;}
#nav-home-link{background-position:-44px -132px;}#nav-home-link:hover{background-position:-66px -132px;} #nav-home-link{background-position:-44px -132px;}#nav-home-link:hover{background-position:-66px -132px;}
#nav-intro-link{background-position:0px -190px;}#nav-intro-link:hover{background-position:-44px -190px;} #nav-intro-link{background-position:0px -88px;}#nav-intro-link:hover{background-position:-22px -88px;}
#nav-login-link,#nav-logout-link{background-position:0 -88px;}#nav-login-link:hover,#nav-logout-link:hover{background-position:-22px -88px;} #nav-login-link,#nav-logout-link{background-position:0 -88px;}#nav-login-link:hover,#nav-logout-link:hover{background-position:-22px -88px;}
#nav-manage-link{background-position:0px -22px;}#nav-manage-link:hover{background-position:-22px -22px;}
#nav-messages-link{background-position:-44px -88px;}#nav-messages-link:hover{background-position:-66px -88px;} #nav-messages-link{background-position:-44px -88px;}#nav-messages-link:hover{background-position:-66px -88px;}
#nav-notify-link,#nav-notifications-linkmenu{background-position:-44px -110px;} #nav-notify-link,#nav-notifications-linkmenu{background-position:-44px -110px;}
#nav-notify-link:hover{background-position:-66px -110px;} #nav-notify-link:hover{background-position:-66px -110px;}
@ -105,14 +108,15 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
#notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;} #notifications{width:170px;height:20px;font-size:small;top:-19px;left:4px;position:absolute;}
#nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;} #nav-floater{position:fixed;top:20px;right:1%;padding:5px;background:#2e3436;color:transparent;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;z-index:100;width:270px;height:60px;}
#nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;} #nav-buttons{clear:both;list-style:none;padding:0px;margin:0px;height:25px;}#nav-buttons>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
#nav-buttons-2{clear:both;list-style:none;padding:0px;margin:0px;left:136px;top:-20px;position:relative;width:6em;height:25px;}#nav-buttons-2>li{padding:0;display:inline-block;margin:0px -4px 0px 0px;}
.floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(light/icons.png) -190px -60px no-repeat;} .floaterflip{display:block;position:fixed;z-index:110;top:56px;right:19px;width:22px;height:22px;overflow:hidden;margin:0px;background:transparent url(light/icons.png) -190px -60px no-repeat;}
.search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;} .search-box{display:inline-block;margin:5px;position:fixed;right:0px;bottom:0px;z-index:100;background:#2e3436;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
#search-text,#mini-search-text{background:white;color:#111111;} #search-text,#mini-search-text{background:white;color:#111111;}
#search-text{border:1px solid #999999;margin:5px 0;} #search-text{border:1px solid #999999;margin:5px 0;}
#mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;} #mini-search-text{font-size:8pt;height:14px;width:10em;margin:5px;}
#scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;} #scrollup{position:fixed;right:5px;bottom:40px;z-index:100;}#scrollup a:hover{text-decoration:none;border:0;}
#user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:80%;margin:3px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;clear:both;top:4px;left:10px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;} #user-menu{-moz-box-shadow:5px 0 10px 0 #111111;-o-box-shadow:5px 0 10px 0 #111111;-webkit-box-shadow:5px 0 10px 0 #111111;-ms-box-shadow:5px 0 10px 0 #111111;box-shadow:5px 0 10px 0 #111111;display:block;width:35%;margin:5px 0 0 0;position:relative;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;background-color:#555753;background-image:url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");background-position:98% center;background-repeat:no-repeat;top:4px;left:7px;padding:2px;}#user-menu>a{vertical-align:top;outline:0 none;}
#user-menu-label{font-size:small;padding:3px 20px 9px 5px;height:10px;} #user-menu-label{font-size:small;padding:0px 20px 10px 5px;height:10px;display:block;}
.nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(light/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;} .nav-ajax-update,.nav-ajax-left{width:30px;height:19px;background:transparent url(light/notifications.png) 0 0 no-repeat;color:#111111;font-weight:bold;font-size:0.8em;padding-top:0.2em;text-align:center;float:left;margin:0 -1px 0 3px;display:block;visibility:hidden;}
.nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;} .nav-ajax-update.show,.nav-ajax-left.show{visibility:visible;}
#net-update{background-position:0px 0px;} #net-update{background-position:0px 0px;}

View file

@ -446,13 +446,22 @@ nav {
font-weight: bold; font-weight: bold;
margin-left: 3px; } } margin-left: 3px; } }
} }
#site-location {
font-weight: bold;
font-style: italic;
font-size: small;
width: 30em;
position: relative;
left: -3.5em;
top: 3em;
}
ul#user-menu-popup { ul#user-menu-popup {
display: none; display: none;
position: absolute; position: absolute;
background-color: @menu_bg_colour; background-color: @menu_bg_colour;
width: 100%; width: 100%;
padding: 10px 0px; padding: 10px 0px;
margin: 0px; margin: 3px 0 0;
top: 20px; top: 20px;
left: 0; left: 0;
font-size: small; font-size: small;
@ -482,6 +491,12 @@ nav .nav-link {
text-indent: 50px; text-indent: 50px;
background: transparent url(light/icons.png) 0 0 no-repeat; background: transparent url(light/icons.png) 0 0 no-repeat;
} }
#nav-admin-link {
background-position: 0 -154px;
&:hover {
background-position: -22px -154px;
}
}
#nav-apps-link { #nav-apps-link {
background-position: 0 -66px; background-position: 0 -66px;
&:hover { &:hover {
@ -514,9 +529,9 @@ nav .nav-link {
} }
} }
#nav-intro-link { #nav-intro-link {
background-position: 0px -190px; background-position: 0px -88px;
&:hover { &:hover {
background-position: -44px -190px; background-position: -22px -88px;
} }
} }
#nav-login-link, #nav-login-link,
@ -526,6 +541,12 @@ nav .nav-link {
background-position: -22px -88px; background-position: -22px -88px;
} }
} }
#nav-manage-link {
background-position: 0px -22px;
&:hover {
background-position: -22px -22px;
}
}
#nav-messages-link { #nav-messages-link {
background-position: -44px -88px; background-position: -44px -88px;
&:hover { &:hover {
@ -654,6 +675,21 @@ nav #nav-notifications-linkmenu {
margin: 0px -4px 0px 0px; margin: 0px -4px 0px 0px;
} }
} }
#nav-buttons-2 {
clear: both;
list-style: none;
padding: 0px;
margin: 0px;
left: 136px;
top: -20px;
position: relative;
.box(6em, 25px);
> li {
padding: 0;
display: inline-block;
margin: 0px -4px 0px 0px;
}
}
.floaterflip { .floaterflip {
display: block; display: block;
position: fixed; position: fixed;
@ -703,17 +739,17 @@ nav #nav-notifications-linkmenu {
#user-menu { #user-menu {
.box_shadow(5px, 0, 10px, 0); .box_shadow(5px, 0, 10px, 0);
display: block; display: block;
width: 80%; width: 35%;
margin: 3px 0 0 0; margin: 5px 0 0 0;
position: relative; position: relative;
.rounded_corners; .rounded_corners;
background-color: @menu_bg_colour; background-color: @menu_bg_colour;
background-image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q=="); background-image: url("data:image/jpeg;base64,/9j/4AAQSkZJRgABAQEASABIAAD//gATQ3JlYXRlZCB3aXRoIEdJTVD/2wBDAAMCAgMCAgMDAwMEAwMEBQgFBQQEBQoHBwYIDAoMDAsKCwsNDhIQDQ4RDgsLEBYQERMUFRUVDA8XGBYUGBIUFRT/2wBDAQMEBAUEBQkFBQkUDQsNFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBT/wAARCAAIAAwDASIAAhEBAxEB/8QAFgABAQEAAAAAAAAAAAAAAAAAAAMH/8QAIhAAAQMEAgIDAAAAAAAAAAAAAQIDBAAFBhESIQdBMVFh/8QAFQEBAQAAAAAAAAAAAAAAAAAAAgP/xAAXEQEBAQEAAAAAAAAAAAAAAAABAAIR/9oADAMBAAIRAxEAPwCXiHO8dbsEi35BEhIehNlbUhxhBU82O+G9bKgToD2D+VlmZX9OWZBJuAiMxGlni0w0gJCED4HXv7pSi6eFML//2Q==");
background-position: 98% center; background-position: 98% center;
background-repeat: no-repeat; background-repeat: no-repeat;
clear: both; /* clear: both;*/
top: 4px; top: 4px;
left: 10px; left: 7px;
padding: 2px; padding: 2px;
> a { > a {
vertical-align: top; vertical-align: top;
@ -722,8 +758,9 @@ nav #nav-notifications-linkmenu {
} }
#user-menu-label { #user-menu-label {
font-size: small; font-size: small;
padding: 3px 20px 9px 5px; padding: 0px 20px 10px 5px;
height: 10px; height: 10px;
display: block;
} }
.nav-ajax-update, .nav-ajax-update,
.nav-ajax-left { .nav-ajax-left {

View file

@ -1,6 +1,7 @@
<nav id="pagenav"> <nav id="pagenav">
<span id="banner">$banner</span> <div id="banner">$banner</div>
<div id="site-location">$sitelocation</div>
<a name="top" id="top"></a> <a name="top" id="top"></a>
<div id="nav-floater"> <div id="nav-floater">
@ -50,7 +51,7 @@
</ul> </ul>
<div id="user-menu"> <div id="user-menu">
<a id="user-menu-label" onclick="openClose('user-menu-popup'); return false;" href="$nav.home.0">$sitelocation</a> <a id="user-menu-label" onclick="openClose('user-menu-popup'); return false;" href="$nav.home.0"><span class="">User Menu</span></a>
<ul id="user-menu-popup" <ul id="user-menu-popup"
onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')" onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')"
onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)"> onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
@ -62,9 +63,6 @@
{{ endif }} {{ endif }}
{{ if $nav.contacts }} {{ if $nav.contacts }}
<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0" title="$nav.contacts.1">$nav.contacts.1</a></li> <li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0" title="$nav.contacts.1">$nav.contacts.1</a></li>
{{ endif }}
{{ if $nav.introductions }}
<li><a id="nav-intro-link" class="nav-commlink $nav.introductions.2 $sel.introductions" href="$nav.introductions.0" title="$nav.introductions.3" >$nav.introductions.1</a></li>
{{ endif }} {{ endif }}
{{ if $nav.profiles }} {{ if $nav.profiles }}
<li><a id="nav-profiles-link" class="nav-commlink $nav.profiles.2" href="$nav.profiles.0" title="$nav.profiles.1">$nav.profiles.1</a></li> <li><a id="nav-profiles-link" class="nav-commlink $nav.profiles.2" href="$nav.profiles.0" title="$nav.profiles.1">$nav.profiles.1</a></li>
@ -72,12 +70,6 @@
{{ if $nav.settings }} {{ if $nav.settings }}
<li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0" title="$nav.settings.1">$nav.settings.1</a></li> <li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0" title="$nav.settings.1">$nav.settings.1</a></li>
{{ endif }} {{ endif }}
{{ if $nav.manage }}
<li><a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0" title="$nav.manage.1">$nav.manage.1</a></li>
{{ endif }}
{{ if $nav.admin }}
<li><a id="nav-admin-link" class="nav-commlink $nav.admin.2" href="$nav.admin.0" title="$nav.admin.1">$nav.admin.1</a></li>
{{ endif }}
{{ if $nav.login }} {{ if $nav.login }}
<li><a id="nav-login-link" class="nav-commlink $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a></li> <li><a id="nav-login-link" class="nav-commlink $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a></li>
{{ endif }} {{ endif }}
@ -87,6 +79,18 @@
</ul> </ul>
</div> </div>
<ul id="nav-buttons-2">
{{ if $nav.introductions }}
<li><a id="nav-intro-link" class="nav-link $nav.introductions.2 $sel.introductions" href="$nav.introductions.0" title="$nav.introductions.3" >$nav.introductions.1</a></li>
{{ endif }}
{{ if $nav.admin }}
<li><a id="nav-admin-link" class="nav-link $nav.admin.2" href="$nav.admin.0" title="$nav.admin.1">$nav.admin.1</a></li>
{{ endif }}
{{ if $nav.manage }}
<li><a id="nav-manage-link" class="nav-link $nav.manage.2" href="$nav.manage.0" title="$nav.manage.1">$nav.manage.1</a></li>
{{ endif }}
</ul>
{{ if $userinfo }} {{ if $userinfo }}
<ul id="nav-user-menu" class="menu-popup"> <ul id="nav-user-menu" class="menu-popup">
{{ for $nav.usermenu as $usermenu }} {{ for $nav.usermenu as $usermenu }}

View file

@ -1,4 +1,4 @@
<a name="$item.id" /> <a name="$item.id" ></a>
<div class="wall-item-outside-wrapper$item.indent$item.previewing" id="wall-item-outside-wrapper-$item.id" > <div class="wall-item-outside-wrapper$item.indent$item.previewing" id="wall-item-outside-wrapper-$item.id" >
<div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" > <div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info" id="wall-item-info-$item.id"> <div class="wall-item-info" id="wall-item-info-$item.id">

View file

@ -1,4 +1,4 @@
<a name="$item.id" /> <a name="$item.id" ></a>
<div class="wall-item-outside-wrapper$item.indent$item.previewing wallwall" id="wall-item-outside-wrapper-$item.id" > <div class="wall-item-outside-wrapper$item.indent$item.previewing wallwall" id="wall-item-outside-wrapper-$item.id" >
<div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" > <div class="wall-item-content-wrapper$item.indent" id="wall-item-content-wrapper-$item.id" >
<div class="wall-item-info wallwall" id="wall-item-info-$item.id"> <div class="wall-item-info wallwall" id="wall-item-info-$item.id">
@ -88,6 +88,7 @@ class="icon recycle wall-item-share-buttons" title="$item.vote.share.0" onclick
<div class="wall-item-wrapper-end"></div> <div class="wall-item-wrapper-end"></div>
<div class="wall-item-like" id="wall-item-like-$item.id">$item.like</div> <div class="wall-item-like" id="wall-item-like-$item.id">$item.like</div>
<div class="wall-item-dislike" id="wall-item-dislike-$item.id">$item.dislike</div> <div class="wall-item-dislike" id="wall-item-dislike-$item.id">$item.dislike</div>
<div class="wall-item-comment-separator"></div>
<div class="wall-item-comment-wrapper"> <div class="wall-item-comment-wrapper">
$item.comment $item.comment
</div> </div>

View file

@ -29,3 +29,19 @@
<span class="icon s22 delete text">$dropping</span> <span class="icon s22 delete text">$dropping</span>
</a> </a>
{{ endif }} {{ endif }}
<script>
// jquery color plugin from https://raw.github.com/gist/1891361/17747b50ad87f7a59a14b4e0f38d8f3fb6a18b27/gistfile1.js
(function(d){d.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(f,e){d.fx.step[e]=function(g){if(!g.colorInit){g.start=c(g.elem,e);g.end=b(g.end);g.colorInit=true}g.elem.style[e]="rgb("+[Math.max(Math.min(parseInt((g.pos*(g.end[0]-g.start[0]))+g.start[0]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[1]-g.start[1]))+g.start[1]),255),0),Math.max(Math.min(parseInt((g.pos*(g.end[2]-g.start[2]))+g.start[2]),255),0)].join(",")+")"}});function b(f){var e;if(f&&f.constructor==Array&&f.length==3){return f}if(e=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(f)){return[parseInt(e[1]),parseInt(e[2]),parseInt(e[3])]}if(e=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(f)){return[parseFloat(e[1])*2.55,parseFloat(e[2])*2.55,parseFloat(e[3])*2.55]}if(e=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(f)){return[parseInt(e[1],16),parseInt(e[2],16),parseInt(e[3],16)]}if(e=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(f)){return[parseInt(e[1]+e[1],16),parseInt(e[2]+e[2],16),parseInt(e[3]+e[3],16)]}if(e=/rgba\(0, 0, 0, 0\)/.exec(f)){return a.transparent}return a[d.trim(f).toLowerCase()]}function c(g,e){var f;do{f=d.curCSS(g,e);if(f!=""&&f!="transparent"||d.nodeName(g,"body")){break}e="backgroundColor"}while(g=g.parentNode);return b(f)}var a={transparent:[255,255,255]}})(jQuery);
var colWhite = {backgroundColor:'#EFF0F1'};
var colShiny = {backgroundColor:'#FCE94F'};
</script>
{{ if $mode == display }}
<script>
var id = window.location.pathname.split("/").pop();
$(window).scrollTop($('#item-'+id).position().top);
$('#item-'+id).animate(colWhite, 1000).animate(colShiny).animate(colWhite, 2000);
</script>
{{ endif }}

View file

@ -128,6 +128,11 @@ nav #site-location {
box-shadow: 4px 4px 3px 0 #444444; box-shadow: 4px 4px 3px 0 #444444;
} }
#sidebar-page-list .label {
margin-left: 5px;
}
.photo { .photo {
border: 1px solid #AAAAAA; border: 1px solid #AAAAAA;
} }