Added max file size for uploads.

This commit is contained in:
James Cole
2015-07-19 14:30:20 +02:00
parent fc886f6bc1
commit 4dbc135dce
6 changed files with 64 additions and 35 deletions

View File

@@ -16,6 +16,7 @@ use Input;
use Preferences; use Preferences;
use Response; use Response;
use Session; use Session;
use Steam;
use URL; use URL;
use View; use View;
@@ -44,14 +45,17 @@ class TransactionController extends Controller
*/ */
public function create(AccountRepositoryInterface $repository, $what = 'deposit') public function create(AccountRepositoryInterface $repository, $what = 'deposit')
{ {
$accounts = ExpandedForm::makeSelectList($repository->getAccounts(['Default account', 'Asset account'])); $maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
$budgets = ExpandedForm::makeSelectList(Auth::user()->budgets()->get()); $maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
$budgets[0] = trans('form.noBudget'); $uploadSize = min($maxFileSize, $maxPostSize);
$piggies = ExpandedForm::makeSelectList(Auth::user()->piggyBanks()->get()); $accounts = ExpandedForm::makeSelectList($repository->getAccounts(['Default account', 'Asset account']));
$piggies[0] = trans('form.noPiggybank'); $budgets = ExpandedForm::makeSelectList(Auth::user()->budgets()->get());
$preFilled = Session::has('preFilled') ? Session::get('preFilled') : []; $budgets[0] = trans('form.noBudget');
$respondTo = ['account_id', 'account_from_id']; $piggies = ExpandedForm::makeSelectList(Auth::user()->piggyBanks()->get());
$subTitle = trans('form.add_new_' . $what); $piggies[0] = trans('form.noPiggybank');
$preFilled = Session::has('preFilled') ? Session::get('preFilled') : [];
$respondTo = ['account_id', 'account_from_id'];
$subTitle = trans('form.add_new_' . $what);
foreach ($respondTo as $r) { foreach ($respondTo as $r) {
$preFilled[$r] = Input::get($r); $preFilled[$r] = Input::get($r);
@@ -69,7 +73,7 @@ class TransactionController extends Controller
asort($piggies); asort($piggies);
return view('transactions.create', compact('accounts', 'budgets', 'what', 'piggies', 'subTitle')); return view('transactions.create', compact('accounts', 'uploadSize', 'budgets', 'what', 'piggies', 'subTitle'));
} }
/** /**
@@ -122,14 +126,17 @@ class TransactionController extends Controller
*/ */
public function edit(AccountRepositoryInterface $repository, TransactionJournal $journal) public function edit(AccountRepositoryInterface $repository, TransactionJournal $journal)
{ {
$what = strtolower($journal->transactionType->type); $maxFileSize = Steam::phpBytes(ini_get('upload_max_filesize'));
$accounts = ExpandedForm::makeSelectList($repository->getAccounts(['Default account', 'Asset account'])); $maxPostSize = Steam::phpBytes(ini_get('post_max_size'));
$budgets = ExpandedForm::makeSelectList(Auth::user()->budgets()->get()); $uploadSize = min($maxFileSize, $maxPostSize);
$budgets[0] = trans('form.noBudget'); $what = strtolower($journal->transactionType->type);
$piggies = ExpandedForm::makeSelectList(Auth::user()->piggyBanks()->get()); $accounts = ExpandedForm::makeSelectList($repository->getAccounts(['Default account', 'Asset account']));
$piggies[0] = trans('form.noPiggybank'); $budgets = ExpandedForm::makeSelectList(Auth::user()->budgets()->get());
$subTitle = trans('breadcrumbs.edit_journal', ['description' => $journal->description]); $budgets[0] = trans('form.noBudget');
$preFilled = [ $piggies = ExpandedForm::makeSelectList(Auth::user()->piggyBanks()->get());
$piggies[0] = trans('form.noPiggybank');
$subTitle = trans('breadcrumbs.edit_journal', ['description' => $journal->description]);
$preFilled = [
'date' => $journal->date->format('Y-m-d'), 'date' => $journal->date->format('Y-m-d'),
'category' => '', 'category' => '',
'budget_id' => 0, 'budget_id' => 0,
@@ -180,7 +187,7 @@ class TransactionController extends Controller
Session::forget('transactions.edit.fromUpdate'); Session::forget('transactions.edit.fromUpdate');
return view('transactions.edit', compact('journal', 'accounts', 'what', 'budgets', 'piggies', 'subTitle'))->with('data', $preFilled); return view('transactions.edit', compact('journal', 'uploadSize', 'accounts', 'what', 'budgets', 'piggies', 'subTitle'))->with('data', $preFilled);
} }
/** /**
@@ -321,20 +328,13 @@ class TransactionController extends Controller
// save attachments: // save attachments:
$att->saveAttachmentsForModel($journal); $att->saveAttachmentsForModel($journal);
// one error // flash errors
if ($att->getErrors()->count() == 1) { if (count($att->getErrors()->get('attachments')) > 0) {
Session::flash('error', join('', $att->getErrors()->get('attachments'))); Session::flash('error', $att->getErrors()->get('attachments'));
} }
// flash messages
if ($att->getErrors()->count() > 1) { if (count($att->getMessages()->get('attachments')) > 0) {
// todo moet beter Session::flash('info', $att->getMessages()->get('attachments'));
Session::flash('error', '<ul class="list-unstyled">' . join('', $att->getErrors()->get('attachments', '<li>:message</li>')) . '</ul>');
}
if ($att->getMessages()->count() > 0) {
// todo moet beter
Session::flash('info', '<ul class="list-unstyled">' . join('', $att->getMessages()->get('attachments', '<li>:message</li>')) . '</ul>');
} }
event(new JournalSaved($journal)); event(new JournalSaved($journal));

View File

@@ -90,4 +90,33 @@ class Steam
return $result; return $result;
} }
// parse PHP size:
/**
* @param $string
*
* @return int
*/
public function phpBytes($string)
{
$string = strtolower($string);
if (!(strpos($string, 'k') === false)) {
// has a K in it, remove the K and multiply by 1024.
$bytes = bcmul(rtrim($string, 'k'), 1024);
return intval($bytes);
}
if (!(strpos($string, 'm') === false)) {
// has a M in it, remove the M and multiply by 1048576.
$bytes = bcmul(rtrim($string, 'm'), 1048576);
return intval($bytes);
}
return $string;
}
} }

View File

@@ -26,6 +26,7 @@ return [
'update_attachment' => 'Update attachment', 'update_attachment' => 'Update attachment',
'delete_attachment' => 'Delete attachment ":name"', 'delete_attachment' => 'Delete attachment ":name"',
'attachment_deleted' => 'Deleted attachment ":name"', 'attachment_deleted' => 'Deleted attachment ":name"',
'upload_max_file_size' => 'Maximum file size: :size',
// tour: // tour:
'prev' => 'Prev', 'prev' => 'Prev',

View File

@@ -19,8 +19,7 @@
</ul> </ul>
{% endif %} {% endif %}
{% if Session.get('info') is iterable and Session.get('info')|length == 1 %} {% if Session.get('info') is iterable and Session.get('info')|length == 1 %}
<strong>Message:</strong> <strong>Message:</strong> {{ Session.get('info')[0]|raw }}
{{ Session.get('info')[0]|raw }}
{% endif %} {% endif %}
{% if Session.get('info') is not iterable %} {% if Session.get('info') is not iterable %}

View File

@@ -75,7 +75,7 @@
{{ ExpandedForm.select('piggy_bank_id',piggies) }} {{ ExpandedForm.select('piggy_bank_id',piggies) }}
<!-- ATTACHMENTS --> <!-- ATTACHMENTS -->
{{ ExpandedForm.file('attachments[]', {'multiple': 'multiple'}) }} {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }}
</div> </div>

View File

@@ -76,7 +76,7 @@
{% endif %} {% endif %}
<!-- ATTACHMENTS --> <!-- ATTACHMENTS -->
{{ ExpandedForm.file('attachments[]', {'multiple': 'multiple'}) }} {{ ExpandedForm.file('attachments[]', {'multiple': 'multiple','helpText': trans('firefly.upload_max_file_size', {'size': uploadSize|filesize}) }) }}
</div> </div>
</div> </div>