denny/ShinyCMS

View on GitHub
docs/TODO

Summary

Maintainability
Test Coverage
ShinyCMS TODO
=============

An incomplete list of features and functionality that we'd like to add to 
ShinyCMS in the future (short or long term).

[ Key: * is (more or less) working, + isn't finished, - isn't started ]


+ TESTS
    - There is huge scope for improvement in the test suite
    
* Top-level / site-wide features
    - Open Graph metatags: http://ogp.me
    - Rewrite tasks to read config and access db model directly rather than 
        loading the whole Catalyst app into memory
    + Redo existing pagination to use Data::Page instead
        + (Shop already has this, Blog/News/etc need it)
    + Improve error-handling (coverage and UX)
        - Catch 500 error when admin adds user with duplicate username
        - Catch 500 error when admin adds page with duplicate url_name
    - Refactor larger controllers into sub-controllers (e.g. Shop::Item)
    - Refactor CmsPage, ShopItem (etc?) to inherit from a BaseObject ?? 
        (which has BaseObjectElements)
    + Nicer test data for blog posts, news items, pages, etc
        + Use excerpts from Little Brother (CC-licensed)
            - Check to see if anyone has created in-universe websites we can use
    - Background task to delete stale registration/reconnect codes (etc?)
    - Add config options to enable/disable each top-level feature
        - Use that to turn on/off menu items
    - Better handling of user-uploaded images (profile pics, event logos, etc)
    * HTML filtering for user-submitted content
        - Per-site configuration of allowed tag+attribute list
    - Move back-end menus into controller template folders?
        - Automatically find and render admin menus for each controller
            - Need some way to configure order
    * Search
        + Add search method to each controller, combine results
            + Build links in controllers, not in template
                - Or in model?
            - Automatically find and call search method for each controller
        - Move search methods into model rather than controller?
    * Tags
        + For all resources - news item, gallery image, shop product, etc
    - Ensure graceful degradation anywhere JavaScript is used
        - jQuery date-pickers
        - WYSIWYG editor
    - Look at ways to make Model fatter and Controllers thinner
    - Support for multiple sites from one instance

* CMS Pages
    - Better handling of sections - current compulsory 2-level URLs are non-ideal
    - Access-controlled sections/pages (intranet / members-only areas)
    - Better interface for setting section and page order
        - Multiple-select widget with up/down buttons?  Drag n drop?
    - Handle page template changes - add any extra elements needed
    - Allow page admin to delete page elements
    - Allow template admin to edit template element names
    - Allow template/page admins to edit element order
    - Per-section and/or per-page edit/admin ACLs
    - Full reversion history for page edits
    - Clone page
    - Clone template
    - Configurable redirects?  ( /pages/is/old => /pages/is/new )
    - Screenshot of page layout on edit page, changing with template selection
    - For page add/edit, it would be nice to read in the page-element names 
        and types from the template file instead of from the database
    - Change HTML editor to NicEdit ?
        - Inline editing ??

+ Form Handlers
    - Disable form

+ Newsletters
    + Create and edit mailing lists
        - Export as CSV
        - Import from plain text file
        - Export as plain text
    - Pass results to site-wide search
    + Public-facing subscription process

+ File Manager
    - Delete files
    - Improved UI for direct use (currently designed to work within CKEditor)

* User area
    - 'Remember me' - stay logged in across sessions
    - Monitor for repeated login or reconnect failures, might be an attack
        - Block access to that IP address?
            - Admin interface to view/add/remove IP bans
    - Extend and refine role system into ACL system
        - Roles should be fully editable, giving fine-grain control of their 
          capabilities (which relate to CMS features, e.g. 'edit page')
    - OpenID integration
    - Supply search results to site-wide search

* Tags
    * Tag cloud
    - Advanced search (AND/OR) (etc?)
    - Provide results to site-wide search

* News
    - Pagination
    - Future-dating (same as for blog posts)

* Blogs
    - 'Skip to [Month YYYY]' drop-down menu
    - Twitter announcement of new posts
    - Multiple single-author blogs
    - Multiple-author blogs
    - Trackbacks
    - Pings
    - rel me="" ?
    - Prev/next month/year navigation should cut off at current month/year

* Discussions
    * View comment thread
        * Same thread can be attached to multiple resources - blog posts, 
          polls, images, etc
          - Create some sort of UI to manage this
        * Reversible thread order (useful for adding chat 'wall' to user profiles)
        - Collapse deeper comments in longer threads
            - Make definitions of 'deeper' and 'longer' configurable
    * Add comment
        * Email owner of item being commented on (blog post, comment, ...)
        - Inline comment forms
        - Log in while posting comment
        - Preview before posting
    - Edit comment?
        - Admin
        - Author
            - Short grace period for spelling fixes, then lock?
                - Lock as soon as anyone replies
    * Delete comment
        * Admin
        - Author
    - Flag comment as spam
        - Track spam IPs and block
        - Link up with blogspam.net or spamicity.info ?
    - OpenID

+ Forums
    - Jump to first unread comment in thread
    * View posts by tag
    + Pagination

+ Polls
    - Add / Edit / Hide / Delete
    * View & vote
        - Embeddable pollbooths for use on CMS pages or in sidebars
    - Supply search results to site-wide search

+ Events
    + Display events
        - Calendar view
    + Display event
        - Provide 'add to GCal' link
        - Provide 'add to iCal' link
        - Provide 'add to Outlook' link
    * Add/edit events
        - Add event to Facebook via API
    - RSS feed
    - Recurring events
    - Per event mailing lists ?

* Shop
    + Catalogue
        - Specify order products display in
        - Product 'more info' pages
        - Featured items / Special offers
        - Related items
            * Manual config, or 'people also bought'?
        - Top selling items
            - For whole shop
            - Per category
        - Storefront (default shop page - special offers, featured items, etc)
    + Basket
        - Saved baskets
            - Wishlist
    + Checkout
        - Credit card payment processing
            - Sage Pay (was Protx)
            - Worldpay
            - CCBill
            - etc
    + Orders
        - Customer
            - View previous orders
            - View outstanding orders
                - Cancel order
        + Admin
            - Search orders
            * Cancel orders
    - Digital downloads (PPV etc)
    - Paid mailing list subscriptions
    + Stock control
        + Live stock levels on site

- Galleries
    - Support image and/or video content
    - Tagging
    - Batch uploads
    - Supply search results to site-wide search