In this article, we will see how we built custom blocks in EK management tools suite with a sample basic block in a module called 'mymodule' used for demo. It can be used to display multiple content, static or dynamic as in the example above.
Create the block script
First we will create a script that will display some content within a block. the script file will be called MyBlock.php and is placed in /mymodule/src/Plugin/Block/.
* Contains \Drupal\mymodule\Plugin\Block\MyBlock.
* Provides a 'Custom module widget' .
* id = "my_block",
* admin_label = @Translation("My custom block"),
* category = @Translation("mymodule Widgets")
Our back-office management solution is now running on version Drupal 8.2.3. The live demo is updated with the latest version.
It has been a long run since the project was initiated while Drupal 8 was still under alpha stage. And there is still plenty of work to do.
One objective is to make a full distribution package including most of the current functionalities available in the demo version. Our main issue with this target is the lack of resources and time. Thus if any of Drupalists are enthusiastic about business process solutions and would like to contribute, they are welcome.
In a previous post from 2015, we described usage of Swift Mailer module to send HTML mail and mail with attachment. At this time, the module was not yet available for Drupal 8.
There is now a version alpha1 available. Let's go through installation process.
Because it has been rather tedious for us, we will try to explain the flow of the process as much as possible to help you save time.
The prerequisite is the installation of composer.
In our case we installed first on Windows inside a folder named F:\Program Files\composer2\.
The installation exe for Windows can be found here.
In Drupal 8 there is a Tour module in core that is very useful when it comes to web applications. In EK management tools we target professional users with small to medium scale companies. They usually have limited resources and time to spend on back office trainings. This is where the Tour module is very convenient to introduce functionalities to users who can quickly grasp the functions available to manage their back office.
We use the Tour functionality in our pages to guide users in their daily tasks like for instance in the form to create a new invoice or project page:
With Drupal 8 there is a very easy and practical way to add this custom view as a configuration that will be installed with the module.
1) extract the configuration data
Navigate to "/admin/config/development/configuration/single/export".
On this page, select configuration type 'view' and configuration name 'My module list' that was created earlier.
2) create configuration install file
You will obtain from the above export a list of configuration data that you can copy and paste into a file called for instance "views.view.mymodule-list.yml";
Simply place this file into the install folder :
In previous article we have seen how to declare the data accessible in a custom view in MyModule.
Now that the data from our tables mymodule_tb (and mymodule_tb_2) are available, let's create the list view.
First navigate to "/admin/structure/views/add" and create the view by entering basic information as per the example below.
After "save" you are redirected to "Edit" form where further settings will be set.
1) Add fields from you source table
From this form, select the fields to display. We will select 2 here "name" and "type" (refer to the table structure declared in MyModule_views_data())
In our EK management tools suite we have custom designed lists of items like for instance list of management documents.
Those lists are build with custom codes and templates which is somehow more convenient to manage with complex data, links, menus and filters as in the example below.
However for simple list, the views module is very useful and can be integrated in a custom module as well to automatically create the list.
Here is an example with companies list in the system address book module showing the company name as link and a field about the type of record plus a simple filter box.