Merge pull request #119 from refinery29/qr-codes-ftw
Added support for QR codes in Asset view
This commit is contained in:
@@ -20,6 +20,8 @@ use Response;
|
||||
|
||||
class AssetsController extends AdminController {
|
||||
|
||||
protected $qrCodeDimensions = array( 'height' => 160, 'width' => 160);
|
||||
|
||||
/**
|
||||
* Show a list of all the assets.
|
||||
*
|
||||
@@ -527,10 +529,20 @@ class AssetsController extends AdminController {
|
||||
$asset = Asset::find($assetId);
|
||||
|
||||
if (isset($asset->id)) {
|
||||
return View::make('backend/hardware/view', compact('asset'));
|
||||
|
||||
$settings = Setting::getSettings();
|
||||
|
||||
$qr_code = (object) array(
|
||||
'display' => $settings->qr_code === '1',
|
||||
'height' => $this->qrCodeDimensions['height'],
|
||||
'width' => $this->qrCodeDimensions['width'],
|
||||
'url' => route('qr_code/hardware', $asset->id)
|
||||
);
|
||||
|
||||
return View::make('backend/hardware/view', compact('asset', 'qr_code'));
|
||||
} else {
|
||||
// Prepare the error message
|
||||
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id' ));
|
||||
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id'));
|
||||
|
||||
// Redirect to the user management page
|
||||
return Redirect::route('assets')->with('error', $error);
|
||||
@@ -538,6 +550,35 @@ class AssetsController extends AdminController {
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the QR code representing the asset
|
||||
*
|
||||
* @param int $assetId
|
||||
* @return View
|
||||
**/
|
||||
public function getQrCode($assetId = null)
|
||||
{
|
||||
$settings = Setting::getSettings();
|
||||
|
||||
if ($settings->qr_code === '1') {
|
||||
$asset = Asset::find($assetId);
|
||||
if (isset($asset->id)) {
|
||||
$renderer = new \BaconQrCode\Renderer\Image\Png;
|
||||
$renderer->setWidth($this->qrCodeDimensions['height'])
|
||||
->setHeight($this->qrCodeDimensions['height']);
|
||||
$writer = new \BaconQrCode\Writer($renderer);
|
||||
$content = $writer->writeString(route('view/hardware', $asset->id));
|
||||
|
||||
$response = Response::make($content, 200);
|
||||
$response->header('Content-Type', 'image/png');
|
||||
return $response;
|
||||
}
|
||||
}
|
||||
|
||||
$response = Response::make('', 404);
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
* Asset update.
|
||||
*
|
||||
|
||||
@@ -38,7 +38,8 @@ class SettingsController extends AdminController {
|
||||
public function getEdit()
|
||||
{
|
||||
$settings = Setting::orderBy('created_at', 'DESC')->paginate(10);
|
||||
return View::make('backend/settings/edit', compact('settings'));
|
||||
$is_gd_installed = !!extension_loaded('gd');
|
||||
return View::make('backend/settings/edit', compact('settings', 'is_gd_installed'));
|
||||
}
|
||||
|
||||
|
||||
@@ -82,6 +83,7 @@ class SettingsController extends AdminController {
|
||||
$setting->id = '1';
|
||||
$setting->site_name = e(Input::get('site_name'));
|
||||
$setting->per_page = e(Input::get('per_page'));
|
||||
$setting->qr_code = e(Input::get('qr_code', '0'));
|
||||
|
||||
// Was the asset updated?
|
||||
if($setting->save())
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddQrCodeToSettingsTable extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('settings', function($table)
|
||||
{
|
||||
$table->integer('qr_code')->nullable()->default(NULL);
|
||||
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('settings', function($table)
|
||||
{
|
||||
$table->dropColumn('qr_code');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -26,6 +26,7 @@ Route::group(array('prefix' => 'hardware'), function()
|
||||
Route::get('{assetId}/checkin', array('as' => 'checkin/hardware', 'uses' => 'Controllers\Admin\AssetsController@getCheckin'));
|
||||
Route::post('{assetId}/checkin', 'Controllers\Admin\AssetsController@postCheckin');
|
||||
Route::get('{assetId}/view', array('as' => 'view/hardware', 'uses' => 'Controllers\Admin\AssetsController@getView'));
|
||||
Route::get('{assetId}_qr_code.png', array('as' => 'qr_code/hardware', 'uses' => 'Controllers\Admin\AssetsController@getQrCode'));
|
||||
|
||||
|
||||
# Asset Model Management
|
||||
|
||||
@@ -154,6 +154,13 @@ View Asset {{ $asset->asset_tag }} ::
|
||||
<!-- side address column -->
|
||||
<div class="col-md-3 col-xs-12 address pull-right">
|
||||
|
||||
@if ($qr_code->display)
|
||||
<h6>QR Code</h6>
|
||||
<p>
|
||||
<img src="{{ $qr_code->url }}" height="{{ $qr_code->height }}" width="{{ $qr_code->width }}" />
|
||||
</p>
|
||||
@endif
|
||||
|
||||
@if ((isset($asset->assigned_to ) && ($asset->assigned_to > 0)))
|
||||
<h6><br>Checked Out To:</h6>
|
||||
<ul>
|
||||
|
||||
@@ -46,6 +46,22 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('qr_code') ? 'error' : '' }}">
|
||||
<label class="control-label" for="qr_code">Display QR Codes</label>
|
||||
<div class="controls">
|
||||
@if ($is_gd_installed)
|
||||
<input class="col-md-1" type="checkbox" name="qr_code" id="qr_code" value="1" {{ $setting->qr_code === '1' ? 'checked' : '' }} />
|
||||
@else
|
||||
<span class="help-inline">
|
||||
PHP Image Processing and GD plugin is NOT installed.
|
||||
<br>
|
||||
You must install php-gd to display QR codes, see <a href="http://www.php.net/manual/en/image.installation.php">install instructions</a>.
|
||||
</span>
|
||||
@endif
|
||||
{{ $errors->first('qr_code', '<span class="help-inline">:message</span>') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endforeach
|
||||
|
||||
@@ -43,6 +43,14 @@ Settings ::
|
||||
<td>Per Page</td>
|
||||
<td>{{ $setting->per_page }} </td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td>Display QR Codes</td>
|
||||
@if ($setting->qr_code === '1')
|
||||
<td>Yes</td>
|
||||
@else
|
||||
<td>No</td>
|
||||
@endif
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
+2
-1
@@ -6,7 +6,8 @@
|
||||
"laravel/framework": "4.0.*",
|
||||
"cartalyst/sentry": "2.0.*",
|
||||
"barryvdh/laravel-debugbar": "dev-master",
|
||||
"chumper/datatable": "dev-master"
|
||||
"chumper/datatable": "dev-master",
|
||||
"bacon/bacon-qr-code": "dev-master"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "*"
|
||||
|
||||
Generated
+45
-2
@@ -3,8 +3,50 @@
|
||||
"This file locks the dependencies of your project to a known state",
|
||||
"Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file"
|
||||
],
|
||||
"hash": "2ff29b285767430e11356a6316d24a84",
|
||||
"hash": "59df281fac2656a9009c1e5a84946add",
|
||||
"packages": [
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
"version": "dev-master",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/Bacon/BaconQrCode.git",
|
||||
"reference": "0537ed27917f5ae26e5837ac4bfd837171d0b848"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/Bacon/BaconQrCode/zipball/0537ed27917f5ae26e5837ac4bfd837171d0b848",
|
||||
"reference": "0537ed27917f5ae26e5837ac4bfd837171d0b848",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.3.3"
|
||||
},
|
||||
"suggest": {
|
||||
"ext-gd": "to generate QR code images"
|
||||
},
|
||||
"type": "library",
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"BaconQrCode": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"BSD-2-Clause"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Ben Scholzen 'DASPRiD'",
|
||||
"email": "mail@dasprids.de",
|
||||
"homepage": "http://www.dasprids.de",
|
||||
"role": "Developer"
|
||||
}
|
||||
],
|
||||
"description": "BaconQrCode is a QR code generator for PHP.",
|
||||
"homepage": "https://github.com/Bacon/BaconQrCode",
|
||||
"time": "2013-08-27 10:20:42"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "dev-master",
|
||||
@@ -2660,7 +2702,8 @@
|
||||
"minimum-stability": "dev",
|
||||
"stability-flags": {
|
||||
"barryvdh/laravel-debugbar": 20,
|
||||
"chumper/datatable": 20
|
||||
"chumper/datatable": 20,
|
||||
"bacon/bacon-qr-code": 20
|
||||
},
|
||||
"platform": [
|
||||
|
||||
|
||||
Reference in New Issue
Block a user