• Alternative Captcha Plugin

    We were recently asked whether it was possible to use an alternative 'captcha' plugin instead of the standard Joomla supplied Google ReCaptcha plugin with our Issue Tracker component.

    The reason for the request was because the site in question did not have any outside access, so was unable to connect to Google to check the captcha, hence the site need a captcha mechanism that would be totally self-contained. ( In the case of Google ReCaptcha the request is sent to for the captcha verification).

    The details in this article are based upon work enabling the Easy Calc Check Plus (henceforth known as ECC+) plugin available upon the JED (Joomla Extensions Directory). This is not to say that other captcha plugins would or do not work, just that we only experimented with this particular plugin. We are assuming that the version of Issue Tracker is 1.6.10 and that the version of ECC+ is 3.1.1. Other versions will probably also work but have not been tested and any specified change line numbers will probably be different.

    There were several steps involved in getting the plugin to work successfully with Issue Tracker and these are documented below:

    1) Download the version of the ECC+ plugin from the JED and install.

    Configure the ECC+ plugin.

    Under the 'Additional Information' tab one needs to enable the 'Custom Call' option and set the value to yes.

    If the ECC+ plugin is to be used for any other component then this would be a suitable time to also configure the plugin for those as well, which is beyond the scope of this article. IN our tests we only wanted to use the ECC+ plugin fo rIssue Tracker itself so disabled it for login, contact page etc.

    Once all changes are made and saved then the plugin can be enabled.

    2) Issue Tracker uses the captcha mechanism in the issue submission form when a user is not logged in, for additional checks upon the person submitting the issue. We first need to create a template override for issue form.

    Copy the relevant files and we need to edit the copied edit_user_details.php file.

    At the end of the file make the following changes:

    Comment out the 'div' with the id of recaptcha and add the line:

    <?php echo "{easycalccheckplus}" ?>

    The resulting code (at the end of the file) will now look like the following:

    <?php endforeach;
    if ($parameters->get('captcha') == "recaptcha" ) {
    $dispatcher = JEventDispatcher::getInstance();
    <?php echo "{easycalccheckplus}" ?>
    <!-- div id="recaptcha"></div -->

    3) Ensure that the Issue Tracker component is not configured to use Google Recaptcha, otherwise our usage of ECC+ will not work.

    4) We also need to make a small change to the template override edit.php file

    In the issue tracker file components/com_issuetracker/views/form/tmpl/edit.php just after line 70 we add the line:

    window.location = "yoururl";

    where yoururl is a redirection url where you want to redirect your users when they cancel out of the issue creation. i.e.

    window.location = ""

    where in this example it is (usually) a home page. Change it to what ever you want for your site.

    We choose suitable article ids so that when the user cancels out of the firm submission the redirection will be to a valid site page.

    You could also comment out the line 70 itself, but this is not mandatory.
    Joomla.submitform(task, document.getElementById('issue-form'));
    by adding a double slash at the front.

    Thus the final code would look something like this:

    <script type="text/javascript">
    Joomla.submitbutton = function(task) {
    if (task == 'itissues.cancel') {
    Joomla.submitform(task, document.getElementById('issue-form'));
    window.location = "";
    } else {

    Aside: One could be more adventurous and select a page from the users previous browser history but they is something we will leave to anyone who wishes to try as an exercise.

    5) Now we need to modify the ECC+ plugin slightly.

    Go to the plugins/system/easycalccheckplus/ directory and edit the file easycalccheckplus.php

    After line 593 (approx) which depending upon the specific version of ECC+ will be immediately after the setting of the $request variable at the start of the performChecks method.

    [In ECC+ version 3.1.1 this is after line 891.]

    We need to add the following few lines:

    In the tested version it is immediately after the call to the performChecks routine and the setting of the $request variable.

    // echo "<pre>";var_dump($request);echo "</pre>";
    if ( array_key_exists('task',$request) && $request['task'] == "itissues.cancel") {
    return true;
    if ( $request['option'] == 'com_content' ) return true;
    // die;

    We have left the echo and die statements in the above, and commented them out in case one wishes to refine the redirection further. The above is simplistic but it illustrates the method.

    There is an assumption that the home page article id is a '1', and you could extend the second test similar to the following if you want to be more specific (and perhaps should be).

    if ( $request['option'] == 'com_content' && $request['id'] == 1 && $request['view' == 'article' ) return true;

    These are required to prevent the following problems:

    a) When the issue form is cancelled the ECC+ plugin is still invoked so the first few lines provide a 'positive' response back to the form submission. We are specifically checking the 'task' variable.

    b) The second set of lines ensure that when we next redirect to a specific page on the site that the ECC+ checks also work correctly. We are assuming that the page we are redirecting to is not itself subject to an 'captcha' requirements, which is the usual case for the home page.

    6) Now test out the changes. Go to the Issue Tracker create issue form on the site as a guest use and create an issue. Test by entering the issue without completing the captcha. Next test using a valid captcha response. Finally test 'cancelling' out of the issue creation and you should be redirected to the page specified in our settings above.

    These tests were repeated against ECC+ version 3.1.1 and Issue Tracker 1.6.10 and worked flawlessly on 17th Feb 2016. Note that this is not something that we specifically recommend but it will work in the situation as described by the raiser of the question. Other captcha plugins are expected to work similarly although specific details will vary as to implementation.

  • Changelog

    Timesheet Changelog

    This document shows the changes made to each release. Details of changes for releases not yet made publicly available are the confirmed changes already made for the release although this can not be guaranteed, since problems may be revealed during final testing necessitating changes.

    Timesheet 1.0.3

    ~ Correct edit string in front end.
    # Change to use release 4.13.3 of free-jqGrid.
    # Change to use getCol method to determine total hours instead of footerData which stopped working in free-jqGrid 4.13.2.
    ~ Modify front end CSS for form labels.
    # Rewrite front end router to use Router class.
    + Add menu link option to display timecode detail from timecodes display.
    + New column usage in timesheet_codes to provide user details of when to use the time code.
    + New string for entering introductory text in the front end timecodes view.

    Timesheet 1.0.2

    # Change table character collation set to utf8mb4_unicode_ci as used by J3.5 RC (Beta 2 used utf8mb4_general_ci).
    + Add username change to system plugin for sheet table.
    - Remove username foreign keys on user and sheet table.
    ~ Correct a few strings.
    + Add Live Update view.

    Timesheet 1.0.1

    + Add system plugin to handle user changes in Joomla.
    # Correct the JedChecker PH1 and PH2 errors ready for JED submission.
    # Correct problem when deleting a timesheet user.
    + Add additional processing when removing user approval privilege.
    - Remove a few redundant files.
    ~ Change seterror calls to throw exceptions.
    # Correct minor errors preventing back end lists sorting upon all fields.
    # Correct front end directional sorting of timesheets.

    Timesheet 1.0.0

    + Initial Release

  • FAQ

    This Macrotone Joomla Timesheet FAQ (Frequently Asked Questions) is intended to assist you in providing answers to some of the most commonly asked questions. It is intended to supplement the main documentation.

    How do I get hold of a copy of the component?

    The release is now available for download in the 'Download' directory.

    Which version of Joomla does it work with?

    The initial release was for Joomla 3.4, but it runs on the current release versions of Joomla.

    Will it run on Joomla 3.5?

    The component has been tested on the Beta 2 release of Joomla 3.5. This is the current latest release of Joomla 3.5 at the time of component release.

    What is a timesheet?

    From Wikipedia: A timesheet (or time sheet) is a method for recording the amount of a worker's time spent on each job. Traditionally a sheet of paper with the data arranged in tabular format, a timesheet is now often a digital document or spreadsheet.

    Are there any front end features?

    Control of entered timesheets is performed on site front end. Suitably authorised users can create and edit the timesheets. Approvers can authorise the prepared timesheets on the front end.

    Does it use Joomla ACLs?

    Yes it is necessary to grant the registered user the ACL permissions 'edit own' and 'create'.

    Where is the documentation?

    The full product documentation is available as web pages and in PDF format. The documentation covers all releases.

    Are any Joomla core files changed?

    No. The component does not modify any Joomla files.

    How does one print out a timesheet?

    The product documentation provides details of how the print output may be configured. An example is also provided of how to use the 'HTML boxes' to get one started.

    Can an approved timesheet be re-edited.

    Once a timesheet is approved it can not usually be changed by the user. It is possible for a site administrator via the back end to unlock an approved timesheet for subsequent editing by a user.

    What happens when I delete a user?

    This depends upon where one deletes the user from. There are two situations. The first is if one deletes a user in the timesheet component itself. In this case the user is placed in the trash, and they still remain as a Joomla user. To completely remove them from the timesheet component it is necessary to 'empty the trash' when the any timesheets submitted by the user will be removed from the system and any users for whom they are a timesheet approver will have this 'approvers list' modified to remove the 'removed' user.

    The second situation is when the user is deleted from the Joomla system itself, i.e. from the 'Joomla Users' component. In this situation just prior to the user being removed from the #__users table the user will also be removed from the timesheet component along with any timesheets them may have submitted. They are also removed from any other timesheet users 'approvers' list.

    What does the system plugin do?

    The system plugin provided in release 1.0.1 and above serves to 'synchonise' the Joomla user details with the timesheet user details. The plugin has a single parameter which is whether to automatically add any new Joomla users to the Timesheet system when they are initially created. Any subsequent user changes such as an email change or a name change will automatically be reflected in the timesheet tables if the plugin is enabled. The plugin also provides the linkage that controls the actions when a user is deleted from the Joomla user tables.

    Are other languages supported?

    When released only the English language was available, however the component was written specifically to be able support other languages. Some translations have been provided by the community and are available for download. We welcome any submitted language translations that users might like to contribute. These would then be made available to the whole community.

    The component uses the Transifex system and there are a few additional languages being provided. Please see the appropriate pages on the site for details of the currently available translations.

    When displaying a timesheet the options and boxes appear but the grid with the entered data is not shown, also none of the buttons along the top do anything either (eg. save, close etc.)

    This sounds like a classic JavaScript conflict and one should inspect the console window to determine whether there are any errors shown. One possible cause might be if JQuery is not loaded in the site template or even if multiple copies of jQuery are being loaded by the site template. By default the Timesheet component does not load jQuery, especially as most modern templates, particularly this based upon Bootstrap already load jQuery by default. There should usually only be one copy of jQuery required by any site template, regardless of the number of components that may use it. There is a component option to turn on the loading if jQuery if it is not already loaded by either the template itself or another component.

  • Timesheet component

    Macrotone Timesheet is a component which allows employees to enter timesheet information that may later be printed and/or distributed to the company accounts for processing. The idea is that employees have a central mechanism for time entries against specific project (or account) codes.

    At initial release it runs upon Joomla 3.4 the current Joomla release.

    Change log

    Translation Credits

    Requested Features

    Release Versions

    Release 1.0.3

    Update to use latest free-jqgrid version, additional timecode display fields.

    Release 1.0.2

    Change table character set and test against latest Joomla 3.5 release.

    Release 1.0.1

    Fixes to pass JED certification tests and minor improvements.

    Release 1.0.0

    The is the initial release of the component.

    Frequently Asked Questions

    Timesheet overview.

    The documentation in PDF format and also as web pages is available upon the site. [Please see links under 'Joomla Extensions' on the site.] This document only presents a brief overview of the functionality.

    Within the back end of the site one can add existing Joomla users to the timesheet tables, thus enabling them to create/edit their own timesheets. One also defines the users who can 'approve' and already completed timesheet, either at this stage or later.

    The back is is also where the account/project codes are created and maintained. In the initial release the time codes are visible via a front end display, but are not editable or created on the front end.

    The front end is where users will create their timesheet, and where they are generally approved. The timesheet' grid' is where the hours assigned against each project (or account) code is performed. All grid editing occurs solely in the users browser. The grid data is not saved to the database until the user presses the 'Save' button.

    Note that time sheet grid editing is not implemented in the back end by design.

    The component has an option to ensure that each user can only submit one timesheet for each defined weekly period.

    We trust this brief overview is sufficient to cover the main features of the component and you are requested to look at the full PDF documentation for more information.

    If you find this component useful, you are requested to raise a review on the Joomla Extensions Directory, and possibly consider making a donation to assist in providing support and future enhancements.

    Translation Credits

    We would like to thank all the people who have donated their time and effort in providing translations for our extensions, either individually or as part of a translation team, so that they may be used by the wider community.

    Requested features being considered for future releases.

    Requested Change Possible Version for implementation
    Ability to provide notifications when timesheets are ready for approval ?
    Add ability for full grid editing of timesheets to back end. Subject to justification. ?
    Management reports upon projects etc. 1.1.0 (?)
Go To Top

The Macrotone Consulting Web site would like to use cookies to store information on your computer, to improve our website. Cookies used for the essential operation of the site have already been set. To find out more about the cookies we use and how to delete them, see our Privacy Policy.

I accept cookies from this site.