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:
@@ -488,30 +488,6 @@ abstract class AppLocalizations {
|
||||
/// **'新建相册'**
|
||||
String get albumCreate;
|
||||
|
||||
/// No description provided for @albumEdit.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'编辑相册'**
|
||||
String get albumEdit;
|
||||
|
||||
/// No description provided for @albumSectionEventInfo.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'活动信息'**
|
||||
String get albumSectionEventInfo;
|
||||
|
||||
/// No description provided for @albumSectionContent.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'多语言内容'**
|
||||
String get albumSectionContent;
|
||||
|
||||
/// No description provided for @albumSectionAccess.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'访问设置'**
|
||||
String get albumSectionAccess;
|
||||
|
||||
/// No description provided for @albumTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -536,12 +512,6 @@ abstract class AppLocalizations {
|
||||
/// **'地址'**
|
||||
String get albumAddress;
|
||||
|
||||
/// No description provided for @albumDefaultLocale.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'默认语言'**
|
||||
String get albumDefaultLocale;
|
||||
|
||||
/// No description provided for @albumStartAt.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -572,30 +542,6 @@ abstract class AppLocalizations {
|
||||
/// **'无效的 IANA 时区名称'**
|
||||
String get albumTimezoneInvalid;
|
||||
|
||||
/// No description provided for @switchUpload.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许上传'**
|
||||
String get switchUpload;
|
||||
|
||||
/// No description provided for @switchPublic.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'公开可见'**
|
||||
String get switchPublic;
|
||||
|
||||
/// No description provided for @switchDownload.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许下载'**
|
||||
String get switchDownload;
|
||||
|
||||
/// No description provided for @switchOriginalDownload.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许下载原图'**
|
||||
String get switchOriginalDownload;
|
||||
|
||||
/// No description provided for @formStartAtRequired.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -620,6 +566,132 @@ abstract class AppLocalizations {
|
||||
/// **'结束时间必须晚于开始时间'**
|
||||
String get formEndAtNotAfterStartAt;
|
||||
|
||||
/// No description provided for @formEventDetails.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'活动信息'**
|
||||
String get formEventDetails;
|
||||
|
||||
/// No description provided for @formDescriptionLanguages.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'描述与语言'**
|
||||
String get formDescriptionLanguages;
|
||||
|
||||
/// No description provided for @formDefaultLanguage.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'默认语言'**
|
||||
String get formDefaultLanguage;
|
||||
|
||||
/// No description provided for @formDetailsTab.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'详情'**
|
||||
String get formDetailsTab;
|
||||
|
||||
/// No description provided for @formAccessTab.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'访问'**
|
||||
String get formAccessTab;
|
||||
|
||||
/// No description provided for @formAllowUploads.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许上传'**
|
||||
String get formAllowUploads;
|
||||
|
||||
/// No description provided for @formAllowUploadsDesc.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许工作人员向该相册上传照片'**
|
||||
String get formAllowUploadsDesc;
|
||||
|
||||
/// No description provided for @formPublicAccess.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'公开访问'**
|
||||
String get formPublicAccess;
|
||||
|
||||
/// No description provided for @formPublicAccessDesc.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'任何获得链接的人都可以查看照片'**
|
||||
String get formPublicAccessDesc;
|
||||
|
||||
/// No description provided for @formAllowDownloads.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'允许下载'**
|
||||
String get formAllowDownloads;
|
||||
|
||||
/// No description provided for @formAllowDownloadsDesc.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'观众可以下载浏览质量的照片'**
|
||||
String get formAllowDownloadsDesc;
|
||||
|
||||
/// No description provided for @formOriginalDownloads.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'下载原图'**
|
||||
String get formOriginalDownloads;
|
||||
|
||||
/// No description provided for @formOriginalDownloadsDesc.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'观众可以下载原图照片'**
|
||||
String get formOriginalDownloadsDesc;
|
||||
|
||||
/// No description provided for @createAlbumTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'新建相册'**
|
||||
String get createAlbumTitle;
|
||||
|
||||
/// No description provided for @createAlbumSubmit.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'新建相册'**
|
||||
String get createAlbumSubmit;
|
||||
|
||||
/// No description provided for @editAlbumTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'编辑相册'**
|
||||
String get editAlbumTitle;
|
||||
|
||||
/// No description provided for @saveChanges.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'保存修改'**
|
||||
String get saveChanges;
|
||||
|
||||
/// No description provided for @unsavedChangesTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'放弃修改?'**
|
||||
String get unsavedChangesTitle;
|
||||
|
||||
/// No description provided for @unsavedChangesBody.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'修改尚未保存,离开将丢失这些修改。'**
|
||||
String get unsavedChangesBody;
|
||||
|
||||
/// No description provided for @discardChanges.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'放弃'**
|
||||
String get discardChanges;
|
||||
|
||||
/// No description provided for @keepEditing.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'继续编辑'**
|
||||
String get keepEditing;
|
||||
|
||||
/// No description provided for @create.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -680,11 +752,83 @@ abstract class AppLocalizations {
|
||||
/// **'编辑'**
|
||||
String get actionEdit;
|
||||
|
||||
/// No description provided for @albumMembers.
|
||||
/// No description provided for @membersTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'成员管理'**
|
||||
String get albumMembers;
|
||||
/// **'成员'**
|
||||
String get membersTitle;
|
||||
|
||||
/// No description provided for @membersTitleCount.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'成员({count})'**
|
||||
String membersTitleCount(int count);
|
||||
|
||||
/// No description provided for @ownerGroup.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'创建者'**
|
||||
String get ownerGroup;
|
||||
|
||||
/// No description provided for @collaboratorsGroup.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'协作者'**
|
||||
String get collaboratorsGroup;
|
||||
|
||||
/// No description provided for @noCollaborators.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'还没有协作者'**
|
||||
String get noCollaborators;
|
||||
|
||||
/// No description provided for @inviteColleague.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'邀请同事'**
|
||||
String get inviteColleague;
|
||||
|
||||
/// No description provided for @alreadyAdded.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'已添加'**
|
||||
String get alreadyAdded;
|
||||
|
||||
/// No description provided for @add.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'添加'**
|
||||
String get add;
|
||||
|
||||
/// No description provided for @categoriesTitle.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'分类'**
|
||||
String get categoriesTitle;
|
||||
|
||||
/// No description provided for @newCategory.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'新增分类'**
|
||||
String get newCategory;
|
||||
|
||||
/// No description provided for @editCategory.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'编辑分类'**
|
||||
String get editCategory;
|
||||
|
||||
/// No description provided for @deleteCategoryConfirm.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'删除「{name}」?该分类下的照片将变为未分类。'**
|
||||
String deleteCategoryConfirm(String name);
|
||||
|
||||
/// No description provided for @noCategories.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'暂无分类'**
|
||||
String get noCategories;
|
||||
|
||||
/// No description provided for @albumCategories.
|
||||
///
|
||||
@@ -710,30 +854,6 @@ abstract class AppLocalizations {
|
||||
/// **'删除'**
|
||||
String get delete;
|
||||
|
||||
/// No description provided for @deleteConfirmCategory.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'确定删除该分类?该分类下的照片将变为未分类。'**
|
||||
String get deleteConfirmCategory;
|
||||
|
||||
/// No description provided for @categoryEmpty.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'暂无分类,点击右上角新增'**
|
||||
String get categoryEmpty;
|
||||
|
||||
/// No description provided for @categoryAdd.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'新增分类'**
|
||||
String get categoryAdd;
|
||||
|
||||
/// No description provided for @categoryEdit.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'编辑分类'**
|
||||
String get categoryEdit;
|
||||
|
||||
/// No description provided for @categoryNameZh.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -764,12 +884,6 @@ abstract class AppLocalizations {
|
||||
/// **'排序序号必须是整数'**
|
||||
String get categorySortOrderInvalid;
|
||||
|
||||
/// No description provided for @albumMembersEmpty.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'暂无成员'**
|
||||
String get albumMembersEmpty;
|
||||
|
||||
/// No description provided for @inviteSearchHint.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -782,12 +896,6 @@ abstract class AppLocalizations {
|
||||
/// **'未找到匹配用户'**
|
||||
String get inviteNoResults;
|
||||
|
||||
/// No description provided for @invite.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'邀请'**
|
||||
String get invite;
|
||||
|
||||
/// No description provided for @memberInvited.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
@@ -803,8 +911,8 @@ abstract class AppLocalizations {
|
||||
/// No description provided for @removeMemberConfirm.
|
||||
///
|
||||
/// In zh, this message translates to:
|
||||
/// **'确定移除该成员?'**
|
||||
String get removeMemberConfirm;
|
||||
/// **'确定将 {name} 从该相册移除?'**
|
||||
String removeMemberConfirm(String name);
|
||||
|
||||
/// No description provided for @roleOwner.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user