شما با موفقیت وارد شدید، بعد از گذشت چند ثانیه به پنل کاربری هدایت می‌شوید

راه‌اندازی ماژول اختصاصی

برای اجرای یک ماژول خارجی، وارد BasisPanel شوید و شرکت خود را انتخاب کنید.

سپس به مسیر تنظیمات > تنظیمات سرویس (Service Setting) بروید.

بعد از آن روی دکمه مثبت (+) کلیک کرده و عبارت DevMode را وارد کنید، سپس تغییرات را ذخیره نمایید.

اکنون باید API مربوط به منو، صفحات، ویجت‌ها، سایدبار و ... را اجرا کنید.

من این APIها را با Express.js اجرا کردم، اما شما می‌توانید از هر زبان برنامه‌نویسی دلخواه خود استفاده کنید.


قدم اول

در این مثال Apiها را با استفاده از Express js پیاده سازی کنید.

ابتدا پکیج‌های زیر را نصب کنید:

npm i express

npm i fs

npm i path

npm i cors

npm i nodemon

برای اطلاعات بیشتر می‌توانید لینک‌های زیر را مطالعه کنید:

https://www.npmjs.com/package/express

https://www.npmjs.com/package/fs

https://www.npmjs.com/package/path

https://www.npmjs.com/package/cors

https://www.npmjs.com/package/nodemon


قدم دوم

بسیار خوب، برای شروع می‌توانید فایلی با نام server.js ایجاد کرده و پکیج‌هایی که نصب کرده‌اید را در آن وارد (import) کنید.

var fs = require("fs");
const path = require("path");
const express = require('express')
const app = express()
var cors = require('cors');
var accounttree = require('./accounttree.json');
app.use(cors({
	origin: '*'
  }));


قدم سوم

یک API با این ساختار برای نمایش منو ایجاد کنید

  app.get('/:rKey/fa/Desktop/menu', function (req, res) {
res.send([menu json])
})
Method : get
{
"nodes": [
{
"title": "منو 1",
"nodes": [
{
"title": "زیرمنوی 1",
"pid": 1,
"mid": 6
},
{
"title": "زیرمنوی 2",
"pid": 6,
"mid": 6
},
{
"title": "زیرمنوی 3",
"pid": 6,
"mid": 6
}
]
}
]
}

توضیحات هر فیلد:

Title: این کلید در منو نمایش داده می‌شود

Pid: شناسه صفحه است؛ هر صفحه یک شناسه یکتا دارد

Mid: شناسه ماژول است؛ هر ماژول یک شناسه یکتا دارد

قدم چهارم

یک API با این ساختار برای نمایش سایدبار ایجاد کنید

app.get('/:rKey/fa/Desktop/sidebarMenu/:pageId', function (req, res) {
var pageid = req.params.pageId
res.send()
})
Method : get
Send page ID in URL and get the pageid and show related sidebar.
{
"nodes": [
{
"title": "sidebar 1",
"pid": 1
},
{
"title": "sidebar 2",
"pid": 22
},
{
"title": "sidebar 3",
"pid": 22
}
]
}

توضیحات هر فیلد:

Title: این کلید در منو نمایش داده می‌شود

Pid: شناسه صفحه است؛ هر صفحه یک شناسه یکتا دارد

قدم پنجم

این API را برای نمایش یک صفحه ایجاد کنید

app.get('/:rKey/fa/Desktop/page/:pageId', function (req, res) {
var pageid = req.params.pageId
const widgetList = fs.readFileSync(
path.join(__dirname, "pages", "pages.html"),
{
encoding: "utf8",
}
);
res.send( JSON.parse(widgetList)[pageid]);
})
Method : get

کلید rkey و pageId را در URL ارسال کن.

در API، شناسه صفحه (pageId) را از URL بگیر و در فایل‌ها جستجو کن.

من یک صفحه در پوشه‌ای با نام pages ایجاد می‌کنم و تنظیمات همه ویجت‌ها را در آن ذخیره می‌کنم.

نمونه‌ای از JSON برای یک ویجت به شکل زیر است:

["1":{
"container" : "container",
"title" : " ",
"groups" : [
{
"groupname": "",
"options": {
"repositories": {
"grid.grid": "https://cdn.basiscore.net/basispanel.ir/_js/basiscore.grid.component.js",
},
"settings": {
"connection.web.basiscore": "https://basispanel.ir/api/3C7D339A-B786-4556-BC4F-6D03124E0B6C",
"default.dmnid": 20,
"default.dbsource.verb": "post",
"default.binding.regex": "\\{##([^#]*)##\\}"
}
},
"widgets": [
{
"id": 18,
"title": null,
"name": null,
"moduleid": 6,
"x": 5,
"y": 0,
"w": 5,
"h": 6,
"container": "widget"
},{
"id": 20,
"title": null,
"name": null,
"moduleid": 6,
"x": 10,
"y": 0,
"w": 2,
"h": 6,
"container": "sidebar"
},
{
"id": 20,
"title": null,
"name": null,
"moduleid": 6,
"x": 0,
"y": 0,
"w": 5,
"h": 6,
"container": "widget"
}
]
}
]
}
]


توضیحات هر فیلد:

Container: نوع صفحه را مشخص می‌کند که این ویجت در داشبورد است یا صفحه عادی.

مقادیر ممکن:

1- Container

2- Dashboard

Repository: هر ریپازیتوری‌ای که در ویجت استفاده می‌شود، مانند گرید، انتخابگر تاریخ (Datepicker) و...

Setting: تنظیمات BasisCore که می‌توانید توضیحات کامل آن را در این لینک بخوانید:

تنظیمات در BasisCore

id: شناسه ویجت

module id: شناسه ماژول

x: موقعیت افقی ویجت در صفحه (هر صفحه به ۱۲ بخش تقسیم می‌شود، و باید عرض، ارتفاع، موقعیت x و y را محاسبه کنید)

y: موقعیت عمودی ویجت در صفحه

w: عرض ویجت

h: ارتفاع ویجت

container: نوع ویجت که شامل سه نوع است:

1- Widget

2- Full widget

3- Sidebar

قدم ششم

برای نمایش ویجت از این API استفاده کنید

app.get('/:rKey/fa/Desktop/widget/:widgetId', function (req, res) {
const widgetList = fs.readFileSync(
path.join(__dirname, "widgets", req.params.widgetId+".html"),
{
encoding: "utf8",
}
);
res.send(widgetList);
})

یک پوشه با نام widgets ایجاد کن. هر ویجت باید با شناسه (id) خود در این پوشه ذخیره شود.

برای شروع آماده‌اید ؟

زمان خود را از دست ندهید و درخواست دهید !