TryGhost / Ghost

Independent technology for modern publishing, memberships, subscriptions and newsletters.
https://ghost.org
MIT License
47k stars 10.23k forks source link

Publish posts internally #3899

Closed anshin closed 10 years ago

anshin commented 10 years ago

There has already been discussion about privately publishing posts (#2315, #2248, #1756) and authored permalinks (#3858). A logical step would be to allow authors to publish internally, so that only other members can see posts listed, and Ghost is in an excellent position to do this with the addition of multi-user blogs.

I'm sure further discussion would have to take place about the implementation, but my initial proposal is to reserve two tags: shared and internal. The shared tag would prevent posts from being listed, but authors and other members would be able to share posts via permalink. The internal tag would prevent posts from being listed but would also cause posts shared via permalink to return a 404.

This could be extended to allow users to define which roles are specified by the internal tag, or even publishing to arbitrary roles at the author's discretion.

I'm not vying particularly hard for publishing only to certain roles, but I'm very much in love with the idea of internal posts so that I can blog privately within my organization.

ErisDS commented 10 years ago

Hi @anshin and welcome to Ghost!

Thanks for taking the time to link this to the other similar issues. Not sure if you saw, but we've got some guidelines on feature requests in our contributing guidelines. What we ask is that when raising feature requests, you focus on the use case of what you want to do and why and convincing us that the feature you are asking for is needed in Ghost core.

This is particularly important in this case because there are many, many ways the feature could be implemented, and the implementation itself isn't really interesting at this point. What's interesting is why is Ghost in it's current form not serving your needs? What do you need to do that you can't do and why?

To get more specific, what's not clear from what you've said so far is:

If so this seems like the kind of thing that belongs in an app rather than core because it's not a common use case.

If so, the current workflow for this is to publish the post as a static page, that does exactly what you suggest a shared tag might do. In the future we're planning a complete rebuild of the editor and preview, which will change the need for this feature and is why we've not done anything else with this yet.

If you could let us know a little bit more detail about what it is you want to do and why, that'll give us a lot more to work with :+1:

anshin commented 10 years ago

Thanks for the welcome! I actually did look at those guidelines, but I got caught up in selling the ease of my initial thoughts on implementation rather than the merits themselves. My fault.

do you want to share previews of posts in order to get them reviewed before publishing?

I do want to share previews of posts, but reviews aren't the focus of my feature request. The key difference in my feature request is that static posts would be listed with the other posts, but only for logged-in users.

I also didn't understand what Static Page meant in the Post Settings Menu. I thought it must have something to do with static blogging (such as with Jekyll). Maybe to save on resources when a post is expecting heavy load. Did I miss some introductory text? If this should be an issue of its own, just let me know.

do you actually want to publish posts so that only certain people in your organisation can see it?

Something like that. I've considered publishing posts so that only certain roles can see them (on the assumption that new roles will be available later), but I think that's a much less common use-case than publishing posts so that everyone in the organization can see them.

If so this seems like the kind of thing that belongs in an app rather than core because it's not a common use case.

I'm inclined to think that this is a use-case for any members of a multi-user blog. Users will need to communicate about lots of things using some medium. E-mail is probably what most users would use without a different option, and I think internal posts are much better suited to this. However, this might fall under the category of only relevant…for a short time (principle number 3).

Beyond the initial communication use-case, new users could be directed to the Getting Started and find information about editing tips, posting guidelines, essays about language usage, policies about certain topics, and so much more.

Is it fundamentally core to publishing digital content? Would it likely be useful to the majority of our user base?

While I think it would likely be useful to the majority of the Ghost user base (or at least to those with multi-user blogs), I'm not sure it's fundamentally core to publishing digital content. If this isn't something that should be in core, can it be done with apps?

In the future we're planning a complete rebuild of the editor and preview, which will change the need for this feature and is why we've not done anything else with this yet.

Which feature do you mean when you say which will change the need for this feature, and how will it change the need for it?

ErisDS commented 10 years ago

I also didn't understand what Static Page meant in the Post Settings Menu

By default, all published posts appear in the chronological blog list. If you want to create a piece of content which doesn't appear in that list, i.e. a page like an about page, you can click the 'static page' checkbox and it will still be published, but it will not appear in the chronological listings and instead only be accessible either via the URL or any hard-coded links you create in your theme.

static posts would be listed with the other posts, but only for logged-in users.

The frontend of a Ghost blog is a separate application to the admin client, it is effectively just server-side rendered HTML and has no concept of a logged-in user, so this would be a very tricky thing to implement and not something that I imagine we would ever support in core.

Ghost is intended to be a happy middle-ground between a dynamic blog and a static site generator. The content served as the blog should be as near to static as possible so that it can be heavily cached. Any dynamic elements (such as elements which depend on whether a user is logged in) should be added via JavaScript so as to protect the 'cachability' of the pages.

Beyond the initial communication use-case, new users could be directed to the Getting Started and find information about editing tips, posting guidelines, essays about language usage, policies about certain topics, and so much more.

This sounds like it could be done with a page where the link is never shared in the public domain?

If this isn't something that should be in core, can it be done with apps?

The intention is that pretty much anything will be possible with an app :wink:

Which feature do you mean when you say which will change the need for this feature, and how will it change the need for it?

I was talking about shareable previews. At the moment the preview is built in to the editor. If you want to share a post before it's published, people tend to mark the post as a static page and share that. In future the editor will be changing and evolving and I believe that the concept of a 'live preview' will likely be implemented alongside that.

To summarise, whilst I understand you have use-cases for using Ghost in a slightly different way, I think that waht you are after either really belongs in an app :)