Modul: Onboarding: Unterschied zwischen den Versionen
Aus lernlog Hilfesystem
K (1 Version importiert) |
(kein Unterschied)
|
Aktuelle Version vom 12. März 2025, 09:16 Uhr
Die Dokumentation für dieses Modul kann unter Modul:Onboarding/Doku erstellt werden
Skriptfehler: Interner Lua-Fehler: Der Interpreter beendet sich mit dem Status 1.
local p = {} --p stands for package
-- joins two tables of users
function p.mergeTables( frame )
primary_table_str = frame.args[1]
secondary_table_str = frame.args[2]
output = ""
data_row_number = 0
join_table = {}
for item in primary_table_str:gmatch("<tr.-</tr>") do
tab = {}
for split in item:gmatch("<td.-</td>") do table.insert(tab, split) end
mitarbeiter = tab[1]
prozeduren = tab[2]
aufgaben = tab[3]
if mitarbeiter then
table.insert(join_table, '\n'..mitarbeiter..'\n'..prozeduren..'\n'..aufgaben)
end
end
for item in secondary_table_str:gmatch("<tr.-</tr>") do
tab = {}
for split in item:gmatch("<td.-</td>") do table.insert(tab, split) end
mitarbeiter = tab[1]
prozeduren = tab[2]
aufgaben = tab[3]
mitarbeiter_short = mitarbeiter:match("%[%[.-%]%]"):gsub('%[',''):gsub('%]','')
found = false
for key,value in pairs(join_table) do
if string.find(value, mitarbeiter_short) then
found = true;
end
end
if not found then
table.insert(join_table, '\n'..mitarbeiter..'\n'..prozeduren..'\n'..aufgaben)
end
end
table.sort(join_table)
output = '<table class="sortable wikitable smwtable broadtable"><th class="Mitarbeiter-Name">Mitarbeiter Name</th><th class="Zugewiesene-Prozeduren">Zugewiesene Prozeduren</th><th class="Zugewiesene-Aufgaben">Zugewiesene Aufgaben</th>'
for key,value in pairs(join_table) do
data_row_number = data_row_number + 1
if (data_row_number % 2 == 0) then
class = "row-even"
else
class = "row-odd"
end
output = output..'\n<tr data-row-number="'..data_row_number..'" class="'..class..'">'..value..'\n</tr>'
end
output = output..'\n</table>'
return output
--:gsub('<','('):gsub('>',')'):gsub('%[','('):gsub('%]',')').."<br><br>"
end
-- get infos about user
function p.getInfos( frame)
user = frame.args[1]
role = "Role: " .. parseFunction(frame, '#ifingroup:mitarbeiter', {'true', 'false'} ) .. "|" .. parseFunction(frame, '#ifingroup:personal', {'true', 'false'} )
--"Role: " .. getRole( frame )
if mw.title.makeTitle( 'Benutzer', user ).exists then
user_site_exist = "Benutzer-Seite existiert"
else
user_site_exist = "Benutzer-Seite existiert nicht"
end
if mw.title.new( user ).exists then
onboarding_exists = "Onboarding-Seite existiert"
else
onboarding_exists = "Onboarding-Seite existiert"
end
return role .. '\n\n' .. user_site_exist .. '\n\n' .. onboarding_exists
end
-- creates a list of "mitarbeiter"
--{{dropdown|1=[https://duckduckgo.com/?q=foo&ia=web Search for Foo]|2=Bar}}
--{{{field|Onboarding_Aufgabe|input type=dropdown|values=1,2,3,4}}}
function p.listWorkers( frame )
users_args = frame.args[1]:gsub("%s+", "")..", "
onboardings_args = frame.args[2]:gsub("%s+", "")..", "
--output = '<select id="title" name="title">\n'
output = '{{dropdown'
onboardings_array = {}
for item in onboardings_args:gmatch("%w+") do
table.insert(onboardings_array, item)
end
users_array = {}
for item in users_args:gmatch("%w+:%w+,") do
user = item:gsub("Benutzer:",""):gsub(",","")
if has_value (onboardings_array, user) or user == 'Maintenancescript' then
-- output = output..user..' - exists\n\n'
else
-- output = output..user..' - NOT exists\n\n'
--output = output..'<option value="'..user..'">'..user..'</option>\n\n'
output = output..'|'..user
end
end
--output = output..'</select>\n'
output = output..' }}\n'
return output
end
-- pervorms ask request to smw
function p.ask(frame)
if not mw.smw then
return "mw.smw module not found"
end
if frame.args[1] == nil then
return "no parameter found"
end
local queryResult = mw.smw.ask( frame.args )
if queryResult == nil then
return "(no values)"
end
if type( queryResult ) == "table" then
local myResult = '\n\n'
for num, row in pairs( queryResult ) do
-- myResult = myResult .. '* This is result #' .. num .. '\n'
for property, data in pairs( row ) do
local dataOutput = data
if type( data ) == 'table' then
dataOutput = mw.text.listToText( data, ', ', ' and ')
end
--myResult = myResult .. '** ' .. property .. ': ' .. dataOutput .. '\n'
myResult = myResult .. dataOutput .. '\n\n'
end
end
return myResult
end
return queryResult
end
--- Tests ----------------------------------------------------------------------
-- creates a breadcrumps over frame parents
function p.parentCrump(frame)
if frame:getParent() == nil then
-- end
result = ""
else
-- go deeper
result = " >> " .. p.parentCrump(frame:getParent())
end
return frame:getTitle() .. result
end
--- Tools ----------------------------------------------------------------------
function parseFunction (frame, name, args)
pf = function (frame, name, args)
return frame:callParserFunction{ name = name, args = args }
end
callback = { pcall( pf, frame, name, args) }
if callback[1] then
return callback[2]
else
return "not applicable here"
end
end
function toboolean(str)
if str == "true" then
return true
else
return false
end
end
function has_value (arr, val)
for index, value in ipairs(arr) do
if value == val then
return true
end
end
return false
end
return p