mirror of
https://we.phorge.it/source/phorge.git
synced 2024-12-02 19:52:44 +01:00
0a62f13464
Summary: Ran `arc lint --apply-patches --everything` over rP, mainly to change double quotes to single quotes where appropriate. These changes also validate that the `ArcanistXHPASTLinter::LINT_DOUBLE_QUOTE` rule is working as expected. Test Plan: Eyeballed it. Reviewers: #blessed_reviewers, epriestley Reviewed By: #blessed_reviewers, epriestley Subscribers: epriestley, Korvin, hach-que Differential Revision: https://secure.phabricator.com/D9431
150 lines
3.6 KiB
PHP
150 lines
3.6 KiB
PHP
<?php
|
|
|
|
final class AphrontMultiColumnView extends AphrontView {
|
|
|
|
const GUTTER_SMALL = 'msr';
|
|
const GUTTER_MEDIUM = 'mmr';
|
|
const GUTTER_LARGE = 'mlr';
|
|
|
|
private $id;
|
|
private $columns = array();
|
|
private $fluidLayout = false;
|
|
private $fluidishLayout = false;
|
|
private $gutter;
|
|
private $border;
|
|
|
|
public function setID($id) {
|
|
$this->id = $id;
|
|
return $this;
|
|
}
|
|
|
|
public function getID() {
|
|
return $this->id;
|
|
}
|
|
|
|
public function addColumn(
|
|
$column,
|
|
$class = null,
|
|
$sigil = null,
|
|
$metadata = null) {
|
|
$this->columns[] = array(
|
|
'column' => $column,
|
|
'class' => $class,
|
|
'sigil' => $sigil,
|
|
'metadata' => $metadata);
|
|
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 ($this->fluidishLayout || $this->fluidLayout) {
|
|
// we only support seven columns for now for fluid views; see T4054
|
|
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();
|
|
$i = 0;
|
|
foreach ($this->columns as $column_data) {
|
|
$column_class = array('aphront-multi-column-column');
|
|
if ($this->gutter) {
|
|
$column_class[] = $this->gutter;
|
|
}
|
|
$outer_class = array('aphront-multi-column-column-outer');
|
|
if (++$i === count($this->columns)) {
|
|
$column_class[] = 'aphront-multi-column-column-last';
|
|
$outer_class[] = 'aphront-multi-colum-column-outer-last';
|
|
}
|
|
$column = $column_data['column'];
|
|
if ($column_data['class']) {
|
|
$outer_class[] = $column_data['class'];
|
|
}
|
|
$column_sigil = idx($column_data, 'sigil');
|
|
$column_metadata = idx($column_data, 'metadata');
|
|
$column_inner = javelin_tag(
|
|
'div',
|
|
array(
|
|
'class' => implode(' ', $column_class),
|
|
'sigil' => $column_sigil,
|
|
'meta' => $column_metadata),
|
|
$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',
|
|
'id' => $this->getID(),
|
|
),
|
|
$board);
|
|
}
|
|
}
|