Skip to content

Fix result field double encoding and preserve safe line breaks - #29

Merged
TungYenTsai merged 9 commits into
mainfrom
fix/result-field-rendering
Nov 6, 2026
Merged

TungYenTsai merged 9 commits into
mainfrom
fix/result-field-rendering

Conversation

@TungYenTsai

@TungYenTsai TungYenTsai commented Nov 6, 2026 •

Copy link
Copy Markdown
Collaborator

自訂欄 A 儲存 測試<br>測試 時,結果表格先經 Model::i18n() 編碼,再經 GridView 編碼,讓換行標籤與 R&D 顯示為 entity。此修改保留一層適當輸出處理,讓合法換行實際呈現,同時移除不安全的 HTML。

修改範圍:

  • 三個結果頁、候選名單、已圈選名單與實際使用的選票編輯表格,共 6 個 view。
  • 自訂標題 A–F、自訂欄 A 使用既有 HtmlPurifier 政策,保留安全排版後輸出一次。
  • 單位、職稱、自訂欄 B–F 等純文字由 GridView 編碼一次;原已淨化的姓名欄取消第二層編碼,其他姓名欄維持純文字。
  • 姓名標題避免重複編碼;移除前台結果頁會觸發 PHP Warning 的無效 Yii import。
  • 不修改既存資料、schema、依賴或計票邏輯;不作 html_entity_decode。既存 &lt;br&gt; 維持文字語意。

驗證:

  • 功能回歸:14 tests/670 assertions,涵蓋中英六畫面、換行、R&D、script/事件移除、B–F 純文字、既存 entity 與計票資料不變。
  • dev6 acceptance:129 tests/379 assertions 通過。
  • Chrome result-fields:23/23 通過,包含實際換行位置、12 項 CSV/Excel/HTML 匯出內容及紙本選票;不包含 LibreOffice 開檔驗證。設定與候選資料於 finally 還原。
  • 最終 HEAD 29fc2f3 的 CI 全綠:unit 1229/6786 assertions、functional 212/1471 assertions,Composer licenses+audit 通過。完整 Chrome E2E 179/179 通過,包含新組別之後的投票與匿名流程。
  • PHP 語法、diff whitespace 與 Gitleaks 通過。

保留草稿供審閱,未合併、未部署正式環境。

2026-11-06 補充(審閱回饋):

  • 管理端候選人管理列表(views/candi/data.php)的自訂欄 A 原本以純文字顯示 <br>,與其他畫面不一致;改用同一 HtmlPurifier 政策輸出,欄 B–F 維持純文字。
  • 新增功能回歸 testCandidateManagementRendersFieldAOnce(換行、粗體、事件屬性移除、欄 B 純文字),在修改前的 view 上失敗。
  • 已合併 main(含 Keep dependency updates compatible with PHP 8.2 #30)。dev6:ResultFieldRenderingCest 15 tests/680 assertions 通過。

TungYenTsai and others added 3 commits November 6, 2026 11:11
The admin candidate list still showed field A line breaks as literal
tags, unlike the voting, result and ballot screens. Apply the same
purified output there; fields B-F stay plain text.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@TungYenTsai
TungYenTsai marked this pull request as ready for review November 6, 2026 03:31
@TungYenTsai
TungYenTsai merged commit 415b0bf into main Nov 6, 2026
3 checks passed
@TungYenTsai
TungYenTsai deleted the fix/result-field-rendering branch November 6, 2026 03:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant