Repository navigation
Messaging.zh_CN
🌐 English · Deutsch · Español · Français
Gramps Connect 内置了一种方式,让您与一起编辑家谱的其他人讨论家谱,而无需离开应用,也无需在打印稿上贴便利贴。一切都是一个讨论:一个任何人都可以发言的带标题讨论串,可以选择关联任意数量的记录——一个汇集其所依据的成员、来源、引用和文库的研究目标,或者只是关于某条记录的随意交谈,或者不针对任何特定内容。
讨论以一个小型浮动窗口打开——固定在屏幕右下角的聊天气泡,类似 Messenger 的风格——而不是一个占据您正在查看内容的页面。打开讨论绝不会让您离开当前所在的记录或列表:窗口浮在上面,您可以在它下面继续浏览和编辑,无论接下来点击哪里,它都保持打开。它的标题栏可以把它最小化为一条小标题栏(点击即可重新展开),或者直接关闭;可以同时打开多个讨论,每个都有自己的窗口,最多 5 个——打开第 6 个会关闭最早的那个来腾出空间。以这种方式(或任何其他方式)关闭窗口时,讨论本身不会丢失任何内容;随时可以通过它自己的“讨论”按钮或其记录的“讨论”部分重新打开。
窗口里是一个消息串——每个人说过的所有话,按时间从早到晚排列,每个气泡显示是谁、何时写的,您自己的消息靠右对齐——外加一个可折叠的关联对象列表。输入回复并发送,它会立即添加到消息串中;其他人的标签页会通过常规的实时同步收到它,已经打开的窗口也会实时更新。
任何拥有编辑权限的人都可以修正任何消息中的错别字(气泡上的铅笔图标会把它原地替换为一个小文本框),或直接删除消息——不只限于作者自己的消息,这与 Gramps Connect 中其他所有编辑/删除所遵循的“有权限的任何人”规则相同,而不是更严格的“只能改自己的消息”。无论哪种情况,所有显示该讨论的已打开窗口都会立即反映出来,包括别人的窗口,实时更新。
大多数记录类型——成员、家庭、事件、地点、文库、来源、引用——在其详情面板中都有一个讨论按钮。如果该记录还没有关联任何讨论,它会直接打开一个小表单:标题(根据记录预先填好,可修改)、描述,以及要邀请谁。一旦该记录已经关联了至少一个讨论,“讨论”就会改为提供一个选择——从列表中加入其中一个,或在它们旁边发起一个新的讨论,适用于一条记录合理地同时有多个进行中的对话的情况(比如一个综合讨论,加上一个更具体的研究问题)。无论哪种方式,都会弹出一个浮动窗口;记录自己的讨论部分(与其摘录和故事并列)也会列出与它关联的每个讨论,因此无需记得点击“讨论”,就能轻松回到其中任何一个。
直接给某人发消息的方式相同:在活跃用户列表中点击对方的头像,即可以浮动窗口打开(或发起)一个只属于你们两人的私人讨论。它不会显示为关联到任何记录,也不会列在“讨论”页面上,因此除非您知道去哪里找,否则它不会出现在综合列表中。
受邀参与者会显示在讨论中(在其浮动窗口和管理页面上),让大家都能看到它是给谁的,但这只是一个标签,而不是一把锁——任何本来就能看到这棵家谱的人,即使不在最初的名单上,也仍然可以加入。之后可以在讨论的管理页面上添加或移除受邀者。
访客角色的账号不能被选为受邀参与者——由于讨论对访客完全隐藏(见下文),邀请访客只会添加一个谁都无法据此行动的名字。
被点名会收到一条专门的通知——“您已被邀请参加一个讨论”,与普通的活动提示不同——无论您是在讨论发起时就被点名,还是之后才被加入邀请名单。每个讨论只会触发一次,即首次发现您在名单上时,因此之后其他人每次编辑同一讨论时,它都不会反复提醒。
侧边栏的讨论视图是整棵家谱中所有讨论的列表,无论它们是否关联了任何内容——选中一个会打开它自己的管理页面(而不是浮动窗口),其中有标题、描述和一个打开讨论按钮。列表按最后修改列从新到旧排序,而发布一条新消息也会把它所在的讨论重新顶到列表最上方,而不仅仅是真正的重命名或修改描述——因此这个列表也可以一眼看出哪些对话最近有动静。使用列表的发起讨论按钮从头开始创建一个讨论——给它一个标题,并可选地描述它的用途——再用它自己的关联对象控件,把一个研究问题真正涉及的具体成员、来源、引用、文库、事件、地点、媒体或摘录一个个地加进来,可以是任何类型。这就是构建一个真正的研究讨论的方法:在这里发起它,然后在您去添加它所需要的来源和引用时,一直开着它的浮动窗口。任何人之后都可以把某条记录与讨论解除关联,而不会删除讨论或记录本身。
任何拥有编辑权限的人都可以在讨论的管理页面上重命名讨论、修改其描述或邀请名单,或者直接删除它——浮动窗口是用来聊天的,不是用来编辑的。删除一个讨论也会删除其中的所有消息,而不只是它的标题/描述,因此不会留下任何残余,并且如果它的浮动窗口是打开的也会一并关闭——这无法撤销,所以会先请求确认。
只要能获取到,消息就会显示发送者的真实姓名,而不是其登录用户名——通过一个类似用户目录的后台查询来解析。您自己的姓名总能解析出来(知道自己是谁不需要任何特殊权限);能否看到其他所有人的真实姓名,取决于您的角色是否能查看用户列表。无法解析出姓名的用户名会原样显示。
讨论是一个普通的 Gramps Note(摘录),标记为一种自定义摘录类型(“topic”——底层数据中的名称,来自“讨论”成为应用中显示的名称之前),以便与普通摘录或自动生成的人生故事区分开——与让这两者互不干扰所用的技巧相同。它的标题和描述以一个小 JSON 对象而不是自由文本的形式存放在摘录自己的文本中,就像生成故事的文本保存着它自己的结构化规格一样。每条消息都是一个单独的 Note,类型为“topic-message”,通过在其文本第一行写上讨论的 handle 来指向它所属的讨论(发送者的用户名和消息内容在其余行中,采用消息摘录一直使用的“用户名: 消息本身”格式,因为 Note 没有自己的作者字段)——因此发布消息永远不需要修改讨论本身的摘录,也不会修改关联的记录。代价在删除时:消息是通过这个嵌入的 handle 定位的,而不是通过 Gramps 自己的 note_list 引用机制,因此 Gramps 通常的删除时清理(只追踪 note_list 反向链接)在删除讨论本身时无法找到它的消息。Gramps Connect 会作为同一个操作的一部分先自行删除它们,这样被删除的讨论就不会悄悄留下它的消息。
把讨论关联到记录使用的是 Gramps 自己的 note_list 机制——讨论自己的摘录 handle 被添加到该记录的摘录列表中,也就是它的普通摘录所在的同一个列表——因此讨论的关联底下没有任何私有格式;如果在 Gramps 桌面版或 gramps-web 中打开,一个讨论(及其关联的内容)与家谱的其余部分一样可移植,只不过在那里看起来是一条正文像 JSON、带有类似标题标签的普通摘录。
每条讨论和消息摘录都标记为 private,以便对访客角色的账号隐藏,这与普通敏感摘录使用的标志相同。正因如此,访客角色的账号根本看不到侧边栏的讨论图标——它背后只会是一个永远为空的列表。这就是全部的访问控制:在更强的意义上它并不是真正私密的,因为任何拥有普通摘录查看权限的人(任何非访客角色)如果特意去找,仍然可以通过 API 读到它——一对一讨论只是一个名字听起来很私密的普通讨论,而不是密码学意义上的保证,受邀参与者名单也同样如此。发布消息只需要向家谱添加新对象的权限;把讨论关联到已有记录(或通过记录自己的“讨论”按钮就它发起新讨论)还需要编辑权限,这与给记录附加任何其他引用相同——这也是为什么即使对无法发起新讨论的人,“讨论”也总会提供加入已有讨论的选项(不需要额外权限)。
Gramps Connect is part of the family of Gramps-based software.
Using the app
- Overview
- Installing
- Deploying
- Messaging
- GOQL (advanced search)
- Gramplets & Add-on Store
- Data Model & Editing
- FAQ
Building & contributing