Bỏ qua, đến nội dung

@digiforce-nc/plugin-block-iframe

Plugin nhúng nội dung bên ngoài vào trang ứng dụng thông qua iframe - hỗ trợ hai chế độ: nhúng URL bên ngoài và lưu/render HTML trực tiếp từ database.

Plugin này làm gì?

Trong nhiều tình huống, bạn cần nhúng một trang web bên ngoài (dashboard Grafana, biểu mẫu Google, trang wiki) hoặc viết đoạn HTML tùy chỉnh ngay trong ứng dụng. Plugin iframe cung cấp cả hai chế độ này với server-side lưu trữ HTML an toàn.

Ba nhiệm vụ chính

#Nhiệm vụChi tiết
1Nhúng URL bên ngoàiRender iframe trỏ đến URL tùy ý, hỗ trợ biến động trong URL
2Lưu & render HTMLLưu HTML vào database, trả về raw HTML qua action riêng
3Kiểm soát truy cậpACL yêu cầu đăng nhập để đọc HTML, snippet ui.iframeHtml

Kiến trúc

Tổng quan

Plugin có cả server (lưu HTML, cung cấp API) và client (render iframe, code editor):

TầngVai tròThành phần
Client UIRender iframe, chỉnh sửa HTMLIframeBlockWidget, CodeEditor
Server APILưu trữ và trả HTMLAction iframeHtml:getHtml
DatabaseLưu trữ nội dung HTMLCollection iframeHtml

Hai chế độ hoạt động

Chế độCách hoạt độngDữ liệu
URL modeIframe nhúng trực tiếp URL bên ngoàiURL lưu trong schema props
HTML modeGọi API lấy HTML, render trong iframe sandboxHTML lưu trong bảng iframeHtml

API endpoints

EndpointMethodMô tảACL
iframeHtml:getHtmlGETTrả về raw HTML content theo idloggedIn
iframeHtml:createPOSTTạo bản ghi HTML mớiloggedIn
iframeHtml:updatePUTCập nhật nội dung HTMLloggedIn

Luồng HTML mode

Database

Plugin tạo một collection duy nhất:

Bảng iframeHtml

CộtKiểuMô tả
iduid (PK)Định danh duy nhất
htmltextNội dung HTML đầy đủ

Phân quyền (ACL)

Tài nguyênQuyềnĐiều kiện
iframeHtml:getHtmlĐọc HTMLYêu cầu loggedIn
iframeHtml:createTạo HTMLYêu cầu loggedIn
iframeHtml:updateSửa HTMLYêu cầu loggedIn
Snippet ui.iframeHtmlHiển thị blockSnippet ACL

Tính năng

Tính năngMô tả
URL modeNhúng bất kỳ URL bên ngoài nào qua iframe
HTML modeViết HTML tùy chỉnh, lưu server-side
CodeEditorTrình soạn thảo code với syntax highlighting
SandboxHTML render trong iframe sandbox để cách ly
Biến động URLHỗ trợ biến trong URL (record id, user info)
ResponsiveIframe tự co giãn theo container

Thành phần client

Thành phầnMô tả
IframeBlockWidgetWidget chính đăng ký block iframe vào hệ thống
IframeBlockProviderProvider quản lý state (mode, url, html content)
IframeBlockComponentComponent render iframe với URL hoặc HTML
CodeEditorComponent code editor cho chế độ HTML
IframeDesignerDesigner cho phép chuyển mode, cấu hình URL/HTML
IframeBlockInitializerĐăng ký vào menu "Add block"

Dependencies

PackageVai trò
@digiforce-nc/clientClient framework (peer)
@digiforce-nc/serverServer framework (peer)
@digiforce-nc/databaseDatabase ORM cho collection iframeHtml (peer)
react-iframeComponent React render iframe

Mục lục chi tiết