]> git.mxchange.org Git - friendica.git/commitdiff
Merge pull request #2130 from annando/1512-contact-rework
authorTobias Diekershoff <tobias.diekershoff@gmx.net>
Fri, 4 Dec 2015 05:53:29 +0000 (06:53 +0100)
committerTobias Diekershoff <tobias.diekershoff@gmx.net>
Fri, 4 Dec 2015 05:53:29 +0000 (06:53 +0100)
Some more contact rework

doc/Accesskeys.md
include/items.php
include/ostatus.php
mod/allfriends.php
mod/common.php
mod/contacts.php
mod/crepair.php
view/templates/contact_edit.tpl
view/templates/section_title.tpl
view/templates/viewcontact_template.tpl

index 5e25e55c45124d85e93421fc93bc1d8d79d44a72..c49e79c0ab635b91bd4d31082591b6149943e9a1 100644 (file)
@@ -33,6 +33,10 @@ General
 
 /contacts (single contact view)
 -------------------------------
+* m: Status messages
+* o: Profile
+* t: Contacts
+* d: Common friends
 * b: Toggle Blocked status
 * i: Toggle Ignored status
 * v: Toggle Archive status
index 1e68787d2435416d2aa1638c177862ecbde7d9e8..2ac494ba275ce4569838ecd548fd1a1746beff8f 100644 (file)
@@ -1250,8 +1250,10 @@ function item_store($arr,$force_parent = false, $notify = false, $dontcache = fa
 
        if ($notify)
                $guid_prefix = "";
-       else
-               $guid_prefix = $arr['network'];
+       else {
+               $parsed = parse_url($arr["author-link"]);
+               $guid_prefix = hash("crc32", $parsed["host"]);
+       }
 
        $arr['wall']          = ((x($arr,'wall'))          ? intval($arr['wall'])                : 0);
        $arr['guid']          = ((x($arr,'guid'))          ? notags(trim($arr['guid']))          : get_guid(32, $guid_prefix));
@@ -2320,6 +2322,9 @@ function edited_timestamp_is_newer($existing, $update) {
 function consume_feed($xml,$importer,&$contact, &$hub, $datedir = 0, $pass = 0) {
        if ($contact['network'] === NETWORK_OSTATUS) {
                if ($pass < 2) {
+                       // Test - remove before flight
+                       //$tempfile = tempnam(get_temppath(), "ostatus2");
+                       //file_put_contents($tempfile, $xml);
                        logger("Consume OStatus messages ", LOGGER_DEBUG);
                        ostatus_import($xml,$importer,$contact, $hub);
                }
index ebd5741e5157a44977a4f6452857c2f509199191..07eaec85d50f4b962a3b281507e84606ade94ce9 100644 (file)
@@ -1282,6 +1282,14 @@ function ostatus_add_author($doc, $owner, $profile) {
        return $author;
 }
 
+/*
+To-Do: Picture attachments should look like this:
+
+<a href="https://status.pirati.ca/attachment/572819" title="https://status.pirati.ca/file/heluecht-20151202T222602-rd3u49p.gif"
+class="attachment thumbnail" id="attachment-572819" rel="nofollow external">https://status.pirati.ca/attachment/572819</a>
+
+*/
+
 function ostatus_entry($doc, $item, $owner, $toplevel = false) {
        $a = get_app();
 
index 1be9550b10be2f16944a1884edf68b19ec71faf9..49879c7a03dbcab8613032318a0f17b2a4ddc178 100644 (file)
@@ -3,6 +3,7 @@
 require_once('include/socgraph.php');
 require_once('include/Contact.php');
 require_once('include/contact_selectors.php');
+require_once('mod/contacts.php');
 
 function allfriends_content(&$a) {
 
@@ -25,19 +26,11 @@ function allfriends_content(&$a) {
                intval(local_user())
        );
 
-       $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array(
-               '$name'  => htmlentities($c[0]['name']),
-               '$photo' => $c[0]['photo'],
-               'url'    => z_root() . '/contacts/' . $cid
-       ));
-
-       if(! x($a->page,'aside'))
-               $a->page['aside'] = '';
-       $a->page['aside'] .= $vcard_widget;
-
        if(! count($c))
                return;
 
+       $a->page['aside'] = "";
+       profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"]));
 
        $r = all_friends(local_user(),$cid);
 
@@ -86,10 +79,13 @@ function allfriends_content(&$a) {
                $entries[] = $entry;
        }
 
+       $tab_str = contacts_tab($a, $cid, 3);
+
        $tpl = get_markup_template('viewcontact_template.tpl');
 
        $o .= replace_macros($tpl,array(
-               '$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])),
+               //'$title' => sprintf( t('Friends of %s'), htmlentities($c[0]['name'])),
+               '$tab_str' => $tab_str,
                '$contacts' => $entries,
        ));
 
index 08609222972e68dfcd832647f2709d2fbe619967..7c12dd39bbf0b0c472adc5249a1d7f72a2700b09 100644 (file)
@@ -3,6 +3,7 @@
 require_once('include/socgraph.php');
 require_once('include/Contact.php');
 require_once('include/contact_selectors.php');
+require_once('mod/contacts.php');
 
 function common_content(&$a) {
 
@@ -29,22 +30,23 @@ function common_content(&$a) {
                        intval($cid),
                        intval($uid)
                );
-       }
-       else {
+               $a->page['aside'] = "";
+               profile_load($a, "", 0, get_contact_details_by_url($c[0]["url"]));
+       } else {
                $c = q("SELECT `name`, `url`, `photo` FROM `contact` WHERE `self` = 1 AND `uid` = %d LIMIT 1",
                        intval($uid)
                );
-       }
 
-       $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array(
-               '$name' => htmlentities($c[0]['name']),
-               '$photo' => $c[0]['photo'],
-               'url' => z_root() . '/contacts/' . $cid
-       ));
+               $vcard_widget .= replace_macros(get_markup_template("vcard-widget.tpl"),array(
+                       '$name' => htmlentities($c[0]['name']),
+                       '$photo' => $c[0]['photo'],
+                       'url' => z_root() . '/contacts/' . $cid
+               ));
 
-       if(! x($a->page,'aside'))
-               $a->page['aside'] = '';
-       $a->page['aside'] .= $vcard_widget;
+               if(! x($a->page,'aside'))
+                       $a->page['aside'] = '';
+               $a->page['aside'] .= $vcard_widget;
+       }
 
        if(! count($c))
                return;
@@ -127,10 +129,16 @@ function common_content(&$a) {
                $entries[] = $entry;
        }
 
+       if($cmd === 'loc' && $cid && $uid == local_user()) {
+               $tab_str = contacts_tab($a, $cid, 4);
+       } else
+               $title = t('Common Friends');
+
        $tpl = get_markup_template('viewcontact_template.tpl');
 
        $o .= replace_macros($tpl,array(
-               '$title' => t('Common Friends'),
+               '$title' => $title,
+               '$tab_str' => $tab_str,
                '$contacts' => $entries,
        ));
 
index f1829a1830f036021779cc819fffe535f9aacd15..cff68abc65facc03a799495c024c3a3f5cc96060 100644 (file)
@@ -552,16 +552,16 @@ function contacts_content(&$a) {
 
                $nettype = sprintf( t('Network type: %s'),network_to_name($contact['network'], $contact["url"]));
 
-               $common = count_common_friends(local_user(),$contact['id']);
-               $common_text = (($common) ? sprintf( tt('%d contact in common','%d contacts in common', $common),$common) : '');
+               //$common = count_common_friends(local_user(),$contact['id']);
+               //$common_text = (($common) ? sprintf( tt('%d contact in common','%d contacts in common', $common),$common) : '');
 
                $polling = (($contact['network'] === NETWORK_MAIL | $contact['network'] === NETWORK_FEED) ? 'polling' : '');
 
-               $x = count_all_friends(local_user(), $contact['id']);
-               $all_friends = (($x) ? t('View all contacts') : '');
+               //$x = count_all_friends(local_user(), $contact['id']);
+               //$all_friends = (($x) ? t('View all contacts') : '');
 
                // tabs
-               $tab_str = contact_tabs($a, $contact_id, 2);
+               $tab_str = contacts_tab($a, $contact_id, 2);
 
                $lost_contact = (($contact['archive'] && $contact['term-date'] != '0000-00-00 00:00:00' && $contact['term-date'] < datetime_convert('','','now')) ? t('Communications lost with this contact!') : '');
 
@@ -814,7 +814,7 @@ function contacts_content(&$a) {
        return $o;
 }
 
-function contact_tabs($a, $contact_id, $active_tab) {
+function contacts_tab($a, $contact_id, $active_tab) {
        // tabs
        $tabs = array(
                array(
@@ -831,41 +831,57 @@ function contact_tabs($a, $contact_id, $active_tab) {
                        'sel' => (($active_tab == 2)?'active':''),
                        'title' => t('Profile Details'),
                        'id' => 'status-tab',
-                       'accesskey' => 'r',
-               ),
-               array(
-                       'label' => t('Repair'),
+                       'accesskey' => 'o',
+               )
+       );
+
+       $x = count_all_friends(local_user(), $contact_id);
+       if ($x)
+               $tabs[] = array('label'=>t('Contacts'),
+                               'url' => "allfriends/".$contact_id,
+                               'sel' => (($active_tab == 3)?'active':''),
+                               'title' => t('View all contacts'),
+                               'id' => 'allfriends-tab',
+                               'accesskey' => 't');
+
+       $common = count_common_friends(local_user(),$contact_id);
+       if ($common)
+               $tabs[] = array('label'=>t('Common Friends'),
+                               'url' => "common/loc/".local_user()."/".$contact_id,
+                               'sel' => (($active_tab == 4)?'active':''),
+                               'title' => t('View all common friends'),
+                               'id' => 'common-loc-tab',
+                               'accesskey' => 'd');
+
+       $tabs[] = array('label' => t('Repair'),
                        'url'   => $a->get_baseurl(true) . '/crepair/' . $contact_id,
-                       'sel' => (($active_tab == 3)?'active':''),
+                       'sel' => (($active_tab == 5)?'active':''),
                        'title' => t('Advanced Contact Settings'),
                        'id'    => 'repair-tab',
-                       'accesskey' => 'r',
-               ),
-               array(
-                       'label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
+                       'accesskey' => 'r');
+
+
+       $tabs[] = array('label' => (($contact['blocked']) ? t('Unblock') : t('Block') ),
                        'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/block',
                        'sel'   => '',
                        'title' => t('Toggle Blocked status'),
                        'id'    => 'toggle-block-tab',
-                       'accesskey' => 'b',
-               ),
-               array(
-                       'label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
+                       'accesskey' => 'b');
+
+       $tabs[] = array('label' => (($contact['readonly']) ? t('Unignore') : t('Ignore') ),
                        'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/ignore',
                        'sel'   => '',
                        'title' => t('Toggle Ignored status'),
                        'id'    => 'toggle-ignore-tab',
-                       'accesskey' => 'i',
-               ),
-               array(
-                       'label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ),
+                       'accesskey' => 'i');
+
+       $tabs[] = array('label' => (($contact['archive']) ? t('Unarchive') : t('Archive') ),
                        'url'   => $a->get_baseurl(true) . '/contacts/' . $contact_id . '/archive',
                        'sel'   => '',
                        'title' => t('Toggle Archive status'),
                        'id'    => 'toggle-archive-tab',
-                       'accesskey' => 'v',
-               )
-       );
+                       'accesskey' => 'v');
+
        $tab_tpl = get_markup_template('common_tabs.tpl');
        $tab_str = replace_macros($tab_tpl, array('$tabs' => $tabs));
 
@@ -885,8 +901,10 @@ function contact_posts($a, $contact_id) {
 
        if(get_config('system', 'old_pager')) {
                $r = q("SELECT COUNT(*) AS `total` FROM `item`
-                       WHERE `item`.`uid` = %d AND (`author-link` = '%s')",
-                       intval(local_user()), dbesc($contact["url"]));
+                       WHERE `item`.`uid` = %d AND `author-link` IN ('%s', '%s')",
+                       intval(local_user()),
+                       dbesc(normalise_link($contact["url"])),
+                       dbesc(str_replace("http://", "https://", $contact["url"])));
 
                $a->set_pager_total($r[0]['total']);
        }
@@ -896,16 +914,17 @@ function contact_posts($a, $contact_id) {
                        `owner-link` AS `url`, `owner-avatar` AS `thumb`
                FROM `item` FORCE INDEX (uid_contactid_created)
                WHERE `item`.`uid` = %d AND `contact-id` = %d
-                       AND (`author-link` = '%s')
+                       AND `author-link` IN ('%s', '%s')
                ORDER BY `item`.`created` DESC LIMIT %d, %d",
                intval(local_user()),
                intval($contact_id),
-               dbesc($contact["url"]),
+               dbesc(normalise_link($contact["url"])),
+               dbesc(str_replace("http://", "https://", $contact["url"])),
                intval($a->pager['start']),
                intval($a->pager['itemspage'])
        );
 
-       $tab_str = contact_tabs($a, $contact_id, 1);
+       $tab_str = contacts_tab($a, $contact_id, 1);
 
        $o .= $tab_str;
 
index 98202ae0b006310cddf8d697d6030054c23ceb95..6f951bdf6eade2dcd2321e63f250455892fe152c 100644 (file)
@@ -23,25 +23,9 @@ function crepair_init(&$a) {
                $a->page['aside'] = '';
 
        if($contact_id) {
-                       $a->data['contact'] = $r[0];
-
-                       if (($a->data['contact']['network'] != "") AND ($a->data['contact']['network'] != NETWORK_DFRN)) {
-                               $networkname = format_network_name($a->data['contact']['network'],$a->data['contact']['url']);
-                       } else 
-                               $networkname = '';
-
-                       $vcard_widget = replace_macros(get_markup_template("vcard-widget.tpl"),array(
-                               '$name' => htmlentities($a->data['contact']['name']),
-                               '$photo' => $a->data['contact']['photo'],
-                               '$url' => ($a->data['contact']['network'] == NETWORK_DFRN) ? z_root()."/redir/".$a->data['contact']['id'] : $a->data['contact']['url'],
-                               '$addr' => (($a->data['contact']['addr'] != "") ? ($a->data['contact']['addr']) : ""),
-                               '$network_name' => $networkname,
-                               '$network' => t('Network:'),
-                               'account_type' => (($a->data['contact']['forum'] || $a->data['contact']['prv']) ? t('Forum') : '')
-                       ));
-
-                       $a->page['aside'] .= $vcard_widget;
-
+               $a->data['contact'] = $r[0];
+                $contact = $r[0];
+               profile_load($a, "", 0, get_contact_details_by_url($contact["url"]));
        }
 }
 
@@ -170,7 +154,7 @@ function crepair_content(&$a) {
 
        $update_profile = in_array($contact['network'], array(NETWORK_DFRN, NETWORK_DSPR, NETWORK_OSTATUS));
 
-       $tab_str = contact_tabs($a, $contact['id'], 3);
+       $tab_str = contacts_tab($a, $contact['id'], 5);
 
 
        $tpl = get_markup_template('crepair.tpl');
index 0733c9e18752d60eb6b4cd770e863acaf9b647c5..15863b6a272227a4ece28b1153058beca943a996 100644 (file)
@@ -1,4 +1,4 @@
-<h2>{{$header}}</h2>
+{{if $header}}<h2>{{$header}}</h2>{{/if}}
 
 <div id="contact-edit-wrapper" >
 
index 8614fb883b0866fa06912dd3ae18fc48afa49658..f17dcf7ad40759f893c047b764c282bbeaab6ca5 100644 (file)
@@ -1,4 +1,4 @@
 <div class="section-title-wrapper">
-       <h2>{{$title}}</h2>
+       {{if $title}}<h2>{{$title}}</h2>{{/if}}
        <div class="clear"></div>
 </div>
index 205ad736d5c5065568977c8a244d139bc8c6fd86..3ea277a42bd6ea0cdf0f1a315de95baf866191ff 100644 (file)
@@ -1,12 +1,14 @@
 
 {{include file="section_title.tpl"}}
 
+{{$tab_str}}
+
 <div id="viewcontact_wrapper-{{$id}}">
 {{foreach $contacts as $contact}}
        {{include file="contact_template.tpl"}}
 {{/foreach}}
 </div>
-
+<div class="clear"></div>
 <div id="view-contact-end"></div>
 
 {{$paginate}}