Today we released Fork 3.0.0. This release marks a new milestone in the life of Fork CMS and makes us get all emo and ponder about the past, present and future of Fork CMS. I'll leave that for another blogpost though and cut right to the chase with an overview of the new features.
For those unfamiliar with previous versions of Fork CMS: the Pages module, which is the heart and soul of Fork CMS, features a simplified representation of the website. It's possible to select different templates for different pages of your website, e.g. it's perfectly possible to have the design of your homepage be completely different than that of any other page, and even have other pages be different from one another.
Each template has its own simplified graphical represention, in which certain blocks were defined. These were to be slots where either editor content or a module or widget could be linked to, which would then be visible on the website. The editor content for all slots could than be entered in the main "content" tab.
Fork CMS 3.0.0 now combines this content-editing and the simplified graphical representation of the website into 1 nifty overview. More importantly however, is that this concept of fixed slots has also been upgraded. A page template new exists out of different fixed positions, where any number of blocks (being editor content, widgets or a module) can be linked to. These blocks can easily be dragged to other positions or set to be either hidden or visible.
A screenshot is worth a thousand words though, so here goes:
For the designer/frontend developer creating these templates, not much has changed. The tools to create a template in the CMS have been upgraded as well, to feature the change to positions, and in the templates themselves, it's really only a matter of replacing the code for you blocks by iterations.
Next to these positions being an incredible usability & functionality improvement, there's also a big bonus for theme developers. Themes can now be portable across multiple Fork CMS setups. When installing a new theme on a website where all pages have already been added and all content has been entered, Fork CMS will automatically link templates of the new theme to pages where a template of the old theme with the same name had been added. And if these templates both happen to have the same position names (e.g. "left", "main", "right"), the content will automatically be assigned to the correct position in the new theme. Existing content that could not be matched will simply be kept apart and can easily be dragged into the right position when editing the page. When switching from one template to another one of the same theme on an existing page, this same logic applies.
And while we're at it, let's agree to a Fork CMS standard to make it easier on ourselves when we have to deal with work from an other. Let's always give the most important position of our template the name "main" (the one where the main content is to be assigned to.) Sidebars should be given the names "left" and "right", while a top-bar should be called "top". Sounds like a plan?
Talking about portable themes inevitably leads me to a second important addition in Fork CMS:
Extensions module: installable modules & themes
A new module has been added to Fork CMS to allow for module and theme installation from within the CMS.
As you can see in the right upper corner of both screenshots, it's possible to simply upload a zip of either a module or a theme straight into the CMS and it'll automatically be installed. For both modules and themes, this will require an info.xml to packaged in a zip alongside the code, to provide the necessary details to the CMS. This info.xml contains general information about the theme/module and it's author(s), and information about the available hooks if applicable (for a module) and the available templates (for a theme.) These info.xml files have been added to all core modules in Fork CMS as well as the default Triton theme already.
3 themes have been created already and are freely available for everyone:
- Golden Gate (by Yoni De Beule): http://www.fork-cms.com/extensions/detail/golden-gate
- 1950 (by Xavier Bertels): http://www.fork-cms.com/extensions/detail/1950
- Reponse (by Simon Coudeville and Thomas Deceuninck): http://www.fork-cms.com/extensions/detail/response
i18n or internationalization
We reached out to the community and they reached back! As a result of their hard work, we're able to add no less then 6 new languages to Fork CMS. These are:
- Chinese (by Millie Lin)
- French (by Matthias Budde & Jeremy Swinnen)
- German (by Philipp Kruft)
- Hungarian (by Bota David)
- Italian (by NebuLab)
- Russian (by ÐœÐµÐ´Ð²ÐµÐ´ÐµÐ² Ð˜Ð»ÑŒÑ)
As kind of an easter egg, we have also added translations of 2 languages that were still in progress, though these can not yet be selected as active languages.
If you think you can help us make Fork CMS available to an even broader audience by translating it to your language - or help keep the existing languages up-to-date, I urge you to keep track of Fork CMS on GitHub and submit pull requests with improved translations. Note: not every single message has been translated. There are about 20 translations missing, mainly for the module & themes installer. This is because we were still developing this functionality while they were already translating.
I would like to thank everyone who helped translate Fork CMS to his/her language. I know what an effort it has been. I firmly believe that your efforts will go a long way towards the worldwide adoption of Fork CMS.
Not only are all these translations available, we have also made it possible to use non-alphanumeric characters in urls. Wikipedia-style! Yes, a url can now look like this: http://www.fork-cms.com/åšå®¢
Updated folder structure/installer
One more important change brought to the table is the updated folder structure. No longer is it required to have the default_www and library folders lined up on the same level, with library being outside of the document_root. Upon installation of Fork CMS, you can now just unpack all files directly into your document root. If you so desire, you can still manually move the library folder outside of your document_root however.
We have updated this because we noticed a lot of people were having problems getting Fork CMS running on sub-par hosting. Unfortunately, server administrators impose too strict rules on their clients, which in our case made it hard for some people to install Fork CMS. This should now be history. The Fork CMS installer has also been upgraded to check for the possibility of url-rewriting in a correctly configured Apache environment, and we have created a more thourough article on how to install Fork CMS on different webservers.
Full list of improvements
The above-mentionned changes were only just the highlights. Fork CMS 3.0.0 brings along countless bugfixes and a whole bunch of improvements. Here's a more complete list of all additions:
- Core: completely re-invented the blocks system, it's now position-driven.
- Core: introduce the concept of positions that can contain an arbitrary number of blocks.
- Pages: merged tabs "Content" & "Template" to present a more straightforward UI.
- Pages: added ability to order blocks on a page.
- Pages: created fallback-system for blocks that were assigned to no-longer-existing positions.
- Pages: added the posibility to show/hide a block.
- Pages: edit HTML content in TinyMCE in a dialog.
- Core: updated installer.
- Core: updated template creation in backend.
- Core: updated theme Triton to be position-based.
- Pages: added the possibility to either completely overwrite or re-use existing blocks when updating a template.
- Core: removed has_extra and extra_ids from pages database and replaced it with joins resulting in the same result but based upon real data (rather than just relying on the existing scripts.)
- Installer: added 'getTemplateId' function to easily fetch a template id.
- Installer: added 'warnings' to warn for less optimal systems but allow installation anyway.
- Installer: added improved test for mod_rewrite (will produce warning if not enabled.)
- Installer: refactored code: every step now doublechecks all previous steps and redirects back on error.
- Core: updated folder structure to prevent installation issues with folders needing to be outside the document root.
- Core: removed "markup" folder, this is now available at http://www.fork-cms.com/markup.
- Core: allow for non-standard characters to be used in urls.
- Core: updated default favicon.
- Pages: updated pages getNavigation; the 'includeChildren' parameter was useless.
- Installer: refactored installation of dashboard widgets.
- Analytics: dashboard widgets are now added for all users upon installation.
- Profiles: refactored action names to better represent their purpose.
- Extensions: uploaded modules can be installed.
- Extensions: uploaded themes can be installed.
- Extensions: it is now possible to install modules via ZIP upload in the CMS.
- Extensions: it is now possible to install themes via ZIP upload in the CMS.
- Core: the active state of modules has been stripped. This is no longer useful.
- Core: new coding standards have been applied.
- Locale: added translations for Chinese (by Millie Lin - http://www.witmin.com)
- Locale: added translations for French (by Matthias Budde - http://www.flocoon.com & Jeremy Swinnen - http://blog.stratos42.com)
- Locale: added translations for German (by Philipp Kruft - http://www.novacore.de)
- Locale: added translations for Hungarian (by Bota David - http://kukac7.hu)
- Locale: added translations for Italian (by NebuLab - http://nebulab.it)
- Locale: added translations for Russian (by ÐœÐµÐ´Ð²ÐµÐ´ÐµÐ² Ð˜Ð»ÑŒÑ - http://iam-medvedev.ru)
- Locale: added partial translations for Turkish (by Serkan Yildiz - http://twitter.com/#!/GeekOfWeb)
- Locale: added partial translations for Polish (by Pawel Frankowski - http://www.blog.elimu.pl & Konrad Confue PrzydziaÅ‚ - http://confue.xaa.pl)
- Blog: the blog module now standard has an image field.
Thanks to everyone who has contributed to Fork CMS! If you want to help make a difference, fork Fork CMS on GitHub and help us out.
Thursday November 10th, we'll be having a release party at the Netlash-bSeen offices in Voorhavenlaan 31, 9000 Ghent, Belgium. We'll open at 19:00 and start with a short presentation, discussion the new functionalities of Fork CMS 3.0.0, at 19:30. After that, let's just have a drink and get to know each other.
So, what do you guys think about Fork CMS 3.0.0?