]> git.mxchange.org Git - friendica.git/commitdiff
Merge remote branch 'upstream/master'
authorMichael <icarus@dabo.de>
Thu, 23 Feb 2012 19:53:22 +0000 (20:53 +0100)
committerMichael <icarus@dabo.de>
Thu, 23 Feb 2012 19:53:22 +0000 (20:53 +0100)
Conflicts:
include/bbcode.php

68 files changed:
INSTALL.txt
README
boot.php
database.sql
doc/Groups-and-Privacy.md [changed mode: 0755->0644]
htconfig.php
images/friendica.svg
include/Scrape.php
include/acl_selectors.php
include/api.php
include/bb2diaspora.php
include/bbcode.php
include/diaspora.php
include/enotify.php
include/html2bbcode.php
include/items.php
include/nav.php
include/poller.php
include/template_processor.php
include/text.php
js/fk.autocomplete.js
js/main.js
library/OAuth1.php
mod/contacts.php
mod/dfrn_confirm.php [changed mode: 0755->0644]
mod/dfrn_request.php
mod/dirfind.php
mod/group.php
mod/match.php
mod/notifications.php
mod/notify.php [new file with mode: 0644]
mod/photos.php
mod/ping.php [changed mode: 0755->0644]
mod/viewcontacts.php
mod/wall_upload.php
update.php
util/README
view/admin_remoteupdate.tpl
view/auto_request.tpl
view/contact_template.tpl
view/contacts-template.tpl [new file with mode: 0755]
view/contacts-top.tpl [deleted file]
view/cs/htconfig.tpl
view/de/htconfig.tpl
view/dfrn_request.tpl
view/en/htconfig.tpl
view/es/htconfig.tpl
view/fr/htconfig.tpl
view/it/htconfig.tpl
view/jot.tpl
view/nav.tpl
view/notify.tpl [new file with mode: 0755]
view/sv/htconfig.tpl
view/theme/dispy/contact_template.tpl [new file with mode: 0755]
view/theme/duepuntozero/contact_template.tpl [new file with mode: 0755]
view/theme/loozah/contact_template.tpl [new file with mode: 0755]
view/theme/quattro-green/colors.less
view/theme/quattro-green/contact_template.tpl [deleted file]
view/theme/quattro-green/style.css
view/theme/quattro/colors.less
view/theme/quattro/contact_template.tpl [deleted file]
view/theme/quattro/quattro.less
view/theme/quattro/style.css
view/theme/testbubble/contact_template.tpl [new file with mode: 0755]
view/theme/testbubble/nav.tpl
view/theme/testbubble/style.css
view/theme/vier/contact_template.tpl [changed mode: 0644->0755]
view/viewcontact_template.tpl

index fdd54b765fa4b4e2792dc1a52a530fff3a638b11..574e90975b1e2ed1d6fc904502f150e545227248 100755 (executable)
@@ -1,14 +1,14 @@
 
-Friendika Installation
+Friendica Installation
 
-We've tried very hard to ensure that Friendika will run on commodity hosting 
+We've tried very hard to ensure that Friendica will run on commodity hosting 
 platforms - such as those used to host Wordpress blogs and Drupal websites. 
-But be aware that Friendika is more than a simple web application. It is a 
+But be aware that Friendica is more than a simple web application. It is a 
 complex communications system which more closely resembles an email server 
 than a web server. For reliability and performance, messages are delivered in
 the background and are queued for later delivery when sites are down. This
 kind of functionality requires a bit more of the host system than the typical
-blog. Not every PHP/MySQL hosting provider will be able to support Friendika. 
+blog. Not every PHP/MySQL hosting provider will be able to support Friendica. 
 Many will. But please review the requirements and confirm these with your 
 hosting provider prior to installation.
 
@@ -21,9 +21,9 @@ impact the installation requirements.
 
 Decide if you will use SSL and obtain an SSL cert. Communications with the
 Diaspora network MAY require both SSL AND an SSL cert signed by a CA which is 
-recognised by the major browsers. Friendika will work with self-signed certs
+recognised by the major browsers. Friendica will work with self-signed certs
 but Diaspora communication may not. For best results, install your cert PRIOR
-to installing Friendika and when visiting your site for the initial 
+to installing Friendica and when visiting your site for the initial 
 installation in step 5, please use the https: link. (Use the http: or non-SSL 
 link if your cert is self-signed). 
  
@@ -51,7 +51,7 @@ php.ini file [or see 'poormancron' in section 8]
 directory/path component in the URL) is preferred. This is REQUIRED if
 you wish to communicate with the Diaspora network.
 
-2. Unpack the Friendika files into the root of your web server document area.
+2. Unpack the Friendica files into the root of your web server document area.
 
        - If you copy the directory tree to your webserver, make sure
        that you also copy .htaccess - as "dot" files are often hidden 
@@ -106,7 +106,7 @@ one shown, substituting for your unique paths and settings:
 
 You can generally find the location of PHP by executing "which php". If you 
 have troubles with this section please contact your hosting provider for 
-assistance. Friendika will not work correctly if you cannot perform this step.
+assistance. Friendica will not work correctly if you cannot perform this step.
 
 You should also be sure that $a->config['php_path'] is set correctly, it should
 look like (changing it to the correct PHP location)
@@ -114,7 +114,7 @@ look like (changing it to the correct PHP location)
 $a->config['php_path'] = '/usr/local/php53/bin/php'
   
 Alternative: You may be able to use the 'poormancron' plugin to perform this
-step if you are using a recent Friendika release. 'poormancron' may result in
+step if you are using a recent Friendica release. 'poormancron' may result in
 perfomance and memory issues and is only suitable for small sites with one or
 two users and a handful of contacts. To do this, edit the file 
 ".htconfig.php" and look for a line describing your plugins. On a fresh 
@@ -173,7 +173,7 @@ generally be world-readable.
 
        Ensure that mod-rewite is installed and working, and that your
 .htaccess file is being used. To verify the latter, create a file test.out
-containing the word "test" in the top directory of Friendika, make it world 
+containing the word "test" in the top directory of Friendica, make it world 
 readable and point your web browser to
 
 http://yoursitenamehere.com/test.out
diff --git a/README b/README
index e75d6319b23d5b556310052844f5d2531dacbfdb..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391 100644 (file)
--- a/README
+++ b/README
@@ -1,3 +0,0 @@
-This is my personal fork of https://github.com/friendica/friendica
-
-If you want to have a stable version of friendica please look there.
index d9c788f8affa516dbe41ac52b21dc60ac923ebf9..8b78c0ee536a8ade79babf17156f160379031588 100755 (executable)
--- a/boot.php
+++ b/boot.php
@@ -9,9 +9,9 @@ require_once('include/nav.php');
 require_once('include/cache.php');
 
 define ( 'FRIENDICA_PLATFORM',     'Friendica');
-define ( 'FRIENDICA_VERSION',      '2.3.1255' );
+define ( 'FRIENDICA_VERSION',      '2.3.1260' );
 define ( 'DFRN_PROTOCOL_VERSION',  '2.22'    );
-define ( 'DB_UPDATE_VERSION',      1122      );
+define ( 'DB_UPDATE_VERSION',      1123      );
 
 define ( 'EOL',                    "<br />\r\n"     );
 define ( 'ATOM_TIME',              'Y-m-d\TH:i:s\Z' );
index 32d7cf40b42d1149649f311a5334198d6f62e124..e051cdaac5c611d031dfb4725ce9cf43e1d09d58 100755 (executable)
@@ -741,6 +741,7 @@ CREATE TABLE IF NOT EXISTS `conv` (
 
 CREATE TABLE IF NOT EXISTS `notify` (
 `id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
+`hash` CHAR( 64 ) NOT NULL,
 `type` INT( 11 ) NOT NULL ,
 `name` CHAR( 255 ) NOT NULL ,
 `url` CHAR( 255 ) NOT NULL ,
@@ -752,6 +753,7 @@ CREATE TABLE IF NOT EXISTS `notify` (
 `seen` TINYINT( 1 ) NOT NULL DEFAULT '0',
 `verb` CHAR( 255 ) NOT NULL,
 `otype` CHAR( 16 ) NOT NULL,
+INDEX ( `hash` ),
 INDEX ( `type` ),
 INDEX ( `uid` ),
 INDEX ( `seen` ),
old mode 100755 (executable)
new mode 100644 (file)
index 61da25a..7e93fb9
@@ -22,7 +22,7 @@ But wait, there's more...
 
 If you look carefully when visiting a group from your Network page, the lock icon under the status update box has an exclamation mark next to it. This is meant to draw attention to that lock. Click the lock. You will see that since you are only viewing a certain group of people, your status updates while on that screen default to only being seen by that same group of people. This is how you keep your future employers from seeing what you write to your drinking buddies.  You can over-ride this setting, but this makes it easy to separate your conversations into different friend circles.
 
-These private conversations work best when your friends are Freindika members. We know who else can see the conversations - nobody, *unless*  your friends cut and paste the messages and send them to others. 
+These private conversations work best when your friends are Friendica members. We know who else can see the conversations - nobody, *unless* your friends cut and paste the messages and send them to others. 
 
 This is a trust issue you need to be aware of. No software in the world can prevent your friends from leaking your confidential and trusted communications. Only a wise choice of friends.  
 
index 4698e9a94bfe19e10ebffd3b965b7bf41b7388f9..cb6e7b7840d323f5cfd88716ae396513b53d50bb 100755 (executable)
@@ -23,7 +23,7 @@ $default_timezone = 'America/Los_Angeles';
 
 // What is your site name?
 
-$a->config['sitename'] = "Friendika Social Network";
+$a->config['sitename'] = "Friendica Social Network";
 
 // Your choices are REGISTER_OPEN, REGISTER_APPROVE, or REGISTER_CLOSED.
 // Be certain to create your own personal account before setting 
index 2155d0b0063501fa9a3eb302aa3e78dc879e4981..2105ef3175372365c99cffeca2be7636249cc019 100755 (executable)
@@ -15,8 +15,8 @@
    id="svg2"
    version="1.1"
    inkscape:version="0.48.0 r9654"
-   sodipodi:docname="friendika.svg"
-   inkscape:export-filename="/home/meta/Documents/My random images/friendika.png"
+   sodipodi:docname="friendica.svg"
+   inkscape:export-filename="/home/meta/Documents/My random images/friendica.png"
    inkscape:export-xdpi="80.552788"
    inkscape:export-ydpi="80.552788">
   <defs
index e42d22afc64c9e0a792a90bc8abcd0a6c7a8930d..52405ae2dd556e5ee1ce434acfbca1b75f15500a 100755 (executable)
@@ -314,7 +314,7 @@ function scrape_feed($url) {
  *
  * PROBE_DIASPORA has a bias towards returning Diaspora information
  * while PROBE_NORMAL has a bias towards dfrn/zot - in the case where
- * an address (such as a Friendika address) supports more than one type
+ * an address (such as a Friendica address) supports more than one type
  * of network. 
  *
  */
index d8f530daf61366f9bf59fd64fe3fff0d6e56dee2..6070b7db21124d046d2a197d7532fd6ea55a08f5 100755 (executable)
@@ -157,7 +157,7 @@ function contact_select($selname, $selclass, $preselected = false, $size = 4, $p
 
        $o = '';
 
-       // When used for private messages, we limit correspondence to mutual DFRN/Friendika friends and the selector
+       // When used for private messages, we limit correspondence to mutual DFRN/Friendica friends and the selector
        // to one recipient. By default our selector allows multiple selects amongst all contacts.
 
        $sql_extra = '';
index 1d3e5c186f46876f43f9dc8bdef50f04998da058..013f4b97aebf4a4b289cf4aa43f9a31890cf10e0 100755 (executable)
                        'updated' => api_date(null),
                        'atom_updated' => datetime_convert('UTC','UTC','now',ATOM_TIME),
                        'language' => $user_info['language'],
-                       'logo'  => $a->get_baseurl()."/images/friendika-32.png",
+                       'logo'  => $a->get_baseurl()."/images/friendica-32.png",
                );
                
                return $arr;
                return null;
        }
 
-       // TODO - media uploads
+/*Waitman Gobble Mod*/
+        function api_statuses_mediap(&$a, $type) {
+                if (local_user()===false) {
+                        logger('api_statuses_update: no user');
+                        return false;
+                }
+                $user_info = api_get_user($a);
+
+                $_REQUEST['type'] = 'wall';
+                $_REQUEST['profile_uid'] = local_user();
+                $_REQUEST['api_source'] = true;
+                $txt = urldecode(requestdata('status'));
+
+                require_once('library/HTMLPurifier.auto.php');
+                require_once('include/html2bbcode.php');
+
+                if((strpos($txt,'<') !== false) || (strpos($txt,'>') !== false)) {
+                       $txt = html2bb_video($txt);
+                       $config = HTMLPurifier_Config::createDefault();
+                        $config->set('Cache.DefinitionImpl', null);
+                       $purifier = new HTMLPurifier($config);
+                        $txt = $purifier->purify($txt);
+               }
+               $txt = html2bbcode($txt);
+               
+                $a->argv[1]=$user_info['screen_name']; //should be set to username?
+               
+               $_REQUEST['hush']='yeah'; //tell wall_upload function to return img info instead of echo
+                require_once('mod/wall_upload.php');
+               $bebop = wall_upload_post($a);
+                
+               //now that we have the img url in bbcode we can add it to the status and insert the wall item.
+                $_REQUEST['body']=$txt."\n\n".$bebop;
+                require_once('mod/item.php');
+                item_post($a);
+
+                // this should output the last post (the one we just posted).
+                return api_status_show($a,$type);
+        }
+        api_register_func('api/statuses/mediap','api_statuses_mediap', true);
+/*Waitman Gobble Mod*/
+
+
        function api_statuses_update(&$a, $type) {
                if (local_user()===false) {
                        logger('api_statuses_update: no user');
                if (local_user()===false) return false;
                
                $user_info = api_get_user($a);
-               // in friendika starred item are private
+               // in friendica starred item are private
                // return favorites only for self
                logger('api_favorites: self:' . $user_info['self']);
                
        function api_statusnet_config(&$a,$type) {
                $name = $a->config['sitename'];
                $server = $a->get_hostname();
-               $logo = $a->get_baseurl() . '/images/friendika-64.png';
+               $logo = $a->get_baseurl() . '/images/friendica-64.png';
                $email = $a->config['admin_email'];
                $closed = (($a->config['register_policy'] == REGISTER_CLOSED) ? 'true' : 'false');
                $private = (($a->config['system']['block_public']) ? 'true' : 'false');
index 70d4bec9afd7f6371f56c4ad8efe4f957e3dc43b..bcef86616be4f73498fb6418ddb7577a3d0af86f 100755 (executable)
@@ -14,8 +14,8 @@ require_once('include/html2bbcode.php');
 function diaspora2bb($s) {
 
        // for testing purposes: Collect raw markdown articles
-       $file = tempnam("/tmp/friendica/", "markdown");
-       file_put_contents($file, $s);
+       // $file = tempnam("/tmp/friendica/", "markdown");
+       // file_put_contents($file, $s);
 
        $s = html_entity_decode($s,ENT_COMPAT,'UTF-8');
 
index eef1cde1f18f6d8cc7ed5546aaaf333039b5419b..47822d093cef7618f1ad919a06b3231d434a7c60 100755 (executable)
@@ -194,7 +194,11 @@ function bbcode($Text,$preserve_nl = false) {
        // Check for [quote] text
        // handle nested quotes
        $endlessloop = 0;
+<<<<<<< HEAD
        while ((strpos($Text, "[/quote]") !== false) and (strpos($Text, "[quote]") !== false) and (++$endlessloop < 20))
+=======
+       while (strpos($Text, "[/quote]") !== false and strpos($Text, "[quote]") !== false and (++$endlessloop < 20))
+>>>>>>> upstream/master
                $Text = preg_replace("/\[quote\](.*?)\[\/quote\]/ism","$QuoteLayout", $Text);
 
        // Check for [quote=Author] text
@@ -203,7 +207,11 @@ function bbcode($Text,$preserve_nl = false) {
 
        // handle nested quotes
        $endlessloop = 0;
+<<<<<<< HEAD
        while ((strpos($Text, "[/quote]")!== false)  and (strpos($Text, "[quote=") !== false) and (++$endlessloop < 20))
+=======
+       while (strpos($Text, "[/quote]") !== false and strpos($Text, "[quote=") !== false and (++$endlessloop < 20))
+>>>>>>> upstream/master
                $Text = preg_replace("/\[quote=[\"\']*(.*?)[\"\']*\](.*?)\[\/quote\]/ism",
                                     "<blockquote><strong>" . $t_wrote . "</strong> $2</blockquote>",
                                     $Text);
index a8e02e5097b2679e74c143edd5efa36b02f59826..92f3500f2f4da3e3458019ca9e3849e8cb5ad20a 100755 (executable)
@@ -451,7 +451,7 @@ function diaspora_request($importer,$xml) {
                // perhaps we were already sharing with this person. Now they're sharing with us.
                // That makes us friends.
 
-               if($contact['rel'] == CONTACT_IS_FOLLOWER) {
+               if($contact['rel'] == CONTACT_IS_FOLLOWER && $importer['page-flags'] != PAGE_COMMUNITY) {
                        q("UPDATE `contact` SET `rel` = %d, `writable` = 1 WHERE `id` = %d AND `uid` = %d LIMIT 1",
                                intval(CONTACT_IS_FRIEND),
                                intval($contact['id']),
@@ -619,6 +619,18 @@ function diaspora_request($importer,$xml) {
        return;
 }
 
+function diaspora_post_allow($importer,$contact) {
+       if(($contact['blocked']) || ($contact['readonly']))
+               return false;
+       if($contact['rel'] == CONTACT_IS_SHARING || $contact['rel'] == CONTACT_IS_FRIEND)
+               return true;
+       if($contact['rel'] == CONTACT_IS_FOLLOWER)
+               if($importer['page-flags'] == PAGE_COMMUNITY)
+                       return true;
+       return false;
+}
+
+
 function diaspora_post($importer,$xml) {
 
        $a = get_app();
@@ -629,7 +641,7 @@ function diaspora_post($importer,$xml) {
        if(! $contact)
                return;
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_post: Ignoring this author.');
                return 202;
        }
@@ -748,7 +760,7 @@ function diaspora_reshare($importer,$xml) {
        if(! $contact)
                return;
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_reshare: Ignoring this author: ' . $diaspora_handle . ' ' . print_r($xml,true));
                return 202;
        }
@@ -900,7 +912,7 @@ function diaspora_asphoto($importer,$xml) {
        if(! $contact)
                return;
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_asphoto: Ignoring this author.');
                return 202;
        }
@@ -1001,7 +1013,7 @@ function diaspora_comment($importer,$xml,$msg) {
                return;
        }
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_comment: Ignoring this author.');
                return 202;
        }
@@ -1446,7 +1458,7 @@ function diaspora_photo($importer,$xml,$msg) {
                return;
        }
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_photo: Ignoring this author.');
                return 202;
        }
@@ -1503,7 +1515,7 @@ function diaspora_like($importer,$xml,$msg) {
                return;
        }
 
-       if(($contact['rel'] == CONTACT_IS_FOLLOWER) || ($contact['blocked']) || ($contact['readonly'])) { 
+       if(! diaspora_post_allow($importer,$contact)) {
                logger('diaspora_like: Ignoring this author.');
                return 202;
        }
index a8e6e3de6d6fc449d30aba31da0a428935f7aab9..1eb3b54762a5d9a04127173525d200bc5940c799 100755 (executable)
@@ -28,18 +28,18 @@ function notification($params) {
                $subject =      sprintf( t('New mail received at %s'),$sitename);
 
                $preamble = sprintf( t('%s sent you a new private message at %s.'),$params['source_name'],$sitename);
-               $epreamble = sprintf( t('%s sent you a private message.'),'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]');
+               $epreamble = sprintf( t('%s sent you %s.'),'[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a private message') . '[/url]');
                $sitelink = t('Please visit %s to view and/or reply to your private messages.');
-               $tsitelink = sprintf( $sitelink, $siteurl . '/message' );
-               $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/message">' . $sitename . '</a>');
-               $itemlink = $siteurl . '/message';
+               $tsitelink = sprintf( $sitelink, $siteurl . '/message/' . $params['item']['id'] );
+               $hsitelink = sprintf( $sitelink, '<a href="' . $siteurl . '/message/' . $params['item']['id'] . '">' . $sitename . '</a>');
+               $itemlink = $siteurl . '/message/' . $params['item']['id'];
        }
 
        if($params['type'] == NOTIFY_COMMENT) {
 
                $subject = sprintf( t('%s commented on an item at %s'), $params['source_name'], $sitename);
                $preamble = sprintf( t('%s commented on an item/conversation you have been following.'), $params['source_name']); 
-               $epreamble = sprintf( t('%s commented on an item/conversation you have been following.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
+               $epreamble = sprintf( t('%s commented in %s.'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('a watched conversation') . '[/url]'); 
 
                $sitelink = t('Please visit %s to view and/or reply to the conversation.');
                $tsitelink = sprintf( $sitelink, $siteurl );
@@ -49,7 +49,7 @@ function notification($params) {
 
        if($params['type'] == NOTIFY_WALL) {
                $preamble = $subject =  sprintf( t('%s posted to your profile wall at %s') , $params['source_name'], $sitename);
-               $epreamble = sprintf( t('%s posted to your profile wall') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
+               $epreamble = sprintf( t('%s posted to %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your profile wall.') . '[/url]'); 
                
                $sitelink = t('Please visit %s to view and/or reply to the conversation.');
                $tsitelink = sprintf( $sitelink, $siteurl );
@@ -59,7 +59,7 @@ function notification($params) {
 
        if($params['type'] == NOTIFY_TAGSELF) {
                $preamble = $subject =  sprintf( t('%s tagged you at %s') , $params['source_name'], $sitename);
-               $epreamble = sprintf( t('%s tagged you') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
+               $epreamble = sprintf( t('%s %s.') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=' . $params['link'] . ']' . t('tagged you') . '[/url]'); 
 
                $sitelink = t('Please visit %s to view and/or reply to the conversation.');
                $tsitelink = sprintf( $sitelink, $siteurl );
@@ -69,7 +69,7 @@ function notification($params) {
 
        if($params['type'] == NOTIFY_TAGSHARE) {
                $preamble = $subject =  sprintf( t('%s tagged your post at %s') , $params['source_name'], $sitename);
-               $epreamble = sprintf( t('%s tagged your post') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
+               $epreamble = sprintf( t('%s tagged %s') , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]', '[url=$itemlink]' . t('your post') . '[/url]' ); 
 
                $sitelink = t('Please visit %s to view and/or reply to the conversation.');
                $tsitelink = sprintf( $sitelink, $siteurl );
@@ -80,7 +80,7 @@ function notification($params) {
        if($params['type'] == NOTIFY_INTRO) {
                $subject = sprintf( t('Introduction received at %s'), $sitename);
                $preamble = sprintf( t('You\'ve received an introduction from \'%s\' at %s'), $params['source_name'], $sitename); 
-               $epreamble = sprintf( t('You\'ve received an introduction from %s'), '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
+               $epreamble = sprintf( t('You\'ve received %s from %s.'), '[url=$itemlink]' . t('an introduction') . '[/url]' , '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
                $body = sprintf( t('You may visit their profile at %s'),$params['source_link']);
 
                $sitelink = t('Please visit %s to approve or reject the introduction.');
@@ -92,7 +92,8 @@ function notification($params) {
        if($params['type'] == NOTIFY_SUGGEST) {
                $subject = sprintf( t('Friend suggestion received at %s'), $sitename);
                $preamble = sprintf( t('You\'ve received a friend suggestion from \'%s\' at %s'), $params['source_name'], $sitename); 
-               $epreamble = sprintf( t('You\'ve received a friend suggestion for %s from %s'),
+               $epreamble = sprintf( t('You\'ve received %s for %s from %s.'),
+                       '[url=$itemlink]' . t('a friend suggestion') . '[/url]',
                        '[url=' . $params['item']['url'] . ']' . $params['item']['name'] . '[/url]', 
                        '[url=' . $params['source_link'] . ']' . $params['source_name'] . '[/url]'); 
                $body = t('Name:') . ' ' . $params['item']['name'] . "\n";
@@ -115,15 +116,27 @@ function notification($params) {
 
        require_once('include/html2bbcode.php');        
 
+       do {
+               $dups = false;
+               $hash = random_string();
+        $r = q("SELECT `id` FROM `notify` WHERE `hash` = '%s' LIMIT 1",
+                       dbesc($hash));
+               if(count($r))
+                       $dups = true;
+       } while($dups == true);
+
+
+
+
        // create notification entry in DB
 
-       $r = q("insert into notify (name,url,photo,date,msg,uid,link,type,verb,otype)
+       $r = q("insert into notify (hash,name,url,photo,date,uid,link,type,verb,otype)
                values('%s','%s','%s','%s','%s',%d,'%s',%d,'%s','%s')",
+               dbesc($hash),
                dbesc($params['source_name']),
                dbesc($params['source_link']),
                dbesc($params['source_photo']),
                dbesc(datetime_convert()),
-               dbesc($epreamble),
                intval($params['uid']),
                dbesc($itemlink),
                intval($params['type']),
@@ -131,6 +144,25 @@ function notification($params) {
                dbesc($params['otype'])
        );
 
+       $r = q("select id from notify where hash = '%s' and uid = %d limit 1",
+               dbesc($hash),
+               intval($params['uid'])
+       );
+       if($r)
+               $notify_id = $r[0]['id'];
+       else
+               return;
+
+       $itemlink = $a->get_baseurl() . '/notify/view/' . $notify_id;
+       $msg = replace_macros($epreamble,array('$itemlink' => $itemlink));
+       $r = q("update notify set msg = '%s' where id = %d and uid = %d limit 1",
+               dbesc($msg),
+               intval($notify_id),
+               intval($params['uid'])
+       );
+               
+
+
        // send email notification if notification preferences permit
 
        require_once('bbcode.php');
index 4297ff2f9d18812972281d5598c310cb9fc64c5f..d8f1a24f1328364a2e022b98ccf75861d7b80449 100755 (executable)
@@ -204,7 +204,7 @@ function html2bbcode($message)
 
        node2bbcode($doc, 'a', array('href'=>'/(.+)/'), '[url=$1]', '[/url]');
 
-       node2bbcode($doc, 'img', array('src'=>'/(.+)/', 'width'=>'/(\d+)/', 'height'=>'/(\d+)/'), '[img$2x$3]$1', '[/img]');
+       node2bbcode($doc, 'img', array('src'=>'/(.+)/', 'width'=>'/(\d+)/', 'height'=>'/(\d+)/'), '[img=$2x$3]$1', '[/img]');
        node2bbcode($doc, 'img', array('src'=>'/(.+)/'), '[img]$1', '[/img]');
 
 
index f4837449d72ff7a61b97b7d024e954f2066ec3c7..347826042e66cc79a53a321567e6f4e778c028c1 100755 (executable)
@@ -1551,8 +1551,9 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                }
 
                                $force_parent = false;
-                               if($contact['network'] === NETWORK_OSTATUS) {
-                                       $force_parent = true;
+                               if($contact['network'] === NETWORK_OSTATUS || stristr($contact['url'],'twitter.com')) {
+                                       if($contact['network'] === NETWORK_OSTATUS)
+                                               $force_parent = true;
                                        if(strlen($datarray['title']))
                                                unset($datarray['title']);
                                        $r = q("UPDATE `item` SET `last-child` = 0, `changed` = '%s' WHERE `parent-uri` = '%s' AND `uid` = %d",
@@ -1700,7 +1701,7 @@ function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0)
                                if(! is_array($contact))
                                        return;
 
-                               if($contact['network'] === NETWORK_OSTATUS || stristr($permalink,'twitter.com')) {
+                               if($contact['network'] === NETWORK_OSTATUS || stristr($contact['url'],'twitter.com')) {
                                        if(strlen($datarray['title']))
                                                unset($datarray['title']);
                                        $datarray['last-child'] = 1;
@@ -2040,13 +2041,12 @@ function local_delivery($importer,$data) {
                }
 
                if($is_reply) {
-
                        $community = false;
 
                        if($importer['page-flags'] == PAGE_COMMUNITY) {
                                $sql_extra = '';
                                $community = true;
-                               logger('local_delivery: community reply');
+                               logger('local_delivery: possible community reply');
                        }
                        else
                                $sql_extra = " and contact.self = 1 and item.wall = 1 ";
@@ -2054,7 +2054,9 @@ function local_delivery($importer,$data) {
                        // was the top-level post for this reply written by somebody on this site? 
                        // Specifically, the recipient? 
 
-                       $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, 
+                       $is_a_remote_comment = false;
+
+                       $r = q("select `item`.`id`, `item`.`uri`, `item`.`tag`, `item`.`forum_mode`,`item`.`origin`,`item`.`wall`, 
                                `contact`.`name`, `contact`.`url`, `contact`.`thumb` from `item` 
                                LEFT JOIN `contact` ON `contact`.`id` = `item`.`contact-id` 
                                WHERE `item`.`uri` = '%s' AND `item`.`parent-uri` = '%s'
@@ -2065,16 +2067,29 @@ function local_delivery($importer,$data) {
                                dbesc($parent_uri),
                                intval($importer['importer_uid'])
                        );
+                       if($r && count($r))
+                               $is_a_remote_comment = true;                    
+
+                       // Does this have the characteristics of a community comment?
+                       // If it's a reply to a wall post on a community page it's a 
+                       // valid community comment. Also forum_mode makes it valid for sure. 
+                       // If neither, it's not.
+
+                       if($is_a_remote_comment && $community) {
+                               if((! $r[0]['forum_mode']) && (! $r[0]['wall'])) {
+                                       $is_a_remote_comment = false;
+                                       logger('local_delivery: not a community reply');
+                               }
+                       }
 
-                       if($r && count($r)) {   
-
+                       if($is_a_remote_comment) {
                                logger('local_delivery: received remote comment');
                                $is_like = false;
                                // remote reply to our post. Import and then notify everybody else.
                                $datarray = get_atom_elements($feed,$item);
 
 
-               // TODO: make this next part work against both delivery threads of a community post
+                               // TODO: make this next part work against both delivery threads of a community post
 
 //                             if((! link_compare($datarray['author-link'],$importer['url'])) && (! $community)) {
 //                                     logger('local_delivery: received relay claiming to be from ' . $importer['url'] . ' however comment author url is ' . $datarray['author-link'] ); 
@@ -2188,6 +2203,7 @@ function local_delivery($importer,$data) {
 
                                                }
                                        }
+
                                        return 0;
                                        // NOTREACHED
                                }
index 95dd37ba6c3aa5f238ee8ff88086aa3e304b535a..511ca07fc0079ef41736260f964bd3883adbcee6 100755 (executable)
@@ -116,7 +116,8 @@ function nav(&$a) {
                if($_SESSION['page_flags'] == PAGE_NORMAL) {
                        $nav['introductions'] = array('notifications/intros',   t('Introductions'), "", t('Friend Requests'));
                        $nav['notifications'] = array('notifications',  t('Notifications'), "", t('Notifications'));
-                       $nav['notifications']['all']=array('notifications/network', t('See all notifications', "", ""));
+                       $nav['notifications']['all']=array('notifications/system', t('See all notifications'), "", "");
+                       $nav['notifications']['mark'] = array('', t('Mark all system notifications seen'), '','');
 
                }
 
@@ -148,7 +149,7 @@ function nav(&$a) {
        $banner = get_config('system','banner');
 
        if($banner === false) 
-               $banner .= '<a href="http://friendica.com"><img id="logo-img" src="images/friendika-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendica.com">Friendica</a></span>';
+               $banner .= '<a href="http://friendica.com"><img id="logo-img" src="images/friendica-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendica.com">Friendica</a></span>';
 
 
        $tpl = get_markup_template('nav.tpl');
index 0ea0c923130c20b31837100230553c9d2346f7bf..3e7a1e9b428e1068cbf4209f74c5173ea8c315a2 100755 (executable)
@@ -194,8 +194,8 @@ function poller_run($argv, $argc){
                                                        $update = true;
                                                break;
                                }
-//                             if((! $update) && (! $force))
-//                                     continue;
+                               if((! $update) && (! $force))
+                                       continue;
                        }
 
                        // Check to see if we are running out of memory - if so spawn a new process and kill this one
@@ -349,7 +349,7 @@ function poller_run($argv, $argc){
                                || ($contact['network'] === NETWORK_DIASPORA)
                                || ($contact['network'] === NETWORK_FEED) ) {
 
-                               // Upgrading DB fields from an older Friendika version
+                               // Upgrading DB fields from an older Friendica version
                                // Will only do this once per notify-enabled OStatus contact
                                // or if relationship changes
 
index 25f7703a2192cfe4b41a76c958c35514bb75fe45..0d476f0e6e63f54a15f88dc69ebd514f58a22934 100755 (executable)
@@ -10,7 +10,7 @@
                var $done = false;
                var $d = false;
                var $lang = null;
-               
+               var $debug=false;
                
                private function _preg_error(){
                        switch(preg_last_error()){
                        return $s;
                }
 
+               private function _str_replace($str){
+                       #$this->search,$this->replace,
+                       $searchs = $this->search;
+                       foreach($searchs as $search){
+                               $search = "|".preg_quote($search)."(\|[a-zA-Z0-9_]*)*|";
+                               $m = array();
+                               if (preg_match_all($search, $str,$m)){
+                                       foreach ($m[0] as $match){
+                                               $toks = explode("|",$match);
+                                               $val = $this->_get_var($toks[0]);
+                                               for($k=1; $k<count($toks); $k++){
+                                                       $func = $toks[$k];
+                                                       if (function_exists($func)) $val = $func($val);
+                                               }
+                                               if (count($toks)>1){
+                                                       $str = str_replace( $match, $val, $str);
+                                               } 
+                                       }
+                               }
+                               
+                       }
+                       return str_replace($this->search,$this->replace, $str);
+               }
+
        
                public function replace($s, $r) {
                        $this->r = $r;
                        $os = ""; $count=0;
                        while($os!=$s && $count<10){
                                $os=$s; $count++;
-                               $s = str_replace($this->search,$this->replace, $s);
+                               $s = $this->_str_replace($s);
                        }
                        return template_unescape($s);
                }
index b9813cfa9fa983c6a38c738f8c4e01f3d25d6b11..0f7d2f731c5328f53f8884e3f8d0945a916d5ce0 100755 (executable)
@@ -675,12 +675,24 @@ function linkify($s) {
  * @Parameter: string $s
  *
  * Returns string
+ *
+ * It is expected that this function will be called using HTML text.
+ * We will escape text between HTML pre and code blocks from being 
+ * processed. 
+ * 
+ * At a higher level, the bbcode [nosmile] tag can be used to prevent this 
+ * function from being executed by the prepare_text() routine when preparing
+ * bbcode source for HTML display
+ *
  */
 
 if(! function_exists('smilies')) {
 function smilies($s, $sample = false) {
        $a = get_app();
 
+       $s = preg_replace_callback('/<pre>(.*?)<\/pre>/ism','smile_encode',$s);
+       $s = preg_replace_callback('/<code>(.*?)<\/code>/ism','smile_encode',$s);
+
        $texts =  array( 
                '&lt;3', 
                '&lt;/3', 
@@ -759,7 +771,7 @@ function smilies($s, $sample = false) {
                '<img src="' . $a->get_baseurl() . '/images/smiley-facepalm.gif" alt=":facepalm" />',
                '<img src="' . $a->get_baseurl() . '/images/smiley-bangheaddesk.gif" alt=":headdesk" />',
                '<a href="http://project.friendika.com">~friendika <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendika" /></a>',
-               '<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendika-16.png" alt="~friendica" /></a>',
+               '<a href="http://friendica.com">~friendica <img src="' . $a->get_baseurl() . '/images/friendica-16.png" alt="~friendica" /></a>',
                '<a href="http://diasporafoundation.org">Diaspora<img src="' . $a->get_baseurl() . '/images/diaspora.png" alt="Diaspora*" /></a>',
 
        );
@@ -776,11 +788,23 @@ function smilies($s, $sample = false) {
        else {
                $s = str_replace($params['texts'],$params['icons'],$params['string']);
        }
-             
+
+       $s = preg_replace_callback('/<pre>(.*?)<\/pre>/ism','smile_decode',$s);
+       $s = preg_replace_callback('/<code>(.*?)<\/code>/ism','smile_decode',$s);
+
        return $s;
 
 }}
 
+function smile_encode($m) {
+       return(str_replace($m[1],base64url_encode($m[1]),$m[0]));
+}
+
+function smile_decode($m) {
+       return(str_replace($m[1],base64url_decode($m[1]),$m[0]));
+}
+
+
 
 
 if(! function_exists('day_translate')) {
index 85b51baeb3078796392eb7d09c08faeca4e18a3d..509466bd9878f3810cadc00259af22db3bdc7198 100755 (executable)
@@ -1,5 +1,5 @@
 /**
- * Friendika people autocomplete
+ * Friendica people autocomplete
  *
  * require jQuery, jquery.textareas
  */
index 4cb278ee8766ed7fc4f65a0e3dbe733b12499501..3a10ae468cd1e300a232d94e51fc6ed932e61a9c 100755 (executable)
@@ -89,6 +89,7 @@
                /* notifications template */
                var notifications_tpl= unescape($("#nav-notifications-template[rel=template]").html());
                var notifications_all = unescape($('<div>').append( $("#nav-notifications-see-all").clone() ).html()); //outerHtml hack
+               var notifications_mark = unescape($('<div>').append( $("#nav-notifications-mark-all").clone() ).html()); //outerHtml hack
                var notifications_empty = unescape($("#nav-notifications-menu").html());
                
                /* nav update event  */
                                $("#nav-notifications-linkmenu").addClass("on");
                                nnm = $("#nav-notifications-menu");
                                
-                               nnm.html(notifications_all);
+                               nnm.html(notifications_all + notifications_mark);
                                
                                //nnm.attr('popup','true');
                                eNotif.children("note").each(function(){
@@ -518,6 +519,14 @@ function checkboxhighlight(box) {
   }
 }
 
+function notifyMarkAll() {
+       $.get('notify/mark/all', function(data) {
+               if(timer) clearTimeout(timer);
+               timer = setTimeout(NavUpdate,1000);
+       });
+}
+
+
 function setupFieldRichtext(){
        tinyMCE.init({
                theme : "advanced",
index 3b211b146e79ec8f75e27a2f160ada974ef9c1d6..0db6fabcbe8c490f06885e3213d465712ee642e8 100755 (executable)
@@ -289,7 +289,7 @@ class OAuthRequest {
       }
 
     }
-    // fix for friendika redirect system
+    // fix for friendica redirect system
     
     $http_url =  substr($http_url, 0, strpos($http_url,$parameters['q'])+strlen($parameters['q']));
     unset( $parameters['q'] );
index 418cddf17a830018276702bed045ba05306b96f6..c8edea151866d91c2cd56e3b75d8f5a22526bac9 100755 (executable)
@@ -451,19 +451,7 @@ function contacts_content(&$a) {
                $a->set_pager_total($r[0]['total']);
 
 
-       $tpl = get_markup_template("contacts-top.tpl");
-       $o .= replace_macros($tpl,array(
-               '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
-               '$tabs' => $t,
-               '$total' => $r[0]['total'],
-               '$search' => $search_hdr,
-               '$desc' => t('Search your contacts'),
-               '$finding' => (strlen($search) ? '<h4>' . t('Finding: ') . "'" . $search . "'" . '</h4>' : ""),
-               '$submit' => t('Find'),
-               '$cmd' => $a->cmd
-
 
-       )); 
 
        $r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `pending` = 0 $sql_extra $sql_extra2 ORDER BY `name` ASC LIMIT %d , %d ",
                intval($_SESSION['uid']),
@@ -471,9 +459,9 @@ function contacts_content(&$a) {
                intval($a->pager['itemspage'])
        );
 
-       if(count($r)) {
+       $contacts = array();
 
-               $tpl = get_markup_template("contact_template.tpl");
+       if(count($r)) {
 
                foreach($r as $rr) {
                        if($rr['self'])
@@ -505,24 +493,40 @@ function contacts_content(&$a) {
                        }
 
 
-                       $o .= replace_macros($tpl, array(
-                               '$img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']),
-                               '$edit_hover' => t('Edit contact'),
-                               '$contact_photo_menu' => contact_photo_menu($rr),
-                               '$id' => $rr['id'],
-                               '$alt_text' => $alt_text,
-                               '$dir_icon' => $dir_icon,
-                               '$thumb' => $rr['thumb'], 
-                               '$name' => $rr['name'],
-                               '$username' => $rr['name'],
-                               '$sparkle' => $sparkle,
-                               '$url' => $url
-                       ));
+                       $contacts[] = array(
+                               'img_hover' => sprintf( t('Visit %s\'s profile [%s]'),$rr['name'],$rr['url']),
+                               'edit_hover' => t('Edit contact'),
+                               'photo_menu' => contact_photo_menu($rr),
+                               'id' => $rr['id'],
+                               'alt_text' => $alt_text,
+                               'dir_icon' => $dir_icon,
+                               'thumb' => $rr['thumb'], 
+                               'name' => $rr['name'],
+                               'username' => $rr['name'],
+                               'sparkle' => $sparkle,
+                               'url' => $url,
+                               'item' => $rr,
+                       );
                }
 
-               $o .= '<div id="contact-edit-end"></div>';
+               
 
        }
-       $o .= paginate($a);
+       
+       $tpl = get_markup_template("contacts-template.tpl");
+       $o .= replace_macros($tpl,array(
+               '$header' => t('Contacts') . (($nets) ? ' - ' . network_to_name($nets) : ''),
+               '$tabs' => $t,
+               '$total' => $r[0]['total'],
+               '$search' => $search_hdr,
+               '$desc' => t('Search your contacts'),
+               '$finding' => (strlen($search) ? t('Finding: ') . "'" . $search . "'" : ""),
+               '$submit' => t('Find'),
+               '$cmd' => $a->cmd,
+               '$contacts' => $contacts,
+               '$paginate' => paginate($a),
+
+       )); 
+       
        return $o;
 }
old mode 100755 (executable)
new mode 100644 (file)
index abacd99..5a24f00
@@ -252,7 +252,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
                        $message = unxmlify($xml->message);   // human readable text of what may have gone wrong.
                        switch($status) {
                                case 0:
-                                       notice( t("Confirmation completed successfully.") . EOL);
+                                       info( t("Confirmation completed successfully.") . EOL);
                                        if(strlen($message))
                                                notice( t('Remote site reported: ') . $message . EOL);
                                        break;
index ceec83e90b25a7202a6955c3bd7736de721f4401..bc159137df697046fa14abb9ee8bc18b59f4a5e0 100755 (executable)
@@ -677,7 +677,7 @@ function dfrn_request_content(&$a) {
                        '$no' => t('No'),
                        '$add_note' => t('Add a personal note:'),
                        '$page_desc' => $page_desc,
-                       '$friendika' => t('Friendica'),
+                       '$friendica' => t('Friendica'),
                        '$statusnet' => t('StatusNet/Federated Social Web'),
                        '$diaspora' => t('Diaspora'),
                        '$diasnote' => t('- please share from your own site as noted above'),
index 801018276644f98adda868676f45fdfdac0e7228..75b1c4976740f1da1e45e426569b4ff48b2516d3 100755 (executable)
@@ -27,7 +27,7 @@ function dirfind_content(&$a) {
                $p = (($a->pager['page'] != 1) ? '&p=' . $a->pager['page'] : '');
                        
                if(strlen(get_config('system','directory_submit_url')))
-                       $x = fetch_url('http://dir.friendika.com/lsearch?f=' . $p .  '&search=' . urlencode($search));
+                       $x = fetch_url('http://dir.friendica.com/lsearch?f=' . $p .  '&search=' . urlencode($search));
 
 //TODO fallback local search if global dir not available.
 //             else
index ca163902ca685d127ca4163eaaf11123428980c6..c896362ca2f83241fa22d88b6e1b78b3463e48d5 100755 (executable)
@@ -68,7 +68,7 @@ function group_content(&$a) {
                return;
        }
 
-       // Switch to text mod interface if we have more than 'n' contacts or group members
+       // Switch to text mode interface if we have more than 'n' contacts or group members
 
        $switchtotext = get_pconfig(local_user(),'system','groupedit_image_limit');
        if($switchtotext === false)
index 3645a419da2a6f8a9f48ae9059fdf25dd921b816..1ae7848a63ac19caae3d0d2637f87484269e1d54 100755 (executable)
@@ -31,7 +31,7 @@ function match_content(&$a) {
                        $params['p'] = $a->pager['page'];
                        
                if(strlen(get_config('system','directory_submit_url')))
-                       $x = post_url('http://dir.friendika.com/msearch', $params);
+                       $x = post_url('http://dir.friendica.com/msearch', $params);
                else
                        $x = post_url($a->get_baseurl() . '/msearch', $params);
 
index 635639d892b7be550561806a4fce4175205971ca..5831c1b7ab418bee23406452cf60b2c2c5c8896f 100755 (executable)
@@ -67,6 +67,11 @@ function notifications_content(&$a) {
 
        $o = '';
        $tabs = array(
+               array(
+                       'label' => t('System'),
+                       'url'=>$a->get_baseurl() . '/notifications/system',
+                       'sel'=> (($a->argv[1] == 'system') ? 'active' : ''),
+               ),
                array(
                        'label' => t('Network'),
                        'url'=>$a->get_baseurl() . '/notifications/network',
@@ -295,6 +300,36 @@ function notifications_content(&$a) {
                        '$notif_content' => $notif_content,
                ));
                
+       } else if (($a->argc > 1) && ($a->argv[1] == 'system')) {
+               
+               $notif_tpl = get_markup_template('notifications.tpl');
+               
+               $not_tpl = get_markup_template('notify.tpl');
+               require_once('include/bbcode.php');
+
+               $r = q("SELECT * from notify where uid = %d and seen = 0 order by date desc",
+                       intval(local_user())
+               );
+               
+               if (count($r) > 0) {
+                       foreach ($r as $it) {
+                               $notif_content .= replace_macros($not_tpl,array(
+                                       '$item_link' => $a->get_baseurl().'/notify/view/'. $it['id'],
+                                       '$item_image' => $it['photo'],
+                                       '$item_text' => strip_tags(bbcode($it['msg'])),
+                                       '$item_when' => relative_date($it['date'])
+                               ));
+                       }
+               } else {
+                       $notif_content .= t('No more system notifications.');
+               }
+               
+               $o .= replace_macros($notif_tpl,array(
+                       '$notif_header' => t('System'),
+                       '$tabs' => $tabs,
+                       '$notif_content' => $notif_content,
+               ));
+
        } else if (($a->argc > 1) && ($a->argv[1] == 'personal')) {
                
                $notif_tpl = get_markup_template('notifications.tpl');
diff --git a/mod/notify.php b/mod/notify.php
new file mode 100644 (file)
index 0000000..229020f
--- /dev/null
@@ -0,0 +1,39 @@
+<?php
+
+
+function notify_init(&$a) {
+       if(! local_user())
+               return;
+
+       if($a->argc > 2 && $a->argv[1] === 'view' && intval($a->argv[2])) {
+               $r = q("select * from notify where id = %d and uid = %d limit 1",
+                       intval($a->argv[2]),
+                       intval(local_user())
+               );
+               if(count($r)) {
+                       q("update notify set seen = 1 where id = %d and uid = %d limit 1",
+                               intval($a->argv[2]),
+                               intval(local_user())
+                       );
+                       goaway($r[0]['link']);
+               }
+
+               goaway($a->get_baseurl());
+       }
+
+       if($a->argc > 2 && $a->argv[1] === 'mark' && $a->argv[2] === 'all' ) {
+               $r = q("update notify set seen = 1 where uid = %d",
+                       intval(local_user())
+               );
+               $j = json_encode(array('result' => ($r) ? 'success' : 'fail'));
+               echo $j;
+               killme();
+       }
+
+}
+
+
+function notify_content(&$a) {
+       if(! local_user())
+               return login();
+}
\ No newline at end of file
index 466fe44d3e2c6b026f408085b9bfb52daae818fe..e40ae0d74a03fd5fff4cfbfd5ad97654deb0cc76 100755 (executable)
@@ -98,7 +98,7 @@ EOT;
 
 function photos_post(&$a) {
 
-       logger('mod-photos: photos_post: begin' , 'LOGGER_DEBUG');
+       logger('mod-photos: photos_post: begin' , LOGGER_DEBUG);
 
 
        logger('mod_photos: REQUEST ' . print_r($_REQUEST,true), LOGGER_DATA);
@@ -571,7 +571,7 @@ function photos_post(&$a) {
        $album    = notags(trim($_REQUEST['album']));
        $newalbum = notags(trim($_REQUEST['newalbum']));
 
-       logger('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , 'LOGGER_DEBUG');
+       logger('mod/photos.php: photos_post(): album= ' . $album . ' newalbum= ' . $newalbum , LOGGER_DEBUG);
 
        if(! strlen($album)) {
                if(strlen($newalbum))
@@ -643,13 +643,13 @@ function photos_post(&$a) {
                return;
        }
 
-       logger('mod/photos.php: photos_post(): loading the contents of ' . $src , 'LOGGER_DEBUG');
+       logger('mod/photos.php: photos_post(): loading the contents of ' . $src , LOGGER_DEBUG);
 
        $imagedata = @file_get_contents($src);
        $ph = new Photo($imagedata);
 
        if(! $ph->is_valid()) {
-               logger('mod/photos.php: photos_post(): unable to process image' , 'LOGGER_DEBUG');
+               logger('mod/photos.php: photos_post(): unable to process image' , LOGGER_DEBUG);
                notice( t('Unable to process image.') . EOL );
                @unlink($src);
                $foo = 0;
@@ -669,7 +669,7 @@ function photos_post(&$a) {
        $r = $ph->store($page_owner_uid, $visitor, $photo_hash, $filename, $album, 0 , 0, $str_contact_allow, $str_group_allow, $str_contact_deny, $str_group_deny);
 
        if(! $r) {
-               logger('mod/photos.php: photos_post(): image store failed' , 'LOGGER_DEBUG');
+               logger('mod/photos.php: photos_post(): image store failed' , LOGGER_DEBUG);
                notice( t('Image upload failed.') . EOL );
                killme();
        }
old mode 100755 (executable)
new mode 100644 (file)
index db68332..2898042
@@ -5,12 +5,20 @@ require_once("include/datetime.php");
 function ping_init(&$a) {
 
        header("Content-type: text/xml");
+       
        echo "<?xml version=\"1.0\" encoding=\"UTF-8\" ?>
                <result>";
 
        $xmlhead="<"."?xml version='1.0' encoding='UTF-8' ?".">";
        if(local_user()){
 
+               $z = q("select * from notify where seen = 0 and uid = %d
+                       order by date desc",
+                       intval(local_user())
+               );
+
+
+
                $tags = array();
                $comments = array();
                $likes = array();
@@ -90,22 +98,20 @@ function ping_init(&$a) {
                }
 
 
-               $intros1 = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, 
+               $intros1 = q("SELECT  `intro`.`id`, `intro`.`datetime`, 
                        `fcontact`.`name`, `fcontact`.`url`, `fcontact`.`photo` 
                        FROM `intro` LEFT JOIN `fcontact` ON `intro`.`fid` = `fcontact`.`id`
                        WHERE `intro`.`uid` = %d  AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`fid`!=0",
                        intval(local_user())
                );
-               $intros2 = q("SELECT COUNT(`intro`.`id`) AS `total`, `intro`.`id`, `intro`.`datetime`, 
+               $intros2 = q("SELECT `intro`.`id`, `intro`.`datetime`, 
                        `contact`.`name`, `contact`.`url`, `contact`.`photo` 
                        FROM `intro` LEFT JOIN `contact` ON `intro`.`contact-id` = `contact`.`id`
                        WHERE `intro`.`uid` = %d  AND `intro`.`blocked` = 0 AND `intro`.`ignore` = 0 AND `intro`.`contact-id`!=0",
                        intval(local_user())
                );
                
-               $intro = $intros1[0]['total'] + $intros2[0]['total'];
-               if ($intros1[0]['total']==0) $intros1=Array();
-               if ($intros2[0]['total']==0) $intros2=Array();
+               $intro = count($intros1) + count($intros2);
                $intros = $intros1+$intros2;
 
 
@@ -143,6 +149,22 @@ function ping_init(&$a) {
                $tot = $mail+$intro+$register+count($comments)+count($likes)+count($dislikes)+count($friends)+count($posts)+count($tags);
                
                echo '  <notif count="'.$tot.'">';
+
+               require_once('include/bbcode.php');
+
+               if(count($z)) {
+                       foreach($z as $zz) {
+                               echo xmlize($a->get_baseurl() . '/notify/' . $zz['id'], $zz['name'],$zz['url'],$zz['photo'],relative_date($zz['date']), bbcode($zz['msg']));
+
+                       }
+               }
+
+
+
+
+
+/*
+
                if ($intro>0){
                        foreach ($intros as $i) { 
                                echo xmlize( $a->get_baseurl().'/notifications/intros/'.$i['id'], $i['name'], $i['url'], $i['photo'], relative_date($i['datetime']), t("{0} wants to be your friend") );
@@ -196,6 +218,8 @@ function ping_init(&$a) {
                        };
                }
 
+*/
+
                echo "  </notif>";
        }
        echo " <sysmsgs>";
index cd8d100ed186cca55e85918a50200482705a1565..10c980d93bfb2e814f58a51df617a96dd7f48a3e 100755 (executable)
@@ -1,4 +1,5 @@
 <?php
+require_once('include/contact_selectors.php');
 
 function viewcontacts_init(&$a) {
 
@@ -22,8 +23,6 @@ function viewcontacts_content(&$a) {
                return;
        } 
 
-       $o .= '<h3>' . t('View Contacts') . '</h3>';
-
 
        $r = q("SELECT COUNT(*) as `total` FROM `contact` WHERE `uid` = %d AND `blocked` = 0 AND `pending` = 0 AND `hidden` = 0 ",
                intval($a->profile['uid'])
@@ -41,7 +40,7 @@ function viewcontacts_content(&$a) {
                return $o;
        }
 
-       $tpl = get_markup_template("viewcontact_template.tpl");
+       $contacts = array();
 
        foreach($r as $rr) {
                if($rr['self'])
@@ -56,19 +55,26 @@ function viewcontacts_content(&$a) {
                if($is_owner && ($rr['network'] === NETWORK_DFRN) && ($rr['rel']))
                        $url = 'redir/' . $rr['id'];
 
-               $o .= replace_macros($tpl, array(
-                       '$id' => $rr['id'],
-                       '$alt_text' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']),
-                       '$thumb' => $rr['thumb'], 
-                       '$name' => substr($rr['name'],0,20),
-                       '$username' => $rr['name'],
-                       '$url' => $url
-               ));
+               $contacts[] = array(
+                       'id' => $rr['id'],
+                       'img_hover' => sprintf( t('Visit %s\'s profile [%s]'), $rr['name'], $rr['url']),
+                       'thumb' => $rr['thumb'], 
+                       'name' => substr($rr['name'],0,20),
+                       'username' => $rr['name'],
+                       'url' => $url,
+                       'sparkle' => '',
+                       'item' => $rr,
+               );
        }
 
-       $o .= '<div id="view-contact-end"></div>';
 
-       $o .= paginate($a);
+       $tpl = get_markup_template("viewcontact_template.tpl");
+       $o .= replace_macros($tpl, array(
+               '$title' => t('View Contacts'),
+               '$contacts' => $contacts,
+               '$paginate' => paginate($a),
+       ));
+
 
        return $o;
 }
index 278c2135476648cc2723ac64f7420877cc45fb24..64f174a78e4763a58e445d153a21a4de73643ed1 100755 (executable)
@@ -101,10 +101,24 @@ function wall_upload_post(&$a) {
 
        $basename = basename($filename);
 
-       if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
-               echo  "\n\n" . '[url=' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg[/img][/url]\n\n";
-       else
-               echo  '<br /><br /><a href="' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '" ><img src="' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg\" alt=\"$basename\" /></a><br /><br />";
+
+/* mod Waitman Gobble NO WARRANTY */
+
+//if we get the signal then return the image url info in BBCODE, otherwise this outputs the info and bails (for the ajax image uploader on wall post)
+        if ($_REQUEST['hush']!='yeah') {
+
+               /*existing code*/
+               if(local_user() && intval(get_pconfig(local_user(),'system','plaintext')))
+                       echo  "\n\n" . '[url=' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg[/img][/url]\n\n";
+               else
+                       echo  '<br /><br /><a href="' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '" ><img src="' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg\" alt=\"$basename\" /></a><br /><br />";
+               /*existing code*/
+               
+       } else {
+                $m = '[url=' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '][img]' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg[/img][/url]";
+               return($m);
+        }
+/* mod Waitman Gobble NO WARRANTY */
 
        killme();
        // NOTREACHED
index 24138450aa30130c388e7dc858cc1128053e2781..16c1d78488b6e60bd74e7c4b5c57e66508867dba 100755 (executable)
@@ -1,6 +1,6 @@
 <?php
 
-define( 'UPDATE_VERSION' , 1122 );
+define( 'UPDATE_VERSION' , 1123 );
 
 /**
  *
@@ -1065,3 +1065,7 @@ function update_1121() {
 
 }
 
+function update_1122() {
+q("ALTER TABLE `notify` ADD `hash` CHAR( 64 ) NOT NULL AFTER `id` ,
+ADD INDEX ( `hash` ) ");
+}
\ No newline at end of file
index b8fd7c9ee7bfdeb461f0c13918a9d5ba8549f316..aceade3e235965c670343f83e84e372b5da97f16 100755 (executable)
@@ -115,7 +115,7 @@ When strings are added or modified in source, you could run
        to extract strings from source files and join them with the existing .po file:
        new strings are added, the existing are not overwritten.
        
-If you already translated Friendika using strings.php, you could import your old
+If you already translated Friendica using strings.php, you could import your old
 translation to messages.po. Run:
 $ php util/php2po.php view/<language>/strings.php
 
index 41ecfaf85cf89f5f6e0e7cc302ce73a103e80e8f..874c6e6267bddd416fac71d8360d51ba43fe0ce4 100755 (executable)
@@ -62,7 +62,7 @@
        <div class="background"></div>
        <div class="panel">
                <div class="panel_in">
-                       <h1>Friendika Update</h1>
+                       <h1>Friendica Update</h1>
                        <div class="panel_text"></div>
                        <div class="panel_actions">
                                <input type="button" value="$close" class="panel_action_close">
@@ -81,7 +81,7 @@
        {{ if $canwrite }}
                <div class="submit"><input type="submit" name="remoteupdate" value="$submit" /></div>
        {{ else }}
-               <h3>Your friendika installation is not writable by web server.</h3>
+               <h3>Your friendica installation is not writable by web server.</h3>
                {{ if $canftp }}
                        <p>You can try to update via FTP</p>
                        {{ inc field_input.tpl with $field=$ftphost }}{{ endinc }}
index 377da25c53eacbdea8d741275ffa2134bb6a6b1d..204fcf2475abca9d1172b1217513a8315b9c2710 100755 (executable)
@@ -4,7 +4,7 @@
 <p id="dfrn-request-intro">
 $page_desc<br />
 <ul id="dfrn-request-networks">
-<li><a href="http://friendika.com" title="$friendika">$friendika</a></li>
+<li><a href="http://friendica.com" title="$friendica">$friendica</a></li>
 <li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li>
 <li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li>
 </ul>
index e1a080b67560cb772e03a8efe58d0a6c3b4c4f6e..d6f114d6ebab4e2d5e3946cbcb434e4bbf589a8b 100755 (executable)
@@ -1,23 +1,25 @@
 
-<div class="contact-entry-wrapper" id="contact-entry-wrapper-$id" >
-       <div class="contact-entry-photo-wrapper" >
-               <div class="contact-entry-photo mframe" id="contact-entry-photo-$id"
-               onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('contact-photo-menu-button-$id')" onmouseout="t$id=setTimeout('closeMenu(\'contact-photo-menu-button-$id\'); closeMenu(\'contact-photo-menu-$id\');',200)" >
+<div class="contact-wrapper" id="contact-entry-wrapper-$id" >
+       <div class="contact-photo-wrapper" >
+               <div class="contact-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
 
-                       <a href="$url" title="$img_hover" /><img src="$thumb" $sparkle alt="$name" /></a>
-
-                       <span onclick="openClose('contact-photo-menu-$id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$id">menu</span>
-                <div class="contact-photo-menu" id="contact-photo-menu-$id">
-                    <ul>
-                        $contact_photo_menu
-                    </ul>
-                </div>
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
 
+                       {{ if $contact.photo_menu }}
+                       <a href="#" rel="#contact-photo-menu-$contact.id" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-$contact.id">menu</a>
+                       <ul class="contact-photo-menu menu-popup" id="contact-photo-menu-$contact.id">
+                               $contact.photo_menu
+                       </ul>
+                       {{ endif }}
                </div>
                        
        </div>
-       <div class="contact-entry-photo-end" ></div>
-               <div class="contact-entry-name" id="contact-entry-name-$id" >$name</div>
+       <div class="contact-name" id="contact-entry-name-$contact.id" >$contact.name</div>
+       <div class="contact-details" id="contact-entry-url-$contact.id" >$contact.item.url</div>
+       <div class="contact-details" id="contact-entry-network-$contact.id" >$contact.item.network|network_to_name</div>
+
 
-       <div class="contact-entry-end" ></div>
 </div>
+
diff --git a/view/contacts-template.tpl b/view/contacts-template.tpl
new file mode 100755 (executable)
index 0000000..ecb342b
--- /dev/null
@@ -0,0 +1,26 @@
+<h1>$header{{ if $total }} ($total){{ endif }}</h1>
+
+{{ if $finding }}<h4>$finding</h4>{{ endif }}
+
+<div id="contacts-search-wrapper">
+<form id="contacts-search-form" action="$cmd" method="get" >
+<span class="contacts-search-desc">$desc</span>
+<input type="text" name="search" id="contacts-search" class="search-input" onfocus="this.select();" value="$search" />
+<input type="submit" name="submit" id="contacts-search-submit" value="$submit" />
+</form>
+</div>
+<div id="contacts-search-end"></div>
+
+$tabs
+
+
+{{ for $contacts as $contact }}
+       {{ inc contact_template.tpl }}{{ endinc }}
+{{ endfor }}
+<div id="contact-edit-end"></div>
+
+$paginate
+
+
+
+
diff --git a/view/contacts-top.tpl b/view/contacts-top.tpl
deleted file mode 100755 (executable)
index fca3efd..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-<h1>$header{{ if $total }} ($total){{ endif }}</h1>
-
-$finding
-
-<div id="contacts-search-wrapper">
-<form id="contacts-search-form" action="$cmd" method="get" >
-<span class="contacts-search-desc">$desc</span>
-<input type="text" name="search" id="contacts-search" class="search-input" onfocus="this.select();" value="$search" />
-<input type="submit" name="submit" id="contacts-search-submit" value="$submit" />
-</form>
-</div>
-<div id="contacts-search-end"></div>
-
-$tabs
-
-
-
-
index 87ded77fd8dfea458b028f398bee6c15c596eeef..5d116dd995b3039850312e37b76eaecbd2aea77d 100755 (executable)
@@ -53,8 +53,8 @@ $a->config['php_path'] = '$phpath';
 
 // URL adresy globálního adresáře.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - také zvaný jako  pubsubhubbub URL. Tímto zajistíte doručování veřejných přízpěvků stejně rychle jako těch soukromých
 
index c535cefa68c5ac27d4172b1de158def3d5a3208b..76709ea752df7e37f175a1b6db468db5ee642f44 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
index 3f4300da6b827b2bed5a106ccabdc5969d812f73..cd98a4daabe9bf5a46f590011f74f34c6a4ec251 100755 (executable)
@@ -4,7 +4,7 @@
 <p id="dfrn-request-intro">
 $page_desc<br />
 <ul id="dfrn-request-networks">
-<li><a href="http://friendika.com" title="$friendika">$friendika</a></li>
+<li><a href="http://friendica.com" title="$friendica">$friendica</a></li>
 <li><a href="http://joindiaspora.com" title="$diaspora">$diaspora</a> $diasnote</li>
 <li><a href="http://ostatus.org" title="$public_net" >$statusnet</a></li>
 </ul>
index 3eb2da0704115bbbf36be52bfcd0089f6ce5bfce..9e39eeb59cc88fe0c94e78495ed60dcebc709475 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
index 9f6e282aba239b090a78ed38e2123a2b26054db9..6158f6a33d73a6aae29ceed5dd71c01cd147acde 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
index c535cefa68c5ac27d4172b1de158def3d5a3208b..76709ea752df7e37f175a1b6db468db5ee642f44 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
index 9f6e282aba239b090a78ed38e2123a2b26054db9..6158f6a33d73a6aae29ceed5dd71c01cd147acde 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
index 1c19dd6fac0a8891c5e93a9a68f926ceb5f3ab6b..2c1ce5ae1fdcf4ac54897c994766efb9a0e90d30 100755 (executable)
@@ -1,4 +1,4 @@
-<form action="$action" method="post">
+<form id="profile-jot-form" action="$action" method="post">
        <div id="jot">
                <div id="profile-jot-desc" class="jothidden" >&nbsp;</div>
                <input name="title" id="jot-title" type="text" placeholder="$placeholdertitle" value="$title" class="jothidden" style="display:none">
@@ -22,6 +22,7 @@
                        <li><a id="profile-audio" onclick="jotAudioURL();return false;" title="$audio">$shortaudio</a></li>
                        <li><a id="profile-location" onclick="jotGetLocation();return false;" title="$setloc">$shortsetloc</a></li>
                        <li><a id="profile-nolocation" onclick="jotClearLocation();return false;" title="$noloc">$shortnoloc</a></li>
+                       <li><a id="jot-preview-link" onclick="preview_post(); return false;" title="$preview">$preview</a></li>
                        $jotplugins
 
                        <li class="perms"><a id="jot-perms-icon" href="#profile-jot-acl-wrapper" class="icon s22 $lockstate $bang"  title="$permset" ></a></li>
@@ -29,6 +30,8 @@
                        <li id="profile-rotator" class="loading" style="display: none"><img src="images/rotator.gif" alt="$wait" title="$wait"  /></li>
                </ul>
        </div>
+       
+       <div id="jot-preview-content" style="display:none;"></div>
 
        <div style="display: none;">
                <div id="profile-jot-acl-wrapper" style="width:auto;height:auto;overflow:auto;">
index dffa6e5201c6f505fae508f59cb3f5932508b81a..8c872864c2c0e2ad0a1b4c62d1387c3baca9da84 100755 (executable)
@@ -43,6 +43,7 @@
                        <li  id="nav-notifications-linkmenu" class="nav-menu-icon"><a href="$nav.notifications.0" rel="#nav-notifications-menu" title="$nav.notifications.1"><span class="icon s22 notify">$nav.notifications.1</span></a>
                                <span id="notify-update" class="nav-notify"></span>
                                <ul id="nav-notifications-menu" class="menu-popup">
+                                       <li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">$nav.notifications.mark.1</a></li>
                                        <li id="nav-notifications-see-all"><a href="$nav.notifications.all.0">$nav.notifications.all.1</a></li>
                                        <li class="empty">$emptynotifications</li>
                                </ul>
diff --git a/view/notify.tpl b/view/notify.tpl
new file mode 100755 (executable)
index 0000000..73cc9f9
--- /dev/null
@@ -0,0 +1,3 @@
+<div class="notif-item">
+       <a href="$item_link" target="friendica-notifications"><img src="$item_image" class="notif-image">$item_text <span class="notif-when">$item_when</span></a>
+</div>
\ No newline at end of file
index c535cefa68c5ac27d4172b1de158def3d5a3208b..76709ea752df7e37f175a1b6db468db5ee642f44 100755 (executable)
@@ -49,8 +49,8 @@ $a->config['php_path'] = '$phpath';
 
 // Location of global directory submission page.
 
-$a->config['system']['directory_submit_url'] = 'http://dir.friendika.com/submit';
-$a->config['system']['directory_search_url'] = 'http://dir.friendika.com/directory?search=';
+$a->config['system']['directory_submit_url'] = 'http://dir.friendica.com/submit';
+$a->config['system']['directory_search_url'] = 'http://dir.friendica.com/directory?search=';
 
 // PuSH - aka pubsubhubbub URL. This makes delivery of public posts as fast as private posts
 
diff --git a/view/theme/dispy/contact_template.tpl b/view/theme/dispy/contact_template.tpl
new file mode 100755 (executable)
index 0000000..48930b4
--- /dev/null
@@ -0,0 +1,25 @@
+
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-$contact.id" >
+       <div class="contact-entry-photo-wrapper" >
+               <div class="contact-entry-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
+
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
+
+                       {{ if $contact.photo_menu }}
+                       <span onclick="openClose('contact-photo-menu-$contact.id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$contact.id">menu</span>
+                <div class="contact-photo-menu" id="contact-photo-menu-$contact.id">
+                    <ul>
+                        $contact.photo_menu
+                    </ul>
+                </div>
+                       {{ endif }}
+               </div>
+                       
+       </div>
+       <div class="contact-entry-photo-end" ></div>
+               <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
+
+       <div class="contact-entry-end" ></div>
+</div>
diff --git a/view/theme/duepuntozero/contact_template.tpl b/view/theme/duepuntozero/contact_template.tpl
new file mode 100755 (executable)
index 0000000..48930b4
--- /dev/null
@@ -0,0 +1,25 @@
+
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-$contact.id" >
+       <div class="contact-entry-photo-wrapper" >
+               <div class="contact-entry-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
+
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
+
+                       {{ if $contact.photo_menu }}
+                       <span onclick="openClose('contact-photo-menu-$contact.id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$contact.id">menu</span>
+                <div class="contact-photo-menu" id="contact-photo-menu-$contact.id">
+                    <ul>
+                        $contact.photo_menu
+                    </ul>
+                </div>
+                       {{ endif }}
+               </div>
+                       
+       </div>
+       <div class="contact-entry-photo-end" ></div>
+               <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
+
+       <div class="contact-entry-end" ></div>
+</div>
diff --git a/view/theme/loozah/contact_template.tpl b/view/theme/loozah/contact_template.tpl
new file mode 100755 (executable)
index 0000000..48930b4
--- /dev/null
@@ -0,0 +1,25 @@
+
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-$contact.id" >
+       <div class="contact-entry-photo-wrapper" >
+               <div class="contact-entry-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
+
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
+
+                       {{ if $contact.photo_menu }}
+                       <span onclick="openClose('contact-photo-menu-$contact.id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$contact.id">menu</span>
+                <div class="contact-photo-menu" id="contact-photo-menu-$contact.id">
+                    <ul>
+                        $contact.photo_menu
+                    </ul>
+                </div>
+                       {{ endif }}
+               </div>
+                       
+       </div>
+       <div class="contact-entry-photo-end" ></div>
+               <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
+
+       <div class="contact-entry-end" ></div>
+</div>
index fd32b10431f95005649ee19dd5889058e066d58f..57fd2ef60b3d59d4ce1f6de31b919d7144ed3c13 100755 (executable)
@@ -1,6 +1,7 @@
 // Quattro Theme LESS file
 
 // "Echo" palette from Inkscape
+@Yellow1 : #fce94f;
 @Blue1:rgb(25,174,255);
 @Blue2:rgb(0,132,200);
 @Blue3:rgb(0,92,148);
@@ -16,6 +17,7 @@
 @Green1:rgb(204,255,66);
 @Green2:rgb(154,222,0);
 @Green3:rgb(0,145,0);
+@Green4:rgb(221,255,221);
 @Purple1:rgb(241,202,255);
 @Purple2:rgb(215,108,255);
 @Purple3:rgb(186,0,255);
@@ -71,6 +73,7 @@
 @NoticeBackgroundColor: #511919;
 
 @ThreadBackgroundColor: #f6f7f8;
+@ShinyBorderColor: @Green4;
 
 @CommentBoxEmptyColor: @Grey3;
 @CommentBoxEmptyBorderColor: @Grey3;
@@ -91,4 +94,5 @@
 @JotPermissionUnlockBackgroundColor: @Grey2;
 @JotPermissionLockBackgroundColor: @Grey4;
 @JotLoadingBackgroundColor: @Grey1;
+@JotPreviewBackgroundColor: @Green4;
 
diff --git a/view/theme/quattro-green/contact_template.tpl b/view/theme/quattro-green/contact_template.tpl
deleted file mode 100755 (executable)
index f274965..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-<div class="contact-wrapper" id="contact-entry-wrapper-$id" >
-       <div class="contact-photo-wrapper" >
-               <div class="contact-photo mframe" id="contact-entry-photo-$id"
-               onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('contact-photo-menu-button-$id')" onmouseout="t$id=setTimeout('closeMenu(\'contact-photo-menu-button-$id\'); closeMenu(\'contact-photo-menu-$id\');',200)" >
-
-                       <a href="$url" title="$img_hover" /><img src="$thumb" $sparkle alt="$name" /></a>
-
-                       <a href="#" rel="#contact-photo-menu-$id" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-$id">menu</a>
-                       <ul class="contact-photo-menu menu-popup" id="contact-photo-menu-$id">
-                               $contact_photo_menu
-                       </ul>
-
-               </div>
-                       
-       </div>
-       <div class="contact-name" id="contact-entry-name-$id" >$name</div>
-
-
-</div>
-
index 8dad50971123c0b4e541a41be7f30fa47dc70e95..301477679aff60859a68f75c465fcb4d20c83378 100755 (executable)
 .icon.s10.unlock {
   background-image: url("../../../images/icons/10/unlock.png");
 }
+.icon.s10.type-unkn {
+  background-image: url("../../../images/icons/10/zip.png");
+}
+.icon.s10.type-audio {
+  background-image: url("../../../images/icons/10/audio.png");
+}
+.icon.s10.type-video {
+  background-image: url("../../../images/icons/10/video.png");
+}
+.icon.s10.type-image {
+  background-image: url("../../../images/icons/10/image.png");
+}
+.icon.s10.type-text {
+  background-image: url("../../../images/icons/10/text.png");
+}
 .icon.s10.text {
   padding: 2px 0px 0px 15px;
 }
 .icon.s16.unlock {
   background-image: url("../../../images/icons/16/unlock.png");
 }
+.icon.s16.type-unkn {
+  background-image: url("../../../images/icons/16/zip.png");
+}
+.icon.s16.type-audio {
+  background-image: url("../../../images/icons/16/audio.png");
+}
+.icon.s16.type-video {
+  background-image: url("../../../images/icons/16/video.png");
+}
+.icon.s16.type-image {
+  background-image: url("../../../images/icons/16/image.png");
+}
+.icon.s16.type-text {
+  background-image: url("../../../images/icons/16/text.png");
+}
 .icon.s16.text {
   padding: 4px 0px 0px 20px;
 }
 .icon.s22.unlock {
   background-image: url("../../../images/icons/22/unlock.png");
 }
+.icon.s22.type-unkn {
+  background-image: url("../../../images/icons/22/zip.png");
+}
+.icon.s22.type-audio {
+  background-image: url("../../../images/icons/22/audio.png");
+}
+.icon.s22.type-video {
+  background-image: url("../../../images/icons/22/video.png");
+}
+.icon.s22.type-image {
+  background-image: url("../../../images/icons/22/image.png");
+}
+.icon.s22.type-text {
+  background-image: url("../../../images/icons/22/text.png");
+}
 .icon.s22.text {
   padding: 10px 0px 0px 25px;
 }
 .icon.s48.unlock {
   background-image: url("../../../images/icons/48/unlock.png");
 }
+.icon.s48.type-unkn {
+  background-image: url("../../../images/icons/48/zip.png");
+}
+.icon.s48.type-audio {
+  background-image: url("../../../images/icons/48/audio.png");
+}
+.icon.s48.type-video {
+  background-image: url("../../../images/icons/48/video.png");
+}
+.icon.s48.type-image {
+  background-image: url("../../../images/icons/48/image.png");
+}
+.icon.s48.type-text {
+  background-image: url("../../../images/icons/48/text.png");
+}
 /* global */
 body {
   font-family: Liberation Sans, helvetica, arial, clean, sans-serif;
@@ -542,6 +602,8 @@ aside #profiles-menu {
 #contact-block {
   overflow: auto;
   height: auto;
+  /*.contact-block-div { width:60px; height: 60px; }*/
+
 }
 #contact-block .contact-block-h4 {
   float: left;
@@ -553,7 +615,7 @@ aside #profiles-menu {
 }
 #contact-block .contact-block-content {
   clear: both;
-  overflow: auto;
+  overflow: idden;
   height: auto;
 }
 #contact-block .contact-block-link {
@@ -562,7 +624,36 @@ aside #profiles-menu {
 }
 #contact-block .contact-block-link img {
   widht: 48px;
-  height: 58px;
+  height: 48px;
+}
+/* mail view */
+.mail-conv-sender, .mail-conv-detail {
+  float: left;
+}
+.mail-conv-detail {
+  margin-left: 20px;
+  width: 500px;
+}
+.mail-conv-subject {
+  font-size: 1.4em;
+  margin: 10px 0;
+}
+.mail-conv-outside-wrapper-end {
+  clear: both;
+}
+.mail-conv-outside-wrapper {
+  margin-top: 30px;
+}
+.mail-conv-delete-wrapper {
+  float: right;
+  margin-right: 30px;
+  margin-top: 15px;
+}
+.mail-conv-break {
+  clear: both;
+}
+.mail-conv-delete-icon {
+  border: none;
 }
 /* group member */
 #contact-edit-drop-link, .mail-list-delete-wrapper, .group-delete-wrapper {
@@ -586,31 +677,32 @@ aside #profiles-menu {
   position: relative;
   top: -50px;
 }
+/*
 #group-members {
-  margin-top: 20px;
-  padding: 10px;
-  height: 250px;
-  overflow: auto;
-  border: 1px solid #ddd;
+       margin-top: 20px;
+       padding: 10px;
+       height: 250px;
+       overflow: auto;
+       border: 1px solid #ddd;
 }
 #group-members-end {
-  clear: both;
+       clear: both;
 }
 #group-all-contacts {
-  padding: 10px;
-  height: 450px;
-  overflow: auto;
-  border: 1px solid #ddd;
+       padding: 10px;
+       height: 450px;
+       overflow: auto;
+       border: 1px solid #ddd;
 }
 #group-all-contacts-end {
-  clear: both;
-  margin-bottom: 10px;
+       clear: both;
+       margin-bottom: 10px;
 }
 .contact-block-div {
-  float: left;
-  width: 52px;
-  height: 52px;
-}
+       float: left;
+       width: 60px;
+       height: 60px;
+}*/
 /* widget */
 .widget {
   margin-bottom: 2em;
@@ -857,6 +949,12 @@ section {
   padding: 0;
   margin: 10px 0;
 }
+.shiny {
+  border-right: 10px solid #ddffdd;
+}
+#jot-preview-content .tread-wrapper {
+  background-color: #ddffdd;
+}
 .wall-item-tags {
   padding-top: 5px;
 }
@@ -896,7 +994,6 @@ section {
   bottom: 5px;
   right: 5px;
 }
-/* contacts menu */
 .contact-photo-wrapper {
   position: relative;
 }
@@ -918,9 +1015,14 @@ section {
 }
 .contact-wrapper {
   float: left;
-  width: 90px;
+  width: 300px;
   height: 90px;
-  margin-bottom: 15px;
+  padding-right: 10px;
+  margin: 0 10px 10px 0px;
+}
+.contact-wrapper .contact-photo-wrapper {
+  float: left;
+  margin-right: 10px;
 }
 .contact-wrapper .contact-photo {
   width: 80px;
@@ -948,11 +1050,14 @@ section {
   height: 175px;
 }
 .contact-name {
-  text-align: center;
   font-weight: bold;
+  padding-top: 15px;
 }
 .contact-details {
   color: #999999;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 /* editor */
 .jothidden {
index 5314b52843021c67988bcfd31f5a175f86904dc2..18d0fc620d45b3c582d46688a0c26648ded3e357 100755 (executable)
@@ -1,6 +1,7 @@
 // Quattro Theme LESS file
 
 // "Echo" palette from Inkscape
+@Yellow1 : #fce94f;
 @Blue1:rgb(25,174,255);
 @Blue2:rgb(0,132,200);
 @Blue3:rgb(0,92,148);
@@ -71,6 +72,7 @@
 @NoticeBackgroundColor: #511919;
 
 @ThreadBackgroundColor: #f6f7f8;
+@ShinyBorderColor: @Yellow1;
 
 @CommentBoxEmptyColor: @Grey3;
 @CommentBoxEmptyBorderColor: @Grey3;
@@ -91,4 +93,4 @@
 @JotPermissionUnlockBackgroundColor: @Grey2;
 @JotPermissionLockBackgroundColor: @Grey4;
 @JotLoadingBackgroundColor: @Grey1;
-
+@JotPreviewBackgroundColor: @Yellow1;
diff --git a/view/theme/quattro/contact_template.tpl b/view/theme/quattro/contact_template.tpl
deleted file mode 100755 (executable)
index f274965..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-
-<div class="contact-wrapper" id="contact-entry-wrapper-$id" >
-       <div class="contact-photo-wrapper" >
-               <div class="contact-photo mframe" id="contact-entry-photo-$id"
-               onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('contact-photo-menu-button-$id')" onmouseout="t$id=setTimeout('closeMenu(\'contact-photo-menu-button-$id\'); closeMenu(\'contact-photo-menu-$id\');',200)" >
-
-                       <a href="$url" title="$img_hover" /><img src="$thumb" $sparkle alt="$name" /></a>
-
-                       <a href="#" rel="#contact-photo-menu-$id" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-$id">menu</a>
-                       <ul class="contact-photo-menu menu-popup" id="contact-photo-menu-$id">
-                               $contact_photo_menu
-                       </ul>
-
-               </div>
-                       
-       </div>
-       <div class="contact-name" id="contact-entry-name-$id" >$name</div>
-
-
-</div>
-
index ac84e0eff7cbb2fc879eb0aff14e00a3521de7ec..9d26082616a6730efbc16b41d47e999ebda023e8 100755 (executable)
@@ -309,14 +309,51 @@ aside {
        .allcontact-link { float: right; margin: 5px 0px; }
        .contact-block-content {
                clear: both;
-               overflow: auto; height: auto;
+               overflow: hidden;
+               height: auto;
        }
+       /*.contact-block-div { width:60px; height: 60px; }*/
        .contact-block-link {
                float: left;
                margin: 0px 2px 2px 0px;
-               img { widht: 48px; height: 58px; }
+               img { width: 48px; height: 48px; }
        }
 }
+/* mail view */
+.mail-conv-sender,
+.mail-conv-detail {
+       float: left;
+}
+.mail-conv-detail {
+       margin-left: 20px;
+       width: 500px;
+}
+
+.mail-conv-subject {
+    font-size: 1.4em;
+    margin: 10px 0;
+}
+
+.mail-conv-outside-wrapper-end {
+       clear: both;
+}
+
+.mail-conv-outside-wrapper {
+       margin-top: 30px;
+}
+
+.mail-conv-delete-wrapper {
+       float: right;
+       margin-right: 30px;
+       margin-top: 15px;
+}
+.mail-conv-break {
+       clear: both;
+}
+
+.mail-conv-delete-icon {
+       border: none;
+}
 
 /* group member */
 #contact-edit-drop-link,
@@ -338,6 +375,7 @@ aside {
             top: -50px;
         }
 }
+/*
 #group-members {
        margin-top: 20px;
        padding: 10px;
@@ -360,9 +398,10 @@ aside {
 }
 .contact-block-div {
        float: left;
-       width: 52px;
-       height: 52px;
-}
+       width: 60px;
+       height: 60px;
+}*/
 /* widget */
 .widget {
        margin-bottom: 2em;
@@ -516,6 +555,8 @@ section {
 
 }
 
+.shiny { border-right:10px solid @ShinyBorderColor; }
+#jot-preview-content .tread-wrapper { background-color: @JotPreviewBackgroundColor; }
 
 
 .wall-item-tags { padding-top: 5px; }
@@ -554,7 +595,7 @@ section {
  right: 5px;
 }
 
-/* contacts menu */
+
 .contact-photo-wrapper { position: relative; }
 .contact-photo { 
        width: 48px; height: 48px;
@@ -571,9 +612,14 @@ section {
 
 .contact-wrapper {
        float: left;
-       width: 90px;
+       width: 300px;
        height: 90px;
-        margin-bottom: 15px;
+       padding-right: 10px;
+       margin: 0 10px 10px 0px;
+       .contact-photo-wrapper { 
+               float: left; 
+               margin-right: 10px;
+       }
        .contact-photo { 
                width: 80px; height: 80px;
                img { width: 80px; height: 80px; }
@@ -592,8 +638,13 @@ section {
                img { width: 175px; height: 175px; }
        }
 }
-.contact-name { text-align: center; font-weight: bold; }
-.contact-details { color: @Grey3;}
+.contact-name { font-weight: bold; padding-top: 15px; }
+.contact-details { 
+       color: @Grey3; white-space: nowrap;
+       overflow: hidden;
+       text-overflow: ellipsis;
+}
+
 /* editor */
 .jothidden { display: none; }
 #jot {
index 4c24ade8ea7aaf40ce67de38400cd7516c2199a3..b728023c9f66f86f8355b93a4203f47aa0449e17 100755 (executable)
@@ -602,6 +602,8 @@ aside #profiles-menu {
 #contact-block {
   overflow: auto;
   height: auto;
+  /*.contact-block-div { width:60px; height: 60px; }*/
+
 }
 #contact-block .contact-block-h4 {
   float: left;
@@ -613,7 +615,7 @@ aside #profiles-menu {
 }
 #contact-block .contact-block-content {
   clear: both;
-  overflow: auto;
+  overflow: hidden;
   height: auto;
 }
 #contact-block .contact-block-link {
@@ -621,8 +623,37 @@ aside #profiles-menu {
   margin: 0px 2px 2px 0px;
 }
 #contact-block .contact-block-link img {
-  widht: 48px;
-  height: 58px;
+  width: 48px;
+  height: 48px;
+}
+/* mail view */
+.mail-conv-sender, .mail-conv-detail {
+  float: left;
+}
+.mail-conv-detail {
+  margin-left: 20px;
+  width: 500px;
+}
+.mail-conv-subject {
+  font-size: 1.4em;
+  margin: 10px 0;
+}
+.mail-conv-outside-wrapper-end {
+  clear: both;
+}
+.mail-conv-outside-wrapper {
+  margin-top: 30px;
+}
+.mail-conv-delete-wrapper {
+  float: right;
+  margin-right: 30px;
+  margin-top: 15px;
+}
+.mail-conv-break {
+  clear: both;
+}
+.mail-conv-delete-icon {
+  border: none;
 }
 /* group member */
 #contact-edit-drop-link, .mail-list-delete-wrapper, .group-delete-wrapper {
@@ -646,31 +677,32 @@ aside #profiles-menu {
   position: relative;
   top: -50px;
 }
+/*
 #group-members {
-  margin-top: 20px;
-  padding: 10px;
-  height: 250px;
-  overflow: auto;
-  border: 1px solid #ddd;
+       margin-top: 20px;
+       padding: 10px;
+       height: 250px;
+       overflow: auto;
+       border: 1px solid #ddd;
 }
 #group-members-end {
-  clear: both;
+       clear: both;
 }
 #group-all-contacts {
-  padding: 10px;
-  height: 450px;
-  overflow: auto;
-  border: 1px solid #ddd;
+       padding: 10px;
+       height: 450px;
+       overflow: auto;
+       border: 1px solid #ddd;
 }
 #group-all-contacts-end {
-  clear: both;
-  margin-bottom: 10px;
+       clear: both;
+       margin-bottom: 10px;
 }
 .contact-block-div {
-  float: left;
-  width: 52px;
-  height: 52px;
-}
+       float: left;
+       width: 60px;
+       height: 60px;
+}*/
 /* widget */
 .widget {
   margin-bottom: 2em;
@@ -917,6 +949,12 @@ section {
   padding: 0;
   margin: 10px 0;
 }
+.shiny {
+  border-right: 10px solid #fce94f;
+}
+#jot-preview-content .tread-wrapper {
+  background-color: #fce94f;
+}
 .wall-item-tags {
   padding-top: 5px;
 }
@@ -956,7 +994,6 @@ section {
   bottom: 5px;
   right: 5px;
 }
-/* contacts menu */
 .contact-photo-wrapper {
   position: relative;
 }
@@ -978,9 +1015,14 @@ section {
 }
 .contact-wrapper {
   float: left;
-  width: 90px;
+  width: 300px;
   height: 90px;
-  margin-bottom: 15px;
+  padding-right: 10px;
+  margin: 0 10px 10px 0px;
+}
+.contact-wrapper .contact-photo-wrapper {
+  float: left;
+  margin-right: 10px;
 }
 .contact-wrapper .contact-photo {
   width: 80px;
@@ -1008,11 +1050,14 @@ section {
   height: 175px;
 }
 .contact-name {
-  text-align: center;
   font-weight: bold;
+  padding-top: 15px;
 }
 .contact-details {
   color: #999999;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
 }
 /* editor */
 .jothidden {
diff --git a/view/theme/testbubble/contact_template.tpl b/view/theme/testbubble/contact_template.tpl
new file mode 100755 (executable)
index 0000000..48930b4
--- /dev/null
@@ -0,0 +1,25 @@
+
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-$contact.id" >
+       <div class="contact-entry-photo-wrapper" >
+               <div class="contact-entry-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
+
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
+
+                       {{ if $contact.photo_menu }}
+                       <span onclick="openClose('contact-photo-menu-$contact.id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$contact.id">menu</span>
+                <div class="contact-photo-menu" id="contact-photo-menu-$contact.id">
+                    <ul>
+                        $contact.photo_menu
+                    </ul>
+                </div>
+                       {{ endif }}
+               </div>
+                       
+       </div>
+       <div class="contact-entry-photo-end" ></div>
+               <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
+
+       <div class="contact-entry-end" ></div>
+</div>
index acbea5bf84f3a0669e1b82fbde18faf80393a31a..d657a11c57afbb6b7057ba8ce355828a2ea0e461 100755 (executable)
@@ -6,9 +6,11 @@
        <div id="notifications">        
                {{ if $nav.network }}<a rel="#nav-notifications-menu" id="net-update" class="nav-ajax-update" href="$nav.network.0" title="$nav.network.1"></a>{{ endif }}
                {{ if $nav.home }}<a rel="#nav-notifications-menu" id="home-update" class="nav-ajax-update" href="$nav.home.0" title="$nav.home.1"></a>{{ endif }}
-               {{ if $nav.notifications }}<a rel="#nav-notifications-menu" id="intro-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }}
+<!--           {{ if $nav.notifications }}<a rel="#nav-notifications-menu" id="intro-update" class="nav-ajax-update" href="$nav.notifications.0" title="$nav.notifications.1"></a>{{ endif }} -->
+               {{ if $nav.introductions }}<a rel="#nav-notifications-menu" id="intro-update" class="nav-ajax-update" href="$nav.introductions.0" title="$nav.introductions.1"></a>{{ endif }}
                {{ if $nav.messages }}<a rel="#nav-notifications-menu" id="mail-update" class="nav-ajax-update" href="$nav.messages.0" title="$nav.messages.1"></a>{{ endif }}
                <ul id="nav-notifications-menu" class="menu-popup">
+                       <li id="nav-notifications-mark-all"><a href="#" onclick="notifyMarkAll(); return false;">$nav.notifications.mark.1</a></li>
                        <li id="nav-notifications-see-all"><a href="$nav.notifications.all.0">$nav.notifications.all.1</a></li>
                        <li class="empty">$emptynotifications</li>
                </ul>
index fcb7bea7a1feb32937139215e7b28e48e02bc34e..c6f66d5adc03fa677694b463021bd811831c1c80 100755 (executable)
@@ -3202,6 +3202,10 @@ ul.menu-popup {
        background-color:#b20202;
 }
 
+#nav-notifications-menu a:hover {
+       text-decoration: underline;
+}
+
 .notif-item a {
        vertical-align: middle;
        color: #626262;
old mode 100644 (file)
new mode 100755 (executable)
index f274965..48930b4
@@ -1,21 +1,25 @@
 
-<div class="contact-wrapper" id="contact-entry-wrapper-$id" >
-       <div class="contact-photo-wrapper" >
-               <div class="contact-photo mframe" id="contact-entry-photo-$id"
-               onmouseover="if (typeof t$id != 'undefined') clearTimeout(t$id); openMenu('contact-photo-menu-button-$id')" onmouseout="t$id=setTimeout('closeMenu(\'contact-photo-menu-button-$id\'); closeMenu(\'contact-photo-menu-$id\');',200)" >
+<div class="contact-entry-wrapper" id="contact-entry-wrapper-$contact.id" >
+       <div class="contact-entry-photo-wrapper" >
+               <div class="contact-entry-photo mframe" id="contact-entry-photo-$contact.id"
+               onmouseover="if (typeof t$contact.id != 'undefined') clearTimeout(t$contact.id); openMenu('contact-photo-menu-button-$contact.id')" 
+               onmouseout="t$contact.id=setTimeout('closeMenu(\'contact-photo-menu-button-$contact.id\'); closeMenu(\'contact-photo-menu-$contact.id\');',200)" >
 
-                       <a href="$url" title="$img_hover" /><img src="$thumb" $sparkle alt="$name" /></a>
-
-                       <a href="#" rel="#contact-photo-menu-$id" class="contact-photo-menu-button icon s16 menu" id="contact-photo-menu-button-$id">menu</a>
-                       <ul class="contact-photo-menu menu-popup" id="contact-photo-menu-$id">
-                               $contact_photo_menu
-                       </ul>
+                       <a href="$contact.url" title="$contact.img_hover" /><img src="$contact.thumb" $contact.sparkle alt="$contact.name" /></a>
 
+                       {{ if $contact.photo_menu }}
+                       <span onclick="openClose('contact-photo-menu-$contact.id');" class="fakelink contact-photo-menu-button" id="contact-photo-menu-button-$contact.id">menu</span>
+                <div class="contact-photo-menu" id="contact-photo-menu-$contact.id">
+                    <ul>
+                        $contact.photo_menu
+                    </ul>
+                </div>
+                       {{ endif }}
                </div>
                        
        </div>
-       <div class="contact-name" id="contact-entry-name-$id" >$name</div>
-
+       <div class="contact-entry-photo-end" ></div>
+               <div class="contact-entry-name" id="contact-entry-name-$contact.id" >$contact.name</div>
 
+       <div class="contact-entry-end" ></div>
 </div>
-
index c61544f9f899368413c3763dcbe2c98e8ab43d6e..d6f01643ea6893dbc88150e7d11e2febcdbe8a29 100755 (executable)
@@ -1,9 +1,9 @@
+<h3>$title</h3>
 
-<div class="contact-wrapper" id="view-contact-wrapper-$id" >
-       <div class="contact-photo-wrapper" >
-               <div class="mframe contact-photo" id="view-contact-photo-$id" >
-                       <a href="$url" title="$alt_text" /><img src="$thumb" alt="$name" /></a>
-               </div>
-       </div>
-       <div class="contact-name" id="view-contact-name-$id" >$name</div>
-</div>
+{{ for $contacts as $contact }}
+       {{ inc contact_template.tpl }}{{ endinc }}
+{{ endfor }}
+
+<div id="view-contact-end"></div>
+
+$paginate