columns[] = $column; return $this; } public function setFluidlayout($layout) { $this->fluidLayout = $layout; return $this; } public function setFluidishLayout($layout) { $this->fluidLayout = true; $this->fluidishLayout = $layout; return $this; } public function setGutter($gutter) { $this->gutter = $gutter; return $this; } public function setBorder($border) { $this->border = $border; return $this; } public function render() { require_celerity_resource('aphront-multi-column-view-css'); $classes = array(); $classes[] = 'aphront-multi-column-inner'; $classes[] = 'grouped'; if (count($this->columns) > 7) { throw new Exception("No more than 7 columns per view."); } $classes[] = 'aphront-multi-column-'.count($this->columns).'-up'; $columns = array(); $column_class = array(); $column_class[] = 'aphront-multi-column-column'; $outer_class = array(); $outer_class[] = 'aphront-multi-column-column-outer'; if ($this->gutter) { $column_class[] = $this->gutter; } $i = 0; foreach ($this->columns as $column) { if (++$i === count($this->columns)) { $column_class[] = 'aphront-multi-column-column-last'; $outer_class[] = 'aphront-multi-colum-column-outer-last'; } $column_inner = phutil_tag( 'div', array( 'class' => implode(' ', $column_class) ), $column); $columns[] = phutil_tag( 'div', array( 'class' => implode(' ', $outer_class) ), $column_inner); } $view = phutil_tag( 'div', array( 'class' => implode(' ', $classes), ), array( $columns, )); $classes = array(); $classes[] = 'aphront-multi-column-outer'; if ($this->fluidLayout) { $classes[] = 'aphront-multi-column-fluid'; if ($this->fluidishLayout) { $classes[] = 'aphront-multi-column-fluidish'; } } else { $classes[] = 'aphront-multi-column-fixed'; } $board = phutil_tag( 'div', array( 'class' => implode(' ', $classes) ), $view); if ($this->border) { $board = id(new PHUIBoxView()) ->setBorder(true) ->appendChild($board) ->addPadding(PHUI::PADDING_MEDIUM_TOP) ->addPadding(PHUI::PADDING_MEDIUM_BOTTOM); } return phutil_tag( 'div', array( 'class' => 'aphront-multi-column-view' ), $board); } }