Задача [0147]: Возможность переименования файлов в папке проекта

Формулировка проблемы: необходимо реализовать возможность переименования файлов проекта.

Связанные задачи: 0251.

Используется: Проекты -> Детали проекта.

Решение: необходимо добавить к контекстному меню файлов в дереве файлов проекта пункт "Переименовать" перед пунктом "Удалить".

Пункт имеет 2 состояния: активен и не активен. Состояние пункта определяется с помощью следующих правил:

  1. При наличии у пользователя прав на запись проекта пункт меню активен для всех файлов, находящихся в дереве файлов данного проекта.

  2. При наличии у пользователя прав на запись мероприятия пункт меню активен для всех файлов, лежащих в виртуальной папке данного мероприятия, в том числе для всех его физических подпапок.

  3. Для виртуальных подпапок данного мероприятия необходимо проверять наличие прав на запись и изменять состояние пункта меню в соответствии со вторым пунктом данного списка правил, т.к. виртуальная папка сама является мероприятием.

  4. В других случаях пункт меню должен быть не активным.

Замечание

Описанное поведение будет реализовано после пересмотра существующих пункта меню "Удалить" и кнопки "Создать" в деталях проекта, т.к. эти функции всегда доступны для использования в корневой папке на данный момент.

Необходимо добавить возможность переименования из корневой папки проекта в случае наличия только прав на чтение проекта, в связи с указанным выше замечанием.

При выборе пункта появляется диалоговое окно "Переименовать" с полем ввода нового названия файла и кнопкой "Готово". По умолчанию в поле должно содержаться старое название, которое должно быть выделено.

Для названия файлов запретить изменение расширения файла. Редактироваться должно только название файла.

Необходимо проводить валидацию, проверяя нет ли существующих файлов с таким же названием в данной директории. При этом не нужно проверять текущий файл с самим собой (т.е. исключить из существующих файлов текущий файл при проверке). Разрешить наличие одинаковых имен в разных директориях.

При не прохождении валидации вывести ошибку:

Файл с таким названием уже существует в данной директории..

Отклик программы в зависимости от действия пользователя при открытом диалоговом окне:

  1. В случае закрытия диалогового окна необходимо сохранить прежнее название файла.

  2. В случае нажатия кнопки "Готово" с введенным названием необходимо изменить название файла в соответствующем дереве папок в случае прохождения валидации.

  3. В случае нажатия кнопки "Готово" с введенным названием не прошедшем валидацию необходимо вывести ошибку и дать пользователю возможность ввести новое название без необходимости повторного открытия диалогового окна.

  4. В случае пустого названия подсветить поле ввода красным. Если пользователь нажмет кнопку "Готово" с пустым названием вывести ошибку: Введите название. Дать пользователю возможность ввести название без необходимости повторного открытия диаловогого окна.


Примеры использования

Требования: Проект_1 со следующей структурой:

И со следующей структурой папок:

Наличие у Сотрудника_1 прав на:

  1. Авторизоваться с логином и паролем Сотрудника_1 в модуле "Проекты".

  2. Открыть "Проект_1" и нажать на кнопку "Детали" - отобразятся папки "Мероприятие_1" и "Мероприятие_2".

  3. Открыть папку "Мероприятие_1", выделить "Файл_0" и переименовать в "Файл_00" - файл будет переименован.

  4. Открыть "Папку_1" в "Мероприятии_1" и переименовать "Файл_1" в "Файл_2" - файл будет переименован.

  5. Открыть "Мероприятие_2" и проверить не активность пункта "Переименовать" у "Файла_3".