Browse Source

previus invitations dropdown menu - refs #2681

Alex Aragón 6 years ago
parent
commit
ee0002fef1

+ 23 - 1
main/inc/ajax/message.ajax.php

@@ -13,6 +13,28 @@ require_once __DIR__.'/../global.inc.php';
 $action = $_GET['a'];
 
 switch ($action) {
+    case 'get_notifications_friends':
+        $userId = api_get_user_id();
+        $listInvitations = [];
+        $temp = [];
+        if (api_get_setting('allow_social_tool') == 'true') {
+            $list = SocialManager::get_list_invitation_of_friends_by_user_id($userId,3);
+
+            foreach ($list as $row){
+                $user = api_get_user_info($row['user_sender_id']);
+                $temp['title'] = $row['title'];
+                $temp['content'] = $row['content'];
+                $temp['date'] = $row['send_date'];
+                $temp['user_id'] = $user['id'];
+                $temp['fullname'] = $user['complete_name'];
+                $temp['email'] = $user['email'];
+                $temp['avatar'] = $user['avatar_small'];
+                $listInvitations[]=$temp;
+            }
+        }
+        header("Content-type:application/json");
+        echo json_encode($listInvitations);
+        break;
     case 'get_count_message':
         $userId = api_get_user_id();
         $invitations = [];
@@ -124,7 +146,7 @@ switch ($action) {
                 'id' => $user->getId(),
             ];
         }
-
+        header("Content-type:application/json");
         echo json_encode($return);
         break;
     default:

+ 4 - 1
main/inc/lib/social.lib.php

@@ -402,7 +402,7 @@ class SocialManager extends UserManager
      *
      * @return array
      */
-    public static function get_list_invitation_of_friends_by_user_id($userId)
+    public static function get_list_invitation_of_friends_by_user_id($userId, $limit)
     {
         $userId = (int) $userId;
 
@@ -416,6 +416,9 @@ class SocialManager extends UserManager
                 WHERE
                     user_receiver_id = '.$userId.' AND
                     msg_status = '.MESSAGE_STATUS_INVITATION_PENDING;
+        if($limit){
+            $sql .= ' LIMIT '.$limit;
+        }
         $res = Database::query($sql);
         $list = [];
         while ($row = Database::fetch_array($res, 'ASSOC')) {

+ 58 - 6
src/ThemeBundle/Resources/views/Layout/topbar.html.twig

@@ -80,6 +80,51 @@
                     window.dispatchEvent(window.EVENT);
                 }, 300);
             });
+
+            /**
+             * Notifications Systems
+             */
+            $.get(
+                '{{ url('legacy_main', { name : 'inc/ajax/message.ajax.php'}) }}',
+                {'a': 'get_count_message'},
+                function (data) {
+                    var countFriends = data.ms_friends;
+                    var countInbox = data.ms_inbox
+                    if (countFriends != 0) {
+                        $("#notifications-social").removeClass('d-none');
+                        $("#notifications-social").append(countFriends);
+                    }
+                    if(countInbox != 0){
+                        $("#notifications-inbox").removeClass('d-none');
+                        $("#notifications-inbox").append(countFriends);
+                    }
+                }
+            );
+
+            $('#list_notifications').on('click', e => {
+
+                var $listFriends = $('#list_friends');
+                var $html;
+                $.get(
+                    '{{ url('legacy_main', { name : 'inc/ajax/message.ajax.php'}) }}',
+                    {'a': 'get_notifications_friends'},
+                    function (data) {
+
+                        for (var i in data){
+
+                            $html = '<a class="dropdown-item preview-item">';
+                            $html += '<div class="preview-thumbnail"><img class="rounded-circle" src="'+data[i].avatar+'"/></div>';
+                            $html += '<div class="preview-item-content flex-grow">';
+                            $html += '<h6>'+data[i].fullname+'</h6>';
+                            $html += '<h6>'+data[i].title+'</h6>';
+                            $html += '<p>'+data[i].content+'</p><span class="date">'+data[i].date+'</span>';
+                            $html += '</div></a>';
+                            $listFriends.append($html);
+                        }
+
+                    }
+                );
+            });
         });
     </script>
     <div class="header navbar">
@@ -110,19 +155,26 @@
 
                 <li class="btn-menu">
                     <a href="{{ url('legacy_main', { 'name' : 'calendar/agenda_js.php' }) }}">
-                        <i class="fa fa-calendar fa-lg" aria-hidden="true"></i>
+                        <i class="far fa-calendar"></i>
                     </a>
                 </li>
 
-                <li class="notifications">
-                    <span class="counter bgc-red">3</span>
-                    <a href="#" class="no-after" >
+                <li class="notifications dropdown">
+                    <span id="notifications-social" class="counter d-none"></span>
+                    <a id="list_notifications" href="#" class="dropdown-toggle no-after" data-toggle="dropdown">
                         <i class="far fa-bell"></i>
                     </a>
+
+                    <ul id="list_friends" class="dropdown-menu ">
+                        <li>
+
+                        </li>
+                    </ul>
+
                 </li>
                 <li class="notifications">
-                    <span class="counter bgc-blue">3</span>
-                    <a href="" class="no-after">
+                    <span id="notifications-inbox" class="counter d-none"></span>
+                    <a href="{{ url('legacy_main', { 'name' : 'messages/inbox.php' }) }}" class="no-after">
                         <i class="far fa-envelope"></i>
                     </a>
                 </li>