k (1 revision imported)
(Imported by PageSync)
Label: wsps-content-edit-tag
 
Regel 7: Regel 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 |<!--  
</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 |<!--
-->{{#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 |<!--
-->{{#if:{{#af_get:{{{$classData}}}|ws-base-props|Base properties|1|Class|_text}}<!--
-->{{#widget:Layout <!-- widget creates the css -->
 
####################################
### New version using slot data  ###
####################################
-->|{{#widget:Layout <!-- widget creates the css -->
|rows={{#af_get:{{{$classData}}}|ws-class-props|Csp class properties|1|Layout rows|_text}}
|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}}
|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}}
|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}}<!--
|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
   -->}}<!-- end of widget:Layout


####################################
### Old version using properties ###
####################################
-->|<!--
-->{{#vardefine:@class|{{#show:{{FULLPAGENAME}}|?Class|link=none}} }}<!-- get the class of current page
-->{{#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-->
        }}<!--
-->}}<!--
-->}}<!-- end of #if (check for class in $classData
-->}}<!-- end of #af_foreach $classData
-->}}<!-- end of #af_foreach $classData
-->}}<!-- end of #af_foreach $base --></includeonly>
-->}}<!-- end of #af_foreach $base --></includeonly>
ws-base-props
Regel 3: Regel 3:
|Title=Template:Layout
|Title=Template:Layout
|Version history={{Version history item  
|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 number=1.2
|Version description=Replaced #regexall with Lua function
|Version description=Replaced #regexall with Lua function
Regel 14: Regel 22:
|Version description=Initial version
|Version description=Initial version
|Version date=2022-12-02 07:55:53
|Version date=2022-12-02 07:55:53
}}
}}
}}
}}
}}
}}

Huidige versie van 24 mrt 2025 om 09:29

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