Some years ago I started my website using Joomla. Those days Joomla 1.5 was state of the art. Today Jommla 1.5 has reached the end of its life and support and bugfixes will end.

So it was time to upgrade my website to the latest and greatest version. Unfortunately this upgrade process is not as easy as a simple click on the upgrade button. It requires more work especially if your old site was already multilingual like mine was. You should also not expect that your 2.5 site will just look the way it used to be in 1.5. This is due to new templates that determine the overall look of your web site.In 1.5 I eg used Rhuk Milkyway. In 2.5 this template is no longer supported so I decided to use another one and thus my website now looks different than before. But it does not only look different from the old days but better ...

In the article I describe the traps I personally ran into and also describe  the basic update process.So I hope some else having the same problems will find the information I compiled here useful.

The first and most important step in upgrading from 1.5 to 2.5 is to install Joomla 2.5 as well as to convert all the structures like menus, articles,as well as the database scheme  ... into something suitable for joomla 2.5. 

For this purpose the extension jupgrade exists that does a great job. It installes the latest versions and does the whole upgrade stuff. The resulting new website it written into a subdirectory of your existing website (usually in <joomla_root>/jupgrade). So your old website will remain online and unchanged but you can convert it and look at the result by looking at the new joomla installation in the subdirectory jupgrade.

So the first thing to do is to download jupgrade. In order to download this extension you have to register and create an account for the jupgrade website. After you have downloaded it you can install it just like any other extension using the extension manager. Next you will find jupgrade in the components menu. If you select the menu entry you will see a page that allows you to set some upgrade options before starting the upgrade. Intresting options are eg that you can tell jupgrade not to automatically download the latest joomla version but to use an existing one you put in the jupgrade directory yourself. You can also say  jupgrade should wipe out a previously ran upgrade just in case something went wrong in the first try. 

If you set all the options to your needs you can start the upgrade process. jupgrade will inform you about what it currently does and will eventually tell you that the upgrade has been done. In this case you can immedeately take a look at your new site using the links jupgrade provides.

My first problem at this point was that juprade did not want to start at all, without any visible error message. The problem was that my provider is using a suphp installtion, so the PHP process (joomla is written in php) uses my own user id to run not the system id  of the webserver. It also used my umask I had set to restrict new files to be readable onyl for myself. Installing jupgrade had thus resulted in files in the components subdirectory that were only readable for my unix user account but not for everyone. After I manually fixed this by giving read permissions to everyone to all files belonging to jupgrade the upgrade worked as expected.

 Multilingual setup

My older 1.5er site was already multilingual. So my current website also had to be multilingual. Joomla 2.5 offers a core solution without further extensions. Another way is to use extensions for this purpose, like eg Joomfish.

Language Manager, ContentI decided to try the core multilanguage solution that is integrated in Joomla.  Multilingual demo site offers a very good tutorial and  you can explore all settings needed in the demo site. Of course you need to download the joomla language extensions for languages you want to use and install them. After installing you have install the new language as a content language.

This is done in menu Extensions->Langugae manager. You have to define language shortcuts like shown in screenshot to the right. Important is a valid language tag like de-DE or en-US (not de_DE and not en_US!!!).

Next you basically add a seperate menu for each language you want to use and one more for the language "all" that can consist of a single menu entry with the language tag set to all.  Menus and articles for say german shouild have the language tag also set to german. For each menu entry you should associate this menu entry with the corresponding  menu entry of other languages. This is done in Menu Item Associations tab when you edit a menu entry.

The magic of the language system now lies in the System:Language Filter  plugin that has to be enabled and filters all the articles to get just those with the correct language matching the current language selected by the user. Another Joomla module needed is Language Switcher which offers a way to switch languages by clicking on a flag or by choosing from a menu. The Language Switcher is a module you have to create in Menu Extensions->Modulmanager->New.

Menu disorder

After my site was basically up and running I discovered that I was unable to get my menu entry in a certain order. I could move them up or down, but they would afterwards appear at a different position. After minutes of playing around never getting the menus where I wanted them, I was promising myself to never use Joomla again, but a google search turned out, that this problem was caused by jupgrade and that it can be fixed by modifying the joomla  database table <jprefix>_menu,  colum ordering  directly so that all the values of column ordering are set to 0. This fixes the problem. If you chose the prefix j25, then the table to modify is j25_menu and the SQL-that does this job is:

UPDATE TABLE j25_menu SET ORDERING=0;

The order of menu entries in joomla is not determined by the column ordering but by columns lft and Srgt. So setting ordering to 0 is not "dangerous". You can run this SQL statement on your joomla database eg via phpMyAdmin or directly via another MYSQl client (provided your database is MYSQL).

Problem listing all articles of a certain category

Another problem I stumbled upon, was that I created a menu entry to list all articles of one of my categories. The stange thing was that I had a total of 6 articles that belonged to this category, but selecting the menu entry only two were displayed! I took a closer look at those two and found that those two were created not by administrator but by another user I use to edit articles. My solution was to set the creator of all articles from adminstrator to the user that seemed to work. This again is only possible by using SQL. Here is a description of the problem and solution.

Joomla update problems

Joomla offers an update mechanism. In the control center you can always see if your installtion is up to date including all your extensions. So I clicked on the Find Updates button after having opened the update extension screen from joomlas controlcenter.  Right away I was presented with an error message telloing me that the PHP variable allow_url_fopen was set to off in my PHP installation and as a consquence Joomla was unable to search for updates. 

The solution here was to create a file php.ini containing a single line: allow_url_fopen=on and  to place this file in the administrator directory of your Joomla installtion. Then I suddenly found updates I had not yet seen before.

Registered user unable to view articles or menus visible for registered users

I wanted to write something new but since the result would not be suitable for everyone right from the start I wanted that only I can see this article for the moment. So I set access for this article and the menu entry pointing to the new article not to Public but to Registered. Next I logged in using a "registered" user and was suprised that I was unable to see the article I had written. Logging in using the administrator account the menu and article were available.

I searched quite a while until I found the problem: In my Joomla setup the extension Login Form was not enabled. After I did enabled it everything worked as expected. The strange thing was that working with a disabled Login Form Module I still could  login as a regular user without any problem,  but somehow Joomla did not consider me as beeing registered, so I was unable to access the article visible only for registered users. Strange. An error message would have been nice here ...