Full description of the add-on at Elanat CMS
Tags: dotnet, csharp, tutorial, opensource
Published: 2023-10-09 20:48:38

## Introduction

If Drupal in its early versions was a system for student discussion and WordPress was first a system for blogs, Elanat was a giant from day one (May 2023)! A powerful system with modern architecture. Elanat introduced several high-level technologies in the web world; Technologies such as server-side independence and add-on-oriented. Different parts of Elanat were rewritten many times before release. Elanat version 1 was ready after 10 years. The Elanat 2 version was coordinated in a rewrite based on .NET Core. Thanks to the server-side independence architecture, the rewrite time spent on .NET Core was only 2 weeks! Elanat is a modular system; Creating an add-on for Elanat is very simple, and the reason for that is the add-on-oriented structure. add-on-oriented structure guarantees that the core of a system has no connection with system add-ons, and each add-on is used separately from the core.
In this article, we fully explain the add-ons in Elanat.

## Add-on in Elanat

There are eight types of add-ons in Elanat. In each of these types of add-ons, we can add as many new values as we want.

List of Elanat add-ons:

 - Component
 - Module
 - Plugin
 - Patch
 - Page
 - Fetch
 - Extra helper
 - Editor template

Elanat core includes a large number of add-ons. The structure of these add-ons is similar to the structure of an out-of-core add-on.

Please note that some systems also include theme and webtext in the add-on category; if we want to put these items in the add-on category in Elanat, Elanat has 14 types of add-ons!

Note: the theme in Elanat is defined by the template name; also, webtext is also called item.

In this article, we only deal with the 8 types of add-on in Elanat that are specified in the list above.

## What is inside the add-on?

The contents of Elanat add-ons are placed in a zip file. Each add-on file contains two directories; one is the add-on contents directory and the other is a root directory.
The name of the directory of add-on contents depends on the type of add-on; for example, if our add-on type is module, the name of this directory is module. Any file or directory that is in the root directory is placed in the root of Elanat (wwwroot).

To create an add-on in Elanat, you just add the new add-on information in the catalog.xml file and create a zip file. This is thanks to the high level **add-on oriented technology** in Elanat.

The figure below shows the structure of the add-on file in Elanat.

![Add-on structer](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/0p9y2un8wa3iiavpzsqq.png)

Note: If page or plugin type add-ons are only one file, we can add them directly in Elanat (an html or exe or py file, etc.) without creating the contents of the zip file.

The links below are the raw files of Elanat add-ons; you can download and unzip these files and place your add-on in it, then re-zip the files to create a new add-on.

 - [Component raw file](https://elanat.net/upload/english_presentation_download_center/component.zip)
 - [Module raw file](https://elanat.net/upload/english_presentation_download_center/module.zip)
 - [Plugin raw file](https://elanat.net/upload/english_presentation_download_center/plugin.zip)
 - [Patch raw file](https://elanat.net/upload/english_presentation_download_center/patch.zip)
 - [Page raw file](https://elanat.net/upload/english_presentation_download_center/page.zip)
 - [Fetch raw file](https://elanat.net/upload/english_presentation_download_center/fetch.zip)
 - [Extra helper raw file](https://elanat.net/upload/english_presentation_download_center/extra_helper.zip)
 - [Editor template raw file](https://elanat.net/upload/english_presentation_download_center/editor_template.zip)

If you want to create an add-on based on ASP.NET Core and you need Elanat core libraries, you can get these dll files in the link below.
[https://github.com/elanatframework/Elanat_add-ons/tree/elanat_framework/dll](https://github.com/elanatframework/Elanat_add-ons/tree/elanat_framework/dll)

Each add-on has a catalog file that is placed in the add-on directory. The catalog file is of xml type and is identified by the name catalog.xml.

In the catalog file there is information such as the name of the path and the name of the main executable file and the name of the add-on and the path of the directory and other things; the catalog file information is specified according to the type of add-on you want to create.

Elanat supports all programming languages!
You can build your own add-ons with a variety of executable files.

**Add-on example files and directories**

The image below shows a ready-made component add-on.

![SQL command component](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/m9zm7xye5kzryhqif3rf.png)

This component is called SQL command and can be downloaded from the link below.

[https://elanat.net/content/59/SQL Command.html](https://elanat.net/content/59/SQL%20Command.html)

SQL command repository link:
[https://github.com/elanatframework/Elanat_add-ons/tree/elanat_framework/component/sql_command](https://github.com/elanatframework/Elanat_add-ons/tree/elanat_framework/component/sql_command)

As it is known, this component is made based on .NET Core. aspx files are executable files and dll file is the .NET Core output library.

The SqlCommand.dll file located in the root/bin path is related to .NET Core programming and has nothing to do with creating an add-on in Elanat. The aspx file is an executable file. You have the option to use php or py or html or other executables instead.

The values of the component name and component path and the name of the executable physical file of the component in the following catalog.xml file are mandatory.

catalog.xml for Elanat components
```xml
  <component_name value="sql_command" />

  <component_category value="tools" />

  <component_author value="Elanat" />

  <component_directory_path value="sql_command" />

  <component_physical_name value="Default.aspx" />
```
The above values are part of a catalog.xml file; there are more adjustable values in this file.

The link below teaches how to create a .NET Core-based add-on for Elanat as a plugin.
[Creating plugin for Elanat under ASP.NET Core](https://elanat.net/page_content/documentation/add_on/creating_plugin_for_elanat_under_asp_dot_net_core)

Tutorial on creating plugin in Elanat in the link below.
[https://elanat.net/content/2/How create plugin add-on in Elanat framework.html](https://elanat.net/content/2/How%20create%20plugin%20add-on%20in%20Elanat%20framework.html)

Tutorial on making fetch for Elanat in the link below.
[https://elanat.net/content/40/Fetch component tutorial.html](https://elanat.net/content/40/Fetch%20component%20tutorial.html)

How to create a template editor in Elanat is taught in the link below.
[https://elanat.net/content/65/Create editor template add-ons for Elanat framework.html](https://elanat.net/content/65/Create%20editor%20template%20add-ons%20for%20Elanat%20framework.html)

Note: Elanat add-ons are similar in general and slightly different in details, and if you learn how to make one type of add-on, you can create new values for other add-ons as well.

The list below specifies the default executable files in Elanat:

 - Default.aspx
 - Default.asp
 - Default.htm
 - index.htm
 - index.html
 - index.cpp
 - index.dnc
 - index.php
 - index.njs
 - index.pl
 - index.py
 - index.rb
 - index.jsp
 - main.dll
 - main.exe

Note: the aspx file is related to the [CodeBehind framework](https://github.com/elanatframework/Code_behind) and is based on .NET Core and the MVC pattern. It has nothing to do with web-form in ASP.NET Standard.

Elanat add-ons are placed in the following paths:

 - Component: `/admin/add-on_path`
 - Module: `/add_on/module/add-on_path`
 - Plugin: `/add_on/plugin/add-on_path`
 - Patch: `/add_on/patch/add-on_path`
 - Page: `/page/add-on_path`
 - Fetch: `/add_on/fetch/add-on_path`
 - Extra helper: `/add_on/extra_helper/add-on_path`
 - Editor template: `/add_on/editor_template/add-on_path`

Example: If you create a module-type add-on and set the module_directory_path value to "hello_world" in the catalog.xml file, the module path will be as follows:

`/add_on/module/hello_world`


## Description of Elanat add-ons

**Component**
The component can have different definitions in each system. In the Elanat framework, pages that only administrators have access to are called components. Plugins, modules, and the component itself each have a component management page. If you want to implement a management system including sales, accounting, personnel management, etc., by creating several components, you can create your new system and each of the components of your system using the Elanat kernel Manage.

**Module**
Modules and plugins are a kind of add-on that can be displayed in any part of the website; add-ons in Elanat framework that being able to display, provide separate management for the add-on, are called modules.

**Plugin**
Add-ons that are purely visual and do not have a management page are called plugins.

**Patch**
After installing this add-on, it creates a series of changes in Elanat framework and has no page to display.

**Page**
The page is a type of add-on that is displayed in the site section of the Elanat framework. The page can be static or dynamic.

**Fetch**
Fetch is a add-on that combines database queries with HTML tags and can be displayed on any page or add-on from the Elanat framework. This add-on can be run without displaying the values and make changes in the database only after running.

**Extra helper**
Extra helpers are add-ons that only showed in admin section of Elanat framework and only administrators access to this add-ons

**Editor template**
Editor templates add-ons are part of a html page template; each of the Editor templates helps content writers use a ready-made template to create pages faster and more organized.


## Structural differences of Elanat add-ons

The following tables show the differences between Elanat add-ons:

Table 1
![Differences between Elanat add-ons table 1](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/2h1t3677enzi1nxm11b2.png)

Table 2
![Differences between Elanat add-ons table 2](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/90v2sowrjvci8a5n9y8c.png)

## Related links

Elanat website:
https://elanat.net

Elanat repository link:
https://github.com/elanatframework/Elanat