]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #96 from fabrixxm/api
authorFriendika <info@friendika.com>
Thu, 5 May 2011 11:29:45 +0000 (04:29 -0700)
committerFriendika <info@friendika.com>
Thu, 5 May 2011 11:29:45 +0000 (04:29 -0700)
Status.net Api

75 files changed:
addon/facebook/facebook.php
boot.php
database.sql
doc/Home.md
doc/Profiles.md
doc/Settings.md
htconfig.php
images/icons.png [new file with mode: 0644]
include/Photo.php
include/acl_selectors.php
include/auth.php
include/bbcode.php
include/conversation.php
include/group.php
include/items.php
include/main.js
include/notifier.php
include/poller.php
index.php
mod/contacts.php
mod/dfrn_poll.php
mod/dfrn_request.php
mod/directory.php
mod/display.php
mod/editpost.php
mod/item.php
mod/like.php
mod/network.php
mod/openid.php
mod/photos.php
mod/profile.php
mod/profile_photo.php
mod/search.php
mod/settings.php
mod/viewcontacts.php
update.php
util/messages.po
util/strings.php
view/contact_edit.tpl
view/contact_template.tpl
view/de/htconfig.tpl
view/en/htconfig.tpl
view/es/htconfig.tpl
view/fr/htconfig.tpl
view/group_drop.tpl
view/it/htconfig.tpl
view/jot-header.tpl
view/jot.tpl
view/like.tpl
view/like_noshare.tpl
view/mail_list.tpl
view/photo_view.tpl [new file with mode: 0644]
view/prv_message.tpl
view/register.tpl
view/sv/htconfig.tpl
view/theme/dispy/connect.png [new file with mode: 0644]
view/theme/dispy/icons.png [new file with mode: 0644]
view/theme/dispy/jot-header.tpl [new file with mode: 0644]
view/theme/dispy/jot.tpl [new file with mode: 0644]
view/theme/dispy/mail_head.tpl [new file with mode: 0644]
view/theme/dispy/menu-user-pin.jpg [new file with mode: 0644]
view/theme/dispy/nav.tpl [new file with mode: 0644]
view/theme/dispy/next.png [new file with mode: 0644]
view/theme/dispy/notifications.png [new file with mode: 0644]
view/theme/dispy/photo_view.tpl [new file with mode: 0644]
view/theme/dispy/prev.png [new file with mode: 0644]
view/theme/dispy/profile_tabs.tpl [new file with mode: 0644]
view/theme/dispy/search_item.tpl [new file with mode: 0644]
view/theme/dispy/settings.tpl [new file with mode: 0644]
view/theme/dispy/style.css [new file with mode: 0644]
view/theme/dispy/wall_item.tpl [new file with mode: 0644]
view/theme/dispy/wallwall_item.tpl [new file with mode: 0644]
view/theme/duepuntozero/style.css
view/theme/loozah/style.css
view/wall_item_drop.tpl

index f3f313efe66a5408b558c0692b21338f7a2854f3..8fe6f3717513f1a6dd8537c100606bd8ad55d14b 100644 (file)
@@ -24,8 +24,8 @@
  *      Replace with the settings Facebook gives you.
  * 2. Enable the facebook plugin by including it in .htconfig.php - e.g. 
  *     $a->config['system']['addon'] = 'plugin1,plugin2,facebook';
- * 3. Visit your site url + '/facebook' (e.g. http://example.com/facebook)
- *    and click 'Install Facebook posting'.
+ * 3. Visit the Facebook Settings from "Settings->Plugin Settings" page.
+ *    and click 'Install Facebook Connector'.
  * 4. This will ask you to login to Facebook and grant permission to the 
  *    plugin to do its stuff. Allow it to do so. 
  * 5. You're done. To turn it off visit your site's /facebook page again and
@@ -88,6 +88,10 @@ function facebook_init(&$a) {
                                $token = substr($token,0,strpos($token,'&'));
                        set_pconfig($uid,'facebook','access_token',$token);
                        set_pconfig($uid,'facebook','post','1');
+                       fb_get_self($uid);
+                       fb_get_friends($uid);
+                       fb_consume_all($uid);
+
                }
 
                // todo: is this a browser session or a server session? where do we go? 
@@ -95,6 +99,113 @@ function facebook_init(&$a) {
 
 }
 
+
+function fb_get_self($uid) {
+       $access_token = get_pconfig($uid,'facebook','access_token');
+       if(! $access_token)
+               return;
+       $s = fetch_url('https://graph.facebook.com/me/?access_token=' . $access_token);
+       if($s) {
+               $j = json_decode($s);
+               set_pconfig($uid,'facebook','self_id',(string) $j->id);
+       }
+}
+
+
+
+function fb_get_friends($uid) {
+
+       $access_token = get_pconfig($uid,'facebook','access_token');
+       if(! $access_token)
+               return;
+       $s = fetch_url('https://graph.facebook.com/me/friends?access_token=' . $access_token);
+       if($s) {
+               logger('facebook: fb_get_friends: ' . $s);
+               $j = json_decode($s);
+               logger('facebook: fb_get_friends: json: ' . print_r($j,true), LOGGER_DATA);
+               foreach($j->data as $person) {
+                       $s = fetch_url('https://graph.facebook.com/' . $person->id . '?access_token=' . $access_token);
+                       if($s) {
+                               $jp = json_decode($s);
+                               logger('fb_get_friends: info: ' . print_r($jp,true), LOGGER_DATA);
+
+                               // always use numeric link for consistency
+
+                               $jp->link = 'http://facebook.com/profile.php?id=' . $person->id;
+
+                               // check if we already have a contact
+
+                               $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `url` = '%s' LIMIT 1",
+                                       intval($uid),
+                                       dbesc($jp->link)
+                               );                      
+
+                               if(count($r)) {
+                                       continue;
+                               }
+                               else {
+
+                                       // create contact record 
+                                       $r = q("INSERT INTO `contact` ( `uid`, `created`, `url`, `addr`, `alias`, `notify`, `poll`, 
+                                               `name`, `nick`, `photo`, `network`, `rel`, `priority`,
+                                               `writable`, `blocked`, `readonly`, `pending` )
+                                               VALUES ( %d, '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', %d, %d, %d, 0, 0, 0 ) ",
+                                               intval($uid),
+                                               dbesc(datetime_convert()),
+                                               dbesc($jp->link),
+                                               dbesc(''),
+                                               dbesc(''),
+                                               dbesc($jp->id),
+                                               dbesc('facebook ' . $jp->id),
+                                               dbesc($jp->name),
+                                               dbesc(($jp->nickname) ? $jp->nickname : strtolower($jp->first_name)),
+                                               dbesc('https://graph.facebook.com/' . $jp->id . '/picture'),
+                                               dbesc(NETWORK_FACEBOOK),
+                                               intval(REL_BUD),
+                                               intval(1),
+                                               intval(1)
+                                       );
+                               }
+
+                               $r = q("SELECT * FROM `contact` WHERE `url` = '%s' AND `uid` = %d LIMIT 1",
+                                       dbesc($jp->link),
+                                       intval($uid)
+                               );
+
+                               if(! count($r)) {
+                                       continue;
+                               }
+
+                               $contact = $r[0];
+                               $contact_id  = $r[0]['id'];
+
+                               require_once("Photo.php");
+
+                               $photos = import_profile_photo($r[0]['photo'],$uid,$contact_id);
+
+                               $r = q("UPDATE `contact` SET `photo` = '%s', 
+                                       `thumb` = '%s',
+                                       `micro` = '%s', 
+                                       `name-date` = '%s', 
+                                       `uri-date` = '%s', 
+                                       `avatar-date` = '%s'
+                                       WHERE `id` = %d LIMIT 1
+                               ",
+                                       dbesc($photos[0]),
+                                       dbesc($photos[1]),
+                                       dbesc($photos[2]),
+                                       dbesc(datetime_convert()),
+                                       dbesc(datetime_convert()),
+                                       dbesc(datetime_convert()),
+                                       intval($contact_id)
+                               );                      
+
+                       }
+               }
+       }
+}
+
+
 function facebook_post(&$a) {
 
        if(local_user()){
@@ -116,6 +227,12 @@ function facebook_content(&$a) {
                notice( t('Facebook disabled') . EOL);
        }
 
+       if($a->argc > 1 && $a->argv[1] === 'friends') {
+               fb_get_friends(local_user());
+               notice( t('Updating contacts') . EOL);
+       }
+
+
        $fb_installed = get_pconfig(local_user(),'facebook','post');
 
        $appid = get_config('facebook','appid');
@@ -134,14 +251,14 @@ function facebook_content(&$a) {
                $o .= '<div id="facebook-enable-wrapper">';
 
                $o .= '<a href="https://www.facebook.com/dialog/oauth?client_id=' . $appid . '&redirect_uri=' 
-                       . $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook post connector') . '</a>';
+                       . $a->get_baseurl() . '/facebook/' . $a->user['nickname'] . '&scope=publish_stream,read_stream,offline_access">' . t('Install Facebook connector for this account.') . '</a>';
                $o .= '</div>';
        }
 
        if($fb_installed) {
                $o .= '<div id="facebook-disable-wrapper">';
 
-               $o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook post connector') . '</a></div>';
+               $o .= '<a href="' . $a->get_baseurl() . '/facebook/remove' . '">' . t('Remove Facebook connector') . '</a></div>';
        
                $o .= '<div id="facebook-post-default-form">';
                $o .= '<form action="facebook" method="post" >';
@@ -158,6 +275,7 @@ function facebook_install() {
        register_hook('post_local_end',  'addon/facebook/facebook.php', 'facebook_post_hook');
        register_hook('jot_networks',    'addon/facebook/facebook.php', 'facebook_jot_nets');
        register_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+       register_hook('cron',            'addon/facebook/facebook.php', 'facebook_cron');
 }
 
 
@@ -165,9 +283,46 @@ function facebook_uninstall() {
        unregister_hook('post_local_end',  'addon/facebook/facebook.php', 'facebook_post_hook');
        unregister_hook('jot_networks',    'addon/facebook/facebook.php', 'facebook_jot_nets');
        unregister_hook('plugin_settings', 'addon/facebook/facebook.php', 'facebook_plugin_settings');
+       unregister_hook('cron',            'addon/facebook/facebook.php', 'facebook_cron');
 }
 
 
+function facebook_cron($a,$b) {
+
+       $last = get_config('facebook','last_poll');
+       
+       $poll_interval = intval(get_config('facebook','poll_interval'));
+       if(! $poll_interval)
+               $poll_interval = 3600;
+
+       if($last) {
+               $next = $last + $poll_interval;
+               if($next > time()) 
+                       return;
+       }
+
+       logger('facebook_cron');
+
+       set_config('facebook','last_poll', time());
+
+       $r = q("SELECT * FROM `pconfig` WHERE `cat` = 'facebook' AND `k` = 'post' AND `v` = '1' ");
+       if(count($r)) {
+               foreach($r as $rr) {
+                       // check for new friends once a day
+                       $last_friend_check = get_pconfig($rr['uid'],'facebook','friend_check');
+                       if($last_friend_check) 
+                               $next_friend_check = $last_friend_check + 86400;
+                       if($next_friend_check <= time()) {
+                               fb_get_friends($rr['uid']);
+                               set_pconfig($rr['uid'],'facebook','friend_check',time());
+                       }
+                       fb_consume_all($rr['uid']);
+               }
+       }       
+}
+
+
+
 function facebook_plugin_settings(&$a,&$b) {
 
        $b .= '<div class="settings-block">';
@@ -197,9 +352,75 @@ function facebook_post_hook(&$a,&$b) {
         * Post to Facebook stream
         */
 
+       require_once('include/group.php');
+
        logger('Facebook post');
 
-       if((local_user()) && (local_user() == $b['uid']) && (! $b['private']) && (! $b['parent'])) {
+       $reply = false;
+       $likes = false;
+
+       if((local_user()) && (local_user() == $b['uid'])) {
+
+               if($b['parent']) {
+                       $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                               intval($b['parent']),
+                               intval(local_user())
+                       );
+                       if(count($r) && substr($r[0]['uri'],0,4) === 'fb::')
+                               $reply = substr($r[0]['uri'],4);
+                       else
+                               return;
+                       logger('facebook reply id=' . $reply);
+               }
+
+               if($b['private'] && $reply == false) {
+                       $allow_people = expand_acl($b['allow_cid']);
+                       $allow_groups = expand_groups(expand_acl($b['allow_gid']));
+                       $deny_people  = expand_acl($b['deny_cid']);
+                       $deny_groups  = expand_groups(expand_acl($b['deny_gid']));
+
+                       $recipients = array_unique(array_merge($allow_people,$allow_groups));
+                       $deny = array_unique(array_merge($deny_people,$deny_groups));
+
+                       $allow_str = dbesc(implode(', ',$recipients));
+                       if($allow_str) {
+                               $r = q("SELECT `notify` FROM `contact` WHERE `id` IN ( $allow_str ) AND `network` = 'face'"); 
+                               $allow_arr = array();
+                               if(count($r)) 
+                                       foreach($r as $rr)
+                                               $allow_arr[] = $rr['notify'];
+                       }
+
+                       $deny_str = dbesc(implode(', ',$deny));
+                       if($deny_str) {
+                               $r = q("SELECT `notify` FROM `contact` WHERE `id` IN ( $deny_str ) AND `network` = 'face'"); 
+                               $deny_arr = array();
+                               if(count($r)) 
+                                       foreach($r as $rr)
+                                               $deny_arr[] = $rr['notify'];
+                       }
+
+                       if(count($deny_arr) && (! count($allow_arr))) {
+
+                               // One or more FB folks were denied access but nobody on FB was specifically allowed access.
+                               // This might cause the post to be open to public on Facebook, but only to selected members
+                               // on another network. Since this could potentially leak a post to somebody who was denied, 
+                               // we will skip posting it to Facebook with a slightly vague but relevant message that will 
+                               // hopefully lead somebody to this code comment for a better explanation of what went wrong.
+
+                               notice( t('Post to Facebook cancelled because of multi-network access permission conflict.') . EOL);
+                               return;
+                       }
+
+
+                       // if it's a private message but no Facebook members are allowed or denied, skip Facebook post
+
+                       if((! count($allow_arr)) && (! count($deny_arr)))
+                               return;
+               }
+
+               if($b['verb'] == ACTIVITY_LIKE)
+                       $likes = true;                          
 
 
                $appid  = get_config('facebook', 'appid'  );
@@ -214,7 +435,12 @@ function facebook_post_hook(&$a,&$b) {
                        $fb_token  = get_pconfig(local_user(),'facebook','access_token');
 
                        logger('facebook: $fb_post: ' . $fb_post . ' $fb_enable: ' . $fb_enable . ' $fb_token: ' . $fb_token,LOGGER_DEBUG); 
-                       if($fb_post && $fb_token && $fb_enable) {
+
+                       // post to facebook if it's a public post and we've ticked the 'post to Facebook' box, 
+                       // or it's a private message with facebook participants
+                       // or it's a reply or likes action to an existing facebook post                 
+
+                       if($fb_post && $fb_token && ($fb_enable || $b['private'] || $reply)) {
                                logger('facebook: able to post');
                                require_once('library/facebook.php');
                                require_once('include/bbcode.php');     
@@ -225,9 +451,21 @@ function facebook_post_hook(&$a,&$b) {
 
                                // make links readable before we strip the code
 
+                               if(preg_match("/\[url=(.+?)\](.+?)\[\/url\]/is",$msg,$matches)) {
+
+                                       $link = $matches[1];
+                                       if(substr($matches[2],0,5) != '[img]' )
+                                               $linkname = $matches[2];
+                               }
+
                                $msg = preg_replace("/\[url=(.+?)\](.+?)\[\/url\]/is",'$2 $1',$msg);
 
-                               $msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1',$msg);
+                               if(preg_match("/\[img\](.+?)\[\/img\]/is",$msg,$matches))
+                                       $image = $matches[1];
+
+                               $msg = preg_replace("/\[img\](.+?)\[\/img\]/is", t('Image: ') . '$1', $msg);
+
+
 
                                $msg = trim(strip_tags(bbcode($msg)));
                                $msg = html_entity_decode($msg,ENT_QUOTES,'UTF-8');
@@ -253,9 +491,57 @@ function facebook_post_hook(&$a,&$b) {
 
                                logger('Facebook post: msg=' . $msg, LOGGER_DATA);
 
-                               $postvars = array('access_token' => $fb_token, 'message' => $msg);
+                               if($likes) { 
+                                       $postvars = array('access_token' => $fb_token);
+                               }
+                               else {
+                                       $postvars = array(
+                                               'access_token' => $fb_token, 
+                                               'message' => $msg
+                                       );
+                                       if(isset($image))
+                                               $postvars['picture'] = $image;
+                                       if(isset($link))
+                                               $postvars['link'] = $link;
+                                       if(isset($linkname))
+                                               $postvars['name'] = $linkname;
+                               }
+
+                               if(($b['private']) && (! $b['parent'])) {
+                                       $postvars['privacy'] = '{"value": "CUSTOM", "friends": "SOME_FRIENDS"';
+                                       if(count($allow_arr))
+                                               $postvars['privacy'] .= ',"allow": "' . implode(',',$allow_arr) . '"';
+                                       if(count($deny_arr))
+                                               $postvars['privacy'] .= ',"deny": "' . implode(',',$deny_arr) . '"';
+                                       $postvars['privacy'] .= '}';
+
+                               }
+
+                               if($reply) {
+                                       $url = 'https://graph.facebook.com/' . $reply . '/' . (($likes) ? 'likes' : 'comments');
+                               }
+                               else { 
+                                       $url = 'https://graph.facebook.com/me/feed';
+                                       if($b['plink'])
+                                               $postvars['actions'] = '{"name": "' . t('View on Friendika') . '", "link": "' .  $b['plink'] . '"}';
+                               }
+
+                               logger('facebook: post to ' . $url);
+                               logger('facebook: postvars: ' . print_r($postvars,true));
+
+                               // "test_mode" prevents anything from actually being posted.
+                               // Otherwise, let's do it. 
+
+                               if(! get_config('facebook','test_mode'))
+                                       $x = post_url($url, $postvars);
 
-                               $x = post_url('https://graph.facebook.com/me/feed', $postvars);
+                               $retj = json_decode($x);
+                               if($retj->id) {
+                                       q("UPDATE `item` SET `extid` = '%s' WHERE `id` = %d LIMIT 1",
+                                               dbesc('fb::' . $retj->id),
+                                               intval($b['id'])
+                                       );
+                               }
                                
                                logger('Facebook post returns: ' . $x, LOGGER_DEBUG);
 
@@ -264,3 +550,228 @@ function facebook_post_hook(&$a,&$b) {
        }
 }
 
+
+function fb_consume_all($uid) {
+
+       require_once('include/items.php');
+
+       $access_token = get_pconfig($uid,'facebook','access_token');
+       if(! $access_token)
+               return;
+       $s = fetch_url('https://graph.facebook.com/me/feed?access_token=' . $access_token);
+       if($s) {
+               $j = json_decode($s);
+               logger('fb_consume_stream: wall: ' . print_r($j,true), LOGGER_DATA);
+               fb_consume_stream($uid,$j,true);
+       }
+       $s = fetch_url('https://graph.facebook.com/me/home?access_token=' . $access_token);
+       if($s) {
+               $j = json_decode($s);
+               logger('fb_consume_stream: feed: ' . print_r($j,true), LOGGER_DATA);
+               fb_consume_stream($uid,$j,false);
+       }
+
+}
+
+function fb_consume_stream($uid,$j,$wall = false) {
+       $a = get_app();
+
+       $self = q("SELECT * FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
+               intval($uid)
+       );
+
+       $user = q("SELECT `nickname` FROM `user` WHERE `uid` = %d LIMIT 1",
+               intval($uid)
+       );
+       if(count($user))
+               $my_local_url = $a->get_baseurl() . '/profile/' . $user[0]['nickname'];
+
+
+       $self_id = get_pconfig($uid,'facebook','self_id');
+       if(! count($j->data) || (! strlen($self_id)))
+               return;
+
+       foreach($j->data as $entry) {
+               logger('fb_consume: entry: ' . print_r($entry,true), LOGGER_DATA);
+               $datarray = array();
+               $we_posted = false;
+               $app = $entry->application;
+               if($app->id == get_config('facebook','appid') && $wall)
+                       $we_posted = true;
+
+               $r = q("SELECT * FROM `item` WHERE ( `uri` = '%s' OR `extid` = '%s') AND `uid` = %d LIMIT 1",
+                               dbesc('fb::' . $entry->id),
+                               dbesc('fb::' . $entry->id),
+                               intval($uid)
+               );
+               if(count($r)) {
+                       $post_exists = true;
+                       $orig_post = $r[0];
+                       $top_item = $r[0]['id'];
+               }
+               else {
+                       $post_exists = false;
+                       $orig_post = null;
+               }
+
+               if(! $orig_post) {
+                       $datarray['gravity'] = 0;
+                       $datarray['uid'] = $uid;
+                       $datarray['wall'] = (($wall) ? 1 : 0);
+                       $datarray['uri'] = $datarray['parent-uri'] = 'fb::' . $entry->id;
+                       $from = $entry->from;
+                       if($from->id == $self_id)
+                               $datarray['contact-id'] = $self[0]['id'];
+                       else {
+                               $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
+                                       dbesc($from->id),
+                                       intval($uid)
+                               );
+                               if(count($r))
+                                       $datarray['contact-id'] = $r[0]['id'];
+                       }
+
+                       // don't store post if we don't have a contact
+
+                       if(! x($datarray,'contact-id'))
+                               continue; 
+
+                       $datarray['verb'] = ACTIVITY_POST;                                              
+                       if($wall) {
+                               $datarray['owner-name'] = $self[0]['name'];
+                               $datarray['owner-link'] = $self[0]['url'];
+                               $datarray['owner-avatar'] = $self[0]['thumb'];
+                       }
+                       $datarray['author-name'] = $from->name;
+                       $datarray['author-link'] = 'http://facebook.com/profile.php?id=' . $from->id;
+                       $datarray['author-avatar'] = 'https://graph.facebook.com/' . $from->id . '/picture';
+                       $datarray['plink'] = $datarray['author-link'] . '&v=wall&story_fbid=' . substr($entry->id,strpos($entry->id,'_') + 1);
+
+                       $datarray['body'] = $entry->message;
+                       if($entry->picture)
+                               $datarray['body'] .= "\n\n" . '[img]' . $entry->picture . '[/img]';
+                       if($entry->link)
+                               $datarray['body'] .= "\n" . linkify($entry->link);
+                       if($entry->name)
+                               $datarray['body'] .= "\n" . $entry->name;
+                       if($entry->caption)
+                               $datarray['body'] .= "\n" . $entry->caption;
+                       if($entry->description)
+                               $datarray['body'] .= "\n" . $entry->description;
+                       $datarray['created'] = datetime_convert('UTC','UTC',$entry->created_time);
+                       $datarray['edited'] = datetime_convert('UTC','UTC',$entry->updated_time);
+                       if($entry->privacy && $entry->privacy->value !== 'EVERYONE')
+                               $datarray['private'] = 1;                       
+                       $top_item = item_store($datarray);
+                       $r = q("SELECT * FROM `item` WHERE `id` = %d AND `uid` = %d LIMIT 1",
+                               intval($top_item),
+                               intval($uid)
+                       );                      
+                       if(count($r))
+                               $orig_post = $r[0];
+
+               }
+               $likers = $entry->likes->data;
+               $comments = $entry->comments->data;
+
+               if(is_array($likers)) {
+                       foreach($likers as $likes) {
+
+                               $r = q("SELECT * FROM `item` WHERE `parent-uri` = '%s' AND `uid` = %d AND `verb` = '%s' AND `author-link` = '%s'
+                                       LIMIT 1",
+                                       dbesc('fb::' . $entry->id),
+                                       intval($uid),
+                                       dbesc(ACTIVITY_LIKE),
+                                       dbesc('http://facebook.com/profile.php?id=' . $likes->id)
+                               );
+                               if(count($r))
+                                       continue;
+                                       
+                               $likedata = array();
+                               $likedata['parent'] = $top_item;
+                               $likedata['verb'] = ACTIVITY_LIKE;
+
+
+                               $likedata['gravity'] = 3;
+                               $likedata['uid'] = $uid;
+                               $likedata['wall'] = (($wall) ? 1 : 0);
+                               $likedata['uri'] = item_new_uri($a->get_baseurl(), $uid);
+                               $likedata['parent-uri'] = 'fb::' . $entry->id;
+                               if($likes->id == $self_id)
+                                       $likedata['contact-id'] = $self[0]['id'];
+                               else {
+                                       $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
+                                               dbesc($likes->id),
+                                               intval($uid)
+                                       );
+                                       if(count($r))
+                                               $likedata['contact-id'] = $r[0]['id'];
+                               }
+                               if(! x($likedata,'contact-id'))
+                                       $likedata['contact-id'] = $orig_post['contact-id'];
+
+                               $likedata['verb'] = ACTIVITY_LIKE;                                              
+                               $likedata['author-name'] = $likes->name;
+                               $likedata['author-link'] = 'http://facebook.com/profile.php?id=' . $likes->id;
+                               $likedata['author-avatar'] = 'https://graph.facebook.com/' . $likes->id . '/picture';
+                               
+                               $author  = '[url=' . $likedata['author-link'] . ']' . $likedata['author-name'] . '[/url]';
+                               $objauthor =  '[url=' . $orig_post['author-link'] . ']' . $orig_post['author-name'] . '[/url]';
+                               $post_type = t('status');
+                       $plink = '[url=' . $orig_post['plink'] . ']' . $post_type . '[/url]';
+                               $likedata['object-type'] = ACTIVITY_OBJ_NOTE;
+
+                               $likedata['body'] = sprintf( t('%1$s likes %2$s\'s %3$s'), $author, $objauthor, $plink);
+                               $likedata['object'] = '<object><type>' . ACTIVITY_OBJ_NOTE . '</type><local>1</local>' . 
+                                       '<id>' . $orig_post['uri'] . '</id><link>' . xmlify('<link rel="alternate" type="text/html" href="' . $orig_post['plink'] . '">') . '</link><title>' . $orig_post['title'] . '</title><content>' . $orig_post['body'] . '</content></object>';  
+
+                               $item = item_store($likedata);                  
+                       }
+               }
+               if(is_array($comments)) {
+                       foreach($comments as $cmnt) {
+
+                               $r = q("SELECT * FROM `item` WHERE `uid` = %d AND ( `uri` = '%s' OR `extid` = '%s' ) LIMIT 1",
+                                       intval($uid),
+                                       dbesc('fb::' . $cmnt->id),
+                                       dbesc('fb::' . $cmnt->id)
+                               );
+                               if(count($r))
+                                       continue;
+
+                               $cmntdata = array();
+                               $cmntdata['parent'] = $top_item;
+                               $cmntdata['verb'] = ACTIVITY_POST;
+                               $cmntdata['gravity'] = 6;
+                               $cmntdata['uid'] = $uid;
+                               $cmntdata['wall'] = (($wall) ? 1 : 0);
+                               $cmntdata['uri'] = 'fb::' . $cmnt->id;
+                               $cmntdata['parent-uri'] = 'fb::' . $entry->id;
+                               if($cmnt->from->id == $self_id) {
+                                       $cmntdata['contact-id'] = $self[0]['id'];
+                               }
+                               elseif(is_array($orig_post) && (x($orig_post,'contact-id')))
+                                       $cmntdata['contact-id'] = $orig_post['contact-id'];
+                               else {
+                                       $r = q("SELECT * FROM `contact` WHERE `notify` = '%s' AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
+                                               dbesc($cmnt->from->id),
+                                               intval($uid)
+                                       );
+                                       if(count($r))
+                                               $cmntdata['contact-id'] = $r[0]['id'];
+                               }
+                               if(! x($cmntdata,'contact-id'))
+                                       return;
+                               $cmntdata['created'] = datetime_convert('UTC','UTC',$cmnt->created_time);
+                               $cmntdata['edited']  = datetime_convert('UTC','UTC',$cmnt->created_time);
+                               $cmntdata['verb'] = ACTIVITY_POST;                                              
+                               $cmntdata['author-name'] = $cmnt->from->name;
+                               $cmntdata['author-link'] = 'http://facebook.com/profile.php?id=' . $cmnt->from->id;
+                               $cmntdata['author-avatar'] = 'https://graph.facebook.com/' . $cmnt->from->id . '/picture';
+                               $cmntdata['body'] = $cmnt->message;
+                               $item = item_store($cmntdata);                  
+                       }
+               }
+       }
+}
+
index ab738e21306ec971a03633cecdf4052b33b9da4c..cddba996c22a3a02245797f06b6962ebe3d1293a 100644 (file)
--- a/boot.php
+++ b/boot.php
@@ -1,15 +1,26 @@
 <?php
 
 set_time_limit(0);
+ini_set('pcre.backtrack_limit', 250000);
 
-define ( 'FRIENDIKA_VERSION',      '2.1.955' );
+define ( 'FRIENDIKA_VERSION',      '2.1.969' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.21'    );
-define ( 'DB_UPDATE_VERSION',      1053      );
+define ( 'DB_UPDATE_VERSION',      1054      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
 define ( 'DOWN_ARROW',             '&#x21e9;'       );
-         
+
+/**
+ *
+ * Image storage quality. Lower numbers save space at cost of image detail.
+ * For ease of upgrade, please do not change here. Change jpeg quality with 
+ * set_config('system','jpeg_quality',n) in .htconfig.php
+ * where n is netween 1 and 100, and with very poor results below about 50 
+ *
+ */
+
+define ( 'JPEG_QUALITY',            100              );         
 
 /**
  * SSL redirection policies
@@ -845,8 +856,10 @@ function login($register = false) {
                $tpl = load_view_file("view/login.tpl");
 
        }
-       
-       $o = replace_macros($tpl,array(
+
+       $o = '<script type="text/javascript"> $(document).ready(function() { $("#login-name").focus();} );</script>';   
+
+       $o .= replace_macros($tpl,array(
                '$logout'        => t('Logout'),
                '$register_html' => $register_html, 
                '$classname'     => $classname,
@@ -1218,6 +1231,7 @@ function set_config($family,$key,$value) {
        global $a;
 
        if(get_config($family,$key,true) === false) {
+               $a->config[$family][$key] = $value;
                $ret = q("INSERT INTO `config` ( `cat`, `k`, `v` ) VALUES ( '%s', '%s', '%s' ) ",
                        dbesc($family),
                        dbesc($key),
@@ -1312,6 +1326,7 @@ function set_pconfig($uid,$family,$key,$value) {
        global $a;
 
        if(get_pconfig($uid,$family,$key,true) === false) {
+               $a->config[$uid][$family][$key] = $value;
                $ret = q("INSERT INTO `pconfig` ( `uid`, `cat`, `k`, `v` ) VALUES ( %d, '%s', '%s', '%s' ) ",
                        intval($uid),
                        dbesc($family),
@@ -2125,7 +2140,7 @@ function smilies($s) {
        $a = get_app();
 
        return str_replace(
-       array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ';-)', ':-(', ':(', ':-P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
+       array( '&lt;3', '&lt;/3', '&lt;\\3', ':-)', ';-)', ':-(', ':(', ':-P', ':P', ':-"', ':-x', ':-X', ':-D', '8-|', '8-O'),
        array(
                '<img src="' . $a->get_baseurl() . '/images/smiley-heart.gif" alt="<3" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-brokenheart.gif" alt="</3" />',
@@ -2135,6 +2150,7 @@ function smilies($s) {
                '<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":-(" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-frown.gif" alt=":(" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-tongue-out.gif" alt=":-P" />',
+               '<img src="' . $a->get_baseurl() . '/images/smiley-tongue-out.gif" alt=":P" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-\"" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-x" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-kiss.gif" alt=":-X" />',
@@ -2513,7 +2529,7 @@ function current_theme(){
        $a = get_app();
        
        $system_theme = ((isset($a->config['system']['theme'])) ? $a->config['system']['theme'] : '');
-       $theme_name = ((x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
+       $theme_name = ((is_array($_SESSION) && x($_SESSION,'theme')) ? $_SESSION['theme'] : $system_theme);
        
        if($theme_name && file_exists('view/theme/' . $theme_name . '/style.css'))
                return($theme_name);
@@ -2628,7 +2644,7 @@ if(! function_exists('get_plink')) {
 function get_plink($item) {
        $a = get_app(); 
        $plink = (((x($item,'plink')) && (! $item['private'])) ? '<div class="wall-item-links-wrapper"><a href="' 
-                       . $item['plink'] . '" title="' . t('link to source') . '" target="external-link" ><img src="' . $a->get_baseurl() . '/images/remote-link.gif" alt="' . t('link to source') . '" /></a></div>' : '');
+                       . $item['plink'] . '" title="' . t('link to source') . '" target="external-link" class="icon remote-link"></a></div>' : '');
        return $plink;
 }}
 
index 84bb42ff3993abee15edd18853b387fe3d623a79..c15a9ad9cb3aadca222e702aca8320f2182da366 100644 (file)
@@ -166,6 +166,7 @@ CREATE TABLE IF NOT EXISTS `item` (
   `gravity` tinyint(1) NOT NULL DEFAULT '0',
   `parent` int(10) unsigned NOT NULL DEFAULT '0',
   `parent-uri` char(255) NOT NULL,
+  `extid` char(255) NOT NULL,
   `thr-parent` char(255) NOT NULL,
   `created` datetime NOT NULL,
   `edited` datetime NOT NULL,
@@ -208,6 +209,7 @@ CREATE TABLE IF NOT EXISTS `item` (
   KEY `wall` (`wall`),
   KEY `parent` (`parent`),
   KEY `parent-uri` (`parent-uri`),
+  KEY `extid` (`extid`),
   KEY `created` (`created`),
   KEY `edited` (`edited`),
   KEY `visible` (`visible`),
index 4dccfde84646f2b9d2d2c5f2b49595660e562a64..cf4946f95b5fcb6cc074bd4d21d842d4f015e1f0 100644 (file)
@@ -5,10 +5,10 @@ Friendika Documentation and Resources
 **Contents**
 
 * [Account Basics](help/Account-Basics)
-* [Making Friends](help/Making-Friends)
-* [Tags and Mentions](help/Tags-and-Mentions)
 * [Profiles](help/Profiles)
+* [Making Friends](help/Making-Friends)
 * [Groups and Privacy](help/Groups-and-Privacy)
+* [Tags and Mentions](help/Tags-and-Mentions)
 * [Pages](help/Pages)
 * [Remove Account](help/Remove-Account)
 * [Bugs and Issues](help/Bugs-and-Issues)
@@ -28,3 +28,7 @@ Friendika Documentation and Resources
 * [Forums](http://groups.google.com/group/friendika)
 * [Developer Forums](http://groups.google.com/group/friendika-dev)
 
+**About**
+
+* [Site/Version Info](friendika)
+
index 9c81071c50e43ff89b821e9184e6179064c1e617..631a4331bf2d0d0a0624896dffc71dc7c53fc1f0 100644 (file)
@@ -5,7 +5,7 @@ Profiles
 
 Friendika has unlimited profiles. You may use different profiles to show different "sides of yourself" to different audiences.
 
-You always have a profile known as your "default" profile (though you may change the name). This profile is always available to the general public and cannot be hidden. You may (and probably should) restrict the information you make available on your public profile.
+You always have a profile known as your "default" or "public" profile. This profile is always available to the general public and cannot be hidden (there may be rare exceptions on privately run or disconnected sites). You may, and probably should restrict the information you make available on your public profile.
 
 That said, if you want other friends to be able to find you, it helps to have the following information in your public profile...
 
@@ -15,7 +15,7 @@ That said, if you want other friends to be able to find you, it helps to have th
 
 Without this basic information, you could get very lonely here. Most people (even your best friends) will not try and connect with somebody that has a fake name or doesn't contain a real photo.  
 
-In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Public Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. Without this, people with similar interests may never know it unless you stumble across them through another friend. 
+In addition, if you'd like to meet people that share some general interests with you, please take a moment and add some "Public Keywords" to your profile. Such as "music, linux, photography" or whatever. You can add as many keywords as you like. 
 
 
 Your default or public profile is also shown to contacts on other networks, since they do not have the ability to view your private profiles. Only members of the Friendika network can see alternate/private profiles.
@@ -41,7 +41,7 @@ Although you may have multiple profiles, you only have one profile photo. This i
 
 **Keywords and Directory Search**
 
-On the site Directory page, you may search for people with published profiles who are on this site. The search is typically for your nickname or part of your full name. However this search will also match against other profile fields - such as gender, location, "about", work, and education. You may also include "Keywords" in your default profile - which may be used to search for common interests with other members. These keywords are *not* displayed on your profile page. You could use these keywords to locate people who share membership in secret societies, or that share a love of fishing (for example) - without making this information visible on your public profile. In Friendika version 2.2 and later there are two sets of Keywords - public and private. Public keywords are used in the friend suggestion tool and although they aren't readily visible, they may be seen by viewing the HTML of your profile page. Private keywords are hidden and secret. (Keywords from earlier releases are all converted into private keywords during upgrade). 
+On the site Directory page, you may search for people with published profiles who are on this site. The search is typically for your nickname or part of your full name. However this search will also match against other profile fields - such as gender, location, "about", work, and education. You may also include "Keywords" in your default profile - which may be used to search for common interests with other members. You have two sets of keywords available - public and private. Private keywords are *not* visible to anybody. You could use these keywords to locate people who share membership in secret societies, or that share a love of fishing (for example) - without making this information visible on your public profile. Public keywords are used in the friend suggestion tool and although they aren't readily visible, they may be seen by viewing the HTML of your profile page.
 
 Directory searches are also able to use "boolean" logic so that you can search for "+lesbian +Florida" and find those who's sexual preference (or keywords) contain the world "lesbian" and that live in Florida. See the section on "Topical Tags" on the [[Tags-and-Mentions]] page for more information on performing boolean searches. 
 
index 215eeb327092f5acbd807ccabee3c34acb4d540b..8abb8a567e4ab15196b9a958afb4fcdce9b5be9e 100644 (file)
@@ -75,6 +75,17 @@ Config:
 $a->config['system']['allowed_email'] = "sitea.com, *siteb.com";
 ```
 
+**Block Public**
+
+Corporate/Edu enhancement
+
+Set to true to block public access to all otherwise public personal pages on this site unless you are currently logged in. This blocks the viewing of profiles, friends, photos, the site directory and search pages to unauthorised persons. A side effect is that entries from this site will not appear in the global directory. We recommend specifically disabling that also (setting is described elsewhere on this page). Note: this is specifically for sites that desire to be "standalone" and do not wish to be connected to any other Friendika sites. Unauthorised persons will also not be able to request friendship with site members. Default is false. Available in version 2.2 or greater.
+Config:
+```
+$a->config['system']['block_public'] = true;
+```
+
 
 **Force Publish**
 
index fb62245d210eed7b83d707b1f604c1241b1c2bcf..0f9222ac59d00845e24f6528a9c4f24a21d8bf50 100644 (file)
@@ -38,7 +38,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
diff --git a/images/icons.png b/images/icons.png
new file mode 100644 (file)
index 0000000..734c75f
Binary files /dev/null and b/images/icons.png differ
index 9934b9a3928f2e79ec060ede1cb55f547718f4ef..707b0de5d8c3af8ea8ac849690ad644fb8180fae 100644 (file)
@@ -162,12 +162,20 @@ class Photo {
        }
 
        public function saveImage($path) {
-               imagejpeg($this->image,$path,100);
+               $quality = get_config('system','jpeg_quality');
+               if((! $quality) || ($quality > 100))
+                       $quality = JPEG_QUALITY;
+               imagejpeg($this->image,$path,$quality);
        }
 
        public function imageString() {
                ob_start();
-               imagejpeg($this->image,NULL,100);
+
+               $quality = get_config('system','jpeg_quality');
+               if((! $quality) || ($quality > 100))
+                       $quality = JPEG_QUALITY;
+
+               imagejpeg($this->image,NULL,$quality);
                $s = ob_get_contents();
                ob_end_clean();
                return $s;
index d1303d933e0955c490ce53ffeff28e2b1685c167..f2763a56969ed75eacfd67090ba40a6efd2efbab 100644 (file)
@@ -48,7 +48,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
        $o = '';
 
-       // When used for private messages, we limit correspondence to mutual friends and the selector
+       // When used for private messages, we limit correspondence to mutual DFRN/Friendika friends and the selector
        // to one recipient. By default our selector allows multiple selects amongst all contacts.
 
        $sql_extra = '';
@@ -61,7 +61,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
                $sql_extra .= " AND `network` IN ( 'dfrn' ) ";
        }
        elseif($privatenet) {   
-               $sql_extra .= " AND `network` IN ( 'dfrn', 'mail' ) ";
+               $sql_extra .= " AND `network` IN ( 'dfrn', 'mail', 'face' ) ";
        }
 
        if($privmail)
@@ -83,8 +83,6 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
        call_hooks($a->module . '_pre_' . $selname, $arr);
 
-
-
        if(count($r)) {
                foreach($r as $rr) {
                        if((is_array($preselected)) && in_array($rr['id'], $preselected))
index e8cee3918c5d368938c2fd94d2014e1f63dec4b4..4c7e85d86731bc004f3e18c0cf7aaed849970b37 100644 (file)
@@ -191,9 +191,17 @@ else {
                $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $record['nickname'];
                $_SESSION['addr'] = $_SERVER['REMOTE_ADDR'];
 
-               notice( t("Welcome back ") . $record['username'] . EOL);
                $a->user = $record;
 
+               if($a->user['login_date'] === '0000-00-00 00:00:00') {
+                       $_SESSION['return_url'] = 'profile_photo/new';
+                       $a->module = 'profile_photo';
+                       notice( t("Welcome ") . $a->user['username'] . EOL);
+                       notice( t('Please upload a profile photo.') . EOL);
+               }
+               else
+                       notice( t("Welcome back ") . $a->user['username'] . EOL);
+
                if(strlen($a->user['timezone'])) {
                        date_default_timezone_set($a->user['timezone']);
                        $a->timezone = $a->user['timezone'];
@@ -214,6 +222,8 @@ else {
                        $a->cid = $r[0]['id'];
                        $_SESSION['cid'] = $a->cid;
                }
+
+
                q("UPDATE `user` SET `login_date` = '%s' WHERE `uid` = %d LIMIT 1",
                        dbesc(datetime_convert()),
                        intval($_SESSION['uid'])
index 6fadbaf7eb4d81536c4a8cecb917c36d45e76eb7..89a14988a26709663a65043c329b6fca63847d00 100644 (file)
@@ -80,7 +80,7 @@ function bbcode($Text,$preserve_nl = false) {
          
        // Images
        // [img]pathtoimage[/img]
-       $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1">', $Text);
+       $Text = preg_replace("/\[img\](.+?)\[\/img\]/", '<img src="$1" alt="' . t('Image/photo') . '" />', $Text);
 
        // html5 video and audio
 
index 1c56fa1bfafc506825665348308900a19d591e6d..7c30c01c2b2d98f8a76c56aa9e4979e5490e5a39 100644 (file)
@@ -225,7 +225,7 @@ function conversation(&$a, $items, $mode, $update) {
 
                $comments = array();
                foreach($items as $item) {
-                       if(intval($item['gravity']) == 6) {
+                       if((intval($item['gravity']) == 6) && ($item['id'] != $item['parent'])) {
                                if(! x($comments,$item['parent']))
                                        $comments[$item['parent']] = 1;
                                else
@@ -294,6 +294,7 @@ function conversation(&$a, $items, $mode, $update) {
                                $comments_seen ++;
 
 
+                       $override_comment_box = ((($page_writeable) && ($item_writeable)) ? true : false);
                        $show_comment_box = ((($page_writeable) && ($item_writeable) && ($comments_seen == $comments[$item['parent']])) ? true : false);
 
                        if(($comments[$item['parent']] > 2) && ($comments_seen <= ($comments[$item['parent']] - 2)) && ($item['gravity'] == 6)) {
@@ -368,7 +369,7 @@ function conversation(&$a, $items, $mode, $update) {
                                        ));
                                }
 
-                               if(($show_comment_box) || (($show_comment_box == false) && ($item['last-child']))) {
+                               if(($show_comment_box) || (($show_comment_box == false) && ($override_comment_box == false) && ($item['last-child']))) {
                                        $comment = replace_macros($cmnt_tpl,array(
                                                '$return_path' => '', 
                                                '$jsreload' => (($mode === 'display') ? $_SESSION['return_url'] : ''),
@@ -686,6 +687,7 @@ function status_editor($a,$x) {
                        '$baseurl' => $a->get_baseurl(),
                        '$geotag' => $geotag,
                        '$nickname' => $x['nickname'],
+                       '$ispublic' => t('Visible to <strong>everybody</strong>'),
                        '$linkurl' => t('Please enter a link URL:'),
                        '$utubeurl' => t('Please enter a YouTube link:'),
                        '$vidurl' => t("Please enter a video\x28.ogg\x29 link/URL:"),
@@ -744,7 +746,7 @@ function status_editor($a,$x) {
                        '$content' => '',
                        '$post_id' => '',
                        '$baseurl' => $a->get_baseurl(),
-                       '$defloc' => $x['default-location'],
+                       '$defloc' => $x['default_location'],
                        '$visitor' => $x['visitor'],
                        '$emailcc' => t('CC: email addresses'),
                        '$jotnets' => $jotnets,
index 5dca08c76bd7357d97a823c72edcc8c83156ec27..8866104fca54a58ad49bfded919bb220e6633158 100644 (file)
@@ -124,7 +124,7 @@ function group_public_members($gid) {
                $r = q("SELECT `contact`.`id` AS `contact-id` FROM `group_member` 
                        LEFT JOIN `contact` ON `contact`.`id` = `group_member`.`contact-id` 
                        WHERE `gid` = %d AND `group_member`.`uid` = %d 
-                       AND `contact`.`network` != 'dfrn' AND `contact`.`network` != 'mail' ",
+                       AND `contact`.`network` != 'dfrn' AND `contact`.`network` != 'mail' AND `contact`.`network` != 'face' ",
                        intval($gid),
                        intval(local_user())
                );              
index 733cd8048410911943cc79d867b3c306e85695ac..3a3085f1b053f4312f899e8ba011a76f313b804f 100644 (file)
@@ -701,6 +701,7 @@ function item_store($arr,$force_parent = false) {
                                $parent_id = 0;
                                $arr['thr-parent'] = $arr['parent-uri'];
                                $arr['parent-uri'] = $arr['uri'];
+                               $arr['gravity'] = 0;
                        }
                        else {
                                logger('item_store: item parent was not found - ignoring item');
@@ -1496,10 +1497,17 @@ function atom_author($tag,$name,$uri,$h,$w,$photo) {
 
 function atom_entry($item,$type,$author,$owner,$comment = false) {
 
+       $a = get_app();
+
        if($item['deleted'])
                return '<at:deleted-entry ref="' . xmlify($item['uri']) . '" when="' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '" />' . "\r\n";
 
-       $a = get_app();
+
+       if($item['allow_cid'] || $item['allow_gid'] || $item['deny_cid'] || $item['deny_gid'])
+               $body = fix_private_photos($item['body'],$owner['uid']);
+       else
+               $body = $item['body'];
+
 
        $o = "\r\n\r\n<entry>\r\n";
 
@@ -1517,8 +1525,8 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        $o .= '<title>' . xmlify($item['title']) . '</title>' . "\r\n";
        $o .= '<published>' . xmlify(datetime_convert('UTC','UTC',$item['created'] . '+00:00',ATOM_TIME)) . '</published>' . "\r\n";
        $o .= '<updated>' . xmlify(datetime_convert('UTC','UTC',$item['edited'] . '+00:00',ATOM_TIME)) . '</updated>' . "\r\n";
-       $o .= '<dfrn:env>' . base64url_encode($item['body'], true) . '</dfrn:env>' . "\r\n";
-       $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($item['body']) : $item['body']) . '</content>' . "\r\n";
+       $o .= '<dfrn:env>' . base64url_encode($body, true) . '</dfrn:env>' . "\r\n";
+       $o .= '<content type="' . $type . '" >' . xmlify(($type === 'html') ? bbcode($body) : $body) . '</content>' . "\r\n";
        $o .= '<link rel="alternate" type="text/html" href="' . xmlify($a->get_baseurl() . '/display/' . $owner['nickname'] . '/' . $item['id']) . '" />' . "\r\n";
        if($comment)
                $o .= '<dfrn:comment-allow>' . intval($item['last-child']) . '</dfrn:comment-allow>' . "\r\n";
@@ -1563,6 +1571,38 @@ function atom_entry($item,$type,$author,$owner,$comment = false) {
        return $o;
 }
 
+function fix_private_photos($s,$uid) {
+       $a = get_app();
+       logger('fix_private_photos');
+
+       if(preg_match("/\[img\](.+?)\[\/img\]/is",$s,$matches)) {
+               $image = $matches[1];
+               logger('fix_private_photos: found photo ' . $image);
+               if(stristr($image ,$a->get_baseurl() . '/photo/')) {
+                       $i = basename($image);
+                       $i = str_replace('.jpg','',$i);
+                       $x = strpos($i,'-');
+                       if($x) {
+                               $res = substr($i,$x+1);
+                               $i = substr($i,0,$x);
+                               $r = q("SELECT * FROM `photo` WHERE `resource-id` = '%s' AND `scale` = %d AND `uid` = %d",
+                                       dbesc($i),
+                                       intval($res),
+                                       intval($uid)
+                               );
+                               if(count($r)) {
+                                       logger('replacing photo');
+                                       $s = str_replace($image, 'data:image/jpg;base64,' . base64_encode($r[0]['data']), $s);
+                               }
+                       }
+                       logger('fix_private_photos: replaced: ' . $s, LOGGER_DATA);
+               }       
+       }
+       return($s);
+}
+
+
+
 function item_getfeedtags($item) {
        $ret = array();
        $matches = false;
index a251d8e3a3976b1a07e473e168bbd7904bc4a9de..c7a3aea4821da620a67886c0346ae094cf3c552b 100644 (file)
                        $.get("ping",function(data) {
                                $(data).find('result').each(function() {
                                        var net = $(this).find('net').text();
-                                       if(net == 0) { net = ''; }
+                                       if(net == 0) { net = ''; $('#net-update').hide() } else { $('#net-update').show() }
                                        $('#net-update').html(net);
                                        var home = $(this).find('home').text();
-                                       if(home == 0) { home = ''; }
+                                       if(home == 0) { home = '';  $('#home-update').hide() } else { $('#home-update').show() }
                                        $('#home-update').html(home);
                                        var mail = $(this).find('mail').text();
-                                       if(mail == 0) { mail = ''; }
+                                       if(mail == 0) { mail = '';  $('#mail-update').hide() } else { $('#mail-update').show() }
                                        $('#mail-update').html(mail);
                                        var intro = $(this).find('intro').text();
                                        var register = $(this).find('register').text();
                                        if(intro == 0) { intro = ''; }
                                        if(register != 0 && intro != '') { intro = intro+'/'+register; }
                                        if(register != 0 && intro == '') { intro = '0/'+register; }
+                                       if (intro == '') { $('#notify-update').hide() } else { $('#notify-update').show() }
                                        $('#notify-update').html(intro);
 
                                });
        }
 
        function imgbright(node) {
-               $(node).attr("src",$(node).attr("src").replace('hide','show'));
-               $(node).css('width',24);
-               $(node).css('height',24);
+               $(node).removeClass("drophide").addClass("drop");
        }
 
        function imgdull(node) {
-               $(node).attr("src",$(node).attr("src").replace('show','hide'));
-               $(node).css('width',16);
-               $(node).css('height',16);
+               $(node).removeClass("drop").addClass("drophide");
        }
 
        // Since our ajax calls are asynchronous, we will give a few 
index 4cc6d7a99a204b565f488c30ca0c768e404a37d5..b009cc8700defafa6ba3ba0074c0f32eabe52b28 100644 (file)
@@ -20,6 +20,8 @@ function notifier_run($argv, $argc){
        require_once('include/items.php');
        require_once('include/bbcode.php');
 
+       load_hooks();
+
        if($argc < 3)
                return;
 
index b5639e03472f759a81ab1b2831328bb537457388..dd2efcb76c4c5d2d29bfb30c762e488584bdfc42 100644 (file)
@@ -26,6 +26,8 @@ function poller_run($argv, $argc){
 
        $a->set_baseurl(get_config('system','url'));
 
+       load_hooks();
+
        logger('poller: start');
        
        // run queue delivery process in the background
@@ -61,10 +63,12 @@ function poller_run($argv, $argc){
 
        $sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
 
+       reload_plugins();
+
        $d = datetime_convert();
+
        call_hooks('cron', $d);
 
-       reload_plugins();
 
        $contacts = q("SELECT `id` FROM `contact` 
                WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
index 074c1c53a4452e2fe63f65319bbfe96c39e900ae..05eef6c6e0bfe0f2e7475b29798ff96866702e6d 100644 (file)
--- a/index.php
+++ b/index.php
@@ -1,5 +1,7 @@
 <?php
+
 error_reporting(E_ERROR | E_WARNING | E_PARSE);
+
 /**
  *
  * Friendika
index a1219f94d93e33d4ea23b55586f66b40405c032e..c22bc3c836031ca23afb667bcea19edbd9de4a9c 100644 (file)
@@ -285,7 +285,7 @@ function contacts_content(&$a) {
                        '$contact_id' => $r[0]['id'],
                        '$block_text' => (($r[0]['blocked']) ? t('Unblock this contact') : t('Block this contact') ),
                        '$ignore_text' => (($r[0]['readonly']) ? t('Unignore this contact') : t('Ignore this contact') ),
-                       '$insecure' => (($r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_MAIL) ? $insecure : ''),
+                       '$insecure' => (($r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_FACEBOOK) ? $insecure : ''),
                        '$info' => $r[0]['info'],
                        '$blocked' => (($r[0]['blocked']) ? '<div id="block-message">' . t('Currently blocked') . '</div>' : ''),
                        '$ignored' => (($r[0]['readonly']) ? '<div id="ignore-message">' . t('Currently ignored') . '</div>' : ''),
index f8c726c1af350239f855f9c30d28fbeabeef69c1..718aa165c6bbefd9a229e40f5e7a2d1c739a1dfd 100644 (file)
@@ -27,6 +27,10 @@ function dfrn_poll_init(&$a) {
        }
 
        if(($dfrn_id === '') && (! x($_POST,'dfrn_id')) && ($a->argc > 1)) {
+               if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+                       killme();
+               }
+
                logger('dfrn_poll: public feed request from ' . $_SERVER['REMOTE_ADDR'] );
                header("Content-type: application/atom+xml");
                $o = get_feed_for($a, '', $a->argv[1],$last_update);
index 4463c713f97fcc0807c9bfaba57ceaeb6ac097ba..1af0dc85ddf6f6b9103b24fa495e9bc5a1f19c5a 100644 (file)
 if(! function_exists('dfrn_request_init')) {
 function dfrn_request_init(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               return;
+       }
+
        if($a->argc > 1)
                $which = $a->argv[1];
 
@@ -583,6 +587,12 @@ function dfrn_request_content(&$a) {
                 * Normal web request. Display our user's introduction form.
                 */
  
+               if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+                       notice( t('Public access denied.') . EOL);
+                       return;
+               }
+
+
                /**
                 * Try to auto-fill the profile address
                 */
index a02a4a4a572e8a688df4f8654766129f78a073e0..95ddbda21a162ae3d4bb646466efd5624798ab2c 100644 (file)
@@ -13,6 +13,12 @@ function directory_post(&$a) {
 
 
 function directory_content(&$a) {
+
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
        $o = '';
        $o .= '<script> $(document).ready(function() { $(\'#nav-directory-link\').addClass(\'nav-selected\'); });</script>';
        if(x($_SESSION,'theme'))
index c8496160f5ed7fe026284152bdf71308318b9791..fdb93e480cc3676f8487dfa899edda6ad9d72d8f 100644 (file)
@@ -3,6 +3,11 @@
 
 function display_content(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
        require_once("include/bbcode.php");
        require_once('include/security.php');
        require_once('include/conversation.php');
index 3c92e8bbe633a5e81f197aa5a31189c97ca47e01..fd84fc26d5a4ba24f9ba386315221524854f7741 100644 (file)
@@ -35,6 +35,7 @@ function editpost_content(&$a) {
        
        $a->page['htmlhead'] .= replace_macros($tpl, array(
                '$baseurl' => $a->get_baseurl(),
+               '$ispublic' => t('Visible to <strong>everybody</strong>'),
                '$geotag' => $geotag,
                '$nickname' => $a->user['nickname']
        ));
index e53cfb0331deff8d641372735db394bd9e9bb326..c4f368fd0d01e8eb7acaef20459851fbd110858e 100644 (file)
@@ -538,7 +538,8 @@ function item_post(&$a) {
 
        proc_run('php', "include/notifier.php", $notify_type, "$post_id");
 
-       $datarray['id'] = $post_id;
+       $datarray['id']    = $post_id;
+       $datarray['plink'] = $a->get_baseurl() . '/display/' . $user['nickname'] . '/' . $post_id;
 
        call_hooks('post_local_end', $datarray);
 
@@ -670,7 +671,8 @@ function item_content(&$a) {
                        // send the notification upstream/downstream as the case may be
 
                        proc_run('php',"include/notifier.php","drop","$drop_id");
-
+// We seem to lose the return url occasionally. Have not been able to reliably duplicate
+//                     logger('drop_return_url: ' . $_SESSION['return_url']);
                        goaway($a->get_baseurl() . '/' . $_SESSION['return_url']);
                        //NOTREACHED
                }
index 3e3d695292b874c4d7e2a3e0472fc7ce035cceba..966fe500b255aaed69db82c231c9555f43acbb4e 100644 (file)
@@ -173,6 +173,10 @@ EOT;
                );
        }                       
 
+       $arr['id'] = $post_id;
+
+       call_hooks('post_local_end', $arr);
+
        proc_run('php',"include/notifier.php","like","$post_id");
 
        return; // NOTREACHED
index f40d34353204f717c420a52b7b3c5b91a4e10807..7ad5058bf813f8095a329fdba4a4a54c50e534d8 100644 (file)
@@ -137,7 +137,7 @@ function network_content(&$a, $update = 0) {
                                notice( t('Group is empty'));
                }
 
-               $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( $contact_str )) ";
+               $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND ( `contact-id` IN ( $contact_str ) OR `allow_gid` REGEXP '<" . intval($group) . ">' )) ";
                $o = '<h2>' . t('Group: ') . $r[0]['name'] . '</h2>' . $o;
        }
        elseif($cid) {
@@ -149,7 +149,7 @@ function network_content(&$a, $update = 0) {
                if(count($r)) {
                        $sql_extra = " AND `item`.`parent` IN ( SELECT `parent` FROM `item` WHERE `id` = `parent` AND `contact-id` IN ( " . intval($cid) . " )) ";
                        $o = '<h2>' . t('Contact: ') . $r[0]['name'] . '</h2>' . $o;
-                       if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
+                       if($r[0]['network'] !== NETWORK_MAIL && $r[0]['network'] !== NETWORK_DFRN && $r[0]['network'] !== NETWORK_FACEBOOK && $r[0]['writable'] && (! get_pconfig(local_user(),'system','nowarn_insecure'))) {
                                notice( t('Private messages to this person are at risk of public disclosure.') . EOL);
                        }
 
@@ -164,11 +164,13 @@ function network_content(&$a, $update = 0) {
        if((! $group) && (! $cid) && (! $update))
                $o .= get_birthdays();
 
+       $sql_extra2 = (($nouveau) ? '' : " AND `item`.`parent` = `item`.`id` ");
 
        $r = q("SELECT COUNT(*) AS `total`
                FROM `item` LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id`
                WHERE `item`.`uid` = %d AND `item`.`visible` = 1 AND `item`.`deleted` = 0
                AND `contact`.`blocked` = 0 AND `contact`.`pending` = 0
+               $sql_extra2
                $sql_extra ",
                intval($_SESSION['uid'])
        );
index 68d7c3fd2a482645ea7e81bd11d49433b21cfdc3..c3c6c11e9e8f9a02a34ca84b240d5e4bb5a05ba1 100644 (file)
@@ -70,9 +70,18 @@ function openid_content(&$a) {
                        $_SESSION['page_flags'] = $r[0]['page-flags'];
                        $_SESSION['my_url'] = $a->get_baseurl() . '/profile/' . $r[0]['nickname'];
 
-                       notice( sprintf( t("Welcome back "), $r[0]['username']) . EOL);
                        $a->user = $r[0];
 
+                       if($a->user['login_date'] === '0000-00-00 00:00:00') {
+                               $_SESSION['return_url'] = 'profile_photo/new';
+                               $a->module = 'profile_photo';
+                               notice( t("Welcome ") . $a->user['username'] . EOL);
+                               notice( t('Please upload a profile photo.') . EOL);
+                       }
+                       else
+                               notice( t("Welcome back ") . $a->user['username'] . EOL);
+
+
                        if(strlen($a->user['timezone'])) {
                                date_default_timezone_set($a->user['timezone']);
                                $a->timezone = $a->user['timezone'];
index 186873a7b899b6ca5ebd1b8809542b3ff735d4c8..7f94bc520c3534a964a3c0049528f7cc683a31e9 100644 (file)
@@ -6,6 +6,10 @@ require_once('include/bbcode.php');
 
 function photos_init(&$a) {
 
+
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               return;
+       }
        $o = '';
 
        if($a->argc > 1) {
@@ -635,6 +639,9 @@ foreach($_FILES AS $key => $val) {
 
        $item_id = item_store($arr);
 
+       if($visible) 
+               proc_run('php', "include/notifier.php", 'wall-new', $item_id);
+
        call_hooks('photo_post_end',intval($item_id));
 
        // addon uploaders should call "killme()" [e.g. exit] within the photo_post_end hook
@@ -657,6 +664,12 @@ function photos_content(&$a) {
        // photos/name/image/xxxxx/edit
 
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
+
        require_once('include/bbcode.php');
        require_once('include/security.php');
        require_once('include/conversation.php');
@@ -899,7 +912,7 @@ function photos_content(&$a) {
 
 
 
-               $o = '<div id="live-display"></div>' . "\r\n";
+               $o = '';
                // fetch image, item containing image, then comments
 
                $ph = q("SELECT * FROM `photo` WHERE `uid` = %d AND `resource-id` = '%s' 
@@ -952,34 +965,36 @@ function photos_content(&$a) {
                        }
                }
 
-               
-               $o .= '<h3>' . '<a href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']) . '">' . $ph[0]['album'] . '</a></h3>';
+               $album_link = $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/album/' . bin2hex($ph[0]['album']);
+               $tools = Null;
+               $lock = Null;
  
                if($can_post && ($ph[0]['uid'] == $owner_uid)) {
-                       $o .= '<div id="photo-edit-link-wrap" ><a id="photo-edit-link" href="' . $a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit' . '">' . t('Edit photo') . '</a>';
-                       
-                       $o .= ' - <a id="photo-toprofile-link" href="' . $a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'].'">'.t('Use as profile photo').'</a>';
+                       $tools = array(
+                               'edit'  => array($a->get_baseurl() . '/photos/' . $a->data['user']['nickname'] . '/image/' . $datum . '/edit', t('Edit photo')),
+                               'profile'=>array($a->get_baseurl() . '/profile_photo/use/'.$ph[0]['resource-id'], t('Use as profile photo')),
+                       );
+
                        // lock
-                       $o .= ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid']) 
+                       $lock = ( ( ($ph[0]['uid'] == local_user()) && (strlen($ph[0]['allow_cid']) || strlen($ph[0]['allow_gid']) 
                                        || strlen($ph[0]['deny_cid']) || strlen($ph[0]['deny_gid'])) ) 
-                                       ? ' - <img src="images/lock_icon.gif" class="lockview" alt="' . t('Private Message') . '" onclick="lockview(event,\'photo/' . $ph[0]['id'] . '\');" />'
-                                       : '');
+                                       ? t('Private Message')
+                                       : Null);
                        
-                       $o .= '</div>';
+                       
                }
 
                if($prevlink)
-                       $o .= '<div id="photo-prev-link"><a href="' . $prevlink .'">' . t('<< Prev') . '</a></div>' ;
+                       $prevlink = array($prevlink, t('<< Prev')) ;
 
-               $o .= '<div id="photo-photo"><a href="' . $a->get_baseurl() . '/photo/' 
-                       . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg" title="' 
-                       . t('View Full Size') . '" ><img src="' . $a->get_baseurl() . '/photo/' 
-                       . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg' . '" /></a></div>';
+               $photo = array(
+                       'href' => $a->get_baseurl() . '/photo/' . $hires['resource-id'] . '-' . $hires['scale'] . '.jpg',
+                       'title'=> t('View Full Size'),
+                       'src'  => $a->get_baseurl() . '/photo/' . $lores['resource-id'] . '-' . $lores['scale'] . '.jpg'
+               );
 
                if($nextlink)
-                       $o .= '<div id="photo-next-link"><a href="' . $nextlink .'">' . t('Next >>') . '</a></div>';
-
-               $o .= '<div id="photo-photo-end"></div>';
+                       $nextlink = array($nextlink, t('Next >>'));
 
 
                // Do we have an item for this photo?
@@ -1031,28 +1046,27 @@ function photos_content(&$a) {
                        }
                }
 
-               $o .= '<div id="photo-caption" >' . $ph[0]['desc'] . '</div>';
-
+               $tags=Null;
                if(count($linked_items) && strlen($link_item['tag'])) {
                        $arr = explode(',',$link_item['tag']);
-                       // parse tags and add links     
-                       $o .= '<div id="in-this-photo-text">' . t('Tags: ') . '</div>';
-                       $o .= '<div id="in-this-photo">';
+                       // parse tags and add links
                        $tag_str = '';
                        foreach($arr as $t) {
                                if(strlen($tag_str))
                                        $tag_str .= ', ';
                                $tag_str .= bbcode($t);
                        } 
-                       $o .= $tag_str . '</div>';
+                       $tags = array(t('Tags: '), $tag_str);
                        if($cmd === 'edit')
-                               $o .= '<div id="tag-remove"><a href="' . $a->get_baseurl() . '/tagrm/' . $link_item['id'] . '">' . t('[Remove any tag]') . '</a></div>';
+                               $tags[] = $a->get_baseurl() . '/tagrm/' . $link_item['id'];
+                               $tags[] = t('[Remove any tag]');
                }
 
 
+               $edit = Null;
                if(($cmd === 'edit') && ($can_post)) {
                        $edit_tpl = load_view_file('view/photo_edit.tpl');
-                       $o .= replace_macros($edit_tpl, array(
+                       $edit = replace_macros($edit_tpl, array(
                                '$id' => $ph[0]['id'],
                                '$album' => $ph[0]['album'],
                                '$newalbum' => t('New album name'), 
@@ -1083,22 +1097,19 @@ function photos_content(&$a) {
 
                        if($can_post || can_write_wall($a,$owner_uid)) {
                                $likebuttons = replace_macros($like_tpl,array(
-                                       '$id' => $item['id'],
+                                       '$id' => $link_item['id'],
                                        '$likethis' => t("I like this \x28toggle\x29"),
                                        '$nolike' => t("I don't like this \x28toggle\x29"),
                                        '$share' => t('Share'),
-                                       '$wait' => t('Please wait') 
+                                       '$wait' => t('Please wait')
                                ));
                        }
 
+                       $comments = '';
                        if(! count($r)) {
-                               $o .= '<div id="photo-like-div">';
-                               $o .= $likebuttons;
-                               $o .= '</div>';
-
                                if($can_post || can_write_wall($a,$owner_uid)) {
                                        if($link_item['last-child']) {
-                                               $o .= replace_macros($cmnt_tpl,array(
+                                               $comments .= replace_macros($cmnt_tpl,array(
                                                        '$return_path' => '', 
                                                        '$jsreload' => $return_url,
                                                        '$type' => 'wall-comment',
@@ -1118,6 +1129,9 @@ function photos_content(&$a) {
 
                        $alike = array();
                        $dlike = array();
+                       
+                       $like = '';
+                       $dislike = '';
 
                        // display comments
                        if(count($r)) {
@@ -1130,17 +1144,11 @@ function photos_content(&$a) {
                                $like    = ((isset($alike[$link_item['id']])) ? format_like($alike[$link_item['id']],$alike[$link_item['id'] . '-l'],'like',$link_item['id']) : '');
                                $dislike = ((isset($dlike[$link_item['id']])) ? format_like($dlike[$link_item['id']],$dlike[$link_item['id'] . '-l'],'dislike',$link_item['id']) : '');
 
-                               $o .= '<div id="photo-like-div">';
-                               $o .= $likebuttons;
-                               $o .= $like;
-                               $o .= $dislike;
-                               $o .= '</div>';
-
 
 
                                if($can_post || can_write_wall($a,$owner_uid)) {
                                        if($link_item['last-child']) {
-                                               $o .= replace_macros($cmnt_tpl,array(
+                                               $comments .= replace_macros($cmnt_tpl,array(
                                                        '$return_path' => '',
                                                        '$jsreload' => $return_url,
                                                        '$type' => 'wall-comment',
@@ -1169,7 +1177,7 @@ function photos_content(&$a) {
                                        if($can_post || can_write_wall($a,$owner_uid)) {
 
                                                if($item['last-child']) {
-                                                       $comment = replace_macros($cmnt_tpl,array(
+                                                       $comments .= replace_macros($cmnt_tpl,array(
                                                                '$return_path' => '',
                                                                '$jsreload' => $return_url,
                                                                '$type' => 'wall-comment',
@@ -1208,7 +1216,7 @@ function photos_content(&$a) {
                                                $drop = replace_macros(load_view_file('view/wall_item_drop.tpl'), array('$id' => $item['id'], '$delete' => t('Delete')));
 
 
-                                       $o .= replace_macros($template,array(
+                                       $comments .= replace_macros($template,array(
                                                '$id' => $item['item_id'],
                                                '$profile_url' => $profile_link,
                                                '$name' => $profile_name,
@@ -1224,8 +1232,28 @@ function photos_content(&$a) {
                                }
                        }
 
-                       $o .= paginate($a);
+                       $paginate = paginate($a);
                }
+               
+               $photo_tpl = load_view_file('view/photo_view.tpl');
+               $o .= replace_macros($photo_tpl, array(
+                       '$id' => $ph[0]['id'],
+                       '$album' => array($album_link,$ph[0]['album']),
+                       '$tools' => $tools,
+                       '$lock' => $lock,
+                       '$photo' => $photo,
+                       '$prevlink' => $prevlink,
+                       '$nextlink' => $nextlink,
+                       '$desc' => $ph[0]['desc'],
+                       '$tags' => $tags,
+                       '$edit' => $edit,       
+                       '$likebuttons' => $likebuttons,
+                       '$like' => $like,
+                       '$dislike' => $dislike,
+                       '$comments' => $comments,
+                       '$paginate' => $paginate,
+               ));
+               
                return $o;
        }
 
index dfa5649e083585a931bf77c05d6cc1fc265faeed..2af6f2429bb1033fa5694cf5f0ce8a18ca64c8a6 100644 (file)
@@ -2,6 +2,9 @@
 
 function profile_init(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user()))
+               return;
+
        if($a->argc > 1)
                $which = $a->argv[1];
        else {
@@ -48,6 +51,12 @@ function profile_init(&$a) {
 
 function profile_content(&$a, $update = 0) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               return login();
+       }
+
+
+
        require_once("include/bbcode.php");
        require_once('include/security.php');
        require_once('include/conversation.php');
index fe4da3bafa634dbbffd5ed94402299ac6edfd613..e9008ab29ed419552671898db93140024a244070 100644 (file)
@@ -134,6 +134,11 @@ function profile_photo_content(&$a) {
                return;
        }
        
+       $newuser = false;
+
+       if($a->argc == 2 && $a->argv[1] === 'new')
+               $newuser = true;
+
        if( $a->argv[1]=='use'){
                if ($a->argc<3){
                        notice( t('Permission denied.') . EOL );
@@ -188,7 +193,7 @@ function profile_photo_content(&$a) {
                        '$lbl_upfile' => t('Upload File:'),
                        '$title' => t('Upload Profile Photo'),
                        '$submit' => t('Upload'),
-                       '$select' => sprintf('%s %s', t('or'), '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>')
+                       '$select' => sprintf('%s %s', t('or'), ($newuser) ? '<a href="' . $a->get_baseurl() . '">' . t('skip this step') . '</a>' : '<a href="'. $a->get_baseurl() . '/photos/' . $a->user['nickname'] . '">' . t('select a photo from your photo albums') . '</a>')
                ));
 
                return $o;
index 793a8c2bb282e9f26a14f9689abd3ea3caead314..33032e183234b706c45b98fbd8ddf1f4104f8d28 100644 (file)
@@ -9,6 +9,11 @@ function search_post(&$a) {
 
 function search_content(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
        require_once("include/bbcode.php");
        require_once('include/security.php');
        require_once('include/conversation.php');
index 95b622c4ef48f67aecb460e2805f17294d2ab8f3..66b66d22df715e5f77a2591f8eab544b2f3fedf2 100644 (file)
@@ -95,9 +95,9 @@ function settings_post(&$a) {
                }
                if(strlen($mail_pass)) {
                        $pass = '';
-                       openssl(private_encrypt($mail_pass,$pass,$a->user['pubkey']));
+                       openssl_public_encrypt($mail_pass,$pass,$a->user['pubkey']);
                        q("UPDATE `mailacct` SET `pass` = '%s' WHERE `uid` = %d LIMIT 1",
-                                       dbesc(hex2bin($pass)),
+                                       dbesc(bin2hex($pass)),
                                        intval(local_user())
                        );
                }
index 063637bf9e2d26e8d98e9f606a4ba801842c2e2c..c970db33aa5298c2e531faa3533dc174767372f1 100644 (file)
@@ -2,13 +2,21 @@
 
 function viewcontacts_init(&$a) {
 
-       profile_load($a,$a->argv[1]);
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               return;
+       }
 
+       profile_load($a,$a->argv[1]);
 }
 
 
 function viewcontacts_content(&$a) {
 
+       if((get_config('system','block_public')) && (! local_user()) && (! remote_user())) {
+               notice( t('Public access denied.') . EOL);
+               return;
+       }
+
        if(((! count($a->profile)) || ($a->profile['hide-friends']))) {
                notice( t('Permission denied.') . EOL);
                return;
index a8140fe9114210699a93271212d6ebb4a62c0aa2..541d599461b39c4cccc0f5e3ba7bddd2b6416e4d 100644 (file)
@@ -476,3 +476,7 @@ function update_1052() {
 }
 
 
+function update_1053() {
+       q("ALTER TABLE `item` ADD `extid` CHAR( 255 ) NOT NULL AFTER `parent-uri` , ADD INDEX ( `extid` ) ");
+}
+
index 8c9893b09f22ec787ec7cb273e3a5b1e80c53099..d70504f23655ed33eef1fd22e04e4f2b209a97b3 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: 2.1.954\n"
+"Project-Id-Version: 2.1.967\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2011-04-20 04:49-0700\n"
+"POT-Creation-Date: 2011-05-02 20:13-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"
@@ -29,20 +29,20 @@ msgstr ""
 msgid "Contact update failed."
 msgstr ""
 
-#: ../../mod/crepair.php:54 ../../mod/photos.php:85 ../../mod/photos.php:777
+#: ../../mod/crepair.php:54 ../../mod/photos.php:89 ../../mod/photos.php:787
 #: ../../mod/editpost.php:10 ../../mod/install.php:93
 #: ../../mod/notifications.php:56 ../../mod/contacts.php:106
 #: ../../mod/settings.php:15 ../../mod/settings.php:20
 #: ../../mod/settings.php:251 ../../mod/manage.php:75 ../../mod/network.php:6
-#: ../../mod/group.php:19 ../../mod/viewcontacts.php:13
+#: ../../mod/group.php:19 ../../mod/viewcontacts.php:21
 #: ../../mod/register.php:25 ../../mod/regmod.php:16 ../../mod/item.php:57
-#: ../../mod/item.php:678 ../../mod/profile_photo.php:19
-#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:139
-#: ../../mod/profile_photo.php:150 ../../mod/message.php:8
+#: ../../mod/item.php:680 ../../mod/profile_photo.php:19
+#: ../../mod/profile_photo.php:133 ../../mod/profile_photo.php:144
+#: ../../mod/profile_photo.php:155 ../../mod/message.php:8
 #: ../../mod/message.php:116 ../../mod/wall_upload.php:42
-#: ../../mod/follow.php:8 ../../mod/display.php:133 ../../mod/profiles.php:7
+#: ../../mod/follow.php:8 ../../mod/display.php:138 ../../mod/profiles.php:7
 #: ../../mod/profiles.php:227 ../../mod/invite.php:13 ../../mod/invite.php:54
-#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:110
+#: ../../mod/dfrn_confirm.php:53 ../../addon/facebook/facebook.php:221
 #: ../../wip/photos.php:77 ../../wip/photos.php:723 ../../wip/follow2.php:8
 #: ../../wip/group.php:19 ../../wip/photos-chris.php:97
 #: ../../wip/photos-chris.php:770 ../../index.php:265
@@ -98,17 +98,17 @@ msgstr ""
 msgid "Poll/Feed URL"
 msgstr ""
 
-#: ../../mod/crepair.php:100 ../../mod/photos.php:805 ../../mod/photos.php:862
-#: ../../mod/photos.php:1069 ../../mod/photos.php:1112
+#: ../../mod/crepair.php:100 ../../mod/photos.php:815 ../../mod/photos.php:872
+#: ../../mod/photos.php:1079 ../../mod/photos.php:1122
 #: ../../mod/install.php:133 ../../mod/contacts.php:264
 #: ../../mod/settings.php:426 ../../mod/manage.php:106 ../../mod/group.php:76
 #: ../../mod/group.php:159 ../../mod/profiles.php:370 ../../mod/invite.php:68
-#: ../../addon/facebook/facebook.php:151
+#: ../../addon/facebook/facebook.php:268
 #: ../../addon/randplace/randplace.php:179
 #: ../../addon/statusnet/statusnet.php:163
 #: ../../addon/statusnet/statusnet.php:189
 #: ../../addon/statusnet/statusnet.php:207 ../../addon/twitter/twitter.php:156
-#: ../../addon/twitter/twitter.php:175 ../../include/conversation.php:383
+#: ../../addon/twitter/twitter.php:175 ../../include/conversation.php:384
 #: ../../wip/photos.php:754 ../../wip/photos.php:793 ../../wip/photos.php:954
 #: ../../wip/addon/randplace/randplace.php:178 ../../wip/group.php:99
 #: ../../wip/group.php:176 ../../wip/photos-chris.php:801
@@ -125,7 +125,7 @@ msgid "Help"
 msgstr ""
 
 #: ../../mod/tagrm.php:11 ../../mod/tagrm.php:94
-#: ../../mod/dfrn_request.php:634 ../../addon/js_upload/js_upload.php:41
+#: ../../mod/dfrn_request.php:644 ../../addon/js_upload/js_upload.php:41
 msgid "Cancel"
 msgstr ""
 
@@ -145,19 +145,19 @@ msgstr ""
 msgid "Remove"
 msgstr ""
 
-#: ../../mod/dfrn_poll.php:79 ../../mod/dfrn_poll.php:504
+#: ../../mod/dfrn_poll.php:84 ../../mod/dfrn_poll.php:510
 #, php-format
 msgid "%s welcomes %s"
 msgstr ""
 
-#: ../../mod/photos.php:30 ../../wip/photos.php:31
+#: ../../mod/photos.php:34 ../../wip/photos.php:31
 #: ../../wip/photos-chris.php:41
 msgid "Photo Albums"
 msgstr ""
 
-#: ../../mod/photos.php:34 ../../mod/photos.php:106 ../../mod/photos.php:785
-#: ../../mod/photos.php:854 ../../mod/photos.php:869 ../../mod/photos.php:1238
-#: ../../mod/photos.php:1249 ../../include/Photo.php:225
+#: ../../mod/photos.php:38 ../../mod/photos.php:110 ../../mod/photos.php:795
+#: ../../mod/photos.php:864 ../../mod/photos.php:879 ../../mod/photos.php:1248
+#: ../../mod/photos.php:1259 ../../include/Photo.php:225
 #: ../../include/Photo.php:232 ../../include/Photo.php:239
 #: ../../include/items.php:1026 ../../include/items.php:1029
 #: ../../include/items.php:1032 ../../wip/photos.php:35
@@ -170,17 +170,17 @@ msgstr ""
 msgid "Contact Photos"
 msgstr ""
 
-#: ../../mod/photos.php:95 ../../wip/photos.php:87
+#: ../../mod/photos.php:99 ../../wip/photos.php:87
 #: ../../wip/photos-chris.php:107
 msgid "Contact information unavailable"
 msgstr ""
 
-#: ../../mod/photos.php:106 ../../mod/photos.php:531 ../../mod/photos.php:854
-#: ../../mod/photos.php:869 ../../mod/register.php:288
+#: ../../mod/photos.php:110 ../../mod/photos.php:535 ../../mod/photos.php:864
+#: ../../mod/photos.php:879 ../../mod/register.php:288
 #: ../../mod/register.php:295 ../../mod/register.php:302
 #: ../../mod/profile_photo.php:58 ../../mod/profile_photo.php:65
-#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:155
-#: ../../mod/profile_photo.php:231 ../../mod/profile_photo.php:240
+#: ../../mod/profile_photo.php:72 ../../mod/profile_photo.php:160
+#: ../../mod/profile_photo.php:236 ../../mod/profile_photo.php:245
 #: ../../wip/photos.php:98 ../../wip/photos.php:493 ../../wip/photos.php:785
 #: ../../wip/photos.php:800 ../../wip/photos-chris.php:118
 #: ../../wip/photos-chris.php:525 ../../wip/photos-chris.php:832
@@ -188,203 +188,208 @@ msgstr ""
 msgid "Profile Photos"
 msgstr ""
 
-#: ../../mod/photos.php:116 ../../wip/photos.php:108
+#: ../../mod/photos.php:120 ../../wip/photos.php:108
 #: ../../wip/photos-chris.php:128
 msgid "Album not found."
 msgstr ""
 
-#: ../../mod/photos.php:134 ../../mod/photos.php:863 ../../wip/photos.php:126
+#: ../../mod/photos.php:138 ../../mod/photos.php:873 ../../wip/photos.php:126
 #: ../../wip/photos.php:794 ../../wip/photos-chris.php:146
 #: ../../wip/photos-chris.php:841
 msgid "Delete Album"
 msgstr ""
 
-#: ../../mod/photos.php:197 ../../mod/photos.php:1070 ../../wip/photos.php:192
+#: ../../mod/photos.php:201 ../../mod/photos.php:1080 ../../wip/photos.php:192
 #: ../../wip/photos.php:955 ../../wip/photos-chris.php:212
 #: ../../wip/photos-chris.php:1002
 msgid "Delete Photo"
 msgstr ""
 
-#: ../../mod/photos.php:469 ../../wip/photos.php:442
+#: ../../mod/photos.php:473 ../../wip/photos.php:442
 #: ../../wip/photos-chris.php:462
 msgid "was tagged in a"
 msgstr ""
 
-#: ../../mod/photos.php:469 ../../mod/like.php:110
+#: ../../mod/photos.php:473 ../../mod/like.php:110
 #: ../../include/conversation.php:20 ../../wip/photos.php:442
 #: ../../wip/photos-chris.php:462
 msgid "photo"
 msgstr ""
 
-#: ../../mod/photos.php:469 ../../wip/photos.php:442
+#: ../../mod/photos.php:473 ../../wip/photos.php:442
 #: ../../wip/photos-chris.php:462
 msgid "by"
 msgstr ""
 
-#: ../../mod/photos.php:559 ../../addon/js_upload/js_upload.php:306
+#: ../../mod/photos.php:563 ../../addon/js_upload/js_upload.php:306
 #: ../../wip/photos.php:511 ../../wip/photos-chris.php:555
 msgid "Image exceeds size limit of "
 msgstr ""
 
-#: ../../mod/photos.php:571 ../../mod/profile_photo.php:118
+#: ../../mod/photos.php:575 ../../mod/profile_photo.php:118
 #: ../../mod/wall_upload.php:65 ../../wip/photos.php:520
 #: ../../wip/photos-chris.php:567
 msgid "Unable to process image."
 msgstr ""
 
-#: ../../mod/photos.php:589 ../../mod/profile_photo.php:236
+#: ../../mod/photos.php:593 ../../mod/profile_photo.php:241
 #: ../../mod/wall_upload.php:82 ../../wip/photos.php:537
 #: ../../wip/photos-chris.php:585
 msgid "Image upload failed."
 msgstr ""
 
-#: ../../mod/photos.php:665 ../../wip/photos.php:611
+#: ../../mod/photos.php:665 ../../mod/dfrn_request.php:591
+#: ../../mod/viewcontacts.php:16 ../../mod/display.php:7
+#: ../../mod/search.php:13 ../../mod/directory.php:18
+msgid "Public access denied."
+msgstr ""
+
+#: ../../mod/photos.php:675 ../../wip/photos.php:611
 #: ../../wip/photos-chris.php:658
 msgid "No photos selected"
 msgstr ""
 
-#: ../../mod/photos.php:812 ../../wip/photos.php:742
+#: ../../mod/photos.php:822 ../../wip/photos.php:742
 #: ../../wip/photos-chris.php:789
 msgid "Upload Photos"
 msgstr ""
 
-#: ../../mod/photos.php:815 ../../mod/photos.php:858 ../../wip/photos.php:745
+#: ../../mod/photos.php:825 ../../mod/photos.php:868 ../../wip/photos.php:745
 #: ../../wip/photos.php:789 ../../wip/photos-chris.php:792
 #: ../../wip/photos-chris.php:836
 msgid "New album name: "
 msgstr ""
 
-#: ../../mod/photos.php:816 ../../wip/photos.php:746
+#: ../../mod/photos.php:826 ../../wip/photos.php:746
 #: ../../wip/photos-chris.php:793
 msgid "or existing album name: "
 msgstr ""
 
-#: ../../mod/photos.php:818 ../../mod/photos.php:1065 ../../wip/photos.php:749
+#: ../../mod/photos.php:828 ../../mod/photos.php:1075 ../../wip/photos.php:749
 #: ../../wip/photos-chris.php:796
 msgid "Permissions"
 msgstr ""
 
-#: ../../mod/photos.php:873 ../../wip/photos.php:804
+#: ../../mod/photos.php:883 ../../wip/photos.php:804
 #: ../../wip/photos-chris.php:851
 msgid "Edit Album"
 msgstr ""
 
-#: ../../mod/photos.php:883 ../../mod/photos.php:1267 ../../wip/photos.php:814
+#: ../../mod/photos.php:893 ../../mod/photos.php:1277 ../../wip/photos.php:814
 #: ../../wip/photos.php:1141 ../../wip/photos-chris.php:861
 #: ../../wip/photos-chris.php:1188
 msgid "View Photo"
 msgstr ""
 
-#: ../../mod/photos.php:912 ../../wip/photos.php:843
+#: ../../mod/photos.php:922 ../../wip/photos.php:843
 #: ../../wip/photos-chris.php:890
 msgid "Photo not available"
 msgstr ""
 
-#: ../../mod/photos.php:959 ../../wip/photos.php:864
+#: ../../mod/photos.php:969 ../../wip/photos.php:864
 #: ../../wip/photos-chris.php:911
 msgid "Edit photo"
 msgstr ""
 
-#: ../../mod/photos.php:961
+#: ../../mod/photos.php:971
 msgid "Use as profile photo"
 msgstr ""
 
-#: ../../mod/photos.php:965 ../../include/conversation.php:316
+#: ../../mod/photos.php:975 ../../include/conversation.php:317
 msgid "Private Message"
 msgstr ""
 
-#: ../../mod/photos.php:972
+#: ../../mod/photos.php:982
 msgid "<< Prev"
 msgstr ""
 
-#: ../../mod/photos.php:976 ../../wip/photos.php:870
+#: ../../mod/photos.php:986 ../../wip/photos.php:870
 #: ../../wip/photos-chris.php:917
 msgid "View Full Size"
 msgstr ""
 
-#: ../../mod/photos.php:980
+#: ../../mod/photos.php:990
 msgid "Next >>"
 msgstr ""
 
-#: ../../mod/photos.php:1039 ../../wip/photos.php:928
+#: ../../mod/photos.php:1049 ../../wip/photos.php:928
 #: ../../wip/photos-chris.php:975
 msgid "Tags: "
 msgstr ""
 
-#: ../../mod/photos.php:1049 ../../wip/photos.php:938
+#: ../../mod/photos.php:1059 ../../wip/photos.php:938
 #: ../../wip/photos-chris.php:985
 msgid "[Remove any tag]"
 msgstr ""
 
-#: ../../mod/photos.php:1058
+#: ../../mod/photos.php:1068
 msgid "New album name"
 msgstr ""
 
-#: ../../mod/photos.php:1061 ../../wip/photos.php:948
+#: ../../mod/photos.php:1071 ../../wip/photos.php:948
 #: ../../wip/photos-chris.php:995
 msgid "Caption"
 msgstr ""
 
-#: ../../mod/photos.php:1063 ../../wip/photos.php:950
+#: ../../mod/photos.php:1073 ../../wip/photos.php:950
 #: ../../wip/photos-chris.php:997
 msgid "Add a Tag"
 msgstr ""
 
-#: ../../mod/photos.php:1067 ../../wip/photos.php:952
+#: ../../mod/photos.php:1077 ../../wip/photos.php:952
 #: ../../wip/photos-chris.php:999
 msgid "Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping"
 msgstr ""
 
-#: ../../mod/photos.php:1087 ../../include/conversation.php:364
+#: ../../mod/photos.php:1097 ../../include/conversation.php:365
 msgid "I like this (toggle)"
 msgstr ""
 
-#: ../../mod/photos.php:1088 ../../include/conversation.php:365
+#: ../../mod/photos.php:1098 ../../include/conversation.php:366
 msgid "I don't like this (toggle)"
 msgstr ""
 
-#: ../../mod/photos.php:1089 ../../mod/network.php:134
-#: ../../mod/profile.php:181 ../../include/conversation.php:366
+#: ../../mod/photos.php:1099 ../../include/conversation.php:367
+#: ../../include/conversation.php:735
 msgid "Share"
 msgstr ""
 
-#: ../../mod/photos.php:1090 ../../mod/editpost.php:95
-#: ../../mod/network.php:143 ../../mod/message.php:190
-#: ../../mod/message.php:324 ../../mod/profile.php:190
-#: ../../include/conversation.php:367
+#: ../../mod/photos.php:1100 ../../mod/editpost.php:95
+#: ../../mod/message.php:190 ../../mod/message.php:324
+#: ../../include/conversation.php:368 ../../include/conversation.php:744
 msgid "Please wait"
 msgstr ""
 
-#: ../../mod/photos.php:1109 ../../mod/photos.php:1151
-#: ../../mod/photos.php:1180 ../../include/conversation.php:380
+#: ../../mod/photos.php:1119 ../../mod/photos.php:1161
+#: ../../mod/photos.php:1190 ../../include/conversation.php:381
 #: ../../wip/photos.php:986 ../../wip/photos.php:1025
 #: ../../wip/photos.php:1053 ../../wip/photos-chris.php:1033
 #: ../../wip/photos-chris.php:1072 ../../wip/photos-chris.php:1100
 msgid "This is you"
 msgstr ""
 
-#: ../../mod/photos.php:1111 ../../include/conversation.php:382
+#: ../../mod/photos.php:1121 ../../include/conversation.php:383
 #: ../../boot.php:373
 msgid "Comment"
 msgstr ""
 
-#: ../../mod/photos.php:1208 ../../mod/group.php:146
-#: ../../include/conversation.php:182 ../../include/conversation.php:393
+#: ../../mod/photos.php:1218 ../../mod/group.php:146
+#: ../../include/conversation.php:182 ../../include/conversation.php:394
 #: ../../wip/group.php:162
 msgid "Delete"
 msgstr ""
 
-#: ../../mod/photos.php:1254 ../../wip/photos.php:1127
+#: ../../mod/photos.php:1264 ../../wip/photos.php:1127
 #: ../../wip/photos-chris.php:1174
 msgid "Recent Photos"
 msgstr ""
 
-#: ../../mod/photos.php:1258 ../../wip/photos.php:1131
+#: ../../mod/photos.php:1268 ../../wip/photos.php:1131
 #: ../../wip/photos-chris.php:1178
 msgid "Upload New Photos"
 msgstr ""
 
-#: ../../mod/photos.php:1271 ../../wip/photos.php:1147
+#: ../../mod/photos.php:1281 ../../wip/photos.php:1147
 #: ../../wip/photos-chris.php:1194
 msgid "View Album"
 msgstr ""
@@ -397,182 +402,171 @@ msgstr ""
 msgid "Edit post"
 msgstr ""
 
-#: ../../mod/editpost.php:74 ../../mod/network.php:122
-#: ../../mod/profile.php:169
+#: ../../mod/editpost.php:74 ../../include/conversation.php:724
 msgid "Post to Email"
 msgstr ""
 
 #: ../../mod/editpost.php:87 ../../include/group.php:169
-#: ../../include/conversation.php:391
+#: ../../include/conversation.php:392
 msgid "Edit"
 msgstr ""
 
-#: ../../mod/editpost.php:88 ../../mod/network.php:135
-#: ../../mod/message.php:188 ../../mod/message.php:322
-#: ../../mod/profile.php:182
+#: ../../mod/editpost.php:88 ../../mod/message.php:188
+#: ../../mod/message.php:322 ../../include/conversation.php:736
 msgid "Upload photo"
 msgstr ""
 
-#: ../../mod/editpost.php:89 ../../mod/network.php:136
-#: ../../mod/message.php:189 ../../mod/message.php:323
-#: ../../mod/profile.php:183
+#: ../../mod/editpost.php:89 ../../mod/message.php:189
+#: ../../mod/message.php:323 ../../include/conversation.php:737
 msgid "Insert web link"
 msgstr ""
 
-#: ../../mod/editpost.php:90 ../../mod/network.php:137
-#: ../../mod/profile.php:184
+#: ../../mod/editpost.php:90 ../../include/conversation.php:738
 msgid "Insert YouTube video"
 msgstr ""
 
-#: ../../mod/editpost.php:91 ../../mod/network.php:138
-#: ../../mod/profile.php:185
+#: ../../mod/editpost.php:91 ../../include/conversation.php:739
 msgid "Insert Vorbis [.ogg] video"
 msgstr ""
 
-#: ../../mod/editpost.php:92 ../../mod/network.php:139
-#: ../../mod/profile.php:186
+#: ../../mod/editpost.php:92 ../../include/conversation.php:740
 msgid "Insert Vorbis [.ogg] audio"
 msgstr ""
 
-#: ../../mod/editpost.php:93 ../../mod/network.php:140
-#: ../../mod/profile.php:187
+#: ../../mod/editpost.php:93 ../../include/conversation.php:741
 msgid "Set your location"
 msgstr ""
 
-#: ../../mod/editpost.php:94 ../../mod/network.php:141
-#: ../../mod/profile.php:188
+#: ../../mod/editpost.php:94 ../../include/conversation.php:742
 msgid "Clear browser location"
 msgstr ""
 
-#: ../../mod/editpost.php:96 ../../mod/network.php:144
-#: ../../mod/profile.php:191
+#: ../../mod/editpost.php:96 ../../include/conversation.php:745
 msgid "Permission settings"
 msgstr ""
 
-#: ../../mod/editpost.php:102 ../../mod/network.php:150
-#: ../../mod/profile.php:198
+#: ../../mod/editpost.php:102 ../../include/conversation.php:751
 msgid "CC: email addresses"
 msgstr ""
 
-#: ../../mod/editpost.php:104 ../../mod/network.php:152
-#: ../../mod/profile.php:200
+#: ../../mod/editpost.php:104 ../../include/conversation.php:753
 msgid "Example: bob@example.com, mary@example.com"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:92
+#: ../../mod/dfrn_request.php:96
 msgid "This introduction has already been accepted."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:116 ../../mod/dfrn_request.php:347
+#: ../../mod/dfrn_request.php:120 ../../mod/dfrn_request.php:351
 msgid "Profile location is not valid or does not contain profile information."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:121 ../../mod/dfrn_request.php:352
+#: ../../mod/dfrn_request.php:125 ../../mod/dfrn_request.php:356
 msgid "Warning: profile location has no identifiable owner name."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:123 ../../mod/dfrn_request.php:354
+#: ../../mod/dfrn_request.php:127 ../../mod/dfrn_request.php:358
 msgid "Warning: profile location has no profile photo."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:126 ../../mod/dfrn_request.php:357
+#: ../../mod/dfrn_request.php:130 ../../mod/dfrn_request.php:361
 #, php-format
 msgid "%d required parameter was not found at the given location"
 msgid_plural "%d required parameters were not found at the given location"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../mod/dfrn_request.php:164
+#: ../../mod/dfrn_request.php:168
 msgid "Introduction complete."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:188
+#: ../../mod/dfrn_request.php:192
 msgid "Unrecoverable protocol error."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:216
+#: ../../mod/dfrn_request.php:220
 msgid "Profile unavailable."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:241
+#: ../../mod/dfrn_request.php:245
 #, php-format
 msgid "%s has received too many connection requests today."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:242
+#: ../../mod/dfrn_request.php:246
 msgid "Spam protection measures have been invoked."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:243
+#: ../../mod/dfrn_request.php:247
 msgid "Friends are advised to please try again in 24 hours."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:273
+#: ../../mod/dfrn_request.php:277
 msgid "Invalid locator"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:292
+#: ../../mod/dfrn_request.php:296
 msgid "Unable to resolve your name at the provided location."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:305
+#: ../../mod/dfrn_request.php:309
 msgid "You have already introduced yourself here."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:309
+#: ../../mod/dfrn_request.php:313
 #, php-format
 msgid "Apparently you are already friends with %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:330
+#: ../../mod/dfrn_request.php:334
 msgid "Invalid profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:336 ../../mod/follow.php:16
+#: ../../mod/dfrn_request.php:340 ../../mod/follow.php:16
 msgid "Disallowed profile URL."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:402 ../../mod/contacts.php:90
+#: ../../mod/dfrn_request.php:406 ../../mod/contacts.php:90
 msgid "Failed to update contact record."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:423
+#: ../../mod/dfrn_request.php:427
 msgid "Your introduction has been sent."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:477
+#: ../../mod/dfrn_request.php:481
 msgid "Please login to confirm introduction."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:491
+#: ../../mod/dfrn_request.php:495
 msgid ""
 "Incorrect identity currently logged in. Please login to <strong>this</"
 "strong> profile."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:503
+#: ../../mod/dfrn_request.php:507
 #, php-format
 msgid "Welcome home %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:504
+#: ../../mod/dfrn_request.php:508
 #, php-format
 msgid "Please confirm your introduction/connection request to %s."
 msgstr ""
 
-#: ../../mod/dfrn_request.php:505
+#: ../../mod/dfrn_request.php:509
 msgid "Confirm"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:538 ../../include/items.php:1409
+#: ../../mod/dfrn_request.php:542 ../../include/items.php:1409
 msgid "[Name Withheld]"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:545
+#: ../../mod/dfrn_request.php:549
 msgid "Introduction received at "
 msgstr ""
 
-#: ../../mod/dfrn_request.php:547 ../../mod/lostpass.php:40
+#: ../../mod/dfrn_request.php:551 ../../mod/lostpass.php:40
 #: ../../mod/lostpass.php:102 ../../mod/register.php:333
 #: ../../mod/register.php:373 ../../mod/regmod.php:94 ../../mod/item.php:480
 #: ../../mod/item.php:506 ../../mod/dfrn_notify.php:189
@@ -581,67 +575,67 @@ msgstr ""
 msgid "Administrator"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:620
+#: ../../mod/dfrn_request.php:630
 msgid "Friend/Connection Request"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:621
+#: ../../mod/dfrn_request.php:631
 msgid ""
 "Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, "
 "testuser@identi.ca"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:622
+#: ../../mod/dfrn_request.php:632
 msgid "Please answer the following:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:623
+#: ../../mod/dfrn_request.php:633
 msgid "Does $name know you?"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:624 ../../mod/settings.php:350
+#: ../../mod/dfrn_request.php:634 ../../mod/settings.php:350
 #: ../../mod/settings.php:362 ../../mod/register.php:444
 #: ../../mod/profiles.php:355
 msgid "Yes"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:625 ../../mod/settings.php:351
+#: ../../mod/dfrn_request.php:635 ../../mod/settings.php:351
 #: ../../mod/settings.php:363 ../../mod/register.php:445
 #: ../../mod/profiles.php:356
 msgid "No"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:626
+#: ../../mod/dfrn_request.php:636
 msgid "Add a personal note:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:627
+#: ../../mod/dfrn_request.php:637
 msgid ""
 "Please enter your 'Identity Address' from one of the following supported "
 "social networks:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:628
+#: ../../mod/dfrn_request.php:638
 msgid "Friendika"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:629
+#: ../../mod/dfrn_request.php:639
 msgid "StatusNet/Federated Social Web"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:630
+#: ../../mod/dfrn_request.php:640
 msgid "Private (secure) network"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:631
+#: ../../mod/dfrn_request.php:641
 msgid "Public (insecure) network"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:632
+#: ../../mod/dfrn_request.php:642
 msgid "Your Identity Address:"
 msgstr ""
 
-#: ../../mod/dfrn_request.php:633
+#: ../../mod/dfrn_request.php:643
 msgid "Submit Request"
 msgstr ""
 
@@ -1117,7 +1111,7 @@ msgid "Currently ignored"
 msgstr ""
 
 #: ../../mod/contacts.php:322 ../../include/nav.php:110
-#: ../../include/acl_selectors.php:143 ../../include/acl_selectors.php:158
+#: ../../include/acl_selectors.php:141 ../../include/acl_selectors.php:156
 msgid "Contacts"
 msgstr ""
 
@@ -1129,19 +1123,19 @@ msgstr ""
 msgid "Hide Blocked Connections"
 msgstr ""
 
-#: ../../mod/contacts.php:326 ../../mod/directory.php:38
+#: ../../mod/contacts.php:326 ../../mod/directory.php:44
 msgid "Finding: "
 msgstr ""
 
-#: ../../mod/contacts.php:327 ../../mod/directory.php:40
+#: ../../mod/contacts.php:327 ../../mod/directory.php:46
 msgid "Find"
 msgstr ""
 
-#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:44
+#: ../../mod/contacts.php:387 ../../mod/viewcontacts.php:52
 msgid "Visit $username's profile"
 msgstr ""
 
-#: ../../mod/contacts.php:388 ../../include/conversation.php:603
+#: ../../mod/contacts.php:388 ../../include/conversation.php:604
 msgid "Edit contact"
 msgstr ""
 
@@ -1304,7 +1298,7 @@ msgstr ""
 msgid "Profile is <strong>not published</strong>."
 msgstr ""
 
-#: ../../mod/settings.php:398 ../../mod/profile_photo.php:191
+#: ../../mod/settings.php:398 ../../mod/profile_photo.php:196
 msgid "or"
 msgstr ""
 
@@ -1509,61 +1503,32 @@ msgstr ""
 msgid "Private messages to this group are at risk of public disclosure."
 msgstr ""
 
-#: ../../mod/network.php:82 ../../mod/message.php:172
-#: ../../mod/profile.php:131
-msgid "Please enter a link URL:"
-msgstr ""
-
-#: ../../mod/network.php:83 ../../mod/profile.php:132
-msgid "Please enter a YouTube link:"
-msgstr ""
-
-#: ../../mod/network.php:84 ../../mod/profile.php:133
-msgid "Please enter a video(.ogg) link/URL:"
-msgstr ""
-
-#: ../../mod/network.php:85 ../../mod/profile.php:134
-msgid "Please enter an audio(.ogg) link/URL:"
-msgstr ""
-
-#: ../../mod/network.php:86 ../../mod/profile.php:135
-msgid "Where are you right now?"
-msgstr ""
-
-#: ../../mod/network.php:87 ../../mod/profile.php:136
-msgid "Enter a title for this item"
-msgstr ""
-
-#: ../../mod/network.php:142 ../../mod/profile.php:189
-msgid "Set title"
-msgstr ""
-
-#: ../../mod/network.php:196
+#: ../../mod/network.php:126
 msgid "No such group"
 msgstr ""
 
-#: ../../mod/network.php:207
+#: ../../mod/network.php:137
 msgid "Group is empty"
 msgstr ""
 
-#: ../../mod/network.php:211
+#: ../../mod/network.php:141
 msgid "Group: "
 msgstr ""
 
-#: ../../mod/network.php:221
+#: ../../mod/network.php:151
 msgid "Contact: "
 msgstr ""
 
-#: ../../mod/network.php:223
+#: ../../mod/network.php:153
 msgid "Private messages to this person are at risk of public disclosure."
 msgstr ""
 
-#: ../../mod/network.php:228
+#: ../../mod/network.php:158
 msgid "Invalid contact."
 msgstr ""
 
-#: ../../mod/network.php:327 ../../mod/register.php:450
-#: ../../mod/profile.php:322 ../../mod/display.php:142
+#: ../../mod/network.php:257 ../../mod/register.php:450
+#: ../../mod/profile.php:262 ../../mod/display.php:147
 msgid ""
 "Shared content is covered by the <a href=\"http://creativecommons.org/"
 "licenses/by/3.0/\">Creative Commons Attribution 3.0</a> license."
@@ -1632,7 +1597,7 @@ msgstr ""
 msgid "Profile Visibility Editor"
 msgstr ""
 
-#: ../../mod/profperm.php:94 ../../mod/profile.php:104
+#: ../../mod/profperm.php:94 ../../mod/profile.php:113
 #: ../../include/profile_advanced.php:7
 msgid "Profile"
 msgstr ""
@@ -1645,11 +1610,11 @@ msgstr ""
 msgid "All Contacts (with secure profile access)"
 msgstr ""
 
-#: ../../mod/viewcontacts.php:17 ../../boot.php:1997
+#: ../../mod/viewcontacts.php:25 ../../boot.php:2001
 msgid "View Contacts"
 msgstr ""
 
-#: ../../mod/viewcontacts.php:32
+#: ../../mod/viewcontacts.php:40
 msgid "No contacts."
 msgstr ""
 
@@ -1781,11 +1746,13 @@ msgstr ""
 msgid "Register"
 msgstr ""
 
-#: ../../mod/like.php:110 ../../include/conversation.php:20
+#: ../../mod/like.php:110 ../../addon/facebook/facebook.php:720
+#: ../../include/conversation.php:20
 msgid "status"
 msgstr ""
 
-#: ../../mod/like.php:127 ../../include/conversation.php:25
+#: ../../mod/like.php:127 ../../addon/facebook/facebook.php:724
+#: ../../include/conversation.php:25
 #, php-format
 msgid "%1$s likes %2$s's %3$s"
 msgstr ""
@@ -1875,29 +1842,29 @@ msgstr ""
 msgid "System error. Post not saved."
 msgstr ""
 
-#: ../../mod/item.php:552
+#: ../../mod/item.php:553
 #, php-format
 msgid ""
 "This message was sent to you by %s, a member of the Friendika social network."
 msgstr ""
 
-#: ../../mod/item.php:554
+#: ../../mod/item.php:555
 #, php-format
 msgid "You may visit them online at %s"
 msgstr ""
 
-#: ../../mod/item.php:555
+#: ../../mod/item.php:556
 msgid ""
 "Please contact the sender by replying to this post if you do not wish to "
 "receive these messages."
 msgstr ""
 
-#: ../../mod/item.php:557
+#: ../../mod/item.php:558
 #, php-format
 msgid "%s posted an update."
 msgstr ""
 
-#: ../../mod/item.php:608 ../../mod/display.php:20 ../../mod/display.php:137
+#: ../../mod/item.php:609 ../../mod/display.php:25 ../../mod/display.php:142
 msgid "Item not found."
 msgstr ""
 
@@ -1906,7 +1873,7 @@ msgid "Image uploaded but image cropping failed."
 msgstr ""
 
 #: ../../mod/profile_photo.php:61 ../../mod/profile_photo.php:68
-#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:243
+#: ../../mod/profile_photo.php:75 ../../mod/profile_photo.php:248
 #, php-format
 msgid "Image size reduction [%s] failed."
 msgstr ""
@@ -1920,35 +1887,39 @@ msgstr ""
 msgid "Image exceeds size limit of %d"
 msgstr ""
 
-#: ../../mod/profile_photo.php:188
+#: ../../mod/profile_photo.php:193
 msgid "Upload File:"
 msgstr ""
 
-#: ../../mod/profile_photo.php:189
+#: ../../mod/profile_photo.php:194
 msgid "Upload Profile Photo"
 msgstr ""
 
-#: ../../mod/profile_photo.php:190
+#: ../../mod/profile_photo.php:195
 msgid "Upload"
 msgstr ""
 
-#: ../../mod/profile_photo.php:191
+#: ../../mod/profile_photo.php:196
+msgid "skip this step"
+msgstr ""
+
+#: ../../mod/profile_photo.php:196
 msgid "select a photo from your photo albums"
 msgstr ""
 
-#: ../../mod/profile_photo.php:204
+#: ../../mod/profile_photo.php:209
 msgid "Crop Image"
 msgstr ""
 
-#: ../../mod/profile_photo.php:205
+#: ../../mod/profile_photo.php:210
 msgid "Please adjust the image cropping for optimum viewing."
 msgstr ""
 
-#: ../../mod/profile_photo.php:206
+#: ../../mod/profile_photo.php:211
 msgid "Done Editing"
 msgstr ""
 
-#: ../../mod/profile_photo.php:234
+#: ../../mod/profile_photo.php:239
 msgid "Image uploaded successfully."
 msgstr ""
 
@@ -2010,6 +1981,10 @@ msgstr ""
 msgid "Conversation removed."
 msgstr ""
 
+#: ../../mod/message.php:172 ../../include/conversation.php:691
+msgid "Please enter a link URL:"
+msgstr ""
+
 #: ../../mod/message.php:180
 msgid "Send Private Message"
 msgstr ""
@@ -2050,24 +2025,32 @@ msgstr ""
 msgid "Send Reply"
 msgstr ""
 
-#: ../../mod/profile.php:8 ../../boot.php:2198
+#: ../../mod/profile.php:11 ../../boot.php:2203
 msgid "No profile"
 msgstr ""
 
-#: ../../mod/profile.php:103
+#: ../../mod/profile.php:112
 msgid "Status"
 msgstr ""
 
-#: ../../mod/profile.php:105
+#: ../../mod/profile.php:114
 msgid "Photos"
 msgstr ""
 
-#: ../../mod/openid.php:62 ../../mod/openid.php:109 ../../include/auth.php:105
+#: ../../mod/openid.php:62 ../../mod/openid.php:118 ../../include/auth.php:105
 #: ../../include/auth.php:130 ../../include/auth.php:183
 msgid "Login failed."
 msgstr ""
 
-#: ../../mod/openid.php:73 ../../include/auth.php:194
+#: ../../mod/openid.php:78 ../../include/auth.php:199
+msgid "Welcome "
+msgstr ""
+
+#: ../../mod/openid.php:79 ../../include/auth.php:200
+msgid "Please upload a profile photo."
+msgstr ""
+
+#: ../../mod/openid.php:82 ../../include/auth.php:203
 msgid "Welcome back "
 msgstr ""
 
@@ -2089,7 +2072,7 @@ msgstr ""
 msgid "following"
 msgstr ""
 
-#: ../../mod/display.php:130
+#: ../../mod/display.php:135
 msgid "Item has been removed."
 msgstr ""
 
@@ -2110,11 +2093,11 @@ msgstr ""
 msgid "Applications"
 msgstr ""
 
-#: ../../mod/search.php:21 ../../include/nav.php:71 ../../boot.php:2043
+#: ../../mod/search.php:26 ../../include/nav.php:71 ../../boot.php:2047
 msgid "Search"
 msgstr ""
 
-#: ../../mod/search.php:64
+#: ../../mod/search.php:69
 msgid "No results."
 msgstr ""
 
@@ -2305,7 +2288,7 @@ msgid ""
 "be visible to anybody using the internet."
 msgstr ""
 
-#: ../../mod/profiles.php:421 ../../mod/directory.php:91
+#: ../../mod/profiles.php:421 ../../mod/directory.php:97
 msgid "Age: "
 msgstr ""
 
@@ -2333,19 +2316,19 @@ msgstr ""
 msgid "Edit visibility"
 msgstr ""
 
-#: ../../mod/directory.php:32
+#: ../../mod/directory.php:38
 msgid "Global Directory"
 msgstr ""
 
-#: ../../mod/directory.php:39
+#: ../../mod/directory.php:45
 msgid "Site Directory"
 msgstr ""
 
-#: ../../mod/directory.php:94
+#: ../../mod/directory.php:100
 msgid "Gender: "
 msgstr ""
 
-#: ../../mod/directory.php:120
+#: ../../mod/directory.php:126
 msgid "No entries (some entries may be hidden)."
 msgstr ""
 
@@ -2463,46 +2446,60 @@ msgstr ""
 msgid "Connection accepted at %s"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:116
+#: ../../addon/facebook/facebook.php:227
 msgid "Facebook disabled"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:124
+#: ../../addon/facebook/facebook.php:232
+msgid "Updating contacts"
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:241
 msgid "Facebook API key is missing."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:131
+#: ../../addon/facebook/facebook.php:248
 msgid "Facebook Connect"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:137
-msgid "Install Facebook post connector"
+#: ../../addon/facebook/facebook.php:254
+msgid "Install Facebook connector for this account."
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:144
-msgid "Remove Facebook post connector"
+#: ../../addon/facebook/facebook.php:261
+msgid "Remove Facebook connector"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:150
+#: ../../addon/facebook/facebook.php:267
 msgid "Post to Facebook by default"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:174
+#: ../../addon/facebook/facebook.php:329
 msgid "Facebook"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:175
+#: ../../addon/facebook/facebook.php:330
 msgid "Facebook Connector Settings"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:189
+#: ../../addon/facebook/facebook.php:344
 msgid "Post to Facebook"
 msgstr ""
 
-#: ../../addon/facebook/facebook.php:230
+#: ../../addon/facebook/facebook.php:411
+msgid ""
+"Post to Facebook cancelled because of multi-network access permission "
+"conflict."
+msgstr ""
+
+#: ../../addon/facebook/facebook.php:466
 msgid "Image: "
 msgstr ""
 
+#: ../../addon/facebook/facebook.php:526
+msgid "View on Friendika"
+msgstr ""
+
 #: ../../addon/tictac/tictac.php:14
 msgid "Three Dimensional Tic-Tac-Toe"
 msgstr ""
@@ -2714,7 +2711,7 @@ msgstr ""
 msgid "Send public postings to Twitter"
 msgstr ""
 
-#: ../../include/profile_advanced.php:23 ../../boot.php:2277
+#: ../../include/profile_advanced.php:23 ../../boot.php:2289
 msgid "Gender:"
 msgstr ""
 
@@ -2738,7 +2735,7 @@ msgstr ""
 msgid "<span class=\"heart\">&hearts;</span> Status:"
 msgstr ""
 
-#: ../../include/profile_advanced.php:103 ../../boot.php:2283
+#: ../../include/profile_advanced.php:103 ../../boot.php:2295
 msgid "Homepage:"
 msgstr ""
 
@@ -3058,7 +3055,7 @@ msgstr ""
 msgid "Everybody"
 msgstr ""
 
-#: ../../include/nav.php:41 ../../boot.php:850
+#: ../../include/nav.php:41 ../../boot.php:852
 msgid "Logout"
 msgstr ""
 
@@ -3162,24 +3159,28 @@ msgstr ""
 msgid " ago"
 msgstr ""
 
+#: ../../include/bbcode.php:83
+msgid "Image/photo"
+msgstr ""
+
 #: ../../include/dba.php:31
 #, php-format
 msgid "Cannot locate DNS info for database server '%s'"
 msgstr ""
 
-#: ../../include/acl_selectors.php:135
+#: ../../include/acl_selectors.php:133
 msgid "Visible To:"
 msgstr ""
 
-#: ../../include/acl_selectors.php:139 ../../include/acl_selectors.php:154
+#: ../../include/acl_selectors.php:137 ../../include/acl_selectors.php:152
 msgid "Groups"
 msgstr ""
 
-#: ../../include/acl_selectors.php:150
+#: ../../include/acl_selectors.php:148
 msgid "Except For:"
 msgstr ""
 
-#: ../../include/notifier.php:412
+#: ../../include/notifier.php:414
 msgid "(no subject)"
 msgstr ""
 
@@ -3187,8 +3188,8 @@ msgstr ""
 msgid "You have a new follower at "
 msgstr ""
 
-#: ../../include/conversation.php:192 ../../include/conversation.php:458
-#: ../../include/conversation.php:459
+#: ../../include/conversation.php:192 ../../include/conversation.php:459
+#: ../../include/conversation.php:460
 #, php-format
 msgid "View %s's profile"
 msgstr ""
@@ -3201,82 +3202,110 @@ msgstr ""
 msgid "See more posts like this"
 msgstr ""
 
-#: ../../include/conversation.php:303
+#: ../../include/conversation.php:304
 #, php-format
 msgid "See all %d comments"
 msgstr ""
 
-#: ../../include/conversation.php:460
+#: ../../include/conversation.php:461
 msgid "to"
 msgstr ""
 
-#: ../../include/conversation.php:461
+#: ../../include/conversation.php:462
 msgid "Wall-to-Wall"
 msgstr ""
 
-#: ../../include/conversation.php:462
+#: ../../include/conversation.php:463
 msgid "via Wall-To-Wall:"
 msgstr ""
 
-#: ../../include/conversation.php:599
+#: ../../include/conversation.php:600
 msgid "View status"
 msgstr ""
 
-#: ../../include/conversation.php:600
+#: ../../include/conversation.php:601
 msgid "View profile"
 msgstr ""
 
-#: ../../include/conversation.php:601
+#: ../../include/conversation.php:602
 msgid "View photos"
 msgstr ""
 
-#: ../../include/conversation.php:602
+#: ../../include/conversation.php:603
 msgid "View recent"
 msgstr ""
 
-#: ../../include/conversation.php:604
+#: ../../include/conversation.php:605
 msgid "Send PM"
 msgstr ""
 
-#: ../../include/conversation.php:654
+#: ../../include/conversation.php:655
 #, php-format
 msgid "%s likes this."
 msgstr ""
 
-#: ../../include/conversation.php:654
+#: ../../include/conversation.php:655
 #, php-format
 msgid "%s doesn't like this."
 msgstr ""
 
-#: ../../include/conversation.php:658
+#: ../../include/conversation.php:659
 #, php-format
 msgid "<span  %1$s>%2$d people</span> like this."
 msgstr ""
 
-#: ../../include/conversation.php:660
+#: ../../include/conversation.php:661
 #, php-format
 msgid "<span  %1$s>%2$d people</span> don't like this."
 msgstr ""
 
-#: ../../include/conversation.php:666
+#: ../../include/conversation.php:667
 msgid "and"
 msgstr ""
 
-#: ../../include/conversation.php:669
+#: ../../include/conversation.php:670
 #, php-format
 msgid ", and %d other people"
 msgstr ""
 
-#: ../../include/conversation.php:670
+#: ../../include/conversation.php:671
 #, php-format
 msgid "%s like this."
 msgstr ""
 
-#: ../../include/conversation.php:670
+#: ../../include/conversation.php:671
 #, php-format
 msgid "%s don't like this."
 msgstr ""
 
+#: ../../include/conversation.php:690
+msgid "Visible to <strong>everybody</strong>"
+msgstr ""
+
+#: ../../include/conversation.php:692
+msgid "Please enter a YouTube link:"
+msgstr ""
+
+#: ../../include/conversation.php:693
+msgid "Please enter a video(.ogg) link/URL:"
+msgstr ""
+
+#: ../../include/conversation.php:694
+msgid "Please enter an audio(.ogg) link/URL:"
+msgstr ""
+
+#: ../../include/conversation.php:695
+msgid "Where are you right now?"
+msgstr ""
+
+#: ../../include/conversation.php:696
+msgid "Enter a title for this item"
+msgstr ""
+
+#: ../../include/conversation.php:743
+msgid "Set title"
+msgstr ""
+
 #: ../../boot.php:372
 msgid "Delete this item?"
 msgstr ""
@@ -3305,146 +3334,146 @@ msgstr ""
 msgid "Forgot your password?"
 msgstr ""
 
-#: ../../boot.php:1091
+#: ../../boot.php:1093
 msgid "prev"
 msgstr ""
 
-#: ../../boot.php:1093
+#: ../../boot.php:1095
 msgid "first"
 msgstr ""
 
-#: ../../boot.php:1122
+#: ../../boot.php:1124
 msgid "last"
 msgstr ""
 
-#: ../../boot.php:1125
+#: ../../boot.php:1127
 msgid "next"
 msgstr ""
 
-#: ../../boot.php:1984
+#: ../../boot.php:1988
 msgid "No contacts"
 msgstr ""
 
-#: ../../boot.php:1992
+#: ../../boot.php:1996
 #, php-format
 msgid "%d Contact"
 msgid_plural "%d Contacts"
 msgstr[0] ""
 msgstr[1] ""
 
-#: ../../boot.php:2255
+#: ../../boot.php:2262
 msgid "Connect"
 msgstr ""
 
-#: ../../boot.php:2265
+#: ../../boot.php:2277
 msgid "Location:"
 msgstr ""
 
-#: ../../boot.php:2269
+#: ../../boot.php:2281
 msgid ", "
 msgstr ""
 
-#: ../../boot.php:2281
+#: ../../boot.php:2293
 msgid "Status:"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Monday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Tuesday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Wednesday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Thursday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Friday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Saturday"
 msgstr ""
 
-#: ../../boot.php:2374
+#: ../../boot.php:2386
 msgid "Sunday"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "January"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "February"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "March"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "April"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "May"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "June"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "July"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "August"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "September"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "October"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "November"
 msgstr ""
 
-#: ../../boot.php:2378
+#: ../../boot.php:2390
 msgid "December"
 msgstr ""
 
-#: ../../boot.php:2393
+#: ../../boot.php:2405
 msgid "g A l F d"
 msgstr ""
 
-#: ../../boot.php:2410
+#: ../../boot.php:2422
 msgid "Birthday Reminders"
 msgstr ""
 
-#: ../../boot.php:2411
+#: ../../boot.php:2423
 msgid "Birthdays this week:"
 msgstr ""
 
-#: ../../boot.php:2412
+#: ../../boot.php:2424
 msgid "(Adjusted for local time)"
 msgstr ""
 
-#: ../../boot.php:2423
+#: ../../boot.php:2435
 msgid "[today]"
 msgstr ""
 
-#: ../../boot.php:2624
+#: ../../boot.php:2636
 msgid "link to source"
 msgstr ""
 
index cdfd3e6cfd5461c845bf90f5bc7f59adcc35c466..0000e30f6a7f7a96ce0954a0e3faf7c11e5bc458 100644 (file)
@@ -143,6 +143,7 @@ $a->strings['Remote site reported: '] = 'Remote site reported: ';
 $a->strings["Temporary failure. Please wait and try again."] = "Temporary failure. Please wait and try again.";
 $a->strings["Introduction failed or was revoked."] = "Introduction failed or was revoked.";
 $a->strings['Unable to set contact photo.'] = 'Unable to set contact photo.';
+$a->strings['%1$s is now friends with %2$s'] = '%1$s is now friends with %2$s';
 $a->strings['Our site encryption key is apparently messed up.'] = 'Our site encryption key is apparently messed up.';
 $a->strings['Empty site URL was provided or URL could not be decrypted by us.'] = 'Empty site URL was provided or URL could not be decrypted by us.';
 $a->strings['Contact record was not found for you on our site.'] = 'Contact record was not found for you on our site.';
@@ -177,6 +178,7 @@ $a->strings['Please confirm your introduction/connection request to %s.'] = 'Ple
 $a->strings['Confirm'] = 'Confirm';
 $a->strings['[Name Withheld]'] = '[Name Withheld]';
 $a->strings["Introduction received at "] = "Introduction received at ";
+$a->strings['Public access denied.'] = 'Public access denied.';
 $a->strings['Friend/Connection Request'] = 'Friend/Connection Request';
 $a->strings['Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca'] = 'Examples: jojo@demo.friendika.com, http://demo.friendika.com/profile/jojo, testuser@identi.ca';
 $a->strings['Please answer the following:'] = 'Please answer the following:';
@@ -354,13 +356,6 @@ $a->strings['Normal View'] = 'Normal View';
 $a->strings['New Item View'] = 'New Item View';
 $a->strings['Warning: This group contains %s from an insecure network.'] = 'Warning: This group contains %s from an insecure network.';
 $a->strings['Private messages to this group are at risk of public disclosure.'] = 'Private messages to this group are at risk of public disclosure.';
-$a->strings['Please enter a YouTube link:'] = 'Please enter a YouTube link:';
-$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Please enter a video\x28.ogg\x29 link/URL:";
-$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Please enter an audio\x28.ogg\x29 link/URL:";
-$a->strings['Where are you right now?'] = 'Where are you right now?';
-$a->strings['Enter a title for this item'] = 'Enter a title for this item';
-$a->strings['Share'] = 'Share';
-$a->strings['Set title'] = 'Set title';
 $a->strings['No such group'] = 'No such group';
 $a->strings['Group is empty'] = 'Group is empty';
 $a->strings['Group: '] = 'Group: ';
@@ -393,6 +388,8 @@ $a->strings['Deny'] = 'Deny';
 $a->strings['No registrations.'] = 'No registrations.';
 $a->strings['Post successful.'] = 'Post successful.';
 $a->strings['Login failed.'] = 'Login failed.';
+$a->strings["Welcome "] = "Welcome ";
+$a->strings['Please upload a profile photo.'] = 'Please upload a profile photo.';
 $a->strings["Welcome back "] = "Welcome back ";
 $a->strings['Photo Albums'] = 'Photo Albums';
 $a->strings['Contact Photos'] = 'Contact Photos';
@@ -427,6 +424,7 @@ $a->strings['Add a Tag'] = 'Add a Tag';
 $a->strings['Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping'] = 'Example: @bob, @Barbara_Jensen, @jim@example.com, #California, #camping';
 $a->strings["I like this \x28toggle\x29"] = "I like this \x28toggle\x29";
 $a->strings["I don't like this \x28toggle\x29"] = "I don't like this \x28toggle\x29";
+$a->strings['Share'] = 'Share';
 $a->strings['This is you'] = 'This is you';
 $a->strings['Recent Photos'] = 'Recent Photos';
 $a->strings['Upload New Photos'] = 'Upload New Photos';
@@ -440,6 +438,7 @@ $a->strings['Upload File:'] = 'Upload File:';
 $a->strings['Upload Profile Photo'] = 'Upload Profile Photo';
 $a->strings['Upload'] = 'Upload';
 $a->strings['or'] = 'or';
+$a->strings['skip this step'] = 'skip this step';
 $a->strings['select a photo from your photo albums'] = 'select a photo from your photo albums';
 $a->strings['Crop Image'] = 'Crop Image';
 $a->strings['Please adjust the image cropping for optimum viewing.'] = 'Please adjust the image cropping for optimum viewing.';
@@ -606,6 +605,7 @@ $a->strings['Visible To:'] = 'Visible To:';
 $a->strings['Groups'] = 'Groups';
 $a->strings['Except For:'] = 'Except For:';
 $a->strings['Logged out.'] = 'Logged out.';
+$a->strings['Image/photo'] = 'Image/photo';
 $a->strings['Unknown | Not categorised'] = 'Unknown | Not categorised';
 $a->strings['Block immediately'] = 'Block immediately';
 $a->strings['Shady, spammer, self-marketer'] = 'Shady, spammer, self-marketer';
@@ -633,6 +633,13 @@ $a->strings['and'] = 'and';
 $a->strings[', and %d other people'] = ', and %d other people';
 $a->strings['%s like this.'] = '%s like this.';
 $a->strings['%s don\'t like this.'] = '%s don\'t like this.';
+$a->strings['Visible to <strong>everybody</strong>'] = 'Visible to <strong>everybody</strong>';
+$a->strings['Please enter a YouTube link:'] = 'Please enter a YouTube link:';
+$a->strings["Please enter a video\x28.ogg\x29 link/URL:"] = "Please enter a video\x28.ogg\x29 link/URL:";
+$a->strings["Please enter an audio\x28.ogg\x29 link/URL:"] = "Please enter an audio\x28.ogg\x29 link/URL:";
+$a->strings['Where are you right now?'] = 'Where are you right now?';
+$a->strings['Enter a title for this item'] = 'Enter a title for this item';
+$a->strings['Set title'] = 'Set title';
 $a->strings['Miscellaneous'] = 'Miscellaneous';
 $a->strings['less than a second ago'] = 'less than a second ago';
 $a->strings['year'] = 'year';
@@ -730,15 +737,18 @@ $a->strings['Complicated'] = 'Complicated';
 $a->strings['Don\'t care'] = 'Don\'t care';
 $a->strings['Ask me'] = 'Ask me';
 $a->strings['Facebook disabled'] = 'Facebook disabled';
+$a->strings['Updating contacts'] = 'Updating contacts';
 $a->strings['Facebook API key is missing.'] = 'Facebook API key is missing.';
 $a->strings['Facebook Connect'] = 'Facebook Connect';
-$a->strings['Install Facebook post connector'] = 'Install Facebook post connector';
-$a->strings['Remove Facebook post connector'] = 'Remove Facebook post connector';
+$a->strings['Install Facebook connector for this account.'] = 'Install Facebook connector for this account.';
+$a->strings['Remove Facebook connector'] = 'Remove Facebook connector';
 $a->strings['Post to Facebook by default'] = 'Post to Facebook by default';
 $a->strings['Facebook'] = 'Facebook';
 $a->strings['Facebook Connector Settings'] = 'Facebook Connector Settings';
 $a->strings['Post to Facebook'] = 'Post to Facebook';
+$a->strings['Post to Facebook cancelled because of multi-network access permission conflict.'] = 'Post to Facebook cancelled because of multi-network access permission conflict.';
 $a->strings['Image: '] = 'Image: ';
+$a->strings['View on Friendika'] = 'View on Friendika';
 $a->strings['Select files to upload: '] = 'Select files to upload: ';
 $a->strings['Use the following controls only if the Java uploader [above] fails to launch.'] = 'Use the following controls only if the Java uploader [above] fails to launch.';
 $a->strings['Upload a file'] = 'Upload a file';
index 039c8d235c39e9e29c223b38530bd03b88952797..97134aedd7dc3a34f320e51d1fd283535565acd5 100644 (file)
        <div id="contact-edit-nav-wrapper" >
 
                <div id="contact-edit-links" >
-                       <a href="contacts/$contact_id/block" id="contact-edit-block-link" ><img src="images/b_block.gif" alt="$blockunblock" title="$block_text"/></a>
-                       <a href="contacts/$contact_id/ignore" id="contact-edit-ignore-link" ><img src="images/no.gif" alt="$ignorecont" title="$ignore_text"/></a>
-                       <a href="crepair/$contact_id" id="contact-edit-repair" ><img src="images/tools.png" alt="$altcrepair" title="$lblcrepair"/></a>
+                       <a href="contacts/$contact_id/block" class="icon block" id="contact-edit-block-link" title="$block_text"></a>
+                       <a href="contacts/$contact_id/ignore" class="icon no" id="contact-edit-ignore-link" title="$ignore_text"></a>
+                       <a href="crepair/$contact_id" class="icon tools" id="contact-edit-repair" title="$lblcrepair"></a>
 
                </div>
                <div id="contact-drop-links" >
-                       <a href="contacts/$contact_id/drop" id="contact-edit-drop-link" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" /></a>
+                       <a href="contacts/$contact_id/drop" class="icon drophide" id="contact-edit-drop-link" onclick="return confirmDelete();"  title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);"></a>
                </div>
                <div id="contact-edit-nav-end"></div>
 
index 5b99f1be1c7b113a4ece99bd784d1cd8733b73ab..e9f616760d47d1487a16bb7c64257ecdd10542d1 100644 (file)
@@ -7,7 +7,7 @@
                        </div>
                        <div class="contact-entry-direction-end" ></div>
                        <div class="contact-entry-edit-links" >
-                               <a href="contacts/$id" class="contact-entry-edit-link" ><img src="images/b_edit.gif" alt="$edit_hover" title="$edit_hover" /></a>
+                               <a class="icon pencil" href="contacts/$id" class="contact-entry-edit-link" title="$edit_hover"></a>
                        </div>
                        <div class="contact-entry-edit-end"></div>
                </div>
index d3bb6b411e3b047a79a86b791c5caeab66bdf400..0ce28b4a06693d19795e3a29f8c4c8b59f157722 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
index d3bb6b411e3b047a79a86b791c5caeab66bdf400..0ce28b4a06693d19795e3a29f8c4c8b59f157722 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
index 180f7885ccaeb572bd29bbfdedabe6c2870a4ae6..4de26611296604110b65e109dca88aa2c3e3db8a 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
index d31d5a39ff2a4606a230806daf7cc2e32829c12c..c65114a68a413d6bfe6538139a04664912632044 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
index c87ea459f60143de9bf8bdbdba2e9c61b902d022..bd9852b962284977c31ed03c1c7049c0f179078f 100644 (file)
@@ -1 +1,10 @@
-<div class="group-delete-wrapper" id="group-delete-wrapper-$id" ><a href="group/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="group-delete-icon-$id" class="group-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="group-delete-end"></div>
+<div class="group-delete-wrapper" id="group-delete-wrapper-$id" >
+       <a href="group/drop/$id" 
+               onclick="return confirmDelete();" 
+               title="$delete" 
+               id="group-delete-icon-$id" 
+               class="icon drophide group-delete-icon" 
+               onmouseover="imgbright(this);" 
+               onmouseout="imgdull(this);" ></a>
+</div>
+<div class="group-delete-end"></div>
index 180f7885ccaeb572bd29bbfdedabe6c2870a4ae6..4de26611296604110b65e109dca88aa2c3e3db8a 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
index 94f0f58f844c584fe4637f0c4b2b41fdec53eaa9..3b4c8c615a2dc7fb654c51245bf8b80887f239f0 100644 (file)
@@ -3,6 +3,7 @@
 <script language="javascript" type="text/javascript">
 
 var editor;
+var textlen = 0;
 
 tinyMCE.init({
        theme : "advanced",
@@ -29,23 +30,29 @@ tinyMCE.init({
             //Character count
                ed.onKeyUp.add(function(ed, e) {
                        var txt = tinyMCE.activeEditor.getContent();
-                       var text = txt.length;
-                       if(txt.length <= 140) {
+                       textlen = txt.length;
+                       if(textlen != 0 && $('#jot-perms-icon').is('.unlock')) {
+                               $('#profile-jot-desc').html(ispublic);
+                       }
+                       else {
+                               $('#profile-jot-desc').html('&nbsp;');
+                       }        
+                       if(textlen <= 140) {
                                $('#character-counter').removeClass('red');
                                $('#character-counter').removeClass('orange');
                                $('#character-counter').addClass('grey');
                        }
-                       if((txt.length > 140) && (txt .length <= 420)) {
+                       if((textlen > 140) && (textlen <= 420)) {
                                $('#character-counter').removeClass('grey');
                                $('#character-counter').removeClass('red');
                                $('#character-counter').addClass('orange');
                        }
-                       if(txt.length > 420) {
+                       if(textlen > 420) {
                                $('#character-counter').removeClass('grey');
                                $('#character-counter').removeClass('orange');
                                $('#character-counter').addClass('red');
                        }
-                       $('#character-counter').text(text);
+                       $('#character-counter').text(textlen);
        });
 
                ed.onInit.add(function(ed) {
@@ -58,6 +65,7 @@ tinyMCE.init({
 </script>
 <script type="text/javascript" src="include/ajaxupload.js" ></script>
 <script>
+       var ispublic = '$ispublic';
        $(document).ready(function() {
                var uploader = new window.AjaxUpload(
                        'wall-image-upload',
@@ -74,11 +82,11 @@ tinyMCE.init({
                        var selstr;
                        $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
                                selstr = $(this).text();
-                               $('#profile-jot-perms img').attr('src', 'images/lock_icon.gif');
+                               $('#jot-perms-icon').removeClass('unlock').addClass('lock');
                                $('.profile-jot-net input').attr('disabled', 'disabled');
                        });
                        if(selstr == null) { 
-                               $('#profile-jot-perms img').attr('src', 'images/unlock_icon.gif');
+                               $('#jot-perms-icon').removeClass('lock').addClass('unlock');
                                $('.profile-jot-net input').attr('disabled', false);
                        }
 
index f5010301f6e8014cddb2ee137f449fc05a2d17b2..31f2eff04a8884e9e7781dc909452be85b3664ec 100644 (file)
 <div id="profile-jot-submit-wrapper" >
 <input type="submit" id="profile-jot-submit" name="submit" value="$share" />
        <div id="profile-upload-wrapper" style="display: $visitor;" >
-               <div id="wall-image-upload-div" ><img id="wall-image-upload" src="images/camera-icon.gif" alt="$upload" title="$upload" /></div>
+               <div id="wall-image-upload-div" ><a href="#" onclick="return false;" id="wall-image-upload" class="icon camera" title="$upload"></a></div>
        </div> 
        <div id="profile-link-wrapper" style="display: $visitor;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
-               <img id="profile-link" src="images/link-icon.gif" alt="$weblink" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink();" />
+               <a id="profile-link" class="icon link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
        </div> 
        <div id="profile-youtube-wrapper" style="display: $visitor;" >
-               <img id="profile-youtube" src="images/youtube_icon.gif" alt="$youtube" title="$youtube" onclick="jotGetVideo();" />
+               <a id="profile-youtube" class="icon youtube" title="$youtube" onclick="jotGetVideo();return false;"></a>
        </div> 
        <div id="profile-video-wrapper" style="display: $visitor;" >
-               <img id="profile-video" src="images/video.gif" alt="$video" title="$video" onclick="jotVideoURL();" />
+               <a id="profile-video" class="icon video" title="$video" onclick="jotVideoURL();return false;"></a>
        </div> 
        <div id="profile-audio-wrapper" style="display: $visitor;" >
-               <img id="profile-audio" src="images/audio.gif" alt="$audio" title="$audio" onclick="jotAudioURL();" />
+               <a id="profile-audio" class="icon audio" title="$audio" onclick="jotAudioURL();return false;"></a>
        </div> 
        <div id="profile-location-wrapper" style="display: $visitor;" >
-               <img id="profile-location" src="images/globe.gif" alt="$setloc" title="$setloc" onclick="jotGetLocation();" />
+               <a id="profile-location" class="icon globe" title="$setloc" onclick="jotGetLocation();return false;"></a>
        </div> 
        <div id="profile-nolocation-wrapper" style="display: none;" >
-               <img id="profile-nolocation" src="images/noglobe.gif" alt="$noloc" title="$noloc" onclick="jotClearLocation();" />
+               <a id="profile-nolocation" class="icon noglobe" title="$noloc" onclick="jotClearLocation();return false;"></a>
        </div> 
        <div id="profile-title-wrapper" style="display: $visitor;" >
-               <img id="profile-title" src="images/article.gif" alt="$title" title="$title" onclick="jotTitle();" />
+               <a id="profile-title" class="icon article" title="$title" onclick="jotTitle();return false;"></a>
        </div> 
 
        <div id="profile-jot-plugin-wrapper">
        <div id="profile-rotator-wrapper" style="display: $visitor;" >
                <img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
        </div> 
-       <div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><img id="jot-perms-icon" src="images/$lockstate_icon.gif"  alt="$permset" title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');" />$bang</div>
+       <div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" >
+               <a id="jot-perms-icon" class="icon $lockstate"  title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');return false;"></a>$bang
+       </div>
        <div id="profile-jot-perms-end"></div>
        <div id="profile-jot-email-wrapper" style="display: none;" >
-       <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
-       <div id="profile-jot-email-end"></div>
+               <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
+               <div id="profile-jot-email-end"></div>
        </div>
        <div id="profile-jot-networks" style="display: none;" >
-       $jotnets
+               $jotnets
        </div>
        <div id="profile-jot-networks-end"></div>
        <div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
index 0a1c6bfe83183cf3bdd76b706bb6901dcb556ceb..ce5af04cef93146d67969f02e1f0778da0421788 100644 (file)
@@ -1,6 +1,6 @@
 <div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
-                               <img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
-                               <img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
-                               <img src="images/recycle.gif" alt="$share" title="$share" class="wall-item-share-buttons" onclick="jotShare($id);" />
+                               <a href="#" class="icon like"title="$likethis" onclick="dolike($id,'like'); return false"></a>
+                               <a href="#" class="icon dislike" title="$nolike" onclick="dolike($id,'dislike'); return false"></a>
+                               <a href="#" class="icon recycle wall-item-share-buttons" title="$share"onclick="jotShare($id); return false"></a>
                                <img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
                        </div>
index e36a624a4196b072f923c0627a663ff041650896..2c467c3c26a9dafb91585dd096873375978011af 100644 (file)
@@ -1,5 +1,5 @@
 <div class="wall-item-like-buttons" id="wall-item-like-buttons-$id">
-                               <img src="images/like.gif" alt="$likethis" title="$likethis" onclick="dolike($id,'like');" />
-                               <img src="images/dislike.gif" alt="$nolike" title="$nolike" onclick="dolike($id,'dislike');" />
+                               <a href="#" class="icon like"title="$likethis" onclick="dolike($id,'like'); return false"></a>
+                               <a href="#" class="icon dislike" title="$nolike" onclick="dolike($id,'dislike'); return false"></a>
                                <img id="like-rotator-$id" class="like-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
                        </div>
index 1ef714f7a98ae272e375234c13b33b0292e76f42..8c8e78276e0d73a93daf6bad5546bf508589cad1 100644 (file)
@@ -8,6 +8,9 @@
                <div class="mail-list-subject"><a href="message/$id" class="mail-list-link">$subject</a></div>
        </div>
 </div>
-<div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-$id" ><a href="message/dropconv/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="mail-list-delete-icon-$id" class="mail-list-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div><div class="mail-list-delete-end"></div>
+<div class="mail-list-delete-wrapper" id="mail-list-delete-wrapper-$id" >
+       <a href="message/dropconv/$id" onclick="return confirmDelete();"  title="$delete" class="icon drophide mail-list-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+</div>
+<div class="mail-list-delete-end"></div>
 
 <div class="mail-list-outside-wrapper-end"></div>
diff --git a/view/photo_view.tpl b/view/photo_view.tpl
new file mode 100644 (file)
index 0000000..6287b08
--- /dev/null
@@ -0,0 +1,37 @@
+<div id="live-display"></div>
+<h3><a href="$album.0">$album.1</a></h3>
+
+<div id="photo-edit-link-wrap">
+{{ if $tools }}
+<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
+-
+<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
+{{ endif }}
+{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
+</div>
+
+{{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
+<div id="photo-photo"><a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a></div>
+{{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
+<div id="photo-photo-end"></div>
+<div id="photo-caption" >$desc</div>
+{{ if $tags }}
+<div id="in-this-photo-text">$tags.0</div>
+<div id="in-this-photo">$tags.1</div>
+{{ endif }}
+{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
+
+{{ if $edit }}$edit{{ endif }}
+
+{{ if $likebuttons }}
+<div id="photo-like-div">
+       $likebuttons
+       $like
+       $dislike        
+</div>
+{{ endif }}
+
+$comments
+
+$paginate
+
index cf6ff50eec20ca11d5700c5e479f25071023e79b..7c3894145422f9b70d6cdf3b2ac7aa80b8a84d63 100644 (file)
@@ -17,12 +17,12 @@ $select
 
 </div>
 <div id="prvmail-submit-wrapper" >
-<input type="submit" id="prvmail-submit" name="submit" value="Submit" />
+       <input type="submit" id="prvmail-submit" name="submit" value="Submit" />
        <div id="prvmail-upload-wrapper" >
-               <div id="prvmail-upload-div" ><img id="prvmail-upload" src="images/camera-icon.gif" alt="$upload" title="$upload" /></div>
+               <div id="prvmail-upload"class="icon border camera" title="$upload" /></div>
        </div> 
        <div id="prvmail-link-wrapper" >
-               <img id="prvmail-link" src="images/link-icon.gif" alt="$insert" title="$insert" onclick="jotGetLink();" />
+               <div id="prvmail-link" class="icon border link" title="$insert" onclick="jotGetLink();" ></div>
        </div> 
        <div id="prvmail-rotator-wrapper" >
                <img id="prvmail-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display: none;" />
index 131460828b9707c61d880c933bbc1677ac5e0cd2..ac8388de4459cc0b2562239cf786e6c61f09d26f 100644 (file)
@@ -1,6 +1,6 @@
 <h3>$regtitle</h3>
 
-<form action="register" method="post" >
+<form action="register" method="post" id="register-form">
 
        <input type="hidden" name="photo" value="$photo" />
 
index d3bb6b411e3b047a79a86b791c5caeab66bdf400..0ce28b4a06693d19795e3a29f8c4c8b59f157722 100644 (file)
@@ -37,7 +37,7 @@ $a->config['admin_email'] = '';
 
 // Maximum size of an imported message, 0 is unlimited
 
-$a->config['max_import_size'] = 10000;
+$a->config['max_import_size'] = 200000;
 
 // maximum size of uploaded photos
 
diff --git a/view/theme/dispy/connect.png b/view/theme/dispy/connect.png
new file mode 100644 (file)
index 0000000..b76fc13
Binary files /dev/null and b/view/theme/dispy/connect.png differ
diff --git a/view/theme/dispy/icons.png b/view/theme/dispy/icons.png
new file mode 100644 (file)
index 0000000..43228bb
Binary files /dev/null and b/view/theme/dispy/icons.png differ
diff --git a/view/theme/dispy/jot-header.tpl b/view/theme/dispy/jot-header.tpl
new file mode 100644 (file)
index 0000000..4661161
--- /dev/null
@@ -0,0 +1,175 @@
+
+<script language="javascript" type="text/javascript" src="$baseurl/tinymce/jscripts/tiny_mce/tiny_mce_src.js"></script>
+<script language="javascript" type="text/javascript">
+
+var editor;
+
+tinyMCE.init({
+       theme : "advanced",
+       mode : "specific_textareas",
+       editor_selector: /(profile-jot-text|prvmail-text)/,
+       plugins : "bbcode,paste",
+       theme_advanced_buttons1 : "bold,italic,underline,undo,redo,link,unlink,image,forecolor,formatselect,code",
+       theme_advanced_buttons2 : "",
+       theme_advanced_buttons3 : "",
+       theme_advanced_toolbar_location : "top",
+       theme_advanced_toolbar_align : "center",
+       theme_advanced_blockformats : "blockquote,code",
+       //theme_advanced_resizing : true,
+       //theme_advanced_statusbar_location : "bottom",
+       paste_text_sticky : true,
+       entity_encoding : "raw",
+       add_unload_trigger : false,
+       remove_linebreaks : false,
+       force_p_newlines : false,
+       force_br_newlines : true,
+       forced_root_block : '',
+       convert_urls: false,
+       content_css: "$baseurl/view/custom_tinymce.css",
+       theme_advanced_path : false,
+       setup : function(ed) {
+            //Character count
+               ed.onKeyUp.add(function(ed, e) {
+                       var txt = tinyMCE.activeEditor.getContent();
+                       var text = txt.length;
+                       if(txt.length <= 140) {
+                               $('#character-counter').removeClass('red');
+                               $('#character-counter').removeClass('orange');
+                               $('#character-counter').addClass('grey');
+                       }
+                       if((txt.length > 140) && (txt .length <= 420)) {
+                               $('#character-counter').removeClass('grey');
+                               $('#character-counter').removeClass('red');
+                               $('#character-counter').addClass('orange');
+                       }
+                       if(txt.length > 420) {
+                               $('#character-counter').removeClass('grey');
+                               $('#character-counter').removeClass('orange');
+                               $('#character-counter').addClass('red');
+                       }
+                       $('#character-counter').text(text);
+       });
+
+               ed.onInit.add(function(ed) {
+                       ed.pasteAsPlainText = true;
+               });
+
+       }
+});
+
+</script>
+<script type="text/javascript" src="include/ajaxupload.js" ></script>
+<script>
+       $(document).ready(function() {
+               var uploader = new window.AjaxUpload(
+                       'wall-image-upload',
+                       { action: 'wall_upload/$nickname',
+                               name: 'userfile',
+                               onSubmit: function(file,ext) { $('#profile-rotator').show(); },
+                               onComplete: function(file,response) {
+                                       tinyMCE.execCommand('mceInsertRawHTML',false,response);
+                                       $('#profile-rotator').hide();
+                               }                                
+                       }
+               );
+               $('#contact_allow, #contact_deny, #group_allow, #group_deny').change(function() {
+                       var selstr;
+                       $('#contact_allow option:selected, #contact_deny option:selected, #group_allow option:selected, #group_deny option:selected').each( function() {
+                               selstr = $(this).text();
+                               $('#jot-perms-icon').removeClass('unlock').addClass('lock');
+                               $('.profile-jot-net input').attr('disabled', 'disabled');
+                       });
+                       if(selstr == null) { 
+                               $('#jot-perms-icon').removeClass('lock').addClass('unlock');
+                               $('.profile-jot-net input').attr('disabled', false);
+                       }
+
+               }).trigger('change');
+
+       });
+
+       function jotGetLink() {
+               reply = prompt("$linkurl");
+               if(reply && reply.length) {
+                       reply = bin2hex(reply);
+                       $('#profile-rotator').show();
+                       $.get('parse_url?url=' + reply, function(data) {
+                               tinyMCE.execCommand('mceInsertRawHTML',false,data);
+                               $('#profile-rotator').hide();
+                       });
+               }
+       }
+
+       function jotGetVideo() {
+               reply = prompt("$utubeurl");
+               if(reply && reply.length) {
+                       tinyMCE.execCommand('mceInsertRawHTML',false,'[youtube]' + reply + '[/youtube]');
+               }
+       }
+
+       function jotVideoURL() {
+               reply = prompt("$vidurl");
+               if(reply && reply.length) {
+                       tinyMCE.execCommand('mceInsertRawHTML',false,'[video]' + reply + '[/video]');
+               }
+       }
+
+       function jotAudioURL() {
+               reply = prompt("$audurl");
+               if(reply && reply.length) {
+                       tinyMCE.execCommand('mceInsertRawHTML',false,'[audio]' + reply + '[/audio]');
+               }
+       }
+
+
+       function jotGetLocation() {
+               reply = prompt("$whereareu", $('#jot-location').val());
+               if(reply && reply.length) {
+                       $('#jot-location').val(reply);
+               }
+       }
+
+       function jotTitle() {
+               reply = prompt("$title", $('#jot-title').val());
+               if(reply && reply.length) {
+                       $('#jot-title').val(reply);
+               }
+       }
+
+       function jotShare(id) {
+               $('#like-rotator-' + id).show();
+               $.get('share/' + id, function(data) {
+                       tinyMCE.execCommand('mceInsertRawHTML',false,data);
+                       $('#like-rotator-' + id).hide();
+                       $(window).scrollTop(0);
+               });
+       }
+
+       function linkdropper(event) {
+               var linkFound = event.dataTransfer.types.contains("text/uri-list");
+               if(linkFound)
+                       event.preventDefault();
+       }
+
+       function linkdrop(event) {
+               var reply = event.dataTransfer.getData("text/uri-list");
+               event.target.textContent = reply;
+               event.preventDefault();
+               if(reply && reply.length) {
+                       $('#profile-rotator').show();
+                       $.get('parse_url?url=' + reply, function(data) {
+                               tinyMCE.execCommand('mceInsertRawHTML',false,data);
+                               $('#profile-rotator').hide();
+                       });
+               }
+       }
+
+       function jotClearLocation() {
+               $('#jot-coord').val('');
+               $('#profile-nolocation-wrapper').hide();
+       }
+
+       $geotag
+
+</script>
+
diff --git a/view/theme/dispy/jot.tpl b/view/theme/dispy/jot.tpl
new file mode 100644 (file)
index 0000000..ab121db
--- /dev/null
@@ -0,0 +1,72 @@
+
+<div id="profile-jot-wrapper" > 
+       <div id="profile-jot-banner-wrapper">
+               <div id="profile-jot-desc" >&nbsp;</div>
+               <div id="character-counter" class="grey">0</div>
+               <div id="profile-rotator-wrapper" style="display: $visitor;" >
+                       <img id="profile-rotator" src="images/rotator.gif" alt="$wait" title="$wait" style="display:none;"  />
+               </div>          
+       </div>
+
+       <form id="profile-jot-form" action="$action" method="post" >
+               <input type="hidden" name="type" value="wall" />
+               <input type="hidden" name="profile_uid" value="$profile_uid" />
+               <input type="hidden" name="return" value="$return_path" />
+               <input type="hidden" name="location" id="jot-location" value="$defloc" />
+               <input type="hidden" name="coord" id="jot-coord" value="" />
+               <input type="hidden" name="title" id="jot-title" value="" />
+               <input type="hidden" name="post_id" value="$post_id" />
+
+               <textarea rows="5" style="width:100%" class="profile-jot-text" id="profile-jot-text" name="body" >$content</textarea>
+
+
+<div id="profile-jot-submit-wrapper" >
+       <div id="profile-jot-perms" class="profile-jot-perms" style="display: $visitor;" ><a id="jot-perms-icon" class="icon $lockstate"  title="$permset" onClick="openClose('profile-jot-acl-wrapper'); openClose('profile-jot-email-wrapper'); openClose('profile-jot-networks');return false;"></a>$bang</div>
+       <input type="submit" id="profile-jot-submit" name="submit" value="$share" />
+</div>
+
+       <div id="profile-upload-wrapper" class="jot-tool" style="display: $visitor;" >
+               <div id="wall-image-upload-div" ><a onclick="return false;" id="wall-image-upload" class="icon border  camera" title="$upload"></a></div>
+       </div> 
+       <div id="profile-link-wrapper" class="jot-tool" style="display: $visitor;" ondragenter="linkdropper(event);" ondragover="linkdropper(event);" ondrop="linkdrop(event);" >
+               <a id="profile-link" class="icon border  link" title="$weblink" ondragenter="return linkdropper(event);" ondragover="return linkdropper(event);" ondrop="linkdrop(event);" onclick="jotGetLink(); return false;"></a>
+       </div> 
+       <div id="profile-youtube-wrapper" class="jot-tool" style="display: $visitor;" >
+               <a id="profile-youtube" class="icon border  youtube" title="$youtube" onclick="jotGetVideo(); return false;"></a>
+       </div> 
+       <div id="profile-video-wrapper" class="jot-tool" style="display: $visitor;" >
+               <a id="profile-video" class="icon border  video" title="$video" onclick="jotVideoURL(); return false;"></a>
+       </div> 
+       <div id="profile-audio-wrapper" class="jot-tool" style="display: $visitor;" >
+               <a id="profile-audio" class="icon border  audio" title="$audio" onclick="jotAudioURL(); return false;"></a>
+       </div> 
+       <div id="profile-location-wrapper" class="jot-tool" style="display: $visitor;" >
+               <a id="profile-location" class="icon border  globe" title="$setloc" onclick="jotGetLocation(); return false;"></a>
+       </div> 
+       <div id="profile-nolocation-wrapper" class="jot-tool" style="display: none;" >
+               <a id="profile-nolocation" class="icon border  noglobe" title="$noloc" onclick="jotClearLocation(); return false;"></a>
+       </div> 
+       <div id="profile-title-wrapper" class="jot-tool" style="display: $visitor;" >
+               <a id="profile-title" class="icon border  article" title="$title" onclick="jotTitle(); return false;"></a>
+       </div> 
+
+       <div id="profile-jot-plugin-wrapper">
+       $jotplugins
+       </div>
+
+       <div id="profile-jot-tools-end"></div>
+       
+       <div id="profile-jot-email-wrapper" style="display: none;" >
+       <div id="profile-jot-email-label">$emailcc</div><input type="text" name="emailcc" id="profile-jot-email" title="$emtitle">
+       <div id="profile-jot-email-end"></div>
+       </div>
+       <div id="profile-jot-networks" style="display: none;" >
+       $jotnets
+       </div>
+       <div id="profile-jot-networks-end"></div>
+       <div id="profile-jot-acl-wrapper" style="display: none;" >$acl</div>
+
+
+<div id="profile-jot-end"></div>
+</form>
+</div>
diff --git a/view/theme/dispy/mail_head.tpl b/view/theme/dispy/mail_head.tpl
new file mode 100644 (file)
index 0000000..89615cb
--- /dev/null
@@ -0,0 +1,7 @@
+<h3>$messages</h3>
+
+<ul class="tabs-wrapper">
+<li><a href="message" class="tabs">$inbox</a></li>
+<li><a href="message/sent" class="tabs">$outbox</a></li>
+<li><a href="message/new" class="tabs">$new</a></li>
+</ul>
diff --git a/view/theme/dispy/menu-user-pin.jpg b/view/theme/dispy/menu-user-pin.jpg
new file mode 100644 (file)
index 0000000..2644956
Binary files /dev/null and b/view/theme/dispy/menu-user-pin.jpg differ
diff --git a/view/theme/dispy/nav.tpl b/view/theme/dispy/nav.tpl
new file mode 100644 (file)
index 0000000..3938777
--- /dev/null
@@ -0,0 +1,51 @@
+$langselector
+
+<span id="banner">$banner</span>
+
+{{ if $nav.login }}<a id="nav-login-link" class="nav-link $nav.login.2" href="$nav.login.0" title="$nav.login.1">$nav.login.1</a> {{ endif }}
+<a id="nav-search-link" class="nav-link $nav.search.2" href="$nav.search.0" title="$nav.search.1">$nav.search.1</a>
+<a id="nav-directory-link" class="nav-link $nav.directory.2" href="$nav.directory.0" title="$nav.directory.1">$nav.directory.1</a>
+
+<div id="user-menu" >
+       <a id="user-menu-label" onclick="openClose('user-menu-popup'); return false" href="$nav.home.0">$sitelocation</a>
+    
+    <ul id="user-menu-popup" 
+         onmouseover="if (typeof tmenu != 'undefined') clearTimeout(tmenu); openMenu('user-menu-popup')" 
+         onmouseout="tmenu=setTimeout('closeMenu(\'user-menu-popup\');',200)">
+
+
+               {{ if $nav.register }}<li><a id="nav-register-link" class="nav-commlink $nav.register.2" href="$nav.register.0"  title="$nav.register.1">$nav.register.1</a></li>{{ endif }}
+           
+           {{ if $nav.home }}<li><a id="nav-home-link" class="nav-commlink $nav.home.2" href="$nav.home.0">$nav.home.1</a></li>{{ endif }}
+       
+           {{ if $nav.network }}<li><a id="nav-network-link" class="nav-commlink $nav.network.2" href="$nav.network.0">$nav.network.1</a></li>{{ endif }}
+       
+       
+           {{ if $nav.notifications }}<li><a id="nav-notify-link" class="nav-commlink $nav.notifications.2" href="$nav.notifications.0">$nav.notifications.1</a></li>{{ endif }}
+           {{ if $nav.messages }}<li><a id="nav-messages-link" class="nav-commlink $nav.messages.2" href="$nav.messages.0">$nav.messages.1</a></li>{{ endif }}
+           {{ if $nav.contacts }}<li><a id="nav-contacts-link" class="nav-commlink $nav.contacts.2" href="$nav.contacts.0">$nav.contacts.1</a></li>{{ endif }}
+       
+           {{ if $nav.profiles }}<li><a id="nav-profiles-link" class="nav-commlink nav-sep $nav.profiles.2" href="$nav.profiles.0">$nav.profiles.1</a></li>{{ endif }}
+           {{ if $nav.settings }}<li><a id="nav-settings-link" class="nav-commlink $nav.settings.2" href="$nav.settings.0">$nav.settings.1</a></li>{{ endif }}
+           
+           {{ if $nav.manage }}<li><a id="nav-manage-link" class="nav-commlink $nav.manage.2" href="$nav.manage.0">$nav.manage.1</a></li>{{ endif }}
+       
+       
+
+           {{ if $nav.logout }}<li><a id="nav-logout-link" class="nav-commlink nav-sep $nav.logout.2" href="$nav.logout.0">$nav.logout.1</a></li> {{ endif }}
+    </ul>
+
+       <div id="notifications">
+    {{ if $nav.network }}<a id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
+    {{ if $nav.home }}<a id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
+    {{ if $nav.notifications }}<a id="notify-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
+    {{ if $nav.messages }}<a id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
+       </div>
+
+</div>
+
+
+{{ if $nav.apps }}<a id="nav-apps-link" class="nav-link $nav.apps.2" href="$nav.apps.0" title="$nav.apps.1">$nav.apps.1</a>{{ endif }}
+
+
+
diff --git a/view/theme/dispy/next.png b/view/theme/dispy/next.png
new file mode 100644 (file)
index 0000000..353e2e7
Binary files /dev/null and b/view/theme/dispy/next.png differ
diff --git a/view/theme/dispy/notifications.png b/view/theme/dispy/notifications.png
new file mode 100644 (file)
index 0000000..f0f6a90
Binary files /dev/null and b/view/theme/dispy/notifications.png differ
diff --git a/view/theme/dispy/photo_view.tpl b/view/theme/dispy/photo_view.tpl
new file mode 100644 (file)
index 0000000..4582751
--- /dev/null
@@ -0,0 +1,40 @@
+<div id="live-display"></div>
+<h3><a href="$album.0">$album.1</a></h3>
+
+<div id="photo-edit-link-wrap">
+{{ if $tools }}
+<a id="photo-edit-link" href="$tools.edit.0">$tools.edit.1</a>
+-
+<a id="photo-toprofile-link" href="$tools.profile.0">$tools.profile.1</a>
+{{ endif }}
+{{ if $lock }} - <img src="images/lock_icon.gif" class="lockview" alt="$lock" onclick="lockview(event,'photo$id');" /> {{ endif }}
+</div>
+
+<div id="photo-photo">
+       {{ if $prevlink }}<div id="photo-prev-link"><a href="$prevlink.0">$prevlink.1</a></div>{{ endif }}
+       <a href="$photo.href" title="$photo.title"><img src="$photo.src" /></a>
+       {{ if $nextlink }}<div id="photo-next-link"><a href="$nextlink.0">$nextlink.1</a></div>{{ endif }}
+</div>
+
+<div id="photo-photo-end"></div>
+<div id="photo-caption" >$desc</div>
+{{ if $tags }}
+<div id="in-this-photo-text">$tags.0</div>
+<div id="in-this-photo">$tags.1</div>
+{{ endif }}
+{{ if $tags.2 }}<div id="tag-remove"><a href="$tags.2">$tags.3</a></div>{{ endif }}
+
+{{ if $edit }}$edit{{ endif }}
+
+{{ if $likebuttons }}
+<div id="photo-like-div">
+       $likebuttons
+       $like
+       $dislike        
+</div>
+{{ endif }}
+
+$comments
+
+$paginate
+
diff --git a/view/theme/dispy/prev.png b/view/theme/dispy/prev.png
new file mode 100644 (file)
index 0000000..0ae6022
Binary files /dev/null and b/view/theme/dispy/prev.png differ
diff --git a/view/theme/dispy/profile_tabs.tpl b/view/theme/dispy/profile_tabs.tpl
new file mode 100644 (file)
index 0000000..63b6d48
--- /dev/null
@@ -0,0 +1,7 @@
+
+<div class="tabs-wrapper" >
+       <a href="$url" id="profile-tab-status-link" class="tabs" >$status</a>
+       <a href="$url?tab=profile" id="profile-tab-profile-link" class="tabs" >$profile</a>
+       <a href="$phototab" id="profile-tab-photos-link" class="tabs" >$photos</a>
+<div class="tabs-end"></div>
+</div>
\ No newline at end of file
diff --git a/view/theme/dispy/search_item.tpl b/view/theme/dispy/search_item.tpl
new file mode 100644 (file)
index 0000000..41cc95e
--- /dev/null
@@ -0,0 +1,40 @@
+<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
+       <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+               <div class="wall-item-info" id="wall-item-info-$id">
+                       <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" 
+                                onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')" 
+                                onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+                               <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+                               <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+                               <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+                               <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+                                       <ul>
+                                               $item_photo_menu
+                                       </ul>
+                               </div>
+                       </div>
+                       <div class="wall-item-photo-end"></div> 
+                       <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>
+               </div>
+               <div class="wall-item-lock-wrapper">$lock</div>
+               <div class="wall-item-tools" id="wall-item-tools-$id">
+               $drop
+               </div>
+               <div class="wall-item-content" id="wall-item-content-$id" >
+                       <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+                       <div class="wall-item-title-end"></div>
+                       <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+               </div>
+               <div class="wall-item-author">
+                               <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+                               <div class="wall-item-ago"  id="wall-item-ago-$id">$ago</div>
+                               
+               </div>                  
+               
+       </div>
+       <div class="wall-item-wrapper-end"></div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+       <div class="wall-item-conv" id="wall-item-conv-$id" >$conv</div>
+
diff --git a/view/theme/dispy/settings.tpl b/view/theme/dispy/settings.tpl
new file mode 100644 (file)
index 0000000..953e5c3
--- /dev/null
@@ -0,0 +1,212 @@
+<div class="tabs-wrapper">
+       <a class="tabs" id="profile-settings-link"><a href="settings">$ptitle</a>
+       <a class="tabs" id="plugin-settings-link"><a href="settings/addon">$lbl_plug</a>
+<div class="tabs-end"></div>
+</div>
+
+<h1>$ptitle</h1>
+
+
+$uexport
+
+$nickname_block
+
+
+<form action="settings" id="settings-form" method="post" autocomplete="off" >
+
+
+<h3 class="settings-heading">$lbl_pass1</h3>
+
+
+<div id="settings-password-wrapper" >
+<p id="settings-password-desc" >
+$lbl_pass2
+</p>
+<label id="settings-password-label" for="settings-password" >$lbl_pass3 </label>
+<input type="password" id="settings-password" name="npassword" />
+</div>
+<div id="settings-password-end" ></div>
+
+<div id="settings-confirm-wrapper" >
+<label id="settings-confirm-label" for="settings-confirm" >$lbl_pass4 </label>
+<input type="password" id="settings-confirm" name="confirm" />
+</div>
+<div id="settings-confirm-end" ></div>
+
+<div id="settings-openid-wrapper" >
+       $oidhtml
+</div>
+<div id="settings-openid-end" ></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_basic</h3>
+
+<div id="settings-username-wrapper" >
+<label id="settings-username-label" for="settings-username" >$lbl_fn </label>
+<input type="text" name="username" id="settings-username" value="$username" />
+</div>
+<div id="settings-username-end" ></div>
+
+<div id="settings-email-wrapper" >
+<label id="settings-email-label" for="settings-email" >$lbl_email </label>
+<input type="text" name="email" id="settings-email" value="$email" />
+</div>
+<div id="settings-email-end" ></div>
+
+
+
+<div id="settings-timezone-wrapper" >
+<label id="settings-timezone-label" for="timezone_select" >$lbl_tz </label>
+$zoneselect
+</div>
+<div id="settings-timezone-end" ></div>
+
+<div id="settings-defloc-wrapper" >
+<label id="settings-defloc-label" for="settings-defloc" >$lbl_loc1 </label>
+<input type="text" name="defloc" id="settings-defloc" value="$defloc" />
+</div>
+<div id="settings-defloc-end" ></div>
+
+<div id="settings-allowloc-wrapper" >
+<label id="settings-allowloc-label" for="settings-allowloc" >$lbl_loc2 </label>
+<input type="checkbox" name="allow_location" id="settings-allowloc" value="1" $loc_checked />
+</div>
+<div id="settings-allowloc-end" ></div>
+
+
+
+
+<div id="settings-theme-select">
+<label id="settings-theme-label" for="theme-select" >$lbl_theme </label>
+$theme
+</div>
+<div id="settings-theme-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_prv</h3>
+
+
+<input type="hidden" name="visibility" value="$visibility" />
+
+<div id="settings-maxreq-wrapper">
+<label id="settings-maxreq-label" for="settings-maxreq" >$lbl_maxreq</label>
+<input id="settings-maxreq" name="maxreq" value="$maxreq" />
+<div id="settings-maxreq-desc">$lbl_maxrdesc</div>
+</div>
+<div id="settings-maxreq-end"></div>
+
+
+
+
+$profile_in_dir
+
+$profile_in_net_dir
+
+
+<div id="settings-default-perms" class="settings-default-perms" >
+       <div id="settings-default-perms-menu" class="fakelink" onClick="openClose('settings-default-perms-select');" >$permissions $permdesc</div>
+       <div id="settings-default-perms-menu-end"></div>
+
+       <div id="settings-default-perms-select" style="display: none;" >
+       
+               $aclselect
+
+       </div>
+</div>
+<div id="settings-default-perms-end"></div>
+
+<div id="settings-blockw-wrapper" >
+<label id="settings-blockw-label" for="settings-blockw" >$lbl_rempost </label>
+<input type="checkbox" name="blockwall" id="settings-blockw" value="1" $blockw_checked />
+</div>
+<div id="settings-blockw-end" ></div>
+
+
+
+<div id="settings-expire-desc">$lbl_exp1 <input type="text" size="3" name="expire" value="$expire" /> $lbl_exp2</div>
+<div id="settings-expire-end"></div>
+
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="Submit" />
+</div>
+
+
+
+<h3 class="settings-heading">$lbl_not1</h3>
+
+
+<div id="settings-notify-wrapper">
+<div id="settings-notify-desc">$lbl_not2 </div>
+<label for="notify1" id="settings-label-notify1">$lbl_not3</label>
+<input id="notify1" type="checkbox" $sel_notify1 name="notify1" value="1" />
+<div id="notify1-end"></div>
+<label for="notify2" id="settings-label-notify2">$lbl_not4</label>
+<input id="notify2" type="checkbox" $sel_notify2 name="notify2" value="2" />
+<div id="notify2-end"></div>
+<label for="notify3" id="settings-label-notify3">$lbl_not5</label>
+<input id="notify3" type="checkbox" $sel_notify3 name="notify3" value="4" />
+<div id="notify3-end"></div>
+<label for="notify4" id="settings-label-notify4">$lbl_not6</label>
+<input id="notify4" type="checkbox" $sel_notify4 name="notify4" value="8" />
+<div id="notify4-end"></div>
+<label for="notify5" id="settings-label-notify5">$lbl_not7</label>
+<input id="notify5" type="checkbox" $sel_notify5 name="notify5" value="16" />
+<div id="notify5-end"></div>
+</div>
+<div id="settings=notify-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+<h3 class="settings-imap">$lbl_imap0</h3>
+<p>
+$imap_desc
+$mail_disabled
+</p>
+<label for="imap-server" id="settings-label-imap1">$lbl_imap1</label>
+<input type="text" id="imap-server" name="mail_server" value="$imap_server" $imap_disabled />
+<div id="imap-server-end"></div>
+<label for="imap-port" id="settings-label-imap2">$lbl_imap2</label>
+<input type="text" id="imap-port" name="mail_port" value="$imap_port" $imap_disabled />
+<div id="imap-port-end"></div>
+<label for="imap-ssl" id="settings-label-imap3">$lbl_imap3</label>
+<input type="text" id="imap-ssl" name="mail_ssl" value="$imap_ssl" $imap_disabled />
+<div id="imap-ssl-end"></div>
+<label for="imap-user" id="settings-label-imap4">$lbl_imap4</label>
+<input type="text" id="imap-user" name="mail_user" value="$imap_user" $imap_disabled />
+<div id="imap-user-end"></div>
+<label for="imap-pass" id="settings-label-imap5">$lbl_imap5</label>
+<input type="password" id="imap-pass" name="mail_pass" value="" $imap_disabled />
+<div id="imap-pass-end"></div>
+<label for="imap-replyto" id="settings-label-imap6">$lbl_imap6</label>
+<input type="text" id="imap-replyto" name="mail_replyto" value="$imap_replyto" $imap_disabled />
+<div id="imap-replyto-end"></div>
+<label for="imap-pubmail" id="settings-label-imap7">$lbl_imap7</label>
+<input type="checkbox" name="mail_pubmail" id="imap-pubmail" $pubmail_checked value="1" $imap_disabled />
+<div id="imap-pubmail-end"></div>
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
+<h3 class="settings-heading">$lbl_advn</h3>
+
+$pagetype
+
+<div class="settings-submit-wrapper" >
+<input type="submit" name="submit" class="settings-submit" value="$submit" />
+</div>
+
+
diff --git a/view/theme/dispy/style.css b/view/theme/dispy/style.css
new file mode 100644 (file)
index 0000000..17b3a61
--- /dev/null
@@ -0,0 +1,789 @@
+body {
+       margin: 0px;
+       padding: 0px;
+       font-family: freesans,helvetica,arial,clean,sans-serif;
+       font-size: 16px;
+}
+img {  border: 0 none; }
+
+a { color: #3465a4; text-decoration: none; margin-bottom:1px;}
+a:hover { color: #729fcf; padding-bottom: 0px; border-bottom: 1px dotted #729fcf;}
+
+
+.required { display: inline; color: #ff0000;}
+.fakelink { color: #3465a4; cursor: pointer; }
+.fakelink :hover{ color: #729fcf; }
+
+input[type=submit] {
+       margin-top: 20px;
+       height: 22px;
+       background-color: #555753;
+       color: #eeeeec;
+       -webkit-border-radius: 5px ;
+       -moz-border-radius: 5px;
+       border-radius: 5px;
+       border: 0px;    
+}
+
+.smalltext { font-size: 0.7em }
+
+#panel {
+       position: absolute;
+       font-size:0.8em;
+       -webkit-border-radius: 5px ;
+       -moz-border-radius: 5px;
+       border-radius: 5px;
+       border: 1px solid #ffffff;
+       background-color: #2e3436;
+       color: #eeeeec;
+       padding:1em;
+}
+
+.pager {
+       padding-top: 30px;
+       display:block;
+       clear: both;
+       text-align: center;
+}
+
+.pager span { padding: 4px; margin:4px; }
+.pager_current { background-color: #729fcf; color: #ffffff; }
+
+/**
+ *     login
+ */
+#login-extra-links a { margin-right: 20px; }
+
+/*********
+* nav
+*********/
+
+nav {
+       height: 50px;
+       display: block;
+       background-color: #2e3436;
+       color: #eeeeec;
+       position: relative;
+       padding: 0px 10%;
+}
+nav a { text-decoration: none; color: #eeeeec; border:0px;}
+nav a:hover { text-decoration: none;   color: #eeeeec; border:0px;}
+
+nav #banner {
+       display: block;
+       position: absolute;
+       margin-left: 20px;      
+}
+nav #banner #logo-text a {
+       font-size: 40px;
+       font-weight: bold;
+       margin-left: 3px;
+}
+
+nav #user-menu {
+    display: block;    
+       width: auto;
+    float: right;
+    margin-top: 22px;
+    margin-right: 10px;
+    position: relative;
+    vertical-align: middle;
+
+       background-color: #555753;
+
+    -webkit-border-radius: 5px;
+    -moz-border-radius: 5px;
+    border-radius: 5px;
+    
+    background: #555753 url("menu-user-pin.jpg") 98% center no-repeat;
+}
+nav #user-menu-label {
+       float: left;
+       font-size: 12px;
+    padding: 3px 20px 9px 5px;
+    height: 10px;
+}
+
+ul#user-menu-popup {
+    display: none;
+    position: absolute;
+    background-color: #555753;
+    width: 100%;
+    padding: 10px 0px;
+    margin: 0px;
+    top: 20px;
+       left: 0px;
+
+    -webkit-border-radius: 0px 0px 5px 5px;
+    -moz-border-radius: 0px 0px 5px 5px;    
+    border-radius: 0px 0px 5px 5px;
+    
+    z-index: 10000;
+}
+
+ul#user-menu-popup li { display: block; }
+ul#user-menu-popup li a { display: block; padding: 5px; }
+ul#user-menu-popup li a:hover { color: #2e3436; background-color: #eeeeec; }
+ul#user-menu-popup li a.nav-sep { border-top: 1px solid #eeeeec; }
+nav .nav-link {
+    float: right;
+    display: block;
+    width: 22px;
+    height: 22px;
+    /*border: 1px solid #eeeeec;*/
+    overflow: hidden;
+    margin-top: 22px;
+    margin-right: 10px;
+    text-indent: 50px;
+    background: transparent url('icons.png') 0px 0px no-repeat; 
+}
+
+#nav-directory-link { background-position: 0px -22px }
+#nav-directory-link:hover { background-position: -22px -22px;}
+#nav-search-link { background-position: 0px -44px }
+#nav-search-link:hover { background-position: -22px -44px;}
+#nav-apps-link { background-position: 0px -66px }
+#nav-apps-link:hover { background-position: -22px -66px;}
+#nav-login-link { background-position: 0px -88px }
+#nav-login-link:hover { background-position: -22px -88px;}
+
+#notifications {
+       height: 20px; width: 100%;
+       position: absolute;
+       top:-19px; left: 0px;
+}
+.nav-ajax-update {
+       width: 30px;
+       height: 19px;
+       background: transparent url('notifications.png') 0px 0px no-repeat; 
+       color: #ffffff;
+       font-weight: bold;
+       font-size: 0.8em;
+       padding-top: 0.2em;
+       text-align: center;
+       float: left;
+       margin-right: -4px;
+    display: none;
+}
+#net-update { background-position: 0px 0px; }
+#mail-update { background-position: -30px 0px; }
+#notify-update { background-position: -60px 0px; }
+#home-update { background-position: -90px 0px; }
+
+/** sysmsg **/
+#sysmsg { 
+       position:fixed; 
+       bottom: 0px; right:10%; 
+       -moz-box-shadow: 0px 0px 5px #888;
+       -webkit-box-shadow: 0px 0px 5px #888;
+       box-shadow: 0px 0px 5px #888;
+       padding: 10px; 
+       background-color: #fcaf3e; border:2px solid #f8911b;
+       border-bottom:0px;
+       padding-bottom: 50px;   
+       z-index: 1000;
+}
+#sysmsg br {
+       display:block;
+       margin:2px 0px;
+       border-top: 1px solid #ccccce;
+}
+
+/**
+* aside
+**/
+
+aside {
+    position: absolute;
+    right: 11%;
+    width: 200px;
+    font-size: 0.7em;
+
+}
+.vcard .fn { font-size: 1.7em; font-weight: bold; border-bottom: 1px solid #729fcf; padding-top: 1px;}
+
+.vcard #profile-photo-wrapper { margin: 10px 0px }
+
+aside h4 { font-size: 1.2em; }
+
+aside #viewcontacts { text-align: right;}
+
+#profile-extra-links ul { margin-left: 0px; padding-left: 0px; list-style: none; }
+
+#dfrn-request-link {
+    background: #3465A4 url('connect.png') no-repeat 95% center;
+    border-radius: 5px 5px 5px 5px;
+    color: #FFFFFF;
+    display: block;
+    font-size: 1.2em;
+    padding: 0.2em 0.5em;
+}
+
+/**
+* contacts block
+*/
+.contact-block-div { width: 50px; height: 50px; float: left; }
+#contact-block-end { clear: both; }
+
+/**
+ * jot
+ **/ 
+#profile-jot-text_tbl { margin-bottom: 10px; }
+#profile-jot-text_ifr { width: 99.9%!important }
+#profile-jot-submit-wrapper { float: right;}
+#profile-jot-perms { 
+       float: right;
+       background-color: #555753;
+       height: 22px; width: 20px;
+    -webkit-border-radius: 0px 5px 5px 0px;
+    -moz-border-radius: 0px 5px 5px 0px;
+    border-radius: 0px 5px 5px 0px;    
+       overflow: hidden;
+       border: 0px;
+       margin-left:2px;
+}
+#profile-jot-submit { 
+       float: right;
+       height: 22px;
+       background-color: #555753;
+       color: #eeeeec;
+       -webkit-border-radius: 5px 0px 0px  5px;
+       -moz-border-radius: 5px 0px 0px  5px;
+       border-radius: 5px 0px 0px  5px;
+       border: 0px;
+       margin-top: 0px;
+}
+#character-counter {
+ float: right; padding: 8px 10px; 
+}
+#profile-rotator-wrapper {
+ float: right; 
+}
+
+.jot-tool {
+       float: left;
+       margin-right: 5px;
+}
+#profile-jot-tools-end,
+#profile-jot-banner-end { clear: both; }
+
+#profile-jot-email-wrapper {
+       margin: 10px 10% 0px 10%;
+       border: 1px solid #555753;
+       border-bottom: 0px;
+}
+#profile-jot-email-label { background-color: #555753; color: #ccccce;  padding: 5px;}
+#profile-jot-email { margin: 5px; width: 90%; }
+       
+#profile-jot-networks {
+       margin: 0px 10%;
+       border: 1px solid #555753;
+       border-top: 0px;
+       border-bottom: 0px;
+       padding: 5px;
+}
+#profile-jot-acl-wrapper {
+       margin: 0px 10%;
+       border: 1px solid #555753;
+       border-top: 0px;
+}
+#group_allow_wrapper,
+#group_deny_wrapper,
+#acl-permit-outer-wrapper { width: 47%; float: left; }
+
+#contact_allow_wrapper,
+#contact_deny_wrapper,
+#acl-deny-outer-wrapper { width: 47%; float: right; }
+
+#acl-permit-text,
+#acl-deny-text {background-color: #555753; color: #ccccce; padding: 5px;}
+
+#acl-permit-wrapper,
+#acl-deny-wrapper { padding: 5px; }
+
+#acl-allow-group-label,
+#acl-allow-contact-label,
+#acl-deny-group-label,
+#acl-deny-contact-label { display: block }
+
+#group_allow, #contact_allow,
+#group_deny, #contact_deny,
+#profile-jot-acl-wrapper select { width: 100%; }
+
+#acl-wrapper-end,
+#profile-jot-end { clear: both; height: 5px; }
+
+/**
+ * section
+ */
+section { margin: 10px 11% 0px 11%; font-size: 0.8em; padding-right: 230px;}
+
+/** tabs **/
+.tabs-wrapper {list-style: none; padding: 0px; margin: 0px; border-bottom: 1px solid #729fcf; }
+.tabs-wrapper li { display: inline;}
+.tabs { padding: 0px 5px; margin-right: 10px; }
+.tabs:hover { background-color: #729fcf; color: #eeeeec; border: 0px; }
+
+
+/**
+ *     items
+ */
+.wall-item-outside-wrapper { 
+       margin-top: 50px;
+}
+.wall-item-outside-wrapper-end { clear: both;}
+.wall-item-content-wrapper { position: relative; }
+.wall-item-photo-menu { display: none;}
+.wall-item-photo-menu-button {
+       display:none;
+       text-indent: -99999px;
+       background: #555753 url("menu-user-pin.jpg") no-repeat 75px center;
+       position: absolute;
+       overflow: hidden;
+       height: 20px; width: 90px; 
+       top: 85px;      left: 0px;
+       -webkit-border-radius: 0px 0px 5px  5px;
+       -moz-border-radius: 0px 0px 5px  5px;
+       border-radius: 0px 0px 5px  5px;
+       
+       
+}
+
+.wall-item-info { float: left; width: 140px; }
+.wall-item-photo-wrapper { 
+       width: 80px; height: 80px;  
+       position: relative;
+       padding: 5px;
+       background-color: #555753;
+       -webkit-border-radius: 5px;
+       -moz-border-radius: 5px;
+       border-radius: 5px;     
+}
+
+
+.wall-item-tools { 
+       float: right; 
+       /*height: 0px;
+       padding-top: 20px;
+       overflow:hidden;
+       background: #ffffff url("icons.png") no-repeat  -50px  -40px;*/
+       filter: alpha(opacity=20);
+       opacity: 0.2;
+       -webkit-transition: all 1s ease-in-out;
+       -moz-transition: all 1s ease-in-out;
+       -o-transition: all 1s ease-in-out;
+       -ms-transition: all 1s ease-in-out;
+       transition: all 1s ease-in-out; 
+}
+.wall-item-tools:hover {
+       /*height:auto;*/
+       filter: alpha(opacity=100);
+       opacity: 1;
+       -webkit-transition: all 1s ease-in-out;
+       -moz-transition: all 1s ease-in-out;
+       -o-transition: all 1s ease-in-out;
+       -ms-transition: all 1s ease-in-out;
+       transition: all 1s ease-in-out; 
+       
+}
+
+.wall-item-title { font-size: 1.2em; font-weight: bold;}
+.wall-item-body { margin-left: 140px;}
+.wall-item-lock-wrapper { float: right; }
+.wall-item-dislike,
+.wall-item-like,
+.wall-item-author { clear: left; font-size: 0.8em; margin: 10px 0px 0px 140px; color: #babdb6;}
+.wall-item-ago { display: inline; padding-left: 10px;} 
+.wall-item-wrapper-end { clear:both; }
+.wall-item-location {
+       margin-top:5px;
+       width: 100px;
+       overflow: hidden;
+       text-overflow: ellipsis;
+       -o-text-overflow: ellipsis;
+}
+.wall-item-location .icon { float: left; }
+.wall-item-location > a { margin-left: 25px;  font-size: 0.7em; display: block;}
+.wall-item-location .smalltext { margin-left: 25px;  font-size: 0.7em; display: block;}
+.wall-item-location > br { display: none; }
+
+.wallwall .wwto {
+    left: -10px;
+    margin: 0;
+    position: absolute;
+    top: 65px;
+    width: 30px;
+    z-index: 10001;
+       width: 30px;
+       height: 30px;
+    
+}
+.wallwall .wwto img { width: 30px; height: 30px;}
+.wallwall .wall-item-photo-end { clear: both; }
+.wall-item-arrowphoto-wrapper {
+    position: absolute;
+    left: 20px;
+    top: 70px;
+    z-index: 10002;
+}
+
+.wall-item-photo-menu {
+       min-width: 92px;
+       border: 2px solid #FFFFFF;
+       border-top: 0px;
+       background: #555753;
+       position: absolute;
+       left: -2px; top: 101px;
+       display: none;
+       z-index: 10000;
+       -webkit-border-radius: 0px 5px 5px 5px;
+       -moz-border-radius: 0px 5px 5px 5px;
+       border-radius: 0px 5px 5px 5px;
+}
+.wall-item-photo-menu ul { margin:0px; padding: 0px; list-style: none }
+.wall-item-photo-menu li a { white-space: nowrap;  display: block; padding: 5px 2px;   color: #eeeeec;  }
+.wall-item-photo-menu li a:hover { color: #555753; background: #eeeeec; }
+
+/**
+ *     comment
+ */
+ .ccollapse-wrapper { font-size: 0.9em; margin-left: 80px; }
+.wall-item-outside-wrapper.comment { margin-left: 80px; }
+.wall-item-outside-wrapper.comment .wall-item-photo { width: 40px; height: 40px;}
+.wall-item-outside-wrapper.comment .wall-item-photo-wrapper {width: 40px; height: 40px; }
+.wall-item-outside-wrapper.comment .wall-item-photo-menu-button {
+       width: 50px; top: 45px; background-position: 35px center;
+}
+.wall-item-outside-wrapper.comment .wall-item-info { width: 60px; }
+.wall-item-outside-wrapper.comment .wall-item-body { margin-left: 60px;}
+.wall-item-outside-wrapper.comment .wall-item-author { margin-left: 60px;}
+
+.wall-item-outside-wrapper.comment .wall-item-photo-menu {
+       min-width: 50px;
+       top: 60px;
+}
+
+
+.comment-wwedit-wrapper,
+.comment-edit-wrapper { margin: 30px 0px 0px 80px;}
+.comment-wwedit-wrapper img,
+.comment-edit-wrapper img { width: 20px; height: 20px; }
+.comment-edit-photo-link { float: left; width: 40px;}
+.comment-edit-text-empty {  width: 80%; height: 20px; border: 0px; color: #babdb6;
+       -webkit-transition: all 0.5s ease-in-out;
+       -moz-transition: all 0.5s ease-in-out;
+       -o-transition: all 0.5s ease-in-out;
+       -ms-transition: all 0.5s ease-in-out;
+       transition: all 0.5s ease-in-out;       
+}
+.comment-edit-text-empty:hover { color: #999999;}
+.comment-edit-text-full { width: 80%; height: 6em;
+       -webkit-transition: all 0.5s ease-in-out;
+       -moz-transition: all 0.5s ease-in-out;
+       -o-transition: all 0.5s ease-in-out;
+       -ms-transition: all 0.5s ease-in-out;
+       transition: all 0.5s ease-in-out;       
+}
+.comment-edit-submit-wrapper { width: 80%; margin-left: 40px; text-align: right; }
+.comment-edit-submit {
+       height: 22px;
+       background-color: #555753;
+       color: #eeeeec;
+       -webkit-border-radius: 5px;
+       -moz-border-radius: 5px;
+       border-radius: 5px;
+       border: 0px;
+}
+
+
+
+
+/**
+ * photos
+ **/
+#photo-top-links {
+       margin-bottom:30px;
+}
+.photo-album-image-wrapper,
+.photo-top-image-wrapper { 
+       float: left; 
+       margin: 0px 10px 10px 0px;
+       -moz-box-shadow: 0px 0px 5px #888;
+       -webkit-box-shadow: 0px 0px 5px #888;
+       box-shadow: 0px 0px 5px #888;
+       background-color: #eeeeee;
+       -webkit-border-radius: 5px;
+       -moz-border-radius: 5px;
+       border-radius: 5px;
+
+       padding-bottom: 30px; 
+       position:relative;
+       
+}
+
+.photo-top-image-wrapper a:hover,
+#photo-photo a:hover,
+.photo-album-image-wrapper a:hover { 
+       border-bottom: 0px; 
+}
+
+.photo-top-photo,
+.photo-album-photo {
+    -webkit-border-radius: 5px 5px 0px 0px;
+    -moz-border-radius: 5px 5px 0px 0px;
+    border-radius: 5px 5px 0px 0px;
+ } 
+
+.photo-top-album-name { position: absolute; bottom: 0px; padding: 0px 5px;} 
+.caption { position: absolute; bottom: 0px; margin: 0px 5px}
+
+
+#photo-photo{
+       position: relative;
+       float:left;
+}
+#photo-photo-end { clear: both; }
+#photo-prev-link,
+#photo-next-link{
+       position: absolute;
+       width:30%;
+       height: 100%;
+       background-color: rgba(255,255,255,0.5);
+       opacity: 0;
+       -webkit-transition: all 0.2s ease-in-out;
+       -moz-transition: all 0.2s ease-in-out;
+       -o-transition: all 0.2s ease-in-out;
+       -ms-transition: all 0.2s ease-in-out;
+       transition: all 0.2s ease-in-out;
+       background-position: center center;
+       background-repeat: no-repeat;
+       
+}
+#photo-prev-link { left:0px; top:0px; background-image: url('prev.png'); }
+#photo-next-link { right:0px; top:0px; background-image: url('next.png');}
+
+#photo-prev-link a,
+#photo-next-link a{
+ display: block; width: 100%; height: 100%;
+ overflow: hidden;
+ text-indent: -900000px;                
+}
+
+#photo-prev-link:hover,
+#photo-next-link:hover{
+       opacity: 1;
+       -webkit-transition: all 0.2s ease-in-out;
+       -moz-transition: all 0.2s ease-in-out;
+       -o-transition: all 0.2s ease-in-out;
+       -ms-transition: all 0.2s ease-in-out;
+       transition: all 0.2s ease-in-out;               
+}
+
+#photos-upload-spacer,
+#photos-upload-new-wrapper,
+#photos-upload-exist-wrapper { margin-bottom: 1em; }
+#photos-upload-existing-album-text,
+#photos-upload-newalbum-div { 
+       background-color: #555753;
+       color: #eeeeec;
+       padding: 1px;
+}
+#photos-upload-album-select,
+#photos-upload-newalbum { width: 99% }
+#photos-upload-perms-menu { text-align: right; }
+
+/**
+ *     message
+ */
+.prvmail-text { width: 100%;}
+#prvmail-subject { width: 100%;}
+#prvmail-submit-wrapper { margin-top: 10px; }
+#prvmail-submit {
+       float: right;
+       margin-top: 0px;
+}
+#prvmail-submit-wrapper > div {
+       margin-right: 5px;
+       float: left;
+}
+.mail-list-outside-wrapper { margin-top: 20px;}
+.mail-list-sender {    float: left; }
+.mail-list-detail {    margin-left: 90px; }
+.mail-list-sender-name { display: inline; }
+.mail-list-date { display: inline; font-size: 0.8em; padding-left: 10px;}
+.mail-list-subject { font-size: 1.5em;}
+.mail-list-delete-wrapper { float: right; }
+.mail-list-outside-wrapper-end { clear: both;}
+
+/**
+ *     contacts
+ */
+
+.view-contact-wrapper,
+.contact-entry-wrapper { float: left; margin-right: 20px; margin-bottom: 20px; position: relative;}
+.contact-entry-direction-wrapper {position: absolute; top: 20px;}
+.contact-entry-edit-links { position: absolute; top: 60px; }
+.contact-entry-photo {
+       margin-left:20px;
+}
+.contact-entry-edit-links .icon {      
+       border: 1px solid #babdb6;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    border-radius: 3px;        
+       background-color: #ffffff;
+}
+
+#contact-edit-banner-name { font-size: 1.5em; }
+#contact-edit-photo-wrapper {position: relative; float: left; padding: 20px;}
+#contact-edit-direction-icon { position: absolute; top: 60px; left:0px;}
+#contact-edit-nav-wrapper { margin-left: 210px; }
+#contact-edit-links { float: left; margin-top: 23px; }
+#contact-drop-links { margin-left: 5px; }
+#contact-edit-nav-wrapper .icon {
+       border: 1px solid #babdb6;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    border-radius: 3px;        
+}
+#contact-edit-poll-wrapper { margin-left: 50px; }
+#contact-edit-last-update-text { margin-bottom: 15px; }
+#contact-edit-last-updated { font-weight: bold; }
+#contact-edit-poll-text { display: inline; }
+#contact-edit-end { clear: both; }
+
+/**
+ *     register, settings & profile forms
+ */
+#settings-nickname-desc {
+       background-color: #DDEFFF;
+       -webkit-border-radius: 5px;
+       -moz-border-radius: 5px;
+    border-radius: 5px;
+    padding: 5px;
+}
+
+#register-form div,
+#profile-edit-form div,
+#settings-form  div { 
+       clear: both;
+}
+
+#register-form label,
+#profile-edit-form label,
+#settings-form label {
+       width: 300px; float: left;
+}
+
+#register-form span,
+#profile-edit-form span,
+#settings-form span {
+       color: #555753;
+       display:block;
+       margin-bottom: 20px;
+}
+.settings-submit-wrapper,
+.profile-edit-submit-wrapper { margin: 30px 0px;}
+.profile-listing { float: left; margin: 20px 20px 0px 0px}
+
+#profile-edit-links ul { margin: 20px 0px; padding: 0px; list-style: none; }
+
+
+#register-sitename { display: inline; font-weight: bold;}
+
+/**
+ *     contacts selector
+ */
+
+#prof-members {
+       height: 200px; 
+       overflow: auto;
+       border: 1px solid #555753;
+    -webkit-border-radius: 5px 5px 0px 0px;
+    -moz-border-radius: 5px 5px 0px 0px;
+    border-radius: 5px 5px 0px 0px;
+}
+#prof-all-contacts { 
+       height: 200px;
+    overflow: auto;    
+       border: 1px solid #555753;
+    -webkit-border-radius: 0px 0px 5px 5px;
+    -moz-border-radius: 0px 0px 5px 5px;
+    border-radius: 0px 0px 5px 5px;
+}
+#prof-members h3,
+#prof-all-contacts h3{
+       color: #eeeeec;
+       background-color: #555753;
+       margin: 0px;
+       padding: 5px;
+}
+
+#prof-separator { display: none;}
+
+/**
+ * profile
+ */
+#cropimage-wrapper { float:left; }
+#crop-image-form { clear:both; }
+
+
+/**
+ *     directory
+ */
+.directory-item {float: left; margin: 50px 50px 0px 0px;}
+
+/**
+ * ICONS
+ */
+.icon {
+       display: block; width: 20px; height: 20px;
+       background-image: url('icons.png');
+}
+/*.icon:hover {
+       border-bottom: 0px;
+}*/
+
+.border {
+       border: 1px solid #babdb6;
+    -webkit-border-radius: 3px;
+    -moz-border-radius: 3px;
+    border-radius: 3px;        
+}
+
+.article       { background-position: -50px  0px;}
+.audio                 { background-position: -70px  0px;}
+.block                 { background-position: -90px  0px;}
+.drop          { background-position: -110px 0px;}
+.drophide      { background-position: -130px 0px;}
+.edit          { background-position: -150px 0px;}
+.camera        { background-position: -170px 0px;}
+.dislike       { background-position: -190px 0px;}
+.like          { background-position: -210px 0px;}
+.link          { background-position: -230px 0px;}
+
+.globe                 { background-position: -50px  -20px;}
+.noglobe       { background-position: -70px  -20px;}
+.no            { background-position: -90px  -20px;}
+.pause                 { background-position: -110px -20px;}
+.play          { background-position: -130px -20px;}
+.pencil        { background-position: -150px -20px;}
+.small-pencil{ background-position: -170px -20px;}
+.recycle       { background-position: -190px -20px;}
+.remote-link{ background-position: -210px -20px;}
+.share                 { background-position: -230px -20px;}
+
+.tools                 { background-position: -50px  -40px;}
+.lock          { background-position: -70px  -40px;}
+.unlock        { background-position: -90px  -40px;}
+.video                 { background-position: -110px -40px;}
+.youtube       { background-position: -130px -40px;}
+                                  
+/**
+ *     footer
+ */                                  
+ .cc-license { margin-top: 100px; font-size: 0.7em; }                                  
+footer { display: block; margin: 50px 20%; clear: both; }
+                                  
diff --git a/view/theme/dispy/wall_item.tpl b/view/theme/dispy/wall_item.tpl
new file mode 100644 (file)
index 0000000..ed1206f
--- /dev/null
@@ -0,0 +1,47 @@
+<div class="wall-item-outside-wrapper$indent" id="wall-item-outside-wrapper-$id" >
+       <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+               <div class="wall-item-info" id="wall-item-info-$id">
+                       <div class="wall-item-photo-wrapper" id="wall-item-photo-wrapper-$id" 
+                                onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')" 
+                                onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+                               <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+                                       <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" />
+                               </a>
+                               <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+                               <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+                                       <ul>
+                                               $item_photo_menu
+                                       </ul>
+                               </div>
+                       </div>
+                       <div class="wall-item-photo-end"></div>
+                       <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>                               
+               </div>
+               <div class="wall-item-lock-wrapper">$lock</div>
+               <div class="wall-item-tools" id="wall-item-tools-$id">
+               $vote
+               $plink
+               $edpost
+               $drop
+               </div>
+               <div class="wall-item-content" id="wall-item-content-$id" >
+                       <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+                       <div class="wall-item-title-end"></div>
+                       <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+               </div>
+               <div class="wall-item-author">
+                               <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+                               <div class="wall-item-ago"  id="wall-item-ago-$id">$ago</div>
+                               
+               </div>  
+       </div>
+       <div class="wall-item-wrapper-end"></div>
+       <div class="wall-item-like" id="wall-item-like-$id">$like</div>
+       <div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
+       <div class="wall-item-comment-wrapper" >
+       $comment
+       </div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+
diff --git a/view/theme/dispy/wallwall_item.tpl b/view/theme/dispy/wallwall_item.tpl
new file mode 100644 (file)
index 0000000..263b67c
--- /dev/null
@@ -0,0 +1,51 @@
+<div class="wall-item-outside-wrapper$indent wallwall" id="wall-item-outside-wrapper-$id" >
+       <div class="wall-item-content-wrapper$indent" id="wall-item-content-wrapper-$id" >
+               <div class="wall-item-info wallwall" id="wall-item-info-$id">
+                       <div class="wall-item-photo-wrapper wwto" id="wall-item-ownerphoto-wrapper-$id" >
+                               <a href="$owner_url" title="$olinktitle" class="wall-item-photo-link" id="wall-item-ownerphoto-link-$id">
+                               <img src="$owner_photo" class="wall-item-photo$osparkle" id="wall-item-ownerphoto-$id" height="80" width="80" alt="$owner_name" /></a>
+                       </div>
+                       <div class="wall-item-arrowphoto-wrapper" ><img src="images/larrow.gif" alt="$wall" /></div>
+                       <div class="wall-item-photo-wrapper wwfrom" id="wall-item-photo-wrapper-$id" 
+                               onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('wall-item-photo-menu-button-$id')"
+                onmouseout="t$id=setTimeout('closeMenu(\'wall-item-photo-menu-button-$id\'); closeMenu(\'wall-item-photo-menu-$id\');',200)">
+                               <a href="$profile_url" title="$linktitle" class="wall-item-photo-link" id="wall-item-photo-link-$id">
+                               <img src="$thumb" class="wall-item-photo$sparkle" id="wall-item-photo-$id" height="80" width="80" alt="$name" /></a>
+                               <span onclick="openClose('wall-item-photo-menu-$id');" class="fakelink wall-item-photo-menu-button" id="wall-item-photo-menu-button-$id">menu</span>
+                <div class="wall-item-photo-menu" id="wall-item-photo-menu-$id">
+                    <ul>
+                        $item_photo_menu
+                    </ul>
+                </div>
+
+                       </div>
+                       <div class="wall-item-photo-end"></div>
+                       <div class="wall-item-location" id="wall-item-location-$id">{{ if $location }}<span class="icon globe"></span>$location {{ endif }}</div>                               
+               </div>
+               <div class="wall-item-lock-wrapper">$lock</div>
+               <div class="wall-item-tools" id="wall-item-tools-$id">
+               $vote
+               $plink
+               $edpost
+               $drop
+               </div>
+               <div class="wall-item-content" id="wall-item-content-$id" >
+                       <div class="wall-item-title" id="wall-item-title-$id">$title</div>
+                       <div class="wall-item-title-end"></div>
+                       <div class="wall-item-body" id="wall-item-body-$id" >$body</div>
+               </div>
+               <div class="wall-item-author">
+                       <a href="$profile_url" title="$linktitle" class="wall-item-name-link"><span class="wall-item-name$sparkle" id="wall-item-name-$id" >$name</span></a>
+                       <div class="wall-item-ago"  id="wall-item-ago-$id">$ago</div>
+               </div>  
+       </div>  
+       <div class="wall-item-wrapper-end"></div>
+       <div class="wall-item-like" id="wall-item-like-$id">$like</div>
+       <div class="wall-item-dislike" id="wall-item-dislike-$id">$dislike</div>
+       <div class="wall-item-comment-wrapper" >
+       $comment
+       </div>
+</div>
+
+<div class="wall-item-outside-wrapper-end$indent" ></div>
+
index 0e361ad46d1e12b5a028cf5416ff7e3839fd2686..5f8f06a6c65a794ba8f6d38aaff4cb4899624887 100644 (file)
@@ -224,6 +224,10 @@ div.wall-item-content-wrapper.shiny {
        cursor: pointer;
 }
 
+#jot-perms-icon {
+       float: left;
+}
+
 .fakelink, .fakelink:visited, .fakelink:link {
        color: #3465a4;
        text-decoration: none;
@@ -986,6 +990,10 @@ input#dfrn-url {
        border-right: 2px solid #fff;
 }
 
+.wall-item-like-buttons > a,
+.wall-item-like-buttons > img {
+       float: left;
+}
 
 .wall-item-like-buttons img {
        cursor: pointer;
@@ -1441,6 +1449,9 @@ input#dfrn-url {
 #contact-edit-links {
        float: left;
 }
+#contact-edit-links a {
+       float: left;
+}
 #contact-edit-links img {
        margin-left: 20px;
        border: none;
@@ -1884,9 +1895,11 @@ a.mail-list-link {
 #profile-jot-desc {
        /*float: left;*/
        width: 480px;
+       color: #FF0000;
        margin-top: 10px;
        margin-bottom: 10px;
 }
+
 #character-counter {
        float: right;
        font-size: 120%;
@@ -2335,3 +2348,42 @@ a.mail-list-link {
        float: left;
        width: 300px;
 }
+
+#contact-edit-links .icon, #contact-drop-links .icon {
+       margin: 0px 3px 0px 3px;
+}
+
+/**
+ * ICONS
+ */
+.icon {
+       display: block; width: 16px; height: 16px;
+       background-image: url('../../../images/icons.png');
+}
+.article { background-position: 0px 0px;}
+.audio { background-position: -16px 0px;}
+.block { background-position: -32px 0px;}
+.drop { background-position: -48px 0px;}
+.drophide { background-position: -64px 0px;}
+.edit { background-position: -80px 0px;}
+.camera { background-position: -96px 0px;}
+.dislike { background-position: -112px 0px;}
+.like { background-position: -128px 0px;}
+.link { background-position: -144px 0px;}
+
+.globe { background-position: 0px -16px;}
+.noglobe { background-position: -16px -16px;}
+.no { background-position: -32px -16px;}
+.pause { background-position: -48px -16px;}
+.play { background-position: -64px -16px;}
+.pencil { background-position: -80px -16px;}
+.small-pencil { background-position: -96px -16px;}
+.recycle { background-position: -112px -16px;}
+.remote-link { background-position: -128px -16px;}
+.share { background-position: -144px -16px;}
+
+.tools { background-position: 0px -32px;}
+.lock { background-position: -16px -32px;}
+.unlock { background-position: -32px -32px;}
+.video { background-position: -48px -32px;}
+.youtube { background-position: -64px -32px;}
index f4d31e93f2964d20bed6af96d2802d62c3880546..f38b6e6d4de46a97d07c7915b0e5f8d04a90c506 100644 (file)
@@ -120,6 +120,10 @@ blockquote:before {
        cursor: pointer;
 }
 
+#jot-perms-icon {
+       float: left;
+}
+
 .fakelink, .fakelink:visited {
        color: #15607B;
        text-decoration: none;
@@ -1047,6 +1051,10 @@ input#dfrn-url {
     padding-right: 10px;
     border-right: 2px solid #fff;
 }
+.wall-item-like-buttons > a,
+.wall-item-like-buttons > img {
+       float: left;
+}
 
 .wall-item-share-buttons {
        margin-left: 5px;
@@ -1504,6 +1512,9 @@ padding: 5px 10px 0px;
 #contact-edit-links {
        float: left;
 }
+#contact-edit-links a {
+       float: left;
+}
 #contact-edit-links img {
        margin-left: 20px;
        border: none;
@@ -2359,3 +2370,38 @@ a.mail-list-link {
        float: left;
        width: 300px;
 }
+
+/**
+ * ICONS
+ */
+.icon {
+       display: block; width: 16px; height: 16px;
+       background-image: url('../../../images/icons.png');
+}
+.article { background-position: 0px 0px;}
+.audio { background-position: -16px 0px;}
+.block { background-position: -32px 0px;}
+.drop { background-position: -48px 0px;}
+.drophide { background-position: -64px 0px;}
+.edit { background-position: -80px 0px;}
+.camera { background-position: -96px 0px;}
+.dislike { background-position: -112px 0px;}
+.like { background-position: -128px 0px;}
+.link { background-position: -144px 0px;}
+
+.globe { background-position: 0px -16px;}
+.noglobe { background-position: -16px -16px;}
+.no { background-position: -32px -16px;}
+.pause { background-position: -48px -16px;}
+.play { background-position: -64px -16px;}
+.pencil { background-position: -80px -16px;}
+.small-pencil { background-position: -96px -16px;}
+.recycle { background-position: -112px -16px;}
+.remote-link { background-position: -128px -16px;}
+.share { background-position: -144px -16px;}
+
+.tools { background-position: 0px -32px;}
+.lock { background-position: -16px -32px;}
+.unlock { background-position: -32px -32px;}
+.video { background-position: -48px -32px;}
+.youtube { background-position: -64px -32px;}
index 9aa565f69b0645d2e9cfede113b0cfa72842b0e1..b4ea62b45135285f760245e282d651ad2d3664f9 100644 (file)
@@ -1,2 +1,4 @@
-<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" ><a href="item/drop/$id" onclick="return confirmDelete();" ><img src="images/b_drophide.gif" alt="$delete" title="$delete" id="wall-item-delete-icon-$id" class="wall-item-delete-icon" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a></div>
-               <div class="wall-item-delete-end"></div>
+<div class="wall-item-delete-wrapper" id="wall-item-delete-wrapper-$id" >
+       <a href="item/drop/$id" onclick="return confirmDelete();" class="icon drophide" title="$delete" onmouseover="imgbright(this);" onmouseout="imgdull(this);" ></a>
+</div>
+<div class="wall-item-delete-end"></div>