DEV: Convert core controllers to native class syntax (batch 2) (#28179)
Changes made using the ember-native-class-codemod, plus some manual tweaks
This commit is contained in:
parent
608e5682e2
commit
fc02b4904d
|
@ -1,43 +1,45 @@
|
||||||
import Controller, { inject as controller } from "@ember/controller";
|
import Controller, { inject as controller } from "@ember/controller";
|
||||||
|
import { action } from "@ember/object";
|
||||||
import { fmt } from "discourse/lib/computed";
|
import { fmt } from "discourse/lib/computed";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupActivityPostsController extends Controller {
|
||||||
group: controller(),
|
@controller group;
|
||||||
groupActivity: controller(),
|
@controller groupActivity;
|
||||||
application: controller(),
|
@controller application;
|
||||||
canLoadMore: true,
|
|
||||||
loading: false,
|
|
||||||
emptyText: fmt("type", "groups.empty.%@"),
|
|
||||||
|
|
||||||
actions: {
|
@fmt("type", "groups.empty.%@") emptyText;
|
||||||
loadMore() {
|
|
||||||
if (!this.canLoadMore) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (this.loading) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
this.set("loading", true);
|
|
||||||
const posts = this.model;
|
|
||||||
if (posts && posts.length) {
|
|
||||||
const before = posts[posts.length - 1].get("created_at");
|
|
||||||
const group = this.get("group.model");
|
|
||||||
|
|
||||||
let categoryId = this.get("groupActivity.category_id");
|
canLoadMore = true;
|
||||||
const opts = { before, type: this.type, categoryId };
|
loading = false;
|
||||||
|
|
||||||
group
|
@action
|
||||||
.findPosts(opts)
|
loadMore() {
|
||||||
.then((newPosts) => {
|
if (!this.canLoadMore) {
|
||||||
posts.addObjects(newPosts);
|
return;
|
||||||
if (newPosts.length === 0) {
|
}
|
||||||
this.set("canLoadMore", false);
|
if (this.loading) {
|
||||||
}
|
return;
|
||||||
})
|
}
|
||||||
.finally(() => {
|
this.set("loading", true);
|
||||||
this.set("loading", false);
|
const posts = this.model;
|
||||||
});
|
if (posts && posts.length) {
|
||||||
}
|
const before = posts[posts.length - 1].get("created_at");
|
||||||
},
|
const group = this.get("group.model");
|
||||||
},
|
|
||||||
});
|
let categoryId = this.get("groupActivity.category_id");
|
||||||
|
const opts = { before, type: this.type, categoryId };
|
||||||
|
|
||||||
|
group
|
||||||
|
.findPosts(opts)
|
||||||
|
.then((newPosts) => {
|
||||||
|
posts.addObjects(newPosts);
|
||||||
|
if (newPosts.length === 0) {
|
||||||
|
this.set("canLoadMore", false);
|
||||||
|
}
|
||||||
|
})
|
||||||
|
.finally(() => {
|
||||||
|
this.set("loading", false);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
export default Controller.extend({
|
import { action } from "@ember/object";
|
||||||
actions: {
|
|
||||||
loadMore() {
|
export default class GroupActivityTopicsController extends Controller {
|
||||||
this.model.loadMore();
|
@action
|
||||||
},
|
loadMore() {
|
||||||
},
|
this.model.loadMore();
|
||||||
});
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import { service } from "@ember/service";
|
import { service } from "@ember/service";
|
||||||
export default Controller.extend({
|
|
||||||
router: service(),
|
export default class GroupActivityController extends Controller {
|
||||||
queryParams: ["category_id"],
|
@service router;
|
||||||
});
|
|
||||||
|
queryParams = ["category_id"];
|
||||||
|
}
|
||||||
|
|
|
@ -1,45 +1,42 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import { action } from "@ember/object";
|
import { action } from "@ember/object";
|
||||||
import { gt } from "@ember/object/computed";
|
import { gt } from "@ember/object/computed";
|
||||||
|
import { observes } from "@ember-decorators/object";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import { popupAjaxError } from "discourse/lib/ajax-error";
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
||||||
import discourseComputed, {
|
import discourseComputed, { debounce } from "discourse-common/utils/decorators";
|
||||||
debounce,
|
|
||||||
observes,
|
|
||||||
} from "discourse-common/utils/decorators";
|
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupIndexController extends Controller {
|
||||||
queryParams: ["order", "asc", "filter"],
|
queryParams = ["order", "asc", "filter"];
|
||||||
|
order = null;
|
||||||
|
asc = true;
|
||||||
|
filter = null;
|
||||||
|
filterInput = null;
|
||||||
|
loading = false;
|
||||||
|
isBulk = false;
|
||||||
|
showActions = false;
|
||||||
|
bulkSelection = null;
|
||||||
|
|
||||||
order: null,
|
@gt("model.members.length", 0) hasMembers;
|
||||||
asc: true,
|
|
||||||
filter: null,
|
|
||||||
filterInput: null,
|
|
||||||
|
|
||||||
loading: false,
|
|
||||||
isBulk: false,
|
|
||||||
showActions: false,
|
|
||||||
|
|
||||||
bulkSelection: null,
|
|
||||||
|
|
||||||
get canLoadMore() {
|
get canLoadMore() {
|
||||||
return this.get("model.members")?.length < this.get("model.user_count");
|
return this.get("model.members")?.length < this.get("model.user_count");
|
||||||
},
|
}
|
||||||
|
|
||||||
@observes("filterInput")
|
@observes("filterInput")
|
||||||
filterInputChanged() {
|
filterInputChanged() {
|
||||||
this._setFilter();
|
this._setFilter();
|
||||||
},
|
}
|
||||||
|
|
||||||
@debounce(500)
|
@debounce(500)
|
||||||
_setFilter() {
|
_setFilter() {
|
||||||
this.set("filter", this.filterInput);
|
this.set("filter", this.filterInput);
|
||||||
},
|
}
|
||||||
|
|
||||||
@observes("order", "asc", "filter")
|
@observes("order", "asc", "filter")
|
||||||
_filtersChanged() {
|
_filtersChanged() {
|
||||||
this.reloadMembers(true);
|
this.reloadMembers(true);
|
||||||
},
|
}
|
||||||
|
|
||||||
reloadMembers(refresh) {
|
reloadMembers(refresh) {
|
||||||
if (this.loading || !this.model) {
|
if (this.loading || !this.model) {
|
||||||
|
@ -58,19 +55,17 @@ export default Controller.extend({
|
||||||
this.set("bulkSelection", []);
|
this.set("bulkSelection", []);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("order", "asc", "filter")
|
@discourseComputed("order", "asc", "filter")
|
||||||
memberParams(order, asc, filter) {
|
memberParams(order, asc, filter) {
|
||||||
return { order, asc, filter };
|
return { order, asc, filter };
|
||||||
},
|
}
|
||||||
|
|
||||||
hasMembers: gt("model.members.length", 0),
|
|
||||||
|
|
||||||
@discourseComputed("model")
|
@discourseComputed("model")
|
||||||
canManageGroup(model) {
|
canManageGroup(model) {
|
||||||
return this.currentUser && this.currentUser.canManageGroup(model);
|
return this.currentUser && this.currentUser.canManageGroup(model);
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed
|
@discourseComputed
|
||||||
filterPlaceholder() {
|
filterPlaceholder() {
|
||||||
|
@ -79,7 +74,7 @@ export default Controller.extend({
|
||||||
} else {
|
} else {
|
||||||
return "groups.members.filter_placeholder";
|
return "groups.members.filter_placeholder";
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("filter", "members", "model.can_see_members")
|
@discourseComputed("filter", "members", "model.can_see_members")
|
||||||
emptyMessageKey(filter, members, canSeeMembers) {
|
emptyMessageKey(filter, members, canSeeMembers) {
|
||||||
|
@ -90,17 +85,17 @@ export default Controller.extend({
|
||||||
} else {
|
} else {
|
||||||
return "groups.empty.members";
|
return "groups.empty.members";
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
loadMore() {
|
loadMore() {
|
||||||
this.reloadMembers();
|
this.reloadMembers();
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
toggleActions() {
|
toggleActions() {
|
||||||
this.toggleProperty("showActions");
|
this.toggleProperty("showActions");
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
actOnGroup(member, actionId) {
|
actOnGroup(member, actionId) {
|
||||||
|
@ -123,7 +118,7 @@ export default Controller.extend({
|
||||||
member.setPrimaryGroup(null).then(() => member.set("primary", false));
|
member.setPrimaryGroup(null).then(() => member.set("primary", false));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
actOnSelection(selection, actionId) {
|
actOnSelection(selection, actionId) {
|
||||||
|
@ -177,22 +172,22 @@ export default Controller.extend({
|
||||||
this.set("isBulk", false);
|
this.set("isBulk", false);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
removeMember(user) {
|
removeMember(user) {
|
||||||
this.model.removeMember(user, this.memberParams);
|
this.model.removeMember(user, this.memberParams);
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
makeOwner(username) {
|
makeOwner(username) {
|
||||||
this.model.addOwners(username);
|
this.model.addOwners(username);
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
removeOwner(user) {
|
removeOwner(user) {
|
||||||
this.model.removeOwner(user);
|
this.model.removeOwner(user);
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
addMembers() {
|
addMembers() {
|
||||||
|
@ -202,7 +197,7 @@ export default Controller.extend({
|
||||||
.then(() => this.set("usernames", []))
|
.then(() => this.set("usernames", []))
|
||||||
.catch(popupAjaxError);
|
.catch(popupAjaxError);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
toggleBulkSelect() {
|
toggleBulkSelect() {
|
||||||
|
@ -210,7 +205,7 @@ export default Controller.extend({
|
||||||
isBulk: !this.isBulk,
|
isBulk: !this.isBulk,
|
||||||
bulkSelection: [],
|
bulkSelection: [],
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
bulkSelectAll() {
|
bulkSelectAll() {
|
||||||
|
@ -221,7 +216,7 @@ export default Controller.extend({
|
||||||
checkbox.click();
|
checkbox.click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
bulkClearAll() {
|
bulkClearAll() {
|
||||||
|
@ -232,7 +227,7 @@ export default Controller.extend({
|
||||||
checkbox.click();
|
checkbox.click();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
selectMember(member, e) {
|
selectMember(member, e) {
|
||||||
|
@ -243,5 +238,5 @@ export default Controller.extend({
|
||||||
} else {
|
} else {
|
||||||
this.bulkSelection.removeObject(member);
|
this.bulkSelection.removeObject(member);
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupManageCategoriesController extends Controller {
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"model.watchingCategories.[]",
|
"model.watchingCategories.[]",
|
||||||
"model.watchingFirstPostCategories.[]",
|
"model.watchingFirstPostCategories.[]",
|
||||||
|
@ -13,5 +13,5 @@ export default Controller.extend({
|
||||||
return []
|
return []
|
||||||
.concat(watching, watchingFirst, tracking, regular, muted)
|
.concat(watching, watchingFirst, tracking, regular, muted)
|
||||||
.filter(Boolean);
|
.filter(Boolean);
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,17 +1,15 @@
|
||||||
import Controller, { inject as controller } from "@ember/controller";
|
import Controller, { inject as controller } from "@ember/controller";
|
||||||
import EmberObject, { action } from "@ember/object";
|
import EmberObject, { action } from "@ember/object";
|
||||||
import discourseComputed, { observes } from "discourse-common/utils/decorators";
|
import { observes } from "@ember-decorators/object";
|
||||||
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupManageLogsController extends Controller {
|
||||||
group: controller(),
|
@controller group;
|
||||||
application: controller(),
|
@controller application;
|
||||||
loading: false,
|
|
||||||
offset: 0,
|
|
||||||
|
|
||||||
init() {
|
loading = false;
|
||||||
this._super(...arguments);
|
offset = 0;
|
||||||
this.set("filters", EmberObject.create());
|
filters = EmberObject.create();
|
||||||
},
|
|
||||||
|
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"filters.action",
|
"filters.action",
|
||||||
|
@ -21,7 +19,7 @@ export default Controller.extend({
|
||||||
)
|
)
|
||||||
filterParams(filtersAction, acting_user, target_user, subject) {
|
filterParams(filtersAction, acting_user, target_user, subject) {
|
||||||
return { action: filtersAction, acting_user, target_user, subject };
|
return { action: filtersAction, acting_user, target_user, subject };
|
||||||
},
|
}
|
||||||
|
|
||||||
@observes(
|
@observes(
|
||||||
"filters.action",
|
"filters.action",
|
||||||
|
@ -40,14 +38,14 @@ export default Controller.extend({
|
||||||
all_loaded: results.all_loaded,
|
all_loaded: results.all_loaded,
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
reset() {
|
reset() {
|
||||||
this.setProperties({
|
this.setProperties({
|
||||||
offset: 0,
|
offset: 0,
|
||||||
filters: EmberObject.create(),
|
filters: EmberObject.create(),
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
loadMore() {
|
loadMore() {
|
||||||
|
@ -67,10 +65,10 @@ export default Controller.extend({
|
||||||
this.set("model.all_loaded", results.all_loaded);
|
this.set("model.all_loaded", results.all_loaded);
|
||||||
})
|
})
|
||||||
.finally(() => this.set("loading", false));
|
.finally(() => this.set("loading", false));
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
clearFilter(key) {
|
clearFilter(key) {
|
||||||
this.set(`filters.${key}`, "");
|
this.set(`filters.${key}`, "");
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
export default Controller.extend({
|
|
||||||
saving: null,
|
export default class GroupManageProfileController extends Controller {
|
||||||
});
|
saving = null;
|
||||||
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupManageTagsController extends Controller {
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"model.watching_tags.[]",
|
"model.watching_tags.[]",
|
||||||
"model.watching_first_post_tags.[]",
|
"model.watching_first_post_tags.[]",
|
||||||
|
@ -13,5 +13,5 @@ export default Controller.extend({
|
||||||
return []
|
return []
|
||||||
.concat(watching, watchingFirst, tracking, regular, muted)
|
.concat(watching, watchingFirst, tracking, regular, muted)
|
||||||
.filter((t) => t);
|
.filter((t) => t);
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupManageController extends Controller {
|
||||||
@discourseComputed("model.automatic")
|
@discourseComputed("model.automatic")
|
||||||
tabs(automatic) {
|
tabs(automatic) {
|
||||||
const defaultTabs = [
|
const defaultTabs = [
|
||||||
|
@ -43,5 +43,5 @@ export default Controller.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
return defaultTabs;
|
return defaultTabs;
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -1,2 +1,3 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
export default Controller.extend({});
|
|
||||||
|
export default class GroupMessagesController extends Controller {}
|
||||||
|
|
|
@ -1,3 +1,3 @@
|
||||||
import Controller from "@ember/controller";
|
import Controller from "@ember/controller";
|
||||||
|
|
||||||
export default Controller.extend();
|
export default class GroupPermissionsController extends Controller {}
|
||||||
|
|
|
@ -1,41 +1,38 @@
|
||||||
import Controller, { inject as controller } from "@ember/controller";
|
import Controller, { inject as controller } from "@ember/controller";
|
||||||
|
import { action } from "@ember/object";
|
||||||
|
import { observes } from "@ember-decorators/object";
|
||||||
import { ajax } from "discourse/lib/ajax";
|
import { ajax } from "discourse/lib/ajax";
|
||||||
import { popupAjaxError } from "discourse/lib/ajax-error";
|
import { popupAjaxError } from "discourse/lib/ajax-error";
|
||||||
import discourseComputed, {
|
import discourseComputed, { debounce } from "discourse-common/utils/decorators";
|
||||||
debounce,
|
|
||||||
observes,
|
|
||||||
} from "discourse-common/utils/decorators";
|
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupRequestsController extends Controller {
|
||||||
application: controller(),
|
@controller application;
|
||||||
|
|
||||||
queryParams: ["order", "asc", "filter"],
|
queryParams = ["order", "asc", "filter"];
|
||||||
|
order = "";
|
||||||
order: "",
|
asc = null;
|
||||||
asc: null,
|
filter = null;
|
||||||
filter: null,
|
filterInput = null;
|
||||||
filterInput: null,
|
loading = false;
|
||||||
|
|
||||||
loading: false,
|
|
||||||
|
|
||||||
get canLoadMore() {
|
get canLoadMore() {
|
||||||
return this.get("model.requesters")?.length < this.get("model.user_count");
|
return this.get("model.requesters")?.length < this.get("model.user_count");
|
||||||
},
|
}
|
||||||
|
|
||||||
@observes("filterInput")
|
@observes("filterInput")
|
||||||
filterInputChanged() {
|
filterInputChanged() {
|
||||||
this._setFilter();
|
this._setFilter();
|
||||||
},
|
}
|
||||||
|
|
||||||
@debounce(500)
|
@debounce(500)
|
||||||
_setFilter() {
|
_setFilter() {
|
||||||
this.set("filter", this.filterInput);
|
this.set("filter", this.filterInput);
|
||||||
},
|
}
|
||||||
|
|
||||||
@observes("order", "asc", "filter")
|
@observes("order", "asc", "filter")
|
||||||
_filtersChanged() {
|
_filtersChanged() {
|
||||||
this.findRequesters(true);
|
this.findRequesters(true);
|
||||||
},
|
}
|
||||||
|
|
||||||
findRequesters(refresh) {
|
findRequesters(refresh) {
|
||||||
if (this.loading) {
|
if (this.loading) {
|
||||||
|
@ -55,17 +52,17 @@ export default Controller.extend({
|
||||||
model.findRequesters(this.memberParams, refresh).finally(() => {
|
model.findRequesters(this.memberParams, refresh).finally(() => {
|
||||||
this.set("loading", false);
|
this.set("loading", false);
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("order", "asc", "filter")
|
@discourseComputed("order", "asc", "filter")
|
||||||
memberParams(order, asc, filter) {
|
memberParams(order, asc, filter) {
|
||||||
return { order, asc, filter };
|
return { order, asc, filter };
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("model.requesters.[]")
|
@discourseComputed("model.requesters.[]")
|
||||||
hasRequesters(requesters) {
|
hasRequesters(requesters) {
|
||||||
return requesters && requesters.length > 0;
|
return requesters && requesters.length > 0;
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed
|
@discourseComputed
|
||||||
filterPlaceholder() {
|
filterPlaceholder() {
|
||||||
|
@ -74,43 +71,45 @@ export default Controller.extend({
|
||||||
} else {
|
} else {
|
||||||
return "groups.members.filter_placeholder";
|
return "groups.members.filter_placeholder";
|
||||||
}
|
}
|
||||||
},
|
}
|
||||||
|
|
||||||
handleRequest(data) {
|
handleRequest(data) {
|
||||||
ajax(`/groups/${this.get("model.id")}/handle_membership_request.json`, {
|
ajax(`/groups/${this.get("model.id")}/handle_membership_request.json`, {
|
||||||
data,
|
data,
|
||||||
type: "PUT",
|
type: "PUT",
|
||||||
}).catch(popupAjaxError);
|
}).catch(popupAjaxError);
|
||||||
},
|
}
|
||||||
|
|
||||||
actions: {
|
@action
|
||||||
loadMore() {
|
loadMore() {
|
||||||
this.findRequesters();
|
this.findRequesters();
|
||||||
},
|
}
|
||||||
|
|
||||||
acceptRequest(user) {
|
@action
|
||||||
this.handleRequest({ user_id: user.get("id"), accept: true });
|
acceptRequest(user) {
|
||||||
user.setProperties({
|
this.handleRequest({ user_id: user.get("id"), accept: true });
|
||||||
request_accepted: true,
|
user.setProperties({
|
||||||
request_denied: false,
|
request_accepted: true,
|
||||||
});
|
request_denied: false,
|
||||||
},
|
});
|
||||||
|
}
|
||||||
|
|
||||||
undoAcceptRequest(user) {
|
@action
|
||||||
ajax("/groups/" + this.get("model.id") + "/members.json", {
|
undoAcceptRequest(user) {
|
||||||
type: "DELETE",
|
ajax("/groups/" + this.get("model.id") + "/members.json", {
|
||||||
data: { user_id: user.get("id") },
|
type: "DELETE",
|
||||||
}).then(() => {
|
data: { user_id: user.get("id") },
|
||||||
user.set("request_undone", true);
|
}).then(() => {
|
||||||
});
|
user.set("request_undone", true);
|
||||||
},
|
});
|
||||||
|
}
|
||||||
|
|
||||||
denyRequest(user) {
|
@action
|
||||||
this.handleRequest({ user_id: user.get("id") });
|
denyRequest(user) {
|
||||||
user.setProperties({
|
this.handleRequest({ user_id: user.get("id") });
|
||||||
request_accepted: false,
|
user.setProperties({
|
||||||
request_denied: true,
|
request_accepted: false,
|
||||||
});
|
request_denied: true,
|
||||||
},
|
});
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -5,28 +5,28 @@ import GroupDeleteDialog from "discourse/components/dialog-messages/group-delete
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
const Tab = EmberObject.extend({
|
class Tab extends EmberObject {
|
||||||
init() {
|
init() {
|
||||||
this._super(...arguments);
|
super.init(...arguments);
|
||||||
|
|
||||||
this.setProperties({
|
this.setProperties({
|
||||||
route: this.route || `group.${this.name}`,
|
route: this.route || `group.${this.name}`,
|
||||||
message: I18n.t(`groups.${this.i18nKey || this.name}`),
|
message: I18n.t(`groups.${this.i18nKey || this.name}`),
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupController extends Controller {
|
||||||
application: controller(),
|
@service dialog;
|
||||||
dialog: service(),
|
@service currentUser;
|
||||||
currentUser: service(),
|
@service router;
|
||||||
router: service(),
|
@service composer;
|
||||||
composer: service(),
|
@controller application;
|
||||||
|
|
||||||
counts: null,
|
counts = null;
|
||||||
showing: "members",
|
showing = "members";
|
||||||
destroying: null,
|
destroying = null;
|
||||||
showTooltip: false,
|
showTooltip = false;
|
||||||
|
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"showMessages",
|
"showMessages",
|
||||||
|
@ -90,7 +90,7 @@ export default Controller.extend({
|
||||||
);
|
);
|
||||||
|
|
||||||
return defaultTabs;
|
return defaultTabs;
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed(
|
@discourseComputed(
|
||||||
"model.has_messages",
|
"model.has_messages",
|
||||||
|
@ -107,12 +107,12 @@ export default Controller.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
return isGroupUser || (this.currentUser && this.currentUser.admin);
|
return isGroupUser || (this.currentUser && this.currentUser.admin);
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("model.messageable")
|
@discourseComputed("model.messageable")
|
||||||
displayGroupMessageButton(messageable) {
|
displayGroupMessageButton(messageable) {
|
||||||
return this.currentUser && messageable;
|
return this.currentUser && messageable;
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("model", "model.automatic")
|
@discourseComputed("model", "model.automatic")
|
||||||
canManageGroup(model, automatic) {
|
canManageGroup(model, automatic) {
|
||||||
|
@ -121,7 +121,7 @@ export default Controller.extend({
|
||||||
(this.currentUser.canManageGroup(model) ||
|
(this.currentUser.canManageGroup(model) ||
|
||||||
(model.can_admin_group && automatic))
|
(model.can_admin_group && automatic))
|
||||||
);
|
);
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
messageGroup() {
|
messageGroup() {
|
||||||
|
@ -129,7 +129,7 @@ export default Controller.extend({
|
||||||
recipients: this.get("model.name"),
|
recipients: this.get("model.name"),
|
||||||
hasGroups: true,
|
hasGroups: true,
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
destroyGroup() {
|
destroyGroup() {
|
||||||
|
@ -158,10 +158,10 @@ export default Controller.extend({
|
||||||
},
|
},
|
||||||
didCancel: () => this.set("destroying", false),
|
didCancel: () => this.set("destroying", false),
|
||||||
});
|
});
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
toggleDeleteTooltip() {
|
toggleDeleteTooltip() {
|
||||||
this.toggleProperty("showTooltip");
|
this.toggleProperty("showTooltip");
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -6,15 +6,16 @@ import discourseDebounce from "discourse-common/lib/debounce";
|
||||||
import discourseComputed from "discourse-common/utils/decorators";
|
import discourseComputed from "discourse-common/utils/decorators";
|
||||||
import I18n from "discourse-i18n";
|
import I18n from "discourse-i18n";
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupsIndexController extends Controller {
|
||||||
router: service(),
|
@service router;
|
||||||
queryParams: ["order", "asc", "filter", "type"],
|
|
||||||
order: null,
|
queryParams = ["order", "asc", "filter", "type"];
|
||||||
asc: null,
|
order = null;
|
||||||
filter: "",
|
asc = null;
|
||||||
type: null,
|
filter = "";
|
||||||
groups: null,
|
type = null;
|
||||||
isLoading: false,
|
groups = null;
|
||||||
|
isLoading = false;
|
||||||
|
|
||||||
@discourseComputed("groups.extras.type_filters")
|
@discourseComputed("groups.extras.type_filters")
|
||||||
types(typeFilters) {
|
types(typeFilters) {
|
||||||
|
@ -27,7 +28,7 @@ export default Controller.extend({
|
||||||
}
|
}
|
||||||
|
|
||||||
return types;
|
return types;
|
||||||
},
|
}
|
||||||
|
|
||||||
loadGroups(params) {
|
loadGroups(params) {
|
||||||
this.set("isLoading", true);
|
this.set("isLoading", true);
|
||||||
|
@ -38,24 +39,24 @@ export default Controller.extend({
|
||||||
this.set("groups", groups);
|
this.set("groups", groups);
|
||||||
})
|
})
|
||||||
.finally(() => this.set("isLoading", false));
|
.finally(() => this.set("isLoading", false));
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
onFilterChanged(filter) {
|
onFilterChanged(filter) {
|
||||||
discourseDebounce(this, this._debouncedFilter, filter, INPUT_DELAY);
|
discourseDebounce(this, this._debouncedFilter, filter, INPUT_DELAY);
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
loadMore() {
|
loadMore() {
|
||||||
this.groups && this.groups.loadMore();
|
this.groups && this.groups.loadMore();
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
new() {
|
new() {
|
||||||
this.router.transitionTo("groups.new");
|
this.router.transitionTo("groups.new");
|
||||||
},
|
}
|
||||||
|
|
||||||
_debouncedFilter(filter) {
|
_debouncedFilter(filter) {
|
||||||
this.set("filter", filter);
|
this.set("filter", filter);
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
|
@ -35,20 +35,21 @@ export function popupAutomaticMembershipAlert(group_id, email_domains) {
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Controller.extend({
|
export default class GroupsNewController extends Controller {
|
||||||
dialog: service(),
|
@service dialog;
|
||||||
router: service(),
|
@service router;
|
||||||
saving: null,
|
|
||||||
|
saving = null;
|
||||||
|
|
||||||
@discourseComputed("model.ownerUsernames")
|
@discourseComputed("model.ownerUsernames")
|
||||||
splitOwnerUsernames(owners) {
|
splitOwnerUsernames(owners) {
|
||||||
return owners && owners.length ? owners.split(",") : [];
|
return owners && owners.length ? owners.split(",") : [];
|
||||||
},
|
}
|
||||||
|
|
||||||
@discourseComputed("model.usernames")
|
@discourseComputed("model.usernames")
|
||||||
splitUsernames(usernames) {
|
splitUsernames(usernames) {
|
||||||
return usernames && usernames.length ? usernames.split(",") : [];
|
return usernames && usernames.length ? usernames.split(",") : [];
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
save() {
|
save() {
|
||||||
|
@ -67,15 +68,15 @@ export default Controller.extend({
|
||||||
})
|
})
|
||||||
.catch(popupAjaxError)
|
.catch(popupAjaxError)
|
||||||
.finally(() => this.set("saving", false));
|
.finally(() => this.set("saving", false));
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
updateOwnerUsernames(selected) {
|
updateOwnerUsernames(selected) {
|
||||||
this.set("model.ownerUsernames", selected.join(","));
|
this.set("model.ownerUsernames", selected.join(","));
|
||||||
},
|
}
|
||||||
|
|
||||||
@action
|
@action
|
||||||
updateUsernames(selected) {
|
updateUsernames(selected) {
|
||||||
this.set("model.usernames", selected.join(","));
|
this.set("model.usernames", selected.join(","));
|
||||||
},
|
}
|
||||||
});
|
}
|
||||||
|
|
Loading…
Reference in New Issue