Improved Multi-lingual Content Management

Written by | 06 June 2016 | Published in 2016 June
No one likes to do repetitive tasks when there is a solution to reduce them. I was selected this year on Google Summer of Code to make the life of multi-lingual platform admins easier. The challenge is to change the way Joomla! deals with several components in a multi-lingual platform. It can be performed in a single page in a side-by-side way, instead of being limited to the “new”-”save and close” loop for items referring to the same thing.
Improved Multi-lingual Content Management By Fluss (Own work) [GFDL (http://www.gnu.org/copyleft/fdl.html) or CC BY-SA 3.0 (http://creativecommons.org/licenses/by-sa/3.0)], via Wikimedia Commons

About myself

Hello world!

I am João Reys Santos and I study at the university of Évora, Portugal. I have always been passionate about technology in general, started with the TV and consoles when I was a kid and after that I decided to start my career with computers. The main reason for that was game-development, I had the dream to work on a big gaming company but after experiencing the “game-dev” process, I quickly became uninterested in following that path and since I enjoyed coding, I had to switch to something more interesting.

In 2012, my first Google Summer of Code experience arrived, it was the best summer of my life. We all have good and bad days at work, but the feel of getting paid to learn and do stuff that you really enjoy at the same time made the bad days irrelevant (I don’t even remember them!). My project was to perform Unit Tests to an organization called “Jikes RVM”, my mentor was great and I felt my skills growing and evolving day by day. It didn’t improve my web-development skills at all, but I felt the famous “Google before you ask!” experience crawling under my skin, it made me a more independent learner.

My second Joomla! experience was in an internship I had between 2014 and 2015, I had to extend e-commerce components to better suit the intended needs, either by bug-fixing, editing visual areas or creating new features like credit card payments, invoice generation, Google maps manipulation, managing JavaScript countdowns. This experience really improved my PHP/JS and made me more confident regarding web-development in general (I even had a short experience with Django).

The project

The goal of my project is to improve a multi-lingual website's back-end, meaning that besides having a considerable amount of content (articles, menu items, categories, contacts, etc.) separated by default having to re-write them multiple times, one can also associate content languages with those items side-by-side to avoid tedious replication tasks of going back and forth to apply changes, as I described before the “new”- ”save and close” loop.

The idea is to write a Joomla CMS (Content Management System) new back-end component, that will display in specific administrator pages all the parameters that help associate items side-by-side for all items where multi language associations are implemented, including 3rd-party extensions that follow the core principles.

The new component must respect the ACL settings, this means that specific ACL groups will be created according to installed Content Languages if multilingual is set to "ON", to help the admin(s) set user permissions to edit items in certain languages, this means users would/could be assigned to these groups to be the only ones able to create, edit, modify, delete, etc. items tagged to a Content Language.

Another feature is to implement the "copy" feature to avoid re-writing/re-uploading content copying all aspects of the reference item, this is mainly useful for links and images that in most cases are the same in an article for example.

How it should look like in the end

associationspage1

associationspage2

Both these image credits go to Jean-Marie Simonet since he's the one who took the screenshots and edited them. I would like to thank him for providing these it improves a lot the quality of this article!

Read 5409 times Tagged under Google Summer of Code, English