]> git.mxchange.org Git - friendica.git/commitdiff
Issue 7563: Use icons instead of names on posts
authorMichael <heluecht@pirati.ca>
Wed, 28 Aug 2019 06:38:35 +0000 (06:38 +0000)
committerMichael <heluecht@pirati.ca>
Wed, 28 Aug 2019 06:38:35 +0000 (06:38 +0000)
include/conversation.php
src/Content/ContactSelector.php
src/Object/Post.php
view/theme/frio/templates/search_item.tpl
view/theme/frio/templates/wall_thread.tpl

index 798a224016c911bf72d8284ad5a053ce8a6ee9db..66b6d2a11cc48cb6de5862c534f34406b706c8ec 100644 (file)
@@ -677,6 +677,7 @@ function conversation(App $a, array $items, Pager $pager, $mode, $update, $previ
                                        'guid' => ($preview ? 'Q0' : $item['guid']),
                                        'network' => $item['network'],
                                        'network_name' => ContactSelector::networkToName($item['network'], $item['author-link']),
+                                       'network_icon' => ContactSelector::networkToIcon($item['network'], $item['author-link']),
                                        'linktitle' => L10n::t('View %s\'s profile @ %s', $profile_name, $item['author-link']),
                                        'profile_url' => $profile_link,
                                        'item_photo_menu' => item_photo_menu($item),
index 2b86a6e75df663291b5f6bbd1fdaa7fac437928f..2f6677aba1cfc13b564139ac2d67f48748c1dd5e 100644 (file)
@@ -71,6 +71,39 @@ class ContactSelector
                return $o;
        }
 
+       /**
+        * @param string $profile Profile URL
+        * @return string Server URL
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        */
+       private static function getServerURLForProfile($profile)
+       {
+               $server_url = '';
+
+               // Fetch the server url from the contact table
+               $contact = DBA::selectFirst('contact', ['baseurl'], ['nurl' => Strings::normaliseLink($profile)]);
+               if (DBA::isResult($contact) && !empty($contact['baseurl'])) {
+                       $server_url = Strings::normaliseLink($contact['baseurl']);
+               }
+
+               if (empty($server_url)) {
+                       // Fetch the server url from the gcontact table
+                       $gcontact = DBA::selectFirst('gcontact', ['server_url'], ['nurl' => Strings::normaliseLink($profile)]);
+                       if (!empty($gcontact) && !empty($gcontact['server_url'])) {
+                               $server_url = Strings::normaliseLink($gcontact['server_url']);
+                       }
+               }
+
+               if (empty($server_url)) {
+                       // Create the server url out of the profile url
+                       $parts = parse_url($profile);
+                       unset($parts['path']);
+                       $server_url = Strings::normaliseLink(Network::unparseURL($parts));
+               }
+
+               return $server_url;
+       }
+
        /**
         * @param string $network network
         * @param string $profile optional, default empty
@@ -106,16 +139,7 @@ class ContactSelector
                $networkname = str_replace($search, $replace, $network);
 
                if ((in_array($network, Protocol::FEDERATED)) && ($profile != "")) {
-                       // Create the server url out of the profile url
-                       $parts = parse_url($profile);
-                       unset($parts['path']);
-                       $server_url = [Strings::normaliseLink(Network::unparseURL($parts))];
-
-                       // Fetch the server url
-                       $gcontact = DBA::selectFirst('gcontact', ['server_url'], ['nurl' => Strings::normaliseLink($profile)]);
-                       if (!empty($gcontact) && !empty($gcontact['server_url'])) {
-                               $server_url[] = Strings::normaliseLink($gcontact['server_url']);
-                       }
+                       $server_url = self::getServerURLForProfile($profile);
 
                        // Now query the GServer for the platform name
                        $gserver = DBA::selectFirst('gserver', ['platform', 'network'], ['nurl' => $server_url]);
@@ -140,6 +164,69 @@ class ContactSelector
                return $networkname;
        }
 
+       /**
+        * @param string $network network
+        * @param string $profile optional, default empty
+        * @return string
+        * @throws \Friendica\Network\HTTPException\InternalServerErrorException
+        */
+       public static function networkToIcon($network, $profile = "")
+       {
+               $nets = [
+                       Protocol::DFRN      =>   'friendica',
+                       Protocol::OSTATUS   =>   'gnu-social',
+                       Protocol::FEED      =>   'rss',
+                       Protocol::MAIL      =>   '',
+                       Protocol::DIASPORA  =>   'diaspora',
+                       Protocol::ZOT       =>   'hubzilla',
+                       Protocol::LINKEDIN  =>   'linkedin',
+                       Protocol::XMPP      =>   'xmpp',
+                       Protocol::MYSPACE   =>   '',
+                       Protocol::GPLUS     =>   'google-plus',
+                       Protocol::PUMPIO    =>   '',
+                       Protocol::TWITTER   =>   'twitter',
+                       Protocol::DIASPORA2 =>   'diaspora',
+                       Protocol::STATUSNET =>   'gnu-social',
+                       Protocol::ACTIVITYPUB => 'activitypub',
+                       Protocol::PNUT      =>   '',
+               ];
+
+               $search  = array_keys($nets);
+               $replace = array_values($nets);
+
+               $networkicon = str_replace($search, $replace, $network);
+
+               if ((in_array($network, Protocol::FEDERATED)) && ($profile != "")) {
+                       $server_url = self::getServerURLForProfile($profile);
+
+                       // Now query the GServer for the platform name
+                       $gserver = DBA::selectFirst('gserver', ['platform'], ['nurl' => $server_url]);
+
+                       if (DBA::isResult($gserver) && !empty($gserver['platform'])) {
+                               switch (strtolower($gserver['platform'])) {
+                                       case 'friendica':
+                                               $networkicon = 'friendica';
+                                               break;
+                                       case 'hubzilla':
+                                               $networkicon = 'hubzilla';
+                                               break;
+                                       case 'mastodon':
+                                               $networkicon = 'mastodon';
+                                               break;
+                                       case 'pleroma':
+                                               $networkicon = 'pleroma';
+                                               break;
+                               }
+                       }
+               }
+
+               if (empty($networkicon)) {
+                       $networkicon = 'file-text-o';
+               }
+
+               return $networkicon;
+       }
+
        /**
         * @param string $current optional, default empty
         * @param string $suffix  optionsl, default empty
index 7f9f84b546c678c274db0a76f1ffa0620b271af8..36be9c4e6b8577cb90b5838cd62bcfa01f0aa11d 100644 (file)
@@ -426,6 +426,7 @@ class Post extends BaseObject
                        'edited'          => $edited,
                        'network'         => $item["network"],
                        'network_name'    => ContactSelector::networkToName($item['network'], $item['author-link']),
+                       'network_icon'    => ContactSelector::networkToIcon($item['network'], $item['author-link']),
                        'received'        => $item['received'],
                        'commented'       => $item['commented'],
                        'created_date'    => $item['created'],
index 3b3f64a0d4f6b95d33f9f3f91a72719a498e8c94..3b56621ef379b7396f8c7b07a40a9cd759a3fe7d 100644 (file)
                        {{* Put additional actions in a top-right dropdown menu *}}
 
                        <ul class="nav nav-pills preferences">
+                               {{if $item.network_icon != ""}}
+                               <li><span class="wall-item-network" title="{{$item.app}}"><i class="fa fa-{{$item.network_icon}}" aria-hidden="true"></i></span></li>
+                               {{else}}
                                <li><span class="wall-item-network" title="{{$item.app}}">{{$item.network_name}}</span></li>
+                               {{/if}}
+
 
                                {{if $item.plink || $item.star || $item.drop.dropping || $item.edpost || $item.subthread}}
                                <li class="dropdown">
index 21923737c03d2523a79010ec32b667296a33a399..ad8ab7c6cd1379098b5479df1436e4004e958d85 100644 (file)
@@ -84,8 +84,11 @@ as the value of $top_child_total (this is done at the end of this file)
                {{* Put addional actions in a top-right dropdown menu *}}
 
                <ul class="nav nav-pills preferences">
+                       {{if $item.network_icon != ""}}
+                        <li><span class="wall-item-network" title="{{$item.app}}"><i class="fa fa-{{$item.network_icon}}" aria-hidden="true"></i></span></li>
+                       {{else}}
                        <li><span class="wall-item-network" title="{{$item.app}}">{{$item.network_name}}</span></li>
-
+                       {{/if}}
                        {{if $item.plink || $item.drop.dropping || $item.edpost || $item.ignore || $item.tagger || $item.star || $item.filer || $item.subthread}}
                        <li class="dropdown">
                                <button type="button" class="btn-link dropdown-toggle" data-toggle="dropdown" id="dropdownMenuTools-{{$item.id}}" aria-haspopup="true" aria-expanded="false"><i class="fa fa-angle-down" aria-hidden="true"></i></button>