Fixed upload form, made a new form element, added some processing.

This commit is contained in:
James Cole
2015-07-03 11:52:51 +02:00
parent 86011d4ea2
commit 16374bce9b
14 changed files with 2533 additions and 78 deletions

View File

@@ -7,6 +7,12 @@
*/
namespace FireflyIII\Http\Controllers;
use Illuminate\Http\Request;
use Input;
use League\Csv\Reader;
use Redirect;
use Session;
use View;
/**
@@ -23,13 +29,64 @@ class CsvController extends Controller
public function __construct()
{
parent::__construct();
View::share('title', 'CSV');
View::share('title', trans('firefly.csv'));
View::share('mainTitleIcon', 'fa-file-text-o');
}
/**
* @return View
*/
public function index()
{
return view('csv.index');
$subTitle = trans('firefly.csv_import');
// can actually upload?
$uploadPossible = !is_writable(storage_path('upload'));
$path = storage_path('upload');
return view('csv.index', compact('subTitle', 'uploadPossible', 'path'));
}
/**
*
*/
public function upload(Request $request)
{
if (!$request->hasFile('csv')) {
Session::flash('warning', 'No file uploaded.');
return Redirect::route('csv.index');
}
$hasHeaders = intval(Input::get('has_headers')) === 1;
$reader = Reader::createFromPath($request->file('csv')->getRealPath());
$data = $reader->query();
$data->next(); // go to first row:
if ($hasHeaders) {
// first row = headers.
$headers = $data->current();
} else {
$count = count($data->current());
$headers = [];
for ($i = 1; $i <= $count; $i++) {
$headers[] = trans('firefly.csv_row') . ' #' . $i;
}
}
// example data is always the second row:
$data->next();
$example = $data->current();
var_dump($headers);
var_dump($example);
// store file somewhere temporary?
exit;
}
}

View File

@@ -224,6 +224,7 @@ Route::group(
* CSV controller
*/
Route::get('/csv', ['uses' => 'CsvController@index', 'as' => 'csv.index']);
Route::post('/csv/upload', ['uses' => 'CsvController@upload', 'as' => 'csv.upload']);
/**
* Currency Controller

View File

@@ -347,6 +347,24 @@ class ExpandedForm
return $html;
}
/**
* @param $name
* @param null $value
* @param array $options
*
* @return string
*/
public function file($name, array $options = [])
{
$label = $this->label($name, $options);
$options = $this->expandOptionArray($name, $label, $options);
$classes = $this->getHolderClasses($name);
$html = View::make('form.file', compact('classes', 'name', 'label', 'options'))->render();
return $html;
}
/**
* @param $name
* @param null $value