<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://open-csp.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ACspCreatePageForm</id>
	<title>Module:CspCreatePageForm - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://open-csp.org/index.php?action=history&amp;feed=atom&amp;title=Module%3ACspCreatePageForm"/>
	<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspCreatePageForm&amp;action=history"/>
	<updated>2026-04-30T15:13:31Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.8</generator>
	<entry>
		<id>https://open-csp.org/index.php?title=Module:CspCreatePageForm&amp;diff=3478&amp;oldid=prev</id>
		<title>Maintenance script: Imported by PageSync</title>
		<link rel="alternate" type="text/html" href="https://open-csp.org/index.php?title=Module:CspCreatePageForm&amp;diff=3478&amp;oldid=prev"/>
		<updated>2025-07-15T08:36:54Z</updated>

		<summary type="html">&lt;p&gt;Imported by PageSync&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local ClassDefinitionData = require(&amp;#039;Module:ClassDefinitionData&amp;#039;)&lt;br /&gt;
local CspFunctions = require(&amp;#039;Module:CspFunctions&amp;#039;)&lt;br /&gt;
&lt;br /&gt;
local p = {}&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
Defines table with the following data:&lt;br /&gt;
[&amp;quot;Class options&amp;quot;] 	(table) contains classes that can be selected in the form&lt;br /&gt;
  [&amp;quot;Class&amp;quot;]					(string)&lt;br /&gt;
  [&amp;quot;Page&amp;quot;]					(string) contains pagename of class definition page&lt;br /&gt;
  [&amp;quot;Namespace options&amp;quot;] 	(string) contains comma-separated namespaces&lt;br /&gt;
  [&amp;quot;CspParameterDefinitions&amp;quot;] 	(table)&lt;br /&gt;
  [&amp;quot;hasParameterDefinitions&amp;quot;]	(string) &amp;quot;yes&amp;quot; or &amp;quot;no&amp;quot;&lt;br /&gt;
  [&amp;quot;Pagetitle format&amp;quot;]		(string)&lt;br /&gt;
  [&amp;quot;mwwrite&amp;quot;]				(string)&lt;br /&gt;
  [&amp;quot;mwoption&amp;quot;]				(string)&lt;br /&gt;
[&amp;quot;Class options count&amp;quot;] (string) contains a numerical value in a string&lt;br /&gt;
[&amp;quot;Multiple class options check&amp;quot;] (string) &amp;quot;true&amp;quot; or &amp;quot;false&amp;quot; if class options count &amp;gt; 1&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
=p.data(&amp;quot;&amp;quot;)&lt;br /&gt;
=p.data(&amp;quot;Persoon&amp;quot;)&lt;br /&gt;
=p.data(&amp;quot;Persoon test,Article&amp;quot;)&lt;br /&gt;
--]]&lt;br /&gt;
function p.data(classes,frame)&lt;br /&gt;
  local classes = classes&lt;br /&gt;
  local frame = frame&lt;br /&gt;
  if frame == nil then frame = mw.getCurrentFrame() end&lt;br /&gt;
  local classesCount = 0&lt;br /&gt;
  local classOptions = {}&lt;br /&gt;
  local results = {}&lt;br /&gt;
  -- start by filling a table with class options (class and class definition page)&lt;br /&gt;
  -- if class variable is not used, find all defined classes through query&lt;br /&gt;
  if classes == nil or classes == &amp;quot;&amp;quot; then&lt;br /&gt;
    local classesQuery = mw.smw.ask {&lt;br /&gt;
      &amp;quot;[[Defines class::+]]&amp;quot;,&lt;br /&gt;
      &amp;quot;?#-=Page&amp;quot;,&lt;br /&gt;
      &amp;quot;?Defines class=Class&amp;quot;,&lt;br /&gt;
      &amp;quot;sort=Defines class&amp;quot;,&lt;br /&gt;
      &amp;quot;limit=999&amp;quot;&lt;br /&gt;
    }&lt;br /&gt;
    if classesQuery ~= nil then&lt;br /&gt;
      classesCount = #classesQuery&lt;br /&gt;
      classOptions = classesQuery&lt;br /&gt;
    end&lt;br /&gt;
  -- else loop through class variable to find class definition pages&lt;br /&gt;
  else&lt;br /&gt;
    for class in string.gmatch(classes,&amp;quot;([^,]+)&amp;quot;) do&lt;br /&gt;
      local page = CspFunctions.ClassToClassDefinitionPage{args={class}}&lt;br /&gt;
      local classData = {[&amp;quot;Class&amp;quot;] = class,[&amp;quot;Page&amp;quot;] = page}&lt;br /&gt;
      classOptions[#classOptions + 1] = classData&lt;br /&gt;
      classesCount = classesCount + 1&lt;br /&gt;
    end&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  -- if no valid class options were found, return&lt;br /&gt;
  results[&amp;quot;Class options count&amp;quot;] = tostring(classesCount)&lt;br /&gt;
  if classesCount == 0 then &lt;br /&gt;
    results[&amp;quot;Class options&amp;quot;] = {}&lt;br /&gt;
    return results&lt;br /&gt;
  elseif  classesCount &amp;gt; 1 then&lt;br /&gt;
    results[&amp;quot;Multiple class options check&amp;quot;] = &amp;quot;true&amp;quot;&lt;br /&gt;
  else&lt;br /&gt;
    results[&amp;quot;Multiple class options check&amp;quot;] = &amp;quot;false&amp;quot;&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  -- loop through class options to add additional data from class definition pages&lt;br /&gt;
  for i, class in ipairs(classOptions) do&lt;br /&gt;
    local data = ClassDefinitionData.get(class.Page)&lt;br /&gt;
    if data and data[&amp;quot;ws-data&amp;quot;][&amp;quot;CspParameterDefinitions&amp;quot;] then&lt;br /&gt;
      class[&amp;quot;CspParameterDefinitions&amp;quot;] = data[&amp;quot;ws-data&amp;quot;][&amp;quot;CspParameterDefinitions&amp;quot;]&lt;br /&gt;
      class[&amp;quot;hasParameterDefinitions&amp;quot;] = data[&amp;quot;var&amp;quot;][&amp;quot;hasParameterDefinitions&amp;quot;]&lt;br /&gt;
    end&lt;br /&gt;
    if data and data[&amp;quot;ws-class-props&amp;quot;] and data[&amp;quot;ws-class-props&amp;quot;][&amp;quot;Csp class properties&amp;quot;] and data[&amp;quot;ws-class-props&amp;quot;][&amp;quot;Csp class properties&amp;quot;][1][&amp;quot;Allowed namespaces&amp;quot;] &lt;br /&gt;
      and data[&amp;quot;ws-class-props&amp;quot;][&amp;quot;Csp class properties&amp;quot;][1][&amp;quot;Allowed namespaces&amp;quot;][&amp;quot;_text&amp;quot;] ~= &amp;quot;&amp;quot; then&lt;br /&gt;
      class[&amp;quot;Namespace options&amp;quot;] = data[&amp;quot;ws-class-props&amp;quot;][&amp;quot;Csp class properties&amp;quot;][1][&amp;quot;Allowed namespaces&amp;quot;][&amp;quot;_text&amp;quot;]&lt;br /&gt;
    else &lt;br /&gt;
      class[&amp;quot;Namespace options&amp;quot;] = frame:preprocess(&amp;quot;(Main){{#if:{{#spaces:}}|,{{#spaces:}} }}&amp;quot;)&lt;br /&gt;
    end&lt;br /&gt;
    class[&amp;quot;Namespace options array&amp;quot;] = mw.text.split(class[&amp;quot;Namespace options&amp;quot;],&amp;quot;,&amp;quot;,true)&lt;br /&gt;
    local pagetitleFormat, mwwrite, mwoption&lt;br /&gt;
    if data then&lt;br /&gt;
      pagetitleFormat = data[&amp;quot;var&amp;quot;][&amp;quot;pagetitleFormat&amp;quot;]&lt;br /&gt;
      class[&amp;quot;Pagetitle format&amp;quot;] = pagetitleFormat&lt;br /&gt;
    end&lt;br /&gt;
    if pagetitleFormat == &amp;quot;title&amp;quot; then&lt;br /&gt;
      mwwrite = &amp;quot;[Namespace]:&amp;quot; .. class.Class .. &amp;quot;/[Title]&amp;quot;&lt;br /&gt;
      mwoption = &amp;quot;&amp;quot;&lt;br /&gt;
    else&lt;br /&gt;
      mwwrite = &amp;quot;[Namespace]:&amp;quot; .. class.Class .. &amp;quot;/&amp;quot;&lt;br /&gt;
      mwoption = &amp;quot;next_available&amp;quot;&lt;br /&gt;
    end&lt;br /&gt;
    class[&amp;quot;mwwrite&amp;quot;] = mwwrite&lt;br /&gt;
    class[&amp;quot;mwoption&amp;quot;] = mwoption&lt;br /&gt;
  end&lt;br /&gt;
  &lt;br /&gt;
  results[&amp;quot;Class options&amp;quot;] = classOptions&lt;br /&gt;
  mw.logObject(results)&lt;br /&gt;
  return results&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
--[[&lt;br /&gt;
function p.afExport(frame)&lt;br /&gt;
&lt;br /&gt;
frame args:&lt;br /&gt;
Class options	(string) comma-separated list of classes&lt;br /&gt;
&lt;br /&gt;
{{#invoke:CspCreatePageForm|afExport}}&lt;br /&gt;
{{#invoke:CspCreatePageForm|afExport|Class options=Article,Persoon}}&lt;br /&gt;
&lt;br /&gt;
debug console tests:&lt;br /&gt;
=p.afExport(mw.getCurrentFrame():newChild{title=&amp;quot;whatever&amp;quot;,args={[&amp;quot;Class options&amp;quot;]=&amp;quot;Article,Persoon&amp;quot;}}) &lt;br /&gt;
--]]&lt;br /&gt;
function p.afExport(frame)&lt;br /&gt;
  local data = p.data(frame.args[&amp;quot;Class options&amp;quot;])&lt;br /&gt;
  return mw.af.export{data}&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>Maintenance script</name></author>
	</entry>
</feed>