We are developing a professional school extension (JEEMA School) for Joomla platform with lots of functionalists.  Some of the key functionalists are listed below.

1. Custom profiles and profile fields

2. Student Management

3. Staff Management

4. Parent/Guardian Management

5. Siblings and singe parent login

6. Front-end dashboard with key information

7. Email and SMS notifications

8. Cron / Background processes

9. Staff Leave Management

10. Staff Payroll Management

11. Courses & Sections (multiple levels)

12. Batches, Subjects, Electives

13. Student Attendance

14. Exams & Results

Etc.. Etc… Etc…

Check this page for more updates.  The ETA for the first stable release would be around Christmas 2015

Today while developing my Joomla component I was told to show custom error message while doing javascript validation at admin side.

Based on the Joomla documentation you can set a field as required as below.

<field name="totalsms" 
 type="text" 
 label="Sample Admin Field"
 size="40" 
 default="" 
 required="true" />

The above field will be automatically validated at admin side if the form is submitted without giving a value in it.

However my requirement was to validate a field’s value based on another field’s value.  In my admin form I have 2 fields named as ‘Need Book’ and ‘Which Book’.  Need book is a list button where Yes or No will be displayed.  If the admin selected ‘Yes’ then the next field Which Book should be validated for mandatory.

Here is what I did today.  Definitely there would be better ways to do.

In Joomla admin, the error messages are displayed as below.

joomlaerr

These error messages are displayed under a div container ‘system-message-container’.  My idea is to hack this div container and show my custom error message.

Below are the javascript methods I introduced

This javascript method will create a new div container with the provided message and add them inside system-message-container.

function addCustomMessage(message, uniqid, css){
 css = typeof css !== 'undefined' ? css : '';
 
 var errcontainer = document.getElementById('system-message-container');
 var pnode = document.createElement("p");
 var textnode = document.createTextNode(message);
 pnode.appendChild(textnode);
 var divnode = document.createElement("div");
 divnode.setAttribute('id',uniqid);
 var already_available = document.getElementById(uniqid);
 if(already_available) return;
 
 divnode.className = "alert "+css;
 divnode.appendChild(pnode);
 errcontainer.appendChild(divnode);
}

This javascript method is to delete the newly created div container

function removeCustomMessage(uniqid){
 var parent = document.getElementById("system-message-container");
 var child = document.getElementById(uniqid);
 if(child){
  parent.removeChild(child);
 }
}

Below is the javascipt code which does the validation in my default.php

if(document.getElementById('jform_need_book').value == 'YES' && document.getElementById('jform_which_book').value == ''){
  addCustomMessage("Please select a book", 'val_select_book', 'alert-error');
  return;
 }else{
  removeCustomMessage('val_select_book');
 }

Thats all.

You need to contact the component owner and get the latest component and upgrade the existing component. This will automatically update the version number to the latest version that comes in the latest package.

However some of technical consultants do the 3rd party component upgrade manually by uploading the PHP files manually via FTP and running the SQL commands manually via PhpMyAdmin.

The common mistake make consultants will do to update the version number. Joomla stores the version number in 2 different tables.

#_extensions
#_schemas

Login to PhpMyAdmin and search the component in #_extensions table. Edit the corresponding record and locate the version number in manifest_cache field. Carefully replace the existing version number with the new version number and save the record

Navigate to #_schemas table and search for the same component. Edit the corresponding record and replace the existing version number with the new version number and save the record.