I'll write up a feature list when I have the time to sit down and brainstorm with a clear head, but at the moment I'm swamped with moving out of my house, optimizations for Lemur, and quite a few other things. It's best to understand the way Lemur is structured to perform first before understanding how the "feature list" is made up.
Basically, there are four main elements that will make up the released version of Lemur.
- User Framework (expandable, flexible)
- Lemur Template Engine
- Component System
- Module System
ComponentsComponents are like integrated web applications. They use the core as a backbone to provide services like forums, blogs, and other more extensive additions to the site, including something like a private messaging system. The user framework can be considered one Component, although, Components are not so permanently integrated. Components support their own modules as well.
Permissions are not incredibly extensive at the moment but right now I have the user framework running with Titles. Pages are viewable depending on the user's titles or session status (logged in, logged out). Pages can support logged in users, logged out users only, or both. The same will go for the different aspects of the components and modules. "Titles" are pretty much usergroups in the sense that permissions can be set for them and that they're not restricted to one user. The difference is simply that a user owns a title, as opposed to a usergroup containing members.
For a blog component, this could be taken advantage of by adding titles like "Blog Admin", "Blog Author", "Blog Category Manager", "Blog Moderator", and maybe some others. A Blog Author could author posts (of course), a Blog Category Manager could edit, delete, rearrange, add, etc Categories (of course), a Blog Moderator could delete or edit posts, and a Blog Admin is a Blog Moderator with the ability to change settings.
MrAuthor01 could then be a Blog Author and a Blog Category Manager, and you could be a Blog Admin, Blog Author, and Blog Category Manager.
In the private forum example you mentioned, all users could be fitted with Forum Reader, Forum Poster, Forum Thread-Starter, and Gallery Viewer titles, a category with their Username could be created in the Gallery, and Forum components, and a tag could be created with their username in the Calendar component; All done when the user registers is approved. Your clients could then be restricted to only viewing their forum and gallery categories (with the exception of public categories), and Calendar events with their username tagged (else, displays event as "Busy").
General photography categories could be in place and permissions for them could be configured to support a number of different options. Read/Post New Topic/Post for logged in users only, Read Topics/Posts for logged out, and all for logged in, etc. Either that or something like a Support Ticket component would suit you much better, along with the forum component. It would essentially be exactly what I described, except all those features would be native and not incorporated via modules or source modification.
ModulesThe module system extends from the core and from components. Modules are simply little widgets, features, or dynamic items that make up your website. A great example of a module would be a SAX module. A simple chat widget for your site. A few more examples: simple calendar (widget type), notifications (displays a notice at the top of the page; for announcements, alerts, etc), menus, usergroups, user titles (kinda like usergroups), simple blog, and maybe twitter widget. Basically a module is any add-on that extend's its base to add new functionality. For instance, one could actually build a forum component by installing a few modules ontop of a Blog Component.
Modules that are associated with a specific component extend the component, and not the core, cannot be added unless their component is installed. They're dependent on the component. Modules either extend the core or a specific component. Any module that was written for a specific component cannot be used by a component it wasn't made for. So, extensions extend modules, modules extend components, components extend the core. Pages that mainly utilize a certain component can, however, utilize modules that aren't related to it. What I'm getting at is that if you had a SAX module that extended the core, you could have it on any page that you wanted to. Including your forum component pages. But it is not considered apart of the forum component, because it doesn't utilize the forum component, and it still extends the core.
Also, upon Component installation you can choose multiple modules that you want to be installed at the same time, so it saves you some steps
Multiple instances of components and modules are supported. In the case of two modules they will share the same exact files unless a replacement is found for that specific module.
Module_A pk1 (pk=private key) and Module_A pk2 both exist under the same installation. The different between the two is that Module_A pk1 uses a modified logo.png, and Module_A pk2 uses a modified Module_A class.
So vanilla Module_A is installed. Module_A pk1 has its own /modules/Module_A/pk1/logo.png and Module_A pk2 has its /modules/Module_A/pk2/init.php
They both utilize the rest of the vanilla version and only two new files were created for both instances, instead of double the files.
Lemur's structure can be illustrated like so:
Core/User Framework/Template Engine
All components, modules, and extensions are available in a cloud repository. You'll simply navigate to your Components page, click "Add Component", browse the categories, click "Add" on the one you want on your system and it's done. You may have to go through some config steps depending on the component, but the installation is quite painless and will integrate seemlessly with your installation. The same goes with modules. Almost as easy as just dropping the files on the server, except not... because it will do that for you
Essentially, the main installation is completely barebone and empty, with nothing except for a user framework component, until you choose components and modules that you want to add to build up your site. With the barebone core, you're able to add/edit/remove parent and sub pages, etc... change user permissions, and all the normal CMS things. But the main functionality and purpose of Lemur is to give the ultimate power of extendability and system integration in the form of an "Add" button in the Components or Modules pages in the ACP. All components and modules are stored on a cloud, waiting to be installed instantly. That is the vision of Lemur.