Page Menu
Home
Phabricator
Search
Configure Global Search
Log In
Files
F15477149
D9710.id23317.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
12 KB
Referenced Files
None
Subscribers
None
D9710.id23317.diff
View Options
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' => 'dc953154',
+ 'core.pkg.css' => '666a2e5c',
'core.pkg.js' => '8c184823',
'darkconsole.pkg.js' => 'df001cab',
'differential.pkg.css' => '4a93db37',
@@ -142,7 +142,7 @@
'rsrc/css/phui/phui-remarkup-preview.css' => '19ad512b',
'rsrc/css/phui/phui-spacing.css' => '042804d6',
'rsrc/css/phui/phui-status.css' => '2f562399',
- 'rsrc/css/phui/phui-tag-view.css' => '020d419b',
+ 'rsrc/css/phui/phui-tag-view.css' => '92759f81',
'rsrc/css/phui/phui-text.css' => '23e9b4b7',
'rsrc/css/phui/phui-timeline-view.css' => 'bbd990d0',
'rsrc/css/phui/phui-workboard-view.css' => '2bf82d00',
@@ -787,7 +787,7 @@
'phui-remarkup-preview-css' => '19ad512b',
'phui-spacing-css' => '042804d6',
'phui-status-list-view-css' => '2f562399',
- 'phui-tag-view-css' => '020d419b',
+ 'phui-tag-view-css' => '92759f81',
'phui-text-css' => '23e9b4b7',
'phui-timeline-view-css' => 'bbd990d0',
'phui-workboard-view-css' => '2bf82d00',
diff --git a/resources/sql/autopatches/20140624.projcolor.1.sql b/resources/sql/autopatches/20140624.projcolor.1.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140624.projcolor.1.sql
@@ -0,0 +1,2 @@
+ALTER TABLE {$NAMESPACE}_project.project
+ ADD iconColor VARCHAR(32) NOT NULL COLLATE utf8_bin;
diff --git a/resources/sql/autopatches/20140624.projcolor.2.sql b/resources/sql/autopatches/20140624.projcolor.2.sql
new file mode 100644
--- /dev/null
+++ b/resources/sql/autopatches/20140624.projcolor.2.sql
@@ -0,0 +1,2 @@
+UPDATE {$NAMESPACE}_project.project
+ SET iconColor = 'bluegrey' WHERE iconColor = '';
diff --git a/src/applications/phid/PhabricatorObjectHandle.php b/src/applications/phid/PhabricatorObjectHandle.php
--- a/src/applications/phid/PhabricatorObjectHandle.php
+++ b/src/applications/phid/PhabricatorObjectHandle.php
@@ -11,6 +11,7 @@
private $title;
private $imageURI;
private $icon;
+ private $iconColor;
private $timestamp;
private $status = PhabricatorObjectHandleStatus::STATUS_OPEN;
private $complete;
@@ -30,7 +31,23 @@
return $this->getTypeIcon();
}
+ public function setIconColor($color) {
+ static $colors;
+ if (!$colors) {
+ $colors = array_fuse(array_keys(PHUIIconView::getColorMap()));
+ }
+
+ if (isset($colors[$color])) {
+ $this->iconColor = $color;
+ }
+
+ return $this;
+ }
+
public function getIconColor() {
+ if ($this->iconColor) {
+ return $this->iconColor;
+ }
return 'bluegrey';
}
diff --git a/src/applications/project/controller/PhabricatorProjectEditIconController.php b/src/applications/project/controller/PhabricatorProjectEditIconController.php
--- a/src/applications/project/controller/PhabricatorProjectEditIconController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditIconController.php
@@ -30,11 +30,20 @@
$edit_uri = $this->getApplicationURI('edit/'.$project->getID().'/');
if ($request->isFormPost()) {
+ $xactions = array();
+
$v_icon = $request->getStr('icon');
+ $v_icon_color = $request->getStr('color');
+
$type_icon = PhabricatorProjectTransaction::TYPE_ICON;
- $xactions = array(id(new PhabricatorProjectTransaction())
+ $xactions[] = id(new PhabricatorProjectTransaction())
->setTransactionType($type_icon)
- ->setNewValue($v_icon));
+ ->setNewValue($v_icon);
+
+ $type_icon_color = PhabricatorProjectTransaction::TYPE_ICONCOLOR;
+ $xactions[] = id(new PhabricatorProjectTransaction())
+ ->setTransactionType($type_icon_color)
+ ->setNewValue($v_icon_color);
$editor = id(new PhabricatorProjectTransactionEditor())
->setActor($viewer)
@@ -47,6 +56,14 @@
return id(new AphrontReloadResponse())->setURI($edit_uri);
}
+ $color_form = id(new AphrontFormView())
+ ->appendChild(
+ id(new AphrontFormSelectControl())
+ ->setLabel(pht('Color'))
+ ->setName('color')
+ ->setValue($project->getIconColor())
+ ->setOptions(PHUIIconView::getColorMap()));
+
require_celerity_resource('project-icon-css');
Javelin::initBehavior('phabricator-tooltips');
@@ -55,7 +72,7 @@
$buttons = array();
foreach ($project_icons as $icon => $label) {
$view = id(new PHUIIconView())
- ->setIconFont($icon.' bluegrey');
+ ->setIconFont($icon.' '.$project->getIconColor());
$aural = javelin_tag(
'span',
@@ -66,10 +83,8 @@
if ($icon == $project->getIcon()) {
$class_extra = ' selected';
- $tip = $label.pht(' - selected');
} else {
$class_extra = null;
- $tip = $label;
}
$buttons[] = javelin_tag(
@@ -81,7 +96,7 @@
'type' => 'submit',
'sigil' => 'has-tooltip',
'meta' => array(
- 'tip' => $tip,
+ 'tip' => $label,
)
),
array(
@@ -100,12 +115,14 @@
),
$buttons);
- $dialog = id(new AphrontDialogView())
- ->setUser($viewer)
+ $color_form->appendChild(
+ id(new AphrontFormMarkupControl())
+ ->setLabel(pht('Icon'))
+ ->setValue($buttons));
+
+ return $this->newDialog()
->setTitle(pht('Choose Project Icon'))
- ->appendChild($buttons)
+ ->appendChild($color_form->buildLayoutView())
->addCancelButton($edit_uri);
-
- return id(new AphrontDialogResponse())->setDialog($dialog);
}
}
diff --git a/src/applications/project/controller/PhabricatorProjectEditMainController.php b/src/applications/project/controller/PhabricatorProjectEditMainController.php
--- a/src/applications/project/controller/PhabricatorProjectEditMainController.php
+++ b/src/applications/project/controller/PhabricatorProjectEditMainController.php
@@ -145,6 +145,12 @@
$viewer,
$project);
+ $this->loadHandles(array($project->getPHID()));
+
+ $view->addProperty(
+ pht('Looks Like'),
+ $this->getHandle($project->getPHID())->renderTag());
+
$view->addProperty(
pht('Visible To'),
$descriptions[PhabricatorPolicyCapability::CAN_VIEW]);
diff --git a/src/applications/project/editor/PhabricatorProjectTransactionEditor.php b/src/applications/project/editor/PhabricatorProjectTransactionEditor.php
--- a/src/applications/project/editor/PhabricatorProjectTransactionEditor.php
+++ b/src/applications/project/editor/PhabricatorProjectTransactionEditor.php
@@ -16,6 +16,7 @@
$types[] = PhabricatorProjectTransaction::TYPE_STATUS;
$types[] = PhabricatorProjectTransaction::TYPE_IMAGE;
$types[] = PhabricatorProjectTransaction::TYPE_ICON;
+ $types[] = PhabricatorProjectTransaction::TYPE_ICONCOLOR;
return $types;
}
@@ -38,6 +39,8 @@
return $object->getProfileImagePHID();
case PhabricatorProjectTransaction::TYPE_ICON:
return $object->getIcon();
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
+ return $object->getIconColor();
}
return parent::getCustomTransactionOldValue($object, $xaction);
@@ -53,6 +56,7 @@
case PhabricatorProjectTransaction::TYPE_STATUS:
case PhabricatorProjectTransaction::TYPE_IMAGE:
case PhabricatorProjectTransaction::TYPE_ICON:
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
return $xaction->getNewValue();
}
@@ -79,6 +83,9 @@
case PhabricatorProjectTransaction::TYPE_ICON:
$object->setIcon($xaction->getNewValue());
return;
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
+ $object->setIconColor($xaction->getNewValue());
+ return;
case PhabricatorTransactions::TYPE_EDGE:
return;
case PhabricatorTransactions::TYPE_VIEW_POLICY:
@@ -181,6 +188,7 @@
case PhabricatorProjectTransaction::TYPE_STATUS:
case PhabricatorProjectTransaction::TYPE_IMAGE:
case PhabricatorProjectTransaction::TYPE_ICON:
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
return;
case PhabricatorTransactions::TYPE_EDGE:
$edge_type = $xaction->getMetadataValue('edge:type');
@@ -358,6 +366,7 @@
case PhabricatorProjectTransaction::TYPE_STATUS:
case PhabricatorProjectTransaction::TYPE_IMAGE:
case PhabricatorProjectTransaction::TYPE_ICON:
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
PhabricatorPolicyFilter::requireCapability(
$this->requireActor(),
$object,
diff --git a/src/applications/project/phid/PhabricatorProjectPHIDTypeProject.php b/src/applications/project/phid/PhabricatorProjectPHIDTypeProject.php
--- a/src/applications/project/phid/PhabricatorProjectPHIDTypeProject.php
+++ b/src/applications/project/phid/PhabricatorProjectPHIDTypeProject.php
@@ -50,6 +50,7 @@
$handle->setURI("/tag/{$slug}/");
$handle->setImageURI($project->getProfileImageURI());
$handle->setIcon($project->getIcon());
+ $handle->setIconColor($project->getIconColor());
if ($project->isArchived()) {
$handle->setStatus(PhabricatorObjectHandleStatus::STATUS_CLOSED);
diff --git a/src/applications/project/storage/PhabricatorProject.php b/src/applications/project/storage/PhabricatorProject.php
--- a/src/applications/project/storage/PhabricatorProject.php
+++ b/src/applications/project/storage/PhabricatorProject.php
@@ -15,6 +15,7 @@
protected $phrictionSlug;
protected $profileImagePHID;
protected $icon;
+ protected $iconColor;
protected $viewPolicy;
protected $editPolicy;
@@ -29,12 +30,14 @@
private $slugs = self::ATTACHABLE;
const DEFAULT_ICON = 'fa-briefcase';
+ const DEFAULT_ICON_COLOR = 'bluegrey';
public static function initializeNewProject(PhabricatorUser $actor) {
return id(new PhabricatorProject())
->setName('')
->setAuthorPHID($actor->getPHID())
->setIcon(self::DEFAULT_ICON)
+ ->setIconColor(self::DEFAULT_ICON_COLOR)
->setViewPolicy(PhabricatorPolicies::POLICY_USER)
->setEditPolicy(PhabricatorPolicies::POLICY_USER)
->setJoinPolicy(PhabricatorPolicies::POLICY_USER)
diff --git a/src/applications/project/storage/PhabricatorProjectTransaction.php b/src/applications/project/storage/PhabricatorProjectTransaction.php
--- a/src/applications/project/storage/PhabricatorProjectTransaction.php
+++ b/src/applications/project/storage/PhabricatorProjectTransaction.php
@@ -8,6 +8,7 @@
const TYPE_STATUS = 'project:status';
const TYPE_IMAGE = 'project:image';
const TYPE_ICON = 'project:icon';
+ const TYPE_ICONCOLOR = 'project:iconcolor';
// NOTE: This is deprecated, members are just a normal edge now.
const TYPE_MEMBERS = 'project:members';
@@ -93,6 +94,12 @@
$author_handle,
PhabricatorProjectIcon::getLabel($new));
+ case PhabricatorProjectTransaction::TYPE_ICONCOLOR:
+ return pht(
+ '%s set this project\'s icon color to %s.',
+ $author_handle,
+ PHUIIconView::getColorName($new));
+
case PhabricatorProjectTransaction::TYPE_SLUGS:
$add = array_diff($new, $old);
$rem = array_diff($old, $new);
diff --git a/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php b/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
--- a/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
+++ b/src/applications/typeahead/controller/PhabricatorTypeaheadCommonDatasourceController.php
@@ -288,7 +288,7 @@
->setDisplayType('Project')
->setURI('/project/view/'.$proj->getID().'/')
->setPHID($proj->getPHID())
- ->setIcon($proj->getIcon().' bluegrey')
+ ->setIcon($proj->getIcon().' '.$proj->getIconColor())
->setPriorityType('proj')
->setClosed($closed);
diff --git a/src/view/phui/PHUIIconView.php b/src/view/phui/PHUIIconView.php
--- a/src/view/phui/PHUIIconView.php
+++ b/src/view/phui/PHUIIconView.php
@@ -109,5 +109,23 @@
return idx(json_decode($data, true), 'sprites');
}
+ public static function getColorMap() {
+ return array(
+ 'bluegrey' => pht('Blue Grey'),
+ 'red' => pht('Red'),
+ 'orange' => pht('Orange'),
+ 'yellow' => pht('Yellow'),
+ 'green' => pht('Green'),
+ 'blue' => pht('Blue'),
+ 'sky' => pht('Sky'),
+ 'indigo' => pht('Indigo'),
+ 'violet' => pht('Violet'),
+ 'dark' => pht('Dark'),
+ );
+ }
+
+ public static function getColorName($color) {
+ return idx(self::getColorMap(), $color, $color);
+ }
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Tue, Apr 8, 12:46 PM (16 h, 15 m)
Storage Engine
blob
Storage Format
Encrypted (AES-256-CBC)
Storage Handle
7724106
Default Alt Text
D9710.id23317.diff (12 KB)
Attached To
Mode
D9710: Allow projects icon color to be selected from several fabulous shades
Attached
Detach File
Event Timeline
Log In to Comment