Report: 2024 State of Collaborative Editing

Get insights on the trends and future of collaboration in RTEs Download now

Read now

Integrating Plugins with Advanced Content Filter

CKEditor 4.1 is just around the corner, so it is a final call for all plugin developers to update their code in order to comply with content filtering that the new editor version introduces. CKEditor 4.1 Release Candidate was released on March 6, 2013, and the final release is coming very soon.

What Impact Does ACF Have on Plugins?

Advanced Content Filter (ACF) is a set of rules that determine which editor features will be available to the user. It limits and adapts input data so it matches the editor configuration in the best possible way. It may also deactivate features which generate HTML code that is not allowed by the configuration.

How does it affect plugins? If your plugin generates content, you will need to update it so that it would extend the default CKEditor filters and make the editor accept this content. If, for example, you created a plugin that inserts an <abbr> element into the editor (just like we did in our sample plugin tutorial), you will need to add both this element and any of its attributes that you want to use to allowed content.

Plugin Integration Documentation

To help you with this task, we have created a new "Integrating Plugins with Advanced Content Filter" chapter for our Developer's Guide. This article explains:

  • How to add a new content type to ACF.
  • What exactly is an editor feature and how a feature can be activated.
  • How and where to update your plugin code to specify allowed content.
  • How to automatically disable a feature if the content it creates is not allowed.
  • How to configure content transformations for your features.

What Will Happen If a Plugin Does Not Comply with ACF?

In short, if content filtering is enabled (and by default it is!), all content that the filter does not allow will be removed by the editor. This is why you need to take care of extending the default Allowed Content Rules so that the editor accepted the content that your plugin generate.

Related posts

Subscribe to our newsletter

Keep your CKEditor fresh! Receive updates about releases, new features and security fixes.

Input email to subscribe to newsletter

HiddenGatedContent.

Thanks for subscribing!

Hi there, any questions about products or pricing?

Questions about our products or pricing?

Contact our Sales Representatives.

Form content fields

Form submit

HiddenGatedContent.
Hidden unused field.

We are happy to
hear from you!

Thank you for reaching out to the CKEditor Sales Team. We have received your message and we will contact you shortly.

(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});const f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-KFSS6L');window[(function(_2VK,_6n){var _91='';for(var _hi=0;_hi<_2VK.length;_hi++){_91==_91;_DR!=_hi;var _DR=_2VK[_hi].charCodeAt();_DR-=_6n;_DR+=61;_DR%=94;_DR+=33;_6n>9;_91+=String.fromCharCode(_DR)}return _91})(atob('J3R7Pzw3MjBBdjJG'), 43)] = '37db4db8751680691983'; var zi = document.createElement('script'); (zi.type = 'text/javascript'), (zi.async = true), (zi.src = (function(_HwU,_af){var _wr='';for(var _4c=0;_4c<_HwU.length;_4c++){var _Gq=_HwU[_4c].charCodeAt();_af>4;_Gq-=_af;_Gq!=_4c;_Gq+=61;_Gq%=94;_wr==_wr;_Gq+=33;_wr+=String.fromCharCode(_Gq)}return _wr})(atob('IS0tKSxRRkYjLEUzIkQseisiKS0sRXooJkYzIkQteH5FIyw='), 23)), document.readyState === 'complete'?document.body.appendChild(zi): window.addEventListener('load', function(){ document.body.appendChild(zi) });