The newly refactored and redesigned Budapest City Archives website was built on Drupal 7. The City Archives, which has collected more than 35,000 metres of documentary material during the last few centuries, needed a website that was capable of showcasing its work, document processing and research workflow, and the information that these activities focus on.

The first task our company had was UX & UI planning, and the creation of the final website specification, which took two colleagues three months to complete due to the complexity of the task. Then we created the system architecture and started the backend and frontend development, which took another several months of work.

BFL Case study
Why Drupal was chosen: 

We first introduced Drupal to the City Archives in 2014. After the presentation, they chose our company to create two smaller websites for them. As a result, in 2014 we developed a website for the Hungarian Holocaust Memorial Year and a website to present the life's work of the Hungarian architect, Miklós Ybl. After these two successful projects, we were entrusted to change the City Archives’ obsolete website into a Drupal based portal.

Throughout the development, it was extremely important to ensure the flexibility, simplicity and modernity of the system's administration interface for the editors, so they'd be able to manage and modify content easily. Due to this, we needed a solution that has already been proven in this field.
With the help of Scald media library, each media type (images, galleries, videos, files, etc.) became easy to manage for the editors.
The whole website is built using panels, thus each item can be reused easily .
We had to pay special attention to the responsiveness of the new website, so Drupal was an expedient choice as the graphic designs are easy to realise with the custom theme. In our custom theme, sass proved to be a great help where we could use the Compass-Susy-Toolkit-Breakpoint gems.
Furthermore Drupal provides us with great solutions for distinguishing users based on their roles, and we needed this functionality to allow users to reach different parts of the system with specific permissions.

Describe the project (goals, requirements and outcome): 

Our task was to completely redesign the website to make it well-organized and meet the latest technical standards. The site provides easy access to the content and navigation on mobile devices, follows the WCAG (Web Content Accessibility Guidelines) standards for the disabled, and integrates social media.

Importing and managing parcel numbers
We needed to find a solution to import an Excel sheet that contains hundreds of thousands of records, and we needed to build a manager interface to handle this data. It was extremely important to make the data searchable on the interface with the help of an autocomplete input field.

For this amount of data, Drupal suggests using Solr, so our first step was to set up the Solr configuration with some minor custom modifications to make it able to handle the autocomplete functionality.

The next step was to create the Drupal interface. The data is not edited further on the interface, instead the users upload new files and the system re-imports all the parcel numbers, and all related information.

It seemed logical to use the Feeds module to set up a basic import process, but after the initial test, it became obvious that we needed to find a different solution, as the whole process took 6.5 hours to run.

After a few days of research, we chose PHPOffice library to process the Excel files. We created a form to upload files, and for the submit event we connected a Batch API process to it. However, the solution we ended up with was still slow, the import still took three hours.

The main problem was the standard Drupal content saving process, but with this another issue arose as well. If we went around Drupal and saved the content into a custom database table, we'd lose the default integrity of the system. Even though Search API gives us with the ability to create custom solutions (Search API Solr), this was not possible within the project.

We found the solution in a function of Search API: _search_api_track_item_insert_

The final import takes 7 minutes with the custom database insert and the function mentioned above.

Technical specifications

Drupal version: 
Drupal 7.x
Why these modules/theme/distribution were chosen: 
  • With the help of the Administer Users by Role module, we can easily allow certain users to manage other users based on their specific user roles, e.g. they can't edit users on a higher level than their own user roles.
  • It is easy to create a subscription form on the publication pages with Entityform module, so the customer doesn't have to bother with a list to choose the proper book for themselves. In this case, it wasn't the goal to create a complex webshop, as the City Archives isn't specifically engaged in commercial activities.
  • With Facet API we built a complex filtering option for event listing, while Facet API Pretty Paths helped us create search engine friendly and meaningful URLs.
  • Masonry Layout was used on several occasions for a better realization of the layouts the UX team created. With this module, it is easy to format the views output.
  • The Panels and Panels everywhere modules let us manage the whole site's layout on code level and reuse the items (blocks, fields, nodes, fieldable_panel_panes, etc) on every page.
  • With the Plupload and Scald modules, media handling became a lot simpler and more unified. With Plupload it's possible to upload multiple images at once, Scald integrates into everything that is related to image handling (image fields, ckeditor image inserts), and the editors can manage every image on a unified interface.
  • Search API and Search API Solr help us store the data in an Apache Solr based search index, which is a lot quicker than 'regular' search solutions. This is extremely important in the search for the parcel numbers, where the system needs to search among more than a hundred thousand records. The database is managed on a daily basis with a third party service that needs to be imported into Drupal many times a day.
  • Slick brings an easily customizable slider into the system and its responsivity was ideal for our purposes.
Organizations involved: 
BFL Database
BFL Gallery
BFL Listing page
BFL Calendar
Sectors: 
Non-profit

Comments

SANDWIDI’s picture

Congrats for this big project. It encourages everyone to learn more with drupal and realize big projects.