Page 1 of 1

PostPosted: Fri Dec 01, 2006 2:11 pm
by yusif
Hi All,
Greatly interested in the dataface application framework. I'm trying my hand on some application using dataface. I got a php class that displays a menu just like windows explorer does. I mean colapsible/ expandible sort of menu. I want my application to use this feature at the block__before_left_column by defining it in the conf_ApplicationDelegate class. Few problems...

1. How do I make dataface include the menu class file in the conf_ApplicationDelegate class so that the
function block__before_left_column look like this:

function block__before_left_column(){


$applicationMenu = new HTML_TreeMenuXL();
$applicationNodeAttributes = array("icon"=>"folder.gif");
$applicationNode = new HTML_TreeNodeXL ("Accounts","#");
$applicationSubNode = &$applicationNode->addItem(new HTML_TreeNodeXL("Assets","#link",$applicationNodeAttributes));

$applicationSubNode = &$applicationSubNode->addItem(new HTML_TreeNodeXL("Current Assets","#link"));
$applicationSubNode->addItem(new HTML_TreeNodeXL("Fixed Assets","#link"));
$applicationSubNode->addItem(new HTML_TreeNodeXL("Other Assets","#link"));

$applicationNode->addItem(new HTML_TreeNodeXL("Liabilities and Capital","#link"));
$applicationSubNode2 = &$applicationNode->addItem(new HTML_TreeNodeXL("Current Liabilities","#link"));
$applicationSubNode2->addItem("Long Term Liabilities","#link");
$applicationSubNode2->addItem("Capital","#link");
$applicationNode->addItem(new HTML_TreeNodeXL("Balance Sheet","#link"));
$applicationMenu->addItem($applicationNode);

$demodMenu = & new HTML_DHTMLXL($applicationMenu, array("images"=>"images"));
$demodMenu->printMenu();

}


I get the following error with the above code



Warning: main(C:/Program Files/Apache Group/Apache2/htdocs/bin/TreeMenu.php): failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\dataface\htmltreemenu\TreeMenuXL.php on line 50

Warning: main(): Failed opening 'C:/Program Files/Apache Group/Apache2/htdocs/bin/TreeMenu.php' for inclusion (include_path='.;c:\apache\php\pear') in C:\Program Files\Apache Group\Apache2\htdocs\dataface\htmltreemenu\TreeMenuXL.php on line 50

Warning: main(C:/Program Files/Apache Group/Apache2/htdocs/bin/ccBrowserInfo.php): failed to open stream: No such file or directory in C:\Program Files\Apache Group\Apache2\htdocs\dataface\htmltreemenu\TreeMenuXL.php on line 55

Warning: main(): Failed opening 'C:/Program Files/Apache Group/Apache2/htdocs/bin/ccBrowserInfo.php' for inclusion (include_path='.;c:\apache\php\pear') in C:\Program Files\Apache Group\Apache2\htdocs\dataface\htmltreemenu\TreeMenuXL.php on line 55

Fatal error: Class html_treemenuxl: Cannot inherit from undefined class html_treemenu in C:\Program Files\Apache Group\Apache2\htdocs\dataface\htmltreemenu\TreeMenuXL.php on line 68

Help Please!!!!!

PostPosted: Fri Dec 01, 2006 3:50 pm
by shannah
You can include files just the way you would normally do in PHP. Use require, or dataface also defines a function called import that has a little better performance on repeated calls.

It looks as though you are using PEAR classes here also. PEAR classes should be placed in the proper directory structure. In this case the TreeMenuXL.php file should be located in a folder called HTML.

e.g. import('HTML/TreeMenuXL.php');
...

Also note that there are a number of places that PHP will look for files to import. YOu can place them directly in your application's directory, or in the dataface/lib directory or in the dataface directory (best to place them in your application's directory). Additionally you may have defined other places to locate class files using the include_path directive in the php.ini file.

Does this help a little?

-Steve

PostPosted: Mon Dec 04, 2006 4:33 am
by yusif
Hi Steve,
Thanks for the response, I have resolved the path issue by setting the include path but when I use import('...') it seems to redeclare the class so i took that out and had no errors but the menu does not display.

Any suggestions ...?

NB: I have all the necessary files for the menu at
"c:/Program Files/Apache Group/Apache2/htdocs/bin/" and my application delegate looks like

class conf_ApplicationDelegate {
/**
* Returns permissions array. This method is called every time an action is
* performed to make sure that the user has permission to perform the action.
* @param record A Dataface_Record object (may be null) against which we check
* permissions.
* @see Dataface_PermissionsTool
* @see Dataface_AuthenticationTool
*/



function getPermissions(&$record){
$auth =& Dataface_AuthenticationTool::getInstance();
$user =& $auth->getLoggedInUser();
if ( !isset($user) ) return Dataface_PermissionsTool::NO_ACCESS();
// if the user is null then nobody is logged in... no access.
// This will force a login prompt.
$role = $user->val('Role');
return Dataface_PermissionsTool::getRolePermissions($role);
// Returns all of the permissions for the user's current role.
}


function block__before_left_column(){


$applicationMenu = new HTML_TreeMenuXL();
$applicationNodeAttributes = array("icon"=>"folder.gif");
$applicationNode = new HTML_TreeNodeXL ("Accounts","#");
$applicationSubNode = &$applicationNode->addItem(new HTML_TreeNodeXL("Assets","#link",$applicationNodeAttributes));

$applicationSubNode = &$applicationSubNode->addItem(new HTML_TreeNodeXL("Current Assets","#link"));
$applicationSubNode->addItem(new HTML_TreeNodeXL("Fixed Assets","#link"));
$applicationSubNode->addItem(new HTML_TreeNodeXL("Other Assets","#link"));

//$applicationNode->addItem(new HTML_TreeNodeXL("Liabilities and Capital","#link"));
//$applicationSubNode2 = &$applicationNode->addItem(new HTML_TreeNodeXL("Current Liabilities","#link"));
//$applicationSubNode2->addItem("Long Term Liabilities","#link");
//$applicationSubNode2->addItem("Capital","#link");
//$applicationNode->addItem(new HTML_TreeNodeXL("Balance Sheet","#link"));
//$applicationMenu->addItem($applicationNode);

$demodMenu = & new HTML_TreeMenu_DHTMLXL($applicationMenu, array("images"=>"images"));
$demodMenu->printMenu();

}

PostPosted: Mon Dec 04, 2006 11:28 am
by yusif
Hi Steve,
Everything is working fine now. It was truely the include path problem and also I needed to add a to the head_slot.html file to make the client side display work.

Thanks once again.

PostPosted: Mon Dec 04, 2006 1:17 pm
by shannah
Good to hear everything is working!