Формулировка проблемы: необходимо реализовать возможность переименования файлов проекта.
Связанные задачи: 0251.
Используется: Проекты -> Детали проекта.
Решение: необходимо добавить к контекстному меню файлов в дереве файлов проекта пункт "Переименовать" перед пунктом "Удалить".
Пункт имеет 2 состояния: активен и не активен. Состояние пункта определяется с помощью следующих правил:
При наличии у пользователя прав на запись проекта пункт меню активен для всех файлов, находящихся в дереве файлов данного проекта.
При наличии у пользователя прав на запись мероприятия пункт меню активен для всех файлов, лежащих в виртуальной папке данного мероприятия, в том числе для всех его физических подпапок.
Для виртуальных подпапок данного мероприятия необходимо проверять наличие прав на запись и изменять состояние пункта меню в соответствии со вторым пунктом данного списка правил, т.к. виртуальная папка сама является мероприятием.
В других случаях пункт меню должен быть не активным.
Замечание
Описанное поведение будет реализовано после пересмотра существующих пункта меню "Удалить" и кнопки "Создать" в деталях проекта, т.к. эти функции всегда доступны для использования в корневой папке на данный момент.
Необходимо добавить возможность переименования из корневой папки проекта в случае наличия только прав на чтение проекта, в связи с указанным выше замечанием.
При выборе пункта появляется диалоговое окно "Переименовать" с полем ввода нового названия файла и кнопкой "Готово". По умолчанию в поле должно содержаться старое название, которое должно быть выделено.
Для названия файлов запретить изменение расширения файла. Редактироваться должно только название файла.
Необходимо проводить валидацию, проверяя нет ли существующих файлов с таким же названием в данной директории. При этом не нужно проверять текущий файл с самим собой (т.е. исключить из существующих файлов текущий файл при проверке). Разрешить наличие одинаковых имен в разных директориях.
При не прохождении валидации вывести ошибку:
Файл с таким названием уже существует в данной директории.
.
Отклик программы в зависимости от действия пользователя при открытом диалоговом окне:
В случае закрытия диалогового окна необходимо сохранить прежнее название файла.
В случае нажатия кнопки "Готово" с введенным названием необходимо изменить название файла в соответствующем дереве папок в случае прохождения валидации.
В случае нажатия кнопки "Готово" с введенным названием не прошедшем валидацию необходимо вывести ошибку и дать пользователю возможность ввести новое название без необходимости повторного открытия диалогового окна.
В случае пустого названия подсветить поле ввода красным. Если
пользователь нажмет кнопку "Готово" с пустым названием
вывести ошибку: Введите название
. Дать
пользователю возможность ввести название без необходимости
повторного открытия диаловогого окна.
Примеры использования
Требования: Проект_1 со следующей структурой:
Мероприятие_1
Мероприятие_1.1
Мероприятие_2
И со следующей структурой папок:
Мероприятие_1 (виртуальная папка)
Мероприятие_1.1 (виртуальная папка)
Файл_0
Папка_1
Подпапка_1.1
Файл_1
Папка_2
Файл_2
Мероприятие_2 (виртуальная папка)
Папка_1
Файл_3
Наличие у Сотрудника_1 прав на:
"Проект_1" - чтение;
"Мероприятие_1" - чтение и запись;
"Мероприятие_2" - чтение.
Авторизоваться с логином и паролем Сотрудника_1 в модуле "Проекты".
Открыть "Проект_1" и нажать на кнопку "Детали" - отобразятся папки "Мероприятие_1" и "Мероприятие_2".
Открыть папку "Мероприятие_1", выделить "Файл_0" и переименовать в "Файл_00" - файл будет переименован.
Открыть "Папку_1" в "Мероприятии_1" и переименовать "Файл_1" в "Файл_2" - файл будет переименован.
Открыть "Мероприятие_2" и проверить не активность пункта "Переименовать" у "Файла_3".