]> git.mxchange.org Git - friendica.git/commitdiff
Merge branch 'master', remote-tracking branch 'remotes/upstream/master'
authorSimon L'nu <simon.lnu@gmail.com>
Tue, 1 May 2012 04:49:42 +0000 (00:49 -0400)
committerSimon L'nu <simon.lnu@gmail.com>
Tue, 1 May 2012 04:49:42 +0000 (00:49 -0400)
* remotes/upstream/master:
  diabook-themes: add "community profiles"-box to right_column
  change api.php in function api_item_get_user to check if $usercache is NULL before checking an element in it
  make 'aaa joined group bbb' work from the initiating end, new privacy pref to control it also hidewall wasn't properly checked before sending 'xxx is friends with yyy' messages
  diabook-themes: add "last tweets"-box to right_aside, that searches for #friendica on twitter
  rev update
  start adding tooltips to tab menus
  fix join group notifications

* master:

34 files changed:
boot.php
include/api.php
mod/contacts.php
mod/dfrn_confirm.php
mod/dfrn_request.php
mod/network.php
mod/settings.php
util/messages.po
view/settings.tpl
view/theme/diabook/communityhome.tpl
view/theme/diabook/diabook-aerith/style-network-wide.css
view/theme/diabook/diabook-aerith/style-network.css
view/theme/diabook/diabook-aerith/style-profile-wide.css
view/theme/diabook/diabook-aerith/style-profile.css
view/theme/diabook/diabook-blue/style-network-wide.css
view/theme/diabook/diabook-blue/style-network.css
view/theme/diabook/diabook-blue/style-profile-wide.css
view/theme/diabook/diabook-blue/style-profile.css
view/theme/diabook/diabook-green/style-network-wide.css
view/theme/diabook/diabook-green/style-network.css
view/theme/diabook/diabook-green/style-profile-wide.css
view/theme/diabook/diabook-green/style-profile.css
view/theme/diabook/diabook-pink/style-network-wide.css
view/theme/diabook/diabook-pink/style-network.css
view/theme/diabook/diabook-pink/style-profile-wide.css
view/theme/diabook/diabook-pink/style-profile.css
view/theme/diabook/diabook-red/style-network-wide.css
view/theme/diabook/diabook-red/style-network.css
view/theme/diabook/diabook-red/style-profile-wide.css
view/theme/diabook/diabook-red/style-profile.css
view/theme/diabook/js/README
view/theme/diabook/js/jquery.twitter.search.js [new file with mode: 0644]
view/theme/diabook/style-network.css
view/theme/diabook/theme.php

index d9bbfc136e7c73edf14bc9e7076a89391f7a77a8..55cac73acacdc544aa4875440949f25bd73cd6bd 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -9,7 +9,7 @@ require_once('include/nav.php');
 require_once('include/cache.php');
 
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
-define ( 'FRIENDICA_VERSION',      '2.3.1327' );
+define ( 'FRIENDICA_VERSION',      '2.3.1328' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.23'    );
 define ( 'DB_UPDATE_VERSION',      1140      );
 
@@ -1472,16 +1472,19 @@ if(! function_exists('profile_tabs')){
                                'label'=>t('Status'),
                                'url' => $url,
                                'sel' => ((!isset($tab)&&$a->argv[0]=='profile')?'active':''),
+                               'title' => t('Status Messages and Posts'),
                        ),
                        array(
                                'label' => t('Profile'),
                                'url'   => $url.'/?tab=profile',
                                'sel'   => ((isset($tab) && $tab=='profile')?'active':''),
+                               'title' => t('Profile Details'),
                        ),
                        array(
                                'label' => t('Photos'),
                                'url'   => $a->get_baseurl() . '/photos/' . $nickname,
                                'sel'   => ((!isset($tab)&&$a->argv[0]=='photos')?'active':''),
+                               'title' => t('Photo Albums'),
                        ),
                );
        
@@ -1490,11 +1493,13 @@ if(! function_exists('profile_tabs')){
                                'label' => t('Events'),
                                'url'   => $a->get_baseurl() . '/events',
                                'sel'   =>((!isset($tab)&&$a->argv[0]=='events')?'active':''),
+                               'title' => t('Events and Calendar'),
                        );
                        $tabs[] = array(
                                'label' => t('Personal Notes'),
                                'url'   => $a->get_baseurl() . '/notes',
                                'sel'   =>((!isset($tab)&&$a->argv[0]=='notes')?'active':''),
+                               'title' => t('Only You Can See This'),
                        );
                }
 
index f9be68c3df3a4961c3d9e6a98b6c7fe1337c9f80..a693a32c8bb3c797a4d20afa62493ed3d4bf2ce2 100644 (file)
                        $nick = $name;
 
                // Generating a random ID
-               if (!array_key_exists($nick, $usercache))
+               if (is_null($usercache[$nick]) or !array_key_exists($nick, $usercache))
                        $usercache[$nick] = mt_rand(2000000, 2100000);
 
                $ret = array(
index 754350ae56187f9fe0fbd0f7688a4567bed4e6d4..3b428914c1dd31851d926e0ad4d885cbc377c1b2 100644 (file)
@@ -290,22 +290,26 @@ function contacts_content(&$a) {
                                'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
                                'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
                                'sel'   => '',
+                               'title' => t('Toggle Blocked status'),
                        ),
                        array(
                                'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
                                'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
                                'sel'   => '',
+                               'title' => t('Toggle Ignored status'),
                        ),
 
                        array(
                                'label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ),
                                'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive',
                                'sel'   => '',
+                               'title' => t('Toggle Archive status'),
                        ),
                        array(
                                'label' => t('Repair'),
                                'url'   => $a->get_baseurl(true) . '/crepair/' . $contact_id,
                                'sel'   => '',
+                               'title' => t('Advanced Contact Settings'),
                        )
                );
                $tab_tpl = get_markup_template('common_tabs.tpl');
@@ -403,40 +407,47 @@ function contacts_content(&$a) {
                        'label' => t('Suggestions'),
                        'url'   => $a->get_baseurl(true) . '/suggest', 
                        'sel'   => '',
+                       'title' => t('Suggest potential friends'),
                ),
                array(
                        'label' => t('All Contacts'),
                        'url'   => $a->get_baseurl(true) . '/contacts/all', 
                        'sel'   => ($all) ? 'active' : '',
+                       'title' => t('Show all contacts'),
                ),
                array(
                        'label' => t('Unblocked'),
                        'url'   => $a->get_baseurl(true) . '/contacts',
                        'sel'   => ((! $all) && (! $blocked) && (! $hidden) && (! $search) && (! $nets) && (! $ignored) && (! $archived)) ? 'active' : '',
+                       'title' => t('Only show unblocked contacts'),
                ),
 
                array(
                        'label' => t('Blocked'),
                        'url'   => $a->get_baseurl(true) . '/contacts/blocked',
                        'sel'   => ($blocked) ? 'active' : '',
+                       'title' => t('Only show blocked contacts'),
                ),
 
                array(
                        'label' => t('Ignored'),
                        'url'   => $a->get_baseurl(true) . '/contacts/ignored',
                        'sel'   => ($ignored) ? 'active' : '',
+                       'title' => t('Only show ignored contacts'),
                ),
 
                array(
                        'label' => t('Archived'),
                        'url'   => $a->get_baseurl(true) . '/contacts/archived',
                        'sel'   => ($archived) ? 'active' : '',
+                       'title' => t('Only show archived contacts'),
                ),
 
                array(
                        'label' => t('Hidden'),
                        'url'   => $a->get_baseurl(true) . '/contacts/hidden',
                        'sel'   => ($hidden) ? 'active' : '',
+                       'title' => t('Only show hidden contacts'),
                ),
 
        );
index 6f7b925ac82ab1b6c7312cbbae846b714c5260b1..2b25095fde2209314ff65b7d71a8eb51fb108e00 100644 (file)
@@ -207,7 +207,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        if($duplex == 1)
                                $params['duplex'] = 1;
 
-                       if($user['page-flags'] == PAGE_COMMUNITY)
+                       if($user[0]['page-flags'] == PAGE_COMMUNITY)
                                $params['page'] = 1;
 
                        logger('dfrn_confirm: Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
@@ -435,13 +435,9 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        $contact = null;
 
 
-               $forum_type = false;
-               if($user['page-flags'] == PAGE_SOAPBOX || $user['page-flags'] == PAGE_COMMUNITY)
-                       $forum_type = true;
+               if((isset($new_relation) && $new_relation == CONTACT_IS_FRIEND)) {
 
-               if((isset($new_relation) && $new_relation == CONTACT_IS_FRIEND) || ($forum_type)) {
-
-                       if(($contact) && ($contact['network'] === NETWORK_DIASPORA) && (! $forum_type)) {
+                       if(($contact) && ($contact['network'] === NETWORK_DIASPORA)) {
                                require_once('include/diaspora.php');
                                $ret = diaspora_share($user[0],$r[0]);
                                logger('mod_follow: diaspora_share returns: ' . $ret);
@@ -452,7 +448,8 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        $r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
                                intval($uid)
                        );
-                       if((count($r)) && ($activity) && (! $hidden)) {
+
+                       if((count($r)) && ($r[0]['hide-friends'] == 0) && ($activity) && (! $hidden)) {
 
                                require_once('include/items.php');
 
@@ -480,29 +477,15 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                                        $B = '[url=' . $contact['url'] . ']' . $contact['name'] . '[/url]';
                                        $BPhoto = '[url=' . $contact['url'] . ']' . '[img]' . $contact['thumb'] . '[/img][/url]';
 
-                                       if($forum_type) {
-                                               $arr['verb'] = ACTIVITY_JOIN;
-                                               $arr['object-type'] = ACTIVITY_OBJ_GROUP;
-                                               $arr['body'] =  sprintf( t('%1$s joined %2$s'), $B, $A)."\n\n\n".$APhoto;
-                                               $arr['object'] = '<object><type>' . ACTIVITY_OBJ_GROUP . '</type><title>' . $self[0]['name'] . '</title>'
-                                                       . '<id>' . $self[0]['url'] . '/' . $self[0]['name'] . '</id>';
-                                               $arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $self[0]['url'] . '" />' . "\n");
-                                               $arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $self[0]['thumb'] . '" />' . "\n");
-                                               $arr['object'] .= '</link></object>' . "\n";
-
-                                       }
-                                       else {
-                                               $arr['verb'] = ACTIVITY_FRIEND;
-                                           $arr['object-type'] = ACTIVITY_OBJ_PERSON;
-                                               $arr['body'] =  sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
-
-                                               $arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
-                                                       . '<id>' . $contact['url'] . '/' . $contact['name'] . '</id>';
-                                               $arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $contact['url'] . '" />' . "\n");
-                                               $arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $contact['thumb'] . '" />' . "\n");
-                                               $arr['object'] .= '</link></object>' . "\n";
-                                       }                               
+                                       $arr['verb'] = ACTIVITY_FRIEND;
+                                   $arr['object-type'] = ACTIVITY_OBJ_PERSON;
+                                       $arr['body'] =  sprintf( t('%1$s is now friends with %2$s'), $A, $B)."\n\n\n".$BPhoto;
 
+                                       $arr['object'] = '<object><type>' . ACTIVITY_OBJ_PERSON . '</type><title>' . $contact['name'] . '</title>'
+                                               . '<id>' . $contact['url'] . '/' . $contact['name'] . '</id>';
+                                       $arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $contact['url'] . '" />' . "\n");
+                                       $arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $contact['thumb'] . '" />' . "\n");
+                                       $arr['object'] .= '</link></object>' . "\n";
 
                                        $arr['last-child'] = 1;
 
@@ -733,6 +716,10 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        WHERE `contact`.`id` = %d LIMIT 1",
                        intval($dfrn_record)
                );
+
+               if(count($r))
+                       $combined = $r[0];
+
                if((count($r)) && ($r[0]['notify-flags'] & NOTIFY_CONFIRM)) {
 
                        push_lang($r[0]['language']);
@@ -761,6 +748,65 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        }
                        pop_lang();
                }
+
+               // Send a new friend post if we are allowed to...
+
+               if($page && intval(get_pconfig($local_uid,'system','post_joingroup'))) {
+                       $r = q("SELECT `hide-friends` FROM `profile` WHERE `uid` = %d AND `is-default` = 1 LIMIT 1",
+                               intval($local_uid)
+                       );
+
+                       if((count($r)) && ($r[0]['hide-friends'] == 0)) {
+
+                               require_once('include/items.php');
+
+                               $self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
+                                       intval($local_uid)
+                               );
+
+                               if(count($self)) {
+
+                                       $arr = array();
+                                       $arr['uri'] = $arr['parent-uri'] = item_new_uri($a->get_hostname(), $local_uid); 
+                                       $arr['uid'] = $local_uid;
+                                       $arr['contact-id'] = $self[0]['id'];
+                                       $arr['wall'] = 1;
+                                       $arr['type'] = 'wall';
+                                       $arr['gravity'] = 0;
+                                       $arr['origin'] = 1;
+                                       $arr['author-name'] = $arr['owner-name'] = $self[0]['name'];
+                                       $arr['author-link'] = $arr['owner-link'] = $self[0]['url'];
+                                       $arr['author-avatar'] = $arr['owner-avatar'] = $self[0]['thumb'];
+
+                                       $A = '[url=' . $self[0]['url'] . ']' . $self[0]['name'] . '[/url]';
+                                       $APhoto = '[url=' . $self[0]['url'] . ']' . '[img]' . $self[0]['thumb'] . '[/img][/url]';
+
+                                       $B = '[url=' . $combined['url'] . ']' . $combined['name'] . '[/url]';
+                                       $BPhoto = '[url=' . $combined['url'] . ']' . '[img]' . $combined['thumb'] . '[/img][/url]';
+
+                                       $arr['verb'] = ACTIVITY_JOIN;
+                                       $arr['object-type'] = ACTIVITY_OBJ_GROUP;
+                                       $arr['body'] =  sprintf( t('%1$s has joined %2$s'), $A, $B)."\n\n\n" .$BPhoto;
+                                       $arr['object'] = '<object><type>' . ACTIVITY_OBJ_GROUP . '</type><title>' . $combined['name'] . '</title>'
+                                               . '<id>' . $combined['url'] . '/' . $combined['name'] . '</id>';
+                                       $arr['object'] .= '<link>' . xmlify('<link rel="alternate" type="text/html" href="' . $combined['url'] . '" />' . "\n");
+                                       $arr['object'] .= xmlify('<link rel="photo" type="image/jpeg" href="' . $combined['thumb'] . '" />' . "\n");
+                                       $arr['object'] .= '</link></object>' . "\n";
+
+                                       $arr['last-child'] = 1;
+
+                                       $arr['allow_cid'] = $user[0]['allow_cid'];
+                                       $arr['allow_gid'] = $user[0]['allow_gid'];
+                                       $arr['deny_cid']  = $user[0]['deny_cid'];
+                                       $arr['deny_gid']  = $user[0]['deny_gid'];
+
+                                       $i = item_store($arr);
+                                       if($i)
+                                       proc_run('php',"include/notifier.php","activity","$i");
+
+                               }
+                       }
+               }
                xml_status(0); // Success
                return; // NOTREACHED
 
index 18798aa15b43ef2b8b41d01350820889d4dce1f5..2169c494c31c1bfab6be591604947089f4f9c2ef 100644 (file)
@@ -700,7 +700,8 @@ function dfrn_request_content(&$a) {
                                                'node' => $r[0]['nickname'],
                                                'dfrn_id' => $r[0]['issued-id'],
                                                'intro_id' => $intro[0]['id'],
-                                               'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0)
+                                               'duplex' => (($r[0]['page-flags'] == PAGE_FREELOVE) ? 1 : 0),
+                                               'activity' => intval(get_pconfig($r[0]['uid'],'system','post_newfriend'))
                                        );
                                        dfrn_confirm_post($a,$handsfree);
                                }
index b12bd16dab4578ba368229ed57997e326b3adef5..5655f1bfa7f544f141aaff66d36e38075c19e51d 100644 (file)
@@ -171,37 +171,44 @@ function network_content(&$a, $update = 0) {
                        'label' => t('Commented Order'),
                        'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '?f=&cid=' . $_GET['cid'] : ''), 
                        'sel'=>$all_active,
+                       'title'=> t('Sort by Comment Date'),
                ),
                array(
                        'label' => t('Posted Order'),
                        'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '?f=&order=post' . ((x($_GET,'cid')) ? '&cid=' . $_GET['cid'] : ''), 
                        'sel'=>$postord_active,
+                       'title' => t('Sort by Post Date'),
                ),
 
                array(
                        'label' => t('Personal'),
                        'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&conv=1',
                        'sel' => $conv_active,
+                       'title' => t('Posts that mention or involve you'),
                ),
                array(
                        'label' => t('New'),
                        'url' => $a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . '/new' . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : ''),
                        'sel' => $new_active,
+                       'title' => t('Activity Stream - by date'),
                ),
                array(
                        'label' => t('Starred'),
                        'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&star=1',
                        'sel'=>$starred_active,
+                       'title' => t('Favourite Posts'),
                ),
                array(
                        'label' => t('Shared Links'),
                        'url'=>$a->get_baseurl(true) . '/' . str_replace('/new', '', $a->cmd) . ((x($_GET,'cid')) ? '/?f=&cid=' . $_GET['cid'] : '') . '&bmark=1',
                        'sel'=>$bookmarked_active,
+                       'title'=> t('Interesting Links'),
                ),      
 //             array(
 //                     'label' => t('Spam'),
 //                     'url'=>$a->get_baseurl(true) . '/network?f=&spam=1'
 //                     'sel'=> $spam_active,
+//                     'title' => t('Posts flagged as SPAM'),
 //             ),      
 
 
index 3072d3d65fc12f635a4523f52ff5c6f6006c46e8..5f5b2ab2e97e1831740a8446b18e1dd4ac16f071 100644 (file)
@@ -352,6 +352,7 @@ function settings_post(&$a) {
        $hide_friends     = (($_POST['hide-friends'] == 1) ? 1: 0);
        $hidewall         = (($_POST['hidewall'] == 1) ? 1: 0);
        $post_newfriend   = (($_POST['post_newfriend'] == 1) ? 1: 0);
+       $post_joingroup   = (($_POST['post_joingroup'] == 1) ? 1: 0);
        $post_profilechange   = (($_POST['post_profilechange'] == 1) ? 1: 0);
 
 
@@ -436,6 +437,7 @@ function settings_post(&$a) {
 
        set_pconfig(local_user(),'system','suggestme', $suggestme);
        set_pconfig(local_user(),'system','post_newfriend', $post_newfriend);
+       set_pconfig(local_user(),'system','post_joingroup', $post_joingroup);
        set_pconfig(local_user(),'system','post_profilechange', $post_profilechange);
 
 
@@ -802,6 +804,9 @@ function settings_content(&$a) {
        $post_newfriend = get_pconfig(local_user(), 'system','post_newfriend');
        $post_newfriend = (($post_newfriend===false)? '0': $post_newfriend); // default if not set: 0
 
+       $post_joingroup = get_pconfig(local_user(), 'system','post_joingroup');
+       $post_joingroup = (($post_joingroup===false)? '0': $post_joingroup); // default if not set: 0
+
        $post_profilechange = get_pconfig(local_user(), 'system','post_profilechange');
        $post_profilechange = (($post_profilechange===false)? '0': $post_profilechange); // default if not set: 0
 
@@ -976,6 +981,7 @@ function settings_content(&$a) {
                '$h_not'        => t('Notification Settings'),
                '$activity_options' => t('By default post a status message when:'),
                '$post_newfriend' => array('post_newfriend',  t('accepting a friend request'), $post_newfriend, ''),
+               '$post_joingroup' => array('post_joingroup',  t('joining a forum/community'), $post_joingroup, ''),
                '$post_profilechange' => array('post_profilechange',  t('making an <em>interesting</em> profile change'), $post_profilechange, ''),
                '$lbl_not'      => t('Send a notification email when:'),
                '$notify1'      => array('notify1', t('You receive an introduction'), ($notify & NOTIFY_INTRO), NOTIFY_INTRO, ''),
index 535283b0b5048de852624367eb88e2c902d91d71..535f1de8b783f9274fb74d596e7e3ec8588a85aa 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: 2.3.1327\n"
+"Project-Id-Version: 2.3.1328\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2012-04-29 10:00-0700\n"
+"POT-Creation-Date: 2012-04-30 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"
@@ -55,7 +55,7 @@ msgstr ""
 #: ../../mod/profiles.php:7 ../../mod/profiles.php:365
 #: ../../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:484 ../../include/items.php:3171
+#: ../../addon/facebook/facebook.php:485 ../../include/items.php:3187
 #: ../../index.php:309
 msgid "Permission denied."
 msgstr ""
@@ -86,7 +86,7 @@ msgid "Return to contact editor"
 msgstr ""
 
 #: ../../mod/crepair.php:148 ../../mod/settings.php:539
-#: ../../mod/settings.php:565 ../../mod/admin.php:575 ../../mod/admin.php:584
+#: ../../mod/settings.php:565 ../../mod/admin.php:638 ../../mod/admin.php:647
 msgid "Name"
 msgstr ""
 
@@ -127,15 +127,15 @@ msgstr ""
 #: ../../mod/photos.php:1193 ../../mod/photos.php:1233
 #: ../../mod/photos.php:1273 ../../mod/photos.php:1304
 #: ../../mod/install.php:251 ../../mod/install.php:289
-#: ../../mod/localtime.php:45 ../../mod/contacts.php:318
+#: ../../mod/localtime.php:45 ../../mod/contacts.php:322
 #: ../../mod/settings.php:537 ../../mod/settings.php:683
 #: ../../mod/settings.php:744 ../../mod/settings.php:935
-#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:393
-#: ../../mod/admin.php:572 ../../mod/admin.php:708 ../../mod/admin.php:907
-#: ../../mod/admin.php:995 ../../mod/profiles.php:534 ../../mod/invite.php:119
-#: ../../addon/facebook/facebook.php:574 ../../addon/yourls/yourls.php:76
-#: ../../addon/ljpost/ljpost.php:93 ../../addon/nsfw/nsfw.php:57
-#: ../../addon/planets/planets.php:158
+#: ../../mod/manage.php:109 ../../mod/group.php:85 ../../mod/admin.php:400
+#: ../../mod/admin.php:635 ../../mod/admin.php:771 ../../mod/admin.php:970
+#: ../../mod/admin.php:1057 ../../mod/profiles.php:534
+#: ../../mod/invite.php:119 ../../addon/facebook/facebook.php:575
+#: ../../addon/yourls/yourls.php:76 ../../addon/ljpost/ljpost.php:93
+#: ../../addon/nsfw/nsfw.php:57 ../../addon/planets/planets.php:158
 #: ../../addon/uhremotestorage/uhremotestorage.php:89
 #: ../../addon/randplace/randplace.php:177 ../../addon/dwpost/dwpost.php:93
 #: ../../addon/drpost/drpost.php:110 ../../addon/geonames/geonames.php:187
@@ -220,7 +220,7 @@ msgid "link to source"
 msgstr ""
 
 #: ../../mod/events.php:296 ../../view/theme/diabook/theme.php:255
-#: ../../include/nav.php:52 ../../boot.php:1487
+#: ../../include/nav.php:52 ../../boot.php:1493
 msgid "Events"
 msgstr ""
 
@@ -270,7 +270,7 @@ msgid "Description:"
 msgstr ""
 
 #: ../../mod/events.php:395 ../../include/event.php:37
-#: ../../include/bb2diaspora.php:260 ../../boot.php:1089
+#: ../../include/bb2diaspora.php:260 ../../boot.php:1092
 msgid "Location:"
 msgstr ""
 
@@ -279,7 +279,7 @@ msgid "Share this event"
 msgstr ""
 
 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:817 ../../mod/settings.php:538
+#: ../../mod/dfrn_request.php:818 ../../mod/settings.php:538
 #: ../../mod/settings.php:564 ../../addon/js_upload/js_upload.php:45
 msgid "Cancel"
 msgstr ""
@@ -323,7 +323,7 @@ msgid ""
 "and/or create new posts for you?"
 msgstr ""
 
-#: ../../mod/api.php:105 ../../mod/dfrn_request.php:805
+#: ../../mod/api.php:105 ../../mod/dfrn_request.php:806
 #: ../../mod/settings.php:849 ../../mod/settings.php:855
 #: ../../mod/settings.php:863 ../../mod/settings.php:867
 #: ../../mod/settings.php:872 ../../mod/settings.php:878
@@ -334,7 +334,7 @@ msgstr ""
 msgid "Yes"
 msgstr ""
 
-#: ../../mod/api.php:106 ../../mod/dfrn_request.php:806
+#: ../../mod/api.php:106 ../../mod/dfrn_request.php:807
 #: ../../mod/settings.php:849 ../../mod/settings.php:855
 #: ../../mod/settings.php:863 ../../mod/settings.php:867
 #: ../../mod/settings.php:872 ../../mod/settings.php:878
@@ -345,7 +345,7 @@ msgstr ""
 msgid "No"
 msgstr ""
 
-#: ../../mod/photos.php:43
+#: ../../mod/photos.php:43 ../../boot.php:1487
 msgid "Photo Albums"
 msgstr ""
 
@@ -426,7 +426,7 @@ msgid "Image upload failed."
 msgstr ""
 
 #: ../../mod/photos.php:759 ../../mod/community.php:16
-#: ../../mod/dfrn_request.php:731 ../../mod/viewcontacts.php:17
+#: ../../mod/dfrn_request.php:732 ../../mod/viewcontacts.php:17
 #: ../../mod/display.php:7 ../../mod/search.php:71 ../../mod/directory.php:29
 msgid "Public access denied."
 msgstr ""
@@ -545,7 +545,7 @@ msgstr ""
 
 #: ../../mod/photos.php:1232 ../../mod/photos.php:1272
 #: ../../mod/photos.php:1303 ../../include/conversation.php:554
-#: ../../boot.php:503
+#: ../../boot.php:506
 msgid "Comment"
 msgstr ""
 
@@ -555,7 +555,7 @@ msgid "Preview"
 msgstr ""
 
 #: ../../mod/photos.php:1331 ../../mod/settings.php:600
-#: ../../mod/settings.php:681 ../../mod/group.php:168 ../../mod/admin.php:579
+#: ../../mod/settings.php:681 ../../mod/group.php:168 ../../mod/admin.php:642
 #: ../../include/conversation.php:318 ../../include/conversation.php:584
 msgid "Delete"
 msgstr ""
@@ -803,75 +803,75 @@ msgstr ""
 msgid "Confirm"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:688 ../../include/items.php:2691
+#: ../../mod/dfrn_request.php:688 ../../include/items.php:2707
 msgid "[Name Withheld]"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:780
+#: ../../mod/dfrn_request.php:781
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "communications networks:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:796
+#: ../../mod/dfrn_request.php:797
 msgid "<strike>Connect as an email follower</strike> (Coming soon)"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:798
+#: ../../mod/dfrn_request.php:799
 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:801
+#: ../../mod/dfrn_request.php:802
 msgid "Friend/Connection Request"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:802
+#: ../../mod/dfrn_request.php:803
 msgid ""
 "Examples: jojo@demo.friendica.com, http://demo.friendica.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:803
+#: ../../mod/dfrn_request.php:804
 msgid "Please answer the following:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:804
+#: ../../mod/dfrn_request.php:805
 #, php-format
 msgid "Does %s know you?"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:807
+#: ../../mod/dfrn_request.php:808
 msgid "Add a personal note:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:809 ../../include/contact_selectors.php:76
+#: ../../mod/dfrn_request.php:810 ../../include/contact_selectors.php:76
 msgid "Friendica"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:810
+#: ../../mod/dfrn_request.php:811
 msgid "StatusNet/Federated Social Web"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:811 ../../mod/settings.php:634
+#: ../../mod/dfrn_request.php:812 ../../mod/settings.php:634
 #: ../../include/contact_selectors.php:80
 msgid "Diaspora"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:812
+#: ../../mod/dfrn_request.php:813
 #, php-format
 msgid ""
 " - please do not use this form.  Instead, enter %s into your Diaspora search "
 "bar."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:813
+#: ../../mod/dfrn_request.php:814
 msgid "Your Identity Address:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:816
+#: ../../mod/dfrn_request.php:817
 msgid "Submit Request"
 msgstr ""
 
@@ -1166,7 +1166,7 @@ msgid "is interested in:"
 msgstr ""
 
 #: ../../mod/match.php:58 ../../mod/suggest.php:59
-#: ../../include/contact_widgets.php:9 ../../boot.php:1033
+#: ../../include/contact_widgets.php:9 ../../boot.php:1036
 msgid "Connect"
 msgstr ""
 
@@ -1197,8 +1197,8 @@ msgid "Discard"
 msgstr ""
 
 #: ../../mod/notifications.php:51 ../../mod/notifications.php:160
-#: ../../mod/notifications.php:206 ../../mod/contacts.php:295
-#: ../../mod/contacts.php:344
+#: ../../mod/notifications.php:206 ../../mod/contacts.php:296
+#: ../../mod/contacts.php:348
 msgid "Ignore"
 msgstr ""
 
@@ -1210,7 +1210,7 @@ msgstr ""
 msgid "Network"
 msgstr ""
 
-#: ../../mod/notifications.php:85 ../../mod/network.php:182
+#: ../../mod/notifications.php:85 ../../mod/network.php:184
 msgid "Personal"
 msgstr ""
 
@@ -1250,7 +1250,7 @@ msgid "suggested by %s"
 msgstr ""
 
 #: ../../mod/notifications.php:153 ../../mod/notifications.php:200
-#: ../../mod/contacts.php:350
+#: ../../mod/contacts.php:354
 msgid "Hide this contact from others"
 msgstr ""
 
@@ -1263,7 +1263,7 @@ msgid "if applicable"
 msgstr ""
 
 #: ../../mod/notifications.php:157 ../../mod/notifications.php:204
-#: ../../mod/admin.php:577
+#: ../../mod/admin.php:640
 msgid "Approve"
 msgstr ""
 
@@ -1463,168 +1463,212 @@ msgstr[1] ""
 msgid "View all contacts"
 msgstr ""
 
-#: ../../mod/contacts.php:290 ../../mod/contacts.php:343
-#: ../../mod/admin.php:581
+#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
+#: ../../mod/admin.php:644
 msgid "Unblock"
 msgstr ""
 
-#: ../../mod/contacts.php:290 ../../mod/contacts.php:343
-#: ../../mod/admin.php:580
+#: ../../mod/contacts.php:290 ../../mod/contacts.php:347
+#: ../../mod/admin.php:643
 msgid "Block"
 msgstr ""
 
-#: ../../mod/contacts.php:295 ../../mod/contacts.php:344
+#: ../../mod/contacts.php:293
+msgid "Toggle Blocked status"
+msgstr ""
+
+#: ../../mod/contacts.php:296 ../../mod/contacts.php:348
 msgid "Unignore"
 msgstr ""
 
-#: ../../mod/contacts.php:301
+#: ../../mod/contacts.php:299
+msgid "Toggle Ignored status"
+msgstr ""
+
+#: ../../mod/contacts.php:303
 msgid "Unarchive"
 msgstr ""
 
-#: ../../mod/contacts.php:301
+#: ../../mod/contacts.php:303
 msgid "Archive"
 msgstr ""
 
 #: ../../mod/contacts.php:306
+msgid "Toggle Archive status"
+msgstr ""
+
+#: ../../mod/contacts.php:309
 msgid "Repair"
 msgstr ""
 
-#: ../../mod/contacts.php:316
+#: ../../mod/contacts.php:312
+msgid "Advanced Contact Settings"
+msgstr ""
+
+#: ../../mod/contacts.php:320
 msgid "Contact Editor"
 msgstr ""
 
-#: ../../mod/contacts.php:319
+#: ../../mod/contacts.php:323
 msgid "Profile Visibility"
 msgstr ""
 
-#: ../../mod/contacts.php:320
+#: ../../mod/contacts.php:324
 #, php-format
 msgid ""
 "Please choose the profile you would like to display to %s when viewing your "
 "profile securely."
 msgstr ""
 
-#: ../../mod/contacts.php:321
+#: ../../mod/contacts.php:325
 msgid "Contact Information / Notes"
 msgstr ""
 
-#: ../../mod/contacts.php:322
+#: ../../mod/contacts.php:326
 msgid "Edit contact notes"
 msgstr ""
 
-#: ../../mod/contacts.php:327 ../../mod/contacts.php:511
+#: ../../mod/contacts.php:331 ../../mod/contacts.php:522
 #: ../../mod/viewcontacts.php:62 ../../mod/nogroup.php:40
 #, php-format
 msgid "Visit %s's profile [%s]"
 msgstr ""
 
-#: ../../mod/contacts.php:328
+#: ../../mod/contacts.php:332
 msgid "Block/Unblock contact"
 msgstr ""
 
-#: ../../mod/contacts.php:329
+#: ../../mod/contacts.php:333
 msgid "Ignore contact"
 msgstr ""
 
-#: ../../mod/contacts.php:330
+#: ../../mod/contacts.php:334
 msgid "Repair URL settings"
 msgstr ""
 
-#: ../../mod/contacts.php:331
+#: ../../mod/contacts.php:335
 msgid "View conversations"
 msgstr ""
 
-#: ../../mod/contacts.php:333
+#: ../../mod/contacts.php:337
 msgid "Delete contact"
 msgstr ""
 
-#: ../../mod/contacts.php:337
+#: ../../mod/contacts.php:341
 msgid "Last update:"
 msgstr ""
 
-#: ../../mod/contacts.php:338
+#: ../../mod/contacts.php:342
 msgid "Update public posts"
 msgstr ""
 
-#: ../../mod/contacts.php:340 ../../mod/admin.php:1053
+#: ../../mod/contacts.php:344 ../../mod/admin.php:1115
 msgid "Update now"
 msgstr ""
 
-#: ../../mod/contacts.php:347
+#: ../../mod/contacts.php:351
 msgid "Currently blocked"
 msgstr ""
 
-#: ../../mod/contacts.php:348
+#: ../../mod/contacts.php:352
 msgid "Currently ignored"
 msgstr ""
 
-#: ../../mod/contacts.php:349
+#: ../../mod/contacts.php:353
 msgid "Currently archived"
 msgstr ""
 
-#: ../../mod/contacts.php:350
+#: ../../mod/contacts.php:354
 msgid ""
 "Replies/likes to your public posts <strong>may</strong> still be visible"
 msgstr ""
 
-#: ../../mod/contacts.php:403
+#: ../../mod/contacts.php:407
 msgid "Suggestions"
 msgstr ""
 
-#: ../../mod/contacts.php:408 ../../mod/group.php:191
+#: ../../mod/contacts.php:410
+msgid "Suggest potential friends"
+msgstr ""
+
+#: ../../mod/contacts.php:413 ../../mod/group.php:191
 msgid "All Contacts"
 msgstr ""
 
-#: ../../mod/contacts.php:413
-msgid "Unblocked"
+#: ../../mod/contacts.php:416
+msgid "Show all contacts"
 msgstr ""
 
 #: ../../mod/contacts.php:419
+msgid "Unblocked"
+msgstr ""
+
+#: ../../mod/contacts.php:422
+msgid "Only show unblocked contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:426
 msgid "Blocked"
 msgstr ""
 
-#: ../../mod/contacts.php:425
+#: ../../mod/contacts.php:429
+msgid "Only show blocked contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:433
 msgid "Ignored"
 msgstr ""
 
-#: ../../mod/contacts.php:431
+#: ../../mod/contacts.php:436
+msgid "Only show ignored contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:440
 msgid "Archived"
 msgstr ""
 
-#: ../../mod/contacts.php:437
+#: ../../mod/contacts.php:443
+msgid "Only show archived contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:447
 msgid "Hidden"
 msgstr ""
 
-#: ../../mod/contacts.php:487
+#: ../../mod/contacts.php:450
+msgid "Only show hidden contacts"
+msgstr ""
+
+#: ../../mod/contacts.php:498
 msgid "Mutual Friendship"
 msgstr ""
 
-#: ../../mod/contacts.php:491
+#: ../../mod/contacts.php:502
 msgid "is a fan of yours"
 msgstr ""
 
-#: ../../mod/contacts.php:495
+#: ../../mod/contacts.php:506
 msgid "you are a fan of"
 msgstr ""
 
-#: ../../mod/contacts.php:512 ../../mod/nogroup.php:41
+#: ../../mod/contacts.php:523 ../../mod/nogroup.php:41
 msgid "Edit contact"
 msgstr ""
 
-#: ../../mod/contacts.php:533 ../../view/theme/diabook/theme.php:253
+#: ../../mod/contacts.php:544 ../../view/theme/diabook/theme.php:253
 #: ../../include/nav.php:139
 msgid "Contacts"
 msgstr ""
 
-#: ../../mod/contacts.php:537
+#: ../../mod/contacts.php:548
 msgid "Search your contacts"
 msgstr ""
 
-#: ../../mod/contacts.php:538 ../../mod/directory.php:57
+#: ../../mod/contacts.php:549 ../../mod/directory.php:57
 msgid "Finding: "
 msgstr ""
 
-#: ../../mod/contacts.php:539 ../../mod/directory.php:59
+#: ../../mod/contacts.php:550 ../../mod/directory.php:59
 #: ../../include/contact_widgets.php:33
 msgid "Find"
 msgstr ""
@@ -1644,11 +1688,11 @@ msgstr ""
 
 #: ../../mod/lostpass.php:45 ../../mod/lostpass.php:107
 #: ../../mod/register.php:388 ../../mod/register.php:442
-#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:732
-#: ../../addon/facebook/facebook.php:650
-#: ../../addon/facebook/facebook.php:1139
-#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2700
-#: ../../boot.php:683
+#: ../../mod/regmod.php:54 ../../mod/dfrn_confirm.php:756
+#: ../../addon/facebook/facebook.php:658
+#: ../../addon/facebook/facebook.php:1148
+#: ../../addon/testdrive/testdrive.php:58 ../../include/items.php:2716
+#: ../../boot.php:686
 msgid "Administrator"
 msgstr ""
 
@@ -1658,7 +1702,7 @@ msgid ""
 "Password reset failed."
 msgstr ""
 
-#: ../../mod/lostpass.php:83 ../../boot.php:815
+#: ../../mod/lostpass.php:83 ../../boot.php:818
 msgid "Password Reset"
 msgstr ""
 
@@ -1730,7 +1774,7 @@ msgstr ""
 msgid "Remove account"
 msgstr ""
 
-#: ../../mod/settings.php:88 ../../mod/admin.php:667 ../../mod/admin.php:872
+#: ../../mod/settings.php:88 ../../mod/admin.php:730 ../../mod/admin.php:935
 #: ../../addon/mathjax/mathjax.php:36 ../../include/nav.php:137
 msgid "Settings"
 msgstr ""
@@ -1740,7 +1784,6 @@ msgid "Missing some important data!"
 msgstr ""
 
 #: ../../mod/settings.php:134 ../../mod/settings.php:563
-#: ../../mod/admin.php:97
 msgid "Update"
 msgstr ""
 
@@ -1784,7 +1827,7 @@ msgstr ""
 msgid " Cannot change to that email."
 msgstr ""
 
-#: ../../mod/settings.php:466 ../../addon/facebook/facebook.php:469
+#: ../../mod/settings.php:466 ../../addon/facebook/facebook.php:470
 #: ../../addon/impressum/impressum.php:77
 #: ../../addon/openstreetmap/openstreetmap.php:80
 #: ../../addon/mathjax/mathjax.php:66 ../../addon/piwik/piwik.php:105
@@ -1958,7 +2001,7 @@ msgstr ""
 msgid "Don't show emoticons"
 msgstr ""
 
-#: ../../mod/settings.php:816 ../../mod/admin.php:173 ../../mod/admin.php:553
+#: ../../mod/settings.php:816 ../../mod/admin.php:180 ../../mod/admin.php:616
 msgid "Normal Account"
 msgstr ""
 
@@ -1966,7 +2009,7 @@ msgstr ""
 msgid "This account is a normal personal profile"
 msgstr ""
 
-#: ../../mod/settings.php:820 ../../mod/admin.php:174 ../../mod/admin.php:554
+#: ../../mod/settings.php:820 ../../mod/admin.php:181 ../../mod/admin.php:617
 msgid "Soapbox Account"
 msgstr ""
 
@@ -1974,7 +2017,7 @@ msgstr ""
 msgid "Automatically approve all connection/friend requests as read-only fans"
 msgstr ""
 
-#: ../../mod/settings.php:824 ../../mod/admin.php:175 ../../mod/admin.php:555
+#: ../../mod/settings.php:824 ../../mod/admin.php:182 ../../mod/admin.php:618
 msgid "Community/Celebrity Account"
 msgstr ""
 
@@ -1982,7 +2025,7 @@ msgstr ""
 msgid "Automatically approve all connection/friend requests as read-write fans"
 msgstr ""
 
-#: ../../mod/settings.php:828 ../../mod/admin.php:176 ../../mod/admin.php:556
+#: ../../mod/settings.php:828 ../../mod/admin.php:183 ../../mod/admin.php:619
 msgid "Automatic Friend Account"
 msgstr ""
 
@@ -2228,23 +2271,47 @@ msgstr ""
 msgid "Commented Order"
 msgstr ""
 
-#: ../../mod/network.php:176
+#: ../../mod/network.php:174
+msgid "Sort by Comment Date"
+msgstr ""
+
+#: ../../mod/network.php:177
 msgid "Posted Order"
 msgstr ""
 
+#: ../../mod/network.php:180
+msgid "Sort by Post Date"
+msgstr ""
+
 #: ../../mod/network.php:187
+msgid "Posts that mention or involve you"
+msgstr ""
+
+#: ../../mod/network.php:190
 msgid "New"
 msgstr ""
 
-#: ../../mod/network.php:192
+#: ../../mod/network.php:193
+msgid "Activity Stream - by date"
+msgstr ""
+
+#: ../../mod/network.php:196
 msgid "Starred"
 msgstr ""
 
-#: ../../mod/network.php:197
+#: ../../mod/network.php:199
+msgid "Favourite Posts"
+msgstr ""
+
+#: ../../mod/network.php:202
 msgid "Shared Links"
 msgstr ""
 
-#: ../../mod/network.php:274
+#: ../../mod/network.php:205
+msgid "Interesting Links"
+msgstr ""
+
+#: ../../mod/network.php:281
 #, php-format
 msgid "Warning: This group contains %s member from an insecure network."
 msgid_plural ""
@@ -2252,40 +2319,40 @@ msgid_plural ""
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/network.php:277
+#: ../../mod/network.php:284
 msgid "Private messages to this group are at risk of public disclosure."
 msgstr ""
 
-#: ../../mod/network.php:322
+#: ../../mod/network.php:329
 msgid "No such group"
 msgstr ""
 
-#: ../../mod/network.php:333
+#: ../../mod/network.php:340
 msgid "Group is empty"
 msgstr ""
 
-#: ../../mod/network.php:337
+#: ../../mod/network.php:344
 msgid "Group: "
 msgstr ""
 
-#: ../../mod/network.php:347
+#: ../../mod/network.php:354
 msgid "Contact: "
 msgstr ""
 
-#: ../../mod/network.php:349
+#: ../../mod/network.php:356
 msgid "Private messages to this person are at risk of public disclosure."
 msgstr ""
 
-#: ../../mod/network.php:354
+#: ../../mod/network.php:361
 msgid "Invalid contact."
 msgstr ""
 
-#: ../../mod/notes.php:44 ../../boot.php:1492
+#: ../../mod/notes.php:44 ../../boot.php:1499
 msgid "Personal Notes"
 msgstr ""
 
 #: ../../mod/notes.php:63 ../../mod/filer.php:30
-#: ../../addon/facebook/facebook.php:717
+#: ../../addon/facebook/facebook.php:726
 #: ../../addon/privacy_image_cache/privacy_image_cache.php:147
 #: ../../include/text.php:652
 msgid "Save"
@@ -2531,7 +2598,7 @@ msgstr ""
 
 #: ../../mod/profperm.php:103 ../../view/theme/diabook/theme.php:252
 #: ../../include/profile_advanced.php:7 ../../include/profile_advanced.php:74
-#: ../../include/nav.php:50 ../../boot.php:1474
+#: ../../include/nav.php:50 ../../boot.php:1478
 msgid "Profile"
 msgstr ""
 
@@ -2680,7 +2747,7 @@ msgstr ""
 msgid "Your invitation ID: "
 msgstr ""
 
-#: ../../mod/register.php:553 ../../mod/admin.php:394
+#: ../../mod/register.php:553 ../../mod/admin.php:401
 msgid "Registration"
 msgstr ""
 
@@ -2703,7 +2770,7 @@ msgstr ""
 msgid "Choose a nickname: "
 msgstr ""
 
-#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:781
+#: ../../mod/register.php:567 ../../include/nav.php:81 ../../boot.php:784
 msgid "Register"
 msgstr ""
 
@@ -2712,7 +2779,7 @@ msgid "People Search"
 msgstr ""
 
 #: ../../mod/like.php:127 ../../mod/tagger.php:70
-#: ../../addon/facebook/facebook.php:1533
+#: ../../addon/facebook/facebook.php:1542
 #: ../../addon/communityhome/communityhome.php:158
 #: ../../addon/communityhome/communityhome.php:167
 #: ../../view/theme/diabook/theme.php:102
@@ -2722,7 +2789,7 @@ msgstr ""
 msgid "status"
 msgstr ""
 
-#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1537
+#: ../../mod/like.php:144 ../../addon/facebook/facebook.php:1546
 #: ../../addon/communityhome/communityhome.php:172
 #: ../../view/theme/diabook/theme.php:116 ../../include/diaspora.php:1670
 #: ../../include/conversation.php:65
@@ -2735,9 +2802,9 @@ msgstr ""
 msgid "%1$s doesn't like %2$s's %3$s"
 msgstr ""
 
-#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:149
-#: ../../mod/admin.php:616 ../../mod/admin.php:815 ../../mod/display.php:37
-#: ../../mod/display.php:142 ../../include/items.php:3083
+#: ../../mod/notice.php:15 ../../mod/viewsrc.php:15 ../../mod/admin.php:156
+#: ../../mod/admin.php:679 ../../mod/admin.php:878 ../../mod/display.php:37
+#: ../../mod/display.php:142 ../../include/items.php:3099
 msgid "Item not found."
 msgstr ""
 
@@ -2746,7 +2813,7 @@ msgid "Access denied."
 msgstr ""
 
 #: ../../mod/fbrowser.php:23 ../../view/theme/diabook/theme.php:254
-#: ../../include/nav.php:51 ../../boot.php:1479
+#: ../../include/nav.php:51 ../../boot.php:1484
 msgid "Photos"
 msgstr ""
 
@@ -2967,492 +3034,545 @@ msgstr ""
 msgid "Theme settings updated."
 msgstr ""
 
-#: ../../mod/admin.php:93 ../../mod/admin.php:392
+#: ../../mod/admin.php:96 ../../mod/admin.php:399
 msgid "Site"
 msgstr ""
 
-#: ../../mod/admin.php:94 ../../mod/admin.php:571 ../../mod/admin.php:583
+#: ../../mod/admin.php:97 ../../mod/admin.php:634 ../../mod/admin.php:646
 msgid "Users"
 msgstr ""
 
-#: ../../mod/admin.php:95 ../../mod/admin.php:665 ../../mod/admin.php:707
+#: ../../mod/admin.php:98 ../../mod/admin.php:728 ../../mod/admin.php:770
 msgid "Plugins"
 msgstr ""
 
-#: ../../mod/admin.php:96 ../../mod/admin.php:870 ../../mod/admin.php:906
+#: ../../mod/admin.php:99 ../../mod/admin.php:933 ../../mod/admin.php:969
 msgid "Themes"
 msgstr ""
 
-#: ../../mod/admin.php:111 ../../mod/admin.php:994
+#: ../../mod/admin.php:100
+msgid "DB updates"
+msgstr ""
+
+#: ../../mod/admin.php:101
+msgid "Software Update"
+msgstr ""
+
+#: ../../mod/admin.php:115 ../../mod/admin.php:1056
 msgid "Logs"
 msgstr ""
 
-#: ../../mod/admin.php:116
+#: ../../mod/admin.php:120
 msgid "User registrations waiting for confirmation"
 msgstr ""
 
-#: ../../mod/admin.php:188 ../../mod/admin.php:391 ../../mod/admin.php:570
-#: ../../mod/admin.php:664 ../../mod/admin.php:706 ../../mod/admin.php:869
-#: ../../mod/admin.php:905 ../../mod/admin.php:993
+#: ../../mod/admin.php:195 ../../mod/admin.php:398 ../../mod/admin.php:633
+#: ../../mod/admin.php:727 ../../mod/admin.php:769 ../../mod/admin.php:932
+#: ../../mod/admin.php:968 ../../mod/admin.php:1055
 msgid "Administration"
 msgstr ""
 
-#: ../../mod/admin.php:189
+#: ../../mod/admin.php:196
 msgid "Summary"
 msgstr ""
 
-#: ../../mod/admin.php:190
+#: ../../mod/admin.php:197
 msgid "Registered users"
 msgstr ""
 
-#: ../../mod/admin.php:192
+#: ../../mod/admin.php:199
 msgid "Pending registrations"
 msgstr ""
 
-#: ../../mod/admin.php:193
+#: ../../mod/admin.php:200
 msgid "Version"
 msgstr ""
 
-#: ../../mod/admin.php:195
+#: ../../mod/admin.php:202
 msgid "Active plugins"
 msgstr ""
 
-#: ../../mod/admin.php:330
+#: ../../mod/admin.php:337
 msgid "Site settings updated."
 msgstr ""
 
-#: ../../mod/admin.php:378
+#: ../../mod/admin.php:385
 msgid "Closed"
 msgstr ""
 
-#: ../../mod/admin.php:379
+#: ../../mod/admin.php:386
 msgid "Requires approval"
 msgstr ""
 
-#: ../../mod/admin.php:380
+#: ../../mod/admin.php:387
 msgid "Open"
 msgstr ""
 
-#: ../../mod/admin.php:384
+#: ../../mod/admin.php:391
 msgid "No SSL policy, links will track page SSL state"
 msgstr ""
 
-#: ../../mod/admin.php:385
+#: ../../mod/admin.php:392
 msgid "Force all links to use SSL"
 msgstr ""
 
-#: ../../mod/admin.php:386
+#: ../../mod/admin.php:393
 msgid "Self-signed certificate, use SSL for local links only (discouraged)"
 msgstr ""
 
-#: ../../mod/admin.php:395
+#: ../../mod/admin.php:402
 msgid "File upload"
 msgstr ""
 
-#: ../../mod/admin.php:396
+#: ../../mod/admin.php:403
 msgid "Policies"
 msgstr ""
 
-#: ../../mod/admin.php:397
+#: ../../mod/admin.php:404
 msgid "Advanced"
 msgstr ""
 
-#: ../../mod/admin.php:401 ../../addon/statusnet/statusnet.php:544
+#: ../../mod/admin.php:408 ../../addon/statusnet/statusnet.php:544
 msgid "Site name"
 msgstr ""
 
-#: ../../mod/admin.php:402
+#: ../../mod/admin.php:409
 msgid "Banner/Logo"
 msgstr ""
 
-#: ../../mod/admin.php:403
+#: ../../mod/admin.php:410
 msgid "System language"
 msgstr ""
 
-#: ../../mod/admin.php:404
+#: ../../mod/admin.php:411
 msgid "System theme"
 msgstr ""
 
-#: ../../mod/admin.php:404
+#: ../../mod/admin.php:411
 msgid ""
 "Default system theme - may be over-ridden by user profiles - <a href='#' "
 "id='cnftheme'>change theme settings</a>"
 msgstr ""
 
-#: ../../mod/admin.php:405
+#: ../../mod/admin.php:412
 msgid "SSL link policy"
 msgstr ""
 
-#: ../../mod/admin.php:405
+#: ../../mod/admin.php:412
 msgid "Determines whether generated links should be forced to use SSL"
 msgstr ""
 
-#: ../../mod/admin.php:406
+#: ../../mod/admin.php:413
 msgid "Maximum image size"
 msgstr ""
 
-#: ../../mod/admin.php:406
+#: ../../mod/admin.php:413
 msgid ""
 "Maximum size in bytes of uploaded images. Default is 0, which means no "
 "limits."
 msgstr ""
 
-#: ../../mod/admin.php:408
+#: ../../mod/admin.php:415
 msgid "Register policy"
 msgstr ""
 
-#: ../../mod/admin.php:409
+#: ../../mod/admin.php:416
 msgid "Register text"
 msgstr ""
 
-#: ../../mod/admin.php:409
+#: ../../mod/admin.php:416
 msgid "Will be displayed prominently on the registration page."
 msgstr ""
 
-#: ../../mod/admin.php:410
+#: ../../mod/admin.php:417
 msgid "Accounts abandoned after x days"
 msgstr ""
 
-#: ../../mod/admin.php:410
+#: ../../mod/admin.php:417
 msgid ""
 "Will not waste system resources polling external sites for abandonded "
 "accounts. Enter 0 for no time limit."
 msgstr ""
 
-#: ../../mod/admin.php:411
+#: ../../mod/admin.php:418
 msgid "Allowed friend domains"
 msgstr ""
 
-#: ../../mod/admin.php:411
+#: ../../mod/admin.php:418
 msgid ""
 "Comma separated list of domains which are allowed to establish friendships "
 "with this site. Wildcards are accepted. Empty to allow any domains"
 msgstr ""
 
-#: ../../mod/admin.php:412
+#: ../../mod/admin.php:419
 msgid "Allowed email domains"
 msgstr ""
 
-#: ../../mod/admin.php:412
+#: ../../mod/admin.php:419
 msgid ""
 "Comma separated list of domains which are allowed in email addresses for "
 "registrations to this site. Wildcards are accepted. Empty to allow any "
 "domains"
 msgstr ""
 
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:420
 msgid "Block public"
 msgstr ""
 
-#: ../../mod/admin.php:413
+#: ../../mod/admin.php:420
 msgid ""
 "Check to block public access to all otherwise public personal pages on this "
 "site unless you are currently logged in."
 msgstr ""
 
-#: ../../mod/admin.php:414
+#: ../../mod/admin.php:421
 msgid "Force publish"
 msgstr ""
 
-#: ../../mod/admin.php:414
+#: ../../mod/admin.php:421
 msgid ""
 "Check to force all profiles on this site to be listed in the site directory."
 msgstr ""
 
-#: ../../mod/admin.php:415
+#: ../../mod/admin.php:422
 msgid "Global directory update URL"
 msgstr ""
 
-#: ../../mod/admin.php:415
+#: ../../mod/admin.php:422
 msgid ""
 "URL to update the global directory. If this is not set, the global directory "
 "is completely unavailable to the application."
 msgstr ""
 
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:424
 msgid "Block multiple registrations"
 msgstr ""
 
-#: ../../mod/admin.php:417
+#: ../../mod/admin.php:424
 msgid "Disallow users to register additional accounts for use as pages."
 msgstr ""
 
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:425
 msgid "OpenID support"
 msgstr ""
 
-#: ../../mod/admin.php:418
+#: ../../mod/admin.php:425
 msgid "OpenID support for registration and logins."
 msgstr ""
 
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:426
 msgid "Fullname check"
 msgstr ""
 
-#: ../../mod/admin.php:419
+#: ../../mod/admin.php:426
 msgid ""
 "Force users to register with a space between firstname and lastname in Full "
 "name, as an antispam measure"
 msgstr ""
 
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:427
 msgid "UTF-8 Regular expressions"
 msgstr ""
 
-#: ../../mod/admin.php:420
+#: ../../mod/admin.php:427
 msgid "Use PHP UTF8 regular expressions"
 msgstr ""
 
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:428
 msgid "Show Community Page"
 msgstr ""
 
-#: ../../mod/admin.php:421
+#: ../../mod/admin.php:428
 msgid ""
 "Display a Community page showing all recent public postings on this site."
 msgstr ""
 
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:429
 msgid "Enable OStatus support"
 msgstr ""
 
-#: ../../mod/admin.php:422
+#: ../../mod/admin.php:429
 msgid ""
 "Provide built-in OStatus (identi.ca, status.net, etc.) compatibility. All "
 "communications in OStatus are public, so privacy warnings will be "
 "occasionally displayed."
 msgstr ""
 
-#: ../../mod/admin.php:423
+#: ../../mod/admin.php:430
 msgid "Enable Diaspora support"
 msgstr ""
 
-#: ../../mod/admin.php:423
+#: ../../mod/admin.php:430
 msgid "Provide built-in Diaspora network compatibility."
 msgstr ""
 
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:431
 msgid "Only allow Friendica contacts"
 msgstr ""
 
-#: ../../mod/admin.php:424
+#: ../../mod/admin.php:431
 msgid ""
 "All contacts must use Friendica protocols. All other built-in communication "
 "protocols disabled."
 msgstr ""
 
-#: ../../mod/admin.php:425
+#: ../../mod/admin.php:432
 msgid "Verify SSL"
 msgstr ""
 
-#: ../../mod/admin.php:425
+#: ../../mod/admin.php:432
 msgid ""
 "If you wish, you can turn on strict certificate checking. This will mean you "
 "cannot connect (at all) to self-signed SSL sites."
 msgstr ""
 
-#: ../../mod/admin.php:426
+#: ../../mod/admin.php:433
 msgid "Proxy user"
 msgstr ""
 
-#: ../../mod/admin.php:427
+#: ../../mod/admin.php:434
 msgid "Proxy URL"
 msgstr ""
 
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:435
 msgid "Network timeout"
 msgstr ""
 
-#: ../../mod/admin.php:428
+#: ../../mod/admin.php:435
 msgid "Value is in seconds. Set to 0 for unlimited (not recommended)."
 msgstr ""
 
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:436
 msgid "Delivery interval"
 msgstr ""
 
-#: ../../mod/admin.php:429
+#: ../../mod/admin.php:436
 msgid ""
 "Delay background delivery processes by this many seconds to reduce system "
 "load. Recommend: 4-5 for shared hosts, 2-3 for virtual private servers. 0-1 "
 "for large dedicated servers."
 msgstr ""
 
-#: ../../mod/admin.php:455
+#: ../../mod/admin.php:451
+msgid "Update has been marked successful"
+msgstr ""
+
+#: ../../mod/admin.php:461
+#, php-format
+msgid "Executing %s failed. Check system logs."
+msgstr ""
+
+#: ../../mod/admin.php:464
+#, php-format
+msgid "Update %s was successfully applied."
+msgstr ""
+
+#: ../../mod/admin.php:468
+#, php-format
+msgid "Update %s did not return a status. Unknown if it succeeded."
+msgstr ""
+
+#: ../../mod/admin.php:471
+#, php-format
+msgid "Update function %s could not be found."
+msgstr ""
+
+#: ../../mod/admin.php:486
+msgid "No failed updates."
+msgstr ""
+
+#: ../../mod/admin.php:490
+msgid "Failed Updates"
+msgstr ""
+
+#: ../../mod/admin.php:491
+msgid ""
+"This does not include updates prior to 1139, which did not return a status."
+msgstr ""
+
+#: ../../mod/admin.php:492
+msgid "Mark success (if update was manually applied)"
+msgstr ""
+
+#: ../../mod/admin.php:493
+msgid "Attempt to execute this update step automatically"
+msgstr ""
+
+#: ../../mod/admin.php:518
 #, php-format
 msgid "%s user blocked/unblocked"
 msgid_plural "%s users blocked/unblocked"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/admin.php:462
+#: ../../mod/admin.php:525
 #, php-format
 msgid "%s user deleted"
 msgid_plural "%s users deleted"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/admin.php:501
+#: ../../mod/admin.php:564
 #, php-format
 msgid "User '%s' deleted"
 msgstr ""
 
-#: ../../mod/admin.php:509
+#: ../../mod/admin.php:572
 #, php-format
 msgid "User '%s' unblocked"
 msgstr ""
 
-#: ../../mod/admin.php:509
+#: ../../mod/admin.php:572
 #, php-format
 msgid "User '%s' blocked"
 msgstr ""
 
-#: ../../mod/admin.php:573
+#: ../../mod/admin.php:636
 msgid "select all"
 msgstr ""
 
-#: ../../mod/admin.php:574
+#: ../../mod/admin.php:637
 msgid "User registrations waiting for confirm"
 msgstr ""
 
-#: ../../mod/admin.php:575
+#: ../../mod/admin.php:638
 msgid "Request date"
 msgstr ""
 
-#: ../../mod/admin.php:575 ../../mod/admin.php:584
+#: ../../mod/admin.php:638 ../../mod/admin.php:647
 #: ../../include/contact_selectors.php:79
 msgid "Email"
 msgstr ""
 
-#: ../../mod/admin.php:576
+#: ../../mod/admin.php:639
 msgid "No registrations."
 msgstr ""
 
-#: ../../mod/admin.php:578
+#: ../../mod/admin.php:641
 msgid "Deny"
 msgstr ""
 
-#: ../../mod/admin.php:584
+#: ../../mod/admin.php:647
 msgid "Register date"
 msgstr ""
 
-#: ../../mod/admin.php:584
+#: ../../mod/admin.php:647
 msgid "Last login"
 msgstr ""
 
-#: ../../mod/admin.php:584
+#: ../../mod/admin.php:647
 msgid "Last item"
 msgstr ""
 
-#: ../../mod/admin.php:584
+#: ../../mod/admin.php:647
 msgid "Account"
 msgstr ""
 
-#: ../../mod/admin.php:586
+#: ../../mod/admin.php:649
 msgid ""
 "Selected users will be deleted!\\n\\nEverything these users had posted on "
 "this site will be permanently deleted!\\n\\nAre you sure?"
 msgstr ""
 
-#: ../../mod/admin.php:587
+#: ../../mod/admin.php:650
 msgid ""
 "The user {0} will be deleted!\\n\\nEverything this user has posted on this "
 "site will be permanently deleted!\\n\\nAre you sure?"
 msgstr ""
 
-#: ../../mod/admin.php:628
+#: ../../mod/admin.php:691
 #, php-format
 msgid "Plugin %s disabled."
 msgstr ""
 
-#: ../../mod/admin.php:632
+#: ../../mod/admin.php:695
 #, php-format
 msgid "Plugin %s enabled."
 msgstr ""
 
-#: ../../mod/admin.php:642 ../../mod/admin.php:840
+#: ../../mod/admin.php:705 ../../mod/admin.php:903
 msgid "Disable"
 msgstr ""
 
-#: ../../mod/admin.php:644 ../../mod/admin.php:842
+#: ../../mod/admin.php:707 ../../mod/admin.php:905
 msgid "Enable"
 msgstr ""
 
-#: ../../mod/admin.php:666 ../../mod/admin.php:871
+#: ../../mod/admin.php:729 ../../mod/admin.php:934
 msgid "Toggle"
 msgstr ""
 
-#: ../../mod/admin.php:674 ../../mod/admin.php:881
+#: ../../mod/admin.php:737 ../../mod/admin.php:944
 msgid "Author: "
 msgstr ""
 
-#: ../../mod/admin.php:675 ../../mod/admin.php:882
+#: ../../mod/admin.php:738 ../../mod/admin.php:945
 msgid "Maintainer: "
 msgstr ""
 
-#: ../../mod/admin.php:804
+#: ../../mod/admin.php:867
 msgid "No themes found."
 msgstr ""
 
-#: ../../mod/admin.php:863
+#: ../../mod/admin.php:926
 msgid "Screenshot"
 msgstr ""
 
-#: ../../mod/admin.php:911
+#: ../../mod/admin.php:974
 msgid "[Experimental]"
 msgstr ""
 
-#: ../../mod/admin.php:912
+#: ../../mod/admin.php:975
 msgid "[Unsupported]"
 msgstr ""
 
-#: ../../mod/admin.php:939
+#: ../../mod/admin.php:1002
 msgid "Log settings updated."
 msgstr ""
 
-#: ../../mod/admin.php:996
+#: ../../mod/admin.php:1058
 msgid "Clear"
 msgstr ""
 
-#: ../../mod/admin.php:1002
+#: ../../mod/admin.php:1064
 msgid "Debugging"
 msgstr ""
 
-#: ../../mod/admin.php:1003
+#: ../../mod/admin.php:1065
 msgid "Log file"
 msgstr ""
 
-#: ../../mod/admin.php:1003
+#: ../../mod/admin.php:1065
 msgid ""
 "Must be writable by web server. Relative to your Friendica top-level "
 "directory."
 msgstr ""
 
-#: ../../mod/admin.php:1004
+#: ../../mod/admin.php:1066
 msgid "Log level"
 msgstr ""
 
-#: ../../mod/admin.php:1054
+#: ../../mod/admin.php:1116
 msgid "Close"
 msgstr ""
 
-#: ../../mod/admin.php:1060
+#: ../../mod/admin.php:1122
 msgid "FTP Host"
 msgstr ""
 
-#: ../../mod/admin.php:1061
+#: ../../mod/admin.php:1123
 msgid "FTP Path"
 msgstr ""
 
-#: ../../mod/admin.php:1062
+#: ../../mod/admin.php:1124
 msgid "FTP User"
 msgstr ""
 
-#: ../../mod/admin.php:1063
+#: ../../mod/admin.php:1125
 msgid "FTP Password"
 msgstr ""
 
-#: ../../mod/profile.php:21 ../../boot.php:946
+#: ../../mod/profile.php:21 ../../boot.php:949
 msgid "Requested profile is not available."
 msgstr ""
 
@@ -3855,23 +3975,23 @@ msgstr ""
 msgid "Edit/Manage Profiles"
 msgstr ""
 
-#: ../../mod/profiles.php:621 ../../boot.php:1055
+#: ../../mod/profiles.php:621 ../../boot.php:1058
 msgid "Change profile photo"
 msgstr ""
 
-#: ../../mod/profiles.php:622 ../../boot.php:1056
+#: ../../mod/profiles.php:622 ../../boot.php:1059
 msgid "Create New Profile"
 msgstr ""
 
-#: ../../mod/profiles.php:633 ../../boot.php:1066
+#: ../../mod/profiles.php:633 ../../boot.php:1069
 msgid "Profile Image"
 msgstr ""
 
-#: ../../mod/profiles.php:635 ../../boot.php:1069
+#: ../../mod/profiles.php:635 ../../boot.php:1072
 msgid "visible to everybody"
 msgstr ""
 
-#: ../../mod/profiles.php:636 ../../boot.php:1070
+#: ../../mod/profiles.php:636 ../../boot.php:1073
 msgid "Edit visibility"
 msgstr ""
 
@@ -4077,118 +4197,123 @@ msgstr ""
 msgid "Unable to set contact photo."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:477 ../../include/diaspora.php:507
+#: ../../mod/dfrn_confirm.php:488
+#, php-format
+msgid "%1$s welcomes new member %2$s"
+msgstr ""
+
+#: ../../mod/dfrn_confirm.php:498 ../../include/diaspora.php:507
 #: ../../include/conversation.php:101
 #, php-format
 msgid "%1$s is now friends with %2$s"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:548
+#: ../../mod/dfrn_confirm.php:572
 #, php-format
 msgid "No user record found for '%s' "
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:558
+#: ../../mod/dfrn_confirm.php:582
 msgid "Our site encryption key is apparently messed up."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:569
+#: ../../mod/dfrn_confirm.php:593
 msgid "Empty site URL was provided or URL could not be decrypted by us."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:590
+#: ../../mod/dfrn_confirm.php:614
 msgid "Contact record was not found for you on our site."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:604
+#: ../../mod/dfrn_confirm.php:628
 #, php-format
 msgid "Site public key not available in contact record for URL %s."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:624
+#: ../../mod/dfrn_confirm.php:648
 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:635
+#: ../../mod/dfrn_confirm.php:659
 msgid "Unable to set your contact credentials on our system."
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:700
+#: ../../mod/dfrn_confirm.php:724
 msgid "Unable to update your contact profile details on our system"
 msgstr ""
 
-#: ../../mod/dfrn_confirm.php:730
+#: ../../mod/dfrn_confirm.php:754
 #, php-format
 msgid "Connection accepted at %s"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:490
+#: ../../addon/facebook/facebook.php:491
 msgid "Facebook disabled"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:495
+#: ../../addon/facebook/facebook.php:496
 msgid "Updating contacts"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:515
+#: ../../addon/facebook/facebook.php:516
 msgid "Facebook API key is missing."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:522
+#: ../../addon/facebook/facebook.php:523
 msgid "Facebook Connect"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:528
+#: ../../addon/facebook/facebook.php:529
 msgid "Install Facebook connector for this account."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:535
+#: ../../addon/facebook/facebook.php:536
 msgid "Remove Facebook connector"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:540
+#: ../../addon/facebook/facebook.php:541
 msgid ""
 "Re-authenticate [This is necessary whenever your Facebook password is "
 "changed.]"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:547
+#: ../../addon/facebook/facebook.php:548
 msgid "Post to Facebook by default"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:551
+#: ../../addon/facebook/facebook.php:552
 msgid "Link all your Facebook friends and conversations on this website"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:553
+#: ../../addon/facebook/facebook.php:554
 msgid ""
 "Facebook conversations consist of your <em>profile wall</em> and your friend "
 "<em>stream</em>."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:554
+#: ../../addon/facebook/facebook.php:555
 msgid "On this website, your Facebook friend stream is only visible to you."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:555
+#: ../../addon/facebook/facebook.php:556
 msgid ""
 "The following settings determine the privacy of your Facebook profile wall "
 "on this website."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:559
+#: ../../addon/facebook/facebook.php:560
 msgid ""
 "On this website your Facebook profile wall conversations will only be "
 "visible to you"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:564
+#: ../../addon/facebook/facebook.php:565
 msgid "Do not import your Facebook profile wall conversations"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:566
+#: ../../addon/facebook/facebook.php:567
 msgid ""
 "If you choose to link conversations and leave both of these boxes unchecked, "
 "your Facebook profile wall will be merged with your profile wall on this "
@@ -4196,120 +4321,120 @@ msgid ""
 "who may see the conversations."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:571
+#: ../../addon/facebook/facebook.php:572
 msgid "Comma separated applications to ignore"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:648
+#: ../../addon/facebook/facebook.php:656
 msgid "Problems with Facebook Real-Time Updates"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:675
+#: ../../addon/facebook/facebook.php:684
 #: ../../include/contact_selectors.php:81
 msgid "Facebook"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:676
+#: ../../addon/facebook/facebook.php:685
 msgid "Facebook Connector Settings"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:691
+#: ../../addon/facebook/facebook.php:700
 msgid "Facebook API Key"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:701
+#: ../../addon/facebook/facebook.php:710
 msgid ""
 "Error: it appears that you have specified the App-ID and -Secret in your ."
 "htconfig.php file. As long as they are specified there, they cannot be set "
 "using this form.<br><br>"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:706
+#: ../../addon/facebook/facebook.php:715
 msgid ""
 "Error: the given API Key seems to be incorrect (the application access token "
 "could not be retrieved)."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:708
+#: ../../addon/facebook/facebook.php:717
 msgid "The given API Key seems to work correctly."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:710
+#: ../../addon/facebook/facebook.php:719
 msgid ""
 "The correctness of the API Key could not be detected. Somthing strange's "
 "going on."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:713
+#: ../../addon/facebook/facebook.php:722
 msgid "App-ID / API-Key"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:714
+#: ../../addon/facebook/facebook.php:723
 msgid "Application secret"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:715
+#: ../../addon/facebook/facebook.php:724
 #, php-format
 msgid "Polling Interval in minutes (minimum %1$s minutes)"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:716
+#: ../../addon/facebook/facebook.php:725
 msgid ""
 "Synchronize comments (no comments on Facebook are missed, at the cost of "
 "increased system load)"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:720
+#: ../../addon/facebook/facebook.php:729
 msgid "Real-Time Updates"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:724
+#: ../../addon/facebook/facebook.php:733
 msgid "Real-Time Updates are activated."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:725
+#: ../../addon/facebook/facebook.php:734
 msgid "Deactivate Real-Time Updates"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:727
+#: ../../addon/facebook/facebook.php:736
 msgid "Real-Time Updates not activated."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:727
+#: ../../addon/facebook/facebook.php:736
 msgid "Activate Real-Time Updates"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:746
+#: ../../addon/facebook/facebook.php:755
 msgid "The new values have been saved."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:770
+#: ../../addon/facebook/facebook.php:779
 msgid "Post to Facebook"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:868
+#: ../../addon/facebook/facebook.php:877
 msgid ""
 "Post to Facebook cancelled because of multi-network access permission "
 "conflict."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:1088
+#: ../../addon/facebook/facebook.php:1097
 msgid "View on Friendica"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:1121
+#: ../../addon/facebook/facebook.php:1130
 msgid "Facebook post failed. Queued for retry."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:1161
+#: ../../addon/facebook/facebook.php:1170
 msgid "Your Facebook connection became invalid. Please Re-authenticate."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:1162
+#: ../../addon/facebook/facebook.php:1171
 msgid "Facebook connection became invalid"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:1163
+#: ../../addon/facebook/facebook.php:1172
 #, php-format
 msgid ""
 "Hi %1$s,\n"
@@ -4472,7 +4597,7 @@ msgstr ""
 #: ../../addon/communityhome/communityhome.php:34
 #: ../../addon/communityhome/twillingham/communityhome.php:28
 #: ../../addon/communityhome/twillingham/communityhome.php:34
-#: ../../include/nav.php:64 ../../boot.php:802
+#: ../../include/nav.php:64 ../../boot.php:805
 msgid "Login"
 msgstr ""
 
@@ -5214,7 +5339,7 @@ msgid "Show More Settings saved."
 msgstr ""
 
 #: ../../addon/showmore/showmore.php:87 ../../include/conversation.php:466
-#: ../../boot.php:504
+#: ../../boot.php:507
 msgid "show more"
 msgstr ""
 
@@ -5518,7 +5643,7 @@ msgstr ""
 msgid "Set colour scheme"
 msgstr ""
 
-#: ../../include/profile_advanced.php:17 ../../boot.php:1091
+#: ../../include/profile_advanced.php:17 ../../boot.php:1094
 msgid "Gender:"
 msgstr ""
 
@@ -5539,11 +5664,11 @@ msgstr ""
 msgid "Age:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:37 ../../boot.php:1094
+#: ../../include/profile_advanced.php:37 ../../boot.php:1097
 msgid "Status:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:45 ../../boot.php:1096
+#: ../../include/profile_advanced.php:45 ../../boot.php:1099
 msgid "Homepage:"
 msgstr ""
 
@@ -5723,179 +5848,179 @@ msgstr ""
 msgid "Undecided"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Males"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Females"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Gay"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Lesbian"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "No Preference"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Bisexual"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Autosexual"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Abstinent"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Virgin"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Deviant"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Fetish"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Oodles"
 msgstr ""
 
-#: ../../include/profile_selectors.php:19
+#: ../../include/profile_selectors.php:21
 msgid "Nonsexual"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Single"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Lonely"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Available"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Unavailable"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Has crush"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Infatuated"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Dating"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Unfaithful"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Sex Addict"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Friends"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Friends/Benefits"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Casual"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Engaged"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Married"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Imaginarily married"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Partners"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Cohabiting"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Common law"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Happy"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Not looking"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Swinger"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Betrayed"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Separated"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Unstable"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Divorced"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Imaginarily divorced"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Widowed"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Uncertain"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "It's complicated"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Don't care"
 msgstr ""
 
-#: ../../include/profile_selectors.php:33
+#: ../../include/profile_selectors.php:37
 msgid "Ask me"
 msgstr ""
 
@@ -6127,7 +6252,7 @@ msgstr ""
 msgid "Contacts not in any group"
 msgstr ""
 
-#: ../../include/nav.php:46 ../../boot.php:801
+#: ../../include/nav.php:46 ../../boot.php:804
 msgid "Logout"
 msgstr ""
 
@@ -6135,7 +6260,7 @@ msgstr ""
 msgid "End this session"
 msgstr ""
 
-#: ../../include/nav.php:49 ../../boot.php:1469
+#: ../../include/nav.php:49 ../../boot.php:1472
 msgid "Status"
 msgstr ""
 
@@ -6215,11 +6340,11 @@ msgstr ""
 msgid "Manage other pages"
 msgstr ""
 
-#: ../../include/nav.php:138 ../../boot.php:1049
+#: ../../include/nav.php:138 ../../boot.php:1052
 msgid "Profiles"
 msgstr ""
 
-#: ../../include/nav.php:138 ../../boot.php:1049
+#: ../../include/nav.php:138 ../../boot.php:1052
 msgid "Manage/edit profiles"
 msgstr ""
 
@@ -6606,11 +6731,11 @@ msgstr ""
 msgid "Please visit %s to approve or reject the suggestion."
 msgstr ""
 
-#: ../../include/items.php:2698
+#: ../../include/items.php:2714
 msgid "A new person is sharing with you at "
 msgstr ""
 
-#: ../../include/items.php:2698
+#: ../../include/items.php:2714
 msgid "You have a new follower at "
 msgstr ""
 
@@ -6894,80 +7019,96 @@ msgstr ""
 msgid "permissions"
 msgstr ""
 
-#: ../../boot.php:502
+#: ../../boot.php:505
 msgid "Delete this item?"
 msgstr ""
 
-#: ../../boot.php:505
+#: ../../boot.php:508
 msgid "show fewer"
 msgstr ""
 
-#: ../../boot.php:678
+#: ../../boot.php:681
 #, php-format
 msgid "Update %s failed. See error logs."
 msgstr ""
 
-#: ../../boot.php:680
+#: ../../boot.php:683
 #, php-format
 msgid "Update Error at %s"
 msgstr ""
 
-#: ../../boot.php:780
+#: ../../boot.php:783
 msgid "Create a New Account"
 msgstr ""
 
-#: ../../boot.php:804
+#: ../../boot.php:807
 msgid "Nickname or Email address: "
 msgstr ""
 
-#: ../../boot.php:805
+#: ../../boot.php:808
 msgid "Password: "
 msgstr ""
 
-#: ../../boot.php:808
+#: ../../boot.php:811
 msgid "Or login using OpenID: "
 msgstr ""
 
-#: ../../boot.php:814
+#: ../../boot.php:817
 msgid "Forgot your password?"
 msgstr ""
 
-#: ../../boot.php:981
+#: ../../boot.php:984
 msgid "Edit profile"
 msgstr ""
 
-#: ../../boot.php:1041
+#: ../../boot.php:1044
 msgid "Message"
 msgstr ""
 
-#: ../../boot.php:1157 ../../boot.php:1233
+#: ../../boot.php:1160 ../../boot.php:1236
 msgid "g A l F d"
 msgstr ""
 
-#: ../../boot.php:1158 ../../boot.php:1234
+#: ../../boot.php:1161 ../../boot.php:1237
 msgid "F d"
 msgstr ""
 
-#: ../../boot.php:1203 ../../boot.php:1274
+#: ../../boot.php:1206 ../../boot.php:1277
 msgid "[today]"
 msgstr ""
 
-#: ../../boot.php:1215
+#: ../../boot.php:1218
 msgid "Birthday Reminders"
 msgstr ""
 
-#: ../../boot.php:1216
+#: ../../boot.php:1219
 msgid "Birthdays this week:"
 msgstr ""
 
-#: ../../boot.php:1267
+#: ../../boot.php:1270
 msgid "[No description]"
 msgstr ""
 
-#: ../../boot.php:1285
+#: ../../boot.php:1288
 msgid "Event Reminders"
 msgstr ""
 
-#: ../../boot.php:1286
+#: ../../boot.php:1289
 msgid "Events this week:"
 msgstr ""
+
+#: ../../boot.php:1475
+msgid "Status Messages and Posts"
+msgstr ""
+
+#: ../../boot.php:1481
+msgid "Profile Details"
+msgstr ""
+
+#: ../../boot.php:1496
+msgid "Events and Calendar"
+msgstr ""
+
+#: ../../boot.php:1502
+msgid "Only You Can See This"
+msgstr ""
index 59c669a873fb61b46d0c627ddb10401abbbf75ec..cec3c6f6455ba2cbc24588ca684d4224e72523c3 100644 (file)
@@ -102,6 +102,7 @@ $unkmail
 <strong>$activity_options</strong>
 
 {{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}}
 
 
index 66f93c32d825a0ef08ea82909e0541c2379a21f9..982e2bd264ed1efd3896c4a8e52e89ccb028e771 100755 (executable)
@@ -4,9 +4,20 @@
 {{ endif }}
 </div>
 
+<div id="close_profiles">
+{{ if $comunity_profilest_title }}
+<h3>$comunity_profilest_title<a id="close_comunity_profiles_icon" onClick="close_profiles()" class="icon close_box" title="close"></a></h3>
+<div id='lastusers-wrapper' class='items-wrapper'>
+{{ for $comunity_profiles_items as $i }}
+       $i
+{{ endfor }}
+</div>
+{{ endif }}
+</div>
+
 <div id="close_helpers">
 {{ if $lastusers_title }}
-<h3 style="margin-top:0px;">$helpers.title.1<a id="close_helpers_icon"  onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
+<h3>$helpers.title.1<a id="close_helpers_icon"  onClick="close_helpers()" class="icon close_box" title="close"></a></h3>
 <a href="http://kakste.com/profile/newhere" title="@NewHere" style="margin-left: 10px; " target="blank">NewHere</a><br>
 <a href="https://helpers.pyxis.uberspace.de/profile/helpers" style="margin-left: 10px; " title="Friendica Support" target="blank">Friendica Support</a><br>
 <a href="https://letstalk.pyxis.uberspace.de/profile/letstalk" style="margin-left: 10px; " title="Let's talk" target="blank">Let's talk</a><br>
@@ -42,6 +53,9 @@ $nv.search
 {{ endif }}
 </div>
 
+<div id="twitter">
+</div>
+
 <div id="close_lastusers">
 {{ if $lastusers_title }}
 <h3>$lastusers_title<a id="close_lastusers_icon" onClick="close_lastusers()" class="icon close_box" title="close"></a></h3>
index d5c91c9a4e0e0d8fb6b3c00ff0da13cd43190465..b63015c4c3b750a3acc46be63483ff69b1bfa12a 100644 (file)
@@ -1182,7 +1182,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1191,14 +1191,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 21273c19cc36afd8a303e33276d4d90ed26b71c1..d6a2619ea9d8340fcb7ea01ae4199f6ee9c5ec9a 100644 (file)
@@ -1178,7 +1178,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1187,14 +1187,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 1b8e384811da342c20355174a86d0132c2df70d4..d4b79d55a6bf76a8dd9260a7110373bfd26408ba 100644 (file)
@@ -1158,7 +1158,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1167,14 +1167,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index e21432d4e05706416782ff238fc1031517883d5a..77d1fe34d518ea2f0afbbb36e9efacdfbac4e1d9 100644 (file)
@@ -1154,7 +1154,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1163,14 +1163,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-aerith/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-aerith/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index eb1cee255ad1b465d52bea489a62f69151eb61b0..a34c00db520070a474c6feab31acfb47f09eaf11 100644 (file)
@@ -1148,7 +1148,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1157,14 +1157,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 3a972b83274ccde6c5b8f4a3834f900c9c522eb1..c018967f2234da970fb63f78a3a1da21d8715732 100644 (file)
@@ -1144,7 +1144,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1153,14 +1153,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index ad6b7ca21453150edc1909501e6fb3c8911c6756..5cf50b1434fd8cbbd06c0013a62685ddc9bcbb3a 100644 (file)
@@ -1128,7 +1128,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1137,14 +1137,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 50fb980d6fc4c73b84ee8ef30dd10fdb6a405168..e6d0fb61b6c0a53dcd6ffc5218db61f667f1afe2 100644 (file)
@@ -1124,7 +1124,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1133,14 +1133,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-blue/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-blue/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 38e7e7ae05ac758c1cc90ec130dbc03bfb6a1f3c..c202146d5f0125b7d4f6fb1b3f8f98fbc052f40f 100644 (file)
@@ -1158,7 +1158,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1167,14 +1167,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 3cd6117e13e25bb1912a4d008f3714c92e9a1323..9b11c0b17f858dbd5cb247f07d1ac05035ddfd4c 100644 (file)
@@ -1155,7 +1155,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1164,14 +1164,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index e7a0fe623a70e90bb2dbf6eb56ecd46d5e692dec..779bc5c22524dc9be61041ef8e149cbe0c163061 100644 (file)
@@ -1134,7 +1134,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1143,14 +1143,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 051aa9a35138db054caf83859f60c85ce5442710..a955d3b9d418457c93606d22b5508cb8543217c8 100644 (file)
@@ -1130,7 +1130,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1139,14 +1139,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-green/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-green/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 4bbab02c7b33c520091eedfa8873a40d317e55ed..0e6eaf2c7858f40e271500a13edcc1b3b15fa293 100644 (file)
@@ -1158,7 +1158,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1167,14 +1167,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 3acb608fc7449f51bb731190c4eb21e09c9da0ab..09e5b6f0940a09ad6487c8ca4ee1af5165171af0 100644 (file)
@@ -1155,7 +1155,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1164,14 +1164,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index f4b1939ec2491a9b50509f5e524d836859391950..15c12cf9ce7c4d4bb412e86edb754fd4a96f4a92 100644 (file)
@@ -1134,7 +1134,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1143,14 +1143,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 610fffe3afb8c4ade4cc1849e2c5c6d2f2ea78e9..959880c250b1243f0d1fbc42e8fc6098603b0b8c 100644 (file)
@@ -1130,7 +1130,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1139,14 +1139,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-pink/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-pink/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 8c3b67cb6c02b7b929d1d07a1b6b72b7117db473..b40594c777645217aba6b92e62125186da240b16 100644 (file)
@@ -1182,7 +1182,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1191,14 +1191,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 84fd5da48477109b79eb139affa6d42ad21d3162..faf34560c7b4fd91e8cef7523d357d2405ed4150 100644 (file)
@@ -1178,7 +1178,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1187,14 +1187,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index acb6075f7497f6db214bdf44da207d3300cee2d1..78e37770c29ee5b653eaf9cf2eed583d53e6c88f 100644 (file)
@@ -1141,7 +1141,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1150,14 +1150,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index a29eb3eb0d848d709f1e7ee43b00e8aab907b0e5..8534c4822b2ce05d6042cb83e84185c2e5b0d592 100644 (file)
@@ -1137,7 +1137,7 @@ list-style-type: disc;
 }
 /* widget: search */
 span.sbox_l  {
-       background: white url('../diabook/icons/srch_l.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_l.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-left: 10px;
@@ -1146,14 +1146,14 @@ span.sbox_l  {
 }
 
 span.sbox_r  {
-       background: white url('../diabook/icons/srch_r.gif') no-repeat top left;
+       background: white url('../diabook-red/icons/srch_r.gif') no-repeat top left;
        float: left;
        width: 19px; height: 19px;
        margin-top: 5px;
 }
 
 span.sbox input {
-       background: white url('../diabook/icons/srch_bg.gif') repeat-x top left;
+       background: white url('../diabook-red/icons/srch_bg.gif') repeat-x top left;
        float: left;
        margin-top: 5px;
        border: 0;
index 57ca16d020c4b65395dfe8c669021104c2edd00c..12447afc9819d383dc649f7adbc58abbca61decb 100644 (file)
@@ -24,3 +24,8 @@ $(function() {
 _______________________________________________________________________________________________
 
 http://javascriptly.com/examples/jquery-grab-bag/autogrow-textarea.html
+
+_______________________________________________________________________________________________
+
+http://jquery.malsup.com/
+http://jquery.malsup.com/twitter/
diff --git a/view/theme/diabook/js/jquery.twitter.search.js b/view/theme/diabook/js/jquery.twitter.search.js
new file mode 100644 (file)
index 0000000..18d2e09
--- /dev/null
@@ -0,0 +1,289 @@
+/*!
+ * jQuery Twitter Search Plugin
+ * Examples and documentation at: http://jquery.malsup.com/twitter/
+ * Copyright (c) 2010 M. Alsup
+ * Version: 1.04 (15-SEP-2011)
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ * Requires: jQuery v1.3.2 or later
+ */
+;(function($) {
+       $.fn.twitterSearch = function(options) {
+               if (typeof options == 'string')
+                       options = { term: options };
+               return this.each(function() {
+                       var grabFlag = false,
+                               grabbing = false,
+                               $frame = $(this), text, $text, $title, $bird, $cont, height, paused = false,
+                               opts = $.extend(true, {}, $.fn.twitterSearch.defaults, options || {}, $.metadata ? $frame.metadata() : {});
+                               
+                       opts.formatter = opts.formatter || $.fn.twitterSearch.formatter; 
+                       opts.filter = opts.filter || $.fn.twitterSearch.filter;
+                       
+                       if (!opts.applyStyles) { // throw away all style defs
+                               for (var css in opts.css)
+                                       opts.css[css] = {};
+                       }
+                       
+                       if (opts.title === null) // user can set to '' to suppress title
+                               opts.title = opts.term;
+
+                       opts.title = opts.title || '';
+                       text = opts.titleLink ? ('<a href="'+ opts.titleLink +'">'+ opts.title + '</a>') : ('<span>' + opts.title +'<a id="close_friends_icon" onClick="close_twitter()"  class="icon close_box" title="close"></a>'+ '</span>');
+                       $text = $(text);
+                       if (opts.titleLink)
+                               $text.css(opts.css['titleLink']);
+                       $title = $('<div class="twitterSearchTitle"></div>').append($text).appendTo($frame).css(opts.css['title']);
+                       if (opts.bird) {
+                               $bird = $('<img class="twitterSearchBird" src="'+opts.birdSrc+'" />').appendTo($title).css(opts.css['bird']);
+                               if (opts.birdLink)
+                                       $bird.wrap('<a href="'+ opts.birdLink +'"></a>');
+                       }
+                       $cont = $('<div class="twitterSearchContainter"></div>').appendTo($frame).css(opts.css['container']);
+                       cont = $cont[0];
+                       if (opts.colorExterior)
+                               $title.css('background-color',opts.colorExterior);
+                       if (opts.colorInterior)
+                               $cont.css('background-color',opts.colorInterior);
+                       
+                       $frame.css(opts.css['frame']);
+                       if (opts.colorExterior)
+                               $frame.css('border-color',opts.colorExterior);
+                       
+                       height = $frame.innerHeight() - $title.outerHeight();
+                       $cont.height(height);
+                       
+                       if (opts.pause)
+                               $cont.hover(function(){paused = true;},function(){paused = false;});
+                       
+                       $('<div class="twitterSearchLoading">Loading tweets..</div>').css(opts.css['loading']).appendTo($cont);
+                       
+                       grabTweets();
+                       
+                       function grabTweets() {
+                               var url = opts.url + opts.term;
+                               grabFlag = false;
+                               grabbing = true;
+                               // grab twitter stream
+                               $.getJSONP({
+                                       url: url,
+                                       timeout: 30000,
+                                       error: function(xhr, status, e) {
+                                               failWhale(e);
+                                       },
+                                       complete: function() {
+                                               grabbing = false;
+                                               if (opts.refreshSeconds)
+                                                       setTimeout(regrab, opts.refreshSeconds * 1000);
+                                       },
+                                       success: function(json) {
+                                               if (json.error) {
+                                                       failWhale(json.error);
+                                                       return;
+                                               }
+                                               $cont.fadeOut('fast',function() {
+                                                       $cont.empty();
+                                                       
+                                                       // iterate twitter results 
+                                                       $.each(json.results, function(i) {
+                                                               if (!opts.filter.call(opts, this))
+                                                                       return; // skip this tweet
+                                                               var $img, $text, w,
+                                                                       tweet = opts.formatter(this, opts), 
+                                                                       $tweet = $(tweet);
+                                                               $tweet.css(opts.css['tweet']);
+                                                               $img = $tweet.find('.twitterSearchProfileImg').css(opts.css['img']);
+                                                               $tweet.find('.twitterSearchUser').css(opts.css['user']);
+                                                               $tweet.find('.twitterSearchTime').css(opts.css['time']);
+                                                               $tweet.find('a').css(opts.css['a']);
+                                                               $tweet.appendTo($cont);
+                                                               $text = $tweet.find('.twitterSearchText').css(opts.css['text']);
+                                                               if (opts.avatar) {
+                                                                       w = $img.outerWidth() + parseInt($tweet.css('paddingLeft'));
+                                                                       $text.css('paddingLeft', w);
+                                                               }
+                                                       });
+                                                       
+                                                       $cont.fadeIn('fast');
+                                               
+                                                       if (json.results.length < 2) {
+                                                               if (opts.refreshSeconds)
+                                                                       setTimeout(grabTweets, opts.refreshSeconds * 1000);
+                                                               return;
+                                                       }
+
+                                                       // stage first animation
+                                                       setTimeout(go, opts.timeout);
+                                               });
+                                       }
+                               });
+                       };
+                       
+                       function regrab() {
+                               grabFlag = true;
+                       }
+                       
+                       function failWhale(msg) {
+                               var $fail = $('<div class="twitterSearchFail">' + msg + '</div>').css(opts.css['fail']);
+                               $cont.empty().append($fail);
+                       };
+                       
+                       function go() {
+                               if (paused || grabbing) {
+                                       setTimeout(go, 500);
+                                       return;
+                               }
+                               var h, $el = $cont.children(':first'), el = $el[0];
+                               $el.animate(opts.animOut, opts.animOutSpeed, function() {
+                                       h = $el.outerHeight();
+                                       $el.animate({ marginTop: -h }, opts.animInSpeed, function() {
+                                               $el.css({ marginTop: 0, opacity: 1 });
+                                               /*@cc_on
+                                               try { el.style.removeAttribute('filter'); } // ie cleartype fix
+                                               catch(smother) {}
+                                               @*/
+                                               $el.css(opts.css['tweet']).show().appendTo($cont);
+                                               
+                                               setTimeout(grabFlag ? grabTweets : go, opts.timeout);                                   
+                                       });
+                               });
+                       }
+               });
+       };
+       
+       $.fn.twitterSearch.filter = function(tweet) {
+               return true;
+       };
+
+       $.fn.twitterSearch.formatter = function(json, opts) {
+               var str, pretty,
+                       text = json.text;
+               if (opts.anchors) {
+                       text = json.text.replace(/(http:\/\/\S+)/g, '<a href="$1">$1</a>');
+                       text = text.replace(/\@(\w+)/g, '<a href="http://twitter.com/$1">@$1</a>');
+               }
+               str = '<div class="twitterSearchTweet">';
+               if (opts.avatar)
+                       str += '<img class="twitterSearchProfileImg" src="' + json.profile_image_url + '" />';
+               str += '<div><span class="twitterSearchUser"><a href="http://www.twitter.com/'+ json.from_user+'/status/'+ json.id_str +'">' 
+                 + json.from_user + '</a></span>';
+               pretty = prettyDate(json.created_at);
+               if (opts.time && pretty)
+                       str += ' <span class="twitterSearchTime">('+ pretty +')</span>'
+                str += '<div class="twitterSearchText">' + text + '</div></div></div>';
+                return str;
+       };
+       
+       $.fn.twitterSearch.defaults = {
+               url: 'http://search.twitter.com/search.json?callback=?&q=',
+               anchors: true,                          // true or false (enable embedded links in tweets)
+               animOutSpeed: 500,                      // speed of animation for top tweet when removed
+               animInSpeed: 500,                       // speed of scroll animation for moving tweets up
+               animOut: { opacity: 0 },        // animation of top tweet when it is removed
+               applyStyles: true,                      // true or false (apply default css styling or not)
+               avatar: true,                           // true or false (show or hide twitter profile images)
+               bird: true,                                     // true or false (show or hide twitter bird image)
+               birdLink: false,                        // url that twitter bird image should like to
+               birdSrc: 'http://cloud.github.com/downloads/malsup/twitter/tweet.gif', // twitter bird image
+               colorExterior: null,        // css override of frame border-color and title background-color
+               colorInterior: null,        // css override of container background-color
+               filter: null,               // callback fn to filter tweets:  fn(tweetJson) { /* return false to skip tweet */ }
+               formatter: null,                        // callback fn to build tweet markup
+               pause: false,                           // true or false (pause on hover)
+               refreshSeconds: 0,          // number of seconds to wait before polling for newer tweets
+               term: '',                                       // twitter search term
+               time: true,                                     // true or false (show or hide the time that the tweet was sent)
+               timeout: 4000,                          // delay betweet tweet scroll
+               title: null,                            // title text to display when frame option is true (default = 'term' text)
+               titleLink: null,                        // url for title link
+               css: {
+                       // default styling
+                       a:     { textDecoration: 'none', color: '#3B5998' },
+                       bird:  { width: '50px', height: '20px', position: 'absolute', left: '-30px', top: '-20px', border: 'none' },
+                       container: { overflow: 'hidden', backgroundColor: '', height: '360px' },
+                       fail:  { background: '#6cc5c3 url(http://cloud.github.com/downloads/malsup/twitter/failwhale.png) no-repeat 50% 50%', height: '100%', padding: '10px' },
+                       frame: { border: '0px solid #C2CFF1', borderRadius: '0px', '-moz-border-radius': '0px', '-webkit-border-radius': '0px' },
+                       tweet: { padding: '5px 10px', clear: 'left' },
+                       img:   { 'float': 'left', margin: '5px', width: '48px', height: '48px' },
+                       loading: { padding: '20px', textAlign: 'center', color: '#888' },
+                       text:  {},
+                       time:  { fontSize: 'smaller', color: '#888' },
+                       title: { 'border-bottom': '1px solid #D2D2D2', 'padding-top': '5px', 'padding-bottom': '0px', 'padding-left': '9px', 'margin-bottom': '0px', 'margin-top': '30px' , 'display': 'block', 'font-size': '1.17em', 'font-weight': 'bold'},
+                       titleLink: { textDecoration: 'none', color: '#3B5998' },
+                       user:  { fontWeight: 'bold' }
+               }
+       };
+
+    // fn to handle jsonp with timeouts and errors
+    // hat tip to Ricardo Tomasi for the timeout logic
+    $.getJSONP = function(s) {
+        s.dataType = 'jsonp';
+        $.ajax(s);
+
+        // figure out what the callback fn is
+        var $script = $(document.getElementsByTagName('head')[0].firstChild);
+        var url = $script.attr('src') || '';
+        var cb = (url.match(/callback=(\w+)/)||[])[1];
+        if (!cb)
+            return; // bail
+        var t = 0, cbFn = window[cb];
+
+        $script[0].onerror = function(e) {
+            $script.remove();
+            handleError(s, {}, "error", e);
+            clearTimeout(t);
+        };
+
+        if (!s.timeout)
+            return;
+
+        window[cb] = function(json) {
+            clearTimeout(t);
+            cbFn(json);
+            cbFn = null;
+        };
+
+        t = setTimeout(function() {
+            $script.remove();
+            handleError(s, {}, "timeout");
+            if (cbFn)
+                window[cb] = function(){};
+        }, s.timeout);
+        
+        function handleError(s, xhr, msg, e) {
+                       s.error && s.error.call(s.context, xhr, msg, e);
+                       s.global && $.event.trigger("ajaxError", [xhr, s, e || msg]);
+                       s.complete && s.complete.call(s.context, xhr, e || msg);
+        }
+    };
+       
+       /*
+        * JavaScript Pretty Date
+        * Copyright (c) 2008 John Resig (jquery.com)
+        * Licensed under the MIT license.
+        */
+       // converts ISO time to casual time
+       function prettyDate(time){
+               var date = new Date((time || "").replace(/-/g,"/").replace(/TZ/g," ")),
+                       diff = (((new Date()).getTime() - date.getTime()) / 1000),
+                       day_diff = Math.floor(diff / 86400);
+                               
+               if ( isNaN(day_diff) || day_diff < 0 || day_diff >= 31 )
+                       return;
+               var v = day_diff == 0 && (
+                               diff < 60 && "just now" ||
+                               diff < 120 && "1 minute ago" ||
+                               diff < 3600 && Math.floor( diff / 60 ) + " minutes ago" ||
+                               diff < 7200 && "1 hour ago" ||
+                               diff < 86400 && Math.floor( diff / 3600 ) + " hours ago") ||
+                       day_diff == 1 && "Yesterday" ||
+                       day_diff < 7 && day_diff + " days ago" ||
+                       day_diff < 31 && Math.ceil( day_diff / 7 ) + " weeks ago";
+               if (!v)
+                       window.console && console.log(time);
+               return v ? v : '';
+       }
+
+})(jQuery);
index a8ed1e9a2544dd3aba1800fc0604fcf7a03b887d..2ba8d1b074ca26d5f729e12793cf93de8aca7b50 100644 (file)
@@ -1252,6 +1252,7 @@ right_aside .icon {width: 10px; height: 10px;}
 transition: all 0.2s ease-in-out;
                }
 
+
 /* wall item */
 .tread-wrapper {
   border-bottom: 1px solid #D2D2D2;
index 9a1ac0f68a85b8db582453feea533806291f9efe..945c3f36b4d1bd81ea257c8e2e9e02b544f158b6 100755 (executable)
@@ -3,13 +3,13 @@
 /*
  * Name: Diabook
  * Description: Diabook: report bugs and request here: http://pad.toktan.org/p/diabook or contact me : thomas_bierey@friendica.eu
- * Version: (Version: 1.023)
+ * Version: (Version: 1.024)
  * Author: 
  */
 
 
 //print diabook-version for debugging
-$diabook_version = "Diabook (Version: 1.023)";
+$diabook_version = "Diabook (Version: 1.024)";
 $a->page['htmlhead'] .= sprintf('<script "%s" ></script>', $diabook_version);
 
 //change css on network and profilepages
@@ -44,6 +44,26 @@ function diabook_community_info(){
        $a = get_app();
 
 
+       // comunity_profiles
+       $aside['$comunity_profilest_title'] = t('Community Profiles');
+       $aside['$comunity_profiles_items'] = array();
+       $r = q("select gcontact.* from gcontact left join glink on glink.gcid = gcontact.id 
+                         where glink.cid = 0 and glink.uid = 0 order by rand() limit 9");
+       $tpl = file_get_contents( dirname(__file__).'/ch_directory_item.tpl');
+       if(count($r)) {
+               $photo = 'photo';
+               foreach($r as $rr) {
+                       $profile_link = $a->get_baseurl() . '/profile/' . ((strlen($rr['nickname'])) ? $rr['nickname'] : $rr['profile_uid']);
+                       $entry = replace_macros($tpl,array(
+                               '$id' => $rr['id'],
+                               '$profile-link' => zrl($rr['url']),
+                               '$photo' => $rr[$photo],
+                               '$alt-text' => $rr['name'],
+                       ));
+                       $aside['$comunity_profiles_items'][] = $entry;
+               }
+       }
+
        // last 12 users
        $aside['$lastusers_title'] = t('Last users');
        $aside['$lastusers_items'] = array();
@@ -175,9 +195,8 @@ function diabook_community_info(){
    
    //Community Page
    if(local_user()) {
-   $page = '<div id="page-sidebar-right_aside" class="widget">
-                       <div class="title tool">
-                       <h3>'.t("Community Pages").'<a id="close_pages_icon"  onClick="close_pages()" class="icon close_box" title="close"></a></h3></div>
+   $page = '<div id="page-sidebar-right_aside" >
+                       <h3 style="margin-top:0px;">'.t("Community Pages").'<a id="close_pages_icon"  onClick="close_pages()" class="icon close_box" title="close"></a></h3></div>
                        <div id="sidebar-page-list"><ul>';
 
        $pagelist = array();
@@ -266,9 +285,9 @@ if ($a->argv[0] === "network" && local_user()){
 
        }
        
-       $ccCookie = $_COOKIE['close_pages'] + $_COOKIE['close_helpers'] + $_COOKIE['close_services'] + $_COOKIE['close_friends'] + $_COOKIE['close_lastusers'] + $_COOKIE['close_lastphotos'] + $_COOKIE['close_lastlikes'];
+       $ccCookie = $_COOKIE['close_pages'] + $_COOKIE['close_profiles'] + $_COOKIE['close_helpers'] + $_COOKIE['close_services'] + $_COOKIE['close_friends'] + $_COOKIE['close_twitter'] + $_COOKIE['close_lastusers'] + $_COOKIE['close_lastphotos'] + $_COOKIE['close_lastlikes'];
        
-       if($ccCookie != "7") {
+       if($ccCookie != "9") {
        // COMMUNITY
        diabook_community_info();
 
@@ -282,7 +301,7 @@ if ($a->argv[0] === "network" && local_user()){
 
 //right_aside at profile pages
 if ($a->argv[0].$a->argv[1] === "profile".$a->user['nickname']){
-       if($ccCookie != "7") {
+       if($ccCookie != "9") {
        // COMMUNITY
        diabook_community_info();
        
@@ -312,6 +331,10 @@ $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></scrip
 $autogrowJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.autogrow.textarea.js";
 $a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $autogrowJS);
 
+//load jquery.twitter.search.js
+$twitterJS = $a->get_baseurl($ssl_state)."/view/theme/diabook/js/jquery.twitter.search.js";
+$a->page['htmlhead'] .= sprintf('<script language="JavaScript" src="%s" ></script>', $twitterJS);
+
 //js scripts
 
 //check if community_home-plugin is activated and change css
@@ -343,8 +366,17 @@ $a->page['htmlhead'] .= '
 $a->page['htmlhead'] .= '
 
 <script>
+
  $(function() {
        $("a.lightbox").fancybox(); // Select all links with lightbox class
+       $("#twitter").twitterSearch({               
+       term: "friendica",
+       animInSpeed: 250,
+       bird:    false, 
+       avatar:  false, 
+       colorExterior: "#fff",
+       title: "Last Tweets",
+       timeout: 10000          });
  });
    
 $(window).load(function() {
@@ -429,8 +461,10 @@ $a->page['htmlhead'] .= '
 function restore_boxes(){
        $.cookie("close_pages","2", { expires: 365, path: "/" });
        $.cookie("close_helpers","2", { expires: 365, path: "/" });
+       $.cookie("close_profiles","2", { expires: 365, path: "/" });
        $.cookie("close_services","2", { expires: 365, path: "/" });
        $.cookie("close_friends","2", { expires: 365, path: "/" });
+       $.cookie("close_twitter","2", { expires: 365, path: "/" });
        $.cookie("close_lastusers","2", { expires: 365, path: "/" });
        $.cookie("close_lastphotos","2", { expires: 365, path: "/" });
        $.cookie("close_lastlikes","2", { expires: 365, path: "/" });
@@ -450,7 +484,7 @@ $a->page['htmlhead'] .= '
 </script>';
 
 
-       if($ccCookie != "7") {
+       if($ccCookie != "9") {
 $a->page['htmlhead'] .= '
 <script>
 $("right_aside").ready(function(){
@@ -459,6 +493,11 @@ $("right_aside").ready(function(){
                {
                document.getElementById( "close_pages" ).style.display = "none";
                        };
+                       
+       if($.cookie("close_profiles") == "1") 
+               {
+               document.getElementById( "close_profiles" ).style.display = "none";
+                       };
        
        if($.cookie("close_helpers") == "1") 
                {
@@ -475,6 +514,10 @@ $("right_aside").ready(function(){
                document.getElementById( "close_friends" ).style.display = "none";
                        };
        
+       if($.cookie("close_twitter") == "1") 
+               {
+               document.getElementById( "twitter" ).style.display = "none";
+                       };      
                        
        if($.cookie("close_lastusers") == "1") 
                {
@@ -498,6 +541,11 @@ function close_pages(){
  $.cookie("close_pages","1", { expires: 365, path: "/" });
  };
  
+function close_profiles(){
+ document.getElementById( "close_profiles" ).style.display = "none";
+ $.cookie("close_profiles","1", { expires: 365, path: "/" });
+ };
 function close_helpers(){
  document.getElementById( "close_helpers" ).style.display = "none";
   $.cookie("close_helpers","1", { expires: 365, path: "/" });
@@ -512,7 +560,11 @@ function close_friends(){
  document.getElementById( "close_friends" ).style.display = "none";
  $.cookie("close_friends","1", { expires: 365, path: "/" });
  };
-
+function close_twitter(){
+ document.getElementById( "twitter" ).style.display = "none";
+ $.cookie("close_twitter","1", { expires: 365, path: "/" });
+ };
  
 function close_lastusers(){
  document.getElementById( "close_lastusers" ).style.display = "none";