2011-01-30 20:02:22 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/*
|
2011-12-23 02:59:00 +01:00
|
|
|
* Copyright 2012 Facebook, Inc.
|
2011-01-30 20:02:22 +01:00
|
|
|
*
|
|
|
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
|
|
* you may not use this file except in compliance with the License.
|
|
|
|
* You may obtain a copy of the License at
|
|
|
|
*
|
|
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
*
|
|
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
|
|
* distributed under the License is distributed on an "AS IS" BASIS,
|
|
|
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
|
|
* See the License for the specific language governing permissions and
|
|
|
|
* limitations under the License.
|
|
|
|
*/
|
|
|
|
|
|
|
|
final class DifferentialAddCommentView extends AphrontView {
|
|
|
|
|
|
|
|
private $revision;
|
|
|
|
private $actions;
|
|
|
|
private $actionURI;
|
2011-01-31 03:52:29 +01:00
|
|
|
private $user;
|
2011-02-06 01:57:21 +01:00
|
|
|
private $draft;
|
2011-01-30 20:02:22 +01:00
|
|
|
|
|
|
|
public function setRevision($revision) {
|
|
|
|
$this->revision = $revision;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setActions(array $actions) {
|
|
|
|
$this->actions = $actions;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
|
|
|
public function setActionURI($uri) {
|
|
|
|
$this->actionURI = $uri;
|
|
|
|
}
|
|
|
|
|
2011-01-31 03:52:29 +01:00
|
|
|
public function setUser(PhabricatorUser $user) {
|
|
|
|
$this->user = $user;
|
|
|
|
}
|
2011-01-30 20:02:22 +01:00
|
|
|
|
2011-02-06 01:57:21 +01:00
|
|
|
public function setDraft($draft) {
|
|
|
|
$this->draft = $draft;
|
|
|
|
return $this;
|
|
|
|
}
|
|
|
|
|
2011-06-10 03:56:47 +02:00
|
|
|
private function generateWarningView(
|
|
|
|
$status,
|
|
|
|
array $titles,
|
|
|
|
$id,
|
|
|
|
$content) {
|
|
|
|
|
|
|
|
$warning = new AphrontErrorView();
|
|
|
|
$warning->setSeverity(AphrontErrorView::SEVERITY_ERROR);
|
|
|
|
$warning->setWidth(AphrontErrorView::WIDTH_WIDE);
|
|
|
|
$warning->setID($id);
|
|
|
|
$warning->appendChild($content);
|
|
|
|
$warning->setTitle(idx($titles, $status, 'Warning'));
|
|
|
|
|
|
|
|
return $warning;
|
|
|
|
}
|
|
|
|
|
2011-01-31 03:52:29 +01:00
|
|
|
public function render() {
|
2011-02-01 03:05:20 +01:00
|
|
|
|
|
|
|
require_celerity_resource('differential-revision-add-comment-css');
|
|
|
|
|
Provide a configuration flag to disable silliness in the UI
Summary: See comments. A few installs have remarked that their organizations
would prefer buttons labled "Submit" to buttons labeled "Clowncopterize".
Test Plan:
- In "serious" mode, verified Differential and Maniphest have serious strings,
tasks can not be closed out of spite, and reset/welcome emails are extremely
serious.
- In unserious mode, verified Differential and Maniphest have normal strings,
tasks can be closed out of spite, and reset/welcome emails are silly.
- This does not disable the "fax these changes" message in Arcanist (no
reasonable way for it to read the config value) or the rainbow syntax
highlighter (already removable though configuration).
Reviewers: moskov, jungejason, nh, tuomaspelkonen, aran
Reviewed By: moskov
CC: aran, moskov
Differential Revision: 1081
2011-11-04 23:16:34 +01:00
|
|
|
$is_serious = PhabricatorEnv::getEnvConfig('phabricator.serious-business');
|
|
|
|
|
2011-01-30 21:08:40 +01:00
|
|
|
$revision = $this->revision;
|
|
|
|
|
2011-01-30 20:02:22 +01:00
|
|
|
$form = new AphrontFormView();
|
|
|
|
$form
|
Improve behavior when user submits a no-op action in Differential
Summary:
See T730 and the slightly-less-pretty version of this in D1398.
When a user takes an action in Differential that has no effect (for instance,
accepting an already-accepted revision), prompt them:
Action Has No Effect
You can not accept this revision because it has already been accepted.
Do you want to post the feedback anyway, as a normal comment?
[Cancel] [Post as Comment]
If they have no comment text, the dialog only says "Cancel".
I think this is probably the best way to balance all the concerns here -- it
might occasionally be a little annoying, but that should be rare, and it should
never be confusing (the current workflow is extremely confusing).
This also fixes the issue where you can add all sorts of CCs who are already
part of the revision, either explicitly or via mentions.
Test Plan:
Posted some has-effect and has-no-effect comments, made different
choices in the dialog, everything seems to work OK?
Reviewers: vrana, btrahan, jungejason
Reviewed By: vrana
CC: aran, vrana
Maniphest Tasks: T730
Differential Revision: https://secure.phabricator.com/D1403
2012-01-14 20:39:22 +01:00
|
|
|
->setWorkflow(true)
|
2011-01-31 03:52:29 +01:00
|
|
|
->setUser($this->user)
|
2011-01-30 20:02:22 +01:00
|
|
|
->setAction($this->actionURI)
|
2011-01-30 21:08:40 +01:00
|
|
|
->addHiddenInput('revision_id', $revision->getID())
|
2011-01-30 20:02:22 +01:00
|
|
|
->appendChild(
|
|
|
|
id(new AphrontFormSelectControl())
|
|
|
|
->setLabel('Action')
|
2011-01-30 21:08:40 +01:00
|
|
|
->setName('action')
|
2011-02-01 03:05:20 +01:00
|
|
|
->setID('comment-action')
|
2011-10-27 21:32:02 +02:00
|
|
|
->setOptions($this->actions))
|
2011-02-05 07:45:42 +01:00
|
|
|
->appendChild(
|
|
|
|
id(new AphrontFormTokenizerControl())
|
|
|
|
->setLabel('Add Reviewers')
|
|
|
|
->setName('reviewers')
|
|
|
|
->setControlID('add-reviewers')
|
|
|
|
->setControlStyle('display: none')
|
|
|
|
->setID('add-reviewers-tokenizer')
|
|
|
|
->setDisableBehavior(true))
|
2011-06-24 21:21:48 +02:00
|
|
|
->appendChild(
|
|
|
|
id(new AphrontFormTokenizerControl())
|
|
|
|
->setLabel('Add CCs')
|
|
|
|
->setName('ccs')
|
|
|
|
->setControlID('add-ccs')
|
|
|
|
->setControlStyle('display: none')
|
|
|
|
->setID('add-ccs-tokenizer')
|
|
|
|
->setDisableBehavior(true))
|
2011-01-30 20:02:22 +01:00
|
|
|
->appendChild(
|
|
|
|
id(new AphrontFormTextAreaControl())
|
2011-01-30 21:08:40 +01:00
|
|
|
->setName('comment')
|
2011-02-01 03:05:20 +01:00
|
|
|
->setID('comment-content')
|
2011-02-06 01:57:21 +01:00
|
|
|
->setLabel('Comment')
|
2011-07-15 23:17:55 +02:00
|
|
|
->setEnableDragAndDropFileUploads(true)
|
2011-12-03 06:11:38 +01:00
|
|
|
->setValue($this->draft)
|
|
|
|
->setCaption(phutil_render_tag(
|
|
|
|
'a',
|
|
|
|
array(
|
|
|
|
'href' => PhabricatorEnv::getDoclink(
|
|
|
|
'article/Remarkup_Reference.html'),
|
2011-12-07 15:46:37 +01:00
|
|
|
'tabindex' => '-1',
|
2011-12-03 06:11:38 +01:00
|
|
|
'target' => '_blank',
|
|
|
|
),
|
2011-12-07 15:46:37 +01:00
|
|
|
'Formatting Reference')))
|
2011-01-30 20:02:22 +01:00
|
|
|
->appendChild(
|
|
|
|
id(new AphrontFormSubmitControl())
|
Provide a configuration flag to disable silliness in the UI
Summary: See comments. A few installs have remarked that their organizations
would prefer buttons labled "Submit" to buttons labeled "Clowncopterize".
Test Plan:
- In "serious" mode, verified Differential and Maniphest have serious strings,
tasks can not be closed out of spite, and reset/welcome emails are extremely
serious.
- In unserious mode, verified Differential and Maniphest have normal strings,
tasks can be closed out of spite, and reset/welcome emails are silly.
- This does not disable the "fax these changes" message in Arcanist (no
reasonable way for it to read the config value) or the rainbow syntax
highlighter (already removable though configuration).
Reviewers: moskov, jungejason, nh, tuomaspelkonen, aran
Reviewed By: moskov
CC: aran, moskov
Differential Revision: 1081
2011-11-04 23:16:34 +01:00
|
|
|
->setValue($is_serious ? 'Submit' : 'Clowncopterize'));
|
2011-01-30 20:02:22 +01:00
|
|
|
|
2011-02-05 07:45:42 +01:00
|
|
|
Javelin::initBehavior(
|
2011-06-24 21:21:48 +02:00
|
|
|
'differential-add-reviewers-and-ccs',
|
2011-02-05 07:45:42 +01:00
|
|
|
array(
|
2011-06-24 21:21:48 +02:00
|
|
|
'dynamic' => array(
|
|
|
|
'add_reviewers' => array(
|
|
|
|
'tokenizer' => 'add-reviewers-tokenizer',
|
|
|
|
'src' => '/typeahead/common/users/',
|
|
|
|
'row' => 'add-reviewers',
|
2011-10-08 03:25:54 +02:00
|
|
|
'ondemand' => PhabricatorEnv::getEnvConfig('tokenizer.ondemand'),
|
2011-06-24 21:21:48 +02:00
|
|
|
),
|
|
|
|
'add_ccs' => array(
|
|
|
|
'tokenizer' => 'add-ccs-tokenizer',
|
|
|
|
'src' => '/typeahead/common/mailable/',
|
|
|
|
'row' => 'add-ccs',
|
2011-10-08 03:25:54 +02:00
|
|
|
'ondemand' => PhabricatorEnv::getEnvConfig('tokenizer.ondemand'),
|
2011-06-24 21:21:48 +02:00
|
|
|
),
|
|
|
|
),
|
2011-02-05 07:45:42 +01:00
|
|
|
'select' => 'comment-action',
|
|
|
|
));
|
|
|
|
|
2011-06-10 03:56:47 +02:00
|
|
|
$diff = $revision->loadActiveDiff();
|
|
|
|
$lint_warning = null;
|
|
|
|
$unit_warning = null;
|
|
|
|
if ($diff->getLintStatus() >= DifferentialLintStatus::LINT_WARN) {
|
|
|
|
$titles =
|
|
|
|
array(
|
|
|
|
DifferentialLintStatus::LINT_WARN => 'Lint Warning',
|
|
|
|
DifferentialLintStatus::LINT_FAIL => 'Lint Failure',
|
|
|
|
DifferentialLintStatus::LINT_SKIP => 'Lint Skipped'
|
|
|
|
);
|
|
|
|
$content =
|
|
|
|
"<p>This diff has Lint Problems. Make sure you are OK with them ".
|
|
|
|
"before you accept this diff.</p>";
|
|
|
|
$lint_warning = $this->generateWarningView(
|
|
|
|
$diff->getLintStatus(),
|
|
|
|
$titles,
|
|
|
|
'lint-warning',
|
|
|
|
$content);
|
|
|
|
}
|
|
|
|
|
|
|
|
if ($diff->getUnitStatus() >= DifferentialUnitStatus::UNIT_WARN) {
|
|
|
|
$titles =
|
|
|
|
array(
|
|
|
|
DifferentialUnitStatus::UNIT_WARN => 'Unit Tests Warning',
|
|
|
|
DifferentialUnitStatus::UNIT_FAIL => 'Unit Tests Failure',
|
|
|
|
DifferentialUnitStatus::UNIT_SKIP => 'Unit Tests Skipped',
|
|
|
|
DifferentialUnitStatus::UNIT_POSTPONED => 'Unit Tests Postponed'
|
|
|
|
);
|
2011-09-27 19:34:01 +02:00
|
|
|
if ($diff->getUnitStatus() == DifferentialUnitStatus::UNIT_POSTPONED) {
|
|
|
|
$content =
|
|
|
|
"<p>This diff has postponed unit tests. The results should be ".
|
|
|
|
"coming in soon. You should probably wait for them before accepting ".
|
|
|
|
"this diff.</p>";
|
|
|
|
} else {
|
|
|
|
$content =
|
|
|
|
"<p>This diff has Unit Test Problems. Make sure you are OK with ".
|
|
|
|
"them before you accept this diff.</p>";
|
|
|
|
}
|
2011-06-10 03:56:47 +02:00
|
|
|
$unit_warning = $this->generateWarningView(
|
|
|
|
$diff->getUnitStatus(),
|
|
|
|
$titles,
|
|
|
|
'unit-warning',
|
|
|
|
$content);
|
|
|
|
}
|
|
|
|
|
|
|
|
Javelin::initBehavior(
|
|
|
|
'differential-accept-with-errors',
|
|
|
|
array(
|
|
|
|
'select' => 'comment-action',
|
|
|
|
'lint_warning' => $lint_warning ? 'lint-warning' : null,
|
|
|
|
'unit_warning' => $unit_warning ? 'unit-warning' : null,
|
|
|
|
));
|
|
|
|
|
2011-02-03 04:38:43 +01:00
|
|
|
$rev_id = $revision->getID();
|
|
|
|
|
2011-02-01 03:05:20 +01:00
|
|
|
Javelin::initBehavior(
|
|
|
|
'differential-feedback-preview',
|
|
|
|
array(
|
2011-02-03 04:38:43 +01:00
|
|
|
'uri' => '/differential/comment/preview/'.$rev_id.'/',
|
|
|
|
'preview' => 'comment-preview',
|
|
|
|
'action' => 'comment-action',
|
|
|
|
'content' => 'comment-content',
|
2011-12-23 02:59:00 +01:00
|
|
|
'previewTokenizers' => array(
|
|
|
|
'reviewers' => 'add-reviewers-tokenizer',
|
|
|
|
'ccs' => 'add-ccs-tokenizer',
|
|
|
|
),
|
2011-02-03 04:38:43 +01:00
|
|
|
|
|
|
|
'inlineuri' => '/differential/comment/inline/preview/'.$rev_id.'/',
|
|
|
|
'inline' => 'inline-comment-preview',
|
2011-02-01 03:05:20 +01:00
|
|
|
));
|
|
|
|
|
Tweak Maniphest CSS, fix remarkup in description change views
Summary:
Various CSS tweaks and fixes:
- Add remarkup styling to description change views, missed this before.
- Fix CSS so that transactions with only one item (e.g., changed priority)
don't have weird floater underneath them.
- Add more space between transaction items.
- Make default background color lighter and less heavy.
- Use beigey color for comment form in Maniphest.
- Share more CSS between Maniphest and Differential (previews, feedback).
- Move "Leap Into Action" call to Differential, replace Maniphest with
thematically-consistent "Weigh In" (obviously, Maniphest has a nautical theme).
Test Plan:
Browsed Maniphest and Differential in a couple browsers, styling all seems
correct.
Reviewed By: tomo
Reviewers: tomo, aran, jungejason, tuomaspelkonen
CC: anjali, aran, tomo
Differential Revision: 328
2011-05-22 17:49:07 +02:00
|
|
|
$panel_view = new AphrontPanelView();
|
|
|
|
$panel_view->appendChild($form);
|
2011-06-10 03:56:47 +02:00
|
|
|
if ($lint_warning) {
|
|
|
|
$panel_view->appendChild($lint_warning);
|
|
|
|
}
|
|
|
|
if ($unit_warning) {
|
|
|
|
$panel_view->appendChild($unit_warning);
|
|
|
|
}
|
Provide a configuration flag to disable silliness in the UI
Summary: See comments. A few installs have remarked that their organizations
would prefer buttons labled "Submit" to buttons labeled "Clowncopterize".
Test Plan:
- In "serious" mode, verified Differential and Maniphest have serious strings,
tasks can not be closed out of spite, and reset/welcome emails are extremely
serious.
- In unserious mode, verified Differential and Maniphest have normal strings,
tasks can be closed out of spite, and reset/welcome emails are silly.
- This does not disable the "fax these changes" message in Arcanist (no
reasonable way for it to read the config value) or the rainbow syntax
highlighter (already removable though configuration).
Reviewers: moskov, jungejason, nh, tuomaspelkonen, aran
Reviewed By: moskov
CC: aran, moskov
Differential Revision: 1081
2011-11-04 23:16:34 +01:00
|
|
|
|
|
|
|
$panel_view->setHeader($is_serious ? 'Add Comment' : 'Leap Into Action');
|
|
|
|
|
Tweak Maniphest CSS, fix remarkup in description change views
Summary:
Various CSS tweaks and fixes:
- Add remarkup styling to description change views, missed this before.
- Fix CSS so that transactions with only one item (e.g., changed priority)
don't have weird floater underneath them.
- Add more space between transaction items.
- Make default background color lighter and less heavy.
- Use beigey color for comment form in Maniphest.
- Share more CSS between Maniphest and Differential (previews, feedback).
- Move "Leap Into Action" call to Differential, replace Maniphest with
thematically-consistent "Weigh In" (obviously, Maniphest has a nautical theme).
Test Plan:
Browsed Maniphest and Differential in a couple browsers, styling all seems
correct.
Reviewed By: tomo
Reviewers: tomo, aran, jungejason, tuomaspelkonen
CC: anjali, aran, tomo
Differential Revision: 328
2011-05-22 17:49:07 +02:00
|
|
|
$panel_view->addClass('aphront-panel-accent');
|
|
|
|
$panel_view->addClass('aphront-panel-flush');
|
|
|
|
|
2011-01-30 20:02:22 +01:00
|
|
|
return
|
2011-06-08 21:39:03 +02:00
|
|
|
'<div class="differential-add-comment-panel">'.
|
|
|
|
$panel_view->render().
|
|
|
|
'<div class="aphront-panel-preview aphront-panel-flush">'.
|
|
|
|
'<div id="comment-preview">'.
|
|
|
|
'<span class="aphront-panel-preview-loading-text">'.
|
|
|
|
'Loading comment preview...'.
|
|
|
|
'</span>'.
|
|
|
|
'</div>'.
|
|
|
|
'<div id="inline-comment-preview">'.
|
|
|
|
'</div>'.
|
2011-02-01 03:05:20 +01:00
|
|
|
'</div>'.
|
2011-01-30 20:02:22 +01:00
|
|
|
'</div>';
|
|
|
|
}
|
|
|
|
}
|