Elanat framework
Tags: csharp, opensource, dotnet, news
Published: 2023-06-21 22:10:15

After many years, a big new open-source CMS was introduced in 2023. The name of this system is Elanat and it has been created completely from scratch. Elanat is actually a framework that includes an internal CMS. Elanat includes 8 different types of add-ons; And each of these add-ons can be created with all programming languages and added in Elanat.

Elanat is a open-source web framework for building dynamic web application. The product is released under the GNU General Public License version 3. This project was launched in May 2023.

![Elanat framework site section view](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/qzua4wgfgwa30wjlau7k.png)

Website:
[elanat.net](https://elanat.net/)

Download ready to use and source code:
[download](https://elanat.net/category/download)

Add-ons page:
[elanat.net/page_content/add_ons](https://elanat.net/page_content/add_ons)

## Elanat Structer

**Serverside independence**
The structure of Elanat framework is designed so that it does not depend on languages and frameworks on the server side; The structure of ASP.NET is mostly unused and only the .NET library is used. Therefore, it is easy to change the language of the Elanat server side in the future.

**Add-on-oriented**
This system is a add-on-oriented structure and consists of the central core, several systems, and add-ons. This system is very loyal to the add-on structure in such a way that the component add-on of this system is a component add-on and the content display system is one page.
The add-on-oriented structure means that Elanat add-ons run independently from the core. In such a way that any pre-created web application can be used as a add-on in Elanat.

**Code-behind**
Elanat created by use code-behind technique; in this technique visual and back-end source code are stored in separate files and allowing designers and programmers to work independently. Every client hypertext in Elanat can be edit without recompile.

Being code-behind does not mean that Elanat are created based on web.form structure. ASP.NET controls have never been used in Elanat.

Therefore, you do not see additional hidden input tags by web.form in HTML tags.

Example:
```
<input type=”hidden” name=”__EVENTVALIDATION” id=”__EVENTVALIDATION” value=”/******” />
<input type=”hidden” name=”__VIEWSTATE” id=”__VIEWSTATE” value=”/******” />
```

**Inner model view controller**
Elanat is written based on IMVC. this type of programming is neither limited nor limited to a specific programming language. The presented coding model can be used on all programming languages.

This means that none of the ASP.NET structures such as MVC and Razor are used in it. And it uses a proprietary built-in MVC structure.

```
<table>
	<box use_language=”true”>
	<![CDATA[
		<table>
			<thead>
				<tr>
					<th>$_lang name;</th>
					<th>$_lang mobile_number;</th>
				</tr>
			</thead>
			<tbody>
				$_asp list_item;
			</tbody>
		</table>
	]]>
	</box>
	<list_item>
	<![CDATA[
		<tr>
			<td>$_db user_site_name;</td>
			<td>$_db user_mobile_number;</td>
		</tr>
	]]>
	</list_item>
</table>
```

**Interface library**
It is not possible to change the internal codes of commercial libraries, free of charge and some other cases due to the strict permission of the recipient; it is not possible to change the internal library in compiled frameworks. To make this change, the developer is required to change the code of the previous library method with the new library method. This operation needs to be recompiled in compiled languages. The following problems arise when changing the library:

- Requires access to root or server operating system
- Require manual change to develop framework
- Unable to install the original framework add-ons in the modified framework

In the framework of Elanat, by using the interface library mechanism, including sockets and connectors, we provided the possibility of interacting with a variety of commercial, free and open-source code libraries; the interface library contains only the functions that the framework kernel needs. Creating such a library allows framework developers to interact only with functions in the interface library, and if they need more functions than the main library, they are required to create a function call copy in the interface library. Developers who want to create add-on in the framework are also required to interact with the functions of the interface library; if the add-on needs to use more functions that are available in the main library but not in the interface library, it only extends the interface library. Using the interface library includes the following benefits:

- Change the library by installing the add-on with just one click
- No need to change the functions of free and open-source commercial libraries
- Ability to quickly change free commercial libraries and open-source code within the framework
- Ability to maintain the main library and provide the interface library to the customer
- No need to change the framework kernel code
- Ability to use multiple libraries, simply by changing the location of the interface library

**Important features**

- The add-on-oriented structure includes 8 different types of add-on
- Support all programing language for add-ons
- Fully implemented with Stored Procedure
- Separation of style from template
- Separation of style and template of the admin section from the site section
- Translatable pages and add-ons
- Role-based permissions for all members and guests
- Performing tasks before and after each request from the client to the server
- Recording of user actions and system messages
- Track control before and after run a url
- Content with name value structer

## Add-ons
According to the list below, There are 8 different types of add-ons in Elanat:

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

**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.

![Component is component!](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/jwgs4p9wc92srog3gnzq.png)

**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.

## Core add-ons

**Component:** about, add_content, approval_comment, approval_content, attachment, backup, category, comment, component, configuration, contact, content, dashboard, editor_template, extra_helper, file_manager, foot_print, item, language, link, menu, module, options, page, plugin, profile, properties, recycle_bin, refresh, content_reply, role, site, statistics, admin_style, site_style, admin_template, site_template, user, view, fetch, patch, group

**Module:** lock_login, rss, sitemap

**Plugin:** show_site_ddlst, show_admin_user_menu, show_language_ddlst, show_quick_search, show_language_extra_ddlst, show_category_ddlst, show_calander, show_site, show_member_page, show_page, show_content_type, show_admin_system_menu, show_admin_component_group, show_admin_module_group, show_admin_extra_helper_group, show_admin_language_extra_ddlst, show_admin_site_ddlst, show_current_site, directory_text_file, show_accept_cookie_message

**Patch:** lock_login, rss, sitemap

**Page:** main, content, contact, error, login, logout, print, search, sign_up, sitemap, rss, about, forget_password, comment, content_reply, change_date_and_time, change_language, change_template_and_style, change_view, change_profile, change_avatar, change_email, change_password, user_comment, user_content, user_foot_print, user_info, user_statistics, contact_response, user_agreement, privacy_policy, terms_of_service, email, confirm_email, robot_detect_captcha, public_user_info

**Fetch:** (not exist)

**Extra helper:** inner_xml_to_html, html_to_inner_xml, admin_note, show_logs_list, show_extra_helper_list, show_admin_component_access_view, upload_file, content_avatar, site_logo, rss_option, search_option, xml_sitemap_option, sitemap_option, comment_option, content_reply_option, contact_option, sign_up_option

**Editor template:** plus_14, image_preview

![Elanat framework admin section view](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/pseu916ninw5r1072xwx.png)

## How to create a add-on for Elanat?
Only upload it! After checking that the programming language support package is installed, upload your file, this file can be an HTML page or an interpreter script; then upload your add-ons to the page or plugin component. You can then manage access to the add-on as you wish and place it anywhere on your website or portal.

## How to create a Powerful add-on with more file for Elanat?

**Step 1:**
There are eight different types of add-on in Elanat. component, plugins, module, plugin, page, patch, extra helper, editor template and fetch. In order to create more powrful add-ons in Elanat, you must download a raw add-on file and replace your add-on items in this file.

The below link is the raw add-on file of the plugin:

[elanat.net/upload/english_presentation_download_center/plugin.zip](https://elanat.net/upload/english_presentation_download_center/plugin.zip)

**Step 2:**
First, extract the zip file; after extracting the zip file, you will see two directories; in the directory with the same name as the Add-on type, delete the index.html file and add your executable file in this directory. You can add as many files as you want in the Elanat path in the root directory.

**Step 3:**
In the directory with the same name as the add-on type, open the catalog.xml file for editing and change or add the necessary values such as add-on name, add-on path, add-on executable file name, etc. Finally, create a zip file containing the directory with the same name as the add-on type and the root directory.

You don’t have to do web programming from scratch. Install Elanat framework and develop it simply.

Have you ever tried to create a module or plugin for a web based system? Is it easily possible? Please comment on this matter.