2017 June Release

RoomPermanent link for this heading

CPGetRoomRolesPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGetRoomRoles defines the list of available room roles and the default role for new FSCTEAMROOM@1.1001:Room members.

The customization point FSCTEAMROOM@1.1001:CPGetRoomRoles is evaluated on several points of the FSCTEAMROOM@1.1001:Room business logic, e.g. on calculating the room roles to be shown in the team control.

The roles list is ordered by room role priority. The first list entry is the role with highest priority, while the last list entry is the role with the lowest priority.

Syntax

customize CPGetRoomRoles<objclass> {
  
roles = expression {…}
  default = expression {…}
  multipleroles = boolean
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • roles
    Defines an expression to get the list of available room roles. The return value is an object list of type FSCTEAMROOM@1.1001:RoomRole[].
  • default
    Defines an expression to get the default role for adding new team members. The return value is an object pointer to a FSCTEAMROOM@1.1001:RoomRole object.
  • multipleroles
    Defines if a team member can have multiple room roles at the same time. Default value is false.

Example

customize CPGetRoomRoles<TeamRoom> {
  roles = expression {

   return [#RoleTeamRoomOwner, #RoleTeamRoomFullControl,
            #RoleTeamRoomCanChange, #RoleTeamRoomReadOnly];

  }

  default = expression {

    return #RoleTeamRoomCanChange;

  }

  multipleroles = false;

}

CPNotifiedRoomRolesPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPNotifiedRoomRoles defines the list of room roles which should be notified by email in some use cases.

The customization point FSCTEAMROOM@1.1001:CPNotifiedRoomRoles for example is evaluated when an organization member is excluded from an cloud organization and the member currently participates in the current room.

The roles can also include room roles from the app configuration.

Syntax

customize CPNotifiedRoomRoles<objclass, usecase> {
  
roles = expression {…}
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • usecase
    The usecase for which the notified room roles should be evaluated.
  • roles
    Defines an expression to get the list of room roles which should be notified by email..

Example

customize CPNotifiedRoomRoles<Room> {
  roles = expression {

   return cooobj.GetRoomRoles(true);

  }

}

customize CPNotifiedRoomRoles<ScrumCenter> {
  roles = expression {

   return [#RoleScrumAdministrator];

  }

}

customize CPNotifiedRoomRoles<ScrumProject> {
  roles = expression {

   return [#RoleScrumAdministrator];

  }

}

CPGetRoomPublishStatesPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGetRoomPublishStates defines the list of available publish states for a FSCTEAMROOM@1.1001:Room class.

Syntax

customize CPGetRoomPublishStates<objclass> {
  
publishstates = expression {…}
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • publishstates
    Defines an expression to get the list of available publish states. The return value is an object list of type FSCTEAMROOM@1.1001:RoomPublishState[].
  • default
    Defines an expression to get the default publish state when a new room is created.

Example

customize CPGetRoomPublishStates<TeamRoom> {
  publishstates = expression {

   return [#TeamRoomTeamOnly, #TeamRoomPublicLookup, #TeamRoomPublicClearance];

  }

  default = expression {

    return #TeamRoomTeamOnly;

  }

}

CPSendRoomInvitationPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPSendRoomInvitation defines if invitation e-mails for an FSCTEAMROOM@1.1001:Room should be sent.

Syntax

customize CPSendRoomInvitation<objclass> {
  expr
= expression {...}
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • expr
    Defines an expression to get a Boolean if the invitation e-mail should be sent.

Example

customize CPSendRoomInvitation<TeamRoom> {
  expr = expression {

   return true;

  }

}

CPGetRoomSecurityPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGetRoomSecurity is used to evaluate the security context for FSCTEAMROOM@1.1001:Room child objects depending on a particular FSCTEAMROOM@1.1001:Room use case.

The use cases are described by instances of the object class FSCCONFIG@1.1001:Context.

Currently these context objects are used: FSCTEAMROOM@1.1001:CtxApplyRoom, FSCTEAMROOM@1.1001:CtxChangePublishState, FSCTEAMROOM@1.1001:CtxMoveToWastebasket as well as FSCTEAMROOM@1.1001:CtxRestoreFromWastebasket.

The customization point FSCTEAMROOM@1.1001:CPGetRoomSecurity is evaluated if a use case according to one of these contexts is executed.

Syntax

customize CPGetRoomSecurity<objclass, roomobjclass, usecase, room> {
  
seccontext = expression {...}
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • roomobjclass
    The object class of the room to which the current object is assigned to.
  • usecase
    Defines the use case for security context evaluation
  • room
    The room of the current object.
  • seccontext
    Defines an expression to get the security context. A security context is an aggregate of type FSCFOLIO@1.1001:SecurityContext.

Example

customize CPGetRoomSecurity <Object, TeamRoom, CtxApplyRoom> {
  roles = expression {

    SecurityContext ctx = null;

    if (room && room.HasClass(#Room)) {

      Object aclref = room.objaclref;

      ctx = {

        objaccdef : room.objaccdef,

        objaclobj : room.objaclobj),

        objaclref = :>aclref ? :>room : null

      };

    }

   return ctx;

  }

}

CPChangeAllocationPermissionPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPChangeAllocationPermission is used to define the access types which are needed on the source room to change the allocation of an object another room. The customization point is evaluated by the action FSCTEAMROOM@1.1001:HasRoomChangeAllocationAccess.

The use cases are described by instances of the object class FSCCONFIG@1.1001:Context.

Syntax

customize CPChangeAllocationPermission<objclass> {
  
requiredpermission = expression {...}
}

Description:

  • objclass
    The object class of the room to which the current object is assigned to.
  • requiredpermission
    Access type required to change the room.

Example

customize CPChangeAllocationPermission <TeamRoom> {
  requiredpermission = expression {

   return #AccTypeChangeSec;

  }

}

CPGetTargetRoomClassesPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGetTargetRoomClasses defines if the room assignment of an object, which is referenced by more than one room, can be changed.

Syntax

customize CPGetTargetRoomClasses <Sourceclass, Objclass, SOFTWARECOMPONENT> {
  
targetclasses = Targetroom
}

Description:

  • sourceroomclass
    The object class of the object’s current room
  • objclass
    The object’s class
  • component
    Reference of the customizing software component
  • targetclasses
    Possible object classes of target rooms.

Example

customize CPGetTargetRoomClasses<TeamRoom, CompoundObject , FSCTEAMROOM@1.1001> {

  targetclasses = TeamRoom;

}

customize CPGetTargetRoomClasses<TeamRoom, ContentObject, FSCSCRUM@1.1001> {

  targetclasses = {RootObject, Folder}

}

CPPublicConfigurationPropertiesPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPPublicConfigurationProperties defines a list of properties which can be read from the app room or app configuration room without access permissions to the app room or app configuration room.

Syntax

customize CPPublicConfigurationProperties <sourcroomeclass> {
  attributes
= attributes
}

Description:

  • sourceroomclass
    The object class of the object’s current room
  • attributes
    The configuration properties of the app configuration or app room which are allowed to read without access permissions

Example

customize CPPublicConfigurationProperties<PersonnelFileShelf> {

  attributes = {

    pfsimportmasterfiledata,

    pfswatermarktext,

    pfswatermarkimage

  }

}

customize CPGetTargetRoomClasses<TeamRoom, ContentObject, FSCSCRUM@1.1001> {

  targetclasses = {RootObject, Folder}

}

CPAutoCreateAppConfigurationPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPAutoCreateAppConfiguration defines if an app configuration room should be created automatically for an organization when the app which supplies the app configuration is licensed.

When the app configuration room is created automatically the users returned by the customization point FSCTEAMROOM@1.1001:CPInitalConfigurationUsers will be the initial administrators of the app configuration room. Otherwise these users will get an welcome screen entry to create an app configuration room.

Syntax

customize CPAutoCreateAppConfiguration <objclass> {
  
autocreate = boolean
}

Description:

  • objclass
    The object’s class
  • autocreate
    Defines if the room should be created automatically or if an welcome screen event should be displayed

Example

customize CPAutoCreateAppConfiguration<ScrumCenter> {

  autocreate = false;

}

CPGetInitialConfigurationUsersPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGetInitalConfigurationUsers defines the users which are used as initial administrators for automatically created app configuration rooms or for the welcome screen event which requests to create an app configuration room.

Syntax

customize CPGetInitialConfigurationUsers <objclass > {
  
configusers = expression {...}
}

Description:

  • objclass
    The object class of the object’s current room
  • group
    The organization for which the app configuration room should be created is available in the local scope of the customization point
  • configusers
    The users which should get request.

Example

customize CPGetInitialConfigurationUsers<AppConfigurationRoom> {

  configusers  = expression {
    return coouser.ExpandGroupMembers(group.objowner +
                                      group.objsecsecurity +
                                      group.objsecchange);
  }
}

CPUseGlobalAppDashboardPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPUseGlobalAppDashboard defines if one global app dashboard should be created for each user. Otherwise a separate app dashboard is created for each app configuration room the user was added to. By default an app dashboard is created for each app configuration room instance.

Syntax

customize CPUseGlobalAppDashboard <objclass > {
  
useglobal = boolean
  hideappconfiguration = boolean
}

Description:

  • objclass
    The object class of the app configuration room for which an app dashboard should be created
  • useglobal
    The return value defines if a global or separate app dashboards should be created
  • hideappconfiguration
    The app configuration room is not shared to the desk of the app administrator when he receives the license. By default the app configuration room is shared to the desk.

Example

customize CPUseGlobalAppDashboard<AppConfigurationRoom> {

  useglobal = false;
  hideappconfiguration = false;

}

customize CPUseGlobalAppDashboard<ScrumCenter> {

  useglobal = true;
  hideappconfiguration = true;

}

CPTeamControlPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPTeamControl is used to evaluate texts and symbols displayed in the team control. The team control is displayed for all room classes, so the configuration can be changed for each class derived from FSCTEAMROOM@1.1001:Room. A default configuration for the class FSCTEAMROOM@1.1001:Room is already supplied.

Syntax

customize CPTeamControl<objclass> {
  
placeholdertext = expression {...}
  noresulttext = expression {...}
  createtext = expression {...}
  createhovertext = expression {...}
  createsymbol = expression {...}
  createapplication = expression {...}
  excludedattrdefs = expression {...}
  disablecreate = expression {...}
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • placeholdertext
    Defines an expression to get the string that will be displayed as placeholder in the select box to find an add new team members.
  • noresulttext
    Defines an expression to get the string that will be displayed in the select box when no contacts matching the search criteria were found..
  • createtext
    Defines an expression to get the string that will be displayed in the select box to create a new contact.
  • createhovertext
    Defines an expression to get the string that will be show as hover text of the create button in the xml dispatcher.
  • createsymbol
    Defines an expression to get the symbol  that will be displayed beside the create text. In the xml dispatcher it is used as symbol of the create button too.
  • createapplication
    Defines an expression to get the application  that will executed when a new contact should be created..
  • excludedattrdefs
    Defines an expression to get a list of attribute definitions which are not loaded for each contact displayed in the team control to improve the display performance. Especially attributes with many values which are not relevant for the displayed information should be excluded.
  • disablecreate
    Defines an expression to decide if the creation of new objects is not allowed in the team control.

Example

customize CPTeamControl <TeamRoom> {
  placeholdertext = expression { return #StrSearchEmailOrOrganisation; }

  noresulttext = expression { return #StrEnterValidEmail; }

  createtext = expression { return #StrInviteNewContact; }

createhovertext = expression { return #AccordionCreateStr; }

createsymbol = expression { return #SymbolUserNew; }

  createapplication = expression { return #RoomCreateSimpleListContact; }

  excludedattrdefs = { useracceptedusers, userrefusedusers, userknownusers }
  disablecreate = expression { return false; }
}

CPExpandTeamControlPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPExpandTeamControl is used to evaluate the additional information displayed for an entry when it’s expanded in the team control. The customization can be changed for each object class depending on the room context.

Syntax

customize CPExpandTeamControl<objclass, roomobjclass> {
  
expandedentry = expression {...}
  expandableinreducedmode = true;
}

Description:

  • objclass
    The customization applies to objects of the defined object class.
  • roomobjclass
    The object class of the room to which the current object is assigned to.
  • expandedentry
    Defines an expression to get the additional information displayed on expanding an entry. The additional information must be returned as dictionary. The information contained in the dictionary is displayed in the expanded section. Note: If you want to display information for members of expanded groups, it is possible to include a list of sub dictionaries with detailed information for each group member.
  • expandableinreducedmode
    Defines if entries of this object class are expandable in light dispatcher. In the xml dispatcher each entry is expandable by default.

Example

customize CPExpandTeamControl <User, TeamRoom> {
  expandedentry = expression {
    dictionary retdict = {};
    retdict.SetEntry(#StrEmail.Print(), cooobj.GetHoverText().email);
    retdict.SetEntry(#persorgtxt.Print(), cooobj.GetHoverText().orgtext);
   return retdict;
  }

  expandableinreducedmode = false;

}

customize CPExpandTeamControl <WorkGroup, TeamRoom> {
  
expandedentry = expression {
    
dictionary retdict = {};
    User[] members = cooobj.wgrmembers;

    coouser.Sort(&members, true, #objname);
    
integer idx = 0;

    for (User member : members) {

      if (member && member.HasClass(#User)) {

        dictionary hoverdict = member.GetHoverText();

        dictionary entrydict = {

          value = :>member.GetName(),

          presymbol = #SymbolUser.GetAddress(),

          hover = :>hoverdict.hovertext,

          alignright = true,

          address = :>member.GetAddress()

        };

        idx++;

        string key = "" + string(idx) + ".";

        retdict.SetEntry(key, entrydict);

      }

    }
    return retdict;
}

  expandableinreducedmode = true;

}

CPGetWBContainers

CPGETWBContainersPermanent link for this heading

The customization point FSCTEAMROOM@1.1001:CPGETWBContainers is used to define which object classes should be considered as containers when calling FSCTEAMROOM@1.1001:GetOriginalChildren.

Syntax

customize CPGetWBContainers< sourceroomclass> {
  
containerclasses = expression {...}
}

Description:

  • objclass
    The customization applies to waste baskets of the defined object class.
  • containerclasses
    Defines the object classes that should be considered as containers when calculating the original children of a room

Example

customize CPGetWBContainers <PersonnelFileShelf> {
  containerclasses = expression { return [#PersonnelFile, #ContentObject]; }
}