Wie führt man eine asynchrone Funktion in Teamsware Aktionen oder einer anderen Ausdruckskonfiguration aus?

Wie führt man eine asynchrone Funktion in Teamsware Aktionen oder einer anderen Ausdruckskonfiguration aus?

Beschreibung

Wenn Sie auf callbacks in Teamsware Aktionen oder andere Ausdruckskonfigurationen warten müssen, bevor Sie weiterverarbeiten, empfiehlt sich die Verwendung des jQuery.Deferred()-Objekts.

Der folgende Codeschnipsel zeigt, wie dies erreicht werden kann:

var deferrer = jQuery.Deferred(); //new deferred object is created.
window.setTimeout(function () {
deferrer.resolve(); //Resolve the deferred. Then e.g. next predefined Rich Form's actions will start to execute.
}, 10000);
return deferrer.promise(); //returns promise object

 

Beispiel

Nachdem ein neues Element hinzugefügt wurde, möchten Sie dessen Berechtigungen aktualisieren und nur dem Genehmigenden die Bearbeitung dieses Elements ermöglichen.

Um dies zu erreichen, öffnen Sie ein neues Formular im Solution Studio und fügen Sie eine neue Aktion Skript ausführen nach der Aktion Formular speichern für die Schaltfläche Speichern hinzu:

New Form

 

Javascript code für die Aktion Script ausführen (Berechtigungen aktualisieren):

var deferrer = jQuery.Deferred();

var ctx = SP.ClientContext.get_current();
var web = ctx.get_web();
var list = web.get_lists().getByTitle("DemoList");
var item = list.getItemById([[ID]]);
var approver = web.ensureUser([[Approver.LoginName]]);

//Break permission inheritance and clear existing permission rules.
item.breakRoleInheritance(false,true);

var itemAssignments = item.get_roleAssignments();

//Set read-only permisisons for site default groups
var roleDefBindingsReader = SP.RoleDefinitionBindingCollection.newObject(ctx);
roleDefBindingsReader.add(web.get_roleDefinitions().getByType(SP.RoleType.reader));
itemAssignments.add(web.get_associatedVisitorGroup(), roleDefBindingsReader);
itemAssignments.add(web.get_associatedMemberGroup(), roleDefBindingsReader);
itemAssignments.add(web.get_associatedOwnerGroup(), roleDefBindingsReader);

//Allow Approver to edit the item
var roleDefBindingsApprover = SP.RoleDefinitionBindingCollection.newObject(ctx);
roleDefBindingsApprover.add(ctx.get_web().get_roleDefinitions().getByType(SP.RoleType.contributor));
itemAssignments.add(approver, roleDefBindingsApprover);

ctx.executeQueryAsync(function() {
deferrer.resolve();
}, function(sender, args){
deferrer.reject("Failed to update item permissions: " + args.get_message())
});

return deferrer.promise();

 

Execute Script (Update Permissions) action


    • Related Articles

    • Wie kann man eine Lösung (solution) teilen?

      Jede Lösung wird von einer Person erstellt, die wir als "Solution Owner" bezeichnen. Diese Lösung ist nur für diesen Benutzer auf dem Solution Studio Dashboard sichtbar, bis sie für einen anderen Solution Studio Benutzer freigegeben wird. Um eine ...
    • Wie man Abfragefunktionen (query functions) verwendet

      Kontext-Platzhalter-Funktionen ermöglichen die Abfrage von Listen, so dass Werte aus beliebigen Listen in Ausdrücken verwendet werden können. Zum Beispiel: [[@Web.GetFirstValueForQuery('ListName, list Id or Relative URL', 'Caml query', 'FieldName')]] ...
    • Teamsware Studio API deployment

      Hinweis: Um die Teamsware-API-Bereitstellung zu nutzen, überprüfen Sie Ihre Mandanteneinstellungen und erlauben Sie die benutzerdefinierte App-Authentifizierung wie hier hier beschrieben. Was ist das API Deployment Die API-Bereitstellung ist eine Art ...
    • Teamsware Studio Update 07.12.2023

      Neue Funktion Paketkonfiguration importieren Die Funktion Paketkonfiguration importieren (Solution Merge) bietet die Möglichkeit, die Konfiguration aus einer anderen Lösung in die aktuelle zu importieren (zusammenzuführen). Die Funktion ...
    • Teamsware Studio Update 07.11.2024

      Fehlerbehebungen und Verbesserungen Moderne Formulare Version 1.3.69 Fix: Fehlermeldung behoben, die angezeigt wird, wenn die API-Anforderungsberechtigung 'Directory.Read.All' für den Platzhalter [[@User.IsMemberOfGroup('Group', ...