Tags Bundle finally has an admin interface!

by Edi Modrić -
Tags Bundle finally has an admin interface!

It took four years since the initial release of the bundle, but the admin interface is finally here. So, what took us so long? Well, there are a number of reasons, but the two most prominent ones are the existence of legacy admin interface for eZ Tags in eZ Publish 5 era, which more than enough fulfilled our needs, and an extreme lack of resources to implement the new admin interface in Platform UI in eZ Platform era.

When eZ Platform 1.0 was released in December 2015, we realized that Platform UI did not fulfill our needs yet. We took a different path and started using Legacy Bridge with eZ Platform to bring back the legacy admin interface. This also meant that we could still use the legacy eZ Tags admin interface, which in turn entailed that Platform UI would not be getting a dedicated interface yet. That status quo lasted for a whole year due to Legacy Bridge working (and it still does) with recent eZ Platform releases.

However, since it was becoming clear that there are other community members and companies who, for various reasons, did not use eZ Publish Legacy and that the non-existence of admin interface for tags seriously hindered their workflow, we started thinking of the ways we could change the situation. Lack of resources for contributing to open source still remained an issue – most of the Netgen team members were tied up either to paying client projects or internal R&D projects. That's when Ivo thought about funding the implementation of the interface through the crowdfunding campaign.

The campaign

As the crowdfunding has got really popular recently, it made sense to try out the concept on a project like this one. If we'd had a need to develop it ourselves we would have, especially if it could have been part of billable work. But since this was not the case, it was reasonable to expect that other agencies in need of such feature would help cover the cost.

We decided to use Indiegogo platform because it was the only one that provided service for companies in Croatia. Based on the estimate of working hours we calculated we would need 12000 USD. We set up the campaign with very short preparations and started to promoting it on dedicated channels.

With the campaign nearing an end, we had to decide if we should take the 6000+ USD gathered in those few weeks, even though we didn't reach the target, or announce that the campaign failed. It was a tough call.

Well, you already know what we decided. :) Even though the funds gathered would only cover half of the expenses, we still felt that it would be good to execute the project. Kudos to all contributors: Netmaking, Greater Stavanger and others!

After the campaign ended, there were still some difficulties with the Indiegogo platform. The two biggest donations were held back over a month so they could perform additional verifications, which was very strange. It was sorted out eventually, but we lost some nerves. Also, their support was really slow in responding, they didn't manage to explain what was going on, and they took around 8% for their service!

Provided we wanted to crowdfund some new project, it would be difficult to choose the platform since Indiegogo didn't satisfy our needs well.

Tags Bundle campaign page
Tags Bundle campaign page

Technicalities

We thought long and hard on how to best implement the new interface. Would we tie it to YUI and current Platform UI exclusively? Would we make it more generic, meaning it could be integrated into other admin interfaces like Netgen Admin UI or the potential new Platform UI 2? In case we went with the generic solution, would we be able to integrate the generic variant into the current Platform UI?

It turned out we were lucky and that we could integrate a generic variant of admin interface into YUI and Platform UI, albeit with some difficulties which were fortunately solved.

And that's exactly what we did. We created a generic admin interface for tags in pure Symfony and Twig, meaning that all pages and actions in the interface are classic Symfony CRUD controllers, all rendering and routing is done on the backend, and so on. The basic variant of the interface with almost all features working was implemented by my colleague Randy (who, by the way, had no previous Symfony or Twig experience) in two weeks, thanks to the excellent Symfony and Twig documentation and ease of development.

After that, it took us two months to tune the implementation of the backend and to create the interface for editing eZ Tags content fields and field definitions. Field and field definition edit interface took most of our time since those two unfortunately needed to be Platform UI specific, meaning no generic implementation.

New Tags admin interface
New tags admin interface integrated into Platform UI

Since tags admin interface itself is generic, as mentioned before, once you install the new version of Tags Bundle, you can use the interface as a standalone app, by going to /tags/admin/ URL in your eZ Platform installation, or you can use it integrated into Platform UI. For most of the features the tags interface works and behaves similarly to the eZ Tags interface in eZ Publish Legacy, with a modernized look and feel. As for the field edit interface, since it's a jQuery component with some backend code needed for autocomplete, it was migrated from the legacy interface as is, reimplementing only the backend code.

Install it

The new version is tagged as a new major version 3.0. You can use Composer to install or update to it. Be sure to read the install instructions and upgrade instructions since we took the opportunity of having a new major version to clean up the bundle of legacy code and features so there were quite a few breaking changes.

We hope that you will like what we did and, as usual, any contributions are welcome! :)

This site uses cookies. Some of these cookies are essential, while others help us improve your experience by providing insights into how the site is being used.

For more detailed information on the cookies we use, please check our Privacy Policy.

  • Necessary cookies enable core functionality. The website cannot function properly without these cookies, and can only be disabled by changing your browser preferences.