From 9da3a7f436b4c6b64e65a425ffcc27964019241c Mon Sep 17 00:00:00 2001 From: Joffrey JAFFEUX Date: Wed, 17 Jun 2020 12:42:20 +0200 Subject: [PATCH] FEATURE: allows published pages to be public (#10053) --- .../discourse/app/controllers/publish-page.js | 17 ++++-- .../app/templates/modal/publish-page.hbs | 32 +++++++++-- .../discourse/app/templates/topic.hbs | 3 + app/assets/stylesheets/common/base/modal.scss | 49 +++++++++++----- app/assets/stylesheets/common/base/topic.scss | 9 +++ app/controllers/published_pages_controller.rb | 37 +++++++++++- app/models/published_page.rb | 4 +- app/serializers/published_page_serializer.rb | 2 +- config/locales/client.en.yml | 3 + config/locales/server.en.yml | 1 + config/site_settings.yml | 2 + ...701_add_public_field_to_published_pages.rb | 7 +++ spec/fabricators/published_page_fabricator.rb | 3 +- .../published_pages_controller_spec.rb | 57 ++++++++++++++++++- 14 files changed, 196 insertions(+), 30 deletions(-) create mode 100644 db/migrate/20201006172701_add_public_field_to_published_pages.rb diff --git a/app/assets/javascripts/discourse/app/controllers/publish-page.js b/app/assets/javascripts/discourse/app/controllers/publish-page.js index f6c864682a4..58059d027c1 100644 --- a/app/assets/javascripts/discourse/app/controllers/publish-page.js +++ b/app/assets/javascripts/discourse/app/controllers/publish-page.js @@ -35,6 +35,7 @@ export default Controller.extend(ModalFunctionality, StateHelpers, { this.state === States.existing ); }), + showUnpublish: computed("state", function() { return this.state === States.existing || this.state === States.unpublishing; }), @@ -95,7 +96,7 @@ export default Controller.extend(ModalFunctionality, StateHelpers, { this.set("state", States.saving); return this.publishedPage - .update({ slug: this.publishedPage.slug }) + .update(this.publishedPage.getProperties("slug", "public")) .then(() => { this.set("state", States.existing); this.model.set("publishedPage", this.publishedPage); @@ -110,11 +111,17 @@ export default Controller.extend(ModalFunctionality, StateHelpers, { startNew() { this.setProperties({ state: States.new, - publishedPage: this.store.createRecord("published_page", { - id: this.model.id, - slug: this.model.slug - }) + publishedPage: this.store.createRecord( + "published_page", + this.model.getProperties("id", "slug", "public") + ) }); this.checkSlug(); + }, + + @action + onChangePublic(isPublic) { + this.publishedPage.set("public", isPublic); + this.publish(); } }); diff --git a/app/assets/javascripts/discourse/app/templates/modal/publish-page.hbs b/app/assets/javascripts/discourse/app/templates/modal/publish-page.hbs index 712682fe74e..9cd9a560879 100644 --- a/app/assets/javascripts/discourse/app/templates/modal/publish-page.hbs +++ b/app/assets/javascripts/discourse/app/templates/modal/publish-page.hbs @@ -6,8 +6,29 @@

{{i18n "topic.publish_page.description"}}

- - {{text-field value=publishedPage.slug onChange=(action "checkSlug") onChangeImmediate=(action "startCheckSlug") disabled=existing class="publish-slug"}} +
+ + {{text-field + value=publishedPage.slug + onChange=(action "checkSlug") + onChangeImmediate=(action "startCheckSlug") + disabled=existing + class="publish-slug" + }} +
+ +
+ + +

+ {{input + type="checkbox" + checked=publishedPage.public + click=(action "onChangePublic" value="target.checked") + }} + {{i18n "topic.publish_page.public_description"}} +

+
@@ -40,14 +61,15 @@