mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-11 17:32:41 +01:00
f12dbe36d6
Summary: Ref T2296. If a file upload fails (e.g., too large), we read the textarea from the "Create New Diff" interface. This means we show the user an error like "empty diff" when we should show them an error like "file upload failed, patch is too large". This is part of the issue in T2296, which features a 2.5MB diff. Instead, check if a file was specified, so we'll raise a better error. Test Plan: Tried to upload a large patch, got a "file is too large" error instead of an empty-diff-related error. Reviewers: btrahan, vrana, codeblock Reviewed By: codeblock CC: aran Maniphest Tasks: T2296 Differential Revision: https://secure.phabricator.com/D4369
75 lines
2.2 KiB
PHP
75 lines
2.2 KiB
PHP
<?php
|
|
|
|
final class DifferentialDiffCreateController extends DifferentialController {
|
|
|
|
public function processRequest() {
|
|
|
|
$request = $this->getRequest();
|
|
|
|
if ($request->isFormPost()) {
|
|
$diff = null;
|
|
|
|
if ($request->getFileExists('diff-file')) {
|
|
$diff = PhabricatorFile::readUploadedFileData($_FILES['diff-file']);
|
|
} else {
|
|
$diff = $request->getStr('diff');
|
|
}
|
|
|
|
$call = new ConduitCall(
|
|
'differential.createrawdiff',
|
|
array(
|
|
'diff' => $diff,
|
|
));
|
|
$call->setUser($request->getUser());
|
|
$result = $call->execute();
|
|
|
|
$path = id(new PhutilURI($result['uri']))->getPath();
|
|
return id(new AphrontRedirectResponse())->setURI($path);
|
|
}
|
|
|
|
$form = new AphrontFormView();
|
|
$arcanist_href = PhabricatorEnv::getDoclink(
|
|
'article/Arcanist_User_Guide.html');
|
|
$arcanist_link = phutil_render_tag(
|
|
'a',
|
|
array(
|
|
'href' => $arcanist_href,
|
|
'target' => '_blank',
|
|
),
|
|
'Arcanist');
|
|
$form
|
|
->setAction('/differential/diff/create/')
|
|
->setEncType('multipart/form-data')
|
|
->setUser($request->getUser())
|
|
->appendChild(
|
|
'<p class="aphront-form-instructions">The best way to create a '.
|
|
"Differential diff is by using $arcanist_link, but you ".
|
|
'can also just paste a diff (e.g., from <tt>svn diff</tt> or '.
|
|
'<tt>git diff</tt>) into this box or upload it as a file if you '.
|
|
'really want.</p>')
|
|
->appendChild(
|
|
id(new AphrontFormTextAreaControl())
|
|
->setLabel('Raw Diff')
|
|
->setName('diff')
|
|
->setHeight(AphrontFormTextAreaControl::HEIGHT_VERY_TALL))
|
|
->appendChild(
|
|
id(new AphrontFormFileControl())
|
|
->setLabel('Raw Diff from file')
|
|
->setName('diff-file'))
|
|
->appendChild(
|
|
id(new AphrontFormSubmitControl())
|
|
->setValue("Create Diff \xC2\xBB"));
|
|
|
|
$panel = new AphrontPanelView();
|
|
$panel->setHeader('Create New Diff');
|
|
$panel->appendChild($form);
|
|
$panel->setWidth(AphrontPanelView::WIDTH_FORM);
|
|
|
|
return $this->buildStandardPageResponse(
|
|
$panel,
|
|
array(
|
|
'title' => 'Create Diff',
|
|
));
|
|
}
|
|
|
|
}
|