Dimensions - Developers insight

This section will briefly explain how dimensions work within Feng Office, from a developer point of view.

If you develop a plugin, it will be easier to create the dimension if you provide the required relationships and data to it, so that the system automatically creates it.

This section will explain the required tables, and their use. Some of their fields will be explained too, but only those not too obvious at first sight, but not all of them.

  • Table Name: fo_dimensions
  • Purpose: it defines the dimensions
  • Fields:
    1. is_manageable: if false, when editing a Content Object this dimension will never be shown to be selected for the relationship (i.e.: People's dimension)
    2. options: here there are a wide variety of options to be used, which are not compulsory, such as:
      1. “useLangs”:true → means that it will use the code for the language name, otherwise it uses the DataBase name
      2. “defaultAjax”:{“controller”:“contact”, “action”: “init”} → this defines the action for the controller when the user goes to View all when standing on the dimension. In this case it calls the init function from the ContactController
      3. “quickAdd”:{“formAction”:“?c=contact&a=quick_add”} → this defines the action to be called when the quick add is available, in this case it calls to quick_add from the ContactController
  • Table Name: fo_members
  • Purpose: it will keep the dimension members information
  • Table Name: fo_dimension_object_types
  • Purpose: it defines the dimension members that can be added to a dimension (i.e.: project, client, folder, etc.)
  • Fields:
    1. is_root: if true, the dimension member can be added in the root of the dimension
    2. options: there is a wide variety to be used, but not compulsory:
      1. “defaultAjax”:{“controller”:“dashboard”, “action”: “main_dashboard”}} → it goes for the function that will be called when accessing the Overview tab, in this case main_dashboard, from the DashboardController
  • Table Name: fo_dimension_object_type_hierarchies
  • Purpose: it defines the possible hierarchies for the dimension members, such as a Project can be a child of a Client, but a Client cannot be a child of a Project.
  • Table Name: fo_dimension_object_type_contents
  • Purpose: it defines the possible Content Objects that could be used for the dimensions and dimension members.
  • Fields:
    1. is_required: if true, it means that the Content Object must be classified within at least one dimension member
    2. is_multiple: if true, it means the object type can be classified within multiple dimension members at the same time
  • Table Name: fo_dimension_member_association
  • Purpose: it defines whether a dimension member can be related to a different one (i.e.: People with Project)
  • Table Name: fo_member_property_members
  • Purpose: it defines the association between one dimension member with another
  • Table Name: fo_member_restrictions
  • Purpose: it defines the restrictions when creating or editing a dimension member

The following picture shows the relationship between a dimension member, with the fo_objects table. The example has been done with the Workspaces dimension: