Source of file TableField.php
Size: 4,625 Bytes - Last Modified: 2021-12-23T10:00:38+00:00
/var/www/docs.ssmods.com/process/src/code/fields/TableField.php
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170 | <?php /** * TableField - display a table in the cms * Serves as base implementation of AppendGridField * * @author lekoala */ class TableField extends TableFieldCommon { const KEY_REQUIRED = 'required'; public function getColumnRequired($column) { return $this->getColumnProperty($column, self::KEY_REQUIRED); } public function setColumnRequired($column, $req) { return $this->setColumnProperty($column, self::KEY_REQUIRED, $req); } public function getColumnsRequired() { return $this->getProperty(self::KEY_REQUIRED); } public function setColumnsRequired($required) { $req = array(); foreach ($required as $k => $v) { if (is_int($k)) { $req[$v] = 1; } else { $req[$k] = 1; } } return $this->setProperty(self::KEY_REQUIRED, $req); } /** * Return an array list of columns * * @return \ArrayList */ public function ColumnsList() { $list = new ArrayList(); foreach ($this->columns as $key => $column) { $header = $this->array_get($column, self::KEY_HEADER); $required = $this->array_get($column, self::KEY_REQUIRED); $type = $this->array_get($column, self::KEY_TYPE, self::TYPE_TEXT); $values = $this->array_get($column, self::KEY_OPTIONS); $valuesList = null; $size = null; if ($type == self::TYPE_CURRENCY) { $type = 'text'; $size = 7; } if ($values && is_array($values)) { $valuesList = new ArrayList(); foreach ($values as $k => $v) { $valuesList->push(new ArrayData(array('Name' => $k, 'Value' => $v))); } } $rowData = array( 'Key' => $key, 'Size' => $size, 'Header' => $header, 'Values' => $valuesList, 'Type' => $type, 'Required' => $required ? 'true' : 'false' ); $list->push(new ArrayData($rowData)); } return $list; } public function DataList() { $list = new ArrayList(); if (!$this->value) { return $list; } $val = $this->value; $cols = array_keys($this->columns); $subcols = array_keys($this->subColumns); $i = 0; foreach ($val as $data) { $i++; $arr = $data; if (is_object($arr)) { $arr = get_object_vars($arr); } $rows = new ArrayList(); $subcolumnsToAdd = array(); $subcolumnsHaveValues = false; foreach ($arr as $k => $v) { if (in_array($k, $subcols)) { if ($v) { $subcolumnsHaveValues = true; } $subcolumnsToAdd[] = array( 'Name' => $k, 'Label' => $this->subColumns[$k][self::KEY_HEADER], 'Value' => $v ); } // Ignore unknown columns if (!in_array($k, $cols)) { continue; } $rows->push(new ArrayData(array( 'Name' => $k, 'Value' => $v ))); } $list->push(new ArrayData(array( 'ID' => $i, 'Rows' => $rows ))); foreach ($subcolumnsToAdd as $subcolumnToAdd) { $list->push(new ArrayData(array( 'ID' => $i, 'SubColumn' => 1, 'SubcolumnsHaveValues' => $subcolumnsHaveValues, 'ColSpan' => $rows->count(), 'Rows' => new ArrayData($subcolumnToAdd) ))); } } return $list; } public function Field($properties = array()) { if (!$this->isReadonly()) { FormExtraJquery::include_jquery(); if ($this->requireAccounting) { FormExtraJquery::include_accounting(); } Requirements::javascript(FORM_EXTRAS_PATH.'/javascript/TableField.js'); } return parent::Field($properties); } } class TableField_ReadOnly extends TableField { protected $readonly = true; } |