Joomla Google Summer of Code 2022

I am Khushi Rauniyar. I am a Google Summer of Code 2022 Student where I got a chance to contribute to Joomla with the Guided Tour Project. I have completed my first phase of GSoC’22 project and it’s been a great experience so far.

About Joomla:

Joomla! is a several award-winning, Content Management System (CMS) that allows you to build powerful online applications and publish web content. Joomla! Is open source which is its best part. It is built on an MVC (model–view–controller) web application framework that can be used independently of the CMS as well. It has over 6000+ extensions and over 134 million times downloads.

About the project:

The convenience of its users is on its priority list for Joomla! and Guided Tour is something that will definitely make it easy for its users to use Joomla!. Those who use Joomla! will prefer a basic help text and interface over reading bulky documentation for any action they want to execute. Though it is properly detailed in an easy manner in the documentation, the user has to visit a separate link for documentation. It would be easy for the user if he/she can get that on the same page without any redirection and in the form of some iframes.

It could be better if this would be a complete tour of the click-through path as that will increase the convenience for users in a much more professional and better way and even to make this feature more user-friendly, a user can create custom tours as per the requirement.




Week - 1

Discussions Done in the week:

  • Discussed the Guided Tour project priorities and deliverables.
  • Discussed the timeline and scope of the project.
  • Discussed project repository setup.
  • Meeting held on G-Meet with Administrator Benjamin and Mentors Jatin and Freyam.

Tasks completed in the week:

  • Done with the setup of the project on my local machine.
  • Included Joomla Coding Standards (PHP CodeSniffer) in the project.
  • Worked on creating the base structure for the guided tour by taking references from the SoC project.
  • Created MVC component, Added files in Model, View and Controller.
  • Created SQL files for the guided tour.
  • Created Plugin for Guided Tour and created a basic tour for “Creating Guided Tour in Joomla Backend”
  • Prioritized the task for next week.

Pull Request:

Week - 2

Tasks completed in the week:

  • Fixed “Save2new” in the step section for each tour.
  • Fixed the “Save as Copy” button in the step section which was causing the error.
  • Got an understanding of the Script file for Guided Tour.
  • Debugged the script file code.
  • Fixed one major problem in the code, which was that every time when the tour was started it was ending at step 1 of every tour and the complete button was showing up (even if we have 10 steps in that). 
  • Created a working single-page tour with all the steps.
  • The main changes in the script file from the original script in the PR are:
    • Removed the Back button from the very first step as we don't need the back button in the first step.
    • Earlier, the tour was showing a Complete button after the second step even if that tour consisted of 10 steps. So, I have solved the problem and it is working properly.
    • Removed the Back button redundant code.
  • Prioritized the task for next week.

Pull Request:

Week - 3

Tasks completed in the week:

  • Debugged the code and solved the problem of the steps URL which was not working earlier.
  • Conducted G-Meets with Mentor - Freyam where I helped him to set up the Guided Tour project for Joomla! so that he can get started with the project and start testing it.
  • Attached the Steps URL in tour.addStep by using  url: obj[mainID].steps[index].url and got the steps URL for each step of the tour.
  • Used session storage and URL re-direction through the window.location.href.
  • Made one-time URL redirection of Guided Tour functionality.
  • If the page is refreshed in between the steps, then by using session storage fixed the normal flow of the remaining steps from which it was refreshed.
  • Implemented the code for showing the Complete Button at the last step of every tour even after the page is refreshed.
  • Worked on fixing the problem i.e if click on any tour and start the tour then (if it is a multi-page tour) then after finishing the tour when we return to the main page or when we create any other tour and return to the main page where all the tours are mentioned, the relative URL of the page is changed from option=com_guidedtours to option=com_guidedtours&view=tours which was causing the problem that the tour was starting when we were clicking on that 2 times. So, I have fixed the problem by changing the relative URL of the tours page to option=com_guidedtours&view=tours permanently.
  • Made some minor changes in extensions.sql for better UI.
  • Changed the URL for each tour and step to the localhost URL to ensure that the steps are working properly while starting any tour.
  • Working on multi-page redirection of Guided Tour.
  • Prioritized the task for next week.

Pull Request:

Week - 4

Tasks completed in the week:

  • Wrote the code to make working steps for tours even if we delete some steps in between from any tour.
  • Made the script file code more generic which can be applicable for all the tours.
  • Removed redundant code and made functions which can be used again where the same code was present.
  • Modularized and re-written the entire script file.
  • Optimized and removed the unused code from the script file and reduced the number of lines from 218 to 162 lines of code for the script file.
  • Solved the problem of stepID, where I took ID of steps and Tours and then used its index to traverse it.
  • Created the multi-page re-direction of the tours for Guided Tour properly working.
  • Wrote the code to make the tour work from any page, i.e if we start the "How to Make Article" tour from any of the pages in Joomla!, it will be re-directed to the Article page and the tour will be started. (We now don't need to click it two times to start the tour if it is present on any other Page).
  • Made the Overlay Option permanently true for every tour in the code.
  • Worked on the URL of the Tours Page and fixed the URL to option=com_guidedtours&view=tours to make the URL generic by making changes in HtmlView.php.
  • Conducted G-Meet with Mentor - Jatin and discussed the work done till now and regarding the plan for upcoming weeks, how the journey has been so far and if there is any problem which I am facing.
  • Solved one of the Major problems of Relative URL and make the Guided Tour properly functional through relative URL.
  • Removed https:// from the URL which was automatically getting saved in the URL field with the relative URL to make the tour work properly.
  • Started working on Back Button for Multi-Page.
  • Prioritized the task for next week.

Pull Request:


Week - 5

Tasks completed in the week:

  • Created Table structure for Guided Tours and Guided Tour Steps Table in extensions.sql for Postgresql.
  • Wrote the query for dumping data in Guided Tours and Guided Tour Steps Table in extensions.sql for Postgresql.
  • Dumped data for Guided Tours in extensions and assets Table for Postgresql by making changes in base.sql for Postgresql.
  • Optimized the update SQL scripts for Postgresql and MySql.
  • Included URL parameter in update SQL scripts for Postgresql.
  • Fixed the problem of Archived where while archiving any tour earlier it was showing us the COM_GUIDEDTOURS_N_ITEMS_ARCHIVED instead of showing us the string.
  • Worked on the Back Button (which was one of the main problems for Multi-Page functionality) of the Guided Tour Popper and made the Back Button functional for multi-page as well.
  • Removed the Overlay Option fields permanently from everywhere.
  • Prioritized the task for next week.

Pull Request:

Relevant Links:

Project Overview:

Project Description:

Project Repository Link:

Overall I had an amazing journey so far working with Joomla! and I hope that the Guided Tour project will be useful for Joomla! users. I would like to thank Benjamin Trenkle, Christiane Maier-Stadtherr, Richard Fath and my mentors for their support and guidance.

Khushi Rauniyar