isite
Version:
Create High Level Multi-Language Web Site [Fast and Easy]
441 lines (417 loc) • 16.5 kB
JavaScript
module.exports = function (site) {
site.date = require(__dirname + '/site_files/js/hijri.js');
site.post({ name: '/api/get_hijri_date', public: true }, (req, res) => {
res.json({
done: !0,
hijri: site.date(req.data.date, 'YYYY/MM/DD').format('iYYYY/iMM/iDD'),
});
});
site.post({ name: '/api/get_normal_date', public: true }, (req, res) => {
res.json({
done: !0,
date: site.date(req.data.hijri, 'iYYYY/iMM/iDD').format('YYYY/MM/DD'),
});
});
site.get({
name: '/x-images',
path: __dirname + '/site_files/images',
public: true,
});
site.get({
name: ['/x-js', 'jss'],
path: __dirname + '/site_files/js',
public: true,
parser: 'js',
shared : true
});
site.get({
name: ['/x-js/all.js'],
public: true,
parser: 'js',
shared : true,
path: [
__dirname + '/site_files/js/first.js',
__dirname + '/site_files/js/jquery.js',
__dirname + '/site_files/js/mustache.js',
__dirname + '/site_files/js/base64.min.js',
__dirname + '/site_files/js/site.js',
__dirname + '/site_files/js/dom-to-image.min.js',
__dirname + '/site_files/js/barcode.js',
__dirname + '/site_files/js/qrcode.min.js',
__dirname + '/site_files/js/angular.min.js',
__dirname + '/site_files/js/app.js',
__dirname + '/site_files/js/directive-core.js',
__dirname + '/site_files/js/directive.js',
__dirname + '/site_files/js/last.js',
__dirname + '/site_files/js/xlsx.js',
],
});
site.get({
name: ['/x-js/bootstrap-5-support.js'],
public: true,
parser: 'js',
shared : true,
path: [
__dirname + '/site_files/js/first.js',
__dirname + '/site_files/js/jquery.js',
__dirname + '/site_files/js/mustache.js',
__dirname + '/site_files/js/base64.min.js',
__dirname + '/site_files/js/site.js',
__dirname + '/site_files/js/dom-to-image.min.js',
__dirname + '/site_files/js/barcode.js',
__dirname + '/site_files/js/qrcode.min.js',
__dirname + '/site_files/js/angular.min.js',
__dirname + '/site_files/js/app.js',
__dirname + '/site_files/js/directive-core.js',
__dirname + '/site_files/js/bootstrap-5-directive.js',
__dirname + '/site_files/js/last.js',
__dirname + '/site_files/js/bootstrap5.js',
__dirname + '/site_files/js/bootstrap-5-addon.js',
__dirname + '/site_files/js/WebShareEditor.js',
__dirname + '/site_files/js/xlsx.js',
],
});
site.get({
name: ['/x-js/sa.js'],
public: true,
parser: 'js',
shared : true,
path: [
__dirname + '/site_files/js/first.js',
__dirname + '/site_files/js/jquery.js',
__dirname + '/site_files/js/mustache.js',
__dirname + '/site_files/js/base64.min.js',
__dirname + '/site_files/js/site.js',
__dirname + '/site_files/js/dom-to-image.min.js',
__dirname + '/site_files/js/barcode.js',
__dirname + '/site_files/js/qrcode.min.js',
__dirname + '/site_files/js/angular.min.js',
__dirname + '/site_files/js/app.js',
__dirname + '/site_files/js/directive-core.js',
__dirname + '/site_files/js/bootstrap-5-directive.js',
__dirname + '/site_files/js/last.js',
__dirname + '/site_files/js/bootstrap5.js',
__dirname + '/site_files/js/bootstrap-5-addon.js',
__dirname + '/site_files/js/WebShareEditor.js',
__dirname + '/site_files/js/xlsx.js',
],
});
site.get(
{
name: '/x-words',
},
(req, res) => {
res.render('client-side/words.html', {}, { parser: 'html css js', public: true });
}
);
site.get(
{
name: '/x-words-old',
},
(req, res) => {
res.render('client-side/words-old.html', {}, { parser: 'html css js', public: true });
}
);
site.get({
name: '/x-css',
path: __dirname + '/site_files/css',
public: true,
shared : true,
});
site.get({
name: '/x-semantic-themes',
path: __dirname + '/site_files/semantic-themes',
public: true,
shared : true,
});
site.get({
name: ['/x-fonts', '/x-css/x-fonts'],
path: __dirname + '/site_files/fonts',
public: true,
shared : true,
});
site.get({
name: ['/webfonts', '/x-css/webfonts'],
path: __dirname + '/site_files/webfonts',
public: true,
shared : true,
});
site.get({
name: ['/x-css/all.css', '/x-css/site.css'],
parser: 'css2',
public: true,
compress: !0,
shared : true,
path: [
__dirname + '/site_files/css/normalize.css',
__dirname + '/site_files/css/theme.css',
__dirname + '/site_files/css/layout.css',
__dirname + '/site_files/css/scrollbar.css',
__dirname + '/site_files/css/progress.css',
__dirname + '/site_files/css/treeview.css',
__dirname + '/site_files/css/main-menu.css',
__dirname + '/site_files/css/images.css',
__dirname + '/site_files/css/navbar.css',
__dirname + '/site_files/css/form.css',
__dirname + '/site_files/css/selector.css',
__dirname + '/site_files/css/dropdown.css',
__dirname + '/site_files/css/btn.css',
__dirname + '/site_files/css/checkbox.css',
__dirname + '/site_files/css/radio.css',
__dirname + '/site_files/css/modal.css',
__dirname + '/site_files/css/fixed_menu.css',
__dirname + '/site_files/css/color.css',
__dirname + '/site_files/css/fonts.css',
__dirname + '/site_files/css/font-droid.css',
__dirname + '/site_files/css/effect.css',
__dirname + '/site_files/css/table.css',
__dirname + '/site_files/css/tabs.css',
__dirname + '/site_files/css/help.css',
__dirname + '/site_files/css/print.css',
__dirname + '/site_files/css/ui.css',
__dirname + '/site_files/css/tableExport.css',
__dirname + '/site_files/css/theme_paper.css',
__dirname + '/site_files/css/font-awesome.css',
],
});
site.get({
name: ['/x-css/bootstrap-5-support.css', '/x-css/bootstrap-support.css'],
parser: 'css2',
public: true,
compress: !0,
shared : true,
path: [
__dirname + '/site_files/css/normalize.css',
__dirname + '/site_files/css/theme.css',
__dirname + '/site_files/css/layout.css',
__dirname + '/site_files/css/modal.css',
__dirname + '/site_files/css/color.css',
__dirname + '/site_files/css/images.css',
__dirname + '/site_files/css/dropdown.css',
__dirname + '/site_files/css/fonts.css',
__dirname + '/site_files/css/font-droid.css',
__dirname + '/site_files/css/effect.css',
__dirname + '/site_files/css/table.css',
__dirname + '/site_files/css/treeview.css',
__dirname + '/site_files/css/tabs.css',
__dirname + '/site_files/css/help.css',
__dirname + '/site_files/css/print.css',
__dirname + '/site_files/css/tableExport.css',
__dirname + '/site_files/css/theme_paper.css',
__dirname + '/site_files/css/bootstrap5.css',
__dirname + '/site_files/css/bootstrap5-addon.css',
__dirname + '/site_files/css/font-awesome.css',
__dirname + '/site_files/css/WebShareEditor.css',
],
});
site.get({
name: ['/x-css/sa.css'],
parser: 'css2',
public: true,
compress: !0,
shared : true,
path: [
__dirname + '/site_files/css/normalize.css',
__dirname + '/site_files/css/theme.css',
__dirname + '/site_files/css/layout.css',
__dirname + '/site_files/css/modal.css',
__dirname + '/site_files/css/color.css',
__dirname + '/site_files/css/images.css',
__dirname + '/site_files/css/dropdown.css',
__dirname + '/site_files/css/fonts.css',
__dirname + '/site_files/css/effect.css',
__dirname + '/site_files/css/scrollbar.css',
__dirname + '/site_files/css/table.css',
__dirname + '/site_files/css/treeview.css',
__dirname + '/site_files/css/tabs.css',
__dirname + '/site_files/css/help.css',
__dirname + '/site_files/css/print.css',
__dirname + '/site_files/css/tableExport.css',
__dirname + '/site_files/css/theme_paper.css',
__dirname + '/site_files/css/bootstrap5.css',
__dirname + '/site_files/css/bootstrap5-addon.css',
__dirname + '/site_files/css/font-awesome.css',
__dirname + '/site_files/css/font-saudi.css',
__dirname + '/site_files/css/WebShareEditor.css',
],
});
site.post({ name: '/x-api/upload/image', public: true }, (req, res) => {
let folder = req.headers['folder'] || new Date().getFullYear() + '_' + (new Date().getMonth() + 1) + '_' + new Date().getDate();
site.createDir(site.options.upload_dir + '/' + folder, () => {
site.createDir(site.options.upload_dir + '/' + folder + '/images', () => {
let response = {
image: {},
done: !0,
};
let file = req.files.fileToUpload;
if (file) {
let name1 = 'image_' + new Date().getTime().toString() + Math.random().toString().replace('.', '_');
let newName = name1 + site.path.extname(file.originalFilename);
let newName2 = name1 + '.webp';
let newpath = site.path.resolve(site.options.upload_dir + '/' + folder + '/images/' + newName);
let newpath2 = site.path.resolve(site.options.upload_dir + '/' + folder + '/images/' + newName2);
site.mv(file.filepath, newpath, function (err) {
if (err) {
response.error = err;
response.done = !1;
res.json(response);
} else {
response.image.name = file.originalFilename;
response.image.path = newpath;
response.image.url = '/x-api/image/' + folder + '/' + newName;
response.image.size = file.size;
if (!response.image.name.like('*.webp|*.gif|*.png')) {
site.webp.cwebp(newpath, newpath2, '-q 80').then((output) => {
response.image.path = newpath2;
response.image.url = '/x-api/image/' + folder + '/' + newName2;
res.json(response);
site.deleteFileSync(newpath, () => {});
});
} else {
res.json(response);
}
}
});
} else {
response.error = 'no file';
response.done = !1;
res.json(response);
}
});
});
});
site.get({ name: '/x-api/image/:category/:name', public: true }, (req, res) => {
res.set('Cache-Control', 'public, max-age=' + 60 * site.options.cache.images);
res.download(site.options.upload_dir + '/' + req.params.category + '/images/' + req.params.name);
});
site.post({ name: '/x-api/upload/audio', public: true }, (req, res) => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'], () => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'] + '/audios', () => {
let response = {
audio: {},
done: !0,
};
let file = req.files.fileToUpload;
if (file) {
let newName = 'audio_' + new Date().getTime().toString() + Math.random().toString() + site.path.extname(file.originalFilename);
let newpath = site.path.resolve(site.options.upload_dir + '/' + req.headers['folder'] + '/audios/' + newName);
site.mv(file.filepath, newpath, function (err) {
if (err) {
response.error = err;
response.done = !1;
} else {
response.audio.name = file.originalFilename;
response.audio.path = newpath;
response.audio.url = '/x-api/audio/' + req.headers['folder'] + '/' + newName;
response.audio.size = file.size;
}
res.json(response);
});
} else {
response.error = 'no file';
response.done = !1;
res.json(response);
}
});
});
});
site.get({ name: '/x-api/audio/:category/:name', public: true }, (req, res) => {
res.set('Cache-Control', 'public, max-age=' + 60 * site.options.cache.images);
res.download(site.options.upload_dir + '/' + req.params.category + '/audios/' + req.params.name);
});
site.post({ name: '/x-api/upload/video', public: true }, (req, res) => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'], () => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'] + '/videos', () => {
let response = {
video: {},
done: !0,
};
let file = req.files.fileToUpload;
if (file) {
let newName = 'video_' + new Date().getTime().toString() + Math.random().toString() + site.path.extname(file.originalFilename);
let newpath = site.path.resolve(site.options.upload_dir + '/' + req.headers['folder'] + '/videos/' + newName);
site.mv(file.filepath, newpath, function (err) {
if (err) {
response.error = err;
response.done = !1;
} else {
response.video.name = file.originalFilename;
response.video.path = newpath;
response.video.url = '/x-api/video/' + req.headers['folder'] + '/' + newName;
response.video.size = file.size;
}
res.json(response);
});
} else {
response.error = 'no file';
response.done = !1;
res.json(response);
}
});
});
});
site.get({ name: '/x-api/video/:category/:name', public: true }, (req, res) => {
res.set('Cache-Control', 'public, max-age=' + 60 * site.options.cache.images);
res.download(site.options.upload_dir + '/' + req.params.category + '/videos/' + req.params.name);
});
site.post({ name: '/x-api/upload/file', public: true }, (req, res) => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'], () => {
site.createDir(site.options.upload_dir + '/' + req.headers['folder'] + '/files', () => {
let response = {
file: {},
done: !0,
};
let file = req.files.fileToUpload;
if (!file) {
response.done = !1;
response.error = 'no file uploaded';
res.json(response);
return;
}
let newName = 'file_' + (new Date().getTime().toString() + Math.random().toString()) + site.path.extname(file.originalFilename);
let newpath = site.path.resolve(site.options.upload_dir + '/' + req.headers['folder'] + '/files/' + newName);
site.mv(file.filepath, newpath, function (err) {
if (err) {
response.error = err;
response.done = !1;
}
response.file.name = file.originalFilename;
response.file.path = newpath;
response.file.url = '/x-api/file/' + req.headers['folder'] + '/' + newName;
response.file.size = file.size;
res.json(response);
});
});
});
});
site.get({ name: '/x-api/file/:category/:name', public: true }, (req, res) => {
res.download(site.options.upload_dir + '/' + req.params.category + '/files/' + req.params.name);
});
site.getTLV = function (name, value) {
return Buffer.concat([Buffer.from([name], 'utf8'), Buffer.from([value.length], 'utf8'), Buffer.from(value, 'utf8')]);
};
site.onPOST('/x-api/zakat', (req, res) => {
let obj = req.data || {};
let value = [];
if (obj.name) {
value.push(site.getTLV('1', obj.name));
}
if (obj.vat_number) {
value.push(site.getTLV('2', obj.vat_number));
}
if (obj.time) {
value.push(site.getTLV('3', obj.time));
}
if (obj.total) {
value.push(site.getTLV('4', obj.total));
}
if (obj.vat_total) {
value.push(site.getTLV('5', obj.vat_total));
}
value = Buffer.concat([...value]).toString('base64');
res.json({
done: true,
value: value,
});
});
};