feat(mobile): UI-03 forms and collaboration pages (09-12)

- Page 09 create: grouped form (Event details / Description & languages),
  required default-language selector, zh-CN/en tabs with per-locale
  title/description/venue/address, explicit timezone field, bottom save
  button kept keyboard-reachable, create mode has no Access tab
- Page 10 edit: Details/Access tabs sharing one draft; Access has four
  switches with explanations; original downloads constrained by downloads
  (disabled + forced off in PATCH); unsaved-changes PopScope confirm;
  save commits all changes in one minimal PATCH
- Page 11 members: Owner group + Collaborators list with initial avatars
  and per-row remove; full-width Invite colleague opens account-search
  bottom sheet (debounced prefix search, race guard, already-added state);
  remove confirm names the member
- Page 12 categories: extracted to standalone page with per-row edit/
  delete menu and New category sheet (language tabs + name + sort order);
  delete confirm mentions photo impact; collaborator browse-only; old
  inline section removed from album detail
- l10n: new form/members/categories keys both locales; regenerated
- tests: form 14, members 6, categories 7, detail nav 1; full suite green

Co-Authored-By: Claude Code <noreply@anthropic.com>
This commit is contained in:
浅念
2026-09-22 01:23:02 +08:00
parent 5715c608d8
commit 8bd09eefb9
13 changed files with 2322 additions and 1184 deletions
+107 -47
View File
@@ -206,18 +206,6 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get albumCreate => '新建相册';
@override
String get albumEdit => '编辑相册';
@override
String get albumSectionEventInfo => '活动信息';
@override
String get albumSectionContent => '多语言内容';
@override
String get albumSectionAccess => '访问设置';
@override
String get albumTitle => '标题';
@@ -230,9 +218,6 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get albumAddress => '地址';
@override
String get albumDefaultLocale => '默认语言';
@override
String get albumStartAt => '开始时间';
@@ -248,18 +233,6 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get albumTimezoneInvalid => '无效的 IANA 时区名称';
@override
String get switchUpload => '允许上传';
@override
String get switchPublic => '公开可见';
@override
String get switchDownload => '允许下载';
@override
String get switchOriginalDownload => '允许下载原图';
@override
String get formStartAtRequired => '请选择开始时间';
@@ -272,6 +245,69 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get formEndAtNotAfterStartAt => '结束时间必须晚于开始时间';
@override
String get formEventDetails => '活动信息';
@override
String get formDescriptionLanguages => '描述与语言';
@override
String get formDefaultLanguage => '默认语言';
@override
String get formDetailsTab => '详情';
@override
String get formAccessTab => '访问';
@override
String get formAllowUploads => '允许上传';
@override
String get formAllowUploadsDesc => '允许工作人员向该相册上传照片';
@override
String get formPublicAccess => '公开访问';
@override
String get formPublicAccessDesc => '任何获得链接的人都可以查看照片';
@override
String get formAllowDownloads => '允许下载';
@override
String get formAllowDownloadsDesc => '观众可以下载浏览质量的照片';
@override
String get formOriginalDownloads => '下载原图';
@override
String get formOriginalDownloadsDesc => '观众可以下载原图照片';
@override
String get createAlbumTitle => '新建相册';
@override
String get createAlbumSubmit => '新建相册';
@override
String get editAlbumTitle => '编辑相册';
@override
String get saveChanges => '保存修改';
@override
String get unsavedChangesTitle => '放弃修改?';
@override
String get unsavedChangesBody => '修改尚未保存,离开将丢失这些修改。';
@override
String get discardChanges => '放弃';
@override
String get keepEditing => '继续编辑';
@override
String get create => '创建';
@@ -303,7 +339,47 @@ class AppLocalizationsZh extends AppLocalizations {
String get actionEdit => '编辑';
@override
String get albumMembers => '成员管理';
String get membersTitle => '成员';
@override
String membersTitleCount(int count) {
return '成员($count)';
}
@override
String get ownerGroup => '创建者';
@override
String get collaboratorsGroup => '协作者';
@override
String get noCollaborators => '还没有协作者';
@override
String get inviteColleague => '邀请同事';
@override
String get alreadyAdded => '已添加';
@override
String get add => '添加';
@override
String get categoriesTitle => '分类';
@override
String get newCategory => '新增分类';
@override
String get editCategory => '编辑分类';
@override
String deleteCategoryConfirm(String name) {
return '删除「$name」?该分类下的照片将变为未分类。';
}
@override
String get noCategories => '暂无分类';
@override
String get albumCategories => '分类管理';
@@ -317,18 +393,6 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get delete => '删除';
@override
String get deleteConfirmCategory => '确定删除该分类?该分类下的照片将变为未分类。';
@override
String get categoryEmpty => '暂无分类,点击右上角新增';
@override
String get categoryAdd => '新增分类';
@override
String get categoryEdit => '编辑分类';
@override
String get categoryNameZh => '中文名称';
@@ -344,18 +408,12 @@ class AppLocalizationsZh extends AppLocalizations {
@override
String get categorySortOrderInvalid => '排序序号必须是整数';
@override
String get albumMembersEmpty => '暂无成员';
@override
String get inviteSearchHint => '输入账号前缀搜索邀请(至少 2 个字符)';
@override
String get inviteNoResults => '未找到匹配用户';
@override
String get invite => '邀请';
@override
String get memberInvited => '已邀请';
@@ -363,7 +421,9 @@ class AppLocalizationsZh extends AppLocalizations {
String get removeMember => '移除成员';
@override
String get removeMemberConfirm => '确定移除该成员?';
String removeMemberConfirm(String name) {
return '确定将 $name 从该相册移除?';
}
@override
String get roleOwner => '创建者';