summary refs log tree commit diff
path: root/webclient
diff options
context:
space:
mode:
authorKegan Dougal <kegan@matrix.org>2014-10-30 11:14:29 +0000
committerKegan Dougal <kegan@matrix.org>2014-10-30 11:15:44 +0000
commitd5aa9655223d5a57b76194b155a6366791dd084c (patch)
treec0e13896fbe7394d3ad1e857d5bef4fb40dcac80 /webclient
parentFix pep8 warnings (diff)
downloadsynapse-d5aa9655223d5a57b76194b155a6366791dd084c.tar.xz
SYWEB-12: Add a 'Room Info' button which displays all state content.
Content displayed in a modal dialog. Currently only read-only.
Diffstat (limited to '')
-rw-r--r--webclient/app-filter.js11
-rw-r--r--webclient/room/room-controller.js19
-rw-r--r--webclient/room/room.html31
3 files changed, 61 insertions, 0 deletions
diff --git a/webclient/app-filter.js b/webclient/app-filter.js
index 39ea1d637d..f19db4141d 100644
--- a/webclient/app-filter.js
+++ b/webclient/app-filter.js
@@ -76,6 +76,17 @@ angular.module('matrixWebClient')
         return filtered;
     };
 })
+.filter('stateEventsFilter', function($sce) {
+    return function(events) {
+        var filtered = {};
+        angular.forEach(events, function(value, key) {
+            if (value && typeof(value.state_key) === "string") {
+                filtered[key] = value;
+            }
+        });
+        return filtered;
+    };
+})
 .filter('unsafe', ['$sce', function($sce) {
     return function(text) {
         return $sce.trustAsHtml(text);
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js
index 841b5cccdd..37f51c4e91 100644
--- a/webclient/room/room-controller.js
+++ b/webclient/room/room-controller.js
@@ -1017,6 +1017,15 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
         });
     };
 
+    $scope.openRoomInfo = function() {
+        var modalInstance = $modal.open({
+            templateUrl: 'roomInfoTemplate.html',
+            controller: 'RoomInfoController',
+            size: 'lg',
+            scope: $scope
+        });
+    };
+
 }])
 .controller('EventInfoController', function($scope, $modalInstance) {
     console.log("Displaying modal dialog for >>>> " + JSON.stringify($scope.event_selected));
@@ -1026,4 +1035,14 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
         console.log("Redact event >> " + JSON.stringify($scope.event_selected));
         $modalInstance.close("redact");
     };
+})
+.controller('RoomInfoController', function($scope, $modalInstance, $filter) {
+    console.log("Displaying room info.");
+
+    $scope.submitState = function(eventType, content) {
+        console.log("Submitting " + eventType + " with " + content);
+    }
+
+    $scope.dismiss = $modalInstance.dismiss;
+
 });
diff --git a/webclient/room/room.html b/webclient/room/room.html
index 38b6d591ea..3458e97039 100644
--- a/webclient/room/room.html
+++ b/webclient/room/room.html
@@ -13,6 +13,34 @@
         </div>
     </script>
 
+    <script type="text/ng-template" id="roomInfoTemplate.html">
+        <div class="modal-body">
+            <table id="roomInfoTable">
+                <tr>
+                <th>
+                    Event Type
+                </th>
+                <th>
+                    Content
+                </th>
+                </tr>
+                <tr ng-repeat="(key, event) in events.rooms[room_id] | stateEventsFilter">
+                    <td>
+                        <pre>{{ key }}</pre>
+                    </td>
+                    <td>
+                        <pre>{{ event.content | json }}</pre>
+                    </td>
+                </tr>
+            </table>
+        </div>
+        <div class="modal-footer">
+            <button ng-click="dismiss()" type="button" class="btn">
+                Close
+            </button>
+        </div>
+    </script>
+
     <div id="roomHeader">
         <a href ng-click="goToPage('/')"><img src="img/logo-small.png" width="100" height="43" alt="[matrix]"/></a>
         <div class="roomHeaderInfo">
@@ -216,6 +244,9 @@
                         >
                     Video Call
                 </button>
+                <button ng-click="openRoomInfo()">
+                    Room Info
+                </button>
             </div>
         
             {{ feedback }}