From c23957811d31812cc9193eae0c83f6d7648b971b Mon Sep 17 00:00:00 2001
From: Lukas Reschke <lukas@owncloud.com>
Date: Mon, 8 Dec 2014 16:35:13 +0100
Subject: [PATCH] React on other statuscodes than 200

---
 settings/controller/groupscontroller.php      | 10 +---
 settings/controller/userscontroller.php       | 14 ++---
 settings/js/users/groups.js                   | 29 ++++-----
 settings/js/users/users.js                    | 59 +++++++++----------
 .../controller/groupscontrollertest.php       |  8 +--
 .../controller/userscontrollertest.php        | 23 +++-----
 6 files changed, 54 insertions(+), 89 deletions(-)

diff --git a/settings/controller/groupscontroller.php b/settings/controller/groupscontroller.php
index 8236d5507f4..82e72821c3d 100644
--- a/settings/controller/groupscontroller.php
+++ b/settings/controller/groupscontroller.php
@@ -82,10 +82,7 @@ class GroupsController extends Controller {
 		if($this->groupManager->groupExists($id)) {
 			return new DataResponse(
 				array(
-					'status' => 'error',
-					'data' => array(
-							'message' => (string)$this->l10n->t('Group already exists.')
-						)
+					'message' => (string)$this->l10n->t('Group already exists.')
 				),
 				Http::STATUS_CONFLICT
 			);
@@ -93,10 +90,7 @@ class GroupsController extends Controller {
 		if($this->groupManager->createGroup($id)) {
 			return new DataResponse(
 				array(
-					'status' => 'success',
-					'data' => array(
-						'groupname' => $id
-					)
+					'groupname' => $id
 				),
 				Http::STATUS_CREATED
 			);
diff --git a/settings/controller/userscontroller.php b/settings/controller/userscontroller.php
index aa16574221e..5bd4b555106 100644
--- a/settings/controller/userscontroller.php
+++ b/settings/controller/userscontroller.php
@@ -161,10 +161,7 @@ class UsersController extends Controller {
 		} catch (\Exception $exception) {
 			return new DataResponse(
 				array(
-					'status' => 'error',
-					'data' => array(
-						'message' => (string)$this->l10n->t('Unable to create user.')
-					)
+					'message' => (string)$this->l10n->t('Unable to create user.')
 				),
 				Http::STATUS_FORBIDDEN
 			);
@@ -183,12 +180,9 @@ class UsersController extends Controller {
 
 		return new DataResponse(
 			array(
-				'status' => 'success',
-				'data' => array(
-					'username' => $username,
-					'groups' => $this->groupManager->getUserGroupIds($user),
-					'storageLocation' => $user->getHome()
-				)
+				'username' => $username,
+				'groups' => $this->groupManager->getUserGroupIds($user),
+				'storageLocation' => $user->getHome()
 			),
 			Http::STATUS_CREATED
 		);
diff --git a/settings/js/users/groups.js b/settings/js/users/groups.js
index 40872785e30..c06bc5ff14b 100644
--- a/settings/js/users/groups.js
+++ b/settings/js/users/groups.js
@@ -89,24 +89,19 @@ GroupList = {
 				id: groupname
 			},
 			function (result) {
-				if (result.status !== 'success') {
-					OC.dialogs.alert(result.data.message,
-						t('settings', 'Error creating group'));
+				if (result.groupname) {
+					var addedGroup = result.groupname;
+					UserList.availableGroups = $.unique($.merge(UserList.availableGroups, [addedGroup]));
+					GroupList.addGroup(result.groupname);
+
+					$('.groupsselect, .subadminsselect')
+						.append($('<option>', { value: result.groupname })
+							.text(result.groupname));
 				}
-				else {
-					if (result.data.groupname) {
-						var addedGroup = result.data.groupname;
-						UserList.availableGroups = $.unique($.merge(UserList.availableGroups, [addedGroup]));
-						GroupList.addGroup(result.data.groupname);
-
-						$('.groupsselect, .subadminsselect')
-							.append($('<option>', { value: result.data.groupname })
-								.text(result.data.groupname));
-					}
-					GroupList.toggleAddGroup();
-				}
-			}
-		);
+				GroupList.toggleAddGroup();
+			}).fail(function(result, textStatus, errorThrown) {
+				OC.dialogs.alert(result.responseJSON.message, t('settings', 'Error creating group'));
+			});
 	},
 
 	update: function () {
diff --git a/settings/js/users/users.js b/settings/js/users/users.js
index 6de8b7029ed..1bca6d06b33 100644
--- a/settings/js/users/users.js
+++ b/settings/js/users/users.js
@@ -674,42 +674,37 @@ $(document).ready(function () {
 				groups: groups
 			},
 			function (result) {
-				if (result.status !== 'success') {
-					OC.dialogs.alert(result.data.message,
-						t('settings', 'Error creating user'));
-				} else {
-					if (result.data.groups) {
-						var addedGroups = result.data.groups;
-						for (var i in result.data.groups) {
-							var gid = result.data.groups[i];
-							if(UserList.availableGroups.indexOf(gid) === -1) {
-								UserList.availableGroups.push(gid);
-							}
-							$li = GroupList.getGroupLI(gid);
-							userCount = GroupList.getUserCount($li);
-							GroupList.setUserCount($li, userCount + 1);
+				if (result.groups) {
+					for (var i in result.groups) {
+						var gid = result.groups[i];
+						if(UserList.availableGroups.indexOf(gid) === -1) {
+							UserList.availableGroups.push(gid);
 						}
+						$li = GroupList.getGroupLI(gid);
+						userCount = GroupList.getUserCount($li);
+						GroupList.setUserCount($li, userCount + 1);
 					}
-					if (result.data.homeExists){
-						OC.Notification.hide();
-						OC.Notification.show(t('settings', 'Warning: Home directory for user "{user}" already exists', {user: result.data.username}));
-						if (UserList.notificationTimeout){
-							window.clearTimeout(UserList.notificationTimeout);
-						}
-						UserList.notificationTimeout = window.setTimeout(
-							function(){
-								OC.Notification.hide();
-								UserList.notificationTimeout = null;
-							}, 10000);
-					}
-					if(!UserList.has(username)) {
-						UserList.add(username, username, result.data.groups, null, 'default', result.data.storageLocation, 0, true);
+				}
+				if (result.homeExists){
+					OC.Notification.hide();
+					OC.Notification.show(t('settings', 'Warning: Home directory for user "{user}" already exists', {user: result.username}));
+					if (UserList.notificationTimeout){
+						window.clearTimeout(UserList.notificationTimeout);
 					}
-					$('#newusername').focus();
-					GroupList.incEveryoneCount();
+					UserList.notificationTimeout = window.setTimeout(
+						function(){
+							OC.Notification.hide();
+							UserList.notificationTimeout = null;
+						}, 10000);
 				}
-			}
-		);
+				if(!UserList.has(username)) {
+					UserList.add(username, username, result.groups, null, 'default', result.storageLocation, 0, true);
+				}
+				$('#newusername').focus();
+				GroupList.incEveryoneCount();
+			}).fail(function(result, textStatus, errorThrown) {
+				OC.dialogs.alert(result.responseJSON.message, t('settings', 'Error creating user'));
+			});
 	});
 
 	// Option to display/hide the "Storage location" column
diff --git a/tests/settings/controller/groupscontrollertest.php b/tests/settings/controller/groupscontrollertest.php
index 003fb70b811..4b6c9d02566 100644
--- a/tests/settings/controller/groupscontrollertest.php
+++ b/tests/settings/controller/groupscontrollertest.php
@@ -148,10 +148,7 @@ class GroupsControllerTest extends \Test\TestCase {
 
 		$expectedResponse = new DataResponse(
 			array(
-				'status' => 'error',
-				'data' => array(
-					'message' => 'Group already exists.'
-				)
+				'message' => 'Group already exists.'
 			),
 			Http::STATUS_CONFLICT
 		);
@@ -173,8 +170,7 @@ class GroupsControllerTest extends \Test\TestCase {
 
 		$expectedResponse = new DataResponse(
 			array(
-				'status' => 'success',
-				'data' => array('groupname' => 'NewGroup')
+				'groupname' => 'NewGroup'
 			),
 			Http::STATUS_CREATED
 		);
diff --git a/tests/settings/controller/userscontrollertest.php b/tests/settings/controller/userscontrollertest.php
index 0f1dfb4e685..4b0683b6dae 100644
--- a/tests/settings/controller/userscontrollertest.php
+++ b/tests/settings/controller/userscontrollertest.php
@@ -153,12 +153,9 @@ class UsersControllerTest extends \Test\TestCase {
 
 		$expectedResponse = new DataResponse(
 			array(
-				'status' => 'success',
-				'data' => array(
-					'username' => 'foo',
-					'groups' => null,
-					'storageLocation' => '/home/user'
-				)
+				'username' => 'foo',
+				'groups' => null,
+				'storageLocation' => '/home/user'
 			),
 			Http::STATUS_CREATED
 		);
@@ -213,12 +210,9 @@ class UsersControllerTest extends \Test\TestCase {
 
 		$expectedResponse = new DataResponse(
 			array(
-				'status' => 'success',
-				'data' => array(
-					'username' => 'foo',
-					'groups' => array('NewGroup', 'ExistingGroup'),
-					'storageLocation' => '/home/user'
-				)
+				'username' => 'foo',
+				'groups' => array('NewGroup', 'ExistingGroup'),
+				'storageLocation' => '/home/user'
 			),
 			Http::STATUS_CREATED
 		);
@@ -237,10 +231,7 @@ class UsersControllerTest extends \Test\TestCase {
 
 		$expectedResponse = new DataResponse(
 			array(
-				'status' => 'error',
-				'data' => array(
-					'message' => 'Unable to create user.'
-				)
+				'message' => 'Unable to create user.'
 			),
 			Http::STATUS_FORBIDDEN
 		);
-- 
GitLab