Skip to content

  • Projects
  • Groups
  • Snippets
  • Help
  • Sign in / Register
Minds Frontend
Minds Frontend
  • Project overview
  • Repository
  • Issues 400
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 66
  • CI / CD
  • Security & Compliance
  • Packages
  • Analytics
  • Wiki
  • Snippets
  • Members
  • Collapse sidebar
  • Graph
  • Charts
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
  • Minds
  • Minds FrontendMinds Frontend
  • Issues
  • #2333

Closed
Open
Opened 2 months ago by Brian Hatchet@brianhatchet:speech_balloon:12 of 12 tasks completed12/12 tasks
Report abuse New issue

CKEditor 5 PoC

  • Setup a "new-blog-editor" feature flag
  • Allow loading of old blogs using the old components
  • Install CKEditor 5 and use the inline mode to make it resemble our existing medium-editor as much as possible
  • Install the CKeditor 5 plugins that allows conversion of markdown into our medium html
  • Limit the styles and functionality as much as possible. We want to create a bloat-free experience with minimum toolbars and chrome that fits into the overall site.
  • Users should only be to chose from predetermined styles.
  • Make sure we provide the ability to quickly create bulleted lists and numeric lists
  • Make sure we can easily copy text from wordpress sites and other rich copy sources
  • New blogs should be tagged with an attribute that marks them as "version2"
  • New blogs should load in the new editor
  • Old blogs should load in the old editor
  • Make sure we can save on the backend

We're going to roll this out as a POC behind a feature flag

We'll create a card to stand up a built package repo for a blog editor with all our plugins packaged and minified

If the v1 blogs can be displayed and saved with the new editor, we can just turn it on with the FF

If we can't successfully redisplay working blogs, we'll tag the new blogs with v2 on the backend

Edited 2 weeks ago by Ben Hayward

Linked issues
1

Relates to

  • Store blog content locally or on our end, for backup purposes.
    #1967
    Avatar for Marcelo Rivera Avatar for Ben Hayward
Related merge requests
2
  • WIP: CKEditor5 Blog PoC
    !733
    Avatar for Ben Hayward
  • WIP: Adding in blog editor versioning for front#2333
    engine !448
When these merge requests are accepted, this issue will be closed automatically.
  • Discussion 19
  • Designs 0
  • Brian Hatchet :speech_balloon: @brianhatchet changed due date to December 20, 2019 2 months ago

    changed due date to December 20, 2019

  • Brian Hatchet :speech_balloon: @brianhatchet added 1 deleted label 2 months ago

    added 1 deleted label

  • Brian Hatchet :speech_balloon: @brianhatchet added Squad::Yellow Status::Backlog scoped labels 2 months ago

    added scoped labels

  • Brian Hatchet :speech_balloon: @brianhatchet changed weight to 24 2 months ago

    changed weight to 24

  • Brian Hatchet :speech_balloon: @brianhatchet marked this issue as related to #1967 2 months ago

    marked this issue as related to #1967

  • Brian Hatchet :speech_balloon: @brianhatchet changed the description 1 month ago

    changed the description

  • Brian Hatchet :speech_balloon: @brianhatchet changed due date to January 14, 2020 1 month ago

    changed due date to January 14, 2020

  • Brian Hatchet :speech_balloon: @brianhatchet removed 1 deleted label 1 month ago

    removed 1 deleted label

  • Brian Hatchet :speech_balloon: @brianhatchet added Sprint::01/01 - Xerothermic Xenarthra scoped label 1 month ago

    added scoped label

  • Brian Hatchet :speech_balloon: @brianhatchet assigned to @benhayward.ben 1 month ago

    assigned to @benhayward.ben

  • Brian Hatchet :speech_balloon: @brianhatchet unassigned @eiennohi 1 month ago

    unassigned @eiennohi

  • Brian Hatchet :speech_balloon: @brianhatchet changed milestone to %Sprint::01/01 - Xerothermic Xenartha 1 month ago

    changed milestone to %Sprint::01/01 - Xerothermic Xenartha

  • Brian Hatchet :speech_balloon: @brianhatchet changed milestone to %Sprint::01/15 - Youthful Yabby 1 month ago

    changed milestone to %Sprint::01/15 - Youthful Yabby

  • Brian Hatchet :speech_balloon: @brianhatchet added Sprint::01/15 - Youthful Yabby scoped label and automatically removed Sprint::01/01 - Xerothermic Xenarthra label 1 month ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet added to epic &34 1 month ago

    added to epic &34

  • Ben Hayward @benhayward.ben added Status::InProgress scoped label and automatically removed Status::Backlog label 4 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben marked the task Make sure we can save on the backend as completed 3 weeks ago

    marked the task Make sure we can save on the backend as completed

  • Ben Hayward @benhayward.ben marked the task Make sure we can save on the backend as incomplete 3 weeks ago

    marked the task Make sure we can save on the backend as incomplete

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Saving!

    image

  • Ben Hayward @benhayward.ben added 7h of time spent at 2020-01-17 3 weeks ago

    added 7h of time spent at 2020-01-17

  • Ben Hayward @benhayward.ben removed Status::InProgress label 3 weeks ago

    removed label

  • Ben Hayward @benhayward.ben added Status::Backlog scoped label 3 weeks ago

    added scoped label

  • Ben Hayward @benhayward.ben added Status::InProgress scoped label and automatically removed Status::Backlog label 3 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben marked the task Make sure we can save on the backend as completed 3 weeks ago

    marked the task Make sure we can save on the backend as completed

  • Ben Hayward @benhayward.ben marked the task Old blogs should load in the old editor as completed 3 weeks ago

    marked the task Old blogs should load in the old editor as completed

  • Ben Hayward @benhayward.ben marked the task New blogs should load in the new editor as completed 3 weeks ago

    marked the task New blogs should load in the new editor as completed

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer
    • New blogs should load in the new editor
    • Old blogs should load in the old editor

    They are in separate modules with separate routes to access. Does this check the above boxes or are we wanting to re-arrange the layout a little?

    Edited by Ben Hayward 3 weeks ago
  • Ben Hayward @benhayward.ben marked the task Make sure we can easily copy text from wordpress sites and other rich copy sources as completed 3 weeks ago

    marked the task Make sure we can easily copy text from wordpress sites and other rich copy sources as completed

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Copying basic text functionality from WordPress

    image

    Medium, basic text functionality working well

    image

    Google docs, same (though there are a lot of tools here i suspect would not carry over)

    image

    Our old blogs are not copy-pastable without re-styling and adding in images

    image

  • Ben Hayward @benhayward.ben marked the task Make sure we provide the ability to quickly create bulleted lists and numeric lists as completed 3 weeks ago

    marked the task Make sure we provide the ability to quickly create bulleted lists and numeric lists as completed

  • Ben Hayward @benhayward.ben marked the task Install CKEditor 5 and use the inline mode to make it resemble our existing medium-editor as much as possible as completed 3 weeks ago

    marked the task Install CKEditor 5 and use the inline mode to make it resemble our existing medium-editor as much as possible as completed

  • Ben Hayward @benhayward.ben marked the task Allow loading of old blogs using the old components as completed 3 weeks ago

    marked the task Allow loading of old blogs using the old components as completed

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    For sanitization first, a blog containing approx 3,333.4 lines of XSS attacks (24435 words - hard to seperate when its all tags though). As /yoursite.com triggers our spam filter I omitted examples containing that

    https://github.com/payloadbox/xss-payload-list

    image

    Edited by Ben Hayward 3 weeks ago
  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Testing no custom HTML is allowed I copied the content of this site into a blog, all tags look to be escaped.

    image

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Style tags (H1 at the bottom is markdown to test the CSS and SHOULD be a H1)

    image

  • Ben Hayward @benhayward.ben marked the task Users should only be to chose from predetermined styles. as completed 3 weeks ago

    marked the task Users should only be to chose from predetermined styles. as completed

  • Ben Hayward @benhayward.ben marked the task Install the CKeditor 5 plugins that allows conversion of markdown into our medium html as completed 3 weeks ago

    marked the task Install the CKeditor 5 plugins that allows conversion of markdown into our medium html as completed

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer
    • Limit the styles and functionality as much as possible. We want to create a bloat-free experience with minimum toolbars and chrome that fits into the overall site.

    A great resource to generate the toolbar section of the editor config:

    https://ckeditor.com/latest/samples/toolbarconfigurator/index.html#basic

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    todo other than the above:

    • Connect up media uploader
    • Get align / indentation working
    • See if we can auto-save copy-paste history - since its built into the toolbar maybe this is easy to do.
  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Brian Hatchet: @ben is reporting that the POC is going very well and fits out requirements well. There is only the issue of plugins. https://ckeditor.com/docs/ckeditor5/latest/builds/guides/integration/installing-plugins.html

    Brian Hatchet: Plugins are a bit of a stretch. It looks like we're going to have to do custom builds if we want to mix and match. If you try to import prebuilt modules (like plugins), they start throwing cross dependency errors.

    Brian Hatchet: Easy enough to do a custom build with everything we'll need, but we will be adding a step to the build process

    Brian Hatchet: Or ... creating a fork

    Ben: Yup, it is going smoothly so far, except for the hurdle of needing to load a plugin to enable alignment. I used the balloon editor https://ckeditor.com/docs/ckeditor5/latest/examples/builds/balloon-editor.html to make it, but unfortunately it seems to be missing alignment options.

    Ben: Adding it as a plugin I believe will encompass either, making our own build, or forking the BalloonBuild as a submodule and adding a few lines to enable an extra plugin.

  • Ben Hecht
    Ben Hecht @ben · 3 weeks ago

    Wrong Ben

  • Ben Hayward @benhayward.ben added Status::Follow Up scoped label and automatically removed Status::InProgress label 3 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward
    Ben Hayward @benhayward.ben · 3 weeks ago
    Developer

    Sorry about that @ben!

  • Ben Hayward @benhayward.ben added 4h of time spent at 2020-01-23 3 weeks ago

    added 4h of time spent at 2020-01-23

  • Ben Hayward @benhayward.ben added Status::Backlog scoped label and automatically removed Status::Follow Up label 2 weeks ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet changed the description 2 weeks ago

    changed the description

  • Ben Hayward @benhayward.ben added Status::InProgress scoped label and automatically removed Status::Backlog label 2 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added Status::Backlog scoped label and automatically removed Status::InProgress label 2 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added 30m of time spent at 2020-01-24 2 weeks ago

    added 30m of time spent at 2020-01-24

  • Ben Hayward @benhayward.ben added Status::InProgress scoped label and automatically removed Status::Backlog label 2 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben mentioned in commit engine@81eb2fbd 2 weeks ago

    mentioned in commit engine@81eb2fbd

  • Ben Hayward @benhayward.ben mentioned in merge request engine!448 2 weeks ago

    mentioned in merge request engine!448

  • Ben Hayward @benhayward.ben mentioned in merge request !733 2 weeks ago

    mentioned in merge request !733

  • Ben Hayward @benhayward.ben marked the task Setup a "new-blog-editor" feature flag as completed 2 weeks ago

    marked the task Setup a "new-blog-editor" feature flag as completed

  • Ben Hayward @benhayward.ben marked the task Limit the styles and functionality as much as possible. We want to create a bloat-free experience with minimum toolbars and chrome that fits into the overall site. as completed 2 weeks ago

    marked the task Limit the styles and functionality as much as possible. We want to create a bloat-free experience with minimum toolbars and chrome that fits into the overall site. as completed

  • Ben Hayward @benhayward.ben marked the task New blogs should be tagged with an attribute that marks them as "version2" as completed 2 weeks ago

    marked the task New blogs should be tagged with an attribute that marks them as "version2" as completed

  • Ben Hayward
    Ben Hayward @benhayward.ben · 2 weeks ago
    Developer

    Some issues apparent when trying to edit an old blog in the new editor:

    • Alignment (we need to look at making a custom build for this)
    • We need to implement the upload adapter to manage image uploads - left out as because we are going the custom build route, the adapter will be different.
    • Rich-embed doesn't appear in the editor but remains there when opening a v1 blog in v2. Other tested styling remains (other than alignment)
  • Ben Hayward @benhayward.ben added 2h 30m of time spent at 2020-01-27 2 weeks ago

    added 2h 30m of time spent at 2020-01-27

  • Ben Hayward @benhayward.ben added Status::BuddyReview scoped label and automatically removed Status::InProgress label 2 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward
    Ben Hayward @benhayward.ben · 2 weeks ago
    Developer

    Spent around 5 hours last night and 2 today.

  • Ben Hayward @benhayward.ben added 7h of time spent at 2020-01-28 2 weeks ago

    added 7h of time spent at 2020-01-28

  • Ben Hayward
    Ben Hayward @benhayward.ben · 2 weeks ago
    Developer

    Should be ready to go but the sandbox is acting like the feature flag isn't set. You can still see the blogs if you go to the v2 url, but editing a v2 blog does not link to the v2 editor, because of the lack of feature flag. Awaiting Emi's docs on this.

  • Ben Hayward @benhayward.ben added 2h of time spent at 2020-01-28 2 weeks ago

    added 2h of time spent at 2020-01-28

  • Brian Hatchet :speech_balloon: @brianhatchet added Sprint::01/29 Abatic Aenome scoped label and automatically removed Sprint::01/15 - Youthful Yabby label 2 weeks ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben mentioned in issue minds#864 1 week ago

    mentioned in issue minds#864

  • Brian Hatchet :speech_balloon: @brianhatchet added Status::Requires Changes scoped label and automatically removed Status::BuddyReview label 1 week ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet changed milestone to %Sprint:01/29 Abatic Aenome 1 week ago

    changed milestone to %Sprint:01/29 Abatic Aenome

  • Ben Hayward @benhayward.ben added Status::InProgress scoped label and automatically removed Status::Requires Changes label 1 week ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added 1h of time spent at 2020-02-05 1 week ago

    added 1h of time spent at 2020-02-05

  • Ben Hayward @benhayward.ben added Status::Backlog scoped label and automatically removed Status::InProgress label 1 week ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added Status::Requires Changes scoped label and automatically removed Status::Backlog label 1 week ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added 20m of time spent at 2020-02-05 1 week ago

    added 20m of time spent at 2020-02-05

  • Ben Hayward @benhayward.ben added Status::BuddyReview scoped label and automatically removed Status::Requires Changes label 1 week ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet added Sprint::02/12 - Baritone Baboon scoped label and automatically removed Sprint::01/29 Abatic Aenome label 2 days ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet added Status::Requires Changes scoped label and automatically removed Status::BuddyReview label 2 days ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added Status::BuddyReview scoped label and automatically removed Status::Requires Changes label 1 day ago

    added scoped label and automatically removed label

  • Ben Hayward
    Ben Hayward @benhayward.ben · 1 day ago
    Developer

    Review env is failing me with an obscure error that Sentry does not pick up. Changes run fine locally.

    image

    Sentry: https://sentry.io/organizations/minds-inc/issues/?environment=review-feat-ckeditor-blogs-2333&project=1538020&project=1538008&project=1766867&query=is%3Aunresolved&statsPeriod=14d

    Flag is turned on: https://feat-ckeditor-blogs-2333.minds.io/api/v1/minds/config

  • Ben Hayward @benhayward.ben added Status::Blocked scoped label and automatically removed Status::BuddyReview label 1 day ago

    added scoped label and automatically removed label

  • Brian Hatchet :speech_balloon: @brianhatchet removed due date 21 hours ago

    removed due date

  • Brian Hatchet :speech_balloon: @brianhatchet added Status::Requires Changes scoped label and automatically removed Status::Blocked label 21 hours ago

    added scoped label and automatically removed label

  • Brian Hatchet
    Brian Hatchet :speech_balloon: @brianhatchet · 21 hours ago
    Developer

    Not getting any errors from the review site, but this MR requires changes to make it easier to test.

  • Ben Hayward @benhayward.ben added Status::QA Review scoped label and automatically removed Status::Requires Changes label 17 hours ago

    added scoped label and automatically removed label

  • Ben Hayward @benhayward.ben added Status::Blocked scoped label and automatically removed Status::QA Review label 17 hours ago

    added scoped label and automatically removed label

  • Ben Hayward
    Ben Hayward @benhayward.ben · 17 hours ago
    Developer

    Took some serious digging but the source of the inability to test appears to be SSR not being supported by ckeditor5.

    https://github.com/ckeditor/ckeditor5/issues/1499#issuecomment-460587297 https://github.com/ckeditor/ckeditor5/issues/1511

  • Ben Hayward @benhayward.ben added 2h of time spent at 2020-02-13 17 hours ago

    added 2h of time spent at 2020-02-13

  • Ben Hayward
    Ben Hayward @benhayward.ben · 17 hours ago
    Developer

    Possible fix here https://github.com/ckeditor/ckeditor5-angular/issues/99

  • Brian Hatchet :speech_balloon: @brianhatchet added Status::Requires Changes scoped label and automatically removed Status::Blocked label 26 minutes ago

    added scoped label and automatically removed label

  • Brian Hatchet
    Brian Hatchet :speech_balloon: @brianhatchet · 26 minutes ago
    Developer

    We both need to RTFM. We can bypass SSR here. Thanks @markeharding :thumbsup:

    https://developers.minds.com/docs/guides/frontend/#ssr

Please register or sign in to reply
Assignee
Ben Hayward's avatar
Ben Hayward @benhayward.ben
Blogs (UX)
Epic
Blogs (UX)
Sprint::01/29 Abatic Aenome
Milestone
Sprint::01/29 Abatic Aenome
Time tracking
Spent: 3d 2h 20m
None
Due date
None
3
Labels
Sprint::02/12 - Baritone Baboon Squad::Yellow Status::Requires Changes
24
Weight
24
Confidentiality
Not confidential
Lock issue
Unlocked
5
5 participants
user avatar
user avatar
user avatar
user avatar
user avatar
Reference: minds/front#2333