Merge branch 'master' into stable

stable
Alejandro Alonso 2016-01-05 11:17:19 +01:00
commit e6dfca417a
438 changed files with 1264 additions and 5917 deletions

View File

@ -1,16 +1,15 @@
sudo: false sudo: false
language: node_js
node_js:
- "4.1"
before_install: before_install:
- export CHROME_BIN=chromium-browser - export CHROME_BIN=chromium-browser
- export DISPLAY=:99.0 - export DISPLAY=:99.0
- sh -e /etc/init.d/xvfb start - sh -e /etc/init.d/xvfb start
- npm install -g bower - travis_retry npm install -g bower
- npm install -g gulp - travis_retry npm install -g gulp
install: install:
- npm install - travis_retry npm install
- bower install - travis_retry bower install
before_script: before_script:
- gulp deploy - gulp deploy
language: node_js
node_js:
- "4.1"

View File

@ -3,7 +3,7 @@ host = https://www.transifex.com
lang_map = sr@latin:sr-latn, zh-Hans:zh-hans, zh-Hant:zh-hant, pt_BR:pt-br lang_map = sr@latin:sr-latn, zh-Hans:zh-hans, zh-Hant:zh-hant, pt_BR:pt-br
[taiga-front.locale-enjson] [taiga-front.locale-enjson]
file_filter = app/locales/locale-<lang>.json file_filter = app/locales/taiga/locale-<lang>.json
source_file = app/locales/locale-en.json source_file = app/locales/taiga/locale-en.json
source_lang = en source_lang = en
type = KEYVALUEJSON type = KEYVALUEJSON

View File

@ -1,7 +1,19 @@
# Changelog # # Changelog #
## 1.9.0 Abies Siberica (2015-11-XX) ## 1.9.1 Taiga Tribe (2016-01-05)
- [118n] Now taiga plugins can be translatable.
- New Taiga plugins system.
- Now superadmins can send notifications (live announcement) to the user (through taiga-events).
### Misc
- Statics folder hash to prevent cache problems when a new version is released.
- Implement websockets heartbeat messages system for taiga-events.
- Lots of small and not so small bugfixes.
## 1.9.0 Abies Siberica (2015-11-02)
### Features ### Features
- Ability to create single-line or multi-line custom fields. (thanks to [@artlepool](https://github.com/artlepool)). - Ability to create single-line or multi-line custom fields. (thanks to [@artlepool](https://github.com/artlepool)).

View File

@ -30,14 +30,14 @@ Big features are also welcome but if you want to see your contributions included
#### License #### #### License ####
Every code patch accepted in taiga codebase is licensed under [AGPL v3.0](http://www.gnu.org/licenses/agpl-3.0.html). You should must be careful to not include any code that can not be licensed under this license. Every code patch accepted in taiga codebase is licensed under [AGPL v3.0](http://www.gnu.org/licenses/agpl-3.0.html). You must be careful to not include any code that can not be licensed under this license.
Please read carefully [our license](https://github.com/taigaio/taiga-front/blob/master/LICENSE) and ask us if you have any questions. Please read carefully [our license](https://github.com/taigaio/taiga-front/blob/master/LICENSE) and ask us if you have any questions.
#### Bug reports, enhancements and support #### #### Bug reports, enhancements and support ####
If you **nedd help to setup Taiga**, you want to **talk about some cool enhancemnt** or you have **some questions** please write us to our [mailing list](http://groups.google.com/d/forum/taigaio). If you **need help to setup Taiga**, want to **talk about some cool enhancemnt** or you have **some questions**, please write us to our [mailing list](http://groups.google.com/d/forum/taigaio).
If you **find a bug** in Taiga you can always report it: If you **find a bug** in Taiga you can always report it:
@ -48,12 +48,12 @@ If you **find a bug** in Taiga you can always report it:
One of our fellow Taiga developers will search, find and hunt it as soon as possible. One of our fellow Taiga developers will search, find and hunt it as soon as possible.
Please, before reporting an bug write down how can we reproduce it, your operating system, your browser and version, and if it's possible, a screenshot. Sometimes it take less time to fix a bug if the developer know how to find it and we will solve your problem as fast as possible. Please, before reporting a bug write down how can we reproduce it, your operating system, your browser and version, and if it's possible, a screenshot. Sometimes it takes less time to fix a bug if the developer knows how to find it and we will solve your problem as fast as possible.
#### Documentation improvements #### #### Documentation improvements ####
We are gathering lots of information from our users to build and enhance our documentation. If you are the documentation to install or develop with Taiga and find any mistakes, omissions or confused sequences, it is enormously helpful to report it. Or better still, if you believe you can author additions, please make a pull-request to taiga project. We are gathering lots of information from our users to build and enhance our documentation. If you use the documentation to install or develop with Taiga and find any mistakes, omissions or confused sequences, it is enormously helpful to report it. Or better still, if you believe you can author additions, please make a pull-request to taiga project.
Currently, we have authored three main documentation hubs: Currently, we have authored three main documentation hubs:
@ -64,14 +64,14 @@ Currently, we have authored three main documentation hubs:
#### Translation #### #### Translation ####
We are ready now to accept your help translating Taiga. It's easy (and fun!) just access to our team of translators with the link below, set up an account in Transifex and start contributing. Join us to make sure your language is covered! **[Help Taiga to trasnlate content](https://www.transifex.com/signup/ "Help Taiga to trasnlatecontent")** We are ready now to accept your help translating Taiga. It's easy (and fun!) just access our team of translators with the link below, set up an account in Transifex and start contributing. Join us to make sure your language is covered! **[Help Taiga to translate content](https://www.transifex.com/signup/ "Help Taiga to translate content")**
#### Code patches #### #### Code patches ####
Taiga will always be glad to receive code patches to update, fix or improve its code. Taiga will always be glad to receive code patches to update, fix or improve its code.
If you know how to improve our code base or you found a bug, a security vulnerabilities a performance issue and you think you can solve, we will be very happy to accept your pull-request. If your code requires considerable changes, we recommend you first talk to us directly. We will find the best way to help. If you know how to improve our code base or you found a bug, a security vulnerability or a performance issue and you think you can solve it, we will be very happy to accept your pull-request. If your code requires considerable changes, we recommend you first talk to us directly. We will find the best way to help.
#### UI enhancements #### #### UI enhancements ####
@ -80,7 +80,7 @@ Taiga is made for developers and designers. We care enormously about UI because
There are two possible ways to contribute to our UI: There are two possible ways to contribute to our UI:
- **Bugs**: If you find a bug regarding front-end, please report it as previously indicated in the Bug reports section or send a pull-request as indicated in the Code Patches section. - **Bugs**: If you find a bug regarding front-end, please report it as previously indicated in the Bug reports section or send a pull-request as indicated in the Code Patches section.
- **Enhancements**: If its a design or UX bug or enhancement we will love to receive your feedback. Please send us your enhancement, with the reason and, if it's possible, an example. Our design and UX team will review your enhancement and fix it as soon as possible. We recommend you to use our [mailing list](http://groups.google.co.uk/d/forum/taigaio){target="_blank"} so we can have a lot of different opinions and debate. - **Enhancements**: If its a design or UX bug or enhancement we will love to receive your feedback. Please send us your enhancement, with the reason and, if possible, an example. Our design and UX team will review your enhancement and fix it as soon as possible. We recommend you to use our [mailing list](http://groups.google.co.uk/d/forum/taigaio){target="_blank"} so we can have a lot of different opinions and debate.
- **Language Localization**: We are eager to offer localized versions of Taiga. Some members of the community have already volunteered to work to provide a variety of languages. We are working to implement some changes to allow for this and expect to accept these requests in the near future. - **Language Localization**: We are eager to offer localized versions of Taiga. Some members of the community have already volunteered to work to provide a variety of languages. We are working to implement some changes to allow for this and expect to accept these requests in the near future.
@ -122,7 +122,7 @@ Complete process for all OS at: http://sass-lang.com/install
**Node + Bower + Gulp** **Node + Bower + Gulp**
We recommend using [nvm](https://github.com/creationix/nvmv) to manage diferent node versions We recommend using [nvm](https://github.com/creationix/nvm) to manage diferent node versions
``` ```
npm install -g gulp npm install -g gulp
npm install -g bower npm install -g bower
@ -140,11 +140,13 @@ If you want to run e2e tests
``` ```
npm install -g protractor npm install -g protractor
npm install -g mocha npm install -g mocha
npm install -g babel npm install -g babel@5
webdriver-manager update webdriver-manager update
``` ```
To run a local Selenium Server, you will need to have the Java Development Kit (JDK) installed.
## Tests ## ## Tests ##
#### Unit tests #### #### Unit tests ####

View File

@ -1,7 +1,10 @@
version = ___VERSION___ window._version = "___VERSION___"
window.taigaConfig = { window.taigaConfig = {
"api": "http://localhost:8000/api/v1/", "api": "http://localhost:8000/api/v1/",
"eventsUrl": null, "eventsUrl": null,
"eventsMaxMissedHeartbeats": 5,
"eventsHeartbeatIntervalTime": 60000,
"debug": true, "debug": true,
"defaultLanguage": "en", "defaultLanguage": "en",
"themes": ["taiga", "material-design", "high-contrast"], "themes": ["taiga", "material-design", "high-contrast"],
@ -14,16 +17,49 @@ window.taigaConfig = {
"contribPlugins": [] "contribPlugins": []
} }
promise = $.getJSON "/js/conf.json" window.taigaContribPlugins = []
window._decorators = []
window.addDecorator = (provider, decorator) ->
window._decorators.push({provider: provider, decorator: decorator})
window.getDecorators = ->
return window._decorators
loadStylesheet = (path) ->
$('head').append('<link rel="stylesheet" href="' + path + '" type="stylesheet" />')
loadPlugin = (pluginPath) ->
return new Promise (resolve, reject) ->
$.getJSON(pluginPath).then (plugin) ->
window.taigaContribPlugins.push(plugin)
if plugin.css
loadStylesheet(plugin.css)
#dont' wait for css
if plugin.js
ljs.load(plugin.js, resolve)
else
resolve()
loadPlugins = (plugins) ->
promises = []
_.map plugins, (pluginPath) ->
promises.push(loadPlugin(pluginPath))
return Promise.all(promises)
promise = $.getJSON "/conf.json"
promise.done (data) -> promise.done (data) ->
window.taigaConfig = _.extend({}, window.taigaConfig, data) window.taigaConfig = _.extend({}, window.taigaConfig, data)
promise.always -> promise.always ->
if window.taigaConfig.contribPlugins.length > 0 if window.taigaConfig.contribPlugins.length > 0
plugins = _.map(window.taigaConfig.contribPlugins, (plugin) -> "#{plugin}?v=#{version}") loadPlugins(window.taigaConfig.contribPlugins).then () ->
ljs.load plugins, -> ljs.load "/#{window._version}/js/app.js", ->
ljs.load "/js/app.js?v=#{version}", ->
angular.bootstrap(document, ['taiga']) angular.bootstrap(document, ['taiga'])
else else
ljs.load "/js/app.js?v=#{version}", -> ljs.load "/#{window._version}/js/app.js", ->
angular.bootstrap(document, ['taiga']) angular.bootstrap(document, ['taiga'])

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -20,7 +20,7 @@
### ###
@taiga = taiga = {} @taiga = taiga = {}
@.taigaContribPlugins = @.taigaContribPlugins or [] @.taigaContribPlugins = @.taigaContribPlugins or window.taigaContribPlugins or []
# Generic function for generate hash from a arbitrary length # Generic function for generate hash from a arbitrary length
# collection of parameters. # collection of parameters.
@ -39,7 +39,7 @@ taiga.sessionId = taiga.generateUniqueSessionIdentifier()
configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider, configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEventsProvider,
$compileProvider, $translateProvider, $animateProvider) -> $compileProvider, $translateProvider, $translatePartialLoaderProvider, $animateProvider) ->
$animateProvider.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/) $animateProvider.classNameFilter(/^(?:(?!ng-animate-disabled).)*$/)
@ -505,10 +505,10 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
# i18n # i18n
preferedLangCode = userInfo?.lang || window.taigaConfig.defaultLanguage || "en" preferedLangCode = userInfo?.lang || window.taigaConfig.defaultLanguage || "en"
$translatePartialLoaderProvider.addPart('taiga')
$translateProvider $translateProvider
.useStaticFilesLoader({ .useLoader('$translatePartialLoader', {
prefix: "/locales/locale-", urlTemplate: '/' + window._version + '/locales/{part}/locale-{lang}.json'
suffix: ".json"
}) })
.useSanitizeValueStrategy('escapeParameters') .useSanitizeValueStrategy('escapeParameters')
.addInterpolation('$translateMessageFormatInterpolation') .addInterpolation('$translateMessageFormatInterpolation')
@ -516,17 +516,12 @@ configure = ($routeProvider, $locationProvider, $httpProvider, $provide, $tgEven
$translateProvider.fallbackLanguage(preferedLangCode) $translateProvider.fallbackLanguage(preferedLangCode)
# decoratos # decoratos plugins
decorators = _.where(@.taigaContribPlugins, {"type": "decorator"}) decorators = window.getDecorators()
_.each decorators, (decorator) -> _.each decorators, (decorator) ->
$provide.decorator decorator.provider, decorator.decorator $provide.decorator decorator.provider, decorator.decorator
# decoratos
decorators = _.where(@.taigaContribPlugins, {"type": "decorator"})
_.each decorators, (decorator) ->
$provide.decorator decorator.provider, decorator.decorator
i18nInit = (lang, $translate) -> i18nInit = (lang, $translate) ->
# i18n - moment.js # i18n - moment.js
@ -578,9 +573,10 @@ init = ($log, $rootscope, $auth, $events, $analytics, $translate, $location, $na
Promise.setScheduler (cb) -> Promise.setScheduler (cb) ->
$rootscope.$evalAsync(cb) $rootscope.$evalAsync(cb)
$events.setupConnection()
# Load user # Load user
if $auth.isAuthenticated() if $auth.isAuthenticated()
$events.setupConnection()
user = $auth.getUser() user = $auth.getUser()
# Analytics # Analytics
@ -690,6 +686,7 @@ module.config([
"$tgEventsProvider", "$tgEventsProvider",
"$compileProvider", "$compileProvider",
"$translateProvider", "$translateProvider",
"$translatePartialLoaderProvider",
"$animateProvider", "$animateProvider",
configure configure
]) ])

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -219,7 +219,7 @@ MembershipsRowAvatarDirective = ($log, $template, $translate) ->
ctx = { ctx = {
full_name: if member.full_name then member.full_name else "" full_name: if member.full_name then member.full_name else ""
email: if member.user_email then member.user_email else member.email email: if member.user_email then member.user_email else member.email
imgurl: if member.photo then member.photo else "/images/unnamed.png" imgurl: if member.photo then member.photo else "/" + window._version + "/images/unnamed.png"
pending: if !member.is_user_active then pending else "" pending: if !member.is_user_active then pending else ""
} }

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -44,9 +44,9 @@ class AuthService extends taiga.Service
@themeService) -> @themeService) ->
super() super()
@._currentTheme = @config.get("defaultTheme") || "taiga" # load on index.jade
userModel = @.getUser() userModel = @.getUser()
@._currentTheme = @._getUserTheme()
@.setUserdata(userModel) @.setUserdata(userModel)
setUserdata: (userModel) -> setUserdata: (userModel) ->
@ -57,7 +57,7 @@ class AuthService extends taiga.Service
@.userData = null @.userData = null
_getUserTheme: -> _getUserTheme: ->
return @rootscope.user?.theme || @config.get("defaultTheme") || "taiga" return @rootscope.user?.theme || @config.get("defaultTheme") || "taiga" # load on index.jade
_setTheme: -> _setTheme: ->
newTheme = @._getUserTheme() newTheme = @._getUserTheme()
@ -84,6 +84,8 @@ class AuthService extends taiga.Service
@._setTheme() @._setTheme()
return user return user
else
@._setTheme()
return null return null
@ -219,6 +221,8 @@ module.directive("tgPublicRegisterMessage", ["$tgConfig", "$tgNavUrls", "$tgTemp
LoginDirective = ($auth, $confirm, $location, $config, $routeParams, $navUrls, $events, $translate) -> LoginDirective = ($auth, $confirm, $location, $config, $routeParams, $navUrls, $events, $translate) ->
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
form = new checksley.Form($el.find("form.login-form"))
onSuccess = (response) -> onSuccess = (response) ->
if $routeParams['next'] and $routeParams['next'] != $navUrls.resolve("login") if $routeParams['next'] and $routeParams['next'] != $navUrls.resolve("login")
nextUrl = decodeURIComponent($routeParams['next']) nextUrl = decodeURIComponent($routeParams['next'])
@ -234,7 +238,6 @@ LoginDirective = ($auth, $confirm, $location, $config, $routeParams, $navUrls, $
submit = debounce 2000, (event) => submit = debounce 2000, (event) =>
event.preventDefault() event.preventDefault()
form = new checksley.Form($el.find("form.login-form"))
if not form.validate() if not form.validate()
return return

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -752,7 +752,7 @@ BacklogDirective = ($repo, $rootscope, $translate) ->
hideText = $translate.instant("BACKLOG.FILTERS.HIDE") hideText = $translate.instant("BACKLOG.FILTERS.HIDE")
showText = $translate.instant("BACKLOG.FILTERS.SHOW") showText = $translate.instant("BACKLOG.FILTERS.SHOW")
toggleText(target.find(".text"), [hideText, showText]) toggleText(target, [hideText, showText])
if !sidebar.hasClass("active") if !sidebar.hasClass("active")
$ctrl.resetFilters() $ctrl.resetFilters()

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -19,7 +19,8 @@
# File: modules/base/contrib.coffee # File: modules/base/contrib.coffee
### ###
taigaContribPlugins = @.taigaContribPlugins = @.taigaContribPlugins or [] module = angular.module("taigaBase")
class ContribController extends taiga.Controller class ContribController extends taiga.Controller
@.$inject = [ @.$inject = [
@ -32,9 +33,7 @@ class ContribController extends taiga.Controller
] ]
constructor: (@rootScope, @scope, @params, @repo, @rs, @confirm) -> constructor: (@rootScope, @scope, @params, @repo, @rs, @confirm) ->
@scope.adminPlugins = _.where(@rootScope.contribPlugins, {"type": "admin"}) @scope.currentPlugin = _.first(_.where(@rootScope.adminPlugins, {"slug": @params.plugin}))
@scope.currentPlugin = _.first(_.where(@scope.adminPlugins, {"slug": @params.plugin}))
@scope.pluginTemplate = "contrib/#{@scope.currentPlugin.slug}"
@scope.projectSlug = @params.pslug @scope.projectSlug = @params.pslug
promise = @.loadInitialData() promise = @.loadInitialData()
@ -53,5 +52,4 @@ class ContribController extends taiga.Controller
loadInitialData: -> loadInitialData: ->
return @.loadProject() return @.loadProject()
module = angular.module("taigaBase")
module.controller("ContribController", ContribController) module.controller("ContribController", ContribController)

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,5 +1,5 @@
### ###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io> # Copyright (C) 2014-2016 Taiga Agile LLC <taiga@taiga.io>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,5 +1,5 @@
### ###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io> # Copyright (C) 2014-2016 Taiga Agile LLC <taiga@taiga.io>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -140,7 +140,7 @@ CreatedByDisplayDirective = ($template, $compile, $translate, $navUrls)->
if model? if model?
$scope.owner = model.owner_extra_info or { $scope.owner = model.owner_extra_info or {
full_name_display: $translate.instant("COMMON.EXTERNAL_USER") full_name_display: $translate.instant("COMMON.EXTERNAL_USER")
photo: "/images/user-noimage.png" photo: "/" + window._version + "/images/user-noimage.png"
} }
$scope.url = if $scope.owner?.is_active then $navUrls.resolve("user-profile", {username: $scope.owner.username}) else "" $scope.url = if $scope.owner?.is_active then $navUrls.resolve("user-profile", {username: $scope.owner.username}) else ""
@ -643,7 +643,7 @@ ListItemAssignedtoDirective = ($template) ->
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
bindOnce $scope, "usersById", (usersById) -> bindOnce $scope, "usersById", (usersById) ->
item = $scope.$eval($attrs.tgListitemAssignedto) item = $scope.$eval($attrs.tgListitemAssignedto)
ctx = {name: "Unassigned", imgurl: "/images/unnamed.png"} ctx = {name: "Unassigned", imgurl: "/" + window._version + "/images/unnamed.png"}
member = usersById[item.assigned_to] member = usersById[item.assigned_to]
if member if member

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,9 +1,9 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# Copyright (C) 2014-2015 Juan Francisco Alcántara <juanfran.alcantara@kaleidos.net> # Copyright (C) 2014-2016 Juan Francisco Alcántara <juanfran.alcantara@kaleidos.net>
# Copyright (C) 2014-2015 Alejandro Alonso <alejandro.alonso@kaleidos.net> # Copyright (C) 2014-2016 Alejandro Alonso <alejandro.alonso@kaleidos.net>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -22,7 +22,7 @@
module = angular.module("taigaCommon") module = angular.module("taigaCommon")
TgLoadingService = ($compile) -> TgLoadingService = ($compile) ->
spinner = "<img class='loading-spinner' src='/svg/spinner-circle.svg' alt='loading...' />" spinner = "<img class='loading-spinner' src='/" + window._version + "/svg/spinner-circle.svg' alt='loading...' />"
return () -> return () ->
service = { service = {

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -27,7 +27,7 @@ module = angular.module("taigaEvents", [])
class EventsService class EventsService
constructor: (@win, @log, @config, @auth) -> constructor: (@win, @log, @config, @auth, @liveAnnouncementService, @rootScope) ->
bindMethods(@) bindMethods(@)
initialize: (sessionId) -> initialize: (sessionId) ->
@ -37,6 +37,9 @@ class EventsService
@.error = false @.error = false
@.pendingMessages = [] @.pendingMessages = []
@.missedHeartbeats = 0
@.heartbeatInterval = null
if @win.WebSocket is undefined if @win.WebSocket is undefined
@log.info "WebSockets not supported on your browser" @log.info "WebSockets not supported on your browser"
@ -70,10 +73,58 @@ class EventsService
@.ws.removeEventListener("close", @.onClose) @.ws.removeEventListener("close", @.onClose)
@.ws.removeEventListener("error", @.onError) @.ws.removeEventListener("error", @.onError)
@.ws.removeEventListener("message", @.onMessage) @.ws.removeEventListener("message", @.onMessage)
@.stopHeartBeatMessages()
@.ws.close() @.ws.close()
delete @.ws delete @.ws
notifications: ->
@.subscribe null, 'notifications', (data) =>
@liveAnnouncementService.show(data.title, data.desc)
@rootScope.$digest()
###########################################
# Heartbeat (Ping - Pong)
###########################################
# See RFC https://tools.ietf.org/html/rfc6455#section-5.5.2
# RFC https://tools.ietf.org/html/rfc6455#section-5.5.3
startHeartBeatMessages: ->
return if @.heartbeatInterval
maxMissedHeartbeats = @config.get("eventsMaxMissedHeartbeats", 5)
heartbeatIntervalTime = @config.get("eventsHeartbeatIntervalTime", 60000)
@.missedHeartbeats = 0
@.heartbeatInterval = setInterval(() =>
try
if @.missedHeartbeats >= maxMissedHeartbeats
throw new Error("Too many missed heartbeats PINGs.")
@.missedHeartbeats++
@.sendMessage({cmd: "ping"})
@log.debug("HeartBeat send PING")
catch e
@log.error("HeartBeat error: " + e.message)
@.stopHeartBeatMessages()
, heartbeatIntervalTime)
@log.debug("HeartBeat enabled")
stopHeartBeatMessages: ->
return if not @.heartbeatInterval
clearInterval(@.heartbeatInterval)
@.heartbeatInterval = null
@log.debug("HeartBeat disabled")
processHeartBeatPongMessage: (data) ->
@.missedHeartbeats = 0
@log.debug("HeartBeat recived PONG")
###########################################
# Messages
###########################################
serialize: (message) -> serialize: (message) ->
if _.isObject(message) if _.isObject(message)
return JSON.stringify(message) return JSON.stringify(message)
@ -91,6 +142,24 @@ class EventsService
for msg in messages for msg in messages
@.ws.send(msg) @.ws.send(msg)
processMessage: (data) =>
routingKey = data.routing_key
if not @.subscriptions[routingKey]?
return
subscription = @.subscriptions[routingKey]
if subscription.scope
subscription.scope.$apply ->
subscription.callback(data.data)
else
subscription.callback(data.data)
###########################################
# Subscribe and Unsubscribe
###########################################
subscribe: (scope, routingKey, callback) -> subscribe: (scope, routingKey, callback) ->
if @.error if @.error
return return
@ -109,7 +178,8 @@ class EventsService
@.subscriptions[routingKey] = subscription @.subscriptions[routingKey] = subscription
@.sendMessage(message) @.sendMessage(message)
scope.$on("$destroy", => @.unsubscribe(routingKey))
scope.$on("$destroy", => @.unsubscribe(routingKey)) if scope
unsubscribe: (routingKey) -> unsubscribe: (routingKey) ->
if @.error if @.error
@ -124,8 +194,13 @@ class EventsService
@.sendMessage(message) @.sendMessage(message)
###########################################
# Event listeners
###########################################
onOpen: -> onOpen: ->
@.connected = true @.connected = true
@.startHeartBeatMessages()
@.notifications()
@log.debug("WebSocket connection opened") @log.debug("WebSocket connection opened")
token = @auth.getToken() token = @auth.getToken()
@ -141,14 +216,11 @@ class EventsService
@.log.debug "WebSocket message received: #{event.data}" @.log.debug "WebSocket message received: #{event.data}"
data = JSON.parse(event.data) data = JSON.parse(event.data)
routingKey = data.routing_key
if not @.subscriptions[routingKey]? if data.cmd == "pong"
return @.processHeartBeatPongMessage(data)
else
subscription = @.subscriptions[routingKey] @.processMessage(data)
subscription.scope.$apply ->
subscription.callback(data.data)
onError: (error) -> onError: (error) ->
@log.error("WebSocket error: #{error}") @log.error("WebSocket error: #{error}")
@ -157,17 +229,25 @@ class EventsService
onClose: -> onClose: ->
@log.debug("WebSocket closed.") @log.debug("WebSocket closed.")
@.connected = false @.connected = false
@.stopHeartBeatMessages()
class EventsProvider class EventsProvider
setSessionId: (sessionId) -> setSessionId: (sessionId) ->
@.sessionId = sessionId @.sessionId = sessionId
$get: ($win, $log, $conf, $auth) -> $get: ($win, $log, $conf, $auth, liveAnnouncementService, $rootScope) ->
service = new EventsService($win, $log, $conf, $auth) service = new EventsService($win, $log, $conf, $auth, liveAnnouncementService, $rootScope)
service.initialize(@.sessionId) service.initialize(@.sessionId)
return service return service
@.prototype.$get.$inject = ["$window", "$log", "$tgConfig", "$tgAuth"] @.prototype.$get.$inject = [
"$window",
"$log",
"$tgConfig",
"$tgAuth",
"tgLiveAnnouncementService",
"$rootScope"
]
module.provider("$tgEvents", EventsProvider) module.provider("$tgEvents", EventsProvider)

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -127,14 +127,14 @@ class IssueDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.issueId = issue.id @scope.issueId = issue.id
@scope.commentModel = issue @scope.commentModel = issue
if @scope.issue.neighbors.previous.ref? if @scope.issue.neighbors.previous?.ref?
ctx = { ctx = {
project: @scope.project.slug project: @scope.project.slug
ref: @scope.issue.neighbors.previous.ref ref: @scope.issue.neighbors.previous.ref
} }
@scope.previousUrl = @navUrls.resolve("project-issues-detail", ctx) @scope.previousUrl = @navUrls.resolve("project-issues-detail", ctx)
if @scope.issue.neighbors.next.ref? if @scope.issue.neighbors.next?.ref?
ctx = { ctx = {
project: @scope.project.slug project: @scope.project.slug
ref: @scope.issue.neighbors.next.ref ref: @scope.issue.neighbors.next.ref

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -783,7 +783,7 @@ IssueAssignedToInlineEditionDirective = ($repo, $rootscope, popoverService) ->
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
updateIssue = (issue) -> updateIssue = (issue) ->
ctx = {name: "Unassigned", imgurl: "/images/unnamed.png"} ctx = {name: "Unassigned", imgurl: "/" + window._version + "/images/unnamed.png"}
member = $scope.usersById[issue.assigned_to] member = $scope.usersById[issue.assigned_to]
if member if member
ctx.imgurl = member.photo ctx.imgurl = member.photo

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -132,7 +132,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
status__is_archived: false status__is_archived: false
} }
return @rs.userstories.listAll(@scope.projectId, params).then (userstories) => promise = @rs.userstories.listAll(@scope.projectId, params).then (userstories) =>
@scope.userstories = userstories @scope.userstories = userstories
usByStatus = _.groupBy(userstories, "status") usByStatus = _.groupBy(userstories, "status")
@ -166,6 +166,10 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
return userstories return userstories
promise.then( => @scope.$broadcast("redraw:wip"))
return promise
loadUserStoriesForStatus: (ctx, statusId) -> loadUserStoriesForStatus: (ctx, statusId) ->
params = { status: statusId } params = { status: statusId }
return @rs.userstories.listAll(@scope.projectId, params).then (userstories) => return @rs.userstories.listAll(@scope.projectId, params).then (userstories) =>
@ -211,7 +215,7 @@ class KanbanController extends mixOf(taiga.Controller, taiga.PageMixin, taiga.Fi
return promise.then (project) => return promise.then (project) =>
@.fillUsersAndRoles(project.members, project.roles) @.fillUsersAndRoles(project.members, project.roles)
@.initializeSubscription() @.initializeSubscription()
@.loadKanban().then( => @scope.$broadcast("redraw:wip")) @.loadKanban()
## View Mode methods ## View Mode methods
@ -547,7 +551,7 @@ KanbanUserDirective = ($log, $compile) ->
render = (user) -> render = (user) ->
if user is undefined if user is undefined
ctx = {name: "Unassigned", imgurl: "/images/unnamed.png", clickable: clickable} ctx = {name: "Unassigned", imgurl: "/" + window._version + "/images/unnamed.png", clickable: clickable}
else else
ctx = {name: user.full_name_display, imgurl: user.photo, clickable: clickable} ctx = {name: user.full_name_display, imgurl: user.photo, clickable: clickable}

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -248,7 +248,7 @@ RelatedTaskAssignedToInlineEditionDirective = ($repo, $rootscope, popoverService
link = ($scope, $el, $attrs) -> link = ($scope, $el, $attrs) ->
updateRelatedTask = (task) -> updateRelatedTask = (task) ->
ctx = {name: "Unassigned", imgurl: "/images/unnamed.png"} ctx = {name: "Unassigned", imgurl: "/" + window._version + "/images/unnamed.png"}
member = $scope.usersById[task.assigned_to] member = $scope.usersById[task.assigned_to]
if member if member
ctx.imgurl = member.photo ctx.imgurl = member.photo

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,5 +1,5 @@
### ###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io> # Copyright (C) 2014-2016 Taiga Agile LLC <taiga@taiga.io>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,5 +1,5 @@
### ###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io> # Copyright (C) 2014-2016 Taiga Agile LLC <taiga@taiga.io>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,5 +1,5 @@
### ###
# Copyright (C) 2014-2015 Taiga Agile LLC <taiga@taiga.io> # Copyright (C) 2014-2016 Taiga Agile LLC <taiga@taiga.io>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -442,7 +442,7 @@ TaskboardUserDirective = ($log) ->
user = $scope.usersById[assigned_to] user = $scope.usersById[assigned_to]
if user is undefined if user is undefined
_.assign($scope, {name: "Unassigned", imgurl: "/images/unnamed.png", clickable: clickable}) _.assign($scope, {name: "Unassigned", imgurl: "/" + window._version + "/images/unnamed.png", clickable: clickable})
else else
_.assign($scope, {name: user.full_name_display, imgurl: user.photo, clickable: clickable}) _.assign($scope, {name: user.full_name_display, imgurl: user.photo, clickable: clickable})

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as

View File

@ -1,7 +1,7 @@
### ###
# Copyright (C) 2014-2015 Andrey Antukh <niwi@niwi.be> # Copyright (C) 2014-2016 Andrey Antukh <niwi@niwi.be>
# Copyright (C) 2014-2015 Jesús Espino Garcia <jespinog@gmail.com> # Copyright (C) 2014-2016 Jesús Espino Garcia <jespinog@gmail.com>
# Copyright (C) 2014-2015 David Barragán Merino <bameda@dbarragan.com> # Copyright (C) 2014-2016 David Barragán Merino <bameda@dbarragan.com>
# #
# This program is free software: you can redistribute it and/or modify # This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU Affero General Public License as # it under the terms of the GNU Affero General Public License as
@ -115,14 +115,14 @@ class TaskDetailController extends mixOf(taiga.Controller, taiga.PageMixin)
@scope.taskId = task.id @scope.taskId = task.id
@scope.commentModel = task @scope.commentModel = task
if @scope.task.neighbors.previous.ref? if @scope.task.neighbors.previous?.ref?
ctx = { ctx = {
project: @scope.project.slug project: @scope.project.slug
ref: @scope.task.neighbors.previous.ref ref: @scope.task.neighbors.previous.ref
} }
@scope.previousUrl = @navUrls.resolve("project-tasks-detail", ctx) @scope.previousUrl = @navUrls.resolve("project-tasks-detail", ctx)
if @scope.task.neighbors.next.ref? if @scope.task.neighbors.next?.ref?
ctx = { ctx = {
project: @scope.project.slug project: @scope.project.slug
ref: @scope.task.neighbors.next.ref ref: @scope.task.neighbors.next.ref

Some files were not shown because too many files have changed in this diff Show More