Joomla Google Summer of Code 2019

Hi everyone! The second stage is completed, I will talk about the progress that has been achieved during this time.

About the Project

As I said in the first blog post, web services in Joomla is an API layer that helps third-party developers work with a Joomla website. This will be able to further develop Joomla CMS.

The following components are currently covered by web services:

  • com_banners
  • com_categories
  • com_config
  • com_contact
  • com_content
  • com_fields (NEW)
  • com_installer (NEW)
  • com_languages (NEW)
  • com_menus (NEW)
  • com_messages (NEW)
  • com_newsfeeds
  • com_plugins
  • com_privacy
  • com_redirect (NEW)

There is still a lot of interesting work ahead, we need to implement the remaining components from our plan, cover web services with tests, and create documentation, but first things first.

Over the past month, the following has been done.
I have implemented complex components such as:

  • com_fields now using the API you can create fields for articles, contacts, users, and when you request each object, these fields are displayed.
  • com_languages using this component you can now install languages in Joomla, associate two articles in different languages with each other. You can also create and delete constants to override basic constants.

I had some difficulties with these components because there was a lot of work that intersected with other components, in particular com_content, this still entailed an improvement of abstractions and general logic.
Also there were some complications when working with overriding constants in com_languages because it was working with the file system.

I have implemented simple CRUD components:

  • com_messages
  • com_redirect
  • com_menus (only CRUD)

You can see the work of the web services part in this video:

Next Steps

It is necessary to finish work with the com_menus component, this is also one of the complex components since the type of item menu can be different: article, tag, contact, user etc. The main difficulties arise for this reason.

In the remaining month, it is planned to write documentation for web services in Joomla. This is a very important part of the project, because the documentation will help third-party developers to deal with the API.

It would also be nice to have time to cover the entire API layer with tests. This will help find possible bugs and problems and speed up development in the future.

Personal Conclusions

The second stage was exciting. Firstly I understood Joomla CMS much better and this allows me to develop new components much faster. Secondly, the tasks in the second stage were more complicated and much more interesting.

The third stage is very important, you will need to have time to complete the development and link everything into a single whole code, documentation and tests - this will create a complete Joomla web services product!