Path: blob/master/src/applications/conpherence/controller/ConpherenceController.php
12256 views
<?php12abstract class ConpherenceController extends PhabricatorController {34private $conpherence;56public function setConpherence(ConpherenceThread $conpherence) {7$this->conpherence = $conpherence;8return $this;9}10public function getConpherence() {11return $this->conpherence;12}1314public function buildApplicationMenu() {15$nav = new PHUIListView();16$conpherence = $this->conpherence;1718// Local Links19if ($conpherence) {20$nav->addMenuItem(21id(new PHUIListItemView())22->setName(pht('Joined Rooms'))23->setType(PHUIListItemView::TYPE_LINK)24->setHref($this->getApplicationURI()));2526$nav->addMenuItem(27id(new PHUIListItemView())28->setName(pht('Edit Room'))29->setType(PHUIListItemView::TYPE_LINK)30->setHref(31$this->getApplicationURI('update/'.$conpherence->getID()).'/')32->setWorkflow(true));3334$nav->addMenuItem(35id(new PHUIListItemView())36->setName(pht('Add Participants'))37->setType(PHUIListItemView::TYPE_LINK)38->setHref('#')39->addSigil('conpherence-widget-adder')40->setMetadata(array('widget' => 'widgets-people')));41}4243// Global Links44$nav->newLabel(pht('Conpherence'));45$nav->newLink(46pht('New Room'),47$this->getApplicationURI('new/'));48$nav->newLink(49pht('Search Rooms'),50$this->getApplicationURI('search/'));5152return $nav;53}5455protected function buildHeaderPaneContent(56ConpherenceThread $conpherence) {57$viewer = $this->getViewer();58$header = null;59$id = $conpherence->getID();6061if ($id) {62$data = $conpherence->getDisplayData($this->getViewer());6364$header = id(new PHUIHeaderView())65->setViewer($viewer)66->setHeader($data['title'])67->setPolicyObject($conpherence)68->setImage($data['image']);6970if (strlen($data['topic'])) {71$topic = id(new PHUITagView())72->setName($data['topic'])73->setColor(PHUITagView::COLOR_VIOLET)74->setType(PHUITagView::TYPE_SHADE)75->addClass('conpherence-header-topic');76$header->addTag($topic);77}7879$can_edit = PhabricatorPolicyFilter::hasCapability(80$viewer,81$conpherence,82PhabricatorPolicyCapability::CAN_EDIT);8384if ($can_edit) {85$header->setImageURL(86$this->getApplicationURI("picture/{$id}/"));87}8889$participating = $conpherence->getParticipantIfExists($viewer->getPHID());9091$header->addActionItem(92id(new PHUIIconCircleView())93->setHref(94$this->getApplicationURI('edit/'.$conpherence->getID()).'/')95->setIcon('fa-pencil')96->addClass('hide-on-device')97->setColor('violet')98->setWorkflow(true));99100$header->addActionItem(101id(new PHUIIconCircleView())102->setHref($this->getApplicationURI("preferences/{$id}/"))103->setIcon('fa-gear')104->addClass('hide-on-device')105->setColor('pink')106->setWorkflow(true));107108$widget_key = PhabricatorConpherenceWidgetVisibleSetting::SETTINGKEY;109$widget_view = (bool)$viewer->getUserSetting($widget_key, false);110111Javelin::initBehavior(112'toggle-widget',113array(114'show' => (int)$widget_view,115'settingsURI' => '/settings/adjust/?key='.$widget_key,116));117118$header->addActionItem(119id(new PHUIIconCircleView())120->addSigil('conpherence-widget-toggle')121->setIcon('fa-group')122->setHref('#')123->addClass('conpherence-participant-toggle'));124125Javelin::initBehavior('conpherence-search');126127$header->addActionItem(128id(new PHUIIconCircleView())129->addSigil('conpherence-search-toggle')130->setIcon('fa-search')131->setHref('#')132->setColor('green')133->addClass('conpherence-search-toggle'));134135if (!$participating) {136$action = ConpherenceUpdateActions::JOIN_ROOM;137$uri = $this->getApplicationURI("update/{$id}/");138$button = phutil_tag(139'button',140array(141'type' => 'SUBMIT',142'class' => 'button button-green mlr',143),144pht('Join Room'));145146$hidden = phutil_tag(147'input',148array(149'type' => 'hidden',150'name' => 'action',151'value' => ConpherenceUpdateActions::JOIN_ROOM,152));153154$form = phabricator_form(155$viewer,156array(157'method' => 'POST',158'action' => (string)$uri,159),160array(161$hidden,162$button,163));164$header->addActionItem($form);165}166}167168return $header;169}170171public function buildSearchForm() {172$viewer = $this->getViewer();173$conpherence = $this->conpherence;174$name = $conpherence->getTitle();175176$bar = javelin_tag(177'input',178array(179'type' => 'text',180'id' => 'conpherence-search-input',181'name' => 'fulltext',182'class' => 'conpherence-search-input',183'sigil' => 'conpherence-search-input',184'placeholder' => pht('Search %s...', $name),185));186187$id = $conpherence->getID();188$form = phabricator_form(189$viewer,190array(191'method' => 'POST',192'action' => '/conpherence/threadsearch/'.$id.'/',193'sigil' => 'conpherence-search-form',194'class' => 'conpherence-search-form',195'id' => 'conpherence-search-form',196),197array(198$bar,199));200201$form_view = phutil_tag(202'div',203array(204'class' => 'conpherence-search-form-view',205),206$form);207208$results = phutil_tag(209'div',210array(211'id' => 'conpherence-search-results',212'class' => 'conpherence-search-results',213));214215$view = phutil_tag(216'div',217array(218'class' => 'conpherence-search-window',219),220array(221$form_view,222$results,223));224225return $view;226}227228}229230231