denny/ShinyCMS

View on GitHub
docs/Changes

Summary

Maintainability
Test Coverage
ShinyCMS Changes
================

This file vaguely documents the revision history for ShinyCMS.  Newest items
are at the top.

2019-09-03 (v19.9)
    - No breaking changes this month (I hope!) :)
    - Restored get_posts() method in Blog controller (used by some live sites
      to embed a list of blog posts in sidebars or CMS Pages)
    - Finished implementing the Paid List feature
    - Added recent blog posts and recent news items to sitemap
    - Refactored get_tags() methods to do more work in database and less in Perl
    - Refactored build_url() and search() in Discussion to remove duplication
    - Update Forums code to use DBIC pager instead of hand-rolled pagination
    - Refactored some recurring redirect patterns into methods
    - Updated the search() methods in various controllers to be more consistent
      with each other
    - Changes and additions to demo data to exercise more code branches when
      running the test suite
    - More tests - all the controllers now have at least 80% test coverage!
    - It's my birthday today :)

2019-08-21 (v19.8)
    - Test coverage is now over 80% for the whole project.
    - Test coverage for each of the Admin area controllers is also 80% at
      minimum now, with 6 of the 13 having 100% test coverage.

2019-07-10 (v19.7)
    - BREAKING CHANGES:
        - Refactored code for updating mailing list subscriptions.
            - No database changes, but HTML, TT, and Controller all changed.
            - If you haven't edited root/newsletters/lists.tt for your site
              then you just need to replace it with the new one at the same
              time as you replace lib/ShinyCMS/Controllers/Newsletters.pm. If
              you have edited the template then then you need to port your HTML
              changes into the new template, or port the new TT code into your
              modified template, before updating the controller.
            - There is some new CSS to support the default/demo site templates
              for the subscriptions page.
        - Refactored blog and news controllers and templates to use built-in
          DBIC pager rather than the previous hand-rolled approach
            - You will need to update your templates to incorporate the new TT
              code, or vice versa, at the same time as updating the controllers
        - There are a few other CSS changes for pages other than the
          mailing list subscriptions page.
        - The main.css file has also been re-ordered, so it may be hard to pick
          out the changes in this release - sorry! Hopefully the new order will
          make this easier in future though.
        - The config variable name for how many items to display on a page on
          the main site has been changed (from a few different variable names,
          but mostly posts_per_page or items_per_page) to be page_size
          everywhere - this is now consistent with the controllers and config
          for the admin area. A new top-level config item has been added for
          setting the default, which can then be overridden on a per-controller
          basis as desired. Your config file will very probably need updating
          if/when you update any of the main site controllers.
        - In general, various new config options have been added in the last
          few months. The config file has also been re-organised so it will
          unfortunately be hard to get a useful diff against your existing
          config. Make a fresh copy of the default file and edit your site's
          config back into it to make sure you get all the new stuff!
    - ALSO IMPORTANT
        - If you are using the CCBill access subscription payment handler,
          please test it thoroughly after updating it, as it did get refactored
          to support more thorough testing (coverage is now 100%!). I'm fairly
          sure that there were no changes to existing functionality (other than
          returning more useful errors in a few places) but obviously your
          income stream is worth triple-checking.
            - This handler now attempts to fall back to matching on user email
              address if CCBill don't round-trip the shinycms_username properly
    - Other stuff
        - The main focus since the 19.6 release last month has continued to be
          extending test coverage - particularly for the Admin controllers. The
          coverage on roughly half of these is now 100%, along with two of the
          simpler non-admin controllers, the Access payment handler as mentioned
          above, and all of the DBIx::Class model and schema result files.
        - There has been some refactoring to support easier/better/more thorough
          testing, but most of it should have no impact on functionality.
          Replacing the admin area in one hit rather than piecemeal is probably
          sensible though - as mentioned previously there's a utility script
          which may help you with that process: bin/dev-tools/replace-admin-area
        - All tests should now 'tidy up' after themselves, so that each set of
          tests, and the test suite as a whole, can be re-run without resetting
          the database in-between test runs (as long as the tests don't die
          before finishing).

2019-06-09 (v19.6)
    - POTENTIALLY BREAKING CHANGES:
        - Moved admin controller minimum authorisation checks into base methods
            - This means e.g. Page Admins must _also_ have Page Editor role now
        - Added two new roles:
            - Fileserver Admin
            - Shared Content Admin
        - Added top-level page_size setting for admin area to
          config/shinycms.conf
    - Added an install.sh script that can be used for one-liner installs
    - Added poll admin area
    - Added delete feature to shared content area
    - Lots of work on tests
        - Added test coverage analysis via Devel::Cover
        - Added test_requires section in Makefile.PL
        - Fixed CircleCI config to use caching properly
        - Updated CircleCI config to report coverage data to codecov
        - Updated Travis CI config to report coverage data to codecov
        - Doubled test coverage - from just under 30%, to almost 60%
        - Changed the scripts that insert the demo site data so that they can
          be re-run without duplicating (or triplicating, etc) the demo data
        - Added more demo data for News section and for Fileserver features
        - Various utility scripts for running tests
        - Added test database config, invoked with SHINYCMS_TEST=1 env var
        - Added CircleCI, Travis CI, and Codecov badges to README
    - Created helper libs for tests and utility scripts, to make sure they're
      all using the right config and connecting to the right database etc
    - Rearranged code in controllers to be more consistent, moving
      private/utility methods to the end of the file
    - Started updating admin controller URLs to be a bit more consistent;
      in particular, various '/edit-[thing]-do' URLs have become '/thing/save'
    - Moved static resources for admin area into one sub-folder, for easier
      updating (and added a utility script to update the admin area)
    - Stopped explicitly setting wrapper in main site templates
      (select-wrapper.tt sets it for both admin and main site now)
    - Removed PHP examples from CKEditor code, to stop GitHub mentioning PHP
    - Lots of whitespace changes; sorry about that  :)

2019-05-04 (v19.5)
    - Version number bumped to use the 'Ubuntu' style (19.5 for May 2019)
    - Rather large gap since this file was last updated  :)
    - Over the last month the admin area and the default/demo site have
      both been re-styled, using modern HTML5 templates provided by
      open-source projects (thank you, CoreUI and html5up!)
    - License changed to 'the same terms as Perl itself', i.e. your
      choice of GPL v2 or The Artistic License.  Both licenses have
      been added to the docs folder, and the AGPL has been removed.

[ ... ]

2013-02-01
    - Update copyright notices and email addresses from 2012->2013
    - Update deprecated config key

2012-10-25
    - Fix title bug

2012-10-11
    - Change redirect after adding shop categories to be consistent with other
      admin features
    - Move insert-schema script into dev-tools folder and schema.sql into docs
      folder, to stop people who don't read the docs trying to use them during
      install
    - Add related_url field to news posts (for linking PDF press releases etc)

2012-09-14
    - Force URI-encoding of tags in URLs

2012-07-05
    - Fixes to ordering of tagged posts view

2012-06-25
     - Added teaser_image() method for use when displaying blog post summaries

2012-04-04
    - Fix bug triggered by deleting forum posts

2012-03-21
    - Allow templates to specify sort order when fetching recent items

2012-02-09
    - Moved developer utility scripts into dev-tools folder
    - Unique names for all database keys for Postgres compatibility

2012-02-08
    - Added sample config for nginx [Paul Webster]

2012-02-07
    - Update (c) dates and email address for 2012

2012-02-06
    - Updated docs
    - Added 'no content yet' warning page for fresh installs

2012-01-28
    - Fix incorrect new expiry date when renewing existing/expired subscriptions

2012-01-22
    - Fix bug with deleting 'liked' comments

2012-01-22
    - Fix bug adding elements to shop item types

2011-12-23
    - Update deprecated DBIC search syntax (-nest)
    - Add more dependencies to Makefile.PL

2011-12-20
    - Fix bug in paging of tag view

2011-12-19
    - Add payment handler for subscriptions via CCBill
    - More efficient element handling for shop (complex pages much faster now)

2011-12-13
    - Add affiliate ID tracking

2011-12-10
    - Use X-Sendfile to send files from authenticated fileserver

2011-12-06
    - New authorisation-checking code [from Tomas Doran]

2011-12-01
    - Separate out access control from roles
        - Add expiry dates to user access privs

2011-11-23
    - Allow comments/discussions on user profiles - aka 'wall'

2011-11-22
    - Change datetime fields to timestamp fields for postgres compatibility

2011-11-18
    - Add ability to hide shop items
    - DB modules all changed, due to upstream changes affecting autogenerated code

2011-11-13
    - Allow shop admins to add one-off elements to shop items

2011-11-02
    - Make shop recent items feed sort by date updated then date added

2011-10-28
    - Allow fetching of full tag list for shop items
    - Sort tags alphabetically (rather than asciibetically)

2011-08-29
    - Repopulate form fields when form submission/validation fails

2011-08-28
    - Move database schema deploy script to work via DBIC
    - Add 'likes' feature to shop items

2011-08-27
    - Change pages and events demo data scripts to use DBIC

2011-08-26
    - Add shop results to search feature

2011-08-22
    - Started adding support for product types in shop

2011-08-19
    - Add config option for whether comments are enabled by default in blog

2011-08-18
    - Add comments feature to shop items

2011-08-06
    - Add 'shared content' feature, for storing stuff you want to re-use
      across the whole front-end site (e.g. contact details in footer, etc).

2011-08-05
    - Add 'restricted content' feature, for members-only file-serving

2011-08-03
    - Tags on shop items
    - Tags on forum posts

2011-08-02
    - Pagination in shop (recent items and category pages) now working

2011-07-26
    - Split shop demo data out into its own insert script
    - Add 'recent items' page to shop
    - Add back-end support for paging to shop category view

2011-07-25
    - Add browser detection

2011-07-24
    - Rework CSS overrides to be additions rather than substitutions
        - Cut-down (and rename) font-size CSS example files appropriately

2011-07-20
    - Split shop admin features out into separate controller and templates

2011-07-15
    - List of recent forum posts to user profile page

2011-06-19
    - Add session timeout to configuration file

2011-06-13
    - Order forum threads by recent comment activity

2011-06-04
    - Add edit-post function for forum admins
    - Add sticky threads in forums.

2011-05-28
    - Add HTML filtering for use on forum posts and comments
    - Display most popular forum comment on homepage

2011-05-20
    - Allow template admins to delete elements from templates

2011-05-18
    - 'Like' feature for comments

2011-05-17
    - Canonical URLs for forum threads

2011-05-15
    - Fix for long-standing bug of unrequested menu_position changes

2011-05-12
    - Add demo data for forums feature
    - Add progress-indicator output to database build scripts

2011-05-10
    - Add hide option for comments
    - Handle cascade deletion of comment threads

2011-05-09
    - Improved user profile-pic upload process
    - Added style-switcher

2011-05-09
    - Display most recent forum comment on homepage

2011-04-19
    - Add forums

2011-02-22
    - Password retrieval feature

2011-02-15
    - Split out admin features and templates for Pages section

2011-02-08
    - Add feed importer feature

2011-02-03
    - Add 'send test' feature for newsletters

2011-01-19
    Add menu position to add/edit section

2010-12-27
    - Split out news section admin features into separate controller/templates
    - Start adding post-dating feature for news items (same as for blog posts)

2010-12-16
    - Add teaser method for news items

2010-11-23
    - Added user registration feature

2010-11-22
    - Improved UI in admin area (drop-down menus)    [Helen Lambert]

2010-11-18
    - Belated and arbitrary version number bump in honour of newsletters
    - Use FindBin in bin/* and tasks/* where possible

2010-11-16
    - Split user controller and templates out into admin and non-admin

2010-11-14
    - Improved appearance for admin 'list' pages for all sections

2010-11-13
    - Various improvements to newsletter section
    - Added 'tasks' folder for scripts which will be scheduled tasks (via cron)
        - Added tasks script to send newsletter mailshots

2010-11-10
    - Change default page selection when editing sections from text-entry to
      drop-down menu

2010-11-08
    - Add CSV upload feature for updating mailing list recipients

2010-11-07
    - Split newsletter controller and templates out into admin and non-admin
    - Add A/U/D for newsletters, templates, and mailing lists
    - Add 'view newletters' section on site

2010-11-04
    - Display default page for a section if no page is specified in URL

2010-11-03
    - Add newsletters section (for HTML mailshots)

2010-11-02
    - Add Markdown to suggested modules
    - Add commented-out markdown use to sample template
    - Fix default type for page elements in schema
    - Hide preview button until after pages are created

2010-10-23
    - Added admin UI for CMS sections (add/edit/delete)
    - Changed database utility scripts to pull connection details from conf file
    - Added 'getting started' documentation

2010-10-18
    - Started reorganising and expanding demo data

2010-10-17
    - Improved authorisation-checking code    [Aaron Trevena]
    - Database-driven sessions                [Aaron Trevena]
    - Version number bumped in honour of the above
    - Move database config into config file
    - Make site root (/) display default CMS page without redirecting

2010-10-06
    - Fixes to Makefile.PL        [reported by spacebat]
    - Fixes to tests            [reported by spacebat]
    - Added POD where missing

2010-10-05
    - Form-handling
        - Contact form

2010-10-02
    - Events archive (monthly view, with prev/next links)

2010-10-01
    - Added year summary view to blog section

2010-09-25
    - Deleting users, events and news items now works

2010-09-21
    - Added contact email field to events

2010-09-20
    - Added teaser() method for blog posts, to return first N paragraphs

2010-09-19
    - Auto-generate shop item code if user doesn't input one when adding item

2010-09-15
    - Add image-selection drop-down to shop edit item page

2010-09-14
    - Move shop images to cms-uploads area

2010-09-13
    - Various minor tidying and bugfixes in shop area

2010-09-06
    - Added reCaptcha for anonymous and pseudonymous users posting comments
    - Added 'view posts by author' functionality to blog section
    - Make CMS page menu_position auto-adjust, so saving a low position
      bumps the rest up 1

2010-09-04
    - Proper handling of recent comments feed on user profiles
    - Hide future-dated content from tag details page

2010-09-01
    - Updated version number in honour of recent bug-killing and feature-polishing

2010-08-31
    - Don't display future-dated blog posts on front-end site
        - This enables users to 'queue up' posts to automatically appear at
          a specified time and date, simply by dating them appropriately
    - Add location and map link to user profiles

2010-08-29
    - Styling tweaks for back-end menus        [Helen Lambert]
    - Hugely improved admin footer bar        [Helen Lambert]

2010-08-28
    - Added events to site-wide search
    - Separated back-end menus out into separate templates (for easier rearranging)

2010-08-26
    - Moved main wrapper for front-end site to root templates folder
    - Fix bugs in chaining in User controller

2010-08-23
    - Added in a load of stuff from HTML5 Boilerplate

2010-08-22
    - Use TT's html and url filters throughout templates
    - Add jQuery datepicker to blog post editing page, to allow back-dating
    - Verify email addresses when adding/editing users
    - Save and restore details of pseudonymous commenters

2010-08-21
    - Atom feed for blog posts
    - Added 'website' to optional user details
    - Changed meta.custom_wrapper to meta.wrapper throughout templates

2010-08-20
    - Search results from news and blog sections
    - Site-wide tag-search results (only from blogs, so far)

2010-08-19
    - Delete comments

2010-08-18
    - Display tags on view post page
    - Display posts by tag
    - Delete blog posts

2010-08-17
    - Added tag feature - database and admin UI, blogs only

2010-08-16
    - Paginated blog posts
    - Renamed database to match project name

2010-08-15
    - View blog posts posted in a specified month
    - View events starting in a specified month
    - Add file uploads outside of CKEditor

2010-08-14
    - Move user profile page from admin area to content site
    - Display recent post and recent comments info on user profile page
    - Add 'valid XHTML and CSS' buttons and links to site footer
    - Display blog-post comment-count on homepage and recent posts page

2010-08-13
    - Events: create, edit, list, view details
    - Added jQuery to back-end (for date-picker on event admin pages)
    - Display events feed on homepage

2010-08-11
    - Added events feature - display only
    - Changed all displayed times to not display seconds

2010-08-10
    - Added 'post comment' feature

2010-08-05
    - Blog section replaced with one based on News section
    - Updated homepage template to show recent blog posts
    - Updated README and $VERSION now that we have a usable feature-set

2010-08-04
    - Fix adding elements to templates
    - Moosification of Result classes (autogeneration changed)
    - Added new example homepage template, showing news items on CMS page

2010-07-29
    - Minor cosmetic fixes [Helen Lambert]

2010-06-04
    - Added 'user notes' (can only be set/read by user admins)

2010-03-22
    - Fixes to TT whitespace handling, for tider XHTML output.
    - Added status and error message divs to front-end wrapper + css.

2010-03-21
    - Added basic poll features

2010-03-15
    - Improved menu layout on default example site

2010-03-08
    - Added support for 'quick upload' feature of CKEditor

2010-03-07
    - Added CKEditor-compatible File Manager
    - Moved CMS-controlled images from cms-images to cms-uploads/images
    - Separate menus out from main back-end wrapper template into their own
      templates directory

2010-03-03
    - Fix remaining XHTML validation problem - now valid XHTML 1.0 Strict
    - Added confirm-delete javascript for pages

2010-03-01
    - Add/edit news items
    - XHTML validation fixes
    - User administration (add/edit users and their roles)

2010-02-28
    - Added preview feature to CMS page editing

2010-02-27
    - Fleshed out news section, basic features now in place
    - Improved 404 template

2010-02-25
    - Moved menus into Root controller for easier use across sites

2010-02-24
    - Added build_menu method to Root controller
    - Created News controller

2010-02-23
    - Fixed bug in shop nested category templates, caused by DBIC/TT changes

2010-02-22
    - Added 404 handler
    - Fixed post-login redirects

2010-02-21
    - Added search to site root, pulling from per-controller search methods.

2010-02-20
    - Added search to CMS area
    - Changed 'list-pages' to display using sitemap structure
    - Fixed bug in page edit code for 'CMS Page Editor' role
    - Tweaked wrapper template to display edit link for page editors

2010-02-19
    - Added basic sitemap generator

2010-02-18
    - CMS sections
    - CMS menus
    - Fixed various bugs in blog area - bad generated links, etc.
    - Updated user login function to redirect more helpfully when successful

2010-02-15
    - Added cms_template_elements so that new pages can be created with the
        correct set of elements, ready to be edited by a non-admin
    - Improved favicon [Helen Lambert]

2010-02-11
    - Added WYSIWYG HTML editor widget (CKeditor)

2009-12-11
    - Changed project license to GNU Affero GPL

2009-10-08
    - Nested categories / sub-categories

2009-10-06
    - Finished applying new form styles to all existing admin pages
    - Set / to forward to CMS-controlled site at /page
    - Added /admin and /login shortcuts to access admin area

2009-10-05
    - Add/Update/Delete/List templates
    - More admin-side styling

2009-10-04
    - Massively improved visual appearance        [Helen Lambert]

2009-10-03
    - Added Delete Page feature to CMS
    - Added 'list all pages' feature for CMS admins/editors
    - Added Add/Update/Delete categories feature to shop

2009-10-02
    - Added Delete Item feature to shop

2009-10-01
    - Added Add Page feature to CMS
    - Edit Page improved
    - Added Add Item feature to shop
    - Edit Item improved
    - Added 'list all items' feature for shop admins

2009-09-20
    - Changed project name from Reactant to ShinyCMS
    - Fixed blog b0rkedness
    - Auth on CMS and shop edit pages
    - Shop category pages

2009-09-19
    - Basic PayPal checkout integration

2009-09-18
    - Beginnings of online shop functionality
        - Display/edit item

2009-09-10
    - Basic CMS functionality
        - Display/edit page

2009-06-11
    - Nested comment display
        - Only on blogs for now - aim to enable on other content later

2009-05-28
    - Basic user functionality
        - Authentication
        - View details
        - Edit details
    - Partial blog functionality
        - Display/edit post
        - List recent posts per-user/per-site
        - Use subdomains to specify author