public function render()
 {
     $views = array();
     $last = null;
     $group = array();
     $groups = array();
     $has_description_transaction = false;
     foreach ($this->transactions as $transaction) {
         if ($transaction->getTransactionType() == ManiphestTransactionType::TYPE_DESCRIPTION) {
             $has_description_transaction = true;
         }
         if ($last === null) {
             $last = $transaction;
             $group[] = $transaction;
             continue;
         } else {
             if ($last->canGroupWith($transaction)) {
                 $group[] = $transaction;
                 if ($transaction->hasComments()) {
                     $last = $transaction;
                 }
             } else {
                 $groups[] = $group;
                 $last = $transaction;
                 $group = array($transaction);
             }
         }
     }
     if ($group) {
         $groups[] = $group;
     }
     if ($has_description_transaction) {
         require_celerity_resource('differential-changeset-view-css');
         require_celerity_resource('syntax-highlighting-css');
         $whitespace_mode = DifferentialChangesetParser::WHITESPACE_SHOW_ALL;
         Javelin::initBehavior('differential-show-more', array('uri' => '/maniphest/task/descriptionchange/', 'whitespace' => $whitespace_mode));
     }
     $sequence = 1;
     foreach ($groups as $group) {
         $view = new ManiphestTransactionDetailView();
         $view->setUser($this->user);
         $view->setAuxiliaryFields($this->getAuxiliaryFields());
         $view->setTransactionGroup($group);
         $view->setHandles($this->handles);
         $view->setMarkupEngine($this->markupEngine);
         $view->setPreview($this->preview);
         $view->setCommentNumber($sequence++);
         $views[] = $view->render();
     }
     return '<div class="maniphest-transaction-list-view">' . implode("\n", $views) . '</div>';
 }
 public function render()
 {
     $views = array();
     $last = null;
     $group = array();
     $groups = array();
     foreach ($this->transactions as $transaction) {
         if ($last === null) {
             $last = $transaction;
             $group[] = $transaction;
             continue;
         } else {
             if ($last->canGroupWith($transaction)) {
                 $group[] = $transaction;
                 if ($transaction->hasComments()) {
                     $last = $transaction;
                 }
             } else {
                 $groups[] = $group;
                 $last = $transaction;
                 $group = array($transaction);
             }
         }
     }
     if ($group) {
         $groups[] = $group;
     }
     $sequence = 1;
     foreach ($groups as $group) {
         $view = new ManiphestTransactionDetailView();
         $view->setUser($this->user);
         $view->setTransactionGroup($group);
         $view->setHandles($this->handles);
         $view->setMarkupEngine($this->markupEngine);
         $view->setPreview($this->preview);
         $view->setCommentNumber($sequence++);
         $views[] = $view->render();
     }
     return '<div class="maniphest-transaction-list-view">' . implode("\n", $views) . '</div>';
 }