NoPic eZine
  
Home
phpWebSite design aid
phpWebSite Main
phpWebSite Forum 1.x
phpWebSite AT (Rene)
phpWebSite DE,EU
phpWebSite DK (Kenneth)
phpWebSite Community
phpWebSite Manual
phpWebSite SupportForum
phpWebSite Wiki
Impressum/Imprint
Datenschutz/Policies
dc4db eZines
 

    de en

ControlPanel.txt

Control Panel Documentation
by Matthew McNaney

The Control Panel module performs two functions. First, it is the
interface for selecting which module you want to access. Second, it is
a tool for developers to create their own control panels within their
module. This document covers the latter.


Quick Tab Setup
------------------------------------------------------------
Your 'tabs' are what allow the user to navigate through your
module. The content contained within the tab (usually a word or set of
words) are links that take the user to another portion of your
module. You should begin by creating these links as follows.

Create an array of tabs. The index of the tab will be the
identifier. The array value is an array as well. The embedded array
describes how it should be displayed.

For example:

// This is the http address to where you want the tab to take the user
$link = "index.php?module=myMod";

// This array contains the content to be displayed in the tab
// (the title) and the link we made above
$command1 = array ("title" => "Main Menu", "link" => $link);
$command2 = array ("title" => "Add New", "link" => $link);

// Now we put the title and the link array into the tab array.
// The index of the $tabs array is the identifier. This is what will
// appear in the address field when clicked on

$tabs['main_menu'] = $command1;
$tabs['add_new']   = $command2;

This would create tabs like so:

 ___________   __________
| Main Menu | | Add New  |
---------------------------------

When you click on Main Menu, you would be directed to:

http://www.yourSite.com/index.php?module=myMod&command=main_menu&tab=main_menu

You should also create 'catching code'. This is an if or switch
statement that decides what direction to take the code dependant upon
the tab. For example:

switch ($_GET['tab']){
       case "main_menu":
       $content = MyMod::main_menu();
       break;

       case "add_new":
       $content = MyMod::add_new();
       break;
}

Of course you could use information from the command variable as
well. For example you could have made the $link:

$link = "index.php?module=myMod&command=main_menu";

and then alter the 'catching code' appropiately. In most cases, it is
easier to rely on the tab name however.


Creating the Panel Object
------------------------------------------------------------
Now you need to create a panel object. First require the Panel.php
class in Control Panel. The easier way to do this is:

PHPWS_Core::initModClass("controlpanel", "Panel.php");

Now construct your panel object.

$panel = & new PHPWS_Panel("myModPanel");

The myModItem designates the 'panel name'. You could have multiple
panels in your module with different names. The panel name allows
Control Panel to keep them separate. Your panel name should not be
identical to your module name.

Setting the Tabs
-------------------------------------------------------------
Put the tabs in the panel like so:

$panel->quickSetTabs($tabs);

Control Panel will keep track of what tab is active. Normally you can
find out which tab is current by checking the $_GET or $_REQUEST variable:

if ($_GET['tab'] == "main_menu")
   $content = MyMod::main_menu_content();

However, the user may arrive at your control panel without the tab
getting listed. In that case you can grab the current tab with the
getCurrentTab function:

$current_tab = $panel->getCurrentTab();

If you want to force a specific tab use setcurrentTab, like so:

$panel->setCurrentTab('main_menu');


Setting the Content
-----------------------------------------------------------
You can see from the examples above that we are piping the results of
the tab choice into a $content variable. We will put that content into
our panel like so:

$panel->setContent($content);


Displaying the Panel
------------------------------------------------------------
Once the tabs and content are set, you are ready to display them.

$finalPanel = $panel->display();

Put that information in Layout and you are done!
Layout::add($finalPanel);


Changing the Look of your Control Panel
-------------------------------------------------------------
Control Panel uses its own templates by default. You can change this
behavior by setting the module and panel template.

$panel->setModule("myModule");
$panel->setPanel("myPanel.tpl");

Control Panel would then look in mod/myModule/templates/myPanel.tpl
for an alternate template file. If you wish to do this, I recommend
you copy the panel.tpl file from the controlpanel/templates/ directory
to get started.


Security
------------------------------------------------------------
By default, panels do not include authorization keys in the link.
If you want it to, call enableSecure();

$panel->enableSecure();


Tips:
Use the 'allow' function in Users to control what tabs can be seen:

$tabs['main_menu'] = $command1;

if ($_SESSION['User']->allow("myMod", "add_new"))
   $tabs['add_new']   = $command2;


You may want to put your content into the Control Panel's main
page. To do so just do the following:

$content = PHPWS_ControlPanel::display($panel->display());
Layout::add($content);

This places your tabs and content into the content of the Control
Panel's content. 


Copyright © 2006, VbID Verlagsbüro GmbH
pWS modules dcP, dcT, dc4db, Copyright © 2006, VbID Verlagsbüro GmbH
This Site is powered by phpWebSite © The Web Technology Group, Appalachian State University