<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0">
	<channel>
		<title><![CDATA[xajax Forums]]></title>
		<link>http://community.xajaxproject.org/</link>
		<description><![CDATA[The most recent topics at xajax Forums.]]></description>
		<lastBuildDate>Mon, 14 Jun 2010 23:39:20 +0000</lastBuildDate>
		<generator>PunBB</generator>
		<item>
			<title><![CDATA[ajax_register(XAJAX_CALLABLE_OBJECT)  with list of methods]]></title>
			<link>http://community.xajaxproject.org/topic/7652/ajaxregisterxajaxcallableobject-with-list-of-methods/new/posts/</link>
			<description><![CDATA[With the current registering of functions or class/methods, it a bit of a black white situation.

With ajax->register(function blabla)   you register one method at a time.  If you have quite a few methods, its better to use the XAJAX_CALLABLE_OBJECT  call in register...   That's very nice... 

But...  It registers all the methods... Even the one I don't wan't to be called in any way ( security ).

In my way of programming, i now can use a fully extendable class which inherits another class (extends feature). 
So for example i have :

[code]class a extends b {
funtion __construct() {
    parent::__construct();

}

function c {}

function d{}

}[/code]
with the callable object way, even the __construct() is registered. And in my opinion it is unwanted.

So at the end.. i would suggest a way of making a $xajax->register(XAJAX_CALLABLE_OBJECT, $classinstance , array( methods 2 B registered)).]]></description>
			<author><![CDATA[dummy@example.com (sinza)]]></author>
			<pubDate>Mon, 14 Jun 2010 23:39:20 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/7652/ajaxregisterxajaxcallableobject-with-list-of-methods/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[LanguageManager]]></title>
			<link>http://community.xajaxproject.org/topic/8359/languagemanager/new/posts/</link>
			<description><![CDATA[Hey guys.

Could somebody explain why in the language inc files (de or nl) you are doing:
$objLanguageManager =& xajaxLanguageManager::getInstance()
?

the include happens in the configure of the LanguageManager, so a simple $this->register would do the job a little faster or am i missing something important? or is this just for 'nice' code viewing reasons?

I've had instances on a specific server, where xajax didn't respond anymore, and when i changed it to $this->register everything worked again, its like it was in a loop or something!?

P.s. for neat code reasons, i would not put the english strings in the construct... i would make a handler that defaults the language if needed to english, and do a normal configure...?

Regards]]></description>
			<author><![CDATA[dummy@example.com (sinza)]]></author>
			<pubDate>Mon, 14 Jun 2010 13:48:14 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/8359/languagemanager/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[change type of methods to avoid errors]]></title>
			<link>http://community.xajaxproject.org/topic/8422/change-type-of-methods-to-avoid-errors/new/posts/</link>
			<description><![CDATA[Hello

I change the source manually, but that is a really bad solutions especially for giving out xajax based plugins.

$xajax->_detectURI() as public method would be extremely useful.


ERROR: Call to private method xajax::_detectURI() 
xajax.inc.php line 911 

//since >= 5
ERROR: Call to protected xajaxCustomResponse::xajaxCustomResponse() from context 'xajaxScriptPlugin'
/xajax/trunk/xajax/xajax_core/plugin_layer/xajaxScriptPlugin.inc.php on line 243

-> xajax/trunk/xajax/xajax_core/xajaxResponse.inc.php	Line 1968
- protected function xajaxCustomResponse($sContentType)
+  public function xajaxCustomResponse($sContentType)

//i uncomment the call to this method, cause i have no clue what this error is about, can one enlighten me pls?
Call to undefined method  xajaxCustomResponse::debug() in /xajax/trunk/xajax/xajax_core/xajaxResponseManager.inc.php on line 231

//maybe a little coding error?
[code]
    public function debug($sMessage)
    {
        $this->aDebugMessages[] = $sMessage;
    }

    /*
        Function: send

        Prints the response object to the output stream, thus sending the response to the client.
    */
    public function send()
    {
        if (NULL != $this->objResponse) {
            foreach ($this->aDebugMessages as $sMessage)
[/code]
                 [b]-[/b][color=Red]$this->objResponse->debug($sMessage);[/color]
                 [b]+[/b][color=Green]$this->debug($sMessage);[/color]
[code]           
        $this->aDebugMessages = array();
            $this->objResponse->printOutput();
        }
    }
[/code]

greetings

sin]]></description>
			<author><![CDATA[dummy@example.com (sinza)]]></author>
			<pubDate>Sat, 12 Jun 2010 10:43:37 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/8422/change-type-of-methods-to-avoid-errors/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[How I can write a Chat?]]></title>
			<link>http://community.xajaxproject.org/topic/6321/how-i-can-write-a-chat/new/posts/</link>
			<description><![CDATA[Hey, 
can anyone help my to write a chat with Xajax and PHP?
Thx]]></description>
			<author><![CDATA[dummy@example.com (dannic)]]></author>
			<pubDate>Sun, 21 Feb 2010 02:57:32 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/6321/how-i-can-write-a-chat/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[[alpha] Dynamic registering Methods and Classes]]></title>
			<link>http://community.xajaxproject.org/topic/6307/alpha-dynamic-registering-methods-and-classes/new/posts/</link>
			<description><![CDATA[Hi,

yesterday i had a session with CtC about how we can register Classes and/or Functions dynamicly.

The sense behind that is, how we can call an ajax-function, which includes another php-class, and that class provides new ajax-functions.

After a little time we get a first solution :

[code php]
index.php
<?php
ini_set("display_errors",1);
error_reporting(E_ALL ^E_NOTICE);
 session_start();
require_once( 'class1.php');
$core = './xajax/xajax_core';
require_once( $core . '/xajax.inc.php' );

$xajax = new xajax();

$xajax->configure('javascript URI', 'xajax/');


$class1 = new class1($xajax);

$configuration = $_SESSION['object_loader_configuration'];
if ( is_array( $configuration ) )
{
	//$session = print_r( $_SESSION );
	//echo $session;
	
foreach ($configuration as $className => $classConfiguration)
{
	foreach ($classConfiguration as $includeFile => $methods)
	{
		require $includeFile;
		$class = new $className( $xajax );
		foreach ($methods as $method)
		{
			$xajax->register(XAJAX_FUNCTION, array(&$class, $method));
		}
	}
}
}


$xajax->processRequest();
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
        "[url]http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-transitional.dtd[/url]">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>Dynamic Classes </title>
<?php $xajax->printJavascript(); ?>
</head>
<body>
	<h1>classTesT</h1>
	<?=$class1->proceed()?>
	<?=$session?>
</body>
</html>

[/code]

[code php]
class1.php
<?php

class class1
{
	public function __construct( $xajax )
	{
		$this->xajax = $xajax;
		
		$xajax->registerFunction(array('ajax_class1_test', $this, 'ajax_class1_test' ) );		
		$xajax->registerFunction(array('ajax_class1_test2', $this, 'ajax_class1_test2' ) );		
	}
	
	public function proceed()
	{
		return '<a href="javascript:void(0);" onclick="xajax_ajax_class1_test2()">removeme</a><br><a href="javascript:void(0);" onclick="xajax_ajax_class1_test()">test</a><div id="test"></div>'; 
	}
	
	public function ajax_class1_test()
	{
		$response = new xajaxResponse();
		
		require_once( 'class2.php');
		
		$class2 = new class2($this->xajax);
		
		$configuration = array();
		if (isset($_SESSION['object_loader_configuration']))
		{
			$configuration = $_SESSION['object_loader_configuration'];
		}
		
		$configuration['class2'] = array(
			'class2.php' => array(
				 'ajax_class2_test'
				)
			);
		
		$_SESSION['object_loader_configuration'] = $configuration;		
		
		
		$response->assign('test', 'innerHTML', $class2->proceed() );
		
		return $response;
	} 
	
	public function ajax_class1_test2()
	{
		$response = new xajaxResponse();
		
		$configuration = array();
		if (isset($_SESSION['object_loader_configuration']))
		{
			$configuration = $_SESSION['object_loader_configuration'];
			
			if ( array_key_exists( 'class2', $configuration ) )
			{
				unset( $configuration['class2'] );
			}
		}
		
		$_SESSION['object_loader_configuration'] = $configuration;		
		
		
		$response->append('test', 'innerHTML', 'but it will not work' );
		
		return $response;
	}
}

?>
[/code]

[code php]
class2.php
<?php

class class2
{
	public function __construct( $xajax )
	{
	}
	
	public function proceed()
	{
		return '<a href="javascript:void(0);" onclick="xajax.request( { xjxfun: \'ajax_class2_test\' }, { parameters: arguments } );">test</a>'; 
	}
	
	public function ajax_class2_test()
	{
		$response = new xajaxResponse();
		
		$response->alert('Hello World');
		
		return $response;
	}
}

?>
[/code]

maybe we  or CtC will write a plugin for that.

Greets

Oliver]]></description>
			<author><![CDATA[dummy@example.com (DocG)]]></author>
			<pubDate>Wed, 03 Feb 2010 21:36:56 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/6307/alpha-dynamic-registering-methods-and-classes/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[Multiple instances of the same class.]]></title>
			<link>http://community.xajaxproject.org/topic/8174/multiple-instances-of-the-same-class/new/posts/</link>
			<description><![CDATA[Hi All,

Have a look at this post:
[url]http://community.xajaxproject.org/post/28708/#p28708[/url]

It deals with the fact that XAJAX doesn't seem to be able to differentiate between
2 instances of the same class setup using register->(XAJAX_CALLABLE_OBJECT,...).

Seems like this should be doable but the instances would have to each save their states
and retrieve wneh the server loads the page again - or some such hack.

I guess the feature request would be add the instance name to the generated calls on the 
browser and have the server side code recognize them.

Ed]]></description>
			<author><![CDATA[dummy@example.com (edrobinson)]]></author>
			<pubDate>Sun, 13 Sep 2009 17:05:50 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/8174/multiple-instances-of-the-same-class/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[getFormValues support for ckeditor]]></title>
			<link>http://community.xajaxproject.org/topic/8055/getformvalues-support-for-ckeditor/new/posts/</link>
			<description><![CDATA[I'm not sure if this the right forum for this post. 
I needed getFormValues to support a form which contains ckeditor, my problem was that I use a server generated form so i don't now how many ckeditor elements are in the form and how they are called.
I use the feature to replace the textaerea element by class Attribute. 
So I changed my getFormValue JS to recognize these elements by class now I only have to set the class Attribute of the textarea to "ckeditor", the ckeditor script replaces the textarea automaticly and my xajax script sends the data to the server, no need for special script for each editor. 
Maybe there are better methods out there but this is a very easy one. I think this feature would be nice for xajax 0.6


[code]xajax.tools._getFormValue = function(aFormValues, child, submitDisabledElements, prefix)
{
    if (!child.name)
        return;
        
    if ('PARAM' == child.tagName) return;
        
    if (child.disabled)
        if (true == child.disabled)
            if (false == submitDisabledElements)
                return;
                
    if (prefix != child.name.substring(0, prefix.length))
        return;
        
    if (child.type)
        if (child.type == 'radio' || child.type == 'checkbox')
            if (false == child.checked)
                return;

    var name = child.name;

    var values = [];

     if ('select-multiple' == child.type) {
         var jLen = child.length;
         for (var j = 0; j < jLen; ++j) {
             var option = child.options[j];
             if (true == option.selected)
                 values.push(option.value);
         }
     } else if(child.className =='ckeditor')
     {
         eval("values=CKEDITOR.instances."+child.name+".getData()");
     
     }else{
         values = child.value;
     }
     if(name.indexOf('_')>=0)
     {
              
      name=name.replace(/_(\w.+)_/,"[$1]_");    
     name=name.replace(/_(\w.+)/,"[$1]");
    
    }
    var keyBegin = name.indexOf('[');
    if (0 <= keyBegin) {
        var n = name;
        var k = n.substr(0, n.indexOf('['));
        var a = n.substr(n.indexOf('['));
        if (typeof aFormValues[k] == 'undefined')
            aFormValues[k] = [];
        var p = aFormValues; // pointer reset
        while (a.length != 0) {
            var sa = a.substr(0, a.indexOf(']')+1);
            
            var lk = k; //save last key
            var lp = p; //save last pointer
            
            a = a.substr(a.indexOf(']')+1);
            p = p[k];
            k = sa.substr(1, sa.length-2);
            if (k == '') {
                if ('select-multiple' == child.type) {
                    k = lk; //restore last key
                    p = lp;
                } else {
                    k = p.length;
                }
            }
            if (typeof p[k] == 'undefined')
                p[k] = []; 
        }
        p[k] = values;
    } else {
        aFormValues[name] = values;
    }
}
[/code]]]></description>
			<author><![CDATA[dummy@example.com (scamper)]]></author>
			<pubDate>Sun, 28 Jun 2009 14:44:42 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/8055/getformvalues-support-for-ckeditor/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[File Uploading - A possible attempt]]></title>
			<link>http://community.xajaxproject.org/topic/902/file-uploading-a-possible-attempt/new/posts/</link>
			<description><![CDATA[Hey there,

As some people in the forum may know, I've been trying to get file uploads working with xajax.
Here's the first version of the file uploading stuff.  It makes a hidden iframe and handles all the uploading, so you dont have to update your page.  At the moment it can't respond with xajax commands yet.

The javascript file is at
[url]http://www.concepts.net.nz/xajax/xajax_js/xajax_file_uploads.js[/url]

You can include it after you use the $xajax->printJavascript(); command
[code]<head>
    <?php $xajax->printJavascript(); ?>
    <script type="text/javascript" src="xajax_js/xajax_file_uploads.js"></script>
</head>[/code]
and then you need is a registered xajax function named file_upload
[code]function file_upload()
{
    $objResponse = new xajaxResponse();
    $objResponse->addAlert(print_r($_FILES,true));
    return $objResponse->getXML();
}
$xajax->registerFunction("file_upload");[/code]
which will have access to the $_FILES global (as above)


To create an xajax file uploader, you can either use
    xajax.newFileUpload(parent, id);
which creates a new file upload after the 'parent' id and given the name/id of 'id'
[i]or[/i]
you can use your existing file inputs by giving them a className of "xajax_file" and running
    xajax.initFileInputs();
which will convert all the file inputs into xajax file uploaders

Questions/Comments required :)

Tested in Opera, IE, Firefox and Safari.  Safari has a bug that it wont upload the file as soon as you choose one but i've tried to get around that by getting it to submit onmouseout.]]></description>
			<author><![CDATA[dummy@example.com (Faeroth)]]></author>
			<pubDate>Sat, 30 May 2009 19:29:45 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/902/file-uploading-a-possible-attempt/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[Innecesary newlines]]></title>
			<link>http://community.xajaxproject.org/topic/5697/innecesary-newlines/new/posts/</link>
			<description><![CDATA[Hi, this might be one of the most irrelevant features requested on this forum, still is easy and quick.

The current javascript code that gets printed in the HEAD, will automatically add "\n" at the beginning of the print process. Shouldn't that depend on the developer? Some of us like to keep the code very clean, and that also covers blank lines in-between the code.

[code]<meta name='robot' content='all' />
                                                            <-------- THIS ***
<script type='text/javascript' charset='UTF-8'>
/* <![CDATA[ */
try { if (undefined == xajax.config) xajax.config = {}; } catch (e) { xajax = {}; xajax.config = {}; };
xajax.config.requestURI = 'http://localhost/_template/';
xajax.config.statusMessages = true;
xajax.config.waitCursor = true;
xajax.config.version = 'unknown';
xajax.config.legacy = false;
xajax.config.defaultMode = 'asynchronous';
xajax.config.defaultMethod = 'POST';
/* ]]&gt; */
</script>
<script type='text/javascript' src='http://localhost/_template/lib/xajax/xajax_js/xajax_core.js' charset='UTF-8'></script>
<script type='text/javascript' charset='UTF-8'>
/* <![CDATA[ */
window.setTimeout(
 function () {
  var scriptExists = false;
  try { if (xajax.isLoaded) scriptExists = true; }
  catch (e) {}
  if (!scriptExists) {
   alert('Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: http://localhost/_template/lib/xajax/xajax_js/xajax_core.js');
  }
 },
2000
);
/* ]]&gt; */
</script>
                                                            <-------- AND THIS ***
<script type='text/javascript' charset='UTF-8'>
/* <![CDATA[ */
xajax_msg = function() { return xajax.request( { xjxfun: 'msg' }, { parameters: arguments } ); };
/* ]]&gt; */
</script>[/code]
I know i can remove the "\n" by myself, but it would be nice to have a compact javascript printed out, instead of that big pile of code. Better yet, an argument could be called that prints the output in a compressed way. For example:

[code]<script type='text/javascript' charset='UTF-8'>try{if(undefined==xajax.config)xajax.config={};}catch(e){xajax={};xajax.config={};};xajax.config.requestURI='http://localhost/_template/';xajax.config.statusMessages=true;xajax.config.waitCursor=true;xajax.config.version='unknown';xajax.config.legacy=false;xajax.config.defaultMode='asynchronous';xajax.config.defaultMethod='POST';</script><script type='text/javascript' src='http://localhost/_template/lib/xajax/xajax_js/xajax_core.js' charset='UTF-8'></script><script type='text/javascript' charset='UTF-8'>window.setTimeout(function(){var scriptExists=false;try{if(xajax.isLoaded)scriptExists=true;}catch(e){}if(!scriptExists){alert('Error: the xajax Javascript component could not be included. Perhaps the URL is incorrect?\nURL: http://localhost/_template/lib/xajax/xajax_js/xajax_core.js');}},2000);</script><script type='text/javascript' charset='UTF-8'>xajax_msg=function(){return xajax.request({xjxfun:'msg'},{parameters:arguments});};</script>[/code]]]></description>
			<author><![CDATA[dummy@example.com (asantos)]]></author>
			<pubDate>Wed, 27 May 2009 15:09:19 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/5697/innecesary-newlines/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[Extended getFormValues(...)]]></title>
			<link>http://community.xajaxproject.org/topic/7179/extended-getformvalues/new/posts/</link>
			<description><![CDATA[Hello,

I have a HTML-page which contains a lot of inputfields. If the user push the button "submit", I send
the userfields to the server. The problem is, that I have to know which fields are deactivated/activated (on the Server).
Here you see my problem:

<html>
...
<form id="properties">
<input type="text" ...>
<input type="button" onclick="xajax_do(xajax.getFormValues('properties', true), xajax.getFormValues('properties', false)); return false;">
</form>

This code do the job, but when I have 100 inputfields, I send 100 inputfields for all properties and
about 80 for the activated properties to the server. But I need a method, which sends 100 inputfields with the
Attributes "deactivated/activated" to the server. 



The new idea:

html:
-----
<html>
<form id="properties">
<input type="text" id="input_1" name="input_1">
<input type="text" id="input_2" name="input_2" disabled="disabled">
<input type="button" onclick="xajax_do(xajax.getExtendedFormValues('properties')); return false;">
</form>

php:
----
function do($aFields)
{
	var_dump($aFields);
}

Output:
-------
array(
"__formname"=>"properties",
"input_1"=>array("content", true), // activated
"input_2"=>array("content", false) // deactivated
);


Is that possible, or exists another alternative???]]></description>
			<author><![CDATA[dummy@example.com (CtC)]]></author>
			<pubDate>Sat, 27 Dec 2008 08:26:49 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/7179/extended-getformvalues/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[Unobtrusive $xajax->printJavascript();]]></title>
			<link>http://community.xajaxproject.org/topic/5474/unobtrusive-xajaxprintjavascript/new/posts/</link>
			<description><![CDATA[Instead of having xajax print the constructed javascript inside the head tag, why not create a php file that can be included as a script.

ie. <script type="text/javascript" src="xajax/constructed_javascript.php"></script>

xajax/constructed_javascript.php would contain the the equivalent to $headJS = $xajax->getJavascript('xajax/');]]></description>
			<author><![CDATA[dummy@example.com (edrobinson)]]></author>
			<pubDate>Fri, 19 Dec 2008 16:06:31 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/5474/unobtrusive-xajaxprintjavascript/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[is there any way to abort php execution using confirmCommans ?]]></title>
			<link>http://community.xajaxproject.org/topic/7066/is-there-any-way-to-abort-php-execution-using-confirmcommans/new/posts/</link>
			<description><![CDATA[I was recently trying to use confirmCommands to avoid execution os php code....but it just skip $oResponse commands no any other php code.  

Is it possible to have something like this:

function delete($table,$id)
{
    $oResponse= new xajaxResponse();

   if($oResponse->confirmCommands....)
        do this php code.....
   else
       return $oResponse;
    .
    .

    return $oResponse;


}

thx in advance.]]></description>
			<author><![CDATA[dummy@example.com (ludo110183)]]></author>
			<pubDate>Wed, 03 Dec 2008 16:40:41 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/7066/is-there-any-way-to-abort-php-execution-using-confirmcommans/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[selectWithLabel and textareaWithLabel classes for form.inc.php]]></title>
			<link>http://community.xajaxproject.org/topic/7065/selectwithlabel-and-textareawithlabel-classes-for-formincphp/new/posts/</link>
			<description><![CDATA[Hi to everyone,

I've been using xajax for more than a year and I must congratulate the team for the effort they have put into developing this excellent ajax framework.
I would like to contribute with this 2 classes I have added to form.inc.php which may be useful to some.:

class clsSelectWithLabel extends clsSelect
{
	var $objLabel;
	var $sWhere;
	var $objBreak;
	
	function clsSelectWithLabel($sLabel, $sWhere, $aConfiguration=array())
	{
		clsSelect::clsSelect($aConfiguration);
		
		$this->objLabel = new clsLabel(array(
			'child' => new clsLiteral($sLabel)
			));
		$this->objLabel->setControl($this);
		
		$this->sWhere = $sWhere;
		
		$this->objBreak = new clsBr();
	}
	
	function printHTML($sIndent='')
	{
		if ('left' == $this->sWhere || 'above' == $this->sWhere)
			$this->objLabel->printHTML($sIndent);
		if ('above' == $this->sWhere)
			$this->objBreak->printHTML($sIndent);
		
		clsSelect::printHTML($sIndent);

		if ('below' == $this->sWhere)
			$this->objBreak->printHTML($sIndent);
		if ('right' == $this->sWhere || 'below' == $this->sWhere)
			$this->objLabel->printHTML($sIndent);
	}
}

class clsTextAreaWithLabel extends clsTextArea
{
	var $objLabel;
	var $sWhere;
	var $objBreak;
	
	function clsTextAreaWithLabel($sLabel, $sWhere, $aConfiguration=array())
	{
		clsTextArea::clsTextArea($aConfiguration);
		
		$this->objLabel = new clsLabel(array(
			'child' => new clsLiteral($sLabel)
			));
		$this->objLabel->setControl($this);
		
		$this->sWhere = $sWhere;
		
		$this->objBreak = new clsBr();
	}
	
	function printHTML($sIndent='')
	{
		if ('left' == $this->sWhere || 'above' == $this->sWhere)
			$this->objLabel->printHTML($sIndent);
		if ('above' == $this->sWhere)
			$this->objBreak->printHTML($sIndent);
		
		clsTextArea::printHTML($sIndent);

		if ('below' == $this->sWhere)
			$this->objBreak->printHTML($sIndent);
		if ('right' == $this->sWhere || 'below' == $this->sWhere)
			$this->objLabel->printHTML($sIndent);
	}
}]]></description>
			<author><![CDATA[dummy@example.com (ludo110183)]]></author>
			<pubDate>Tue, 02 Dec 2008 15:38:24 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/7065/selectwithlabel-and-textareawithlabel-classes-for-formincphp/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[loading display per function]]></title>
			<link>http://community.xajaxproject.org/topic/7155/loading-display-per-function/new/posts/</link>
			<description><![CDATA[in version 0.2 i used an wraparound to determine whether i want to show the loading label (e.g. functions which has to collect a large amount of data)

i was wondering if that could be added in 0.5 (or 0.6) 

like something below
[code]$xajax->register(XAJAX_FUNCTION, new xajaxUserFunction(functionName, file,loader(show=false,label='')));

$xajax->loadingObject = object (e.g. Div which contains a loading gif)
$xajax->loadingLabel = object (to show the label when show is set true)[/code]
with this extra setting it should be easier to determine to show the loader..

i hope more people like the kind of loading integration in xajax (or maybe i've looking with my eyes closed?)


Symbiot


ps: below is my wrap-around for version 0.2.4:

my javascript wrap-around (it uses an function te determine the center
[code]xajax.realCall = xajax.call; 
xajax.call = function(sFunction, aArgs, sRequestType) 
    {
        if (aArgs[0] != '') 
            { 
                var arrayPageSize = getPageSize();    // a function to get pageSizes
                if(typeof(window.pageYOffset)=='number') { pageY=window.pageYOffset;  } else { pageY=document.documentElement.scrollTop; }
                with (this.$('dataLoader'))
                    {
                        style.position = "absolute";
                        style.top = (pageY +(arrayPageSize[3]/2) +10)+'px';
                        style.left = (((arrayPageSize[2] / 2)+document.body.scrollLeft)-100)+'px';
                        style.display = 'block';
                    }
                this.$('loadinglabel').innerHTML = '<b>loading: </b> ' + aArgs[0];
            }
        return this.realCall(sFunction, aArgs, sRequestType);
    }

xajax.realProcessResponse = xajax.processResponse; 
xajax.processResponse = function(xml) 
    { 
        this.$('dataLoader').style.display = 'none'; return this.realProcessResponse(xml);
    }[/code]
in each function an extra parameter (the first) is needed in order to trigger the loader to show when not ''
example:
[code]function loadAmountOfData($loadingLabel='')
    {
    }[/code]
by calling it like this:
[code]xajax_loadAmountOfData('');[/code]
it won't show the loader
but when calling it like this:
[code]xajax_loadAmountOfData('large amount of data');[/code]
it does show (i know its obvious, pure to illustrate my idea)]]></description>
			<author><![CDATA[dummy@example.com (symbiot)]]></author>
			<pubDate>Tue, 25 Nov 2008 15:19:30 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/7155/loading-display-per-function/new/posts/</guid>
		</item>
		<item>
			<title><![CDATA[Same action on multiple items]]></title>
			<link>http://community.xajaxproject.org/topic/6972/same-action-on-multiple-items/new/posts/</link>
			<description><![CDATA[Reponse Object should be able to accept array as first argument and act on all members

e.g.

$items = array('foo', 'bar' );

$obj_Response->assign($items, 'disabled', true);]]></description>
			<author><![CDATA[dummy@example.com (q_no)]]></author>
			<pubDate>Thu, 25 Sep 2008 11:48:06 +0000</pubDate>
			<guid>http://community.xajaxproject.org/topic/6972/same-action-on-multiple-items/new/posts/</guid>
		</item>
	</channel>
</rss>
