]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote branch 'upstream/master'
authorMichael Vogel <icarus@dabo.de>
Mon, 4 Jun 2012 06:09:15 +0000 (08:09 +0200)
committerMichael Vogel <icarus@dabo.de>
Mon, 4 Jun 2012 06:09:15 +0000 (08:09 +0200)
62 files changed:
boot.php
database.sql
include/api.php
include/bbcode.php
include/conversation.php
include/datetime.php
include/delivery.php
include/diaspora.php [changed mode: 0644->0755]
include/enotify.php
include/event.php
include/follow.php [new file with mode: 0644]
include/items.php [changed mode: 0644->0755]
include/nav.php
include/notifier.php
include/profile_advanced.php
include/text.php
include/user.php [new file with mode: 0644]
js/country.js
mod/acctlink.php [new file with mode: 0644]
mod/acl.php
mod/admin.php
mod/community.php
mod/dfrn_confirm.php
mod/dfrn_notify.php
mod/dfrn_request.php
mod/follow.php
mod/install.php [changed mode: 0644->0755]
mod/item.php
mod/like.php [changed mode: 0644->0755]
mod/message.php
mod/network.php
mod/notes.php
mod/profile.php
mod/profiles.php
mod/register.php
mod/search.php
mod/settings.php
update.php
util/messages.po
view/de/messages.po
view/de/strings.php
view/dfrn_req_confirm.tpl
view/diaspora_like_relay.tpl [changed mode: 0644->0755]
view/diaspora_relay_retraction.tpl [new file with mode: 0644]
view/diaspora_relayable_retraction.tpl [new file with mode: 0755]
view/pagetypes.tpl
view/profile_advanced.tpl
view/profile_edit.tpl
view/prv_message.tpl
view/settings.tpl
view/theme/dispy/conversation.tpl
view/theme/dispy/dark/style.css
view/theme/dispy/dark/style.less
view/theme/dispy/light/style.css
view/theme/dispy/light/style.less
view/theme/duepuntozero/style.css
view/theme/quattro/dark/style.css
view/theme/quattro/green/style.css
view/theme/quattro/icons.less
view/theme/quattro/icons/addon_off.png [new file with mode: 0644]
view/theme/quattro/icons/addon_on.png [new file with mode: 0644]
view/theme/quattro/quattro.less

index affa351dc6a956646cfbe771e6173fcfe2f3b92a..18313b4cdf61705b5aaa83a8a0805457b41685dd 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -9,9 +9,9 @@ require_once('include/nav.php');
 require_once('include/cache.php');
 
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
-define ( 'FRIENDICA_VERSION',      '3.0.1357' );
+define ( 'FRIENDICA_VERSION',      '3.0.1363' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
-define ( 'DB_UPDATE_VERSION',      1144      );
+define ( 'DB_UPDATE_VERSION',      1148      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index ed97cd4aa7edd1820e571f4f9741e5a859407031..c1d1b27e4ee865213533879dc5b5482933e1a550 100644 (file)
@@ -173,6 +173,7 @@ CREATE TABLE IF NOT EXISTS `contact` (
   `readonly` tinyint(1) NOT NULL DEFAULT '0',
   `writable` tinyint(1) NOT NULL DEFAULT '0',
   `forum` tinyint(1) NOT NULL DEFAULT '0',
+  `prv` tinyint(1) NOT NULL DEFAULT '0',
   `hidden` tinyint(1) NOT NULL DEFAULT '0',
   `archive` tinyint(1) NOT NULL DEFAULT '0',
   `pending` tinyint(1) NOT NULL DEFAULT '1',
@@ -819,9 +820,11 @@ CREATE TABLE IF NOT EXISTS `profile` (
   `region` char(255) NOT NULL,
   `postal-code` char(32) NOT NULL,
   `country-name` char(255) NOT NULL,
+  `hometown` char(255) NOT NULL,
   `gender` char(32) NOT NULL,
   `marital` char(255) NOT NULL,
   `with` text NOT NULL,
+  `howlong` datetime NOT NULL default '0000-00-00 00:00:00',
   `sexual` char(255) NOT NULL,
   `politic` char(255) NOT NULL,
   `religion` char(255) NOT NULL,
@@ -941,12 +944,14 @@ CREATE TABLE IF NOT EXISTS `session` (
 
 CREATE TABLE IF NOT EXISTS `sign` (
   `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
-  `iid` int(10) unsigned NOT NULL,
+  `iid` int(10) unsigned NOT NULL DEFAULT '0',
+  `retract_iid` int(10) unsigned NOT NULL DEFAULT '0',
   `signed_text` mediumtext NOT NULL,
   `signature` text NOT NULL,
   `signer` char(255) NOT NULL,
   PRIMARY KEY (`id`),
-  KEY `iid` (`iid`)
+  KEY `iid` (`iid`),
+  KEY `retract_iid` (`retract_iid`)
 ) ENGINE=MyISAM  DEFAULT CHARSET=utf8;
 
 -- --------------------------------------------------------
index cd8526f89564e64e6a221edebd3bccd126196243..9925b57663a9a00f01c2ed759df7399e9dfec098 100644 (file)
                 else
                         $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
                                 dbesc(protect_sprintf('%' . $myurl)),
-                                dbesc(protect_sprintf('%' . $myurl . '\\]%')),
-                                dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                                dbesc(protect_sprintf('%' . $myurl . ']%')),
+                                dbesc(protect_sprintf('%' . $diasp_url . ']%'))
                         );
 
                if ($max_id > 0)
index 85d310b75f5ed621164f49dba5e71aa0e96132b4..efc362880f3f437456ef836656533a9eab58f5a1 100644 (file)
@@ -52,6 +52,8 @@ function bb_unspacefy_and_trim($st) {
 
 function bbcode($Text,$preserve_nl = false) {
 
+       $a = get_app();
+
        // Hide all [noparse] contained bbtags spacefying them
 
        $Text = preg_replace_callback("/\[noparse\](.*?)\[\/noparse\]/ism", 'bb_spacefy',$Text);
@@ -114,6 +116,11 @@ function bbcode($Text,$preserve_nl = false) {
        $Text = preg_replace("/\[url\=([$URLSearchString]*)\](.*?)\[\/url\]/ism", '<a href="$1" target="external-link">$2</a>', $Text);
        //$Text = preg_replace("/\[url\=([$URLSearchString]*)\]([$URLSearchString]*)\[\/url\]/ism", '<a href="$1" target="_blank">$2</a>', $Text);
 
+       // we may need to restrict this further if it picks up too many strays
+       // link acct:user@host to a webfinger profile redirector
+
+       $Text = preg_replace('/acct:(.*?)@(.*?)([ ,])/', '<a href="' . $a->get_baseurl() . '/acctlink?addr=' . "$1@$2" 
+               . '" target="extlink" >acct:' . "$1@$2$3" . '</a>',$Text);
 
        // Perform MAIL Search
        $Text = preg_replace("/\[mail\]([$MAILSearchString]*)\[\/mail\]/", '<a href="mailto:$1">$1</a>', $Text);
@@ -226,7 +233,7 @@ function bbcode($Text,$preserve_nl = false) {
        $endlessloop = 0;
        while ((strpos($Text, "[/quote]")!== false)  and (strpos($Text, "[quote=") !== false) and (++$endlessloop < 20))
                $Text = preg_replace("/\[quote=[\"\']*(.*?)[\"\']*\](.*?)\[\/quote\]/ism",
-                                    "<br /><strong class=".'"author"'.">" . $t_wrote . "</strong><blockquote class=".'"author"'.">$2</blockquote>",
+                                    "<br /><strong class=".'"author"'.">" . $t_wrote . "</strong><blockquote>$2</blockquote>",
                                     $Text);
 
        // [img=widthxheight]image source[/img]
index dc574ddff8e899a0caa0f494d1e46dff0324565c..a9c6287a900faf1d8f306eef15b7a429f0bbfc87 100644 (file)
@@ -173,6 +173,12 @@ function localize_item(&$item){
                                $item['body'] = str_replace($mtch[0],'@[url=' . zrl($mtch[1]). ']',$item['body']);
                }
        }
+       if(preg_match_all('/\[url=(.*?)\/photos\/(.*?)\/image\/(.*?)\]\[img(.*?)\]h(.*?)\[\/img\]\[\/url\]/is',$item['body'],$matches,PREG_SET_ORDER)) {
+logger('matched');
+               foreach($matches as $mtch) {
+                               $item['body'] = str_replace($mtch[0],'[url=' . zrl($mtch[1] . '/photos/' . $mtch[2] . '/image/' . $mtch[3] ,true) . '][img' . $mtch[4] . ']h' . $mtch[5]  . '[/img][/url]',$item['body']);
+               }
+       }
 
 
 }
@@ -496,7 +502,7 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
 
                                                // On the network page, I am the owner. On the display page it will be the profile owner.
                                                // This will have been stored in $a->page_contact by our calling page.
-                                               // Put this person on the left of the wall-to-wall notice.
+                                               // Put this person as the wall owner of the wall-to-wall notice.
 
                                                $owner_url = zrl($a->page_contact['url']);
                                                $owner_photo = $a->page_contact['thumb'];
@@ -504,23 +510,38 @@ function conversation(&$a, $items, $mode, $update, $preview = false) {
                                                $template = $wallwall;
                                                $commentww = 'ww';      
                                        }
-                                       if((! $item['wall']) && (strlen($item['owner-link'])) && (! link_compare($item['owner-link'],$item['author-link']))) {
 
-                                               // Could be anybody. 
-
-                                               $owner_url = $item['owner-link'];
-                                               $owner_photo = $item['owner-avatar'];
-                                               $owner_name = $item['owner-name'];
-                                               $template = $wallwall;
-                                               $commentww = 'ww';
-                                               // If it is our contact, use a friendly redirect link
-                                               if((link_compare($item['owner-link'],$item['url'])) 
-                                                       && ($item['network'] === NETWORK_DFRN)) {
-                                                       $owner_url = $redirect_url;
-                                                       $osparkle = ' sparkle';
+                                       if((! $item['wall']) && $item['owner-link']) {
+
+                                               $owner_linkmatch = (($item['owner-link']) && link_compare($item['owner-link'],$item['author-link']));
+                                               $alias_linkmatch = (($item['alias']) && link_compare($item['alias'],$item['author-link']));
+                                               $owner_namematch = (($item['owner-name']) && $item['owner-name'] == $item['author-name']);
+                                               if((! $owner_linkmatch) && (! $alias_linkmatch) && (! $owner_namematch)) {
+
+                                                       // The author url doesn't match the owner (typically the contact)
+                                                       // and also doesn't match the contact alias. 
+                                                       // The name match is a hack to catch several weird cases where URLs are 
+                                                       // all over the park. It can be tricked, but this prevents you from
+                                                       // seeing "Bob Smith to Bob Smith via Wall-to-wall" and you know darn
+                                                       // well that it's the same Bob Smith. 
+
+                                                       // But it could be somebody else with the same name. It just isn't highly likely. 
+                                                       
+
+                                                       $owner_url = $item['owner-link'];
+                                                       $owner_photo = $item['owner-avatar'];
+                                                       $owner_name = $item['owner-name'];
+                                                       $template = $wallwall;
+                                                       $commentww = 'ww';
+                                                       // If it is our contact, use a friendly redirect link
+                                                       if((link_compare($item['owner-link'],$item['url'])) 
+                                                               && ($item['network'] === NETWORK_DFRN)) {
+                                                               $owner_url = $redirect_url;
+                                                               $osparkle = ' sparkle';
+                                                       }
+                                                       else
+                                                               $owner_url = zrl($owner_url);
                                                }
-                                               else
-                                                       $owner_url = zrl($owner_url);
                                        }
                                }
 
index f4dcfce62e9fb90952a65c1158781ca7ed8a339a..3b1491e4d839429d5fb95390df171be39bc5ad54 100644 (file)
@@ -244,7 +244,7 @@ function timesel($pre,$h,$m) {
 // Limited to range of timestamps
 
 if(! function_exists('relative_date')) {
-function relative_date($posted_date) {
+function relative_date($posted_date,$format = null) {
 
        $localtime = datetime_convert('UTC',date_default_timezone_get(),$posted_date); 
 
@@ -274,7 +274,9 @@ function relative_date($posted_date) {
                if ($d >= 1) {
                        $r = round($d);
                        // translators - e.g. 22 hours ago, 1 minute ago
-                       return sprintf( t('%1$d %2$s ago'),$r, (($r == 1) ? $str[0] : $str[1]));
+                       if(! $format)
+                               $format = t('%1$d %2$s ago');
+                       return sprintf( $format,$r, (($r == 1) ? $str[0] : $str[1]));
         }
     }
 }}
index 32943d5dabdefabe211fee14ca90b8e0a2e051eb..e6cfc8155430ecb8f594d8744aa0af1e28787ff0 100644 (file)
@@ -113,6 +113,7 @@ function delivery_run($argv, $argc){
                        $uid = $r[0]['uid'];
                        $updated = $r[0]['edited'];
 
+                       // The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up
                        if(! $parent_id)
                                continue;
 
@@ -508,17 +509,17 @@ function delivery_run($argv, $argc){
                                        // unsupported
                                        break;
                                }
-                               elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) {
-                               logger('delivery: diaspora retract: ' . $loc);
-                                       // diaspora delete, 
+                               elseif(($target_item['deleted']) && ($target_item['uri'] === $target_item['parent-uri'])) {
+                                       // top-level retraction
+                                       logger('delivery: diaspora retract: ' . $loc);
+
                                        diaspora_send_retraction($target_item,$owner,$contact,$public_message);
                                        break;
                                }
-                               elseif($target_item['parent'] != $target_item['id']) {
-
-                               logger('delivery: diaspora relay: ' . $loc);
+                               elseif($target_item['uri'] !== $target_item['parent-uri']) {
+                                       // we are the relay - send comments, likes and relayable_retractions to our conversants
+                                       logger('delivery: diaspora relay: ' . $loc);
 
-                                       // we are the relay - send comments, likes and unlikes to our conversants
                                        diaspora_send_relay($target_item,$owner,$contact,$public_message);
                                        break;
                                }               
old mode 100644 (file)
new mode 100755 (executable)
index 3f2cdf8..1e6662f
@@ -83,6 +83,9 @@ function diaspora_dispatch($importer,$msg) {
        elseif($xmlbase->signed_retraction) {
                $ret = diaspora_signed_retraction($importer,$xmlbase->signed_retraction,$msg);
        }
+       elseif($xmlbase->relayable_retraction) {
+               $ret = diaspora_signed_retraction($importer,$xmlbase->relayable_retraction,$msg);
+       }
        elseif($xmlbase->photo) {
                $ret = diaspora_photo($importer,$xmlbase->photo,$msg);
        }
@@ -677,7 +680,7 @@ function diaspora_post($importer,$xml) {
                return;
        }
 
-    // allocate a guid on our system - we aren't fixing any collisions.
+       // allocate a guid on our system - we aren't fixing any collisions.
        // we're ignoring them
 
        $g = q("select * from guid where guid = '%s' limit 1",
@@ -844,7 +847,7 @@ function diaspora_reshare($importer,$xml) {
        $prefix = '&#x2672; ' . $details . "\n"; 
 
 
-    // allocate a guid on our system - we aren't fixing any collisions.
+       // allocate a guid on our system - we aren't fixing any collisions.
        // we're ignoring them
 
        $g = q("select * from guid where guid = '%s' limit 1",
@@ -948,7 +951,7 @@ function diaspora_asphoto($importer,$xml) {
                return;
        }
 
-    // allocate a guid on our system - we aren't fixing any collisions.
+       // allocate a guid on our system - we aren't fixing any collisions.
        // we're ignoring them
 
        $g = q("select * from guid where guid = '%s' limit 1",
@@ -1602,22 +1605,28 @@ function diaspora_like($importer,$xml,$msg) {
                        logger('diaspora_like: duplicate like: ' . $guid);
                        return;
                } 
+               // Note: I don't think "Like" objects with positive = "false" are ever actually used
+               // It looks like "RelayableRetractions" are used for "unlike" instead
                if($positive === 'false') {
-                       q("UPDATE `item` SET `deleted` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                       logger('diaspora_like: received a like with positive set to "false"...ignoring');
+/*                     q("UPDATE `item` SET `deleted` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                intval($r[0]['id']),
                                intval($importer['uid'])
-                       );
+                       );*/
                        // FIXME
                        //  send notification via proc_run()
                        return;
                }
        }
+       // Note: I don't think "Like" objects with positive = "false" are ever actually used
+       // It looks like "RelayableRetractions" are used for "unlike" instead
        if($positive === 'false') {
-               logger('diaspora_like: unlike received with no corresponding like');
+               logger('diaspora_like: received a like with positive set to "false"');
+               logger('diaspora_like: unlike received with no corresponding like...ignoring');
                return; 
        }
 
-       $author_signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle;
+       $signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle;
 
        $author_signature = base64_decode($author_signature);
 
@@ -1635,20 +1644,20 @@ function diaspora_like($importer,$xml,$msg) {
                }
        }
 
-       if(! rsa_verify($author_signed_data,$author_signature,$key,'sha256')) {
+       if(! rsa_verify($signed_data,$author_signature,$key,'sha256')) {
                logger('diaspora_like: verification failed.');
                return;
        }
 
        if($parent_author_signature) {
 
-               $owner_signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle;
+               //$owner_signed_data = $guid . ';' . $target_type . ';' . $parent_guid . ';' . $positive . ';' . $diaspora_handle;
 
                $parent_author_signature = base64_decode($parent_author_signature);
 
                $key = $msg['key'];
 
-               if(! rsa_verify($owner_signed_data,$parent_author_signature,$key,'sha256')) {
+               if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
                        logger('diaspora_like: owner verification failed.');
                        return;
                }
@@ -1783,38 +1792,89 @@ function diaspora_signed_retraction($importer,$xml,$msg) {
        $type = notags(unxmlify($xml->target_type));
        $sig = notags(unxmlify($xml->target_author_signature));
 
+       $parent_author_signature = (($xml->parent_author_signature) ? notags(unxmlify($xml->parent_author_signature)) : '');
+
        $contact = diaspora_get_contact_by_handle($importer['uid'],$diaspora_handle);
        if(! $contact) {
                logger('diaspora_signed_retraction: no contact');
                return;
        }
 
-       // this may not yet work for comments. Need to see how the relaying works
-       // and figure out who signs it.
-
 
        $signed_data = $guid . ';' . $type ;
 
-       $sig = base64_decode($sig);
+       $sig_decode = base64_decode($sig);
 
-       $key = $msg['key'];
+       if(strcasecmp($diaspora_handle,$msg['author']) == 0) {
+               $person = $contact;
+               $key = $msg['key'];
+       }
+       else {
+               $person = find_diaspora_person_by_handle($diaspora_handle);     
+
+               if(is_array($person) && x($person,'pubkey'))
+                       $key = $person['pubkey'];
+               else {
+                       logger('diaspora_signed_retraction: unable to find author details');
+                       return;
+               }
+       }
 
-       if(! rsa_verify($signed_data,$sig,$key,'sha256')) {
-               logger('diaspora_signed_retraction: owner verification failed.' . print_r($msg,true));
+       if(! rsa_verify($signed_data,$sig_decode,$key,'sha256')) {
+               logger('diaspora_signed_retraction: retraction-owner verification failed.' . print_r($msg,true));
                return;
        }
 
-       if($type === 'StatusMessage') {
+       if($parent_author_signature) {
+               $parent_author_signature = base64_decode($parent_author_signature);
+
+               $key = $msg['key'];
+
+               if(! rsa_verify($signed_data,$parent_author_signature,$key,'sha256')) {
+                       logger('diaspora_signed_retraction: failed to verify person relaying the retraction (e.g. owner of a post relaying a retracted comment');
+                       return;
+               }
+
+       }
+
+       if($type === 'StatusMessage' || $type === 'Comment' || $type === 'Like') {
                $r = q("select * from item where guid = '%s' and uid = %d and not file like '%%[%%' limit 1",
                        dbesc($guid),
                        intval($importer['uid'])
                );
                if(count($r)) {
                        if(link_compare($r[0]['author-link'],$contact['url'])) {
-                               q("update item set `deleted` = 1, `changed` = '%s' where `id` = %d limit 1",
+                               q("update item set `deleted` = 1, `edited` = '%s', `changed` = '%s', `body` = '' , `title` = '' where `id` = %d limit 1",
+                                       dbesc(datetime_convert()),                      
                                        dbesc(datetime_convert()),                      
                                        intval($r[0]['id'])
                                );
+       
+                               // Now check if the retraction needs to be relayed by us
+                               //
+                               // 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.
+                               // The only item with `parent` and `id` as the parent id is the parent item.
+                               $p = q("select origin from item where parent = %d and id = %d limit 1",
+                                       $r[0]['parent'],
+                                       $r[0]['parent']
+                               );
+                               if(count($p)) {
+                                       if(($p[0]['origin']) && (! $parent_author_signature)) {
+                                               q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+                                                       $r[0]['id'],
+                                                       dbesc($signed_data),
+                                                       dbesc($sig),
+                                                       dbesc($diaspora_handle)
+                                               );
+
+                                               // the existence of parent_author_signature would have meant the parent_author or owner
+                                               // is already relaying.
+                                               logger('diaspora_signed_retraction: relaying relayable_retraction');
+
+                                               proc_run('php','include/notifier.php','relayable_retraction',$r[0]['id']);
+                                       }
+                               }
                        }
                }
        }
@@ -2055,8 +2115,12 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
        $myaddr = $owner['nickname'] . '@' .  substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
        $theiraddr = $contact['addr'];
 
-       $p = q("select guid from item where parent = %d limit 1",
-               $item['parent']
+       // 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.
+       // The only item with `parent` and `id` as the parent id is the parent item.
+       $p = q("select guid from item where parent = %d and id = %d limit 1",
+               intval($item['parent']),
+               intval($item['parent'])
        );
        if(count($p))
                $parent_guid = $p[0]['guid'];
@@ -2067,7 +2131,11 @@ function diaspora_send_followup($item,$owner,$contact,$public_batch = false) {
                $tpl = get_markup_template('diaspora_like.tpl');
                $like = true;
                $target_type = 'Post';
-               $positive = (($item['deleted']) ? 'false' : 'true');
+//             $positive = (($item['deleted']) ? 'false' : 'true');
+               $positive = 'true';
+
+               if(($item['deleted']))
+                       logger('diaspora_send_followup: received deleted "like". Those should go to diaspora_send_retraction');
        }
        else {
                $tpl = get_markup_template('diaspora_comment.tpl');
@@ -2107,41 +2175,51 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
 
 
        $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'];
 
 
-       $p = q("select guid from item where parent = %d limit 1",
-               $item['parent']
+       // 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.
+       // The only item with `parent` and `id` as the parent id is the parent item.
+       $p = q("select guid from item where parent = %d and id = %d limit 1",
+               intval($item['parent']),
+               intval($item['parent'])
        );
        if(count($p))
                $parent_guid = $p[0]['guid'];
        else
                return;
 
-       if($item['verb'] === ACTIVITY_LIKE) {
+       $like = false;
+       $relay_retract = false;
+       $sql_sign_id = 'iid';
+       if( $item['deleted']) {
+               $tpl = get_markup_template('diaspora_relayable_retraction.tpl');
+               $relay_retract = true;
+               $sql_sign_id = 'retract_iid';
+               $target_type = ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
+       }
+       elseif($item['verb'] === ACTIVITY_LIKE) {
                $tpl = get_markup_template('diaspora_like_relay.tpl');
                $like = true;
                $target_type = 'Post';
-               $positive = (($item['deleted']) ? 'false' : 'true');
+//             $positive = (($item['deleted']) ? 'false' : 'true');
+               $positive = 'true';
        }
        else {
                $tpl = get_markup_template('diaspora_comment_relay.tpl');
-               $like = false;
        }
 
        $body = $item['body'];
 
        $text = html_entity_decode(bb2diaspora($body));
 
-       // fetch the original signature if somebody sent the post to us to relay
-       // If we are relaying for a reply originating on our own account, there wasn't a 'send to relay'
-       // action. It wasn't needed. In that case create the original signature and the 
-       // owner (parent author) signature
-       // comments from other networks will be relayed under our name, with a brief 
-       // preamble to describe what's happening and noting the real author
 
-       $r = q("select * from sign where iid = %d limit 1",
+       // fetch the original signature if the relayable was created by a Diaspora
+       // or DFRN user. Relayables for other networks are not supported.
+
+       $r = q("select * from sign where " . $sql_sign_id . " = %d limit 1",
                intval($item['id'])
        );
        if(count($r)) { 
@@ -2152,6 +2230,12 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
        }
        else {
 
+               // Author signature information (for likes, comments, and retractions of likes or comments,
+               // whether from Diaspora or Friendica) must be placed in the `sign` table before this 
+               // function is called
+               logger('diaspora_send_relay: original author signature not found, cannot send relayable');
+               return;
+/*
                $itemcontact = q("select * from contact where `id` = %d limit 1",
                        intval($item['contact-id'])
                );
@@ -2160,29 +2244,40 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
                                $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 . ';' . $myaddr;
+                               $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 . ';' . $myaddr;
+                               $signed_text = $item['guid'] . ';' . $parent_guid . ';' . $text . ';' . $handle;
 
                        $authorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
 
-                       q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+                       q("insert into sign (`" . $sql_sign_id . "`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                                intval($item['id']),
                                dbesc($signed_text),
-                               dbesc(base64_encode($authorsig)),
-                               dbesc($myaddr)
+                               dbesc($authorsig),
+                               dbesc($handle)
                        );
-                       $handle = $myaddr;
                }
+*/
        }
 
-       // sign it
+       // sign it with the top-level owner's signature
 
        $parentauthorsig = base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'));
 
@@ -2190,14 +2285,15 @@ function diaspora_send_relay($item,$owner,$contact,$public_batch = false) {
                '$guid' => xmlify($item['guid']),
                '$parent_guid' => xmlify($parent_guid),
                '$target_type' =>xmlify($target_type),
-               '$authorsig' => xmlify($orig_sign['signature']),
+               '$authorsig' => xmlify($authorsig),
                '$parentsig' => xmlify($parentauthorsig),
                '$body' => xmlify($text),
                '$positive' => xmlify($positive),
                '$handle' => xmlify($handle)
        ));
 
-       logger('diaspora_relay_comment: base message: ' . $msg, LOGGER_DATA);
+       logger('diaspora_send_relay: base message: ' . $msg, LOGGER_DATA);
+
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
 
@@ -2212,14 +2308,25 @@ function diaspora_send_retraction($item,$owner,$contact,$public_batch = false) {
        $a = get_app();
        $myaddr = $owner['nickname'] . '@' .  substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
 
-       $signed_text = $item['guid'] . ';' . 'StatusMessage';
+       // Check whether the retraction is for a top-level post or whether it's a relayable
+       if( $item['uri'] !== $item['parent-uri'] ) {
+
+               $tpl = get_markup_template('diaspora_relay_retraction.tpl');
+               $target_type = (($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
+       }
+       else {
+               
+               $tpl = get_markup_template('diaspora_signed_retract.tpl');
+               $target_type = 'StatusMessage';
+       }
+
+       $signed_text = $item['guid'] . ';' . $target_type;
 
-       $tpl = get_markup_template('diaspora_signed_retract.tpl');
        $msg = replace_macros($tpl, array(
-               '$guid'   => $item['guid'],
-               '$type'   => 'StatusMessage',
-               '$handle' => $myaddr,
-               '$signature' => base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256'))
+               '$guid'   => xmlify($item['guid']),
+               '$type'   => xmlify($target_type),
+               '$handle' => xmlify($myaddr),
+               '$signature' => xmlify(base64_encode(rsa_sign($signed_text,$owner['uprvkey'],'sha256')))
        ));
 
        $slap = 'xml=' . urlencode(urlencode(diaspora_msg_build($msg,$owner,$contact,$owner['uprvkey'],$contact['pubkey'],$public_batch)));
@@ -2343,3 +2450,5 @@ function diaspora_transmit($owner,$contact,$slap,$public_batch) {
 
        return(($return_code) ? $return_code : (-1));
 }
+
+
index f7ef74fac59469e706084fabfdac59bcfbb99a83..fe0f128b600e16bf4fd13c61a9e6a7a5beb8f5ab 100644 (file)
@@ -20,6 +20,9 @@ function notification($params) {
 
        $sender_name = $product;
        $hostname = $a->get_hostname();
+       if(strpos($hostname,':'))
+               $hostname = substr($hostname,0,strpos($hostname,':'));
+
        $sender_email = t('noreply') . '@' . $hostname;
        $additional_mail_header = "";
 
index 29202baddf982417cdf3decedc3f0b69be539dc8..866ae8c3f006370c7f0bae151995e47a5cad2934 100644 (file)
@@ -42,7 +42,7 @@ function format_event_html($ev) {
        return $o;
 }
 
-
+/*
 function parse_event($h) {
 
        require_once('include/Scrape.php');
@@ -108,7 +108,7 @@ function parse_event($h) {
 
        return $ret;
 }
-
+*/
 
 function format_event_bbcode($ev) {
 
@@ -162,7 +162,6 @@ function bbtoevent($s) {
        $match = '';
        if(preg_match("/\[event\-adjust\](.*?)\[\/event\-adjust\]/is",$s,$match))
                $ev['adjust'] = $match[1];
-       $match = '';
        $ev['nofinish'] = (((x($ev, 'start') && $ev['start']) && (!x($ev, 'finish') || !$ev['finish'])) ? 1 : 0);
        return $ev;
 
@@ -294,10 +293,14 @@ function event_store($arr) {
                                intval($arr['uid'])
                        );
 
-                       return $r[0]['id'];
+                       $item_id = $r[0]['id'];
                }
                else
-                       return 0;
+                       $item_id = 0;
+
+               call_hooks("event_updated", $arr['id']);
+
+               return $item_id;
        }
        else {
 
@@ -361,7 +364,7 @@ function event_store($arr) {
                $item_arr['body']          = format_event_bbcode($event);
 
 
-               $item_arr['object'] = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($uri) . '</id>';
+               $item_arr['object'] = '<object><type>' . xmlify(ACTIVITY_OBJ_EVENT) . '</type><title></title><id>' . xmlify($arr['uri']) . '</id>';
                $item_arr['object'] .= '<content>' . xmlify(format_event_bbcode($event)) . '</content>';
                $item_arr['object'] .= '</object>' . "\n";
 
@@ -383,6 +386,8 @@ function event_store($arr) {
                        );
                }
 
+               call_hooks("event_created", $event['id']);
+
                return $item_id;
        }
 }
diff --git a/include/follow.php b/include/follow.php
new file mode 100644 (file)
index 0000000..d92d757
--- /dev/null
@@ -0,0 +1,243 @@
+<?php
+
+
+//
+// Takes a $uid and a url/handle and adds a new contact
+// Currently if the contact is DFRN, interactive needs to be true, to redirect to the
+// dfrn_request page.
+
+// Otherwise this can be used to bulk add statusnet contacts, twitter contacts, etc.
+// Returns an array
+//  $return['success'] boolean true if successful
+//  $return['message'] error text if success is false.
+
+
+
+function new_contact($uid,$url,$interactive = false) {
+
+       $result = array('success' => false,'message' => '');
+
+       $a = get_app();
+
+       // remove ajax junk, e.g. Twitter
+
+       $url = str_replace('/#!/','/',$url);
+
+       if(! allowed_url($url)) {
+               $result['message'] = t('Disallowed profile URL.');
+               return $result;
+       }
+
+       if(! $url) {
+               $result['message'] = t('Connect URL missing.');
+               return $result;
+       }
+
+       $arr = array('url' => $url, 'contact' => array());
+
+       call_hooks('follow', $arr);
+
+       if(x($arr['contact'],'name')) 
+               $ret = $arr['contact'];
+       else
+               $ret = probe_url($url);
+
+       if($ret['network'] === NETWORK_DFRN) {
+               if($interactive) {
+                       if(strlen($a->path))
+                               $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
+                       else
+                               $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
+                       goaway($ret['request'] . "&addr=$myaddr");
+               
+                       // NOTREACHED
+               }
+       }
+       else {
+               if(get_config('system','dfrn_only')) {
+                       $result['message'] = t('This site is not configured to allow communications with other networks.') . EOL;
+                       $result['message'] != t('No compatible communication protocols or feeds were discovered.') . EOL;
+                       return $result;
+               }
+       }
+       
+       // This extra param just confuses things, remove it
+       if($ret['network'] === NETWORK_DIASPORA)
+               $ret['url'] = str_replace('?absolute=true','',$ret['url']);
+
+
+       // do we have enough information?
+       
+       if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
+               $result['message'] .=  t('The profile address specified does not provide adequate information.') . EOL;
+               if(! x($ret,'poll'))
+                       $result['message'] .= t('No compatible communication protocols or feeds were discovered.') . EOL;
+               if(! x($ret,'name'))
+                       $result['message'] .=  t('An author or name was not found.') . EOL;
+               if(! x($ret,'url'))
+                       $result['message'] .=  t('No browser URL could be matched to this address.') . EOL;
+               if(strpos($url,'@') !== false) {
+                       $result['message'] .=  t('Unable to match @-style Identity Address with a known protocol or email contact.') . EOL;
+                       $result['message'] .=  t('Use mailto: in front of address to force email check.') . EOL;
+               }
+               return $result;
+       }
+
+       if($ret['network'] === NETWORK_OSTATUS && get_config('system','ostatus_disabled')) {
+               $result['message'] .= t('The profile address specified belongs to a network which has been disabled on this site.') . EOL;
+               $ret['notify'] = '';
+       }
+
+       if(! $ret['notify']) {
+               $result['message'] .=  t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL;
+       }
+
+       $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
+       $hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0);
+
+       if($ret['network'] === NETWORK_MAIL) {
+               $writeable = 1;
+               
+       }
+       if($ret['network'] === NETWORK_DIASPORA)
+               $writeable = 1;
+
+       // check if we already have a contact
+       // the poll url is more reliable than the profile url, as we may have
+       // indirect links or webfinger links
+
+       $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
+               intval($uid),
+               dbesc($ret['poll'])
+       );                      
+
+
+       if(count($r)) {
+               // update contact
+               if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
+                       q("UPDATE `contact` SET `rel` = %d , `readonly` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                               intval(CONTACT_IS_FRIEND),
+                               intval($r[0]['id']),
+                               intval($uid)
+                       );
+               }
+       }
+       else {
+
+               $new_relation = (($ret['network'] === NETWORK_MAIL) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
+               if($ret['network'] === NETWORK_DIASPORA)
+                       $new_relation = CONTACT_IS_FOLLOWER;
+
+               // create contact record 
+               $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
+                       `writable`, `hidden`, `blocked`, `readonly`, `pending` )
+                       VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ",
+                       intval($uid),
+                       dbesc(datetime_convert()),
+                       dbesc($ret['url']),
+                       dbesc(normalise_link($ret['url'])),
+                       dbesc($ret['addr']),
+                       dbesc($ret['alias']),
+                       dbesc($ret['batch']),
+                       dbesc($ret['notify']),
+                       dbesc($ret['poll']),
+                       dbesc($ret['poco']),
+                       dbesc($ret['name']),
+                       dbesc($ret['nick']),
+                       dbesc($ret['photo']),
+                       dbesc($ret['network']),
+                       dbesc($ret['pubkey']),
+                       intval($new_relation),
+                       intval($ret['priority']),
+                       intval($writeable),
+                       intval($hidden)
+               );
+       }
+
+       $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
+               dbesc($ret['url']),
+               intval($uid)
+       );
+
+       if(! count($r)) {
+               $result['message'] .=  t('Unable to retrieve contact information.') . EOL;
+               return $result;
+       }
+
+       $contact = $r[0];
+       $contact_id  = $r[0]['id'];
+
+
+       $g = q("select def_gid from user where uid = %d limit 1",
+               intval($uid)
+       );
+       if($g && intval($g[0]['def_gid'])) {
+               require_once('include/group.php');
+               group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
+       }
+
+       require_once("Photo.php");
+
+       $photos = import_profile_photo($ret['photo'],$uid,$contact_id);
+
+       $r = q("UPDATE `contact` SET `photo` = '%s', 
+                       `thumb` = '%s',
+                       `micro` = '%s', 
+                       `name-date` = '%s', 
+                       `uri-date` = '%s', 
+                       `avatar-date` = '%s'
+                       WHERE `id` = %d LIMIT 1
+               ",
+                       dbesc($photos[0]),
+                       dbesc($photos[1]),
+                       dbesc($photos[2]),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       intval($contact_id)
+               );                      
+
+
+       // pull feed and consume it, which should subscribe to the hub.
+
+       proc_run('php',"include/poller.php","$contact_id");
+
+       // create a follow slap
+
+       $tpl = get_markup_template('follow_slap.tpl');
+       $slap = replace_macros($tpl, array(
+               '$name' => $a->user['username'],
+               '$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
+               '$photo' => $a->contact['photo'],
+               '$thumb' => $a->contact['thumb'],
+               '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
+               '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . random_string(),
+               '$title' => '',
+               '$type' => 'text',
+               '$content' => t('following'),
+               '$nick' => $a->user['nickname'],
+               '$verb' => ACTIVITY_FOLLOW,
+               '$ostat_follow' => ''
+       ));
+
+       $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` 
+                       WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
+                       intval($uid)
+       );
+
+       if(count($r)) {
+               if(($contact['network'] == NETWORK_OSTATUS) && (strlen($contact['notify']))) {
+                       require_once('include/salmon.php');
+                       slapper($r[0],$contact['notify'],$slap);
+               }
+               if($contact['network'] == NETWORK_DIASPORA) {
+                       require_once('include/diaspora.php');
+                       $ret = diaspora_share($a->user,$contact);
+                       logger('mod_follow: diaspora_share returns: ' . $ret);
+               }
+       }
+
+       $result['success'] = true;
+       return $result;
+}
old mode 100644 (file)
new mode 100755 (executable)
index 3fe977b..4513db1
@@ -180,6 +180,10 @@ function get_feed_for(&$a, $dfrn_id, $owner_nick, $last_update, $direction = 0)
 
        foreach($items as $item) {
 
+               // prevent private email from leaking.
+               if($item['network'] === NETWORK_MAIL)
+                       continue;
+
                // public feeds get html, our own nodes use bbcode
 
                if($public_feed) {
@@ -1063,9 +1067,6 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
 
        $a = get_app();
 
-//     if((! strlen($contact['issued-id'])) && (! $contact['duplex']) && (! ($owner['page-flags'] == PAGE_COMMUNITY)))
-//             return 3;
-
        $idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
 
        if($contact['duplex'] && $contact['dfrn-id'])
@@ -1130,6 +1131,9 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
        $rino_allowed = ((intval($res->rino) === 1) ? 1 : 0);
        $page         = (($owner['page-flags'] == PAGE_COMMUNITY) ? 1 : 0);
 
+       if($owner['page-flags'] == PAGE_PRVGROUP)
+               $page = 2;
+
        $final_dfrn_id = '';
 
        if($perm) {
@@ -1183,7 +1187,7 @@ function dfrn_deliver($owner,$contact,$atom, $dissolve = false) {
        $postvars['ssl_policy'] = $ssl_policy;
 
        if($page)
-               $postvars['page'] = '1';
+               $postvars['page'] = $page;
        
        if($rino && $rino_allowed && (! $dissolve)) {
                $key = substr(random_string(),0,16);
@@ -2931,10 +2935,10 @@ function fix_private_photos($s,$uid, $item = null, $cid = 0) {
        $a = get_app();
 
        logger('fix_private_photos', LOGGER_DEBUG);
-       $site = substr($a->get_baseurl(),strpos($a->get_baseurl,'://'));
+       $site = substr($a->get_baseurl(),strpos($a->get_baseurl(),'://'));
 
-       if(preg_match("/\[img\](.*?)\[\/img\]/is",$s,$matches)) {
-               $image = $matches[1];
+       if(preg_match("/\[img(.*?)\](.*?)\[\/img\]/is",$s,$matches)) {
+               $image = $matches[2];
                logger('fix_private_photos: found photo ' . $image, LOGGER_DEBUG);
                if(stristr($image , $site . '/photo/')) {
                        $replace = false;
@@ -3274,7 +3278,42 @@ function drop_item($id,$interactive = true) {
                                q("UPDATE `item` SET `last-child` = 1 WHERE `id` = %d LIMIT 1",
                                        intval($r[0]['id'])
                                );
-                       }       
+                       }
+
+                       // Add a relayable_retraction signature for Diaspora. Note that we can't add a target_author_signature
+                       // if the comment was deleted by a remote user. That should be ok, because if a remote user is deleting
+                       // the comment, that means we're the home of the post, and Diaspora will only
+                       // check the parent_author_signature of retractions that it doesn't have to relay further
+                       //
+                       // I don't think this function gets called for an "unlike," but I'll check anyway
+                       $signed_text = $item['guid'] . ';' . ( ($item['verb'] === ACTIVITY_LIKE) ? 'Like' : 'Comment');
+
+                       if(local_user() == $item['uid']) {
+
+                               $handle = $a->user['nickname'] . '@' . substr($a->get_baseurl(), strpos($a->get_baseurl(),'://') + 3);
+                               $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha256'));
+                       }
+                       else {
+                               $r = q("SELECT `nick`, `url` FROM `contact` WHERE `id` = '%d' LIMIT 1",
+                                       $item['contact-id']
+                               );
+                               if(count($r)) {
+                                       // The below handle only works for NETWORK_DFRN. I think that's ok, because this function
+                                       // only handles DFRN deletes
+                                       $handle_baseurl_start = strpos($r['url'],'://') + 3;
+                                       $handle_baseurl_length = strpos($r['url'],'/profile') - $handle_baseurl_start;
+                                       $handle = $r['nick'] . '@' . substr($r['url'], $handle_baseurl_start, $handle_baseurl_length);
+                                       $authorsig = '';
+                               }
+                       }
+
+                       if(isset($handle))
+                               q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+                                       intval($item['id']),
+                                       dbesc($signed_text),
+                                       dbesc($authorsig),
+                                       dbesc($handle)
+                               );
                }
                $drop_id = intval($item['id']);
 
index 2c9c643a92f596ec7d6c10cef84fbdc76b3c02a2..909ba9b541da97cc278fb0922cb5a8faa402b1c9 100644 (file)
@@ -117,7 +117,7 @@ function nav(&$a) {
 
                /* only show friend requests for normal pages. Other page types have automatic friendship. */
 
-               if($_SESSION['page_flags'] == PAGE_NORMAL) {
+               if($_SESSION['page_flags'] == PAGE_NORMAL || $_SESSION['page_flags'] == PAGE_PRVGROUP) {
                        $nav['introductions'] = array('notifications/intros',   t('Introductions'), "", t('Friend Requests'));
                        $nav['notifications'] = array('notifications',  t('Notifications'), "", t('Notifications'));
                        $nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
index 070e7a436193aef69d9501d141dda27e37891be9..f0a1940d498cffd17cc426ddc41f64ebe7d6f535 100644 (file)
@@ -125,6 +125,7 @@ function notifier_run($argv, $argc){
                $uid = $r[0]['uid'];
                $updated = $r[0]['edited'];
 
+               // The following seems superfluous. We've already checked for "if (! intval($r[0]['parent']))" a few lines up
                if(! $parent_id)
                        return;
 
@@ -596,7 +597,7 @@ function notifier_run($argv, $argc){
                                        break;
                                case NETWORK_OSTATUS:
 
-                                       // Do not send to otatus if we are not configured to send to public networks
+                                       // Do not send to ostatus if we are not configured to send to public networks
                                        if($owner['prvnets'])
                                                break;
                                        if(get_config('system','ostatus_disabled') || get_config('system','dfrn_only'))
@@ -737,18 +738,19 @@ function notifier_run($argv, $argc){
                                                // unsupported
                                                break;
                                        }
-                                       elseif(($target_item['deleted']) && ($target_item['verb'] !== ACTIVITY_LIKE)) {
-                                               // diaspora delete, 
+                                       elseif(($target_item['deleted']) && (($target_item['uri'] === $target_item['parent-uri']) || $followup)) {
+                                               // send both top-level retractions and relayable retractions for owner to relay
                                                diaspora_send_retraction($target_item,$owner,$contact);
                                                break;
                                        }
                                        elseif($followup) {
-                                               // send comments, likes and retractions of likes to owner to relay
+                                               // send comments and likes to owner to relay
                                                diaspora_send_followup($target_item,$owner,$contact);
                                                break;
                                        }
-                                       elseif($target_item['parent'] != $target_item['id']) {
-                                               // we are the relay - send comments, likes and unlikes to our conversants
+                                       elseif($target_item['uri'] !== $target_item['parent-uri']) {
+                                               // we are the relay - send comments, likes and relayable_retractions
+                                               // (of comments and likes) to our conversants
                                                diaspora_send_relay($target_item,$owner,$contact);
                                                break;
                                        }
@@ -858,6 +860,13 @@ function notifier_run($argv, $argc){
 
        }
 
+       // If the item was deleted, clean up the `sign` table
+       if($target_item['deleted']) {
+               $r = q("DELETE FROM sign where `retract_iid` = %d",
+                       intval($target_item['id'])
+               );
+       }
+
        logger('notifier: calling hooks', LOGGER_DEBUG);
 
        if($normal_mode)
index 8c2acd8e7639441573689a1efc3076af36ed274f..ffb45090b9b8c5f876c30b2272ba4b48287f9bd5 100644 (file)
@@ -39,11 +39,16 @@ function advanced_profile(&$a) {
 
                if($a->profile['with']) $profile['marital']['with'] = $a->profile['with'];
 
+               if(strlen($a->profile['howlong']) && $a->profile['howlong'] !== '0000-00-00 00:00:00') {
+                               $profile['howlong'] = relative_date($a->profile['howlong'], t('for %1$d %2$s'));
+               }
 
                if($a->profile['sexual']) $profile['sexual'] = array( t('Sexual Preference:'), $a->profile['sexual'] );
 
                if($a->profile['homepage']) $profile['homepage'] = array( t('Homepage:'), linkify($a->profile['homepage']) );
 
+               if($a->profile['hometown']) $profile['hometown'] = array( t('Hometown:'), linkify($a->profile['hometown']) );
+
                if($a->profile['pub_keywords']) $profile['pub_keywords'] = array( t('Tags:'), $a->profile['pub_keywords']);
 
                if($a->profile['politic']) $profile['politic'] = array( t('Political Views:'), $a->profile['politic']);
index d6a9ef5d3a03a33dbd8b2008e50392ac9cfb1c06..d4a4d55809c5a262d3b5b54615a39711d9488c92 100644 (file)
@@ -742,6 +742,8 @@ function smilies($s, $sample = false) {
                ':homebrew', 
                ':coffee', 
                ':facepalm',
+               ':like',
+               ':dislike',
                '~friendika', 
                '~friendica'
 
@@ -778,6 +780,8 @@ function smilies($s, $sample = false) {
                '<img src="' . $a->get_baseurl() . '/images/beer_mug.gif" alt=":homebrew" />',
                '<img src="' . $a->get_baseurl() . '/images/coffee.gif" alt=":coffee" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
+               '<img src="' . $a->get_baseurl() . '/images/like.gif" alt=":like" />',
+               '<img src="' . $a->get_baseurl() . '/images/dislike.gif" alt=":dislike" />',
                '<a href="http://project.friendika.com">~friendika <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendika" /></a>',
                '<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendica-16.png" alt="~friendica" /></a>'
        );
@@ -887,6 +891,7 @@ function prepare_body($item,$attach = false) {
        } else
                $s = prepare_text($item['body']);
 
+
        $prep_arr = array('item' => $item, 'html' => $s);
        call_hooks('prepare_body', $prep_arr);
        $s = $prep_arr['html'];
diff --git a/include/user.php b/include/user.php
new file mode 100644 (file)
index 0000000..af43a2b
--- /dev/null
@@ -0,0 +1,327 @@
+<?php
+
+require_once('include/config.php');
+require_once('include/network.php');
+require_once('include/plugin.php');
+require_once('include/text.php');
+require_once('include/pgettext.php');
+require_once('include/datetime.php');
+
+function create_user($arr) {
+
+       // Required: { username, nickname, email } or { openid_url }
+
+       $a = get_app();
+       $result = array('success' => false, 'user' => null, 'password' => '', 'message' => '');
+
+       $using_invites = get_config('system','invitation_only');
+       $num_invites   = get_config('system','number_invites');
+
+
+       $invite_id  = ((x($arr,'invite_id'))  ? notags(trim($arr['invite_id']))  : '');
+       $username   = ((x($arr,'username'))   ? notags(trim($arr['username']))   : '');
+       $nickname   = ((x($arr,'nickname'))   ? notags(trim($arr['nickname']))   : '');
+       $email      = ((x($arr,'email'))      ? notags(trim($arr['email']))      : '');
+       $openid_url = ((x($arr,'openid_url')) ? notags(trim($arr['openid_url'])) : '');
+       $photo      = ((x($arr,'photo'))      ? notags(trim($arr['photo']))      : '');
+       $password   = ((x($arr,'password'))   ? trim($arr['password'])           : '');
+       $blocked    = ((x($arr,'blocked'))    ? intval($arr['blocked'])  : 0);
+       $verified   = ((x($arr,'verified'))   ? intval($arr['verified']) : 0);
+
+       $publish    = ((x($arr,'profile_publish_reg') && intval($arr['profile_publish_reg'])) ? 1 : 0);
+       $netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
+               
+       $tmp_str = $openid_url;
+
+       if($using_invites) {
+               if(! $invite_id) {
+                       $result['message'] .= t('An invitation is required.') . EOL;
+                       return $result;
+               }
+               $r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
+               if(! results($r)) {
+                       $result['message'] .= t('Invitation could not be verified.') . EOL;
+                       return $result;
+               }
+       } 
+
+       if((! x($username)) || (! x($email)) || (! x($nickname))) {
+               if($openid_url) {
+                       if(! validate_url($tmp_str)) {
+                               $result['message'] .= t('Invalid OpenID url') . EOL;
+                               return $result;
+                       }
+                       $_SESSION['register'] = 1;
+                       $_SESSION['openid'] = $openid_url;
+                       require_once('library/openid.php');
+                       $openid = new LightOpenID;
+                       $openid->identity = $openid_url;
+                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
+                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
+                       $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
+                       goaway($openid->authUrl());
+                       // NOTREACHED   
+               }
+
+               notice( t('Please enter the required information.') . EOL );
+               return;
+       }
+
+       if(! validate_url($tmp_str))
+               $openid_url = '';
+
+
+       $err = '';
+
+       // collapse multiple spaces in name
+       $username = preg_replace('/ +/',' ',$username);
+
+       if(mb_strlen($username) > 48)
+               $result['message'] .= t('Please use a shorter name.') . EOL;
+       if(mb_strlen($username) < 3)
+               $result['message'] .= t('Name too short.') . EOL;
+
+       // I don't really like having this rule, but it cuts down
+       // on the number of auto-registrations by Russian spammers
+       
+       //  Using preg_match was completely unreliable, due to mixed UTF-8 regex support
+       //      $no_utf = get_config('system','no_utf');
+       //      $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' ); 
+
+       // So now we are just looking for a space in the full name. 
+       
+       $loose_reg = get_config('system','no_regfullname');
+       if(! $loose_reg) {
+               $username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
+               if(! strpos($username,' '))
+                       $result['message'] .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
+       }
+
+
+       if(! allowed_email($email))
+                       $result['message'] .= t('Your email domain is not among those allowed on this site.') . EOL;
+
+       if((! valid_email($email)) || (! validate_email($email)))
+               $result['message'] .= t('Not a valid email address.') . EOL;
+
+       // Disallow somebody creating an account using openid that uses the admin email address,
+       // since openid bypasses email verification. We'll allow it if there is not yet an admin account.
+
+       if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
+               $r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
+                       dbesc($email)
+               );
+               if(count($r))
+                       $result['message'] .= t('Cannot use that email.') . EOL;
+       }
+
+       $nickname = $arr['nickname'] = strtolower($nickname);
+
+       if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
+               $result['message'] .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
+       $r = q("SELECT `uid` FROM `user`
+                       WHERE `nickname` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
+
+       // Check deleted accounts that had this nickname. Doesn't matter to us,
+       // but could be a security issue for federated platforms.
+
+       $r = q("SELECT * FROM `userd`
+                       WHERE `username` = '%s' LIMIT 1",
+                       dbesc($nickname)
+       );
+       if(count($r))
+               $result['message'] .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
+
+       if(strlen($result['message'])) {
+               return $result;
+       }
+
+       $new_password = ((strlen($password)) ? $password : autoname(6) . mt_rand(100,9999));
+       $new_password_encoded = hash('whirlpool',$new_password);
+
+       $result['password'] = $new_password;
+
+       require_once('include/crypto.php');
+
+       $keys = new_keypair(1024);
+
+       if($keys === false) {
+               $result['message'] .= t('SERIOUS ERROR: Generation of security keys failed.') . EOL;
+               return $result;
+       }
+
+       $prvkey = $keys['prvkey'];
+       $pubkey = $keys['pubkey'];
+
+       /**
+        *
+        * Create another keypair for signing/verifying
+        * salmon protocol messages. We have to use a slightly
+        * less robust key because this won't be using openssl
+        * but the phpseclib. Since it is PHP interpreted code
+        * it is not nearly as efficient, and the larger keys
+        * will take several minutes each to process.
+        *
+        */
+       
+       $sres    = new_keypair(512);
+       $sprvkey = $sres['prvkey'];
+       $spubkey = $sres['pubkey'];
+
+       $r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
+               `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
+               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
+               dbesc(generate_user_guid()),
+               dbesc($username),
+               dbesc($new_password_encoded),
+               dbesc($email),
+               dbesc($openid_url),
+               dbesc($nickname),
+               dbesc($pubkey),
+               dbesc($prvkey),
+               dbesc($spubkey),
+               dbesc($sprvkey),
+               dbesc(datetime_convert()),
+               intval($verified),
+               intval($blocked)
+       );
+
+       if($r) {
+               $r = q("SELECT * FROM `user` 
+                       WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
+                       dbesc($username),
+                       dbesc($new_password_encoded)
+               );
+               if($r !== false && count($r)) {
+                       $u = $r[0];
+                       $newuid = intval($r[0]['uid']);
+               }
+       }
+       else {
+               $result['message'] .=  t('An error occurred during registration. Please try again.') . EOL ;
+               return $result;
+       }               
+
+       /**
+        * if somebody clicked submit twice very quickly, they could end up with two accounts 
+        * due to race condition. Remove this one.
+        */
+
+       $r = q("SELECT `uid` FROM `user`
+                       WHERE `nickname` = '%s' ",
+                       dbesc($nickname)
+       );
+       if((count($r) > 1) && $newuid) {
+               $result['message'] .= t('Nickname is already registered. Please choose another.') . EOL;
+               q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
+                       intval($newuid)
+               );
+               return $result;
+       }
+
+       if(x($newuid) !== false) {
+               $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
+                       VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
+                       intval($newuid),
+                       t('default'),
+                       1,
+                       dbesc($username),
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+                       intval($publish),
+                       intval($netpublish)
+
+               );
+               if($r === false) {
+                       $result['message'] .=  t('An error occurred creating your default profile. Please try again.') . EOL;
+                       // Start fresh next time.
+                       $r = q("DELETE FROM `user` WHERE `uid` = %d",
+                               intval($newuid));
+                       return $result;
+               }
+               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
+                       `request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
+                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
+                       intval($newuid),
+                       datetime_convert(),
+                       dbesc($username),
+                       dbesc($nickname),
+                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
+                       dbesc($a->get_baseurl() . "/profile/$nickname"),
+                       dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
+                       dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
+                       dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
+                       dbesc($a->get_baseurl() . "/poco/$nickname"),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert()),
+                       dbesc(datetime_convert())
+               );
+
+               // Create a group with no members. This allows somebody to use it 
+               // right away as a default group for new contacts. 
+
+               require_once('include/group.php');
+               group_add($newuid, t('Friends'));
+
+       }
+
+       // if we have no OpenID photo try to look up an avatar
+       if(! strlen($photo))
+               $photo = avatar_img($email);
+
+       // unless there is no avatar-plugin loaded
+       if(strlen($photo)) {
+               require_once('include/Photo.php');
+               $photo_failure = false;
+
+               $filename = basename($photo);
+               $img_str = fetch_url($photo,true);
+               $img = new Photo($img_str);
+               if($img->is_valid()) {
+
+                       $img->scaleImageSquare(175);
+
+                       $hash = photo_new_resource();
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(80);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       $img->scaleImage(48);
+
+                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
+
+                       if($r === false)
+                               $photo_failure = true;
+
+                       if(! $photo_failure) {
+                               q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
+                                       dbesc($hash)
+                               );
+                       }
+               }
+       }
+
+       call_hooks('register_account', $newuid);
+
+       $result['success'] = true;
+       $result['user'] = $u;
+       return $result;
+
+}
\ No newline at end of file
index 8d218bde68e6eee9cd7af56a908963cb9cc4bd55..c3add477f013c2df9a40a758c82873b5e6d918ae 100644 (file)
@@ -275,7 +275,7 @@ aStates[249]="|'Adan|'Ataq|Abyan|Al Bayda'|Al Hudaydah|Al Jawf|Al Mahrah|Al Mahw
 aStates[250]="|Kosovo|Montenegro|Serbia|Vojvodina";\r
 aStates[251]="|Central|Copperbelt|Eastern|Luapula|Lusaka|North-Western|Northern|Southern|Western";\r
 aStates[252]="|Bulawayo|Harare|ManicalandMashonaland Central|Mashonaland East|Mashonaland West|Masvingo|Matabeleland North|Matabeleland South|Midlands";\r
-aStates[253]="Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Oradons Friendica|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";\r
+aStates[253]="|Self Hosted|Private Server|Architects Of Sleep|DFRN|Distributed Friend Network|Free-Beer.ch|Foojbook|Free-Haven|Friendica.eu|Friendika.me.4.it|Friendika - I Ask Questions|Frndc.com|Hipatia|Hungerfreunde|Kaluguran Community|Kak Ste?|Karl.Markx.pm|Loozah Social Club|MyFriendica.net|MyFriendNetwork|Oi!|OpenMindSpace|Recolutionari.es|Sysfu Social Club|theshi.re|Tumpambae|Uzmiac|Other";\r
 /* \r
  * gArCountryInfo\r
  * (0) Country name\r
diff --git a/mod/acctlink.php b/mod/acctlink.php
new file mode 100644 (file)
index 0000000..a236580
--- /dev/null
@@ -0,0 +1,16 @@
+<?php
+
+require_once('include/Scrape.php');
+
+function acctlink_init(&$a) {
+
+       if(x($_GET,'addr')) {
+               $addr = trim($_GET['addr']);
+               $res = probe_url($addr);
+               //logger('acctlink: ' . print_r($res,true));
+               if($res['url']) {
+                       goaway($res['url']);
+                       killme();
+               }
+       }
+}
index 168b1f59f0a636978b32e4c45a532f895ef244f0..1e8898ab6f103f4fc2516a50bf2b91a3c83f106c 100644 (file)
@@ -135,7 +135,7 @@ function acl_init(&$a){
                        foreach($r as $g) {
                                $x['photos'][] = $g['micro'];
                                $x['links'][] = $g['url'];
-                               $x['suggestions'][] = $g['name']; // sprintf( t('%s [%s]'),$g['name'],$g['url']);
+                               $x['suggestions'][] = $g['name'];
                                $x['data'][] = intval($g['id']);
                        }
                }
index d19118b78c7cb4aca9f3224cb1bf7a603f942fed..6b1a53a300f0fefdb1355e807a5d97726d9cdc6e 100644 (file)
@@ -98,7 +98,7 @@ function admin_content(&$a) {
                'plugins'=>     Array($a->get_baseurl(true)."/admin/plugins/", t("Plugins") , "plugins"),
                'themes' =>     Array($a->get_baseurl(true)."/admin/themes/", t("Themes") , "themes"),
                'dbsync' => Array($a->get_baseurl(true)."/admin/dbsync/", t('DB updates'), "dbsync"),
-               'update' =>     Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
+               //'update' =>   Array($a->get_baseurl(true)."/admin/update/", t("Software Update") , "update")
        );
        
        /* get plugins admin page */
index bfe5a30893f6d1fda936ea9dd045d19155f5fc63..fb28f78059cc1e7d2af2eef8502e0722efa6fdfe 100644 (file)
@@ -63,7 +63,7 @@ function community_content(&$a, $update = 0) {
        }
 
        $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, 
-               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
                `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                `user`.`nickname`, `user`.`hidewall`
index 564ae5ca2346a952e4ccf750c30bdd8b43d7012d..76b99cbca7a121ba600553992bf8ee310d4af24b 100644 (file)
@@ -202,6 +202,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
 
                        if($user[0]['page-flags'] == PAGE_COMMUNITY)
                                $params['page'] = 1;
+                       if($user[0]['page-flags'] == PAGE_PRVGROUP)
+                               $params['page'] = 2;
 
                        logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
 
@@ -537,6 +539,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                $page       = ((x($_POST,'page'))         ? intval($_POST['page'])         : 0 );
                $version_id = ((x($_POST,'dfrn_version')) ? (float) $_POST['dfrn_version'] : 2.0);
        
+               $forum = (($page == 1) ? 1 : 0);
+               $prv   = (($page == 2) ? 1 : 0);
+
                logger('dfrn_confirm: requestee contacted: ' . $node);
 
                logger('dfrn_confirm: request: POST=' . print_r($_POST,true), LOGGER_DATA);
@@ -691,6 +696,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        `pending` = 0,
                        `duplex` = %d, 
                        `forum` = %d,
+                       `prv` = %d,
                        `network` = '%s' WHERE `id` = %d LIMIT 1
                ",
                        dbesc($photos[0]),
@@ -701,7 +707,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        dbesc(datetime_convert()),
                        dbesc(datetime_convert()),
                        intval($duplex),
-                       intval($page),
+                       intval($forum),
+                       intval($prv),
                        dbesc(NETWORK_DFRN),
                        intval($dfrn_record)
                );
index 65d39d5fe12f8d844d7ce15f545e67dd6676fe03..e55da557223c8e9708881e331b16664f89092ea8 100644 (file)
@@ -17,6 +17,9 @@ function dfrn_notify_post(&$a) {
        $ssl_policy   = ((x($_POST,'ssl_policy'))   ? notags(trim($_POST['ssl_policy'])): 'none');
        $page         = ((x($_POST,'page'))         ? intval($_POST['page'])            :  0);
 
+       $forum = (($page == 1) ? 1 : 0);
+       $prv   = (($page == 2) ? 1 : 0);
+
        $writable = (-1);
        if($dfrn_version >= 2.21) {
                $writable = (($perm === 'rw') ? 1 : 0);
@@ -88,10 +91,11 @@ function dfrn_notify_post(&$a) {
 
        $importer = $r[0];
 
-       if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $page)) {
-               q("UPDATE `contact` SET `writable` = %d, forum = %d WHERE `id` = %d LIMIT 1",
+       if((($writable != (-1)) && ($writable != $importer['writable'])) || ($importer['forum'] != $forum) || ($importer['prv'] != $prv)) {
+               q("UPDATE `contact` SET `writable` = %d, forum = %d, prv = %d WHERE `id` = %d LIMIT 1",
                        intval(($writable == (-1)) ? $importer['writable'] : $writable),
-                       intval($page),
+                       intval($forum),
+                       intval($prv),
                        intval($importer['id'])
                );
                if($writable != (-1))
index b809929d7e14b4b506348b3200b437534b35e63f..896fe179271d465c0dbe13939b8f08784402840c 100644 (file)
@@ -68,7 +68,7 @@ function dfrn_request_post(&$a) {
                        $dfrn_url    = notags(trim($_POST['dfrn_url']));
                        $aes_allow   = (((x($_POST,'aes_allow')) && ($_POST['aes_allow'] == 1)) ? 1 : 0);
                        $confirm_key = ((x($_POST,'confirm_key')) ? $_POST['confirm_key'] : "");
-
+                       $hidden = ((x($_POST,'hidden-contact')) ? intval($_POST['hidden-contact']) : 0);
                        $contact_record = null;
        
                        if(x($dfrn_url)) {
@@ -98,8 +98,9 @@ function dfrn_request_post(&$a) {
                                }
        
                                if(is_array($contact_record)) {
-                                       $r = q("UPDATE `contact` SET `ret-aes` = %d WHERE `id` = %d LIMIT 1",
+                                       $r = q("UPDATE `contact` SET `ret-aes` = %d, hidden = %d WHERE `id` = %d LIMIT 1",
                                                intval($aes_allow),
+                                               intval($hidden),
                                                intval($contact_record['id'])
                                        );
                                }
@@ -144,8 +145,8 @@ function dfrn_request_post(&$a) {
                                         */
 
                                        $r = q("INSERT INTO `contact` ( `uid`, `created`,`url`, `nurl`, `name`, `nick`, `photo`, `site-pubkey`,
-                                               `request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`) 
-                                               VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d)",
+                                               `request`, `confirm`, `notify`, `poll`, `poco`, `network`, `aes_allow`, `hidden`
+                                               VALUES ( %d, '%s', '%s', '%s', '%s' , '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d)",
                                                intval(local_user()),
                                                datetime_convert(),
                                                dbesc($dfrn_url),
@@ -160,7 +161,8 @@ function dfrn_request_post(&$a) {
                                                $parms['dfrn-poll'],
                                                $parms['dfrn-poco'],
                                                dbesc(NETWORK_DFRN),
-                                               intval($aes_allow)
+                                               intval($aes_allow),
+                                               intval($hidden)
                                        );
                                }
 
@@ -649,6 +651,8 @@ function dfrn_request_content(&$a) {
                $o  = replace_macros($tpl,array(
                        '$dfrn_url' => $dfrn_url,
                        '$aes_allow' => (($aes_allow) ? '<input type="hidden" name="aes_allow" value="1" />' : "" ),
+                       '$hidethem' => t('Hide this contact'),
+                       '$hidechecked' => '',
                        '$confirm_key' => $confirm_key,
                        '$welcome' => sprintf( t('Welcome home %s.'), $a->user['username']),
                        '$please' => sprintf( t('Please confirm your introduction/connection request to %s.'), $dfrn_url),
@@ -680,7 +684,7 @@ function dfrn_request_content(&$a) {
                        $auto_confirm = false;
 
                        if(count($r)) {
-                               if($r[0]['page-flags'] != PAGE_NORMAL)
+                               if(($r[0]['page-flags'] != PAGE_NORMAL) && ($r[0]['page-flags'] != PAGE_PRVGROUP))
                                        $auto_confirm = true;                           
 
                                if(! $auto_confirm) {
index cdecd5f2a2db3557f73e59697a4ddeedfcccd69a..5e48174c937c04c21745eee403162e43724b09e7 100644 (file)
@@ -1,6 +1,7 @@
 <?php
 
 require_once('Scrape.php');
+require_once('include/follow.php');
 
 function follow_init(&$a) {
 
@@ -11,230 +12,19 @@ function follow_init(&$a) {
        }
 
        $uid = local_user();
-       $url = $orig_url = notags(trim($_REQUEST['url']));
+       $url = notags(trim($_REQUEST['url']));
        $return_url = $_SESSION['return_url'];
 
 
-       // remove ajax junk, e.g. Twitter
+       $result = new_contact($uid,$url,true);
 
-       $url = str_replace('/#!/','/',$url);
-
-       if(! allowed_url($url)) {
-               notice( t('Disallowed profile URL.') . EOL);
-               goaway($return_url);
-               // NOTREACHED
-       }
-
-
-       if(! $url) {
-               notice( t('Connect URL missing.') . EOL);
-               goaway($return_url);
-               // NOTREACHED
-       }
-
-       $arr = array('url' => $url, 'contact' => array());
-
-       call_hooks('follow', $arr);
-
-       if(x($arr['contact'],'name')) 
-               $ret = $arr['contact'];
-       else
-               $ret = probe_url($url);
-
-       if($ret['network'] === NETWORK_DFRN) {
-               if(strlen($a->path))
-                       $myaddr = bin2hex($a->get_baseurl() . '/profile/' . $a->user['nickname']);
-               else
-                       $myaddr = bin2hex($a->user['nickname'] . '@' . $a->get_hostname());
-               goaway($ret['request'] . "&addr=$myaddr");
-               
-               // NOTREACHED
-       }
-       else {
-               if(get_config('system','dfrn_only')) {
-                       notice( t('This site is not configured to allow communications with other networks.') . EOL);
-                       notice( t('No compatible communication protocols or feeds were discovered.') . EOL);
-                       goaway($return_url);
-               }
-       }
-       
-       // This extra param just confuses things, remove it
-       if($ret['network'] === NETWORK_DIASPORA)
-               $ret['url'] = str_replace('?absolute=true','',$ret['url']);
-
-
-       // do we have enough information?
-       
-       if(! ((x($ret,'name')) && (x($ret,'poll')) && ((x($ret,'url')) || (x($ret,'addr'))))) {
-               notice( t('The profile address specified does not provide adequate information.') . EOL);
-               if(! x($ret,'poll'))
-                       notice( t('No compatible communication protocols or feeds were discovered.') . EOL);
-               if(! x($ret,'name'))
-                       notice( t('An author or name was not found.') . EOL);
-               if(! x($ret,'url'))
-                       notice( t('No browser URL could be matched to this address.') . EOL);
-               if(strpos($url,'@') !== false) {
-                       notice( t('Unable to match @-style Identity Address with a known protocol or email contact.') . EOL);
-                       notice( t('Use mailto: in front of address to force email check.') . EOL);
-               }
-               goaway($return_url);
-       }
-
-       if($ret['network'] === NETWORK_OSTATUS && get_config('system','ostatus_disabled')) {
-               notice( t('The profile address specified belongs to a network which has been disabled on this site.') . EOL);
-               $ret['notify'] = '';
-       }
-
-       if(! $ret['notify']) {
-               notice( t('Limited profile. This person will be unable to receive direct/personal notifications from you.') . EOL);
-       }
-
-       $writeable = ((($ret['network'] === NETWORK_OSTATUS) && ($ret['notify'])) ? 1 : 0);
-       $hidden = (($ret['network'] === NETWORK_MAIL) ? 1 : 0);
-
-       if($ret['network'] === NETWORK_MAIL) {
-               $writeable = 1;
-               
-       }
-       if($ret['network'] === NETWORK_DIASPORA)
-               $writeable = 1;
-
-       // check if we already have a contact
-       // the poll url is more reliable than the profile url, as we may have
-       // indirect links or webfinger links
-
-       $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `poll` = '%s' LIMIT 1",
-               intval($uid),
-               dbesc($ret['poll'])
-       );                      
-
-
-       if(count($r)) {
-               // update contact
-               if($r[0]['rel'] == CONTACT_IS_FOLLOWER || ($network === NETWORK_DIASPORA && $r[0]['rel'] == CONTACT_IS_SHARING)) {
-                       q("UPDATE `contact` SET `rel` = %d , `readonly` = 0 WHERE `id` = %d AND `uid` = %d LIMIT 1",
-                               intval(CONTACT_IS_FRIEND),
-                               intval($r[0]['id']),
-                               intval($uid)
-                       );
-               }
-       }
-       else {
-
-               $new_relation = (($ret['network'] === NETWORK_MAIL) ? CONTACT_IS_FRIEND : CONTACT_IS_SHARING);
-               if($ret['network'] === NETWORK_DIASPORA)
-                       $new_relation = CONTACT_IS_FOLLOWER;
-
-               // create contact record 
-               $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `nurl`, `addr`, `alias`, `batch`, `notify`, `poll`, `poco`, `name`, `nick`, `photo`, `network`, `pubkey`, `rel`, `priority`,
-                       `writable`, `hidden`, `blocked`, `readonly`, `pending` )
-                       VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, %d, 0, 0, 0 ) ",
-                       intval($uid),
-                       dbesc(datetime_convert()),
-                       dbesc($ret['url']),
-                       dbesc(normalise_link($ret['url'])),
-                       dbesc($ret['addr']),
-                       dbesc($ret['alias']),
-                       dbesc($ret['batch']),
-                       dbesc($ret['notify']),
-                       dbesc($ret['poll']),
-                       dbesc($ret['poco']),
-                       dbesc($ret['name']),
-                       dbesc($ret['nick']),
-                       dbesc($ret['photo']),
-                       dbesc($ret['network']),
-                       dbesc($ret['pubkey']),
-                       intval($new_relation),
-                       intval($ret['priority']),
-                       intval($writeable),
-                       intval($hidden)
-               );
-       }
-
-       $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
-               dbesc($ret['url']),
-               intval($uid)
-       );
-
-       if(! count($r)) {
-               notice( t('Unable to retrieve contact information.') . EOL);
+       if($result['success'] == false) {
+               if($result['message'])
+                       notice($result['message']);
                goaway($return_url);
-               // NOTREACHED
-       }
-
-       $contact = $r[0];
-       $contact_id  = $r[0]['id'];
-
-
-       $g = q("select def_gid from user where uid = %d limit 1",
-               intval($uid)
-       );
-       if($g && intval($g[0]['def_gid'])) {
-               require_once('include/group.php');
-               group_add_member($uid,'',$contact_id,$g[0]['def_gid']);
        }
 
-       require_once("Photo.php");
-
-       $photos = import_profile_photo($ret['photo'],$uid,$contact_id);
-
-       $r = q("UPDATE `contact` SET `photo` = '%s', 
-                       `thumb` = '%s',
-                       `micro` = '%s', 
-                       `name-date` = '%s', 
-                       `uri-date` = '%s', 
-                       `avatar-date` = '%s'
-                       WHERE `id` = %d LIMIT 1
-               ",
-                       dbesc($photos[0]),
-                       dbesc($photos[1]),
-                       dbesc($photos[2]),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
-                       intval($contact_id)
-               );                      
-
-
-       // pull feed and consume it, which should subscribe to the hub.
-
-       proc_run('php',"include/poller.php","$contact_id");
-
-       // create a follow slap
-
-       $tpl = get_markup_template('follow_slap.tpl');
-       $slap = replace_macros($tpl, array(
-               '$name' => $a->user['username'],
-               '$profile_page' => $a->get_baseurl() . '/profile/' . $a->user['nickname'],
-               '$photo' => $a->contact['photo'],
-               '$thumb' => $a->contact['thumb'],
-               '$published' => datetime_convert('UTC','UTC', 'now', ATOM_TIME),
-               '$item_id' => 'urn:X-dfrn:' . $a->get_hostname() . ':follow:' . random_string(),
-               '$title' => '',
-               '$type' => 'text',
-               '$content' => t('following'),
-               '$nick' => $a->user['nickname'],
-               '$verb' => ACTIVITY_FOLLOW,
-               '$ostat_follow' => ''
-       ));
-
-       $r = q("SELECT `contact`.*, `user`.* FROM `contact` LEFT JOIN `user` ON `contact`.`uid` = `user`.`uid` 
-                       WHERE `user`.`uid` = %d AND `contact`.`self` = 1 LIMIT 1",
-                       intval($uid)
-       );
-
-       if(count($r)) {
-               if(($contact['network'] == NETWORK_OSTATUS) && (strlen($contact['notify']))) {
-                       require_once('include/salmon.php');
-                       slapper($r[0],$contact['notify'],$slap);
-               }
-               if($contact['network'] == NETWORK_DIASPORA) {
-                       require_once('include/diaspora.php');
-                       $ret = diaspora_share($a->user,$contact);
-                       logger('mod_follow: diaspora_share returns: ' . $ret);
-               }
-       }
+       info( t('Contact added') . EOL);
 
        if(strstr($return_url,'contacts'))
                goaway($a->get_baseurl() . '/contacts/' . $contact_id);
old mode 100644 (file)
new mode 100755 (executable)
index 6d6232a..cb21a71
@@ -184,15 +184,16 @@ function install_content(&$a) {
 
                        check_php($phpath, $checks);
 
-                       check_htaccess($checks);
-                       
+            check_htaccess($checks);
+            
                        function check_passed($v, $c){
                                if ($c['required'])
                                        $v = $v && $c['status'];
                                return $v;
                        }
                        $checkspassed = array_reduce($checks, "check_passed", true);
-                       
+               
+
 
                        $tpl = get_markup_template('install_checks.tpl');
                        $o .= replace_macros($tpl, array(
@@ -381,6 +382,7 @@ function check_funcs(&$checks) {
                        check_add($ck_funcs, t('Apache mod_rewrite module'), true, true, "");
                }
        }
+
        if(! function_exists('curl_init')){
                $ck_funcs[0]['status']= false;
                $ck_funcs[0]['help']= t('Error: libCURL PHP module required but not installed.');
@@ -421,21 +423,26 @@ function check_htconfig(&$checks) {
                $help .= t('At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder.').EOL;
                $help .= t('You can alternatively skip this procedure and perform a manual installation. Please see the file "INSTALL.txt" for instructions.').EOL; 
        }
-
+    
        check_add($checks, t('.htconfig.php is writable'), $status, false, $help);
-       
+
 }
 
 function check_htaccess(&$checks) {
        $a = get_app();
        $status = true;
        $help = "";
-       $test = fetch_url($a->get_baseurl()."/install/testrewrite");
-       if ($test!="ok") {
-               $status = false;
-               $help = t('Url rewrite in .htconfig is not working. Check your server configuration.');
-       }
-       check_add($checks, t('Url rewrite is working'), $status, true, $help);
+       if (function_exists('curl_init')){
+        $test = fetch_url($a->get_baseurl()."/install/testrewrite");
+        if ($test!="ok") {
+            $status = false;
+            $help = t('Url rewrite in .htaccess is not working. Check your server configuration.');
+        }
+        check_add($checks, t('Url rewrite is working'), $status, true, $help); 
+    } else {
+        // cannot check modrewrite if libcurl is not installed
+    }
+       
 }
 
        
index df242d6f7c5390f6cb2c64b7dfc75e9dc2e27378..c1c0b14ec6cd507acb1f51f43857e0755f949c8c 100644 (file)
@@ -262,17 +262,17 @@ function item_post(&$a) {
                }
        }
 
-        if(strlen($categories)) {
-               // get the "fileas" tags for this post
-                $filedas = file_tag_file_to_list($categories, 'file');
+       if(strlen($categories)) {
+               // get the "fileas" tags for this post
+               $filedas = file_tag_file_to_list($categories, 'file');
        }
-        // save old and new categories, so we can determine what needs to be deleted from pconfig
-        $categories_old = $categories;
-        $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category');
-        $categories_new = $categories;
-        if(strlen($filedas)) {
-               // append the fileas stuff to the new categories list
-               $categories .= file_tag_list_to_file($filedas, 'file');
+       // save old and new categories, so we can determine what needs to be deleted from pconfig
+       $categories_old = $categories;
+       $categories = file_tag_list_to_file(trim($_REQUEST['category']), 'category');
+       $categories_new = $categories;
+       if(strlen($filedas)) {
+               // append the fileas stuff to the new categories list
+               $categories .= file_tag_list_to_file($filedas, 'file');
        }
 
        // Work around doubled linefeeds in Tinymce 3.5b2
@@ -453,6 +453,7 @@ function item_post(&$a) {
 
        $tagged = array();
 
+       $private_forum = false;
 
        if(count($tags)) {
                foreach($tags as $tag) {
@@ -471,11 +472,22 @@ function item_post(&$a) {
                                continue;
 
                        $success = handle_tag($a, $body, $inform, $str_tags, (local_user()) ? local_user() : $profile_uid , $tag); 
-                       if($success)
+                       if($success['replaced'])
                                $tagged[] = $tag;
+                       if(is_array($success['contact']) && intval($success['contact']['prv'])) {
+                               $private_forum = true;
+                               $private_id = $success['contact']['id'];
+                       }
                }
        }
 
+       if(($private_forum) && (! $parent) && (! $private)) {
+               // we tagged a private forum in a top level post and the message was public.
+               // Restrict it.
+               $private = 1;
+               $str_contact_allow = '<' . $private_id . '>'; 
+       }
+
        $attachments = '';
        $match = false;
 
@@ -725,16 +737,16 @@ function item_post(&$a) {
                                if($datarray['verb'] === ACTIVITY_LIKE) 
                                        $signed_text = $datarray['guid'] . ';' . 'Post' . ';' . $parent_item['guid'] . ';' . 'true' . ';' . $myaddr;
                                else
-                               $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr;
+                                       $signed_text = $datarray['guid'] . ';' . $parent_item['guid'] . ';' . $signed_body . ';' . $myaddr;
 
                                $authorsig = base64_encode(rsa_sign($signed_text,$a->user['prvkey'],'sha256'));
 
                                q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
                                        intval($post_id),
-                       dbesc($signed_text),
-                       dbesc(base64_encode($authorsig)),
-                       dbesc($myaddr)
-                       );
+                                       dbesc($signed_text),
+                                       dbesc(base64_encode($authorsig)),
+                                       dbesc($myaddr)
+                               );
                        }
                }
                else {
@@ -893,6 +905,7 @@ function item_content(&$a) {
 function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
 
        $replaced = false;
+       $r = null;
 
        //is it a hash tag? 
        if(strpos($tag,'#') === 0) {
@@ -1023,5 +1036,5 @@ function handle_tag($a, &$body, &$inform, &$str_tags, $profile_uid, $tag) {
                }
        }
 
-       return $replaced;       
+       return array('replaced' => $replaced, 'contact' => $r[0]);      
 }
old mode 100644 (file)
new mode 100755 (executable)
index 6b97faf..942a04f
@@ -104,7 +104,8 @@ function like_content(&$a) {
                return;
        }
 
-       $r = q("SELECT `id` FROM `item` WHERE `verb` = '%s' AND `deleted` = 0 
+
+       $r = q("SELECT * FROM `item` WHERE `verb` = '%s' AND `deleted` = 0 
                AND `contact-id` = %d AND ( `parent` = '%s' OR `parent-uri` = '%s') LIMIT 1",
                dbesc($activity),
                intval($contact['id']),
@@ -112,13 +113,70 @@ function like_content(&$a) {
                dbesc($item_id)
        );
        if(count($r)) {
+               $like_item = $r[0];
+
                // Already voted, undo it
                $r = q("UPDATE `item` SET `deleted` = 1, `changed` = '%s' WHERE `id` = %d LIMIT 1",
                        dbesc(datetime_convert()),
-                       intval($r[0]['id'])
+                       intval($like_item['id'])
                );
 
-               proc_run('php',"include/notifier.php","like","$post_id");
+               // Clean up the `sign` table
+               $r = q("DELETE FROM `sign` WHERE `iid` = %d",
+                       intval($like_item['id'])
+               );
+
+               // Save the author information for the unlike in case we need to relay to Diaspora
+               // Note that we can only create a signature for a user of the local server. We don't have
+               // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it 
+               // means we are the relay, and for relayable_retractions, Diaspora
+               // only checks the parent_author_signature if it doesn't have to relay further
+               //
+               // If $item['resource-id'] exists, it means the item is a photo. Diaspora doesn't support
+               // likes on photos, so don't bother.
+
+               if(($activity === ACTIVITY_LIKE) && (! $item['resource-id'])) {
+                       $signed_text = $like_item['guid'] . ';' . 'Like';
+
+                       if( $contact['network'] === NETWORK_DIASPORA)
+                               $diaspora_handle = $contact['addr'];
+                       else { // Only works for NETWORK_DFRN
+                               $contact_baseurl_start = strpos($contact['url'],'://') + 3;
+                               $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start;
+                               $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
+                               $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
+
+                               // Get contact's private key if he's a user of the local Friendica server
+                               $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
+                                       dbesc($contact['url'])
+                               );
+
+                               if( $r) {
+                                       $contact_uid = $r['uid'];
+                                       $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
+                                               intval($contact_uid)
+                                       );
+
+                                       if( $r)
+                                               $authorsig = base64_encode(rsa_sign($signed_text,$r['prvkey'],'sha256'));
+                               }
+                       }
+
+                       if(! isset($authorsig))
+                               $authorsig = '';
+
+                       q("insert into sign (`retract_iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+                               intval($like_item['id']),
+                               dbesc($signed_text),
+                               dbesc($authorsig),
+                               dbesc($diaspora_handle)
+                       );
+               }
+
+
+//             proc_run('php',"include/notifier.php","like","$post_id"); // $post_id isn't defined here!
+               $like_item_id = $like_item['id'];
+               proc_run('php',"include/notifier.php","like","$like_item_id");
                return;
        }
 
@@ -191,6 +249,65 @@ EOT;
                );
        }                       
 
+
+       // Save the author information for the like in case we need to relay to Diaspora
+       // Note that we can only create a signature for a user of the local server. We don't have
+       // a key for remote users. That is ok, because if a remote user is "unlike"ing a post, it 
+       // means we are the relay, and for relayable_retractions, Diaspora
+       // only checks the parent_author_signature if it doesn't have to relay further
+
+       if(($activity === ACTIVITY_LIKE) && ($post_type === t('status'))) {
+               if( $contact['network'] === NETWORK_DIASPORA)
+                       $diaspora_handle = $contact['addr'];
+               else { // Only works for NETWORK_DFRN
+                       $contact_baseurl_start = strpos($contact['url'],'://') + 3;
+                       $contact_baseurl_length = strpos($contact['url'],'/profile') - $contact_baseurl_start;
+                       $contact_baseurl = substr($contact['url'], $contact_baseurl_start, $contact_baseurl_length);
+                       $diaspora_handle = $contact['nick'] . '@' . $contact_baseurl;
+
+                       // Get contact's private key if he's a user of the local Friendica server
+                       $r = q("SELECT `contact`.`uid` FROM `contact` WHERE `url` = '%s' AND `self` = 1 LIMIT 1",
+                               dbesc($contact['url'])
+                       );
+
+                       if( $r) {
+                               $contact_uid = $r['uid'];
+                               $r = q("SELECT prvkey FROM user WHERE uid = %d LIMIT 1",
+                                       intval($contact_uid)
+                               );
+
+                               if( $r)
+                                       $contact_uprvkey = $r['prvkey'];
+                       }
+               }
+
+               $r = q("SELECT guid, parent FROM `item` WHERE id = %d LIMIT 1",
+                       intval($post_id)
+               );
+               if( $r) {
+                       $p = q("SELECT guid FROM `item` WHERE id = %d AND parent = %d LIMIT 1",
+                               intval($r[0]['parent']),
+                               intval($r[0]['parent'])
+                       );
+                       if( $p) {
+                               $signed_text = $r[0]['guid'] . ';Post;' . $p[0]['guid'] . ';true;' . $diaspora_handle;
+
+                               if(isset($contact_uprvkey))
+                                       $authorsig = base64_encode(rsa_sign($signed_text,$contact_uprvkey,'sha256'));
+                               else
+                                       $authorsig = '';
+
+                               q("insert into sign (`iid`,`signed_text`,`signature`,`signer`) values (%d,'%s','%s','%s') ",
+                                       intval($post_id),
+                                       dbesc($signed_text),
+                                       dbesc($authorsig),
+                                       dbesc($diaspora_handle)
+                               );
+                       }
+               }
+       }
+
+
        $arr['id'] = $post_id;
 
        call_hooks('post_local_end', $arr);
@@ -199,4 +316,4 @@ EOT;
 
        killme();
 //     return; // NOTREACHED
-}
\ No newline at end of file
+}
index 71f83b47a2277ab957c9c964d6e102f482947321..fb22419857e2f7d748ac3f06eccb122642eafa21 100644 (file)
@@ -211,7 +211,8 @@ function message_content(&$a) {
                        '$parent' => '',
                        '$upload' => t('Upload photo'),
                        '$insert' => t('Insert web link'),
-                       '$wait' => t('Please wait')
+                       '$wait' => t('Please wait'),
+                       '$submit' => t('Submit')
                ));
 
                return $o;
index a94272a4290fac21307bb6a720ae402db89d3d4e..b998a310735df134ddb047610e84a942d16fadad 100644 (file)
@@ -437,8 +437,8 @@ function network_content(&$a, $update = 0) {
                else
                        $sql_extra .= sprintf(" AND `item`.`parent` IN (SELECT distinct(`parent`) from item where ( `author-link` like '%s' or `tag` like '%s' or tag like '%s' )) ",
                                dbesc(protect_sprintf('%' . $myurl)),
-                               dbesc(protect_sprintf('%' . $myurl . '\\]%')),
-                               dbesc(protect_sprintf('%' . $diasp_url . '\\]%'))
+                               dbesc(protect_sprintf('%' . $myurl . ']%')),
+                               dbesc(protect_sprintf('%' . $diasp_url . ']%'))
                        );
 
        }
@@ -534,7 +534,7 @@ function network_content(&$a, $update = 0) {
                        $parents_str = implode(', ', $parents_arr);
 
                        $items = q("SELECT `item`.*, `item`.`id` AS `item_id`,
-                               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`, `contact`.`writable`,
+                               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`, `contact`.`writable`,
                                `contact`.`network`, `contact`.`thumb`, `contact`.`dfrn-id`, `contact`.`self`,
                                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
                                FROM `item`, `contact`
index 703c898e6e36dce0f3b82276f755a7177ab4050a..625bbd2eefa97354d84af10f2561bb13e36c4d4e 100644 (file)
@@ -117,7 +117,7 @@ function notes_content(&$a,$update = false) {
                $parents_str = implode(', ', $parents_arr);
  
                $r = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
-                       `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`, 
+                       `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`, 
                        `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
                        FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
index 69f044e89f4561f02bf4cfe357cd129cf22eec70..7658a9647d78b84fcfebd2e9a8b54339308a9ec3 100644 (file)
@@ -242,7 +242,7 @@ function profile_content(&$a, $update = 0) {
                $parents_str = implode(', ', $parents_arr);
  
                $items = q("SELECT `item`.*, `item`.`id` AS `item_id`, 
-                       `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`network`, `contact`.`rel`, 
+                       `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`network`, `contact`.`rel`, 
                        `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                        `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`
                        FROM `item`, `contact`
index ca3890eb9466e39aa7be7354e450fd0e38662b76..6a8ce9e1eda2d93441d91de22ab4334c50b08e8a 100644 (file)
@@ -62,9 +62,15 @@ function profiles_post(&$a) {
                $pub_keywords = notags(trim($_POST['pub_keywords']));
                $prv_keywords = notags(trim($_POST['prv_keywords']));
                $marital = notags(trim($_POST['marital']));
+               $howlong = notags(trim($_POST['howlong']));
 
                $with = ((x($_POST,'with')) ? notags(trim($_POST['with'])) : '');
 
+               if(! strlen($howlong))
+                       $howlong = '0000-00-00 00:00:00';
+               else
+                       $howlong = datetime_convert(date_default_timezone_get(),'UTC',$howlong);
                // linkify the relationship target if applicable
 
                $withchanged = false;
@@ -120,6 +126,7 @@ function profiles_post(&$a) {
 
                $sexual = notags(trim($_POST['sexual']));
                $homepage = notags(trim($_POST['homepage']));
+               $hometown = notags(trim($_POST['hometown']));
                $politic = notags(trim($_POST['politic']));
                $religion = notags(trim($_POST['religion']));
 
@@ -207,8 +214,10 @@ function profiles_post(&$a) {
                        `country-name` = '%s',
                        `marital` = '%s',
                        `with` = '%s',
+                       `howlong` = '%s',
                        `sexual` = '%s',
                        `homepage` = '%s',
+                       `hometown` = '%s',
                        `politic` = '%s',
                        `religion` = '%s',
                        `pub_keywords` = '%s',
@@ -237,8 +246,10 @@ function profiles_post(&$a) {
                        dbesc($country_name),
                        dbesc($marital),
                        dbesc($with),
+                       dbesc($howlong),
                        dbesc($sexual),
                        dbesc($homepage),
+                       dbesc($hometown),
                        dbesc($politic),
                        dbesc($religion),
                        dbesc($pub_keywords),
@@ -558,8 +569,10 @@ function profiles_content(&$a) {
                        '$lbl_marital' => t('<span class="heart">&hearts;</span> Marital Status:'),
                        '$lbl_with' => t("Who: \x28if applicable\x29"),
                        '$lbl_ex1' => t('Examples: cathy123, Cathy Williams, cathy@example.com'),
+                       '$lbl_howlong' => t('Since [date]:'),
                        '$lbl_sexual' => t('Sexual Preference:'),
                        '$lbl_homepage' => t('Homepage URL:'),
+                       '$lbl_hometown' => t('Hometown:'),
                        '$lbl_politic' => t('Political Views:'),
                        '$lbl_religion' => t('Religious Views:'),
                        '$lbl_pubkey' => t('Public Keywords:'),
@@ -595,9 +608,11 @@ function profiles_content(&$a) {
                        '$gender' => gender_selector($r[0]['gender']),
                        '$marital' => marital_selector($r[0]['marital']),
                        '$with' => strip_tags($r[0]['with']),
+                       '$howlong' => ($r[0]['howlong'] === '0000-00-00 00:00:00' ? '' : datetime_convert('UTC',date_default_timezone_get(),$r[0]['howlong'])),
                        '$sexual' => sexpref_selector($r[0]['sexual']),
                        '$about' => $r[0]['about'],
                        '$homepage' => $r[0]['homepage'],
+                       '$hometown' => $r[0]['hometown'],
                        '$politic' => $r[0]['politic'],
                        '$religion' => $r[0]['religion'],
                        '$pub_keywords' => $r[0]['pub_keywords'],
index 58bba85333dabce8f077129dc5eee62d21c64b32..d52b5a6e10945cf296d14904c6e58b69b620d118 100644 (file)
@@ -43,326 +43,49 @@ function register_post(&$a) {
                break;
        }
 
-       $using_invites = get_config('system','invitation_only');
-       $num_invites = get_config('system','number_invites');
-
+       require_once('include/user.php');
 
-       $invite_id  = ((x($_POST,'invite_id'))  ? notags(trim($_POST['invite_id']))  : '');
-       $username   = ((x($_POST,'username'))   ? notags(trim($_POST['username']))   : '');
-       $nickname   = ((x($_POST,'nickname'))   ? notags(trim($_POST['nickname']))   : '');
-       $email      = ((x($_POST,'email'))      ? notags(trim($_POST['email']))      : '');
-       $openid_url = ((x($_POST,'openid_url')) ? notags(trim($_POST['openid_url'])) : '');
-       $photo      = ((x($_POST,'photo'))      ? notags(trim($_POST['photo']))      : '');
-       $publish    = ((x($_POST,'profile_publish_reg') && intval($_POST['profile_publish_reg'])) ? 1 : 0);
-
-       $netpublish = ((strlen(get_config('system','directory_submit_url'))) ? $publish : 0);
-               
-       $tmp_str = $openid_url;
-
-       if($using_invites) {
-               if(! $invite_id) {
-                       notice( t('An invitation is required.') . EOL);
-                       return;
-               }
-               $r = q("select * from register where `hash` = '%s' limit 1", dbesc($invite_id));
-               if(! results($r)) {
-                       notice( t('Invitation could not be verified.') . EOL);
-                       return;
-               }
-       } 
-
-       if((! x($username)) || (! x($email)) || (! x($nickname))) {
-               if($openid_url) {
-                       if(! validate_url($tmp_str)) {
-                               notice( t('Invalid OpenID url') . EOL);
-                               return;
-                       }
-                       $_SESSION['register'] = 1;
-                       $_SESSION['openid'] = $openid_url;
-                       require_once('library/openid.php');
-                       $openid = new LightOpenID;
-                       $openid->identity = $openid_url;
-                       $openid->returnUrl = $a->get_baseurl() . '/openid'; 
-                       $openid->required = array('namePerson/friendly', 'contact/email', 'namePerson');
-                       $openid->optional = array('namePerson/first','media/image/aspect11','media/image/default');
-                       goaway($openid->authUrl());
-                       // NOTREACHED   
-               }
+       $arr = $_POST;
 
-               notice( t('Please enter the required information.') . EOL );
-               return;
-       }
+       $arr['blocked'] = $blocked;
+       $arr['verified'] = $verified;
 
-       if(! validate_url($tmp_str))
-               $openid_url = '';
-
-
-       $err = '';
-
-       // collapse multiple spaces in name
-       $username = preg_replace('/ +/',' ',$username);
-
-       if(mb_strlen($username) > 48)
-               $err .= t('Please use a shorter name.') . EOL;
-       if(mb_strlen($username) < 3)
-               $err .= t('Name too short.') . EOL;
-
-       // I don't really like having this rule, but it cuts down
-       // on the number of auto-registrations by Russian spammers
-       
-       //  Using preg_match was completely unreliable, due to mixed UTF-8 regex support
-       //      $no_utf = get_config('system','no_utf');
-       //      $pat = (($no_utf) ? '/^[a-zA-Z]* [a-zA-Z]*$/' : '/^\p{L}* \p{L}*$/u' ); 
-
-       // So now we are just looking for a space in the full name. 
-       
-       $loose_reg = get_config('system','no_regfullname');
-       if(! $loose_reg) {
-               $username = mb_convert_case($username,MB_CASE_TITLE,'UTF-8');
-               if(! strpos($username,' '))
-                       $err .= t("That doesn't appear to be your full \x28First Last\x29 name.") . EOL;
-       }
+       $result = create_user($arr);
 
-
-       if(! allowed_email($email))
-                       $err .= t('Your email domain is not among those allowed on this site.') . EOL;
-
-       if((! valid_email($email)) || (! validate_email($email)))
-               $err .= t('Not a valid email address.') . EOL;
-
-       // Disallow somebody creating an account using openid that uses the admin email address,
-       // since openid bypasses email verification. We'll allow it if there is not yet an admin account.
-
-       if((x($a->config,'admin_email')) && (strcasecmp($email,$a->config['admin_email']) == 0) && strlen($openid_url)) {
-               $r = q("SELECT * FROM `user` WHERE `email` = '%s' LIMIT 1",
-                       dbesc($email)
-               );
-               if(count($r))
-                       $err .= t('Cannot use that email.') . EOL;
-       }
-
-       $nickname = $_POST['nickname'] = strtolower($nickname);
-
-       if(! preg_match("/^[a-z][a-z0-9\-\_]*$/",$nickname))
-               $err .= t('Your "nickname" can only contain "a-z", "0-9", "-", and "_", and must also begin with a letter.') . EOL;
-       $r = q("SELECT `uid` FROM `user`
-                       WHERE `nickname` = '%s' LIMIT 1",
-                       dbesc($nickname)
-       );
-       if(count($r))
-               $err .= t('Nickname is already registered. Please choose another.') . EOL;
-
-       // Check deleted accounts that had this nickname. Doesn't matter to us,
-       // but could be a security issue for federated platforms.
-
-       $r = q("SELECT * FROM `userd`
-                       WHERE `username` = '%s' LIMIT 1",
-                       dbesc($nickname)
-       );
-       if(count($r))
-               $err .= t('Nickname was once registered here and may not be re-used. Please choose another.') . EOL;
-
-       if(strlen($err)) {
-               notice( $err );
-               return;
-       }
-
-
-       $new_password = autoname(6) . mt_rand(100,9999);
-       $new_password_encoded = hash('whirlpool',$new_password);
-
-       require_once('include/crypto.php');
-
-       $result = new_keypair(1024);
-
-       if($result === false) {
-               notice( t('SERIOUS ERROR: Generation of security keys failed.') . EOL);
+       if(! $result['success']) {
+               notice($result['message']);
                return;
        }
 
-       $prvkey = $result['prvkey'];
-       $pubkey = $result['pubkey'];
-
-       /**
-        *
-        * Create another keypair for signing/verifying
-        * salmon protocol messages. We have to use a slightly
-        * less robust key because this won't be using openssl
-        * but the phpseclib. Since it is PHP interpreted code
-        * it is not nearly as efficient, and the larger keys
-        * will take several minutes each to process.
-        *
-        */
-       
-       $sres    = new_keypair(512);
-       $sprvkey = $sres['prvkey'];
-       $spubkey = $sres['pubkey'];
-
-       $r = q("INSERT INTO `user` ( `guid`, `username`, `password`, `email`, `openid`, `nickname`,
-               `pubkey`, `prvkey`, `spubkey`, `sprvkey`, `register_date`, `verified`, `blocked`, `timezone` )
-               VALUES ( '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, 'UTC' )",
-               dbesc(generate_user_guid()),
-               dbesc($username),
-               dbesc($new_password_encoded),
-               dbesc($email),
-               dbesc($openid_url),
-               dbesc($nickname),
-               dbesc($pubkey),
-               dbesc($prvkey),
-               dbesc($spubkey),
-               dbesc($sprvkey),
-               dbesc(datetime_convert()),
-               intval($verified),
-               intval($blocked)
-               );
-
-       if($r) {
-               $r = q("SELECT `uid` FROM `user` 
-                       WHERE `username` = '%s' AND `password` = '%s' LIMIT 1",
-                       dbesc($username),
-                       dbesc($new_password_encoded)
-                       );
-               if($r !== false && count($r))
-                       $newuid = intval($r[0]['uid']);
-       }
-       else {
-               notice( t('An error occurred during registration. Please try again.') . EOL );
-               return;
-       }               
-
-       /**
-        * if somebody clicked submit twice very quickly, they could end up with two accounts 
-        * due to race condition. Remove this one.
-        */
-
-       $r = q("SELECT `uid` FROM `user`
-                       WHERE `nickname` = '%s' ",
-                       dbesc($nickname)
-       );
-       if((count($r) > 1) && $newuid) {
-               $err .= t('Nickname is already registered. Please choose another.') . EOL;
-               q("DELETE FROM `user` WHERE `uid` = %d LIMIT 1",
-                       intval($newuid)
-               );
-               notice ($err);
-               return;
-       }
-
-       if(x($newuid) !== false) {
-               $r = q("INSERT INTO `profile` ( `uid`, `profile-name`, `is-default`, `name`, `photo`, `thumb`, `publish`, `net-publish` )
-                       VALUES ( %d, '%s', %d, '%s', '%s', '%s', %d, %d ) ",
-                       intval($newuid),
-                       'default',
-                       1,
-                       dbesc($username),
-                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
-                       intval($publish),
-                       intval($netpublish)
-
-               );
-               if($r === false) {
-                       notice( t('An error occurred creating your default profile. Please try again.') . EOL );
-                       // Start fresh next time.
-                       $r = q("DELETE FROM `user` WHERE `uid` = %d",
-                               intval($newuid));
-                       return;
-               }
-               $r = q("INSERT INTO `contact` ( `uid`, `created`, `self`, `name`, `nick`, `photo`, `thumb`, `micro`, `blocked`, `pending`, `url`, `nurl`,
-                       `request`, `notify`, `poll`, `confirm`, `poco`, `name-date`, `uri-date`, `avatar-date`, `closeness` )
-                       VALUES ( %d, '%s', 1, '%s', '%s', '%s', '%s', '%s', 0, 0, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', 0 ) ",
-                       intval($newuid),
-                       datetime_convert(),
-                       dbesc($username),
-                       dbesc($nickname),
-                       dbesc($a->get_baseurl() . "/photo/profile/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/avatar/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/photo/micro/{$newuid}.jpg"),
-                       dbesc($a->get_baseurl() . "/profile/$nickname"),
-                       dbesc(normalise_link($a->get_baseurl() . "/profile/$nickname")),
-                       dbesc($a->get_baseurl() . "/dfrn_request/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_notify/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_poll/$nickname"),
-                       dbesc($a->get_baseurl() . "/dfrn_confirm/$nickname"),
-                       dbesc($a->get_baseurl() . "/poco/$nickname"),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert()),
-                       dbesc(datetime_convert())
-               );
-
-
-       }
-
-       // if we have no OpenID photo try to look up an avatar
-       if(! strlen($photo))
-               $photo = avatar_img($email);
-
-       // unless there is no avatar-plugin loaded
-       if(strlen($photo)) {
-               require_once('include/Photo.php');
-               $photo_failure = false;
-
-               $filename = basename($photo);
-               $img_str = fetch_url($photo,true);
-               $img = new Photo($img_str);
-               if($img->is_valid()) {
-
-                       $img->scaleImageSquare(175);
-
-                       $hash = photo_new_resource();
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 4 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       $img->scaleImage(80);
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 5 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       $img->scaleImage(48);
-
-                       $r = $img->store($newuid, 0, $hash, $filename, t('Profile Photos'), 6 );
-
-                       if($r === false)
-                               $photo_failure = true;
-
-                       if(! $photo_failure) {
-                               q("UPDATE `photo` SET `profile` = 1 WHERE `resource-id` = '%s' ",
-                                       dbesc($hash)
-                               );
-                       }
-               }
-       }
-
+       $user = $result['user'];
        if($netpublish && $a->config['register_policy'] != REGISTER_APPROVE) {
-               $url = $a->get_baseurl() . "/profile/$nickname";
+               $url = $a->get_baseurl() . '/profile/' . $user['nickname'];
                proc_run('php',"include/directory.php","$url");
        }
 
+       $using_invites = get_config('system','invitation_only');
+       $num_invites   = get_config('system','number_invites');
+       $invite_id  = ((x($_POST,'invite_id'))  ? notags(trim($_POST['invite_id']))  : '');
 
-       call_hooks('register_account', $newuid);
 
        if( $a->config['register_policy'] == REGISTER_OPEN ) {
 
                if($using_invites && $invite_id) {
                        q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
-                       set_pconfig($newuid,'system','invites_remaining',$num_invites);
+                       set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
                }
 
                $email_tpl = get_intltext_template("register_open_eml.tpl");
                $email_tpl = replace_macros($email_tpl, array(
                                '$sitename' => $a->config['sitename'],
                                '$siteurl' =>  $a->get_baseurl(),
-                               '$username' => $username,
-                               '$email' => $email,
-                               '$password' => $new_password,
-                               '$uid' => $newuid ));
+                               '$username' => $user['username'],
+                               '$email' => $user['email'],
+                               '$password' => $result['password'],
+                               '$uid' => $user['uid'] ));
 
-               $res = mail($email, sprintf(t('Registration details for %s'), $a->config['sitename']),
+               $res = mail($user['email'], sprintf(t('Registration details for %s'), $a->config['sitename']),
                        $email_tpl, 
                                'From: ' . t('Administrator') . '@' . $_SERVER['SERVER_NAME'] . "\n"
                                . 'Content-type: text/plain; charset=UTF-8' . "\n"
@@ -387,8 +110,8 @@ function register_post(&$a) {
                $r = q("INSERT INTO `register` ( `hash`, `created`, `uid`, `password`, `language` ) VALUES ( '%s', '%s', %d, '%s', '%s' ) ",
                        dbesc($hash),
                        dbesc(datetime_convert()),
-                       intval($newuid),
-                       dbesc($new_password),
+                       intval($user['uid']),
+                       dbesc($result['password']),
                        dbesc($lang)
                );
 
@@ -402,17 +125,17 @@ function register_post(&$a) {
 
                if($using_invites && $invite_id) {
                        q("delete * from register where hash = '%s' limit 1", dbesc($invite_id));
-                       set_pconfig($newuid,'system','invites_remaining',$num_invites);
+                       set_pconfig($user['uid'],'system','invites_remaining',$num_invites);
                }
 
                $email_tpl = get_intltext_template("register_verify_eml.tpl");
                $email_tpl = replace_macros($email_tpl, array(
                                '$sitename' => $a->config['sitename'],
                                '$siteurl' =>  $a->get_baseurl(),
-                               '$username' => $username,
-                               '$email' => $email,
-                               '$password' => $new_password,
-                               '$uid' => $newuid,
+                               '$username' => $user['username'],
+                               '$email' => $user['email'],
+                               '$password' => $result['password'],
+                               '$uid' => $user['uid'],
                                '$hash' => $hash
                 ));
 
index d4cd9d96763c7d0838fa2fc72b3e0e00b345df6a..320ffddcef2fbc0df671e6c58e5c26937372711a 100644 (file)
@@ -110,18 +110,19 @@ function search_content(&$a) {
 
        if (get_config('system','use_fulltext_engine')) {
                if($tag)
-                       $sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.preg_quote($search));
+                       $sql_extra = sprintf(" AND MATCH (`item`.`tag`) AGAINST ('".'"%s"'."' in boolean mode) ", '#'.dbesc(protect_sprintf($search)));
                else
-                       $sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(preg_quote($search)));
+                       $sql_extra = sprintf(" AND MATCH (`item`.`body`) AGAINST ('".'"%s"'."' in boolean mode) ", dbesc(protect_sprintf($search)));
        } else {
                if($tag)
-                       $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . preg_quote($search) . '\\['));
+                       $sql_extra = sprintf(" AND `item`.`tag` REGEXP '%s' ",  dbesc('\\]' . protect_sprintf(preg_quote($search)) . '\\['));
                else
-                       $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(preg_quote($search)));
+                       $sql_extra = sprintf(" AND `item`.`body` REGEXP '%s' ", dbesc(protect_sprintf(preg_quote($search))));
        }
 
 
 
+
        // Here is the way permissions work in the search module...
        // Only public posts can be shown
        // OR your own posts if you are a logged in member
@@ -145,7 +146,7 @@ function search_content(&$a) {
        }
 
        $r = q("SELECT distinct(`item`.`uri`), `item`.*, `item`.`id` AS `item_id`, 
-               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`rel`,
+               `contact`.`name`, `contact`.`photo`, `contact`.`url`, `contact`.`alias`, `contact`.`rel`,
                `contact`.`network`, `contact`.`thumb`, `contact`.`self`, `contact`.`writable`, 
                `contact`.`id` AS `cid`, `contact`.`uid` AS `contact-uid`,
                `user`.`nickname`
index b5214e917b3027d54ee7fd834e9621d6fc17ca01..92593d7a848034c564b525f36c50fe34eb84e74f 100644 (file)
@@ -445,7 +445,7 @@ function settings_post(&$a) {
 
        if($page_flags == PAGE_PRVGROUP) {
                $hidewall = 1;
-               if((! str_contact_allow) && (! str_group_allow) && (! str_contact_deny) && (! $str_group_deny)) {
+               if((! $str_contact_allow) && (! $str_group_allow) && (! $str_contact_deny) && (! $str_group_deny)) {
                        if($def_gid) {
                                info( t('Private forum has no privacy permissions. Using default privacy group.'). EOL);
                                $str_group_allow = '<' . $def_gid . '>';
@@ -837,27 +837,26 @@ function settings_content(&$a) {
 
        $pageset_tpl = get_markup_template('pagetypes.tpl');
        $pagetype = replace_macros($pageset_tpl,array(
-               '$page_normal'  => array('page-flags', t('Normal Account'), PAGE_NORMAL, 
+               '$page_normal'  => array('page-flags', t('Normal Account Page'), PAGE_NORMAL, 
                                                                        t('This account is a normal personal profile'), 
                                                                        ($a->user['page-flags'] == PAGE_NORMAL)),
                                                                
-               '$page_soapbox'         => array('page-flags', t('Soapbox Account'), PAGE_SOAPBOX, 
+               '$page_soapbox'         => array('page-flags', t('Soapbox Page'), PAGE_SOAPBOX, 
                                                                        t('Automatically approve all connection/friend requests as read-only fans'), 
                                                                        ($a->user['page-flags'] == PAGE_SOAPBOX)),
                                                                        
-               '$page_community'       => array('page-flags', t('Community/Celebrity Account'), PAGE_COMMUNITY, 
+               '$page_community'       => array('page-flags', t('Community Forum/Celebrity Account'), PAGE_COMMUNITY, 
                                                                        t('Automatically approve all connection/friend requests as read-write fans'), 
                                                                        ($a->user['page-flags'] == PAGE_COMMUNITY)),
                                                                        
-               '$page_freelove'        => array('page-flags', t('Automatic Friend Account'), PAGE_FREELOVE, 
+               '$page_freelove'        => array('page-flags', t('Automatic Friend Page'), PAGE_FREELOVE, 
                                                                        t('Automatically approve all connection/friend requests as friends'), 
                                                                        ($a->user['page-flags'] == PAGE_FREELOVE)),
 
-               '$page_prvgroup'        => array('page-flags', t('Private Forum'), PAGE_PRVGROUP, 
-                                                                       t('Private forum - approved members only [Experimental]'), 
+               '$page_prvgroup'        => array('page-flags', t('Private Forum [Experimental]'), PAGE_PRVGROUP, 
+                                                                       t('Private forum - approved members only'), 
                                                                        ($a->user['page-flags'] == PAGE_PRVGROUP)),
 
-               '$experimental' => ( (intval(get_config('system','prvgroup_testing'))) ? 'true' : ''),
 
        ));
 
@@ -1026,7 +1025,8 @@ function settings_content(&$a) {
                '$notify7'  => array('notify7', t('You are tagged in a post'), ($notify & NOTIFY_TAGSELF), NOTIFY_TAGSELF, ''),         
                
                
-               '$h_advn' => t('Advanced Page Settings'),
+               '$h_advn' => t('Advanced Account/Page Type Settings'),
+               '$h_descadvn' => t('Change the behaviour of this account for special situations'),
                '$pagetype' => $pagetype,
                
 
index f25d16f9df13e6411381181a0f32725c7e606363..35a6771b00e99f1aa64775c25eadccd05d4c608d 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1144 );
+define( 'UPDATE_VERSION' , 1148 );
 
 /**
  *
@@ -1137,8 +1137,8 @@ INDEX ( `username` )
 }
 
 function update_1133() {
-q("ALTER TABLE `user` ADD `unkmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocktags` , ADD INDEX ( `unkmail` ) ");\r
-q("ALTER TABLE `user` ADD `cntunkmail` INT NOT NULL DEFAULT '10' AFTER `unkmail` , ADD INDEX ( `cntunkmail` ) ");\r
+q("ALTER TABLE `user` ADD `unkmail` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `blocktags` , ADD INDEX ( `unkmail` ) ");
+q("ALTER TABLE `user` ADD `cntunkmail` INT NOT NULL DEFAULT '10' AFTER `unkmail` , ADD INDEX ( `cntunkmail` ) ");
 q("ALTER TABLE `mail` ADD `unknown` TINYINT( 1 ) NOT NULL DEFAULT '0' AFTER `replied` , ADD INDEX ( `unknown` ) ");
 }
 
@@ -1253,5 +1253,33 @@ function update_1143() {
        return UPDATE_SUCCESS ;
 }
 
+function update_1144() {
+       $r = q("alter table contact add prv tinyint(1) not null default '0' after forum");
+       if(! $r)
+               return UPDATE_FAILED ;
+       return UPDATE_SUCCESS ;
+}
+
+function update_1145() {
+       $r = q("alter table profile add howlong datetime not null default '0000-00-00 00:00:00' after `with`");
+       if(! $r)
+               return UPDATE_FAILED ;
+       return UPDATE_SUCCESS ;
+}
 
+function update_1146() {
+       $r = q("alter table profile add hometown char(255) not null after `country-name`, add index ( `hometown` ) ");
+       if(! $r)
+               return UPDATE_FAILED ;
+       return UPDATE_SUCCESS ;
+}
+
+function update_1147() {
+       $r1 = q("ALTER TABLE `sign` ALTER `iid` SET DEFAULT '0'");
+       $r2 = q("ALTER TABLE `sign` ADD `retract_iid` INT(10) UNSIGNED NOT NULL DEFAULT '0' AFTER `iid`");
+       $r3 = q("ALTER TABLE `sign` ADD INDEX ( `retract_iid` )");  
+       if((! $r1) || (! $r2) || (! $r3))
+               return UPDATE_FAILED ;
+       return UPDATE_SUCCESS ;
+}
 
index c39ac3bc106e4d08c713d03e197a30b84aa8ba40..43368ced0a6379b18cf00c57c74f59928b0799af 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: 3.0.1357\n"
+"Project-Id-Version: 3.0.1363\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-05-28 10:00-0700\n"
+"POT-Creation-Date: 2012-06-03 10:00-0700\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -39,8 +39,8 @@ msgstr ""
 #: ../../mod/api.php:31 ../../mod/photos.php:130 ../../mod/photos.php:920
 #: ../../mod/editpost.php:10 ../../mod/install.php:151
 #: ../../mod/notifications.php:66 ../../mod/contacts.php:125
-#: ../../mod/settings.php:105 ../../mod/settings.php:536
-#: ../../mod/settings.php:541 ../../mod/manage.php:86 ../../mod/network.php:6
+#: ../../mod/settings.php:106 ../../mod/settings.php:537
+#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6
 #: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
@@ -51,11 +51,11 @@ msgstr ""
 #: ../../mod/profile_photo.php:163 ../../mod/message.php:44
 #: ../../mod/message.php:96 ../../mod/allfriends.php:9
 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
-#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:374 ../../mod/delegate.php:6
+#: ../../mod/follow.php:9 ../../mod/display.php:138 ../../mod/profiles.php:7
+#: ../../mod/profiles.php:385 ../../mod/delegate.php:6
 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:503
-#: ../../include/items.php:3286 ../../index.php:306
+#: ../../include/items.php:3297 ../../index.php:306
 msgid "Permission denied."
 msgstr ""
 
@@ -84,8 +84,8 @@ msgstr ""
 msgid "Return to contact editor"
 msgstr ""
 
-#: ../../mod/crepair.php:148 ../../mod/settings.php:556
-#: ../../mod/settings.php:582 ../../mod/admin.php:656 ../../mod/admin.php:665
+#: ../../mod/crepair.php:148 ../../mod/settings.php:557
+#: ../../mod/settings.php:583 ../../mod/admin.php:656 ../../mod/admin.php:665
 msgid "Name"
 msgstr ""
 
@@ -125,13 +125,13 @@ msgstr ""
 #: ../../mod/events.php:428 ../../mod/photos.php:955 ../../mod/photos.php:1013
 #: ../../mod/photos.php:1256 ../../mod/photos.php:1296
 #: ../../mod/photos.php:1336 ../../mod/photos.php:1367
-#: ../../mod/install.php:245 ../../mod/install.php:283
+#: ../../mod/install.php:246 ../../mod/install.php:284
 #: ../../mod/localtime.php:45 ../../mod/contacts.php:322
-#: ../../mod/settings.php:554 ../../mod/settings.php:700
-#: ../../mod/settings.php:761 ../../mod/settings.php:965
+#: ../../mod/settings.php:555 ../../mod/settings.php:701
+#: ../../mod/settings.php:762 ../../mod/settings.php:969
 #: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:417
 #: ../../mod/admin.php:653 ../../mod/admin.php:789 ../../mod/admin.php:988
-#: ../../mod/admin.php:1075 ../../mod/profiles.php:543
+#: ../../mod/admin.php:1075 ../../mod/profiles.php:554
 #: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:605
 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
 #: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
@@ -159,10 +159,10 @@ msgstr ""
 #: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
 #: ../../addon/posterous/posterous.php:103
 #: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:752
+#: ../../view/theme/diabook/theme.php:757
 #: ../../view/theme/diabook/config.php:190
 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:559
+#: ../../include/conversation.php:580
 msgid "Submit"
 msgstr ""
 
@@ -216,11 +216,11 @@ msgstr ""
 msgid "Edit event"
 msgstr ""
 
-#: ../../mod/events.php:300 ../../include/text.php:1060
+#: ../../mod/events.php:300 ../../include/text.php:1065
 msgid "link to source"
 msgstr ""
 
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:126
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131
 #: ../../include/nav.php:52 ../../boot.php:1520
 msgid "Events"
 msgstr ""
@@ -233,7 +233,7 @@ msgstr ""
 msgid "Previous"
 msgstr ""
 
-#: ../../mod/events.php:327 ../../mod/install.php:204
+#: ../../mod/events.php:327 ../../mod/install.php:205
 msgid "Next"
 msgstr ""
 
@@ -280,8 +280,8 @@ msgid "Share this event"
 msgstr ""
 
 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:826 ../../mod/settings.php:555
-#: ../../mod/settings.php:581 ../../addon/js_upload/js_upload.php:45
+#: ../../mod/dfrn_request.php:830 ../../mod/settings.php:556
+#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45
 msgid "Cancel"
 msgstr ""
 
@@ -324,25 +324,27 @@ msgid ""
 "and/or create new posts for you?"
 msgstr ""
 
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:814
-#: ../../mod/settings.php:876 ../../mod/settings.php:882
-#: ../../mod/settings.php:890 ../../mod/settings.php:894
-#: ../../mod/settings.php:899 ../../mod/settings.php:905
-#: ../../mod/settings.php:911 ../../mod/settings.php:917
-#: ../../mod/settings.php:953 ../../mod/settings.php:954
-#: ../../mod/settings.php:955 ../../mod/settings.php:956
-#: ../../mod/register.php:511 ../../mod/profiles.php:520
+#: ../../mod/api.php:105 ../../mod/dfrn_request.php:818
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:234
+#: ../../mod/profiles.php:531
 msgid "Yes"
 msgstr ""
 
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:815
-#: ../../mod/settings.php:876 ../../mod/settings.php:882
-#: ../../mod/settings.php:890 ../../mod/settings.php:894
-#: ../../mod/settings.php:899 ../../mod/settings.php:905
-#: ../../mod/settings.php:911 ../../mod/settings.php:917
-#: ../../mod/settings.php:953 ../../mod/settings.php:954
-#: ../../mod/settings.php:955 ../../mod/settings.php:956
-#: ../../mod/register.php:512 ../../mod/profiles.php:521
+#: ../../mod/api.php:106 ../../mod/dfrn_request.php:819
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:235
+#: ../../mod/profiles.php:532
 msgid "No"
 msgstr ""
 
@@ -354,7 +356,7 @@ msgstr ""
 #: ../../mod/photos.php:1005 ../../mod/photos.php:1020
 #: ../../mod/photos.php:1445 ../../mod/photos.php:1457
 #: ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:593
+#: ../../view/theme/diabook/theme.php:598
 msgid "Contact Photos"
 msgstr ""
 
@@ -371,13 +373,13 @@ msgid "Contact information unavailable"
 msgstr ""
 
 #: ../../mod/photos.php:151 ../../mod/photos.php:652 ../../mod/photos.php:1005
-#: ../../mod/photos.php:1020 ../../mod/register.php:314
-#: ../../mod/register.php:321 ../../mod/register.php:328
-#: ../../mod/profile_photo.php:60 ../../mod/profile_photo.php:67
-#: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
-#: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
+#: ../../mod/photos.php:1020 ../../mod/profile_photo.php:60
+#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
+#: ../../mod/profile_photo.php:174 ../../mod/profile_photo.php:252
+#: ../../mod/profile_photo.php:261
 #: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:594
+#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:294
+#: ../../include/user.php:301 ../../include/user.php:308
 msgid "Profile Photos"
 msgstr ""
 
@@ -399,7 +401,7 @@ msgstr ""
 
 #: ../../mod/photos.php:583 ../../mod/like.php:127 ../../mod/tagger.php:70
 #: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1311
+#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1316
 #: ../../include/diaspora.php:1662 ../../include/conversation.php:53
 #: ../../include/conversation.php:126
 msgid "photo"
@@ -428,7 +430,7 @@ msgid "Image upload failed."
 msgstr ""
 
 #: ../../mod/photos.php:814 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:740 ../../mod/viewcontacts.php:17
+#: ../../mod/dfrn_request.php:744 ../../mod/viewcontacts.php:17
 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
 msgid "Public access denied."
 msgstr ""
@@ -489,7 +491,7 @@ msgstr ""
 msgid "Use as profile photo"
 msgstr ""
 
-#: ../../mod/photos.php:1140 ../../include/conversation.php:484
+#: ../../mod/photos.php:1140 ../../include/conversation.php:490
 msgid "Private Message"
 msgstr ""
 
@@ -525,44 +527,44 @@ msgstr ""
 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 msgstr ""
 
-#: ../../mod/photos.php:1274 ../../include/conversation.php:533
+#: ../../mod/photos.php:1274 ../../include/conversation.php:554
 msgid "I like this (toggle)"
 msgstr ""
 
-#: ../../mod/photos.php:1275 ../../include/conversation.php:534
+#: ../../mod/photos.php:1275 ../../include/conversation.php:555
 msgid "I don't like this (toggle)"
 msgstr ""
 
-#: ../../mod/photos.php:1276 ../../include/conversation.php:968
+#: ../../mod/photos.php:1276 ../../include/conversation.php:989
 msgid "Share"
 msgstr ""
 
 #: ../../mod/photos.php:1277 ../../mod/editpost.php:104
 #: ../../mod/wallmessage.php:145 ../../mod/message.php:214
-#: ../../mod/message.php:408 ../../include/conversation.php:365
-#: ../../include/conversation.php:710 ../../include/conversation.php:987
+#: ../../mod/message.php:408 ../../include/conversation.php:371
+#: ../../include/conversation.php:731 ../../include/conversation.php:1008
 msgid "Please wait"
 msgstr ""
 
 #: ../../mod/photos.php:1293 ../../mod/photos.php:1333
-#: ../../mod/photos.php:1364 ../../include/conversation.php:556
+#: ../../mod/photos.php:1364 ../../include/conversation.php:577
 msgid "This is you"
 msgstr ""
 
 #: ../../mod/photos.php:1295 ../../mod/photos.php:1335
-#: ../../mod/photos.php:1366 ../../include/conversation.php:558
+#: ../../mod/photos.php:1366 ../../include/conversation.php:579
 #: ../../boot.php:514
 msgid "Comment"
 msgstr ""
 
 #: ../../mod/photos.php:1297 ../../mod/editpost.php:125
-#: ../../include/conversation.php:568 ../../include/conversation.php:1005
+#: ../../include/conversation.php:589 ../../include/conversation.php:1026
 msgid "Preview"
 msgstr ""
 
-#: ../../mod/photos.php:1394 ../../mod/settings.php:617
-#: ../../mod/settings.php:698 ../../mod/group.php:168 ../../mod/admin.php:660
-#: ../../include/conversation.php:322 ../../include/conversation.php:588
+#: ../../mod/photos.php:1394 ../../mod/settings.php:618
+#: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:660
+#: ../../include/conversation.php:328 ../../include/conversation.php:609
 msgid "Delete"
 msgstr ""
 
@@ -578,12 +580,12 @@ msgstr ""
 msgid "Not available."
 msgstr ""
 
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:128
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
 #: ../../include/nav.php:101
 msgid "Community"
 msgstr ""
 
-#: ../../mod/community.php:61 ../../mod/search.php:138
+#: ../../mod/community.php:61 ../../mod/search.php:144
 msgid "No results."
 msgstr ""
 
@@ -627,28 +629,28 @@ msgstr ""
 msgid "Edit post"
 msgstr ""
 
-#: ../../mod/editpost.php:80 ../../include/conversation.php:954
+#: ../../mod/editpost.php:80 ../../include/conversation.php:975
 msgid "Post to Email"
 msgstr ""
 
-#: ../../mod/editpost.php:95 ../../mod/settings.php:616
-#: ../../include/conversation.php:575
+#: ../../mod/editpost.php:95 ../../mod/settings.php:617
+#: ../../include/conversation.php:596
 msgid "Edit"
 msgstr ""
 
 #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
 #: ../../mod/message.php:212 ../../mod/message.php:406
-#: ../../include/conversation.php:969
+#: ../../include/conversation.php:990
 msgid "Upload photo"
 msgstr ""
 
-#: ../../mod/editpost.php:97 ../../include/conversation.php:971
+#: ../../mod/editpost.php:97 ../../include/conversation.php:992
 msgid "Attach file"
 msgstr ""
 
 #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
 #: ../../mod/message.php:213 ../../mod/message.php:407
-#: ../../include/conversation.php:973
+#: ../../include/conversation.php:994
 msgid "Insert web link"
 msgstr ""
 
@@ -664,35 +666,35 @@ msgstr ""
 msgid "Insert Vorbis [.ogg] audio"
 msgstr ""
 
-#: ../../mod/editpost.php:102 ../../include/conversation.php:979
+#: ../../mod/editpost.php:102 ../../include/conversation.php:1000
 msgid "Set your location"
 msgstr ""
 
-#: ../../mod/editpost.php:103 ../../include/conversation.php:981
+#: ../../mod/editpost.php:103 ../../include/conversation.php:1002
 msgid "Clear browser location"
 msgstr ""
 
-#: ../../mod/editpost.php:105 ../../include/conversation.php:988
+#: ../../mod/editpost.php:105 ../../include/conversation.php:1009
 msgid "Permission settings"
 msgstr ""
 
-#: ../../mod/editpost.php:113 ../../include/conversation.php:997
+#: ../../mod/editpost.php:113 ../../include/conversation.php:1018
 msgid "CC: email addresses"
 msgstr ""
 
-#: ../../mod/editpost.php:114 ../../include/conversation.php:998
+#: ../../mod/editpost.php:114 ../../include/conversation.php:1019
 msgid "Public post"
 msgstr ""
 
-#: ../../mod/editpost.php:117 ../../include/conversation.php:984
+#: ../../mod/editpost.php:117 ../../include/conversation.php:1005
 msgid "Set title"
 msgstr ""
 
-#: ../../mod/editpost.php:119 ../../include/conversation.php:986
+#: ../../mod/editpost.php:119 ../../include/conversation.php:1007
 msgid "Categories (comma-separated list)"
 msgstr ""
 
-#: ../../mod/editpost.php:120 ../../include/conversation.php:1000
+#: ../../mod/editpost.php:120 ../../include/conversation.php:1021
 msgid "Example: bob@example.com, mary@example.com"
 msgstr ""
 
@@ -700,184 +702,188 @@ msgstr ""
 msgid "This introduction has already been accepted."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:117 ../../mod/dfrn_request.php:495
+#: ../../mod/dfrn_request.php:118 ../../mod/dfrn_request.php:497
 msgid "Profile location is not valid or does not contain profile information."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:122 ../../mod/dfrn_request.php:500
+#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:502
 msgid "Warning: profile location has no identifiable owner name."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:124 ../../mod/dfrn_request.php:502
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:504
 msgid "Warning: profile location has no profile photo."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:505
+#: ../../mod/dfrn_request.php:128 ../../mod/dfrn_request.php:507
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/dfrn_request.php:168
+#: ../../mod/dfrn_request.php:170
 msgid "Introduction complete."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:192
+#: ../../mod/dfrn_request.php:194
 msgid "Unrecoverable protocol error."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:220
+#: ../../mod/dfrn_request.php:222
 msgid "Profile unavailable."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:245
+#: ../../mod/dfrn_request.php:247
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:246
+#: ../../mod/dfrn_request.php:248
 msgid "Spam protection measures have been invoked."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:247
+#: ../../mod/dfrn_request.php:249
 msgid "Friends are advised to please try again in 24 hours."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:309
+#: ../../mod/dfrn_request.php:311
 msgid "Invalid locator"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:318
+#: ../../mod/dfrn_request.php:320
 msgid "Invalid email address."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:344
+#: ../../mod/dfrn_request.php:346
 msgid "This account has not been configured for email. Request failed."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:440
+#: ../../mod/dfrn_request.php:442
 msgid "Unable to resolve your name at the provided location."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:453
+#: ../../mod/dfrn_request.php:455
 msgid "You have already introduced yourself here."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:457
+#: ../../mod/dfrn_request.php:459
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:478
+#: ../../mod/dfrn_request.php:480
 msgid "Invalid profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:484 ../../mod/follow.php:23
+#: ../../mod/dfrn_request.php:486 ../../include/follow.php:27
 msgid "Disallowed profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:553 ../../mod/contacts.php:102
+#: ../../mod/dfrn_request.php:555 ../../mod/contacts.php:102
 msgid "Failed to update contact record."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:574
+#: ../../mod/dfrn_request.php:576
 msgid "Your introduction has been sent."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:627
+#: ../../mod/dfrn_request.php:629
 msgid "Please login to confirm introduction."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:641
+#: ../../mod/dfrn_request.php:643
 msgid ""
 "Incorrect identity currently logged in. Please login to <strong>this</"
 "strong> profile."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:653
+#: ../../mod/dfrn_request.php:654
+msgid "Hide this contact"
+msgstr ""
+
+#: ../../mod/dfrn_request.php:657
 #, php-format
 msgid "Welcome home %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:654
+#: ../../mod/dfrn_request.php:658
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:655
+#: ../../mod/dfrn_request.php:659
 msgid "Confirm"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:696 ../../include/items.php:2729
+#: ../../mod/dfrn_request.php:700 ../../include/items.php:2733
 msgid "[Name Withheld]"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:789
+#: ../../mod/dfrn_request.php:793
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:805
+#: ../../mod/dfrn_request.php:809
 msgid "<strike>Connect as an email follower</strike> (Coming soon)"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:807
+#: ../../mod/dfrn_request.php:811
 msgid ""
 "If you are not yet a member of the free social web, <a href=\"http://dir."
 "friendica.com/siteinfo\">follow this link to find a public Friendica site "
 "and join us today</a>."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:810
+#: ../../mod/dfrn_request.php:814
 msgid "Friend/Connection Request"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:811
+#: ../../mod/dfrn_request.php:815
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:812
+#: ../../mod/dfrn_request.php:816
 msgid "Please answer the following:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:813
+#: ../../mod/dfrn_request.php:817
 #, php-format
 msgid "Does %s know you?"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:816
+#: ../../mod/dfrn_request.php:820
 msgid "Add a personal note:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:818 ../../include/contact_selectors.php:76
+#: ../../mod/dfrn_request.php:822 ../../include/contact_selectors.php:76
 msgid "Friendica"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:819
+#: ../../mod/dfrn_request.php:823
 msgid "StatusNet/Federated Social Web"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:820 ../../mod/settings.php:651
+#: ../../mod/dfrn_request.php:824 ../../mod/settings.php:652
 #: ../../include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:821
+#: ../../mod/dfrn_request.php:825
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search "
 "bar."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:822
+#: ../../mod/dfrn_request.php:826
 msgid "Your Identity Address:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:825
+#: ../../mod/dfrn_request.php:829
 msgid "Submit Request"
 msgstr ""
 
@@ -903,233 +909,233 @@ msgid ""
 "or mysql."
 msgstr ""
 
-#: ../../mod/install.php:139 ../../mod/install.php:203
-#: ../../mod/install.php:482
+#: ../../mod/install.php:139 ../../mod/install.php:204
+#: ../../mod/install.php:489
 msgid "Please see the file \"INSTALL.txt\"."
 msgstr ""
 
-#: ../../mod/install.php:200
+#: ../../mod/install.php:201
 msgid "System check"
 msgstr ""
 
-#: ../../mod/install.php:205
+#: ../../mod/install.php:206
 msgid "Check again"
 msgstr ""
 
-#: ../../mod/install.php:224
+#: ../../mod/install.php:225
 msgid "Database connection"
 msgstr ""
 
-#: ../../mod/install.php:225
+#: ../../mod/install.php:226
 msgid ""
 "In order to install Friendica we need to know how to connect to your "
 "database."
 msgstr ""
 
-#: ../../mod/install.php:226
+#: ../../mod/install.php:227
 msgid ""
 "Please contact your hosting provider or site administrator if you have "
 "questions about these settings."
 msgstr ""
 
-#: ../../mod/install.php:227
+#: ../../mod/install.php:228
 msgid ""
 "The database you specify below should already exist. If it does not, please "
 "create it before continuing."
 msgstr ""
 
-#: ../../mod/install.php:231
+#: ../../mod/install.php:232
 msgid "Database Server Name"
 msgstr ""
 
-#: ../../mod/install.php:232
+#: ../../mod/install.php:233
 msgid "Database Login Name"
 msgstr ""
 
-#: ../../mod/install.php:233
+#: ../../mod/install.php:234
 msgid "Database Login Password"
 msgstr ""
 
-#: ../../mod/install.php:234
+#: ../../mod/install.php:235
 msgid "Database Name"
 msgstr ""
 
-#: ../../mod/install.php:235 ../../mod/install.php:274
+#: ../../mod/install.php:236 ../../mod/install.php:275
 msgid "Site administrator email address"
 msgstr ""
 
-#: ../../mod/install.php:235 ../../mod/install.php:274
+#: ../../mod/install.php:236 ../../mod/install.php:275
 msgid ""
 "Your account email address must match this in order to use the web admin "
 "panel."
 msgstr ""
 
-#: ../../mod/install.php:239 ../../mod/install.php:277
+#: ../../mod/install.php:240 ../../mod/install.php:278
 msgid "Please select a default timezone for your website"
 msgstr ""
 
-#: ../../mod/install.php:264
+#: ../../mod/install.php:265
 msgid "Site settings"
 msgstr ""
 
-#: ../../mod/install.php:317
+#: ../../mod/install.php:318
 msgid "Could not find a command line version of PHP in the web server PATH."
 msgstr ""
 
-#: ../../mod/install.php:318
+#: ../../mod/install.php:319
 msgid ""
 "If you don't have a command line version of PHP installed on server, you "
 "will not be able to run background polling via cron. See <a href='http://"
 "friendica.com/node/27'>'Activating scheduled tasks'</a>"
 msgstr ""
 
-#: ../../mod/install.php:322
+#: ../../mod/install.php:323
 msgid "PHP executable path"
 msgstr ""
 
-#: ../../mod/install.php:322
+#: ../../mod/install.php:323
 msgid ""
 "Enter full path to php executable. You can leave this blank to continue the "
 "installation."
 msgstr ""
 
-#: ../../mod/install.php:327
+#: ../../mod/install.php:328
 msgid "Command line PHP"
 msgstr ""
 
-#: ../../mod/install.php:336
+#: ../../mod/install.php:337
 msgid ""
 "The command line version of PHP on your system does not have "
 "\"register_argc_argv\" enabled."
 msgstr ""
 
-#: ../../mod/install.php:337
+#: ../../mod/install.php:338
 msgid "This is required for message delivery to work."
 msgstr ""
 
-#: ../../mod/install.php:339
+#: ../../mod/install.php:340
 msgid "PHP register_argc_argv"
 msgstr ""
 
-#: ../../mod/install.php:360
+#: ../../mod/install.php:361
 msgid ""
 "Error: the \"openssl_pkey_new\" function on this system is not able to "
 "generate encryption keys"
 msgstr ""
 
-#: ../../mod/install.php:361
+#: ../../mod/install.php:362
 msgid ""
 "If running under Windows, please see \"http://www.php.net/manual/en/openssl."
 "installation.php\"."
 msgstr ""
 
-#: ../../mod/install.php:363
+#: ../../mod/install.php:364
 msgid "Generate encryption keys"
 msgstr ""
 
-#: ../../mod/install.php:370
+#: ../../mod/install.php:371
 msgid "libCurl PHP module"
 msgstr ""
 
-#: ../../mod/install.php:371
+#: ../../mod/install.php:372
 msgid "GD graphics PHP module"
 msgstr ""
 
-#: ../../mod/install.php:372
+#: ../../mod/install.php:373
 msgid "OpenSSL PHP module"
 msgstr ""
 
-#: ../../mod/install.php:373
+#: ../../mod/install.php:374
 msgid "mysqli PHP module"
 msgstr ""
 
-#: ../../mod/install.php:374
+#: ../../mod/install.php:375
 msgid "mb_string PHP module"
 msgstr ""
 
-#: ../../mod/install.php:379 ../../mod/install.php:381
+#: ../../mod/install.php:380 ../../mod/install.php:382
 msgid "Apache mod_rewrite module"
 msgstr ""
 
-#: ../../mod/install.php:379
+#: ../../mod/install.php:380
 msgid ""
 "Error: Apache webserver mod-rewrite module is required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:386
+#: ../../mod/install.php:388
 msgid "Error: libCURL PHP module required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:390
+#: ../../mod/install.php:392
 msgid ""
 "Error: GD graphics PHP module with JPEG support required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:394
+#: ../../mod/install.php:396
 msgid "Error: openssl PHP module required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:398
+#: ../../mod/install.php:400
 msgid "Error: mysqli PHP module required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:402
+#: ../../mod/install.php:404
 msgid "Error: mb_string PHP module required but not installed."
 msgstr ""
 
-#: ../../mod/install.php:419
+#: ../../mod/install.php:421
 msgid ""
 "The web installer needs to be able to create a file called \".htconfig.php\" "
 "in the top folder of your web server and it is unable to do so."
 msgstr ""
 
-#: ../../mod/install.php:420
+#: ../../mod/install.php:422
 msgid ""
 "This is most often a permission setting, as the web server may not be able "
 "to write files in your folder - even if you can."
 msgstr ""
 
-#: ../../mod/install.php:421
+#: ../../mod/install.php:423
 msgid ""
 "At the end of this procedure, we will give you a text to save in a file "
 "named .htconfig.php in your Friendica top folder."
 msgstr ""
 
-#: ../../mod/install.php:422
+#: ../../mod/install.php:424
 msgid ""
 "You can alternatively skip this procedure and perform a manual installation. "
 "Please see the file \"INSTALL.txt\" for instructions."
 msgstr ""
 
-#: ../../mod/install.php:425
+#: ../../mod/install.php:427
 msgid ".htconfig.php is writable"
 msgstr ""
 
-#: ../../mod/install.php:436
+#: ../../mod/install.php:439
 msgid ""
-"Url rewrite in .htconfig is not working. Check your server configuration."
+"Url rewrite in .htaccess is not working. Check your server configuration."
 msgstr ""
 
-#: ../../mod/install.php:438
+#: ../../mod/install.php:441
 msgid "Url rewrite is working"
 msgstr ""
 
-#: ../../mod/install.php:444
+#: ../../mod/install.php:451
 msgid ""
 "The database configuration file \".htconfig.php\" could not be written. "
 "Please use the enclosed text to create a configuration file in your web "
 "server root."
 msgstr ""
 
-#: ../../mod/install.php:469
+#: ../../mod/install.php:476
 msgid "Errors encountered creating database tables."
 msgstr ""
 
-#: ../../mod/install.php:480
+#: ../../mod/install.php:487
 msgid "<h1>What next</h1>"
 msgstr ""
 
-#: ../../mod/install.php:481
+#: ../../mod/install.php:488
 msgid ""
 "IMPORTANT: You will need to [manually] setup a scheduled task for the poller."
 msgstr ""
@@ -1229,7 +1235,7 @@ msgstr ""
 msgid "Personal"
 msgstr ""
 
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:122
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:127
 #: ../../include/nav.php:77 ../../include/nav.php:115
 msgid "Home"
 msgstr ""
@@ -1670,7 +1676,7 @@ msgstr ""
 msgid "Edit contact"
 msgstr ""
 
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:124
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:129
 #: ../../include/nav.php:139
 msgid "Contacts"
 msgstr ""
@@ -1702,12 +1708,12 @@ msgid "Password reset requested at %s"
 msgstr ""
 
 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:367 ../../mod/register.php:421
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:745
+#: ../../mod/register.php:90 ../../mod/register.php:144
+#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
 #: ../../addon/facebook/facebook.php:688
 #: ../../addon/facebook/facebook.php:1178
 #: ../../addon/public_server/public_server.php:62
-#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2738
+#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2742
 #: ../../boot.php:694
 msgid "Administrator"
 msgstr ""
@@ -1791,40 +1797,40 @@ msgid "Remove account"
 msgstr ""
 
 #: ../../mod/settings.php:89 ../../mod/admin.php:748 ../../mod/admin.php:953
-#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:768 ../../include/nav.php:137
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
 msgid "Settings"
 msgstr ""
 
-#: ../../mod/settings.php:132
+#: ../../mod/settings.php:133
 msgid "Missing some important data!"
 msgstr ""
 
-#: ../../mod/settings.php:135 ../../mod/settings.php:580
+#: ../../mod/settings.php:136 ../../mod/settings.php:581
 msgid "Update"
 msgstr ""
 
-#: ../../mod/settings.php:240
+#: ../../mod/settings.php:241
 msgid "Failed to connect with email account using the settings provided."
 msgstr ""
 
-#: ../../mod/settings.php:245
+#: ../../mod/settings.php:246
 msgid "Email settings updated."
 msgstr ""
 
-#: ../../mod/settings.php:304
+#: ../../mod/settings.php:305
 msgid "Passwords do not match. Password unchanged."
 msgstr ""
 
-#: ../../mod/settings.php:309
+#: ../../mod/settings.php:310
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr ""
 
-#: ../../mod/settings.php:320
+#: ../../mod/settings.php:321
 msgid "Password changed."
 msgstr ""
 
-#: ../../mod/settings.php:322
+#: ../../mod/settings.php:323
 msgid "Password update failed. Please try again."
 msgstr ""
 
@@ -1844,15 +1850,15 @@ msgstr ""
 msgid " Cannot change to that email."
 msgstr ""
 
-#: ../../mod/settings.php:449
+#: ../../mod/settings.php:450
 msgid "Private forum has no privacy permissions. Using default privacy group."
 msgstr ""
 
-#: ../../mod/settings.php:453
+#: ../../mod/settings.php:454
 msgid "Private forum has no privacy permissions and no default privacy group."
 msgstr ""
 
-#: ../../mod/settings.php:483 ../../addon/facebook/facebook.php:488
+#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:488
 #: ../../addon/impressum/impressum.php:77
 #: ../../addon/openstreetmap/openstreetmap.php:80
 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@@ -1860,418 +1866,426 @@ msgstr ""
 msgid "Settings updated."
 msgstr ""
 
-#: ../../mod/settings.php:553 ../../mod/settings.php:579
-#: ../../mod/settings.php:615
+#: ../../mod/settings.php:554 ../../mod/settings.php:580
+#: ../../mod/settings.php:616
 msgid "Add application"
 msgstr ""
 
-#: ../../mod/settings.php:557 ../../mod/settings.php:583
+#: ../../mod/settings.php:558 ../../mod/settings.php:584
 #: ../../addon/statusnet/statusnet.php:555
 msgid "Consumer Key"
 msgstr ""
 
-#: ../../mod/settings.php:558 ../../mod/settings.php:584
+#: ../../mod/settings.php:559 ../../mod/settings.php:585
 #: ../../addon/statusnet/statusnet.php:554
 msgid "Consumer Secret"
 msgstr ""
 
-#: ../../mod/settings.php:559 ../../mod/settings.php:585
+#: ../../mod/settings.php:560 ../../mod/settings.php:586
 msgid "Redirect"
 msgstr ""
 
-#: ../../mod/settings.php:560 ../../mod/settings.php:586
+#: ../../mod/settings.php:561 ../../mod/settings.php:587
 msgid "Icon url"
 msgstr ""
 
-#: ../../mod/settings.php:571
+#: ../../mod/settings.php:572
 msgid "You can't edit this application."
 msgstr ""
 
-#: ../../mod/settings.php:614
+#: ../../mod/settings.php:615
 msgid "Connected Apps"
 msgstr ""
 
-#: ../../mod/settings.php:618
+#: ../../mod/settings.php:619
 msgid "Client key starts with"
 msgstr ""
 
-#: ../../mod/settings.php:619
+#: ../../mod/settings.php:620
 msgid "No name"
 msgstr ""
 
-#: ../../mod/settings.php:620
+#: ../../mod/settings.php:621
 msgid "Remove authorization"
 msgstr ""
 
-#: ../../mod/settings.php:631
+#: ../../mod/settings.php:632
 msgid "No Plugin settings configured"
 msgstr ""
 
-#: ../../mod/settings.php:639 ../../addon/widgets/widgets.php:123
+#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123
 msgid "Plugin Settings"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "enabled"
 msgstr ""
 
-#: ../../mod/settings.php:651 ../../mod/settings.php:652
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "disabled"
 msgstr ""
 
-#: ../../mod/settings.php:652
+#: ../../mod/settings.php:653
 msgid "StatusNet"
 msgstr ""
 
-#: ../../mod/settings.php:682
+#: ../../mod/settings.php:683
 msgid "Connector Settings"
 msgstr ""
 
-#: ../../mod/settings.php:687
+#: ../../mod/settings.php:688
 msgid "Email/Mailbox Setup"
 msgstr ""
 
-#: ../../mod/settings.php:688
+#: ../../mod/settings.php:689
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr ""
 
-#: ../../mod/settings.php:689
+#: ../../mod/settings.php:690
 msgid "Last successful email check:"
 msgstr ""
 
-#: ../../mod/settings.php:690
+#: ../../mod/settings.php:691
 msgid "Email access is disabled on this site."
 msgstr ""
 
-#: ../../mod/settings.php:691
+#: ../../mod/settings.php:692
 msgid "IMAP server name:"
 msgstr ""
 
-#: ../../mod/settings.php:692
+#: ../../mod/settings.php:693
 msgid "IMAP port:"
 msgstr ""
 
-#: ../../mod/settings.php:693
+#: ../../mod/settings.php:694
 msgid "Security:"
 msgstr ""
 
-#: ../../mod/settings.php:693 ../../mod/settings.php:698
+#: ../../mod/settings.php:694 ../../mod/settings.php:699
 msgid "None"
 msgstr ""
 
-#: ../../mod/settings.php:694
+#: ../../mod/settings.php:695
 msgid "Email login name:"
 msgstr ""
 
-#: ../../mod/settings.php:695
+#: ../../mod/settings.php:696
 msgid "Email password:"
 msgstr ""
 
-#: ../../mod/settings.php:696
+#: ../../mod/settings.php:697
 msgid "Reply-to address:"
 msgstr ""
 
-#: ../../mod/settings.php:697
+#: ../../mod/settings.php:698
 msgid "Send public posts to all email contacts:"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Action after import:"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Mark as seen"
 msgstr ""
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:699
 msgid "Move to folder"
 msgstr ""
 
-#: ../../mod/settings.php:699
+#: ../../mod/settings.php:700
 msgid "Move to folder:"
 msgstr ""
 
-#: ../../mod/settings.php:759
+#: ../../mod/settings.php:760
 msgid "Display Settings"
 msgstr ""
 
-#: ../../mod/settings.php:765
+#: ../../mod/settings.php:766
 msgid "Display Theme:"
 msgstr ""
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:767
 msgid "Update browser every xx seconds"
 msgstr ""
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:767
 msgid "Minimum of 10 seconds, no maximum"
 msgstr ""
 
-#: ../../mod/settings.php:767
+#: ../../mod/settings.php:768
 msgid "Number of items to display on the network page:"
 msgstr ""
 
-#: ../../mod/settings.php:767
+#: ../../mod/settings.php:768
 msgid "Maximum of 100 items"
 msgstr ""
 
-#: ../../mod/settings.php:768
+#: ../../mod/settings.php:769
 msgid "Don't show emoticons"
 msgstr ""
 
-#: ../../mod/settings.php:836 ../../mod/admin.php:180 ../../mod/admin.php:634
-msgid "Normal Account"
+#: ../../mod/settings.php:840
+msgid "Normal Account Page"
 msgstr ""
 
-#: ../../mod/settings.php:837
+#: ../../mod/settings.php:841
 msgid "This account is a normal personal profile"
 msgstr ""
 
-#: ../../mod/settings.php:840 ../../mod/admin.php:181 ../../mod/admin.php:635
-msgid "Soapbox Account"
+#: ../../mod/settings.php:844
+msgid "Soapbox Page"
 msgstr ""
 
-#: ../../mod/settings.php:841
+#: ../../mod/settings.php:845
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr ""
 
-#: ../../mod/settings.php:844 ../../mod/admin.php:182 ../../mod/admin.php:636
-msgid "Community/Celebrity Account"
+#: ../../mod/settings.php:848
+msgid "Community Forum/Celebrity Account"
 msgstr ""
 
-#: ../../mod/settings.php:845
+#: ../../mod/settings.php:849
 msgid "Automatically approve all connection/friend requests as read-write fans"
 msgstr ""
 
-#: ../../mod/settings.php:848 ../../mod/admin.php:183 ../../mod/admin.php:637
-msgid "Automatic Friend Account"
+#: ../../mod/settings.php:852
+msgid "Automatic Friend Page"
 msgstr ""
 
-#: ../../mod/settings.php:849
+#: ../../mod/settings.php:853
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr ""
 
-#: ../../mod/settings.php:852
-msgid "Private Forum"
+#: ../../mod/settings.php:856
+msgid "Private Forum [Experimental]"
 msgstr ""
 
-#: ../../mod/settings.php:853
-msgid "Private forum - approved members only [Experimental]"
+#: ../../mod/settings.php:857
+msgid "Private forum - approved members only"
 msgstr ""
 
-#: ../../mod/settings.php:866
+#: ../../mod/settings.php:869
 msgid "OpenID:"
 msgstr ""
 
-#: ../../mod/settings.php:866
+#: ../../mod/settings.php:869
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr ""
 
-#: ../../mod/settings.php:876
+#: ../../mod/settings.php:879
 msgid "Publish your default profile in your local site directory?"
 msgstr ""
 
-#: ../../mod/settings.php:882
+#: ../../mod/settings.php:885
 msgid "Publish your default profile in the global social directory?"
 msgstr ""
 
-#: ../../mod/settings.php:890
+#: ../../mod/settings.php:893
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr ""
 
-#: ../../mod/settings.php:894
+#: ../../mod/settings.php:897
 msgid "Hide your profile details from unknown viewers?"
 msgstr ""
 
-#: ../../mod/settings.php:899
+#: ../../mod/settings.php:902
 msgid "Allow friends to post to your profile page?"
 msgstr ""
 
-#: ../../mod/settings.php:905
+#: ../../mod/settings.php:908
 msgid "Allow friends to tag your posts?"
 msgstr ""
 
-#: ../../mod/settings.php:911
+#: ../../mod/settings.php:914
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr ""
 
-#: ../../mod/settings.php:917
+#: ../../mod/settings.php:920
 msgid "Permit unknown people to send you private mail?"
 msgstr ""
 
-#: ../../mod/settings.php:928
+#: ../../mod/settings.php:931
 msgid "Profile is <strong>not published</strong>."
 msgstr ""
 
-#: ../../mod/settings.php:934 ../../mod/profile_photo.php:211
+#: ../../mod/settings.php:937 ../../mod/profile_photo.php:211
 msgid "or"
 msgstr ""
 
-#: ../../mod/settings.php:939
+#: ../../mod/settings.php:942
 msgid "Your Identity Address is"
 msgstr ""
 
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:953
 msgid "Automatically expire posts after this many days:"
 msgstr ""
 
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:953
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr ""
 
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:954
 msgid "Advanced expiration settings"
 msgstr ""
 
-#: ../../mod/settings.php:952
+#: ../../mod/settings.php:955
 msgid "Advanced Expiration"
 msgstr ""
 
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:956
 msgid "Expire posts:"
 msgstr ""
 
-#: ../../mod/settings.php:954
+#: ../../mod/settings.php:957
 msgid "Expire personal notes:"
 msgstr ""
 
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:958
 msgid "Expire starred posts:"
 msgstr ""
 
-#: ../../mod/settings.php:956
+#: ../../mod/settings.php:959
 msgid "Expire photos:"
 msgstr ""
 
-#: ../../mod/settings.php:963
+#: ../../mod/settings.php:960
+msgid "Only expire posts by others:"
+msgstr ""
+
+#: ../../mod/settings.php:967
 msgid "Account Settings"
 msgstr ""
 
-#: ../../mod/settings.php:971
+#: ../../mod/settings.php:975
 msgid "Password Settings"
 msgstr ""
 
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:976
 msgid "New Password:"
 msgstr ""
 
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:977
 msgid "Confirm:"
 msgstr ""
 
-#: ../../mod/settings.php:973
+#: ../../mod/settings.php:977
 msgid "Leave password fields blank unless changing"
 msgstr ""
 
-#: ../../mod/settings.php:977
+#: ../../mod/settings.php:981
 msgid "Basic Settings"
 msgstr ""
 
-#: ../../mod/settings.php:978 ../../include/profile_advanced.php:15
+#: ../../mod/settings.php:982 ../../include/profile_advanced.php:15
 msgid "Full Name:"
 msgstr ""
 
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:983
 msgid "Email Address:"
 msgstr ""
 
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:984
 msgid "Your Timezone:"
 msgstr ""
 
-#: ../../mod/settings.php:981
+#: ../../mod/settings.php:985
 msgid "Default Post Location:"
 msgstr ""
 
-#: ../../mod/settings.php:982
+#: ../../mod/settings.php:986
 msgid "Use Browser Location:"
 msgstr ""
 
-#: ../../mod/settings.php:985
+#: ../../mod/settings.php:989
 msgid "Security and Privacy Settings"
 msgstr ""
 
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:991
 msgid "Maximum Friend Requests/Day:"
 msgstr ""
 
-#: ../../mod/settings.php:987 ../../mod/settings.php:1006
+#: ../../mod/settings.php:991 ../../mod/settings.php:1010
 msgid "(to prevent spam abuse)"
 msgstr ""
 
-#: ../../mod/settings.php:988
+#: ../../mod/settings.php:992
 msgid "Default Post Permissions"
 msgstr ""
 
-#: ../../mod/settings.php:989
+#: ../../mod/settings.php:993
 msgid "(click to open/close)"
 msgstr ""
 
-#: ../../mod/settings.php:1006
+#: ../../mod/settings.php:1010
 msgid "Maximum private messages per day from unknown people:"
 msgstr ""
 
-#: ../../mod/settings.php:1009
+#: ../../mod/settings.php:1013
 msgid "Notification Settings"
 msgstr ""
 
-#: ../../mod/settings.php:1010
+#: ../../mod/settings.php:1014
 msgid "By default post a status message when:"
 msgstr ""
 
-#: ../../mod/settings.php:1011
+#: ../../mod/settings.php:1015
 msgid "accepting a friend request"
 msgstr ""
 
-#: ../../mod/settings.php:1012
+#: ../../mod/settings.php:1016
 msgid "joining a forum/community"
 msgstr ""
 
-#: ../../mod/settings.php:1013
+#: ../../mod/settings.php:1017
 msgid "making an <em>interesting</em> profile change"
 msgstr ""
 
-#: ../../mod/settings.php:1014
+#: ../../mod/settings.php:1018
 msgid "Send a notification email when:"
 msgstr ""
 
-#: ../../mod/settings.php:1015
+#: ../../mod/settings.php:1019
 msgid "You receive an introduction"
 msgstr ""
 
-#: ../../mod/settings.php:1016
+#: ../../mod/settings.php:1020
 msgid "Your introductions are confirmed"
 msgstr ""
 
-#: ../../mod/settings.php:1017
+#: ../../mod/settings.php:1021
 msgid "Someone writes on your profile wall"
 msgstr ""
 
-#: ../../mod/settings.php:1018
+#: ../../mod/settings.php:1022
 msgid "Someone writes a followup comment"
 msgstr ""
 
-#: ../../mod/settings.php:1019
+#: ../../mod/settings.php:1023
 msgid "You receive a private message"
 msgstr ""
 
-#: ../../mod/settings.php:1020
+#: ../../mod/settings.php:1024
 msgid "You receive a friend suggestion"
 msgstr ""
 
-#: ../../mod/settings.php:1021
+#: ../../mod/settings.php:1025
 msgid "You are tagged in a post"
 msgstr ""
 
-#: ../../mod/settings.php:1024
-msgid "Advanced Page Settings"
+#: ../../mod/settings.php:1028
+msgid "Advanced Account/Page Type Settings"
+msgstr ""
+
+#: ../../mod/settings.php:1029
+msgid "Change the behaviour of this account for special situations"
 msgstr ""
 
 #: ../../mod/manage.php:90
@@ -2425,7 +2439,7 @@ msgid "No recipient."
 msgstr ""
 
 #: ../../mod/wallmessage.php:124 ../../mod/message.php:171
-#: ../../include/conversation.php:922
+#: ../../include/conversation.php:943
 msgid "Please enter a link URL:"
 msgstr ""
 
@@ -2633,8 +2647,8 @@ msgstr ""
 msgid "Profile Visibility Editor"
 msgstr ""
 
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:123
-#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
+#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:79
 #: ../../include/nav.php:50 ../../boot.php:1505
 msgid "Profile"
 msgstr ""
@@ -2655,159 +2669,91 @@ msgstr ""
 msgid "View Contacts"
 msgstr ""
 
-#: ../../mod/register.php:64
-msgid "An invitation is required."
-msgstr ""
-
-#: ../../mod/register.php:69
-msgid "Invitation could not be verified."
-msgstr ""
-
-#: ../../mod/register.php:77
-msgid "Invalid OpenID url"
-msgstr ""
-
-#: ../../mod/register.php:92
-msgid "Please enter the required information."
-msgstr ""
-
-#: ../../mod/register.php:106
-msgid "Please use a shorter name."
-msgstr ""
-
-#: ../../mod/register.php:108
-msgid "Name too short."
-msgstr ""
-
-#: ../../mod/register.php:123
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr ""
-
-#: ../../mod/register.php:128
-msgid "Your email domain is not among those allowed on this site."
-msgstr ""
-
-#: ../../mod/register.php:131
-msgid "Not a valid email address."
-msgstr ""
-
-#: ../../mod/register.php:141
-msgid "Cannot use that email."
-msgstr ""
-
-#: ../../mod/register.php:147
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr ""
-
-#: ../../mod/register.php:153 ../../mod/register.php:243
-msgid "Nickname is already registered. Please choose another."
-msgstr ""
-
-#: ../../mod/register.php:163
-msgid ""
-"Nickname was once registered here and may not be re-used. Please choose "
-"another."
-msgstr ""
-
-#: ../../mod/register.php:179
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr ""
-
-#: ../../mod/register.php:229
-msgid "An error occurred during registration. Please try again."
-msgstr ""
-
-#: ../../mod/register.php:265
-msgid "An error occurred creating your default profile. Please try again."
-msgstr ""
-
-#: ../../mod/register.php:365 ../../mod/regmod.php:52
+#: ../../mod/register.php:88 ../../mod/regmod.php:52
 #, php-format
 msgid "Registration details for %s"
 msgstr ""
 
-#: ../../mod/register.php:373
+#: ../../mod/register.php:96
 msgid ""
 "Registration successful. Please check your email for further instructions."
 msgstr ""
 
-#: ../../mod/register.php:377
+#: ../../mod/register.php:100
 msgid "Failed to send email message. Here is the message that failed."
 msgstr ""
 
-#: ../../mod/register.php:382
+#: ../../mod/register.php:105
 msgid "Your registration can not be processed."
 msgstr ""
 
-#: ../../mod/register.php:419
+#: ../../mod/register.php:142
 #, php-format
 msgid "Registration request at %s"
 msgstr ""
 
-#: ../../mod/register.php:428
+#: ../../mod/register.php:151
 msgid "Your registration is pending approval by the site owner."
 msgstr ""
 
-#: ../../mod/register.php:466
+#: ../../mod/register.php:189
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
 msgstr ""
 
-#: ../../mod/register.php:492
+#: ../../mod/register.php:215
 msgid ""
 "You may (optionally) fill in this form via OpenID by supplying your OpenID "
 "and clicking 'Register'."
 msgstr ""
 
-#: ../../mod/register.php:493
+#: ../../mod/register.php:216
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
 msgstr ""
 
-#: ../../mod/register.php:494
+#: ../../mod/register.php:217
 msgid "Your OpenID (optional): "
 msgstr ""
 
-#: ../../mod/register.php:508
+#: ../../mod/register.php:231
 msgid "Include your profile in member directory?"
 msgstr ""
 
-#: ../../mod/register.php:528
+#: ../../mod/register.php:251
 msgid "Membership on this site is by invitation only."
 msgstr ""
 
-#: ../../mod/register.php:529
+#: ../../mod/register.php:252
 msgid "Your invitation ID: "
 msgstr ""
 
-#: ../../mod/register.php:532 ../../mod/admin.php:418
+#: ../../mod/register.php:255 ../../mod/admin.php:418
 msgid "Registration"
 msgstr ""
 
-#: ../../mod/register.php:540
+#: ../../mod/register.php:263
 msgid "Your Full Name (e.g. Joe Smith): "
 msgstr ""
 
-#: ../../mod/register.php:541
+#: ../../mod/register.php:264
 msgid "Your Email Address: "
 msgstr ""
 
-#: ../../mod/register.php:542
+#: ../../mod/register.php:265
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be '<strong>nickname@$sitename</"
 "strong>'."
 msgstr ""
 
-#: ../../mod/register.php:543
+#: ../../mod/register.php:266
 msgid "Choose a nickname: "
 msgstr ""
 
-#: ../../mod/register.php:546 ../../include/nav.php:81 ../../boot.php:792
+#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:792
 msgid "Register"
 msgstr ""
 
@@ -2819,8 +2765,8 @@ msgstr ""
 #: ../../addon/facebook/facebook.php:1572
 #: ../../addon/communityhome/communityhome.php:158
 #: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:560
-#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1662
+#: ../../view/theme/diabook/theme.php:565
+#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1662
 #: ../../include/conversation.php:48 ../../include/conversation.php:57
 #: ../../include/conversation.php:121 ../../include/conversation.php:130
 msgid "status"
@@ -2828,7 +2774,7 @@ msgstr ""
 
 #: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1576
 #: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1678
+#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1678
 #: ../../include/conversation.php:65
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
@@ -2841,7 +2787,7 @@ msgstr ""
 
 #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
 #: ../../mod/admin.php:697 ../../mod/admin.php:896 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3168
+#: ../../mod/display.php:142 ../../include/items.php:3179
 msgid "Item not found."
 msgstr ""
 
@@ -2849,7 +2795,7 @@ msgstr ""
 msgid "Access denied."
 msgstr ""
 
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:125
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:130
 #: ../../include/nav.php:51 ../../boot.php:1511
 msgid "Photos"
 msgstr ""
@@ -2885,28 +2831,28 @@ msgstr ""
 msgid "Wall Photos"
 msgstr ""
 
-#: ../../mod/item.php:788
+#: ../../mod/item.php:800
 msgid "System error. Post not saved."
 msgstr ""
 
-#: ../../mod/item.php:813
+#: ../../mod/item.php:825
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social network."
 msgstr ""
 
-#: ../../mod/item.php:815
+#: ../../mod/item.php:827
 #, php-format
 msgid "You may visit them online at %s"
 msgstr ""
 
-#: ../../mod/item.php:816
+#: ../../mod/item.php:828
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr ""
 
-#: ../../mod/item.php:818
+#: ../../mod/item.php:830
 #, php-format
 msgid "%s posted an update."
 msgstr ""
@@ -3091,10 +3037,6 @@ msgstr ""
 msgid "DB updates"
 msgstr ""
 
-#: ../../mod/admin.php:101
-msgid "Software Update"
-msgstr ""
-
 #: ../../mod/admin.php:115 ../../mod/admin.php:1074
 msgid "Logs"
 msgstr ""
@@ -3103,6 +3045,22 @@ msgstr ""
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
+#: ../../mod/admin.php:180 ../../mod/admin.php:634
+msgid "Normal Account"
+msgstr ""
+
+#: ../../mod/admin.php:181 ../../mod/admin.php:635
+msgid "Soapbox Account"
+msgstr ""
+
+#: ../../mod/admin.php:182 ../../mod/admin.php:636
+msgid "Community/Celebrity Account"
+msgstr ""
+
+#: ../../mod/admin.php:183 ../../mod/admin.php:637
+msgid "Automatic Friend Account"
+msgstr ""
+
 #: ../../mod/admin.php:202
 msgid "Message queues"
 msgstr ""
@@ -3708,59 +3666,8 @@ msgstr ""
 msgid "Login failed."
 msgstr ""
 
-#: ../../mod/follow.php:30
-msgid "Connect URL missing."
-msgstr ""
-
-#: ../../mod/follow.php:56
-msgid ""
-"This site is not configured to allow communications with other networks."
-msgstr ""
-
-#: ../../mod/follow.php:57 ../../mod/follow.php:72
-msgid "No compatible communication protocols or feeds were discovered."
-msgstr ""
-
-#: ../../mod/follow.php:70
-msgid "The profile address specified does not provide adequate information."
-msgstr ""
-
-#: ../../mod/follow.php:74
-msgid "An author or name was not found."
-msgstr ""
-
-#: ../../mod/follow.php:76
-msgid "No browser URL could be matched to this address."
-msgstr ""
-
-#: ../../mod/follow.php:78
-msgid ""
-"Unable to match @-style Identity Address with a known protocol or email "
-"contact."
-msgstr ""
-
-#: ../../mod/follow.php:79
-msgid "Use mailto: in front of address to force email check."
-msgstr ""
-
-#: ../../mod/follow.php:85
-msgid ""
-"The profile address specified belongs to a network which has been disabled "
-"on this site."
-msgstr ""
-
-#: ../../mod/follow.php:90
-msgid ""
-"Limited profile. This person will be unable to receive direct/personal "
-"notifications from you."
-msgstr ""
-
-#: ../../mod/follow.php:161
-msgid "Unable to retrieve contact information."
-msgstr ""
-
-#: ../../mod/follow.php:216
-msgid "following"
+#: ../../mod/follow.php:27
+msgid "Contact added"
 msgstr ""
 
 #: ../../mod/common.php:42
@@ -3788,8 +3695,8 @@ msgstr ""
 msgid "Search"
 msgstr ""
 
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:384
-#: ../../mod/profiles.php:498 ../../mod/dfrn_confirm.php:62
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:395
+#: ../../mod/profiles.php:509 ../../mod/dfrn_confirm.php:62
 msgid "Profile not found."
 msgstr ""
 
@@ -3797,281 +3704,289 @@ msgstr ""
 msgid "Profile Name is required."
 msgstr ""
 
-#: ../../mod/profiles.php:145
+#: ../../mod/profiles.php:152
 msgid "Marital Status"
 msgstr ""
 
-#: ../../mod/profiles.php:149
+#: ../../mod/profiles.php:156
 msgid "Romantic Partner"
 msgstr ""
 
-#: ../../mod/profiles.php:153
+#: ../../mod/profiles.php:160
 msgid "Work/Employment"
 msgstr ""
 
-#: ../../mod/profiles.php:156
+#: ../../mod/profiles.php:163
 msgid "Religion"
 msgstr ""
 
-#: ../../mod/profiles.php:160
+#: ../../mod/profiles.php:167
 msgid "Political Views"
 msgstr ""
 
-#: ../../mod/profiles.php:164
+#: ../../mod/profiles.php:171
 msgid "Gender"
 msgstr ""
 
-#: ../../mod/profiles.php:168
+#: ../../mod/profiles.php:175
 msgid "Sexual Preference"
 msgstr ""
 
-#: ../../mod/profiles.php:172
+#: ../../mod/profiles.php:179
 msgid "Homepage"
 msgstr ""
 
-#: ../../mod/profiles.php:176
+#: ../../mod/profiles.php:183
 msgid "Interests"
 msgstr ""
 
-#: ../../mod/profiles.php:180
+#: ../../mod/profiles.php:187
 msgid "Address"
 msgstr ""
 
-#: ../../mod/profiles.php:187
+#: ../../mod/profiles.php:194
 msgid "Location"
 msgstr ""
 
-#: ../../mod/profiles.php:262
+#: ../../mod/profiles.php:273
 msgid "Profile updated."
 msgstr ""
 
-#: ../../mod/profiles.php:329
+#: ../../mod/profiles.php:340
 msgid " and "
 msgstr ""
 
-#: ../../mod/profiles.php:337
+#: ../../mod/profiles.php:348
 msgid "public profile"
 msgstr ""
 
-#: ../../mod/profiles.php:340
+#: ../../mod/profiles.php:351
 #, php-format
 msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
 msgstr ""
 
-#: ../../mod/profiles.php:341
+#: ../../mod/profiles.php:352
 #, php-format
 msgid " - Visit %1$s's %2$s"
 msgstr ""
 
-#: ../../mod/profiles.php:344
+#: ../../mod/profiles.php:355
 #, php-format
 msgid "%1$s has an updated %2$s, changing %3$s."
 msgstr ""
 
-#: ../../mod/profiles.php:403
+#: ../../mod/profiles.php:414
 msgid "Profile deleted."
 msgstr ""
 
-#: ../../mod/profiles.php:421 ../../mod/profiles.php:455
+#: ../../mod/profiles.php:432 ../../mod/profiles.php:466
 msgid "Profile-"
 msgstr ""
 
-#: ../../mod/profiles.php:440 ../../mod/profiles.php:482
+#: ../../mod/profiles.php:451 ../../mod/profiles.php:493
 msgid "New profile created."
 msgstr ""
 
-#: ../../mod/profiles.php:461
+#: ../../mod/profiles.php:472
 msgid "Profile unavailable to clone."
 msgstr ""
 
-#: ../../mod/profiles.php:519
+#: ../../mod/profiles.php:530
 msgid "Hide your contact/friend list from viewers of this profile?"
 msgstr ""
 
-#: ../../mod/profiles.php:542
+#: ../../mod/profiles.php:553
 msgid "Edit Profile Details"
 msgstr ""
 
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:555
 msgid "View this profile"
 msgstr ""
 
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:556
 msgid "Create a new profile using these settings"
 msgstr ""
 
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:557
 msgid "Clone this profile"
 msgstr ""
 
-#: ../../mod/profiles.php:547
+#: ../../mod/profiles.php:558
 msgid "Delete this profile"
 msgstr ""
 
-#: ../../mod/profiles.php:548
+#: ../../mod/profiles.php:559
 msgid "Profile Name:"
 msgstr ""
 
-#: ../../mod/profiles.php:549
+#: ../../mod/profiles.php:560
 msgid "Your Full Name:"
 msgstr ""
 
-#: ../../mod/profiles.php:550
+#: ../../mod/profiles.php:561
 msgid "Title/Description:"
 msgstr ""
 
-#: ../../mod/profiles.php:551
+#: ../../mod/profiles.php:562
 msgid "Your Gender:"
 msgstr ""
 
-#: ../../mod/profiles.php:552
+#: ../../mod/profiles.php:563
 #, php-format
 msgid "Birthday (%s):"
 msgstr ""
 
-#: ../../mod/profiles.php:553
+#: ../../mod/profiles.php:564
 msgid "Street Address:"
 msgstr ""
 
-#: ../../mod/profiles.php:554
+#: ../../mod/profiles.php:565
 msgid "Locality/City:"
 msgstr ""
 
-#: ../../mod/profiles.php:555
+#: ../../mod/profiles.php:566
 msgid "Postal/Zip Code:"
 msgstr ""
 
-#: ../../mod/profiles.php:556
+#: ../../mod/profiles.php:567
 msgid "Country:"
 msgstr ""
 
-#: ../../mod/profiles.php:557
+#: ../../mod/profiles.php:568
 msgid "Region/State:"
 msgstr ""
 
-#: ../../mod/profiles.php:558
+#: ../../mod/profiles.php:569
 msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
 msgstr ""
 
-#: ../../mod/profiles.php:559
+#: ../../mod/profiles.php:570
 msgid "Who: (if applicable)"
 msgstr ""
 
-#: ../../mod/profiles.php:560
+#: ../../mod/profiles.php:571
 msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
 msgstr ""
 
-#: ../../mod/profiles.php:561 ../../include/profile_advanced.php:43
+#: ../../mod/profiles.php:572
+msgid "Since [date]:"
+msgstr ""
+
+#: ../../mod/profiles.php:573 ../../include/profile_advanced.php:46
 msgid "Sexual Preference:"
 msgstr ""
 
-#: ../../mod/profiles.php:562
+#: ../../mod/profiles.php:574
 msgid "Homepage URL:"
 msgstr ""
 
-#: ../../mod/profiles.php:563 ../../include/profile_advanced.php:49
+#: ../../mod/profiles.php:575 ../../include/profile_advanced.php:50
+msgid "Hometown:"
+msgstr ""
+
+#: ../../mod/profiles.php:576 ../../include/profile_advanced.php:54
 msgid "Political Views:"
 msgstr ""
 
-#: ../../mod/profiles.php:564
+#: ../../mod/profiles.php:577
 msgid "Religious Views:"
 msgstr ""
 
-#: ../../mod/profiles.php:565
+#: ../../mod/profiles.php:578
 msgid "Public Keywords:"
 msgstr ""
 
-#: ../../mod/profiles.php:566
+#: ../../mod/profiles.php:579
 msgid "Private Keywords:"
 msgstr ""
 
-#: ../../mod/profiles.php:567
+#: ../../mod/profiles.php:580
 msgid "Example: fishing photography software"
 msgstr ""
 
-#: ../../mod/profiles.php:568
+#: ../../mod/profiles.php:581
 msgid "(Used for suggesting potential friends, can be seen by others)"
 msgstr ""
 
-#: ../../mod/profiles.php:569
+#: ../../mod/profiles.php:582
 msgid "(Used for searching profiles, never shown to others)"
 msgstr ""
 
-#: ../../mod/profiles.php:570
+#: ../../mod/profiles.php:583
 msgid "Tell us about yourself..."
 msgstr ""
 
-#: ../../mod/profiles.php:571
+#: ../../mod/profiles.php:584
 msgid "Hobbies/Interests"
 msgstr ""
 
-#: ../../mod/profiles.php:572
+#: ../../mod/profiles.php:585
 msgid "Contact information and Social Networks"
 msgstr ""
 
-#: ../../mod/profiles.php:573
+#: ../../mod/profiles.php:586
 msgid "Musical interests"
 msgstr ""
 
-#: ../../mod/profiles.php:574
+#: ../../mod/profiles.php:587
 msgid "Books, literature"
 msgstr ""
 
-#: ../../mod/profiles.php:575
+#: ../../mod/profiles.php:588
 msgid "Television"
 msgstr ""
 
-#: ../../mod/profiles.php:576
+#: ../../mod/profiles.php:589
 msgid "Film/dance/culture/entertainment"
 msgstr ""
 
-#: ../../mod/profiles.php:577
+#: ../../mod/profiles.php:590
 msgid "Love/romance"
 msgstr ""
 
-#: ../../mod/profiles.php:578
+#: ../../mod/profiles.php:591
 msgid "Work/employment"
 msgstr ""
 
-#: ../../mod/profiles.php:579
+#: ../../mod/profiles.php:592
 msgid "School/education"
 msgstr ""
 
-#: ../../mod/profiles.php:584
+#: ../../mod/profiles.php:597
 msgid ""
 "This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
 "be visible to anybody using the internet."
 msgstr ""
 
-#: ../../mod/profiles.php:594 ../../mod/directory.php:111
+#: ../../mod/profiles.php:607 ../../mod/directory.php:111
 msgid "Age: "
 msgstr ""
 
-#: ../../mod/profiles.php:629
+#: ../../mod/profiles.php:644
 msgid "Edit/Manage Profiles"
 msgstr ""
 
-#: ../../mod/profiles.php:630 ../../boot.php:1066
+#: ../../mod/profiles.php:645 ../../boot.php:1066
 msgid "Change profile photo"
 msgstr ""
 
-#: ../../mod/profiles.php:631 ../../boot.php:1067
+#: ../../mod/profiles.php:646 ../../boot.php:1067
 msgid "Create New Profile"
 msgstr ""
 
-#: ../../mod/profiles.php:642 ../../boot.php:1077
+#: ../../mod/profiles.php:657 ../../boot.php:1077
 msgid "Profile Image"
 msgstr ""
 
-#: ../../mod/profiles.php:644 ../../boot.php:1080
+#: ../../mod/profiles.php:659 ../../boot.php:1080
 msgid "visible to everybody"
 msgstr ""
 
-#: ../../mod/profiles.php:645 ../../boot.php:1081
+#: ../../mod/profiles.php:660 ../../boot.php:1081
 msgid "Edit visibility"
 msgstr ""
 
-#: ../../mod/filer.php:29 ../../include/conversation.php:926
+#: ../../mod/filer.php:29 ../../include/conversation.php:947
 msgid "Save to Folder:"
 msgstr ""
 
@@ -4119,7 +4034,7 @@ msgstr ""
 msgid "No entries."
 msgstr ""
 
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:621
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626
 #: ../../include/contact_widgets.php:34
 msgid "Friend Suggestions"
 msgstr ""
@@ -4134,7 +4049,7 @@ msgstr ""
 msgid "Ignore/Hide"
 msgstr ""
 
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:619
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
 msgid "Global Directory"
 msgstr ""
 
@@ -4244,83 +4159,83 @@ msgid ""
 "has already been approved."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:235
+#: ../../mod/dfrn_confirm.php:237
 msgid "Response from remote site was not understood."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:244
+#: ../../mod/dfrn_confirm.php:246
 msgid "Unexpected response from remote site: "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:252
+#: ../../mod/dfrn_confirm.php:254
 msgid "Confirmation completed successfully."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:254 ../../mod/dfrn_confirm.php:268
-#: ../../mod/dfrn_confirm.php:275
+#: ../../mod/dfrn_confirm.php:256 ../../mod/dfrn_confirm.php:270
+#: ../../mod/dfrn_confirm.php:277
 msgid "Remote site reported: "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:266
+#: ../../mod/dfrn_confirm.php:268
 msgid "Temporary failure. Please wait and try again."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:273
+#: ../../mod/dfrn_confirm.php:275
 msgid "Introduction failed or was revoked."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:418
+#: ../../mod/dfrn_confirm.php:420
 msgid "Unable to set contact photo."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:475 ../../include/diaspora.php:507
+#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:507
 #: ../../include/conversation.php:101
 #, php-format
 msgid "%1$s is now friends with %2$s"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:557
+#: ../../mod/dfrn_confirm.php:562
 #, php-format
 msgid "No user record found for '%s' "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:567
+#: ../../mod/dfrn_confirm.php:572
 msgid "Our site encryption key is apparently messed up."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:578
+#: ../../mod/dfrn_confirm.php:583
 msgid "Empty site URL was provided or URL could not be decrypted by us."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:599
+#: ../../mod/dfrn_confirm.php:604
 msgid "Contact record was not found for you on our site."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:613
+#: ../../mod/dfrn_confirm.php:618
 #, php-format
 msgid "Site public key not available in contact record for URL %s."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:633
+#: ../../mod/dfrn_confirm.php:638
 msgid ""
 "The ID provided by your system is a duplicate on our system. It should work "
 "if you try again."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:644
+#: ../../mod/dfrn_confirm.php:649
 msgid "Unable to set your contact credentials on our system."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:709
+#: ../../mod/dfrn_confirm.php:716
 msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:743
+#: ../../mod/dfrn_confirm.php:750
 #, php-format
 msgid "Connection accepted at %s"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:792
+#: ../../mod/dfrn_confirm.php:799
 #, php-format
 msgid "%1$s has joined %2$s"
 msgstr ""
@@ -4674,7 +4589,7 @@ msgid "Forums"
 msgstr ""
 
 #: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87
-#: ../../include/contact_widgets.php:188 ../../include/conversation.php:470
+#: ../../include/contact_widgets.php:188 ../../include/conversation.php:476
 #: ../../boot.php:515
 msgid "show more"
 msgstr ""
@@ -4719,7 +4634,7 @@ msgid "Latest likes"
 msgstr ""
 
 #: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:557 ../../include/text.php:1309
+#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1314
 #: ../../include/conversation.php:45 ../../include/conversation.php:118
 msgid "event"
 msgstr ""
@@ -5681,153 +5596,153 @@ msgstr ""
 msgid "Color scheme"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:122 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:49
 #: ../../include/nav.php:115
 msgid "Your posts and conversations"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:50
 msgid "Your profile page"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:124
+#: ../../view/theme/diabook/theme.php:129
 msgid "Your contacts"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:125 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:130 ../../include/nav.php:51
 msgid "Your photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:131 ../../include/nav.php:52
 msgid "Your events"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Personal notes"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Your personal photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:129
-#: ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:134
+#: ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:747
 #: ../../view/theme/diabook/config.php:201
 msgid "Community Pages"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:485
-#: ../../view/theme/diabook/theme.php:744
+#: ../../view/theme/diabook/theme.php:490
+#: ../../view/theme/diabook/theme.php:749
 #: ../../view/theme/diabook/config.php:203
 msgid "Community Profiles"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:506
-#: ../../view/theme/diabook/theme.php:749
+#: ../../view/theme/diabook/theme.php:511
+#: ../../view/theme/diabook/theme.php:754
 #: ../../view/theme/diabook/config.php:208
 msgid "Last users"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:535
-#: ../../view/theme/diabook/theme.php:751
+#: ../../view/theme/diabook/theme.php:540
+#: ../../view/theme/diabook/theme.php:756
 #: ../../view/theme/diabook/config.php:210
 msgid "Last likes"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:580
-#: ../../view/theme/diabook/theme.php:750
+#: ../../view/theme/diabook/theme.php:585
+#: ../../view/theme/diabook/theme.php:755
 #: ../../view/theme/diabook/config.php:209
 msgid "Last photos"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:617
-#: ../../view/theme/diabook/theme.php:747
+#: ../../view/theme/diabook/theme.php:622
+#: ../../view/theme/diabook/theme.php:752
 #: ../../view/theme/diabook/config.php:206
 msgid "Find Friends"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:618
+#: ../../view/theme/diabook/theme.php:623
 msgid "Local Directory"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:620 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:625 ../../include/contact_widgets.php:35
 msgid "Similar Interests"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:622 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:627 ../../include/contact_widgets.php:37
 msgid "Invite Friends"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:673
-#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:748
 #: ../../view/theme/diabook/config.php:202
 msgid "Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:683
 msgid "Set zoomfactor for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:679
+#: ../../view/theme/diabook/theme.php:684
 #: ../../view/theme/diabook/config.php:199
 msgid "Set longitude (X) for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:680
+#: ../../view/theme/diabook/theme.php:685
 #: ../../view/theme/diabook/config.php:200
 msgid "Set latitude (Y) for Earth Layers"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:693
-#: ../../view/theme/diabook/theme.php:745
+#: ../../view/theme/diabook/theme.php:698
+#: ../../view/theme/diabook/theme.php:750
 #: ../../view/theme/diabook/config.php:204
 msgid "Help or @NewHere ?"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:700
-#: ../../view/theme/diabook/theme.php:746
+#: ../../view/theme/diabook/theme.php:705
+#: ../../view/theme/diabook/theme.php:751
 #: ../../view/theme/diabook/config.php:205
 msgid "Connect Services"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:707
-#: ../../view/theme/diabook/theme.php:748
+#: ../../view/theme/diabook/theme.php:712
+#: ../../view/theme/diabook/theme.php:753
 msgid "Last Tweets"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:710
+#: ../../view/theme/diabook/theme.php:715
 #: ../../view/theme/diabook/config.php:197
 msgid "Set twitter search term"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:288
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:288
 msgid "don't show"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:287
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:287
 msgid "show"
 msgstr ""
 
-#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:745
 msgid "Show/hide boxes at right-hand column:"
 msgstr ""
 
@@ -5880,8 +5795,8 @@ msgstr ""
 msgid "j F"
 msgstr ""
 
-#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
-#: ../../include/items.php:1419
+#: ../../include/profile_advanced.php:30 ../../include/datetime.php:450
+#: ../../include/items.php:1423
 msgid "Birthday:"
 msgstr ""
 
@@ -5893,55 +5808,60 @@ msgstr ""
 msgid "Status:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:45 ../../boot.php:1107
+#: ../../include/profile_advanced.php:43
+#, php-format
+msgid "for %1$d %2$s"
+msgstr ""
+
+#: ../../include/profile_advanced.php:48 ../../boot.php:1107
 msgid "Homepage:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:47
+#: ../../include/profile_advanced.php:52
 msgid "Tags:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:51
+#: ../../include/profile_advanced.php:56
 msgid "Religion:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:53
+#: ../../include/profile_advanced.php:58
 msgid "About:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:55
+#: ../../include/profile_advanced.php:60
 msgid "Hobbies/Interests:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:57
+#: ../../include/profile_advanced.php:62
 msgid "Contact information and Social Networks:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:59
+#: ../../include/profile_advanced.php:64
 msgid "Musical interests:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:61
+#: ../../include/profile_advanced.php:66
 msgid "Books, literature:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:63
+#: ../../include/profile_advanced.php:68
 msgid "Television:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:65
+#: ../../include/profile_advanced.php:70
 msgid "Film/dance/culture/entertainment:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:67
+#: ../../include/profile_advanced.php:72
 msgid "Love/Romance:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:69
+#: ../../include/profile_advanced.php:74
 msgid "Work/employment:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:71
+#: ../../include/profile_advanced.php:76
 msgid "School/education:"
 msgstr ""
 
@@ -6161,7 +6081,7 @@ msgstr ""
 msgid "Sex Addict"
 msgstr ""
 
-#: ../../include/profile_selectors.php:42
+#: ../../include/profile_selectors.php:42 ../../include/user.php:272
 msgid "Friends"
 msgstr ""
 
@@ -6261,7 +6181,7 @@ msgstr ""
 msgid "(no subject)"
 msgstr ""
 
-#: ../../include/delivery.php:462 ../../include/enotify.php:23
+#: ../../include/delivery.php:462 ../../include/enotify.php:26
 #: ../../include/notifier.php:684
 msgid "noreply"
 msgstr ""
@@ -6293,127 +6213,127 @@ msgid_plural "%d Contacts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Monday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Tuesday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Wednesday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Thursday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Friday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Saturday"
 msgstr ""
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Sunday"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "January"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "February"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "March"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "April"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "May"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "June"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "July"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "August"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "September"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "October"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "November"
 msgstr ""
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "December"
 msgstr ""
 
-#: ../../include/text.php:920
+#: ../../include/text.php:925
 msgid "bytes"
 msgstr ""
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:945 ../../include/text.php:960
 msgid "remove"
 msgstr ""
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:945 ../../include/text.php:960
 msgid "[remove]"
 msgstr ""
 
-#: ../../include/text.php:943
+#: ../../include/text.php:948
 msgid "Categories:"
 msgstr ""
 
-#: ../../include/text.php:958
+#: ../../include/text.php:963
 msgid "Filed under:"
 msgstr ""
 
-#: ../../include/text.php:974 ../../include/text.php:986
+#: ../../include/text.php:979 ../../include/text.php:991
 msgid "Click to open/close"
 msgstr ""
 
-#: ../../include/text.php:1091
+#: ../../include/text.php:1096 ../../include/user.php:230
 msgid "default"
 msgstr ""
 
-#: ../../include/text.php:1103
+#: ../../include/text.php:1108
 msgid "Select an alternate language"
 msgstr ""
 
-#: ../../include/text.php:1313
+#: ../../include/text.php:1318
 msgid "activity"
 msgstr ""
 
-#: ../../include/text.php:1315
+#: ../../include/text.php:1320
 msgid "comment"
 msgstr ""
 
-#: ../../include/text.php:1316
+#: ../../include/text.php:1321
 msgid "post"
 msgstr ""
 
-#: ../../include/text.php:1471
+#: ../../include/text.php:1476
 msgid "Item filed"
 msgstr ""
 
@@ -6425,7 +6345,7 @@ msgstr ""
 msgid "Attachments:"
 msgstr ""
 
-#: ../../include/diaspora.php:2160
+#: ../../include/diaspora.php:2168
 #, php-format
 msgid "[Relayed] Comment authored by %s from network %s"
 msgstr ""
@@ -6730,7 +6650,7 @@ msgstr ""
 msgid "seconds"
 msgstr ""
 
-#: ../../include/datetime.php:277
+#: ../../include/datetime.php:278
 #, php-format
 msgid "%1$d %2$s ago"
 msgstr ""
@@ -6739,11 +6659,11 @@ msgstr ""
 msgid "From: "
 msgstr ""
 
-#: ../../include/bbcode.php:203 ../../include/bbcode.php:223
+#: ../../include/bbcode.php:210 ../../include/bbcode.php:230
 msgid "$1 wrote:"
 msgstr ""
 
-#: ../../include/bbcode.php:238 ../../include/bbcode.php:307
+#: ../../include/bbcode.php:245 ../../include/bbcode.php:314
 msgid "Image/photo"
 msgstr ""
 
@@ -6773,186 +6693,241 @@ msgstr ""
 msgid "%s Administrator"
 msgstr ""
 
-#: ../../include/enotify.php:35
+#: ../../include/enotify.php:38
 #, php-format
 msgid "%s <!item_type!>"
 msgstr ""
 
-#: ../../include/enotify.php:39
+#: ../../include/enotify.php:42
 #, php-format
 msgid "[Friendica:Notify] New mail received at %s"
 msgstr ""
 
-#: ../../include/enotify.php:41
+#: ../../include/enotify.php:44
 #, php-format
 msgid "%s sent you a new private message at %s."
 msgstr ""
 
-#: ../../include/enotify.php:42
+#: ../../include/enotify.php:45
 #, php-format
 msgid "%s sent you %s."
 msgstr ""
 
-#: ../../include/enotify.php:42
+#: ../../include/enotify.php:45
 msgid "a private message"
 msgstr ""
 
-#: ../../include/enotify.php:43
+#: ../../include/enotify.php:46
 #, php-format
 msgid "Please visit %s to view and/or reply to your private messages."
 msgstr ""
 
-#: ../../include/enotify.php:73
+#: ../../include/enotify.php:76
 #, php-format
 msgid "%s's"
 msgstr ""
 
-#: ../../include/enotify.php:77
+#: ../../include/enotify.php:80
 msgid "your"
 msgstr ""
 
-#: ../../include/enotify.php:84
+#: ../../include/enotify.php:87
 #, php-format
 msgid "[Friendica:Notify] Comment to conversation #%d by %s"
 msgstr ""
 
-#: ../../include/enotify.php:85
+#: ../../include/enotify.php:88
 #, php-format
 msgid "%s commented on an item/conversation you have been following."
 msgstr ""
 
-#: ../../include/enotify.php:86
+#: ../../include/enotify.php:89
 #, php-format
 msgid "%s commented on %s."
 msgstr ""
 
-#: ../../include/enotify.php:88 ../../include/enotify.php:101
-#: ../../include/enotify.php:112 ../../include/enotify.php:123
+#: ../../include/enotify.php:91 ../../include/enotify.php:104
+#: ../../include/enotify.php:115 ../../include/enotify.php:126
 #, php-format
 msgid "Please visit %s to view and/or reply to the conversation."
 msgstr ""
 
-#: ../../include/enotify.php:95
+#: ../../include/enotify.php:98
 #, php-format
 msgid "[Friendica:Notify] %s posted to your profile wall"
 msgstr ""
 
-#: ../../include/enotify.php:97
+#: ../../include/enotify.php:100
 #, php-format
 msgid "%s posted to your profile wall at %s"
 msgstr ""
 
-#: ../../include/enotify.php:99
+#: ../../include/enotify.php:102
 #, php-format
 msgid "%s posted to %s"
 msgstr ""
 
-#: ../../include/enotify.php:99
+#: ../../include/enotify.php:102
 msgid "your profile wall."
 msgstr ""
 
-#: ../../include/enotify.php:108
+#: ../../include/enotify.php:111
 #, php-format
 msgid "[Friendica:Notify] %s tagged you"
 msgstr ""
 
-#: ../../include/enotify.php:109
+#: ../../include/enotify.php:112
 #, php-format
 msgid "%s tagged you at %s"
 msgstr ""
 
-#: ../../include/enotify.php:110
+#: ../../include/enotify.php:113
 #, php-format
 msgid "%s %s."
 msgstr ""
 
-#: ../../include/enotify.php:110
+#: ../../include/enotify.php:113
 msgid "tagged you"
 msgstr ""
 
-#: ../../include/enotify.php:119
+#: ../../include/enotify.php:122
 #, php-format
 msgid "[Friendica:Notify] %s tagged your post"
 msgstr ""
 
-#: ../../include/enotify.php:120
+#: ../../include/enotify.php:123
 #, php-format
 msgid "%s tagged your post at %s"
 msgstr ""
 
-#: ../../include/enotify.php:121
+#: ../../include/enotify.php:124
 #, php-format
 msgid "%s tagged %s"
 msgstr ""
 
-#: ../../include/enotify.php:121
+#: ../../include/enotify.php:124
 msgid "your post"
 msgstr ""
 
-#: ../../include/enotify.php:130
+#: ../../include/enotify.php:133
 msgid "[Friendica:Notify] Introduction received"
 msgstr ""
 
-#: ../../include/enotify.php:131
+#: ../../include/enotify.php:134
 #, php-format
 msgid "You've received an introduction from '%s' at %s"
 msgstr ""
 
-#: ../../include/enotify.php:132
+#: ../../include/enotify.php:135
 #, php-format
 msgid "You've received %s from %s."
 msgstr ""
 
-#: ../../include/enotify.php:132
+#: ../../include/enotify.php:135
 msgid "an introduction"
 msgstr ""
 
-#: ../../include/enotify.php:133 ../../include/enotify.php:150
+#: ../../include/enotify.php:136 ../../include/enotify.php:153
 #, php-format
 msgid "You may visit their profile at %s"
 msgstr ""
 
-#: ../../include/enotify.php:135
+#: ../../include/enotify.php:138
 #, php-format
 msgid "Please visit %s to approve or reject the introduction."
 msgstr ""
 
-#: ../../include/enotify.php:142
+#: ../../include/enotify.php:145
 msgid "[Friendica:Notify] Friend suggestion received"
 msgstr ""
 
-#: ../../include/enotify.php:143
+#: ../../include/enotify.php:146
 #, php-format
 msgid "You've received a friend suggestion from '%s' at %s"
 msgstr ""
 
-#: ../../include/enotify.php:144
+#: ../../include/enotify.php:147
 #, php-format
 msgid "You've received %s for %s from %s."
 msgstr ""
 
-#: ../../include/enotify.php:145
+#: ../../include/enotify.php:148
 msgid "a friend suggestion"
 msgstr ""
 
-#: ../../include/enotify.php:148
+#: ../../include/enotify.php:151
 msgid "Name:"
 msgstr ""
 
-#: ../../include/enotify.php:149
+#: ../../include/enotify.php:152
 msgid "Photo:"
 msgstr ""
 
-#: ../../include/enotify.php:152
+#: ../../include/enotify.php:155
 #, php-format
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: ../../include/items.php:2736
+#: ../../include/follow.php:32
+msgid "Connect URL missing."
+msgstr ""
+
+#: ../../include/follow.php:59
+msgid ""
+"This site is not configured to allow communications with other networks."
+msgstr ""
+
+#: ../../include/follow.php:60 ../../include/follow.php:75
+msgid "No compatible communication protocols or feeds were discovered."
+msgstr ""
+
+#: ../../include/follow.php:73
+msgid "The profile address specified does not provide adequate information."
+msgstr ""
+
+#: ../../include/follow.php:77
+msgid "An author or name was not found."
+msgstr ""
+
+#: ../../include/follow.php:79
+msgid "No browser URL could be matched to this address."
+msgstr ""
+
+#: ../../include/follow.php:81
+msgid ""
+"Unable to match @-style Identity Address with a known protocol or email "
+"contact."
+msgstr ""
+
+#: ../../include/follow.php:82
+msgid "Use mailto: in front of address to force email check."
+msgstr ""
+
+#: ../../include/follow.php:88
+msgid ""
+"The profile address specified belongs to a network which has been disabled "
+"on this site."
+msgstr ""
+
+#: ../../include/follow.php:93
+msgid ""
+"Limited profile. This person will be unable to receive direct/personal "
+"notifications from you."
+msgstr ""
+
+#: ../../include/follow.php:164
+msgid "Unable to retrieve contact information."
+msgstr ""
+
+#: ../../include/follow.php:218
+msgid "following"
+msgstr ""
+
+#: ../../include/items.php:2740
 msgid "A new person is sharing with you at "
 msgstr ""
 
-#: ../../include/items.php:2736
+#: ../../include/items.php:2740
 msgid "You have a new follower at "
 msgstr ""
 
@@ -6965,6 +6940,74 @@ msgstr ""
 msgid "link"
 msgstr ""
 
+#: ../../include/user.php:38
+msgid "An invitation is required."
+msgstr ""
+
+#: ../../include/user.php:43
+msgid "Invitation could not be verified."
+msgstr ""
+
+#: ../../include/user.php:51
+msgid "Invalid OpenID url"
+msgstr ""
+
+#: ../../include/user.php:66
+msgid "Please enter the required information."
+msgstr ""
+
+#: ../../include/user.php:80
+msgid "Please use a shorter name."
+msgstr ""
+
+#: ../../include/user.php:82
+msgid "Name too short."
+msgstr ""
+
+#: ../../include/user.php:97
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr ""
+
+#: ../../include/user.php:102
+msgid "Your email domain is not among those allowed on this site."
+msgstr ""
+
+#: ../../include/user.php:105
+msgid "Not a valid email address."
+msgstr ""
+
+#: ../../include/user.php:115
+msgid "Cannot use that email."
+msgstr ""
+
+#: ../../include/user.php:121
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr ""
+
+#: ../../include/user.php:127 ../../include/user.php:219
+msgid "Nickname is already registered. Please choose another."
+msgstr ""
+
+#: ../../include/user.php:137
+msgid ""
+"Nickname was once registered here and may not be re-used. Please choose "
+"another."
+msgstr ""
+
+#: ../../include/user.php:153
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr ""
+
+#: ../../include/user.php:205
+msgid "An error occurred during registration. Please try again."
+msgstr ""
+
+#: ../../include/user.php:240
+msgid "An error occurred creating your default profile. Please try again."
+msgstr ""
+
 #: ../../include/security.php:21
 msgid "Welcome "
 msgstr ""
@@ -6987,30 +7030,30 @@ msgstr ""
 msgid "stopped following"
 msgstr ""
 
-#: ../../include/Contact.php:203 ../../include/conversation.php:821
+#: ../../include/Contact.php:203 ../../include/conversation.php:842
 msgid "View Status"
 msgstr ""
 
-#: ../../include/Contact.php:204 ../../include/conversation.php:822
+#: ../../include/Contact.php:204 ../../include/conversation.php:843
 msgid "View Profile"
 msgstr ""
 
-#: ../../include/Contact.php:205 ../../include/conversation.php:823
+#: ../../include/Contact.php:205 ../../include/conversation.php:844
 msgid "View Photos"
 msgstr ""
 
 #: ../../include/Contact.php:206 ../../include/Contact.php:219
-#: ../../include/conversation.php:824
+#: ../../include/conversation.php:845
 msgid "Network Posts"
 msgstr ""
 
 #: ../../include/Contact.php:207 ../../include/Contact.php:219
-#: ../../include/conversation.php:825
+#: ../../include/conversation.php:846
 msgid "Edit Contact"
 msgstr ""
 
 #: ../../include/Contact.php:208 ../../include/Contact.php:219
-#: ../../include/conversation.php:826
+#: ../../include/conversation.php:847
 msgid "Send PM"
 msgstr ""
 
@@ -7023,216 +7066,216 @@ msgstr ""
 msgid "%1$s marked %2$s's %3$s as favorite"
 msgstr ""
 
-#: ../../include/conversation.php:321 ../../include/conversation.php:587
+#: ../../include/conversation.php:327 ../../include/conversation.php:608
 msgid "Select"
 msgstr ""
 
-#: ../../include/conversation.php:338 ../../include/conversation.php:680
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:344 ../../include/conversation.php:701
+#: ../../include/conversation.php:702
 #, php-format
 msgid "View %s's profile @ %s"
 msgstr ""
 
-#: ../../include/conversation.php:348 ../../include/conversation.php:692
+#: ../../include/conversation.php:354 ../../include/conversation.php:713
 #, php-format
 msgid "%s from %s"
 msgstr ""
 
-#: ../../include/conversation.php:363
+#: ../../include/conversation.php:369
 msgid "View in context"
 msgstr ""
 
-#: ../../include/conversation.php:469
+#: ../../include/conversation.php:475
 #, php-format
 msgid "%d comment"
 msgid_plural "%d comments"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../include/conversation.php:533
+#: ../../include/conversation.php:554
 msgid "like"
 msgstr ""
 
-#: ../../include/conversation.php:534
+#: ../../include/conversation.php:555
 msgid "dislike"
 msgstr ""
 
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:557
 msgid "Share this"
 msgstr ""
 
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:557
 msgid "share"
 msgstr ""
 
-#: ../../include/conversation.php:560
+#: ../../include/conversation.php:581
 msgid "Bold"
 msgstr ""
 
-#: ../../include/conversation.php:561
+#: ../../include/conversation.php:582
 msgid "Italic"
 msgstr ""
 
-#: ../../include/conversation.php:562
+#: ../../include/conversation.php:583
 msgid "Underline"
 msgstr ""
 
-#: ../../include/conversation.php:563
+#: ../../include/conversation.php:584
 msgid "Quote"
 msgstr ""
 
-#: ../../include/conversation.php:564
+#: ../../include/conversation.php:585
 msgid "Code"
 msgstr ""
 
-#: ../../include/conversation.php:565
+#: ../../include/conversation.php:586
 msgid "Image"
 msgstr ""
 
-#: ../../include/conversation.php:566
+#: ../../include/conversation.php:587
 msgid "Link"
 msgstr ""
 
-#: ../../include/conversation.php:567
+#: ../../include/conversation.php:588
 msgid "Video"
 msgstr ""
 
-#: ../../include/conversation.php:600
+#: ../../include/conversation.php:621
 msgid "add star"
 msgstr ""
 
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:622
 msgid "remove star"
 msgstr ""
 
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:623
 msgid "toggle star status"
 msgstr ""
 
-#: ../../include/conversation.php:605
+#: ../../include/conversation.php:626
 msgid "starred"
 msgstr ""
 
-#: ../../include/conversation.php:606
+#: ../../include/conversation.php:627
 msgid "add tag"
 msgstr ""
 
-#: ../../include/conversation.php:610
+#: ../../include/conversation.php:631
 msgid "save to folder"
 msgstr ""
 
-#: ../../include/conversation.php:682
+#: ../../include/conversation.php:703
 msgid "to"
 msgstr ""
 
-#: ../../include/conversation.php:683
+#: ../../include/conversation.php:704
 msgid "Wall-to-Wall"
 msgstr ""
 
-#: ../../include/conversation.php:684
+#: ../../include/conversation.php:705
 msgid "via Wall-To-Wall:"
 msgstr ""
 
-#: ../../include/conversation.php:729
+#: ../../include/conversation.php:750
 msgid "Delete Selected Items"
 msgstr ""
 
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:901
 #, php-format
 msgid "%s likes this."
 msgstr ""
 
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:901
 #, php-format
 msgid "%s doesn't like this."
 msgstr ""
 
-#: ../../include/conversation.php:884
+#: ../../include/conversation.php:905
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this."
 msgstr ""
 
-#: ../../include/conversation.php:886
+#: ../../include/conversation.php:907
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this."
 msgstr ""
 
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:913
 msgid "and"
 msgstr ""
 
-#: ../../include/conversation.php:895
+#: ../../include/conversation.php:916
 #, php-format
 msgid ", and %d other people"
 msgstr ""
 
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:917
 #, php-format
 msgid "%s like this."
 msgstr ""
 
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:917
 #, php-format
 msgid "%s don't like this."
 msgstr ""
 
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:942
 msgid "Visible to <strong>everybody</strong>"
 msgstr ""
 
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:944
 msgid "Please enter a video link/URL:"
 msgstr ""
 
-#: ../../include/conversation.php:924
+#: ../../include/conversation.php:945
 msgid "Please enter an audio link/URL:"
 msgstr ""
 
-#: ../../include/conversation.php:925
+#: ../../include/conversation.php:946
 msgid "Tag term:"
 msgstr ""
 
-#: ../../include/conversation.php:927
+#: ../../include/conversation.php:948
 msgid "Where are you right now?"
 msgstr ""
 
-#: ../../include/conversation.php:970
+#: ../../include/conversation.php:991
 msgid "upload photo"
 msgstr ""
 
-#: ../../include/conversation.php:972
+#: ../../include/conversation.php:993
 msgid "attach file"
 msgstr ""
 
-#: ../../include/conversation.php:974
+#: ../../include/conversation.php:995
 msgid "web link"
 msgstr ""
 
-#: ../../include/conversation.php:975
+#: ../../include/conversation.php:996
 msgid "Insert video link"
 msgstr ""
 
-#: ../../include/conversation.php:976
+#: ../../include/conversation.php:997
 msgid "video link"
 msgstr ""
 
-#: ../../include/conversation.php:977
+#: ../../include/conversation.php:998
 msgid "Insert audio link"
 msgstr ""
 
-#: ../../include/conversation.php:978
+#: ../../include/conversation.php:999
 msgid "audio link"
 msgstr ""
 
-#: ../../include/conversation.php:980
+#: ../../include/conversation.php:1001
 msgid "set location"
 msgstr ""
 
-#: ../../include/conversation.php:982
+#: ../../include/conversation.php:1003
 msgid "clear location"
 msgstr ""
 
-#: ../../include/conversation.php:989
+#: ../../include/conversation.php:1010
 msgid "permissions"
 msgstr ""
 
index ae78afc2921ded5b2034f35bc6653c3ffed0b5bf..5bc0602377353d14f05b3ad5c63339bbdcde18a5 100644 (file)
@@ -19,8 +19,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: friendica\n"
 "Report-Msgid-Bugs-To: http://bugs.friendica.com/\n"
-"POT-Creation-Date: 2012-05-23 10:00-0700\n"
-"PO-Revision-Date: 2012-05-24 08:21+0000\n"
+"POT-Creation-Date: 2012-06-02 10:00-0700\n"
+"PO-Revision-Date: 2012-06-03 15:30+0000\n"
 "Last-Translator: bavatar <tobias.diekershoff@gmx.net>\n"
 "Language-Team: German (http://www.transifex.net/projects/p/friendica/language/de/)\n"
 "MIME-Version: 1.0\n"
@@ -49,10 +49,10 @@ msgstr "Konnte den Kontakt nicht aktualisieren."
 #: ../../mod/crepair.php:115 ../../mod/wall_attach.php:44
 #: ../../mod/fsuggest.php:78 ../../mod/events.php:138 ../../mod/api.php:26
 #: ../../mod/api.php:31 ../../mod/photos.php:130 ../../mod/photos.php:920
-#: ../../mod/editpost.php:10 ../../mod/install.php:171
+#: ../../mod/editpost.php:10 ../../mod/install.php:151
 #: ../../mod/notifications.php:66 ../../mod/contacts.php:125
-#: ../../mod/settings.php:104 ../../mod/settings.php:535
-#: ../../mod/settings.php:540 ../../mod/manage.php:86 ../../mod/network.php:6
+#: ../../mod/settings.php:106 ../../mod/settings.php:537
+#: ../../mod/settings.php:542 ../../mod/manage.php:86 ../../mod/network.php:6
 #: ../../mod/notes.php:20 ../../mod/wallmessage.php:9
 #: ../../mod/wallmessage.php:33 ../../mod/wallmessage.php:79
 #: ../../mod/wallmessage.php:103 ../../mod/attach.php:33
@@ -64,10 +64,10 @@ msgstr "Konnte den Kontakt nicht aktualisieren."
 #: ../../mod/message.php:96 ../../mod/allfriends.php:9
 #: ../../mod/nogroup.php:25 ../../mod/wall_upload.php:53
 #: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
-#: ../../mod/profiles.php:365 ../../mod/delegate.php:6
+#: ../../mod/profiles.php:382 ../../mod/delegate.php:6
 #: ../../mod/suggest.php:28 ../../mod/invite.php:13 ../../mod/invite.php:81
 #: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:503
-#: ../../include/items.php:3214 ../../index.php:306
+#: ../../include/items.php:3297 ../../index.php:306
 msgid "Permission denied."
 msgstr "Zugriff verweigert."
 
@@ -96,8 +96,8 @@ msgstr "Bitte nutze den Zurück-Button deines Browsers <strong>jetzt</strong>, w
 msgid "Return to contact editor"
 msgstr "Zurück zum Kontakteditor"
 
-#: ../../mod/crepair.php:148 ../../mod/settings.php:555
-#: ../../mod/settings.php:581 ../../mod/admin.php:656 ../../mod/admin.php:665
+#: ../../mod/crepair.php:148 ../../mod/settings.php:557
+#: ../../mod/settings.php:583 ../../mod/admin.php:656 ../../mod/admin.php:665
 msgid "Name"
 msgstr "Name"
 
@@ -137,13 +137,13 @@ msgstr "Neues Foto von dieser URL"
 #: ../../mod/events.php:428 ../../mod/photos.php:955 ../../mod/photos.php:1013
 #: ../../mod/photos.php:1256 ../../mod/photos.php:1296
 #: ../../mod/photos.php:1336 ../../mod/photos.php:1367
-#: ../../mod/install.php:251 ../../mod/install.php:289
+#: ../../mod/install.php:246 ../../mod/install.php:284
 #: ../../mod/localtime.php:45 ../../mod/contacts.php:322
-#: ../../mod/settings.php:553 ../../mod/settings.php:699
-#: ../../mod/settings.php:760 ../../mod/settings.php:964
+#: ../../mod/settings.php:555 ../../mod/settings.php:701
+#: ../../mod/settings.php:762 ../../mod/settings.php:969
 #: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:417
 #: ../../mod/admin.php:653 ../../mod/admin.php:789 ../../mod/admin.php:988
-#: ../../mod/admin.php:1075 ../../mod/profiles.php:534
+#: ../../mod/admin.php:1075 ../../mod/profiles.php:551
 #: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:605
 #: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
 #: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
@@ -171,10 +171,10 @@ msgstr "Neues Foto von dieser URL"
 #: ../../addon/irc/irc.php:55 ../../addon/blogger/blogger.php:102
 #: ../../addon/posterous/posterous.php:103
 #: ../../view/theme/cleanzero/config.php:80
-#: ../../view/theme/diabook/theme.php:752
+#: ../../view/theme/diabook/theme.php:757
 #: ../../view/theme/diabook/config.php:190
 #: ../../view/theme/quattro/config.php:52 ../../view/theme/dispy/config.php:70
-#: ../../include/conversation.php:559
+#: ../../include/conversation.php:574
 msgid "Submit"
 msgstr "Senden"
 
@@ -228,12 +228,12 @@ msgstr "l, F j"
 msgid "Edit event"
 msgstr "Veranstaltung bearbeiten"
 
-#: ../../mod/events.php:300 ../../include/text.php:1060
+#: ../../mod/events.php:300 ../../include/text.php:1064
 msgid "link to source"
 msgstr "Link zum Originalbeitrag"
 
-#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:126
-#: ../../include/nav.php:52 ../../boot.php:1523
+#: ../../mod/events.php:324 ../../view/theme/diabook/theme.php:131
+#: ../../include/nav.php:52 ../../boot.php:1520
 msgid "Events"
 msgstr "Veranstaltungen"
 
@@ -245,7 +245,7 @@ msgstr "Neue Veranstaltung erstellen"
 msgid "Previous"
 msgstr "Vorherige"
 
-#: ../../mod/events.php:327 ../../mod/install.php:210
+#: ../../mod/events.php:327 ../../mod/install.php:205
 msgid "Next"
 msgstr "Nächste"
 
@@ -283,7 +283,7 @@ msgid "Description:"
 msgstr "Beschreibung"
 
 #: ../../mod/events.php:423 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:260 ../../boot.php:1103
+#: ../../include/bb2diaspora.php:265 ../../boot.php:1100
 msgid "Location:"
 msgstr "Ort:"
 
@@ -292,8 +292,8 @@ msgid "Share this event"
 msgstr "Veranstaltung teilen"
 
 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:826 ../../mod/settings.php:554
-#: ../../mod/settings.php:580 ../../addon/js_upload/js_upload.php:45
+#: ../../mod/dfrn_request.php:830 ../../mod/settings.php:556
+#: ../../mod/settings.php:582 ../../addon/js_upload/js_upload.php:45
 msgid "Cancel"
 msgstr "Abbrechen"
 
@@ -336,29 +336,31 @@ msgid ""
 " and/or create new posts for you?"
 msgstr "Möchtest du dieser Anwendung den Zugriff auf deine Beiträge und Kontakte, sowie das Erstellen neuer Beiträge in deinem Namen gestatten?"
 
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:814
-#: ../../mod/settings.php:875 ../../mod/settings.php:881
-#: ../../mod/settings.php:889 ../../mod/settings.php:893
-#: ../../mod/settings.php:898 ../../mod/settings.php:904
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:952 ../../mod/settings.php:953
-#: ../../mod/settings.php:954 ../../mod/settings.php:955
-#: ../../mod/register.php:511 ../../mod/profiles.php:511
+#: ../../mod/api.php:105 ../../mod/dfrn_request.php:818
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:234
+#: ../../mod/profiles.php:528
 msgid "Yes"
 msgstr "Ja"
 
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:815
-#: ../../mod/settings.php:875 ../../mod/settings.php:881
-#: ../../mod/settings.php:889 ../../mod/settings.php:893
-#: ../../mod/settings.php:898 ../../mod/settings.php:904
-#: ../../mod/settings.php:910 ../../mod/settings.php:916
-#: ../../mod/settings.php:952 ../../mod/settings.php:953
-#: ../../mod/settings.php:954 ../../mod/settings.php:955
-#: ../../mod/register.php:512 ../../mod/profiles.php:512
+#: ../../mod/api.php:106 ../../mod/dfrn_request.php:819
+#: ../../mod/settings.php:879 ../../mod/settings.php:885
+#: ../../mod/settings.php:893 ../../mod/settings.php:897
+#: ../../mod/settings.php:902 ../../mod/settings.php:908
+#: ../../mod/settings.php:914 ../../mod/settings.php:920
+#: ../../mod/settings.php:956 ../../mod/settings.php:957
+#: ../../mod/settings.php:958 ../../mod/settings.php:959
+#: ../../mod/settings.php:960 ../../mod/register.php:235
+#: ../../mod/profiles.php:529
 msgid "No"
 msgstr "Nein"
 
-#: ../../mod/photos.php:43 ../../boot.php:1517
+#: ../../mod/photos.php:43 ../../boot.php:1514
 msgid "Photo Albums"
 msgstr "Fotoalben"
 
@@ -366,7 +368,7 @@ msgstr "Fotoalben"
 #: ../../mod/photos.php:1005 ../../mod/photos.php:1020
 #: ../../mod/photos.php:1445 ../../mod/photos.php:1457
 #: ../../addon/communityhome/communityhome.php:110
-#: ../../view/theme/diabook/theme.php:593
+#: ../../view/theme/diabook/theme.php:598
 msgid "Contact Photos"
 msgstr "Kontaktbilder"
 
@@ -374,7 +376,7 @@ msgstr "Kontaktbilder"
 msgid "Upload New Photos"
 msgstr "Weitere Fotos hochladen"
 
-#: ../../mod/photos.php:69 ../../mod/settings.php:20
+#: ../../mod/photos.php:69 ../../mod/settings.php:21
 msgid "everybody"
 msgstr "jeder"
 
@@ -383,13 +385,13 @@ msgid "Contact information unavailable"
 msgstr "Kontaktinformationen nicht verfügbar"
 
 #: ../../mod/photos.php:151 ../../mod/photos.php:652 ../../mod/photos.php:1005
-#: ../../mod/photos.php:1020 ../../mod/register.php:314
-#: ../../mod/register.php:321 ../../mod/register.php:328
-#: ../../mod/profile_photo.php:60 ../../mod/profile_photo.php:67
-#: ../../mod/profile_photo.php:74 ../../mod/profile_photo.php:174
-#: ../../mod/profile_photo.php:252 ../../mod/profile_photo.php:261
+#: ../../mod/photos.php:1020 ../../mod/profile_photo.php:60
+#: ../../mod/profile_photo.php:67 ../../mod/profile_photo.php:74
+#: ../../mod/profile_photo.php:174 ../../mod/profile_photo.php:252
+#: ../../mod/profile_photo.php:261
 #: ../../addon/communityhome/communityhome.php:111
-#: ../../view/theme/diabook/theme.php:594
+#: ../../view/theme/diabook/theme.php:599 ../../include/user.php:294
+#: ../../include/user.php:301 ../../include/user.php:308
 msgid "Profile Photos"
 msgstr "Profilbilder"
 
@@ -411,7 +413,7 @@ msgstr "wurde getaggt in einem"
 
 #: ../../mod/photos.php:583 ../../mod/like.php:127 ../../mod/tagger.php:70
 #: ../../addon/communityhome/communityhome.php:163
-#: ../../view/theme/diabook/theme.php:565 ../../include/text.php:1311
+#: ../../view/theme/diabook/theme.php:570 ../../include/text.php:1315
 #: ../../include/diaspora.php:1662 ../../include/conversation.php:53
 #: ../../include/conversation.php:126
 msgid "photo"
@@ -440,7 +442,7 @@ msgid "Image upload failed."
 msgstr "Hochladen des Bildes gescheitert."
 
 #: ../../mod/photos.php:814 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:740 ../../mod/viewcontacts.php:17
+#: ../../mod/dfrn_request.php:744 ../../mod/viewcontacts.php:17
 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
 msgid "Public access denied."
 msgstr "Öffentlicher Zugriff verweigert."
@@ -519,7 +521,7 @@ msgstr "[Tag entfernen]"
 
 #: ../../mod/photos.php:1243
 msgid "Rotate CW"
-msgstr ""
+msgstr "Im Uhrzeigersinn rotieren"
 
 #: ../../mod/photos.php:1245
 msgid "New album name"
@@ -538,44 +540,44 @@ msgid ""
 "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 msgstr "Beispiel: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 
-#: ../../mod/photos.php:1274 ../../include/conversation.php:533
+#: ../../mod/photos.php:1274 ../../include/conversation.php:548
 msgid "I like this (toggle)"
 msgstr "Ich mag das (toggle)"
 
-#: ../../mod/photos.php:1275 ../../include/conversation.php:534
+#: ../../mod/photos.php:1275 ../../include/conversation.php:549
 msgid "I don't like this (toggle)"
 msgstr "Ich mag das nicht (toggle)"
 
-#: ../../mod/photos.php:1276 ../../include/conversation.php:968
+#: ../../mod/photos.php:1276 ../../include/conversation.php:983
 msgid "Share"
 msgstr "Teilen"
 
 #: ../../mod/photos.php:1277 ../../mod/editpost.php:104
 #: ../../mod/wallmessage.php:145 ../../mod/message.php:214
 #: ../../mod/message.php:408 ../../include/conversation.php:365
-#: ../../include/conversation.php:710 ../../include/conversation.php:987
+#: ../../include/conversation.php:725 ../../include/conversation.php:1002
 msgid "Please wait"
 msgstr "Bitte warten"
 
 #: ../../mod/photos.php:1293 ../../mod/photos.php:1333
-#: ../../mod/photos.php:1364 ../../include/conversation.php:556
+#: ../../mod/photos.php:1364 ../../include/conversation.php:571
 msgid "This is you"
 msgstr "Das bist du"
 
 #: ../../mod/photos.php:1295 ../../mod/photos.php:1335
-#: ../../mod/photos.php:1366 ../../include/conversation.php:558
-#: ../../boot.php:517
+#: ../../mod/photos.php:1366 ../../include/conversation.php:573
+#: ../../boot.php:514
 msgid "Comment"
 msgstr "Kommentar"
 
 #: ../../mod/photos.php:1297 ../../mod/editpost.php:125
-#: ../../include/conversation.php:568 ../../include/conversation.php:1005
+#: ../../include/conversation.php:583 ../../include/conversation.php:1020
 msgid "Preview"
 msgstr "Vorschau"
 
-#: ../../mod/photos.php:1394 ../../mod/settings.php:616
-#: ../../mod/settings.php:697 ../../mod/group.php:168 ../../mod/admin.php:660
-#: ../../include/conversation.php:322 ../../include/conversation.php:588
+#: ../../mod/photos.php:1394 ../../mod/settings.php:618
+#: ../../mod/settings.php:699 ../../mod/group.php:168 ../../mod/admin.php:660
+#: ../../include/conversation.php:322 ../../include/conversation.php:603
 msgid "Delete"
 msgstr "Löschen"
 
@@ -591,12 +593,12 @@ msgstr "Neueste Fotos"
 msgid "Not available."
 msgstr "Nicht verfügbar."
 
-#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:128
+#: ../../mod/community.php:30 ../../view/theme/diabook/theme.php:133
 #: ../../include/nav.php:101
 msgid "Community"
 msgstr "Gemeinschaft"
 
-#: ../../mod/community.php:61 ../../mod/search.php:138
+#: ../../mod/community.php:61 ../../mod/search.php:144
 msgid "No results."
 msgstr "Keine Ergebnisse."
 
@@ -640,28 +642,28 @@ msgstr "Beitrag nicht gefunden"
 msgid "Edit post"
 msgstr "Beitrag bearbeiten"
 
-#: ../../mod/editpost.php:80 ../../include/conversation.php:954
+#: ../../mod/editpost.php:80 ../../include/conversation.php:969
 msgid "Post to Email"
 msgstr "An E-Mail senden"
 
-#: ../../mod/editpost.php:95 ../../mod/settings.php:615
-#: ../../include/conversation.php:575
+#: ../../mod/editpost.php:95 ../../mod/settings.php:617
+#: ../../include/conversation.php:590
 msgid "Edit"
 msgstr "Bearbeiten"
 
 #: ../../mod/editpost.php:96 ../../mod/wallmessage.php:143
 #: ../../mod/message.php:212 ../../mod/message.php:406
-#: ../../include/conversation.php:969
+#: ../../include/conversation.php:984
 msgid "Upload photo"
 msgstr "Foto hochladen"
 
-#: ../../mod/editpost.php:97 ../../include/conversation.php:971
+#: ../../mod/editpost.php:97 ../../include/conversation.php:986
 msgid "Attach file"
 msgstr "Datei anhängen"
 
 #: ../../mod/editpost.php:98 ../../mod/wallmessage.php:144
 #: ../../mod/message.php:213 ../../mod/message.php:407
-#: ../../include/conversation.php:973
+#: ../../include/conversation.php:988
 msgid "Insert web link"
 msgstr "einen Link einfügen"
 
@@ -677,35 +679,35 @@ msgstr "Vorbis [.ogg] Video einfügen"
 msgid "Insert Vorbis [.ogg] audio"
 msgstr "Vorbis [.ogg] Audio einfügen"
 
-#: ../../mod/editpost.php:102 ../../include/conversation.php:979
+#: ../../mod/editpost.php:102 ../../include/conversation.php:994
 msgid "Set your location"
 msgstr "Deinen Standort festlegen"
 
-#: ../../mod/editpost.php:103 ../../include/conversation.php:981
+#: ../../mod/editpost.php:103 ../../include/conversation.php:996
 msgid "Clear browser location"
 msgstr "Browser-Standort leeren"
 
-#: ../../mod/editpost.php:105 ../../include/conversation.php:988
+#: ../../mod/editpost.php:105 ../../include/conversation.php:1003
 msgid "Permission settings"
 msgstr "Berechtigungseinstellungen"
 
-#: ../../mod/editpost.php:113 ../../include/conversation.php:997
+#: ../../mod/editpost.php:113 ../../include/conversation.php:1012
 msgid "CC: email addresses"
 msgstr "Cc:-E-Mail-Addressen"
 
-#: ../../mod/editpost.php:114 ../../include/conversation.php:998
+#: ../../mod/editpost.php:114 ../../include/conversation.php:1013
 msgid "Public post"
 msgstr "Öffentlicher Beitrag"
 
-#: ../../mod/editpost.php:117 ../../include/conversation.php:984
+#: ../../mod/editpost.php:117 ../../include/conversation.php:999
 msgid "Set title"
 msgstr "Titel setzen"
 
-#: ../../mod/editpost.php:119 ../../include/conversation.php:986
+#: ../../mod/editpost.php:119 ../../include/conversation.php:1001
 msgid "Categories (comma-separated list)"
 msgstr "Kategorien (kommasepariert)"
 
-#: ../../mod/editpost.php:120 ../../include/conversation.php:1000
+#: ../../mod/editpost.php:120 ../../include/conversation.php:1015
 msgid "Example: bob@example.com, mary@example.com"
 msgstr "Z.B.: bob@example.com, mary@example.com"
 
@@ -713,201 +715,200 @@ msgstr "Z.B.: bob@example.com, mary@example.com"
 msgid "This introduction has already been accepted."
 msgstr "Diese Kontaktanfrage wurde bereits akzeptiert."
 
-#: ../../mod/dfrn_request.php:117 ../../mod/dfrn_request.php:495
+#: ../../mod/dfrn_request.php:118 ../../mod/dfrn_request.php:497
 msgid "Profile location is not valid or does not contain profile information."
 msgstr "Profiladresse ist ungültig oder stellt einige Profildaten nicht zur Verfügung."
 
-#: ../../mod/dfrn_request.php:122 ../../mod/dfrn_request.php:500
+#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:502
 msgid "Warning: profile location has no identifiable owner name."
 msgstr "Warnung: Es konnte kein Name des Besitzers von der angegebenen Profiladresse gefunden werden."
 
-#: ../../mod/dfrn_request.php:124 ../../mod/dfrn_request.php:502
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:504
 msgid "Warning: profile location has no profile photo."
 msgstr "Warnung: Es konnte kein Profilbild bei der angegebenen Profiladresse gefunden werden."
 
-#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:505
+#: ../../mod/dfrn_request.php:128 ../../mod/dfrn_request.php:507
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] "%d benötigter Parameter wurde an der angegebenen Stelle nicht gefunden"
 msgstr[1] "%d benötigte Parameter wurden an der angegebenen Stelle nicht gefunden"
 
-#: ../../mod/dfrn_request.php:168
+#: ../../mod/dfrn_request.php:170
 msgid "Introduction complete."
 msgstr "Kontaktanfrage abgeschlossen."
 
-#: ../../mod/dfrn_request.php:192
+#: ../../mod/dfrn_request.php:194
 msgid "Unrecoverable protocol error."
 msgstr "Nicht behebbarer Protokollfehler."
 
-#: ../../mod/dfrn_request.php:220
+#: ../../mod/dfrn_request.php:222
 msgid "Profile unavailable."
 msgstr "Profil nicht verfügbar."
 
-#: ../../mod/dfrn_request.php:245
+#: ../../mod/dfrn_request.php:247
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr "%s hat heute zu viele Freundschaftsanfragen erhalten."
 
-#: ../../mod/dfrn_request.php:246
+#: ../../mod/dfrn_request.php:248
 msgid "Spam protection measures have been invoked."
 msgstr "Maßnahmen zum Spamschutz wurden ergriffen."
 
-#: ../../mod/dfrn_request.php:247
+#: ../../mod/dfrn_request.php:249
 msgid "Friends are advised to please try again in 24 hours."
 msgstr "Freunde sind angehalten, es in 24 Stunden erneut zu versuchen."
 
-#: ../../mod/dfrn_request.php:309
+#: ../../mod/dfrn_request.php:311
 msgid "Invalid locator"
 msgstr "Ungültiger Locator"
 
-#: ../../mod/dfrn_request.php:318
+#: ../../mod/dfrn_request.php:320
 msgid "Invalid email address."
 msgstr "Ungültige E-Mail Adresse."
 
-#: ../../mod/dfrn_request.php:344
+#: ../../mod/dfrn_request.php:346
 msgid "This account has not been configured for email. Request failed."
 msgstr "Dieses Konto ist nicht für Email konfiguriert. Anfrage fehlgeschlagen."
 
-#: ../../mod/dfrn_request.php:440
+#: ../../mod/dfrn_request.php:442
 msgid "Unable to resolve your name at the provided location."
 msgstr "Konnte deinen Namen an der angegebenen Stelle nicht finden."
 
-#: ../../mod/dfrn_request.php:453
+#: ../../mod/dfrn_request.php:455
 msgid "You have already introduced yourself here."
 msgstr "Du hast dich hier bereits vorgestellt."
 
-#: ../../mod/dfrn_request.php:457
+#: ../../mod/dfrn_request.php:459
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr "Es scheint so, als ob du bereits mit %s befreundet bist."
 
-#: ../../mod/dfrn_request.php:478
+#: ../../mod/dfrn_request.php:480
 msgid "Invalid profile URL."
 msgstr "Ungültige Profil-URL."
 
-#: ../../mod/dfrn_request.php:484 ../../mod/follow.php:23
+#: ../../mod/dfrn_request.php:486 ../../mod/follow.php:23
 msgid "Disallowed profile URL."
 msgstr "Nicht erlaubte Profil-URL."
 
-#: ../../mod/dfrn_request.php:553 ../../mod/contacts.php:102
+#: ../../mod/dfrn_request.php:555 ../../mod/contacts.php:102
 msgid "Failed to update contact record."
 msgstr "Aktualisierung der Kontaktdaten fehlgeschlagen."
 
-#: ../../mod/dfrn_request.php:574
+#: ../../mod/dfrn_request.php:576
 msgid "Your introduction has been sent."
 msgstr "Deine Kontaktanfrage wurde gesendet."
 
-#: ../../mod/dfrn_request.php:627
+#: ../../mod/dfrn_request.php:629
 msgid "Please login to confirm introduction."
 msgstr "Bitte melde dich an, um die Kontaktanfrage zu bestätigen."
 
-#: ../../mod/dfrn_request.php:641
+#: ../../mod/dfrn_request.php:643
 msgid ""
 "Incorrect identity currently logged in. Please login to "
 "<strong>this</strong> profile."
 msgstr "Momentan bist du mit einer anderen Identität angemeldet. Bitte melde Dich mit <strong>diesem</strong> Profil an."
 
-#: ../../mod/dfrn_request.php:653
+#: ../../mod/dfrn_request.php:654
+msgid "Hide this contact"
+msgstr "Verberge diese Kontakt"
+
+#: ../../mod/dfrn_request.php:657
 #, php-format
 msgid "Welcome home %s."
 msgstr "Willkommen zurück %s."
 
-#: ../../mod/dfrn_request.php:654
+#: ../../mod/dfrn_request.php:658
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr "Bitte bestätige deine Kontaktanfrage bei %s."
 
-#: ../../mod/dfrn_request.php:655
+#: ../../mod/dfrn_request.php:659
 msgid "Confirm"
 msgstr "Bestätigen"
 
-#: ../../mod/dfrn_request.php:696 ../../include/items.php:2729
+#: ../../mod/dfrn_request.php:700 ../../include/items.php:2733
 msgid "[Name Withheld]"
 msgstr "[Name unterdrückt]"
 
-#: ../../mod/dfrn_request.php:789
+#: ../../mod/dfrn_request.php:793
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr "Bitte gib die Adresse deines Profils in einem der unterstützten sozialen Netzwerke an:"
 
-#: ../../mod/dfrn_request.php:805
+#: ../../mod/dfrn_request.php:809
 msgid "<strike>Connect as an email follower</strike> (Coming soon)"
 msgstr "<strike>Als E-Mail-Kontakt verbinden</strike> (In Kürze verfügbar)"
 
-#: ../../mod/dfrn_request.php:807
+#: ../../mod/dfrn_request.php:811
 msgid ""
 "If you are not yet a member of the free social web, <a "
 "href=\"http://dir.friendica.com/siteinfo\">follow this link to find a public"
 " Friendica site and join us today</a>."
 msgstr "Wenn du noch kein Mitglied dieses freien sozialen Netzwerks bist, <a href=\"http://dir.friendica.com/siteinfo\">folge diesem Link</a> um einen Ã¶ffentlichen Friendica-Server zu finden und beizutreten."
 
-#: ../../mod/dfrn_request.php:810
+#: ../../mod/dfrn_request.php:814
 msgid "Friend/Connection Request"
 msgstr "Freundschafts-/Kontaktanfrage"
 
-#: ../../mod/dfrn_request.php:811
+#: ../../mod/dfrn_request.php:815
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr "Beispiele: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, testuser@identi.ca"
 
-#: ../../mod/dfrn_request.php:812
+#: ../../mod/dfrn_request.php:816
 msgid "Please answer the following:"
 msgstr "Bitte beantworte Folgendes:"
 
-#: ../../mod/dfrn_request.php:813
+#: ../../mod/dfrn_request.php:817
 #, php-format
 msgid "Does %s know you?"
 msgstr "Kennt %s dich?"
 
-#: ../../mod/dfrn_request.php:816
+#: ../../mod/dfrn_request.php:820
 msgid "Add a personal note:"
 msgstr "Eine persönliche Notiz beifügen:"
 
-#: ../../mod/dfrn_request.php:818 ../../include/contact_selectors.php:76
+#: ../../mod/dfrn_request.php:822 ../../include/contact_selectors.php:76
 msgid "Friendica"
 msgstr "Friendica"
 
-#: ../../mod/dfrn_request.php:819
+#: ../../mod/dfrn_request.php:823
 msgid "StatusNet/Federated Social Web"
 msgstr "StatusNet/Federated Social Web"
 
-#: ../../mod/dfrn_request.php:820 ../../mod/settings.php:650
+#: ../../mod/dfrn_request.php:824 ../../mod/settings.php:652
 #: ../../include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr "Diaspora"
 
-#: ../../mod/dfrn_request.php:821
+#: ../../mod/dfrn_request.php:825
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search"
 " bar."
 msgstr " - bitte verwende dieses Formular nicht. Stattdessen suche nach %s in deiner Diaspora Suchleiste."
 
-#: ../../mod/dfrn_request.php:822
+#: ../../mod/dfrn_request.php:826
 msgid "Your Identity Address:"
 msgstr "Adresse deines Profils:"
 
-#: ../../mod/dfrn_request.php:825
+#: ../../mod/dfrn_request.php:829
 msgid "Submit Request"
 msgstr "Anfrage abschicken"
 
-#: ../../mod/install.php:111
+#: ../../mod/install.php:117
 msgid "Friendica Social Communications Server - Setup"
 msgstr "Friendica-Server für soziale Netzwerke â€“ Setup"
 
-#: ../../mod/install.php:117 ../../mod/install.php:157
-#: ../../mod/install.php:230
-msgid "Database connection"
-msgstr "Datenbankverbindung"
-
-#: ../../mod/install.php:124
+#: ../../mod/install.php:123
 msgid "Could not connect to database."
 msgstr "Verbindung zur Datenbank gescheitert"
 
-#: ../../mod/install.php:128
+#: ../../mod/install.php:127
 msgid "Could not create table."
 msgstr "Konnte Tabelle nicht erstellen."
 
@@ -915,232 +916,246 @@ msgstr "Konnte Tabelle nicht erstellen."
 msgid "Your Friendica site database has been installed."
 msgstr "Die Datenbank deiner Friendica Seite wurde installiert."
 
-#: ../../mod/install.php:134
-msgid ""
-"IMPORTANT: You will need to [manually] setup a scheduled task for the "
-"poller."
-msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten."
-
-#: ../../mod/install.php:135 ../../mod/install.php:151
-#: ../../mod/install.php:209
-msgid "Please see the file \"INSTALL.txt\"."
-msgstr "Lies bitte die \"INSTALL.txt\"."
-
-#: ../../mod/install.php:137
-msgid "Proceed to registration"
-msgstr "Mit der Registrierung fortfahren"
-
-#: ../../mod/install.php:143
-msgid "Proceed with Installation"
-msgstr "Mit der Installation fortfahren"
-
-#: ../../mod/install.php:150
+#: ../../mod/install.php:138
 msgid ""
 "You may need to import the file \"database.sql\" manually using phpmyadmin "
 "or mysql."
 msgstr "Möglicherweise musst du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren."
 
-#: ../../mod/install.php:158
-msgid "Database import failed."
-msgstr "Import der Datenbank schlug fehl."
+#: ../../mod/install.php:139 ../../mod/install.php:204
+#: ../../mod/install.php:489
+msgid "Please see the file \"INSTALL.txt\"."
+msgstr "Lies bitte die \"INSTALL.txt\"."
 
-#: ../../mod/install.php:206
+#: ../../mod/install.php:201
 msgid "System check"
 msgstr "Systemtest"
 
-#: ../../mod/install.php:211
+#: ../../mod/install.php:206
 msgid "Check again"
 msgstr "Noch einmal testen"
 
-#: ../../mod/install.php:231
+#: ../../mod/install.php:225
+msgid "Database connection"
+msgstr "Datenbankverbindung"
+
+#: ../../mod/install.php:226
 msgid ""
 "In order to install Friendica we need to know how to connect to your "
 "database."
 msgstr "Um Friendica installieren zu können, müssen wir wissen, wie wir zu deiner Datenbank Kontakt aufnehmen können."
 
-#: ../../mod/install.php:232
+#: ../../mod/install.php:227
 msgid ""
 "Please contact your hosting provider or site administrator if you have "
 "questions about these settings."
 msgstr "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls du Fragen zu diesen Einstellungen haben solltest."
 
-#: ../../mod/install.php:233
+#: ../../mod/install.php:228
 msgid ""
 "The database you specify below should already exist. If it does not, please "
 "create it before continuing."
 msgstr "Die Datenbank, die du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor du mit der Installation fortfährst."
 
-#: ../../mod/install.php:237
+#: ../../mod/install.php:232
 msgid "Database Server Name"
 msgstr "Datenbank-Server"
 
-#: ../../mod/install.php:238
+#: ../../mod/install.php:233
 msgid "Database Login Name"
 msgstr "Datenbank-Nutzer"
 
-#: ../../mod/install.php:239
+#: ../../mod/install.php:234
 msgid "Database Login Password"
 msgstr "Datenbank-Passwort"
 
-#: ../../mod/install.php:240
+#: ../../mod/install.php:235
 msgid "Database Name"
 msgstr "Datenbank-Name"
 
-#: ../../mod/install.php:241 ../../mod/install.php:280
+#: ../../mod/install.php:236 ../../mod/install.php:275
 msgid "Site administrator email address"
 msgstr "E-Mail-Adresse des Administrators"
 
-#: ../../mod/install.php:241 ../../mod/install.php:280
+#: ../../mod/install.php:236 ../../mod/install.php:275
 msgid ""
 "Your account email address must match this in order to use the web admin "
 "panel."
 msgstr "Die E-Mail-Adresse, die in deinem Friendica-Account eingetragen ist, muss mit dieser Adresse Ã¼bereinstimmen, damit du das Admin-Panel benutzen kannst."
 
-#: ../../mod/install.php:245 ../../mod/install.php:283
+#: ../../mod/install.php:240 ../../mod/install.php:278
 msgid "Please select a default timezone for your website"
 msgstr "Bitte wähle die Standardzeitzone deiner Webseite"
 
-#: ../../mod/install.php:270
+#: ../../mod/install.php:265
 msgid "Site settings"
 msgstr "Server-Einstellungen"
 
-#: ../../mod/install.php:323
+#: ../../mod/install.php:318
 msgid "Could not find a command line version of PHP in the web server PATH."
 msgstr "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden."
 
-#: ../../mod/install.php:326
+#: ../../mod/install.php:319
+msgid ""
+"If you don't have a command line version of PHP installed on server, you "
+"will not be able to run background polling via cron. See <a "
+"href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
+msgstr "Wenn du keine Kommandozeilen Version von PHP auf deinem Server installiert hast, kannst du keine Hintergrundprozesse via cron starten. Siehe <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"
+
+#: ../../mod/install.php:323
 msgid "PHP executable path"
 msgstr "Pfad zu PHP"
 
-#: ../../mod/install.php:326
-msgid "Enter full path to php executable"
-msgstr "Kompletter Pfad zum PHP-Executable"
+#: ../../mod/install.php:323
+msgid ""
+"Enter full path to php executable. You can leave this blank to continue the "
+"installation."
+msgstr "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst diesen Feld auch frei lassen und mit der Installation fortfahren."
 
-#: ../../mod/install.php:331
+#: ../../mod/install.php:328
 msgid "Command line PHP"
 msgstr "Kommandozeilen-PHP"
 
-#: ../../mod/install.php:340
+#: ../../mod/install.php:337
 msgid ""
 "The command line version of PHP on your system does not have "
 "\"register_argc_argv\" enabled."
 msgstr "Die Kommandozeilenversion von PHP auf deinem System hat \"register_argc_argv\" nicht aktiviert."
 
-#: ../../mod/install.php:341
+#: ../../mod/install.php:338
 msgid "This is required for message delivery to work."
 msgstr "Dies wird für die Auslieferung von Nachrichten benötigt."
 
-#: ../../mod/install.php:343
+#: ../../mod/install.php:340
 msgid "PHP register_argc_argv"
 msgstr "PHP register_argc_argv"
 
-#: ../../mod/install.php:364
+#: ../../mod/install.php:361
 msgid ""
 "Error: the \"openssl_pkey_new\" function on this system is not able to "
 "generate encryption keys"
 msgstr "Fehler: Die Funktion \"openssl_pkey_new\" auf diesem System ist nicht in der Lage, Verschlüsselungsschlüssel zu erzeugen"
 
-#: ../../mod/install.php:365
+#: ../../mod/install.php:362
 msgid ""
 "If running under Windows, please see "
 "\"http://www.php.net/manual/en/openssl.installation.php\"."
 msgstr "Wenn der Server unter Windows läuft, schau dir bitte \"http://www.php.net/manual/en/openssl.installation.php\" an."
 
-#: ../../mod/install.php:367
+#: ../../mod/install.php:364
 msgid "Generate encryption keys"
 msgstr "Schlüssel erzeugen"
 
-#: ../../mod/install.php:374
+#: ../../mod/install.php:371
 msgid "libCurl PHP module"
 msgstr "PHP: libCurl-Modul"
 
-#: ../../mod/install.php:375
+#: ../../mod/install.php:372
 msgid "GD graphics PHP module"
 msgstr "PHP: GD-Grafikmodul"
 
-#: ../../mod/install.php:376
+#: ../../mod/install.php:373
 msgid "OpenSSL PHP module"
 msgstr "PHP: OpenSSL-Modul"
 
-#: ../../mod/install.php:377
+#: ../../mod/install.php:374
 msgid "mysqli PHP module"
 msgstr "PHP: mysqli-Modul"
 
-#: ../../mod/install.php:378
+#: ../../mod/install.php:375
 msgid "mb_string PHP module"
 msgstr "PHP: mb_string-Modul"
 
-#: ../../mod/install.php:383 ../../mod/install.php:385
+#: ../../mod/install.php:380 ../../mod/install.php:382
 msgid "Apache mod_rewrite module"
 msgstr "Apache mod_rewrite module"
 
-#: ../../mod/install.php:383
+#: ../../mod/install.php:380
 msgid ""
 "Error: Apache webserver mod-rewrite module is required but not installed."
 msgstr "Fehler: Das Apache-Modul mod-rewrite wird benötigt, es ist allerdings nicht installiert."
 
-#: ../../mod/install.php:390
+#: ../../mod/install.php:388
 msgid "Error: libCURL PHP module required but not installed."
 msgstr "Fehler: Das libCURL PHP Modul wird benötigt ist aber nicht installiert."
 
-#: ../../mod/install.php:394
+#: ../../mod/install.php:392
 msgid ""
 "Error: GD graphics PHP module with JPEG support required but not installed."
 msgstr "Fehler: Das GD-Graphikmodul für PHP mit JPEG-Unterstützung ist nicht installiert."
 
-#: ../../mod/install.php:398
+#: ../../mod/install.php:396
 msgid "Error: openssl PHP module required but not installed."
 msgstr "Fehler: Das openssl-Modul von PHP ist nicht installiert."
 
-#: ../../mod/install.php:402
+#: ../../mod/install.php:400
 msgid "Error: mysqli PHP module required but not installed."
 msgstr "Fehler: Das mysqli-Modul von PHP ist nicht installiert."
 
-#: ../../mod/install.php:406
+#: ../../mod/install.php:404
 msgid "Error: mb_string PHP module required but not installed."
 msgstr "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert."
 
-#: ../../mod/install.php:423
+#: ../../mod/install.php:421
 msgid ""
 "The web installer needs to be able to create a file called \".htconfig.php\""
 " in the top folder of your web server and it is unable to do so."
 msgstr "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun."
 
-#: ../../mod/install.php:424
+#: ../../mod/install.php:422
 msgid ""
 "This is most often a permission setting, as the web server may not be able "
 "to write files in your folder - even if you can."
 msgstr "In den meisten Fällen ist dies ein Problem mit den Schreibrechten, der Webserver könnte keine Schreiberlaubnis haben, selbst wenn du sie hast."
 
-#: ../../mod/install.php:425
+#: ../../mod/install.php:423
 msgid ""
-"Please check with your site documentation or support people to see if this "
-"situation can be corrected."
-msgstr "Bitte Ã¼berprüfe die Einstellungen und frage im Zweifelsfall dein Support Team, um diese Situation zu beheben."
+"At the end of this procedure, we will give you a text to save in a file "
+"named .htconfig.php in your Friendica top folder."
+msgstr "Nachdem du alles ausgefüllt hast, erhältst du einen Text, den du in eine Datei namens .htconfig.php in deinem Friendica-Wurzelverzeichnis kopieren musst."
 
-#: ../../mod/install.php:426
+#: ../../mod/install.php:424
 msgid ""
-"If not, you may be required to perform a manual installation. Please see the"
-" file \"INSTALL.txt\" for instructions."
-msgstr "Sollte dies nicht möglich sein, musst du die Installation manuell durchführen. Lies dazu bitte in der Datei \"INSTALL.txt\"."
+"You can alternatively skip this procedure and perform a manual installation."
+" Please see the file \"INSTALL.txt\" for instructions."
+msgstr "Alternativ kannst du diesen Schritt aber auch Ã¼berspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest du in der Datei INSTALL.txt."
 
-#: ../../mod/install.php:429
+#: ../../mod/install.php:427
 msgid ".htconfig.php is writable"
 msgstr "Schreibrechte auf .htconfig.php"
 
-#: ../../mod/install.php:436
+#: ../../mod/install.php:439
+msgid ""
+"Url rewrite in .htaccess is not working. Check your server configuration."
+msgstr "Umschreiben der URLs in der .htaccess funktioniert nicht. Ãœberprüfe die Konfiguration des Servers."
+
+#: ../../mod/install.php:441
+msgid "Url rewrite is working"
+msgstr "URL rewrite funktioniert"
+
+#: ../../mod/install.php:451
 msgid ""
 "The database configuration file \".htconfig.php\" could not be written. "
 "Please use the enclosed text to create a configuration file in your web "
 "server root."
 msgstr "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis deiner Friendica-Installation zu erzeugen."
 
-#: ../../mod/install.php:461
+#: ../../mod/install.php:476
 msgid "Errors encountered creating database tables."
 msgstr "Fehler aufgetreten während der Erzeugung der Datenbanktabellen."
 
+#: ../../mod/install.php:487
+msgid "<h1>What next</h1>"
+msgstr "<h1>Wie geht es weiter?</h1>"
+
+#: ../../mod/install.php:488
+msgid ""
+"IMPORTANT: You will need to [manually] setup a scheduled task for the "
+"poller."
+msgstr "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten."
+
 #: ../../mod/localtime.php:12 ../../include/event.php:11
-#: ../../include/bb2diaspora.php:238
+#: ../../include/bb2diaspora.php:243
 msgid "l F d, Y \\@ g:i A"
 msgstr "l F d, Y \\@ g:i A"
 
@@ -1186,7 +1201,7 @@ msgid "is interested in:"
 msgstr "ist interessiert an:"
 
 #: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1047
+#: ../../include/contact_widgets.php:9 ../../boot.php:1044
 msgid "Connect"
 msgstr "Verbinden"
 
@@ -1234,7 +1249,7 @@ msgstr "Netzwerk"
 msgid "Personal"
 msgstr "Persönlich"
 
-#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:122
+#: ../../mod/notifications.php:90 ../../view/theme/diabook/theme.php:127
 #: ../../include/nav.php:77 ../../include/nav.php:115
 msgid "Home"
 msgstr "Pinnwand"
@@ -1675,7 +1690,7 @@ msgstr "du bist Fan von"
 msgid "Edit contact"
 msgstr "Kontakt bearbeiten"
 
-#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:124
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:129
 #: ../../include/nav.php:139
 msgid "Contacts"
 msgstr "Kontakte"
@@ -1707,13 +1722,13 @@ msgid "Password reset requested at %s"
 msgstr "Anfrage zum Zurücksetzen des Passworts auf %s erhalten"
 
 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
-#: ../../mod/register.php:367 ../../mod/register.php:421
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:745
+#: ../../mod/register.php:90 ../../mod/register.php:144
+#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:752
 #: ../../addon/facebook/facebook.php:688
 #: ../../addon/facebook/facebook.php:1178
 #: ../../addon/public_server/public_server.php:62
-#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2738
-#: ../../boot.php:697
+#: ../../addon/testdrive/testdrive.php:67 ../../include/items.php:2742
+#: ../../boot.php:694
 msgid "Administrator"
 msgstr "Administrator"
 
@@ -1723,7 +1738,7 @@ msgid ""
 "Password reset failed."
 msgstr "Anfrage konnte nicht verifiziert werden. (Eventuell hast du bereits eine Ã¤hnliche Anfrage gestellt.) Zurücksetzen des Passworts gescheitert."
 
-#: ../../mod/lostpass.php:83 ../../boot.php:829
+#: ../../mod/lostpass.php:83 ../../boot.php:826
 msgid "Password Reset"
 msgstr "Passwort zurücksetzen"
 
@@ -1767,97 +1782,97 @@ msgstr "Spitzname oder Email:"
 msgid "Reset"
 msgstr "Zurücksetzen"
 
-#: ../../mod/settings.php:49 ../../include/nav.php:137
+#: ../../mod/settings.php:50 ../../include/nav.php:137
 msgid "Account settings"
 msgstr "Account-Einstellungen"
 
-#: ../../mod/settings.php:54
+#: ../../mod/settings.php:55
 msgid "Display settings"
 msgstr "Anzeige-Einstellungen"
 
-#: ../../mod/settings.php:60
+#: ../../mod/settings.php:61
 msgid "Connector settings"
 msgstr "Connector-Einstellungen"
 
-#: ../../mod/settings.php:65
+#: ../../mod/settings.php:66
 msgid "Plugin settings"
 msgstr "Plugin-Einstellungen"
 
-#: ../../mod/settings.php:70
+#: ../../mod/settings.php:71
 msgid "Connected apps"
 msgstr "Verbundene Programme"
 
-#: ../../mod/settings.php:75
+#: ../../mod/settings.php:76
 msgid "Export personal data"
 msgstr "Persönliche Daten exportieren"
 
-#: ../../mod/settings.php:80
+#: ../../mod/settings.php:81
 msgid "Remove account"
 msgstr "Account entfernen"
 
-#: ../../mod/settings.php:88 ../../mod/admin.php:748 ../../mod/admin.php:953
-#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:768 ../../include/nav.php:137
+#: ../../mod/settings.php:89 ../../mod/admin.php:748 ../../mod/admin.php:953
+#: ../../addon/mathjax/mathjax.php:36 ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:773 ../../include/nav.php:137
 msgid "Settings"
 msgstr "Einstellungen"
 
-#: ../../mod/settings.php:131
+#: ../../mod/settings.php:133
 msgid "Missing some important data!"
 msgstr "Wichtige Daten fehlen!"
 
-#: ../../mod/settings.php:134 ../../mod/settings.php:579
+#: ../../mod/settings.php:136 ../../mod/settings.php:581
 msgid "Update"
 msgstr "Aktualisierungen"
 
-#: ../../mod/settings.php:239
+#: ../../mod/settings.php:241
 msgid "Failed to connect with email account using the settings provided."
 msgstr "Konnte das Email Konto mit den angegebenen Einstellungen nicht erreichen."
 
-#: ../../mod/settings.php:244
+#: ../../mod/settings.php:246
 msgid "Email settings updated."
 msgstr "EMail Einstellungen bearbeitet."
 
-#: ../../mod/settings.php:303
+#: ../../mod/settings.php:305
 msgid "Passwords do not match. Password unchanged."
 msgstr "Die Passwörter stimmen nicht Ã¼berein. Das Passwort bleibt unverändert."
 
-#: ../../mod/settings.php:308
+#: ../../mod/settings.php:310
 msgid "Empty passwords are not allowed. Password unchanged."
 msgstr "Leere Passwörter sind nicht erlaubt. Passwort bleibt unverändert."
 
-#: ../../mod/settings.php:319
+#: ../../mod/settings.php:321
 msgid "Password changed."
 msgstr "Passwort Ã¤ndern."
 
-#: ../../mod/settings.php:321
+#: ../../mod/settings.php:323
 msgid "Password update failed. Please try again."
 msgstr "Aktualisierung des Passworts gescheitert, bitte versuche es noch einmal."
 
-#: ../../mod/settings.php:385
+#: ../../mod/settings.php:386
 msgid " Please use a shorter name."
 msgstr " Bitte verwende einen kürzeren Namen."
 
-#: ../../mod/settings.php:387
+#: ../../mod/settings.php:388
 msgid " Name too short."
 msgstr " Name ist zu kurz."
 
-#: ../../mod/settings.php:393
+#: ../../mod/settings.php:394
 msgid " Not valid email."
 msgstr " Keine gültige E-Mail."
 
-#: ../../mod/settings.php:395
+#: ../../mod/settings.php:396
 msgid " Cannot change to that email."
 msgstr "Ändern der E-Mail nicht möglich. "
 
-#: ../../mod/settings.php:448
+#: ../../mod/settings.php:450
 msgid "Private forum has no privacy permissions. Using default privacy group."
-msgstr ""
+msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt."
 
-#: ../../mod/settings.php:452
+#: ../../mod/settings.php:454
 msgid "Private forum has no privacy permissions and no default privacy group."
-msgstr ""
+msgstr "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte."
 
-#: ../../mod/settings.php:482 ../../addon/facebook/facebook.php:488
+#: ../../mod/settings.php:484 ../../addon/facebook/facebook.php:488
 #: ../../addon/impressum/impressum.php:77
 #: ../../addon/openstreetmap/openstreetmap.php:80
 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@@ -1865,420 +1880,428 @@ msgstr ""
 msgid "Settings updated."
 msgstr "Einstellungen aktualisiert."
 
-#: ../../mod/settings.php:552 ../../mod/settings.php:578
-#: ../../mod/settings.php:614
+#: ../../mod/settings.php:554 ../../mod/settings.php:580
+#: ../../mod/settings.php:616
 msgid "Add application"
 msgstr "Programm hinzufügen"
 
-#: ../../mod/settings.php:556 ../../mod/settings.php:582
+#: ../../mod/settings.php:558 ../../mod/settings.php:584
 #: ../../addon/statusnet/statusnet.php:555
 msgid "Consumer Key"
 msgstr "Consumer Key"
 
-#: ../../mod/settings.php:557 ../../mod/settings.php:583
+#: ../../mod/settings.php:559 ../../mod/settings.php:585
 #: ../../addon/statusnet/statusnet.php:554
 msgid "Consumer Secret"
 msgstr "Consumer Secret"
 
-#: ../../mod/settings.php:558 ../../mod/settings.php:584
+#: ../../mod/settings.php:560 ../../mod/settings.php:586
 msgid "Redirect"
 msgstr "Umleiten"
 
-#: ../../mod/settings.php:559 ../../mod/settings.php:585
+#: ../../mod/settings.php:561 ../../mod/settings.php:587
 msgid "Icon url"
 msgstr "Icon URL"
 
-#: ../../mod/settings.php:570
+#: ../../mod/settings.php:572
 msgid "You can't edit this application."
 msgstr "Du kannst dieses Programm nicht bearbeiten."
 
-#: ../../mod/settings.php:613
+#: ../../mod/settings.php:615
 msgid "Connected Apps"
 msgstr "Verbundene Programme"
 
-#: ../../mod/settings.php:617
+#: ../../mod/settings.php:619
 msgid "Client key starts with"
 msgstr "Anwenderschlüssel beginnt mit"
 
-#: ../../mod/settings.php:618
+#: ../../mod/settings.php:620
 msgid "No name"
 msgstr "Kein Name"
 
-#: ../../mod/settings.php:619
+#: ../../mod/settings.php:621
 msgid "Remove authorization"
 msgstr "Autorisierung entziehen"
 
-#: ../../mod/settings.php:630
+#: ../../mod/settings.php:632
 msgid "No Plugin settings configured"
 msgstr "Keine Plugin-Einstellungen konfiguriert"
 
-#: ../../mod/settings.php:638 ../../addon/widgets/widgets.php:123
+#: ../../mod/settings.php:640 ../../addon/widgets/widgets.php:123
 msgid "Plugin Settings"
 msgstr "Plugin-Einstellungen"
 
-#: ../../mod/settings.php:650 ../../mod/settings.php:651
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 #, php-format
 msgid "Built-in support for %s connectivity is %s"
 msgstr "Eingebaute Unterstützung für Verbindungen zu %s ist %s"
 
-#: ../../mod/settings.php:650 ../../mod/settings.php:651
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "enabled"
 msgstr "eingeschaltet"
 
-#: ../../mod/settings.php:650 ../../mod/settings.php:651
+#: ../../mod/settings.php:652 ../../mod/settings.php:653
 msgid "disabled"
 msgstr "ausgeschaltet"
 
-#: ../../mod/settings.php:651
+#: ../../mod/settings.php:653
 msgid "StatusNet"
 msgstr "StatusNet"
 
-#: ../../mod/settings.php:681
+#: ../../mod/settings.php:683
 msgid "Connector Settings"
 msgstr "Verbindungs-Einstellungen"
 
-#: ../../mod/settings.php:686
+#: ../../mod/settings.php:688
 msgid "Email/Mailbox Setup"
 msgstr "E-Mail/Postfach-Einstellungen"
 
-#: ../../mod/settings.php:687
+#: ../../mod/settings.php:689
 msgid ""
 "If you wish to communicate with email contacts using this service "
 "(optional), please specify how to connect to your mailbox."
 msgstr "Wenn du mit E-Mail-Kontakten Ã¼ber diesen Service kommunizieren möchtest (optional), gib bitte die Einstellungen für dein Postfach an."
 
-#: ../../mod/settings.php:688
+#: ../../mod/settings.php:690
 msgid "Last successful email check:"
 msgstr "Letzter erfolgreicher Email Check"
 
-#: ../../mod/settings.php:689
+#: ../../mod/settings.php:691
 msgid "Email access is disabled on this site."
 msgstr "Zugriff auf E-Mails für diese Seite deaktiviert."
 
-#: ../../mod/settings.php:690
+#: ../../mod/settings.php:692
 msgid "IMAP server name:"
 msgstr "IMAP-Server-Name:"
 
-#: ../../mod/settings.php:691
+#: ../../mod/settings.php:693
 msgid "IMAP port:"
 msgstr "IMAP-Port:"
 
-#: ../../mod/settings.php:692
+#: ../../mod/settings.php:694
 msgid "Security:"
 msgstr "Sicherheit:"
 
-#: ../../mod/settings.php:692 ../../mod/settings.php:697
+#: ../../mod/settings.php:694 ../../mod/settings.php:699
 msgid "None"
 msgstr "Keine"
 
-#: ../../mod/settings.php:693
+#: ../../mod/settings.php:695
 msgid "Email login name:"
 msgstr "E-Mail-Login-Name:"
 
-#: ../../mod/settings.php:694
+#: ../../mod/settings.php:696
 msgid "Email password:"
 msgstr "E-Mail-Passwort:"
 
-#: ../../mod/settings.php:695
+#: ../../mod/settings.php:697
 msgid "Reply-to address:"
 msgstr "Reply-to Adresse:"
 
-#: ../../mod/settings.php:696
+#: ../../mod/settings.php:698
 msgid "Send public posts to all email contacts:"
 msgstr "Sende Ã¶ffentliche Beiträge an alle E-Mail-Kontakte:"
 
-#: ../../mod/settings.php:697
+#: ../../mod/settings.php:699
 msgid "Action after import:"
 msgstr "Aktion nach Import:"
 
-#: ../../mod/settings.php:697
+#: ../../mod/settings.php:699
 msgid "Mark as seen"
 msgstr "Als gelesen markieren"
 
-#: ../../mod/settings.php:697
+#: ../../mod/settings.php:699
 msgid "Move to folder"
 msgstr "In einen Ordner verschieben"
 
-#: ../../mod/settings.php:698
+#: ../../mod/settings.php:700
 msgid "Move to folder:"
 msgstr "In diesen Ordner verschieben:"
 
-#: ../../mod/settings.php:758
+#: ../../mod/settings.php:760
 msgid "Display Settings"
 msgstr "Anzeige-Einstellungen"
 
-#: ../../mod/settings.php:764
+#: ../../mod/settings.php:766
 msgid "Display Theme:"
 msgstr "Theme:"
 
-#: ../../mod/settings.php:765
+#: ../../mod/settings.php:767
 msgid "Update browser every xx seconds"
 msgstr "Browser alle xx Sekunden aktualisieren"
 
-#: ../../mod/settings.php:765
+#: ../../mod/settings.php:767
 msgid "Minimum of 10 seconds, no maximum"
 msgstr "Minimal 10 Sekunden, kein Maximum"
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:768
 msgid "Number of items to display on the network page:"
 msgstr "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: "
 
-#: ../../mod/settings.php:766
+#: ../../mod/settings.php:768
 msgid "Maximum of 100 items"
 msgstr "Maximal 100 Beiträge"
 
-#: ../../mod/settings.php:767
+#: ../../mod/settings.php:769
 msgid "Don't show emoticons"
 msgstr "Keine Smilies anzeigen"
 
-#: ../../mod/settings.php:835 ../../mod/admin.php:180 ../../mod/admin.php:634
-msgid "Normal Account"
-msgstr "Normaler Account"
+#: ../../mod/settings.php:840
+msgid "Normal Account Page"
+msgstr "Normale Account Seite"
 
-#: ../../mod/settings.php:836
+#: ../../mod/settings.php:841
 msgid "This account is a normal personal profile"
 msgstr "Dieser Account ist ein normales persönliches Profil"
 
-#: ../../mod/settings.php:839 ../../mod/admin.php:181 ../../mod/admin.php:635
-msgid "Soapbox Account"
-msgstr "Sandkasten-Account"
+#: ../../mod/settings.php:844
+msgid "Soapbox Page"
+msgstr "Sandkasten Seite"
 
-#: ../../mod/settings.php:840
+#: ../../mod/settings.php:845
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert"
 
-#: ../../mod/settings.php:843 ../../mod/admin.php:182 ../../mod/admin.php:636
-msgid "Community/Celebrity Account"
-msgstr "Gemeinschafts-/Promi-Account"
+#: ../../mod/settings.php:848
+msgid "Community Forum/Celebrity Account"
+msgstr "Gemeinschafts Forum / Promi Konto"
 
-#: ../../mod/settings.php:844
+#: ../../mod/settings.php:849
 msgid ""
 "Automatically approve all connection/friend requests as read-write fans"
 msgstr "Kontaktanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert"
 
-#: ../../mod/settings.php:847 ../../mod/admin.php:183 ../../mod/admin.php:637
-msgid "Automatic Friend Account"
-msgstr "Automatischer Freundesaccount"
+#: ../../mod/settings.php:852
+msgid "Automatic Friend Page"
+msgstr "Automatische Freunde Seite"
 
-#: ../../mod/settings.php:848
+#: ../../mod/settings.php:853
 msgid "Automatically approve all connection/friend requests as friends"
 msgstr "Kontaktanfragen werden automatisch als Freund akzeptiert"
 
-#: ../../mod/settings.php:851
-msgid "Private Forum"
-msgstr ""
+#: ../../mod/settings.php:856
+msgid "Private Forum [Experimental]"
+msgstr "Privates Forum [Versuchsstadium]"
 
-#: ../../mod/settings.php:852
-msgid "Private forum - approved members only [Experimental]"
-msgstr ""
+#: ../../mod/settings.php:857
+msgid "Private forum - approved members only"
+msgstr "Privates Forum - Ausschließlich für Mitglieder"
 
-#: ../../mod/settings.php:865
+#: ../../mod/settings.php:869
 msgid "OpenID:"
 msgstr "OpenID:"
 
-#: ../../mod/settings.php:865
+#: ../../mod/settings.php:869
 msgid "(Optional) Allow this OpenID to login to this account."
 msgstr "(Optional) Erlaube die Anmeldung für diesen Account mit dieser OpenID."
 
-#: ../../mod/settings.php:875
+#: ../../mod/settings.php:879
 msgid "Publish your default profile in your local site directory?"
 msgstr "Veröffentliche dein Standardprofil im Verzeichnis der lokalen Seite?"
 
-#: ../../mod/settings.php:881
+#: ../../mod/settings.php:885
 msgid "Publish your default profile in the global social directory?"
 msgstr "Veröffentliche dein Standardprofil im weltweiten Verzeichnis?"
 
-#: ../../mod/settings.php:889
+#: ../../mod/settings.php:893
 msgid "Hide your contact/friend list from viewers of your default profile?"
 msgstr "Liste der Kontakte vor Betrachtern des Standardprofils verbergen?"
 
-#: ../../mod/settings.php:893
+#: ../../mod/settings.php:897
 msgid "Hide your profile details from unknown viewers?"
 msgstr "Profil-Details vor unbekannten Betrachtern verbergen?"
 
-#: ../../mod/settings.php:898
+#: ../../mod/settings.php:902
 msgid "Allow friends to post to your profile page?"
 msgstr "Deinen Kontakten erlauben, auf deine Pinnwand zu schreiben?"
 
-#: ../../mod/settings.php:904
+#: ../../mod/settings.php:908
 msgid "Allow friends to tag your posts?"
 msgstr "Deinen Kontakten erlauben, deine Beiträge mit Schlagwörtern zu versehen?"
 
-#: ../../mod/settings.php:910
+#: ../../mod/settings.php:914
 msgid "Allow us to suggest you as a potential friend to new members?"
 msgstr "Erlaube uns dich als potentiellen Kontakt für neue Mitglieder vorzuschlagen?"
 
-#: ../../mod/settings.php:916
+#: ../../mod/settings.php:920
 msgid "Permit unknown people to send you private mail?"
 msgstr "Erlaube es Unbekannten dir private Nachrichten zu schicken?"
 
-#: ../../mod/settings.php:927
+#: ../../mod/settings.php:931
 msgid "Profile is <strong>not published</strong>."
 msgstr "Profil ist <strong>nicht veröffentlicht</strong>."
 
-#: ../../mod/settings.php:933 ../../mod/profile_photo.php:211
+#: ../../mod/settings.php:937 ../../mod/profile_photo.php:211
 msgid "or"
 msgstr "oder"
 
-#: ../../mod/settings.php:938
+#: ../../mod/settings.php:942
 msgid "Your Identity Address is"
 msgstr "Die Adresse deines Profils lautet:"
 
-#: ../../mod/settings.php:949
+#: ../../mod/settings.php:953
 msgid "Automatically expire posts after this many days:"
 msgstr "Beiträge verfallen automatisch nach dieser Anzahl von Tagen"
 
-#: ../../mod/settings.php:949
+#: ../../mod/settings.php:953
 msgid "If empty, posts will not expire. Expired posts will be deleted"
 msgstr "Wenn leer verfallen Beiträge nie automatisch. Verfallene Beiträge werden gelöscht."
 
-#: ../../mod/settings.php:950
+#: ../../mod/settings.php:954
 msgid "Advanced expiration settings"
 msgstr "Erweiterte Verfallseinstellungen"
 
-#: ../../mod/settings.php:951
+#: ../../mod/settings.php:955
 msgid "Advanced Expiration"
 msgstr "Erweitertes Verfallen"
 
-#: ../../mod/settings.php:952
+#: ../../mod/settings.php:956
 msgid "Expire posts:"
 msgstr "Beiträge verfallen lassen:"
 
-#: ../../mod/settings.php:953
+#: ../../mod/settings.php:957
 msgid "Expire personal notes:"
 msgstr "Persönliche Notizen verfallen lassen:"
 
-#: ../../mod/settings.php:954
+#: ../../mod/settings.php:958
 msgid "Expire starred posts:"
 msgstr "Markierte Beiträge verfallen lassen:"
 
-#: ../../mod/settings.php:955
+#: ../../mod/settings.php:959
 msgid "Expire photos:"
 msgstr "Fotos verfallen lassen:"
 
-#: ../../mod/settings.php:962
+#: ../../mod/settings.php:960
+msgid "Only expire posts by others:"
+msgstr "Nur Beiträge anderer verfallen"
+
+#: ../../mod/settings.php:967
 msgid "Account Settings"
 msgstr "Account-Einstellungen"
 
-#: ../../mod/settings.php:970
+#: ../../mod/settings.php:975
 msgid "Password Settings"
 msgstr "Passwort-Einstellungen"
 
-#: ../../mod/settings.php:971
+#: ../../mod/settings.php:976
 msgid "New Password:"
 msgstr "Neues Passwort:"
 
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:977
 msgid "Confirm:"
 msgstr "Bestätigen:"
 
-#: ../../mod/settings.php:972
+#: ../../mod/settings.php:977
 msgid "Leave password fields blank unless changing"
 msgstr "Lass die Passwort-Felder leer, außer du willst das Passwort Ã¤ndern"
 
-#: ../../mod/settings.php:976
+#: ../../mod/settings.php:981
 msgid "Basic Settings"
 msgstr "Grundeinstellungen"
 
-#: ../../mod/settings.php:977 ../../include/profile_advanced.php:15
+#: ../../mod/settings.php:982 ../../include/profile_advanced.php:15
 msgid "Full Name:"
 msgstr "Kompletter Name:"
 
-#: ../../mod/settings.php:978
+#: ../../mod/settings.php:983
 msgid "Email Address:"
 msgstr "Emailadresse:"
 
-#: ../../mod/settings.php:979
+#: ../../mod/settings.php:984
 msgid "Your Timezone:"
 msgstr "Deine Zeitzone:"
 
-#: ../../mod/settings.php:980
+#: ../../mod/settings.php:985
 msgid "Default Post Location:"
 msgstr "Standardstandort:"
 
-#: ../../mod/settings.php:981
+#: ../../mod/settings.php:986
 msgid "Use Browser Location:"
 msgstr "Verwende den Standort des Browsers:"
 
-#: ../../mod/settings.php:984
+#: ../../mod/settings.php:989
 msgid "Security and Privacy Settings"
 msgstr "Sicherheits- und Privatsphäre-Einstellungen"
 
-#: ../../mod/settings.php:986
+#: ../../mod/settings.php:991
 msgid "Maximum Friend Requests/Day:"
 msgstr "Maximale Anzahl von Freundschaftsanfragen/Tag:"
 
-#: ../../mod/settings.php:986 ../../mod/settings.php:1005
+#: ../../mod/settings.php:991 ../../mod/settings.php:1010
 msgid "(to prevent spam abuse)"
 msgstr "(um SPAM zu vermeiden)"
 
-#: ../../mod/settings.php:987
+#: ../../mod/settings.php:992
 msgid "Default Post Permissions"
 msgstr "Standard-Zugriffsrechte für Beiträge"
 
-#: ../../mod/settings.php:988
+#: ../../mod/settings.php:993
 msgid "(click to open/close)"
 msgstr "(klicke zum Ã¶ffnen/schließen)"
 
-#: ../../mod/settings.php:1005
+#: ../../mod/settings.php:1010
 msgid "Maximum private messages per day from unknown people:"
 msgstr "Maximale Anzahl von privaten Nachrichten, die dir unbekannte Personen pro Tag senden dürfen:"
 
-#: ../../mod/settings.php:1008
+#: ../../mod/settings.php:1013
 msgid "Notification Settings"
 msgstr "Benachrichtigungseinstellungen"
 
-#: ../../mod/settings.php:1009
+#: ../../mod/settings.php:1014
 msgid "By default post a status message when:"
 msgstr "Standardmäßig eine Statusnachricht posten, wenn:"
 
-#: ../../mod/settings.php:1010
+#: ../../mod/settings.php:1015
 msgid "accepting a friend request"
 msgstr "– du eine Kontaktanfrage akzeptierst"
 
-#: ../../mod/settings.php:1011
+#: ../../mod/settings.php:1016
 msgid "joining a forum/community"
 msgstr "– du einem Forum/einer Gemeinschaftsseite beitrittst"
 
-#: ../../mod/settings.php:1012
+#: ../../mod/settings.php:1017
 msgid "making an <em>interesting</em> profile change"
 msgstr "– du eine <em>interessante</em> Ã„nderung an deinem Profil durchführst"
 
-#: ../../mod/settings.php:1013
+#: ../../mod/settings.php:1018
 msgid "Send a notification email when:"
 msgstr "Benachrichtigungs-E-Mail senden wenn:"
 
-#: ../../mod/settings.php:1014
+#: ../../mod/settings.php:1019
 msgid "You receive an introduction"
 msgstr "– du eine Kontaktanfrage erhältst"
 
-#: ../../mod/settings.php:1015
+#: ../../mod/settings.php:1020
 msgid "Your introductions are confirmed"
 msgstr "– eine deiner Kontaktanfragen akzeptiert wurde"
 
-#: ../../mod/settings.php:1016
+#: ../../mod/settings.php:1021
 msgid "Someone writes on your profile wall"
 msgstr "– jemand etwas auf deine Pinnwand schreibt"
 
-#: ../../mod/settings.php:1017
+#: ../../mod/settings.php:1022
 msgid "Someone writes a followup comment"
 msgstr "– jemand auch einen Kommentar verfasst"
 
-#: ../../mod/settings.php:1018
+#: ../../mod/settings.php:1023
 msgid "You receive a private message"
 msgstr "– du eine private Nachricht erhältst"
 
-#: ../../mod/settings.php:1019
+#: ../../mod/settings.php:1024
 msgid "You receive a friend suggestion"
 msgstr "- du eine Empfehlung erhältst"
 
-#: ../../mod/settings.php:1020
+#: ../../mod/settings.php:1025
 msgid "You are tagged in a post"
 msgstr "- du in einem Beitrag erwähnt wurdest"
 
-#: ../../mod/settings.php:1023
-msgid "Advanced Page Settings"
-msgstr "Erweiterte Seiten-Einstellungen"
+#: ../../mod/settings.php:1028
+msgid "Advanced Account/Page Type Settings"
+msgstr ""
+
+#: ../../mod/settings.php:1029
+msgid "Change the behaviour of this account for special situations"
+msgstr "Ändere das Verhalten deines Accounts für spezielle Situationen."
 
 #: ../../mod/manage.php:90
 msgid "Manage Identities and/or Pages"
@@ -2390,13 +2413,13 @@ msgstr "Private Nachrichten an diese Person könnten an die Ã–ffentlichkeit gela
 msgid "Invalid contact."
 msgstr "Ungültiger Kontakt."
 
-#: ../../mod/notes.php:44 ../../boot.php:1529
+#: ../../mod/notes.php:44 ../../boot.php:1526
 msgid "Personal Notes"
 msgstr "Persönliche Notizen"
 
 #: ../../mod/notes.php:63 ../../mod/filer.php:30
 #: ../../addon/facebook/facebook.php:756
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:148
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:150
 #: ../../include/text.php:652
 msgid "Save"
 msgstr "Speichern"
@@ -2431,7 +2454,7 @@ msgid "No recipient."
 msgstr "Kein Empfänger."
 
 #: ../../mod/wallmessage.php:124 ../../mod/message.php:171
-#: ../../include/conversation.php:922
+#: ../../include/conversation.php:937
 msgid "Please enter a link URL:"
 msgstr "Bitte gib die URL des Links ein:"
 
@@ -2639,9 +2662,9 @@ msgstr "Ungültiger Profil-Bezeichner"
 msgid "Profile Visibility Editor"
 msgstr "Editor für die Profil-Sichtbarkeit"
 
-#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:123
-#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
-#: ../../include/nav.php:50 ../../boot.php:1508
+#: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:128
+#: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:77
+#: ../../include/nav.php:50 ../../boot.php:1505
 msgid "Profile"
 msgstr "Profil"
 
@@ -2661,159 +2684,91 @@ msgstr "Keine Kontakte."
 msgid "View Contacts"
 msgstr "Kontakte anzeigen"
 
-#: ../../mod/register.php:64
-msgid "An invitation is required."
-msgstr "Du benötigst eine Einladung."
-
-#: ../../mod/register.php:69
-msgid "Invitation could not be verified."
-msgstr "Die Einladung konnte nicht Ã¼berprüft werden."
-
-#: ../../mod/register.php:77
-msgid "Invalid OpenID url"
-msgstr "Ungültige OpenID URL"
-
-#: ../../mod/register.php:92
-msgid "Please enter the required information."
-msgstr "Bitte trage die erforderlichen Informationen ein."
-
-#: ../../mod/register.php:106
-msgid "Please use a shorter name."
-msgstr "Bitte verwende einen kürzeren Namen."
-
-#: ../../mod/register.php:108
-msgid "Name too short."
-msgstr "Der Name ist zu kurz."
-
-#: ../../mod/register.php:123
-msgid "That doesn't appear to be your full (First Last) name."
-msgstr "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein."
-
-#: ../../mod/register.php:128
-msgid "Your email domain is not among those allowed on this site."
-msgstr "Die Domain deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt."
-
-#: ../../mod/register.php:131
-msgid "Not a valid email address."
-msgstr "Keine gültige E-Mail-Adresse."
-
-#: ../../mod/register.php:141
-msgid "Cannot use that email."
-msgstr "Konnte diese E-Mail-Adresse nicht verwenden."
-
-#: ../../mod/register.php:147
-msgid ""
-"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
-"must also begin with a letter."
-msgstr "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen."
-
-#: ../../mod/register.php:153 ../../mod/register.php:243
-msgid "Nickname is already registered. Please choose another."
-msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."
-
-#: ../../mod/register.php:163
-msgid ""
-"Nickname was once registered here and may not be re-used. Please choose "
-"another."
-msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."
-
-#: ../../mod/register.php:179
-msgid "SERIOUS ERROR: Generation of security keys failed."
-msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."
-
-#: ../../mod/register.php:229
-msgid "An error occurred during registration. Please try again."
-msgstr "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."
-
-#: ../../mod/register.php:265
-msgid "An error occurred creating your default profile. Please try again."
-msgstr "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal."
-
-#: ../../mod/register.php:365 ../../mod/regmod.php:52
+#: ../../mod/register.php:88 ../../mod/regmod.php:52
 #, php-format
 msgid "Registration details for %s"
 msgstr "Details der Registration von %s"
 
-#: ../../mod/register.php:373
+#: ../../mod/register.php:96
 msgid ""
 "Registration successful. Please check your email for further instructions."
 msgstr "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an dich gesendet."
 
-#: ../../mod/register.php:377
+#: ../../mod/register.php:100
 msgid "Failed to send email message. Here is the message that failed."
 msgstr "Konnte die E-Mail nicht versenden. Hier ist die Nachricht, die nicht gesendet werden konnte."
 
-#: ../../mod/register.php:382
+#: ../../mod/register.php:105
 msgid "Your registration can not be processed."
 msgstr "Deine Registrierung konnte nicht verarbeitet werden."
 
-#: ../../mod/register.php:419
+#: ../../mod/register.php:142
 #, php-format
 msgid "Registration request at %s"
 msgstr "Registrierungsanfrage auf %s"
 
-#: ../../mod/register.php:428
+#: ../../mod/register.php:151
 msgid "Your registration is pending approval by the site owner."
 msgstr "Deine Registrierung muss noch vom Betreiber der Seite freigegeben werden."
 
-#: ../../mod/register.php:466
+#: ../../mod/register.php:189
 msgid ""
 "This site has exceeded the number of allowed daily account registrations. "
 "Please try again tomorrow."
 msgstr "Die maximale Anzahl täglicher Registrierungen auf dieser Seite wurde Ã¼berschritten. Bitte versuche es morgen noch einmal."
 
-#: ../../mod/register.php:492
+#: ../../mod/register.php:215
 msgid ""
 "You may (optionally) fill in this form via OpenID by supplying your OpenID "
 "and clicking 'Register'."
 msgstr "Du kannst dieses Formular auch (optional) mit deiner OpenID ausfüllen, indem du deine OpenID angibst und 'Registrieren' klickst."
 
-#: ../../mod/register.php:493
+#: ../../mod/register.php:216
 msgid ""
 "If you are not familiar with OpenID, please leave that field blank and fill "
 "in the rest of the items."
 msgstr "Wenn du nicht mit OpenID vertraut bist, lass dieses Feld bitte leer und fülle die restlichen Felder aus."
 
-#: ../../mod/register.php:494
+#: ../../mod/register.php:217
 msgid "Your OpenID (optional): "
 msgstr "Deine OpenID (optional): "
 
-#: ../../mod/register.php:508
+#: ../../mod/register.php:231
 msgid "Include your profile in member directory?"
 msgstr "Soll dein Profil im Nutzerverzeichnis angezeigt werden?"
 
-#: ../../mod/register.php:528
+#: ../../mod/register.php:251
 msgid "Membership on this site is by invitation only."
 msgstr "Mitgliedschaft auf dieser Seite ist nur nach vorheriger Einladung möglich."
 
-#: ../../mod/register.php:529
+#: ../../mod/register.php:252
 msgid "Your invitation ID: "
 msgstr "ID deiner Einladung: "
 
-#: ../../mod/register.php:532 ../../mod/admin.php:418
+#: ../../mod/register.php:255 ../../mod/admin.php:418
 msgid "Registration"
 msgstr "Registrierung"
 
-#: ../../mod/register.php:540
+#: ../../mod/register.php:263
 msgid "Your Full Name (e.g. Joe Smith): "
 msgstr "Vollständiger Name (z.B. Max Mustermann): "
 
-#: ../../mod/register.php:541
+#: ../../mod/register.php:264
 msgid "Your Email Address: "
 msgstr "Deine E-Mail-Adresse: "
 
-#: ../../mod/register.php:542
+#: ../../mod/register.php:265
 msgid ""
 "Choose a profile nickname. This must begin with a text character. Your "
 "profile address on this site will then be "
 "'<strong>nickname@$sitename</strong>'."
 msgstr "Wähle einen Spitznamen für dein Profil. Dieser muss mit einem Buchstaben beginnen. Die Adresse deines Profils auf dieser Seite wird '<strong>spitzname@$sitename</strong>' sein."
 
-#: ../../mod/register.php:543
+#: ../../mod/register.php:266
 msgid "Choose a nickname: "
 msgstr "Spitznamen wählen: "
 
-#: ../../mod/register.php:546 ../../include/nav.php:81 ../../boot.php:795
+#: ../../mod/register.php:269 ../../include/nav.php:81 ../../boot.php:792
 msgid "Register"
 msgstr "Registrieren"
 
@@ -2825,8 +2780,8 @@ msgstr "Personen Suche"
 #: ../../addon/facebook/facebook.php:1572
 #: ../../addon/communityhome/communityhome.php:158
 #: ../../addon/communityhome/communityhome.php:167
-#: ../../view/theme/diabook/theme.php:560
-#: ../../view/theme/diabook/theme.php:569 ../../include/diaspora.php:1662
+#: ../../view/theme/diabook/theme.php:565
+#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1662
 #: ../../include/conversation.php:48 ../../include/conversation.php:57
 #: ../../include/conversation.php:121 ../../include/conversation.php:130
 msgid "status"
@@ -2834,7 +2789,7 @@ msgstr "Status"
 
 #: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1576
 #: ../../addon/communityhome/communityhome.php:172
-#: ../../view/theme/diabook/theme.php:574 ../../include/diaspora.php:1678
+#: ../../view/theme/diabook/theme.php:579 ../../include/diaspora.php:1678
 #: ../../include/conversation.php:65
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
@@ -2847,7 +2802,7 @@ msgstr "%1$s mag %2$ss %3$s nicht"
 
 #: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
 #: ../../mod/admin.php:697 ../../mod/admin.php:896 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3096
+#: ../../mod/display.php:142 ../../include/items.php:3179
 msgid "Item not found."
 msgstr "Beitrag nicht gefunden."
 
@@ -2855,8 +2810,8 @@ msgstr "Beitrag nicht gefunden."
 msgid "Access denied."
 msgstr "Zugriff verweigert."
 
-#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:125
-#: ../../include/nav.php:51 ../../boot.php:1514
+#: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:130
+#: ../../include/nav.php:51 ../../boot.php:1511
 msgid "Photos"
 msgstr "Bilder"
 
@@ -2885,35 +2840,35 @@ msgstr "Konnte den Originalbeitrag nicht finden."
 msgid "Empty post discarded."
 msgstr "Leerer Beitrag wurde verworfen."
 
-#: ../../mod/item.php:377 ../../mod/wall_upload.php:99
+#: ../../mod/item.php:379 ../../mod/wall_upload.php:99
 #: ../../mod/wall_upload.php:108 ../../mod/wall_upload.php:115
 #: ../../include/message.php:144
 msgid "Wall Photos"
 msgstr "Pinnwand-Bilder"
 
-#: ../../mod/item.php:786
+#: ../../mod/item.php:800
 msgid "System error. Post not saved."
 msgstr "Systemfehler. Beitrag konnte nicht gespeichert werden."
 
-#: ../../mod/item.php:811
+#: ../../mod/item.php:825
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendica social "
 "network."
 msgstr "Diese Nachricht wurde dir von %s geschickt, einem Mitglied des Sozialen Netzwerks Friendica."
 
-#: ../../mod/item.php:813
+#: ../../mod/item.php:827
 #, php-format
 msgid "You may visit them online at %s"
 msgstr "Du kannst sie online unter %s besuchen"
 
-#: ../../mod/item.php:814
+#: ../../mod/item.php:828
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr "Falls du diese Beiträge nicht erhalten möchtest, kontaktiere bitte den Autor, indem du auf diese Nachricht antwortest."
 
-#: ../../mod/item.php:816
+#: ../../mod/item.php:830
 #, php-format
 msgid "%s posted an update."
 msgstr "%s hat ein Update veröffentlicht."
@@ -3098,10 +3053,6 @@ msgstr "Themen"
 msgid "DB updates"
 msgstr "DB Updates"
 
-#: ../../mod/admin.php:101
-msgid "Software Update"
-msgstr "Software Update"
-
 #: ../../mod/admin.php:115 ../../mod/admin.php:1074
 msgid "Logs"
 msgstr "Protokolle"
@@ -3110,9 +3061,25 @@ msgstr "Protokolle"
 msgid "User registrations waiting for confirmation"
 msgstr "Nutzeranmeldungen die auf Bestätigung warten"
 
+#: ../../mod/admin.php:180 ../../mod/admin.php:634
+msgid "Normal Account"
+msgstr "Normaler Account"
+
+#: ../../mod/admin.php:181 ../../mod/admin.php:635
+msgid "Soapbox Account"
+msgstr "Sandkasten-Account"
+
+#: ../../mod/admin.php:182 ../../mod/admin.php:636
+msgid "Community/Celebrity Account"
+msgstr "Gemeinschafts-/Promi-Account"
+
+#: ../../mod/admin.php:183 ../../mod/admin.php:637
+msgid "Automatic Friend Account"
+msgstr "Automatischer Freundesaccount"
+
 #: ../../mod/admin.php:202
 msgid "Message queues"
-msgstr ""
+msgstr "Nachrichten-Warteschlangen"
 
 #: ../../mod/admin.php:207 ../../mod/admin.php:415 ../../mod/admin.php:651
 #: ../../mod/admin.php:745 ../../mod/admin.php:787 ../../mod/admin.php:950
@@ -3640,7 +3607,7 @@ msgstr "FTP Nutzername"
 msgid "FTP Password"
 msgstr "FTP Passwort"
 
-#: ../../mod/profile.php:21 ../../boot.php:960
+#: ../../mod/profile.php:21 ../../boot.php:957
 msgid "Requested profile is not available."
 msgstr "Das angefragte Profil ist nicht vorhanden."
 
@@ -3710,10 +3677,10 @@ msgid ""
 "Account not found and OpenID registration is not permitted on this site."
 msgstr "Account wurde nicht gefunden und OpenID Registrierung auf diesem Server nicht gestattet."
 
-#: ../../mod/openid.php:93 ../../include/auth.php:97
-#: ../../include/auth.php:160
+#: ../../mod/openid.php:93 ../../include/auth.php:99
+#: ../../include/auth.php:162
 msgid "Login failed."
-msgstr "Annmeldung fehlgeschlagen."
+msgstr "Anmeldung fehlgeschlagen."
 
 #: ../../mod/follow.php:30
 msgid "Connect URL missing."
@@ -3790,12 +3757,13 @@ msgstr "Anwendungen"
 msgid "No installed applications."
 msgstr "Keine Applikationen installiert."
 
-#: ../../mod/search.php:83 ../../include/text.php:650 ../../include/nav.php:91
+#: ../../mod/search.php:83 ../../include/text.php:649
+#: ../../include/text.php:650 ../../include/nav.php:91
 msgid "Search"
 msgstr "Suche"
 
-#: ../../mod/profiles.php:21 ../../mod/profiles.php:375
-#: ../../mod/profiles.php:489 ../../mod/dfrn_confirm.php:62
+#: ../../mod/profiles.php:21 ../../mod/profiles.php:392
+#: ../../mod/profiles.php:506 ../../mod/dfrn_confirm.php:62
 msgid "Profile not found."
 msgstr "Profil nicht gefunden."
 
@@ -3803,277 +3771,285 @@ msgstr "Profil nicht gefunden."
 msgid "Profile Name is required."
 msgstr "Profilname ist erforderlich."
 
-#: ../../mod/profiles.php:145
+#: ../../mod/profiles.php:151
 msgid "Marital Status"
 msgstr "Familienstand"
 
-#: ../../mod/profiles.php:149
+#: ../../mod/profiles.php:155
 msgid "Romantic Partner"
 msgstr "Romanze"
 
-#: ../../mod/profiles.php:153
+#: ../../mod/profiles.php:159
 msgid "Work/Employment"
 msgstr "Arbeit / Beschäftigung"
 
-#: ../../mod/profiles.php:156
+#: ../../mod/profiles.php:162
 msgid "Religion"
 msgstr "Religion"
 
-#: ../../mod/profiles.php:160
+#: ../../mod/profiles.php:166
 msgid "Political Views"
 msgstr "Politische Ansichten"
 
-#: ../../mod/profiles.php:164
+#: ../../mod/profiles.php:170
 msgid "Gender"
 msgstr "Geschlecht"
 
-#: ../../mod/profiles.php:168
+#: ../../mod/profiles.php:174
 msgid "Sexual Preference"
 msgstr "Sexuelle Vorlieben"
 
-#: ../../mod/profiles.php:172
+#: ../../mod/profiles.php:178
 msgid "Homepage"
 msgstr "Webseite"
 
-#: ../../mod/profiles.php:176
+#: ../../mod/profiles.php:182
 msgid "Interests"
 msgstr "Interessen"
 
-#: ../../mod/profiles.php:181
+#: ../../mod/profiles.php:186
+msgid "Address"
+msgstr "Adresse"
+
+#: ../../mod/profiles.php:193
 msgid "Location"
 msgstr "Wohnort"
 
-#: ../../mod/profiles.php:253
+#: ../../mod/profiles.php:270
 msgid "Profile updated."
 msgstr "Profil aktualisiert."
 
-#: ../../mod/profiles.php:320
+#: ../../mod/profiles.php:337
 msgid " and "
 msgstr " und "
 
-#: ../../mod/profiles.php:328
+#: ../../mod/profiles.php:345
 msgid "public profile"
 msgstr "öffentliches Profil"
 
-#: ../../mod/profiles.php:331
+#: ../../mod/profiles.php:348
 #, php-format
 msgid "%1$s changed %2$s to &ldquo;%3$s&rdquo;"
 msgstr "%1$s hat %2$s geändert auf &ldquo;%3$s&rdquo;"
 
-#: ../../mod/profiles.php:332
+#: ../../mod/profiles.php:349
 #, php-format
 msgid " - Visit %1$s's %2$s"
-msgstr ""
+msgstr " â€“ %1$ss %2$s besuchen"
 
-#: ../../mod/profiles.php:335
+#: ../../mod/profiles.php:352
 #, php-format
 msgid "%1$s has an updated %2$s, changing %3$s."
 msgstr "%1$s hat folgendes aktualisiert %2$s, verändert wurde %3$s."
 
-#: ../../mod/profiles.php:394
+#: ../../mod/profiles.php:411
 msgid "Profile deleted."
 msgstr "Profil gelöscht."
 
-#: ../../mod/profiles.php:412 ../../mod/profiles.php:446
+#: ../../mod/profiles.php:429 ../../mod/profiles.php:463
 msgid "Profile-"
 msgstr "Profil-"
 
-#: ../../mod/profiles.php:431 ../../mod/profiles.php:473
+#: ../../mod/profiles.php:448 ../../mod/profiles.php:490
 msgid "New profile created."
 msgstr "Neues Profil angelegt."
 
-#: ../../mod/profiles.php:452
+#: ../../mod/profiles.php:469
 msgid "Profile unavailable to clone."
 msgstr "Profil nicht zum Duplizieren verfügbar."
 
-#: ../../mod/profiles.php:510
+#: ../../mod/profiles.php:527
 msgid "Hide your contact/friend list from viewers of this profile?"
 msgstr "Liste der Kontakte vor Betrachtern dieses Profils verbergen?"
 
-#: ../../mod/profiles.php:533
+#: ../../mod/profiles.php:550
 msgid "Edit Profile Details"
 msgstr "Profil bearbeiten"
 
-#: ../../mod/profiles.php:535
+#: ../../mod/profiles.php:552
 msgid "View this profile"
 msgstr "Dieses Profil anzeigen"
 
-#: ../../mod/profiles.php:536
+#: ../../mod/profiles.php:553
 msgid "Create a new profile using these settings"
 msgstr "Neues Profil anlegen und diese Einstellungen verwenden"
 
-#: ../../mod/profiles.php:537
+#: ../../mod/profiles.php:554
 msgid "Clone this profile"
 msgstr "Dieses Profil duplizieren"
 
-#: ../../mod/profiles.php:538
+#: ../../mod/profiles.php:555
 msgid "Delete this profile"
 msgstr "Dieses Profil löschen"
 
-#: ../../mod/profiles.php:539
+#: ../../mod/profiles.php:556
 msgid "Profile Name:"
 msgstr "Profilname:"
 
-#: ../../mod/profiles.php:540
+#: ../../mod/profiles.php:557
 msgid "Your Full Name:"
 msgstr "Dein kompletter Name:"
 
-#: ../../mod/profiles.php:541
+#: ../../mod/profiles.php:558
 msgid "Title/Description:"
 msgstr "Titel/Beschreibung:"
 
-#: ../../mod/profiles.php:542
+#: ../../mod/profiles.php:559
 msgid "Your Gender:"
 msgstr "Dein Geschlecht:"
 
-#: ../../mod/profiles.php:543
+#: ../../mod/profiles.php:560
 #, php-format
 msgid "Birthday (%s):"
 msgstr "Geburtstag (%s):"
 
-#: ../../mod/profiles.php:544
+#: ../../mod/profiles.php:561
 msgid "Street Address:"
 msgstr "Adresse:"
 
-#: ../../mod/profiles.php:545
+#: ../../mod/profiles.php:562
 msgid "Locality/City:"
 msgstr "Wohnort/Stadt:"
 
-#: ../../mod/profiles.php:546
+#: ../../mod/profiles.php:563
 msgid "Postal/Zip Code:"
 msgstr "Postleitzahl:"
 
-#: ../../mod/profiles.php:547
+#: ../../mod/profiles.php:564
 msgid "Country:"
 msgstr "Land:"
 
-#: ../../mod/profiles.php:548
+#: ../../mod/profiles.php:565
 msgid "Region/State:"
 msgstr "Region/Bundesstaat:"
 
-#: ../../mod/profiles.php:549
+#: ../../mod/profiles.php:566
 msgid "<span class=\"heart\">&hearts;</span> Marital Status:"
 msgstr "<span class=\"heart\">&hearts;</span> Beziehungsstatus:"
 
-#: ../../mod/profiles.php:550
+#: ../../mod/profiles.php:567
 msgid "Who: (if applicable)"
 msgstr "Wer: (falls anwendbar)"
 
-#: ../../mod/profiles.php:551
+#: ../../mod/profiles.php:568
 msgid "Examples: cathy123, Cathy Williams, cathy@example.com"
 msgstr "Beispiele: cathy123, Cathy Williams, cathy@example.com"
 
-#: ../../mod/profiles.php:552 ../../include/profile_advanced.php:43
+#: ../../mod/profiles.php:569
+msgid "Since [date]:"
+msgstr "Seit [Datum]:"
+
+#: ../../mod/profiles.php:570 ../../include/profile_advanced.php:46
 msgid "Sexual Preference:"
 msgstr "Sexuelle Vorlieben:"
 
-#: ../../mod/profiles.php:553
+#: ../../mod/profiles.php:571
 msgid "Homepage URL:"
 msgstr "Adresse der Homepage:"
 
-#: ../../mod/profiles.php:554 ../../include/profile_advanced.php:49
+#: ../../mod/profiles.php:572 ../../include/profile_advanced.php:52
 msgid "Political Views:"
 msgstr "Politische Ansichten:"
 
-#: ../../mod/profiles.php:555
+#: ../../mod/profiles.php:573
 msgid "Religious Views:"
 msgstr "Religiöse Ansichten:"
 
-#: ../../mod/profiles.php:556
+#: ../../mod/profiles.php:574
 msgid "Public Keywords:"
 msgstr "Öffentliche Schlüsselwörter:"
 
-#: ../../mod/profiles.php:557
+#: ../../mod/profiles.php:575
 msgid "Private Keywords:"
 msgstr "Private Schlüsselwörter:"
 
-#: ../../mod/profiles.php:558
+#: ../../mod/profiles.php:576
 msgid "Example: fishing photography software"
 msgstr "Beispiel: Fischen Fotografie Software"
 
-#: ../../mod/profiles.php:559
+#: ../../mod/profiles.php:577
 msgid "(Used for suggesting potential friends, can be seen by others)"
 msgstr "(Wird verwendet, um potentielle Freunde zu finden, könnte von Fremden eingesehen werden)"
 
-#: ../../mod/profiles.php:560
+#: ../../mod/profiles.php:578
 msgid "(Used for searching profiles, never shown to others)"
 msgstr "(Wird für die Suche nach Profilen verwendet und niemals veröffentlicht)"
 
-#: ../../mod/profiles.php:561
+#: ../../mod/profiles.php:579
 msgid "Tell us about yourself..."
 msgstr "Erzähle uns ein bisschen von dir â€¦"
 
-#: ../../mod/profiles.php:562
+#: ../../mod/profiles.php:580
 msgid "Hobbies/Interests"
 msgstr "Hobbies/Interessen"
 
-#: ../../mod/profiles.php:563
+#: ../../mod/profiles.php:581
 msgid "Contact information and Social Networks"
 msgstr "Kontaktinformationen und Soziale Netzwerke"
 
-#: ../../mod/profiles.php:564
+#: ../../mod/profiles.php:582
 msgid "Musical interests"
 msgstr "Musikalische Interessen"
 
-#: ../../mod/profiles.php:565
+#: ../../mod/profiles.php:583
 msgid "Books, literature"
 msgstr "Literatur/Bücher"
 
-#: ../../mod/profiles.php:566
+#: ../../mod/profiles.php:584
 msgid "Television"
 msgstr "Fernsehen"
 
-#: ../../mod/profiles.php:567
+#: ../../mod/profiles.php:585
 msgid "Film/dance/culture/entertainment"
 msgstr "Filme/Tänze/Kultur/Unterhaltung"
 
-#: ../../mod/profiles.php:568
+#: ../../mod/profiles.php:586
 msgid "Love/romance"
 msgstr "Liebesleben"
 
-#: ../../mod/profiles.php:569
+#: ../../mod/profiles.php:587
 msgid "Work/employment"
 msgstr "Arbeit/Beschäftigung"
 
-#: ../../mod/profiles.php:570
+#: ../../mod/profiles.php:588
 msgid "School/education"
 msgstr "Schule/Ausbildung"
 
-#: ../../mod/profiles.php:575
+#: ../../mod/profiles.php:593
 msgid ""
 "This is your <strong>public</strong> profile.<br />It <strong>may</strong> "
 "be visible to anybody using the internet."
 msgstr "Dies ist dein <strong>öffentliches</strong> Profil.<br />Es <strong>könnte</strong> für jeden Nutzer des Internets sichtbar sein."
 
-#: ../../mod/profiles.php:585 ../../mod/directory.php:111
+#: ../../mod/profiles.php:603 ../../mod/directory.php:111
 msgid "Age: "
 msgstr "Alter: "
 
-#: ../../mod/profiles.php:620
+#: ../../mod/profiles.php:639
 msgid "Edit/Manage Profiles"
 msgstr "Verwalte/Editiere Profile"
 
-#: ../../mod/profiles.php:621 ../../boot.php:1069
+#: ../../mod/profiles.php:640 ../../boot.php:1066
 msgid "Change profile photo"
 msgstr "Profilbild Ã¤ndern"
 
-#: ../../mod/profiles.php:622 ../../boot.php:1070
+#: ../../mod/profiles.php:641 ../../boot.php:1067
 msgid "Create New Profile"
 msgstr "Neues Profil anlegen"
 
-#: ../../mod/profiles.php:633 ../../boot.php:1080
+#: ../../mod/profiles.php:652 ../../boot.php:1077
 msgid "Profile Image"
 msgstr "Profilbild"
 
-#: ../../mod/profiles.php:635 ../../boot.php:1083
+#: ../../mod/profiles.php:654 ../../boot.php:1080
 msgid "visible to everybody"
 msgstr "sichtbar für jeden"
 
-#: ../../mod/profiles.php:636 ../../boot.php:1084
+#: ../../mod/profiles.php:655 ../../boot.php:1081
 msgid "Edit visibility"
 msgstr "Sichtbarkeit bearbeiten"
 
-#: ../../mod/filer.php:29 ../../include/conversation.php:926
+#: ../../mod/filer.php:29 ../../include/conversation.php:941
 msgid "Save to Folder:"
 msgstr "In diesen Ordner verschieben:"
 
@@ -4121,7 +4097,7 @@ msgstr "Hinzufügen"
 msgid "No entries."
 msgstr "Keine Einträge"
 
-#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:621
+#: ../../mod/suggest.php:38 ../../view/theme/diabook/theme.php:626
 #: ../../include/contact_widgets.php:34
 msgid "Friend Suggestions"
 msgstr "Kontaktvorschläge"
@@ -4136,7 +4112,7 @@ msgstr "Keine Vorschläge. Falls der Server frisch aufgesetzt wurde, versuche es
 msgid "Ignore/Hide"
 msgstr "Ignorieren/Verbergen"
 
-#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:619
+#: ../../mod/directory.php:47 ../../view/theme/diabook/theme.php:624
 msgid "Global Directory"
 msgstr "Weltweites Verzeichnis"
 
@@ -4246,83 +4222,83 @@ msgid ""
 " has already been approved."
 msgstr "Das kann passieren, wenn sich zwei Kontakte gegenseitig eingeladen haben und bereits einer angenommen wurde."
 
-#: ../../mod/dfrn_confirm.php:235
+#: ../../mod/dfrn_confirm.php:237
 msgid "Response from remote site was not understood."
 msgstr "Antwort der Gegenstelle unverständlich."
 
-#: ../../mod/dfrn_confirm.php:244
+#: ../../mod/dfrn_confirm.php:246
 msgid "Unexpected response from remote site: "
 msgstr "Unerwartete Antwort der Gegenstelle: "
 
-#: ../../mod/dfrn_confirm.php:252
+#: ../../mod/dfrn_confirm.php:254
 msgid "Confirmation completed successfully."
 msgstr "Bestätigung erfolgreich abgeschlossen."
 
-#: ../../mod/dfrn_confirm.php:254 ../../mod/dfrn_confirm.php:268
-#: ../../mod/dfrn_confirm.php:275
+#: ../../mod/dfrn_confirm.php:256 ../../mod/dfrn_confirm.php:270
+#: ../../mod/dfrn_confirm.php:277
 msgid "Remote site reported: "
 msgstr "Gegenstelle meldet: "
 
-#: ../../mod/dfrn_confirm.php:266
+#: ../../mod/dfrn_confirm.php:268
 msgid "Temporary failure. Please wait and try again."
 msgstr "Zeitweiser Fehler. Bitte warte einige Momente und versuche es dann noch einmal."
 
-#: ../../mod/dfrn_confirm.php:273
+#: ../../mod/dfrn_confirm.php:275
 msgid "Introduction failed or was revoked."
 msgstr "Kontaktanfrage schlug fehl oder wurde zurück gezogen."
 
-#: ../../mod/dfrn_confirm.php:418
+#: ../../mod/dfrn_confirm.php:420
 msgid "Unable to set contact photo."
 msgstr "Konnte das Bild des Kontakts nicht speichern."
 
-#: ../../mod/dfrn_confirm.php:475 ../../include/diaspora.php:507
+#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:507
 #: ../../include/conversation.php:101
 #, php-format
 msgid "%1$s is now friends with %2$s"
 msgstr "%1$s ist nun mit %2$s befreundet"
 
-#: ../../mod/dfrn_confirm.php:557
+#: ../../mod/dfrn_confirm.php:562
 #, php-format
 msgid "No user record found for '%s' "
 msgstr "Für '%s' wurde kein Nutzer gefunden"
 
-#: ../../mod/dfrn_confirm.php:567
+#: ../../mod/dfrn_confirm.php:572
 msgid "Our site encryption key is apparently messed up."
 msgstr "Der Verschlüsselungsschlüssel unserer Seite ist anscheinend im Arsch."
 
-#: ../../mod/dfrn_confirm.php:578
+#: ../../mod/dfrn_confirm.php:583
 msgid "Empty site URL was provided or URL could not be decrypted by us."
 msgstr "Leere URL für die Seite erhalten oder die URL konnte nicht entschlüsselt werden."
 
-#: ../../mod/dfrn_confirm.php:599
+#: ../../mod/dfrn_confirm.php:604
 msgid "Contact record was not found for you on our site."
 msgstr "Für diesen Kontakt wurde auf unserer Seite kein Eintrag gefunden."
 
-#: ../../mod/dfrn_confirm.php:613
+#: ../../mod/dfrn_confirm.php:618
 #, php-format
 msgid "Site public key not available in contact record for URL %s."
 msgstr "Die Kontaktdaten für URL %s enthalten keinen Public Key für den Server."
 
-#: ../../mod/dfrn_confirm.php:633
+#: ../../mod/dfrn_confirm.php:638
 msgid ""
 "The ID provided by your system is a duplicate on our system. It should work "
 "if you try again."
 msgstr "Die ID, die uns dein System angeboten hat, ist hier bereits vergeben. Bitte versuche es noch einmal."
 
-#: ../../mod/dfrn_confirm.php:644
+#: ../../mod/dfrn_confirm.php:649
 msgid "Unable to set your contact credentials on our system."
 msgstr "Deine Kontaktreferenzen konnten nicht in unserem System gespeichert werden."
 
-#: ../../mod/dfrn_confirm.php:709
+#: ../../mod/dfrn_confirm.php:716
 msgid "Unable to update your contact profile details on our system"
 msgstr "Die Updates für dein Profil konnten nicht gespeichert werden"
 
-#: ../../mod/dfrn_confirm.php:743
+#: ../../mod/dfrn_confirm.php:750
 #, php-format
 msgid "Connection accepted at %s"
 msgstr "Auf %s wurde die Verbindung akzeptiert"
 
-#: ../../mod/dfrn_confirm.php:792
+#: ../../mod/dfrn_confirm.php:799
 #, php-format
 msgid "%1$s has joined %2$s"
 msgstr "%1$s ist %2$s beigetreten"
@@ -4532,23 +4508,23 @@ msgid ""
 "The 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."
 msgstr "Hi %1$s,\n\ndie Verbindung von deinem Account auf %2$s und Facebook funktioniert derzeit nicht. Dies ist im Allgemeinen das Ergebnis einer Passwortänderung bei Facebook. Um die Verbindung wieder zu aktivieren musst du  %3$sden Facebook-Connector neu Authentifizieren%4$s."
 
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:145
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:147
 msgid "Lifetime of the cache (in hours)"
 msgstr "Lebenszeit des Caches (in Stunden)"
 
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:150
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:152
 msgid "Cache Statistics"
 msgstr "Cache Statistik"
 
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:153
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:155
 msgid "Number of items"
 msgstr "Anzahl der Einträge"
 
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:155
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:157
 msgid "Size of the cache"
 msgstr "Größe des Caches"
 
-#: ../../addon/privacy_image_cache/privacy_image_cache.php:157
+#: ../../addon/privacy_image_cache/privacy_image_cache.php:159
 msgid "Delete the whole cache"
 msgstr "Cache leeren"
 
@@ -4675,7 +4651,7 @@ msgstr "Foren"
 
 #: ../../addon/page/page.php:63 ../../addon/showmore/showmore.php:87
 #: ../../include/contact_widgets.php:188 ../../include/conversation.php:470
-#: ../../boot.php:518
+#: ../../boot.php:515
 msgid "show more"
 msgstr "mehr anzeigen"
 
@@ -4691,7 +4667,7 @@ msgstr "Aktiviere Planeten Plugin"
 #: ../../addon/communityhome/communityhome.php:34
 #: ../../addon/communityhome/twillingham/communityhome.php:28
 #: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:816
+#: ../../include/nav.php:64 ../../boot.php:813
 msgid "Login"
 msgstr "Anmeldung"
 
@@ -4719,7 +4695,7 @@ msgid "Latest likes"
 msgstr "Neueste Favoriten"
 
 #: ../../addon/communityhome/communityhome.php:155
-#: ../../view/theme/diabook/theme.php:557 ../../include/text.php:1309
+#: ../../view/theme/diabook/theme.php:562 ../../include/text.php:1313
 #: ../../include/conversation.php:45 ../../include/conversation.php:118
 msgid "event"
 msgstr "Veranstaltung"
@@ -4878,15 +4854,15 @@ msgstr "Beitrag via Friendica"
 
 #: ../../addon/startpage/startpage.php:83
 msgid "Startpage Settings"
-msgstr ""
+msgstr "Startseiten-Einstellungen"
 
 #: ../../addon/startpage/startpage.php:85
 msgid "Home page to load after login  - leave blank for profile wall"
-msgstr ""
+msgstr "Seite, die nach dem Anmelden geladen werden soll. Leer = Pinnwand"
 
 #: ../../addon/startpage/startpage.php:88
 msgid "Examples: &quot;network&quot; or &quot;notifications/system&quot;"
-msgstr ""
+msgstr "Beispiele: network, notifications/system"
 
 #: ../../addon/geonames/geonames.php:143
 msgid "Geonames settings updated."
@@ -4908,7 +4884,7 @@ msgstr "Dein Konto auf %s wird in ein paar Tagen verfallen."
 
 #: ../../addon/public_server/public_server.php:127
 msgid "Your Friendica account is about to expire."
-msgstr ""
+msgstr "Dein Friendica-Account wird in Kürze auslaufen."
 
 #: ../../addon/public_server/public_server.php:128
 #, php-format
@@ -4916,7 +4892,7 @@ msgid ""
 "Hi %1$s,\n"
 "\n"
 "Your account on %2$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"
-msgstr ""
+msgstr "Hallo %1$s,\n\ndein Account auf %2$s wird in weniger als fünf Tagen auslaufen. Du kannst das verhindern, indem du dich mindestens einmal alle 30 Tage anmeldest."
 
 #: ../../addon/js_upload/js_upload.php:43
 msgid "Upload a file"
@@ -5439,11 +5415,11 @@ msgstr "Standardmäßig auf WordPress veröffentlichen"
 
 #: ../../addon/wppost/wppost.php:102
 msgid "Provide a backlink to the Friendica post"
-msgstr ""
+msgstr "Einen zurück zum Friendica-Beitrag hinzufügen"
 
 #: ../../addon/wppost/wppost.php:204
 msgid "Read the original post and comment stream on Friendica"
-msgstr ""
+msgstr "Den Original-Beitrag samt Kommentaren bei Friendica lesen"
 
 #: ../../addon/showmore/showmore.php:38
 msgid "\"Show more\" Settings"
@@ -5676,153 +5652,153 @@ msgstr "Theme Breite festlegen"
 msgid "Color scheme"
 msgstr "Farbschema"
 
-#: ../../view/theme/diabook/theme.php:122 ../../include/nav.php:49
+#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:49
 #: ../../include/nav.php:115
 msgid "Your posts and conversations"
 msgstr "Deine Beiträge und Unterhaltungen"
 
-#: ../../view/theme/diabook/theme.php:123 ../../include/nav.php:50
+#: ../../view/theme/diabook/theme.php:128 ../../include/nav.php:50
 msgid "Your profile page"
 msgstr "Deine Profilseite"
 
-#: ../../view/theme/diabook/theme.php:124
+#: ../../view/theme/diabook/theme.php:129
 msgid "Your contacts"
 msgstr "Deine Kontakte"
 
-#: ../../view/theme/diabook/theme.php:125 ../../include/nav.php:51
+#: ../../view/theme/diabook/theme.php:130 ../../include/nav.php:51
 msgid "Your photos"
 msgstr "Deine Fotos"
 
-#: ../../view/theme/diabook/theme.php:126 ../../include/nav.php:52
+#: ../../view/theme/diabook/theme.php:131 ../../include/nav.php:52
 msgid "Your events"
 msgstr "Deine Ereignisse"
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Personal notes"
 msgstr "Persönliche Notizen"
 
-#: ../../view/theme/diabook/theme.php:127 ../../include/nav.php:53
+#: ../../view/theme/diabook/theme.php:132 ../../include/nav.php:53
 msgid "Your personal photos"
 msgstr "Deine privaten Fotos"
 
-#: ../../view/theme/diabook/theme.php:129
-#: ../../view/theme/diabook/theme.php:638
-#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:134
+#: ../../view/theme/diabook/theme.php:643
+#: ../../view/theme/diabook/theme.php:747
 #: ../../view/theme/diabook/config.php:201
 msgid "Community Pages"
 msgstr "Foren"
 
-#: ../../view/theme/diabook/theme.php:485
-#: ../../view/theme/diabook/theme.php:744
+#: ../../view/theme/diabook/theme.php:490
+#: ../../view/theme/diabook/theme.php:749
 #: ../../view/theme/diabook/config.php:203
 msgid "Community Profiles"
 msgstr "Community-Profile"
 
-#: ../../view/theme/diabook/theme.php:506
-#: ../../view/theme/diabook/theme.php:749
+#: ../../view/theme/diabook/theme.php:511
+#: ../../view/theme/diabook/theme.php:754
 #: ../../view/theme/diabook/config.php:208
 msgid "Last users"
 msgstr "Letzte Nutzer"
 
-#: ../../view/theme/diabook/theme.php:535
-#: ../../view/theme/diabook/theme.php:751
+#: ../../view/theme/diabook/theme.php:540
+#: ../../view/theme/diabook/theme.php:756
 #: ../../view/theme/diabook/config.php:210
 msgid "Last likes"
 msgstr "Zuletzt gemocht"
 
-#: ../../view/theme/diabook/theme.php:580
-#: ../../view/theme/diabook/theme.php:750
+#: ../../view/theme/diabook/theme.php:585
+#: ../../view/theme/diabook/theme.php:755
 #: ../../view/theme/diabook/config.php:209
 msgid "Last photos"
 msgstr "Letzte Fotos"
 
-#: ../../view/theme/diabook/theme.php:617
-#: ../../view/theme/diabook/theme.php:747
+#: ../../view/theme/diabook/theme.php:622
+#: ../../view/theme/diabook/theme.php:752
 #: ../../view/theme/diabook/config.php:206
 msgid "Find Friends"
 msgstr "Freunde finden"
 
-#: ../../view/theme/diabook/theme.php:618
+#: ../../view/theme/diabook/theme.php:623
 msgid "Local Directory"
 msgstr "Lokales Verzeichnis"
 
-#: ../../view/theme/diabook/theme.php:620 ../../include/contact_widgets.php:35
+#: ../../view/theme/diabook/theme.php:625 ../../include/contact_widgets.php:35
 msgid "Similar Interests"
 msgstr "Ähnliche Interessen"
 
-#: ../../view/theme/diabook/theme.php:622 ../../include/contact_widgets.php:37
+#: ../../view/theme/diabook/theme.php:627 ../../include/contact_widgets.php:37
 msgid "Invite Friends"
 msgstr "Freunde einladen"
 
-#: ../../view/theme/diabook/theme.php:673
-#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:748
 #: ../../view/theme/diabook/config.php:202
 msgid "Earth Layers"
 msgstr "Earth Layers"
 
-#: ../../view/theme/diabook/theme.php:678
+#: ../../view/theme/diabook/theme.php:683
 msgid "Set zoomfactor for Earth Layers"
 msgstr "Zoomfaktor der Earth Layer"
 
-#: ../../view/theme/diabook/theme.php:679
+#: ../../view/theme/diabook/theme.php:684
 #: ../../view/theme/diabook/config.php:199
 msgid "Set longitude (X) for Earth Layers"
 msgstr "Longitude (X) der Earth Layer"
 
-#: ../../view/theme/diabook/theme.php:680
+#: ../../view/theme/diabook/theme.php:685
 #: ../../view/theme/diabook/config.php:200
 msgid "Set latitude (Y) for Earth Layers"
 msgstr "Latitude (Y) der Earth Layer"
 
-#: ../../view/theme/diabook/theme.php:693
-#: ../../view/theme/diabook/theme.php:745
+#: ../../view/theme/diabook/theme.php:698
+#: ../../view/theme/diabook/theme.php:750
 #: ../../view/theme/diabook/config.php:204
 msgid "Help or @NewHere ?"
 msgstr "Hilfe oder @NewHere"
 
-#: ../../view/theme/diabook/theme.php:700
-#: ../../view/theme/diabook/theme.php:746
+#: ../../view/theme/diabook/theme.php:705
+#: ../../view/theme/diabook/theme.php:751
 #: ../../view/theme/diabook/config.php:205
 msgid "Connect Services"
 msgstr "Verbinde Dienste"
 
-#: ../../view/theme/diabook/theme.php:707
-#: ../../view/theme/diabook/theme.php:748
+#: ../../view/theme/diabook/theme.php:712
+#: ../../view/theme/diabook/theme.php:753
 msgid "Last Tweets"
 msgstr "Neueste Tweets"
 
-#: ../../view/theme/diabook/theme.php:710
+#: ../../view/theme/diabook/theme.php:715
 #: ../../view/theme/diabook/config.php:197
 msgid "Set twitter search term"
 msgstr "Twitter Suchbegriff"
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:288
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:288
 msgid "don't show"
 msgstr "nicht zeigen"
 
-#: ../../view/theme/diabook/theme.php:730
-#: ../../view/theme/diabook/theme.php:731
-#: ../../view/theme/diabook/theme.php:732
-#: ../../view/theme/diabook/theme.php:733
-#: ../../view/theme/diabook/theme.php:734
 #: ../../view/theme/diabook/theme.php:735
 #: ../../view/theme/diabook/theme.php:736
 #: ../../view/theme/diabook/theme.php:737
 #: ../../view/theme/diabook/theme.php:738
-#: ../../view/theme/diabook/theme.php:739 ../../include/acl_selectors.php:287
+#: ../../view/theme/diabook/theme.php:739
+#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:741
+#: ../../view/theme/diabook/theme.php:742
+#: ../../view/theme/diabook/theme.php:743
+#: ../../view/theme/diabook/theme.php:744 ../../include/acl_selectors.php:287
 msgid "show"
 msgstr "zeigen"
 
-#: ../../view/theme/diabook/theme.php:740
+#: ../../view/theme/diabook/theme.php:745
 msgid "Show/hide boxes at right-hand column:"
 msgstr "Rahmen auf der rechten Seite anzeigen/verbergen"
 
@@ -5863,7 +5839,7 @@ msgstr "Mitte"
 msgid "Set colour scheme"
 msgstr "Farbschema wählen"
 
-#: ../../include/profile_advanced.php:17 ../../boot.php:1105
+#: ../../include/profile_advanced.php:17 ../../boot.php:1102
 msgid "Gender:"
 msgstr "Geschlecht:"
 
@@ -5875,8 +5851,8 @@ msgstr "j F, Y"
 msgid "j F"
 msgstr "j F"
 
-#: ../../include/profile_advanced.php:30 ../../include/datetime.php:448
-#: ../../include/items.php:1419
+#: ../../include/profile_advanced.php:30 ../../include/datetime.php:450
+#: ../../include/items.php:1423
 msgid "Birthday:"
 msgstr "Geburtstag:"
 
@@ -5884,59 +5860,64 @@ msgstr "Geburtstag:"
 msgid "Age:"
 msgstr "Alter:"
 
-#: ../../include/profile_advanced.php:37 ../../boot.php:1108
+#: ../../include/profile_advanced.php:37 ../../boot.php:1105
 msgid "Status:"
 msgstr "Status:"
 
-#: ../../include/profile_advanced.php:45 ../../boot.php:1110
+#: ../../include/profile_advanced.php:43
+#, php-format
+msgid "for %1$d %2$s"
+msgstr "für %1$d %2$s"
+
+#: ../../include/profile_advanced.php:48 ../../boot.php:1107
 msgid "Homepage:"
 msgstr "Homepage:"
 
-#: ../../include/profile_advanced.php:47
+#: ../../include/profile_advanced.php:50
 msgid "Tags:"
 msgstr "Tags"
 
-#: ../../include/profile_advanced.php:51
+#: ../../include/profile_advanced.php:54
 msgid "Religion:"
 msgstr "Religion:"
 
-#: ../../include/profile_advanced.php:53
+#: ../../include/profile_advanced.php:56
 msgid "About:"
 msgstr "Ãœber:"
 
-#: ../../include/profile_advanced.php:55
+#: ../../include/profile_advanced.php:58
 msgid "Hobbies/Interests:"
 msgstr "Hobbies/Interessen:"
 
-#: ../../include/profile_advanced.php:57
+#: ../../include/profile_advanced.php:60
 msgid "Contact information and Social Networks:"
 msgstr "Kontaktinformationen und Soziale Netzwerke:"
 
-#: ../../include/profile_advanced.php:59
+#: ../../include/profile_advanced.php:62
 msgid "Musical interests:"
 msgstr "Musikalische Interessen:"
 
-#: ../../include/profile_advanced.php:61
+#: ../../include/profile_advanced.php:64
 msgid "Books, literature:"
 msgstr "Literatur/Bücher:"
 
-#: ../../include/profile_advanced.php:63
+#: ../../include/profile_advanced.php:66
 msgid "Television:"
 msgstr "Fernsehen:"
 
-#: ../../include/profile_advanced.php:65
+#: ../../include/profile_advanced.php:68
 msgid "Film/dance/culture/entertainment:"
 msgstr "Filme/Tänze/Kultur/Unterhaltung:"
 
-#: ../../include/profile_advanced.php:67
+#: ../../include/profile_advanced.php:70
 msgid "Love/Romance:"
 msgstr "Liebesleben:"
 
-#: ../../include/profile_advanced.php:69
+#: ../../include/profile_advanced.php:72
 msgid "Work/employment:"
 msgstr "Arbeit/Beschäftigung:"
 
-#: ../../include/profile_advanced.php:71
+#: ../../include/profile_advanced.php:74
 msgid "School/education:"
 msgstr "Schule/Ausbildung:"
 
@@ -6068,187 +6049,187 @@ msgstr "Andere"
 msgid "Undecided"
 msgstr "Unentschieden"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Males"
 msgstr "Männer"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Females"
 msgstr "Frauen"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Gay"
 msgstr "Schwul"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Lesbian"
 msgstr "Lesbisch"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "No Preference"
 msgstr "Keine Vorlieben"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Bisexual"
 msgstr "Bisexuell"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Autosexual"
 msgstr "Autosexual"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Abstinent"
 msgstr "Abstinent"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Virgin"
 msgstr "Jungfrauen"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Deviant"
 msgstr "Deviant"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Fetish"
 msgstr "Fetish"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Oodles"
 msgstr "Oodles"
 
-#: ../../include/profile_selectors.php:21
+#: ../../include/profile_selectors.php:23
 msgid "Nonsexual"
 msgstr "Nonsexual"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Single"
 msgstr "Single"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Lonely"
 msgstr "Einsam"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Available"
 msgstr "Verfügbar"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Unavailable"
 msgstr "Nicht verfügbar"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Has crush"
 msgstr "verknallt"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Infatuated"
 msgstr "verliebt"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Dating"
 msgstr "Dating"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Unfaithful"
 msgstr "Untreu"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Sex Addict"
 msgstr "Sexbesessen"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42 ../../include/user.php:272
 msgid "Friends"
 msgstr "Freunde"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Friends/Benefits"
 msgstr "Freunde/Zuwendungen"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Casual"
 msgstr "Casual"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Engaged"
 msgstr "Verlobt"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Married"
 msgstr "Verheiratet"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Imaginarily married"
 msgstr "imaginär verheiratet"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Partners"
 msgstr "Partner"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Cohabiting"
 msgstr "zusammenlebend"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Common law"
 msgstr "wilde Ehe"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Happy"
 msgstr "Glücklich"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Not looking"
 msgstr "Nicht auf der Suche"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Swinger"
 msgstr "Swinger"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Betrayed"
 msgstr "Betrogen"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Separated"
 msgstr "Getrennt"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Unstable"
 msgstr "Unstabil"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Divorced"
 msgstr "Geschieden"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Imaginarily divorced"
 msgstr "imaginär geschieden"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Widowed"
 msgstr "Verwitwet"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Uncertain"
 msgstr "Unsicher"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "It's complicated"
 msgstr "Ist kompliziert"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Don't care"
 msgstr "Ist mir nicht wichtig"
 
-#: ../../include/profile_selectors.php:37
+#: ../../include/profile_selectors.php:42
 msgid "Ask me"
 msgstr "Frag mich"
 
-#: ../../include/event.php:17 ../../include/bb2diaspora.php:244
+#: ../../include/event.php:17 ../../include/bb2diaspora.php:249
 msgid "Starts:"
 msgstr "Beginnt:"
 
-#: ../../include/event.php:27 ../../include/bb2diaspora.php:252
+#: ../../include/event.php:27 ../../include/bb2diaspora.php:257
 msgid "Finishes:"
 msgstr "Endet:"
 
@@ -6288,127 +6269,127 @@ msgid_plural "%d Contacts"
 msgstr[0] "%d Kontakt"
 msgstr[1] "%d Kontakte"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Monday"
 msgstr "Montag"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Tuesday"
 msgstr "Dienstag"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Wednesday"
 msgstr "Mittwoch"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Thursday"
 msgstr "Donnerstag"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Friday"
 msgstr "Freitag"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Saturday"
 msgstr "Samstag"
 
-#: ../../include/text.php:831
+#: ../../include/text.php:835
 msgid "Sunday"
 msgstr "Sonntag"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "January"
 msgstr "Januar"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "February"
 msgstr "Februar"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "March"
 msgstr "März"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "April"
 msgstr "April"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "May"
 msgstr "Mai"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "June"
 msgstr "Juni"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "July"
 msgstr "Juli"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "August"
 msgstr "August"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "September"
 msgstr "September"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "October"
 msgstr "Oktober"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "November"
 msgstr "November"
 
-#: ../../include/text.php:835
+#: ../../include/text.php:839
 msgid "December"
 msgstr "Dezember"
 
-#: ../../include/text.php:920
+#: ../../include/text.php:924
 msgid "bytes"
 msgstr "Byte"
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:944 ../../include/text.php:959
 msgid "remove"
 msgstr "löschen"
 
-#: ../../include/text.php:940 ../../include/text.php:955
+#: ../../include/text.php:944 ../../include/text.php:959
 msgid "[remove]"
 msgstr "[löschen]"
 
-#: ../../include/text.php:943
+#: ../../include/text.php:947
 msgid "Categories:"
 msgstr "Kategorien:"
 
-#: ../../include/text.php:958
+#: ../../include/text.php:962
 msgid "Filed under:"
 msgstr "Abgelegt unter:"
 
-#: ../../include/text.php:974 ../../include/text.php:986
+#: ../../include/text.php:978 ../../include/text.php:990
 msgid "Click to open/close"
 msgstr "Zum Ã¶ffnen/schließen klicken"
 
-#: ../../include/text.php:1091
+#: ../../include/text.php:1095 ../../include/user.php:230
 msgid "default"
 msgstr "standard"
 
-#: ../../include/text.php:1103
+#: ../../include/text.php:1107
 msgid "Select an alternate language"
 msgstr "Alternative Sprache auswählen"
 
-#: ../../include/text.php:1313
+#: ../../include/text.php:1317
 msgid "activity"
 msgstr "Aktivität"
 
-#: ../../include/text.php:1315
+#: ../../include/text.php:1319
 msgid "comment"
 msgstr "Kommentar"
 
-#: ../../include/text.php:1316
+#: ../../include/text.php:1320
 msgid "post"
 msgstr "Beitrag"
 
-#: ../../include/text.php:1471
+#: ../../include/text.php:1475
 msgid "Item filed"
 msgstr "Beitrag abgelegt"
 
@@ -6420,7 +6401,7 @@ msgstr "Freigabe-Benachrichtigung von Diaspora"
 msgid "Attachments:"
 msgstr "Anhänge:"
 
-#: ../../include/diaspora.php:2160
+#: ../../include/diaspora.php:2168
 #, php-format
 msgid "[Relayed] Comment authored by %s from network %s"
 msgstr "[Weitergeleitet] Kommentar von %s aus dem %s Netzwerk"
@@ -6446,7 +6427,7 @@ msgstr "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende B
 
 #: ../../include/group.php:176
 msgid "Default privacy group for new contacts"
-msgstr ""
+msgstr "Voreingestellte Gruppe für neue Kontakte"
 
 #: ../../include/group.php:195
 msgid "Everybody"
@@ -6472,7 +6453,7 @@ msgstr "Neue Gruppe erstellen"
 msgid "Contacts not in any group"
 msgstr "Kontakte in keiner Gruppe"
 
-#: ../../include/nav.php:46 ../../boot.php:815
+#: ../../include/nav.php:46 ../../boot.php:812
 msgid "Logout"
 msgstr "Abmelden"
 
@@ -6480,7 +6461,7 @@ msgstr "Abmelden"
 msgid "End this session"
 msgstr "Diese Sitzung beenden"
 
-#: ../../include/nav.php:49 ../../boot.php:1502
+#: ../../include/nav.php:49 ../../boot.php:1499
 msgid "Status"
 msgstr "Status"
 
@@ -6560,11 +6541,11 @@ msgstr "Verwalten"
 msgid "Manage other pages"
 msgstr "Andere Seiten verwalten"
 
-#: ../../include/nav.php:138 ../../boot.php:1063
+#: ../../include/nav.php:138 ../../boot.php:1060
 msgid "Profiles"
 msgstr "Profile"
 
-#: ../../include/nav.php:138 ../../boot.php:1063
+#: ../../include/nav.php:138 ../../boot.php:1060
 msgid "Manage/edit profiles"
 msgstr "Profile verwalten/editieren"
 
@@ -6647,13 +6628,13 @@ msgstr "Kategorien"
 msgid "Logged out."
 msgstr "Abgemeldet."
 
-#: ../../include/auth.php:113
+#: ../../include/auth.php:115
 msgid ""
 "We encountered a problem while logging in with the OpenID you provided. "
 "Please check the correct spelling of the ID."
 msgstr "Beim Versuch dich mit der von dir angegebenen OpenID anzumelden trat ein Problem auf. Bitte Ã¼berprüfe, dass du die OpenID richtig geschrieben hast."
 
-#: ../../include/auth.php:113
+#: ../../include/auth.php:115
 msgid "The error message was:"
 msgstr "Die Fehlermeldung lautete:"
 
@@ -6725,7 +6706,7 @@ msgstr "Sekunde"
 msgid "seconds"
 msgstr "Sekunden"
 
-#: ../../include/datetime.php:277
+#: ../../include/datetime.php:278
 #, php-format
 msgid "%1$d %2$s ago"
 msgstr "%1$d %2$s her"
@@ -6943,11 +6924,11 @@ msgstr "Foto:"
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr "Bitte besuche %s, um den Vorschlag zu akzeptieren oder abzulehnen."
 
-#: ../../include/items.php:2736
+#: ../../include/items.php:2740
 msgid "A new person is sharing with you at "
 msgstr "Eine neue Person teilt mit dir auf "
 
-#: ../../include/items.php:2736
+#: ../../include/items.php:2740
 msgid "You have a new follower at "
 msgstr "Du hast einen neuen Kontakt auf "
 
@@ -6960,6 +6941,74 @@ msgstr "Bild/Foto"
 msgid "link"
 msgstr "Verweis"
 
+#: ../../include/user.php:38
+msgid "An invitation is required."
+msgstr "Du benötigst eine Einladung."
+
+#: ../../include/user.php:43
+msgid "Invitation could not be verified."
+msgstr "Die Einladung konnte nicht Ã¼berprüft werden."
+
+#: ../../include/user.php:51
+msgid "Invalid OpenID url"
+msgstr "Ungültige OpenID URL"
+
+#: ../../include/user.php:66
+msgid "Please enter the required information."
+msgstr "Bitte trage die erforderlichen Informationen ein."
+
+#: ../../include/user.php:80
+msgid "Please use a shorter name."
+msgstr "Bitte verwende einen kürzeren Namen."
+
+#: ../../include/user.php:82
+msgid "Name too short."
+msgstr "Der Name ist zu kurz."
+
+#: ../../include/user.php:97
+msgid "That doesn't appear to be your full (First Last) name."
+msgstr "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein."
+
+#: ../../include/user.php:102
+msgid "Your email domain is not among those allowed on this site."
+msgstr "Die Domain deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt."
+
+#: ../../include/user.php:105
+msgid "Not a valid email address."
+msgstr "Keine gültige E-Mail-Adresse."
+
+#: ../../include/user.php:115
+msgid "Cannot use that email."
+msgstr "Konnte diese E-Mail-Adresse nicht verwenden."
+
+#: ../../include/user.php:121
+msgid ""
+"Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and "
+"must also begin with a letter."
+msgstr "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen."
+
+#: ../../include/user.php:127 ../../include/user.php:219
+msgid "Nickname is already registered. Please choose another."
+msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."
+
+#: ../../include/user.php:137
+msgid ""
+"Nickname was once registered here and may not be re-used. Please choose "
+"another."
+msgstr "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen."
+
+#: ../../include/user.php:153
+msgid "SERIOUS ERROR: Generation of security keys failed."
+msgstr "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden."
+
+#: ../../include/user.php:205
+msgid "An error occurred during registration. Please try again."
+msgstr "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal."
+
+#: ../../include/user.php:240
+msgid "An error occurred creating your default profile. Please try again."
+msgstr "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal."
+
 #: ../../include/security.php:21
 msgid "Welcome "
 msgstr "Willkommen "
@@ -6982,30 +7031,30 @@ msgstr "Das Sicherheitsmerkmal war nicht korrekt. Das passiert meistens wenn das
 msgid "stopped following"
 msgstr "wird nicht mehr gefolgt"
 
-#: ../../include/Contact.php:203 ../../include/conversation.php:821
+#: ../../include/Contact.php:203 ../../include/conversation.php:836
 msgid "View Status"
 msgstr "Pinnwand anschauen"
 
-#: ../../include/Contact.php:204 ../../include/conversation.php:822
+#: ../../include/Contact.php:204 ../../include/conversation.php:837
 msgid "View Profile"
 msgstr "Profil anschauen"
 
-#: ../../include/Contact.php:205 ../../include/conversation.php:823
+#: ../../include/Contact.php:205 ../../include/conversation.php:838
 msgid "View Photos"
 msgstr "Bilder anschauen"
 
 #: ../../include/Contact.php:206 ../../include/Contact.php:219
-#: ../../include/conversation.php:824
+#: ../../include/conversation.php:839
 msgid "Network Posts"
 msgstr "Netzwerkbeiträge"
 
 #: ../../include/Contact.php:207 ../../include/Contact.php:219
-#: ../../include/conversation.php:825
+#: ../../include/conversation.php:840
 msgid "Edit Contact"
 msgstr "Kontakt bearbeiten"
 
 #: ../../include/Contact.php:208 ../../include/Contact.php:219
-#: ../../include/conversation.php:826
+#: ../../include/conversation.php:841
 msgid "Send PM"
 msgstr "Private Nachricht senden"
 
@@ -7018,17 +7067,17 @@ msgstr "Nachricht/Beitrag"
 msgid "%1$s marked %2$s's %3$s as favorite"
 msgstr "%1$s hat %2$s\\s %3$s als Favorit markiert"
 
-#: ../../include/conversation.php:321 ../../include/conversation.php:587
+#: ../../include/conversation.php:321 ../../include/conversation.php:602
 msgid "Select"
 msgstr "Auswählen"
 
-#: ../../include/conversation.php:338 ../../include/conversation.php:680
-#: ../../include/conversation.php:681
+#: ../../include/conversation.php:338 ../../include/conversation.php:695
+#: ../../include/conversation.php:696
 #, php-format
 msgid "View %s's profile @ %s"
 msgstr "Das Profil von %s auf %s betrachten."
 
-#: ../../include/conversation.php:348 ../../include/conversation.php:692
+#: ../../include/conversation.php:348 ../../include/conversation.php:707
 #, php-format
 msgid "%s from %s"
 msgstr "%s von %s"
@@ -7044,283 +7093,283 @@ msgid_plural "%d comments"
 msgstr[0] "%d Kommentar"
 msgstr[1] "%d Kommentare"
 
-#: ../../include/conversation.php:533
+#: ../../include/conversation.php:548
 msgid "like"
 msgstr "mag ich"
 
-#: ../../include/conversation.php:534
+#: ../../include/conversation.php:549
 msgid "dislike"
 msgstr "mag ich nicht"
 
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:551
 msgid "Share this"
 msgstr "Teile dieses"
 
-#: ../../include/conversation.php:536
+#: ../../include/conversation.php:551
 msgid "share"
 msgstr "Teilen"
 
-#: ../../include/conversation.php:560
+#: ../../include/conversation.php:575
 msgid "Bold"
 msgstr "Fett"
 
-#: ../../include/conversation.php:561
+#: ../../include/conversation.php:576
 msgid "Italic"
 msgstr "Kursiv"
 
-#: ../../include/conversation.php:562
+#: ../../include/conversation.php:577
 msgid "Underline"
 msgstr "Unterstrichen"
 
-#: ../../include/conversation.php:563
+#: ../../include/conversation.php:578
 msgid "Quote"
 msgstr "Zitat"
 
-#: ../../include/conversation.php:564
+#: ../../include/conversation.php:579
 msgid "Code"
 msgstr "Code"
 
-#: ../../include/conversation.php:565
+#: ../../include/conversation.php:580
 msgid "Image"
 msgstr "Bild"
 
-#: ../../include/conversation.php:566
+#: ../../include/conversation.php:581
 msgid "Link"
 msgstr "Verweis"
 
-#: ../../include/conversation.php:567
+#: ../../include/conversation.php:582
 msgid "Video"
 msgstr "Video"
 
-#: ../../include/conversation.php:600
+#: ../../include/conversation.php:615
 msgid "add star"
 msgstr "markieren"
 
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:616
 msgid "remove star"
 msgstr "Markierung entfernen"
 
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:617
 msgid "toggle star status"
 msgstr "Markierung umschalten"
 
-#: ../../include/conversation.php:605
+#: ../../include/conversation.php:620
 msgid "starred"
 msgstr "markiert"
 
-#: ../../include/conversation.php:606
+#: ../../include/conversation.php:621
 msgid "add tag"
 msgstr "Tag hinzufügen"
 
-#: ../../include/conversation.php:610
+#: ../../include/conversation.php:625
 msgid "save to folder"
 msgstr "In Ordner speichern"
 
-#: ../../include/conversation.php:682
+#: ../../include/conversation.php:697
 msgid "to"
 msgstr "zu"
 
-#: ../../include/conversation.php:683
+#: ../../include/conversation.php:698
 msgid "Wall-to-Wall"
 msgstr "Wall-to-Wall"
 
-#: ../../include/conversation.php:684
+#: ../../include/conversation.php:699
 msgid "via Wall-To-Wall:"
 msgstr "via Wall-To-Wall:"
 
-#: ../../include/conversation.php:729
+#: ../../include/conversation.php:744
 msgid "Delete Selected Items"
 msgstr "Lösche die markierten Beiträge"
 
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:895
 #, php-format
 msgid "%s likes this."
 msgstr "%s mag das."
 
-#: ../../include/conversation.php:880
+#: ../../include/conversation.php:895
 #, php-format
 msgid "%s doesn't like this."
 msgstr "%s mag das nicht."
 
-#: ../../include/conversation.php:884
+#: ../../include/conversation.php:899
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this."
 msgstr "<span  %1$s>%2$d Leute</span> mögen das."
 
-#: ../../include/conversation.php:886
+#: ../../include/conversation.php:901
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this."
 msgstr "<span  %1$s>%2$d Leute</span> mögen das nicht."
 
-#: ../../include/conversation.php:892
+#: ../../include/conversation.php:907
 msgid "and"
 msgstr "und"
 
-#: ../../include/conversation.php:895
+#: ../../include/conversation.php:910
 #, php-format
 msgid ", and %d other people"
 msgstr " und %d andere"
 
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:911
 #, php-format
 msgid "%s like this."
 msgstr "%s mögen das."
 
-#: ../../include/conversation.php:896
+#: ../../include/conversation.php:911
 #, php-format
 msgid "%s don't like this."
 msgstr "%s mögen das nicht."
 
-#: ../../include/conversation.php:921
+#: ../../include/conversation.php:936
 msgid "Visible to <strong>everybody</strong>"
 msgstr "Für <strong>jedermann</strong> sichtbar"
 
-#: ../../include/conversation.php:923
+#: ../../include/conversation.php:938
 msgid "Please enter a video link/URL:"
 msgstr "Bitte Link/URL zum Video einfügen:"
 
-#: ../../include/conversation.php:924
+#: ../../include/conversation.php:939
 msgid "Please enter an audio link/URL:"
 msgstr "Bitte Link/URL zum Audio einfügen:"
 
-#: ../../include/conversation.php:925
+#: ../../include/conversation.php:940
 msgid "Tag term:"
 msgstr "Tag:"
 
-#: ../../include/conversation.php:927
+#: ../../include/conversation.php:942
 msgid "Where are you right now?"
 msgstr "Wo hältst du dich jetzt gerade auf?"
 
-#: ../../include/conversation.php:970
+#: ../../include/conversation.php:985
 msgid "upload photo"
 msgstr "Bild hochladen"
 
-#: ../../include/conversation.php:972
+#: ../../include/conversation.php:987
 msgid "attach file"
 msgstr "Datei anhängen"
 
-#: ../../include/conversation.php:974
+#: ../../include/conversation.php:989
 msgid "web link"
 msgstr "Weblink"
 
-#: ../../include/conversation.php:975
+#: ../../include/conversation.php:990
 msgid "Insert video link"
 msgstr "Video-Adresse einfügen"
 
-#: ../../include/conversation.php:976
+#: ../../include/conversation.php:991
 msgid "video link"
 msgstr "Video-Link"
 
-#: ../../include/conversation.php:977
+#: ../../include/conversation.php:992
 msgid "Insert audio link"
 msgstr "Audio-Adresse einfügen"
 
-#: ../../include/conversation.php:978
+#: ../../include/conversation.php:993
 msgid "audio link"
 msgstr "Audio-Link"
 
-#: ../../include/conversation.php:980
+#: ../../include/conversation.php:995
 msgid "set location"
 msgstr "Ort setzen"
 
-#: ../../include/conversation.php:982
+#: ../../include/conversation.php:997
 msgid "clear location"
 msgstr "Ort löschen"
 
-#: ../../include/conversation.php:989
+#: ../../include/conversation.php:1004
 msgid "permissions"
 msgstr "Zugriffsrechte"
 
-#: ../../boot.php:516
+#: ../../boot.php:513
 msgid "Delete this item?"
 msgstr "Diesen Beitrag löschen?"
 
-#: ../../boot.php:519
+#: ../../boot.php:516
 msgid "show fewer"
 msgstr "weniger anzeigen"
 
-#: ../../boot.php:692
+#: ../../boot.php:689
 #, php-format
 msgid "Update %s failed. See error logs."
 msgstr "Update %s fehlgeschlagen. Bitte Fehlerprotokoll Ã¼berprüfen."
 
-#: ../../boot.php:694
+#: ../../boot.php:691
 #, php-format
 msgid "Update Error at %s"
 msgstr "Updatefehler bei %s"
 
-#: ../../boot.php:794
+#: ../../boot.php:791
 msgid "Create a New Account"
 msgstr "Neuen Account erstellen"
 
-#: ../../boot.php:818
+#: ../../boot.php:815
 msgid "Nickname or Email address: "
 msgstr "Spitzname oder Email-Adresse: "
 
-#: ../../boot.php:819
+#: ../../boot.php:816
 msgid "Password: "
 msgstr "Passwort: "
 
-#: ../../boot.php:822
+#: ../../boot.php:819
 msgid "Or login using OpenID: "
 msgstr "Oder melde dich mit deiner OpenID an: "
 
-#: ../../boot.php:828
+#: ../../boot.php:825
 msgid "Forgot your password?"
 msgstr "Passwort vergessen?"
 
-#: ../../boot.php:995
+#: ../../boot.php:992
 msgid "Edit profile"
 msgstr "Profil bearbeiten"
 
-#: ../../boot.php:1055
+#: ../../boot.php:1052
 msgid "Message"
 msgstr "Nachricht"
 
-#: ../../boot.php:1171 ../../boot.php:1247
+#: ../../boot.php:1168 ../../boot.php:1244
 msgid "g A l F d"
 msgstr "l, d. F G \\U\\h\\r"
 
-#: ../../boot.php:1172 ../../boot.php:1248
+#: ../../boot.php:1169 ../../boot.php:1245
 msgid "F d"
 msgstr "d. F"
 
-#: ../../boot.php:1217 ../../boot.php:1288
+#: ../../boot.php:1214 ../../boot.php:1285
 msgid "[today]"
 msgstr "[heute]"
 
-#: ../../boot.php:1229
+#: ../../boot.php:1226
 msgid "Birthday Reminders"
 msgstr "Geburtstagserinnerungen"
 
-#: ../../boot.php:1230
+#: ../../boot.php:1227
 msgid "Birthdays this week:"
 msgstr "Geburtstage diese Woche:"
 
-#: ../../boot.php:1281
+#: ../../boot.php:1278
 msgid "[No description]"
 msgstr "[keine Beschreibung]"
 
-#: ../../boot.php:1299
+#: ../../boot.php:1296
 msgid "Event Reminders"
 msgstr "Veranstaltungserinnerungen"
 
-#: ../../boot.php:1300
+#: ../../boot.php:1297
 msgid "Events this week:"
 msgstr "Veranstaltungen diese Woche"
 
-#: ../../boot.php:1505
+#: ../../boot.php:1502
 msgid "Status Messages and Posts"
 msgstr "Statusnachrichten und Beiträge"
 
-#: ../../boot.php:1511
+#: ../../boot.php:1508
 msgid "Profile Details"
 msgstr "Profildetails"
 
-#: ../../boot.php:1526
+#: ../../boot.php:1523
 msgid "Events and Calendar"
 msgstr "Ereignisse und Kalender"
 
-#: ../../boot.php:1532
+#: ../../boot.php:1529
 msgid "Only You Can See This"
 msgstr "Nur Du Kannst Das Sehen"
index 7c127894aa7d4ad7d0b2aedd58cd13a4c3c88a55..1b0ef4b8943ca5cf387716a6e7a48fd1cfd7c8c3 100644 (file)
@@ -98,6 +98,7 @@ $a->strings["Private Message"] = "Private Nachricht";
 $a->strings["View Full Size"] = "Betrachte Originalgröße";
 $a->strings["Tags: "] = "Tags: ";
 $a->strings["[Remove any tag]"] = "[Tag entfernen]";
+$a->strings["Rotate CW"] = "Im Uhrzeigersinn rotieren";
 $a->strings["New album name"] = "Name des neuen Albums";
 $a->strings["Caption"] = "Bildunterschrift";
 $a->strings["Add a Tag"] = "Tag hinzufügen";
@@ -166,6 +167,7 @@ $a->strings["Failed to update contact record."] = "Aktualisierung der Kontaktdat
 $a->strings["Your introduction has been sent."] = "Deine Kontaktanfrage wurde gesendet.";
 $a->strings["Please login to confirm introduction."] = "Bitte melde dich an, um die Kontaktanfrage zu bestätigen.";
 $a->strings["Incorrect identity currently logged in. Please login to <strong>this</strong> profile."] = "Momentan bist du mit einer anderen Identität angemeldet. Bitte melde Dich mit <strong>diesem</strong> Profil an.";
+$a->strings["Hide this contact"] = "Verberge diese Kontakt";
 $a->strings["Welcome home %s."] = "Willkommen zurück %s.";
 $a->strings["Please confirm your introduction/connection request to %s."] = "Bitte bestätige deine Kontaktanfrage bei %s.";
 $a->strings["Confirm"] = "Bestätigen";
@@ -185,18 +187,14 @@ $a->strings[" - please do not use this form.  Instead, enter %s into your Diaspo
 $a->strings["Your Identity Address:"] = "Adresse deines Profils:";
 $a->strings["Submit Request"] = "Anfrage abschicken";
 $a->strings["Friendica Social Communications Server - Setup"] = "Friendica-Server für soziale Netzwerke â€“ Setup";
-$a->strings["Database connection"] = "Datenbankverbindung";
 $a->strings["Could not connect to database."] = "Verbindung zur Datenbank gescheitert";
 $a->strings["Could not create table."] = "Konnte Tabelle nicht erstellen.";
 $a->strings["Your Friendica site database has been installed."] = "Die Datenbank deiner Friendica Seite wurde installiert.";
-$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten.";
-$a->strings["Please see the file \"INSTALL.txt\"."] = "Lies bitte die \"INSTALL.txt\".";
-$a->strings["Proceed to registration"] = "Mit der Registrierung fortfahren";
-$a->strings["Proceed with Installation"] = "Mit der Installation fortfahren";
 $a->strings["You may need to import the file \"database.sql\" manually using phpmyadmin or mysql."] = "Möglicherweise musst du die Datei \"database.sql\" manuell mit phpmyadmin oder mysql importieren.";
-$a->strings["Database import failed."] = "Import der Datenbank schlug fehl.";
+$a->strings["Please see the file \"INSTALL.txt\"."] = "Lies bitte die \"INSTALL.txt\".";
 $a->strings["System check"] = "Systemtest";
 $a->strings["Check again"] = "Noch einmal testen";
+$a->strings["Database connection"] = "Datenbankverbindung";
 $a->strings["In order to install Friendica we need to know how to connect to your database."] = "Um Friendica installieren zu können, müssen wir wissen, wie wir zu deiner Datenbank Kontakt aufnehmen können.";
 $a->strings["Please contact your hosting provider or site administrator if you have questions about these settings."] = "Bitte kontaktiere den Hosting Provider oder den Administrator der Seite, falls du Fragen zu diesen Einstellungen haben solltest.";
 $a->strings["The database you specify below should already exist. If it does not, please create it before continuing."] = "Die Datenbank, die du unten angibst, sollte bereits existieren. Ist dies noch nicht der Fall, erzeuge sie bitte bevor du mit der Installation fortfährst.";
@@ -209,8 +207,9 @@ $a->strings["Your account email address must match this in order to use the web
 $a->strings["Please select a default timezone for your website"] = "Bitte wähle die Standardzeitzone deiner Webseite";
 $a->strings["Site settings"] = "Server-Einstellungen";
 $a->strings["Could not find a command line version of PHP in the web server PATH."] = "Konnte keine Kommandozeilenversion von PHP im PATH des Servers finden.";
+$a->strings["If you don't have a command line version of PHP installed on server, you will not be able to run background polling via cron. See <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>"] = "Wenn du keine Kommandozeilen Version von PHP auf deinem Server installiert hast, kannst du keine Hintergrundprozesse via cron starten. Siehe <a href='http://friendica.com/node/27'>'Activating scheduled tasks'</a>";
 $a->strings["PHP executable path"] = "Pfad zu PHP";
-$a->strings["Enter full path to php executable"] = "Kompletter Pfad zum PHP-Executable";
+$a->strings["Enter full path to php executable. You can leave this blank to continue the installation."] = "Gib den kompletten Pfad zur ausführbaren Datei von PHP an. Du kannst diesen Feld auch frei lassen und mit der Installation fortfahren.";
 $a->strings["Command line PHP"] = "Kommandozeilen-PHP";
 $a->strings["The command line version of PHP on your system does not have \"register_argc_argv\" enabled."] = "Die Kommandozeilenversion von PHP auf deinem System hat \"register_argc_argv\" nicht aktiviert.";
 $a->strings["This is required for message delivery to work."] = "Dies wird für die Auslieferung von Nachrichten benötigt.";
@@ -232,11 +231,15 @@ $a->strings["Error: mysqli PHP module required but not installed."] = "Fehler: D
 $a->strings["Error: mb_string PHP module required but not installed."] = "Fehler: mb_string PHP Module wird benötigt ist aber nicht installiert.";
 $a->strings["The web installer needs to be able to create a file called \".htconfig.php\ in the top folder of your web server and it is unable to do so."] = "Der Installationswizard muss in der Lage sein, eine Datei im Stammverzeichnis deines Webservers anzulegen, ist allerdings derzeit nicht in der Lage, dies zu tun.";
 $a->strings["This is most often a permission setting, as the web server may not be able to write files in your folder - even if you can."] = "In den meisten Fällen ist dies ein Problem mit den Schreibrechten, der Webserver könnte keine Schreiberlaubnis haben, selbst wenn du sie hast.";
-$a->strings["Please check with your site documentation or support people to see if this situation can be corrected."] = "Bitte Ã¼berprüfe die Einstellungen und frage im Zweifelsfall dein Support Team, um diese Situation zu beheben.";
-$a->strings["If not, you may be required to perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Sollte dies nicht möglich sein, musst du die Installation manuell durchführen. Lies dazu bitte in der Datei \"INSTALL.txt\".";
+$a->strings["At the end of this procedure, we will give you a text to save in a file named .htconfig.php in your Friendica top folder."] = "Nachdem du alles ausgefüllt hast, erhältst du einen Text, den du in eine Datei namens .htconfig.php in deinem Friendica-Wurzelverzeichnis kopieren musst.";
+$a->strings["You can alternatively skip this procedure and perform a manual installation. Please see the file \"INSTALL.txt\" for instructions."] = "Alternativ kannst du diesen Schritt aber auch Ã¼berspringen und die Installation manuell durchführen. Eine Anleitung dazu (Englisch) findest du in der Datei INSTALL.txt.";
 $a->strings[".htconfig.php is writable"] = "Schreibrechte auf .htconfig.php";
+$a->strings["Url rewrite in .htaccess is not working. Check your server configuration."] = "Umschreiben der URLs in der .htaccess funktioniert nicht. Ãœberprüfe die Konfiguration des Servers.";
+$a->strings["Url rewrite is working"] = "URL rewrite funktioniert";
 $a->strings["The database configuration file \".htconfig.php\" could not be written. Please use the enclosed text to create a configuration file in your web server root."] = "Die Konfigurationsdatei \".htconfig.php\" konnte nicht angelegt werden. Bitte verwende den angefügten Text, um die Datei im Stammverzeichnis deiner Friendica-Installation zu erzeugen.";
 $a->strings["Errors encountered creating database tables."] = "Fehler aufgetreten während der Erzeugung der Datenbanktabellen.";
+$a->strings["<h1>What next</h1>"] = "<h1>Wie geht es weiter?</h1>";
+$a->strings["IMPORTANT: You will need to [manually] setup a scheduled task for the poller."] = "WICHTIG: Du musst [manuell] einen Cronjob (o.ä.) für den Poller einrichten.";
 $a->strings["l F d, Y \\@ g:i A"] = "l F d, Y \\@ g:i A";
 $a->strings["Time Conversion"] = "Zeitumrechnung";
 $a->strings["Friendika provides this service for sharing events with other networks and friends in unknown timezones."] = "Friendica bietet diese Funktion an, um das Teilen von Events mit den Kontakten zu vereinfachen, deren Zeitzone nicht ermittelt werden kann.";
@@ -403,8 +406,8 @@ $a->strings[" Please use a shorter name."] = " Bitte verwende einen kürzeren Na
 $a->strings[" Name too short."] = " Name ist zu kurz.";
 $a->strings[" Not valid email."] = " Keine gültige E-Mail.";
 $a->strings[" Cannot change to that email."] = "Ändern der E-Mail nicht möglich. ";
-$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "";
-$a->strings["Private forum has no privacy permissions and no default privacy group."] = "";
+$a->strings["Private forum has no privacy permissions. Using default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt. Die voreingestellte Gruppe für neue Kontakte wird benutzt.";
+$a->strings["Private forum has no privacy permissions and no default privacy group."] = "Für das private Forum sind keine Zugriffsrechte eingestellt, und es gibt keine voreingestellte Gruppe für neue Kontakte.";
 $a->strings["Settings updated."] = "Einstellungen aktualisiert.";
 $a->strings["Add application"] = "Programm hinzufügen";
 $a->strings["Consumer Key"] = "Consumer Key";
@@ -446,16 +449,16 @@ $a->strings["Minimum of 10 seconds, no maximum"] = "Minimal 10 Sekunden, kein Ma
 $a->strings["Number of items to display on the network page:"] = "Zahl der Beiträge, die pro Netzwerkseite angezeigt werden sollen: ";
 $a->strings["Maximum of 100 items"] = "Maximal 100 Beiträge";
 $a->strings["Don't show emoticons"] = "Keine Smilies anzeigen";
-$a->strings["Normal Account"] = "Normaler Account";
+$a->strings["Normal Account Page"] = "Normale Account Seite";
 $a->strings["This account is a normal personal profile"] = "Dieser Account ist ein normales persönliches Profil";
-$a->strings["Soapbox Account"] = "Sandkasten-Account";
+$a->strings["Soapbox Page"] = "Sandkasten Seite";
 $a->strings["Automatically approve all connection/friend requests as read-only fans"] = "Kontaktanfragen werden automatisch als Nurlese-Fans akzeptiert";
-$a->strings["Community/Celebrity Account"] = "Gemeinschafts-/Promi-Account";
+$a->strings["Community Forum/Celebrity Account"] = "Gemeinschafts Forum / Promi Konto";
 $a->strings["Automatically approve all connection/friend requests as read-write fans"] = "Kontaktanfragen werden automatisch als Lese-und-Schreib-Fans akzeptiert";
-$a->strings["Automatic Friend Account"] = "Automatischer Freundesaccount";
+$a->strings["Automatic Friend Page"] = "Automatische Freunde Seite";
 $a->strings["Automatically approve all connection/friend requests as friends"] = "Kontaktanfragen werden automatisch als Freund akzeptiert";
-$a->strings["Private Forum"] = "";
-$a->strings["Private forum - approved members only [Experimental]"] = "";
+$a->strings["Private Forum [Experimental]"] = "Privates Forum [Versuchsstadium]";
+$a->strings["Private forum - approved members only"] = "Privates Forum - Ausschließlich für Mitglieder";
 $a->strings["OpenID:"] = "OpenID:";
 $a->strings["(Optional) Allow this OpenID to login to this account."] = "(Optional) Erlaube die Anmeldung für diesen Account mit dieser OpenID.";
 $a->strings["Publish your default profile in your local site directory?"] = "Veröffentliche dein Standardprofil im Verzeichnis der lokalen Seite?";
@@ -477,6 +480,7 @@ $a->strings["Expire posts:"] = "Beiträge verfallen lassen:";
 $a->strings["Expire personal notes:"] = "Persönliche Notizen verfallen lassen:";
 $a->strings["Expire starred posts:"] = "Markierte Beiträge verfallen lassen:";
 $a->strings["Expire photos:"] = "Fotos verfallen lassen:";
+$a->strings["Only expire posts by others:"] = "Nur Beiträge anderer verfallen";
 $a->strings["Account Settings"] = "Account-Einstellungen";
 $a->strings["Password Settings"] = "Passwort-Einstellungen";
 $a->strings["New Password:"] = "Neues Passwort:";
@@ -507,7 +511,8 @@ $a->strings["Someone writes a followup comment"] = "– jemand auch einen Kommen
 $a->strings["You receive a private message"] = "– du eine private Nachricht erhältst";
 $a->strings["You receive a friend suggestion"] = "- du eine Empfehlung erhältst";
 $a->strings["You are tagged in a post"] = "- du in einem Beitrag erwähnt wurdest";
-$a->strings["Advanced Page Settings"] = "Erweiterte Seiten-Einstellungen";
+$a->strings["Advanced Account/Page Type Settings"] = "";
+$a->strings["Change the behaviour of this account for special situations"] = "Ändere das Verhalten deines Accounts für spezielle Situationen.";
 $a->strings["Manage Identities and/or Pages"] = "Verwalte Identitäten und/oder Seiten";
 $a->strings["Toggle between different identities or community/group pages which share your account details or which you have been granted \"manage\" permissions"] = "Wechsle zwischen verschiedenen Identitäten oder Gemeinschafts-/Gruppen-Seiten, die deine Zugangsdetails teilen oder zu denen du \"Manage\" Befugnisse bekommen hast.";
 $a->strings["Select an identity to manage: "] = "Wähle eine Identität zum Verwalten: ";
@@ -590,22 +595,6 @@ $a->strings["Visible To"] = "Sichtbar für";
 $a->strings["All Contacts (with secure profile access)"] = "Alle Kontakte (mit gesichertem Profilzugriff)";
 $a->strings["No contacts."] = "Keine Kontakte.";
 $a->strings["View Contacts"] = "Kontakte anzeigen";
-$a->strings["An invitation is required."] = "Du benötigst eine Einladung.";
-$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht Ã¼berprüft werden.";
-$a->strings["Invalid OpenID url"] = "Ungültige OpenID URL";
-$a->strings["Please enter the required information."] = "Bitte trage die erforderlichen Informationen ein.";
-$a->strings["Please use a shorter name."] = "Bitte verwende einen kürzeren Namen.";
-$a->strings["Name too short."] = "Der Name ist zu kurz.";
-$a->strings["That doesn't appear to be your full (First Last) name."] = "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein.";
-$a->strings["Your email domain is not among those allowed on this site."] = "Die Domain deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt.";
-$a->strings["Not a valid email address."] = "Keine gültige E-Mail-Adresse.";
-$a->strings["Cannot use that email."] = "Konnte diese E-Mail-Adresse nicht verwenden.";
-$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen.";
-$a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.";
-$a->strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.";
-$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden.";
-$a->strings["An error occurred during registration. Please try again."] = "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
-$a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
 $a->strings["Registration details for %s"] = "Details der Registration von %s";
 $a->strings["Registration successful. Please check your email for further instructions."] = "Registrierung erfolgreich. Eine E-Mail mit weiteren Anweisungen wurde an dich gesendet.";
 $a->strings["Failed to send email message. Here is the message that failed."] = "Konnte die E-Mail nicht versenden. Hier ist die Nachricht, die nicht gesendet werden konnte.";
@@ -688,9 +677,13 @@ $a->strings["Users"] = "Nutzer";
 $a->strings["Plugins"] = "Plugins";
 $a->strings["Themes"] = "Themen";
 $a->strings["DB updates"] = "DB Updates";
-$a->strings["Software Update"] = "Software Update";
 $a->strings["Logs"] = "Protokolle";
 $a->strings["User registrations waiting for confirmation"] = "Nutzeranmeldungen die auf Bestätigung warten";
+$a->strings["Normal Account"] = "Normaler Account";
+$a->strings["Soapbox Account"] = "Sandkasten-Account";
+$a->strings["Community/Celebrity Account"] = "Gemeinschafts-/Promi-Account";
+$a->strings["Automatic Friend Account"] = "Automatischer Freundesaccount";
+$a->strings["Message queues"] = "Nachrichten-Warteschlangen";
 $a->strings["Administration"] = "Administration";
 $a->strings["Summary"] = "Zusammenfassung";
 $a->strings["Registered users"] = "Registrierte Nutzer";
@@ -830,7 +823,7 @@ $a->strings["{0} mentioned you in a post"] = "{0} hat dich in einem Beitrag erw
 $a->strings["Contacts who are not members of a group"] = "Kontakte, die keiner Gruppe zugewiesen sind";
 $a->strings["OpenID protocol error. No ID returned."] = "OpenID Protokollfehler. Keine ID zurückgegeben.";
 $a->strings["Account not found and OpenID registration is not permitted on this site."] = "Account wurde nicht gefunden und OpenID Registrierung auf diesem Server nicht gestattet.";
-$a->strings["Login failed."] = "Annmeldung fehlgeschlagen.";
+$a->strings["Login failed."] = "Anmeldung fehlgeschlagen.";
 $a->strings["Connect URL missing."] = "Connect-URL fehlt";
 $a->strings["This site is not configured to allow communications with other networks."] = "Diese Seite ist so konfiguriert, dass keine Kommunikation mit anderen Netzwerken erfolgen kann.";
 $a->strings["No compatible communication protocols or feeds were discovered."] = "Es wurden keine kompatiblen Kommunikationsprotokolle oder Feeds gefunden.";
@@ -860,12 +853,13 @@ $a->strings["Gender"] = "Geschlecht";
 $a->strings["Sexual Preference"] = "Sexuelle Vorlieben";
 $a->strings["Homepage"] = "Webseite";
 $a->strings["Interests"] = "Interessen";
+$a->strings["Address"] = "Adresse";
 $a->strings["Location"] = "Wohnort";
 $a->strings["Profile updated."] = "Profil aktualisiert.";
 $a->strings[" and "] = " und ";
 $a->strings["public profile"] = "öffentliches Profil";
 $a->strings["%1\$s changed %2\$s to &ldquo;%3\$s&rdquo;"] = "%1\$s hat %2\$s geändert auf &ldquo;%3\$s&rdquo;";
-$a->strings[" - Visit %1\$s's %2\$s"] = "";
+$a->strings[" - Visit %1\$s's %2\$s"] = " â€“ %1\$ss %2\$s besuchen";
 $a->strings["%1\$s has an updated %2\$s, changing %3\$s."] = "%1\$s hat folgendes aktualisiert %2\$s, verändert wurde %3\$s.";
 $a->strings["Profile deleted."] = "Profil gelöscht.";
 $a->strings["Profile-"] = "Profil-";
@@ -890,6 +884,7 @@ $a->strings["Region/State:"] = "Region/Bundesstaat:";
 $a->strings["<span class=\"heart\">&hearts;</span> Marital Status:"] = "<span class=\"heart\">&hearts;</span> Beziehungsstatus:";
 $a->strings["Who: (if applicable)"] = "Wer: (falls anwendbar)";
 $a->strings["Examples: cathy123, Cathy Williams, cathy@example.com"] = "Beispiele: cathy123, Cathy Williams, cathy@example.com";
+$a->strings["Since [date]:"] = "Seit [Datum]:";
 $a->strings["Sexual Preference:"] = "Sexuelle Vorlieben:";
 $a->strings["Homepage URL:"] = "Adresse der Homepage:";
 $a->strings["Political Views:"] = "Politische Ansichten:";
@@ -1099,12 +1094,15 @@ $a->strings["Drupal site URL"] = "URL der Drupal Seite";
 $a->strings["Drupal site uses clean URLS"] = "Drupal Seite verwendet bereinigte URLs";
 $a->strings["Post to Drupal by default"] = "Veröffentliche Ã¶ffentliche Beiträge standardmäßig bei Drupal";
 $a->strings["Post from Friendica"] = "Beitrag via Friendica";
+$a->strings["Startpage Settings"] = "Startseiten-Einstellungen";
+$a->strings["Home page to load after login  - leave blank for profile wall"] = "Seite, die nach dem Anmelden geladen werden soll. Leer = Pinnwand";
+$a->strings["Examples: &quot;network&quot; or &quot;notifications/system&quot;"] = "Beispiele: network, notifications/system";
 $a->strings["Geonames settings updated."] = "Geonames Einstellungen aktualisiert";
 $a->strings["Geonames Settings"] = "Geonames Einstellungen";
 $a->strings["Enable Geonames Plugin"] = "Geonames Plugin aktivieren";
 $a->strings["Your account on %s will expire in a few days."] = "Dein Konto auf %s wird in ein paar Tagen verfallen.";
-$a->strings["Your Friendica account is about to expire."] = "";
-$a->strings["Hi %1\$s,\n\nYour account on %2\$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"] = "";
+$a->strings["Your Friendica account is about to expire."] = "Dein Friendica-Account wird in Kürze auslaufen.";
+$a->strings["Hi %1\$s,\n\nYour account on %2\$s will expire in less than five days. You may keep your account by logging in at least once every 30 days"] = "Hallo %1\$s,\n\ndein Account auf %2\$s wird in weniger als fünf Tagen auslaufen. Du kannst das verhindern, indem du dich mindestens einmal alle 30 Tage anmeldest.";
 $a->strings["Upload a file"] = "Datei hochladen";
 $a->strings["Drop files here to upload"] = "Ziehe Dateien hierher, um sie hochzuladen";
 $a->strings["Failed"] = "Fehlgeschlagen";
@@ -1223,8 +1221,8 @@ $a->strings["WordPress username"] = "WordPress-Benutzername";
 $a->strings["WordPress password"] = "WordPress-Passwort";
 $a->strings["WordPress API URL"] = "WordPress-API-URL";
 $a->strings["Post to WordPress by default"] = "Standardmäßig auf WordPress veröffentlichen";
-$a->strings["Provide a backlink to the Friendica post"] = "";
-$a->strings["Read the original post and comment stream on Friendica"] = "";
+$a->strings["Provide a backlink to the Friendica post"] = "Einen zurück zum Friendica-Beitrag hinzufügen";
+$a->strings["Read the original post and comment stream on Friendica"] = "Den Original-Beitrag samt Kommentaren bei Friendica lesen";
 $a->strings["\"Show more\" Settings"] = "\"Mehr zeigen\" Einstellungen";
 $a->strings["Enable Show More"] = "Aktiviere \"Mehr zeigen\"";
 $a->strings["Cutting posts after how much characters"] = "Begrenze Beiträge nach einer bestimmten Anzahl an Buchstaben";
@@ -1318,6 +1316,7 @@ $a->strings["j F"] = "j F";
 $a->strings["Birthday:"] = "Geburtstag:";
 $a->strings["Age:"] = "Alter:";
 $a->strings["Status:"] = "Status:";
+$a->strings["for %1\$d %2\$s"] = "für %1\$d %2\$s";
 $a->strings["Homepage:"] = "Homepage:";
 $a->strings["Tags:"] = "Tags";
 $a->strings["Religion:"] = "Religion:";
@@ -1458,7 +1457,7 @@ $a->strings["view full size"] = "Volle Größe anzeigen";
 $a->strings["Embedded content"] = "Eingebetteter Inhalt";
 $a->strings["Embedding disabled"] = "Einbettungen deaktiviert";
 $a->strings["A deleted group with this name was revived. Existing item permissions <strong>may</strong> apply to this group and any future members. If this is not what you intended, please create another group with a different name."] = "Eine gelöschte Gruppe mit diesem Namen wurde wiederbelebt. Bestehende Berechtigungseinstellungen <strong>könnten</strong> auf diese Gruppe oder zukünftige Mitglieder angewandt werden. Falls du dies nicht möchtest, erstelle bitte eine andere Gruppe mit einem anderen Namen.";
-$a->strings["Default privacy group for new contacts"] = "";
+$a->strings["Default privacy group for new contacts"] = "Voreingestellte Gruppe für neue Kontakte";
 $a->strings["Everybody"] = "Alle Kontakte";
 $a->strings["edit"] = "bearbeiten";
 $a->strings["Groups"] = "Gruppen";
@@ -1581,6 +1580,22 @@ $a->strings["A new person is sharing with you at "] = "Eine neue Person teilt mi
 $a->strings["You have a new follower at "] = "Du hast einen neuen Kontakt auf ";
 $a->strings["image/photo"] = "Bild/Foto";
 $a->strings["link"] = "Verweis";
+$a->strings["An invitation is required."] = "Du benötigst eine Einladung.";
+$a->strings["Invitation could not be verified."] = "Die Einladung konnte nicht Ã¼berprüft werden.";
+$a->strings["Invalid OpenID url"] = "Ungültige OpenID URL";
+$a->strings["Please enter the required information."] = "Bitte trage die erforderlichen Informationen ein.";
+$a->strings["Please use a shorter name."] = "Bitte verwende einen kürzeren Namen.";
+$a->strings["Name too short."] = "Der Name ist zu kurz.";
+$a->strings["That doesn't appear to be your full (First Last) name."] = "Das scheint nicht dein kompletter Name (Vor- und Nachname) zu sein.";
+$a->strings["Your email domain is not among those allowed on this site."] = "Die Domain deiner E-Mail Adresse ist auf dieser Seite nicht erlaubt.";
+$a->strings["Not a valid email address."] = "Keine gültige E-Mail-Adresse.";
+$a->strings["Cannot use that email."] = "Konnte diese E-Mail-Adresse nicht verwenden.";
+$a->strings["Your \"nickname\" can only contain \"a-z\", \"0-9\", \"-\", and \"_\", and must also begin with a letter."] = "Dein Spitzname darf nur aus Buchstaben und Zahlen (\"a-z\",\"0-9\", \"_\" und \"-\") bestehen, außerdem muss er mit einem Buchstaben beginnen.";
+$a->strings["Nickname is already registered. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.";
+$a->strings["Nickname was once registered here and may not be re-used. Please choose another."] = "Dieser Spitzname ist bereits vergeben. Bitte wähle einen anderen.";
+$a->strings["SERIOUS ERROR: Generation of security keys failed."] = "FATALER FEHLER: Sicherheitsschlüssel konnten nicht erzeugt werden.";
+$a->strings["An error occurred during registration. Please try again."] = "Wärend der Anmeldung ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
+$a->strings["An error occurred creating your default profile. Please try again."] = "Bei der Erstellung des Standardprofils ist ein Fehler aufgetreten. Bitte versuche es noch einmal.";
 $a->strings["Welcome "] = "Willkommen ";
 $a->strings["Please upload a profile photo."] = "Bitte lade ein Profilbild hoch.";
 $a->strings["Welcome back "] = "Willkommen zurück ";
index 58e9233aa7ec148c843bc3f2e23105df861d462f..6c916323ce8c3ab295b1b006ec1f0e22b5ef4770 100644 (file)
@@ -11,6 +11,10 @@ $please
 <input type="hidden" name="localconfirm" value="1" />
 $aes_allow
 
+<label id="dfrn-request-homecoming-hide-label" for="dfrn-request-homecoming-hide">$hidethem</label>
+<input type="checkbox" name="hidden-contact" value="1" {{ if $hidechecked }}checked="checked" {{ endif }} />
+
+
 <div id="dfrn-request-homecoming-submit-wrapper" >
 <input id="dfrn-request-homecoming-submit" type="submit" name="submit" value="$submit" />
 </div>
old mode 100644 (file)
new mode 100755 (executable)
index 65559b0..8b67f4d
@@ -5,9 +5,9 @@
       <target_type>$target_type</target_type>
       <parent_guid>$parent_guid</parent_guid>
       <parent_author_signature>$parentsig</parent_author_signature>
-      <author_signature>$authrosig</author_signature>
+      <author_signature>$authorsig</author_signature>
       <positive>$positive</positive>
       <diaspora_handle>$handle</diaspora_handle>
     </like>
   </post>
-</XML>
\ No newline at end of file
+</XML>
diff --git a/view/diaspora_relay_retraction.tpl b/view/diaspora_relay_retraction.tpl
new file mode 100644 (file)
index 0000000..e76c7c6
--- /dev/null
@@ -0,0 +1,10 @@
+<XML>
+  <post>
+    <relayable_retraction>
+      <target_type>$type</target_type>
+      <target_guid>$guid</target_guid>
+      <target_author_signature>$signature</target_author_signature>
+      <sender_handle>$handle</sender_handle>
+    </relayable_retraction>
+  </post>
+</XML>
diff --git a/view/diaspora_relayable_retraction.tpl b/view/diaspora_relayable_retraction.tpl
new file mode 100755 (executable)
index 0000000..73cff83
--- /dev/null
@@ -0,0 +1,11 @@
+<XML>
+  <post>
+    <relayable_retraction>
+      <target_type>$target_type</target_type>
+      <target_guid>$guid</target_guid>
+      <parent_author_signature>$parentsig</parent_author_signature>
+      <target_author_signature>$authorsig</target_author_signature>
+      <sender_handle>$handle</sender_handle>
+    </relayable_retraction>
+  </post>
+</XML>
index 924fc47ac4075954e052f2a364572705809f6be8..c9022a1c1498b1bdc261f04a1b3d237f2b3bc998 100644 (file)
@@ -1,7 +1,5 @@
        {{inc field_radio.tpl with $field=$page_normal }}{{endinc}}
-       {{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
        {{inc field_radio.tpl with $field=$page_community }}{{endinc}}
-       {{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
-       {{ if $experimental }}
        {{inc field_radio.tpl with $field=$page_prvgroup }}{{endinc}}
-       {{ endif }}
\ No newline at end of file
+       {{inc field_radio.tpl with $field=$page_soapbox }}{{endinc}}
+       {{inc field_radio.tpl with $field=$page_freelove }}{{endinc}}
index 470404fc339081347887ee5ff52d2d5bd1814f2e..0b8f31f437fabceb792add6d83b1297c16f10df0 100644 (file)
@@ -29,7 +29,7 @@
 {{ if $profile.marital }}
 <dl id="aprofile-marital" class="aprofile">
  <dt><span class="heart">&hearts;</span>  $profile.marital.0</dt>
- <dd>$profile.marital.1  {{ if $profile.marital.with }}($profile.marital.with){{ endif }}</dd>
+ <dd>$profile.marital.1{{ if $profile.marital.with }} ($profile.marital.with){{ endif }}{{ if $profile.howlong }} $profile.howlong{{ endif }}</dd>
 </dl>
 {{ endif }}
 
 </dl>
 {{ endif }}
 
+{{ if $profile.hometown }}
+<dl id="aprofile-hometown" class="aprofile">
+ <dt>$profile.hometown.0</dt>
+ <dd>$profile.hometown.1</dd>
+</dl>
+{{ endif }}
+
 {{ if $profile.politic }}
 <dl id="aprofile-politic" class="aprofile">
  <dt>$profile.politic.0</dt>
index 2139fcf13cb140321df62e457282dfad859e91f9..ad34b995672e8bffc18128514d3ee8ec42d71898 100644 (file)
@@ -97,6 +97,12 @@ $hide_friends
 </div>
 <div id="profile-edit-region-end"></div>
 
+<div id="profile-edit-hometown-wrapper" >
+<label id="profile-edit-hometown-label" for="profile-edit-hometown" >$lbl_hometown </label>
+<input type="text" size="32" name="hometown" id="profile-edit-hometown" value="$hometown" />
+</div>
+<div id="profile-edit-hometown-end"></div>
+
 <div class="profile-edit-submit-wrapper" >
 <input type="submit" name="submit" class="profile-edit-submit-button" value="$submit" />
 </div>
@@ -108,6 +114,9 @@ $marital
 </div>
 <label id="profile-edit-with-label" for="profile-edit-with" > $lbl_with </label>
 <input type="text" size="32" name="with" id="profile-edit-with" title="$lbl_ex1" value="$with" />
+<label id="profile-edit-howlong-label" for="profile-edit-howlong" > $lbl_howlong </label>
+<input type="text" size="32" name="howlong" id="profile-edit-howlong" title="$lbl_howlong" value="$howlong" />
+
 <div id="profile-edit-marital-end"></div>
 
 <div id="profile-edit-sexual-wrapper" >
index 2ce07ce6fd9ce5b0a2b53f457d3f74db04337bde..ecfef95d6b5a4192557a55984c8ced29da97f6ad 100644 (file)
@@ -17,7 +17,7 @@ $select
 
 
 <div id="prvmail-submit-wrapper" >
-       <input type="submit" id="prvmail-submit" name="submit" value="Submit" tabindex="13" />
+       <input type="submit" id="prvmail-submit" name="submit" value="$submit" tabindex="13" />
        <div id="prvmail-upload-wrapper" >
                <div id="prvmail-upload" class="icon border camera" title="$upload" ></div>
        </div> 
index d61af072f70bca195cb70b556226086336851233..99ee9b51efdb3cc0c9ca8cf531f71fb6025abdb4 100644 (file)
@@ -98,21 +98,22 @@ $group_select
 
 
 <div class="settings-submit-wrapper" >
-<input type="submit" name="submit" class="settings-submit" value="Submit" />
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
 </div>
 
 
 
 <h3 class="settings-heading">$h_not</h3>
+<div id="settings-notifications">
 
-<strong>$activity_options</strong>
+<div id="settings-activity-desc">$activity_options</div>
 
 {{inc field_checkbox.tpl with $field=$post_newfriend }}{{endinc}}
 {{inc field_checkbox.tpl with $field=$post_joingroup }}{{endinc}}
 {{inc field_checkbox.tpl with $field=$post_profilechange }}{{endinc}}
 
 
-<div id="settings-notify-desc"><strong>$lbl_not </strong></div>
+<div id="settings-notify-desc">$lbl_not</div>
 
 <div class="group">
 {{inc field_intcheckbox.tpl with $field=$notify1 }}{{endinc}}
@@ -124,6 +125,7 @@ $group_select
 {{inc field_intcheckbox.tpl with $field=$notify7 }}{{endinc}}
 </div>
 
+</div>
 
 <div class="settings-submit-wrapper" >
 <input type="submit" name="submit" class="settings-submit" value="$submit" />
@@ -131,6 +133,7 @@ $group_select
 
 
 <h3 class="settings-heading">$h_advn</h3>
+<div id="settings-pagetype-desc">$h_descadvn</div>
 
 $pagetype
 
index 41b6aeadffeb43f8fbc9d6c5473e1c4cc32d8baf..c49cdf26b1ed1d12458273c363e9b8fe020a2552 100644 (file)
@@ -18,6 +18,7 @@
 
 {{ if $dropping }}
 <div class="delete-checked">
-<a href="#" onclick="deleteCheckedItems();return false;"><span class="icon delete"></span><span class="s22 text">$dropping</span></a>
+<a href="#" onclick="deleteCheckedItems();return false;"><span class="icon delete"></span><span class="s22 text" onmouseover="imgbright(this);" onmouseout="imgdull(this);">$dropping</span></a>
 </div>
+<div id="item-delete-selected-end"></div>
 {{ endif }}
index 965350749b48f72dcfce71e878e2a7132ff2ab4f..b94e5ec3452a713dce20f6c6655e83fd10c78a89 100644 (file)
@@ -103,7 +103,7 @@ div.jGrowl div.info{background:#1353b1 url("../../../images/icons/48/info.png")
 nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
 .show{display:block;}
 #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:300px;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;}
 .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;}
@@ -111,7 +111,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 #search-text{border:1px solid #eeeeee;margin:5px 0;}
 #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;}
-#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:75%;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: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-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
 .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;}
@@ -227,11 +227,12 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 #connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
 .ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
 .hide-comments-outer{font-size:small;}
-.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
+.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-info{width:5em;}
+.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
 .wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
+.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:3.35em;top:3.2em;background-position:35px center;}
 .wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
+.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:4.5em;top:5.5em;}
 .comment-wwedit-wrapper{border:1px solid #eeeecc;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:5px;}
 .comment-edit-wrapper{border-top:1px #aaa solid;}
 [class^="comment-edit-bb"]{margin:0px;padding:0px;list-style:none;list-style-position:inside;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
index d394b13bf3ddfb7a0555822e84e0b6aa5b42f0ed..c15706c360748775cd397550bbbfd8db4e95c87f 100644 (file)
@@ -639,7 +639,7 @@ nav #nav-notifications-linkmenu {
        color: transparent;
        .rounded_corners;
        z-index: 100;
-       .box(300px, 60px);
+       .box(270px, 60px);
 }
 #nav-buttons {
        clear: both;
@@ -702,7 +702,7 @@ nav #nav-notifications-linkmenu {
 #user-menu {
        .box_shadow(5px, 0, 10px, 0);
        display: block;
-       width: 75%;
+       width: 80%;
        margin: 3px 0 0 0;
        position: relative;
        .rounded_corners;
@@ -1526,6 +1526,9 @@ nav #nav-notifications-linkmenu {
 }
 .wall-item-outside-wrapper.comment {
        margin-left: 5em;
+       .wall-item-info {
+               width: 5em;
+       }
        .wall-item-photo {
                width: 40px !important;
                height: 40px !important;
@@ -1534,16 +1537,16 @@ nav #nav-notifications-linkmenu {
                .box(40px, 40px);
        }
        .wall-item-photo-menu-button {
-               width: 50px;
-               top: 45px;
+               width: 3.35em;
+               top: 3.2em;
                background-position: 35px center;
        }
        .wall-item-author {
                margin-left: 0.2em;
        }
        .wall-item-photo-menu {
-               min-width: 50px;
-               top: 60px;
+               min-width: 4.5em;
+               top: 5.5em;
        }
 }
 .comment-wwedit-wrapper {
index c9f7ef95acf0ef114cdbdd04457386d2172e42d4..0e7fc1f8d32dab22723fc61d204b6f5b38f7cf8b 100644 (file)
@@ -58,7 +58,7 @@ h6{font-size:xx-small;}
 #articlemain{width:100%;height:100%;margin:0 auto;}
 .button{color:#111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;padding:5px;cursor:pointer;}.button a{color:#111111;font-weight:bold;}
 #profile-listing-desc a{color:#eeeeec;font-weight:bold;}
-[class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:3px ridge #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
+[class$="-desc"],[id$="-desc"]{color:#eeeeec;background:#2e3436;border:2px outset #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:3px 10px 7px 0;padding:5px;font-weight:bold;font-size:smaller;}
 #item-delete-selected-desc{float:left;margin-right:5px;}#item-delete-selected-desc:hover{text-decoration:underline;}
 .intro-approve-as-friend-desc{margin-top:10px;}
 .intro-desc{margin-bottom:20px;font-weight:bold;}
@@ -103,7 +103,7 @@ div.jGrowl div.info{background:#364e59 url("../../../images/icons/48/info.png")
 nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkmenu.selected .icon.s22.notify{background-image:url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABYAAAAWCAQAAABuvaSwAAAAAmJLR0QA/4ePzL8AAAAJcEhZcwAAUJcAAFCXAZtv64UAAAHuSURBVCjPbZPbTlNBFIYHLixXRIhEQGNRMUopJAJyAyZ4Z2l8B+XwEBqKtjwOp8oDIAJKIJFUjdFIQCUYrRytdyb0459ht8wG9rrYs9b618y/TsYEH4ZK4qRYYIdDybZOI7TKakIfVhrJ8J2i5IBNyV93/kaaBuv3oV3MgwCTPKGHPkkPA0xRUMBrOgN4AP0o6BseEpF2m3es0qJTFQneyvMhgDsC9tZprnEcGuOPeMcDLUpW3jlLxlDBmJTFY6gLvsVv8tyh9G7U3Z6mwtCuJAoiECSh/w1+8otmTjLqF2KDNsNzRY1bruV0o6rFFtc9S5USh5RRWvAYv4xX9dYPS8ur1oBQC4Y99m2uHriRNda5ErLdU1l3jCI2xdJ3XOYLX6kP2W6K2OF54Et84jN154F31d6ukKOG92pSbcjWLRrbRhVGLTZeOtXqX46LoQSHhJo3jOo3ESrdBQbljIRKNyXUiKHNNSXhTdbZiUzyT/WJ23Zn3BBFy+2u4ZHc1eV2N7EkxAvbbqMRmZOSlbE0g/uajRgl6Iy8r1wpnaFTQ4ji+8XOEsuxYmdDWpJleXJ0+BPdoduL4p5Vavd5IOllmJfiWmSWu6d3pV4jteFWqaAGbLkdKSqtUXXUnN3DSvF8phfy/JfkxfOp9sVb2COz+hY/T0qkwwAAACV0RVh0ZGF0ZTpjcmVhdGUAMjAxMS0wOS0xNlQwOTozOTowMCswMjowMC9Oi90AAAAldEVYdGRhdGU6bW9kaWZ5ADIwMTEtMDktMTZUMDk6Mzk6MDArMDI6MDBeEzNhAAAAGXRFWHRTb2Z0d2FyZQB3d3cuaW5rc2NhcGUub3Jnm+48GgAAAABJRU5ErkJggg==");}
 .show{display:block;}
 #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:300px;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;}
 .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;}
@@ -111,7 +111,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 #search-text{border:1px solid #999999;margin:5px 0;}
 #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;}
-#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:75%;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: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-label{font-size:small;padding:3px 20px 9px 5px;height:10px;}
 .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;}
@@ -133,7 +133,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 #sysmsg_info{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
 #sysmsg{position:fixed;bottom:0;-moz-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-o-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-webkit-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;-ms-box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;box-shadow:3px 3px 3px 10px 0 #111111 5px 5px 0px #111111;padding:10px;background-color:#fcaf3e;border:2px solid #f8911b;border-bottom:0;padding-bottom:50px;z-index:1000;}
 #sysmsg_info br,#sysmsg br{display:block;margin:2px 0px;border-top:1px solid #eeeeec;}
-#asidemain{float:left;font-size:small;margin:20px 0 20px 35px;width:25%;display:inline;}
+#asidemain{float:left;font-size:small;margin:1em;width:25%;display:inline;}
 #asideright,#asideleft{display:none;}
 .vcard .fn{font-size:1.5em;font-weight:bold;border-bottom:1px solid #284d7d;padding-bottom:3px;}
 .vcard #profile-photo-wrapper{margin:20px 0;background-color:#555753;padding:5px;width:175px;height:175px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:3px 3px 10px 0 #111111;-o-box-shadow:3px 3px 10px 0 #111111;-webkit-box-shadow:3px 3px 10px 0 #111111;-ms-box-shadow:3px 3px 10px 0 #111111;box-shadow:3px 3px 10px 0 #111111;}
@@ -187,7 +187,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 #jot-title-display{font-weight:bold;}
 .jothidden{display:none;}
 #jot-preview-content{background-color:#f2f2c3;color:#111111;border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;-moz-box-shadow:5px 0 10px 0px #111111;-o-box-shadow:5px 0 10px 0px #111111;-webkit-box-shadow:5px 0 10px 0px #111111;-ms-box-shadow:5px 0 10px 0px #111111;box-shadow:5px 0 10px 0px #111111;padding:3px 3px 6px 10px;}#jot-preview-content .wall-item-outside-wrapper{border:0;-o-border-radius:0px 0px 0px 0px;-webkit-border-radius:0px 0px 0px 0px;-moz-border-radius:0px 0px 0px 0px;-ms-border-radius:0px 0px 0px 0px;border-radius:0px 0px 0px 0px;-moz-box-shadow:0 0 0 0 #111111;-o-box-shadow:0 0 0 0 #111111;-webkit-box-shadow:0 0 0 0 #111111;-ms-box-shadow:0 0 0 0 #111111;box-shadow:0 0 0 0 #111111;}
-#sectionmain{margin:20px;font-size:0.8em;min-width:475px;width:67%;float:left;display:inline;}
+#sectionmain{margin:1em;font-size:0.8em;min-width:475px;width:69%;float:left;display:inline;}
 .tabs{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:10px 0;}.tabs li{display:inline;font-size:smaller;}
 .tab{border:1px solid #284d7d;padding:4px;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}.tab:active,.tab:hover{background:#f2f2c3;color:#111111;border:1px solid #284d7d;}
 .tab a{border:0;text-decoration:none;}
@@ -203,7 +203,7 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 [id^="tread-wrapper"],[class^="tread-wrapper"]{margin:1.2em 0 0 0;padding:0px;}
 .wall-item-photo-menu{display:none;}
 .wall-item-photo-menu-button{display:none;text-indent:-99999px;background:#555753 url(light/menu-user-pin.jpg) no-repeat 75px center;position:absolute;overflow:hidden;width:90px;height:20px;top:85px;left:0;-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;}
-.wall-item-info{float:left;width:8em;position:relative;}
+.wall-item-info{float:left;width:7em;position:relative;}
 .wall-item-photo-wrapper{width:80px;height:80px;position:relative;padding:5px;background-color:#555753;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;}
 [class^="wall-item-tools"] *{}[class^="wall-item-tools"] *>*{}
 .wall-item-tools{float:right;opacity:0.4;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}.wall-item-tools:hover{opacity:1;-webkit-transition:all 0.75s ease-in-out;-moz-transition:all 0.75s ease-in-out;-o-transition:all 0.75s ease-in-out;-ms-transition:all 0.75s ease-in-out;transition:all 0.75s ease-in-out;}
@@ -223,14 +223,16 @@ nav #nav-notifications-linkmenu.on .icon.s22.notify,nav #nav-notifications-linkm
 .wall-item-arrowphoto-wrapper{position:absolute;left:35px;top:80px;z-index:10002;}
 .wall-item-photo-menu{min-width:92px;font-size:0.75em;border:2px solid #555753;border-top:0px;background:#555753;position:absolute;left:-2px;top:101px;display:none;z-index:10003;-o-border-radius:0 5px 5px 5px;-webkit-border-radius:0 5px 5px 5px;-moz-border-radius:0 5px 5px 5px;-ms-border-radius:0 5px 5px 5px;border-radius:0 5px 5px 5px;}.wall-item-photo-menu li a{white-space:nowrap;display:block;padding:5px 6px;color:#eeeeec;}.wall-item-photo-menu li a:hover{color:#555753;background:#eeeeec;}
 #item-delete-selected{overflow:auto;width:100%;}
-#connect-services-header,#connect-services,#extra-help-header,#extra-help,#postit-header,#postit{margin:5px 0 0 0;}
+#connect-services-header,#extra-help-header{margin:1.5em 0 0 0;}
+#connect-services,#extra-help{margin:0px;padding:0px;list-style:none;list-style-position:inside;margin:1em 0 0 0;}#connect-services li,#extra-help li{display:inline;}
 .ccollapse-wrapper{font-size:0.9em;margin-left:5em;}
 .hide-comments-outer{font-size:small;}
-.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
+.wall-item-outside-wrapper.comment{margin-left:5em;}.wall-item-outside-wrapper.comment .wall-item-info{width:5em;}
+.wall-item-outside-wrapper.comment .wall-item-photo{width:40px !important;height:40px !important;}
 .wall-item-outside-wrapper.comment .wall-item-photo-wrapper{width:40px;height:40px;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:50px;top:45px;background-position:35px center;}
+.wall-item-outside-wrapper.comment .wall-item-photo-menu-button{width:3.35em;top:3.2em;background-position:35px center;}
 .wall-item-outside-wrapper.comment .wall-item-author{margin-left:0.2em;}
-.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:50px;top:60px;}
+.wall-item-outside-wrapper.comment .wall-item-photo-menu{min-width:4.5em;top:5.5em;}
 .comment-wwedit-wrapper{border:1px solid #111111;-o-border-radius:5px;-webkit-border-radius:5px;-moz-border-radius:5px;-ms-border-radius:5px;border-radius:5px;margin:5px;}
 .comment-edit-wrapper{border-top:1px #aaa solid;}
 [class^="comment-edit-bb"]{margin:0px;padding:0px;list-style:none;list-style-position:inside;display:none;margin:-40px 0 5px 60px;width:75%;}[class^="comment-edit-bb"]>li{display:inline-block;margin:0 10px 0 0;visibility:none;}
index 90cb8780b4d3a56014a52fb09b562f0fe9a0c932..ba8e0093b759f1f5207229a55f13fddb9de1469a 100644 (file)
@@ -640,7 +640,7 @@ nav #nav-notifications-linkmenu {
        color: transparent;
        .rounded_corners;
        z-index: 100;
-       .box(300px, 60px);
+       .box(270px, 60px);
 }
 #nav-buttons {
        clear: both;
@@ -703,7 +703,7 @@ nav #nav-notifications-linkmenu {
 #user-menu {
        .box_shadow(5px, 0, 10px, 0);
        display: block;
-       width: 75%;
+       width: 80%;
        margin: 3px 0 0 0;
        position: relative;
        .rounded_corners;
@@ -1527,6 +1527,9 @@ nav #nav-notifications-linkmenu {
 }
 .wall-item-outside-wrapper.comment {
        margin-left: 5em;
+       .wall-item-info {
+               width: 5em;
+       }
        .wall-item-photo {
                width: 40px !important;
                height: 40px !important;
@@ -1535,16 +1538,16 @@ nav #nav-notifications-linkmenu {
                .box(40px, 40px);
        }
        .wall-item-photo-menu-button {
-               width: 50px;
-               top: 45px;
+               width: 3.35em;
+               top: 3.2em;
                background-position: 35px center;
        }
        .wall-item-author {
                margin-left: 0.2em;
        }
        .wall-item-photo-menu {
-               min-width: 50px;
-               top: 60px;
+               min-width: 4.5em;
+               top: 5.5em;
        }
 }
 .comment-wwedit-wrapper {
index 07eba1edb042242fb0d85b8218130eb80659bda3..ab660888f228a64b124a792affb96978e9c9925e 100644 (file)
@@ -80,6 +80,7 @@ blockquote {
 .heart {
        color: #FF0000;
        font-size: 100%;
+       margin-right: 5px;
 }
 
 
@@ -678,7 +679,8 @@ input#dfrn-url {
 #profile-edit-religion-label,
 #profile-edit-pubkeywords-label,
 #profile-edit-prvkeywords-label,
-#profile-edit-homepage-label {
+#profile-edit-homepage-label,
+#profile-edit-hometown-label {
        float: left;
        width: 175px;
 }
@@ -716,7 +718,17 @@ input#dfrn-url {
 #settings-community {
        float: left;
 }
-
+#settings-notifications label {
+       margin-left: 20px;
+}
+#settings-notify-desc, #settings-activity-desc {
+       font-weight: bold;
+       margin-bottom: 15px;
+}
+#settings-pagetype-desc {
+       color: #666666;
+       margin-bottom: 15px;
+}
 
 #profile-in-dir-yes-label,
 #profile-in-dir-no-label,
@@ -763,7 +775,7 @@ input#dfrn-url {
 }
 
 
-#profile-edit-homepage {
+#profile-edit-homepage, #profile-edit-hometown {
        float: left;
        margin-bottom: 35px;
 }
@@ -803,6 +815,7 @@ input#dfrn-url {
 #profile-edit-pubkeywords-end,
 #profile-edit-prvkeywords-end,
 #profile-edit-homepage-end,
+#profile-edit-hometown-end,
 #profile-in-dir-break,
 #profile-in-dir-end,
 #profile-in-netdir-break,
index 1fa03b253ce2c5c7a971b11592a42a4b56cfe69e..14b7c75b3a7e8ce6474571a867bf1eca5d36f234 100644 (file)
 .icon.s48.language {
   background-image: url("icons/language.png");
 }
+.icon.on {
+  background-image: url("icons/addon_on.png");
+  min-width: 16px;
+  height: 16px;
+  background-position: 0px 0px;
+}
+.icon.off {
+  background-image: url("icons/addon_off.png");
+  width: 16px;
+  height: 16px;
+  background-position: 0px 0px;
+}
 /* global */
 body {
   font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
@@ -255,8 +267,7 @@ body {
 h4 {
   font-size: 1.1em;
 }
-a,
-a:link {
+a, a:link {
   color: #005c94;
   text-decoration: none;
 }
@@ -478,8 +489,7 @@ nav #nav-site-linkmenu .menu-popup {
   right: 0px;
   left: auto;
 }
-nav #nav-notifications-linkmenu.on .icon.s22.notify,
-nav #nav-notifications-linkmenu.selected .icon.s22.notify {
+nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify {
   background-image: url("../../../images/icons/22/notify_on.png");
 }
 nav #nav-apps-link.selected {
@@ -668,15 +678,11 @@ aside #profiles-menu {
   height: 48px;
 }
 /* group member */
-#contact-edit-drop-link,
-.mail-list-delete-wrapper,
-.group-delete-wrapper {
+#contact-edit-drop-link, .mail-list-delete-wrapper, .group-delete-wrapper {
   float: right;
   margin-right: 50px;
 }
-#contact-edit-drop-link .drophide,
-.mail-list-delete-wrapper .drophide,
-.group-delete-wrapper .drophide {
+#contact-edit-drop-link .drophide, .mail-list-delete-wrapper .drophide, .group-delete-wrapper .drophide {
   background-image: url('../../../images/icons/22/delete.png');
   display: block;
   width: 22px;
@@ -685,9 +691,7 @@ aside #profiles-menu {
   position: relative;
   top: -50px;
 }
-#contact-edit-drop-link .drop,
-.mail-list-delete-wrapper .drop,
-.group-delete-wrapper .drop {
+#contact-edit-drop-link .drop, .mail-list-delete-wrapper .drop, .group-delete-wrapper .drop {
   background-image: url('../../../images/icons/22/delete.png');
   display: block;
   width: 22px;
@@ -817,8 +821,7 @@ section {
   display: table;
   width: 750px;
 }
-.wall-item-container .wall-item-item,
-.wall-item-container .wall-item-bottom {
+.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom {
   display: table-row;
 }
 .wall-item-container .wall-item-bottom {
@@ -856,13 +859,11 @@ section {
 .wall-item-container .wall-item-content img {
   max-width: 710px;
 }
-.wall-item-container .wall-item-links,
-.wall-item-container .wall-item-actions {
+.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions {
   display: table-cell;
   vertical-align: middle;
 }
-.wall-item-container .wall-item-links .icon,
-.wall-item-container .wall-item-actions .icon {
+.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon {
   opacity: 0.5;
   -webkit-transition: all 0.2s ease-in-out;
   -moz-transition: all 0.2s ease-in-out;
@@ -870,8 +871,7 @@ section {
   -ms-transition: all 0.2s ease-in-out;
   transition: all 0.2s ease-in-out;
 }
-.wall-item-container .wall-item-links .icon:hover,
-.wall-item-container .wall-item-actions .icon:hover {
+.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover {
   opacity: 1;
   -webkit-transition: all 0.2s ease-in-out;
   -moz-transition: all 0.2s ease-in-out;
@@ -1015,6 +1015,9 @@ section {
   opacity: 0.5;
 }
 .wwto {
+  position: absolute !important;
+  width: 25px;
+  height: 25px;
   background: #FFFFFF;
   border: 2px solid #364e59;
   height: 25px;
@@ -1245,9 +1248,7 @@ section {
     height: 18px;
 }*/
 /** acl **/
-#photo-edit-perms-select,
-#photos-upload-permissions-wrapper,
-#profile-jot-acl-wrapper {
+#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper {
   display: block!important;
 }
 #acl-wrapper {
@@ -1406,12 +1407,10 @@ ul.tabs li .active {
   float: left;
   width: 200px;
 }
-.field input,
-.field textarea {
+.field input, .field textarea {
   width: 400px;
 }
-.field input[type="checkbox"],
-.field input[type="radio"] {
+.field input[type="checkbox"], .field input[type="radio"] {
   width: auto;
 }
 .field textarea {
@@ -1642,15 +1641,13 @@ ul.tabs li .active {
   transition: all 0.2s ease-in-out;
 }
 /* theme screenshot */
-.screenshot,
-#theme-preview {
+.screenshot, #theme-preview {
   position: absolute;
   width: 202px;
   left: 70%;
   top: 50px;
 }
-.screenshot img,
-#theme-preview img {
+.screenshot img, #theme-preview img {
   width: 200px;
   height: 150px;
 }
@@ -1663,3 +1660,77 @@ footer {
   margin-top: 25px;
   clear: both;
 }
+/**
+ * ADMIN
+ */
+#pending-update {
+  float: right;
+  color: #ffffff;
+  font-weight: bold;
+  background-color: #FF0000;
+  padding: 0em 0.3em;
+}
+#adminpage dl {
+  clear: left;
+  margin-bottom: 2px;
+  padding-bottom: 2px;
+  border-bottom: 1px solid black;
+}
+#adminpage dt {
+  width: 200px;
+  float: left;
+  font-weight: bold;
+}
+#adminpage dd {
+  margin-left: 200px;
+}
+#adminpage h3 {
+  border-bottom: 1px solid #cccccc;
+}
+#adminpage .field label {
+  font-weight: bold;
+}
+#adminpage .submit {
+  clear: left;
+  text-align: right;
+}
+#adminpage #pluginslist {
+  margin: 0px;
+  padding: 0px;
+}
+#adminpage .plugin {
+  list-style: none;
+  display: block;
+  border: 1px solid #888888;
+  padding: 1em;
+  margin-bottom: 5px;
+  clear: left;
+}
+#adminpage .plugin desc {
+  margin-left: 2.5em;
+}
+#adminpage .toggleplugin {
+  float: left;
+  margin-right: 1em;
+}
+#adminpage table {
+  width: 100%;
+  border-bottom: 1px solid #000000;
+  margin: 5px 0px;
+}
+#adminpage table th {
+  text-align: left;
+}
+#adminpage table td .icon {
+  float: left;
+}
+#adminpage table tr:hover {
+  background-color: #bbc7d7;
+}
+#adminpage table#users img {
+  width: 16px;
+  height: 16px;
+}
+#adminpage .selectall {
+  text-align: right;
+}
index 317112f6f88c6d4209702146f50e925c041ba3b3..f33c45eaec298c0c7237f7e6842a22a151b3f2d9 100644 (file)
 .icon.s48.language {
   background-image: url("icons/language.png");
 }
+.icon.on {
+  background-image: url("icons/addon_on.png");
+  min-width: 16px;
+  height: 16px;
+  background-position: 0px 0px;
+}
+.icon.off {
+  background-image: url("icons/addon_off.png");
+  width: 16px;
+  height: 16px;
+  background-position: 0px 0px;
+}
 /* global */
 body {
   font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
@@ -255,8 +267,7 @@ body {
 h4 {
   font-size: 1.1em;
 }
-a,
-a:link {
+a, a:link {
   color: #009100;
   text-decoration: none;
 }
@@ -478,8 +489,7 @@ nav #nav-site-linkmenu .menu-popup {
   right: 0px;
   left: auto;
 }
-nav #nav-notifications-linkmenu.on .icon.s22.notify,
-nav #nav-notifications-linkmenu.selected .icon.s22.notify {
+nav #nav-notifications-linkmenu.on .icon.s22.notify, nav #nav-notifications-linkmenu.selected .icon.s22.notify {
   background-image: url("../../../images/icons/22/notify_on.png");
 }
 nav #nav-apps-link.selected {
@@ -668,15 +678,11 @@ aside #profiles-menu {
   height: 48px;
 }
 /* group member */
-#contact-edit-drop-link,
-.mail-list-delete-wrapper,
-.group-delete-wrapper {
+#contact-edit-drop-link, .mail-list-delete-wrapper, .group-delete-wrapper {
   float: right;
   margin-right: 50px;
 }
-#contact-edit-drop-link .drophide,
-.mail-list-delete-wrapper .drophide,
-.group-delete-wrapper .drophide {
+#contact-edit-drop-link .drophide, .mail-list-delete-wrapper .drophide, .group-delete-wrapper .drophide {
   background-image: url('../../../images/icons/22/delete.png');
   display: block;
   width: 22px;
@@ -685,9 +691,7 @@ aside #profiles-menu {
   position: relative;
   top: -50px;
 }
-#contact-edit-drop-link .drop,
-.mail-list-delete-wrapper .drop,
-.group-delete-wrapper .drop {
+#contact-edit-drop-link .drop, .mail-list-delete-wrapper .drop, .group-delete-wrapper .drop {
   background-image: url('../../../images/icons/22/delete.png');
   display: block;
   width: 22px;
@@ -817,8 +821,7 @@ section {
   display: table;
   width: 750px;
 }
-.wall-item-container .wall-item-item,
-.wall-item-container .wall-item-bottom {
+.wall-item-container .wall-item-item, .wall-item-container .wall-item-bottom {
   display: table-row;
 }
 .wall-item-container .wall-item-bottom {
@@ -856,13 +859,11 @@ section {
 .wall-item-container .wall-item-content img {
   max-width: 710px;
 }
-.wall-item-container .wall-item-links,
-.wall-item-container .wall-item-actions {
+.wall-item-container .wall-item-links, .wall-item-container .wall-item-actions {
   display: table-cell;
   vertical-align: middle;
 }
-.wall-item-container .wall-item-links .icon,
-.wall-item-container .wall-item-actions .icon {
+.wall-item-container .wall-item-links .icon, .wall-item-container .wall-item-actions .icon {
   opacity: 0.5;
   -webkit-transition: all 0.2s ease-in-out;
   -moz-transition: all 0.2s ease-in-out;
@@ -870,8 +871,7 @@ section {
   -ms-transition: all 0.2s ease-in-out;
   transition: all 0.2s ease-in-out;
 }
-.wall-item-container .wall-item-links .icon:hover,
-.wall-item-container .wall-item-actions .icon:hover {
+.wall-item-container .wall-item-links .icon:hover, .wall-item-container .wall-item-actions .icon:hover {
   opacity: 1;
   -webkit-transition: all 0.2s ease-in-out;
   -moz-transition: all 0.2s ease-in-out;
@@ -1015,6 +1015,9 @@ section {
   opacity: 0.5;
 }
 .wwto {
+  position: absolute !important;
+  width: 25px;
+  height: 25px;
   background: #FFFFFF;
   border: 2px solid #364e59;
   height: 25px;
@@ -1245,9 +1248,7 @@ section {
     height: 18px;
 }*/
 /** acl **/
-#photo-edit-perms-select,
-#photos-upload-permissions-wrapper,
-#profile-jot-acl-wrapper {
+#photo-edit-perms-select, #photos-upload-permissions-wrapper, #profile-jot-acl-wrapper {
   display: block!important;
 }
 #acl-wrapper {
@@ -1406,12 +1407,10 @@ ul.tabs li .active {
   float: left;
   width: 200px;
 }
-.field input,
-.field textarea {
+.field input, .field textarea {
   width: 400px;
 }
-.field input[type="checkbox"],
-.field input[type="radio"] {
+.field input[type="checkbox"], .field input[type="radio"] {
   width: auto;
 }
 .field textarea {
@@ -1642,15 +1641,13 @@ ul.tabs li .active {
   transition: all 0.2s ease-in-out;
 }
 /* theme screenshot */
-.screenshot,
-#theme-preview {
+.screenshot, #theme-preview {
   position: absolute;
   width: 202px;
   left: 70%;
   top: 50px;
 }
-.screenshot img,
-#theme-preview img {
+.screenshot img, #theme-preview img {
   width: 200px;
   height: 150px;
 }
@@ -1663,3 +1660,77 @@ footer {
   margin-top: 25px;
   clear: both;
 }
+/**
+ * ADMIN
+ */
+#pending-update {
+  float: right;
+  color: #ffffff;
+  font-weight: bold;
+  background-color: #FF0000;
+  padding: 0em 0.3em;
+}
+#adminpage dl {
+  clear: left;
+  margin-bottom: 2px;
+  padding-bottom: 2px;
+  border-bottom: 1px solid black;
+}
+#adminpage dt {
+  width: 200px;
+  float: left;
+  font-weight: bold;
+}
+#adminpage dd {
+  margin-left: 200px;
+}
+#adminpage h3 {
+  border-bottom: 1px solid #cccccc;
+}
+#adminpage .field label {
+  font-weight: bold;
+}
+#adminpage .submit {
+  clear: left;
+  text-align: right;
+}
+#adminpage #pluginslist {
+  margin: 0px;
+  padding: 0px;
+}
+#adminpage .plugin {
+  list-style: none;
+  display: block;
+  border: 1px solid #888888;
+  padding: 1em;
+  margin-bottom: 5px;
+  clear: left;
+}
+#adminpage .plugin desc {
+  margin-left: 2.5em;
+}
+#adminpage .toggleplugin {
+  float: left;
+  margin-right: 1em;
+}
+#adminpage table {
+  width: 100%;
+  border-bottom: 1px solid #000000;
+  margin: 5px 0px;
+}
+#adminpage table th {
+  text-align: left;
+}
+#adminpage table td .icon {
+  float: left;
+}
+#adminpage table tr:hover {
+  background-color: #bbc7d7;
+}
+#adminpage table#users img {
+  width: 16px;
+  height: 16px;
+}
+#adminpage .selectall {
+  text-align: right;
+}
index 24e96b5aa5fce0d7582f20339a06e6540b837472..ae7459dfc68c5cb036b12211cce0ba8dba3ca1de 100644 (file)
@@ -21,7 +21,8 @@
        &.type-text     { background-image: url("../../../images/icons/@{size}/text.png"); }
 
        &.language      { background-image: url("icons/language.png"); }
-       
+
+
        
 }
 
                .icons(48);
        }
        
+        &.on {
+            background-image: url("icons/addon_on.png");
+           min-width:16px;
+            height: 16px;
+            background-position: 0px 0px;
+        }
+        &.off {
+            background-image: url("icons/addon_off.png");
+           width: 16px;
+            height: 16px;
+            background-position: 0px 0px;
+        }
        
 }
diff --git a/view/theme/quattro/icons/addon_off.png b/view/theme/quattro/icons/addon_off.png
new file mode 100644 (file)
index 0000000..40b5325
Binary files /dev/null and b/view/theme/quattro/icons/addon_off.png differ
diff --git a/view/theme/quattro/icons/addon_on.png b/view/theme/quattro/icons/addon_on.png
new file mode 100644 (file)
index 0000000..3d9490f
Binary files /dev/null and b/view/theme/quattro/icons/addon_on.png differ
index 4c3279943db3c718795240b26e943cf3ca3e51c9..4d57719d9addf0988b9693a06606f2042b6199ed 100644 (file)
@@ -1152,3 +1152,76 @@ footer { height: 100px; display: table-row; }
     clear: both;
 }
 
+/**
+ * ADMIN
+ */
+#pending-update {
+       float:right;
+       color: #ffffff;
+       font-weight: bold;
+       background-color: #FF0000;
+       padding: 0em 0.3em;
+       
+}
+#adminpage {
+    dl {
+       clear: left;
+       margin-bottom: 2px;
+       padding-bottom: 2px;
+       border-bottom: 1px solid black;
+    }
+    dt {
+       width: 200px;
+       float: left;
+       font-weight: bold;
+    }
+    dd {
+       margin-left: 200px;
+    }
+    h3 {
+       border-bottom: 1px solid #cccccc;
+    }
+    .field label {
+       font-weight: bold;
+    }
+    .submit {
+       clear:left;
+       text-align: right;
+    }
+    #pluginslist {
+       margin: 0px; padding: 0px;
+    }
+    .plugin {
+       list-style: none;
+       display: block;
+       border: 1px solid #888888;
+       padding: 1em;
+       margin-bottom: 5px;
+       clear: left;
+        desc {
+            margin-left: 2.5em;
+        }
+    }
+    .toggleplugin {
+       float:left;
+       margin-right: 1em;
+    }
+    table {
+        width:100%;
+        border-bottom: 1px solid #000000; 
+        margin: 5px 0px;
+        th { 
+            text-align: left;
+        }
+        td .icon { 
+            float: left;
+        }
+        tr:hover { 
+            background-color: #bbc7d7;
+        }
+    }
+    table#users img { 
+            width: 16px; height: 16px; 
+    }
+    .selectall { text-align: right; }
+}