strapi-plugin-all-in-one-accessibility
Version:
Website accessibility widget for improving WCAG 2.0, 2.1, 2.2 and ADA compliance!
493 lines (475 loc) • 14.3 kB
JavaScript
;
const bootstrap = ({ strapi }) => {
};
const destroy = ({ strapi }) => {
};
const register = ({ strapi }) => {
};
const config = {
default: {},
validator() {
}
};
function getDefaultExportFromCjs(x) {
return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
}
const kind = "collectionType";
const collectionName = "setting";
const info = {
singularName: "settings",
pluralName: "setting",
displayName: "Settings"
};
const options = {
draftAndPublish: false,
comment: ""
};
const pluginOptions = {
"content-manager": {
visible: false
},
"content-type-builder": {
visible: false
}
};
const attributes = {
Icon_Position: {
type: "enumeration",
"enum": [
"top_left",
"top_center",
"top_right",
"middle_left",
"middle_right",
"bottom_left",
"bottom_center",
"bottom_right"
]
},
Icon_Type: {
type: "enumeration",
"enum": [
"aioa-icon-type-1",
"aioa-icon-type-2",
"aioa-icon-type-3"
]
},
Icon_Size: {
type: "enumeration",
"enum": [
"aioa-big-icon",
"aioa-medium-icon",
"aioa-default-icon",
"aioa-small-icon",
"aioa-extra-small-icon"
]
},
Color_Code: {
type: "string"
}
};
const require$$0 = {
kind,
collectionName,
info,
options,
pluginOptions,
attributes
};
const schema = require$$0;
var settings$5 = {
schema
};
const settings$4 = settings$5;
var contentTypes = {
settings: settings$4
};
const contentTypes$1 = /* @__PURE__ */ getDefaultExportFromCjs(contentTypes);
const controller$1 = ({ strapi }) => ({
index(ctx) {
ctx.body = strapi.plugin("all-in-one-accessibility").service("service").getWelcomeMessage();
},
findContentTypes(ctx) {
ctx.body = strapi.plugin("all-in-one-accessibility").service("service").getContentTypes();
}
});
const controller = ({ strapi }) => ({
async getSettings(ctx) {
try {
return await strapi.plugin("all-in-one-accessibility").service("settings").getSettings(ctx.query);
} catch (err) {
ctx.trow(500, err);
}
},
async deleteSettings(ctx) {
try {
return await strapi.plugin("all-in-one-accessibility").service("settings").deleteSettings(ctx.params.id);
} catch (err) {
ctx.throw(500, err);
}
},
async createSettings(ctx) {
try {
ctx.body = await strapi.plugin("all-in-one-accessibility").service("settings").createSettings(ctx.request.body);
} catch (err) {
ctx.throw(500, err);
}
},
async updateSettings(ctx) {
try {
return await strapi.plugin("all-in-one-accessibility").service("settings").updateSettings(ctx.params.id, ctx.request.body);
} catch (err) {
ctx.throw(500, err);
}
},
async addScript() {
try {
return await strapi.plugin("all-in-one-accessibility").service("settings").addScript();
} catch (err) {
console.error("Error triggering the script:", err);
}
},
getScript: async (ctx) => {
strapi.db.query("plugin::all-in-one-accessibility.settings");
const q = strapi.entityService.findMany("plugin::all-in-one-accessibility.settings");
const settings2 = await q;
console.log("settings: ", settings2);
var hexaColorCode = "420083", licensekey = "", IconPosition = "bottom_right", IconType = "aioa-icon-type-1", IconSize = "aioa-default-icon";
if (settings2.length > 0) {
if (Object.keys(settings2[0]).length !== 0) {
console.log("Color Code", settings2[0]["Color_Code"]);
console.log("Icon Position", settings2[0]["Icon_Position"]);
console.log("Icon Type", settings2[0]["Icon_Type"]);
console.log("Icon Size", settings2[0]["Icon_Size"]);
hexaColorCode = settings2[0]["Color_Code"];
licensekey = "";
IconPosition = settings2[0]["Icon_Position"];
IconType = settings2[0]["Icon_Type"];
IconSize = settings2[0]["Icon_Size"];
}
}
const scriptUrl = `https://www.skynettechnologies.com/accessibility/js/all-in-one-accessibility-js-widget-minify.js?colorcode=${hexaColorCode}&token=${licensekey}&position=${IconPosition}.${IconType}.${IconSize}`;
ctx.type = "application/javascript";
ctx.body = `document.write('<script src="${scriptUrl}"><\/script>');`;
}
});
var settings$2 = controller;
const settings$3 = /* @__PURE__ */ getDefaultExportFromCjs(settings$2);
const controllers = {
controller: controller$1,
settings: settings$3
};
const middlewares = {};
const policies = {};
const contentApi = [
{
method: "GET",
path: "/",
handler: "controller.index",
config: {
policies: [],
auth: false
}
},
{
method: "GET",
path: "/getsettings",
handler: "settings.getSettings",
config: {
policies: [],
auth: false
}
},
{
method: "POST",
path: "/createsettings",
handler: "settings.createSettings",
config: {
policies: [],
auth: false
}
},
{
method: "DELETE",
path: "/deletesettings/:id",
handler: "settings.deleteSettings",
config: {
policies: [],
auth: false
}
},
{
method: "PUT",
path: "/updatesettings/:id",
handler: "settings.updateSettings",
config: {
policies: [],
auth: false
}
},
{
method: "POST",
path: "/addscript",
handler: "settings.addScript",
config: {
policies: [],
auth: false
}
},
{
method: "GET",
path: "/getScript",
handler: "settings.getScript",
config: {
policies: [],
auth: false
}
}
];
const admin = [
{
method: "GET",
path: "/",
handler: "controller.index",
config: {
policies: [],
auth: false
}
},
{
method: "GET",
path: "/getsettings",
handler: "settings.getSettings",
config: {
policies: [],
auth: false
}
},
{
method: "POST",
path: "/createsettings",
handler: "settings.createSettings",
config: {
policies: [],
auth: false
}
},
{
method: "DELETE",
path: "/deletesettings/:id",
handler: "settings.deleteSettings",
config: {
policies: [],
auth: false
}
},
{
method: "PUT",
path: "/updatesettings/:id",
handler: "settings.updateSettings",
config: {
policies: [],
auth: false
}
},
{
method: "POST",
path: "/addscript",
handler: "settings.addScript",
config: {
policies: [],
auth: false
}
},
{
method: "GET",
path: "/getScript",
handler: "settings.getScript",
config: {
policies: [],
auth: false
}
}
];
const routes = {
"content-api": {
type: "content-api",
routes: [...contentApi]
},
admin: {
type: "admin",
routes: [...admin]
}
};
const service = ({ strapi }) => ({
getWelcomeMessage() {
return "Welcome to Strapi 🚀";
},
getContentTypes() {
return strapi.contentTypes;
}
});
var settings = ({ strapi }) => ({
/**
* Get Settings from Strapi Database
*/
async getSettings(query) {
strapi.db.query("plugin::all-in-one-accessibility.settings");
const q = strapi.entityService.findMany("plugin::all-in-one-accessibility.settings");
return await q;
},
async deleteSettings(id) {
return await strapi.entityService.delete("plugin::all-in-one-accessibility.settings", id);
},
async createSettings(data) {
return await strapi.entityService.create("plugin::all-in-one-accessibility.settings", data);
},
async updateSettings(id, data) {
return await strapi.entityService.update("plugin::all-in-one-accessibility.settings", id, data);
},
async addScript() {
try {
const fs = require("fs");
strapi.db.query("plugin::all-in-one-accessibility.settings");
const q = strapi.entityService.findMany("plugin::all-in-one-accessibility.settings");
const settings2 = await q;
console.log("settings: ", settings2);
var hexaColorCode = "420083", licensekey = "", IconPosition = "bottom_right", IconType = "aioa-icon-type-1", IconSize = "aioa-default-icon";
if (settings2.length > 0) {
if (Object.keys(settings2[0]).length !== 0) {
console.log("Color Code", settings2[0]["Color_Code"]);
console.log("Icon Position", settings2[0]["Icon_Position"]);
console.log("Icon Type", settings2[0]["Icon_Type"]);
console.log("Icon Size", settings2[0]["Icon_Size"]);
hexaColorCode = settings2[0]["Color_Code"];
licensekey = "";
IconPosition = settings2[0]["Icon_Position"];
IconType = settings2[0]["Icon_Type"];
IconSize = settings2[0]["Icon_Size"];
}
}
if (!fs.existsSync("public")) {
fs.mkdirSync("public");
}
const headerPath = "public/header.html";
const footerPath = "public/footer.html";
const indexPath = "public/index.html";
const addScriptToFile = (filePath) => {
if (fs.existsSync(filePath)) {
let content = fs.readFileSync(filePath, "utf8");
if (content.includes("aioa-adawidget")) {
const scriptToAdd = `
<script id="aioa-adawidget" src="https://www.skynettechnologies.com/accessibility/js/all-in-one-accessibility-js-widget-minify.js?colorcode=${hexaColorCode}&token=${licensekey}&position=${IconPosition}.${IconType}.${IconSize}"><\/script>`;
content = content.replace(/<script id="aioa-adawidget".*<\/script>/, scriptToAdd);
fs.writeFileSync(filePath, content, "utf8");
console.log("Script parameters updated in ", filePath);
} else {
const scriptToAdd = `
<script id="aioa-adawidget" src="https://www.skynettechnologies.com/accessibility/js/all-in-one-accessibility-js-widget-minify.js?colorcode=${hexaColorCode}&token=${licensekey}&position=${IconPosition}.${IconType}.${IconSize}"><\/script>`;
content += scriptToAdd;
fs.writeFileSync(filePath, content, "utf8");
console.log("Script is not present in ", filePath);
}
}
};
if (fs.existsSync(headerPath)) {
addScriptToFile(headerPath);
} else if (fs.existsSync(footerPath)) {
addScriptToFile(footerPath);
} else if (fs.existsSync(indexPath)) {
if (!fs.existsSync(indexPath)) {
fs.writeFileSync(indexPath, "<!DOCTYPE html><html><head></head><body></body></html>", "utf8");
}
addScriptToFile(indexPath);
}
console.log("Script added or updated in header, footer, or index file");
} catch (err) {
console.error("Error updating script parameters in public/index.html:", err);
}
}
/*async MyComponent() {
strapi.db.query('plugin::all-in-one-accessibility.settings')
const q = strapi.entityService.findMany("plugin::all-in-one-accessibility.settings",);
const settings = await q;
console.log("settings: ", settings);
var hexaColorCode = "420083", licensekey = "", IconPosition = "bottom_right", IconType = "aioa-icon-type-1", IconSize = "aioa-default-icon";
if (settings.length > 0) {
if (Object.keys(settings[0]).length !== 0) {
console.log("License Key", settings[0]["License_Key"]);
console.log("Color Code", settings[0]["Color_Code"]);
console.log("Icon Position", settings[0]["Icon_Position"]);
console.log("Icon Type", settings[0]["Icon_Type"]);
console.log("Icon Size", settings[0]["Icon_Size"]);
hexaColorCode = settings[0]["Color_Code"];
licensekey = settings[0]["License_Key"];
IconPosition = settings[0]["Icon_Position"];
IconType = settings[0]["Icon_Type"];
IconSize = settings[0]["Icon_Size"];
}
}
},
MyComponent: async (ctx) => {
strapi.db.query('plugin::all-in-one-accessibility.settings')
const q = strapi.entityService.findMany("plugin::all-in-one-accessibility.settings",);
const settings = await q;
console.log("settings: ", settings);
var hexaColorCode = "420083", licensekey = "", IconPosition = "bottom_right", IconType = "aioa-icon-type-1", IconSize = "aioa-default-icon";
if (settings.length > 0) {
if (Object.keys(settings[0]).length !== 0) {
console.log("License Key", settings[0]["License_Key"]);
console.log("Color Code", settings[0]["Color_Code"]);
console.log("Icon Position", settings[0]["Icon_Position"]);
console.log("Icon Type", settings[0]["Icon_Type"]);
console.log("Icon Size", settings[0]["Icon_Size"]);
hexaColorCode = settings[0]["Color_Code"];
licensekey = settings[0]["License_Key"];
IconPosition = settings[0]["Icon_Position"];
IconType = settings[0]["Icon_Type"];
IconSize = settings[0]["Icon_Size"];
}
}
const scriptUrl = `https://www.skynettechnologies.com/accessibility/js/all-in-one-accessibility-js-widget-minify.js?colorcode=${hexaColorCode}&token=${licensekey}&position=${IconPosition}.${IconType}.${IconSize}`;
// Function to attach the script
function attachScript(src, id, callback) {
const existingScript = ctx.document.getElementById(id);
if (!existingScript) {
const script = ctx.document.createElement('script');
script.src = src;
script.id = id;
script.onload = () => {
if (callback) {
callback();
}
};
ctx.document.head.appendChild(script);
} else if (callback) {
callback();
}
}
// Attach the script when the controller is called
attachScript(scriptUrl, 'aioa-adawidget', () => {
// The script has been successfully attached and loaded
// You can use the script's functionality here
// For example, you can send a response to the client:
return ctx.send({ message: 'Script attached successfully' });
});
},*/
});
const settings$1 = /* @__PURE__ */ getDefaultExportFromCjs(settings);
const services = {
service,
settings: settings$1
};
const index = {
bootstrap,
destroy,
register,
config,
controllers,
contentTypes: contentTypes$1,
middlewares,
policies,
routes,
services
};
module.exports = index;