Compare commits
56 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
141b0b410b | ||
|
|
d40f06373e | ||
|
|
56753fa4cd | ||
|
|
8a7bafb575 | ||
|
|
82f91cb944 | ||
|
|
41b226e5fc | ||
|
|
ae6048a6ea | ||
|
|
ef41e0060a | ||
|
|
a0f3fc6d76 | ||
|
|
74e647fea7 | ||
|
|
55ee90b25d | ||
|
|
eec445fcf5 | ||
|
|
cef22c3158 | ||
|
|
61fb38087e | ||
|
|
0e93495ca2 | ||
|
|
444e250609 | ||
|
|
77a6f6f400 | ||
|
|
15bfd07f30 | ||
|
|
fecf8015a1 | ||
|
|
79ab0d8dc2 | ||
|
|
b4b6d6b571 | ||
|
|
8c73a47afb | ||
|
|
f82ffe378c | ||
|
|
984c2a8fd4 | ||
|
|
6736b1c4e7 | ||
|
|
d409be6d43 | ||
|
|
e1b33f3087 | ||
|
|
740d5a6846 | ||
|
|
d19df4ded8 | ||
|
|
03a4512406 | ||
|
|
de992e4df3 | ||
|
|
a85251aa83 | ||
|
|
26a1181765 | ||
|
|
cef030cf55 | ||
|
|
2bfa05fd2d | ||
|
|
30904dd019 | ||
|
|
1d0d25db37 | ||
|
|
cbff66c9db | ||
|
|
27231d49ea | ||
|
|
765417c0be | ||
|
|
49a255c8fb | ||
|
|
925d3a23c6 | ||
|
|
6966c132d0 | ||
|
|
c29ab90029 | ||
|
|
d2bbc09892 | ||
|
|
74a2c29bc2 | ||
|
|
2c64739e8f | ||
|
|
37f950ab42 | ||
|
|
b07a254e60 | ||
|
|
087cdd859e | ||
|
|
829d44bd27 | ||
|
|
db76090e10 | ||
|
|
03cf3b5431 | ||
|
|
40f101d471 | ||
|
|
7aa6ef5f6c | ||
|
|
186b94751d |
@@ -43,6 +43,7 @@ MAIL_FROM_ADDR=you@example.com
|
||||
MAIL_FROM_NAME='Snipe-IT'
|
||||
MAIL_REPLYTO_ADDR=you@example.com
|
||||
MAIL_REPLYTO_NAME='Snipe-IT'
|
||||
MAIL_BACKUP_NOTIFICATION_ADDRESS=you@example.com
|
||||
|
||||
# --------------------------------------------
|
||||
# REQUIRED: IMAGE LIBRARY
|
||||
@@ -65,6 +66,7 @@ SECURE_COOKIES=false
|
||||
# --------------------------------------------
|
||||
REFERRER_POLICY=same-origin
|
||||
ENABLE_CSP=false
|
||||
CORS_ALLOWED_ORIGINS=null
|
||||
|
||||
# --------------------------------------------
|
||||
# OPTIONAL: CACHE SETTINGS
|
||||
|
||||
28
Dockerfile
28
Dockerfile
@@ -1,19 +1,21 @@
|
||||
FROM ubuntu:xenial
|
||||
MAINTAINER Brady Wetherington <uberbrady@gmail.com>
|
||||
LABEL maintainer="uberbrady, hinchk"
|
||||
|
||||
RUN apt-get update && apt-get install -y software-properties-common
|
||||
RUN LC_ALL=C.UTF-8 add-apt-repository -y ppa:ondrej/php
|
||||
RUN apt-get update && apt-get install -y \
|
||||
apache2 \
|
||||
apache2-bin \
|
||||
libapache2-mod-php7.0 \
|
||||
php7.0-curl \
|
||||
php7.0-ldap \
|
||||
php7.0-mysql \
|
||||
php7.0-mcrypt \
|
||||
php7.0-gd \
|
||||
php7.0-xml \
|
||||
php7.0-mbstring \
|
||||
php7.0-zip \
|
||||
php7.0-bcmath \
|
||||
libapache2-mod-php7.1 \
|
||||
php7.1-curl \
|
||||
php7.1-ldap \
|
||||
php7.1-mysql \
|
||||
php7.1-mcrypt \
|
||||
php7.1-gd \
|
||||
php7.1-xml \
|
||||
php7.1-mbstring \
|
||||
php7.1-zip \
|
||||
php7.1-bcmath \
|
||||
patch \
|
||||
curl \
|
||||
vim \
|
||||
@@ -27,8 +29,8 @@ RUN phpenmod mcrypt
|
||||
RUN phpenmod gd
|
||||
RUN phpenmod bcmath
|
||||
|
||||
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.0/apache2/php.ini
|
||||
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.0/cli/php.ini
|
||||
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.1/apache2/php.ini
|
||||
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php/7.1/cli/php.ini
|
||||
|
||||
RUN useradd -m --uid 1000 --gid 50 docker
|
||||
|
||||
|
||||
@@ -48,60 +48,90 @@ class ImportLocations extends Command
|
||||
$filename = $this->argument('filename');
|
||||
$csv = Reader::createFromPath(storage_path('private_uploads/imports/').$filename, 'r');
|
||||
$this->info('Attempting to process: '.storage_path('private_uploads/imports/').$filename);
|
||||
$csv->setOffset(1); //because we don't want to insert the header
|
||||
$csv->setHeaderOffset(0); //because we don't want to insert the header
|
||||
$results = $csv->getRecords();
|
||||
|
||||
// Import parent location names first if they don't exist
|
||||
foreach ($results as $parent_index => $parent_row) {
|
||||
|
||||
$parent_name = trim($parent_row['Parent Name']);
|
||||
// First create any parents if they don't exist
|
||||
|
||||
if ($parent_name!='') {
|
||||
if (array_key_exists('Parent Name', $parent_row)) {
|
||||
$parent_name = trim($parent_row['Parent Name']);
|
||||
if (array_key_exists('Name', $parent_row)) {
|
||||
$this->info('- Parent: ' . $parent_name . ' in row as: ' . trim($parent_row['Parent Name']));
|
||||
}
|
||||
|
||||
// Save parent location name
|
||||
// This creates a sort of name-stub that we'll update later on in this script
|
||||
$parent_location = Location::firstOrCreate(array('name' => $parent_name));
|
||||
$this->info('Parent for '.$parent_row['Name'].' is '.$parent_name.'. Attempting to save '.$parent_name.'.');
|
||||
if (array_key_exists('Name', $parent_row)) {
|
||||
$this->info('Parent for ' . $parent_row['Name'] . ' is ' . $parent_name . '. Attempting to save ' . $parent_name . '.');
|
||||
}
|
||||
|
||||
// Check if the record was updated or created.
|
||||
// This is mostly for clearer debugging.
|
||||
if ($parent_location->exists) {
|
||||
$this->info('- Parent location '.$parent_name.' already exists.');
|
||||
$this->info('- Parent location '.$parent_name.' already exists.');
|
||||
} else {
|
||||
$this->info('- Parent location '.$parent_name.' was created.');
|
||||
}
|
||||
|
||||
} else {
|
||||
$this->info('- No parent location for '.$parent_row['Name'].' provided.');
|
||||
$this->info('- No Parent Name provided, so no parent location will be created.');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$this->info('----- Parents Created.... backfilling additional details... --------');
|
||||
// Loop through ALL records and add/update them if there are additional fields
|
||||
// besides name
|
||||
foreach ($results as $index => $row) {
|
||||
|
||||
if (array_key_exists('Parent Name', $row)) {
|
||||
$parent_name = trim($row['Parent Name']);
|
||||
}
|
||||
|
||||
// Set the location attributes to save
|
||||
$location = Location::firstOrNew(array('name' => trim($row['Name'])));
|
||||
$location->name = trim($row['Name']);
|
||||
$location->currency = trim($row['Currency']);
|
||||
$location->address = trim($row['Address 1']);
|
||||
$location->address2 = trim($row['Address 2']);
|
||||
$location->city = trim($row['City']);
|
||||
$location->state = trim($row['State']);
|
||||
$location->zip = trim($row['Zip']);
|
||||
$location->country = trim($row['Country']);
|
||||
$location->ldap_ou = trim($row['OU']);
|
||||
if (array_key_exists('Name', $row)) {
|
||||
$location = Location::firstOrNew(array('name' => trim($row['Name'])));
|
||||
$location->name = trim($row['Name']);
|
||||
$this->info('Checking location: '.$location->name);
|
||||
} else {
|
||||
$this->error('Location name is required and is missing from at least one row in this dataset. Check your CSV for extra trailing rows and try again.');
|
||||
return false;
|
||||
}
|
||||
if (array_key_exists('Currency', $row)) {
|
||||
$location->currency = trim($row['Currency']);
|
||||
}
|
||||
if (array_key_exists('Address 1', $row)) {
|
||||
$location->address = trim($row['Address 1']);
|
||||
}
|
||||
if (array_key_exists('Address 2', $row)) {
|
||||
$location->address2 = trim($row['Address 2']);
|
||||
}
|
||||
if (array_key_exists('City', $row)) {
|
||||
$location->city = trim($row['City']);
|
||||
}
|
||||
if (array_key_exists('State', $row)) {
|
||||
$location->state = trim($row['State']);
|
||||
}
|
||||
if (array_key_exists('Zip', $row)) {
|
||||
$location->zip = trim($row['Zip']);
|
||||
}
|
||||
if (array_key_exists('Country', $row)) {
|
||||
$location->country = trim($row['Country']);
|
||||
}
|
||||
if (array_key_exists('Country', $row)) {
|
||||
$location->ldap_ou = trim($row['OU']);
|
||||
}
|
||||
|
||||
$this->info('Checking location: '.$location->name);
|
||||
|
||||
// If a parent name nis provided, we created it earlier in the script,
|
||||
// If a parent name is provided, we created it earlier in the script,
|
||||
// so let's grab that ID
|
||||
if ($parent_name) {
|
||||
$this->info('-- Searching for Parent Name: '.$parent_name);
|
||||
$parent = Location::where('name', '=', $parent_name)->first();
|
||||
$location->parent_id = $parent->id;
|
||||
$this->info('Parent ID: '.$parent->id);
|
||||
$this->info('Parent: '.$parent_name.' - ID: '.$parent->id);
|
||||
}
|
||||
|
||||
// Make sure the more advanced (non-name) fields pass validation
|
||||
|
||||
@@ -33,7 +33,7 @@ class Purge extends Command
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'Purge all soft-deleted deleted records in the database. This will rewrite history for items that have been edited, or checked in or out. It will also reqrite history for users associated with deleted items.';
|
||||
protected $description = 'Purge all soft-deleted deleted records in the database. This will rewrite history for items that have been edited, or checked in or out. It will also rewrite history for users associated with deleted items.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
|
||||
126
app/Console/Commands/ReEncodeCustomFieldNames.php
Normal file
126
app/Console/Commands/ReEncodeCustomFieldNames.php
Normal file
@@ -0,0 +1,126 @@
|
||||
<?php
|
||||
|
||||
namespace App\Console\Commands;
|
||||
|
||||
use App\Models\CustomField;
|
||||
use Illuminate\Console\Command;
|
||||
|
||||
class ReEncodeCustomFieldNames extends Command
|
||||
{
|
||||
/**
|
||||
* The name and signature of the console command.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $signature = 'snipeit:regenerate-fieldnames';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'This utility will regenerate the column names for custom fields. It should typically only be needed when a PHP upgrade changed the behavior of the unicode conversion between versions.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* All three of these things must match for the custom fields system to work as expected:
|
||||
*
|
||||
* - what the system thinks the output of $field->convertUnicodeDbSlug() is
|
||||
* - the actual db_column name in the customfields table
|
||||
* - the physical column name that was created on the assets table
|
||||
*
|
||||
* For some people who upgraded their version of PHP, the unicode converter now behaves
|
||||
* differently in than it did when their custom fields were first created, specifically as it
|
||||
* relates to handling slashes, ampersands, etc. This can result in the field names no longer
|
||||
* matching up, as an older version of the PHP extension simply dropped slashes, etc, while the
|
||||
* newer version of the PHP extension will convert them to underscores.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function handle()
|
||||
{
|
||||
|
||||
if ($this->confirm('This will regenerate all of the custom field database fieldnames in your database. THIS WILL CHANGE YOUR SCHEMA AND SHOULD NOT BE DONE WITHOUT MAKING A BACKUP FIRST. Do you wish to continue?'))
|
||||
{
|
||||
|
||||
/** Get all of the custom fields */
|
||||
$fields = CustomField::get();
|
||||
|
||||
$asset_columns = \DB::getSchemaBuilder()->getColumnListing('assets');
|
||||
$custom_field_columns = array();
|
||||
|
||||
/** Loop through the columns on the assets table */
|
||||
foreach ($asset_columns as $asset_column) {
|
||||
|
||||
/** Add ones that start with _snipeit_ to an array for handling */
|
||||
if (strpos($asset_column, '_snipeit_') === 0) {
|
||||
|
||||
/**
|
||||
* Get the ID of the custom field based on the fieldname.
|
||||
* For example, in _snipeit_mac_address_1, we grab the 1 because we know
|
||||
* that's the ID of the custom field that created the column.
|
||||
* Then use that ID as the array key for use comparing the actual assets field name
|
||||
* and the db_column value from the custom fields table.
|
||||
*/
|
||||
$last_part = substr(strrchr($asset_column, "_snipeit_"), 1);
|
||||
$custom_field_columns[$last_part] = $asset_column;
|
||||
}
|
||||
}
|
||||
|
||||
foreach ($fields as $field) {
|
||||
|
||||
$this->info($field->name .' ('.$field->id.') column should be '. $field->convertUnicodeDbSlug().'');
|
||||
|
||||
/** The assets table has the column it should have, all is well */
|
||||
if (\Schema::hasColumn('assets', $field->convertUnicodeDbSlug()))
|
||||
{
|
||||
$this->info('-- ✓ This field exists - all good');
|
||||
|
||||
/**
|
||||
* There is a mismatch between the fieldname on the assets table and
|
||||
* what $field->convertUnicodeDbSlug() is *now* expecting.
|
||||
*/
|
||||
} else {
|
||||
$this->warn('-- X Field mismatch: updating... ');
|
||||
|
||||
/** Make sure the custom_field_columns array has the ID */
|
||||
if (array_key_exists($field->id, $custom_field_columns)) {
|
||||
|
||||
/**
|
||||
* Update the asset schema to the corrected fieldname that will be recognized by the
|
||||
* system elsewhere that we use $field->convertUnicodeDbSlug()
|
||||
*/
|
||||
\Schema::table('assets', function($table) use ($custom_field_columns, $field) {
|
||||
$table->renameColumn($custom_field_columns[$field->id], $field->convertUnicodeDbSlug());
|
||||
});
|
||||
|
||||
$this->warn('-- ✓ Field updated from '.$custom_field_columns[$field->id].' to '.$field->convertUnicodeDbSlug());
|
||||
|
||||
} else {
|
||||
$this->warn('-- X WARNING: There is no field on the assets table ending in '.$field->id.'. This may require more in-depth investigation and may mean the schema was altered manually.');
|
||||
}
|
||||
}
|
||||
|
||||
/** Update the db_column property in the custom fields table, just in case it doesn't match the other
|
||||
* things.
|
||||
*/
|
||||
$field->db_column = $field->convertUnicodeDbSlug();
|
||||
$field->save();
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Console;
|
||||
|
||||
use App\Console\Commands\ImportLocations;
|
||||
use App\Console\Commands\RestoreDeletedUsers;
|
||||
use Illuminate\Console\Scheduling\Schedule;
|
||||
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
|
||||
@@ -34,6 +35,7 @@ class Kernel extends ConsoleKernel
|
||||
Commands\RestoreDeletedUsers::class,
|
||||
Commands\SendUpcomingAuditReport::class,
|
||||
Commands\ImportLocations::class,
|
||||
Commands\ReEncodeCustomFieldNames::class,
|
||||
];
|
||||
|
||||
/**
|
||||
|
||||
@@ -67,10 +67,6 @@ class Handler extends ExceptionHandler
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $className . ' not found'), 200);
|
||||
}
|
||||
|
||||
if ($e instanceof \Illuminate\Validation\ValidationException) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $e->response['messages'], 400));
|
||||
}
|
||||
|
||||
if ($this->isHttpException($e)) {
|
||||
|
||||
$statusCode = $e->getStatusCode();
|
||||
@@ -85,11 +81,6 @@ class Handler extends ExceptionHandler
|
||||
|
||||
}
|
||||
}
|
||||
// Try to parse 500 Errors in a bit nicer way when debug is enabled.
|
||||
if (config('app.debug')) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, "An Error has occured! " . $e->getMessage()), 500);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -128,6 +119,6 @@ class Handler extends ExceptionHandler
|
||||
*/
|
||||
protected function invalidJson($request, ValidationException $exception)
|
||||
{
|
||||
return response()->json($exception->errors(), $exception->status);
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, $exception->errors(), 400));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,7 +165,7 @@ class ConsumablesController extends Controller
|
||||
{
|
||||
$consumable = Consumable::with(array('consumableAssignments'=>
|
||||
function ($query) {
|
||||
$query->orderBy('created_at', 'DESC');
|
||||
$query->orderBy($query->getModel()->getTable().'.created_at', 'DESC');
|
||||
},
|
||||
'consumableAssignments.admin'=> function ($query) {
|
||||
},
|
||||
|
||||
@@ -38,7 +38,7 @@ class SettingsController extends Controller
|
||||
//return response()->json(['message' => $e->getMessage()], 500);
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
\Log::debug('Connection failed');
|
||||
\Log::debug('Connection failed but we cannot debug it any further on our end.');
|
||||
return response()->json(['message' => $e->getMessage()], 600);
|
||||
}
|
||||
|
||||
|
||||
@@ -260,12 +260,21 @@ class UsersController extends Controller
|
||||
|
||||
if ($user->save()) {
|
||||
|
||||
// Sync group memberships:
|
||||
// This was changed in Snipe-IT v4.6.x to 4.7, since we upgraded to Laravel 5.5
|
||||
// which changes the behavior of has vs filled.
|
||||
// The $request->has method will now return true even if the input value is an empty string or null.
|
||||
// A new $request->filled method has was added that provides the previous behavior of the has method.
|
||||
|
||||
// Check if the request has groups passed and has a value
|
||||
if ($request->filled('groups')) {
|
||||
$user->groups()->sync($request->input('groups'));
|
||||
} else {
|
||||
// The groups field has been passed but it is null, so we should blank it out
|
||||
} elseif ($request->has('groups')) {
|
||||
$user->groups()->sync(array());
|
||||
}
|
||||
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('success', (new UsersTransformer)->transformUser($user), trans('admin/users/message.success.update')));
|
||||
}
|
||||
|
||||
@@ -287,10 +296,23 @@ class UsersController extends Controller
|
||||
$this->authorize('delete', $user);
|
||||
|
||||
|
||||
if ($user->assets()->count() > 0) {
|
||||
if (($user->assets) && ($user->assets->count() > 0)) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/users/message.error.delete_has_assets')));
|
||||
}
|
||||
|
||||
if (($user->licenses) && ($user->licenses->count() > 0)) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->licenses->count() . ' license(s) associated with them and cannot be deleted.'));
|
||||
}
|
||||
|
||||
if (($user->accessories) && ($user->accessories->count() > 0)) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->accessories->count() . ' accessories associated with them.'));
|
||||
}
|
||||
|
||||
if (($user->managedLocations()) && ($user->managedLocations()->count() > 0)) {
|
||||
return response()->json(Helper::formatStandardApiResponse('error', null, 'This user still has ' . $user->managedLocations()->count() . ' locations that they manage.'));
|
||||
}
|
||||
|
||||
|
||||
if ($user->delete()) {
|
||||
return response()->json(Helper::formatStandardApiResponse('success', null, trans('admin/users/message.success.delete')));
|
||||
}
|
||||
|
||||
@@ -93,7 +93,7 @@ class AssetCheckinController extends Controller
|
||||
$data['model_name'] = $asset->model->name;
|
||||
$data['model_number'] = $asset->model->model_number;
|
||||
|
||||
if (($user) && ($backto =='user')) {
|
||||
if ((isset($user)) && ($backto =='user')) {
|
||||
return redirect()->route("users.show", $user->id)->with('success', trans('admin/hardware/message.checkin.success'));
|
||||
}
|
||||
return redirect()->route("hardware.index")->with('success', trans('admin/hardware/message.checkin.success'));
|
||||
|
||||
@@ -28,7 +28,6 @@ class AssetCheckoutController extends Controller
|
||||
{
|
||||
// Check if the asset exists
|
||||
if (is_null($asset = Asset::find(e($assetId)))) {
|
||||
// Redirect to the asset management page with error
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.does_not_exist'));
|
||||
}
|
||||
|
||||
@@ -39,7 +38,6 @@ class AssetCheckoutController extends Controller
|
||||
}
|
||||
return redirect()->route('hardware.index')->with('error', trans('admin/hardware/message.checkout.not_available'));
|
||||
|
||||
// Get the dropdown of users and then pass it to the checkout view
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -137,7 +137,7 @@ class BulkAssetsController extends Controller
|
||||
*/
|
||||
protected function conditionallyAddItem($field)
|
||||
{
|
||||
if(request()->has($field)) {
|
||||
if(request()->filled($field)) {
|
||||
$this->update_array[$field] = request()->input($field);
|
||||
}
|
||||
return $this;
|
||||
|
||||
@@ -865,7 +865,7 @@ class SettingsController extends Controller
|
||||
$setting->ldap_server = $request->input('ldap_server');
|
||||
$setting->ldap_server_cert_ignore = $request->input('ldap_server_cert_ignore', false);
|
||||
$setting->ldap_uname = $request->input('ldap_uname');
|
||||
if (Input::has('ldap_pword')) {
|
||||
if (Input::filled('ldap_pword')) {
|
||||
$setting->ldap_pword = Crypt::encrypt($request->input('ldap_pword'));
|
||||
}
|
||||
$setting->ldap_basedn = $request->input('ldap_basedn');
|
||||
@@ -1012,7 +1012,7 @@ class SettingsController extends Controller
|
||||
|
||||
if (!config('app.lock_passwords')) {
|
||||
|
||||
$path = storage_path().'/app/'.config('laravel-backup.backup.name');
|
||||
$path = storage_path().'/app/'.config('backup.backup.name');
|
||||
$file = $path.'/'.$filename;
|
||||
if (file_exists($file)) {
|
||||
unlink($file);
|
||||
|
||||
@@ -340,25 +340,25 @@ class UsersController extends Controller
|
||||
// Check if we are not trying to delete ourselves
|
||||
if ($user->id === Auth::user()->id) {
|
||||
// Redirect to the user management page
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->assets()->count() . ' assets associated with them.');
|
||||
return redirect()->route('users.index')->with('error', 'You cannot delete yourself.');
|
||||
}
|
||||
|
||||
if ($user->assets->count() > 0) {
|
||||
if (($user->assets) && ($user->assets->count() > 0)) {
|
||||
// Redirect to the user management page
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . count($user->assets->count()) . ' assets associated with them.');
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->assets->count() . ' assets associated with them. Use the Checkin and Delete button on the user profile to check these items back in and delete this user.');
|
||||
}
|
||||
|
||||
if ($user->licenses()->count() > 0) {
|
||||
if (($user->licenses) && ($user->licenses->count() > 0)) {
|
||||
// Redirect to the user management page
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->assets()->count() . ' assets associated with them.');
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->licenses->count() . ' license(s associated with them. Use the Checkin and Delete button on the user profile to check these items back in and delete this user.');
|
||||
}
|
||||
|
||||
if ($user->accessories()->count() > 0) {
|
||||
if (($user->accessories) && ($user->accessories->count() > 0)) {
|
||||
// Redirect to the user management page
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->accessories()->count() . ' accessories associated with them.');
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->accessories->count() . ' accessories associated with them. Use the Checkin and Delete button on the user profile to check these items back in and delete this user.');
|
||||
}
|
||||
|
||||
if ($user->managedLocations()->count() > 0) {
|
||||
if (($user->managedLocations()) && ($user->managedLocations()->count() > 0)) {
|
||||
// Redirect to the user management page
|
||||
return redirect()->route('users.index')->with('error', 'This user still has ' . $user->managedLocations()->count() . ' locations that they manage.');
|
||||
}
|
||||
|
||||
@@ -44,7 +44,8 @@ class Kernel extends HttpKernel
|
||||
],
|
||||
|
||||
'api' => [
|
||||
'throttle:60,1',
|
||||
\Barryvdh\Cors\HandleCors::class,
|
||||
'throttle:120,1',
|
||||
'auth:api',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -4,7 +4,7 @@ namespace App\Http\Requests;
|
||||
|
||||
use App\Models\AssetModel;
|
||||
use Session;
|
||||
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
@@ -32,7 +32,7 @@ class AssetRequest extends Request
|
||||
'model_id' => 'required|integer|exists:models,id',
|
||||
'status_id' => 'required|integer|exists:status_labels,id',
|
||||
'company_id' => 'integer|nullable',
|
||||
'warranty_months' => 'numeric|nullable',
|
||||
'warranty_months' => 'numeric|nullable|digits_between:0,240',
|
||||
'physical' => 'integer|nullable',
|
||||
'checkout_date' => 'date',
|
||||
'checkin_date' => 'date',
|
||||
@@ -48,7 +48,7 @@ class AssetRequest extends Request
|
||||
|
||||
$rules['asset_tag'] = ($settings->auto_increment_assets == '1') ? 'max:255' : 'required';
|
||||
|
||||
if($this->request->get('model_id') != '') {
|
||||
if ($this->request->get('model_id') != '') {
|
||||
$model = AssetModel::find($this->request->get('model_id'));
|
||||
|
||||
if (($model) && ($model->fieldset)) {
|
||||
@@ -60,13 +60,6 @@ class AssetRequest extends Request
|
||||
|
||||
}
|
||||
|
||||
public function response(array $errors)
|
||||
{
|
||||
$this->session()->flash('errors', Session::get('errors', new \Illuminate\Support\ViewErrorBag)
|
||||
->put('default', new \Illuminate\Support\MessageBag($errors)));
|
||||
\Input::flash();
|
||||
return parent::response($errors);
|
||||
}
|
||||
|
||||
/**
|
||||
* Handle a failed validation attempt.
|
||||
@@ -76,13 +69,17 @@ class AssetRequest extends Request
|
||||
* @param \Illuminate\Contracts\Validation\Validator $validator
|
||||
* @return void
|
||||
*
|
||||
* @throws \Illuminate\Validation\ValidationException
|
||||
* @throws \Illuminate\Http\Exceptions\HttpResponseException
|
||||
*/
|
||||
protected function failedValidation(Validator $validator)
|
||||
{
|
||||
return response()->json([
|
||||
'message' => 'The given data is invalid',
|
||||
'errors' => $validator->errors()
|
||||
], 422);
|
||||
$this->session()->flash('errors', Session::get('errors', new \Illuminate\Support\ViewErrorBag)
|
||||
->put('default', new \Illuminate\Support\MessageBag($validator->errors()->toArray())));
|
||||
\Input::flash();
|
||||
throw new HttpResponseException(response()->json([
|
||||
'status' => 'error',
|
||||
'messages' => $validator->errors(),
|
||||
'payload' => null
|
||||
], 422));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -2,10 +2,12 @@
|
||||
|
||||
namespace App\Http\Requests;
|
||||
|
||||
use App\Http\Requests\Request;
|
||||
use App\Models\Setting;
|
||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||
use Illuminate\Foundation\Http\FormRequest;
|
||||
use Illuminate\Contracts\Validation\Validator;
|
||||
|
||||
class SaveUserRequest extends Request
|
||||
class SaveUserRequest extends FormRequest
|
||||
{
|
||||
/**
|
||||
* Determine if the user is authorized to make this request.
|
||||
@@ -62,4 +64,5 @@ class SaveUserRequest extends Request
|
||||
return $rules;
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -75,7 +75,7 @@ class Asset extends Depreciable
|
||||
'model_id' => 'required|integer|exists:models,id',
|
||||
'status_id' => 'required|integer|exists:status_labels,id',
|
||||
'company_id' => 'integer|nullable',
|
||||
'warranty_months' => 'numeric|nullable',
|
||||
'warranty_months' => 'numeric|nullable|digits_between:0,240',
|
||||
'physical' => 'numeric|max:1|nullable',
|
||||
'checkout_date' => 'date|max:10|min:10|nullable',
|
||||
'checkin_date' => 'date|max:10|min:10|nullable',
|
||||
@@ -866,8 +866,10 @@ class Asset extends Depreciable
|
||||
|
||||
public function scopeDueOrOverdueForAudit($query, $settings)
|
||||
{
|
||||
$interval = $settings->audit_warning_days ?? 0;
|
||||
|
||||
return $query->whereNotNull('assets.next_audit_date')
|
||||
->whereRaw("DATE_SUB(assets.next_audit_date, INTERVAL $settings->audit_warning_days DAY) <= '".Carbon::now()."'")
|
||||
->whereRaw("DATE_SUB(assets.next_audit_date, INTERVAL $interval DAY) <= '".Carbon::now()."'")
|
||||
->where('assets.archived', '=', 0)
|
||||
->NotArchived();
|
||||
}
|
||||
|
||||
@@ -80,7 +80,13 @@ final class Company extends SnipeModel
|
||||
}
|
||||
|
||||
$table = ($table_name) ? DB::getTablePrefix().$table_name."." : '';
|
||||
return $query->where($table.$column, '=', $company_id);
|
||||
|
||||
if(\Schema::hasColumn($query->getModel()->getTable(), $column)){
|
||||
return $query->where($table.$column, '=', $company_id);
|
||||
} else {
|
||||
return $query->join('users as users_comp', 'users_comp.id', 'user_id')->where('users_comp.company_id', '=', $company_id);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
public static function getIdFromInput($unescaped_input)
|
||||
|
||||
@@ -7,10 +7,10 @@ use Watson\Validating\ValidatingTrait;
|
||||
|
||||
class Group extends SnipeModel
|
||||
{
|
||||
protected $table = 'groups';
|
||||
protected $table = 'permission_groups';
|
||||
|
||||
public $rules = array(
|
||||
'name' => 'required|min:3|max:255',
|
||||
'name' => 'required|min:2|max:255',
|
||||
);
|
||||
|
||||
/**
|
||||
|
||||
@@ -491,7 +491,7 @@ class User extends SnipeModel implements AuthenticatableContract, CanResetPasswo
|
||||
|
||||
public function scopeByGroup($query, $id) {
|
||||
return $query->whereHas('groups', function ($query) use ($id) {
|
||||
$query->where('groups.id', '=', $id);
|
||||
$query->where('permission_groups.id', '=', $id);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
@@ -6,6 +6,7 @@
|
||||
"type": "project",
|
||||
"require": {
|
||||
"php": ">=7.1.2",
|
||||
"barryvdh/laravel-cors": "^0.11.3",
|
||||
"barryvdh/laravel-debugbar": "^3.2",
|
||||
"doctrine/cache": "^1.8",
|
||||
"doctrine/common": "^2.10",
|
||||
@@ -31,7 +32,7 @@
|
||||
"pragmarx/google2fa": "^5.0",
|
||||
"pragmarx/google2fa-laravel": "^1.0",
|
||||
"predis/predis": "^1.1",
|
||||
"rollbar/rollbar-laravel": "^4.0",
|
||||
"rollbar/rollbar-laravel": "2.*",
|
||||
"schuppo/password-strength": "~1.5",
|
||||
"spatie/laravel-backup": "^5.12",
|
||||
"tecnickcom/tc-lib-barcode": "^1.15",
|
||||
|
||||
138
composer.lock
generated
138
composer.lock
generated
@@ -4,8 +4,60 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "3a44e6e940451424e4b9fa7068e604c5",
|
||||
"content-hash": "83584cbcfed9d4b063847283c0472606",
|
||||
"packages": [
|
||||
{
|
||||
"name": "asm89/stack-cors",
|
||||
"version": "1.2.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/asm89/stack-cors.git",
|
||||
"reference": "c163e2b614550aedcf71165db2473d936abbced6"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/asm89/stack-cors/zipball/c163e2b614550aedcf71165db2473d936abbced6",
|
||||
"reference": "c163e2b614550aedcf71165db2473d936abbced6",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=5.5.9",
|
||||
"symfony/http-foundation": "~2.7|~3.0|~4.0",
|
||||
"symfony/http-kernel": "~2.7|~3.0|~4.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^5.0 || ^4.8.10",
|
||||
"squizlabs/php_codesniffer": "^2.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "1.2-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Asm89\\Stack\\": "src/Asm89/Stack/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Alexander",
|
||||
"email": "iam.asm89@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Cross-origin resource sharing library and stack middleware",
|
||||
"homepage": "https://github.com/asm89/stack-cors",
|
||||
"keywords": [
|
||||
"cors",
|
||||
"stack"
|
||||
],
|
||||
"time": "2017-12-20T14:37:45+00:00"
|
||||
},
|
||||
{
|
||||
"name": "bacon/bacon-qr-code",
|
||||
"version": "2.0.0",
|
||||
@@ -55,6 +107,68 @@
|
||||
"homepage": "https://github.com/Bacon/BaconQrCode",
|
||||
"time": "2018-04-25T17:53:56+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-cors",
|
||||
"version": "v0.11.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-cors.git",
|
||||
"reference": "c95ac944f2f20a17949aae6645692dfd3b402bca"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-cors/zipball/c95ac944f2f20a17949aae6645692dfd3b402bca",
|
||||
"reference": "c95ac944f2f20a17949aae6645692dfd3b402bca",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"asm89/stack-cors": "^1.2",
|
||||
"illuminate/support": "5.5.x|5.6.x|5.7.x|5.8.x",
|
||||
"php": ">=7",
|
||||
"symfony/http-foundation": "^3.1|^4",
|
||||
"symfony/http-kernel": "^3.1|^4"
|
||||
},
|
||||
"require-dev": {
|
||||
"laravel/framework": "^5.5",
|
||||
"orchestra/testbench": "3.3.x|3.4.x|3.5.x|3.6.x|3.7.x",
|
||||
"phpunit/phpunit": "^4.8|^5.2|^7.0",
|
||||
"squizlabs/php_codesniffer": "^2.3"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "0.11-dev"
|
||||
},
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Barryvdh\\Cors\\ServiceProvider"
|
||||
]
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\Cors\\": "src/"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Adds CORS (Cross-Origin Resource Sharing) headers support in your Laravel application",
|
||||
"keywords": [
|
||||
"api",
|
||||
"cors",
|
||||
"crossdomain",
|
||||
"laravel"
|
||||
],
|
||||
"time": "2019-02-26T18:08:30+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/laravel-debugbar",
|
||||
"version": "v3.2.3",
|
||||
@@ -3864,29 +3978,29 @@
|
||||
},
|
||||
{
|
||||
"name": "rollbar/rollbar-laravel",
|
||||
"version": "v4.0.3",
|
||||
"version": "v2.4.3",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/rollbar/rollbar-php-laravel.git",
|
||||
"reference": "e4ea0343e32748123ee7d7da8c6bf98593c5f74c"
|
||||
"reference": "e581cd9a175d0b3fa0568893026e38c1d94329b2"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/rollbar/rollbar-php-laravel/zipball/e4ea0343e32748123ee7d7da8c6bf98593c5f74c",
|
||||
"reference": "e4ea0343e32748123ee7d7da8c6bf98593c5f74c",
|
||||
"url": "https://api.github.com/repos/rollbar/rollbar-php-laravel/zipball/e581cd9a175d0b3fa0568893026e38c1d94329b2",
|
||||
"reference": "e581cd9a175d0b3fa0568893026e38c1d94329b2",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"illuminate/support": "^5.0",
|
||||
"php": ">=7.0",
|
||||
"illuminate/support": "^4.0|^5.0",
|
||||
"php": ">=5.4",
|
||||
"rollbar/rollbar": "^1"
|
||||
},
|
||||
"require-dev": {
|
||||
"mockery/mockery": "^1",
|
||||
"orchestra/testbench": "~3.6",
|
||||
"phpunit/phpunit": "~7.0",
|
||||
"mockery/mockery": "^0.9",
|
||||
"orchestra/testbench": "~3.0",
|
||||
"phpunit/phpunit": "~4.0|~5.0",
|
||||
"satooshi/php-coveralls": "^1.0",
|
||||
"squizlabs/php_codesniffer": "3.*"
|
||||
"squizlabs/php_codesniffer": "2.*"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
@@ -3928,7 +4042,7 @@
|
||||
"monitoring",
|
||||
"rollbar"
|
||||
],
|
||||
"time": "2019-01-01T18:39:35+00:00"
|
||||
"time": "2019-01-01T22:20:05+00:00"
|
||||
},
|
||||
{
|
||||
"name": "schuppo/password-strength",
|
||||
|
||||
@@ -132,7 +132,7 @@ return [
|
||||
'notifiable' => \Spatie\Backup\Notifications\Notifiable::class,
|
||||
|
||||
'mail' => [
|
||||
'to' => 'your@example.com',
|
||||
'to' => env('MAIL_BACKUP_NOTIFICATION_ADDRESS', null),
|
||||
],
|
||||
|
||||
'slack' => [
|
||||
|
||||
48
config/cors.php
Normal file
48
config/cors.php
Normal file
@@ -0,0 +1,48 @@
|
||||
<?php
|
||||
|
||||
/**
|
||||
* ---------------------------------------------------------------------
|
||||
* THIS IS $allowed_origins code IS NOT PART OF THE ORIGINAL CORS PACKAGE.
|
||||
* IT IS A MODIFICATION BY SNIPE-IT TO ALLOW ADDING ALLOWED ORIGINS VIA THE ENV.
|
||||
* ---------------------------------------------------------------------
|
||||
*
|
||||
* Since we don't really want people editing config files (lest they get
|
||||
* overwritten later), this enables the person managing the Snipe-IT
|
||||
* installation to modify these values without modifying the code.
|
||||
*
|
||||
* If APP_CORS_ALLOWED_ORIGINS is not set in the .env (for example if no one added it
|
||||
* after an upgrade from a previous version that didn't include it in the .env.example) or is null,
|
||||
* set it to * to allow all. If there is a value, either a single url or a comma-delimited
|
||||
* list of urls, explode that out into an array to whitelist just those urls.
|
||||
*/
|
||||
|
||||
$allowed_origins = env('CORS_ALLOWED_ORIGINS') !== null ?
|
||||
explode(',', env('CORS_ALLOWED_ORIGINS')) : [];
|
||||
|
||||
/**
|
||||
* Original Laravel CORS package config file modifications end here
|
||||
*
|
||||
*/
|
||||
|
||||
|
||||
return [
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Laravel CORS
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| allowedOrigins, allowedHeaders and allowedMethods can be set to array('*')
|
||||
| to accept any value.
|
||||
|
|
||||
*/
|
||||
|
||||
'supportsCredentials' => false,
|
||||
'allowedOrigins' => $allowed_origins,
|
||||
'allowedOriginsPatterns' => [],
|
||||
'allowedHeaders' => ['*'],
|
||||
'allowedMethods' => ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'],
|
||||
'exposedHeaders' => [],
|
||||
'maxAge' => 0,
|
||||
|
||||
];
|
||||
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v4.7.0',
|
||||
'full_app_version' => 'v4.7.0 - build 4037',
|
||||
'build_version' => '4037',
|
||||
'app_version' => 'v4.7.5',
|
||||
'full_app_version' => 'v4.7.5 - build 4137-g55ee90b25',
|
||||
'build_version' => '4137',
|
||||
'prerelease_version' => '',
|
||||
'hash_version' => '',
|
||||
'full_hash' => 'v4.7.0',
|
||||
'hash_version' => 'g55ee90b25',
|
||||
'full_hash' => 'v4.7.5-18-g55ee90b25',
|
||||
'branch' => 'master',
|
||||
);
|
||||
|
||||
@@ -29,7 +29,7 @@ class MigrationCartalystSentryInstallGroups extends Migration {
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::create('groups', function($table)
|
||||
Schema::create('permission_groups', function($table)
|
||||
{
|
||||
$table->increments('id');
|
||||
$table->string('name');
|
||||
@@ -46,7 +46,7 @@ class MigrationCartalystSentryInstallGroups extends Migration {
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::drop('groups');
|
||||
Schema::drop('permission_groups');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -2,39 +2,44 @@
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
use App\Models\Group;
|
||||
|
||||
class UpdateGroupFieldForReporting extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
// Schema::table('groups', function(Blueprint $table)
|
||||
// {
|
||||
// //
|
||||
// });
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"admin":1,"users":1,"reports":1}', 1]);
|
||||
// This is janky because we had to do a back in time change to handle a MySQL 8+
|
||||
// compatibility issue.
|
||||
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"users":1,"reports":1}', 2]);
|
||||
// Ideally we'd be using the model here, but since we can't really know whether this is an upgrade
|
||||
// or a fresh install, we have to check which table is being used.
|
||||
|
||||
if (Schema::hasTable('permission_groups')) {
|
||||
|
||||
// DB::statement('UPDATE '.$prefix.'groups SET permissions="{\"admin\":1,\"users\":1,\"reports\":1}" where id=1');
|
||||
// DB::statement('UPDATE '.$prefix.'groups SET permissions="{\"users\":1,\"reports\":1}" where id=2');
|
||||
Group::where('id', 1)->update(['permissions' => '{"users-poop":1,"reports":1}']);
|
||||
Group::where('id', 2)->update(['permissions' => '{"users-pop":1,"reports":1}']);
|
||||
|
||||
}
|
||||
} elseif (Schema::hasTable('groups')) {
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"admin-farts":1,"users":1,"reports":1}', 1]);
|
||||
DB::update('update '.DB::getTablePrefix().'groups set permissions = ? where id = ?', ['{"users-farts":1,"reports":1}', 2]);
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,44 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Support\Facades\Schema;
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class RenameGroupsTable extends Migration
|
||||
{
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
// We check to see if this table exists before attempting the migration since
|
||||
// upgraded installs would have this table, but new installs wouldn't.
|
||||
// We had to change the name of the table in the older migrations
|
||||
// to handle a MySQl 8+ compatibility issue related to reserved words.
|
||||
// Without going back in time in migrations, this would fail since the groups table
|
||||
// would never be allowed to be created in the first place on MySql 8+.
|
||||
//
|
||||
// So... if an upgrade, let's rename that table.
|
||||
// If a new install, the migration was already changed, so the table isn't
|
||||
// called that anymore and we can skip this migration.
|
||||
|
||||
if (Schema::hasTable('groups')) {
|
||||
Schema::rename('groups', 'permission_groups');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
if (Schema::hasTable('permission_groups')) {
|
||||
Schema::rename('permission_groups', 'groups');
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -5,8 +5,8 @@ return array(
|
||||
'about_categories' => 'Kategorijos padeda jums tvarkyti savo daiktus. Kai kurių pavyzdžių kategorijos gali būti "Desktops", "Laptops", "Mobilieji telefonai", "Tablets" ir tt, bet jūs galite naudoti kategorijas bet kokiu būdu, kuris jums yra naudingas.',
|
||||
'asset_categories' => 'Įrangos kategorijos',
|
||||
'category_name' => 'Kategorijos pavadinimas',
|
||||
'checkin_email' => 'Send email to user on checkin/checkout.',
|
||||
'checkin_email_notification' => 'This user will be sent an email on checkin/checkout.',
|
||||
'checkin_email' => 'Siųsti el. laišką vartotojui gavus/priskyrus.',
|
||||
'checkin_email_notification' => 'Šis vartotojas gaus el. Laišką registracijos / išrašymo metu (paskyrimas).',
|
||||
'clone' => 'Kopijuoti kategoriją',
|
||||
'create' => 'Sukurti kategoriją',
|
||||
'edit' => 'Keisti kategoriją',
|
||||
|
||||
@@ -20,7 +20,7 @@ return array(
|
||||
'field_element_short' => 'Elementas',
|
||||
'field_format' => 'Formatas',
|
||||
'field_custom_format' => 'Pritaikomas formatas',
|
||||
'field_custom_format_help' => 'This field allows you to use a regex expression for validation. It should start with "regex:" - for example, to validate that a custom field value contains a valid IMEI (15 numeric digits), you would use <code>regex:/^[0-9]{15}$/</code>.',
|
||||
'field_custom_format_help' => 'Šis laukelis leidžia Jums naudoti REGEX validaciją. Tai turėtų prasidėti "regax:" - pavyzdžiui norint validuoti pasirinkto laukelio reikšmę IMEI (15 skaičių), privalote naudoti <code>regex:/^[0-9]{15}$/</code>.',
|
||||
'required' => 'Privalomas',
|
||||
'req' => 'Privaloma.',
|
||||
'used_by_models' => 'Naudojama modelių',
|
||||
@@ -28,5 +28,5 @@ return array(
|
||||
'create_fieldset' => 'Nauja laukų grupė',
|
||||
'create_field' => 'Naujas pritaikomas laukelis',
|
||||
'value_encrypted' => 'Šio lauko vertė yra užkoduota duomenų bazėje. Tik admin vartotojai galės peržiūrėti iššifruotą vertę',
|
||||
'show_in_email' => 'Include the value of this field in checkout emails sent to the user? Encrypted fields cannot be included in emails.',
|
||||
'show_in_email' => 'Įterptos šio laukelio išdavimo reikšmės bus siunčiamos vartotojams? Užšifruoti laukai negali būti įterpti į el. laišką.',
|
||||
);
|
||||
|
||||
@@ -38,7 +38,7 @@ return array(
|
||||
'tag' => 'Įrangos pavadinimas',
|
||||
'update' => 'Įrangos atnaujinimas',
|
||||
'warranty' => 'Garantija',
|
||||
'warranty_expires' => 'Warranty Expires',
|
||||
'warranty_expires' => 'Garantija baigiasi',
|
||||
'years' => 'metai',
|
||||
)
|
||||
;
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_assets_text' => 'Turtas - tai daiktai, kurie stebimi serijos numeriu arba turinio žyma. Jie dažniausiai būna vertingesni dalykai, kai svarbu nustatyti konkretų elementą.',
|
||||
'archived' => 'Archyvuota',
|
||||
'asset' => 'Įranga',
|
||||
'bulk_checkout' => 'Checkout Assets',
|
||||
'bulk_checkout' => 'Išduota įranga',
|
||||
'checkin' => 'Išduota įranga',
|
||||
'checkout' => 'Patikros turtas',
|
||||
'clone' => 'Kopijuoti įrangą',
|
||||
|
||||
@@ -62,7 +62,7 @@ return array(
|
||||
'success' => 'Įranga išduota sėkmingai.',
|
||||
'user_does_not_exist' => 'Netinkamas naudotojas. Prašome bandykite dar kartą.',
|
||||
'not_available' => 'Šis turtas negali būti išsiunčiamas!',
|
||||
'no_assets_selected' => 'You must select at least one asset from the list'
|
||||
'no_assets_selected' => 'Jūs turite pasirinkti bent vieną turtą iš sąrašo'
|
||||
),
|
||||
|
||||
'checkin' => array(
|
||||
|
||||
@@ -16,8 +16,8 @@ return array(
|
||||
),
|
||||
|
||||
'restore' => array(
|
||||
'error' => 'Manufacturer was not restored, please try again',
|
||||
'success' => 'Manufacturer restored successfully.'
|
||||
'error' => 'Gamintojas nebuvo atkurtas, prašome bandyti dar kartą',
|
||||
'success' => 'Gamintojas buvo atkurtas sėkmingai.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
|
||||
@@ -4,9 +4,9 @@ return array(
|
||||
'about_models_title' => 'Apie turto modelius',
|
||||
'about_models_text' => 'Turto modeliai yra būdas grupuoti identišką turtą. "MBP 2013", "IPhone 6s" ir kt.',
|
||||
'deleted' => 'Šis modelis ištrintas. <a href="/hardware/models/:model_id/restore">Spauskite atkurti modelį čia</a>.',
|
||||
'bulk_delete' => 'Bulk Delete Asset Models',
|
||||
'bulk_delete_help' => 'Use the checkboxes below to confirm the deletion of the selected asset models. Asset models that have assets associated with them cannot be deleted until the assets are associated with a different model.',
|
||||
'bulk_delete_warn' => 'You are about to delete :model_count asset models.',
|
||||
'bulk_delete' => 'Ištrinti pažymėtus turto modelius',
|
||||
'bulk_delete_help' => '„Pažymėkite žemiau esantį langelį, kad patvirtintumėte pasirinktų turto modelių ištrynimą. Turto modeliai, kuriuose yra su jais susijęs turtas, negali būti ištrinti, išskyrus tuos atvejus, kai tas turtas yra susietas su kitu modeliu.“.',
|
||||
'bulk_delete_warn' => 'Ketinate ištrinti :model_count turto modelius.',
|
||||
'restore' => 'Atkurti modelį',
|
||||
'requestable' => 'Naudotojai gali užklausi šį modelį',
|
||||
'show_mac_address' => 'Rodykite MAC adreso laukelį įrangoje šiam modeliui',
|
||||
@@ -14,5 +14,5 @@ return array(
|
||||
'view_models' => 'Peržiūrėti modelius',
|
||||
'fieldset' => 'Laukų grupė',
|
||||
'no_custom_field' => 'Nėra pritaikytų laukų',
|
||||
'add_default_values' => 'Add default values',
|
||||
'add_default_values' => 'Pridėti numatytąją reikšmę',
|
||||
);
|
||||
|
||||
@@ -34,9 +34,9 @@ return array(
|
||||
),
|
||||
|
||||
'bulkdelete' => array(
|
||||
'error' => 'No models were selected, so nothing was deleted.',
|
||||
'success' => ':success_count model(s) deleted!',
|
||||
'success_partial' => ':success_count model(s) were deleted, however :fail_count were unable to be deleted because they still have assets associated with them.'
|
||||
'error' => 'Nepasirinktas modelis, nėra ką ištrinti.',
|
||||
'success' => ':success_count model(s) ištrinti!',
|
||||
'success_partial' => ':success_count model(s) buvo ištrinti, bet :fail_count negalima ištrinti todėl, kad turtas vis dar susietas.'
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
@@ -4,8 +4,8 @@ return array(
|
||||
'ad' => 'Active Directory',
|
||||
'ad_domain' => '"Active Directory" domenas',
|
||||
'ad_domain_help' => 'Tai kartais sutampa su jūsų el. Pašto domenu, bet ne visada.',
|
||||
'admin_cc_email' => 'CC Email',
|
||||
'admin_cc_email_help' => 'If you would like to send a copy of checkin/checkout emails that are sent to users to an additional email account, enter it here. Otherwise leave this field blank.',
|
||||
'admin_cc_email' => 'CC El. paštas',
|
||||
'admin_cc_email_help' => 'Jeigu Jūs norite siųsti išduoto/neišduoto turto sąrašo kopiją, įveskite čia el. pašto adresą. Kitu atveju palikite laukelį tuščią.',
|
||||
'is_ad' => 'Tai yra "Active Directory" serveris',
|
||||
'alert_email' => 'Siūsti įspėjimus',
|
||||
'alerts_enabled' => 'Perspėjimai įjungti',
|
||||
@@ -25,9 +25,9 @@ return array(
|
||||
'confirm_purge_help' => 'Žemiau esančiame laukelyje įveskite tekstą "DELETE", kad išvalykite ištrintus įrašus. Šis veiksmas negali būti panaikintas.',
|
||||
'custom_css' => 'Užsakytas CSS',
|
||||
'custom_css_help' => 'Įveskite bet kokį užsakytą CSS peržiūrėjimo norėtumėte naudoti. Neįtraukite <style></Stilius> žymės.',
|
||||
'custom_forgot_pass_url' => 'Custom Password Reset URL',
|
||||
'custom_forgot_pass_url_help' => 'This replaces the built-in forgotten password URL on the login screen, useful to direct people to internal or hosted LDAP password reset functionality. It will effectively disable local user forgotten password functionality.',
|
||||
'dashboard_message' => 'Dashboard Message',
|
||||
'custom_forgot_pass_url' => 'Pasirinktinio slaptažodžio atkūrimo nuoroda',
|
||||
'custom_forgot_pass_url_help' => 'Tai pakeičia pamiršto slaptažodžio nuorodą prisijungimo lange. Naudinga tiesiogiai nukreipti į LDAP slaptažodžio atkūrimo funkcionalumą. Būtų efektyviau išjungti vietinių vartotojų pamirštų slaptažodžių funkcionalumą.',
|
||||
'dashboard_message' => 'Prietaisų skydelio pranešimai',
|
||||
'dashboard_message_help' => 'Šis tekstas bus rodomas valdymo skydelyje, kiekvienam turinčiam teisę peržiūrėti valdymo skydelį.',
|
||||
'default_currency' => 'Numatytoji valiuta',
|
||||
'default_eula_text' => 'Numatytasis EULA',
|
||||
@@ -42,8 +42,8 @@ return array(
|
||||
'alt_barcode_type' => '1D barkodo tipas',
|
||||
'eula_settings' => 'EULA nustatymai',
|
||||
'eula_markdown' => 'Šis EULA leidžia <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
'footer_text' => 'Additional Footer Text ',
|
||||
'footer_text_help' => 'This text will appear in the right-side footer. Links are allowed using <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>. Line breaks, headers, images, etc may result in unpredictable results.',
|
||||
'footer_text' => 'Papildomas poraštė tekstas ',
|
||||
'footer_text_help' => 'Šis tekstas bus rodomas dešinėje poraštės pusėje. Nuorodos leidžiamos naudojant <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>. Eilutės lūžei, antraštės, paveiksliukai etc gali sukelti nenuspėjamus rezultatus.',
|
||||
'general_settings' => 'Bendrieji nustatymai',
|
||||
'generate_backup' => 'Atsarginė kopija',
|
||||
'header_color' => 'Atraštės spalva',
|
||||
@@ -52,8 +52,8 @@ return array(
|
||||
'ldap_enabled' => 'LDAP įjungtas',
|
||||
'ldap_integration' => 'LDAP integracija',
|
||||
'ldap_settings' => 'LDAP nustatymai',
|
||||
'ldap_login_test_help' => 'Enter a valid LDAP username and password from the base DN you specified above to test whether your LDAP login is configured correctly. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
|
||||
'ldap_login_sync_help' => 'This only tests that LDAP can sync correctly. If your LDAP Authentication query is not correct, users may still not be able to login. YOU MUST SAVE YOUR UPDATED LDAP SETTINGS FIRST.',
|
||||
'ldap_login_test_help' => 'Prašome įvesti tinkamą LDAP vartotojo vardą ir slaptažodį iš bazės DN. Jūs privalote patikrinti ar LDAP prisijungimas sukonfigūruotas tinkamai. PIRMIAUSIA JŪS PRIVALOTE IŠSAUGOTI LDAP NUSTATYMUS.',
|
||||
'ldap_login_sync_help' => 'Tai patikrina ar LDAP sinchronizacija teisinga. Jeigu Jūsų LADAP autentifikacijos užkalusa nėra teisinga, vartotojai gali negalėti prisijungti. PIRMIAUSIA JŪS PRIVALOTE IŠSAUGOTI LDAP NUSTATYMUS.',
|
||||
'ldap_server' => 'LDAP serveris',
|
||||
'ldap_server_help' => 'Tai turėtų prasidėti su ldap: // (nešifruotam arba TLS) arba ldaps: (jei tai SSL)',
|
||||
'ldap_server_cert' => 'LDAP SSL sertifikato patvirtinimas',
|
||||
@@ -75,24 +75,24 @@ return array(
|
||||
'ldap_active_flag' => 'LDAP aktyvios vėliavos',
|
||||
'ldap_emp_num' => 'LDAP darbuotojų skaičius',
|
||||
'ldap_email' => 'LDAP el.paštas',
|
||||
'license' => 'Software License',
|
||||
'license' => 'Programinės įrangos licenzija',
|
||||
'load_remote_text' => 'Nuotoliniai skriptai',
|
||||
'load_remote_help_text' => 'Šis Snipe-IT įdiegimas gali įtraukti programinius kodus iš interneto.',
|
||||
'login_note' => 'Prisijungimo pastaba',
|
||||
'login_note_help' => 'Pasirinktinai į savo prisijungimo ekraną įtraukite keletą sakinių, pavyzdžiui, kad padėtumėte žmonėms, kurie rasti pamestą ar pavogtą įrenginį. Šiame lauke pritariama <a href="https://help.github.com/articles/github-flavored-markdown/"> "Github" skonio markdown</a>',
|
||||
'login_remote_user_text' => 'Remote User login options',
|
||||
'login_remote_user_enabled_text' => 'Enable Login with Remote User Header',
|
||||
'login_remote_user_enabled_help' => 'This option enables Authentication via the REMOTE_USER header according to the "Common Gateway Interface (rfc3875)"',
|
||||
'login_common_disabled_text' => 'Disable other authentication mechanisms',
|
||||
'login_common_disabled_help' => 'This option disables other authentication mechanisms. Just enable this option if you are sure that your REMOTE_USER login is already working',
|
||||
'login_remote_user_custom_logout_url_text' => 'Custom logout URL',
|
||||
'login_remote_user_custom_logout_url_help' => 'If a url is provided here, users will get redirected to this URL after the user logs out of Snipe-IT. This is useful to close the user sessions of your Authentication provider correctly.',
|
||||
'login_remote_user_text' => 'Nuotolinio vartotojo prisijungimo parametrai',
|
||||
'login_remote_user_enabled_text' => 'Įjungti nuotolinį prisijungimą naudojant vartotojo antraštę',
|
||||
'login_remote_user_enabled_help' => 'Ši opcija įjungia autentifikaciją "REMOTE_USER" per "Cammon Gateway" vartotojo sąsają (rfc3875)',
|
||||
'login_common_disabled_text' => 'Išjungti kitus autentifikacijos mechanizmus',
|
||||
'login_common_disabled_help' => 'Ši opcija išjungia kitus autentifikacijos mechanizmus. Šią funkciją įjunkite jeigu esate tikri jog REMOTE_USER prisijungimas veikia',
|
||||
'login_remote_user_custom_logout_url_text' => 'Pasirinktinė atsijungimo URL',
|
||||
'login_remote_user_custom_logout_url_help' => 'Čia įveskite nuorodą į kurią bus nukreipti vartotojai prisijungę prie Snite-IT. Tai naudinga uždarant vartotojo sesiją.',
|
||||
'logo' => 'Logotipas',
|
||||
'logo_print_assets' => 'Use in Print',
|
||||
'logo_print_assets_help' => 'Use branding on printable asset lists ',
|
||||
'logo_print_assets' => 'Naudoti spausdinimui',
|
||||
'logo_print_assets_help' => 'Naudoti turto sąrašą spausdinimą ',
|
||||
'full_multiple_companies_support_help_text' => 'Apriboti vartotojai (įskaitant administratorius) priskirtus kompanijoms.',
|
||||
'full_multiple_companies_support_text' => 'Pilnas kelių kompanijų palaikymas',
|
||||
'show_in_model_list' => 'Show in Model Dropdowns',
|
||||
'show_in_model_list' => 'Rodyti išskleidžiame modelyje',
|
||||
'optional' => 'pasirinktinai',
|
||||
'per_page' => 'Rezultatai puslapyje',
|
||||
'php' => 'PHP versija',
|
||||
@@ -109,23 +109,23 @@ return array(
|
||||
'setting' => 'Nustatymai',
|
||||
'settings' => 'Nustatymai',
|
||||
'show_alerts_in_menu' => 'Rodyti įspėjimus viršutiniame meniu',
|
||||
'show_archived_in_list' => 'Archived Assets',
|
||||
'show_archived_in_list_text' => 'Show archived assets in the "all assets" listing',
|
||||
'show_images_in_email' => 'Show images in emails',
|
||||
'show_images_in_email_help' => 'Uncheck this box if your Snipe-IT installation is behind a VPN or closed network and users outside the network will not be able to load images served from this installation in their emails.',
|
||||
'show_archived_in_list' => 'Archyvuotas turtas',
|
||||
'show_archived_in_list_text' => 'Rodyti archyvuotą turtą "visame turto" sąraše',
|
||||
'show_images_in_email' => 'Rodyti nuotraukas el. pašte',
|
||||
'show_images_in_email_help' => 'Nuimkite žymelę jeigu jūsų Snipe-IT instaliacija yra VPN arba uždarame tinkle ir vartotojai esantys už tinklo negalės įkrauti paveikslėlių jų el. paštuose.',
|
||||
'site_name' => 'Interneto puslapio pavadinimas',
|
||||
'slack_botname' => 'Slack\'o boto vardas',
|
||||
'slack_channel' => 'Slack\'o kanalas',
|
||||
'slack_endpoint' => 'Slack\'o galutinis taškas',
|
||||
'slack_integration' => 'Slack\'o nustatymai',
|
||||
'slack_integration_help' => 'Slack\'o integravimas yra pasirinktinis, tačiau kanalas ir galutinis taškas reikalingas jie jūs norite juos naudoti su Slack programėle. Norėdami konfigūruoti Slack\'o integraciją pirmiausia privalote <a href=":slack_link" target="_new">sukurti įeinantį priedą</a> savo turimoje Slack\'o paskyroje.',
|
||||
'slack_integration_help_button' => 'Once you have saved your Slack information, a test button will appear.',
|
||||
'slack_test_help' => 'Test whether your Slack integration is configured correctly. YOU MUST SAVE YOUR UPDATED SLACK SETTINGS FIRST.',
|
||||
'slack_integration_help_button' => 'Jeigu jūs išsaugosite informaciją, testavimo mygtukas bus rodomas.',
|
||||
'slack_test_help' => 'Patikrinkite, ar tinkamai atlikta „Slack“ konfigūracija. Jūs privalote išsaugoti savo "SLACK" nustatymus pirmiausia.',
|
||||
'snipe_version' => 'Snipe-IT versija',
|
||||
'support_footer' => 'Support Footer Links ',
|
||||
'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual',
|
||||
'version_footer' => 'Version in Footer ',
|
||||
'version_footer_help' => 'Specify who sees the Snipe-IT version and build number.',
|
||||
'support_footer' => 'Palaikomos poraštė nuorodos ',
|
||||
'support_footer_help' => 'Nurodykite, kas matys nuorodas į „Snipe-IT“ palaikymo informacijos ir naudotojo vadovą',
|
||||
'version_footer' => 'Versija poraštėje ',
|
||||
'version_footer_help' => 'Nurodykite kad galės matyti Snipe-IT versijas ir versijos numerius.',
|
||||
'system' => 'Sistemos informacija',
|
||||
'update' => 'Atnaujinti nustatymus',
|
||||
'value' => 'Vertė',
|
||||
@@ -136,9 +136,9 @@ return array(
|
||||
'label_dimensions' => 'Etiketės išmatavimai (coliais)',
|
||||
'next_auto_tag_base' => 'Kitas automatinis prieaugis',
|
||||
'page_padding' => 'Puslapio maržos (coliais)',
|
||||
'privacy_policy_link' => 'Link to Privacy Policy',
|
||||
'privacy_policy' => 'Privacy Policy',
|
||||
'privacy_policy_link_help' => 'If a url is included here, a link to your privacy policy will be included in the app footer and in any emails that the system sends out, in compliance with GDPR. ',
|
||||
'privacy_policy_link' => 'Privatumo politikos nuorodos',
|
||||
'privacy_policy' => 'Privatumo politika',
|
||||
'privacy_policy_link_help' => 'Jeigu nuorodas įterpsite čia tai nuorodos privatumo politikos bus įterptas poraštėje ir kiekviename siunčiame el. laiške, palaikant GDPR. ',
|
||||
'purge' => 'Išvalyti ištrintus įrašus',
|
||||
'labels_display_bgutter' => 'Etiketės apatinis latakai',
|
||||
'labels_display_sgutter' => 'Etiketės pusės latakai',
|
||||
@@ -181,7 +181,7 @@ return array(
|
||||
'bottom' => 'apačioje',
|
||||
'vertical' => 'vertikalus',
|
||||
'horizontal' => 'horizontalus',
|
||||
'unique_serial' => 'Unique serial numbers',
|
||||
'unique_serial_help_text' => 'Checking this box will enforce a uniqueness constraint on asset serials',
|
||||
'unique_serial' => 'Unikalus serijinis numeris',
|
||||
'unique_serial_help_text' => 'Pažymėtas šis langelis reiškia unikalius serijinius kiekvienam turtui',
|
||||
'zerofill_count' => 'Turto žymų ilgis, įskaitant "zerofill"',
|
||||
);
|
||||
|
||||
@@ -5,8 +5,8 @@ return array(
|
||||
'archived' => 'Archyvuota',
|
||||
'create' => 'Sukurti būlės kortelę',
|
||||
'color' => 'Diagramos spalva',
|
||||
'default_label' => 'Default Label',
|
||||
'default_label_help' => 'This is used to ensure your most commonly used status labels appear at the top of the select box when creating/editing assets.',
|
||||
'default_label' => 'Numatytoji etikėtė',
|
||||
'default_label_help' => 'Tai naudojama norint užtikrinti, kad dažniausiai naudotos būsenos etiketės būtų rodomos lango viršuje kuriant / redaguojant turtą.',
|
||||
'deployable' => 'Naudojamas',
|
||||
'info' => 'Būklės kortelės naudojamos apibūdinti įvairias jūsų įrangos būkles, kuriose ji randasi. Kortelės gali būti nurodančios, kad įranga remontuojama, prarasta, pavota ir t. t. Jūs galite suskurti naują būklės kortelę išduotiems, atnaujinamiems ir kitiems įrenginiams.',
|
||||
'name' => 'Būklės pavadinimas',
|
||||
|
||||
@@ -19,9 +19,9 @@ return array(
|
||||
'confirm' => 'Ar jūs tikrai norite ištrinti šį tiekėją?',
|
||||
'error' => 'Nepavyko ištrinti tiekėjo. Prašome bandykite dar kartą.',
|
||||
'success' => 'Tiekėjas ištrintas sėkmingai.',
|
||||
'assoc_assets' => 'This supplier is currently associated with :asset_count asset(s) and cannot be deleted. Please update your assets to no longer reference this supplier and try again. ',
|
||||
'assoc_licenses' => 'This supplier is currently associated with :licenses_count licences(s) and cannot be deleted. Please update your licenses to no longer reference this supplier and try again. ',
|
||||
'assoc_maintenances' => 'This supplier is currently associated with :asset_maintenances_count asset maintenances(s) and cannot be deleted. Please update your asset maintenances to no longer reference this supplier and try again. ',
|
||||
'assoc_assets' => 'Šis tiekėjas šiuo metu susietas su bent vienu modeliu ir negali būti ištrintas. Prašome atnaujinkite savo modelius, kad šie nebūtu susieti su šiuo tiekėju ir bandykite dar kartą. ',
|
||||
'assoc_licenses' => 'Šis tiekėjas šiuo metu susietas su licenzija ir negali būti ištrinti. Prašome atnaujinkite savo modelius, kad šie nebūtų susieti su šiuo tiekėjų ir bandykite dar kartą. ',
|
||||
'assoc_maintenances' => 'Šis tiekėjas šiuo metu susietas su bent vienu modeliu ir negali būti ištrintas. Prašome atnaujinkite savo modelius, kad šie nebūtu susieti su šiuo tiekėju ir bandykite dar kartą. ',
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
@@ -2,8 +2,8 @@
|
||||
|
||||
|
||||
return array(
|
||||
'activated_help_text' => 'This user can login',
|
||||
'activated_disabled_help_text' => 'You cannot edit activation status for your own account.',
|
||||
'activated_help_text' => 'Šis vartotojas gali prisijungti',
|
||||
'activated_disabled_help_text' => 'Jūs negalite keisti savosios pąskyros aktyvacijos statuso.',
|
||||
'assets_user' => 'Priskirta įranga :name',
|
||||
'bulk_update_warn' => 'Jūs ketinate redaguoti vartotojų: user_count savybes. Atminkite, kad negalėsite pakeisti savo naudotojo atributų naudodami šią formą ir savo pasirinkimą keisti individualiai.',
|
||||
'bulk_update_help' => 'Ši forma leidžia vienu metu atnaujinti kelis naudotojus. Užpildykite tik tuos laukelius, kuriuos reikia keisti. Visi tušti laukai lieka nepakeisti.',
|
||||
@@ -17,7 +17,7 @@ return array(
|
||||
'restore_user' => 'Spauskite čia norėdami juos atkurti.',
|
||||
'last_login' => 'Paskutinis prisijungimas',
|
||||
'ldap_config_text' => 'LDAP konfigūracijos parametrus galite rasti Administratorius> Nustatymai. Pasirinkta vieta (pasirinktinai) bus nustatyta visiems importuojamiems vartotojams.',
|
||||
'print_assigned' => 'Print All Assigned',
|
||||
'print_assigned' => 'Spausdinti visą turtą',
|
||||
'software_user' => ':name išduota įranga',
|
||||
'view_user' => 'Peržiūrėti :name vartotoją',
|
||||
'usercsv' => 'CSV dokumentas',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Išsaugoti',
|
||||
'upload' => 'Įkelti',
|
||||
'select_file' => 'Pasirinkite failą ...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Pasirinkite failą...',
|
||||
);
|
||||
|
||||
@@ -9,7 +9,7 @@
|
||||
'activity_report' => 'Veiksmų ataskaita',
|
||||
'address' => 'Adresas',
|
||||
'admin' => 'Administratorius',
|
||||
'administrator' => 'Administrator',
|
||||
'administrator' => 'Administratorius',
|
||||
'add_seats' => 'Prideta licenzijų',
|
||||
'all_assets' => 'Visa įranga',
|
||||
'all' => 'Viskas',
|
||||
@@ -39,9 +39,9 @@
|
||||
'checkin' => 'Pridėti',
|
||||
'checkin_from' => 'Pridėti iš',
|
||||
'checkout' => 'Išimti',
|
||||
'checkouts_count' => 'Checkouts',
|
||||
'checkins_count' => 'Checkins',
|
||||
'user_requests_count' => 'Requests',
|
||||
'checkouts_count' => 'Išduota',
|
||||
'checkins_count' => 'Pridėti',
|
||||
'user_requests_count' => 'Užklausos',
|
||||
'city' => 'Miestas',
|
||||
'click_here' => 'Paspauskite čia',
|
||||
'clear_selection' => 'Išvalyti pasirinkimą',
|
||||
@@ -68,14 +68,14 @@
|
||||
'debug_warning' => 'Įspėjimas!',
|
||||
'debug_warning_text' => 'Ši programa veikia gamybos režimu, įjungus derinimą. Tai gali atskleisti slaptus duomenis, jei jūsų programa yra prieinama išoriniam pasauliui. Išjunkite derinimo režimą nustatydami <code>APP_DEBUG</code> reikšmę savo <code>.env</code> byloje <code>false</code>.',
|
||||
'delete' => 'Ištrinti',
|
||||
'delete_confirm' => 'Are you sure you wish to delete :item?',
|
||||
'delete_confirm' => 'Ar jūs norite tikrai ištrinti?',
|
||||
'deleted' => 'Ištrinta',
|
||||
'delete_seats' => 'Ištrintos licenzijos',
|
||||
'departments' => 'Departamentai',
|
||||
'department' => 'Departamentas',
|
||||
'deployed' => 'Naudojama',
|
||||
'depreciation_report' => 'Nusidėvėjimo ataskaita',
|
||||
'details' => 'Details',
|
||||
'details' => 'Detaliau',
|
||||
'download' => 'Atsisiųsti',
|
||||
'depreciation' => 'Nusidėvėjimas',
|
||||
'editprofile' => 'Koreguoti profilį',
|
||||
@@ -85,16 +85,16 @@
|
||||
'email_domain_help' => 'Tai naudojama importuojant importuojamus el. Pašto adresus',
|
||||
'filastname_format' => 'V. Pavardė (vpavarde@example.com)',
|
||||
'firstname_lastname_format' => 'Vardas Pavardė (vpavarde@example.com)',
|
||||
'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith@example.com)',
|
||||
'lastnamefirstinitial_format' => 'Last Name First Initial (smithj@example.com)',
|
||||
'firstname_lastname_underscore_format' => 'Vardas Pavardė (vpavarde@example.com)',
|
||||
'lastnamefirstinitial_format' => 'Pavardė, vardo pirmoji raidė (pavardėV@example.com',
|
||||
'first' => 'Pirmas',
|
||||
'first_name' => 'Vardas',
|
||||
'first_name_format' => 'Vardas (vpavarde@example.com)',
|
||||
'files' => 'Files',
|
||||
'files' => 'Failas',
|
||||
'file_name' => 'Failas',
|
||||
'file_uploads' => 'Failo Įkėlimas',
|
||||
'generate' => 'Sukurti',
|
||||
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
'github_markdown' => 'Šis laukas leidžia <a href="https://help.github.com/articles/github-flavored-markdown/">Github automatizuota žymėjimą</a>.',
|
||||
'groups' => 'Grupės',
|
||||
'gravatar_email' => 'Gravatar el. paštas',
|
||||
'history' => 'Istorija',
|
||||
@@ -103,7 +103,7 @@
|
||||
'image' => 'Paveikslėlis',
|
||||
'image_delete' => 'Ištrinti nuotrauką',
|
||||
'image_upload' => 'Įkelti nuotrauką',
|
||||
'image_filetypes_help' => 'Accepted filetypes are jpg, png, gif, and svg. Max upload size allowed is :size.',
|
||||
'image_filetypes_help' => 'Priimami failų tipai yra: jpg, png, gif, and svg. Didžiausias leidžiamas įkėlimo dydis :size.',
|
||||
'import' => 'Įkelti',
|
||||
'import-history' => 'Importuoti istoriją',
|
||||
'asset_maintenance' => 'Įrangos priežiūra',
|
||||
@@ -127,7 +127,7 @@
|
||||
'locations' => 'Vietovės',
|
||||
'logout' => 'Atsijungti',
|
||||
'lookup_by_tag' => 'Paiešką pagal turto žymą',
|
||||
'maintenances' => 'Maintenances',
|
||||
'maintenances' => 'Techninis aptarnavimas',
|
||||
'manufacturer' => 'Gamintojas',
|
||||
'manufacturers' => 'Gamintojai',
|
||||
'markdown' => 'Šis laukas leidžia <a href="https://help.github.com/articles/github-flavored-markdown/">Github skonio markdown</a>.',
|
||||
@@ -181,11 +181,11 @@
|
||||
'select_company' => 'Pasirinkite kompaniją',
|
||||
'select_asset' => 'Pasirinkite įrangą',
|
||||
'settings' => 'Nustatymai',
|
||||
'show_deleted' => 'Show Deleted',
|
||||
'show_current' => 'Show Current',
|
||||
'show_deleted' => 'Peržiūrėti ištrintus',
|
||||
'show_current' => 'Rodyti dabartinį',
|
||||
'sign_in' => 'Prisijungti',
|
||||
'signature' => 'Parašas',
|
||||
'skin' => 'Skin',
|
||||
'skin' => 'Išvaizda',
|
||||
'some_features_disabled' => 'DEMO MODE: kai kurios funkcijos yra išjungtos šio diegimo metu.',
|
||||
'site_name' => 'Interneto puslapio pavadinimas',
|
||||
'state' => 'Rajonas',
|
||||
@@ -206,7 +206,7 @@
|
||||
'unknown_admin' => 'Nežinomas administratorius',
|
||||
'username_format' => 'Vartotojo vardas Formatas',
|
||||
'update' => 'Atnaujinti',
|
||||
'upload_filetypes_help' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, xls, txt, lic, zip, and rar. Max upload size allowed is :size.',
|
||||
'upload_filetypes_help' => 'Priimami failų tipai yra: png, gif, jpg, jpeg, doc, docx, pdf, xls, txt, lic, zip, and rar.. Didžiausias leidžiamas įkėlimo dydis :size.',
|
||||
'uploaded' => 'Įkeltas',
|
||||
'user' => 'Naudotojas',
|
||||
'accepted' => 'priimta',
|
||||
|
||||
@@ -21,7 +21,7 @@ return array(
|
||||
'Confirm_Asset_Checkin' => 'Patvirtinkite turto registraciją.',
|
||||
'Confirm_Accessory_Checkin' => 'Patvirtinkite priedų registraciją.',
|
||||
'Confirm_accessory_delivery' => 'Patvirtinkite aksesuaro pristatymą.',
|
||||
'Confirm_license_delivery' => 'Confirm license delivery.',
|
||||
'Confirm_license_delivery' => 'Patvirtinti licenzijos pristatymą.',
|
||||
'Confirm_asset_delivery' => 'Patvirtinkite įrangos gavimą.',
|
||||
'Confirm_consumable_delivery' => 'Patvirtinkite vartojimo pristatymą.',
|
||||
'current_QTY' => 'Esamas kiekis',
|
||||
@@ -52,19 +52,19 @@ return array(
|
||||
'requested' => 'Užklausta:',
|
||||
'reset_link' => 'Jūsų slaptažodžio atstatymo nuoroda',
|
||||
'reset_password' => 'Paspauskite norėdami pakeisti savo slaptažodį:',
|
||||
'serial' => 'Serial',
|
||||
'serial' => 'Serija',
|
||||
'supplier' => 'Tiekėjas',
|
||||
'tag' => 'Žymė',
|
||||
'test_email' => 'Išbandykite "Snipe-IT" el. Laišką',
|
||||
'test_mail_text' => 'Tai yra "Snipe-IT Asset Management System" testas. Jei tai gavote, paštas dirba :)',
|
||||
'the_following_item' => 'Šis elementas buvo pažymėtas:',
|
||||
'low_inventory_alert' => 'There is :count item that is below minimum inventory or will soon be low.|There are :count items that are below minimum inventory or will soon be low.',
|
||||
'assets_warrantee_alert' => 'There is :count asset with a warrantee expiring in the next :threshold days.|There are :count assets with warrantees expiring in the next :threshold days.',
|
||||
'license_expiring_alert' => 'There is :count license expiring in the next :threshold days.|There are :count licenses expiring in the next :threshold days.',
|
||||
'low_inventory_alert' => 'Tai yra reikšmė minimalaus inventoriaus arba greitai pasibaigiančio.:count | Tai yra reikšmė minimalaus inventoriaus arba greitai pasibaigiančio.:count.',
|
||||
'assets_warrantee_alert' => 'Tiek turto :count kurių garantinis aptarnavimas baigsis už :threshold days.|Tiek turto :count kurių garantinis aptarnavimas baigsis už :threshold days.',
|
||||
'license_expiring_alert' => 'Tiek licenzijų :count baigsis už :threshold days.|Tiek licenzijų :count baigsis už :threshold days.',
|
||||
'to_reset' => 'Jei norite iš naujo nustatyti savo: žiniatinklio slaptažodį, užpildykite šią formą:',
|
||||
'type' => 'Tipas',
|
||||
'user' => 'User',
|
||||
'username' => 'Username',
|
||||
'user' => 'Vartotojas',
|
||||
'username' => 'Vartotojo vardas',
|
||||
'welcome' => 'Sveiki :vardas',
|
||||
'welcome_to' => 'Sveiki atvykę į: internetą!',
|
||||
'your_credentials' => 'Jūsų Snipe-IT įgaliojimai',
|
||||
|
||||
@@ -2,6 +2,6 @@
|
||||
|
||||
return [
|
||||
'sent' => 'Nuoroda atkurti slaptažodį išsiųsta!',
|
||||
'user' => 'No matching active user found with that email.',
|
||||
'user' => 'Neaptikta vartotojo su šiuo elektroninio pašto adresu.',
|
||||
];
|
||||
|
||||
|
||||
@@ -67,7 +67,7 @@ return array(
|
||||
'not_in' => 'Pasirinktas :attribute neteisingas.',
|
||||
'numeric' => ':attribute privalo būti skaičius.',
|
||||
'present' => 'Atributo laukas turi būti.',
|
||||
'valid_regex' => 'That is not a valid regex. ',
|
||||
'valid_regex' => 'Tai nėra tinkamas regex. ',
|
||||
'regex' => ':attribute formatas neteisingas.',
|
||||
'required' => ':attribute laukelis privalomas.',
|
||||
'required_if' => ':attribute laukelis yra privalomas kai :other yra :value.',
|
||||
@@ -88,7 +88,7 @@ return array(
|
||||
'unique' => ':attribute jau užimtas.',
|
||||
'uploaded' => 'Nepavyko įkelti atributo.',
|
||||
'url' => ':attribute formatas neteisingas.',
|
||||
"unique_undeleted" => "The :attribute must be unique.",
|
||||
"unique_undeleted" => ":attribute turi būti unikalus.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
'about_assets_title' => 'Om tillgångar',
|
||||
'about_assets_text' => 'Tillgångar är poster som spåras med serienummer eller tillgångstagg. De tenderar att vara mer värdefulla saker där identifiering av en viss sak är viktig.',
|
||||
'archived' => 'arkiveras',
|
||||
'archived' => 'Arkiverade',
|
||||
'asset' => 'Tillgång',
|
||||
'bulk_checkout' => 'Checkout tillgångar',
|
||||
'checkin' => 'Checkin Asset',
|
||||
@@ -16,7 +16,7 @@ return array(
|
||||
'requestable' => 'Requestable',
|
||||
'requested' => 'Begärda',
|
||||
'restore' => 'Återställ tillgången',
|
||||
'pending' => 'Avvaktan',
|
||||
'pending' => 'Väntande',
|
||||
'undeployable' => 'Undeployable',
|
||||
'view' => 'Visa tillgång',
|
||||
);
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
return array(
|
||||
'about' => 'Om statusetiketter',
|
||||
'archived' => 'arkiveras',
|
||||
'archived' => 'Arkiverade',
|
||||
'create' => 'Skapa statusetikett',
|
||||
'color' => 'Diagramfärg',
|
||||
'default_label' => 'Standard etikett',
|
||||
@@ -10,7 +10,7 @@ return array(
|
||||
'deployable' => 'Deployable',
|
||||
'info' => 'Statusetiketter används för att beskriva de olika tillstånd som dina tillgångar kan vara i. De kan vara ute för reparation, förlorade / stulna etc. Du kan skapa nya statusetiketter för deployerbara, pågående och arkiverade tillgångar.',
|
||||
'name' => 'Statusnamn',
|
||||
'pending' => 'Avvaktan',
|
||||
'pending' => 'Väntande',
|
||||
'status_type' => 'Statustyp',
|
||||
'show_in_nav' => 'Visa i sidnav',
|
||||
'title' => 'Statusetiketter',
|
||||
|
||||
@@ -148,7 +148,7 @@
|
||||
'order_number' => 'Order Nummer',
|
||||
'page_menu' => 'Visar _MENU_ objekt',
|
||||
'pagination_info' => 'Visar _START_ till _END_ av _TOTAL_ objekt',
|
||||
'pending' => 'Avvaktan',
|
||||
'pending' => 'Väntande',
|
||||
'people' => 'Personer',
|
||||
'per_page' => 'Resultat per sida',
|
||||
'previous' => 'Föregående',
|
||||
@@ -202,7 +202,7 @@
|
||||
'total_accessories' => 'Totala tillbehör',
|
||||
'total_consumables' => 'totala förbrukningsvaror',
|
||||
'type' => 'Typ',
|
||||
'undeployable' => 'Un-utvecklingsbara',
|
||||
'undeployable' => 'Ej tillgängliga',
|
||||
'unknown_admin' => 'Okänd Admin',
|
||||
'username_format' => 'Användarnamn Format',
|
||||
'update' => 'Uppdatering',
|
||||
|
||||
@@ -12,5 +12,5 @@ return array(
|
||||
'submit' => 'Gửi',
|
||||
'upload' => 'Tải lên',
|
||||
'select_file' => 'Chọn tập tin...',
|
||||
'select_files' => 'Select Files...',
|
||||
'select_files' => 'Chọn files...',
|
||||
);
|
||||
|
||||
@@ -26,6 +26,7 @@ Form::macro('locales', function ($name = "locale", $selected = null, $class = nu
|
||||
'nl'=> "Dutch",
|
||||
'en-ID'=> "English, Indonesia",
|
||||
'et'=> "Estonian",
|
||||
'fil'=> "Filipino",
|
||||
'fi'=> "Finnish",
|
||||
'fr'=> "French",
|
||||
'de'=> "German",
|
||||
@@ -40,9 +41,9 @@ Form::macro('locales', function ($name = "locale", $selected = null, $class = nu
|
||||
'ko'=> "Korean",
|
||||
'lv'=>'Latvian',
|
||||
'lt'=> "Lithuanian",
|
||||
'mk'=> "Macedonian",
|
||||
'ms'=> "Malay",
|
||||
'mi'=> "Maori",
|
||||
'mk'=> "Macedonian",
|
||||
'mn'=> "Mongolian",
|
||||
'no'=> "Norwegian",
|
||||
'fa'=> "Persian",
|
||||
@@ -55,6 +56,7 @@ Form::macro('locales', function ($name = "locale", $selected = null, $class = nu
|
||||
'sl'=> "Slovenian",
|
||||
'es-ES'=> "Spanish",
|
||||
'es-CO'=> "Spanish, Colombia",
|
||||
'es-MX'=> "Spanish, Mexico",
|
||||
'es-VE'=> "Spanish, Venezuela",
|
||||
'sv-SE'=> "Swedish",
|
||||
'tl'=> "Tagalog",
|
||||
|
||||
@@ -569,19 +569,21 @@
|
||||
</thead>
|
||||
<tbody>
|
||||
@foreach ($asset->licenseseats as $seat)
|
||||
<tr>
|
||||
<td><a href="{{ route('licenses.show', $seat->license->id) }}">{{ $seat->license->name }}</a></td>
|
||||
<td>
|
||||
@can('viewKeys', $seat->license)
|
||||
{!! nl2br(e($seat->license->serial)) !!}
|
||||
@else
|
||||
------------
|
||||
@endcan
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ route('licenses.checkin', $seat->id) }}" class="btn btn-sm bg-purple" data-tooltip="true">{{ trans('general.checkin') }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
@if ($seat->license)
|
||||
<tr>
|
||||
<td><a href="{{ route('licenses.show', $seat->license->id) }}">{{ $seat->license->name }}</a></td>
|
||||
<td>
|
||||
@can('viewKeys', $seat->license)
|
||||
{!! nl2br(e($seat->license->serial)) !!}
|
||||
@else
|
||||
------------
|
||||
@endcan
|
||||
</td>
|
||||
<td>
|
||||
<a href="{{ route('licenses.checkin', $seat->id) }}" class="btn btn-sm bg-purple" data-tooltip="true">{{ trans('general.checkin') }}</a>
|
||||
</td>
|
||||
</tr>
|
||||
@endif
|
||||
@endforeach
|
||||
</tbody>
|
||||
</table>
|
||||
|
||||
@@ -11,6 +11,11 @@
|
||||
<!-- Tell the browser to be responsive to screen width -->
|
||||
<meta content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no" name="viewport">
|
||||
|
||||
<meta name="apple-mobile-web-app-capable" content="yes">
|
||||
<link rel="apple-touch-icon" href="{{ url('/') }}/uploads/{{ $snipeSettings->logo }}">
|
||||
<link rel="apple-touch-startup-image" href="{{ url('/') }}/uploads/{{ $snipeSettings->logo }}">
|
||||
|
||||
|
||||
<!-- Select2 -->
|
||||
<link rel="stylesheet" href="{{ url(asset('js/plugins/select2/select2.min.css')) }}">
|
||||
|
||||
@@ -25,7 +30,7 @@
|
||||
<link rel="shortcut icon" type="image/ico" href="{{ url(asset('favicon.ico')) }}">
|
||||
|
||||
<meta name="csrf-token" content="{{ csrf_token() }}">
|
||||
<meta name="baseUrl" content="{{ config('app.url') }}/">
|
||||
<meta name="baseUrl" content="{{ url('/') }}/">
|
||||
|
||||
<script nonce="{{ csrf_token() }}">
|
||||
window.Laravel = { csrfToken: '{{ csrf_token() }}' };
|
||||
@@ -761,7 +766,7 @@
|
||||
<div class="pull-right hidden-xs">
|
||||
@if ($snipeSettings->version_footer!='off')
|
||||
@if (($snipeSettings->version_footer=='on') || (($snipeSettings->version_footer=='admin') && (Auth::user()->isSuperUser()=='1')))
|
||||
<b>Version</b> {{ config('version.app_version') }} - build {{ config('version.build_version') }} ({{ config('version.branch') }})
|
||||
<b>Version</b> {{ config('version.app_version') }} - build {{ config('version.build_version') }} ({{ config('version.branch') }})
|
||||
@endif
|
||||
@endif
|
||||
|
||||
|
||||
@@ -3,11 +3,11 @@
|
||||
<label for="warranty_months" class="col-md-3 control-label">{{ trans('admin/hardware/form.warranty') }}</label>
|
||||
<div class="col-md-9">
|
||||
<div class="input-group col-md-3" style="padding-left: 0px;">
|
||||
<input class="form-control" type="text" name="warranty_months" id="warranty_months" value="{{ Input::old('warranty_months', $item->warranty_months) }}" />
|
||||
<input class="form-control" type="text" name="warranty_months" id="warranty_months" value="{{ Input::old('warranty_months', $item->warranty_months) }}" maxlength="3" />
|
||||
<span class="input-group-addon">{{ trans('admin/hardware/form.months') }}</span>
|
||||
</div>
|
||||
<div class="col-md-9" style="padding-left: 0px;">
|
||||
{!! $errors->first('warranty_months', '<span class="alert-msg"><i class="fa fa-times"></i> :message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -340,10 +340,11 @@
|
||||
</tr>
|
||||
</thead>
|
||||
<tbody>
|
||||
@if ($user->assets)
|
||||
@foreach ($user->assets as $asset)
|
||||
<tr>
|
||||
<td>
|
||||
@if ($asset->physical=='1')
|
||||
@if (($asset->model) && ($asset->physical=='1'))
|
||||
<a href="{{ route('models.show', $asset->model->id) }}">{{ $asset->model->name }}</a>
|
||||
@endif
|
||||
</td>
|
||||
@@ -360,6 +361,7 @@
|
||||
</td>
|
||||
</tr>
|
||||
@endforeach
|
||||
@endif
|
||||
</tbody>
|
||||
</table>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user