peakpg edited this page Mar 20, 2012 · 18 revisions
Clone this wiki locally

A place for simple ideas/wishlist items. Use Proposals if you have a more complex or detailed idea.

Possible Features

A quick list of ideas for features in future versions.

  • Do necessary steps to allow for a public demo. (Liquid templates, disabling portlets)
  • Make it easier to host on shared hosting (subdomain) and/or Heroku.
  • Update the UI to allow for more modular expansion (It should be easier for devs to add new elements/menus)
  • Treat Blocks like Pages (allow blocks to have paths and templates without needing to be manually embedded into pages)
  • Allow Template Assets (css, js, images) to be managed via the CMS (with WebDav)
  • Use Paperclip for file management (Must handle versioning of uploaded files that core attachments does)
  • Database Backup & Restore
  • File Caching – Allow publically accessable files to be written out to page cache (to be served by Web Server
  • Use standard Authentication tools (We are using an implementation of Restful_Authentication)
  • Create/build module for CKEditor to allow linking to pages
  • Provide a UI to allow modules to be configured
  • Forking Templates – Allow developers to store templates in the VCS (Git,SVN) for a project. Allow editors to ‘fork’ those templates via the UI to tweak things. Keeps the original copy, but allows for reverting to original (i.e. if a ‘bug’ was fixed’)
  • Contact Form Module – Easy out of the box contact form module would be great.
  • Become a User – Allow admins to ‘become’ another user for all intents and purposes, to faciliate testing of user experience behavior without asking for passwords. Need to retain a way to ‘revert’ to yourself.
  • Modify Content Types – Need a way to more easily add/edit/remove fields to existing content types for project. I.e. Starting with the ‘News’ modules, we want to add new field to a News item.
  • Summarized Checkbox Widget – Useful when there are a lot of possible choices, but either few or many selected. Shows a summary of what has been selected, with a button to click for more. Used for categories, permissions, visibility (I.e. public, hidden). Possible wordings: “Can see ‘everything’”, “All sections except A, B, C”, “Can’t access anything”.
  • How can we reduce the number of portlets required for a module. For instance, in bcms_news there is a ‘Recent News’ and ‘News Archives’ portlet which differ mainly by their params and views. Could these be combined if they had a ‘view selector’ (i.e. Flat List vs Grouped by Month?)
  • An ‘Annoucements’ modules – Every blog post might also have a twitter post and/or a post to the mailing list. This is currently duplication, when the blog should be the primary source.
  • Moving content between servers – I would be nice be able to generate content locally, have it create a migration, then be able to cap deploy:migrations to a staging or production server.
  • Group Types aren’t really more useful than a String.
  • Need a cms_check_box_group widget (with check_all, check_none)
  • Permission Sets – As permissions get more granular (i.e. Create Html, Delete Events), we should add the concept of ‘Permissions Sets’ that could group up useful permission to limit the checkbox nightmare that might otherwise arise. Provide a way to ‘dig in’ set when assigning them to a group.
  • Make Block#save work exactly like AR, so coding APIs is more consistent with AR [I.e. Published is default state). UI can still default to making blocks save in draft mode.
  • Make it easy to create factories (factory_girl) for content types.
  • “Google Page Speed”http://code.google.com/speed/page-speed/ Module
  • CI Server for Project – Hudson, etc
  • FCKEditor – Allow the following to be configured through the UI, Adding Styles, choosing buttons to appear. Also, automatically pick up the site/themes stylesheets (requires Proposal : Improved Theming to work.)
  • CK Editor – Make linkpicker for CKEditor work, which would allow us to deprecate the FCKEditor module.

Cache Unsafe Portlets

It is possible to write portlets that are not safe to use with the page caching mechanism (i.e. personalization). You can place these portlets, but you have to manually remember to turn off the page caching. Should add a flag to portlets that can be used to mark them as ‘do not cache’. This portlet flag would allow the containing page to automatically turn off its caching behavior when it holds a portlet that is marked this way.

This would likely lead to less frustrating for developers trying to use portlets from other modules, where they don’t quite know the details of how they work.

Real Multi Language Support!

  • Setup/define locales
  • Have one content element in different langs [en, fr, de, it] …
  • Easy routing like /en/home
  • Have translated routes

Improve DSL for creating content types.

Basically a hit list of code changes to make:

  • Remove the need for a separate group_type table?
  • Improve the DSL for creating new instances of groups

# Something like:
group = Group.create!(:name=>"Marketing", :can_view=>:all) # or :none

Skeleton Key/Central Admin Database

WordPress has a plugin for allowing staff to login as a particular user (http://wordpress.org/extend/plugins/skeleton-key/). This concept might be useful to allow a web developer who is supporting multiple client installations. This might be a central authentication system which would allow the developer to log in with a single user account, rather than having to explicitly create multiple accounts in each CMS installation.

URL Shorteners

A CMS might usefully provide some automatic way to support integration with URL shorteners. See issues outlined here: http://joshua.schachter.org/2009/04/on-url-shorteners.html.%3C/p