Problem
When there are triggers on a module it often is not visible to administrators and other users that can perform DXL operations.
Approach
A menu point as module add in should be generated. Copy the following script to the moduleaddins directory of your doors installation.
Solution
// This is necessary that it works
/*******************************************************
* Author: Björn Karpenstein
* Date: 2014-10-01
*
* This script lists all triggers of the module
******************************************************/
pragma runLim, 0;
string lstArray [] = {};
DB mainWindow;
DBE textBox;
DBE textList;
void listAllTriggerForMod (Module mod)
{
string theResult="";
Trigger t;
int i = 0;
for t in mod do
{
insert(textList, i, name(t) "", iconNone);
i++;
}
}
string getSourceForTriggerName (string theTrigger)
{
string sourceCode = "";
Trigger t;
for t in current Module do
{
if(name(t) "" == theTrigger)
{
sourceCode = dxl(t) "";
}
}
return sourceCode;
}
void doDeselect(DBE dbe, int idx)
{
//infoBox "You deselected " dbe[idx] "";
}
void doActivate(DBE dbe, int idx)
{
// infoBox "You activated " dbe[idx] "";
}
void doSelect(DBE dbe, int idx)
{
string triggerName = getColumnValue(textList,idx,0);
set(textBox, getSourceForTriggerName(triggerName));
}
void main(void)
{
User currentUser = find();
bool mayDXL = currentUser.mayEditDXL;
if (!mayDXL)
{
// Show error box and inform user. Stop execution of script.
errorBox "You are not allowed to run/edit DXL code!";
halt;
}
mainWindow = create("List all triggers");
textList = listView(mainWindow, 0, 310, 20, lstArray);
textBox = text(mainWindow, "", "", 400, false);
textList->"right"->"unattached";
textBox->"left"->"flush"->textList;
textBox->"top"->"aligned"->textList;
realize(mainWindow);
insertColumn(textList, 0, "Trigger Name", 300, iconNone);
set(textList,doSelect,doDeselect,doActivate);
listAllTriggerForMod(current);
// set(textBox, listAllTriggerForMod(current));
show(mainWindow);
}
main();