From b9e31706c33cd5ac10fa66a3a88cb54a5327220c Mon Sep 17 00:00:00 2001
From: alex <alex@alexloehr.net>
Date: Fri, 20 Jun 2025 15:40:04 +0000
Subject: [PATCH] GS-2156
---
lib/db.js | 10 +++++
lib/libIlias.js | 23 ++++++-----
app.js | 5 ++
vue/src/components/Header.vue | 7 ++-
bin/getUdf.js | 20 ++++++++++
test/testImportIliasUser.js | 15 +++++--
6 files changed, 62 insertions(+), 18 deletions(-)
diff --git a/app.js b/app.js
index 3928423..3db466b 100644
--- a/app.js
+++ b/app.js
@@ -109,6 +109,11 @@
}
})
+ .post("/api/user", async function (req, res) {
+ const user = req.body
+ const res2 = await libIlias.importIliasUser(user) // TODO import or update if already available
+ return res.send(res2)
+ })
.delete("/api/user", async function (req, res) { // DELETE ALL users
const res2 = await libIlias.deleteAllUsers()
diff --git a/bin/getUdf.js b/bin/getUdf.js
new file mode 100644
index 0000000..b5613a9
--- /dev/null
+++ b/bin/getUdf.js
@@ -0,0 +1,20 @@
+const db = require("../lib/db")
+const yargs = require("yargs")
+
+/////////////////////////////////////////////////////////////////////////
+
+const argv = yargs
+ // .usage("$0 <ref_id>", "get user defined fields",)
+ .strict()
+ .parse()
+
+
+run(argv)
+ .then(console.log)
+ .catch(console.error)
+ .finally(process.exit)
+
+async function run({ref_id}) {
+ return await db.getUdf()
+}
+
diff --git a/lib/db.js b/lib/db.js
index 531e5cf..72d6bc0 100644
--- a/lib/db.js
+++ b/lib/db.js
@@ -40,6 +40,7 @@
getKursTeilnehmer,
getKursTeilnehmerCount,
+ getUdf,
}
/////////////////////////////////////////////////////////////////////////
@@ -350,3 +351,12 @@
const [results] = await pool.query(q)
return results
}
+
+/////// UDF ////////////////////////////////////////////////////////////////
+
+async function getUdf() {
+ const pool = await poolP
+ const q = `SELECT field_id, field_name, field_type from ${database}.udf_definition;`
+ const [results] = await pool.query(q)
+ return results
+}
diff --git a/lib/libIlias.js b/lib/libIlias.js
index 5dd90ab..b261889 100644
--- a/lib/libIlias.js
+++ b/lib/libIlias.js
@@ -1,4 +1,5 @@
/* Lib for interacting with customized ILIAS php */
+const _ = require("lodash")
const settings = require("../settings")
const {getObjIdFromRefId} = require("./db")
const db = require("./db")
@@ -59,29 +60,29 @@
})
let url2 = `${url}?${sp.toString()}`
console.log(url2)
+
+ console.log(user)
+ const udfDef = await db.getUdf()
+ const udfMap = _.keyBy(udfDef, "field_name")
+ user.udf = _.mapKeys(user.udf, function (value, key) {
+ return udfMap[key].field_id
+ })
+ console.log(user)
+ // return "jo"
+
const res = await fetch(url2, {
method: "POST",
body: JSON.stringify(user)
})
- // const data = await res.json()
- // return data
const text = await res.text()
try {
- const json = JSON.parse(text)
- return json
+ return JSON.parse(text)
} catch (ex) {
console.error(ex.message)
console.log(text)
throw ex
- }
- try {
- return data
- } catch (ex) {
- const text = await res.text()
- console.error(text)
- return false
}
}
diff --git a/test/testImportIliasUser.js b/test/testImportIliasUser.js
index 70bd7e1..c4c6092 100644
--- a/test/testImportIliasUser.js
+++ b/test/testImportIliasUser.js
@@ -21,11 +21,16 @@
department: "Bananenpflücker",
institution: "Globus Budapest",
roleIdGlobal: 4,
- udf_Markt: "Markt UDF",
- udf: { // ACHTUNG: Die Nummer enspricht der id in der Tabelle udf_definition und kann je nach Reihenfolge anders sein!
- 1: "Markt UDF",
- 2: "Marktnummer UDF",
- 3: "Personal UDF",
+ // udf_Markt: "Markt UDF",
+ udf: {
+ // ACHTUNG: Die Nummer enspricht der id in der Tabelle udf_definition und kann je nach Reihenfolge anders sein!
+ // wird in importIliasUser() aufgelöst aus dem Namen
+ // 1: "Markt UDF",
+ // 2: "Marktnummer UDF",
+ // 3: "Personal UDF",
+ "Markt": "Markt UDF 2",
+ "Marktnummer": "Marktnummer UDF 2",
+ "Personalnummer": "Personal UDF 2",
},
}
diff --git a/vue/src/components/Header.vue b/vue/src/components/Header.vue
index 94784b0..455fe20 100644
--- a/vue/src/components/Header.vue
+++ b/vue/src/components/Header.vue
@@ -2,7 +2,10 @@
import {reindex, apiTokenValid, deleteApiToken, routerBase} from "../lib/api"
-
+async function doReindex () {
+ await reindex()
+ location.reload()
+}
</script>
@@ -15,7 +18,7 @@
<RouterLink :to="`${routerBase}/ui/kurs`">Courses</RouterLink>
<div style="flex-grow: 1" />
<div>
- <button type="button" title="reindex search index" @click="reindex()">♻</button>
+ <button type="button" title="reindex search index" @click="doReindex">♻</button>
</div>
<div v-if="apiTokenValid">
<button type="button" @click="deleteApiToken()">logout</button>
--
Gitblit v1.8.0