Together we came up with a roadmap, which had the focus on following points:
Someone’s uncle once said, “with great power comes great responsibility”. To handle the responsibilities, we applied two lessons we learned in real life. If you are responsible for something, you need to be accountable for it. And since everyone makes mistakes, it comes in handy if you can revert the unwanted actions. We integrated this concept by introducing two new features:
This required a core change in the django CMS but also we had to update how all relevant modules interacted with their data. The result of the work was a new Django app called aldryn-reversion, which you can check out here: https://github.com/aldryn/aldryn-reversion
The complete the social features, we had to make sure that a user has a proper profile and can log-in easily via Single Sign-On from their Desktops or Mobile Devices. The details are not too interesting, yet we can mention that there were two keywords involved: SAP and Microsoft NTLM.
The biggest challenge we had was to combine the project requirements, the newly crafted corporate identity and the capabilities of django CMS. This process was achieved through regular iterations with the client of wireframes and our in-house development team for planning new features.
The result of which was the creation of some cool extensions to django CMS that are now or will be soon available to all users:
Another goal for our team was to make the platform very usable, keeping in mind that our target group was very diverse: some people were already familiar with django CMS and its core functionalities, but the majority of the users were average skilled content managers if not at all in some cases. We were able to deliver a very intuitive UI that it’s now heavily used by all kind of people at Salt.
The CMS usually handles content on a per language basis. If you browse the page in French, you’ll only see content created in French. How can you make sure that everyone has access to his information in an efficient way, where language preferences and availability don’t clash with each other? We introduced proper language fallbacks for all content types.
Every supported CMS language received a fallback order. In the case of e.g. Italian-speaking users, the CMS would check if content is available in Italian, else in French, else in English, else in German (at least one translation had to exist). This was a preventative step to ensure that information (especially important news) would get enough visibility, even if it was not yet translated. To aide the translation process, the users will see a notification if they can help adding a missing translation.
Collaboration and know-how transfer are an undeniable success factor for companies. To help people work together, we came up with the concept of “spaces”. Teams and departments can create their individual space, which is open for everyone or only accessible for invited collaborators. Inside a space, members can share knowledge via Wiki pages, Blog posts, FAQ sections, Polls or organise context specific events.
To deliver this feature, we had to adapt all used django CMS Addons and introduce new core features in the CMS itself so the applications can work in harmony.
The CMS itself is optimized for delivering content at a super fast pace, but editing content in parallel by up to 800 users was something we hadn’t considered before. While the initial development phase didn’t show any signs of performance bottlenecks, we soon realised that when more than 20 people edited content simultaneously, we had dig deep in our bag of tricks.
The page load during our beta tests peaked at roughly 60 seconds, which was unacceptable in every case. Many hours of analysing and optimising the caching mechanisms and database queries finally lead to a page load of roughly 87ms - hurray.
Yann Duponchel, Manager Online Transformation, Salt. SA/AG