diff --git a/UI_GUIDE_FOR_GEMINI.md b/UI_GUIDE_FOR_GEMINI.md new file mode 100644 index 0000000..5eb99c4 --- /dev/null +++ b/UI_GUIDE_FOR_GEMINI.md @@ -0,0 +1,152 @@ +# 前端 UI 开发规范(给 Gemini) + +> 你(Gemini)**只负责前端 UI**。这份文档是你动手前的唯一须知,请**先完整读一遍再改任何代码**。 +> 本项目是 **Kanboard 1.2.52**(开源 PHP 看板)的二次开发,分支 `fix-newUI`。 +> 代码根目录:`W:\kanban\kanboard-1.2.52\`(下文所有相对路径都以此为基准)。 +> 文档里说的"屎山"指:同一样式散落多处互相打架、死代码、内联样式乱塞、写死颜色/宽度。**本规范的全部目的就是不让它再变成屎山。** + +--- + +## 0. 三条铁律(违反任何一条 = 制造屎山) + +1. **所有 CSS 只写在 `assets/css/custom_dashboard.css`,并放进正确的编号区块。** 严禁在 `.php` 模板里内联 ` +。弹窗通用外观见同文件第 11 节。 +*/ ?> @@ -82,51 +11,67 @@
+
+
task->renderColorField($values) ?>
+
task->renderPriorityField($project, $values) ?>
+
task->renderTitleField($values, $errors) ?> + task->renderTagField($project) ?> task->renderDescriptionField($values, $errors) ?> task->renderDescriptionTemplateDropdown($project['id']) ?> - task->renderTagField($project) ?> hook->render('template:task:form:first-column', array('values' => $values, 'errors' => $errors)) ?>
- task->renderColorField($values) ?> - task->renderAssigneeField($users_list, $values, $errors) ?> - task->renderCategoryField($categories_list, $values, $errors) ?> - task->renderSwimlaneField($swimlanes_list, $values, $errors) ?> - task->renderColumnField($columns_list, $values, $errors) ?> - task->renderPriorityField($project, $values) ?> +
+
+ task->renderCategoryField($categories_list, $values, $errors) ?> + task->renderSwimlaneField($swimlanes_list, $values, $errors) ?> + task->renderColumnField($columns_list, $values, $errors) ?> +
+
+ task->renderAssigneeField($users_list, $values, $errors) ?> +
+
hook->render('template:task:form:second-column', array('values' => $values, 'errors' => $errors)) ?> - task->renderDueDateField($values, $errors) ?> +
+
+
+ +
+ task->renderFileUpload($screenshot, $files) ?> +
+
+
+ + hook->render('template:task:form:bottom-before-buttons', array('values' => $values, 'errors' => $errors)) ?> +
+ +
task->renderStartDateField($values, $errors) ?> + task->renderDueDateField($values, $errors) ?> task->renderTimeEstimatedField($values, $errors) ?> task->renderTimeSpentField($values, $errors) ?> task->renderScoreField($values, $errors) ?> task->renderReferenceField($values, $errors) ?> hook->render('template:task:form:third-column', array('values' => $values, 'errors' => $errors)) ?> -
-
- -
- -
- task->renderFileUpload($screenshot, $files) ?> +
+ +
+ form->checkbox('another_task', t('Create another task'), 1, isset($values['another_task']) && $values['another_task'] == 1, '', array("tabindex" => "16")) ?> + form->checkbox('duplicate_multiple_projects', t('Duplicate to multiple projects'), 1, false, '', array("tabindex" => "17")) ?> +
+ +
+ 取消 +
-
- - hook->render('template:task:form:bottom-before-buttons', array('values' => $values, 'errors' => $errors)) ?> - - - form->checkbox('another_task', t('Create another task'), 1, isset($values['another_task']) && $values['another_task'] == 1, '', array("tabindex" => "16")) ?> - form->checkbox('duplicate_multiple_projects', t('Duplicate to multiple projects'), 1, false, '', array("tabindex" => "17")) ?> - - - modal->submitButtons() ?> +
diff --git a/assets/css/custom_dashboard.css b/assets/css/custom_dashboard.css index 734088b..7c9c61d 100644 --- a/assets/css/custom_dashboard.css +++ b/assets/css/custom_dashboard.css @@ -1,3 +1,25 @@ +/* ========================================================= + custom_dashboard.css — 全站自定义样式(登录页除外) + --------------------------------------------------------- + 主题色变量 (--login-* / --color-*) 定义在 custom_login.css, + 本文件直接引用它们(layout.php 先加载 login 再加载本文件)。 + + 章节顺序: + 1. 全局背景 + 2. 顶栏 Header(logo / 标题 / 项目切换器) + 3. 侧边栏 Sidebar + 4. 页面头部标签 Page header + 5. 列表 / 卡片 / 提示 / 搜索框 + 6. 顶栏注入组件(视图切换 / 过滤) + 7. 项目概览仪表盘(KPI + 标签页) + 8. 看板 Kanban board + 9. 任务【编辑】弹窗表单布局 (.task-form-*) + 10. 任务【新建】弹窗表单布局 (.custom-task-form-*) + 11. 弹窗通用外观(所有 #modal-box) + + 约定:弹窗样式只在本文件里改;task_creation/show.php 不再内联