Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
24 changes: 0 additions & 24 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -12,34 +12,10 @@ module.exports = {
'browser': true
},
rules: {
'comma-dangle': 'off',
'spaced-comment': 'off',
'object-shorthand': 'off',
'quotes': 'off',
'brace-style': 'off',
'max-statements-per-line': 'off',
'keyword-spacing': 'off',
'no-var': 'off',
'space-in-parens': 'off',
'indent': 'off',
'space-infix-ops': 'off',
'operator-linebreak': 'off',
'object-curly-spacing': 'off',
'dot-notation': 'off',
'no-console': 'off',
'prefer-template': 'off',
'space-before-function-paren': 'off',
'comma-spacing': 'off',
'no-multiple-empty-lines': 'off',
'camelcase': 'off',
'key-spacing': 'off',
'new-cap': 'off',
'space-before-blocks': 'off',
'ember-suave/no-const-outside-module-scope': 'off',
'ember-suave/no-direct-property-access': 'off',
'ember-suave/prefer-destructuring': 'off',
'ember-suave/require-access-in-comments': 'off',
'ember-suave/require-const-for-ember-properties': 'off'
},
globals: {
'server': true,
Expand Down
10 changes: 8 additions & 2 deletions app/abilities/organization.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,13 @@ import Ember from 'ember';
import { Ability } from 'ember-can';

const {
computed: { alias, empty, notEmpty, or }
computed: { alias, empty, notEmpty, or },
inject: { service }
} = Ember;

export default Ability.extend({
credentials: service(),

isAtLeastAdmin: or('membership.isAdmin', 'membership.isOwner'),
userCanJoinOrganization: empty('membership'),
userCanLeaveOrganization: or('membership.isContributor', 'membership.isAdmin'),
Expand All @@ -18,5 +21,8 @@ export default Ability.extend({

canCreateIssueTask: true,
canCreateIdeaTask: true,
canCreateTaskTask: alias('isAtLeastContributor')
canCreateTaskTask: alias('isAtLeastContributor'),

membership: alias('credentials.currentUserMembership'),
organization: alias('model')
});
6 changes: 4 additions & 2 deletions app/adapters/application.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,15 @@ import DS from 'ember-data';
import DataAdapterMixin from 'ember-simple-auth/mixins/data-adapter-mixin';
import ENV from 'code-corps-ember/config/environment';

export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
const { JSONAPIAdapter } = DS;

export default JSONAPIAdapter.extend(DataAdapterMixin, {
authorizer: 'authorizer:token',

// TODO: Fix this once many-to-many lands in ember-cli-mirage
// but as of right now there is no way to make this work for
// all possible cases
coalesceFindRequests: true,

host: ENV.API_BASE_URL,
host: ENV.API_BASE_URL
});
22 changes: 14 additions & 8 deletions app/adapters/comment.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import ApplicationAdapter from './application';
import Ember from 'ember';

const { get } = Ember;

export default ApplicationAdapter.extend({
// need to delete slug and sluggedRouteSlug properties from the query.
// otherwise, they will get auto-added to the end of our url
sortQueryParams: function(query) {
sortQueryParams(query) {
query = query || {};
if (query.taskId) {
delete query.taskId;
Expand All @@ -14,28 +16,32 @@ export default ApplicationAdapter.extend({
}
},

urlForQuery: function(query) {
urlForQuery(query) {
query = query || {};

// if there are slug and sluggedRouteSlug properties in the query, we
// need to build the url as (prefix/)host/sluggedRouteSlug/slug
if (query.taskId) {
var url = [];
var host = Ember.get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent('tasks'));
url.push(encodeURIComponent(query.taskId));
url.push(encodeURIComponent('comments'));

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
return this._super.apply(arguments);
}
},
}
});
40 changes: 25 additions & 15 deletions app/adapters/project.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import Ember from 'ember';
import ApplicationAdapter from './application';

const { get } = Ember;

export default ApplicationAdapter.extend({
// need to delete properties from the query which we do not want to see
// appended to the end of the url as parameters
sortQueryParams: function(query) {
sortQueryParams(query) {
query = query || {};

if (query.slug) {
Expand All @@ -17,49 +19,57 @@ export default ApplicationAdapter.extend({
return query;
},

urlForQuery: function(query) {
urlForQuery(query) {
query = query || {};

if (query.sluggedRouteSlug) {
var url = [];
var host = Ember.get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent(query.sluggedRouteSlug));
url.push("projects");
url.push('projects');

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
return this._super.apply(arguments);
}
},

urlForQueryRecord: function(query) {
urlForQueryRecord(query) {
query = query || {};

// if there are slug and sluggedRouteSlug properties in the query, we
// need to build the url as (prefix/)host/sluggedRouteSlug/slug
if (query.slug && query.sluggedRouteSlug) {
var url = [];
var host = Ember.get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent(query.sluggedRouteSlug));
url.push(encodeURIComponent(query.slug));

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
return this._super.apply(arguments);
}
},
}
});
22 changes: 14 additions & 8 deletions app/adapters/slugged-route.js
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
import Ember from 'ember';
import ApplicationAdapter from './application';

const { get } = Ember;

export default ApplicationAdapter.extend({
// need to drop out the slug query parameter,
// otherwise it will get auto-added to the end of the url
sortQueryParams: function(query) {
sortQueryParams(query) {
query = query || {};

if (query.slug) {
Expand All @@ -14,26 +16,30 @@ export default ApplicationAdapter.extend({
return query;
},

urlForQueryRecord: function(query) {
urlForQueryRecord(query) {
query = query || {};

// if the query contains a slug property, then the URL for the slugged route
// is formed as (prefix/)(host)/slug
if (query.slug) {
var url = [];
var host = Ember.get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent(query.slug));

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
return this._super.apply(arguments);
}
},
}
});
32 changes: 20 additions & 12 deletions app/adapters/task.js
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@ const {
export default ApplicationAdapter.extend({
// need to delete slug and sluggedRouteSlug properties from the query.
// otherwise, they will get auto-added to the end of our url
sortQueryParams: function(query) {
sortQueryParams(query) {
query = query || {};

// to preserve a clean url with just `&page=X` we only
Expand Down Expand Up @@ -48,34 +48,38 @@ export default ApplicationAdapter.extend({

urlForQuery(query) {
if (query.projectId) {
var url = [];
var host = get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent('projects'));
url.push(encodeURIComponent(query.projectId));
url.push(encodeURIComponent('tasks'));

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
return this._super.apply(arguments);
}
},

urlForQueryRecord: function(query) {
urlForQueryRecord(query) {
query = query || {};

// if there are slug and sluggedRouteSlug properties in the query, we
// need to build the url as (prefix/)host/sluggedRouteSlug/slug
if (query.number && query.projectId) {
var url = [];
var host = get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent('projects'));
url.push(encodeURIComponent(query.projectId));
Expand All @@ -84,10 +88,14 @@ export default ApplicationAdapter.extend({

delete query.number;

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
} else {
Expand Down
16 changes: 10 additions & 6 deletions app/adapters/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,18 +19,22 @@ export default ApplicationAdapter.extend({
},

urlForProfileEdit() {
var url = [];
var host = get(this, 'host');
var prefix = this.urlPrefix();
let url = [];
let host = get(this, 'host');
let prefix = this.urlPrefix();

url.push(encodeURIComponent('users'));
url.push(encodeURIComponent(get(this, 'currentUser.user.id')));

if (prefix) { url.unshift(prefix); }
if (prefix) {
url.unshift(prefix);
}

url = url.join('/');
if (!host && url) { url = '/' + url; }
if (!host && url) {
url = `/${url}`;
}

return url;
},
}
});
4 changes: 3 additions & 1 deletion app/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,13 @@ import Resolver from './resolver';
import loadInitializers from 'ember-load-initializers';
import config from './config/environment';

const { Application } = Ember;

let App;

Ember.MODEL_FACTORY_INJECTIONS = true;

App = Ember.Application.extend({
App = Application.extend({
modulePrefix: config.modulePrefix,
podModulePrefix: config.podModulePrefix,
Resolver
Expand Down
Loading