Table of Contents

Thoughts about a new plugin-system

<?php
// MODULE CONFIGURATION DEFINITION
$config = array();
$config['mod_name'] = 'Diary'; 
$config['mod_setup_class'] = 'CSetupDiary';
$config['mod_version'] = '0.8';
$config['mod_config'] = false;                        // show 'configure'
//some more config-details

class CSetupDiary {

function remove() {                                   // run this method on uninstall process
    db_exec( "DROP TABLE diary;" );                   // remove the diary table from database

    return null;
  }


  function upgrade( $old_version ) { 

    switch ( $old_version ){
    case "0.9":
      //do some alter table commands
      return true;

    case "1.0":
      //do some alter table commands
      return true;

    default:
      return false;
    }
  }

  function install() {
    // prepare the creation of a dbTable -> create diary
    $sql = "CREATE TABLE diary ( " .          
      "  diary_id INT(11) UNSIGNED NOT NULL AUTO_INCREMENT" .
      ", diary_owner_id INT(11) UNSIGNED NOT NULL" .
      ", diary_header VARCHAR(100)" .
      ", diary_main TEXT" .
      ", diary_date DATE" .
      ", diary_last_modified TIMESTAMP" .
      ", PRIMARY KEY  (diary_id)" .
      ", UNIQUE KEY diary_id (diary_id)" .
      ") TYPE=MyISAM;";

    db_exec( $sql ); db_error();                 // execute the queryString through feng-api

    return null;
  }
}
?>

functional specifications for the development of fengOffice STUDIO

introduction and summary

fengOffice STUDIO is a collection of tools to allow the user to customize fengOffice and build new applications within the fengOffice framework. We will look at 4 major aspects of custom alterations of FengOffice:

  1. Re-think the administration front page (W.I.P.)
  2. Modules Management
  3. Field Management (W.I.P.)
  4. Module layout (W.I.P.)

In doing so, we will focus on the GUI performance, which shall:

administration front page

The first phase shall be a GUI re-designs as a functional re-thinking. The administration front-page shall present all that is available to the administrator at once. Possible designs include a common boxed layout that may appear very familiar to most administrators. In this layout similar tasks are grouped together in window-like boxes. In this layout, each of the tasks is illustrated by the 3 elements: icon, name, and description.

Please note that I have intentionally omitted:

Fig:1 - administration front-page


In case someone wants the icons:

controlpanelicons.tar


Module management

The second phase shall allow managing modules. In this phase the STUDIO takes form. The modules management page is accessed directly from the Administration front-page, so EVERYTHING is at ONE click away. Modules management allows user to start a low level of customization, Modules are defined as one tab and all it contains, therefore a module has details, properties and access. As such those same parts should be presented to the user in one single page.

Fig. 2: the modules management page

There are 4 independent components in this page, each providing additional level of customization:

  1. Modules (listing)
  2. Details
  3. Properties
  4. Permissions

Modules (listing)

The list is compiled on accessing the page and the core modules are listed separately from the custom modules. This immediately tells the user that there are two classes of modules and to expect two different levels of customization. On first install the Custom list is empty. The remaining components (Details, Properties and Permissions) are blank until the user selects a module from the listing.

On selecting one of the Core modules:

The Details component shows the details of the module and the ONLY editable field is the order allowing the user to rearrange the tabs.

On selecting one of the Custom modules:

All fields in the Details component are editable with the exception of the Owner field.

Details

The details are retrieved from the module selected in the Module (listing). The behavior changes between Core and Custom modules, but all the details are displayed at once. The data in the Details is the minimum requirement for creating a new component. Properties and Permissions can be left at the default values without affecting the functionality of fengOffice.

On clicking the New Module button

The Details component is active:

On clicking the Save Changes button

The data is committed including Properties and Permissions and a new module is created with the data showed on the screen:

On clicking the Delete button

The selected Module is deleted.

Properties

The Properties of a Module defines the TYPE of content and, for the Wrapper type it also defines the actual content. The minimum set of types is:

  1. Form (the default type) – This module is a collection of fields presented as a form that the user can fill-in to gather data.
  2. Data grid – This module is a listing of records of one or more fields used to present data to the user.
  3. Wrapper – This is just a container to display another website.
On clicking the Save Changes button

Permissions

The Permissions component gives to the administrator the ability to select who can or cannot have access to (hide/display) each module based on the user access to the workspaces.

On clicking the Save Changes button

Field management

The third phase shall allow managing Fields. Here is where the STUDIO really takes form. The Fields management page is accessed directly from the Administration front-page, so EVERYTHING is at ONE click away.

Fields have details, types and properties. As such those same parts should be presented to the user in one single page.

A recommended minimum set of field types should be:

Properties are dynamically loaded based on the field type (contestual ??)


W.I.P.

Module layout

The fourth phase shall allow managing modules layouts. The Layout management page is accessed directly from the Administration front-page, so EVERYTHING is at ONE click away.

Layouts have details and views. As such those same parts should be presented to the user in one single page.

A recommended minimum set of views layout should be:


W.I.P.