Problem
The modification (Edit Mode / Edit Share) of a module shall be prevented.
Das Editieren eine Doors Modules (Edit Mode / Share Mode) soll verhindert werden.
Approach
Defining a library and using the existence of a trigger as condition for allowed modifications can be used to block the formal Module for edit/share mode.
Durch das definieren eine Triggers und der zugehörigen Trigger_Library kann man die Existenz eines Triggers als Bedingung für das Erlauben des Edit/Share Modes nehmen.
Solution
void listAllTriggerForMod (Module mod) { Trigger t; for t in mod do { print name(t) "\n"; } } bool checkTriggerIfExistForMod (Module mod, string triggername) { Trigger t; for t in mod do { if(name(t) "" == triggername) { return true; } } return false; } string getDXLCodeForModWithTrigger (Module mod, string triggername) { Trigger t; for t in mod do { if(name(t) "" == triggername) { return dxl(t); } } return "not found"; } void removeTriggerForModWithName(Module mod, string triggername) { Trigger t; string errorMsg; // first delete _all possible trigger_ for t in mod do { if (name (t) "" == triggername) { errorMsg = delete(t); if(!null(errorMsg)) { errorBox("Error occurred:\n" errorMsg""); break; } } } } void installTriggerForMod (Module mod) { string dxlCode = "Module cm = current Module;\n" //- "if ((isEdit(cm)||isShare(cm))){\n" //- "ack(\"During Wings LDT modifications it is not allowed to modify texts in the UIT/ALM Module.\");\n" //- "downgrade(cm)\n" //- "}\n"; string errors = checkDXL(dxlCode) if(null(errors)) { string moduleName = name(mod) if(!checkTriggerIfExistForMod(mod, "Text_Tool_Block_Trigger")) { Trigger t = trigger("Text_Tool_Block_Trigger", project->module->moduleName, post, open, 15, dxlCode); } else ack "Trigger already exist!"; } save(mod); } Module uitModule = read("/NDS/20 System/DS/UIT-User Interface Texts", false); print "Vor der Installation...\n"; print "=======================\n"; listAllTriggerForMod(uitModule); installTriggerForMod(uitModule); print "\n\nNach der Installation...\n"; print "=======================\n"; listAllTriggerForMod(uitModule); removeTriggerForModWithName(uitModule, "Text_Tool_Block_Trigger"); print "\n\nNach dem Entfernen...\n"; print "=======================\n"; listAllTriggerForMod(uitModule);