/** * @test */ public function recursivelyFilterReturnsCorrectComponents() { $collection = new Collection(); $widget1 = new Widget\Widget(); $widget2 = new Widget\Widget(); $collection[0] = $widget1; $childCollection = new Collection(); $widget1->addCollection('widgets', $childCollection); $childCollection[0] = $widget2; $p = function () { return true; }; $widgets = $collection->recursivelyFilter($p); $expected = array($widget1, $widget2); $this->assertEquals($expected, $widgets); }
public function addWidget($name, $type, array $values = array()) { // Create the widget $widget = new Widget(); $widget->setId($this->id); $widget->setCollectionName($this->collectionName); $widget->setName($name); $widget->setType(strtolower($type)); $widget->setPosition(count($this->collection)); $widget->setValues($values); $widget->setClassName(str_replace('widget.', '', strtolower($type))); if ($this->parent !== null && $this->parent->getType() == 'widget.responsivecolumns') { $this->parent->setValues(array_merge($this->parent->getValues(), array('isEmpty' => 0))); } // Append the widget to the zone's collection $this->collection[count($this->collection)] = $widget; return $widget; }
public function __construct($columns, Widget $widget) { // Construct an ID to be used by the column widget's collections $idPrefix = $widget->getId() . '-' . $widget->getCollectionName() . '__' . $widget->getName(); $zones = $widget->getCollection('zones'); // Add column collections to the widget for ($column = 0; $column < $columns; ++$column) { $name = 'column' . ($column > 0 ? $column : ''); $id = $idPrefix . '-zones__' . $name; // Add a column widget $zone = new Widget(); $zone->setId($idPrefix); $zone->setCollectionName('zones'); $zone->setName($name); $zone->setType('Widget.Columns.Column'); $zone->setPosition($column); $zones[$column] = $zone; $collection = new Collection(); $zone->addCollection('widgets', $collection); $this->columns[] = new CollectionBuilder($id, 'widgets', $collection, $widget); } }