Compare commits

...

125 Commits

Author SHA1 Message Date
snipe d511d90a2f Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-21 06:50:42 -08:00
snipe 54d6cafda9 Bumped hash 2018-02-21 06:49:36 -08:00
snipe a730cd1c51 Fixed - better handle admin routes when user is not logged in
Redirect to login instead of just showing forbidden
2018-02-21 05:51:49 -08:00
snipe cccd75fc42 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-21 05:48:02 -08:00
snipe dbc16a6c9b Bumped hash 2018-02-21 05:47:12 -08:00
snipe 6ffad6043f Fixed issue where bootstrap tables didn’t use a default page size 2018-02-21 05:44:41 -08:00
snipe 4e398950a0 Merge branch 'develop' 2018-02-21 05:34:02 -08:00
snipe f5e51897e3 Added - sort by color on status labels 2018-02-21 05:29:50 -08:00
snipe 698ea36cc2 Added - Order location by manager 2018-02-21 05:09:40 -08:00
snipe 0cf9cdd3b1 Make department columns sortable 2018-02-21 05:04:20 -08:00
snipe 42c8de5620 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-21 04:44:48 -08:00
snipe ba4f63bca3 Bumped version 2018-02-21 04:43:52 -08:00
snipe 4ed2ef6298 Merge branch 'develop' 2018-02-21 04:42:03 -08:00
snipe d28c2af7de Fixed bootstrap table issue if per page was set to 10 2018-02-21 04:41:44 -08:00
snipe 1e8c32fbdb Fixed - missing table prefix for location parent search 2018-02-21 04:33:47 -08:00
snipe 97bd87773c Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-21 02:40:23 -08:00
snipe b560828173 Bumped hash 2018-02-21 02:18:14 -08:00
snipe 0d7a43ab38 Fixed orderby parent location name 2018-02-21 02:17:18 -08:00
snipe 7865fbea7e Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-21 01:27:11 -08:00
snipe 5fcbf9091e Bumped version 2018-02-21 01:23:19 -08:00
snipe fedd2b638c Merge branch 'develop' 2018-02-21 01:20:48 -08:00
snipe 22f44e342f Fixed incorrect next audit date if asset override 2018-02-21 01:18:21 -08:00
snipe f7eb013935 Reverse order on activity report 2018-02-20 15:42:44 -08:00
snipe 1c28f893e7 Fixed #5027 - remove link to non-existant reports page 2018-02-20 14:44:29 -08:00
snipe 195dfd752d Updated translations 2018-02-20 14:41:12 -08:00
snipe cc788d3b62 Added Slovenian 2018-02-20 14:37:22 -08:00
snipe e54021e7be Added Venzuelan spanish 2018-02-20 14:37:12 -08:00
snipe 918db39eba Merge branch 'develop' 2018-02-19 18:06:58 -08:00
snipe 213fe2ecea Fixed #5044 - incorrect env values for SSL DB paths 2018-02-19 18:03:50 -08:00
snipe 6e70352d0b Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-17 01:05:20 -08:00
snipe d2403cdadb Added image preview for uploads 2018-02-17 00:51:22 -08:00
snipe 9a4f5e0ba8 Bumped hash 2018-02-16 22:10:06 -08:00
snipe 502e4d672a Use image upload partial in asset edit/create 2018-02-16 22:08:49 -08:00
snipe 99205bf72e Merge branch 'develop' 2018-02-16 21:39:15 -08:00
snipe b3d673b0aa Fixed #5037 - use line breaks in notes in table view 2018-02-16 21:38:56 -08:00
snipe baf51eb430 Merge branch 'develop' 2018-02-16 21:19:03 -08:00
snipe d8fc50c351 Fixed #5033 - use PHP’s max filesize for image uploads 2018-02-16 21:17:41 -08:00
snipe ba5057181e Check for model in asset view 2018-02-16 18:04:11 -08:00
snipe 4c4dee0bf1 Use dropifexists for rollback 2018-02-16 17:45:40 -08:00
snipe 589c3a2be3 Fixed #4668 - wrong gate on manufacturer save 2018-02-16 17:45:27 -08:00
snipe 991f182f89 Added drop table to migration 2018-02-16 15:36:33 -08:00
snipe f44b03f5a9 Updated sticky table header extenion 2018-02-16 15:36:21 -08:00
snipe 5fd50040d3 Fixed weird migration 2018-02-16 15:31:47 -08:00
snipe 5302108556 Update to master 2018-02-16 13:27:03 -08:00
snipe 592c62de75 Merge branch 'develop'
# Conflicts:
#	README.md
#	config/version.php
2018-02-16 13:26:53 -08:00
snipe 27c1bc0271 Bumped hash 2018-02-16 13:24:47 -08:00
snipe 3744a68daf Features/better table options (#5018)
* Added CSS for table toolbar

* Use maintenances API for table listings

* NIcer layout for allowed_columns in maintenances API

* Fixed #5014 - bootstrap cookie issues

* Fixed #5015 - bug when saving settings

* Refactored datatable code to use data attributes

* Updated dashboard with new table code

* Added - Order by group user count

* Updated groups to use new table attributes

* New license listing table code

* More bootstrap table implementations

* More BS table refactoring

* Improved bootstrap assigned assets

* New bootstrap for reports

* Misc BS fixes

* FIxed small issue with asset history display

* Removed multisort option

* JS refactor
2018-02-16 13:22:55 -08:00
dl1l c209b7bb5d Update edit.blade.php (#5019) 2018-02-15 14:59:54 -08:00
snipe f04493c1ab Added firstname_lastname as possible username format 2018-02-13 20:31:51 -08:00
snipe 62edf14893 Refactored method to generate usernames from full names 2018-02-13 20:31:11 -08:00
snipe 0d11e32523 Fixed issue where group with no permissions would crash view page 2018-02-13 17:14:30 -08:00
snipe 5484b06df8 Fixed #4923 - invalid check for location object in Ldap Sync 2018-02-13 17:06:42 -08:00
snipe 9f3116e4e3 Added - Deep linking in Bootstrap tabs 2018-02-13 17:04:50 -08:00
snipe f144d671ff Fixed #4988 - incorrect variable name in asset checkout API method 2018-02-12 19:13:33 -08:00
snipe b294635e17 Updated packages 2018-02-08 09:29:12 -08:00
snipe 36234cc0e8 Add @seanmcilvenna as a contributor 2018-02-08 09:29:12 -08:00
snipe 5c87003196 Added code triage badge 2018-02-08 09:29:12 -08:00
Sean McIlvenna cc5d36f8be Addng "Category" column to "view assets" and re-organizing columns (#4970) 2018-02-05 17:36:35 -06:00
README Bot 1359a4f88a Add CodeTriage badge to snipe/snipe-it (#4968)
Adds a badge showing the number of people helping this repo on CodeTriage.

[![Open Source Helpers](https://www.codetriage.com/snipe/snipe-it/badges/users.svg)](https://www.codetriage.com/snipe/snipe-it)

## What is CodeTriage?

CodeTriage is an Open Source app that is designed to make contributing to Open Source projects easier. It works by sending subscribers a few open issues in their inbox. If subscribers get busy, there is an algorithm that backs off issue load so they do not get overwhelmed

[Read more about the CodeTriage project](https://www.codetriage.com/what).

## Why am I getting this PR?

Your project was picked by the human, @schneems. They selected it from the projects submitted to https://www.codetriage.com and hand edited the PR. How did your project get added to [CodeTriage](https://www.codetriage.com/what)? Roughly 4 months ago, [@imjennyli](https://github.com/imjennyli) added this project to CodeTriage in order to start contributing. Since then, 8 people have subscribed to help this repo.

## What does adding a badge accomplish?

Adding a badge invites people to help contribute to your project. It also lets developers know that others are invested in the longterm success and maintainability of the project.

You can see an example of a CodeTriage badge on these popular OSS READMEs:

- [![](https://www.codetriage.com/rails/rails/badges/users.svg)](https://www.codetriage.com/rails/rails) https://github.com/rails/rails
- [![](https://www.codetriage.com/crystal-lang/crystal/badges/users.svg)](https://www.codetriage.com/crystal-lang/crystal) https://github.com/crystal-lang/crystal

## Have a question or comment?

While I am a bot, this PR was manually reviewed and monitored by a human - @schneems. My job is writing commit messages and handling PR logistics.

If you have any questions, you can reply back to this PR and they will be answered by @schneems. If you do not want a badge right now, no worries, close the PR, you will not hear from me again.

Thanks for making your project Open Source! Any feedback is greatly appreciated.
2018-02-05 15:22:52 -06:00
snipe 1e1362bdbc Merge branch 'develop' 2018-02-02 09:42:50 -06:00
snipe 813106efd3 Default to only changing default location in bulk edit 2018-02-02 09:42:34 -06:00
snipe 08d129c2ea Fixed #4951 - updating asset location in bulk edit 2018-02-02 09:36:40 -06:00
snipe 8491e57258 Merge branch 'develop' 2018-02-02 09:32:00 -06:00
snipe d86fb098a8 Fixed sort ordering on dashboard 2018-02-02 09:31:43 -06:00
snipe e21f8e46d4 Merge branch 'develop' 2018-02-01 17:18:16 -06:00
snipe b3a6ec2804 Fixed #4938 - default sort order 2018-02-01 17:17:56 -06:00
snipe 0034938c04 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-02-01 16:32:13 -06:00
snipe d2587337e4 Fixed #4952 - ignore show_archived setting when drilling down into specific ID 2018-02-01 16:31:32 -06:00
snipe 8b2045523d Bumped hash 2018-02-01 15:55:33 -06:00
snipe e7e10c24be Add departments to usr export 2018-02-01 15:54:49 -06:00
snipe f06852f48d Merge branch 'develop' 2018-01-25 13:17:11 -06:00
snipe 2f9fff7130 Do not try to show depreciation report if no depreciations are set up 2018-01-25 13:16:49 -06:00
snipe 0b788f64f7 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-01-25 11:07:18 -08:00
snipe facf1d42f7 Sigh. 2018-01-25 11:06:37 -08:00
snipe e77aae703b Bumped hash 2018-01-25 11:03:45 -08:00
snipe 76f52dd89b Fixed #4872 - Check for assigned in depreciation table 2018-01-25 11:02:46 -08:00
snipe 0e980f7229 Hotfix: Disabling the event dispatcher broke model validation. (#4912) (#4915)
* Hotfix: Disabling the event dispatcher broke model validation.

This resulted in invalid data being imported.  Reenable the event dispatcher for now--this causes double logs, but at least validates properly.

* Actually disable the event dispatcher.

* Sign in where necessary to fix the importer unit test.  This catches the issues found manually in 4912
2018-01-25 10:29:06 -08:00
Daniel Meltzer 2f5d550df6 Hotfix: Disabling the event dispatcher broke model validation. (#4912)
* Hotfix: Disabling the event dispatcher broke model validation.

This resulted in invalid data being imported.  Reenable the event dispatcher for now--this causes double logs, but at least validates properly.

* Actually disable the event dispatcher.

* Sign in where necessary to fix the importer unit test.  This catches the issues found manually in 4912
2018-01-25 10:10:56 -08:00
snipe 3acf5f76fe Merge branch 'develop' 2018-01-25 03:35:30 -08:00
snipe 4be8ae7f3d Fuckery. 2018-01-25 03:34:52 -08:00
snipe 029dd43ecd Merge branch 'develop' 2018-01-25 03:01:35 -08:00
snipe cf8feb37e1 Fixed crash if no model associated
This should never be triggered. Bad data is getting in somehow.
2018-01-25 03:00:54 -08:00
snipe 648531f4cc Merge branch 'develop' 2018-01-25 00:26:17 -08:00
snipe 11505d5d06 Fix crash if no asset model
(This should never happen, but shouldn’t crash if/when it does)
2018-01-25 00:25:43 -08:00
snipe 1d04897b32 Order by default location 2018-01-24 14:27:12 -08:00
snipe eddcc0fbbd Fixed cookie issue on hardware 2018-01-24 14:23:19 -08:00
snipe bd80a77b78 Added default location to asset listing 2018-01-24 14:23:12 -08:00
snipe edc30a31c1 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-01-24 11:02:46 -08:00
snipe f5636f325d Bumped hash 2018-01-24 11:01:51 -08:00
snipe 426bf3803b Merge branch 'develop' 2018-01-24 11:00:40 -08:00
snipe 739d3c72b7 Fixed #4902 - include last name in checkin email 2018-01-24 10:59:34 -08:00
snipe 60c38a0c47 Added setting to choose what appears in model select list - Fixes #4879 2018-01-24 10:43:46 -08:00
snipe 9566fbd3cd Fixed borked down() migrations 2018-01-24 10:41:49 -08:00
Anh DAO-DUY e41ee1bcf8 Fix upload images problem with Docker (#4906)
Some folders were missing in this script file (Docker installation).
Missing folders caused errors while uploading some images.
2018-01-24 09:13:03 -08:00
Tim Bishop bc14f225af Only use location currency if it's actually set. (#4904)
This changes the depreciation report to only use the currency on a
location if it's actually set to something. Previously, if an asset had
a location it would use the currency even if it was blank rather than
falling back to the default.
2018-01-24 08:55:51 -08:00
snipe 07148c1503 Merge branch 'develop'
# Conflicts:
#	config/version.php
2018-01-24 08:29:25 -08:00
snipe fcb5eea951 Bumped hash 2018-01-24 08:28:53 -08:00
snipe 7a4bf26733 Merge branch 'develop' 2018-01-24 08:25:36 -08:00
snipe 2c2910d1dd Handle shitty edge cases where an asset has no model without crashing 2018-01-24 08:16:05 -08:00
snipe 1dae7a2fe4 Fixed #3636 - removed thread_id (we don’t use this anymore) 2018-01-24 08:00:28 -08:00
snipe e19ab329bd Add @tdb as a contributor 2018-01-24 07:13:24 -08:00
snipe 922cb90cb3 Add @CronKz as a contributor 2018-01-24 07:12:59 -08:00
snipe 765295136a Added - ability to add custom footer text, hide user’s manual/support links 2018-01-24 07:02:30 -08:00
snipe 7579333ad3 Disallow LDAP settings if in demo mode 2018-01-24 05:50:31 -08:00
snipe 543ea28b72 Added qty to asset components - fixed #4876 2018-01-24 05:25:01 -08:00
snipe fefd6d60f6 Fixed #4899 - sorting in user history 2018-01-24 04:48:00 -08:00
snipe a7b8b4bf55 Added: ability to change actual location from bulk edit assets 2018-01-24 04:38:25 -08:00
snipe 7cafa194c1 Fix for counts 2018-01-24 04:26:15 -08:00
snipe b37f78dbbf Fixed #4858 - wrong params for id count 2018-01-24 04:24:45 -08:00
snipe e20cd42cc2 More parse error fixes 2018-01-24 03:42:49 -08:00
snipe 7b99f81f72 Fixed parse error on hardware blade 2018-01-24 03:38:29 -08:00
snipe f1bbdc9e59 Revert PR #4845 2018-01-24 03:32:45 -08:00
Richard Hofman 5219fb63a1 Add --base_dn option to LdapSync command. (#4888) 2018-01-23 18:15:36 -08:00
CronKz dcc379c3fa Adding missing translations. (#4896) 2018-01-23 18:13:55 -08:00
vcordes79 0fb8dc3418 check if user is allowed to view assets (#4845) 2018-01-23 18:10:05 -08:00
vcordes79 f4e9d245d0 Status labels (#4895)
* fix statuslabels

* fix statuslabels
2018-01-23 18:08:54 -08:00
snipe c75a2051ff Hide mfg button if no permissions to create 2018-01-22 14:02:23 -08:00
CronKz 691ec164b1 Added Translations (#4880) 2018-01-22 13:14:52 -08:00
vcordes79 7b596c750d API for (dis)associating fields with fieldsets (#4881)
* start work on fields in fieldset api

* revert CustomFieldsetsController

* fieldset associate / disassociate api

* fix variable names and payload

* fix variable name
2018-01-22 13:14:04 -08:00
Tim Bishop b346556caa Allow manager_id to be fillable. (#4882)
The API UsersController accepts manager_id, but calls the following:

$user->fill($request->all());

This results in manager_id being ignored. I can't see any problem with
allowing a user's manager to be modified using the API, so this change
allows it.
2018-01-22 13:12:02 -08:00
snipe 93ec7068df Removed a few additional unused badges 2018-01-20 08:54:49 -08:00
snipe 5f65f993a0 Small refactor for AssetPresenter method 2018-01-20 08:52:50 -08:00
snipe a9441521a4 Small refactor for Setting method 2018-01-20 08:52:50 -08:00
snipe 2dede67ae9 Removed unusued badges 2018-01-20 08:52:49 -08:00
Daniel Meltzer 6bf17e7d47 Reset the item between rows of import to avoid stale data. (#4868) 2018-01-20 08:40:01 -08:00
300 changed files with 7070 additions and 2042 deletions
+27
View File
@@ -856,6 +856,33 @@
"contributions": [
"code"
]
},
{
"login": "CronKz",
"name": "CronKz",
"avatar_url": "https://avatars0.githubusercontent.com/u/34064225?v=4",
"profile": "https://github.com/CronKz",
"contributions": [
"code"
]
},
{
"login": "tdb",
"name": "Tim Bishop",
"avatar_url": "https://avatars1.githubusercontent.com/u/585486?v=4",
"profile": "https://github.com/tdb",
"contributions": [
"code"
]
},
{
"login": "seanmcilvenna",
"name": "Sean McIlvenna",
"avatar_url": "https://avatars2.githubusercontent.com/u/5384694?v=4",
"profile": "https://www.seanmcilvenna.com",
"contributions": [
"code"
]
}
]
}
+4 -3
View File
@@ -1,5 +1,6 @@
[![Build Status](https://travis-ci.org/snipe/snipe-it.svg?branch=develop)](https://travis-ci.org/snipe/snipe-it) [![Stories in Ready](https://badge.waffle.io/snipe/snipe-it.png?label=ready+for+dev&title=Ready+for+development)](http://waffle.io/snipe/snipe-it) [![Maintenance](https://img.shields.io/maintenance/yes/2017.svg)]() [![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/snipe/snipe-it?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeyhead.svg?style=social)](https://twitter.com/snipeyhead) [![Zenhub](https://img.shields.io/badge/Shipping_faster_with-ZenHub-5e60ba.svg)](https://zenhub.io) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
[![All Contributors](https://img.shields.io/badge/all_contributors-92-orange.svg?style=flat-square)](#contributors)
[![Build Status](https://travis-ci.org/snipe/snipe-it.svg?branch=master)](https://travis-ci.org/snipe/snipe-it) [![Crowdin](https://d322cqt584bo4o.cloudfront.net/snipe-it/localized.svg)](https://crowdin.com/project/snipe-it) [![Gitter](https://badges.gitter.im/Join%20Chat.svg)](https://gitter.im/snipe/snipe-it?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) [![Docker Pulls](https://img.shields.io/docker/pulls/snipe/snipe-it.svg)](https://hub.docker.com/r/snipe/snipe-it/) [![Twitter Follow](https://img.shields.io/twitter/follow/snipeyhead.svg?style=social)](https://twitter.com/snipeyhead) [![Codacy Badge](https://api.codacy.com/project/badge/Grade/553ce52037fc43ea99149785afcfe641)](https://www.codacy.com/app/snipe/snipe-it?utm_source=github.com&utm_medium=referral&utm_content=snipe/snipe-it&utm_campaign=Badge_Grade)
[![All Contributors](https://img.shields.io/badge/all_contributors-94-orange.svg?style=flat-square)](#contributors)
[![Open Source Helpers](https://www.codetriage.com/snipe/snipe-it/badges/users.svg)](https://www.codetriage.com/snipe/snipe-it)
## Snipe-IT - Open Source Asset Management System
@@ -69,7 +70,7 @@ Thanks goes to all of these wonderful people ([emoji key](https://github.com/ken
| [<img src="https://avatars2.githubusercontent.com/u/16108587?v=3" width="110px;"/><br /><sub>Jason Spriggs</sub>](http://jasonspriggs.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=jasonspriggs "Code") | [<img src="https://avatars2.githubusercontent.com/u/1134568?v=3" width="110px;"/><br /><sub>Nate Felton</sub>](http://n8felton.wordpress.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=n8felton "Code") | [<img src="https://avatars2.githubusercontent.com/u/14036694?v=3" width="110px;"/><br /><sub>Manasses Ferreira</sub>](http://homepages.dcc.ufmg.br/~manassesferreira)<br />[💻](https://github.com/snipe/snipe-it/commits?author=manassesferreira "Code") | [<img src="https://avatars0.githubusercontent.com/u/15913949?v=3" width="110px;"/><br /><sub>Steve</sub>](https://github.com/steveelwood)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=steveelwood "Tests") | [<img src="https://avatars1.githubusercontent.com/u/3361683?v=3" width="110px;"/><br /><sub>matc</sub>](http://twitter.com/matc)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=matc "Tests") | [<img src="https://avatars3.githubusercontent.com/u/7405702?v=3" width="110px;"/><br /><sub>Cole R. Davis</sub>](http://www.davisracingteam.com)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=VanillaNinjaD "Tests") | [<img src="https://avatars2.githubusercontent.com/u/10167681?v=3" width="110px;"/><br /><sub>gibsonjoshua55</sub>](https://github.com/gibsonjoshua55)<br />[💻](https://github.com/snipe/snipe-it/commits?author=gibsonjoshua55 "Code") |
| [<img src="https://avatars2.githubusercontent.com/u/2809241?v=4" width="110px;"/><br /><sub>Robin Temme</sub>](https://github.com/zwerch)<br />[💻](https://github.com/snipe/snipe-it/commits?author=zwerch "Code") | [<img src="https://avatars0.githubusercontent.com/u/6961695?v=4" width="110px;"/><br /><sub>Iman</sub>](https://github.com/imanghafoori1)<br />[💻](https://github.com/snipe/snipe-it/commits?author=imanghafoori1 "Code") | [<img src="https://avatars1.githubusercontent.com/u/6551003?v=4" width="110px;"/><br /><sub>Richard Hofman</sub>](https://github.com/richardhofman6)<br />[💻](https://github.com/snipe/snipe-it/commits?author=richardhofman6 "Code") | [<img src="https://avatars0.githubusercontent.com/u/3697569?v=4" width="110px;"/><br /><sub>gizzmojr</sub>](https://github.com/gizzmojr)<br />[💻](https://github.com/snipe/snipe-it/commits?author=gizzmojr "Code") | [<img src="https://avatars3.githubusercontent.com/u/404729?v=4" width="110px;"/><br /><sub>Jenny Li</sub>](https://github.com/imjennyli)<br />[📖](https://github.com/snipe/snipe-it/commits?author=imjennyli "Documentation") | [<img src="https://avatars0.githubusercontent.com/u/869227?v=4" width="110px;"/><br /><sub>Geoff Young</sub>](https://github.com/GeoffYoung)<br />[💻](https://github.com/snipe/snipe-it/commits?author=GeoffYoung "Code") | [<img src="https://avatars3.githubusercontent.com/u/1068477?v=4" width="110px;"/><br /><sub>Elliot Blackburn</sub>](http://www.elliotblackburn.com)<br />[📖](https://github.com/snipe/snipe-it/commits?author=BlueHatbRit "Documentation") |
| [<img src="https://avatars1.githubusercontent.com/u/6357451?v=4" width="110px;"/><br /><sub>Tõnis Ormisson</sub>](http://andmemasin.eu)<br />[💻](https://github.com/snipe/snipe-it/commits?author=TonisOrmisson "Code") | [<img src="https://avatars0.githubusercontent.com/u/449411?v=4" width="110px;"/><br /><sub>Nicolai Essig</sub>](http://www.nicolai-essig.de)<br />[💻](https://github.com/snipe/snipe-it/commits?author=thakilla "Code") | [<img src="https://avatars1.githubusercontent.com/u/14809698?v=4" width="110px;"/><br /><sub>Danielle</sub>](https://github.com/techincolor)<br />[📖](https://github.com/snipe/snipe-it/commits?author=techincolor "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/18545156?v=4" width="110px;"/><br /><sub>Lawrence</sub>](https://github.com/TheVakman)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=TheVakman "Tests") [🐛](https://github.com/snipe/snipe-it/issues?q=author%3ATheVakman "Bug reports") | [<img src="https://avatars1.githubusercontent.com/u/22473767?v=4" width="110px;"/><br /><sub>uknzaeinozpas</sub>](https://github.com/uknzaeinozpas)<br />[⚠️](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Tests") [💻](https://github.com/snipe/snipe-it/commits?author=uknzaeinozpas "Code") | [<img src="https://avatars3.githubusercontent.com/u/422752?v=4" width="110px;"/><br /><sub>Ryan</sub>](https://github.com/Gelob)<br />[📖](https://github.com/snipe/snipe-it/commits?author=Gelob "Documentation") | [<img src="https://avatars1.githubusercontent.com/u/10672546?v=4" width="110px;"/><br /><sub>vcordes79</sub>](https://github.com/vcordes79)<br />[💻](https://github.com/snipe/snipe-it/commits?author=vcordes79 "Code") |
| [<img src="https://avatars3.githubusercontent.com/u/27958330?v=4" width="110px;"/><br /><sub>fordster78</sub>](https://github.com/fordster78)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fordster78 "Code") |
| [<img src="https://avatars3.githubusercontent.com/u/27958330?v=4" width="110px;"/><br /><sub>fordster78</sub>](https://github.com/fordster78)<br />[💻](https://github.com/snipe/snipe-it/commits?author=fordster78 "Code") | [<img src="https://avatars0.githubusercontent.com/u/34064225?v=4" width="110px;"/><br /><sub>CronKz</sub>](https://github.com/CronKz)<br />[💻](https://github.com/snipe/snipe-it/commits?author=CronKz "Code") | [<img src="https://avatars1.githubusercontent.com/u/585486?v=4" width="110px;"/><br /><sub>Tim Bishop</sub>](https://github.com/tdb)<br />[💻](https://github.com/snipe/snipe-it/commits?author=tdb "Code") | [<img src="https://avatars2.githubusercontent.com/u/5384694?v=4" width="110px;"/><br /><sub>Sean McIlvenna</sub>](https://www.seanmcilvenna.com)<br />[💻](https://github.com/snipe/snipe-it/commits?author=seanmcilvenna "Code") |
<!-- ALL-CONTRIBUTORS-LIST:END -->
This project follows the [all-contributors](https://github.com/kentcdodds/all-contributors) specification. Contributions of any kind welcome!
+57 -47
View File
@@ -16,7 +16,7 @@ class LdapSync extends Command
*
* @var string
*/
protected $signature = 'snipeit:ldap-sync {--location=} {--location_id=} {--summary} {--json_summary}';
protected $signature = 'snipeit:ldap-sync {--location=} {--location_id=} {--base_dn=} {--summary} {--json_summary}';
/**
* The console command description.
@@ -67,36 +67,25 @@ class LdapSync extends Command
$summary = array();
try {
$results = Ldap::findLdapUsers();
} catch (\Exception $e) {
if ($this->option('json_summary')) {
try {
if ($this->option('base_dn') != '') {
$search_base = $this->option('base_dn');
LOG::debug('Importing users from specified base DN: \"'.$search_base.'\".');
} else {
$search_base = null;
}
$results = Ldap::findLdapUsers($search_base);
} catch (\Exception $e) {
if ($this->option('json_summary')) {
$json_summary = [ "error" => true, "error_message" => $e->getMessage(), "summary" => [] ];
$this->info(json_encode($json_summary));
}
LOG::error($e);
return [];
}
// Retrieve locations with a mapped OU, and sort them from the shallowest to deepest OU (see #3993)
$ldap_ou_locations = Location::where('ldap_ou', '!=', '')->get()->toArray();
$ldap_ou_lengths = array();
foreach ($ldap_ou_locations as $location) {
$ldap_ou_lengths[] = strlen($location["ldap_ou"]);
}
array_multisort($ldap_ou_lengths, SORT_ASC, $ldap_ou_locations);
if (sizeof($ldap_ou_locations) > 0) {
LOG::debug('Some locations have special OUs set. Locations will be automatically set for users in those OUs.');
}
// Inject location information fields
for ($i = 0; $i < $results["count"]; $i++) {
$results[$i]["ldap_location_override"] = false;
$results[$i]["location_id"] = 0;
}
/* Determine which location to assign users to by default. */
$location = NULL;
if ($this->option('location')!='') {
$location = Location::where('name', '=', $this->option('location'))->first();
@@ -106,40 +95,61 @@ class LdapSync extends Command
$location = Location::where('id', '=', $this->option('location_id'))->first();
LOG::debug('Location ID '.$this->option('location_id').' passed');
LOG::debug('Importing to '.$location->name.' ('.$location->id.')');
} else {
$location = NULL;
}
}
if (!isset($location)) {
LOG::debug('That location is invalid or a location was not provided, so no location will be assigned by default.');
}
// Grab subsets based on location-specific DNs, and overwrite location for these users.
foreach ($ldap_ou_locations as $ldap_loc) {
$location_users = Ldap::findLdapUsers($ldap_loc["ldap_ou"]);
$usernames = array();
for ($i = 0; $i < $location_users["count"]; $i++) {
$location_users[$i]["ldap_location_override"] = true;
$location_users[$i]["location_id"] = $ldap_loc["id"];
$usernames[] = $location_users[$i][$ldap_result_username][0];
/* Process locations with explicitly defined OUs, if doing a full import. */
if ($this->option('base_dn')=='') {
// Retrieve locations with a mapped OU, and sort them from the shallowest to deepest OU (see #3993)
$ldap_ou_locations = Location::where('ldap_ou', '!=', '')->get()->toArray();
$ldap_ou_lengths = array();
foreach ($ldap_ou_locations as $location) {
$ldap_ou_lengths[] = strlen($location["ldap_ou"]);
}
// Delete located users from the general group.
foreach ($results as $key => $generic_entry) {
if (in_array($generic_entry[$ldap_result_username][0], $usernames)) {
unset($results[$key]);
array_multisort($ldap_ou_lengths, SORT_ASC, $ldap_ou_locations);
if (sizeof($ldap_ou_locations) > 0) {
LOG::debug('Some locations have special OUs set. Locations will be automatically set for users in those OUs.');
}
// Inject location information fields
for ($i = 0; $i < $results["count"]; $i++) {
$results[$i]["ldap_location_override"] = false;
$results[$i]["location_id"] = 0;
}
// Grab subsets based on location-specific DNs, and overwrite location for these users.
foreach ($ldap_ou_locations as $ldap_loc) {
$location_users = Ldap::findLdapUsers($ldap_loc["ldap_ou"]);
$usernames = array();
for ($i = 0; $i < $location_users["count"]; $i++) {
$location_users[$i]["ldap_location_override"] = true;
$location_users[$i]["location_id"] = $ldap_loc["id"];
$usernames[] = $location_users[$i][$ldap_result_username][0];
}
}
$global_count = $results['count'];
$results = array_merge($location_users, $results);
$results['count'] = $global_count;
// Delete located users from the general group.
foreach ($results as $key => $generic_entry) {
if (in_array($generic_entry[$ldap_result_username][0], $usernames)) {
unset($results[$key]);
}
}
$global_count = $results['count'];
$results = array_merge($location_users, $results);
$results['count'] = $global_count;
}
}
/* Create user account entries in Snipe-IT */
$tmp_pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 20);
$pass = bcrypt($tmp_pass);
for ($i = 0; $i < $results["count"]; $i++) {
if (empty($ldap_result_active_flag) || $results[$i][$ldap_result_active_flag][0] == "TRUE") {
@@ -179,7 +189,7 @@ class LdapSync extends Command
if ($item['ldap_location_override'] == true) {
$user->location_id = $item['location_id'];
} else if ($location) {
} elseif ((isset($location)) && (!empty($location))) {
$user->location_id = e($location->id);
}
@@ -207,9 +217,9 @@ class LdapSync extends Command
if ($this->option('summary')) {
for ($x = 0; $x < count($summary); $x++) {
if ($summary[$x]['status']=='error') {
$this->error('ERROR: '.$summary[$x]['firstname'].' '.$summary[$x]['lastname'].' (username: '.$summary[$x]['username'].' was not imported: '.$summary[$x]['note']);
$this->error('ERROR: '.$summary[$x]['firstname'].' '.$summary[$x]['lastname'].' (username: '.$summary[$x]['username'].') was not imported: '.$summary[$x]['note']);
} else {
$this->info('User '.$summary[$x]['firstname'].' '.$summary[$x]['lastname'].' (username: '.$summary[$x]['username'].' was '.strtoupper($summary[$x]['createorupdate']).'.');
$this->info('User '.$summary[$x]['firstname'].' '.$summary[$x]['lastname'].' (username: '.$summary[$x]['username'].') was '.strtoupper($summary[$x]['createorupdate']).'.');
}
}
} else if ($this->option('json_summary')) {
+57
View File
@@ -731,5 +731,62 @@ class Helper
}
// Nicked from Drupal :)
// Returns a file size limit in bytes based on the PHP upload_max_filesize
// and post_max_size
public static function file_upload_max_size() {
static $max_size = -1;
if ($max_size < 0) {
// Start with post_max_size.
$post_max_size = Helper::parse_size(ini_get('post_max_size'));
if ($post_max_size > 0) {
$max_size = $post_max_size;
}
// If upload_max_size is less, then reduce. Except if upload_max_size is
// zero, which indicates no limit.
$upload_max = Helper::parse_size(ini_get('upload_max_filesize'));
if ($upload_max > 0 && $upload_max < $max_size) {
$max_size = $upload_max;
}
}
return $max_size;
}
public static function file_upload_max_size_readable() {
static $max_size = -1;
if ($max_size < 0) {
// Start with post_max_size.
$post_max_size = Helper::parse_size(ini_get('post_max_size'));
if ($post_max_size > 0) {
$max_size = ini_get('post_max_size');
}
// If upload_max_size is less, then reduce. Except if upload_max_size is
// zero, which indicates no limit.
$upload_max = Helper::parse_size(ini_get('upload_max_filesize'));
if ($upload_max > 0 && $upload_max < $max_size) {
$max_size = ini_get('upload_max_filesize');
}
}
return $max_size;
}
public static function parse_size($size) {
$unit = preg_replace('/[^bkmgtpezy]/i', '', $size); // Remove the non-unit characters from the size.
$size = preg_replace('/[^0-9\.]/', '', $size); // Remove the non-numeric characters from the size.
if ($unit) {
// Find the position of the unit in the ordered string which is the power of magnitude to multiply a kilobyte by.
return round($size * pow(1024, stripos('bkmgtpezy', $unit[0])));
}
else {
return round($size);
}
}
}
@@ -40,10 +40,24 @@ class AssetMaintenancesController extends Controller
$maintenances = $maintenances->TextSearch(e($request->input('search')));
}
if ($request->has('asset_id')) {
$maintenances->where('asset_id', '=', $request->input('asset_id'));
}
$offset = request('offset', 0);
$limit = request('limit', 50);
$allowed_columns = ['id','title','asset_maintenance_time','asset_maintenance_type','cost','start_date','completion_date','notes','user_id'];
$allowed_columns = [
'id',
'title',
'asset_maintenance_time',
'asset_maintenance_type',
'cost',
'start_date',
'completion_date',
'notes',
'user_id'
];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
@@ -194,6 +194,7 @@ class AssetModelsController extends Controller
'models.category_id',
])->with('manufacturer','category');
$settings = \App\Models\Setting::getSettings();
if ($request->has('search')) {
$assetmodels = $assetmodels->SearchByManufacturerOrCat($request->input('search'));
@@ -202,8 +203,24 @@ class AssetModelsController extends Controller
$assetmodels = $assetmodels->OrderCategory('ASC')->OrderManufacturer('ASC')->orderby('models.name', 'asc')->orderby('models.model_number', 'asc')->paginate(50);
foreach ($assetmodels as $assetmodel) {
$assetmodel->use_text = (($assetmodel->category) ? e($assetmodel->category->name) : '').': '.$assetmodel->present()->modelName;
$assetmodel->use_image = ($assetmodel->image) ? url('/').'/uploads/models/'.$assetmodel->image : null;
$assetmodel->use_text = '';
if ($settings->modellistCheckedValue('category')) {
$assetmodel->use_text .= (($assetmodel->category) ? e($assetmodel->category->name).' - ' : '');
}
if ($settings->modellistCheckedValue('manufacturer')) {
$assetmodel->use_text .= (($assetmodel->manufacturer) ? e($assetmodel->manufacturer->name).' ' : '');
}
$assetmodel->use_text .= e($assetmodel->name);
if (($settings->modellistCheckedValue('model_number')) && ($assetmodel->model_number!='')) {
$assetmodel->use_text .= ' (#'.e($assetmodel->model_number).')';
}
$assetmodel->use_image = ($settings->modellistCheckedValue('image') && ($assetmodel->image)) ? url('/').'/uploads/models/'.$assetmodel->image : null;
}
return (new SelectlistTransformer)->transformSelectlist($assetmodels);
+10 -2
View File
@@ -199,12 +199,18 @@ class AssetsController extends Controller
break;
default:
if ($settings->show_archived_in_list!='1') {
if ((!$request->has('status_id')) && ($settings->show_archived_in_list!='1')) {
// terrible workaround for complex-query Laravel bug in fulltext
$assets->join('status_labels AS status_alias',function ($join) {
$join->on('status_alias.id', "=", "assets.status_id")
->where('status_alias.archived', '=', 0);
});
// If there is a status ID, don't take show_archived_in_list into consideration
} else {
$assets->join('status_labels AS status_alias',function ($join) {
$join->on('status_alias.id', "=", "assets.status_id");
});
}
}
@@ -244,6 +250,8 @@ class AssetsController extends Controller
break;
case 'location':
$assets->OrderLocation($order);
case 'rtd_location':
$assets->OrderRtdLocation($order);
break;
case 'status_label':
$assets->OrderStatus($order);
@@ -549,7 +557,7 @@ class AssetsController extends Controller
$error_payload['target_type'] = 'location';
} elseif (request('checkout_to_type')=='asset') {
$target = Asset::where('id','!=',$assetId)->find(request('assigned_asset'));
$target = Asset::where('id','!=',$asset_id)->find(request('assigned_asset'));
$asset->location_id = $target->rtd_location_id;
// Override with the asset's location_id if it has one
if ($target->location_id!='') {
@@ -125,6 +125,38 @@ class CustomFieldsController extends Controller
}
public function associate(Request $request, $field_id)
{
$this->authorize('edit', CustomFieldset::class);
$field = CustomField::findOrFail($field_id);
$fieldset_id = $request->input('fieldset_id');
foreach ($field->fieldset as $fieldset) {
if ($fieldset->id == $fieldset_id) {
return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success')));
}
}
$fieldset = CustomFieldset::findOrFail($fieldset_id);
$fieldset->fields()->attach($field->id, ["required" => ($request->input('required') == "on"), "order" => $request->input('order', $fieldset->fields->count())]);
return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success')));
}
public function disassociate(Request $request, $field_id)
{
$this->authorize('edit', CustomFieldset::class);
$field = CustomField::findOrFail($field_id);
$fieldset_id = $request->input('fieldset_id');
foreach ($field->fieldset as $fieldset) {
if ($fieldset->id == $fieldset_id) {
$fieldset->fields()->detach($field->id);
return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success')));
}
}
$fieldset = CustomFieldset::findOrFail($fieldset_id);
return response()->json(Helper::formatStandardApiResponse('success', $fieldset, trans('admin/custom_fields/message.fieldset.update.success')));
}
/**
* Delete a custom field.
@@ -126,7 +126,7 @@ class CustomFieldsetsController extends Controller
{
$this->authorize('delete', CustomFieldset::class);
$fieldset = CustomFieldset::findOrFail($id);
$modelsCount = $fieldset->models->count();
$fieldsCount = $fieldset->fields->count();
@@ -141,7 +141,23 @@ class CustomFieldsetsController extends Controller
return response()->json(Helper::formatStandardApiResponse('error', null, 'Unspecified error'));
}
/**
* Return JSON containing a list of fields belonging to a fieldset.
*
* @author [V. Cordes] [<volker@fdatek.de>]
* @since [v4.1.10]
* @param $fieldsetId
* @return string JSON
*/
public function fields($id)
{
$this->authorize('view', CustomFieldset::class);
$set = CustomFieldset::findOrFail($id);
$fields = $set->fields->get();
return (new CustomFieldsTransformer)->transformCustomFields($fields, $fields->count());
}
}
@@ -22,17 +22,17 @@ class DepartmentsController extends Controller
public function index(Request $request)
{
$this->authorize('view', Department::class);
$allowed_columns = ['id','name','image'];
$allowed_columns = ['id','name','image','users_count'];
$departments = Department::select([
'id',
'name',
'location_id',
'company_id',
'manager_id',
'created_at',
'updated_at',
'image'
'departments.id',
'departments.name',
'departments.location_id',
'departments.company_id',
'departments.manager_id',
'departments.created_at',
'departments.updated_at',
'departments.image'
])->with('users')->with('location')->with('manager')->with('company')->withCount('users');
if ($request->has('search')) {
@@ -43,7 +43,18 @@ class DepartmentsController extends Controller
$limit = $request->input('limit', 50);
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$departments->orderBy($sort, $order);
switch ($request->input('sort')) {
case 'location':
$departments->OrderLocation($order);
break;
case 'manager':
$departments->OrderManager($order);
break;
default:
$departments->orderBy($sort, $order);
break;
}
$total = $departments->count();
$departments = $departments->skip($offset)->take($limit)->get();
@@ -20,7 +20,7 @@ class GroupsController extends Controller
public function index(Request $request)
{
$this->authorize('view', Group::class);
$allowed_columns = ['id','name','created_at'];
$allowed_columns = ['id','name','created_at', 'users_count'];
$groups = Group::select('id','name','permissions','created_at','updated_at')->withCount('users');
@@ -23,8 +23,8 @@ class LocationsController extends Controller
$this->authorize('view', Location::class);
$allowed_columns = [
'id','name','address','address2','city','state','country','zip','created_at',
'updated_at','parent_id', 'manager_id','image',
'assigned_assets_count','users_count','assets_count'];
'updated_at','manager_id','image',
'assigned_assets_count','users_count','assets_count','currency'];
$locations = Location::with('parent', 'manager', 'childLocations')->select([
'locations.id',
@@ -49,11 +49,25 @@ class LocationsController extends Controller
$locations = $locations->TextSearch($request->input('search'));
}
$offset = $request->input('offset', 0);
$limit = $request->input('limit', 50);
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array($request->input('sort'), $allowed_columns) ? $request->input('sort') : 'created_at';
$locations->orderBy($sort, $order);
switch ($request->input('sort')) {
case 'parent':
$locations->OrderParent($order);
break;
case 'manager':
$locations->OrderManager($order);
break;
default:
$locations->orderBy($sort, $order);
break;
}
$total = $locations->count();
$locations = $locations->skip($offset)->take($limit)->get();
@@ -42,11 +42,15 @@ class ReportsController extends Controller
$allowed_columns = [
'id',
'created_at'
'created_at',
'target_id',
'user_id',
'action_type',
'note'
];
$sort = in_array($request->input('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
$order = $request->input('order') === 'asc' ? 'asc' : 'desc';
$order = ($request->input('order') == 'asc') ? 'asc' : 'desc';
$offset = request('offset', 0);
$limit = request('limit', 50);
$total = $actionlogs->count();
@@ -22,7 +22,7 @@ class StatuslabelsController extends Controller
public function index(Request $request)
{
$this->authorize('view', Statuslabel::class);
$allowed_columns = ['id','name','created_at', 'assets_count'];
$allowed_columns = ['id','name','created_at', 'assets_count','color'];
$statuslabels = Statuslabel::withCount('assets');
@@ -63,85 +63,6 @@ class AssetMaintenancesController extends Controller
}
/**
* Generates the JSON response for asset maintenances listing view.
*
* @see AssetMaintenancesController::getIndex() method that generates view
* @author Vincent Sposato <vincent.sposato@gmail.com>
* @version v1.0
* @since [v1.8]
* @return String JSON
*/
public function getDatatable(Request $request)
{
$maintenances = AssetMaintenance::with('asset', 'supplier', 'asset.company', 'admin');
if (Input::has('search')) {
$maintenances = $maintenances->TextSearch(e($request->input('search')));
}
$offset = request('offset', 0);
$limit = request('limit', 50);
$allowed_columns = ['id','title','asset_maintenance_time','asset_maintenance_type','cost','start_date','completion_date','notes','user_id'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? e($request->input('sort')) : 'created_at';
switch ($sort) {
case 'user_id':
$maintenances = $maintenances->OrderAdmin($order);
break;
default:
$maintenances = $maintenances->orderBy($sort, $order);
break;
}
$maintenancesCount = $maintenances->count();
$maintenances = $maintenances->skip($offset)->take($limit)->get();
$rows = array();
$settings = Setting::getSettings();
foreach ($maintenances as $maintenance) {
$actions = '';
if (Gate::allows('update', Asset::class)) {
$actions .= Helper::generateDatatableButton('edit', route('maintenances.edit', $maintenance->id));
$actions .= Helper::generateDatatableButton(
'delete',
route('maintenances.destroy', $maintenance->id),
$enabled = true,
trans('admin/asset_maintenances/message.delete.confirm'),
$maintenance->title
);
}
if (($maintenance->cost) && (isset($maintenance->asset)) && ($maintenance->asset->location) && ($maintenance->asset->location->currency!='')) {
$maintenance_cost = $maintenance->asset->location->currency.$maintenance->cost;
} else {
$maintenance_cost = $settings->default_currency.$maintenance->cost;
}
$rows[] = array(
'id' => $maintenance->id,
'asset_name' => ($maintenance->asset) ? (string)link_to_route('maintenances.show', $maintenance->asset->present()->Name(), ['maintenance' => $maintenance->asset->id]) : 'Deleted Asset' ,
'title' => $maintenance->title,
'notes' => $maintenance->notes,
'supplier' => ($maintenance->supplier) ? (string)link_to_route('suppliers.show', $maintenance->supplier->name, ['maintenance'=>$maintenance->supplier->id]) : 'Deleted Supplier',
'cost' => $maintenance_cost,
'asset_maintenance_type' => e($maintenance->asset_maintenance_type),
'start_date' => $maintenance->start_date,
'asset_maintenance_time' => $maintenance->asset_maintenance_time,
'completion_date' => $maintenance->completion_date,
'user_id' => ($maintenance->admin) ? (string)link_to_route('users.show', $maintenance->admin->present()->fullName(), ['user'=>$maintenance->admin->id]) : '',
'actions' => $actions,
'company' => ($maintenance->asset->company) ? $maintenance->asset->company->name : ''
);
}
$data = array('total' => $maintenancesCount, 'rows' => $rows);
return $data;
}
/**
* Returns a form view to create a new asset maintenance.
@@ -265,9 +186,7 @@ class AssetMaintenancesController extends Controller
// Get Supplier List
// Render the view
return view('asset_maintenances/edit')
->with('asset_list', Helper::detailedAssetList())
->with('selectedAsset', null)
->with('supplier_list', Helper::suppliersList())
->with('assetMaintenanceType', $assetMaintenanceType)
->with('item', $assetMaintenance);
+10 -1
View File
@@ -575,6 +575,7 @@ class AssetsController extends Controller
$data['log_id'] = $logaction->id;
$data['first_name'] = get_class($target) == User::class ? $target->first_name : '';
$data['last_name'] = get_class($target) == User::class ? $target->last_name : '';
$data['item_name'] = $asset->present()->name();
$data['checkin_date'] = $logaction->created_at;
$data['item_tag'] = $asset->asset_tag;
@@ -1088,7 +1089,7 @@ class AssetsController extends Controller
\Log::debug($request->input('ids'));
if (($request->has('ids')) && (count($request->input('ids') > 0))) {
if (($request->has('ids')) && (count($request->input('ids')) > 0)) {
$assets = $request->input('ids');
if (($request->has('purchase_date'))
|| ($request->has('purchase_cost'))
@@ -1129,9 +1130,17 @@ class AssetsController extends Controller
if ($request->has('warranty_months')) {
$update_array['warranty_months'] = $request->input('warranty_months');
}
if ($request->has('rtd_location_id')) {
$update_array['rtd_location_id'] = $request->input('rtd_location_id');
if (($request->has('update_real_loc'))
&& (($request->input('update_real_loc')) == '1'))
{
$update_array['location_id'] = $request->input('rtd_location_id');
}
}
if ($request->has('status_id')) {
$update_array['status_id'] = $request->input('status_id');
}
@@ -67,7 +67,7 @@ class ManufacturersController extends Controller
public function store(ImageUploadRequest $request)
{
$this->authorize('edit', Manufacturer::class);
$this->authorize('create', Manufacturer::class);
$manufacturer = new Manufacturer;
$manufacturer->name = $request->input('name');
$manufacturer->user_id = Auth::user()->id;
+4 -2
View File
@@ -7,6 +7,7 @@ use App\Models\Actionlog;
use App\Models\Asset;
use App\Models\AssetMaintenance;
use App\Models\CustomField;
use App\Models\Depreciation;
use App\Models\License;
use App\Models\Setting;
use Carbon\Carbon;
@@ -221,11 +222,12 @@ class ReportsController extends Controller
public function getDeprecationReport()
{
$depreciations = Depreciation::get();
// Grab all the assets
$assets = Asset::with( 'assignedTo', 'assetstatus', 'defaultLoc', 'location', 'assetlog', 'company', 'model.category', 'model.depreciation')
->orderBy('created_at', 'DESC')->get();
return view('reports/depreciation', compact('assets'));
return view('reports/depreciation', compact('assets'))->with('depreciations',$depreciations);
}
/**
@@ -624,7 +626,7 @@ class ReportsController extends Controller
}
if ($request->has('category')) {
$row[] = ($asset->model->category) ? $asset->model->category->name : '';
$row[] = (($asset->model) && ($asset->model->category)) ? $asset->model->category->name : '';
}
if ($request->has('manufacturer')) {
@@ -314,6 +314,14 @@ class SettingsController extends Controller
return redirect()->to('admin')->with('error', trans('admin/settings/message.update.error'));
}
$setting->modellist_displays = '';
if (($request->has('show_in_model_list')) && (count($request->input('show_in_model_list')) > 0))
{
$setting->modellist_displays = implode(',', $request->input('show_in_model_list'));
}
$setting->full_multiple_companies_support = $request->input('full_multiple_companies_support', '0');
$setting->load_remote = $request->input('load_remote', '0');
$setting->show_archived_in_list = $request->input('show_archived_in_list', '0');
@@ -375,6 +383,8 @@ class SettingsController extends Controller
$setting->brand = $request->input('brand', '1');
$setting->header_color = $request->input('header_color');
$setting->support_footer = $request->input('support_footer');
$setting->footer_text = $request->input('footer_text');
$setting->show_url_in_emails = $request->input('show_url_in_emails', '0');
+4 -2
View File
@@ -461,7 +461,7 @@ class UsersController extends Controller
public function postBulkEditSave(Request $request)
{
$this->authorize('update', User::class);
if ((!Input::has('ids')) || (count(Input::has('ids')) == 0)) {
if ((!Input::has('ids')) || (count(Input::input('ids')) == 0)) {
return redirect()->back()->with('error', 'No users selected');
} else {
@@ -1068,7 +1068,7 @@ class UsersController extends Controller
// Open output stream
$handle = fopen('php://output', 'w');
User::with('assets', 'accessories', 'consumables', 'licenses', 'manager', 'groups', 'userloc', 'company','throttle')->orderBy('created_at', 'DESC')->chunk(500, function($users) use($handle) {
User::with('assets', 'accessories', 'consumables', 'department', 'licenses', 'manager', 'groups', 'userloc', 'company','throttle')->orderBy('created_at', 'DESC')->chunk(500, function($users) use($handle) {
$headers=[
// strtolower to prevent Excel from trying to open it as a SYLK file
strtolower(trans('general.id')),
@@ -1080,6 +1080,7 @@ class UsersController extends Controller
trans('admin/users/table.email'),
trans('admin/users/table.manager'),
trans('admin/users/table.location'),
trans('general.department'),
trans('general.assets'),
trans('general.licenses'),
trans('general.accessories'),
@@ -1110,6 +1111,7 @@ class UsersController extends Controller
$user->email,
($user->manager) ? $user->manager->present()->fullName() : '',
($user->userloc) ? $user->userloc->name : '',
($user->department) ? $user->department->name : '',
$user->assets->count(),
$user->licenses->count(),
$user->accessories->count(),
@@ -37,7 +37,7 @@ class ActionlogsTransformer
] : null,
'created_at' => Helper::getFormattedDateObject($actionlog->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($actionlog->updated_at, 'datetime'),
'next_audit_date' => ($actionlog->itemType()=='asset') ? Helper::getFormattedDateObject($actionlog->calcNextAuditDate(), 'date'): null,
'next_audit_date' => ($actionlog->itemType()=='asset') ? Helper::getFormattedDateObject($actionlog->calcNextAuditDate(null, $actionlog->item), 'date'): null,
'days_to_next_audit' => $actionlog->daysUntilNextAudit($settings->audit_interval, $actionlog->item),
'action_type' => $actionlog->present()->actionType(),
'admin' => ($actionlog->user) ? [
+4 -4
View File
@@ -36,13 +36,13 @@ class AssetsTransformer
'id' => (int) $asset->assetstatus->id,
'name'=> e($asset->assetstatus->name),
'status_type'=> e($asset->assetstatus->getStatuslabelType()),
'status_meta' => e($asset->present()->statusMeta),
'status_meta' => e($asset->present()->statusMeta),
] : null,
'category' => ($asset->model->category) ? [
'category' => (($asset->model) && ($asset->model->category)) ? [
'id' => (int) $asset->model->category->id,
'name'=> e($asset->model->category->name)
] : null,
'manufacturer' => ($asset->model->manufacturer) ? [
'manufacturer' => (($asset->model) && ($asset->model->manufacturer)) ? [
'id' => (int) $asset->model->manufacturer->id,
'name'=> e($asset->model->manufacturer->name)
] : null,
@@ -81,7 +81,7 @@ class AssetsTransformer
];
if (($asset->model->fieldset) && (count($asset->model->fieldset->fields)> 0)) {
if (($asset->model) && ($asset->model->fieldset) && (count($asset->model->fieldset->fields)> 0)) {
$fields_array = array();
foreach ($asset->model->fieldset->fields as $field) {
@@ -34,15 +34,16 @@ class LocationsTransformer
'id' => (int) $location->id,
'name' => e($location->name),
'image' => ($location->image) ? app('locations_upload_url').e($location->image) : null,
'address' => e($location->address),
'city' => e($location->city),
'state' => e($location->state),
'country' => e($location->country),
'zip' => e($location->zip),
'address' => ($location->address) ? e($location->address) : null,
'address2' => ($location->address2) ? e($location->address2) : null,
'city' => ($location->city) ? e($location->city) : null,
'state' => ($location->state) ? e($location->state) : null,
'country' => ($location->country) ? e($location->country) : null,
'zip' => ($location->zip) ? e($location->zip) : null,
'assigned_assets_count' => (int) $location->assigned_assets_count,
'assets_count' => (int) $location->assets_count,
'users_count' => (int) $location->users_count,
'currency' => ($location->currency) ? e($location->currency) : null,
'created_at' => Helper::getFormattedDateObject($location->created_at, 'datetime'),
'updated_at' => Helper::getFormattedDateObject($location->updated_at, 'datetime'),
'parent' => ($location->parent) ? [
+3 -1
View File
@@ -41,7 +41,9 @@ class AccessoryImporter extends ItemImporter
$this->log("No Matching Accessory, Creating a new one");
$accessory = new Accessory();
$accessory->fill($this->sanitizeItemForStoring($accessory));
$accessory->unsetEventDispatcher();
//FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
// $accessory->unsetEventDispatcher();
if ($accessory->save()) {
$accessory->logCreate('Imported using CSV Importer');
$this->log('Accessory ' . $this->item["name"] . ' was created');
+2 -1
View File
@@ -106,7 +106,8 @@ class AssetImporter extends ItemImporter
$asset->{$custom_field} = $val;
}
}
$asset->unsetEventDispatcher();
//FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
// $asset->unsetEventDispatcher();
if ($asset->save()) {
$asset->logCreate('Imported using csv importer');
$this->log('Asset ' . $this->item["name"] . ' with serial number ' . $this->item['serial'] . ' was created');
+1
View File
@@ -46,6 +46,7 @@ class ComponentImporter extends ItemImporter
$this->log("No matching component, creating one");
$component = new Component;
$component->fill($this->sanitizeItemForStoring($component));
//FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
$component->unsetEventDispatcher();
if ($component->save()) {
$component->logCreate('Imported using CSV Importer');
+1 -1
View File
@@ -40,7 +40,7 @@ class ConsumableImporter extends ItemImporter
$this->log("No matching consumable, creating one");
$consumable = new Consumable();
$consumable->fill($this->sanitizeItemForStoring($consumable));
//FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
$consumable->unsetEventDispatcher();
if ($consumable->save()) {
$consumable->logCreate('Imported using CSV Importer');
+3
View File
@@ -22,6 +22,9 @@ class ItemImporter extends Importer
protected function handle($row)
{
// Need to reset this between iterations or we'll have stale data.
$this->item = [];
$item_category = $this->findCsvMatch($row, "category");
if ($this->shouldUpdateField($item_category)) {
$this->item["category_id"] = $this->createOrFetchCategory($item_category);
+2 -2
View File
@@ -63,8 +63,8 @@ class LicenseImporter extends ItemImporter
} else {
$license->fill($this->sanitizeItemForStoring($license));
}
$license->unsetEventDispatcher();
//FIXME: this disables model validation. Need to find a way to avoid double-logs without breaking everything.
// $license->unsetEventDispatcher();
if ($license->save()) {
$license->logCreate('Imported using csv importer');
$this->log('License ' . $this->item["name"] . ' with serial number ' . $this->item['serial'] . ' was created');
+16 -2
View File
@@ -223,7 +223,7 @@ class Asset extends Depreciable
*/
public function components()
{
return $this->belongsToMany('\App\Models\Component', 'components_assets', 'asset_id', 'component_id')->withPivot('id')->withTrashed();
return $this->belongsToMany('\App\Models\Component', 'components_assets', 'asset_id', 'component_id')->withPivot('id', 'assigned_qty')->withTrashed();
}
/**
@@ -231,7 +231,9 @@ class Asset extends Depreciable
*/
public function get_depreciation()
{
return $this->model->depreciation;
if (($this->model) && ($this->model->depreciation)) {
return $this->model->depreciation;
}
}
/**
@@ -1162,6 +1164,18 @@ class Asset extends Depreciable
return $query->leftJoin('locations as asset_locations', 'asset_locations.id', '=', 'assets.location_id')->orderBy('asset_locations.name', $order);
}
/**
* Query builder scope to order on default
* @param \Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return \Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderRtdLocation($query, $order)
{
return $query->leftJoin('locations as rtd_asset_locations', 'rtd_asset_locations.id', '=', 'assets.rtd_location_id')->orderBy('rtd_asset_locations.name', $order);
}
/**
* Query builder scope to order on supplier name
+26
View File
@@ -93,5 +93,31 @@ class Department extends SnipeModel
}
/**
* Query builder scope to order on location name
*
* @param \Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return \Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderLocation($query, $order)
{
return $query->leftJoin('locations as department_location', 'departments.location_id', '=', 'department_location.id')->orderBy('department_location.name', $order);
}
/**
* Query builder scope to order on manager name
*
* @param \Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return \Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderManager($query, $order)
{
return $query->leftJoin('users as department_user', 'departments.manager_id', '=', 'department_user.id')->orderBy('department_user.first_name', $order)->orderBy('department_user.last_name', $order);
}
}
+15 -1
View File
@@ -9,6 +9,7 @@ use App\Presenters\Presentable;
use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\SoftDeletes;
use Watson\Validating\ValidatingTrait;
use DB;
class Location extends SnipeModel
{
@@ -184,7 +185,7 @@ class Location extends SnipeModel
})
// Ugly, ugly code because Laravel sucks at self-joins
->orWhere(function ($query) use ($search) {
$query->whereRaw("parent_id IN (select id from locations where name LIKE '%".$search."%') ");
$query->whereRaw("parent_id IN (select id from ".DB::getTablePrefix()."locations where name LIKE '%".$search."%') ");
});
});
@@ -204,4 +205,17 @@ class Location extends SnipeModel
// Left join here, or it will only return results with parents
return $query->leftJoin('locations as parent_loc', 'locations.parent_id', '=', 'parent_loc.id')->orderBy('parent_loc.name', $order);
}
/**
* Query builder scope to order on manager name
*
* @param \Illuminate\Database\Query\Builder $query Query builder instance
* @param text $order Order
*
* @return \Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeOrderManager($query, $order)
{
return $query->leftJoin('users as location_user', 'locations.manager_id', '=', 'location_user.id')->orderBy('location_user.first_name', $order)->orderBy('location_user.last_name', $order);
}
}
+17 -3
View File
@@ -79,13 +79,27 @@ class Setting extends Model
public static function getDefaultEula()
{
$Parsedown = new \Parsedown();
if (Setting::getSettings()->default_eula_text) {
return $Parsedown->text(e(Setting::getSettings()->default_eula_text));
} else {
return null;
}
return null;
}
public function modellistCheckedValue ($element) {
// If the value is blank for some reason
if ($this->modellist_displays=='') {
return false;
}
$values = explode(',', $this->modellist_displays);
foreach ($values as $value) {
if ($value == $element) {
return true;
}
}
return false;
}
+12 -31
View File
@@ -45,6 +45,7 @@ class User extends SnipeModel implements AuthenticatableContract, CanResetPasswo
'country',
'zip',
'activated',
'manager_id',
];
protected $casts = [
@@ -329,44 +330,24 @@ class User extends SnipeModel implements AuthenticatableContract, CanResetPasswo
public static function generateFormattedNameFromFullName($format = 'filastname', $users_name)
{
$name = explode(" ", $users_name);
$name = str_replace("'", '', $name);
$first_name = $name[0];
$email_last_name = '';
$email_prefix = $first_name;
list($first_name, $last_name) = explode(" ", $users_name, 2);
// If there is no last name given
if (!array_key_exists(1, $name)) {
$last_name='';
$email_last_name = $last_name;
$user_username = $first_name;
// There is a last name given
} else {
$last_name = str_replace($first_name . ' ', '', $users_name);
if ($format=='filastname') {
$email_last_name.=str_replace(' ', '', $last_name);
$email_prefix = $first_name[0].$email_last_name;
} elseif ($format=='firstname.lastname') {
$email_last_name.=str_replace(' ', '', $last_name);
$email_prefix = $first_name.'.'.$email_last_name;
} elseif ($format=='firstname') {
$email_last_name.=str_replace(' ', '', $last_name);
$email_prefix = $first_name;
}
// Assume filastname by default
$username = str_slug(substr($first_name, 0, 1).$last_name);
if ($format=='firstname.lastname') {
$username = str_slug($first_name).'.'.str_slug($last_name);
} elseif ($format=='firstname_lastname') {
$username = str_slug($first_name).'_'.str_slug($last_name);
} elseif ($format=='firstname') {
$username = str_slug($first_name);
}
$user_username = $email_prefix;
$user['first_name'] = $first_name;
$user['last_name'] = $last_name;
$user['username'] = strtolower($user_username);
$user['username'] = strtolower($username);
return $user;
+16 -10
View File
@@ -113,7 +113,14 @@ class AssetPresenter extends Presenter
"title" => trans('admin/hardware/table.location'),
"visible" => true,
"formatter" => "deployedLocationFormatter"
], [
], [
"field" => "rtd_location",
"searchable" => true,
"sortable" => true,
"title" => trans('admin/hardware/form.default_location'),
"visible" => false,
"formatter" => "deployedLocationFormatter"
], [
"field" => "manufacturer",
"searchable" => true,
"sortable" => true,
@@ -165,7 +172,7 @@ class AssetPresenter extends Presenter
"searchable" => false,
"sortable" => false,
"visible" => false,
"title" => 'Warranty Expires',
"title" => trans('admin/hardware/form.warranty_expires'),
"formatter" => "dateDisplayFormatter"
],[
"field" => "notes",
@@ -173,6 +180,7 @@ class AssetPresenter extends Presenter
"sortable" => true,
"visible" => false,
"title" => trans('general.notes'),
], [
"field" => "created_at",
"searchable" => false,
@@ -246,11 +254,11 @@ class AssetPresenter extends Presenter
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => 'Checkin/Checkout',
"title" => trans('general.checkin').'/'.trans('general.checkout'),
"visible" => true,
"formatter" => "hardwareInOutFormatter",
];
$layout[] = [
"field" => "actions",
"searchable" => false,
@@ -263,7 +271,7 @@ class AssetPresenter extends Presenter
return json_encode($layout);
}
/**
* Generate html link to this items name.
@@ -325,15 +333,14 @@ class AssetPresenter extends Presenter
**/
public function name()
{
if (empty($this->model->name)) {
if (isset($this->model->model)) {
return $this->model->model->name.' ('.$this->model->asset_tag.')';
}
return $this->model->asset_tag;
} else {
return $this->model->name . ' (' . $this->model->asset_tag . ')';
}
return $this->model->name . ' (' . $this->model->asset_tag . ')';
}
@@ -399,7 +406,7 @@ class AssetPresenter extends Presenter
public function statusMeta()
{
if ($this->model->assigned) {
return strtolower(trans('general.deployed'));
return 'deployed';
}
return $this->model->assetstatus->getStatuslabelType();
}
@@ -483,4 +490,3 @@ class AssetPresenter extends Presenter
return '<i class="fa fa-barcode"></i>';
}
}
+1 -1
View File
@@ -114,7 +114,7 @@ class ComponentPresenter extends Presenter
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => 'Checkin/Checkout',
"title" => trans('general.checkin').'/'.trans('general.checkout'),
"visible" => true,
"formatter" => "componentsInOutFormatter",
];
+55 -1
View File
@@ -117,6 +117,7 @@ class LicensePresenter extends Presenter
"sortable" => true,
"visible" => false,
"title" => trans('general.notes'),
"formatter" => "notesFormatter"
]
];
@@ -125,7 +126,7 @@ class LicensePresenter extends Presenter
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => 'Checkin/Checkout',
"title" => trans('general.checkin').'/'.trans('general.checkout'),
"visible" => true,
"formatter" => "licensesInOutFormatter",
];
@@ -144,6 +145,59 @@ class LicensePresenter extends Presenter
}
/**
* Json Column Layout for bootstrap table
* @return string
*/
public static function dataTableLayoutSeats()
{
$layout = [
[
"field" => "name",
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => trans('admin/licenses/general.seat'),
"visible" => true,
], [
"field" => "assigned_user",
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => trans('admin/licenses/general.user'),
"visible" => true,
"formatter" => "usersLinkObjFormatter"
], [
"field" => "assigned_asset",
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => trans('admin/licenses/form.asset'),
"visible" => true,
"formatter" => "hardwareLinkObjFormatter"
], [
"field" => "location",
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => trans('general.location'),
"visible" => true,
"formatter" => "locationsLinkObjFormatter"
], [
"field" => "checkincheckout",
"searchable" => false,
"sortable" => false,
"switchable" => true,
"title" => trans('general.checkin').'/'.trans('general.checkout'),
"visible" => true,
"formatter" => "licenseSeatInOutFormatter"
]
];
return json_encode($layout);
}
/**
* Link to this licenses Name
* @return string
+150
View File
@@ -11,6 +11,156 @@ use App\Helpers\Helper;
class LocationPresenter extends Presenter
{
/**
* Json Column Layout for bootstrap table
* @return string
*/
public static function dataTableLayout()
{
$layout = [
[
"field" => "id",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('general.id'),
"visible" => false
],
[
"field" => "name",
"searchable" => true,
"sortable" => true,
"title" => trans('admin/locations/table.name'),
"visible" => true,
"formatter" => "locationsLinkFormatter"
],
[
"field" => "image",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('general.image'),
"visible" => true,
"formatter" => "imageFormatter"
],
[
"field" => "parent",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.parent'),
"visible" => true,
"formatter" => "locationsLinkObjFormatter"
],
[
"field" => "assets_count",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.assets_rtd'),
"visible" => true,
],
[
"field" => "assigned_assets_count",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.assets_checkedout'),
"visible" => true,
],
[
"field" => "users_count",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('general.people'),
"visible" => true,
],
[
"field" => "currency",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('general.currency'),
"visible" => true,
],
[
"field" => "address",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.address'),
"visible" => true,
],
[
"field" => "city",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.city'),
"visible" => true,
],
[
"field" => "state",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.state'),
"visible" => true,
],
[
"field" => "zip",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.zip'),
"visible" => false,
],
[
"field" => "country",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/locations/table.country'),
"visible" => false,
],[
"field" => "manager",
"searchable" => false,
"sortable" => true,
"switchable" => true,
"title" => trans('admin/users/table.manager'),
"visible" => false,
"formatter" => 'usersLinkObjFormatter'
],
[
"field" => "created_at",
"searchable" => true,
"sortable" => true,
"switchable" => true,
"title" => trans('general.created_at'),
"visible" => false,
'formatter' => 'dateDisplayFormatter'
],
[
"field" => "actions",
"searchable" => false,
"sortable" => false,
"switchable" => false,
"title" => trans('table.actions'),
"visible" => true,
"formatter" => "locationsActionsFormatter",
]
];
return json_encode($layout);
}
/**
* Link to this locations name
* @return string
+1 -1
View File
@@ -30,7 +30,7 @@
"predis/predis": "^1.1",
"rollbar/rollbar-laravel": "^2.2",
"schuppo/password-strength": "~1.5",
"spatie/laravel-backup": "^3.0.0",
"spatie/laravel-backup": "3.11.0",
"tecnickcom/tc-lib-barcode": "^1.15",
"tightenco/ziggy": "^0.4.1",
"unicodeveloper/laravel-password": "^1.0",
Generated
+194 -190
View File
File diff suppressed because it is too large Load Diff
+3 -3
View File
@@ -75,9 +75,9 @@ return [
'dump_command_timeout' => 60 * 5, // 5 minute timeout
'dump_using_single_transaction' => true, // perform dump using a single transaction
'options' => (env('DB_SSL')) ? [
PDO::MYSQL_ATTR_SSL_KEY => env('DB_SSL_KEY'), // /path/to/key.pem
PDO::MYSQL_ATTR_SSL_CERT => env('DB_SSL_CERT'), // /path/to/cert.pem
PDO::MYSQL_ATTR_SSL_CA => env('DB_SSL_CA'), // /path/to/ca.pem
PDO::MYSQL_ATTR_SSL_KEY => env('DB_SSL_KEY_PATH'), // /path/to/key.pem
PDO::MYSQL_ATTR_SSL_CERT => env('DB_SSL_CERT_PATH'), // /path/to/cert.pem
PDO::MYSQL_ATTR_SSL_CA => env('DB_SSL_CA_PATH'), // /path/to/ca.pem
PDO::MYSQL_ATTR_SSL_CIPHER => env('DB_SSL_CIPHER')
] : []
],
+5 -5
View File
@@ -1,10 +1,10 @@
<?php
return array (
'app_version' => 'v4.1.10',
'full_app_version' => 'v4.1.10 - build 3249-g8d3a214',
'build_version' => '3249',
'app_version' => 'v4.1.13',
'full_app_version' => 'v4.1.13 - build 3374-gcccd75f',
'build_version' => '3374',
'prerelease_version' => '',
'hash_version' => 'g8d3a214',
'full_hash' => 'v4.1.10-119-g8d3a214',
'hash_version' => 'gcccd75f',
'full_hash' => 'v4.1.12-7-gcccd75f',
'branch' => 'master',
);
@@ -12,9 +12,11 @@ class AddRememberTokenToUsersTable extends Migration
*/
public function up()
{
Schema::table('users', function (Blueprint $table) {
$table->text('remember_token')->nullable()->default(NULL);
});
if (!Schema::hasColumn('users', 'remember_token')) {
Schema::table('users', function (Blueprint $table) {
$table->text('remember_token')->nullable()->default(null);
});
}
}
/**
@@ -25,7 +27,7 @@ class AddRememberTokenToUsersTable extends Migration
public function down()
{
Schema::table('users', function (Blueprint $table) {
//
$table->dropColumn('remember_token');
});
}
}
@@ -32,6 +32,6 @@ class CreatePasswordResetsTable extends Migration
*/
public function down()
{
//
Schema::dropIfExists('password_resets');
}
}
@@ -57,7 +57,6 @@ class MigrateAssetLogToActionLog extends Migration
$a->deleted_at = $log->deleted_at;
$a->note = $log->note;
$a->expected_checkin = $log->expected_checkin;
$a->thread_id = $log->thread_id;
$a->accepted_id = $log->accepted_id;
$a->filename = $log->filename;
@@ -26,7 +26,7 @@ class AddDashboardMessageToSettings extends Migration
public function down()
{
Schema::table('settings', function (Blueprint $table) {
$table->text('dashboard_message');
$table->dropColumn('dashboard_message');
});
}
}
@@ -0,0 +1,34 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddFooterSettingsToSettings extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('settings', function (Blueprint $table) {
$table->char('support_footer', 5)->nullable()->default('on');
$table->text('footer_text')->nullable()->default(null);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn('support_footer');
$table->dropColumn('footer_text');
});
}
}
@@ -0,0 +1,32 @@
<?php
use Illuminate\Support\Facades\Schema;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddModellistPreferenc extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('settings', function (Blueprint $table) {
$table->char('modellist_displays')->nullable()->default('image,category,manufacturer,model_number');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('settings', function (Blueprint $table) {
$table->dropColumn('modellist_displays');
});
}
}
+1 -1
View File
@@ -17,7 +17,7 @@ else
fi
# create data directories
for dir in 'data/private_uploads' 'data/uploads' 'data/uploads/avatars' 'data/uploads/barcodes' 'data/uploads/models' 'data/uploads/suppliers' 'dumps'; do
for dir in 'data/private_uploads' 'data/uploads' 'data/uploads/avatars' 'data/uploads/barcodes' 'data/uploads/categories' 'data/uploads/companies' 'data/uploads/departments' 'data/uploads/locations' 'data/uploads/manufacturers' 'data/uploads/models' 'data/uploads/suppliers' 'dumps'; do
mkdir -p "/var/lib/snipeit/$dir"
done
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
+1 -1
View File
File diff suppressed because one or more lines are too long
+31 -52
View File
@@ -1,7 +1,7 @@
/**
* @author: Dennis Hernández
* @webSite: http://djhvscf.github.io/Blog
* @version: v1.2.2
* @version: v1.2.3
*
* @update zhixin wen <wenzhixin2010@gmail.com>
*/
@@ -69,12 +69,11 @@
case 'cookieStorage':
document.cookie = [
cookieName, '=', cookieValue,
'; expires=' + that.options.cookieExpire,
'; expires=' + calculateExpiration(that.options.cookieExpire),
that.options.cookiePath ? '; path=' + that.options.cookiePath : '',
that.options.cookieDomain ? '; domain=' + that.options.cookieDomain : '',
that.options.cookieSecure ? '; secure' : ''
].join('');
break;
case 'localStorage':
localStorage.setItem(cookieName, cookieValue);
break;
@@ -101,7 +100,9 @@
switch(that.options.cookieStorage) {
case 'cookieStorage':
return decodeURIComponent(document.cookie.replace(new RegExp('(?:(?:^|.*;)\\s*' + encodeURIComponent(cookieName).replace(/[\-\.\+\*]/g, '\\$&') + '\\s*\\=\\s*([^;]*).*$)|^.*$'), '$1')) || null;
var value = '; ' + document.cookie;
var parts = value.split('; ' + cookieName + '=');
return parts.length === 2 ? parts.pop().split(';').shift() : null;
case 'localStorage':
return localStorage.getItem(cookieName);
case 'sessionStorage':
@@ -136,7 +137,7 @@
var calculateExpiration = function(cookieExpire) {
var time = cookieExpire.replace(/[0-9]*/, ''); //s,mi,h,d,m,y
cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}}/, ''); //number
cookieExpire = cookieExpire.replace(/[A-Za-z]{1,2}/, ''); //number
switch (time.toLowerCase()) {
case 's':
@@ -161,8 +162,12 @@
cookieExpire = undefined;
break;
}
return cookieExpire === undefined ? '' : '; max-age=' + cookieExpire;
if (!cookieExpire) {
return '';
}
var d = new Date();
d.setTime(d.getTime() + cookieExpire * 1000);
return d.toGMTString();
};
var initCookieFilters = function (bootstrapTable) {
@@ -170,7 +175,6 @@
var parsedCookieFilters = JSON.parse(getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, cookieIds.filterControl));
if (!bootstrapTable.options.filterControlValuesLoaded && parsedCookieFilters) {
bootstrapTable.options.filterControlValuesLoaded = true;
var cachedFilters = {},
header = getCurrentHeader(bootstrapTable),
@@ -178,8 +182,10 @@
applyCookieFilters = function (element, filteredCookies) {
$(filteredCookies).each(function (i, cookie) {
$(element).val(cookie.text);
cachedFilters[cookie.field] = cookie.text;
if (cookie.text !== '') {
$(element).val(cookie.text);
cachedFilters[cookie.field] = cookie.text;
}
});
};
@@ -193,6 +199,8 @@
});
bootstrapTable.initColumnSearch(cachedFilters);
bootstrapTable.options.filterControlValuesLoaded = true;
bootstrapTable.initServer();
}
}, 250);
};
@@ -231,16 +239,13 @@
_onSort = BootstrapTable.prototype.onSort,
_onPageNumber = BootstrapTable.prototype.onPageNumber,
_onPageListChange = BootstrapTable.prototype.onPageListChange,
_onPageFirst = BootstrapTable.prototype.onPageFirst,
_onPagePre = BootstrapTable.prototype.onPagePre,
_onPageNext = BootstrapTable.prototype.onPageNext,
_onPageLast = BootstrapTable.prototype.onPageLast,
_toggleColumn = BootstrapTable.prototype.toggleColumn,
_selectPage = BootstrapTable.prototype.selectPage,
_onSearch = BootstrapTable.prototype.onSearch;
BootstrapTable.prototype.init = function () {
var timeoutId = 0;
this.options.filterControls = [];
this.options.filterControlValuesLoaded = false;
@@ -275,36 +280,12 @@
};
BootstrapTable.prototype.initServer = function () {
var bootstrapTable = this,
selectsWithoutDefaults = [],
columnHasSelectControl = function (column) {
return column.filterControl && column.filterControl === 'select';
},
columnHasDefaultSelectValues = function (column) {
return column.filterData && column.filterData !== 'column';
},
cookiesPresent = function() {
var cookie = JSON.parse(getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, cookieIds.filterControl));
return bootstrapTable.options.cookie && cookie;
};
selectsWithoutDefaults = $.grep(bootstrapTable.columns, function(column) {
return columnHasSelectControl(column) && !columnHasDefaultSelectValues(column);
});
// reset variable to original initServer function, so that future calls to initServer
// use the original function from this point on.
BootstrapTable.prototype.initServer = _initServer;
// early return if we don't need to populate any select values with cookie values
if (this.options.filterControl && cookiesPresent() && selectsWithoutDefaults.length === 0) {
return;
var bootstrapTable = this;
if (bootstrapTable.options.cookie && bootstrapTable.options.filterControl && !bootstrapTable.options.filterControlValuesLoaded) {
var cookie = JSON.parse(getCookie(bootstrapTable, bootstrapTable.options.cookieIdTable, cookieIds.filterControl));
if (cookie)
return;
}
// call BootstrapTable.prototype.initServer
_initServer.apply(this, Array.prototype.slice.apply(arguments));
};
@@ -320,7 +301,9 @@
}
if ((this.options.cookieIdTable === '') || (this.options.cookieExpire === '') || (!cookieEnabled())) {
throw new Error("Configuration error. Please review the cookieIdTable, cookieExpire properties, if those properties are ok, then this browser does not support the cookies");
console.error("Configuration error. Please review the cookieIdTable, cookieExpire properties, if those properties are ok, then this browser does not support the cookies");
this.options.cookie = false; //Make sure that the cookie extension is disabled
return;
}
var sortOrderCookie = getCookie(this, this.options.cookieIdTable, cookieIds.sortOrder),
@@ -357,31 +340,26 @@
BootstrapTable.prototype.onPageNumber = function () {
_onPageNumber.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
return false;
};
BootstrapTable.prototype.onPageListChange = function () {
_onPageListChange.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageList, this.options.pageSize);
};
BootstrapTable.prototype.onPageFirst = function () {
_onPageFirst.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
return false;
};
BootstrapTable.prototype.onPagePre = function () {
_onPagePre.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
return false;
};
BootstrapTable.prototype.onPageNext = function () {
_onPageNext.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.onPageLast = function () {
_onPageLast.apply(this, Array.prototype.slice.apply(arguments));
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
return false;
};
BootstrapTable.prototype.toggleColumn = function () {
@@ -410,6 +388,7 @@
if ($(target[0].currentTarget).parent().hasClass('search')) {
setCookie(this, cookieIds.searchText, this.searchText);
}
setCookie(this, cookieIds.pageNumber, this.options.pageNumber);
};
BootstrapTable.prototype.getCookies = function () {
@@ -1,8 +1,9 @@
/**
* @author vincent loh <vincent.ml@gmail.com>
* @version: v1.0.0
* @version: v1.1.0
* https://github.com/vinzloh/bootstrap-table/
* Sticky header for bootstrap-table
* @update J Manuel Corona <jmcg92@gmail.com>
*/
(function ($) {
@@ -13,6 +14,12 @@
stickyHeader: false
});
var bootstrapVersion = 3;
try {
bootstrapVersion = parseInt($.fn.dropdown.Constructor.VERSION, 10);
} catch (e) { }
var hidden_class = bootstrapVersion > 3 ? 'd-none' : 'hidden';
var BootstrapTable = $.fn.bootstrapTable.Constructor,
_initHeader = BootstrapTable.prototype.initHeader;
@@ -20,17 +27,19 @@
var that = this;
_initHeader.apply(this, Array.prototype.slice.apply(arguments));
if (!this.options.stickyHeader) return;
if (!this.options.stickyHeader) {
return;
}
var table = this.$tableBody.find('table');
var table_id = table.attr('id');
var header_id = table.attr('id') + '-sticky-header';
var sticky_header_container_id = header_id +'-sticky-header-container';
var anchor_begin_id = header_id +'_sticky_anchor_begin';
var anchor_end_id = header_id +'_sticky_anchor_end';
var table = this.$tableBody.find('table'),
table_id = table.attr('id'),
header_id = table.attr('id') + '-sticky-header',
sticky_header_container_id = header_id +'-sticky-header-container',
anchor_begin_id = header_id +'_sticky_anchor_begin',
anchor_end_id = header_id +'_sticky_anchor_end';
// add begin and end anchors to track table position
table.before(sprintf('<div id="%s" class="hidden"></div>', sticky_header_container_id));
table.before(sprintf('<div id="%s" class="%s"></div>', sticky_header_container_id, hidden_class));
table.before(sprintf('<div id="%s"></div>', anchor_begin_id));
table.after(sprintf('<div id="%s"></div>', anchor_end_id));
@@ -38,7 +47,7 @@
// clone header just once, to be used as sticky header
// deep clone header. using source header affects tbody>td width
this.$stickyHeader = $($('#'+header_id).clone());
this.$stickyHeader = $($('#'+header_id).clone(true, true));
// avoid id conflict
this.$stickyHeader.removeAttr('id');
@@ -48,7 +57,12 @@
// render sticky when table scroll left-right
table.closest('.fixed-table-container').find('.fixed-table-body').on('scroll.'+table_id, table, match_position_x);
function render_sticky_header(event){
this.$el.on('all.bs.table', function (e) {
that.$stickyHeader = $($('#'+header_id).clone(true, true));
that.$stickyHeader.removeAttr('id');
});
function render_sticky_header(event) {
var table = event.data;
var table_header_id = table.find('thead').attr('id');
// console.log('render_sticky_header for > '+table_header_id);
@@ -75,7 +89,7 @@
$(item).css('min-width', $('#'+table_header_id+' tr').eq(0).find('th').eq(index).css('width'));
});
// match bootstrap table style
$("#"+sticky_header_container_id).removeClass('hidden').addClass("fix-sticky fixed-table-container") ;
$("#"+sticky_header_container_id).removeClass(hidden_class).addClass("fix-sticky fixed-table-container") ;
// stick it in position
$("#"+sticky_header_container_id).css('top', header_height + 'px');
// create scrollable container for header
@@ -86,7 +100,7 @@
match_position_x(event);
} else {
// hide sticky
$("#"+sticky_header_container_id).removeClass("fix-sticky").addClass('hidden');
$("#"+sticky_header_container_id).removeClass("fix-sticky").addClass(hidden_class);
}
}
+5 -5
View File
@@ -2,13 +2,13 @@
"/js/build/vue.js": "/js/build/vue.js?id=25049a0c0eb736e1c883",
"/css/AdminLTE.css": "/css/AdminLTE.css?id=b8be19a285eaf44eec37",
"/css/app.css": "/css/app.css?id=407edb63cc6b6dc62405",
"/css/overrides.css": "/css/overrides.css?id=1bdafb06a8609780f546",
"/css/overrides.css": "/css/overrides.css?id=c289c71c08df753ebc45",
"/js/build/vue.js.map": "/js/build/vue.js.map?id=6b79d08f1decca72957c",
"/css/AdminLTE.css.map": "/css/AdminLTE.css.map?id=99f5a5a03c4155cf69f6",
"/css/app.css.map": "/css/app.css.map?id=bdbe05e6ecd70ccfac72",
"/css/overrides.css.map": "/css/overrides.css.map?id=898c91d4a425b01b589b",
"/css/dist/all.css": "/css/dist/all.css?id=3a8aa974e7b09b52b18c",
"/js/dist/all.js": "/js/dist/all.js?id=722d1692756a30dc1ece",
"/css/build/all.css": "/css/build/all.css?id=3a8aa974e7b09b52b18c",
"/js/build/all.js": "/js/build/all.js?id=722d1692756a30dc1ece"
"/css/dist/all.css": "/css/dist/all.css?id=5fdad90c2d445e4a1a2c",
"/js/dist/all.js": "/js/dist/all.js?id=6e959b16034ab00e3007",
"/css/build/all.css": "/css/build/all.css?id=5fdad90c2d445e4a1a2c",
"/js/build/all.js": "/js/build/all.js?id=6e959b16034ab00e3007"
}
+82 -1
View File
@@ -288,7 +288,88 @@ $(document).ready(function () {
}
});
});
// ------------------------------------------------
// Deep linking for Bootstrap tabs
// ------------------------------------------------
var taburl = document.location.toString();
// Allow full page URL to activate a tab's ID
// ------------------------------------------------
// This allows linking to a tab on page load via the address bar.
// So a URL such as, http://snipe-it.local/hardware/2/#my_tab will
// cause the tab on that page with an ID of “my_tab” to be active.
if (taburl.match('#') ) {
$('.nav-tabs a[href="#'+taburl.split('#')[1]+'"]').tab('show');
}
// Allow internal page links to activate a tab's ID.
// ------------------------------------------------
// This allows you to link to a tab from anywhere on the page
// including from within another tab. Also note that internal page
// links either inside or out of the tabs need to include data-toggle="tab"
// Ex: <a href="#my_tab" data-toggle="tab">Click me</a>
$('a[data-toggle="tab"]').click(function (e) {
var href = $(this).attr("href");
history.pushState(null, null, href);
e.preventDefault();
$('a[href="' + $(this).attr('href') + '"]').tab('show');
});
// ------------------------------------------------
// End Deep Linking for Bootstrap tabs
// ------------------------------------------------
// Image preview
function readURL(input) {
if (input.files && input.files[0]) {
var reader = new FileReader();
reader.onload = function(e) {
$('#imagePreview').attr('src', e.target.result);
}
reader.readAsDataURL(input.files[0]);
}
}
function formatBytes(bytes) {
if(bytes < 1024) return bytes + " Bytes";
else if(bytes < 1048576) return(bytes / 1024).toFixed(3) + " KB";
else if(bytes < 1073741824) return(bytes / 1048576).toFixed(3) + " MB";
else return(bytes / 1073741824).toFixed(3) + " GB";
};
// File size validation
$('#uploadFile').bind('change', function() {
$('#upload-file-status').removeClass('text-success').removeClass('text-danger');
$('.goodfile').remove();
$('.badfile').remove();
$('.badfile').remove();
$('.previewSize').hide();
var max_size = $('#uploadFile').data('maxsize');
var actual_size = this.files[0].size;
if (actual_size > max_size) {
$('#upload-file-status').addClass('text-danger').removeClass('help-block').prepend('<i class="badfile fa fa-times"></i> ').append('<span class="previewSize">This file is ' + formatBytes(actual_size) + '.</span>');
} else {
$('#upload-file-status').addClass('text-success').removeClass('help-block').prepend('<i class="goodfile fa fa-check"></i> ');
readURL(this);
$('#imagePreview').fadeIn();
}
$('#upload-file-info').html(this.files[0].name);
});
});
+10
View File
@@ -326,3 +326,13 @@ img.navbar-brand-img, .navbar-brand>img {
[hidden] {
display: none !important;
}
#toolbar {
margin-top: 10px;
}
#uploadPreview {
border-color: grey;
border-width: 1px;
border-style: solid
}
@@ -3,8 +3,8 @@
return array(
'about_accessories_title' => 'Über Zubehör',
'about_accessories_text' => 'Ein Zubehör ist alles was Sie an einen Benutzer ausgeben können, jedoch keine Seriennummer besitzt (oder es keinen Sinn macht diese zu verwalten). Zum Beispiel: Mäuse und Tastaturen.',
'accessory_category' => 'Zubehör Kategorie',
'accessory_name' => 'Zubehör Name',
'accessory_category' => 'Zubehörkategorie',
'accessory_name' => 'Zubehör-Name',
'checkout' => 'Zubehör herausgeben',
'checkin' => 'Zubehör zurücknehmen',
'create' => 'Zubehör anlegen',
@@ -4,5 +4,5 @@
'title' => 'Wartungen',
'asset_name' => 'Asset Name',
'is_warranty' => 'Garantie',
'dl_csv' => 'Als CSV herunterladen'
'dl_csv' => 'CSV Herunterladen'
];
@@ -10,7 +10,7 @@ return array(
'create' => 'Komponente erstellen',
'edit' => 'Komponente bearbeiten',
'date' => 'Kaufdatum',
'order' => 'Bestellnummer',
'order' => 'Artikelnummer',
'remaining' => 'Verbleibend',
'total' => 'Gesamt',
'update' => 'Komponente aktualisieren',
+2 -2
View File
@@ -29,13 +29,13 @@ return array(
'months' => 'Monate',
'name' => 'Asset Name',
'notes' => 'Notizen',
'order' => 'Bestellnummer',
'order' => 'Artikelnummer',
'qr' => 'QR-Code',
'requestable' => 'Benutzer dürfen dieses Asset anfordern',
'select_statustype' => 'Status Typ auswählen',
'serial' => 'Seriennummer',
'status' => 'Status',
'tag' => 'Asset Tag',
'tag' => 'Asset ID',
'update' => 'Asset Update',
'warranty' => 'Garantie',
'years' => 'Jahre',
+1 -1
View File
@@ -12,7 +12,7 @@ return array(
'dl_csv' => 'CSV Herunterladen',
'eol' => 'EOL',
'id' => 'ID',
'location' => 'Ort',
'location' => 'Standort',
'purchase_cost' => 'Kosten',
'purchase_date' => 'Kaufdatum',
'serial' => 'Seriennummer',
+3 -3
View File
@@ -10,11 +10,11 @@ return array(
'maintained' => 'Verwaltet',
'name' => 'Software Name',
'no_depreciation' => 'Nicht abschreiben',
'purchase_order' => 'Bestellnummer',
'purchase_order' => 'Auftragsnummer',
'reassignable' => 'Zuweisbar',
'remaining_seats' => 'Verbleibende Aktivierungen',
'seats' => 'Anzahl Aktivierungen',
'termination_date' => 'Ablaufdatum',
'seats' => 'Lizenzen',
'termination_date' => 'Kündigungsdatum',
'to_email' => 'E-Mail des Lizenzerwerbers',
'to_name' => 'Name des Lizenzerwerbers',
'update' => 'Lizenz aktualisieren',
+2 -2
View File
@@ -6,9 +6,9 @@ return array(
'checkin' => 'Lizenzaktivierung zurücknehmen',
'checkout_history' => 'Zuweisungsverlauf',
'checkout' => 'Lizenzaktivierung herausgeben',
'edit' => 'Edit User',
'edit' => 'Lizenz bearbeiten',
'filetype_info' => 'Erlaubte Dateitypen sind png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, und rar.',
'clone' => 'Clone User',
'clone' => 'Lizenz duplizieren',
'history_for' => 'Verlauf für ',
'in_out' => 'Zurücknehmen/Herausgeben',
'info' => 'Lizenzinfo',
@@ -1,7 +1,7 @@
<?php
return array(
'about_manufacturers_title' => 'Hersteller',
'about_manufacturers_title' => 'Über Hersteller',
'about_manufacturers_text' => 'Hersteller sind Firmen, die ihre Assets herstellen. Hier können Sie wichtige Supportkontakte eintragen, welche in den Assetdetails angezeigt werden.',
'asset_manufacturers' => 'Asset Hersteller',
'create' => 'Hersteller anlegen',
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
return array(
'about_models_title' => 'Asset-Modelle',
'about_models_title' => 'Über Asset-Modelle',
'about_models_text' => 'Asset-Modelle sind eine Möglichkeit, identische Assets zu gruppieren. "MBP 2013", "IPhone 6 s" usw.',
'deleted' => 'Dieses Modell wurde gelöscht.<a href="/hardware/models/:model_id/restore">klicken Sie hier um es Wiederzuherstellen</a>.',
'bulk_delete' => 'Massenlöschen von Asset-Modellen',
+2 -2
View File
@@ -9,7 +9,7 @@ return array(
'create' => array(
'error' => 'Modell wurde nicht erstellt. Bitte versuch es noch einmal.',
'success' => 'Modell wurde erfolgreich erstellt.',
'duplicate_set' => 'Ein Asset Modell mit diesem Namen, Hersteller und Modell Nummer existiert bereits.',
'duplicate_set' => 'Ein Asset-Modell mit diesem Namen, Hersteller und Modell Nummer existiert bereits.',
),
'update' => array(
@@ -18,7 +18,7 @@ return array(
),
'delete' => array(
'confirm' => 'Sind sie sicher, dass sie das Asset löschen wollen?',
'confirm' => 'Sind Sie sicher, dass Sie dieses Asset-Modell löschen möchten?',
'error' => 'Beim Löschen des Modell ist ein Fehler aufgetreten. Bitte probieren Sie es noch einmal.',
'success' => 'Das Modell wurde erfolgreich gelöscht.'
),
+1 -1
View File
@@ -2,7 +2,7 @@
return array(
'create' => 'Asset Model erstellen',
'create' => 'Asset-Modell erstellen',
'created_at' => 'Erstellt am',
'eol' => 'EOL',
'modelnumber' => 'Modellnummer',
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
return array(
'error' => 'Sie müssen eine Option auswählen.'
'error' => 'Sie müssen mindestens eine Option auswählen.'
);
+4 -4
View File
@@ -25,8 +25,8 @@ return array(
'custom_css_help' => 'Füge eigenes CSS hinzu. Benutze keine &lt;style&gt;&lt;/style&gt; tags.',
'custom_forgot_pass_url' => 'Benutzerdefinierte Passwort Reset URL',
'custom_forgot_pass_url_help' => 'Dadurch wird die integrierte URL für vergessene Passwörter auf dem Anmeldebildschirm ersetzt. Dies ist nützlich, um Benutzer zur internen oder gehosteten Funktion zum Zurücksetzen von LDAP-Passwörtern zu leiten. Es wird effektiv die Funktionalität des lokalen, vergessenen Passworts deaktiviert.',
'dashboard_message' => 'Dashboard Message',
'dashboard_message_help' => 'This text will appear on the dashboard for anyone with permission to view the dashboard.',
'dashboard_message' => 'Dashboard-Nachricht',
'dashboard_message_help' => 'Dieser Text wird für jeden sichtbar sein, der Berechtigungen hat das Dashboard zu sehen.',
'default_currency' => 'Standardwährung',
'default_eula_text' => 'Standard EULA',
'default_language' => 'Standardsprache',
@@ -94,8 +94,8 @@ return array(
'setting' => 'Einstellung',
'settings' => 'Einstellungen',
'show_alerts_in_menu' => 'Warnungen im oberen Menü anzeigen',
'show_archived_in_list' => 'Archived Assets',
'show_archived_in_list_text' => 'Show archived assets in the "all assets" listing',
'show_archived_in_list' => 'Archivierte Assets',
'show_archived_in_list_text' => 'Zeige archivierte Assets in der "Alle auflisten" Liste',
'site_name' => 'Seitenname',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Kanal',
+1 -1
View File
@@ -4,7 +4,7 @@ return array(
'update' => array(
'error' => 'Während dem Aktualisieren ist ein Fehler aufgetreten.',
'error' => 'Während der Aktualisierung ist ein Fehler aufgetreten. ',
'success' => 'Die Einstellungen wurden erfolgreich aktualisiert.'
),
'backup' => array(
+1 -1
View File
@@ -17,7 +17,7 @@ return array(
'last_login' => 'Letzte Anmeldung',
'ldap_config_text' => 'Die LDAP Konfigurations Einstellungen finden Sie hier Admin -> Einstellungen. Der (optional) wählbare Standort wird für alle importierten Benutzer gesetzt.',
'software_user' => 'Software herausgegeben an :name',
'view_user' => 'Benutze :name ansehen',
'view_user' => 'Benutzer :name ansehen',
'usercsv' => 'CSV Datei',
'two_factor_admin_optin_help' => 'Ihre aktuellen Administrator-Einstellungen erlauben die selektive Durchführung der zwei-Faktor-Authentifizierung. ',
'two_factor_enrolled' => '2FA Gerät eingeschrieben ',
+1 -1
View File
@@ -30,7 +30,7 @@ return array(
'title' => 'Titel',
'to_restore_them' => 'zum Wiederherstellen.',
'updateuser' => 'Benutzer aktualisieren',
'username' => 'Benutzernamen',
'username' => 'Benutzername',
'user_deleted_text' => 'Dieser Benutzer wurde als gelöscht markiert.',
'username_note' => '(Dies wird für den Bind an das Active Directory benutzt, nicht für die Anmeldung.)',
'cloneuser' => 'Benutzer kopieren',
+9 -9
View File
@@ -56,11 +56,11 @@
'updated_at' => 'Aktualisiert am',
'currency' => '€', // this is deprecated
'current' => 'Aktuell',
'custom_report' => 'Spezieller Asset Report',
'custom_report' => 'Benutzerdefinierter Asset-Bericht',
'dashboard' => 'Dashboard',
'days' => 'Tage',
'days_to_next_audit' => 'Tage bis zum nächsten Audit',
'date' => 'Kaufdatum',
'date' => 'Datum',
'debug_warning' => 'Warnung!',
'debug_warning_text' => 'Diese Anwendung läuft im Produktionsmodus mit debugging aktiviert. Dies kann sensible Daten verfügbar machen, wenn Ihre Anwendung öffentlich zugänglich ist. Deaktivieren Sie den Debug-Modus, indem Sie den <code>APP_DEBUG</code>-Wert in der <code>.env</code> Datei auf <code>false</code> setzen.',
'delete' => 'Löschen',
@@ -69,7 +69,7 @@
'departments' => 'Abteilungen',
'department' => 'Abteilung',
'deployed' => 'Herausgegeben',
'depreciation_report' => 'Abschreibunsgreport',
'depreciation_report' => 'Abschreibungsbericht',
'download' => 'Download',
'depreciation' => 'Abschreibung',
'editprofile' => 'Profil bearbeiten',
@@ -85,7 +85,7 @@
'file_name' => 'Datei',
'file_uploads' => 'Datei-Uploads',
'generate' => 'Generieren',
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'github_markdown' => 'Dieses Feld akzeptiert <a href="https://help.github.com/articles/github-flavored-markdown/">Github Flavored markdown</a>.',
'groups' => 'Gruppen',
'gravatar_email' => 'Gravatar E-Mail Adresse',
'history' => 'Historie',
@@ -127,7 +127,7 @@
'months' => 'Monate',
'moreinfo' => 'Mehr Informationen',
'name' => 'Name',
'next' => 'Nächstes',
'next' => 'Nächste',
'next_audit_date' => 'Nächstes Auditdatum',
'last_audit' => 'Letztes Audit',
'new' => 'Neu!',
@@ -135,10 +135,10 @@
'no_results' => 'Keine Treffer.',
'no' => 'Nein',
'notes' => 'Notizen',
'order_number' => 'Bestellnummer',
'order_number' => 'Artikelnummer',
'page_menu' => 'zeige _MENU_ Einträge',
'pagination_info' => 'Zeige _START_ bis _END_ von _TOTAL_ Einträgen',
'pending' => 'Ausstehendes Asset',
'pending' => 'Ausstehende',
'people' => 'Personen',
'per_page' => 'Ergebnisse pro Seite',
'previous' => 'Vorherige',
@@ -172,7 +172,7 @@
'select_asset' => 'Asset auswählen',
'settings' => 'Einstellungen',
'sign_in' => 'Einloggen',
'signature' => 'Signatur',
'signature' => 'Unterschrift',
'some_features_disabled' => 'Einige Funktionen sind für den DEMO-Modus deaktiviert.',
'site_name' => 'Seitenname',
'state' => 'Bundesland',
@@ -194,7 +194,7 @@
'username_format' => 'Format der Benutzernamen',
'update' => 'Aktualisieren',
'uploaded' => 'Hochgeladen',
'user' => 'Nutzer',
'user' => 'Benutzer',
'accepted' => 'angenommen',
'declined' => 'abgelehnt',
'unaccepted_asset_report' => 'Nicht akzeptierte Assets',
+1 -1
View File
@@ -2,7 +2,7 @@
return array(
'about_groups_title' => 'About Groups',
'about_groups' => 'Groups are used to generalize user permissions.',
'about_groups' => 'Groups are used to generalise user permissions.',
'group_management' => 'Group Management',
'create' => 'Create New Group',
'update' => 'Edit Group',
@@ -1,7 +1,7 @@
<?php
return array(
'about_manufacturers_title' => 'About manufacturers',
'about_manufacturers_title' => 'Asset Manufacturers',
'about_manufacturers_text' => 'Manufacturers are the companies that create your assets. You can store important support contact information about them here, which will be displayed on your asset detail pages.',
'asset_manufacturers' => 'Asset Manufacturers',
'create' => 'Create Manufacturer',
@@ -2,20 +2,20 @@
return array(
'does_not_exist' => 'Department does not exist.',
'assoc_users' => 'This department is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this department and try again. ',
'does_not_exist' => 'Departemen tidak ada.',
'assoc_users' => 'Saat ini kategori ini terkait dengan setidaknya satu pengguna dan tidak dapat dihapus. Silahkan perbaharui model Anda untuk tidak lagi tereferensi dengan kategori ini dan coba lagi. ',
'create' => array(
'error' => 'Department was not created, please try again.',
'success' => 'Department created successfully.'
'error' => 'Komponen belum dibuat, silahkan coba lagi.',
'success' => 'Komponen berhasil dibuat.'
),
'update' => array(
'error' => 'Department was not updated, please try again',
'success' => 'Department updated successfully.'
'error' => 'Komponen belum diperbaharui, silahkan coba lagi',
'success' => 'Komponen berhasil dibuat.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this department?',
'error' => 'There was an issue deleting the department. Please try again.',
'success' => 'The department was deleted successfully.'
'confirm' => 'Anda yakin akan mengahpus komponen ini?',
'error' => 'Ada masalah untuk hapus komponen, silahkan coba kembali.',
'success' => 'Komponen berhasil dihapus.'
)
);
+144 -144
View File
@@ -1,159 +1,159 @@
<?php
return array(
'ad' => 'Active Directory',
'ad_domain' => 'Active Directory domain',
'ad_domain_help' => 'This is sometimes the same as your email domain, but not always.',
'is_ad' => 'This is an Active Directory server',
'alert_email' => 'Send alerts to',
'alerts_enabled' => 'Alerts Enabled',
'alert_interval' => 'Expiring Alerts Threshold (in days)',
'alert_inv_threshold' => 'Inventory Alert Threshold',
'asset_ids' => 'Asset IDs',
'audit_interval' => 'Audit Interval',
'audit_interval_help' => 'If you are required to regularly physically audit your assets, enter the interval in months.',
'audit_warning_days' => 'Audit Warning Threshold',
'audit_warning_days_help' => 'How many days in advance should we warn you when assets are due for auditing?',
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'backups' => 'Backups',
'barcode_settings' => 'Barcode Settings',
'confirm_purge' => 'Confirm Purge',
'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone.',
'custom_css' => 'Custom CSS',
'custom_css_help' => 'Enter any custom CSS overrides you would like to use. Do not include the &lt;style&gt;&lt;/style&gt; tags.',
'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',
'dashboard_message_help' => 'This text will appear on the dashboard for anyone with permission to view the dashboard.',
'default_currency' => 'Default Currency',
'default_eula_text' => 'Default EULA',
'default_language' => 'Default Language',
'default_eula_help_text' => 'You can also associate custom EULAs to specific asset categories.',
'display_asset_name' => 'Display Asset Name',
'display_checkout_date' => 'Display Checkout Date',
'ad' => 'Direktori Berkas',
'ad_domain' => 'Domain Direktori Aktif',
'ad_domain_help' => 'Terkadang ini sama dengan domain email anda, tapi tidak selalu.',
'is_ad' => 'Ini adalah server aktif direktori',
'alert_email' => 'Kirim peringatan kepada',
'alerts_enabled' => 'Peringatan Email Diaktifkan',
'alert_interval' => 'Ambang batas waktu kadaluwarsa (dalam beberapa hari)',
'alert_inv_threshold' => 'Ambang Batas Invertaris',
'asset_ids' => 'ID Aset',
'audit_interval' => 'Memeriksa perbedaan',
'audit_interval_help' => 'Jika anda diminta untuk melakukan audit aset secara fisik dengan teratur, maka masukkan selang waktu dalam beberapa bulan.',
'audit_warning_days' => 'Ambang Peringatan Audit',
'audit_warning_days_help' => 'Berapa hari sebelum kami harus memperingatkan aset yang akan dilelang?',
'auto_increment_assets' => 'Buat peningkatan ID otomatis',
'auto_increment_prefix' => 'Awalan (opsional)',
'auto_incrementing_help' => 'Aktifkan aset peningkatan ID terlebih dahulu untuk mengatur ini',
'backups' => 'Cadangkan',
'barcode_settings' => 'Pengaturan Kode batang',
'confirm_purge' => 'Konfirmasi Pembersihan',
'confirm_purge_help' => 'Masukkan tulisan "HAPUS" dalam kotak dibawah ini untuk membersihkan catatan yang telah dihapus. Tindakan ini tidak bisa dibatalkan.',
'custom_css' => 'Kustom CSS',
'custom_css_help' => 'Masukkan setiap penimpaan CSS ubah sesuai yang ingin anda gunakan jangan sertakan&lt;gaya&lt;/gaya&gt;tag.',
'custom_forgot_pass_url' => 'Atur Ulang Kata Sandi URL tempahan',
'custom_forgot_pass_url_help' => 'Ini menggantikan URL lupa sandi bawaan dilayar masuk, berguna untuk mengarahkan orang ke fungsi penyetelan ulang kata sandi bawaan internal atau yang dihost. Ini akan secara efektif menonaktifkan pengguna lupa fungsi kata sandi.',
'dashboard_message' => 'Pesan Beranda',
'dashboard_message_help' => 'Tulisan ini akan muncul di beranda bagi siapa saja yang memiliki izin untuk melihat beranda.',
'default_currency' => 'Mata Uang bawaan',
'default_eula_text' => 'EULA bawaan',
'default_language' => 'Bahasa Dasar',
'default_eula_help_text' => 'Anda juga dapat mengaitkan EULA kastom dengan kategori aset tertentu.',
'display_asset_name' => 'Tampilan nama aset',
'display_checkout_date' => 'Tampilan tanggal keluar',
'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display Square Codes',
'display_alt_barcode' => 'Display 1D barcode',
'barcode_type' => '2D Barcode Type',
'alt_barcode_type' => '1D barcode type',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'general_settings' => 'General Settings',
'generate_backup' => 'Generate Backup',
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'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_server' => 'LDAP Server',
'barcode_type' => 'Tipe Kode Batang 2D',
'alt_barcode_type' => 'Tipe Kode Batang 1D',
'eula_settings' => 'Pengaturan EULA',
'eula_markdown' => 'EULA ini memungkinkan <a href="https://help.github.com/articles/github-flavored-markdown/">Github merasakan penurunan harga</a>.',
'general_settings' => 'Pengaturan Umum',
'generate_backup' => 'Membuat Cadangan',
'header_color' => 'Warna Header',
'info' => 'Penggaturan ini memungkinkan anda menyesuaikan aspek-aspek tertentu dari instalasi anda.',
'laravel' => 'Versi Laravel',
'ldap_enabled' => 'Aktifkan LDAP',
'ldap_integration' => 'Integrasi LDAP',
'ldap_settings' => 'Pengaturan LDAP',
'ldap_login_test_help' => 'Masukkan nama pengguna dan kata sandi LDAP yang sah dari DN dasar yang anda tentukan di atas untuk menguji apakah proses masuk LDAP anda dikonfigurasi dengan benar. ANDA HARUS MENYIMPAN PENGATURAN LDAP YANG ANDA PERBARUI PERTAMA.',
'ldap_login_sync_help' => 'Ini hanya tes yang bisa dilacak LDAP dengan benar. Jika pengesahan LDAP anda tidak benar, pengguna mungkin masih belum dapat masuk. ANDA HARUS MENYIMPAN PENGATURAN LDAP YANG ANDA PERBARUI PERTAMA.',
'ldap_server' => 'Server LDAP',
'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)',
'ldap_server_cert' => 'LDAP SSL certificate validation',
'ldap_server_cert_ignore' => 'Allow invalid SSL Certificate',
'ldap_server_cert_help' => 'Select this checkbox if you are using a self signed SSL cert and would like to accept an invalid SSL certificate.',
'ldap_tls' => 'Use TLS',
'ldap_tls_help' => 'This should be checked only if you are running STARTTLS on your LDAP server. ',
'ldap_server_cert_ignore' => 'Izinkan Sertifikat SSL yang tidak sah',
'ldap_server_cert_help' => 'Pilih kotak centang ini jika anda menggunakan sertifikat SSL yang masuk sendiri dan ingin menerima sertifikat SSL yang tidak sah.',
'ldap_tls' => 'Gunakan TLS',
'ldap_tls_help' => 'Ini harus diperiksa hanya jika anda menjalankan STARTTLS di server LDAP anda. ',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'login_note' => 'Login Note',
'login_note_help' => 'Optionally include a few sentences on your login screen, for example to assist people who have found a lost or stolen device. This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>',
'ldap_basedn' => 'Mengikat Dasar DN',
'ldap_filter' => 'Saring LDAP',
'ldap_pw_sync' => 'Sinkronisasi kata sandi LDAP',
'ldap_pw_sync_help' => 'Hapus centang pada kotak ini jika anda tidak ingin menyimpan kata sandi LDAP yang disinkronkan dengan kata sandi lokal. Menonaktifkan ini berarti pengguna anda tidak dapat masuk jika server LDAP anda tidak dapat dijangkau karena alasan tertentu.',
'ldap_username_field' => 'Bidang Nama Pengguna',
'ldap_lname_field' => 'Nama Terakhir',
'ldap_fname_field' => 'Nama Depan LDAP',
'ldap_auth_filter_query' => 'Permintaan otentikasi LDAP',
'ldap_version' => 'Versi LDAP',
'ldap_active_flag' => 'Bendera Aktif LDAP',
'ldap_emp_num' => 'Nomor Karyawan LDAP',
'ldap_email' => 'Email LDAP',
'load_remote_text' => 'Skrip Jarak Jauh',
'load_remote_help_text' => 'Instalasi Snipe-IT ini bisa membuat skrip dari dunia luar.',
'login_note' => 'Catatan Masuk',
'login_note_help' => 'Opsional memasukkan beberapa kalimat di layar masuk anda, misalnya membantu orang-orang yang telah menemukan perangkat yang hilang atau dicuri. Bidang ini menerima <a href="https://help.github.com/articles/github-flavored-markdown/">Rasa penurunan Github</a>',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
'php_gd_info' => 'You must install php-gd to display QR codes, see install instructions.',
'php_gd_warning' => 'PHP Image Processing and GD plugin is NOT installed.',
'pwd_secure_complexity' => 'Password Complexity',
'pwd_secure_complexity_help' => 'Select whichever password complexity rules you wish to enforce.',
'pwd_secure_min' => 'Password minimum characters',
'pwd_secure_min_help' => 'Minimum permitted value is 5',
'pwd_secure_uncommon' => 'Prevent common passwords',
'pwd_secure_uncommon_help' => 'This will disallow users from using common passwords from the top 10,000 passwords reported in breaches.',
'qr_help' => 'Enable QR Codes first to set this',
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'show_alerts_in_menu' => 'Show alerts in top menu',
'show_archived_in_list' => 'Archived Assets',
'show_archived_in_list_text' => 'Show archived assets in the "all assets" listing',
'site_name' => 'Site Name',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
'slack_integration' => 'Slack Settings',
'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first <a href=":slack_link" target="_new">create an incoming webhook</a> on your Slack account.',
'snipe_version' => 'Snipe-IT version',
'system' => 'System Information',
'update' => 'Update Settings',
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'labels_per_page' => 'Labels per page',
'label_dimensions' => 'Label dimensions (inches)',
'next_auto_tag_base' => 'Next auto-increment',
'page_padding' => 'Page margins (inches)',
'purge' => 'Purge Deleted Records',
'labels_display_bgutter' => 'Label bottom gutter',
'labels_display_sgutter' => 'Label side gutter',
'labels_fontsize' => 'Label font size',
'labels_pagewidth' => 'Label sheet width',
'labels_pageheight' => 'Label sheet height',
'label_gutters' => 'Label spacing (inches)',
'page_dimensions' => 'Page dimensions (inches)',
'label_fields' => 'Label visible fields',
'inches' => 'inches',
'full_multiple_companies_support_help_text' => 'Membatasi pengguna (termasuk admin) yang ditugaskan ke perusahaan untuk aset perusahaan mereka.',
'full_multiple_companies_support_text' => 'Dukungan Banyak Perusahaan',
'optional' => 'pilihan',
'per_page' => 'Hasil Per Halaman',
'php' => 'Versi PHP',
'php_gd_info' => 'Anda harus menginstall php-gd untuk menampilkan kode QR, lihat petunjuk pemasangan.',
'php_gd_warning' => 'Pengolahan gambar PHP dan plugin GD TIDAK terpasang.',
'pwd_secure_complexity' => 'Kompleksitas Kata Sandi',
'pwd_secure_complexity_help' => 'Pilih aturan kerumitan kompleksitas yang ingin anda tegakkan.',
'pwd_secure_min' => 'Karakter Minimal Kata Sandi',
'pwd_secure_min_help' => 'Nilai Paling sedikit yang diizinkan adalah 5',
'pwd_secure_uncommon' => 'Mencegah kata Sandi Umum',
'pwd_secure_uncommon_help' => 'Ini akan melarang pengguna menggunakan kata kunci umum dari 10.000 sandi teratas yang dilaporkan mengalami pelanggaran.',
'qr_help' => 'Aktifkan kode QR terlebih dahulu untuk mengatur ini',
'qr_text' => 'Tulis Kode QR',
'setting' => 'Diatur',
'settings' => 'Pengaturan',
'show_alerts_in_menu' => 'Tampilkan peringatan di menu atas',
'show_archived_in_list' => 'Aset yang di Arsipkan',
'show_archived_in_list_text' => 'Tampilkan aset yang di arsipkan dalam daftar "semua aset"',
'site_name' => 'Nama Situs',
'slack_botname' => 'Nama Bot Slack',
'slack_channel' => 'Saluran Slack',
'slack_endpoint' => 'Titik Akhir Slack',
'slack_integration' => 'Pengaturan Slack',
'slack_integration_help' => 'Integrasi Slack bersifat opsional, namun titik akhir dan saluran diperlukan jika anda ingin menggunakannya. Untuk mengkonfigurasi integrasi Slack, anda harus terlebih dahulu<a href=":slack_link" target="_new">buat webhook masuk</a> di akun slack anda.',
'snipe_version' => 'Versi Snipe-IT',
'system' => 'Informasi Sistem',
'update' => 'Perbarui Setelan',
'value' => 'Jumlah',
'brand' => 'Bermerek',
'about_settings_title' => 'Tentang Pengaturan',
'about_settings_text' => 'Pengaturan ini memungkinkan anda menyesuaikan aspek-aspek tertentu dari instalasi anda.',
'labels_per_page' => 'Label per halaman',
'label_dimensions' => 'Dimensi label (inci)',
'next_auto_tag_base' => 'Berikut auto-kenaikan',
'page_padding' => 'Margin halaman (inci)',
'purge' => 'Bersihkan Arsip yang Dihapus',
'labels_display_bgutter' => 'Beri label saluran bawah',
'labels_display_sgutter' => 'Beri label sisi saluran',
'labels_fontsize' => 'Beri label ukuran huruf',
'labels_pagewidth' => 'Lebar lembar label',
'labels_pageheight' => 'Tinggi lembar label',
'label_gutters' => 'Jarak label (inci)',
'page_dimensions' => 'Dimensi label (inci)',
'label_fields' => 'Bidang label yang terlihat',
'inches' => 'inci',
'width_w' => 'w',
'height_h' => 'h',
'show_url_in_emails' => 'Link to Snipe-IT in Emails',
'show_url_in_emails_help_text' => 'Uncheck this box if you do not wish to link back to your Snipe-IT installation in your email footers. Useful if most of your users never login. ',
'show_url_in_emails' => 'Tautan ke Snipe-IT di Email',
'show_url_in_emails_help_text' => 'Hapus centang pada kotak ini jika anda tidak ingin menautkan kembali ke instalasi Snipe-IT di email anda. Berguna jika sebagian besar pengguna anda tidak pernah masuk. ',
'text_pt' => 'pt',
'thumbnail_max_h' => 'Max thumbnail height',
'thumbnail_max_h_help' => 'Maximum height in pixels that thumbnails may display in the listing view. Min 25, max 500.',
'two_factor' => 'Two Factor Authentication',
'two_factor_secret' => 'Two-Factor Code',
'two_factor_enrollment' => 'Two-Factor Enrollment',
'two_factor_enabled_text' => 'Enable Two Factor',
'two_factor_reset' => 'Reset Two-Factor Secret',
'two_factor_reset_help' => 'This will force the user to enroll their device with Google Authenticator again. This can be useful if their currently enrolled device is lost or stolen. ',
'two_factor_reset_success' => 'Two factor device successfully reset',
'two_factor_reset_error' => 'Two factor device reset failed',
'two_factor_enabled_warning' => 'Enabling two-factor if it is not currently enabled will immediately force you to authenticate with a Google Auth enrolled device. You will have the ability to enroll your device if one is not currently enrolled.',
'two_factor_enabled_help' => 'This will turn on two-factor authentication using Google Authenticator.',
'two_factor_optional' => 'Selective (Users can enable or disable if permitted)',
'two_factor_required' => 'Required for all users',
'two_factor_disabled' => 'Disabled',
'two_factor_enter_code' => 'Enter Two-Factor Code',
'two_factor_config_complete' => 'Submit Code',
'two_factor_enabled_edit_not_allowed' => 'Your administrator does not permit you to edit this setting.',
'two_factor_enrollment_text' => "Two factor authentication is required, however your device has not been enrolled yet. Open your Google Authenticator app and scan the QR code below to enroll your device. Once you've enrolled your device, enter the code below",
'require_accept_signature' => 'Require Signature',
'require_accept_signature_help_text' => 'Enabling this feature will require users to physically sign off on accepting an asset.',
'left' => 'left',
'right' => 'right',
'top' => 'top',
'bottom' => 'bottom',
'vertical' => 'vertical',
'horizontal' => 'horizontal',
'zerofill_count' => 'Length of asset tags, including zerofill',
'thumbnail_max_h' => 'Tinggi maks gambar saluran',
'thumbnail_max_h_help' => 'Tinggi maksimum piksel yang dapat ditampilkan gambar saluran dalam tampilan daftar. Min 25, maks 500.',
'two_factor' => 'Dua Faktor Otentikasi',
'two_factor_secret' => 'Kode Dua Faktor',
'two_factor_enrollment' => 'Pendaftaran Dua Faktor',
'two_factor_enabled_text' => 'Aktifkan Dua Faktor',
'two_factor_reset' => 'Atur Ulang Dua Faktor Rahasia',
'two_factor_reset_help' => 'Ini akan memaksa pengguna untuk mendaftarkan perangkat mereka dengan Google Authenticator lagi. Ini bisa berguna jika perangkat mereka saat ini terdaftar hilang atau dicuri. ',
'two_factor_reset_success' => 'Dua perangkat faktor berhasil di-reset',
'two_factor_reset_error' => 'Dua faktor perangkat gagal direset',
'two_factor_enabled_warning' => 'Mengaktifkan dua faktor jika saat ini tidak diaktifkan dan akan segera memaksa anda untuk melakukan otentikasi dengan perangkat yang terdaftar di Google Auth. Anda juga akan memiliki kemampuan untuk mendaftarkan perangkat anda jika seseorang belum terdaftar.',
'two_factor_enabled_help' => 'Ini akan mengaktifkan autentikasi dua langkah menggunakan Google Authenticator.',
'two_factor_optional' => 'Selektif (pengguna dapat mengaktifkan atau menonaktifkan jika diizinkan)',
'two_factor_required' => 'Diperlukan untuk semua pengguna',
'two_factor_disabled' => 'Dinonaktifkan',
'two_factor_enter_code' => 'Masukkan Kode Dua Faktor',
'two_factor_config_complete' => 'Kirim Kode',
'two_factor_enabled_edit_not_allowed' => 'Administrator anda tidak mengizinkan anda untuk mengedit pengaturan ini.',
'two_factor_enrollment_text' => "Diperlukan dua faktor otentikasi, namun perangkat anda belum terdaftar. Buka aplikasi Google Authenticator anda dan pindai kode QR dibawah ini untuk mendaftarkan perangkat anda. Setelah perangkat anda terdaftar, masukkan kode dibawah ini",
'require_accept_signature' => 'Membutuhkan Tanda Tangan',
'require_accept_signature_help_text' => 'Mengaktifkan fitur ini akan mengharuskan pengguna secara fisik menandatangani untuk menerima aset.',
'left' => 'kiri',
'right' => 'kanan',
'top' => 'atas',
'bottom' => 'bawah',
'vertical' => 'tegak lurus',
'horizontal' => 'mendatar',
'zerofill_count' => 'Panjang tag aset, termasuk isian kosong',
);
@@ -4,19 +4,19 @@ return array(
'update' => array(
'error' => 'An error has occurred while updating. ',
'success' => 'Settings updated successfully.'
'error' => 'Terjadi kesalahan saat memperbarui. ',
'success' => 'Pengaturan berhasil diperbarui.'
),
'backup' => array(
'delete_confirm' => 'Are you sure you would like to delete this backup file? This action cannot be undone. ',
'file_deleted' => 'The backup file was successfully deleted. ',
'generated' => 'A new backup file was successfully created.',
'file_not_found' => 'That backup file could not be found on the server.',
'delete_confirm' => 'Apakah anda yakin ingin menghapus berkas cadangan ini? Tindakan ini tidak dibatalkan. ',
'file_deleted' => 'Berkas cadangan berhasil dihapus. ',
'generated' => 'Berkas cadangan baru berhasil dibuat.',
'file_not_found' => 'Berkas cadangan itu tidak dapat ditemukan di peladen.',
),
'purge' => array(
'error' => 'An error has occurred while purging. ',
'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.',
'success' => 'Deleted records successfully purged.'
'error' => 'Terjadi kesalahan saat membersihkan. ',
'validation_failed' => 'Konfirmasi pembersihan Anda salah Ketikkan kata "HAPUS" di kotak konfirmasi.',
'success' => 'Catatan yang dihapus berhasil dibersihkan.'
),
);
@@ -2,31 +2,31 @@
return array(
'does_not_exist' => 'Status Label does not exist.',
'assoc_assets' => 'This Status Label is currently associated with at least one Asset and cannot be deleted. Please update your assets to no longer reference this status and try again. ',
'does_not_exist' => 'Label Status tidak tersedia.',
'assoc_assets' => 'Label status ini dikaitkan dengan setidaknya satu aset dan tidak dapat dihapus. Harap perbarui aset anda agar tidak merujuk pada status ini dan coba lagi. ',
'create' => array(
'error' => 'Status Label was not created, please try again.',
'success' => 'Status Label created successfully.'
'error' => 'Label status gagal dibuat, silahkan coba lagi.',
'success' => 'Label status berhasil dibuat.'
),
'update' => array(
'error' => 'Status Label was not updated, please try again',
'success' => 'Status Label updated successfully.'
'error' => 'Label status gagal diperbarui, silahkan coba lagi',
'success' => 'Label status berhasil diperbarui.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this Status Label?',
'error' => 'There was an issue deleting the Status Label. Please try again.',
'success' => 'The Status Label was deleted successfully.'
'confirm' => 'Apakah anda yakin ingin menghapus Label Status ini?',
'error' => 'Terjadi masalah saat menghapus Label Status. Silahkan coba lagi.',
'success' => 'Label Status berhasil dihapus.'
),
'help' => array(
'undeployable' => 'These assets cannot be assigned to anyone.',
'undeployable' => 'Aset ini tidak dapat diberikan kepada siapapun.',
'deployable' => 'These assets can be checked out. Once they are assigned, they will assume a meta status of <i class="fa fa-circle text-blue"></i> <strong>Deployed</strong>.',
'archived' => 'These assets cannot be checked out, and will only show up in the Archived view. This is useful for retaining information about assets for budgeting/historic purposes but keeping them out of the day-to-day asset list.',
'pending' => 'These assets can not yet be assigned to anyone, often used for items that are out for repair, but are expected to return to circulation.',
'pending' => 'Aset ini belum bisa diberikan kepada siapapun, sering digunakan untuk barang yang sedang diperbaiki, namun diperkirakan akan kembali beredar.',
),
);
+10 -10
View File
@@ -4,22 +4,22 @@
return array(
'assets_user' => 'Assets assigned to :name',
'bulk_update_warn' => 'You are about to edit the properties of :user_count users. Please note that you cannot change your own user attributes using this form, and must make edits to your own user individually.',
'bulk_update_help' => 'This form allows you to update multiple users at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged.',
'current_assets' => 'Assets currently checked out to this user',
'clone' => 'Clone User',
'bulk_update_warn' => 'Anda akan sunting properti dari :user_count pengguna. Silahkan catat anda tidak dapat menggubah atribut pengguna anda sendiri menggunakan formulir ini, dan harus membuat penyuntingan untuk pengguna anda sendiri secara pribadi.',
'bulk_update_help' => 'Formulir ini membolehkan anda perbarui beberapa pengguna sekaligus. Hanya mengisi bidang yang anda perlu ubah. Setiap bidang yang kosong akan tetap tidak berubah.',
'current_assets' => 'Aset saat ini diperiksa untuk pengguna ini',
'clone' => 'Gandakan pengguna',
'contact_user' => 'Contact :name',
'edit' => 'Edit User',
'edit' => 'Sunting Pengguna',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'history_user' => 'History for :name',
'info' => 'Info',
'restore_user' => 'Click here to restore them.',
'last_login' => 'Last Login',
'ldap_config_text' => 'LDAP configuration settings can be found Admin > Settings. The (optional) selected location will be set for all imported users.',
'restore_user' => 'Klik disini untuk mengembalikan mereka.',
'last_login' => 'Masuk terakhir',
'ldap_config_text' => 'Pengaturan konfigurasi LDAP dapat ditemukan di Admin > Pengaturan. Lokasi pilihan (opsional) akan di atur untuk semua pengguna yang diimpor.',
'software_user' => 'Software Checked out to :name',
'view_user' => 'View User :name',
'usercsv' => 'CSV file',
'two_factor_admin_optin_help' => 'Your current admin settings allow selective enforcement of two-factor authentication. ',
'usercsv' => 'Berkas CSV',
'two_factor_admin_optin_help' => 'Pengaturan admin anda saat ini membolehkan pelaksanaan otentifikasi dua-faktor secara selektif. ',
'two_factor_enrolled' => '2FA Device Enrolled ',
'two_factor_active' => '2FA Active ',
);
+40 -40
View File
@@ -2,58 +2,58 @@
return array(
'accepted' => 'You have successfully accepted this asset.',
'declined' => 'You have successfully declined this asset.',
'bulk_manager_warn' => 'Your users have been successfully updated, however your manager entry was not saved because the manager you selected was also in the user list to be edited, and users may not be their own manager. Please select your users again, excluding the manager.',
'user_exists' => 'User already exists!',
'user_not_found' => 'User [:id] does not exist.',
'user_login_required' => 'The login field is required',
'user_password_required' => 'The password is required.',
'insufficient_permissions' => 'Insufficient Permissions.',
'user_deleted_warning' => 'This user has been deleted. You will have to restore this user to edit them or assign them new assets.',
'ldap_not_configured' => 'LDAP integration has not been configured for this installation.',
'accepted' => 'Anda sudah berhasil menerima aset ini.',
'declined' => 'Anda sudah berhasil menolak aset ini.',
'bulk_manager_warn' => 'Pengguna anda sudah berhasil diperbarui, namun entri manajer anda tidak disimpan karena manajer yang anda pilih juga berada dalam daftar pengguna untuk disunting, dan pengguna mungkin bukan manajer mereka sendiri. Silahkan pilih pengguna anda lagi, tidak termasuk manajernya.',
'user_exists' => 'Pengguna sudah ada!',
'user_not_found' => 'Pengguna [:id] tidak ada.',
'user_login_required' => 'Bidang masuk diperlukan',
'user_password_required' => 'Kata sandi diperlukan.',
'insufficient_permissions' => 'Izin tidak cukup.',
'user_deleted_warning' => 'Pengguna ini sudah dihapus. Anda harus mengembalikan pengguna ini untuk menyuntingnya atau memberikannya aset baru.',
'ldap_not_configured' => 'Integrasi LDAP sudah tidak dikonfigurasikan untuk instalasi ini.',
'success' => array(
'create' => 'User was successfully created.',
'update' => 'User was successfully updated.',
'update_bulk' => 'Users were successfully updated!',
'delete' => 'User was successfully deleted.',
'ban' => 'User was successfully banned.',
'unban' => 'User was successfully unbanned.',
'suspend' => 'User was successfully suspended.',
'unsuspend' => 'User was successfully unsuspended.',
'restored' => 'User was successfully restored.',
'import' => 'Users imported successfully.',
'create' => 'Pengguna berhasil dibuat.',
'update' => 'Pengguna berhasil diperbarui.',
'update_bulk' => 'Pengguna berhasil diperbarui!',
'delete' => 'Pengguna berhasil dihapus.',
'ban' => 'Pengguna berhasil diblokir.',
'unban' => 'Pengguna berhasil tidak diblokir.',
'suspend' => 'Pengguna berhasil ditangguhkan.',
'unsuspend' => 'Pengguna berhasil tidak ditangguhkan.',
'restored' => 'Pengguna berhasil dikembalikan.',
'import' => 'Pengguna berhasil diimpor.',
),
'error' => array(
'create' => 'There was an issue creating the user. Please try again.',
'update' => 'There was an issue updating the user. Please try again.',
'delete' => 'There was an issue deleting the user. Please try again.',
'delete_has_assets' => 'This user has items assigned and could not be deleted.',
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
'import' => 'There was an issue importing users. Please try again.',
'asset_already_accepted' => 'This asset has already been accepted.',
'accept_or_decline' => 'You must either accept or decline this asset.',
'incorrect_user_accepted' => 'The asset you have attempted to accept was not checked out to you.',
'ldap_could_not_connect' => 'Could not connect to the LDAP server. Please check your LDAP server configuration in the LDAP config file. <br>Error from LDAP Server:',
'ldap_could_not_bind' => 'Could not bind to the LDAP server. Please check your LDAP server configuration in the LDAP config file. <br>Error from LDAP Server: ',
'ldap_could_not_search' => 'Could not search the LDAP server. Please check your LDAP server configuration in the LDAP config file. <br>Error from LDAP Server:',
'ldap_could_not_get_entries' => 'Could not get entries from the LDAP server. Please check your LDAP server configuration in the LDAP config file. <br>Error from LDAP Server:',
'password_ldap' => 'The password for this account is managed by LDAP/Active Directory. Please contact your IT department to change your password. ',
'create' => 'Terjadi masalah saat membuat pengguna. Silahkan coba lagi.',
'update' => 'Terjadi masalah saat memperbarui pengguna. Silahkan coba lagi.',
'delete' => 'Terjadi masalah saat menghapus pengguna. Silahkan coba lagi.',
'delete_has_assets' => 'Pengguna ini memiliki item yang ditetapkan dan tidak dapat dihapus.',
'unsuspend' => 'Terjadi masalah saat tidak menangguhkan pengguna. Silahkan coba lagi.',
'import' => 'Terjadi masalah saat mengimpor pengguna. Silahkan coba lagi.',
'asset_already_accepted' => 'Aset ini sudah diterima.',
'accept_or_decline' => 'Anda harus menerima atau menolak aset ini.',
'incorrect_user_accepted' => 'Aset yang anda sudah coba terima tidak diperiksa untuk Anda.',
'ldap_could_not_connect' => 'Tidak dapat terhubung ke peladen LDAP. Silahkan periksa konfigurasi peladen LDAP anda di berkas konfigurasi. <br>Kesalahan dari peladen LDAP:',
'ldap_could_not_bind' => 'Tidak dapat mengikat peladen LDAP. Silakan periksa konfigurasi peladen LDAP Anda di berkas konfigurasi LDAP. <br>Kesalahan dari peladen LDAP: ',
'ldap_could_not_search' => 'Tidak dapat mencari peladen LDAP. Silahkan periksa konfigurasi peladen LDAP anda di berkas konfigurasi LDAP.<br>Kesalahan dari peladen LDAP:',
'ldap_could_not_get_entries' => 'Tidak bisa mendapatkan entri dari peladen LDAP. Silakan periksa konfigurasi peladen LDAP Anda di berkas konfigurasi LDAP. <br> Kesalahan dari peladen LDAP:',
'password_ldap' => 'Kata sandi untuk akun ini dikelola oleh LDAP/Direktori Aktif. Silakan hubungi departemen IT Anda untuk mengubah kata sandi Anda. ',
),
'deletefile' => array(
'error' => 'File not deleted. Please try again.',
'success' => 'File successfully deleted.',
'error' => 'Berkas tidak terhapus. Silahkan coba lagi.',
'success' => 'Berkas berhasil dihapus.',
),
'upload' => array(
'error' => 'File(s) not uploaded. Please try again.',
'success' => 'File(s) successfully uploaded.',
'nofiles' => 'You did not select any files for upload',
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
'error' => 'Berkas(s) tidak diunggah. Silahkan coba lagi.',
'success' => 'Berkas(s) berhasil diunggah.',
'nofiles' => 'Anda tidak memilih berkas apa pun untuk diunggah',
'invalidfiles' => 'Satu atau lebih berkas anda terlalu besar atau jenis berkas tidak dibolehkan. Jenis berkas yang dibolehkan adalah png, gif, jpg, doc, docx, pdf, dan txt.',
),
);
+26 -26
View File
@@ -1,38 +1,38 @@
<?php
return array(
'activated' => 'Active',
'allow' => 'Allow',
'checkedout' => 'Assets',
'created_at' => 'Created',
'createuser' => 'Create User',
'deny' => 'Deny',
'email' => 'Email',
'activated' => 'Aktif',
'allow' => 'Izinkan',
'checkedout' => 'Aset',
'created_at' => 'Dibuat',
'createuser' => 'Membuat pengguna',
'deny' => 'Tolak',
'email' => 'Surel',
'employee_num' => 'Employee No.',
'first_name' => 'First Name',
'first_name' => 'Nama depan',
'groupnotes' => 'Select a group to assign to the user, remember that a user takes on the permissions of the group they are assigned.',
'id' => 'Id',
'inherit' => 'Inherit',
'job' => 'Job Title',
'last_login' => 'Last Login',
'last_name' => 'Last Name',
'location' => 'Location',
'lock_passwords' => 'Login details cannot be changed on this installation.',
'manager' => 'Manager',
'job' => 'Judul pekerjaan',
'last_login' => 'Masuk terakhir',
'last_name' => 'Nama Belakang',
'location' => 'Lokasi',
'lock_passwords' => 'Rincian masuk tidak dapat diubah pada instalasi ini.',
'manager' => 'Manajer',
'managed_locations' => 'Managed Locations',
'name' => 'Name',
'notes' => 'Notes',
'password_confirm' => 'Confirm Password',
'password' => 'Password',
'phone' => 'Phone',
'show_current' => 'Show Current Users',
'show_deleted' => 'Show Deleted Users',
'title' => 'Title',
'to_restore_them' => 'to restore them.',
'name' => 'Nama',
'notes' => 'Catatan',
'password_confirm' => 'Konfirmasi kata sandi',
'password' => 'Kata Sandi',
'phone' => 'Telepon',
'show_current' => 'Tampilkan pengguna saat ini',
'show_deleted' => 'Tampilkan pengguna yang dihapus',
'title' => 'Judul',
'to_restore_them' => 'untuk mengembalikan mereka.',
'updateuser' => 'Update User',
'username' => 'Username',
'user_deleted_text' => 'This user has been marked as deleted.',
'username' => 'Nama pengguna',
'user_deleted_text' => 'Pengguna ini sudah ditandai sebagai sudah terhapus.',
'username_note' => '(This is used for Active Directory binding only, not for login.)',
'cloneuser' => 'Clone User',
'viewusers' => 'View Users',
'viewusers' => 'Tampilkan pengguna',
);
+7 -7
View File
@@ -1,12 +1,12 @@
<?php
return [
'send_password_link' => 'Send Password Reset Link',
'email_reset_password' => 'Email Password Reset',
'reset_password' => 'Reset Password',
'login' => 'Login',
'login_prompt' => 'Please Login',
'forgot_password' => 'I forgot my password',
'remember_me' => 'Remember Me',
'send_password_link' => 'Kirim tautan atur ulang kata sandi',
'email_reset_password' => 'Atur ulang kata sandi surel',
'reset_password' => 'Atur ulang kata sandi',
'login' => 'Masuk',
'login_prompt' => 'Silahkan Masuk',
'forgot_password' => 'Saya lupa kata sandi saya',
'remember_me' => 'Ingatkan saya',
];
+16 -16
View File
@@ -2,36 +2,36 @@
return array(
'account_already_exists' => 'An account with the this email already exists.',
'account_not_found' => 'The username or password is incorrect.',
'account_not_activated' => 'This user account is not activated.',
'account_suspended' => 'This user account is suspended.',
'account_banned' => 'This user account is banned.',
'throttle' => 'Too many failed login attempts. Please try again in :seconds seconds.',
'account_already_exists' => 'Akun dengan surel ini sudah ada.',
'account_not_found' => 'Nama pengguna atau kata sandi salah.',
'account_not_activated' => 'Akun pengguna ini tidak aktif.',
'account_suspended' => 'Akun pengguna ini ditangguhkan.',
'account_banned' => 'Akun pengguna ini diblokir.',
'throttle' => 'Terlalu banyak percobaan masuk. Silahkan coba lagi sekitar :menit menit(s).',
'signin' => array(
'error' => 'There was a problem while trying to log you in, please try again.',
'success' => 'You have successfully logged in.',
'error' => 'Terjadi kesalahan saat mencoba masuk, silahkan coba lagi.',
'success' => 'Anda sudah berhasil masuk.',
),
'signup' => array(
'error' => 'There was a problem while trying to create your account, please try again.',
'success' => 'Account sucessfully created.',
'error' => 'Terjadi kesalahan saat mencoba buat akun anda, silahkan coba lagi.',
'success' => 'Akun berhasil dibuat.',
),
'forgot-password' => array(
'error' => 'There was a problem while trying to get a reset password code, please try again.',
'success' => 'Password recovery email successfully sent.',
'error' => 'Terjadi kesalahan saat mencoba mendapatkan kode kata sandi atur ulang, silahkan coba lagi.',
'success' => 'Surel pemulihan kata sandi sudah berhasil dikirim.',
),
'forgot-password-confirm' => array(
'error' => 'There was a problem while trying to reset your password, please try again.',
'success' => 'Your password has been successfully reset.',
'error' => 'Terjadi kesalahan saat mencoba atur ulang kata sandi anda, silahkan coba lagi.',
'success' => 'Kata sandi anda sudah berhasil di atur ulang.',
),
'activate' => array(
'error' => 'There was a problem while trying to activate your account, please try again.',
'success' => 'Your account has been successfully activated.',
'error' => 'Terjadi kesalahan saat mencoba mengaktifkan akun anda, silahkan coba lagi.',
'success' => 'Akun anda sudah berhasil diaktifkan.',
),
);
+11 -11
View File
@@ -1,15 +1,15 @@
<?php
return array(
'actions' => 'Actions',
'add' => 'Add New',
'cancel' => 'Cancel',
'checkin_and_delete' => 'Checkin & Delete User',
'delete' => 'Delete',
'edit' => 'Edit',
'restore' => 'Restore',
'request' => 'Request',
'submit' => 'Submit',
'upload' => 'Upload',
'select_file' => 'Select File...',
'actions' => 'Tindakan',
'add' => 'Tambah Baru',
'cancel' => 'Batal',
'checkin_and_delete' => 'Periksa dan hapus pengguna',
'delete' => 'Hapus',
'edit' => 'Sunting',
'restore' => 'Kembalikan',
'request' => 'Permintaan',
'submit' => 'Kirim',
'upload' => 'Unggah',
'select_file' => 'Pilih Berkas...',
);
+71 -71
View File
@@ -6,12 +6,12 @@
'accessory' => 'Accessory',
'accessory_report' => 'Accessory Report',
'action' => 'Action',
'activity_report' => 'Activity Report',
'address' => 'Address',
'activity_report' => 'Laporan Aktifitas',
'address' => 'Alamat',
'admin' => 'Admin',
'add_seats' => 'Added seats',
'all_assets' => 'All Assets',
'all' => 'All',
'all' => 'Semua',
'archived' => 'Archived',
'asset_models' => 'Asset Models',
'asset_model' => 'Model',
@@ -22,87 +22,87 @@
'audit' => 'Audit',
'audit_report' => 'Audit Log',
'assets' => 'Assets',
'avatar_delete' => 'Delete Avatar',
'avatar_upload' => 'Upload Avatar',
'back' => 'Back',
'bad_data' => 'Nothing found. Maybe bad data?',
'avatar_delete' => 'Hapus Avatar',
'avatar_upload' => 'Unggah Avatar',
'back' => 'Kembali',
'bad_data' => 'Tidak ada yang ditemukan. Mungkinkah data buruk?',
'bulkaudit' => 'Bulk Audit',
'bulkaudit_status' => 'Audit Status',
'bulk_checkout' => 'Bulk Checkout',
'cancel' => 'Cancel',
'categories' => 'Categories',
'category' => 'Category',
'cancel' => 'Batal',
'categories' => 'Kategori',
'category' => 'Kategori',
'change' => 'In/Out',
'changeemail' => 'Change Email Address',
'changepassword' => 'Change Password',
'changeemail' => 'Ubah alamat surel',
'changepassword' => 'Ubah kata sandi',
'checkin' => 'Checkin',
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'click_here' => 'Click here',
'city' => 'Kota',
'click_here' => 'Klik disini',
'clear_selection' => 'Clear Selection',
'companies' => 'Companies',
'company' => 'Company',
'companies' => 'Perusahaan',
'company' => 'Perusahaan',
'component' => 'Component',
'components' => 'Components',
'complete' => 'Complete',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
'create' => 'Create New',
'create' => 'Buat baru',
'created' => 'Item Created',
'created_asset' => 'created asset',
'created_at' => 'Created at',
'updated_at' => 'Updated at',
'created_at' => 'Dibuat di',
'updated_at' => 'Diperbarui pada',
'currency' => 'IDR', // this is deprecated
'current' => 'Current',
'custom_report' => 'Custom Asset Report',
'dashboard' => 'Dashboard',
'days' => 'days',
'days' => 'hari',
'days_to_next_audit' => 'Days to Next Audit',
'date' => 'Date',
'debug_warning' => 'Warning!',
'date' => 'Tanggal',
'debug_warning' => 'Peringatan!',
'debug_warning_text' => 'This application is running in production mode with debugging enabled. This can expose sensitive data if your application is accessible to the outside world. Disable debug mode by setting the <code>APP_DEBUG</code> value in your <code>.env</code> file to <code>false</code>.',
'delete' => 'Delete',
'deleted' => 'Deleted',
'delete_seats' => 'Deleted Seats',
'delete' => 'Hapus',
'deleted' => 'Dihapus',
'delete_seats' => 'Tempat dihapus',
'departments' => 'Departments',
'department' => 'Department',
'deployed' => 'Deployed',
'depreciation_report' => 'Depreciation Report',
'download' => 'Download',
'download' => 'Unduh',
'depreciation' => 'Depreciation',
'editprofile' => 'Edit Your Profile',
'editprofile' => 'Sunting profil anda',
'eol' => 'EOL',
'email_domain' => 'Email Domain',
'email_format' => 'Email Format',
'email_domain_help' => 'This is used to generate email addresses when importing',
'email_format' => 'Format Surel',
'email_domain_help' => 'Ini digunakan untuk menghasilkan alamat surel ketika saat mengimpor',
'filastname_format' => 'First Initial Last Name (jsmith@example.com)',
'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)',
'first' => 'First',
'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)',
'file_name' => 'File',
'firstname_lastname_format' => 'Nama Depan Nama Belakang (jane.smith@example.com)',
'first' => 'Pertama',
'first_name' => 'Nama Pertama',
'first_name_format' => 'Nama Depan (jane@example.com)',
'file_name' => 'Berkas',
'file_uploads' => 'File Uploads',
'generate' => 'Generate',
'github_markdown' => 'This field accepts <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'groups' => 'Groups',
'gravatar_email' => 'Gravatar Email Address',
'history' => 'History',
'history_for' => 'History for',
'history' => 'Riwayat',
'history_for' => 'Riwayat untuk',
'id' => 'ID',
'image' => 'Image',
'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image',
'image_filetypes_help' => 'Accepted filetypes are jpg, png, gif, and svg.',
'import' => 'Import',
'import-history' => 'Import History',
'image' => 'Gambar',
'image_delete' => 'Hapus Gambar',
'image_upload' => 'Unggah Gambar',
'image_filetypes_help' => 'Jenis berkas yang diterima adalah jpg, png, gif, dan svg.',
'import' => 'Impor',
'import-history' => 'Riwayat Impor',
'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'language' => 'Language',
'language' => 'Bahasa',
'last' => 'Last',
'last_login' => 'Last Login',
'last_name' => 'Last Name',
@@ -130,48 +130,48 @@
'next' => 'Next',
'next_audit_date' => 'Next Audit Date',
'last_audit' => 'Last Audit',
'new' => 'new!',
'new' => 'baru!',
'no_depreciation' => 'No Depreciation',
'no_results' => 'No Results.',
'no' => 'No',
'notes' => 'Notes',
'no_results' => 'Tidak ada Hasil.',
'no' => 'Tidak',
'notes' => 'Catatan',
'order_number' => 'Order Number',
'page_menu' => 'Showing _MENU_ items',
'pagination_info' => 'Showing _START_ to _END_ of _TOTAL_ items',
'pending' => 'Pending',
'people' => 'People',
'per_page' => 'Results Per Page',
'previous' => 'Previous',
'pending' => 'Tertunda',
'people' => 'Orang',
'per_page' => 'Hasil per Halaman',
'previous' => 'Sebelumnya',
'processing' => 'Processing',
'profile' => 'Your profile',
'purchase_cost' => 'Purchase Cost',
'purchase_date' => 'Purchase Date',
'profile' => 'Profil anda',
'purchase_cost' => 'Harga pembelian',
'purchase_date' => 'Tanggal Pembelian',
'qty' => 'QTY',
'quantity' => 'Quantity',
'ready_to_deploy' => 'Ready to Deploy',
'recent_activity' => 'Recent Activity',
'recent_activity' => 'Aktifitas tebaru',
'remove_company' => 'Remove Company Association',
'reports' => 'Reports',
'restored' => 'restored',
'requested' => 'Requested',
'request_canceled' => 'Request Canceled',
'save' => 'Save',
'select' => 'Select',
'search' => 'Search',
'select_category' => 'Select a Category',
'reports' => 'Laporan',
'restored' => 'dikembalikan',
'requested' => 'Diminta',
'request_canceled' => 'Permintaan dibatalkan',
'save' => 'Simpan',
'select' => 'Pilih',
'search' => 'Cari',
'select_category' => 'Pilih kategori',
'select_department' => 'Select a Department',
'select_depreciation' => 'Select a Depreciation Type',
'select_location' => 'Select a Location',
'select_location' => 'Pilih lokasi',
'select_manufacturer' => 'Select a Manufacturer',
'select_model' => 'Select a Model',
'select_supplier' => 'Select a Supplier',
'select_user' => 'Select a User',
'select_date' => 'Select Date (YYYY-MM-DD)',
'select_statuslabel' => 'Select Status',
'select_company' => 'Select Company',
'select_user' => 'Pilih pengguna',
'select_date' => 'Pilih tanggal (YYYY-MM-DD)',
'select_statuslabel' => 'Pilih status',
'select_company' => 'Pilih perusahaan',
'select_asset' => 'Select Asset',
'settings' => 'Settings',
'sign_in' => 'Sign in',
'settings' => 'Pengaturan',
'sign_in' => 'Masuk',
'signature' => 'Signature',
'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.',
'site_name' => 'Site Name',
@@ -206,5 +206,5 @@
'yes' => 'Yes',
'zip' => 'Zip',
'noimage' => 'No image uploaded or image not found.',
'token_expired' => 'Your form session has expired. Please try again.',
'token_expired' => 'Sesi formulir anda sudah berakhir. Silahkan coba lagi.',
];
+31 -32
View File
@@ -1,11 +1,11 @@
<?php
return array(
'a_user_canceled' => 'A user has canceled an item request on the website',
'a_user_requested' => 'A user has requested an item on the website',
'a_user_canceled' => 'Pengguna sudah membatalkan permintaan item di situs web',
'a_user_requested' => 'Pengguna sudah meminta sebuah item di situs web',
'accessory_name' => 'Accessory Name:',
'additional_notes' => 'Additional Notes:',
'admin_has_created' => 'An administrator has created an account for you on the :web website.',
'additional_notes' => 'Catatan Tambahan:',
'admin_has_created' => 'Admin sudah membuat akun untuk anda di :web situs web.',
'asset' => 'Asset:',
'asset_name' => 'Asset Name:',
'asset_requested' => 'Asset requested',
@@ -13,28 +13,28 @@ return array(
'assets_warrantee_expiring' => '{1} asset with warrantee expiring in the next 60 days.|[2,Inf] assets with warrantees
expiring in the next 60 days.',
'assigned_to' => 'Assigned To',
'best_regards' => 'Best regards,',
'canceled' => 'Canceled:',
'best_regards' => 'Salam hormat,',
'canceled' => 'Dibatalkan:',
'checkin_date' => 'Checkin Date:',
'checkout_date' => 'Checkout Date:',
'click_to_confirm' => 'Please click on the following link to confirm your :web account:',
'click_on_the_link_accessory' => 'Please click on the link at the bottom to confirm that you have received the accessory.',
'click_on_the_link_asset' => 'Please click on the link at the bottom to confirm that you have received the asset.',
'click_on_the_link_asset' => 'Silahkan klik pada tautan di bawah untuk konfirmasi anda sudah menerima aset itu.',
'Confirm_Asset_Checkin' => 'Confirm Asset Checkin.',
'Confirm_Accessory_Checkin' => 'Confirm Accessory Checkin.',
'Confirm_accessory_delivery' => 'Confirm accessory delivery.',
'Confirm_asset_delivery' => 'Confirm asset delivery.',
'Confirm_consumable_delivery' => 'Confirm consumable delivery.',
'current_QTY' => 'Current QTY',
'Days' => 'Days',
'days' => 'Days',
'Days' => 'Hari',
'days' => 'Hari',
'expecting_checkin_date' => 'Expected Checkin Date:',
'expires' => 'Expires',
'Expiring_Assets_Report' => 'Expiring Assets Report.',
'Expiring_Licenses_Report' => 'Expiring Licenses Report.',
'hello' => 'Hello',
'hi' => 'Hi',
'i_have_read' => 'I have read and agree to the terms of use, and have received this item.',
'expires' => 'Berakhir',
'Expiring_Assets_Report' => 'Laporan aset berakhir.',
'Expiring_Licenses_Report' => 'Laporan lisensi berakhir.',
'hello' => 'Halo',
'hi' => 'Hai',
'i_have_read' => 'Saya sudah baca dan menyetujui syarat penggunaan, dan sudah menerima item ini.',
'item' => 'Item:',
'items_below_minimum' => '{1} item that is below minimum inventory or will soon be low.|[2,Inf] items that are below minimum
inventory or will soon be low.',
@@ -43,20 +43,19 @@ return array(
'licenses_expiring' => '{1} license expiring next 60 days.|[2,Inf] licenses expiring next 60 days.',
'link_to_update_password' => 'Please click on the following link to update your :web password:',
'login_first_admin' => 'Login to your new Snipe-IT installation using the credentials below:',
'login' => 'Login:',
'login' => 'Masuk:',
'Low_Inventory_Report' => 'Low Inventory Report',
'min_QTY' => 'Min QTY',
'name' => 'Name',
'new_item_checked' => 'A new item has been checked out under your name, details are below.',
'password' => 'Password:',
'password_reset' => 'Password Reset',
'name' => 'Nama',
'new_item_checked' => 'Item baru sudah diperiksa atas nama anda, rinciannya dibawah ini.',
'password' => 'Kata Sandi:',
'password_reset' => 'Atur ulang kata sandi',
'read_the_terms' => 'Please read the terms of use below.',
'read_the_terms_and_click' => 'Please read the terms of use below, and click on the link at the bottom to confirm that you read
and agree to the terms of use, and have received the asset.',
'requested' => 'Requested:',
'reset_link' => 'Your Password Reset Link',
'reset_password' => 'Click here to reset your password:',
'read_the_terms' => 'Silahkan baca syarat penggunaan dibawah ini.',
'read_the_terms_and_click' => 'Silahkan baca syarat penggunaan dibawah ini, dan klik pada tautan di bawah untuk mengkonfirmasi anda sudah dan menyetujui syarat penggunaan, dan sudah menerima aset itu.',
'requested' => 'Diminta:',
'reset_link' => 'Tautan Atur ulang kata sandi anda',
'reset_password' => 'Klik disini untuk atur ulang kata sandi anda:',
'serial' => 'Serial',
'supplier' => 'Supplier',
'tag' => 'Tag',
@@ -64,11 +63,11 @@ return array(
'test_mail_text' => 'This is a test from the Snipe-IT Asset Management System. If you got this, mail is working :)',
'the_following_item' => 'The following item has been checked in: ',
'There_are' => '{1} There is|[2,Inf] There are',
'to_reset' => 'To reset your :web password, complete this form:',
'type' => 'Type',
'user' => 'User',
'username' => 'Username',
'welcome' => 'Welcome :name',
'welcome_to' => 'Welcome to :web!',
'to_reset' => 'Untuk atur ulang kata sandi situs web: anda, lengkapi formulir ini:',
'type' => 'Jenis',
'user' => 'Pengguna:',
'username' => 'Nama pengguna:',
'welcome' => 'Selamat datang :nama',
'welcome_to' => 'Selamat datang di :Web!',
'your_credentials' => 'Your Snipe-IT credentials',
);
+2 -2
View File
@@ -13,8 +13,8 @@ return array(
|
*/
'previous' => '&laquo; Previous',
'previous' => '&laquo; Sebelumnya',
'next' => 'Next &raquo;',
'next' => 'Selanjutnya &raquo;',
);
+2 -2
View File
@@ -1,7 +1,7 @@
<?php
return [
'sent' => 'Your password link has been sent!',
'user' => 'That user does not exist or does not have an email address associated',
'sent' => 'Tautan kata sandi anda sudah dikirim!',
'user' => 'Pengguna tidak ada atau tidak mempunyai alamat surel yang terkait',
];
+4 -4
View File
@@ -13,12 +13,12 @@ return array(
|
*/
"password" => "Passwords must be six characters and match the confirmation.",
"password" => "Kata sandi harus ada enam karakter dan sesuai dengan konfirmasi.",
"user" => "Username or email address is incorrect",
"user" => "Nama pengguna atau alamat surel salah",
"token" => "This password reset token is invalid.",
"token" => "Token atur ulang kata sandi ini tidak valid.",
"sent" => "If a matching email address was found, a password reminder has been sent!",
"sent" => "Jika alamat surel yang sesuai ditemukan, pengingat kata sandi sudah dikirim!",
);
+4 -4
View File
@@ -115,10 +115,10 @@ return array(
'custom' => [
'alpha_space' => "The :attribute field contains a character that is not allowed.",
"email_array" => "One or more email addresses is invalid.",
"hashed_pass" => "Your current password is incorrect",
'dumbpwd' => 'That password is too common.',
"statuslabel_type" => "You must select a valid status label type",
"email_array" => "Satu atau lebih alamat surel tidak valid.",
"hashed_pass" => "Kata sandi anda saat ini salah",
'dumbpwd' => 'Kata sandi itu terlalu umum.',
"statuslabel_type" => "Anda harus pilih jenis label status yang valid",
],
/*
@@ -38,6 +38,7 @@ return array(
'tag' => 'Asset Tag',
'update' => 'Asset Update',
'warranty' => 'Warranty',
'warranty_expires' => 'Warranty Expires',
'years' => 'years',
)
;
@@ -40,6 +40,8 @@ return array(
'alt_barcode_type' => '1D barcode type',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <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.',
'general_settings' => 'General Settings',
'generate_backup' => 'Generate Backup',
'header_color' => 'Header Color',
@@ -71,6 +73,7 @@ return array(
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'license' => 'Software License',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'login_note' => 'Login Note',
@@ -78,6 +81,7 @@ return array(
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'show_in_model_list' => 'Show in Model Dropdowns',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -103,6 +107,8 @@ return array(
'slack_integration' => 'Slack Settings',
'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first <a href=":slack_link" target="_new">create an incoming webhook</a> on your Slack account.',
'snipe_version' => 'Snipe-IT version',
'support_footer' => 'Support Footer Links ',
'support_footer_help' => 'Specify who sees the links to the Snipe-IT Support info and Users Manual',
'system' => 'System Information',
'update' => 'Update Settings',
'value' => 'Value',
@@ -16,6 +16,7 @@ return array(
'restore_user' => 'Click here to restore them.',
'last_login' => 'Last Login',
'ldap_config_text' => 'LDAP configuration settings can be found Admin > Settings. The (optional) selected location will be set for all imported users.',
'print_assigned' => 'Print All Assigned',
'software_user' => 'Software Checked out to :name',
'view_user' => 'View User :name',
'usercsv' => 'CSV file',
+5 -1
View File
@@ -70,6 +70,7 @@
'department' => 'Department',
'deployed' => 'Deployed',
'depreciation_report' => 'Depreciation Report',
'details' => 'Details',
'download' => 'Download',
'depreciation' => 'Depreciation',
'editprofile' => 'Edit Your Profile',
@@ -79,9 +80,11 @@
'email_domain_help' => 'This is used to generate email addresses when importing',
'filastname_format' => 'First Initial Last Name (jsmith@example.com)',
'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)',
'firstname_lastname_underscore_format' => 'First Name Last Name (jane_smith@example.com)',
'first' => 'First',
'first_name' => 'First Name',
'first_name_format' => 'First Name (jane@example.com)',
'files' => 'Files',
'file_name' => 'File',
'file_uploads' => 'File Uploads',
'generate' => 'Generate',
@@ -94,7 +97,7 @@
'image' => 'Image',
'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image',
'image_filetypes_help' => 'Accepted filetypes are jpg, png, gif, and svg.',
'image_filetypes_help' => 'Accepted filetypes are jpg, png, gif, and svg. Max upload size allowed is :size.',
'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance',
@@ -118,6 +121,7 @@
'locations' => 'Locations',
'logout' => 'Logout',
'lookup_by_tag' => 'Lookup by Asset Tag',
'maintenances' => 'Maintenances',
'manufacturer' => 'Manufacturer',
'manufacturers' => 'Manufacturers',
'markdown' => 'This field allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
@@ -1,8 +1,8 @@
<?php
return [
'title' => 'Mantenimiento de Equipo',
'asset_name' => 'Nombre del Equipo',
'title' => 'Mantenimiento de Activos',
'asset_name' => 'Nombre del Activo',
'is_warranty' => 'Garantía',
'dl_csv' => 'Descargar CSV'
];
@@ -1,7 +1,7 @@
<?php
return array(
'about_categories_title' => 'Sobre categorias',
'about_categories_title' => 'Acerca de Categorías',
'about_categories' => 'Las categorías te ayudan a organizar los equipos. Ejemplos de categorías: &quot;PCs&quot;, &quot;Portátiles&quot;, &quot;Móviles&quot;, &quot;Tabletas&quot;, etc.',
'asset_categories' => 'Categorias',
'category_name' => 'Categoría',

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