GSoC'19 Coding Period Week #3

GSoC'19 Coding Peroid Week #3

With the conclusion of the third week of Google Summer of Code, the first evaluation is coming closer.

Project Abstract

My project is "Collaborative Editors" which provide a plugin for various Real-Time Collaborative Editors. It also allows integration of those Real-Time Collaborative Editors.

 

Previous Progress

A module with a completed "Collaborative Network" Plugin Manager with partially completed Etherpad Plugin.

Also, 2 PHP Unit Tests to check the presence of "collaborative_editors.overview" route and to check availability of "EtherpadEditor" Plugin

 

Week 3 Progress

My main aim of this week is to add a login for Etherpad Integration in Drupal 8.

For this, I completed a skeleton for Text Editor in Drupal 8

Skeleton for Text Editor of Drupa

 

Using Editor API of Drupal's core module "Text Editor" I make the "Etherpad" editor discoverable in Drupal 8 system

Visit "/admin/config/content/formats" and, Add or Configure any existing Text Format and see "Etherpad" as an available Text Editor

Etherpad

 

Implemented hook_requirements() to check the presence of Etherpad client library and jQuery Plugin, and give requirement error if not present
Visit "/admin/report/status" to check for any Requirement Error.

hook_requirements()

 

Added hook_library_info_build() to include Etherpad jQuery Plugin
The site administrator needs to put the Etherpad jQuery Client library in "DRUPAL_ROOT/libraries" folder so that the module can access it.

 

Added "Test Connection" button in Etherpad configuration form

Test Etherpad connection

 

Difficulties

  1. Lack of Documentation: There is very few documentation on available Classes and their Methods to develop Text Editor for Drupal
    For example: At Text Editor API documentation
    There is a line

    The Text Editor module also has a JavaScript API that allows it to invoke the specific text editor plugin's JavaScript, to initialize the text editor. For that, implement Drupal.editors, see Drupal.editors.ckeditor for an example (in core/modules/ckeditor/js/ckeditor.js).

    "Drupal.editors" is not defined anywhere else in documentation
    And even in file "core/modules/ckeditor/js/ckeditor.js" there are no comments to understand the code

    So, I installed various Text Editors available for Drupal 8 and gone into their source code. Also, I have written many small dummy code to understand what does that piece of code do.

  2. Integration of third-party library in Drupal:
    There are many ways to include third-party libraries in Drupal. Some provided by Drupal core and some through installing the external module. Also, there is a different procedure to include the dynamic library and static library.