Selaa lähdekoodia

Add an endpoint to get users projects as json

Shane Kilkelly 8 vuotta sitten
vanhempi
sitoutus
4925bfe536

+ 13 - 0
services/web/app/coffee/Features/Project/ProjectController.coffee

@@ -138,6 +138,19 @@ module.exports = ProjectController =
 			return next(err) if err?
 			res.sendStatus 200
 
+	projectsJson: (req, res, next) ->
+		user_id = AuthenticationController.getLoggedInUserId(req)
+
+		ProjectGetter.findAllUsersProjects user_id,
+			'name lastUpdated publicAccesLevel archived owner_ref tokens', (err, projects) ->
+				return next(err) if err?
+				projects = ProjectController._buildProjectList(projects)
+					.filter((p) -> !p.archived)
+					.filter((p) -> !p.isV1Project)
+					.map((p) -> {_id: p.id, name: p.name, accessLevel: p.accessLevel})
+
+				res.json({projects: projects})
+
 	projectListPage: (req, res, next)->
 		timer = new metrics.Timer("project-list")
 		user_id = AuthenticationController.getLoggedInUserId(req)

+ 1 - 0
services/web/app/coffee/router.coffee

@@ -118,6 +118,7 @@ module.exports = class Router
 		webRouter.get  '/user/personal_info', AuthenticationController.requireLogin(), UserInfoController.getLoggedInUsersPersonalInfo
 		privateApiRouter.get  '/user/:user_id/personal_info', AuthenticationController.httpAuth, UserInfoController.getPersonalInfo
 
+		webRouter.get  '/user/projects', AuthenticationController.requireLogin(), ProjectController.projectsJson
 		webRouter.get  '/project', AuthenticationController.requireLogin(), ProjectController.projectListPage
 		webRouter.post '/project/new', AuthenticationController.requireLogin(), ProjectController.newProject
 

+ 9 - 1
services/web/public/coffee/ide/file-tree/FileTreeManager.coffee

@@ -25,7 +25,9 @@ define [
 			$(document).on "click", =>
 				@clearMultiSelectedEntities()
 				@$scope.$digest()
-			window.doLinkedFileImportFromProject = (project, path, name) =>
+
+			# TODO: remove
+			window._doLinkedFileImportFromProject = (project, path, name) =>
 				parent_folder = @getCurrentFolder()
 				@ide.$http.post "/project/#{@ide.project_id}/linked_file", {
 					name: name,
@@ -38,6 +40,12 @@ define [
 					_csrf: window.csrfToken
 				}
 
+			# TODO: remove
+			window._getProjects = () =>
+				@ide.$http.get "/user/projects", {
+					_csrf: window.csrfToken
+				}
+
 		_bindToSocketEvents: () ->
 			@ide.socket.on "reciveNewDoc", (parent_folder_id, doc) =>
 				parent_folder = @findEntityById(parent_folder_id) or @$scope.rootFolder