|
|
@@ -5,7 +5,7 @@ var windowDisplayed = false;
|
|
|
var data = null;
|
|
|
|
|
|
const GRANT_TEXT = ["None", "Read Access", "Write Access", "Read Access (Strip meta)"];
|
|
|
-const GRANT_ICON = ["", "bi-eye", "bi-pencil", "bi-eye-slash"];
|
|
|
+const GRANT_ICON = ["bi-question-lg", "bi-eye", "bi-pencil", "bi-eye-slash"];
|
|
|
const ACCESS_ICON = ["bi-question-lg", "bi-database", "bi-envelope-at", "bi-link-45deg", "bi-people"];
|
|
|
const TYPE_ICON = ["bi-question-lg", "bi-diagram-2", "bi-tags", "bi-braces-asterisk", "bi-images", "bi-gear"];
|
|
|
const TYPE_TEXT = ["Unknown", "Single photo", "Tags", "Meta", "Everything", "Admin access"];
|
|
|
@@ -19,12 +19,14 @@ class ShareData {
|
|
|
grant = 0;
|
|
|
|
|
|
constructor(data) {
|
|
|
- this.dbId = data.id;
|
|
|
- this.typeId = [ "unknown", "ldapAccount", "email", "link", "every one" ].indexOf(data.type);
|
|
|
- this.typeData = data.typeData;
|
|
|
- this.accessToId = [ "unknown", "item", "tag", "meta", "everything", "admin"].indexOf(data.accessTo);
|
|
|
- this.accessToData = data.accessToData;
|
|
|
- this.grant = [ "none", "read", "write", "read without meta"].indexOf(data.grant);
|
|
|
+ if (data) {
|
|
|
+ this.dbId = data.id;
|
|
|
+ this.typeId = [ "unknown", "ldapAccount", "email", "link", "every one" ].indexOf(data.type);
|
|
|
+ this.typeData = data.typeData;
|
|
|
+ this.accessToId = [ "unknown", "item", "tag", "meta", "everything", "admin"].indexOf(data.accessTo);
|
|
|
+ this.accessToData = data.accessToData;
|
|
|
+ this.grant = [ "none", "read", "write", "read without meta"].indexOf(data.grant);
|
|
|
+ }
|
|
|
}
|
|
|
|
|
|
objectify() {
|
|
|
@@ -57,6 +59,20 @@ function getData() {
|
|
|
});
|
|
|
}
|
|
|
|
|
|
+function createData(data) {
|
|
|
+ return new Promise(ok => {
|
|
|
+ $.ajax({
|
|
|
+ url: "/api/accessAdmin/create",
|
|
|
+ type: "POST",
|
|
|
+ data: data,
|
|
|
+ success: item => {
|
|
|
+ ok(new ShareData(item));
|
|
|
+ },
|
|
|
+ error: err => ok(false),
|
|
|
+ });
|
|
|
+ });
|
|
|
+}
|
|
|
+
|
|
|
function updateData(data) {
|
|
|
return new Promise(ok => {
|
|
|
$.ajax({
|
|
|
@@ -139,6 +155,29 @@ async function buildShareItem(data) {
|
|
|
let typeDepandentDiv = document.createElement("div");
|
|
|
let grantDiv = document.createElement("div");
|
|
|
|
|
|
+ if (data.typeId === 3) { // Link type
|
|
|
+ let linkContainer = document.createElement("div");
|
|
|
+ linkContainer.className = "input-group";
|
|
|
+ let text = document.createElement("span");
|
|
|
+ text.className = "input-group-text bi bi-link-45deg";
|
|
|
+ linkContainer.appendChild(text);
|
|
|
+ let input = document.createElement("input");
|
|
|
+ input.value = `${document.location.origin}/linkLogin?link=${data.typeData}`;
|
|
|
+ input.className = "form-control";
|
|
|
+ input.type = "text";
|
|
|
+ input.disabled = true;
|
|
|
+ linkContainer.appendChild(input);
|
|
|
+ let bt = document.createElement("button");
|
|
|
+ bt.className = "btn btn-primary btn-outline-secondary";
|
|
|
+ bt.placeholder = "Copy"
|
|
|
+ let btContent = document.createElement("span");
|
|
|
+ btContent.className = "bi bi-clipboard-fill";
|
|
|
+ bt.appendChild(btContent);
|
|
|
+ linkContainer.appendChild(bt);
|
|
|
+ typeDivRow.appendChild(linkContainer);
|
|
|
+ bt.addEventListener("click", () => { navigator.clipboard.writeText(input.value); });
|
|
|
+ }
|
|
|
+
|
|
|
{
|
|
|
let typeDiv = document.createElement("div");
|
|
|
typeDiv.className = "dropdown";
|
|
|
@@ -292,6 +331,7 @@ window.closeShareUi = () => {
|
|
|
document.getElementById("pch-share-wrapper").classList.add("hidden");
|
|
|
document.body.classList.remove("overlay-visible");
|
|
|
windowDisplayed = false;
|
|
|
+ data = null;
|
|
|
document.Title.pop();
|
|
|
}
|
|
|
|
|
|
@@ -300,7 +340,20 @@ document.getElementById("pch-share-closeBt").addEventListener("click", window.cl
|
|
|
|
|
|
document.getElementById("pch-share-addLdap").addEventListener("click", () => {});
|
|
|
document.getElementById("pch-share-addEmail").addEventListener("click", () => {});
|
|
|
-document.getElementById("pch-share-addLink").addEventListener("click", () => {});
|
|
|
+document.getElementById("pch-share-addLink").addEventListener("click", async () => {
|
|
|
+ if (!windowDisplayed)
|
|
|
+ return;
|
|
|
+ const uid = crypto.randomUUID().replaceAll('-', '');
|
|
|
+ const container = document.getElementById('pch-share-container');
|
|
|
+ let share = new ShareData();
|
|
|
+ share.typeId = 3;
|
|
|
+ share.typeData = uid;
|
|
|
+ share.accessToId = 0;
|
|
|
+ share.grant = 0;
|
|
|
+ share = await createData(share);
|
|
|
+ data.push(share);
|
|
|
+ container.querySelector("ul").appendChild(await buildShareItem(share));
|
|
|
+});
|
|
|
document.getElementById("pch-share-addEveryone").addEventListener("click", () => {});
|
|
|
|
|
|
setTimeout(() => LoadingTasks.push(window.showShareUi), 1500);
|