Handling Pages

From No3wiki

back to Main_Page > devguide


Different from Netoffice 2.x the prototype is driven by a single controller-page: index.php. Therefore this is a good start to read it. The interfaces is split into pages (like 'home', 'taskEdit', 'projDelete'). Pages are defined through a PageHandle and a function. All PageHandles are defined at the beginning of the script (in a file called pages/_handles.inc) like this:

 new PageHandle(array('id'=>'home', 'req'=>'pages/home.php', 'title'=>'Home'));

PageHandles are been used through the PageHandler and its global intance $PH. All internal linking and parameter-passing between pages should be done by methods provided by the pageHandler. This will ensure that links and parameters are valid:

 $PH->show('home'); 
 $PH->show('heim');	// causes 'undefined'-error and relinks to error-page
 
 $PH->getUrl('taskEdit', array('tsk'=>23));
 $PH->getUrl('taskEdit', array('task'=>23));	// Error: 'invalid attribute task'
 $PH->getUrl('taskEdit');			// Error: 'requires tsk'.

The PageHandler can also create handles for returning to a certain page. This allows to edit a task and return to the original task-list afterwards. With netoffice2.x this wasn't possible.

The code for actually rendering the pages is only included if needed. The source-location is passed to the PageHandle-constructor by the 'req'-attribute.

The necessary files for the pages are located in the 'pages/'-directory.

If the name-attribute is used if $PH->getLink() is called without the name-parameter. This mostly gives reasonable link-names.

In the long-term the pageHandle-list could be used for a unit-test of all pages: This can be done by a list of tests (pageId,Parameter,testType). Than we could call/render all tested pages, log the potential errors and tell if the page was rendered without warnings or errors. In netoffice2.x rendering all potential pages was a really tedious task.