[ Index ]

PHP Cross Reference of Phabricator

title

Body

[close]

/src/applications/conpherence/controller/ -> ConpherenceController.php (source)

   1  <?php
   2  
   3  abstract class ConpherenceController extends PhabricatorController {
   4  
   5    private $conpherences;
   6  
   7    public function buildApplicationMenu() {
   8      $nav = new PHUIListView();
   9  
  10      $nav->newLink(
  11        pht('New Message'),
  12        $this->getApplicationURI('new/'));
  13  
  14      $nav->addMenuItem(
  15        id(new PHUIListItemView())
  16        ->setName(pht('Add Participants'))
  17        ->setType(PHUIListItemView::TYPE_LINK)
  18        ->setHref('#')
  19        ->addSigil('conpherence-widget-adder')
  20        ->setMetadata(array('widget' => 'widgets-people')));
  21  
  22      $nav->addMenuItem(
  23        id(new PHUIListItemView())
  24        ->setName(pht('New Calendar Item'))
  25        ->setType(PHUIListItemView::TYPE_LINK)
  26        ->setHref('/calendar/event/create/')
  27        ->addSigil('conpherence-widget-adder')
  28        ->setMetadata(array('widget' => 'widgets-calendar')));
  29  
  30      return $nav;
  31    }
  32  
  33    public function buildApplicationCrumbs() {
  34      $crumbs = parent::buildApplicationCrumbs();
  35  
  36      $crumbs
  37        ->addAction(
  38          id(new PHUIListItemView())
  39          ->setName(pht('New Message'))
  40          ->setHref($this->getApplicationURI('new/'))
  41          ->setIcon('fa-plus-square')
  42          ->setWorkflow(true))
  43        ->addAction(
  44          id(new PHUIListItemView())
  45          ->setName(pht('Thread'))
  46          ->setHref('#')
  47          ->setIcon('fa-bars')
  48          ->setStyle('display: none;')
  49          ->addClass('device-widgets-selector')
  50          ->addSigil('device-widgets-selector'));
  51      return $crumbs;
  52    }
  53  
  54    protected function buildHeaderPaneContent(ConpherenceThread $conpherence) {
  55      $crumbs = $this->buildApplicationCrumbs();
  56      if ($conpherence->getTitle()) {
  57        $title = $conpherence->getTitle();
  58      } else {
  59        $title = pht('[No Title]');
  60      }
  61      $crumbs->addCrumb(
  62        id(new PhabricatorCrumbView())
  63        ->setName($title)
  64        ->setHref($this->getApplicationURI('update/'.$conpherence->getID().'/'))
  65        ->setWorkflow(true));
  66  
  67      return hsprintf(
  68        '%s',
  69        array(
  70          phutil_tag(
  71            'div',
  72            array(
  73              'class' => 'header-loading-mask',
  74            ),
  75            ''),
  76          $crumbs,
  77        ));
  78    }
  79  
  80    protected function renderConpherenceTransactions(
  81      ConpherenceThread $conpherence) {
  82  
  83      $user = $this->getRequest()->getUser();
  84      $transactions = $conpherence->getTransactions();
  85      $oldest_transaction_id = 0;
  86      $too_many = ConpherenceThreadQuery::TRANSACTION_LIMIT + 1;
  87      if (count($transactions) == $too_many) {
  88        $last_transaction = end($transactions);
  89        unset($transactions[$last_transaction->getID()]);
  90        $oldest_transaction = end($transactions);
  91        $oldest_transaction_id = $oldest_transaction->getID();
  92      }
  93      $transactions = array_reverse($transactions);
  94      $handles = $conpherence->getHandles();
  95      $rendered_transactions = array();
  96      $engine = id(new PhabricatorMarkupEngine())
  97        ->setViewer($user);
  98      foreach ($transactions as $key => $transaction) {
  99        if ($transaction->shouldHide()) {
 100          unset($transactions[$key]);
 101          continue;
 102        }
 103        if ($transaction->getComment()) {
 104          $engine->addObject(
 105            $transaction->getComment(),
 106            PhabricatorApplicationTransactionComment::MARKUP_FIELD_COMMENT);
 107        }
 108      }
 109      $engine->process();
 110      // we're going to insert a dummy date marker transaction for breaks
 111      // between days. some setup required!
 112      $previous_transaction = null;
 113      $date_marker_transaction = id(new ConpherenceTransaction())
 114        ->setTransactionType(ConpherenceTransactionType::TYPE_DATE_MARKER)
 115        ->makeEphemeral();
 116      $date_marker_transaction_view = id(new ConpherenceTransactionView())
 117        ->setUser($user)
 118        ->setConpherenceTransaction($date_marker_transaction)
 119        ->setHandles($handles)
 120        ->setMarkupEngine($engine);
 121      foreach ($transactions as $transaction) {
 122        if ($previous_transaction) {
 123          $previous_day = phabricator_format_local_time(
 124            $previous_transaction->getDateCreated(),
 125            $user,
 126            'Ymd');
 127          $current_day = phabricator_format_local_time(
 128            $transaction->getDateCreated(),
 129            $user,
 130            'Ymd');
 131          // date marker transaction time!
 132          if ($previous_day != $current_day) {
 133            $date_marker_transaction->setDateCreated(
 134              $transaction->getDateCreated());
 135            $rendered_transactions[] = $date_marker_transaction_view->render();
 136          }
 137        }
 138        $rendered_transactions[] = id(new ConpherenceTransactionView())
 139          ->setUser($user)
 140          ->setConpherenceTransaction($transaction)
 141          ->setHandles($handles)
 142          ->setMarkupEngine($engine)
 143          ->render();
 144        $previous_transaction = $transaction;
 145      }
 146      $latest_transaction_id = $transaction->getID();
 147  
 148      return array(
 149        'transactions' => $rendered_transactions,
 150        'latest_transaction_id' => $latest_transaction_id,
 151        'oldest_transaction_id' => $oldest_transaction_id,
 152      );
 153    }
 154  
 155  }


Generated: Sun Nov 30 09:20:46 2014 Cross-referenced by PHPXref 0.7.1