diff --git a/app/controllers/admin/AssetsController.php b/app/controllers/admin/AssetsController.php index 59280e8576..aa1a13f25d 100644 --- a/app/controllers/admin/AssetsController.php +++ b/app/controllers/admin/AssetsController.php @@ -17,10 +17,14 @@ use Str; use Validator; use View; use Response; +use Config; +use Log; + +use BaconQrCode\Renderer\Image as QrImage; class AssetsController extends AdminController { - protected $qrCodeDimensions = array( 'height' => 160, 'width' => 160); + protected $qrCodeDimensions = array( 'height' => 170, 'width' => 170); /** * Show a list of all the assets. @@ -563,14 +567,28 @@ class AssetsController extends AdminController { 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']); + + $qr_text = !empty($settings->qr_text) ? + $settings->qr_text : $settings->site_name; + + $text = new QrImage\Decorator\Text; + $text->setText($asset->asset_tag, 'top') + ->setText($qr_text, 'bottom'); + + $renderer = new QrImage\Png; + $renderer->setRoundDimensions(true) + ->setWidth($this->qrCodeDimensions['width']) + ->setHeight($this->qrCodeDimensions['height']) + ->setMargin(0) + ->addDecorator($text); + $writer = new \BaconQrCode\Writer($renderer); $content = $writer->writeString(route('view/hardware', $asset->id)); + $content_disposition = sprintf('attachment;filename=qr_code_%s.png', preg_replace('/\W/', '', $asset->asset_tag)); $response = Response::make($content, 200); $response->header('Content-Type', 'image/png'); + $response->header('Content-Disposition', $content_disposition); return $response; } } diff --git a/app/controllers/admin/SettingsController.php b/app/controllers/admin/SettingsController.php index 02d6726e1b..55acb3d864 100644 --- a/app/controllers/admin/SettingsController.php +++ b/app/controllers/admin/SettingsController.php @@ -66,6 +66,7 @@ class SettingsController extends AdminController { $rules = array( "site_name" => 'required|min:3', "per_page" => 'required|min:1|numeric', + "qr_text" => 'min:1|max:31' ); // Create a new validator instance from our validation rules @@ -84,6 +85,7 @@ class SettingsController extends AdminController { $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')); + $setting->qr_text = e(Input::get('qr_text')); // Was the asset updated? if($setting->save()) diff --git a/app/database/migrations/2014_02_13_183016_add_qr_text_to_settings_table.php b/app/database/migrations/2014_02_13_183016_add_qr_text_to_settings_table.php new file mode 100644 index 0000000000..3930cb21e5 --- /dev/null +++ b/app/database/migrations/2014_02_13_183016_add_qr_text_to_settings_table.php @@ -0,0 +1,34 @@ +string('qr_text', 32)->nullable()->default(NULL); + }); + } + + /** + * Reverse the migrations. + * + * @return void + */ + public function down() + { + Schema::table('settings', function(Blueprint $table) + { + $table->dropColumn('qr_text'); + }); + } + +} diff --git a/app/routes.php b/app/routes.php index 41eb761ad5..c5cd9b92e9 100755 --- a/app/routes.php +++ b/app/routes.php @@ -26,7 +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')); + Route::get('{assetId}/qr_code', 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 6365ec6286..719fe01dd7 100644 --- a/app/views/backend/hardware/view.blade.php +++ b/app/views/backend/hardware/view.blade.php @@ -157,7 +157,7 @@ View Asset {{ $asset->asset_tag }} :: @if ($qr_code->display)
-
+