Коллеги, помогите решить проблему.
Разработан Workflow:
UNCONFIRMED → CHECK → CONFIRMED → IN_PROGRESS → RESOLVED → TESTING → VERIFIED → CLOSED (и еще всякие обходные связи)
Согласно разработанному workflow, закрывать баг, в том числе объявляя его дублем, можно только из состояний CHECK и VERIFIED, причем не все могут это делать, в смысле не только лишь все, а мало кто может это сделать.
Ну и еще переводить в VRIFIED может только назначенный QA.
В багзилле перевод в состояние CLOSED доступен из всех, и не меняется.
Для решения проблемы (как сказано в описании) залез в файл Bug.pm и отрихтовал sub check_can_change_field:
#Nobody can't close a bug from bug states expt this if (($field eq 'bug_status') && (not(is_open_state($newvalue))) && ($oldvalue ne 'VERIFIED') && ($oldvalue ne 'CHECK')) { $$PrivilegesRequired = PRIVILEGES_REQUIRED_EMPOWERED; return 0; } #Only QA can change status to VERIFIED if (($field eq 'bug_status') && ($newvalue eq 'VERIFIED')) { if (!$self->{'error'}) { if (Bugzilla->params->{'useqacontact'} && ( $self->{'qa_contact'} != $user->id)) { $$PrivilegesRequired = PRIVILEGES_REQUIRED_EMPOWERED; return 0; } } } ... # - change the status if ($field eq 'bug_status') { $$PrivilegesRequired = PRIVILEGES_REQUIRED_ASSIGNEE; return 0; }
И вроде бы все хорошо, но вылезла новая проблема:
Если для пользователя ошибка оказывается в заблоченном состоянии (т.е. он не имеет прав перевести ее в любое другое состояние, кроме текущего),
то поле состояния показывается неизменным, но рядом с ним появляется поле resolution, как если бы пользователь пытался закрыть ошибку.
В результате если пользователь хочет просто написать комментарий или подписаться - то система не дает ему этого сделать, поскольку он пытается изменить резолюцию.
Подскажите - где исправить, чтобы при отсутствии выбора статуса не появлялось поле резолюции.
Ну или по-другому решить данную проблему.
ЗЫ: bugzilla 4.4.10 (потому что нужен локализованный интерфейс)
Отсутствует