Compare commits

..

40 Commits

Author SHA1 Message Date
snipe
a3e35e0c99 Added form request
Signed-off-by: snipe <snipe@snipe.net>
2025-06-25 16:29:42 +01:00
snipe
2e8c51be9c First steps for #16883 - bulk asset auduting via API
Signed-off-by: snipe <snipe@snipe.net>
2025-05-09 11:35:30 +01:00
snipe
7d9b87f059 Merge pull request #16898 from marcusmoore/chore/form-radio-replacement
Replaced Form::radio helpers
2025-05-08 20:50:29 +01:00
Marcus Moore
c157f4190e Replace Form::radio in location partial 2025-05-08 12:25:48 -07:00
Marcus Moore
9357eca1cd Replace Form::radio on asset checkin page 2025-05-08 12:16:55 -07:00
snipe
40c65a07a4 Merge pull request #16896 from grokability/removed_seat_number
Removed seat "name" from licenses seats API/UI response
2025-05-08 17:57:40 +01:00
snipe
13521bcf75 Removed seat “name” from license seats API/UI
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 17:37:27 +01:00
snipe
1c09dc139a Undo previous change
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 16:40:24 +01:00
snipe
d5f955b1e0 License seats are not numbered correctly [sc-29113]
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 16:25:49 +01:00
snipe
9e6e8f0931 Moved incomplete test marker
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 16:22:09 +01:00
snipe
c93ef30801 Ignore flaky test
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 15:43:40 +01:00
snipe
3e0dec4856 Fixed #16893 - more specific upload failure text
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 15:38:38 +01:00
snipe
0b167f5f6f Grab location uploads from backup
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 15:22:26 +01:00
snipe
f6b21fdb82 Merge pull request #16895 from grokability/fixed_#16863_custom_fields_validation
Fixed #16863 - better handle custom fields validation when unique but not required
2025-05-08 15:09:04 +01:00
snipe
f151628808 Merge pull request #16894 from grokability/resolve-webserver-permissions
Fix webserver/user file permissions issue
2025-05-08 15:08:40 +01:00
snipe
e44aad0328 Fixed typeos 2025-05-08 15:08:14 +01:00
snipe
1881054c92 Fixed #16863 - better handle unique not required custom field redirects
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 15:00:43 +01:00
Jeremy Price
f7533c5e41 Fix webserver/user file permissions issue
Fixes https://github.com/grokability/snipe-it/issues/16777

We weren't adding the webserver user to the app-user's group, which was
a problem for the webserver trying to write to the log file if it had
been created by a user-owned process (like a cron) or the installation
script chown-ing everything... even though the log file was created 664

This would often present in mysterious ways. In the linked case, trying
to upload a cvs for import would fail with an unhelpful message, because
the actual error is swallowed in the generic error handler for the page.

I've filed an issue to hopefully help with that: https://github.com/grokability/snipe-it/issues/16893

Used this opportunity to condense some logic that was
identical between architectures,
2025-05-08 13:55:23 +02:00
snipe
f181e0fa55 Merge pull request #16877 from marcusmoore/bug/sc-29012
Allow updating asset model image via api
2025-05-08 06:27:49 +01:00
snipe
b04efdfefc Merge pull request #16889 from grokability/add_updated_range_to_custom_report
Added #16887 - last updated date range for custom report
2025-05-08 06:27:32 +01:00
snipe
352b935dee Merge pull request #16884 from marcusmoore/bug/sc-29097
Removed `2fa_authed` from session upon logout
2025-05-08 06:23:26 +01:00
snipe
0ba3b9975a Added #16887 - last updated date range for custom report
Signed-off-by: snipe <snipe@snipe.net>
2025-05-08 06:21:06 +01:00
Marcus Moore
cc06187f31 Remove 2fa_authed from session upon logout 2025-05-07 14:04:33 -07:00
snipe
a916767392 Show the QR code on the asset page regardless of label settings
Signed-off-by: snipe <snipe@snipe.net>
2025-05-07 11:34:21 +01:00
snipe
1c57bfaa39 Small cosmetic change to offset
Signed-off-by: snipe <snipe@snipe.net>
2025-05-07 11:28:01 +01:00
snipe
4a5adeb661 Fixed #16866 - use singular translation for custom report
Signed-off-by: snipe <snipe@snipe.net>
2025-05-07 10:55:28 +01:00
snipe
01f9772291 Updated language strings
Signed-off-by: snipe <snipe@snipe.net>
2025-05-07 10:37:10 +01:00
snipe
960b3aebed Bumped hash
Signed-off-by: snipe <snipe@snipe.net>
2025-05-07 10:24:07 +01:00
Marcus Moore
d75de73867 Allow updating asset model image via api 2025-05-06 17:13:23 -07:00
snipe
e75df97902 Merge pull request #16876 from grokability/switch-back-to-multiarch-docker-with-emulation
Move back to multiarch builds with emulation (for now)
2025-05-06 21:39:23 +01:00
Jeremy Price
5be14ec750 Move back to multiarch builds with emulation (for now)
Turns out it's not straightforward to have multiarchitecture images
within the same namespace, if you want to run each architecture's build
on native runners.

While we work on getting that going, we're moving back to
build-everything-on-intel-runners-with-emulation-for-arm

it means slowwwww arm builds, but it also means we should get our images
straightened out
2025-05-06 22:27:53 +02:00
snipe
717a82f46a Dev assets
Signed-off-by: snipe <snipe@snipe.net>
2025-05-06 21:27:02 +01:00
snipe
e40038900b Merge pull request #16875 from ubc-cpsc/bugfix/CVE-2025-46734
Fixes CVE-2025-46734: league/commonmark contains a XSS vulnerability in Attributes extension
2025-05-06 19:19:09 +01:00
Joël Pittet
099eabc240 Fixes CVE-2025-46734 2025-05-06 11:01:45 -07:00
snipe
3a4fa35398 Merge pull request #16874 from grokability/clone_breadcrumb_fix
Fixed breadcrumbs for cloning
2025-05-06 16:42:52 +01:00
snipe
500d6a0cc2 Merge pull request #16873 from grokability/redirect_on_audit
Redirect options on audit
2025-05-06 16:39:29 +01:00
snipe
38e5bf71bc Fixed tests
Signed-off-by: snipe <snipe@snipe.net>
2025-05-06 16:36:09 +01:00
snipe
45ff195f11 Fixed breadcrumbs for cloning
Signed-off-by: snipe <snipe@snipe.net>
2025-05-06 16:17:02 +01:00
snipe
ce543c8179 Use consistent icon
Signed-off-by: snipe <snipe@snipe.net>
2025-05-06 16:12:15 +01:00
snipe
5c11a8c1e0 Modified helper
Signed-off-by: snipe <snipe@snipe.net>
2025-05-06 16:12:06 +01:00
541 changed files with 8303 additions and 514 deletions

View File

@@ -1,5 +1,5 @@
# Snipe-IT Docker image build for hub.docker.com
name: Docker Alpine images
# Snipe-IT (Alpine) Docker image build for hub.docker.com
name: Docker images (Alpine)
# Run this Build for all pushes to 'master' or develop branch, or tagged releases.
# Also run for PRs to ensure PR doesn't break Docker build process
@@ -8,7 +8,6 @@ on:
branches:
- master
- develop
- dockerhub-testing
tags:
- 'v**'
# Allows you to run this workflow manually from the Actions tab
@@ -20,7 +19,7 @@ permissions:
contents: read
jobs:
docker-alpine-intel:
docker:
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
if: github.repository == 'grokability/snipe-it'
runs-on: ubuntu-latest
@@ -78,72 +77,7 @@ jobs:
with:
context: .
file: ./Dockerfile.alpine
platforms: linux/amd64
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
docker-alpine-arm:
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
if: github.repository == 'grokability/snipe-it'
runs-on: ubuntu-24.04-arm
env:
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
# For a new commit on default branch (master), use the literal tag 'latest' on Docker image.
# For a new commit on other branches, use the branch name as the tag for Docker image.
# For a new tag, copy that tag name as the tag for Docker image.
IMAGE_TAGS: |
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }},suffix=-alpine
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }},suffix=-alpine
type=ref,event=tag,suffix=-alpine
type=semver,pattern=v{{major}}-latest-alpine
# Define default tag "flavor" for docker/metadata-action per
# https://github.com/docker/metadata-action#flavor-input
# We turn off 'latest' tag by default.
TAGS_FLAVOR: |
latest=false
steps:
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v4
# https://github.com/docker/setup-buildx-action
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
# https://github.com/docker/login-action
- name: Login to DockerHub
# Only login if not a PR, as PRs only trigger a Docker build and not a push
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
###############################################
# Build/Push the 'snipe/snipe-it' image
###############################################
# https://github.com/docker/metadata-action
# Get Metadata for docker_build step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'snipe-it' image
id: meta_build
uses: docker/metadata-action@v5
with:
images: snipe/snipe-it
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
# https://github.com/docker/build-push-action
- name: Build and push 'snipe-it' image
id: docker_build
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile.alpine
platforms: linux/arm64
platforms: linux/amd64,linux/arm64
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}

View File

@@ -1,5 +1,5 @@
# Snipe-IT Docker image build for hub.docker.com
name: Docker Ubuntu images
name: Docker images (Ubuntu)
# Run this Build for all pushes to 'master' or develop branch, or tagged releases.
# Also run for PRs to ensure PR doesn't break Docker build process
@@ -8,7 +8,6 @@ on:
branches:
- master
- develop
- dockerhub-testing
tags:
- 'v**'
# Allows you to run this workflow manually from the Actions tab
@@ -20,10 +19,10 @@ permissions:
contents: read
jobs:
docker-ubuntu-arm:
docker:
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
if: github.repository == 'grokability/snipe-it'
runs-on: ubuntu-24.04-arm
runs-on: ubuntu-latest
env:
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
# For a new commit on default branch (master), use the literal tag 'latest' on Docker image.
@@ -32,7 +31,6 @@ jobs:
IMAGE_TAGS: |
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }}
type=raw,value={{branch}}-ubuntu-arm
type=ref,event=tag
type=semver,pattern=v{{major}}-latest
# Define default tag "flavor" for docker/metadata-action per
@@ -42,6 +40,10 @@ jobs:
latest=false
steps:
# https://github.com/actions/checkout
- name: Checkout codebase
uses: actions/checkout@v4
# https://github.com/docker/setup-buildx-action
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
@@ -75,96 +77,10 @@ jobs:
with:
context: .
file: ./Dockerfile
platforms: linux/arm64
platforms: linux/amd64,linux/arm64
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
docker-ubuntu-intel:
# Ensure this job never runs on forked repos. It's only executed for 'grokability/snipe-it'
if: github.repository == 'grokability/snipe-it'
runs-on: ubuntu-latest
env:
# Define tags to use for Docker images based on Git tags/branches (for docker/metadata-action)
# For a new commit on default branch (master), use the literal tag 'latest' on Docker image.
# For a new commit on other branches, use the branch name as the tag for Docker image.
# For a new tag, copy that tag name as the tag for Docker image.
IMAGE_TAGS: |
type=raw,value=latest,enable=${{ endsWith(github.ref, github.event.repository.default_branch) }}
type=raw,value={{branch}}-ubuntu-intel
type=ref,event=branch,enable=${{ !endsWith(github.ref, github.event.repository.default_branch) }}
type=ref,event=tag
type=semver,pattern=v{{major}}-latest
# Define default tag "flavor" for docker/metadata-action per
# https://github.com/docker/metadata-action#flavor-input
# We turn off 'latest' tag by default.
TAGS_FLAVOR: |
latest=false
steps:
# https://github.com/docker/setup-buildx-action
- name: Setup Docker Buildx
uses: docker/setup-buildx-action@v3
# https://github.com/docker/login-action
- name: Login to DockerHub
# Only login if not a PR, as PRs only trigger a Docker build and not a push
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
###############################################
# Build/Push the 'snipe/snipe-it' image
###############################################
# https://github.com/docker/metadata-action
# Get Metadata for docker_build step below
- name: Sync metadata (tags, labels) from GitHub to Docker for 'snipe-it' image
id: meta_build
uses: docker/metadata-action@v5
with:
images: snipe/snipe-it
tags: ${{ env.IMAGE_TAGS }}
flavor: ${{ env.TAGS_FLAVOR }}
# https://github.com/docker/build-push-action
- name: Build and push 'snipe-it' image
id: docker_build
uses: docker/build-push-action@v6
with:
context: .
file: ./Dockerfile
platforms: linux/amd64
# For pull requests, we run the Docker build (to ensure no PR changes break the build),
# but we ONLY do an image push to DockerHub if it's NOT a PR
push: ${{ github.event_name != 'pull_request' }}
# Use tags / labels provided by 'docker/metadata-action' above
tags: ${{ steps.meta_build.outputs.tags }}
labels: ${{ steps.meta_build.outputs.labels }}
combinator:
name: combine multiple arches into a single "image"
env:
BRANCH: ${{github.ref_name }}
needs: [docker-ubuntu-intel, docker-ubuntu-arm]
runs-on: ubuntu-latest
steps:
# https://github.com/docker/login-action
- name: Login to DockerHub
# Only login if not a PR, as PRs only trigger a Docker build and not a push
if: github.event_name != 'pull_request'
uses: docker/login-action@v3
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_ACCESS_TOKEN }}
- name: combine manifests
uses: Noelware/docker-manifest-action@master
with:
tags: snipe/snipe-it:${{ env.BRANCH }}-combined
inputs: snipe/snipe-it:${{ env.BRANCH }}-ubuntu-intel,snipe/snipe-it:${{ env.BRANCH }}-ubuntu-arm
push: true

View File

@@ -249,6 +249,7 @@ class RestoreFromBackup extends Command
'storage/private_uploads/consumables',
'storage/private_uploads/eula-pdfs',
'storage/private_uploads/imports',
'storage/private_uploads/locations',
'storage/private_uploads/licenses',
'storage/private_uploads/signatures',
'storage/private_uploads/users',

View File

@@ -1487,6 +1487,7 @@ class Helper
$redirect_option = Session::get('redirect_option');
$checkout_to_type = Session::get('checkout_to_type');
$checkedInFrom = Session::get('checkedInFrom');
$other_redirect = Session::get('other_redirect');
// return to index
if ($redirect_option == 'index') {
@@ -1535,6 +1536,16 @@ class Helper
return route('hardware.show', $request->assigned_asset ?? $checkedInFrom);
}
}
// return to somewhere else
if ($redirect_option == 'other_redirect') {
switch ($other_redirect) {
case 'audit':
return route('assets.audit.due');
}
}
return redirect()->back()->with('error', trans('admin/hardware/message.checkout.error'));
}

View File

@@ -35,6 +35,7 @@ use Illuminate\Support\Facades\Route;
use App\View\Label;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Facades\Validator;
use App\Http\Requests\AuditRequest;
/**
@@ -1071,25 +1072,33 @@ class AssetsController extends Controller
* @param int $id
* @since [v4.0]
*/
public function audit(Request $request, Asset $asset): JsonResponse
public function audit(AuditRequest $request): JsonResponse
{
$this->authorize('audit', Asset::class);
$settings = Setting::getSettings();
$dt = Carbon::now()->addMonths($settings->audit_interval)->toDateString();
// Allow the asset tag to be passed in the payload (legacy method)
if ($request->filled('asset_tag')) {
$asset = Asset::where('asset_tag', '=', $request->input('asset_tag'))->first();
// Check if it's an array or a string
if (is_array($request->input('asset_tag'))) {
$asset_tag = $request->input('asset_tag');
$multi_audit = true;
} else {
// If it's a string, make it into an array so we can use it in the whereIn query
$asset_tag = [$request->input('asset_tag')];
$multi_audit = false;
}
if ($asset) {
$assets = Asset::whereIn('asset_tag', $asset_tag)->get();
foreach ($assets as $asset) {
$originalValues = $asset->getRawOriginal();
$asset->next_audit_date = $dt;
$asset->last_audit_date = date('Y-m-d H:i:s');
// Overwrite next_audit_date if it was specified in the request
if ($request->filled('next_audit_date')) {
$asset->next_audit_date = $request->input('next_audit_date');
}
@@ -1100,15 +1109,24 @@ class AssetsController extends Controller
$asset->location_id = $request->input('location_id');
}
$asset->last_audit_date = date('Y-m-d H:i:s');
// Set up the payload for re-display in the API response
$payload = [
'id' => $asset->id,
'asset_tag' => $asset->asset_tag,
'note' => $request->input('note'),
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date),
];
if ($multi_audit === true) {
$payload[] = [
'id' => $asset->id,
'asset_tag' => $asset->asset_tag,
'note' => $request->input('note'),
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date),
];
} else {
$payload[] = [
'id' => $asset->id,
'asset_tag' => $asset->asset_tag,
'note' => $request->input('note'),
'next_audit_date' => Helper::getFormattedDateObject($asset->next_audit_date),
];
}
/**
@@ -1176,11 +1194,14 @@ class AssetsController extends Controller
*/
if ($asset->isValid() && $asset->save()) {
$asset->logAudit(request('note'), request('location_id'), null, $originalValues);
return response()->json(Helper::formatStandardApiResponse('success', $payload, trans('admin/hardware/message.audit.success')));
}
}
if (count($payload) > 0) {
return response()->json(Helper::formatStandardApiResponse('success', $payload, trans('admin/hardware/message.audit.success')));
}
// No matching asset for the asset tag that was passed.
return response()->json(Helper::formatStandardApiResponse('error', null, trans('admin/hardware/message.does_not_exist')), 200);

View File

@@ -34,7 +34,7 @@ class LicenseSeatsController extends Controller
if ($request->input('sort') == 'department') {
$seats->OrderDepartments($order);
} else {
$seats->orderBy('id', $order);
$seats->orderBy('updated_at', $order);
}
$total = $seats->count();

View File

@@ -42,12 +42,11 @@ class AssetCheckinController extends Controller
return redirect()->route('hardware.show', $asset->id)->with('error', trans('admin/hardware/general.model_invalid_fix'));
}
// Validate custom fields on existing asset
$validator = Validator::make($asset->toArray(), $asset->customFieldValidationRules());
// Invoke the validation to see if the audit will complete successfully
$asset->setRules($asset->getRules() + $asset->customFieldValidationRules());
if ($validator->fails()) {
return redirect()->route('hardware.edit', $asset)
->withErrors($validator);
if ($asset->isInvalid()) {
return redirect()->route('hardware.edit', $asset)->withErrors($asset->getErrors());
}
$target_option = match ($asset->assigned_type) {

View File

@@ -37,13 +37,13 @@ class AssetCheckoutController extends Controller
->with('error', trans('admin/hardware/general.model_invalid_fix'));
}
// Validate custom fields on existing asset
$validator = Validator::make($asset->toArray(), $asset->customFieldValidationRules());
// Invoke the validation to see if the audit will complete successfully
$asset->setRules($asset->getRules() + $asset->customFieldValidationRules());
if ($validator->fails()) {
return redirect()->route('hardware.edit', $asset)
->withErrors($validator);
if ($asset->isInvalid()) {
return redirect()->route('hardware.edit', $asset)->withErrors($asset->getErrors());
}
if ($asset->availableForCheckout()) {
return view('hardware/checkout', compact('asset'))

View File

@@ -519,7 +519,7 @@ class AssetsController extends Controller
{
$settings = Setting::getSettings();
if (($settings->qr_code == '1') && ($settings->label2_2d_type !== 'none')) {
if ($settings->label2_2d_type !== 'none') {
if ($asset) {
$size = Helper::barcodeDimensions($settings->label2_2d_type);
@@ -882,12 +882,12 @@ class AssetsController extends Controller
$this->authorize('audit', Asset::class);
$settings = Setting::getSettings();
// Validate custom fields on existing asset
$validator = Validator::make($asset->toArray(), $asset->customFieldValidationRules());
if ($validator->fails()) {
return redirect()->route('hardware.edit', $asset)
->withErrors($validator);
// Invoke the validation to see if the audit will complete successfully
$asset->setRules($asset->getRules() + $asset->customFieldValidationRules());
if ($asset->isInvalid()) {
return redirect()->route('hardware.edit', $asset)->withErrors($asset->getErrors());
}
$dt = Carbon::now()->addMonths($settings->audit_interval)->toDateString();
@@ -899,6 +899,10 @@ class AssetsController extends Controller
$this->authorize('audit', Asset::class);
session()->put('redirect_option', $request->get('redirect_option'));
session()->put('other_redirect', 'audit');
$originalValues = $asset->getRawOriginal();
$asset->next_audit_date = $request->input('next_audit_date');
@@ -974,7 +978,7 @@ class AssetsController extends Controller
}
$asset->logAudit($request->input('note'), $request->input('location_id'), $file_name, $originalValues);
return redirect()->route('assets.audit.due')->with('success', trans('admin/hardware/message.audit.success'));
return redirect()->to(Helper::getRedirectOption($request, $asset->id, 'Assets'))->with('success', trans('admin/hardware/message.audit.success'));
}
return redirect()->back()->withInput()->withErrors($asset->getErrors());

View File

@@ -484,6 +484,7 @@ class LoginController extends Controller
}
$request->session()->regenerate(true);
$request->session()->forget('2fa_authed');
if ($request->session()->has('password_hash_'.Auth::getDefaultDriver())){
$request->session()->remove('password_hash_'.Auth::getDefaultDriver());

View File

@@ -737,6 +737,11 @@ class ReportsController extends Controller
if (($request->filled('next_audit_start')) && ($request->filled('next_audit_end'))) {
$assets->whereBetween('assets.next_audit_date', [$request->input('next_audit_start'), $request->input('next_audit_end')]);
}
if (($request->filled('last_updated_start')) && ($request->filled('last_updated_end'))) {
$assets->whereBetween('assets.updated_at', [$request->input('last_updated_start'), $request->input('last_updated_end')]);
}
if ($request->filled('exclude_archived')) {
$assets->notArchived();
}

View File

@@ -0,0 +1,30 @@
<?php
namespace App\Http\Requests;
use App\Models\Asset;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Support\Facades\Gate;
class AuditRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return Gate::allows('audit', new Asset);
}
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\ValidationRule|array<mixed>|string>
*/
public function rules(): array
{
return [
'asset_tag' => 'required|exists:assets,asset_tag',
];
}
}

View File

@@ -19,6 +19,7 @@ class StoreAssetModelRequest extends ImageUploadRequest
public function prepareForValidation(): void
{
parent::prepareForValidation();
if ($this->category_id) {
if ($category = Category::find($this->category_id)) {

View File

@@ -13,16 +13,15 @@ class LicenseSeatsTransformer
public function transformLicenseSeats(Collection $seats, $total)
{
$array = [];
$seat_count = 0;
foreach ($seats as $seat) {
$seat_count++;
$array[] = self::transformLicenseSeat($seat, $seat_count);
$array[] = self::transformLicenseSeat($seat);
}
return (new DatatablesTransformer)->transformDatatables($array, $total);
}
public function transformLicenseSeat(LicenseSeat $seat, $seat_count = 0)
public function transformLicenseSeat(LicenseSeat $seat)
{
$array = [
'id' => (int) $seat->id,
@@ -55,10 +54,6 @@ class LicenseSeatsTransformer
'user_can_checkout' => (($seat->assigned_to == '') && ($seat->asset_id == '')),
];
if ($seat_count != 0) {
$array['name'] = trans('admin/licenses/general.seat_count', ['count' => $seat_count]);
}
$permissions_array['available_actions'] = [
'checkout' => Gate::allows('checkout', License::class),
'checkin' => Gate::allows('checkin', License::class),

View File

@@ -113,7 +113,10 @@ class CustomFieldset extends Model
$rule[] = 'unique_undeleted';
}
array_push($rule, $field->attributes['format']);
if ($field->attributes['format']!='') {
array_push($rule, $field->attributes['format']);
}
$rules[$field->db_column_name()] = $rule;

View File

@@ -230,16 +230,7 @@ class LicensePresenter extends Presenter
'switchable' => true,
'title' => trans('general.id'),
'visible' => false,
],
[
'field' => 'name',
'searchable' => false,
'sortable' => false,
'sorter' => 'numericOnly',
'switchable' => true,
'title' => trans('admin/licenses/general.seat'),
'visible' => true,
], [
],[
'field' => 'assigned_user',
'searchable' => false,
'sortable' => false,
@@ -285,7 +276,7 @@ class LicensePresenter extends Presenter
'searchable' => false,
'sortable' => true,
'visible' => false,
'title' => trans('general.date'),
'title' => trans('general.updated_at'),
'formatter' => 'dateDisplayFormatter',
],
[

View File

@@ -67,6 +67,11 @@ class BreadcrumbsServiceProvider extends ServiceProvider
->push(trans('general.create'), route('hardware.create'))
);
Breadcrumbs::for('clone/hardware', fn (Trail $trail) =>
$trail->parent('hardware.index', route('hardware.index'))
->push(trans('admin/hardware/general.clone'), route('hardware.create'))
);
Breadcrumbs::for('hardware.show', fn (Trail $trail, Asset $asset) =>
$trail->parent('hardware.index', route('hardware.index'))
->push($asset->present()->fullName(), route('hardware.show', $asset))
@@ -378,6 +383,12 @@ class BreadcrumbsServiceProvider extends ServiceProvider
->push(trans('general.create'), route('locations.create'))
);
Breadcrumbs::for('clone/location', fn (Trail $trail) =>
$trail->parent('locations.index', route('locations.index'))
->push(trans('admin/locations/table.clone'), route('locations.create'))
);
Breadcrumbs::for('locations.show', fn (Trail $trail, Location $location) =>
$trail->parent('locations.index', route('locations.index'))
->push($location->name, route('locations.show', $location))
@@ -539,6 +550,13 @@ class BreadcrumbsServiceProvider extends ServiceProvider
->push(trans('general.create'), route('users.create'))
);
Breadcrumbs::for('users.clone.show', fn (Trail $trail) =>
$trail->parent('users.index', route('users.index'))
->push(trans('admin/users/general.clone'), route('users.create'))
);
Breadcrumbs::for('users.show', fn (Trail $trail, User $user) =>
$trail->parent('users.index', route('users.index'))
->push($user->getFullNameAttribute() ?? 'Missing Username!', route('users.show', $user))

12
composer.lock generated
View File

@@ -3558,16 +3558,16 @@
},
{
"name": "league/commonmark",
"version": "2.6.1",
"version": "2.7.0",
"source": {
"type": "git",
"url": "https://github.com/thephpleague/commonmark.git",
"reference": "d990688c91cedfb69753ffc2512727ec646df2ad"
"reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/d990688c91cedfb69753ffc2512727ec646df2ad",
"reference": "d990688c91cedfb69753ffc2512727ec646df2ad",
"url": "https://api.github.com/repos/thephpleague/commonmark/zipball/6fbb36d44824ed4091adbcf4c7d4a3923cdb3405",
"reference": "6fbb36d44824ed4091adbcf4c7d4a3923cdb3405",
"shasum": ""
},
"require": {
@@ -3604,7 +3604,7 @@
"type": "library",
"extra": {
"branch-alias": {
"dev-main": "2.7-dev"
"dev-main": "2.8-dev"
}
},
"autoload": {
@@ -3661,7 +3661,7 @@
"type": "tidelift"
}
],
"time": "2024-12-29T14:10:59+00:00"
"time": "2025-05-05T12:20:28+00:00"
},
{
"name": "league/config",

View File

@@ -1,10 +1,10 @@
<?php
return array (
'app_version' => 'v8.1.2',
'full_app_version' => 'v8.1.2 - build 17914-g251851ec6',
'build_version' => '17914',
'app_version' => 'v8.1.3',
'full_app_version' => 'v8.1.3 - build 18054-gd67933ab4',
'build_version' => '18054',
'prerelease_version' => '',
'hash_version' => 'g251851ec6',
'full_hash' => 'v8.1.2-32-g251851ec6',
'hash_version' => 'gd67933ab4',
'full_hash' => 'v8.1.3-133-gd67933ab4',
'branch' => 'develop',
);

View File

@@ -614,11 +614,6 @@ input[type=search] {
.search-highlight:hover {
background-color: var(--back-sub) !important;
}
.input-group,
.input-group-addon {
background-color: var(--back-sub);
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -1408,11 +1403,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -2378,11 +2368,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -2918,11 +2903,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -3654,11 +3634,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -4406,11 +4381,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -5357,11 +5327,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -614,11 +614,6 @@ input[type=search] {
.search-highlight:hover {
background-color: var(--back-sub) !important;
}
.input-group,
.input-group-addon {
background-color: var(--back-sub);
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -1408,11 +1403,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -2378,11 +2368,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -2918,11 +2903,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -3654,11 +3634,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -4406,11 +4381,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}
@@ -5357,11 +5327,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -396,11 +396,6 @@ input[type=search] {
.search-highlight:hover {
background-color: var(--back-sub) !important;
}
.input-group,
.input-group-addon {
background-color: var(--back-sub);
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -396,11 +396,6 @@ input[type=search] {
.search-highlight:hover {
background-color: var(--back-sub) !important;
}
.input-group,
.input-group-addon {
background-color: var(--back-sub);
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -377,11 +377,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -377,11 +377,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -368,11 +368,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -368,11 +368,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -378,11 +378,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -378,11 +378,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -378,11 +378,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -378,11 +378,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -377,11 +377,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -377,11 +377,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -355,11 +355,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -355,11 +355,6 @@ input[type=search] {
background-color: var(--back-sub);
color: var(--text-main);
}
.input-group,
.input-group-addon {
background-color: var(--back-sub) !important;
color: var(--text-main);
}
#licensesTable > tbody > tr > td > nobr > a > i.fa {
color: var(--text-main);
}

View File

@@ -1,23 +1,23 @@
{
"/js/build/app.js": "/js/build/app.js?id=19253af36b58ed3fb6770c7bb944f079",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=06c13e817cc022028b3f4a33c0ca303a",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=3955411f214d1aa011fd509b6c81fbea",
"/css/dist/skins/skin-black-dark.css": "/css/dist/skins/skin-black-dark.css?id=78bfb1c7b5782df4fb0ac7e36f80f847",
"/css/dist/skins/_all-skins.css": "/css/dist/skins/_all-skins.css?id=503d0b09e157a22f555e3670d1ec9bb5",
"/css/build/overrides.css": "/css/build/overrides.css?id=2bfc7b71d951c5ac026dbc034f7373b1",
"/css/build/app.css": "/css/build/app.css?id=4b4c2f1225d59efa7a22b76f7bbe39d8",
"/css/build/AdminLTE.css": "/css/build/AdminLTE.css?id=4ea0068716c1bb2434d87a16d51b98c9",
"/css/dist/skins/skin-yellow.css": "/css/dist/skins/skin-yellow.css?id=7b315b9612b8fde8f9c5b0ddb6bba690",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=5bbc74fa36ad7e85114e95c99f244421",
"/css/dist/skins/skin-yellow-dark.css": "/css/dist/skins/skin-yellow-dark.css?id=f6b2e7fa795596ac4754500c9c30eacc",
"/css/dist/skins/skin-red.css": "/css/dist/skins/skin-red.css?id=44bf834f2110504a793dadec132a5898",
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=b70f0d0cf76a643b3fbf47a1dfdb1529",
"/css/dist/skins/skin-red-dark.css": "/css/dist/skins/skin-red-dark.css?id=bcba8a437f59c2334f9bd32f668ff9bb",
"/css/dist/skins/skin-purple.css": "/css/dist/skins/skin-purple.css?id=6fe68325d5356197672c27bc77cedcb4",
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=25f255bc860b5472b201ef700fd638a8",
"/css/dist/skins/skin-purple-dark.css": "/css/dist/skins/skin-purple-dark.css?id=093bd9d22c19a903b826bb4a1c819263",
"/css/dist/skins/skin-orange.css": "/css/dist/skins/skin-orange.css?id=6f0563e726c2fe4fab4026daaa5bfdf2",
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=07e257b423e6a8f984e1d9bf0bb04fe0",
"/css/dist/skins/skin-orange-dark.css": "/css/dist/skins/skin-orange-dark.css?id=723ac4a390d628c9253d5416494cdaf4",
"/css/dist/skins/skin-green.css": "/css/dist/skins/skin-green.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=bb648ddce4bc923ac79205a78882248d",
"/css/dist/skins/skin-green-dark.css": "/css/dist/skins/skin-green-dark.css?id=624d1d9b9bf141a593cfe835fdfc85cc",
"/css/dist/skins/skin-contrast.css": "/css/dist/skins/skin-contrast.css?id=da6c7997d9de2f8329142399f0ce50da",
"/css/dist/skins/skin-blue.css": "/css/dist/skins/skin-blue.css?id=a82b065847bf3cd5d713c04ee8dc86c6",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=e4facb3da382b3c6f040f7d0b738643d",
"/css/dist/skins/skin-blue-dark.css": "/css/dist/skins/skin-blue-dark.css?id=7aacfabbafd138c5af6420609f97820d",
"/css/dist/skins/skin-black.css": "/css/dist/skins/skin-black.css?id=76482123f6c70e866d6b971ba91de7bb",
"/css/dist/all.css": "/css/dist/all.css?id=12e96a25d0dc3ee39e9d3ce97044fbbf",
"/css/dist/signature-pad.css": "/css/dist/signature-pad.css?id=6a89d3cd901305e66ced1cf5f13147f7",
@@ -92,21 +92,21 @@
"/css/webfonts/fa-v4compatibility.woff2": "/css/webfonts/fa-v4compatibility.woff2?id=331c85bd61ffa93af09273d1bc2add5a",
"/js/dist/bootstrap-table-locale-all.min.js": "/js/dist/bootstrap-table-locale-all.min.js?id=5e93ef0a1889bed3f92a705dc1e92c9b",
"/js/dist/bootstrap-table-en-US.min.js": "/js/dist/bootstrap-table-en-US.min.js?id=c0f21fb7e62d6f0a0153f1cdbf26782a",
"/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=3955411f214d1aa011fd509b6c81fbea",
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=06c13e817cc022028b3f4a33c0ca303a",
"/css/dist/skins/_all-skins.min.css": "/css/dist/skins/_all-skins.min.css?id=503d0b09e157a22f555e3670d1ec9bb5",
"/css/dist/skins/skin-black-dark.min.css": "/css/dist/skins/skin-black-dark.min.css?id=78bfb1c7b5782df4fb0ac7e36f80f847",
"/css/dist/skins/skin-black.min.css": "/css/dist/skins/skin-black.min.css?id=76482123f6c70e866d6b971ba91de7bb",
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=e4facb3da382b3c6f040f7d0b738643d",
"/css/dist/skins/skin-blue-dark.min.css": "/css/dist/skins/skin-blue-dark.min.css?id=7aacfabbafd138c5af6420609f97820d",
"/css/dist/skins/skin-blue.min.css": "/css/dist/skins/skin-blue.min.css?id=a82b065847bf3cd5d713c04ee8dc86c6",
"/css/dist/skins/skin-contrast.min.css": "/css/dist/skins/skin-contrast.min.css?id=da6c7997d9de2f8329142399f0ce50da",
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=bb648ddce4bc923ac79205a78882248d",
"/css/dist/skins/skin-green-dark.min.css": "/css/dist/skins/skin-green-dark.min.css?id=624d1d9b9bf141a593cfe835fdfc85cc",
"/css/dist/skins/skin-green.min.css": "/css/dist/skins/skin-green.min.css?id=0a82a6ae6bb4e58fe62d162c4fb50397",
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=07e257b423e6a8f984e1d9bf0bb04fe0",
"/css/dist/skins/skin-orange-dark.min.css": "/css/dist/skins/skin-orange-dark.min.css?id=723ac4a390d628c9253d5416494cdaf4",
"/css/dist/skins/skin-orange.min.css": "/css/dist/skins/skin-orange.min.css?id=6f0563e726c2fe4fab4026daaa5bfdf2",
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=25f255bc860b5472b201ef700fd638a8",
"/css/dist/skins/skin-purple-dark.min.css": "/css/dist/skins/skin-purple-dark.min.css?id=093bd9d22c19a903b826bb4a1c819263",
"/css/dist/skins/skin-purple.min.css": "/css/dist/skins/skin-purple.min.css?id=6fe68325d5356197672c27bc77cedcb4",
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=b70f0d0cf76a643b3fbf47a1dfdb1529",
"/css/dist/skins/skin-red-dark.min.css": "/css/dist/skins/skin-red-dark.min.css?id=bcba8a437f59c2334f9bd32f668ff9bb",
"/css/dist/skins/skin-red.min.css": "/css/dist/skins/skin-red.min.css?id=44bf834f2110504a793dadec132a5898",
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=5bbc74fa36ad7e85114e95c99f244421",
"/css/dist/skins/skin-yellow-dark.min.css": "/css/dist/skins/skin-yellow-dark.min.css?id=f6b2e7fa795596ac4754500c9c30eacc",
"/css/dist/skins/skin-yellow.min.css": "/css/dist/skins/skin-yellow.min.css?id=7b315b9612b8fde8f9c5b0ddb6bba690",
"/css/dist/bootstrap-table.css": "/css/dist/bootstrap-table.css?id=54d676a6ea8677dd48f6c4b3041292cf",
"/js/build/vendor.js": "/js/build/vendor.js?id=89dffa552c6e3abe3a2aac6c9c7b466b",

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'crwdns6501:0crwdne6501:0',
'field' => 'crwdns1487:0crwdne1487:0',
'about_fieldsets_title' => 'crwdns1488:0crwdne1488:0',
'about_fieldsets_text' => 'crwdns13176:0crwdne13176:0',
'about_fieldsets_text' => 'crwdns13226:0crwdne13226:0',
'custom_format' => 'crwdns6505:0crwdne6505:0',
'encrypt_field' => 'crwdns1792:0crwdne1792:0',
'encrypt_field_help' => 'crwdns1683:0crwdne1683:0',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'crwdns6693:0crwdne6693:0',
'signed_by_location_manager' => 'crwdns6695:0crwdne6695:0',
'signed_by' => 'crwdns6697:0crwdne6697:0',
'clone' => 'crwdns13240:0crwdne13240:0',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'crwdns6337:0crwdne6337:0',
'eula_settings' => 'crwdns1296:0crwdne1296:0',
'eula_markdown' => 'crwdns1261:0crwdne1261:0',
'empty_row_count' => 'crwdns13236:0crwdne13236:0',
'empty_row_count_help' => 'crwdns13238:0crwdne13238:0',
'favicon' => 'crwdns5858:0crwdne5858:0',
'favicon_format' => 'crwdns5860:0crwdne5860:0',
'favicon_size' => 'crwdns5862:0crwdne5862:0',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'crwdns1465:0crwdne1465:0',
'scope_locations_fmcs_support_text' => 'crwdns13049:0crwdne13049:0',
'scope_locations_fmcs_support_help_text' => 'crwdns13188:0crwdne13188:0',
'scope_locations_fmcs_check_button' => 'crwdns13234:0crwdne13234:0',
'scope_locations_fmcs_support_disabled_text' => 'crwdns13190:0crwdne13190:0',
'show_in_model_list' => 'crwdns1990:0crwdne1990:0',
'optional' => 'crwdns1298:0crwdne1298:0',

View File

@@ -389,6 +389,8 @@ return [
'new_license' => 'crwdns6249:0crwdne6249:0',
'new_accessory' => 'crwdns6251:0crwdne6251:0',
'new_consumable' => 'crwdns6253:0crwdne6253:0',
'new_component' => 'crwdns13228:0crwdne13228:0',
'new_user' => 'crwdns13230:0crwdne13230:0',
'collapse' => 'crwdns6255:0crwdne6255:0',
'assigned' => 'crwdns6257:0crwdne6257:0',
'asset_count' => 'crwdns6259:0crwdne6259:0',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'crwdns12550:0crwdne12550:0',
'ulid' => 'crwdns12552:0crwdne12552:0',
'uuid' => 'crwdns12554:0crwdne12554:0',
'fmcs_location' => 'crwdns13232:0crwdne13232:0',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'veld',
'about_fieldsets_title' => 'Oor Fieldsets',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Veldstelle stel jou in staat om groepe van persoonlike velde te skep wat gereeld hergebruik word vir spesifieke tipe bates.',
'custom_format' => 'Custom Regex format...',
'encrypt_field' => 'Enkripteer die waarde van hierdie veld in die databasis',
'encrypt_field_help' => 'WAARSKUWING: Om \'n veld te enkripteer, maak dit onondersoekbaar.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
'signed_by_location_manager' => 'Signed By (Location Manager):',
'signed_by' => 'Signed Off By:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Enabled',
'eula_settings' => 'EULA-instellings',
'eula_markdown' => 'Hierdie EULA laat <a href="https://help.github.com/articles/github-flavored-markdown/">Github-geurde markdown</a> toe.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Accepted filetypes are ico, png, and gif. Other image formats may not work in all browsers.',
'favicon_size' => 'Favicons should be square images, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Volledige Veelvuldige Maatskappye Ondersteuning',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Show in Model Dropdowns',
'optional' => 'opsioneel',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'New License',
'new_accessory' => 'New Accessory',
'new_consumable' => 'New Consumable',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Collapse',
'assigned' => 'Assigned',
'asset_count' => 'Asset Count',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom Regex format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
'signed_by_location_manager' => 'Signed By (Location Manager):',
'signed_by' => 'Signed Off By:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Enabled',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Accepted filetypes are ico, png, and gif. Other image formats may not work in all browsers.',
'favicon_size' => 'Favicons should be square images, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Show in Model Dropdowns',
'optional' => 'optional',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'New License',
'new_accessory' => 'New Accessory',
'new_consumable' => 'New Consumable',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Collapse',
'assigned' => 'Assigned',
'asset_count' => 'Asset Count',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'إدارة',
'field' => 'حقل',
'about_fieldsets_title' => 'حول مجموعة الحقول',
'about_fieldsets_text' => 'مجموعات الحقول تسمح لك بإنشاء مجموعات من الحقول المخصصة التي يعاد استخدامها في كثير من الأحيان لأنواع معينة من نماذج الأصول.',
'about_fieldsets_text' => '(مجموعات الحقول) تسمح لك بإنشاء مجموعات من الحقول اللتي يمكن إعادة إستخدامها مع موديل محدد.',
'custom_format' => 'تنسيق Regex المخصص...',
'encrypt_field' => 'تشفير قيمة هذا الحقل في قاعدة البيانات',
'encrypt_field_help' => 'تحذير: تشفير الحقل يجعله غير قابل للبحث.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'موقعة من قبل (مراجع الحسابات المالي):',
'signed_by_location_manager' => 'توقيع بواسطة (مدير الموقع):',
'signed_by' => 'تم توقيعه من قبل:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'تمكين',
'eula_settings' => 'إعدادات اتفاقية ترخيص المستخدم النهائي',
'eula_markdown' => 'تسمح اتفاقية ترخيص المستخدم هذه <a href="https://help.github.com/articles/github-flavored-markdown/">بتطبيق نمط الكتابة من Github</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'أنواع الملفات المقبولة هي رمز و png و gif. قد لا تعمل تنسيقات الصور الأخرى في كافة المستعرضات.',
'favicon_size' => 'وينبغي أن تكون Favicons صور مربعة ، 16x16 بكسل.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'كامل دعم الشركات المتعددة',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'إظهار في القوائم المنسدلة للنماذج',
'optional' => 'اختياري',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'ترخيص جديد',
'new_accessory' => 'ملحق الجودة',
'new_consumable' => 'مادة إستهلاكية جديدة',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'اخفاء',
'assigned' => 'مسندة',
'asset_count' => 'عدد الأصول',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Управление',
'field' => 'Поле',
'about_fieldsets_title' => 'Относно Fieldsets',
'about_fieldsets_text' => '"Група от полета" позволяват създаването на групи от персонализирани полета, които се използват и преизползват често за специфични типове модели на активи.',
'about_fieldsets_text' => 'Fieldsets позволяват създаването на групи от персонализирани полета, които се използват и преизползват често за специфични типове модели на активи.',
'custom_format' => 'Персонализиран формат...',
'encrypt_field' => 'Шифроване на стойността на това поле в базата данни',
'encrypt_field_help' => 'ВНИМАНИЕ: Шифроване на поле го прави невалидно за търсене.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Подписан от (счетоводител):',
'signed_by_location_manager' => 'Подписан от (мениджър):',
'signed_by' => 'Подписано от:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Активно',
'eula_settings' => 'Настройки на EULA',
'eula_markdown' => 'Съдържанието на EULA може да бъде форматирано с <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Приетите файлови формати са ico, png, и gif. Другите формати на снимки може да не работят в всъчки браузъри.',
'favicon_size' => 'Favicons трябва да бъдат квадратна снимка с размери, 16х16 пиксела.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Поддръжка на множество компании',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Показване в падащите менюта на моделите',
'optional' => 'незадължително',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Нов Лиценз',
'new_accessory' => 'Нов аксесоар',
'new_consumable' => 'Нов Консуматив',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Свий',
'assigned' => 'Възложен',
'asset_count' => 'Брой Активи',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom Regex format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
'signed_by_location_manager' => 'Signed By (Location Manager):',
'signed_by' => 'Signed Off By:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Enabled',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Accepted filetypes are ico, png, and gif. Other image formats may not work in all browsers.',
'favicon_size' => 'Favicons should be square images, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Show in Model Dropdowns',
'optional' => 'optional',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'New License',
'new_accessory' => 'New Accessory',
'new_consumable' => 'New Consumable',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Collapse',
'assigned' => 'Assigned',
'asset_count' => 'Asset Count',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom Regex format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
'signed_by_location_manager' => 'Signed By (Location Manager):',
'signed_by' => 'Signed Off By:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Enabled',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Accepted filetypes are ico, png, and gif. Other image formats may not work in all browsers.',
'favicon_size' => 'Favicons should be square images, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Show in Model Dropdowns',
'optional' => 'optional',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'New License',
'new_accessory' => 'New Accessory',
'new_consumable' => 'New Consumable',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Collapse',
'assigned' => 'Assigned',
'asset_count' => 'Asset Count',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Podepsáno (Finanční auditor):',
'signed_by_location_manager' => 'Podepsáno (Manager):',
'signed_by' => 'Odepsal:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Povoleno',
'eula_settings' => 'Nastavení EULA',
'eula_markdown' => 'Tato EULA umožňuje <a href="https://help.github.com/articles/github-flavored-markdown/">Github markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicona',
'favicon_format' => 'Povolené typy souborů jsou ico, png a gif. Ostatní formáty obrázků nemusí fungovat ve všech prohlížečích.',
'favicon_size' => 'Favikony by měly být čtvercové obrázky, 16 x 16 pixelů.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Plná podpora více společností',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Zobrazit v rozbalovacích nabídkách modelu',
'optional' => 'volitelný',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Nová licence',
'new_accessory' => 'Nové příslušenství',
'new_consumable' => 'Nový spotřební materiál',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Sbalit',
'assigned' => 'Přiřazené',
'asset_count' => 'Počet aktiv',

View File

@@ -172,6 +172,7 @@ return [
'url' => ':attribute není platnou URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Manage',
'field' => 'Meysydd',
'about_fieldsets_title' => 'Amdan grwpiau meysydd',
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'about_fieldsets_text' => 'Mae grwpiau meysydd yn caniatau i chi creu grwpiau o meysydd addasedig sydd yn cael ei defnyddio yn amal ar gyfer mathau penodol o asedau.',
'custom_format' => 'Custom Regex format...',
'encrypt_field' => 'Hamcryptio gwerth y maes yma yn y basdata',
'encrypt_field_help' => 'RHYBUDD: Mae hamcryptio maes yn feddwl nid oes modd chwilio amdano.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Signed By (Finance Auditor):',
'signed_by_location_manager' => 'Signed By (Location Manager):',
'signed_by' => 'Signed Off By:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Enabled',
'eula_settings' => 'Gosodiadau CTDT',
'eula_markdown' => 'Mae\'r CTDT yma yn caniatau <a href="https://help.github.com/articles/github-flavored-markdown/">markdown GitHub</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Mathau o ffeiliau a dderbynnir yw ico, png, a gif. Mae\'n bosib cewch trafferthion hefo rhai gwahanol mewn rhai porrwyr.',
'favicon_size' => 'Dylith favicons bod yn delweddau sgwar 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Cefnogaeth Llawn ar gyfer Nifer o Cwmniau',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Dangos mewn dewislen modelau',
'optional' => 'dewisol',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'New License',
'new_accessory' => 'New Accessory',
'new_consumable' => 'New Consumable',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Collapse',
'assigned' => 'Assigned',
'asset_count' => 'Asset Count',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Administrer',
'field' => 'Felt',
'about_fieldsets_title' => 'Om Feltsæt',
'about_fieldsets_text' => 'Feltsæt giver dig mulighed for at oprette grupper af brugerdefinerede felter, der ofte genbruges til specifikke asset-modeltyper.',
'about_fieldsets_text' => 'Fieldsets giver dig mulighed for at oprette grupper af brugerdefinerede felter, der ofte bruges igen til specifikke aktivmodeltyper.',
'custom_format' => 'Tilpasset Regex format...',
'encrypt_field' => 'Kryptere værdien af dette felt i databasen',
'encrypt_field_help' => 'Advarsel: Kryptere et felt gør det uransagelige.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Godkendt af (finanskontrollant):',
'signed_by_location_manager' => 'Godkendt af (Lokationsadministrator):',
'signed_by' => 'Godkendt af:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Aktiveret',
'eula_settings' => 'EULA-indstillinger',
'eula_markdown' => 'Denne EULA tillader <a href="https://help.github.com/articles/github-flavored-markdown/">Github smagsmærket markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Favicon',
'favicon_format' => 'Accepterede filtyper er ico, png, og gif. Andre billedformater fungerer muligvis ikke i alle browsere.',
'favicon_size' => 'Favicons skal være firkantede billeder, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Fuld flere virksomheder support',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Vis i modeldropdown',
'optional' => 'valgfri',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Ny licens',
'new_accessory' => 'Nyt tilbehør',
'new_consumable' => 'Ny forbrugsvare',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Skjul',
'assigned' => 'Tildelt',
'asset_count' => 'Antal aktiver',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Verwalten',
'field' => 'Feld',
'about_fieldsets_title' => 'Über Feldsätze',
'about_fieldsets_text' => 'Ein Feldsatz ist eine Gruppe von benutzerdefinierten Feldern, die häufig für bestimmte Asset-Modelltypen wiederverwendet werden.',
'about_fieldsets_text' => 'Feldsätze erlauben es, Gruppen aus benutzerdefinierten Feldern zu erstellen, die regelmäßig für spezifische Modelltypen benutzt werden.',
'custom_format' => 'Benutzerdefiniertes Regex-Format...',
'encrypt_field' => 'Den Wert dieses Feldes in der Datenbank verschlüsseln',
'encrypt_field_help' => 'WARNUNG: Ein verschlüsseltes Feld kann nicht durchsucht werden.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Unterschrieben von (Finanzprüfer):',
'signed_by_location_manager' => 'Unterschrieben von (Standortmanager):',
'signed_by' => 'Unterschrieben von:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Aktiviert',
'eula_settings' => 'EULA Einstellungen',
'eula_markdown' => 'Diese EULA <a href="https://help.github.com/articles/github-flavored-markdown/"> erlaubt Github Flavored Markdown</a>.',
'empty_row_count' => 'Feld-Start-Versatz (Leere Zeilen)',
'empty_row_count_help' => 'Felder werden gefüllt, nachdem diese vielen leeren Zeilen am oberen Rand des Labels übersprungen wurden.',
'favicon' => 'Favicon',
'favicon_format' => 'Zulässige Dateitypen sind ico, png und gif. Andere Bildformate funktionieren möglicherweise nicht in allen Browsern.',
'favicon_size' => 'Favicons sollten quadratische Bilder mit 16x16 Pixel sein.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Volle Mehrmandanten-Unterstützung für Firmen',
'scope_locations_fmcs_support_text' => 'Bereicherte Standorte mit vollständiger Unterstützung für mehrere Unternehmen',
'scope_locations_fmcs_support_help_text' => 'Standorte auf das ausgewählte Unternehmen beschränken.',
'scope_locations_fmcs_check_button' => 'Kompatibilität prüfen',
'scope_locations_fmcs_support_disabled_text' => 'Diese Option ist deaktiviert, da für :count oder mehr Elemente widersprüchliche Standorte gesetzt sind.',
'show_in_model_list' => 'In Modell-Dropdown-Liste anzeigen',
'optional' => 'optional',
@@ -456,18 +459,18 @@ return [
'scoping' => 'Ummantelung',
'formats' => 'Standardformat',
'profiles' => 'Benutzerprofile',
'eula' => 'EULA & Acceptance Preferences',
'eula' => 'EULA & Akzeptanzeinstellungen',
'misc_display' => 'Verschiedene Anzeigeoptionen',
'email' => 'E-Mail-Einstellungen',
'checkin' => 'Checkin Einstellungen',
'dashboard' => 'Anmeldung & Dashboard Einstellungen',
'misc' => 'Sonstiges',
'logos' => 'Logos & Display',
'colors' => 'Colors & Skins',
'footer' => 'Footer Preferences',
'security' => 'Security Preferences',
'general' => 'General',
'intervals' => 'Intervals & Thresholds',
'logos' => 'Logos & Bildschirm',
'colors' => 'Farben & Skins',
'footer' => 'Fußzeileneinstellungen',
'security' => 'Sicherheitseinstellungen',
'general' => 'Allgemein',
'intervals' => 'Intervalle & Grenzwerte',
],

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Neue Lizenz',
'new_accessory' => 'Neues Zubehör',
'new_consumable' => 'Neues Verbrauchsmaterial',
'new_component' => 'Neue Komponente',
'new_user' => 'Neuer Benutzer',
'collapse' => 'Zusammenklappen',
'assigned' => 'Zugewiesen',
'asset_count' => 'Anzahl Assets',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'Das Feld :attribute muss eine gültige URL sein.',
'ulid' => 'Das Feld :attribute muss eine gültige ULID sein.',
'uuid' => 'Das Feld :attribute muss eine gültige UUID sein.',
'fmcs_location' => 'In den Admin-Einstellungen ist eine vollständige Mehrfachunterstützung für Unternehmen und Standortbereicherung aktiviert und der ausgewählte Standort und die ausgewählte Firma sind nicht kompatibel.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Verwalten',
'field' => 'Feld',
'about_fieldsets_title' => 'Über Feldsätze',
'about_fieldsets_text' => 'Ein Feldsatz ist eine Gruppe von benutzerdefinierten Feldern, die häufig für bestimmte Asset-Modelltypen wiederverwendet werden.',
'about_fieldsets_text' => 'Feldsätze erlauben es, Gruppen aus benutzerdefinierten Feldern zu erstellen, die regelmäßig für spezifische Modelltypen wiederverwendet werden.',
'custom_format' => 'Benutzerdefiniertes Regex-Format...',
'encrypt_field' => 'Den Wert dieses Feldes in der Datenbank verschlüsseln',
'encrypt_field_help' => 'WARNUNG: Ein verschlüsseltes Feld kann nicht durchsucht werden.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Unterschrieben von (Finanzprüfer):',
'signed_by_location_manager' => 'Unterschrieben von (Standortmanager):',
'signed_by' => 'Unterschrieben von:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Aktiviert',
'eula_settings' => 'EULA Einstellungen',
'eula_markdown' => 'Diese EULA erlaubt <a href="https://help.github.com/articles/github-flavored-markdown/">Github Flavored Markdown</a>.',
'empty_row_count' => 'Feld-Start-Versatz (Leere Zeilen)',
'empty_row_count_help' => 'Felder werden gefüllt, nachdem diese vielen leeren Zeilen am oberen Rand des Labels übersprungen wurden.',
'favicon' => 'Favicon',
'favicon_format' => 'Akzeptierte Dateitypen sind ico, png und gif. Andere Bildformate funktionieren möglicherweise nicht in allen Browsern.',
'favicon_size' => 'Favicons sollten quadratische Bilder mit 16x16 Pixel sein.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Volle Unterstützung für mehrere Unternehmen',
'scope_locations_fmcs_support_text' => 'Bereicherte Standorte mit vollständiger Unterstützung für mehrere Unternehmen',
'scope_locations_fmcs_support_help_text' => 'Standorte auf das ausgewählte Unternehmen beschränken.',
'scope_locations_fmcs_check_button' => 'Kompatibilität prüfen',
'scope_locations_fmcs_support_disabled_text' => 'Diese Option ist deaktiviert, da für :count oder mehr Elemente widersprüchliche Standorte gesetzt sind.',
'show_in_model_list' => 'In Modell-Dropdown-Liste anzeigen',
'optional' => 'optional',
@@ -456,18 +459,18 @@ return [
'scoping' => 'Ummantelung',
'formats' => 'Standardformate',
'profiles' => 'Benutzerprofile',
'eula' => 'EULA & Acceptance Preferences',
'eula' => 'EULA & Akzeptanzeinstellungen',
'misc_display' => 'Verschiedene Anzeigeoptionen',
'email' => 'E-Mail-Einstellungen',
'checkin' => 'Checkin Einstellungen',
'dashboard' => 'Login & Dashboard Einstellungen',
'misc' => 'Sonstiges',
'logos' => 'Logos & Display',
'colors' => 'Colors & Skins',
'footer' => 'Footer Preferences',
'security' => 'Security Preferences',
'general' => 'General',
'intervals' => 'Intervals & Thresholds',
'logos' => 'Logos & Bildschirm',
'colors' => 'Farben & Skins',
'footer' => 'Fußzeileneinstellungen',
'security' => 'Sicherheitseinstellungen',
'general' => 'Allgemein',
'intervals' => 'Intervalle & Grenzwerte',
],

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Neue Lizenz',
'new_accessory' => 'Neues Zubehör',
'new_consumable' => 'Neues Verbrauchsmaterial',
'new_component' => 'Neue Komponente',
'new_user' => 'Neuer Benutzer',
'collapse' => 'Zusammenklappen',
'assigned' => 'Zugewiesen',
'asset_count' => 'Anzahl Assets',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'Das Feld :attribute muss eine gültige URL sein.',
'ulid' => 'Das Feld :attribute muss eine gültige ULID sein.',
'uuid' => 'Das Feld :attribute muss eine gültige UUID sein.',
'fmcs_location' => 'In den Admin-Einstellungen ist eine vollständige Mehrfachunterstützung für Unternehmen und Standortbereicherung aktiviert und der ausgewählte Standort und die ausgewählte Firma sind nicht kompatibel.',
/*

View File

@@ -5,7 +5,7 @@ return [
'manage' => 'Διαχείριση',
'field' => 'Πεδίο',
'about_fieldsets_title' => 'Σχετικά με τα σύνολα πεδίων',
'about_fieldsets_text' => 'Τα Fieldsets σας επιτρέπουν να δημιουργήσετε ομάδες προσαρμοσμένων πεδίων που συχνά επαναχρησιμοποιούνται για συγκεκριμένους τύπους μοντέλου στοιχείων ενεργητικού.',
'about_fieldsets_text' => 'Τα πεδία των πεδίων σάς επιτρέπουν να δημιουργείτε ομάδες προσαρμοσμένων πεδίων που χρησιμοποιούνται συχνά ξανά για συγκεκριμένους τύπους μοντέλων στοιχείων ενεργητικού.',
'custom_format' => 'Προσαρμοσμένη μορφή Regex...',
'encrypt_field' => 'Κρυπτογράφηση της αξίας του πεδίου στη βάση δεδομένων',
'encrypt_field_help' => 'Προειδοποίηση: H κρυπτογράφηση ενός πεδίου την καθιστά ανεξερεύνητη.',

View File

@@ -39,4 +39,5 @@ return [
'signed_by_finance_auditor' => 'Υπογράφηκε Από (Ελεγκτή Χρηματοδότησης):',
'signed_by_location_manager' => 'Υπογράφηκε Από (Location Manager):',
'signed_by' => 'Υπεγράφη Από:',
'clone' => 'Clone Location',
];

View File

@@ -64,6 +64,8 @@ return [
'enabled' => 'Ενεργοποιημένο',
'eula_settings' => 'Ρυθμίσεις EULA',
'eula_markdown' => 'Αυτή η EULA επιτρέπει <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'empty_row_count' => 'Field Start Offset (Empty Rows)',
'empty_row_count_help' => 'Fields will begin populating after this many empty rows are skipped at the top of the label.',
'favicon' => 'Αγαπημένο',
'favicon_format' => 'Αποδεκτοί τύποι αρχείων είναι ico, png και gif. Άλλες μορφές εικόνας μπορεί να μην λειτουργούν σε όλα τα προγράμματα περιήγησης.',
'favicon_size' => 'Τα Favicons πρέπει να είναι τετράγωνες εικόνες, 16x16 pixels.',
@@ -152,6 +154,7 @@ return [
'full_multiple_companies_support_text' => 'Πλήρης υποστήριξη πολλαπλών εταιρειών',
'scope_locations_fmcs_support_text' => 'Scope Locations with Full Multiple Companies Support',
'scope_locations_fmcs_support_help_text' => 'Restrict locations to their selected company.',
'scope_locations_fmcs_check_button' => 'Check Compatibility',
'scope_locations_fmcs_support_disabled_text' => 'This option is disabled because you have conflicting locations set for :count or more items.',
'show_in_model_list' => 'Εμφάνιση στο μοντέλο Dropdowns',
'optional' => 'προαιρετικός',

View File

@@ -390,6 +390,8 @@ return [
'new_license' => 'Νέα Άδεια',
'new_accessory' => 'Νέο Αξεσουάρ',
'new_consumable' => 'Νέο Αναλώσιμο',
'new_component' => 'New Component',
'new_user' => 'New User',
'collapse' => 'Σύμπτυξη',
'assigned' => 'Ανατεθειμένο',
'asset_count' => 'Μετρητής Περιουσιακών Στοιχείων',

View File

@@ -172,6 +172,7 @@ return [
'url' => 'The :attribute field must be a valid URL.',
'ulid' => 'The :attribute field must be a valid ULID.',
'uuid' => 'The :attribute field must be a valid UUID.',
'fmcs_location' => 'Full multiple company support and location scoping is enabled in the Admin Settings, and the selected location and selected company are not compatible.',
/*

Some files were not shown because too many files have changed in this diff Show More