mirror of
https://github.com/snipe/snipe-it.git
synced 2024-11-10 23:54:12 -08:00
Merge branch 'develop'
This commit is contained in:
commit
e84a6059f4
136
app/Console/Commands/Version.php
Normal file
136
app/Console/Commands/Version.php
Normal file
|
@ -0,0 +1,136 @@
|
||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Console\Commands;
|
||||||
|
|
||||||
|
use Illuminate\Console\Command;
|
||||||
|
|
||||||
|
class Version extends Command
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* The name and signature of the console command.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $signature = 'version:update {--branch=master} {--type=patch}';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The console command description.
|
||||||
|
*
|
||||||
|
* @var string
|
||||||
|
*/
|
||||||
|
protected $description = 'Command description';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a new command instance.
|
||||||
|
*
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public function __construct()
|
||||||
|
{
|
||||||
|
parent::__construct();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Execute the console command.
|
||||||
|
*
|
||||||
|
* @return mixed
|
||||||
|
*/
|
||||||
|
public function handle()
|
||||||
|
{
|
||||||
|
|
||||||
|
$use_branch = $this->option('branch');
|
||||||
|
$use_type = $this->option('type');
|
||||||
|
$git_branch = trim(shell_exec('git rev-parse --abbrev-ref HEAD'));
|
||||||
|
$build_version = trim(shell_exec('git rev-list --count '.$use_branch));
|
||||||
|
$versionFile = 'config/version.php';
|
||||||
|
$full_hash_version = str_replace("\n", '', shell_exec('git describe master --tags'));
|
||||||
|
|
||||||
|
$version = explode('-', $full_hash_version);
|
||||||
|
$app_version = $current_app_version = $version[0];
|
||||||
|
$hash_version = $version[2];
|
||||||
|
$prerelease_version = '';
|
||||||
|
|
||||||
|
$this->line('Branch is: '.$use_branch);
|
||||||
|
$this->line('Type is: '.$use_type);
|
||||||
|
$this->line('Current version is: '.$full_hash_version);
|
||||||
|
|
||||||
|
if (count($version)==3) {
|
||||||
|
$this->line('This does not look like an alpha/beta release.');
|
||||||
|
} else {
|
||||||
|
print_r($version);
|
||||||
|
if (array_key_exists('3',$version)) {
|
||||||
|
$this->line('The current version looks like a beta release.');
|
||||||
|
$prerelease_version = $version[1];
|
||||||
|
$hash_version = $version[3];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
$app_version_raw = explode('.', $app_version);
|
||||||
|
|
||||||
|
$maj = str_replace('v', '', $app_version_raw[0]);
|
||||||
|
$min = $app_version_raw[1];
|
||||||
|
$patch = '';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// This is a major release that might not have a third .0
|
||||||
|
if (array_key_exists(2, $app_version_raw)) {
|
||||||
|
$patch = $app_version_raw[2];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($use_type=='major') {
|
||||||
|
$app_version = "v".($maj + 1).".$min.$patch";
|
||||||
|
} elseif ($use_type=='minor') {
|
||||||
|
$app_version = "v"."$maj.".($min + 1).".$patch";
|
||||||
|
} elseif ($use_type=='pre') {
|
||||||
|
$pre_raw = str_replace('beta','', $prerelease_version);
|
||||||
|
$pre_raw = str_replace('alpha','', $pre_raw);
|
||||||
|
$pre_raw = str_ireplace('rc','', $pre_raw);
|
||||||
|
$pre_raw = $pre_raw++;
|
||||||
|
$this->line('Setting the pre-release to '. $prerelease_version.'-'.$pre_raw);
|
||||||
|
$app_version = "v"."$maj.".($min + 1).".$patch";
|
||||||
|
} elseif ($use_type=='patch') {
|
||||||
|
$app_version = "v" . "$maj.$min." . ($patch + 1);
|
||||||
|
// If nothing is passed, leave the version as it is, just increment the build
|
||||||
|
} else {
|
||||||
|
$app_version = "v" . "$maj.$min." . $patch;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Determine if this tag already exists, or if this prior to a release
|
||||||
|
$this->line('Running: git rev-parse master '.$current_app_version);
|
||||||
|
// $pre_release = trim(shell_exec('git rev-parse '.$use_branch.' '.$current_app_version.' 2>&1 1> /dev/null'));
|
||||||
|
|
||||||
|
if ($use_branch=='develop') {
|
||||||
|
$app_version = $app_version.'-pre';
|
||||||
|
}
|
||||||
|
|
||||||
|
$full_app_version = $app_version.' - build '.$build_version.'-'.$hash_version;
|
||||||
|
|
||||||
|
|
||||||
|
$array = var_export(
|
||||||
|
array(
|
||||||
|
'app_version' => $app_version,
|
||||||
|
'full_app_version' => $full_app_version,
|
||||||
|
'build_version' => $build_version,
|
||||||
|
'prerelease_version' => $prerelease_version,
|
||||||
|
'hash_version' => $hash_version,
|
||||||
|
'full_hash' => $full_hash_version,
|
||||||
|
'branch' => $git_branch),
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
// Construct our file content
|
||||||
|
$content = <<<CON
|
||||||
|
<?php
|
||||||
|
return $array;
|
||||||
|
CON;
|
||||||
|
|
||||||
|
// And finally write the file and output the current version
|
||||||
|
\File::put($versionFile, $content);
|
||||||
|
$this->info('Setting NEW version: '. $full_app_version.' ('.$git_branch.')');
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -1,91 +0,0 @@
|
||||||
<?php
|
|
||||||
|
|
||||||
namespace App\Console\Commands;
|
|
||||||
|
|
||||||
use Symfony\Component\Console\Input\InputArgument;
|
|
||||||
|
|
||||||
use Illuminate\Console\Command;
|
|
||||||
|
|
||||||
class Versioning extends Command
|
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The console command name.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $name = 'versioning:update';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The console command description.
|
|
||||||
*
|
|
||||||
* @var string
|
|
||||||
*/
|
|
||||||
protected $description = 'Generate and update app\'s version via git.';
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new command instance.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
parent::__construct();
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Execute the console command.
|
|
||||||
*
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function fire()
|
|
||||||
{
|
|
||||||
|
|
||||||
$versionFile = 'config/version.php';
|
|
||||||
$hash_version = str_replace("\n", '', shell_exec('git describe --tags'));
|
|
||||||
|
|
||||||
$version = explode('-', $hash_version);
|
|
||||||
|
|
||||||
$array = var_export(
|
|
||||||
array(
|
|
||||||
'app_version' => $version[0],
|
|
||||||
'build_version' => $version[1],
|
|
||||||
'hash_version' => $version[2],
|
|
||||||
'full_hash' => $hash_version),
|
|
||||||
true
|
|
||||||
);
|
|
||||||
|
|
||||||
|
|
||||||
// Construct our file content
|
|
||||||
$content = <<<CON
|
|
||||||
<?php
|
|
||||||
return $array;
|
|
||||||
CON;
|
|
||||||
|
|
||||||
// And finally write the file and output the current version
|
|
||||||
\File::put($versionFile, $content);
|
|
||||||
$this->line('Setting version: '. config('version.app_version').' build '.config('version.build_version').' ('.config('version.hash_version').')');
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the console command arguments.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getArguments()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the console command options.
|
|
||||||
*
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
protected function getOptions()
|
|
||||||
{
|
|
||||||
return array(
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -19,7 +19,7 @@ class Kernel extends ConsoleKernel
|
||||||
Commands\SendInventoryAlerts::class,
|
Commands\SendInventoryAlerts::class,
|
||||||
Commands\SendExpectedCheckinAlerts::class,
|
Commands\SendExpectedCheckinAlerts::class,
|
||||||
Commands\ObjectImportCommand::class,
|
Commands\ObjectImportCommand::class,
|
||||||
Commands\Versioning::class,
|
Commands\Version::class,
|
||||||
Commands\SystemBackup::class,
|
Commands\SystemBackup::class,
|
||||||
Commands\DisableLDAP::class,
|
Commands\DisableLDAP::class,
|
||||||
Commands\Purge::class,
|
Commands\Purge::class,
|
||||||
|
|
|
@ -21,7 +21,7 @@ class CategoriesController extends Controller
|
||||||
public function index(Request $request)
|
public function index(Request $request)
|
||||||
{
|
{
|
||||||
$this->authorize('view', Category::class);
|
$this->authorize('view', Category::class);
|
||||||
$allowed_columns = ['id', 'name','category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count', 'image'];
|
$allowed_columns = ['id', 'name','category_type', 'category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email', 'assets_count', 'accessories_count', 'consumables_count', 'components_count', 'image'];
|
||||||
|
|
||||||
$categories = Category::select(['id', 'created_at', 'updated_at', 'name','category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email','image'])
|
$categories = Category::select(['id', 'created_at', 'updated_at', 'name','category_type','use_default_eula','eula_text', 'require_acceptance','checkin_email','image'])
|
||||||
->withCount('assets', 'accessories', 'consumables', 'components');
|
->withCount('assets', 'accessories', 'consumables', 'components');
|
||||||
|
|
|
@ -50,11 +50,9 @@ class ReportsController extends Controller
|
||||||
$offset = request('offset', 0);
|
$offset = request('offset', 0);
|
||||||
$limit = request('limit', 50);
|
$limit = request('limit', 50);
|
||||||
$total = $actionlogs->count();
|
$total = $actionlogs->count();
|
||||||
$actionlogs = $actionlogs->orderBy($sort, $order);
|
$actionlogs = $actionlogs->orderBy($sort, $order)->skip($offset)->take($limit)->get();
|
||||||
$actionlogs = $actionlogs->skip($offset)->take($limit)->get();
|
|
||||||
return (new ActionlogsTransformer)->transformActionlogs($actionlogs, $total);
|
|
||||||
|
|
||||||
|
|
||||||
|
return response()->json((new ActionlogsTransformer)->transformActionlogs($actionlogs, $total), 200, ['Content-Type' => 'application/json;charset=utf8'], JSON_UNESCAPED_UNICODE);
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1238,8 +1238,9 @@ class AssetsController extends Controller
|
||||||
|
|
||||||
public function audit($id)
|
public function audit($id)
|
||||||
{
|
{
|
||||||
|
$settings = Setting::getSettings();
|
||||||
$this->authorize('audit', Asset::class);
|
$this->authorize('audit', Asset::class);
|
||||||
$dt = Carbon::now()->addMonths(12)->toDateString();
|
$dt = Carbon::now()->addMonths($settings->audit_interval)->toDateString();
|
||||||
$asset = Asset::findOrFail($id);
|
$asset = Asset::findOrFail($id);
|
||||||
return view('hardware/audit')->with('asset', $asset)->with('next_audit_date', $dt)->with('locations_list');
|
return view('hardware/audit')->with('asset', $asset)->with('next_audit_date', $dt)->with('locations_list');
|
||||||
}
|
}
|
||||||
|
|
|
@ -86,24 +86,21 @@ class AssetsTransformer
|
||||||
$decrypted = \App\Helpers\Helper::gracefulDecrypt($field,$asset->{$field->convertUnicodeDbSlug()});
|
$decrypted = \App\Helpers\Helper::gracefulDecrypt($field,$asset->{$field->convertUnicodeDbSlug()});
|
||||||
$value = (Gate::allows('superadmin')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
|
$value = (Gate::allows('superadmin')) ? $decrypted : strtoupper(trans('admin/custom_fields/general.encrypted'));
|
||||||
|
|
||||||
// $fields_array = [$field->convertUnicodeDbSlug() => $value];
|
|
||||||
|
|
||||||
|
|
||||||
$fields_array[$field->name] = [
|
$fields_array[$field->name] = [
|
||||||
'field' => $field->convertUnicodeDbSlug(),
|
'field' => $field->convertUnicodeDbSlug(),
|
||||||
'value' => $value
|
'value' => $value,
|
||||||
|
'field_format' => $field->format,
|
||||||
];
|
];
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
$fields_array[$field->name] = [
|
$fields_array[$field->name] = [
|
||||||
'field' => $field->convertUnicodeDbSlug(),
|
'field' => $field->convertUnicodeDbSlug(),
|
||||||
'value' => $asset->{$field->convertUnicodeDbSlug()}
|
'value' => $asset->{$field->convertUnicodeDbSlug()},
|
||||||
|
'field_format' => $field->format,
|
||||||
];
|
];
|
||||||
//$fields_array = [$field->convertUnicodeDbSlug() => $asset->{$field->convertUnicodeDbSlug()}];
|
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
//array += $fields_array;
|
|
||||||
$array['custom_fields'] = $fields_array;
|
$array['custom_fields'] = $fields_array;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
|
|
|
@ -26,7 +26,7 @@ class CategoriesTransformer
|
||||||
'id' => (int) $category->id,
|
'id' => (int) $category->id,
|
||||||
'name' => e($category->name),
|
'name' => e($category->name),
|
||||||
'image' => ($category->image) ? app('categories_upload_url').e($category->image) : null,
|
'image' => ($category->image) ? app('categories_upload_url').e($category->image) : null,
|
||||||
'type' => e($category->category_type),
|
'category_type' => e($category->category_type),
|
||||||
'eula' => ($category->getEula()) ? true : false,
|
'eula' => ($category->getEula()) ? true : false,
|
||||||
'checkin_email' => ($category->checkin_email =='1') ? true : false,
|
'checkin_email' => ($category->checkin_email =='1') ? true : false,
|
||||||
'require_acceptance' => ($category->require_acceptance =='1') ? true : false,
|
'require_acceptance' => ($category->require_acceptance =='1') ? true : false,
|
||||||
|
|
|
@ -40,7 +40,7 @@ class CategoryPresenter extends Presenter
|
||||||
"visible" => true,
|
"visible" => true,
|
||||||
"formatter" => 'imageFormatter',
|
"formatter" => 'imageFormatter',
|
||||||
],[
|
],[
|
||||||
"field" => "type",
|
"field" => "category_type",
|
||||||
"searchable" => true,
|
"searchable" => true,
|
||||||
"sortable" => true,
|
"sortable" => true,
|
||||||
"title" => trans('general.type'),
|
"title" => trans('general.type'),
|
||||||
|
|
|
@ -1,7 +1,10 @@
|
||||||
<?php
|
<?php
|
||||||
return array (
|
return array (
|
||||||
'app_version' => 'v4.1.5',
|
'app_version' => 'v4.1.6-pre',
|
||||||
'build_version' => '187',
|
'full_app_version' => 'v4.1.6-pre - build 2765-g1d6320a',
|
||||||
'hash_version' => 'gc0293a7',
|
'build_version' => '2765',
|
||||||
'full_hash' => 'v4.1.5-beta2-187-gc0293a7',
|
'prerelease_version' => '',
|
||||||
|
'hash_version' => 'g1d6320a',
|
||||||
|
'full_hash' => 'v4.1.5-2-g1d6320a',
|
||||||
|
'branch' => 'develop',
|
||||||
);
|
);
|
|
@ -255,6 +255,8 @@ $(document).ready(function () {
|
||||||
return datalist.text;
|
return datalist.text;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// This handles the radio button selectors for the checkout-to-foo options
|
||||||
|
// on asset checkout and also on asset edit
|
||||||
$(function() {
|
$(function() {
|
||||||
$('input[name=checkout_to_type]').on("change",function () {
|
$('input[name=checkout_to_type]').on("change",function () {
|
||||||
var assignto_type = $('input[name=checkout_to_type]:checked').val();
|
var assignto_type = $('input[name=checkout_to_type]:checked').val();
|
||||||
|
|
|
@ -219,11 +219,15 @@
|
||||||
id="table"
|
id="table"
|
||||||
data-height="440"
|
data-height="440"
|
||||||
|
|
||||||
data-url="{{ route('api.categories.index') }}">
|
data-url="{{ route('api.categories.index', ['sort' => 'assets_count', 'order' => 'asc']) }}">
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th class="col-sm-2" data-field="name" data-formatter="categoriesLinkFormatter">{{ trans('general.name') }}</th>
|
<th class="col-sm-3" data-field="name" data-formatter="categoriesLinkFormatter" data-sortable="true">{{ trans('general.name') }}</th>
|
||||||
<th class="col-sm-2" data-field="assets_count"><i class="fa fa-barcode"></i></th>
|
<th class="col-sm-3" data-field="category_type" data-sortable="true">{{ trans('general.type') }}</th>
|
||||||
|
<th class="col-sm-1" data-field="assets_count" data-sortable="true"><i class="fa fa-barcode"></i></th>
|
||||||
|
<th class="col-sm-1" data-field="accessories_count" data-sortable="true"><i class="fa fa-keyboard-o"></i></th>
|
||||||
|
<th class="col-sm-1" data-field="consumables_count" data-sortable="true"><i class="fa fa-tint"></i></th>
|
||||||
|
<th class="col-sm-1" data-field="components_count" data-sortable="true"><i class="fa fa-hdd-o"></i></th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
</table>
|
</table>
|
||||||
|
|
|
@ -727,12 +727,12 @@
|
||||||
|
|
||||||
<footer class="main-footer hidden-print">
|
<footer class="main-footer hidden-print">
|
||||||
<div class="pull-right hidden-xs">
|
<div class="pull-right hidden-xs">
|
||||||
<b>Version</b> {{ config('version.app_version') }} build {{ config('version.build_version') }} ({{ config('version.hash_version') }})
|
<b>Version</b> {{ config('version.app_version') }} - build {{ config('version.build_version') }} ({{ config('version.branch') }})
|
||||||
<a target="_blank" class="btn btn-default btn-xs" href="https://snipe-it.readme.io/docs/overview" rel="noopener">User's Manual</a>
|
<a target="_blank" class="btn btn-default btn-xs" href="https://snipe-it.readme.io/docs/overview" rel="noopener">User's Manual</a>
|
||||||
<a target="_blank" class="btn btn-default btn-xs" href="https://snipeitapp.com/support/" rel="noopener">Report a Bug</a>
|
<a target="_blank" class="btn btn-default btn-xs" href="https://snipeitapp.com/support/" rel="noopener">Report a Bug</a>
|
||||||
</div>
|
</div>
|
||||||
<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is an open source
|
<a target="_blank" href="https://snipeitapp.com" rel="noopener">Snipe-IT</a> is an open source
|
||||||
project, made with <i class="fa fa-heart" style="color: #a94442; font-size: 10px"></i> by <a href="https://twitter.com/snipeyhead" rel="noopener">@snipeyhead</a> under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html" rel="noopener">AGPL3 license</a>.
|
project, made with <i class="fa fa-heart" style="color: #a94442; font-size: 10px"></i> by <a href="https://twitter.com/snipeitapp" rel="noopener">@snipeitapp</a> under the <a href="https://www.gnu.org/licenses/agpl-3.0.en.html" rel="noopener">AGPL3 license</a>.
|
||||||
</footer>
|
</footer>
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -354,7 +354,18 @@
|
||||||
// (for example, the locked icon for encrypted fields)
|
// (for example, the locked icon for encrypted fields)
|
||||||
var field_column_plain = field_column.replace(/<(?:.|\n)*?> ?/gm, '');
|
var field_column_plain = field_column.replace(/<(?:.|\n)*?> ?/gm, '');
|
||||||
if ((row.custom_fields) && (row.custom_fields[field_column_plain])) {
|
if ((row.custom_fields) && (row.custom_fields[field_column_plain])) {
|
||||||
|
|
||||||
|
// If the field type needs special formatting, do that here
|
||||||
|
if ((row.custom_fields[field_column_plain].field_format) && (row.custom_fields[field_column_plain].value)) {
|
||||||
|
if (row.custom_fields[field_column_plain].field_format=='URL') {
|
||||||
|
return '<a href="' + row.custom_fields[field_column_plain].value + '" target="_blank" rel="noopener">' + row.custom_fields[field_column_plain].value + '</a>';
|
||||||
|
} else if (row.custom_fields[field_column_plain].field_format=='EMAIL') {
|
||||||
|
return '<a href="mailto:' + row.custom_fields[field_column_plain].value + '">' + row.custom_fields[field_column_plain].value + '</a>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
console.log('NOT a URL!');
|
||||||
return row.custom_fields[field_column_plain].value;
|
return row.custom_fields[field_column_plain].value;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue