The ezmatrix datatype (Matrix)
Class eZMatrixType in kernel/classes/datatypes/ezmatrix/ezmatrixtype.php; identifier ezmatrix, listed in settings/content.ini [DataTypeSettings] AvailableDataTypes[].
What it stores
The columns of the attribute tables its class reads or writes: data_int1, data_text, data_text1, data_text5 (data_text, data_int, data_float and sort_key_* are the object attribute's; data_text1 ... data_int4 the class attribute's settings). Found by reading the class: a heuristic.
It is indexed by the search.
In templates
my_attribute stands for the identifier of an attribute of this type in your class:
def $attribute = $node.data_map.my_attribute
if $attribute.has_content
attribute_view_gui attribute=$attribute
/if
{* the value as the datatype returns it (objectAttributeContent()) *}
$attribute.content|attribute( show, 1 )The shipped template that shows it (attribute_view_gui), design/standard/templates/content/datatype/view/ezmatrix.tpl:
{* DO NOT EDIT THIS FILE! Use an override template instead. *}
{* A table: the column names, then one row per matrix row, nothing else (no <br /> between cells or rows;
portions derived from LoveStack, mugoweb/ezpublish-legacy, commit 492a946963, Copyright (C) Mugo Web, GPL v2). *}
def $matrix = $attribute.content
<table class="list" cellspacing="0">
<tr>
foreach $matrix.columns.sequential as $column
<th>$column.name|wash( xhtml )</th>
/foreach
</tr>
foreach $matrix.rows.sequential as $row sequence array( 'bglight', 'bgdark' ) as $row_style
<tr class="$row_style">
foreach $row.columns as $cell
<td>$cell|wash( xhtml )</td>
/foreach
</tr>
/foreach
</table>
undef $matrixThe shipped template that edits it (attribute_edit_gui), design/standard/templates/content/datatype/edit/ezmatrix.tpl (first 25 lines):
{* DO NOT EDIT THIS FILE! Use an override template instead. *}
default attribute_base=ContentObjectAttribute
let matrix=$attribute.content
{* Matrix. *}
section show=$matrix.rows.sequential
<table class="list" cellspacing="0">
<tr>
<th class="tight"> </th>
section var=ColumnNames loop=$matrix.columns.sequential<th>$ColumnNames.item.name|wash( xhtml )</th>/section
</tr>
section var=Rows loop=$matrix.rows.sequential sequence=array( bglight, bgdark )
<tr class="$Rows.sequence">
{* Remove. *}
<td><input id="ezcoa-if ne( $attribute_base, 'ContentObjectAttribute' )$attribute_base-/if$attribute.contentclassattribute_id_$attribute.contentclass_attribute_identifier_remove_$Rows.index" class="ezcc-$attribute.object.content_class.identifier ezcca-$attribute.object.content_class.identifier_$attribute.contentclass_attribute_identifier" type="checkbox" name="$attribute_base_data_matrix_remove_$attribute.id[]" value="$Rows.index" title="'Select row for removal.'|i18n( 'design/standard/content/datatype' )" /></td>
{* Custom columns. *}
section var=Columns loop=$Rows.item.columns
<td><input id="ezcoa-if ne( $attribute_base, 'ContentObjectAttribute' )$attribute_base-/if$attribute.contentclassattribute_id_$attribute.contentclass_attribute_identifier_matrix_cell_$Rows.index_$Columns.index" class="box ezcc-$attribute.object.content_class.identifier ezcca-$attribute.object.content_class.identifier_$attribute.contentclass_attribute_identifier" type="text" name="$attribute_base_ezmatrix_cell_$attribute.id[]" value="$Columns.item|wash( xhtml )" /></td>
/section
</tr>Override them for one class attribute in an override.ini.append.php with Source=content/datatype/view/ezmatrix.tpl and a match on attribute_identifier (see A template override).
Related
Generated by ./console exp:help:examples from kernel/classes/datatypes/ezmatrix/ezmatrixtype.php, settings/content.ini, design/standard/templates/content/datatype/view/ezmatrix.tpl, design/standard/templates/content/datatype/edit/ezmatrix.tpl. Do not edit this page: change the source and generate again (how). Free documentation: GFDL 1.3 or later.