mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-15 03:12:41 +01:00
368657a570
Summary: Okay, just a forewarning, this is horrible right now. But I think it's an okay enough start that it's worth sending what I've done. This rips out the old Phriction breadcrumb UI and replaces it with the new one that other apps have been starting to use. Test Plan: Looked at a bunch of Phriction pages. Reviewers: epriestley CC: aran, Korvin Differential Revision: https://secure.phabricator.com/D4183
102 lines
2.4 KiB
PHP
102 lines
2.4 KiB
PHP
<?php
|
|
|
|
/**
|
|
* @group phriction
|
|
*/
|
|
final class PhrictionDocument extends PhrictionDAO
|
|
implements PhabricatorPolicyInterface {
|
|
|
|
protected $id;
|
|
protected $phid;
|
|
protected $slug;
|
|
protected $depth;
|
|
protected $contentID;
|
|
protected $status;
|
|
|
|
private $contentObject;
|
|
|
|
public function getConfiguration() {
|
|
return array(
|
|
self::CONFIG_AUX_PHID => true,
|
|
self::CONFIG_TIMESTAMPS => false,
|
|
) + parent::getConfiguration();
|
|
}
|
|
|
|
public function generatePHID() {
|
|
return PhabricatorPHID::generateNewPHID(
|
|
PhabricatorPHIDConstants::PHID_TYPE_WIKI);
|
|
}
|
|
|
|
public static function getSlugURI($slug, $type = 'document') {
|
|
static $types = array(
|
|
'document' => '/w/',
|
|
'history' => '/phriction/history/',
|
|
);
|
|
|
|
if (empty($types[$type])) {
|
|
throw new Exception("Unknown URI type '{$type}'!");
|
|
}
|
|
|
|
$prefix = $types[$type];
|
|
|
|
if ($slug == '/') {
|
|
return $prefix;
|
|
} else {
|
|
return $prefix.$slug;
|
|
}
|
|
}
|
|
|
|
public function setSlug($slug) {
|
|
$this->slug = PhabricatorSlug::normalize($slug);
|
|
$this->depth = PhabricatorSlug::getDepth($slug);
|
|
return $this;
|
|
}
|
|
|
|
public function attachContent(PhrictionContent $content) {
|
|
$this->contentObject = $content;
|
|
return $this;
|
|
}
|
|
|
|
public function getContent() {
|
|
if (!$this->contentObject) {
|
|
throw new Exception("Attach content with attachContent() first.");
|
|
}
|
|
return $this->contentObject;
|
|
}
|
|
|
|
public static function isProjectSlug($slug) {
|
|
$slug = PhabricatorSlug::normalize($slug);
|
|
$prefix = 'projects/';
|
|
if ($slug == $prefix) {
|
|
// The 'projects/' document is not itself a project slug.
|
|
return false;
|
|
}
|
|
return !strncmp($slug, $prefix, strlen($prefix));
|
|
}
|
|
|
|
public static function getProjectSlugIdentifier($slug) {
|
|
if (!self::isProjectSlug($slug)) {
|
|
throw new Exception("Slug '{$slug}' is not a project slug!");
|
|
}
|
|
|
|
$slug = PhabricatorSlug::normalize($slug);
|
|
$parts = explode('/', $slug);
|
|
return $parts[1].'/';
|
|
}
|
|
|
|
// TODO: Customize this? Copypasta from PhabricatorPaste.
|
|
public function getCapabilities() {
|
|
return array(
|
|
PhabricatorPolicyCapability::CAN_VIEW,
|
|
PhabricatorPolicyCapability::CAN_EDIT,
|
|
);
|
|
}
|
|
|
|
public function getPolicy($capability) {
|
|
return PhabricatorPolicies::POLICY_USER;
|
|
}
|
|
|
|
public function hasAutomaticCapability($capability, PhabricatorUser $user) {
|
|
return false;
|
|
}
|
|
}
|