Page MenuHomePhabricator

D14433.diff
No OneTemporary

D14433.diff

diff --git a/resources/celerity/map.php b/resources/celerity/map.php
--- a/resources/celerity/map.php
+++ b/resources/celerity/map.php
@@ -7,7 +7,7 @@
*/
return array(
'names' => array(
- 'core.pkg.css' => 'e94665e4',
+ 'core.pkg.css' => 'e4f1ea81',
'core.pkg.js' => '47dc9ebb',
'darkconsole.pkg.js' => 'e7393ebb',
'differential.pkg.css' => '2de124c9',
@@ -125,7 +125,7 @@
'rsrc/css/phui/phui-badge.css' => 'f25c3476',
'rsrc/css/phui/phui-box.css' => 'a5bb366d',
'rsrc/css/phui/phui-button.css' => '16020a60',
- 'rsrc/css/phui/phui-crumbs-view.css' => 'd842f867',
+ 'rsrc/css/phui/phui-crumbs-view.css' => '414406b5',
'rsrc/css/phui/phui-document-pro.css' => '4f2b42e3',
'rsrc/css/phui/phui-document.css' => 'f841ad0a',
'rsrc/css/phui/phui-feed-story.css' => 'b7b26d23',
@@ -779,7 +779,7 @@
'phui-calendar-day-css' => 'd1cf6f93',
'phui-calendar-list-css' => 'c1c7f338',
'phui-calendar-month-css' => '476be7e0',
- 'phui-crumbs-view-css' => 'd842f867',
+ 'phui-crumbs-view-css' => '414406b5',
'phui-document-view-css' => 'f841ad0a',
'phui-document-view-pro-css' => '4f2b42e3',
'phui-feed-story-css' => 'b7b26d23',
diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -3248,6 +3248,7 @@
'PhameBasicTemplateBlogSkin' => 'applications/phame/skins/PhameBasicTemplateBlogSkin.php',
'PhameBlog' => 'applications/phame/storage/PhameBlog.php',
'PhameBlogController' => 'applications/phame/controller/blog/PhameBlogController.php',
+ 'PhameBlogCreateCapability' => 'applications/phame/capability/PhameBlogCreateCapability.php',
'PhameBlogDeleteController' => 'applications/phame/controller/blog/PhameBlogDeleteController.php',
'PhameBlogEditController' => 'applications/phame/controller/blog/PhameBlogEditController.php',
'PhameBlogEditor' => 'applications/phame/editor/PhameBlogEditor.php',
@@ -7512,6 +7513,7 @@
'PhabricatorApplicationTransactionInterface',
),
'PhameBlogController' => 'PhameController',
+ 'PhameBlogCreateCapability' => 'PhabricatorPolicyCapability',
'PhameBlogDeleteController' => 'PhameBlogController',
'PhameBlogEditController' => 'PhameBlogController',
'PhameBlogEditor' => 'PhabricatorApplicationTransactionEditor',
diff --git a/src/applications/phame/application/PhabricatorPhameApplication.php b/src/applications/phame/application/PhabricatorPhameApplication.php
--- a/src/applications/phame/application/PhabricatorPhameApplication.php
+++ b/src/applications/phame/application/PhabricatorPhameApplication.php
@@ -102,4 +102,13 @@
);
}
+ protected function getCustomCapabilities() {
+ return array(
+ PhameBlogCreateCapability::CAPABILITY => array(
+ 'default' => PhabricatorPolicies::POLICY_USER,
+ 'caption' => pht('Default create policy for blogs.'),
+ ),
+ );
+ }
+
}
diff --git a/src/applications/phame/capability/PhameBlogCreateCapability.php b/src/applications/phame/capability/PhameBlogCreateCapability.php
new file mode 100644
--- /dev/null
+++ b/src/applications/phame/capability/PhameBlogCreateCapability.php
@@ -0,0 +1,16 @@
+<?php
+
+final class PhameBlogCreateCapability
+ extends PhabricatorPolicyCapability {
+
+ const CAPABILITY = 'phame.blog.default.create';
+
+ public function getCapabilityName() {
+ return pht('Can Create Blogs');
+ }
+
+ public function describeCapabilityRejection() {
+ return pht('You do not have permission to create a blog.');
+ }
+
+}
diff --git a/src/applications/phame/controller/PhameController.php b/src/applications/phame/controller/PhameController.php
--- a/src/applications/phame/controller/PhameController.php
+++ b/src/applications/phame/controller/PhameController.php
@@ -92,15 +92,22 @@
protected function buildApplicationCrumbs() {
$crumbs = parent::buildApplicationCrumbs();
+
+ $can_create = $this->hasApplicationCapability(
+ PhameBlogCreateCapability::CAPABILITY);
+
$crumbs->addAction(
id(new PHUIListItemView())
->setName(pht('New Blog'))
- ->setHref($this->getApplicationURI('/blog/new'))
- ->setIcon('fa-plus-square'));
+ ->setHref($this->getApplicationURI('/blog/new/'))
+ ->setIcon('fa-plus-square')
+ ->setDisabled(!$can_create)
+ ->setWorkflow(!$can_create));
+
$crumbs->addAction(
id(new PHUIListItemView())
->setName(pht('New Post'))
- ->setHref($this->getApplicationURI('/post/new'))
+ ->setHref($this->getApplicationURI('/post/new/'))
->setIcon('fa-pencil'));
return $crumbs;
}
diff --git a/src/applications/phame/controller/blog/PhameBlogEditController.php b/src/applications/phame/controller/blog/PhameBlogEditController.php
--- a/src/applications/phame/controller/blog/PhameBlogEditController.php
+++ b/src/applications/phame/controller/blog/PhameBlogEditController.php
@@ -30,6 +30,9 @@
$v_projects = array_reverse($v_projects);
} else {
+ $this->requireApplicationCapability(
+ PhameBlogCreateCapability::CAPABILITY);
+
$blog = PhameBlog::initializeNewBlog($viewer);
$submit_button = pht('Create Blog');
diff --git a/webroot/rsrc/css/phui/phui-crumbs-view.css b/webroot/rsrc/css/phui/phui-crumbs-view.css
--- a/webroot/rsrc/css/phui/phui-crumbs-view.css
+++ b/webroot/rsrc/css/phui/phui-crumbs-view.css
@@ -25,7 +25,8 @@
padding-right: 0;
}
-.phui-crumbs-view a.phui-crumbs-action-disabled {
+.phui-crumbs-view a.phui-crumbs-action-disabled,
+.phui-crumbs-view a.phui-crumbs-action-disabled .phui-icon-view {
color: {$lightgreytext};
}

File Metadata

Mime Type
text/plain
Expires
Sat, May 18, 8:26 AM (4 w, 1 d ago)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
6270837
Default Alt Text
D14433.diff (5 KB)

Event Timeline