Files
RenewCMS/docs/design/screens/editor.md
T

6.8 KiB
Raw Blame History

Editor

  • Route: /article/:id/edit
  • API: GET /v1/article/{id} · PATCH /v1/article/{id} · PATCH …/publish|unpublish · POST …/image · DELETE
  • Visual reference: source/RenewCMS Screens Back-office.dc.html, group "Editor" (open it in a browser; each state is drawn at desktop and mobile, with a light/dark toggle).

On mobile, Save and Publish sit in a sticky bottom bar and the details panel opens as a slideover. A session expiry mid-edit keeps the draft in sessionStorage and goes to /login?redirect=/article/12/edit. After logging in, the editor restores the draft and shows "Unsaved changes".

States

Loading

Trigger: GET in flight. Skeletons for the title, content and details.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saved", loading true
  • Mobile: leading arrow-left button, trailing ellipsis

Saved

Trigger: Just opened or just saved. Save is disabled.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saved"
  • Mobile: leading arrow-left button, trailing ellipsis

Unsaved changes

Trigger: Any edit. Publish becomes "Save and publish". Leaving asks for confirmation.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "dirty"
  • Mobile: leading arrow-left button, trailing ellipsis

Saving

Trigger: Save, or Ctrl/⌘ S.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saving"
  • Mobile: leading arrow-left button, trailing ellipsis

Save failed

Trigger: 500 or network failure. The changes are kept and Retry resends them.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "error"
  • Mobile: leading arrow-left button, trailing ellipsis

Near the limit

Trigger: 90% of 10 000 HTML characters.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "dirty", len 9240
  • Mobile: leading arrow-left button, trailing ellipsis

Too long

Trigger: Over 10 000. Save and Publish are disabled until it's shorter.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "dirty", len 10214
  • Mobile: leading arrow-left button, trailing ellipsis

Preview

Trigger: The Preview switch. Shows the title and body in the content scale, the way a public site might.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saved", preview true
  • Mobile: leading arrow-left button, trailing ellipsis

Upload: choose

Trigger: The image button in the toolbar, or a file dropped on the editor.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Modal: Add an image
    • upload state: state "idle"
    • cancel "Cancel"
  • Editor: status "draft", save "dirty"
  • Mobile: leading arrow-left button, trailing ellipsis

Upload: in progress

Trigger: A valid file is uploading. Closing the dialog cancels the upload.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Modal: Add an image
    • upload state: state "uploading"
    • cancel "Cancel upload"
  • Editor: status "draft", save "dirty"
  • Mobile: leading arrow-left button, trailing ellipsis

Upload: rejected

Trigger: Checked in the browser, so nothing is sent.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Modal: Add an image
    • upload state: state "rejected"
    • cancel "Cancel"
    • confirm "Choose another file"
  • Editor: status "draft", save "dirty"
  • Mobile: leading arrow-left button, trailing ellipsis

Upload: inserted

Trigger: 201: the image goes in at the cursor, and the article now has unsaved changes.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Toast (success, circle-check): Image added "Save to keep it in the article."
  • Editor: status "draft", save "dirty", image true
  • Mobile: leading arrow-left button, trailing ellipsis

Publishing

Trigger: "Save and publish": the PATCH body, then the publish request.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saving", pending "Saving and publishing…"
  • Mobile: leading arrow-left button, trailing ellipsis

Published

Trigger: 200: the badge flips, Unpublish is offered and a toast confirms.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Toast (success, circle-check): Article published ""How we price a bathroom renovation" is now online."
  • Editor: status "online", save "saved"
  • Mobile: leading arrow-left button, trailing ellipsis

Unpublishing

Trigger: Unpublish doesn't save pending edits.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "online", save "saved", pending "Unpublishing…"
  • Mobile: leading arrow-left button, trailing ellipsis

Delete: confirm

Trigger: Delete… from the overflow menu. After a 204, it goes to /article with the "Article deleted" toast.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Modal: Delete this article?
    • text ""How we price a bathroom renovation" and its 3 images will be deleted. This can't be undone."
    • cancel "Cancel"
    • confirm "Delete article" (danger)
  • Editor: status "draft", save "saved"
  • Mobile: leading arrow-left button, trailing ellipsis

Leave with unsaved changes

Trigger: Back, a nav link or closing the tab.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Modal: Leave without saving?
    • text "Your changes to "How we price a bathroom renovation" haven't been saved."
    • cancel "Discard changes"
    • confirm "Keep editing"
  • Editor: status "draft", save "dirty"
  • Mobile: leading arrow-left button, trailing ellipsis

Offline

Trigger: The connection dropped. Writing continues, and Save and Publish wait.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "offline"
  • offline: true
  • Mobile: leading arrow-left button, trailing ellipsis

Not found (404)

Trigger: Unknown id, or the article was deleted elsewhere.

  • Breadcrumbs: Articles › How we price a bathroom renovation (mobile title "Edit article")
  • Editor: status "draft", save "saved", notfound true
  • Mobile: leading arrow-left button, trailing ellipsis