About this subject I have the following to say (note: some stuff may be repetitive to what has been told, I'll try not to repeat):
I like this idea, I agree it should be an option in the UCP and in the ACP.
The options for both ACP(forum specific option perhaps... One forum has infinite scrolling and other not) and UCP should consist in:
(Always/Press To Load/No) infinite down scrolling
(Int) Max number of posts in page. This number must be >=3 where any other number means infinite (translated to 0?) (ignored if upper option is N)
Extra: Should we differentiate anonymous from the registered users?
The next posts should load when the user is viewing the last post (or the post before that), not when reaches the end of the page.
There should be a page scroller somewhere. That page scroller would be a div fixed to the screen (position:fixed;) in a convenient place (on the left of the screen, perhaps...) and it should be thin, only with the buttons to access the pages that are currently loaded. It would be a convenient overlap to the page itself to help the scrolling.
imkingdavid wrote:
Edit: In terms of pagination, I think this should be used alongside pagination. Here's what I mean: In Microsoft Word, as you scroll, the page number in the bottom of the program updates with the appropriate number. I think that it wouldn't be too difficult to do so by using spans or divs with page number ids (e.g. <span id="page-number">#</span>
, where the # is the page number. These are hidden via CSS from view (visibility: hidden, rather than display: none, since items with hidden visibility are still there in the page source and can therefore be used by jQuery) and then as the page scrolls by them, jQuery grabs the automatically updates the page number shown as active in the pagination (which would now have to have an alternate positioning, I think). Of course I may have a fundamentally incorrect idea of what is possible with jQuery, so this may or may not be a possibility. Please let me know, if so.
This can actually be also a good idea. Something below, near the bottom of the screen
I don't really know how to implement that using jQuery but I do know that is possible I don't know if it's with divs. Anyway, Js does not care about the CSS, for the js, visibility:hidden or display:none or display:block, etc... are all the same. As long as the node is in the DOM it's treated the same way.
We should also alter the url as the user scrolls the page.
This ?f=108&t=42113#p231603 identifies a post in the page and then, as the pages change, it becomes this: ?f=108&t=42113#page=3. The user can use the back and forward of his browser to navigate between all loaded pages. Also, with this, he can use the link in the title of the post to jump between two different posts in the same page (if they are both loaded at the same time)
This should apply to all pages where pagination and scrolling exists (as stated in the OP post).
imkingdavid wrote:
Edit: Alternatively, we could have the footer in a fixed div or semi-fixed div (aka fixed after a certain point on the page, like in the Bug Tracker) so that it can still be accessed even when more posts are loaded behind/below it. Does that make sense?
Yep, a lot. But I believe I have a better one:
Make The page footer with that concept of smi-fixed with an arrow to make it hide. Make a small icon for an arrow or an 'x' or these: "«" in a vertical way. This way we can navigate though the page with no cutting from the top or the bottom, open the footer to view it when we want. I believe that is the best option. Make a cookie to save whether it should be opened or closed by default (checkbox in the footer?)
I really agree that, not worrying to execute use the template at all is a great relief to the server. Making a JSON string form data from the DB is much, much easier than the full HTML. With some simple Javascript we can make new lines of posts on the fly. (for posts, as an example) Just make one post an Object and it even makes more sense and better workable. Creating the object, makes the post. Deleting the object, deletes the post (in the view, ofc).