Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 27, 2015
  1. Updated project list

  2. Merge branch 'hotfix/cli'

    Close #9
  3. Updated CLI tooling

    - Broke with #8, due to change in how service configuration works. Updated to
      pull the container in the same fashion as the web bootstrap.
  4. Namespaced all templates

    - Moved related templates into separate directories.
    - Updated mustache template factory to add those directories with the
      appropriate namespace.
    - Updated code to use namespaced template references.
    - Updated templates with partials and/or inheritance to reference namespaced
      versions where appropriate.
    - Fixes to namespace/aggregate resolvers to ensure they work correctly.
  5. Allow using namespaced templates in Mustache

    - Added NamespacedMustacheResolver, for resolving namespaced template
      names. Allows adding templates by namespace, and can properly handle
      namespaced template names.
    - Added AggregateMustacheResolver; allows composing a priority queue of
      mustache resolvers.
    - Updated MustacheTemplate to always compose an aggregate mustache
      resolver, and for the aggregate to always compose a
      NamespacedMustacheResolver at -1 priority. All path operations proxy
      to the NamespacedMustacheResolver.
Commits on Aug 26, 2015
  1. Use Expressive error handling when possible

    Using for:
    - 405
    - 404
    - all other errors except 401
    This allowed removing most of the post pipeline middleware. Local
    configuration now uses the Whoops error handler, while the templated
    error handler is used for production.
  2. Refactored configuration and container creation

    - Used technique from expressive manual
  3. Updated dependencies to latest stable versions

    - Also, explicitly added aura/router, as it's no longer part of the expressive
Commits on Aug 11, 2015
  1. Fix mustache renderer

    - For some reason, the `array` typehint was re-added, though I'd tested
      without it.
  2. Use template interface from zend-expressive

    - Removes `Mwop\Template\TemplateInterface`
    - Updates `Mwop\Template\MustacheTemplate` to follow `TemplateInterface`
    - Updates all references to `Mwop\Template\TemplateInterface` to instead use
      `Zend\Expressive\Template\TemplateInterface`, both in code and configuration.
Commits on Aug 10, 2015
  1. Merge branch 'develop'

    Merge develop to master, closing #6.
  2. Merge branch 'feature/expressive' into develop

    Rewrites the site to use zend-expressive.
  3. Cleanup

    - Remove unused classes/services
    - Use `::class` constant whenever possible
    - Remove debug statements
  4. Better pagecache_rules.xml workflow

    - Cannot have it in gitignore, because then it is not in the deployment package.
      So, instead, remove it as soon as the deployment packages is built.
  5. Refactor console tooling

    - Moved all console classes into appropriate `Console` sub-namespaces
      (i.e., all blog console tools are under `Mwop\Blog\Console`, etc.).
      This makes finding and differentiating them easier.
    - Updated service definitions to reflect the above.
    - Updated console application to pull using new service names.
    - Updated Github AtomExtensionManager to be a standalone version,
      without using `Mwop\Services`.
    - Updated PrepPageCacheRules to read from a dist file and write to the
      final, adding the final to the gitignore; this resolves a
      long-standing gripe I've had with the tooling.
  6. Removed the Templated class

    - No longer relevant due to usage of TemplateInterface and direct rendering
      inside middleware.
  7. Removed the Services class and `getServiceContainer()` function

    - No longer relevant, due to ServiceManager usage.
  8. Fixed blog post caching

    - Some incorrect logic was preventing caching of posts.
    - The console tooling needed updating to use the ServiceManager instead of the
      homegrown service implementation.
    - The CachePosts console tooling needed updating to use the DisplayPost
      middleware, and to set the 'id' attribute on the request before invoking it.
    - Removed the obsolete `Blog\CachingMiddlewareFactory` and `Blog\Middleware`
  9. Refactored blog

    - Separated each specific aspect into its own middleware:
      - ListPostsMiddleware handles listing posts and pagination of lists.
      - FeedMiddleware handles returning feeds.
      - DisplayPostMiddleware handles displaying a single post.
    - Caching is middleware surrounding another middleware, which simplifies
      its logic. A delegator factory creates the CachingMiddleware and
      injects it with the originally requested middleware.
    - The main middleware is a zend-expressive application that adds routes
      for tags, feeds, and posts, and then pipes a fallback middleware for
      listing posts.
Commits on Aug 8, 2015
  1. Moved all sub-apps to post_routing

    - These will match less frequently, so have them intercept only if
      routing fails.
  2. Refactored jobs

    - Middleware is now a MiddlewareFactory returning an Application
      instance that sets up the subpaths.
    - Now registered as a pre-routing middleware in the pipeline.
  3. Refactored authentication layer

    - Done as a discrete application.
    - Registered as as subapplication via pre_routing pipeline.
    - Updated ComicsFactory to return a MiddlewarePipe instead of just the
      ComicsPage; this allows it to add the UserSession as part of that
      discrete pipeline, intercepting before the ComicsPage to allow session
  4. Updated Refactor

    Do not use end()
  5. Refactored NotAllowed

    - Expressive sets the `Allow` header, so we should only set it if not present.
  6. Refactored error handler

    - Use `TemplateInterface`
    - Return `HtmlResponse` instances with expected status codes
  7. Refactor comics page

    - Use `TemplateInterface`
    - Ensure authorization gateway works as expected
  8. Refactored Contact middleware to Expressive

    - Acts as its own Expressive application, and is
    - *Piped* to the main application.
    Discovered Aura.Router does not have a way to do optional qualifiers
    that do not have params (e.g. `{/}`), which requires registering the
    top-level route twice. :-(
    Additionally, it appears that I have some broken functionality throughout my
    app, as I was using `getHeader()` where I typically needed `getHeaderLine()`.
Something went wrong with that request. Please try again.