v63:卡片配色 / 日历本靠右 / 地图题图 / 设置页清理 / 公共标签颜色 / 令牌下线

- 卡片右上角按钮改用「来自哪个模块」的主题色:HomeCards 登记表新增 mod 字段
  与 module(),首页从登记表取色(原来是模板里硬编码 in_array(['agenda','tasks'])
  白名单,新加带按钮的卡片会默默变灰)
- 首页日程把日历本放到色块右侧:.ag-ev 改弹性行,「时间+标题」包进
  .ag-ev-main(flex:1 1 auto; min-width:0),日历本作右侧兄弟。
  原来 display:block 会把日历本顶到第二行,色块一矮就完全看不见
- 旅程地图显示题图:服务端把 media_url(cover_key) 塞进地图数据,
  地图卡片左侧 40x40 题图(object-fit:cover),没有题图不留灰框
- 系统设置第一块改叫「系统标语」;删掉「首页上那一行小字」提示、
  「不是全家的统一口号」说明、「上次结构升级有步骤失败了」整框;
  运行环境删「排错时看这一块」与「亲属连线」那一行(功能与数据未动)
- 公共标签:说明文字全删;列表与编辑合并成一行(色块+名字+N人+箭头+编辑);
  person_groups 加 color 列(Schema addColumn,老库可升);点「编辑」弹框
  改名字与颜色、点「完成」提交;下面那个独立编辑列表撤掉。删除挪进弹框
- 个人设置删掉「手动签发接口令牌」整块;settings/api_token 路由保留但挡下提交
  (只删界面会留下知道地址就能用的后门);令牌只由登录后自动签发,
  设备管理卡保留。apiTokens/apiPlain/apiLabel/apiBase 四个变量一并撤掉
This commit is contained in:
2026-10-19 17:27:37 +08:00
parent 2e40133d8f
commit 2f7dc6ca23
11 changed files with 450 additions and 189 deletions
+9 -2
View File
@@ -16,8 +16,11 @@
* · 坐标来源:`Trip::attachSpots()` —— 旅程下所有节点的 from/to 坐标**取重心**;
* 没有坐标就退到城市(内置离线城市表,**不发网络请求**,见那里的说明)。
* · 每趟旅程一枚标记,点它进 `trips/show`。
* · 卡片只放"标题 + 时间 + 城市",不放封面图 —— 本仓列表已经是图片卡片,
* 地图上再来一层图片会喧宾夺主(地图的作用是"看空间分布")。
* · 🔴 v63(用户 2026-10-19 第 3 条):「旅程地图模式,应该显示旅程的题图。」
* ⇒ 卡片左侧加一枚**题图小方图**(`trip_details.cover_key`,与列表页同一个来源、
* 同一套 `media_url()` 出口)。没有题图就只显示文字,不留灰框。
* ⚠️ URL 在**服务端**算好塞进 JSON:`media_url()` 依赖站点路径与代理前缀
* (见那个函数的说明),端上拼不出来。
* · 视野上限同样 11 级、贴合全部标记。
*
* ⚠️ **合规**:地图用高德(腾讯/高德/百度/天地图是合规白名单内),
@@ -43,6 +46,10 @@ foreach ((array)($rows ?? []) as $row) {
'when' => \App\Trip::activitySpan($row['starts_at'] ?? null, $row['ends_at'] ?? null),
'city' => (string)($row['city'] ?? ''),
'url' => url('trips/show', ['id' => (int)$row['id']]),
// 🔴 v63 第 3 条:题图。⚠️ 用 `media_url()` 而不是直接拼 storage 路径 ——
// 图片统一走 media.php 代理(桶不必开公共读),且**必须带版本号**,
// 否则换了题图缓存里还是老图。
'cover' => !empty($row['cover_key']) ? media_url((string)$row['cover_key']) : '',
];
}
?>