PowerScript for JIRA – jak zablokować edycję pola lub pól dla danej roli lub ról

Power Scripts™ – Jira script automation

JIRA PowerScript Sctipts Plugin to bardzo przydatny plugin jeśli chcesz zautomatyzować zadania podczas pracy z projektami Jira aby zaoszczędzić czas na powtarzalnych zadaniach. Najważniejsze cechy to możliwość automatyzacji powtarzalnych zadań, skrypty dodane do workflow, tranzycji, czy podpięte pod event listener.

Można go znaleźć na marketplace atlassiana pod tym linkiem. Niestety, nie jest darmowy, ale cena jest bardzo przystępna.

Kod skryptu

Nie będę pisał jak stworzyć nowy plik skryptu, bo dokumentacja jest napisana bardzo łatwym językiem, jedynie przypomnę o tym, że aby zablokować użytkownikom możliwość edycji danych pól trzeba podpiąć nasz skrypt pod “live field” by działał zawsze gdy ktoś otwiera stronę jiry. Jak to zrobić? Bardzo prosto:

Sam kod skryptu jest banalnie prosty:

/*
This script will disable Field1, Field2, Field3 and Field4 from users who are not in the correct role
*/

if(isUserInRole(currentUser(), "Project_Name", "Project_Role") == false) {
lfDisable("Field1");
lfDisable("Field2");
lfDisable("Field3");
lfDisable("Field4");
}

Warto pamiętać, że w PowerScript można użyć nazwy pola, albo jego ID, czyli nasz skrypt może wyglądać tak:

/*
This script will disable Field1 (customfield_10000), Field2 (customfield_10001), Priority and Original Estimation from users who are not in the correct role (Project Manager) for project Lisiatko
*/

if(isUserInRole(currentUser(), “Lisiatko”, “Project Manager”) == false) {
lfDisable(“customfield_10000”);
lfDisable(“Field2 “);
lfDisable(“priority”);
lfDisable(“originalEstimate”);
}

Dlaczego wolę używać nazw pól zamiast ID w przypadku customfield ? Bo jest to dużo łatwiejsze do czytania, kiedy po jakimś czasie chcemy coś zmodyfikować w naszym skrypcie.

Jak to wygląda w praktyce

Załóżmy że chcę zablokować możliwość edycji trzech pól (Priority, Original Estimate, Labels) dla wszystkich którzy nie mają roli “Project Manager” w projekcie “Lisiatko”. Wtedy mój kod będzie wyglądał następująco:

if(isUserInRole(currentUser(), "Lisiatko", "Project Manager") == false) {
lfDisable("priority");
lfDisable("originalEstimate");
lfDisable("labels");
}

A efekt będzie taki:

Leave a comment

Dodaj komentarz