(Imported by WSPageSync)
 
(Imported by PageSync)
Tag: wsps-content-edit-tag
 
(3 intermediate revisions by 2 users not shown)
Line 1: Line 1:
<noinclude>{{Managed
<noinclude>
|Version=1.2
|Version notes=1.2 - Query based on the "Defines class" property, because layout settings have been moved to regular properties instead of subobjects.
1.1 - Removed assumption that subobject is on Wiki:Layout-settings. Can be anywhere now. Should be in 1 place of course, otherwise it won't work.
1.0 - First managed version
|Short description=
}}
 
This is the "Layout" template. It should be called in the following format:
This is the "Layout" template. It should be called in the following format:


Line 14: Line 7:
</pre>
</pre>


It genarates CSS for grid layout based on the class of the current page   
It generates CSS for grid layout based on the class of the current page   
 
</noinclude><includeonly>{{#af_foreach:{{#invoke:CspFunctions|afExportSlots|slots=ws-base-props}}||$base |<!--
-->{{#af_foreach:{{#invoke:CspFunctions|afExportSlots|slots=ws-base-props,ws-class-props|page={{#invoke:CspFunctions|ClassToClassDefinitionPage|{{#af_get:{{{$base}}}|ws-base-props|Base properties|1|Class|_text}} }} }} ||$classData |<!--
-->{{#widget:Layout <!-- widget creates the css -->
|rows={{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout rows|_text}}
|columns={{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout columns|_text}}
|areas={{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout areas|_text}}
|display={{#af_join:{{#af_map:{{#af_unique:{{#af_split:{{#invoke:CspFunctions|gmatch|{{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout areas|_text}}|([^ \'"]+)|_@_}}|_@_}} }}|$item|{{#ifeq:{{{$item}}}|main||.cp-{{{$item}}}{display:block;} }} }}|\n}}<!--
    // if Layout areas is filled but does not contain "main", hide main
    -->{{#if:{{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout areas|_text}}
      |{{#if:{{#invoke:CspFunctions|gmatch|{{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout areas|_text}}|main|,}}
        ||.cp-main{display:none;}
        }}
      }}<!--
  -->}}<!-- end of widget:Layout


</noinclude><includeonly><!--
-->}}<!-- end of #af_foreach $classData
-->{{#vardefine:@class|{{#show:{{FULLPAGENAME}}|?Class|link=none}} }}<!-- get the class of current page
-->}}<!-- end of #af_foreach $base --></includeonly>
-->{{#if:{{#var:@class}}|<!--
        -->{{#ask:[[Defines class::{{#var:@class}}]]
|?Layout areas=Areas
|?Layout columns=Columns
|?Layout rows=Rows
|format=complexarray
|name=@layout
  }}<!-- get layout settings for the class
        -->{{#cadefine:@areas|<!-- create array for areas to enable
          -->{{#replace:<!--  remove '
            -->{{#replace:<!-- remove main
                -->{{#replace:<!-- replace spaces with ,
                  -->{{#caprint:@layout[0][Areas]}}<!--
                -->|'| }}<!--
            -->|main| }}<!--
          -->|<nowiki> </nowiki>|,}}<!--
        -->|,}}<!--
      -->{{#caunique:@areas}}<!-- remove doubles from array
      -->{{#widget:layout <!-- widget creates the css -->
          |rows={{#caprint:@layout[0][Rows]}}
          |columns={{#caprint:@layout[0][Columns]}}
          |areas={{#caprint:@layout[0][Areas]}}
          |display={{#camap:@areas|@@@|.cp-@@@{display:block;}| }} <!-- set display block for component classes-->
        }}<!--
-->}}
</includeonly>
ws-base-props
Line 1: Line 1:
 
{{Base properties
|Class=Application page
|Title=Template:Layout
|Version history={{Version history item
|Version number=2.0
|Version description=Hide main component when layout areas is filled and does not include main (issue #185)
|Version date=2024-12-20 13:43:53
}}{{Version history item
|Version number=1.3
|Version description=Removed compatibility with pre CSP 1.8 class definitions
|Version date=2023-11-17 09:47:16
}}{{Version history item
|Version number=1.2
|Version description=Replaced #regexall with Lua function
|Version date=2023-8-18 12:39:26
}}{{Version history item
|Version number=1.1
|Version description=Updated to use slotdata instead of SMW properties
|Version date=2023-6-02 12:15:15
}}{{Version history item
|Version number=1.0
|Version description=Initial version
|Version date=2022-12-02 07:55:53
}}
}}
}}
}}
ws-class-props
Line 1: Line 1:
 
{{Csp class properties
|Type=CSP Basis Core
|Origin=CSP Basis
}}

Latest revision as of 08:01, 18 September 2025

This is the "Layout" template. It should be called in the following format:


{{Layout}}

It generates CSS for grid layout based on the class of the current page