diff --git a/src/TableColumn/Generic.php b/src/TableColumn/Generic.php index 778da9061f..f724c28ad9 100644 --- a/src/TableColumn/Generic.php +++ b/src/TableColumn/Generic.php @@ -82,7 +82,7 @@ public function addPopup($popup = null, $icon = 'table-filter-off icon') { $id = $this->name.'_ac'; - $popup = $this->table->owner->add($popup ? $popup : 'Popup')->setHoverable(); + $popup = $this->table->owner->add($popup ?: 'Popup')->setHoverable(); $this->setHeaderPopup($icon, $id); @@ -125,10 +125,9 @@ public function setHeaderPopup($class, $id) */ public function setHeaderPopupIcon($icon) { - $id = $this->name.'_ac'; $this->headerActionTag = ['div', ['class'=>'atk-table-dropdown'], [ - ['i', ['id' => $id, 'class' => $icon.' icon']], + ['i', ['id' => $this->name.'_ac', 'class' => $icon.' icon']], ], ]; } @@ -145,16 +144,12 @@ public function setHeaderPopupIcon($icon) */ public function addDropdown($items, $fx, $icon = 'caret square down', $menuId = null) { - $menuITems = []; + $menuItems = []; foreach ($items as $key => $item) { - if (is_int($key)) { - $menuITems[] = ['name' => $item, 'value' => $item]; - } else { - $menuITems[] = ['name' => $key, 'value' => $item]; - } + $menuItems[] = ['name' => is_int($key) ? $item : $key, 'value' => $item]; } - $cb = $this->setHeaderDropdown($menuITems, $icon, $menuId); + $cb = $this->setHeaderDropdown($menuItems, $icon, $menuId); $cb->onSelectItem(function ($menu, $item) use ($fx) { return call_user_func($fx, $item, $menu); @@ -255,13 +250,11 @@ public function setAttr($attr, $value, $position = 'body') public function getTagAttributes($position, $attr = []) { // "all" applies on all positions - if (isset($this->attr['all'])) { - $attr = array_merge_recursive($attr, $this->attr['all']); - } - - // specific position classes - if (isset($this->attr[$position])) { - $attr = array_merge_recursive($attr, $this->attr[$position]); + // $position is for specific position classes + foreach (['all', $position] as $key) { + if (isset($this->attr[$key])) { + $attr = array_merge_recursive($attr, $this->attr[$key]); + } } return $attr; @@ -292,37 +285,38 @@ public function getTag($position, $value, $attr = []) * Provided with a field definition (from a model) will return a header * cell, fully formatted to be included in a Table. (). * - * @param \atk4\data\Field $f + * @param \atk4\data\Field $field + * @param mixed $value * * @return string */ - public function getHeaderCellHTML(\atk4\data\Field $f = null, $value = null) + public function getHeaderCellHTML(\atk4\data\Field $field = null, $value = null) { $attr = []; if (!$this->table) { - throw new \atk4\ui\Exception(['How $table could not be set??', 'f' => $f, 'value' => $value]); + throw new \atk4\ui\Exception(['How $table could not be set??', 'field' => $field, 'value' => $value]); } - if ($tag = $this->table->hook('getColumnHeaderCell', [$this, $f, $value])) { + if ($tag = $this->table->hook('getColumnHeaderCell', [$this, $field, $value])) { return $tag[0]; } - if ($f === null) { + if ($field === null) { return $this->getTag('head', $this->caption ?: '', $this->table->sortable ? ['class' => ['disabled']] : []); } // if $this->caption is empty, header caption will be overriden by linked field definition - $captionHtmlTag = ['div', ['class' => 'atk-table-column-header'], empty($this->caption) ? $f->getCaption() : $this->caption]; + $captionHtmlTag = ['div', ['class' => 'atk-table-column-header'], empty($this->caption) ? $field->getCaption() : $this->caption]; // If table is being sorted by THIS column, set the proper class $attr['data-column'] = $this->columnData; if ($this->table->sortable) { - $attr['data-sort'] = $f->short_name; - if ($this->table->sort_by === $f->short_name) { + $attr['data-sort'] = $field->short_name; + if ($this->table->sort_by === $field->short_name) { $captionHtmlTag[1]['class'] = $captionHtmlTag[1]['class'].' '.'sorted '.$this->table->sort_order; if ($this->table->sort_order === 'ascending') { - $attr['data-sort'] = '-'.$f->short_name; + $attr['data-sort'] = '-'.$field->short_name; } elseif ($this->table->sort_order === 'descending') { $attr['data-sort'] = ''; } @@ -346,14 +340,14 @@ public function getHeaderCellHTML(\atk4\data\Field $f = null, $value = null) /** * Return HTML for a total value of a specific field. * - * @param \atk4\data\Field $f + * @param \atk4\data\Field $field * @param mixed $value * * @return string */ - public function getTotalsCellHTML(\atk4\data\Field $f, $value) + public function getTotalsCellHTML(\atk4\data\Field $field, $value) { - return $this->getTag('foot', $this->app->ui_persistence->typecastSaveField($f, $value)); + return $this->getTag('foot', $this->app->ui_persistence->typecastSaveField($field, $value)); } /** @@ -368,13 +362,13 @@ public function getTotalsCellHTML(\atk4\data\Field $f, $value) * This method will be executed only once per table rendering, if you need to format data manually, * you should use $this->table->addHook('formatRow'); * - * @param \atk4\data\Field $f + * @param \atk4\data\Field $field * * @return string */ - public function getDataCellHTML(\atk4\data\Field $f = null, $extra_tags = []) + public function getDataCellHTML(\atk4\data\Field $field = null, $extra_tags = []) { - return $this->getTag('body', [$this->getDataCellTemplate($f)], $extra_tags); + return $this->getTag('body', [$this->getDataCellTemplate($field)], $extra_tags); } /** @@ -388,14 +382,14 @@ public function getDataCellHTML(\atk4\data\Field $f = null, $extra_tags = []) * applied to the same column. The first one to be applied is executed first, then * a subsequent ones are executed. * - * @param \atk4\data\Field $f + * @param \atk4\data\Field $field * * @return string */ - public function getDataCellTemplate(\atk4\data\Field $f = null) + public function getDataCellTemplate(\atk4\data\Field $field = null) { - if ($f) { - return '{$'.$f->short_name.'}'; + if ($field) { + return '{$'.$field->short_name.'}'; } else { return '{_$'.$this->short_name.'}'; }