Merge pull request #138 from refinery29/qr-codes-ftw
Add site setting to define text below asset QR codes
This commit is contained in:
@@ -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;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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())
|
||||
|
||||
@@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddQrTextToSettingsTable extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('settings', function(Blueprint $table)
|
||||
{
|
||||
$table->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');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+1
-1
@@ -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
|
||||
|
||||
@@ -157,7 +157,7 @@ View Asset {{ $asset->asset_tag }} ::
|
||||
@if ($qr_code->display)
|
||||
<h6>QR Code</h6>
|
||||
<p>
|
||||
<img src="{{ $qr_code->url }}" height="{{ $qr_code->height }}" width="{{ $qr_code->width }}" />
|
||||
<img src="{{ $qr_code->url }}" />
|
||||
</p>
|
||||
@endif
|
||||
|
||||
|
||||
@@ -62,6 +62,20 @@
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group {{ $errors->has('qr_text') ? 'error' : '' }}">
|
||||
<label class="control-label" for="qr_text">QR Code Text</label>
|
||||
<div class="controls">
|
||||
@if ($setting->qr_code === '1')
|
||||
<input class="col-md-9" type="text" name="qr_text" id="qr_text" value="{{ Input::old('qr_text', $setting->qr_text) }}" />
|
||||
@else
|
||||
<span class="help-inline">
|
||||
Enable QR Codes first to set this
|
||||
</span>
|
||||
@endif
|
||||
{{ $errors->first('qr_text', '<span class="help-inline">:message</span>') }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
@endforeach
|
||||
|
||||
@@ -51,6 +51,10 @@ Settings ::
|
||||
<td>No</td>
|
||||
@endif
|
||||
</tr>
|
||||
<tr>
|
||||
<td>QR Code Text</td>
|
||||
<td>{{ $setting->qr_text }}</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
Reference in New Issue
Block a user