summary refs log tree commit diff
path: root/webclient
diff options
context:
space:
mode:
authorEmmanuel ROHEE <erohee@amdocs.com>2014-09-12 10:48:06 +0200
committerEmmanuel ROHEE <erohee@amdocs.com>2014-09-12 10:48:06 +0200
commitd9343289045d4a733710706421ab528626cc02d4 (patch)
treef43995120776ac5127aae0865f2799b1b362b3c6 /webclient
parentShow room name updates in room history and recents. (diff)
downloadsynapse-d9343289045d4a733710706421ab528626cc02d4.tar.xz
Added edition of room name
Diffstat (limited to 'webclient')
-rwxr-xr-xwebclient/app.css8
-rw-r--r--webclient/components/matrix/matrix-service.js7
-rw-r--r--webclient/room/room-controller.js47
-rw-r--r--webclient/room/room.html11
4 files changed, 61 insertions, 12 deletions
diff --git a/webclient/app.css b/webclient/app.css
index 71af550679..1b918f59e2 100755
--- a/webclient/app.css
+++ b/webclient/app.css
@@ -296,20 +296,20 @@ a:active  { color: #000; }
 }
 
 #roomTopic {
-    text-align: right;
     font-size: 13px;
+    text-align: right;
 }
 
-.roomTopicInput {
+.roomNameInput, .roomTopicInput {
     width: 100%;
 }
 
-.roomTopicSection {
+.roomNameSection, .roomTopicSection {
     float: right;
     width: 100%;
 }
 
-.roomTopicSetNew {
+.roomNameSetNew, .roomTopicSetNew {
     float: right;
 }
 
diff --git a/webclient/components/matrix/matrix-service.js b/webclient/components/matrix/matrix-service.js
index 62aff091d4..68ef16800b 100644
--- a/webclient/components/matrix/matrix-service.js
+++ b/webclient/components/matrix/matrix-service.js
@@ -236,6 +236,13 @@ angular.module('matrixService', [])
             return doRequest("GET", path, undefined, {});
         },
         
+        setName: function(room_id, name) {
+            var data = {
+                name: name
+            };
+            return this.sendStateEvent(room_id, "m.room.name", data);
+        },
+        
         setTopic: function(room_id, topic) {
             var data = {
                 topic: topic
diff --git a/webclient/room/room-controller.js b/webclient/room/room-controller.js
index 9f15b61e10..3cc127140b 100644
--- a/webclient/room/room-controller.js
+++ b/webclient/room/room-controller.js
@@ -15,8 +15,8 @@ limitations under the License.
 */
 
 angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
-.controller('RoomController', ['$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'mPresence', 'matrixPhoneService', 'MatrixCall',
-                               function($scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, mPresence, matrixPhoneService, MatrixCall) {
+.controller('RoomController', ['$filter', '$scope', '$timeout', '$routeParams', '$location', '$rootScope', 'matrixService', 'eventHandlerService', 'mFileUpload', 'mPresence', 'matrixPhoneService', 'MatrixCall',
+                               function($filter, $scope, $timeout, $routeParams, $location, $rootScope, matrixService, eventHandlerService, mFileUpload, mPresence, matrixPhoneService, MatrixCall) {
    'use strict';
     var MESSAGES_PER_PAGINATION = 30;
     var THUMBNAIL_SIZE = 320;
@@ -42,6 +42,44 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
     $scope.imageURLToSend = "";
     $scope.userIDToInvite = "";
     
+
+    // vars and functions for updating the name
+    $scope.name = {
+        isEditing: false,
+        newNameText: "",
+        editName: function() {
+            if ($scope.name.isEditing) {
+                console.log("Warning: Already editing name.");
+                return;
+            };
+
+            // Use the filter applied in html to set the input value
+            $scope.name.newNameText = $filter('mRoomName')($scope.room_id);
+
+            // Force focus to the input
+            $timeout(function() {
+                angular.element('.roomNameInput').focus(); 
+            }, 0);
+
+            $scope.name.isEditing = true;
+        },
+        updateName: function() {
+            console.log("Updating name to "+$scope.name.newNameText);
+            matrixService.setName($scope.room_id, $scope.name.newNameText).then(
+                function() {
+                },
+                function(error) {
+                    $scope.feedback = "Request failed: " + error.data.error;
+                }
+            );
+
+            $scope.name.isEditing = false;
+        },
+        cancelEdit: function() {
+            $scope.name.isEditing = false;
+        }
+    };
+
     // vars and functions for updating the topic
     $scope.topic = {
         isEditing: false,
@@ -81,10 +119,7 @@ angular.module('RoomController', ['ngSanitize', 'matrixFilter', 'mFileInput'])
         cancelEdit: function() {
             $scope.topic.isEditing = false;
         }
-    };
-    
-    
-    
+    };  
     
     var scrollToBottom = function(force) {
         console.log("Scrolling to bottom");
diff --git a/webclient/room/room.html b/webclient/room/room.html
index e8d8c3f46a..72c8a97adb 100644
--- a/webclient/room/room.html
+++ b/webclient/room/room.html
@@ -3,9 +3,16 @@
     <div id="roomHeader">
         <a href ng-click="goToPage('/')"><img src="img/logo-small.png" width="100" height="43" alt="[matrix]"/></a>
         <div class="roomHeaderInfo">
-            <div id="roomName">
-                {{ room_id  | mRoomName }}
+
+            <div class="roomNameSection">
+                <div ng-hide="name.isEditing" ng-dblclick="name.editName()" id="roomName">
+                    {{ room_id | mRoomName }}
+                </div>
+                <form ng-submit="name.updateName()" ng-show="name.isEditing" class="roomNameForm">
+                    <input ng-model="name.newNameText" ng-blur="name.cancelEdit()" class="roomNameInput" />
+                </form>
             </div>
+
             <div class="roomTopicSection">
                 <button ng-hide="events.rooms[room_id]['m.room.topic'].content.topic || topic.isEditing"
                     ng-click="topic.editTopic()" class="roomTopicSetNew">