diff --git a/resources/celerity/map.php b/resources/celerity/map.php --- a/resources/celerity/map.php +++ b/resources/celerity/map.php @@ -9,7 +9,7 @@ 'names' => array( 'conpherence.pkg.css' => 'b2d6f4b8', 'conpherence.pkg.js' => '020aebcf', - 'core.pkg.css' => '8ee41b37', + 'core.pkg.css' => '5fb9829e', 'core.pkg.js' => '83c66b30', 'dark-console.pkg.js' => '187792c2', 'differential.pkg.css' => '0dac8831', @@ -147,7 +147,7 @@ 'rsrc/css/phui/phui-document.css' => 'a9154763', 'rsrc/css/phui/phui-feed-story.css' => '1dd2e4c0', 'rsrc/css/phui/phui-fontkit.css' => '1ec937e5', - 'rsrc/css/phui/phui-form-view.css' => '029b1ef9', + 'rsrc/css/phui/phui-form-view.css' => '0febcbf6', 'rsrc/css/phui/phui-form.css' => '0ce5b5b8', 'rsrc/css/phui/phui-formation-view.css' => 'b172a0b3', 'rsrc/css/phui/phui-head-thing.css' => 'd7f293df', @@ -775,7 +775,7 @@ 'phui-font-icon-base-css' => 'b7608e58', 'phui-fontkit-css' => '1ec937e5', 'phui-form-css' => '0ce5b5b8', - 'phui-form-view-css' => '029b1ef9', + 'phui-form-view-css' => '0febcbf6', 'phui-formation-view-css' => 'b172a0b3', 'phui-head-thing-view-css' => 'd7f293df', 'phui-header-view-css' => '521ef411', diff --git a/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php b/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php --- a/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php +++ b/src/applications/conduit/controller/PhabricatorConduitTokenEditController.php @@ -96,6 +96,7 @@ ->setLabel(pht('Token')) ->setReadOnly(true) ->setSigil('select-on-click') + ->setHasCopyButton(true) ->setValue($token->getToken())); $dialog->appendForm($form); diff --git a/src/applications/differential/view/DifferentialChangesetDetailView.php b/src/applications/differential/view/DifferentialChangesetDetailView.php --- a/src/applications/differential/view/DifferentialChangesetDetailView.php +++ b/src/applications/differential/view/DifferentialChangesetDetailView.php @@ -246,7 +246,7 @@ 'tip' => pht('Copy file path'), 'text' => $display_filename, 'successMessage' => pht('File path copied.'), - 'errorMessage' => pht('Copy of file path failed.'), + 'errorMessage' => pht('Copying failed.'), )); return javelin_tag( diff --git a/src/applications/diffusion/view/DiffusionCloneURIView.php b/src/applications/diffusion/view/DiffusionCloneURIView.php --- a/src/applications/diffusion/view/DiffusionCloneURIView.php +++ b/src/applications/diffusion/view/DiffusionCloneURIView.php @@ -100,7 +100,7 @@ 'tip' => pht('Copy repository URI'), 'text' => $display, 'successMessage' => pht('Repository URI copied.'), - 'errorMessage' => pht('Copy of Repository URI failed.'), + 'errorMessage' => pht('Copying failed.'), )); switch ($uri->getEffectiveIOType()) { diff --git a/src/view/form/control/AphrontFormControl.php b/src/view/form/control/AphrontFormControl.php --- a/src/view/form/control/AphrontFormControl.php +++ b/src/view/form/control/AphrontFormControl.php @@ -15,6 +15,7 @@ private $required; private $hidden; private $classes; + private $hasCopyButton; public function setHidden($hidden) { $this->hidden = $hidden; @@ -114,6 +115,33 @@ return $this; } + /** + * Whether a button is displayed next to the control which allows the user to + * copy the value in the form control. Common use cases include + * (AphrontFormTextControl) and