diff --git a/app/controllers/admin/AssetsController.php b/app/controllers/admin/AssetsController.php index 4a105a8c26..a21d55743b 100644 --- a/app/controllers/admin/AssetsController.php +++ b/app/controllers/admin/AssetsController.php @@ -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. * diff --git a/app/controllers/admin/SettingsController.php b/app/controllers/admin/SettingsController.php index 2f67ecd6fc..00640e4630 100644 --- a/app/controllers/admin/SettingsController.php +++ b/app/controllers/admin/SettingsController.php @@ -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()) diff --git a/app/database/migrations/2014_01_28_031200_add_qr_code_to_settings_table.php b/app/database/migrations/2014_01_28_031200_add_qr_code_to_settings_table.php new file mode 100644 index 0000000000..f4541fb54a --- /dev/null +++ b/app/database/migrations/2014_01_28_031200_add_qr_code_to_settings_table.php @@ -0,0 +1,34 @@ +integer('qr_code')->nullable()->default(NULL); + + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function($table) + { + $table->dropColumn('qr_code'); + }); + } + +} \ No newline at end of file diff --git a/app/routes.php b/app/routes.php index 01cb200a01..41eb761ad5 100755 --- a/app/routes.php +++ b/app/routes.php @@ -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 diff --git a/app/views/backend/hardware/view.blade.php b/app/views/backend/hardware/view.blade.php index 872ba027af..6365ec6286 100644 --- a/app/views/backend/hardware/view.blade.php +++ b/app/views/backend/hardware/view.blade.php @@ -154,6 +154,13 @@ View Asset {{ $asset->asset_tag }} ::
+
+