News Archive
Related Articles
PhpRiot Newsletter
Your Email Address:

More information

Introducing the Midgard Create user interface

Note: This article was originally published at Planet PHP on 3 March 2011.
Planet PHP

You may have noticed that quite a lot is happening in the Midgard land. Nowadays Midgard2 itself is a generic content repository that can be used for both desktop and web applications. Midgard MVC is a generic web framework for PHP5 that can be used with Midgard2 or without it. And then there is Midgard Create, the new content management user interface that follows the ideas of decoupled content management.

With Midgard Create, a website just needs to publish its contents with RDFa annotations, and we make them editable on the browser. As contraints breed creativity, we had a guiding principle:

Build a CMS, no forms allowed.

How does it actually look, then

When you log in to a website, the only thing that changes is that you get a floating toolbar on the top. To make changes to the content you can enter the edit state. We will highlight all contents that can be edited:

When you have made some changes, a Save button will light up, allowing you to send the modifications back to the server. A successful save operation is visualized by the saved contents being transferred to the Save button:

Images can be added to content via simple drag-and-drop:

You can also access the revision history and launch any workflows associated with the content from the toolbar:

Adding new items to lists is also easy:

How does this actually work

Midgard publishes its contents via html and RDFa, and provides a simple REST API for saving and retrieving contents from the back-end via JSON-LD. The user interface itself is completely written in JavaScript, backed by the VIE library produced by the IKS project, and the excellent Aloha html5 editor. On a page, the user interface is simply loaded with:

In a normal setup, the system architecture as a whole looks like the following:

Most of the components are typical Midgard2 systems, but there are also common parts shared with the rest of the ecosystem, like Zeta Components for PHP, the PHP Application Server, and on JS side libraries like jQuery, Backbone.js and VIE. Strophe.js is something we currently consider for real-time collab

Truncated by Planet PHP, read more at the original (another 2390 bytes)