- Details
- Written by: Stanko Milosev
- Category: Extensions
- Hits: 6836
If you want instead of adding event to button in custom form to add ajax to some link (javascript function) here is how you can do it:
function show(options)
{
$('update').innerHTML = '<div align=".'"center"'.">
<img src="/.'"images/ajax-loader.gif" width="66" height="66"/>'."<p/>Please wait</div>'
var ajaxRequest = new Ajax('index.php', {
method: 'get',
onComplete: function(response) {
$('update').innerHTML = response;
}
});
ajaxRequest.request(options);
}
Where options are variables which you sent through ajax, for example:
<a onclick="show('option=com_regdavzav&task=result&format=raw&pageNumber=2&naziv=ANGEL')" href="#">2</a>
It seems that mootools which are coming with Joomla! old, so documents about mootools which are in Joomla! you can find here.
- Details
- Written by: Stanko Milosev
- Category: Extensions
- Hits: 7400
When creating component, in manifest file, xml, name of the component must be name of file which are you using.
This example will work:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.0" type="component">
<name>Component</name>
<author>Stanko MiloL?ev</author>
<version>1.0.0</version>
<description>Search for taxpayers from database</description>
<files>
<filename component="com_regdavzav">Component.php</filename>
</files>
<install>
</install>
<uninstall>
</uninstall>
<administration>
<menu>Registar davÄTnih zavezancev</menu>
</administration>
</install>
This example will not work:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.0" type="component">
<name>Component</name>
<author>Stanko MiloL?ev</author>
<version>1.0.0</version>
<description>Search for taxpayers from database</description>
<files>
<filename component="com_regdavzav">com_component.php</filename>
</files>
<install>
</install>
<uninstall>
</uninstall>
<administration>
<menu>Registar davÄTnih zavezancev</menu>
</administration>
</install>
Because <filename component="com_regdavzav">com_component.php</filename>, com_component.php is different from Component as it is defined in <name>Component</name>
- Details
- Written by: Stanko Milosev
- Category: Extensions
- Hits: 8783
After reading few books, digging Internet, finally I found way to use mootools Ajax in Joomla!
Point is in format=raw. If you have any component, if you add format=raw in link, for example
index.php?option=com_ajax&Itemid=60&format=raw you will see only result of component, and that what you need for ajax result.
You can use combination of "standard" ajax and Joomla! but in that case you would loose some of functionality of Joomla!, so better way is to use straight Joomla!
Here is my example, which you can download from here:
<?php // no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// add mootools
JHTML::_('behavior.mootools');
// Check the task parameter and execute appropriate function
switch( JRequest::getVar( 'task' )) {
case 'result':
searchResult();
break;
default:
search();
break;
}
function searchResult()
{
echo JRequest::getVar( 'name' );
}
function search()
{
$doc =& JFactory::getDocument();
?>
<form method="post" action="<?php
echo JRoute::_('index.php?option=com_regdavzav&task=result&format=raw'); ?>
" id="form1">
Ajax test: <input type="text" value="" class="flatinput" size="45" name="name" id="name"/>
<input type="submit" name="button132" id="button1" value="Submit"/>
</form>
<div id="update"></div>
<?php
$js = "window.addEvent('domready', function()
{
$('form1').addEvent('submit', function(e)
{
// Stop the form from submitting
new Event(e).stop();
// Update the page
this.send({ update: $('update') });
});
});";
$doc->addScriptDeclaration($js);
}
?>
With JHTML::_('behavior.mootools'); you are including mootools framework in your component. $doc =& JFactory::getDocument(); you will use for adding javascript ($js = ...) And in <div id="update"></div> you are actually updating page with informations from Ajax. <div> must be in function search() otherwise you will have problems (to me happened that I always added result, instead of cleaning previous).
I hope that this is all.
- Details
- Written by: Stanko Milosev
- Category: Extensions
- Hits: 13003
In this category I will try to write about creating extensions in Joomla!
First, I will start with creating components.
This example, I took from Professional Joomla!, which I simplified, this is not MVC, as much as I think, but it is good as a starting point.
We will create three files: admin.hellopost.php, hellopost.php and hellopost.xml.
hellopost.xml we need for installation and it look like this:
<?xml version="1.0" encoding="utf-8"?>
<install version="1.5.0" type="component">
<name>HelloPost</name>
<author>Stanko Milosev</author>
<version>1.0.0</version>
<description>Hello world, posting from form</description>
<files>
<filename component="com_hellopost">hellopost.php</filename>
</files>
<install>
</install>
<uninstall>
</uninstall>
<administration>
<menu>Hello post</menu>
<files>
<filename component="admin.hellopost">admin.hellopost.php</filename>
</files>
</administration>
</install>
Now hellopost.php:
<?php
/**
* @version $Id: guestbook.php 5203 2007-06-15 02:45:14Z DanR $
* @copyright Copyright (C) 2007 Dan Rahmel. All rights reserved.
* @package Guestbook
* This component displays guestbook entries and allows the addition
* of entries from registered users.
*/
// no direct access
defined( '_JEXEC' ) or die( 'Restricted access' );
// Check the task parameter and execute appropriate function
switch( JRequest::getVar( 'task' )) {
case 'hello':
hello();
break;
default:
displayHello();
break;
}
// Process data received from form.
function hello() {
echo JRequest::getVar( 'hello' );
}
// Output a list of guestbook entries
function displayHello() {
?>
<form action="index.php?option=com_hellopost&task=hello" method="post" id="formica" name="formica">
Say:
<input type="text" size="20" name="hello" value="Hello world"/>
<input type="submit" value="Submit" name="Submit"/>
</form>
<?php
}
?>
With JRequest::getVar( 'task' ) we get variables which we posted ($_POST in pure PHP), my problem is that I coudn't do it with get method.
In case that JRequest::getVar( 'task' ) is equal hello (in PHP would be $_POST['task']=='hello'), than we call hello function in other case we call displayHello.
admin.hellopost.php I didn't change, but I think that file could be even empty. Component you can download from here.