New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Support more sublevel in chapters #95

Closed
ducheneo opened this Issue Apr 6, 2016 · 43 comments

Comments

@ducheneo

ducheneo commented Apr 6, 2016

It should be interesting if we could use at least one more level of sub-chapter in a book.
Collapsible sections are also interesting.

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Apr 6, 2016

Hi @ducheneo, I agree with collapsible sections, They're already open and requested on #78.

The extra level of grouping is an interesting topic. I would rather not add this feature and here's why:

Initially when building BookStack I allowed a system of highly nested pages. I was following the system that confluence used. From a development perspective this was tricky to support, Not impossible by any means but added extra complication whenever there was a listing or when working out relation trees.

From a user perspective things were fairly hard to navigate. Allowing a high level of nesting means you can only show part of a grouping, or tree structure, at a time which meant you only see a snapshot of a whole and it becomes easier for content to stay hidden. It also means there was no standard grouping system or clear separation of levels.

At that point I changed BookStack to a 2 tier grouping, Books & Chapters. I very much like this level of grouping as it can be related to the way we store content in books, It's familiar and simple while allowing a good level of organisation. It also forces you to keep the wider organisation of the content from going out of control. I feel that adding an extra layer of chapters would break this simple relation to books. On top of that there will always be someone that wants an extra layer, no matter how many layer are implemented.

I do understand the need for an extra dimension of organisation/categorisation through which will be added by the attribute-value system proposed in #48.

I'll keep this issue open and also I'm open to further discussion as the community may have a very different opinion to me but I do really like the core Book/Chapter/Page structure of BookStack.

@nwalke

This comment has been minimized.

Contributor

nwalke commented Apr 7, 2016

We definitely like the Book/Chapter/Page structure. This is why we're using BookStack.

@ducheneo

This comment has been minimized.

ducheneo commented Apr 7, 2016

Hi Dan, I can understand your point of view.
The point is that the nature of our documentation is deeply hierarchical, and 3 levels of grouping would be more appropriate. The display of the navigation tree could remain unchanged, by replacing the collapsible with "number of page" with the sub-chapter title. And if most people find the actual structure fine, adding the extra level as an option could satisfy everyone (but certainly tricky to implement).

@cpressland

This comment has been minimized.

cpressland commented Apr 12, 2016

Well, this is an awkward one. While I love the idea of being able to have chapters within chapters, I imagine it'll quickly become as overly complex as Sharepoint or a Filesystem. The current system forces the people and teams adding content to BookStack to be creative, rather than ending up with one page in a large number of chapters.

[book]Products > [chapter]SomeApp > [page]SomeContent
[book]Products > [chapter]SomeApp > [sub-chapter]Version 0.0.1 > [page]Changelog
[book]Products > [chapter]SomeApp > [sub-chapter]Version 0.0.2 > [page]Changelog

vs

[book]Products > [chapter]SomeApp > [page]SomeContent
[book]Products > [chapter]SomeApp > [page]v0.0.1 - Changelog
[book]Products > [chapter]SomeApp > [page]v0.0.2 - Changelog

Personally, I'm happy with the current design. Maybe a tagging system would be better for this? I'll ask a few people in the office for their opinions on this and report back.

@cpressland

This comment has been minimized.

cpressland commented Apr 15, 2016

Maybe we should be considering "sub-chapters" as "paragraphs".

So you have a Book for an Application Support Team, inside you have Chapters by product type such as "Financing", inside "Financing" you can have Paragraphs such as "QuickBooks" or "GnuCash" and then Pages inside said Paragraphs.

For what we're using Bookstack for at the moment, this'd probably fit quite well. I've sat down with a few people and the general consensus is this is what we want going forward.

@riorii

This comment has been minimized.

riorii commented May 13, 2016

+1 with having 1 sublevel more. Like Subchapters. 1 sublevel more would be sufficient.

@fredericmohr

This comment has been minimized.

Contributor

fredericmohr commented Jun 6, 2016

I'm not sure if another sub level is such a good idea as, but what might be a good idea is to have the option of displaying only part of a page directly and have the other parts in different sections (sort of virtual pages inside a page).

[book 1] -> [chapter 1] -> [page 1]
If [page 1] get's really long, show everything just before the second [h1] headline and include a pagination. It would still be possible to load everything at once and handle only displaying the content via javascript. That would make it easier to structure content into sections using headlines without getting pages that are way too long.

This would also go great along with a table of contents feature (not a complete book toc but a per page toc). Just my 2 cents.

PS: Obviously this would have the downside of [ctrl]+[f] search not working as well, since only part of the content is shown. Maybe include a page search?

@AkibaWolf

This comment has been minimized.

Contributor

AkibaWolf commented Jun 30, 2016

+1 for paragraphs.

@zorobabel

This comment has been minimized.

zorobabel commented Sep 7, 2016

+1 for subchapters

My team is using Bookstack as wiki, I'm the admin and believe me, this feature will be useful because we have a lot of chapters and pages and it's becoming a nightmare...as @riorii said, one sublevel more will be sufficient.

@haynes11

This comment has been minimized.

haynes11 commented Dec 29, 2016

+1 for subchapters. I agree with your reasoning, and the fact that people will always want an "extra layer" but I think one sub-level more would solve a lot of the problems I have with using this as a wiiki.

@DeviantEng

This comment has been minimized.

DeviantEng commented Mar 2, 2017

+1 for one more level here; not asking for full on nesting, but just 1 more level.

EDIT: Maybe instead of sub-chapters/sections/paragraphs, another level could be added above Books; such as collections? Could possibly do that as tags. I.E., a collection (or tag) of ClientA, with multiple Books underneath for that client. Those Books would have the same existing (optional) Chapters and Pages.

@salmiery

This comment has been minimized.

salmiery commented Mar 4, 2017

+1 Yeah, it would be very cool to have more levels of nesting, maybe with the option to define what those levels are called per book.

+1 on DeviantEng on the level above for book collections. Would be cool to be able to group your books by category.

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Mar 4, 2017

Just as an update, Since it's almost been a year since my last comment, I am keeping this in mind as I'm refactoring any parts of BookStack and keeping entity references generic to help support more levels in the future. Then it'll be a case of just sitting down one weekend and finishing this off, Maybe once exports have been fleshed out and the search has been fixed (#271).

In terms of structure, A level above a book would be better to fit in with the understanding of the books/chapter/page structure but from an app/coding/architecture point a lot has been built around books being the top of the chain so it would require more effort.

@shelbyallen

This comment has been minimized.

shelbyallen commented May 9, 2017

As mentioned in #337, I think that the concept of "book shelves" would be a really nice way of achieving this extra level of categorization without straying too far from the simplistic nature of BookStack. Having this extra level would be a great way of being able to link users to a specific set of books that are closely related.

However, if this is difficult to achieve from a coding point of view, perhaps an easier approach to this might be to allow applying tags to books in the same way that these can currently be applied to individual pages?

@mardeu

This comment has been minimized.

mardeu commented Jul 27, 2017

+1 for subchapters too

@VyBui

This comment has been minimized.

VyBui commented Aug 17, 2017

+1 for subchapters

@Starow

This comment has been minimized.

Starow commented Sep 28, 2017

+1 to be able to regroup books into bookshelves 👍

@Ethanb00

This comment has been minimized.

Ethanb00 commented Sep 28, 2017

-1 for subchapters (I think it breaks the elegance of the existing structure)

+1 for bookshelves

@genxlee

This comment has been minimized.

genxlee commented Nov 8, 2017

+1 for subchapters

@CodeBrauer

This comment has been minimized.

CodeBrauer commented Nov 15, 2017

What about ordering/sorting pages/chapters? Issue #257 may be closed but ordering pages is still an issue. I saw there is already field "priority" in the pages tables, but I think there is no option to set it?

Nevermind. It's just Books > "3 Dot menu" > Sort

@AbijeetP

This comment has been minimized.

Contributor

AbijeetP commented Nov 30, 2017

Would prefer bookshelves myself.

@snics

This comment has been minimized.

snics commented Jan 22, 2018

+1 for subchapters

@johnnyjosefsson

This comment has been minimized.

johnnyjosefsson commented Jan 24, 2018

+1 for bookshelves (and permissions on those)
-1 for subchapters (if choosing is needed, otherwise both)

@pierre-le

This comment has been minimized.

pierre-le commented Mar 12, 2018

+1 for either bookshelves or subchapter, this is merely a semantic issue.
This feature would be great, especially when Bookstack is used in company environments where you need to manage and categorize massive amounts of knowledge.

@d-sko

This comment has been minimized.

d-sko commented Apr 30, 2018

bookshelves and subchapters are both very useful. But if I had to choose, bookshelfes would be more important to me. I also like @fredericmohr´s idea of adding a pagination for head tags (could be done similar to mediawiki, where a pagination is generated if there are more than n headings), which could be a replacement for subchapters. oops, just saw that this is already implemented

@mendiromania

This comment has been minimized.

mendiromania commented May 3, 2018

+1 there's no reason not to gonna make my own clone with it

@iBooster

This comment has been minimized.

iBooster commented Jun 17, 2018

I support this idea. But instead of an subchapter, i like the idea of bookshelves/collections. I use Bookstack for writing down stuff from university. And it is horrible to sort it like i need it. I would just need that one layer more to get out of the chaos. (I have a book for every main topic, then inside the book i use chapters for the main chapters in this topic, but one chapter has more than 50 pages with at least a minimum of 3 different subtopics. So this is chaos. I could do this all in different books, but then there is no red line anymore to learn them, i have to re-sort them, everytime i want to learn an old topic)

I would also like to know what going on now with this topic. It is now 2 years old, so many people want this, nobody is against this idea... so what is going on?

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Jun 22, 2018

@iBooster This issue is not being ignored, I promise. It's just that this is no small task and will require a lot of fundamental re-working of BookStack to be done properly due to the core role that Books currently play.

Time is not free, All contributors are helping in their own time. As per the latest blog post (Next steps section) I am looking to plan out how to go about this as part of this release cycle.

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Jun 24, 2018

I've been thinking about this a little more, Thought it would be good to plan out a proposal. I've got some time off in a couple of weeks where I could crack on to get this done. Here's the proposal:


BookShelves

  • Sit above Books in the hierarchy.
  • Can only contain Books as direct children.
  • Many-to-many relationship with Books so a single Book can be part of multiple BookShelves.
  • Will have a name, description, tags & cover image like Books currently have.
  • Will have permissions but they won't dynamically cascade down (By maybe have an option to apply shelf permissions to all included Books).
  • Accessible as a header link as Books are now.
  • Will have homepage option of BookShelves listing.
  • Will be optional at a system level (Either through permissions or direct setting).

I thought the many-to-many relationship would give BookShelves a unique ability, rather than being a clone of the Book entity. It's like how, in the physical world, you could have copies of a Book on different BookShelves.

Any feedback on the above is appreciated.

@iBooster

This comment has been minimized.

iBooster commented Jun 24, 2018

That would be awesome!

@Abijeet

This comment has been minimized.

Member

Abijeet commented Jul 2, 2018

@ssddanbrown - A few questions / notes,

  1. Bookshelves will not be mandatory. Books can exist without being on a Bookshelf? I see you mentioned - Will be optional at a system level but does that mean that even with that option turned on, I can have books outside a bookshelf?
  2. How about my existing book level permission? Assume that they'll remain as is?
  3. The existing books listing will mention the name of the parent bookshelf if applicable?
  4. Export a bookshelf?
@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Jul 29, 2018

Sorry for my late reply @Abijeet.

  1. Yeah, At least initially, Definitely by default to allow forwards compatibility of how things currently are. You thinking we should have an option to force Books to be within BookShelves? Is a good idea I suppose if you wanted people to stick to a structure.
  2. Yeah, Book permissions, and everything below, will remain as-is.
  3. That would be good although we'd need to limit it or have a nice way of displaying this since the relation will be many-to-many.
  4. Yes, although may omit this for the initial release just to get this feature out.
@aljawaid

This comment has been minimized.

aljawaid commented Jul 29, 2018

@ssddanbrown

My input.... (using bookstack for a very small business how-to manual)

Bookshelves makes sense to be added as a feature. It should NOT be mandatory, as some books (supervisor/manager only) can be offshelf whilst staff books can be on a bookshelf. Hope that gives you an idea. Then again, some could argue that have a supervisor-only bookshelf. That could work too.

Having access to a bookshelf should be optionally password-protected.

Would be good to have the related books listed in a popup (if too many) but all related books should be mentioned.

Exporting of a bookshelve would be fantastic, with a exported list of books and then the option to print them in order into a single pdf (so bookshlelf + books = one pdf)

@msaus

This comment has been minimized.

Contributor

msaus commented Aug 3, 2018

nice :)

@ssddanbrown ssddanbrown referenced this issue Aug 4, 2018

Merged

Bookshelves #947

9 of 9 tasks complete
@kmoj86

This comment has been minimized.

Contributor

kmoj86 commented Aug 4, 2018

@ssddanbrown

Interesting idea. adding one more level of depth might help organization more.
one suggestion though: bookshelves should accept pages directly without requiring it to be part of a book first.

here's how I'm thinking of applying this in my department so you might get a better view of my idea:
we are a small IT department. I'm trying to centralize our documentation papers using bookstack.
so I'm thinking of having one shelf for the networking team, one for sysadmin team, one for helpdesk team and so on.
a number of subjects don't need more than one paper, and not all subjects are related to be grouped into one book or chapter. so having pages alongside books on bookshelves might make it better for not having to use books for every little subject just so you can add it to a shelf.

that's my feedback. hope it helps shape the idea further. 😃

@nvnvnvnvn

This comment has been minimized.

nvnvnvnvn commented Aug 8, 2018

Any reason not to add another layer at the same time?...Could have Bookcase, then bookshelf, then book, chapter, pages.

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Aug 8, 2018

@nvnvnvnvn Yeah, Extra build effort, extra systems to maintain, additional system and UX complexities, Extra testing needed.

I've given my thoughts on extra levels in general here:
#95 (comment)
For BookStack, I do think there should be a limit. Someone will always want 'one more level'.

@carlospauluk

This comment has been minimized.

carlospauluk commented Aug 17, 2018

Ok, but what about an index for page sections?

@mendiromania

This comment has been minimized.

mendiromania commented Sep 8, 2018

working demo for those who can't wait
https://github.com/mendiromania/BrainStack

run this sql
https://gist.github.com/mendiromania/e323f6532531d9cf125e8f9b33c6067e

and in books manually update the bookshelf_id with the id of the bookshelf

edit:
added a migration for the sql and a bookshelf option in the book editor
Demo

@guyinpv

This comment has been minimized.

guyinpv commented Sep 11, 2018

I was just editing my books and thinking, it would be cool to have bookshelves once you start to get a lot of books. Then boom I see this on the roadmap, excellent!

To me, the shelves are little more than a folder system. I have a lot of books, so now I just want to organize some books in this folder and some in that folder etc. But keeping with the theme of Bookstack, I though, bookcases. It's a logical thing to do.

Like others have said, a bookcase in my home can hold anything, so maybe it can hold books, but it could also hold directly, just pages.

For permissions, it's obvious things like, access to the entire book case or not. But then this could get tricky if you allow a book to exist in multiple bookcases. Existing in multiple places sounds more like tags and categories, not necessarily bookshelves. Maybe bookshelves themselves can have a reference system.

In real life bookshelves could categorize books alphabetically or topically. For BookStack, you could have a structure like this, it could even be auto-generated based on alpha, or based on tags.

I think most use cases would have shelves relating to departments in a company. The IT dept, the media dept, etc. But automatic shelves would be a neat concept. A bookshelf for all books and pages created per-user. This is Zack's shelf, for example. Or shelves based on tags or alpha as mentioned.

The bottom line is, after only about 9 or 12 books, it's already a bit much to look at. At the very least I think after about 12 books, the grid view should get smaller. Instead of 3 blocks wide it could adjust to 4 blocks wide with smaller thumbnails. Maybe even 5 blocks wide if you have over 30 books.

OR, do the shelves, but it must be visually pleasing to do shelves. The whole idea is to reduce visual clutter and make it a little easier to browse books. We should still have a "view all books" view, just to avoid clicking in and out of shelves, kind of like looking at my Amazon Kindle, you can view the entire list of books, that should always be available. But shelves could simply be an alternative to grid and list view for those of us who want to organize our books into "folders".

@ssddanbrown ssddanbrown self-assigned this Sep 20, 2018

@ssddanbrown ssddanbrown added this to the BookStack Beta v0.24.0 milestone Sep 20, 2018

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Sep 20, 2018

Just to provide an update, I'm coming to the final steps of the build of this in #947, Just have to implement some testing. I'm hoping I can get this done and then wrap up the next release by the end of this weekend.

Please note the initial release with bookshelves will be focused on the core functionality as in my proposal above, Most of the design and UI is simply copied from the 'Book' UI.

I plan on doing a UI update soon after which should provide bookshelves a slightly more unique & focused design & user-experience. This will also aim to improve the efficiency of the UI in many areas so may align it closer to what you are thinking about @guyinpv.

I'll have a think about having pages within a BookShelf. If this is something you want please create a new issue for it for more focused discussion.

@ssddanbrown

This comment has been minimized.

Member

ssddanbrown commented Sep 21, 2018

#947 has now been merged into master so I will now close this pull request. As my message above, Expect a new release soon with Bookshelves included.

@willc

This comment has been minimized.

willc commented Dec 2, 2018

It looks like Shelves were implemented since this thread was closed, and that puts BookStack on par with OneNote as far as levels of categorization/organization go (not that we need to compare this to OneNote, necessarily).

But after using this app for a few days and starting to port over years of content from OneNote, I am thinking that just one more level of depth (sub chapters) would make a huge positive impact on being able to organize everything just so.

I don't think it needs to become a slippery slope towards supporting/coding infinite levels of content. But based on all the comments and support for just one more level above, I think it would be a really good feature to have.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment