protected function buildPasteInfoDictionary(PhabricatorPaste $paste) { $content = null; $file = id(new PhabricatorFile())->loadOneWhere('phid = %s', $paste->getFilePHID()); if ($file) { $content = $file->loadFileData(); } return array('id' => $paste->getID(), 'objectName' => 'P' . $paste->getID(), 'phid' => $paste->getPHID(), 'authorPHID' => $paste->getAuthorPHID(), 'filePHID' => $paste->getFilePHID(), 'title' => $paste->getTitle(), 'dateCreated' => $paste->getDateCreated(), 'language' => $paste->getLanguage(), 'uri' => PhabricatorEnv::getProductionURI('/P' . $paste->getID()), 'parentPHID' => $paste->getParentPHID(), 'content' => $content); }
public function buildSideNavView(PhabricatorPaste $paste = null) { $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI('filter/'))); if ($paste) { $nav->addFilter('paste', 'P' . $paste->getID(), '/P' . $paste->getID()); $nav->addSpacer(); } $nav->addLabel('Create'); $nav->addFilter('create', 'New Paste'); $nav->addSpacer(); $nav->addLabel('Pastes'); $nav->addFilter('my', 'My Pastes'); $nav->addFilter('all', 'All Pastes'); return $nav; }
public function buildSideNavView(PhabricatorPaste $paste = null) { $user = $this->getRequest()->getUser(); $nav = new AphrontSideNavFilterView(); $nav->setBaseURI(new PhutilURI($this->getApplicationURI('filter/'))); if ($paste) { $nav->addFilter('paste', 'P' . $paste->getID(), '/P' . $paste->getID()); $nav->addSpacer(); } $nav->addLabel('Create'); $nav->addFilter('edit', 'New Paste', $this->getApplicationURI(), $relative = false, $class = $user->isLoggedIn() ? null : 'disabled'); $nav->addSpacer(); $nav->addLabel('Pastes'); if ($user->isLoggedIn()) { $nav->addFilter('my', 'My Pastes'); } $nav->addFilter('all', 'All Pastes'); return $nav; }
public function processRequest() { $request = $this->getRequest(); $user = $request->getUser(); $paste = new PhabricatorPaste(); $error_view = null; $e_text = true; $fork = $request->getInt('fork'); $paste_text = null; $paste_parent = null; if ($request->isFormPost()) { $errors = array(); $title = $request->getStr('title'); $paste_language = $request->getStr('language'); $text = $request->getStr('text'); if (!strlen($text)) { $e_text = 'Required'; $errors[] = 'The paste may not be blank.'; } else { $e_text = null; } $parent = id(new PhabricatorPaste())->loadOneWhere('phid = %s', $request->getStr('parent')); if ($parent) { $paste->setParentPHID($parent->getPHID()); } $paste->setTitle($title); if (!$errors) { if ($paste_language == 'infer') { // If it's infer, store an empty string. Otherwise, store the // language name. We do this so we can refer to 'infer' elsewhere // in the code (such as default value) while retaining backwards // compatibility with old posts with no language stored. $paste_language = ''; } $paste->setLanguage($paste_language); $paste_file = PhabricatorFile::newFromFileData($text, array('name' => $title, 'mime-type' => 'text/plain; charset=utf-8', 'authorPHID' => $user->getPHID())); $paste->setFilePHID($paste_file->getPHID()); $paste->setAuthorPHID($user->getPHID()); $paste->save(); return id(new AphrontRedirectResponse())->setURI('/P' . $paste->getID()); } else { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); $error_view->setTitle('A problem has occurred!'); } } else { if ($fork) { $fork_paste = id(new PhabricatorPaste())->load($fork); if ($fork_paste) { $paste->setTitle('Fork of ' . $fork_paste->getID() . ': ' . $fork_paste->getTitle()); $fork_file = id(new PhabricatorFile())->loadOneWhere('phid = %s', $fork_paste->getFilePHID()); $paste_text = $fork_file->loadFileData(); $paste_language = nonempty($fork_paste->getLanguage(), 'infer'); $paste_parent = $fork_paste->getPHID(); } } else { $paste_language = PhabricatorEnv::getEnvConfig('pygments.dropdown-default'); } } $form = new AphrontFormView(); $available_languages = PhabricatorEnv::getEnvConfig('pygments.dropdown-choices'); asort($available_languages); $language_select = id(new AphrontFormSelectControl())->setLabel('Language')->setName('language')->setValue($paste_language)->setOptions($available_languages); $form->setUser($user)->setAction($request->getRequestURI()->getPath())->addHiddenInput('parent', $paste_parent)->appendChild(id(new AphrontFormTextControl())->setLabel('Title')->setValue($paste->getTitle())->setName('title'))->appendChild($language_select)->appendChild(id(new AphrontFormTextAreaControl())->setLabel('Text')->setError($e_text)->setValue($paste_text)->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_TALL)->setName('text'))->appendChild(id(new AphrontFormSubmitControl())->addCancelButton('/paste/')->setValue('Create Paste')); $panel = new AphrontPanelView(); $panel->setWidth(AphrontPanelView::WIDTH_FORM); $panel->setHeader('Create a Paste'); $panel->appendChild($form); return $this->buildStandardPageResponse(array($error_view, $panel), array('title' => 'Paste Creation', 'tab' => 'create')); }
private function processCreateRequest() { $request = $this->getRequest(); $user = $request->getUser(); $fork = $request->getInt('fork'); $error_view = null; $e_text = true; $new_paste = new PhabricatorPaste(); $new_paste_text = null; $new_paste_language = PhabricatorEnv::getEnvConfig('pygments.dropdown-default'); if ($request->isFormPost()) { $errors = array(); $text = $request->getStr('text'); if (!strlen($text)) { $e_text = 'Required'; $errors[] = 'The paste may not be blank.'; } else { $e_text = null; } $parent_phid = $request->getStr('parent'); if ($parent_phid) { $parent = id(new PhabricatorPaste())->loadOneWhere('phid = %s', $parent_phid); if ($parent) { $new_paste->setParentPHID($parent->getPHID()); } } $title = $request->getStr('title'); $new_paste->setTitle($title); $new_paste_language = $request->getStr('language'); if (!$errors) { if ($new_paste_language == 'infer') { // If it's infer, store an empty string. Otherwise, store the // language name. We do this so we can refer to 'infer' elsewhere // in the code (such as default value) while retaining backwards // compatibility with old posts with no language stored. $new_paste_language = ''; } $new_paste->setLanguage($new_paste_language); $new_paste_file = PhabricatorFile::newFromFileData($text, array('name' => $title, 'mime-type' => 'text/plain; charset=utf-8', 'authorPHID' => $user->getPHID())); $new_paste->setFilePHID($new_paste_file->getPHID()); $new_paste->setAuthorPHID($user->getPHID()); $new_paste->save(); return id(new AphrontRedirectResponse())->setURI('/P' . $new_paste->getID()); } else { $error_view = new AphrontErrorView(); $error_view->setErrors($errors); $error_view->setTitle('A problem has occurred!'); } } else { if ($fork) { $fork_paste = id(new PhabricatorPaste())->load($fork); if ($fork_paste) { $new_paste->setTitle('Fork of ' . $fork_paste->getID() . ': ' . $fork_paste->getTitle()); $fork_file = id(new PhabricatorFile())->loadOneWhere('phid = %s', $fork_paste->getFilePHID()); $new_paste_text = $fork_file->loadFileData(); $new_paste_language = nonempty($fork_paste->getLanguage(), 'infer'); $new_paste->setParentPHID($fork_paste->getPHID()); } } } $this->setErrorView($error_view); $this->setErrorText($e_text); $this->setPasteText($new_paste_text); $new_paste->setLanguage($new_paste_language); $this->setPaste($new_paste); }
private function buildActionView(PhabricatorPaste $paste, PhabricatorFile $file) { return id(new PhabricatorActionListView())->addAction(id(new PhabricatorActionView())->setName(pht('Fork This Paste'))->setIcon('fork')->setHref($this->getApplicationURI('?fork=' . $paste->getID())))->addAction(id(new PhabricatorActionView())->setName(pht('View Raw File'))->setIcon('file')->setHref($file->getBestURI())); }
protected function buildPasteInfoDictionary(PhabricatorPaste $paste) { return array('id' => $paste->getID(), 'objectName' => 'P' . $paste->getID(), 'phid' => $paste->getPHID(), 'authorPHID' => $paste->getAuthorPHID(), 'filePHID' => $paste->getFilePHID(), 'title' => $paste->getTitle(), 'dateCreated' => $paste->getDateCreated(), 'language' => $paste->getLanguage(), 'uri' => PhabricatorEnv::getProductionURI('/P' . $paste->getID()), 'parentPHID' => $paste->getParentPHID(), 'content' => $paste->getRawContent()); }
private function getContentCacheKey(PhabricatorPaste $paste) { return implode(':', array('P' . $paste->getID(), $paste->getFilePHID(), $paste->getLanguage())); }
private function buildHeaderView(PhabricatorPaste $paste) { return id(new PhabricatorHeaderView())->setObjectName('P' . $paste->getID())->setHeader($paste->getTitle()); }
private function getSnippetCacheKey(PhabricatorPaste $paste) { return implode(':', array('P' . $paste->getID(), $paste->getFilePHID(), $paste->getLanguage(), 'snippet', PhabricatorHash::digestForIndex($paste->getTitle()))); }