Grouping attributes into two columns (ATK 6.2 - 6.3)
From Achievo/ATK Wiki
|
ATK Howto: Grouping attributes into two columns (ATK 6.2 - 6.3)
|
Requirements
ATK 6.2 - 6.3
Summary
As of the ATK 6.2 nightly after July 29, 2008, there is a new way to add attributes into two columns. This howto walks you through the process.
I would like to commend [Rik http://forum.achievo.org/forum/viewtopic.php?t=10341&highlight=column] for bringing this great contribution to the ATK community.
Procedures
By default attributes are position on one single column in ATK. To position attributes on the right column you will need to call the following new method within your node:
$this->setColumnAttribs($attributes=array())
This method will position any provided attributes to the right column of the node, to make a two column layout.
Assuming you had the following node:
function employee() { $this->atkNode("employee", NF_ADD_LINK);// $this->add(new atkAttribute("id", AF_AUTOKEY)); $this->add(new atkAttribute("name", AF_OBLIGATORY|AF_UNIQUE|AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("department_id","lesson3.department", AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("manager_id","lesson3.employee", AF_SEARCHABLE|AF_RELATION_AUTOCOMPLETE)); $this->add(new atkDateAttribute("hiredate")); $this->add(new atkNumberAttribute("salary", AF_TOTAL)); $this->add(new atkTextAttribute("notes", 0, AF_HIDE_LIST)); $this->setOrder("name"); $this->setIndex("name"); $this->setTable("lesson3_employee"); }
To display the attributes, name, salary and hiredate on the right column, you would need to apply the following to your node:
$this->setColumnAttribs(array("name","salary","hiredate"));
So your final code would look as follows:
function employee() { $this->atkNode("employee", NF_ADD_LINK);// $this->add(new atkAttribute("id", AF_AUTOKEY)); $this->add(new atkAttribute("name", AF_OBLIGATORY|AF_UNIQUE|AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("department_id","lesson3.department", AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("manager_id","lesson3.employee", AF_SEARCHABLE|AF_RELATION_AUTOCOMPLETE)); $this->add(new atkDateAttribute("hiredate")); $this->add(new atkNumberAttribute("salary", AF_TOTAL)); $this->add(new atkTextAttribute("notes", 0, AF_HIDE_LIST)); $this->setColumnAttribs(array("name","salary","hiredate")); // places name, salary and hiredate on the right column $this->setOrder("name"); $this->setIndex("name"); $this->setTable("lesson3_employee"); }
Below is an additional example with other options to display other fields on the right column:
function employee() { $this->atkNode("employee", NF_ADD_LINK);// $this->add(new atkAttribute("id", AF_AUTOKEY)); $this->add(new atkAttribute("name", AF_OBLIGATORY|AF_UNIQUE|AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("department_id","lesson3.department", AF_SEARCHABLE)); $this->add(new atkManyToOneRelation("manager_id","lesson3.employee", AF_SEARCHABLE|AF_RELATION_AUTOCOMPLETE)); $this->add(new atkDateAttribute("hiredate")); $this->add(new atkNumberAttribute("salary", AF_TOTAL)); $this->add(new atkTextAttribute("notes", 0, AF_HIDE_LIST)); // $this->setColumnAttribs(array("name","salary","hiredate")); // places name, salary and hiredate on the right column $this->setColumnAttribs(array("name","department_id")); // places name and department_id on the right column // $this->setColumnAttribs(array("manager_id","hiredate","salary","notes")); // places manager_id, hiredate, salary and notes on the right column // $this->setColumnAttribs(array("salary","notes")); // place salary and notes on right column $this->setOrder("name"); $this->setIndex("name"); $this->setTable("lesson3_employee"); }
Until next time,
[Jorge Garifuna http://www.GariDigital.com]