add dashboard.xpi for directplugin installation
This commit is contained in:
parent
07f663abb0
commit
3ea78260b6
5 changed files with 46 additions and 28 deletions
|
@ -1,5 +1,8 @@
|
||||||
"use strict";
|
"use strict";
|
||||||
|
|
||||||
|
//Simple background script that seds a message to content script
|
||||||
|
// code mainly from: https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs/sendMessage
|
||||||
|
|
||||||
function onError(error) {
|
function onError(error) {
|
||||||
console.error(`Error: ${error}`);
|
console.error(`Error: ${error}`);
|
||||||
}
|
}
|
||||||
|
@ -8,7 +11,7 @@ function sendMessageToTabs(tabs) {
|
||||||
for (let tab of tabs) {
|
for (let tab of tabs) {
|
||||||
browser.tabs.sendMessage(
|
browser.tabs.sendMessage(
|
||||||
tab.id,
|
tab.id,
|
||||||
{overlay: "display"}
|
{trigger: "extension click"}
|
||||||
).then(response => {
|
).then(response => {
|
||||||
}).catch(onError);
|
}).catch(onError);
|
||||||
}
|
}
|
||||||
|
|
BIN
dashboard-1.1-fx.xpi
Normal file
BIN
dashboard-1.1-fx.xpi
Normal file
Binary file not shown.
48
dashboard.js
48
dashboard.js
|
@ -1,26 +1,29 @@
|
||||||
var buttonsize = 250;
|
|
||||||
var baseUrl="";
|
var buttonOffset = 250; //determines where the first of three buttons is rendered
|
||||||
|
var baseUrl="default"; //shortcuts should only work when baseUrl is included in current url
|
||||||
|
|
||||||
document.addEventListener("keyup", (event) => {
|
document.addEventListener("keyup", (event) => {
|
||||||
if (event.ctrlKey && event.code == "Enter") {
|
if (event.ctrlKey && event.code == "Enter") {
|
||||||
if(document.location.host.includes(baseUrl))
|
if(document.location.host.includes(baseUrl))
|
||||||
{
|
{
|
||||||
doStuff();
|
toggleDisplayBoard();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
function doStuff()
|
// displays the board as overlay
|
||||||
|
function toggleDisplayBoard()
|
||||||
{
|
{
|
||||||
var dashboard = document.querySelector('#lit-dashboard');
|
var dashboard = document.querySelector('#lit-dashboard');
|
||||||
isFront = dashboard.style.display === 'block';
|
isFront = dashboard.style.display === 'block';
|
||||||
viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
viewportWidth = Math.max(document.documentElement.clientWidth || 0, window.innerWidth || 0);
|
||||||
viewportHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
|
viewportHeight = Math.max(document.documentElement.clientHeight || 0, window.innerHeight || 0);
|
||||||
console.log(viewportWidth + 'px');
|
|
||||||
dashboard.style.left = (document.documentElement.clientWidth/2) - 1.5*buttonsize + 'px' ;
|
dashboard.style.left = (document.documentElement.clientWidth/2) - 1.5*buttonOffset + 'px' ;
|
||||||
dashboard.style.top = (viewportHeight/2) - buttonsize + 'px';
|
dashboard.style.top = (viewportHeight/2) - buttonOffset + 'px';
|
||||||
dashboard.style.position = "fixed";
|
dashboard.style.position = "fixed";
|
||||||
dashboard.style.zIndex = "3000";
|
dashboard.style.zIndex = "3000";
|
||||||
|
|
||||||
dashboard.style.display = isFront ? 'none' : 'block';
|
dashboard.style.display = isFront ? 'none' : 'block';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,49 +31,57 @@ function onError(error) {
|
||||||
console.log(`Error: ${error}`);
|
console.log(`Error: ${error}`);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// gets rid of all the Buttons
|
||||||
function deleteButtons(dashboard)
|
function deleteButtons(dashboard)
|
||||||
{
|
{
|
||||||
document.getElementById("dashboard-nextcloud-button").remove();
|
document.getElementById("dashboard-nextcloud-button").remove();
|
||||||
document.getElementById("dashboard-wekan-button").remove();
|
document.getElementById("dashboard-wekan-button").remove();
|
||||||
document.getElementById("dashboard-authentik-button").remove();
|
document.getElementById("dashboard-authentik-button").remove();
|
||||||
}
|
}
|
||||||
|
// adds the Buttons and the link prefixes
|
||||||
|
// button.click() leads to prefix + baseUrl
|
||||||
function createButtons(baseUrl, dashboard)
|
function createButtons(baseUrl, dashboard)
|
||||||
{
|
{
|
||||||
|
|
||||||
links= {dashboard: "https://", wekan: "https://board.", nextcloud: "https://cloud." }
|
links= {dashboard: "https://", wekan: "https://board.", nextcloud: "https://cloud." }
|
||||||
|
|
||||||
|
// Button to Wekan at links["wekan"]+baseUrl
|
||||||
var wekanButton = document.createElement("button");
|
var wekanButton = document.createElement("button");
|
||||||
//wekanButton.innerHTML = "Wekan";
|
|
||||||
wekanButton.style.position= "relative";
|
wekanButton.style.position= "relative";
|
||||||
wekanButton.style.top= buttonsize + 'px';
|
wekanButton.style.top= buttonOffset + 'px';
|
||||||
wekanButton.setAttribute("class", "lit-button wekan-button");
|
wekanButton.setAttribute("class", "lit-button wekan-button");
|
||||||
wekanButton.setAttribute("id", "dashboard-wekan-button");
|
wekanButton.setAttribute("id", "dashboard-wekan-button");
|
||||||
wekanButton.addEventListener ("click", function() {
|
wekanButton.addEventListener ("click", function() {
|
||||||
window.open(links["wekan"] + baseUrl, "_self");
|
window.open(links["wekan"] + baseUrl, "_self");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Button to authentik at links["dashboard"]+baseUrl
|
||||||
var authentikButton = document.createElement("button");
|
var authentikButton = document.createElement("button");
|
||||||
//authentikButton.innerHTML = "Dashboard";
|
|
||||||
authentikButton.setAttribute("class", "lit-button authentik-button");
|
authentikButton.setAttribute("class", "lit-button authentik-button");
|
||||||
authentikButton.setAttribute("id", "dashboard-authentik-button");
|
authentikButton.setAttribute("id", "dashboard-authentik-button");
|
||||||
authentikButton.addEventListener ("click", function() {
|
authentikButton.addEventListener ("click", function() {
|
||||||
window.open(links["dashboard"] + baseUrl, "_self");
|
window.open(links["dashboard"] + baseUrl, "_self");
|
||||||
});
|
});
|
||||||
|
|
||||||
|
// Button to nextcloud at links["nextcloud"]+baseUrl
|
||||||
var nextcloudButton = document.createElement("button");
|
var nextcloudButton = document.createElement("button");
|
||||||
//nextcloudButton.innerHTML = "Nextcloud";
|
|
||||||
nextcloudButton.setAttribute("class", "lit-button nextcloud-button");
|
nextcloudButton.setAttribute("class", "lit-button nextcloud-button");
|
||||||
nextcloudButton.setAttribute("id", "dashboard-nextcloud-button");
|
nextcloudButton.setAttribute("id", "dashboard-nextcloud-button");
|
||||||
nextcloudButton.addEventListener ("click", function() {
|
nextcloudButton.addEventListener ("click", function() {
|
||||||
window.open(links["nextcloud"] + baseUrl, "_self");
|
window.open(links["nextcloud"] + baseUrl, "_self");
|
||||||
});
|
});
|
||||||
// 2. Append somewhere
|
|
||||||
|
// Append buttons to "lit-dashboard"
|
||||||
dashboard.appendChild(nextcloudButton);
|
dashboard.appendChild(nextcloudButton);
|
||||||
dashboard.appendChild(wekanButton);
|
dashboard.appendChild(wekanButton);
|
||||||
dashboard.appendChild(authentikButton);
|
dashboard.appendChild(authentikButton);
|
||||||
}
|
}
|
||||||
|
|
||||||
function setDashboard(baseUrl)
|
// creates or finds Dashboard
|
||||||
|
// basic functionality:
|
||||||
|
// initializes or finds dashboard div
|
||||||
|
// prepends new div before document.body.firstChild
|
||||||
|
function createOrFindDashboard(baseUrl)
|
||||||
{
|
{
|
||||||
if (document.getElementById('lit-dashboard'))
|
if (document.getElementById('lit-dashboard'))
|
||||||
{
|
{
|
||||||
|
@ -95,21 +106,22 @@ function setDashboard(baseUrl)
|
||||||
var currentDiv = document.body.firstChild;
|
var currentDiv = document.body.firstChild;
|
||||||
document.body.insertBefore(dashboard, currentDiv);
|
document.body.insertBefore(dashboard, currentDiv);
|
||||||
}
|
}
|
||||||
// erstelle ein neues div Element
|
|
||||||
// und gib ihm etwas Inhalt
|
|
||||||
}
|
}
|
||||||
function onGot(item) {
|
function onGot(item) {
|
||||||
baseUrl = "demo.local-it.org";
|
|
||||||
if (item.baseUrl) {
|
if (item.baseUrl) {
|
||||||
baseUrl = item.baseUrl;
|
baseUrl = item.baseUrl;
|
||||||
}
|
}
|
||||||
setDashboard(baseUrl);
|
createOrFindDashboard(baseUrl);
|
||||||
}
|
}
|
||||||
|
|
||||||
let getting = browser.storage.sync.get("baseUrl");
|
let getting = browser.storage.sync.get("baseUrl");
|
||||||
getting.then(onGot, onError);
|
getting.then(onGot, onError);
|
||||||
|
|
||||||
|
// listen to message from background.js
|
||||||
browser.runtime.onMessage.addListener(request => {
|
browser.runtime.onMessage.addListener(request => {
|
||||||
doStuff();
|
if (request.trigger === "extension click")
|
||||||
|
{
|
||||||
|
toggleDisplayBoard();
|
||||||
return Promise.resolve({response: ""});
|
return Promise.resolve({response: ""});
|
||||||
|
}
|
||||||
});
|
});
|
BIN
icons/favicon48.jpg
Normal file
BIN
icons/favicon48.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 1.1 KiB |
|
@ -2,9 +2,9 @@
|
||||||
|
|
||||||
"manifest_version": 2,
|
"manifest_version": 2,
|
||||||
"name": "Dashboard",
|
"name": "Dashboard",
|
||||||
"version": "1.0",
|
"version": "1.1",
|
||||||
|
|
||||||
"description": "Adds a Dashboard Header before Webpage header.",
|
"description": "Makes Dashboard available through shortcut to access wekan/nextcloud/authentik instances",
|
||||||
|
|
||||||
"content_scripts": [
|
"content_scripts": [
|
||||||
{
|
{
|
||||||
|
@ -13,26 +13,29 @@
|
||||||
"css": [ "css/dashboard.css" ]
|
"css": [ "css/dashboard.css" ]
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
|
"icons":{
|
||||||
|
"48": "icons/favicon48.jpg"
|
||||||
|
},
|
||||||
"web_accessible_resources": [
|
"web_accessible_resources": [
|
||||||
"css/style.css",
|
"css/style.css",
|
||||||
"icons/Nextcloud_Logo.png",
|
"icons/Nextcloud_Logo.png",
|
||||||
"icons/wekan_logo.png",
|
"icons/wekan_logo.png",
|
||||||
"icons/goauthentik_logo.png",
|
"icons/goauthentik_logo.png",
|
||||||
"icons/favicon.jpg"
|
"icons/favicon48.jpg"
|
||||||
],
|
],
|
||||||
"options_ui": {
|
"options_ui": {
|
||||||
"page": "options.html"
|
"page": "options.html"
|
||||||
},
|
},
|
||||||
|
|
||||||
"permissions": ["storage","tabs"],
|
|
||||||
|
|
||||||
"browser_specific_settings": {
|
"browser_specific_settings": {
|
||||||
"gecko": {
|
"gecko": {
|
||||||
"id": "addon@example.com"
|
"id": "dashboard@viehlieb.org",
|
||||||
|
"strict_min_version": "58.0"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
"permissions": ["storage","tabs"],
|
||||||
|
|
||||||
"browser_action": {
|
"browser_action": {
|
||||||
"default_icon": "icons/favicon.jpg",
|
"default_icon": "icons/favicon48.jpg",
|
||||||
"default_title": "Holsteincloud 3.0"
|
"default_title": "Holsteincloud 3.0"
|
||||||
},
|
},
|
||||||
"background": {
|
"background": {
|
||||||
|
|
Loading…
Reference in a new issue