mirror of
https://github.com/wekan/wekan.git
synced 2025-04-23 21:47:10 -04:00
commit
aae5030b53
8 changed files with 87 additions and 58 deletions
77
.eslintrc
77
.eslintrc
|
@ -1,7 +1,14 @@
|
|||
ecmaFeatures:
|
||||
experimentalObjectRestSpread: true
|
||||
|
||||
plugins:
|
||||
- meteor
|
||||
|
||||
parser: babel-eslint
|
||||
|
||||
rules:
|
||||
strict: 0
|
||||
no-undef: 2
|
||||
accessor-pairs: 2
|
||||
comma-dangle: [2, 'always-multiline']
|
||||
consistent-return: 2
|
||||
|
@ -43,36 +50,39 @@ rules:
|
|||
prefer-spread: 2
|
||||
prefer-template: 2
|
||||
|
||||
globals:
|
||||
# Meteor globals
|
||||
Meteor: false
|
||||
DDP: false
|
||||
Mongo: false
|
||||
Session: false
|
||||
Accounts: false
|
||||
Template: false
|
||||
Blaze: false
|
||||
UI: false
|
||||
Match: false
|
||||
check: false
|
||||
Tracker: false
|
||||
Deps: false
|
||||
ReactiveVar: false
|
||||
EJSON: false
|
||||
HTTP: false
|
||||
Email: false
|
||||
Assets: false
|
||||
Handlebars: false
|
||||
Package: false
|
||||
App: false
|
||||
Npm: false
|
||||
Tinytest: false
|
||||
Random: false
|
||||
HTML: false
|
||||
# eslint-plugin-meteor
|
||||
## Meteor API
|
||||
meteor/globals: 2
|
||||
meteor/core: 2
|
||||
meteor/pubsub: 2
|
||||
meteor/methods: 2
|
||||
meteor/check: 2
|
||||
meteor/connections: 2
|
||||
meteor/collections: 2
|
||||
meteor/session: [2, 'no-equal']
|
||||
|
||||
## Best practices
|
||||
meteor/no-session: 0
|
||||
meteor/no-zero-timeout: 2
|
||||
meteor/no-blaze-lifecycle-assignment: 2
|
||||
|
||||
settings:
|
||||
meteor:
|
||||
|
||||
# Our collections
|
||||
collections:
|
||||
- AccountsTemplates
|
||||
- Activities
|
||||
- Attachments
|
||||
- Boards
|
||||
- CardComments
|
||||
- Cards
|
||||
- Lists
|
||||
- UnsavedEditCollection
|
||||
- Users
|
||||
|
||||
globals:
|
||||
# Exported by packages we use
|
||||
'$': false
|
||||
_: false
|
||||
autosize: false
|
||||
Avatar: true
|
||||
Avatars: true
|
||||
|
@ -97,17 +107,6 @@ globals:
|
|||
T9n: false
|
||||
TAPi18n: false
|
||||
|
||||
# Our collections
|
||||
AccountsTemplates: true
|
||||
Activities: true
|
||||
Attachments: true
|
||||
Boards: true
|
||||
CardComments: true
|
||||
Cards: true
|
||||
Lists: true
|
||||
UnsavedEditCollection: true
|
||||
Users: true
|
||||
|
||||
# Our objects
|
||||
CSSEvents: true
|
||||
EscapeActions: true
|
||||
|
|
1
.gitignore
vendored
1
.gitignore
vendored
|
@ -4,3 +4,4 @@
|
|||
.tx/
|
||||
*.sublime-workspace
|
||||
tmp/
|
||||
node_modules/
|
||||
|
|
|
@ -3,7 +3,6 @@ language: node_js
|
|||
node_js:
|
||||
- "0.10.40"
|
||||
install:
|
||||
- "npm install -g eslint"
|
||||
- "npm install -g eslint-plugin-meteor"
|
||||
- "npm install"
|
||||
script:
|
||||
- "eslint ./"
|
||||
- "npm test"
|
||||
|
|
|
@ -23,7 +23,7 @@ BlazeComponent.extendComponent({
|
|||
commentFormIsOpen.set(true);
|
||||
},
|
||||
'submit .js-new-comment-form'(evt) {
|
||||
const input = this.getInput()
|
||||
const input = this.getInput();
|
||||
const text = input.val().trim();
|
||||
if (text) {
|
||||
CardComments.insert({
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Attachments = new FS.Collection('attachments', {
|
||||
Attachments = new FS.Collection('attachments', { // eslint-disable-line meteor/collections
|
||||
stores: [
|
||||
|
||||
// XXX Add a new store for cover thumbnails so we don't load big images in
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
Users = Meteor.users;
|
||||
Users = Meteor.users; // eslint-disable-line meteor/collections
|
||||
|
||||
// Search a user in the complete server database by its name or username. This
|
||||
// is used for instance to add a new user to a board.
|
||||
|
@ -8,6 +8,24 @@ Users.initEasySearch(searchInFields, {
|
|||
returnFields: [...searchInFields, 'profile.avatarUrl'],
|
||||
});
|
||||
|
||||
if (Meteor.isClient) {
|
||||
Users.helpers({
|
||||
isBoardMember() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board &&
|
||||
_.contains(_.pluck(board.members, 'userId'), this._id) &&
|
||||
_.where(board.members, {userId: this._id})[0].isActive;
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board &&
|
||||
this.isBoardMember(board) &&
|
||||
_.where(board.members, {userId: this._id})[0].isAdmin;
|
||||
},
|
||||
});
|
||||
}
|
||||
|
||||
Users.helpers({
|
||||
boards() {
|
||||
return Boards.find({ userId: this._id });
|
||||
|
@ -23,18 +41,6 @@ Users.helpers({
|
|||
return _.contains(starredBoards, boardId);
|
||||
},
|
||||
|
||||
isBoardMember() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board && _.contains(_.pluck(board.members, 'userId'), this._id) &&
|
||||
_.where(board.members, {userId: this._id})[0].isActive;
|
||||
},
|
||||
|
||||
isBoardAdmin() {
|
||||
const board = Boards.findOne(Session.get('currentBoard'));
|
||||
return board && this.isBoardMember(board) &&
|
||||
_.where(board.members, {userId: this._id})[0].isAdmin;
|
||||
},
|
||||
|
||||
getAvatarUrl() {
|
||||
// Although we put the avatar picture URL in the `profile` object, we need
|
||||
// to support Sandstorm which put in the `picture` attribute by default.
|
||||
|
|
24
package.json
Normal file
24
package.json
Normal file
|
@ -0,0 +1,24 @@
|
|||
{
|
||||
"name": "wekan",
|
||||
"version": "1.0.0",
|
||||
"description": "The open-source Trello-like kanban",
|
||||
"private": true,
|
||||
"scripts": {
|
||||
"lint": "eslint .",
|
||||
"test": "npm run lint"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/wekan/wekan.git"
|
||||
},
|
||||
"license": "MIT",
|
||||
"bugs": {
|
||||
"url": "https://github.com/wekan/wekan/issues"
|
||||
},
|
||||
"homepage": "https://github.com/wekan/wekan#readme",
|
||||
"devDependencies": {
|
||||
"babel-eslint": "4.1.3",
|
||||
"eslint": "1.7.3",
|
||||
"eslint-plugin-meteor": "1.5.0"
|
||||
}
|
||||
}
|
|
@ -109,7 +109,7 @@ if (isSandstorm && Meteor.isClient) {
|
|||
// sandstorm client to return relative paths instead of absolutes.
|
||||
const _absoluteUrl = Meteor.absoluteUrl;
|
||||
const _defaultOptions = Meteor.absoluteUrl.defaultOptions;
|
||||
Meteor.absoluteUrl = (path, options) => {
|
||||
Meteor.absoluteUrl = (path, options) => { // eslint-disable-line meteor/core
|
||||
const url = _absoluteUrl(path, options);
|
||||
return url.replace(/^https?:\/\/127\.0\.0\.1:[0-9]{2,5}/, '');
|
||||
};
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue