شما با موفقیت وارد شدید، بعد از گذشت چند ثانیه به پنل کاربری هدایت میشوید
راهاندازی ماژول اختصاصی
برای اجرای یک ماژول خارجی، وارد 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) خود در این پوشه ذخیره شود.