Merge pull request #274 from LemmyNet/feature/admin_only_community_creation

Adding only admins can create communities. Fixes #268
This commit is contained in:
Dessalines 2021-04-24 00:00:09 -04:00 committed by GitHub
commit 9debb4fecc
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 52 additions and 15 deletions

@ -1 +1 @@
Subproject commit ef6c991e345a880d98b165508f28793fef3f922a Subproject commit 0cf2ad832d07d6c0232b3c9c1958d5572303410e

View file

@ -68,7 +68,7 @@
"eslint-plugin-prettier": "^3.3.1", "eslint-plugin-prettier": "^3.3.1",
"husky": "^6.0.0", "husky": "^6.0.0",
"iso-639-1": "^2.1.9", "iso-639-1": "^2.1.9",
"lemmy-js-client": "0.11.0-rc.11", "lemmy-js-client": "0.11.0-rc.12",
"lint-staged": "^10.5.4", "lint-staged": "^10.5.4",
"mini-css-extract-plugin": "^1.4.1", "mini-css-extract-plugin": "^1.4.1",
"node-fetch": "^2.6.1", "node-fetch": "^2.6.1",

View file

@ -247,15 +247,17 @@ export class Navbar extends Component<NavbarProps, NavbarState> {
{i18n.t("create_post")} {i18n.t("create_post")}
</Link> </Link>
</li> </li>
<li class="nav-item"> {this.canCreateCommunity && (
<Link <li class="nav-item">
className="nav-link" <Link
to="/create_community" className="nav-link"
title={i18n.t("create_community")} to="/create_community"
> title={i18n.t("create_community")}
{i18n.t("create_community")} >
</Link> {i18n.t("create_community")}
</li> </Link>
</li>
)}
<li class="nav-item"> <li class="nav-item">
<a <a
className="nav-link" className="nav-link"
@ -524,6 +526,12 @@ export class Navbar extends Component<NavbarProps, NavbarState> {
); );
} }
get canCreateCommunity(): boolean {
let adminOnly = this.props.site_res.site_view.site
.community_creation_admin_only;
return !adminOnly || this.canAdmin;
}
requestNotificationPermission() { requestNotificationPermission() {
if (UserService.Instance.localUserView) { if (UserService.Instance.localUserView) {
document.addEventListener("DOMContentLoaded", function () { document.addEventListener("DOMContentLoaded", function () {

View file

@ -58,6 +58,8 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
enable_downvotes: this.props.site.enable_downvotes, enable_downvotes: this.props.site.enable_downvotes,
open_registration: this.props.site.open_registration, open_registration: this.props.site.open_registration,
enable_nsfw: this.props.site.enable_nsfw, enable_nsfw: this.props.site.enable_nsfw,
community_creation_admin_only: this.props.site
.community_creation_admin_only,
icon: this.props.site.icon, icon: this.props.site.icon,
banner: this.props.site.banner, banner: this.props.site.banner,
auth: authField(), auth: authField(),
@ -231,6 +233,28 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
</div> </div>
</div> </div>
</div> </div>
<div class="form-group row">
<div class="col-12">
<div class="form-check">
<input
class="form-check-input"
id="create-site-community-creation-admin-only"
type="checkbox"
checked={this.state.siteForm.community_creation_admin_only}
onChange={linkEvent(
this,
this.handleSiteCommunityCreationAdminOnly
)}
/>
<label
class="form-check-label"
htmlFor="create-site-community-creation-admin-only"
>
{i18n.t("community_creation_admin_only")}
</label>
</div>
</div>
</div>
<div class="form-group row"> <div class="form-group row">
<div class="col-12"> <div class="col-12">
<button <button
@ -302,6 +326,11 @@ export class SiteForm extends Component<SiteFormProps, SiteFormState> {
i.setState(i.state); i.setState(i.state);
} }
handleSiteCommunityCreationAdminOnly(i: SiteForm, event: any) {
i.state.siteForm.community_creation_admin_only = event.target.checked;
i.setState(i.state);
}
handleSiteEnableDownvotesChange(i: SiteForm, event: any) { handleSiteEnableDownvotesChange(i: SiteForm, event: any) {
i.state.siteForm.enable_downvotes = event.target.checked; i.state.siteForm.enable_downvotes = event.target.checked;
i.setState(i.state); i.setState(i.state);

View file

@ -5125,10 +5125,10 @@ lcid@^1.0.0:
dependencies: dependencies:
invert-kv "^1.0.0" invert-kv "^1.0.0"
lemmy-js-client@0.11.0-rc.11: lemmy-js-client@0.11.0-rc.12:
version "0.11.0-rc.11" version "0.11.0-rc.12"
resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.11.0-rc.11.tgz#f99be613d08d0c196a16a37f74fdaa3b196f0459" resolved "https://registry.yarnpkg.com/lemmy-js-client/-/lemmy-js-client-0.11.0-rc.12.tgz#b6f80f69425ae9699857f98640a3d5a9697955b1"
integrity sha512-IuNzU4+324fhb77JCQ/a/te/gXhQWUvxvtfV3xxQWJ0vG7kWOuz5Rd7KsfSF1d6LbuN9kbO9ebjSRW800ytbsA== integrity sha512-tAYL6g+OgJcNy4SP0tbN6x/qyScAV5XPVyIYGGZd2FDfVd3VFDvfoesqGBOSryLhW9jDE6YSC09jhNLMyNtMCA==
levn@^0.4.1: levn@^0.4.1:
version "0.4.1" version "0.4.1"