====== Limiting access to features ======
===== Prevent mass updates =====
Before the //Mass update// menu is shown a VBA event is triggered that allows customization of which fields or objects that can be updated or created. This event also receives information of which fields or objects that the user wants to update. The event has the following signature:
Explorer.BeforeCommand(Command As CommandEnum, Parameter As Variant, Cancel As Boolean)
''Command'' specifies the type of command and will have the value ''lkCommandUpdateOption'' when a mass update is about to take place.
''Parameter'' varies in type and depends on what is to be mass updated. When the target is a field an object of the type ''LDE.Field'' is passed and specifies which field to update. When new records are to be created the data type will be ''LDE.IProperties'' and the object will contain the following named parameters:
; TargetClass : An object of type LDE.IClass which spcifies the class of the record to create.
; SourceClass : An object of type LDE.IClass which specifies the class used as source which the new record should be linked to.
''Cancel'' is a flag that determines whether or not the tab should be visible in the menu or not. When set to ''False'' (default) the tab will be added to the menu, otherwise not.
The following example makes sure it's only allowed to mass update fields beginning with the letter "A":
Private Sub Explorer_BeforeCommand(Command As CommandEnum, Parameter As Variant, Cancel As Boolean)
' Verify that it's the right command
If Command <> lkCommandUpdateOption Then Exit Sub
' Is it a field that is being updated?
If TypeOf Parameter Is LDE.Field Then
If Left(Parameter.LocalName, 1) = "A" Then
Cancel = True
End If
End If
End Sub
===== Prevent Excel export =====
Before and after certain commands are executed in Lime CRM, VBA events that can be listened to are triggered. These events are named ''Explorer_BeforeCommand'' and ''Explorer_AfterCommand''.
The following example disables usage of the //Export to Excel// feature:
Private WithEvents m_Explorer As Lime.Explorer
Private Sub Application_AfterActiveExplorerChanged()
Set m_Explorer = Application.ActiveExplorer
End Sub
Private Sub m_Explorer_BeforeCommand(ByVal Command As CommandEnum, ByVal Parameter As Variant, Cancel As Boolean)
If Command = lkCommandExportToExcel Then
MsgBox "Detta tillåter jag inte.", vbInformation
Cancel = True
End If
End Sub
===== Hiding inspector toolbar buttons =====
It is possible to hide certain buttons in the explorer toolbar by modifing the ''Explorer.Settings'' collection. The following example hides the //Link record// button for the //Persons// tab (if one exists):
Private WithEvents m_Inspector As Lime.Inspector
Private Sub Application_BeforeActiveInspectorChanged(ByVal NextInspector As IInspector)
Set m_Inspector = NextInspector
End Sub
Private Sub m_Inspector_BeforeShow(Cancel As Boolean)
If m_Inspector.Explorers.Exists("persons") Then
m_Inspector.Explorers("persons").Settings.Write "DisableLink", True
End If
End Sub
The following buttons can be modified:
^ Identifier ^ Button ^
| ''DisableLink'' | Link record |
| ''DisableUnlink'' | Unlink record |
| ''DisableNew'' | New record |
| ''DisableDelete'' | Delete record |
| ''DisableOpenDocument'' | Open document |
To show the button set the value to ''False''.
===== Prevent hiding of tabs and fields =====
Users may normally individually configure which fields and tabs that are visible. To prevent this behavior the following VBA code can be used:
Application.Database.Settings.Item("Application").Value("DisableInspectorLayout") = True
This can also be done for a specific database class, //company// in this case:
Application.Database.Settings.Item("Inspectors").Item(Application.Database.Classes("company").GUID).Value("DisableLayout") = True
=== Note ===
If users have already used the show/hide fields/tabs feature there is a risk that they have already hidden tabs and/or fields and then after disabling the feature will not be able to restore the visibility settings.