<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>https://hilfe.lernlog.digital/wiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AOnboarding</id>
	<title>Modul:Onboarding - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="https://hilfe.lernlog.digital/wiki/index.php?action=history&amp;feed=atom&amp;title=Modul%3AOnboarding"/>
	<link rel="alternate" type="text/html" href="https://hilfe.lernlog.digital/wiki/index.php?title=Modul:Onboarding&amp;action=history"/>
	<updated>2026-08-15T15:13:47Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in lernlog Hilfesystem</subtitle>
	<generator>MediaWiki 1.41.1</generator>
	<entry>
		<id>https://hilfe.lernlog.digital/wiki/index.php?title=Modul:Onboarding&amp;diff=1003&amp;oldid=prev</id>
		<title>Bk admin: 1 Version importiert</title>
		<link rel="alternate" type="text/html" href="https://hilfe.lernlog.digital/wiki/index.php?title=Modul:Onboarding&amp;diff=1003&amp;oldid=prev"/>
		<updated>2025-03-12T08:16:08Z</updated>

		<summary type="html">&lt;p&gt;1 Version importiert&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {} --p stands for package&lt;br /&gt;
&lt;br /&gt;
-- joins two tables of users&lt;br /&gt;
function p.mergeTables( frame )&lt;br /&gt;
	primary_table_str = frame.args[1]&lt;br /&gt;
	secondary_table_str = frame.args[2]&lt;br /&gt;
	output = &amp;quot;&amp;quot;&lt;br /&gt;
	data_row_number = 0&lt;br /&gt;
&lt;br /&gt;
	join_table = {}&lt;br /&gt;
	for item in primary_table_str:gmatch(&amp;quot;&amp;lt;tr.-&amp;lt;/tr&amp;gt;&amp;quot;) do&lt;br /&gt;
		tab = {}&lt;br /&gt;
		for split in item:gmatch(&amp;quot;&amp;lt;td.-&amp;lt;/td&amp;gt;&amp;quot;) do table.insert(tab, split) end&lt;br /&gt;
		mitarbeiter = tab[1]&lt;br /&gt;
		prozeduren = tab[2]&lt;br /&gt;
		aufgaben = tab[3]&lt;br /&gt;
&lt;br /&gt;
		if mitarbeiter then&lt;br /&gt;
	    	table.insert(join_table, &amp;#039;\n&amp;#039;..mitarbeiter..&amp;#039;\n&amp;#039;..prozeduren..&amp;#039;\n&amp;#039;..aufgaben)&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
&lt;br /&gt;
	for item in secondary_table_str:gmatch(&amp;quot;&amp;lt;tr.-&amp;lt;/tr&amp;gt;&amp;quot;) do&lt;br /&gt;
	    tab = {}&lt;br /&gt;
		for split in item:gmatch(&amp;quot;&amp;lt;td.-&amp;lt;/td&amp;gt;&amp;quot;) do table.insert(tab, split) end&lt;br /&gt;
		mitarbeiter = tab[1]&lt;br /&gt;
		prozeduren = tab[2]&lt;br /&gt;
		aufgaben = tab[3]&lt;br /&gt;
		&lt;br /&gt;
	    mitarbeiter_short = mitarbeiter:match(&amp;quot;%[%[.-%]%]&amp;quot;):gsub(&amp;#039;%[&amp;#039;,&amp;#039;&amp;#039;):gsub(&amp;#039;%]&amp;#039;,&amp;#039;&amp;#039;)&lt;br /&gt;
	    found = false&lt;br /&gt;
	    for key,value in pairs(join_table) do&lt;br /&gt;
	    	if string.find(value, mitarbeiter_short) then&lt;br /&gt;
	    		found = true;&lt;br /&gt;
	    	end&lt;br /&gt;
	    end&lt;br /&gt;
	    if not found then&lt;br /&gt;
			table.insert(join_table, &amp;#039;\n&amp;#039;..mitarbeiter..&amp;#039;\n&amp;#039;..prozeduren..&amp;#039;\n&amp;#039;..aufgaben)&lt;br /&gt;
	    end&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	table.sort(join_table)&lt;br /&gt;
	&lt;br /&gt;
	output = &amp;#039;&amp;lt;table class=&amp;quot;sortable wikitable smwtable broadtable&amp;quot;&amp;gt;&amp;lt;th class=&amp;quot;Mitarbeiter-Name&amp;quot;&amp;gt;Mitarbeiter Name&amp;lt;/th&amp;gt;&amp;lt;th class=&amp;quot;Zugewiesene-Prozeduren&amp;quot;&amp;gt;Zugewiesene Prozeduren&amp;lt;/th&amp;gt;&amp;lt;th class=&amp;quot;Zugewiesene-Aufgaben&amp;quot;&amp;gt;Zugewiesene Aufgaben&amp;lt;/th&amp;gt;&amp;#039;&lt;br /&gt;
	for key,value in pairs(join_table) do&lt;br /&gt;
		data_row_number = data_row_number + 1&lt;br /&gt;
		if (data_row_number % 2 == 0) then&lt;br /&gt;
			class = &amp;quot;row-even&amp;quot;&lt;br /&gt;
		else&lt;br /&gt;
			class = &amp;quot;row-odd&amp;quot;&lt;br /&gt;
		end&lt;br /&gt;
		output = output..&amp;#039;\n&amp;lt;tr data-row-number=&amp;quot;&amp;#039;..data_row_number..&amp;#039;&amp;quot; class=&amp;quot;&amp;#039;..class..&amp;#039;&amp;quot;&amp;gt;&amp;#039;..value..&amp;#039;\n&amp;lt;/tr&amp;gt;&amp;#039;&lt;br /&gt;
	end&lt;br /&gt;
	output = output..&amp;#039;\n&amp;lt;/table&amp;gt;&amp;#039;&lt;br /&gt;
	return output&lt;br /&gt;
	--:gsub(&amp;#039;&amp;lt;&amp;#039;,&amp;#039;(&amp;#039;):gsub(&amp;#039;&amp;gt;&amp;#039;,&amp;#039;)&amp;#039;):gsub(&amp;#039;%[&amp;#039;,&amp;#039;(&amp;#039;):gsub(&amp;#039;%]&amp;#039;,&amp;#039;)&amp;#039;)..&amp;quot;&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&amp;quot;&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
-- get infos about user&lt;br /&gt;
function p.getInfos( frame)&lt;br /&gt;
	user = frame.args[1]&lt;br /&gt;
&lt;br /&gt;
	role = &amp;quot;Role: &amp;quot; .. parseFunction(frame, &amp;#039;#ifingroup:mitarbeiter&amp;#039;, {&amp;#039;true&amp;#039;, &amp;#039;false&amp;#039;} ) .. &amp;quot;|&amp;quot; .. parseFunction(frame, &amp;#039;#ifingroup:personal&amp;#039;, {&amp;#039;true&amp;#039;, &amp;#039;false&amp;#039;} )&lt;br /&gt;
	--&amp;quot;Role: &amp;quot; .. getRole( frame )&lt;br /&gt;
	&lt;br /&gt;
	if mw.title.makeTitle( &amp;#039;Benutzer&amp;#039;, user ).exists then &lt;br /&gt;
		user_site_exist = &amp;quot;Benutzer-Seite existiert&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		user_site_exist = &amp;quot;Benutzer-Seite existiert nicht&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	if mw.title.new( user ).exists then&lt;br /&gt;
		onboarding_exists = &amp;quot;Onboarding-Seite existiert&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		onboarding_exists = &amp;quot;Onboarding-Seite existiert&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	return role .. &amp;#039;\n\n&amp;#039; .. user_site_exist .. &amp;#039;\n\n&amp;#039; .. onboarding_exists&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- creates a list of &amp;quot;mitarbeiter&amp;quot; &lt;br /&gt;
--{{dropdown|1=[https://duckduckgo.com/?q=foo&amp;amp;ia=web Search for Foo]|2=Bar}}&lt;br /&gt;
--{{{field|Onboarding_Aufgabe|input type=dropdown|values=1,2,3,4}}}&lt;br /&gt;
function p.listWorkers( frame )&lt;br /&gt;
	users_args = frame.args[1]:gsub(&amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)..&amp;quot;, &amp;quot;&lt;br /&gt;
	onboardings_args = frame.args[2]:gsub(&amp;quot;%s+&amp;quot;, &amp;quot;&amp;quot;)..&amp;quot;, &amp;quot;&lt;br /&gt;
	--output = &amp;#039;&amp;lt;select id=&amp;quot;title&amp;quot; name=&amp;quot;title&amp;quot;&amp;gt;\n&amp;#039;&lt;br /&gt;
	output = &amp;#039;{{dropdown&amp;#039;&lt;br /&gt;
	onboardings_array = {}&lt;br /&gt;
	for item in onboardings_args:gmatch(&amp;quot;%w+&amp;quot;) do &lt;br /&gt;
		table.insert(onboardings_array, item) &lt;br /&gt;
	end&lt;br /&gt;
	&lt;br /&gt;
	users_array = {}&lt;br /&gt;
	for item in users_args:gmatch(&amp;quot;%w+:%w+,&amp;quot;) do&lt;br /&gt;
		user = item:gsub(&amp;quot;Benutzer:&amp;quot;,&amp;quot;&amp;quot;):gsub(&amp;quot;,&amp;quot;,&amp;quot;&amp;quot;)&lt;br /&gt;
		if has_value (onboardings_array, user) or user == &amp;#039;Maintenancescript&amp;#039; then&lt;br /&gt;
		    -- output = output..user..&amp;#039; - exists\n\n&amp;#039;&lt;br /&gt;
		else&lt;br /&gt;
		    -- output = output..user..&amp;#039; - NOT exists\n\n&amp;#039;&lt;br /&gt;
		    --output = output..&amp;#039;&amp;lt;option value=&amp;quot;&amp;#039;..user..&amp;#039;&amp;quot;&amp;gt;&amp;#039;..user..&amp;#039;&amp;lt;/option&amp;gt;\n\n&amp;#039;&lt;br /&gt;
		    output = output..&amp;#039;|&amp;#039;..user&lt;br /&gt;
		end&lt;br /&gt;
	end&lt;br /&gt;
	--output = output..&amp;#039;&amp;lt;/select&amp;gt;\n&amp;#039;&lt;br /&gt;
	output = output..&amp;#039; }}\n&amp;#039;&lt;br /&gt;
	return output&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- pervorms ask request to smw&lt;br /&gt;
function p.ask(frame)&lt;br /&gt;
&lt;br /&gt;
    if not mw.smw then&lt;br /&gt;
        return &amp;quot;mw.smw module not found&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if frame.args[1] == nil then&lt;br /&gt;
        return &amp;quot;no parameter found&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    local queryResult = mw.smw.ask( frame.args )&lt;br /&gt;
&lt;br /&gt;
    if queryResult == nil then&lt;br /&gt;
        return &amp;quot;(no values)&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    if type( queryResult ) == &amp;quot;table&amp;quot; then&lt;br /&gt;
        local myResult = &amp;#039;\n\n&amp;#039;&lt;br /&gt;
        for num, row in pairs( queryResult ) do&lt;br /&gt;
            -- myResult = myResult .. &amp;#039;* This is result #&amp;#039; .. num .. &amp;#039;\n&amp;#039;&lt;br /&gt;
            for property, data in pairs( row ) do&lt;br /&gt;
                local dataOutput = data&lt;br /&gt;
                if type( data ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                    dataOutput = mw.text.listToText( data, &amp;#039;, &amp;#039;, &amp;#039; and &amp;#039;)&lt;br /&gt;
                end&lt;br /&gt;
                --myResult = myResult .. &amp;#039;** &amp;#039; .. property .. &amp;#039;: &amp;#039; .. dataOutput .. &amp;#039;\n&amp;#039;&lt;br /&gt;
                myResult = myResult .. dataOutput .. &amp;#039;\n\n&amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        return myResult&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return queryResult&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Tests ----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
-- creates a breadcrumps over frame parents&lt;br /&gt;
function p.parentCrump(frame)&lt;br /&gt;
	if frame:getParent() == nil then&lt;br /&gt;
		-- end&lt;br /&gt;
		result = &amp;quot;&amp;quot;&lt;br /&gt;
	else&lt;br /&gt;
		-- go deeper&lt;br /&gt;
		result = &amp;quot; &amp;gt;&amp;gt; &amp;quot; .. p.parentCrump(frame:getParent())&lt;br /&gt;
	end&lt;br /&gt;
	return frame:getTitle() .. result	&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--- Tools ----------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
function parseFunction (frame, name, args)&lt;br /&gt;
	pf = function (frame, name, args)&lt;br /&gt;
		return frame:callParserFunction{ name = name, args = args }&lt;br /&gt;
	end&lt;br /&gt;
	callback = { pcall( pf, frame, name, args) }&lt;br /&gt;
	if callback[1] then&lt;br /&gt;
		return callback[2]&lt;br /&gt;
	else&lt;br /&gt;
		return &amp;quot;not applicable here&amp;quot;&lt;br /&gt;
	end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function toboolean(str)&lt;br /&gt;
    if str == &amp;quot;true&amp;quot; then&lt;br /&gt;
        return true&lt;br /&gt;
    else&lt;br /&gt;
    	return false&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
function has_value (arr, val)&lt;br /&gt;
    for index, value in ipairs(arr) do&lt;br /&gt;
        if value == val then&lt;br /&gt;
            return true&lt;br /&gt;
        end&lt;br /&gt;
    end&lt;br /&gt;
    return false&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Bk admin</name></author>
	</entry>
</feed>