From de23dae40403d4b47fa9e81a273ce91d58e3aa95 Mon Sep 17 00:00:00 2001 From: Andrey Antukh Date: Wed, 18 Jun 2014 14:53:44 +0200 Subject: [PATCH] Add mixins. --- app/coffee/modules/controllerMixins.coffee | 45 ++++++++++++++++++++++ 1 file changed, 45 insertions(+) create mode 100644 app/coffee/modules/controllerMixins.coffee diff --git a/app/coffee/modules/controllerMixins.coffee b/app/coffee/modules/controllerMixins.coffee new file mode 100644 index 00000000..6769d222 --- /dev/null +++ b/app/coffee/modules/controllerMixins.coffee @@ -0,0 +1,45 @@ +### +# Copyright (C) 2014 Andrey Antukh +# Copyright (C) 2014 Jesús Espino Garcia +# Copyright (C) 2014 David Barragán Merino +# +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU Affero General Public License as +# published by the Free Software Foundation, either version 3 of the +# License, or (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU Affero General Public License for more details. +# +# You should have received a copy of the GNU Affero General Public License +# along with this program. If not, see . +# +# File: modules/controllerMixins.coffee +### + +class PageMixin + loadUsersAndRoles: -> + promise = @q.all([ + @rs.projects.usersList(@scope.projectId), + @rs.projects.rolesList(@scope.projectId) + ]) + + return promise.then (results) => + [users, roles] = results + + @scope.users = _.sortBy(users, "id") + @scope.roles = roles + + @scope.usersById = {} + _.each(users, (x) => @scope.usersById[x.id] = x) + + availableRoles = _(@scope.project.memberships).map("role").uniq().value() + @scope.computableRoles = _(roles).filter("computable") + .filter((x) -> _.contains(availableRoles, x.id)) + .value() + return results + +taiga = @.taiga +taiga.PageMixin = PageMixin