Compare commits

...

192 Commits

Author SHA1 Message Date
snipe 33a709ecbc Merge remote-tracking branch 'origin/develop' 2015-02-28 12:27:45 -08:00
snipe 9b42d3a4fc Bumped version number 2015-02-28 12:27:22 -08:00
snipe c598e3d9c0 Merge remote-tracking branch 'origin/develop' 2015-02-27 21:07:45 -08:00
snipe c822fff714 New language strings 2015-02-27 21:07:17 -08:00
snipe c881535fda Updated language strings 2015-02-27 13:32:53 -08:00
snipe 715fc3fa9b Bumped version for release 2015-02-26 19:17:06 -08:00
snipe c484afb12b Fixed typo for accessories accept 2015-02-26 18:58:08 -08:00
snipe 5ec91ef5fc Removed test url 2015-02-26 18:56:30 -08:00
snipe 30db9a2943 Unified asset/accessory acceptance 2015-02-26 18:42:39 -08:00
snipe 1273c4ca87 EULA/req improvements 2015-02-26 18:20:52 -08:00
snipe cb73d81d5b Smaller buttons 2015-02-26 17:23:03 -08:00
snipe 04735f1aff Fixed assetlog display 2015-02-26 17:04:21 -08:00
snipe d33dcbbcb1 Fixed bad method call in accessories on delete 2015-02-26 16:17:25 -08:00
snipe 04401ca09f Merge remote-tracking branch 'origin/develop' 2015-02-26 16:14:11 -08:00
snipe 0ff23c422a Better language strings 2015-02-26 16:13:47 -08:00
snipe 74a7b304c2 Limit categories to accessory categories 2015-02-26 16:09:40 -08:00
snipe 231e465898 Added category types to view 2015-02-26 16:00:52 -08:00
snipe 68c3e88343 Few more error icons 2015-02-26 15:52:38 -08:00
snipe ef6eae63d8 Fixed error icon 2015-02-26 15:50:33 -08:00
snipe afe2eb736c Added category type 2015-02-26 15:48:44 -08:00
snipe 1552c1e917 Accessories log (not reporting correctly yet) 2015-02-26 15:25:48 -08:00
snipe 258d1cd705 Removed extra table columns 2015-02-26 15:25:33 -08:00
snipe d7b4e8a8de Removed cruft from checkin form 2015-02-26 15:25:21 -08:00
snipe c0c563b1c7 Fixes accessory relationshop for pivot 2015-02-26 15:25:08 -08:00
snipe 430b8233ed Fixed user relationship 2015-02-26 15:24:51 -08:00
snipe 47f1488acc Get the accessory pivot ID 2015-02-26 15:24:41 -08:00
snipe 21799cca6d User acceptance for accessories 2015-02-26 15:24:23 -08:00
snipe e7ae4bd1c4 Merge pull request #574 from madd15/patch-3
Remove unused trashedAssets()
2015-02-26 14:21:05 -08:00
snipe 7da6ba5f68 Merge pull request #575 from madd15/patch-4
Reduces Queries on Model Index View
2015-02-26 14:20:22 -08:00
madd15 8e9f7965c7 Reduces Queries on Model Index View 2015-02-27 08:44:41 +10:30
madd15 4ef2dd0c7e Remove unused trashedAssets() 2015-02-27 08:42:53 +10:30
snipe 19ad8970d7 Fixed arrow icon 2015-02-26 14:08:42 -08:00
snipe a20e1f6943 Fixed attach to relation 2015-02-26 14:08:31 -08:00
snipe 5010720a97 Fixed accessory relationship 2015-02-26 14:07:52 -08:00
snipe efaf067b94 Fixed user relationship 2015-02-26 14:07:39 -08:00
snipe 6efd268004 Disable checkouts if there are none left 2015-02-26 13:28:08 -08:00
snipe 7f26f01a8f Merge pull request #573 from madd15/models
Force Model Restore before Asset Restore
2015-02-26 13:06:15 -08:00
snipe 31df29cac8 Fixed funky layout from datatables 2015-02-26 13:05:10 -08:00
madd15 15a7e205be Force Model Restore before Asset Restore 2015-02-27 07:33:48 +10:30
snipe 3e189d3502 Fixes #538 - sortable tables 2015-02-26 12:59:40 -08:00
snipe 6d16c97902 Fixed back arrow 2015-02-26 12:40:54 -08:00
snipe 1ac401f0c0 Fixed EULA mail 2015-02-26 11:54:56 -08:00
snipe 62cb1daefd Language strings for checkin/checkout 2015-02-26 11:42:11 -08:00
snipe acedab5587 Checkout for accessories 2015-02-26 11:42:02 -08:00
snipe ad30aebcbc Methods to extend the category EULA to the accessory 2015-02-26 11:41:47 -08:00
snipe 528c06cf7f Reverting icon fix 2015-02-26 10:33:31 -08:00
snipe 97d97fc4df Merge branch 'develop' of github.com:snipe/snipe-it into develop
Conflicts:
	app/views/backend/categories/edit.blade.php
	app/views/backend/depreciations/edit.blade.php
	app/views/backend/groups/create.blade.php
	app/views/backend/groups/edit.blade.php
	app/views/backend/hardware/bulk.blade.php
	app/views/backend/hardware/checkin.blade.php
	app/views/backend/hardware/checkout.blade.php
	app/views/backend/hardware/edit.blade.php
	app/views/backend/licenses/checkin.blade.php
	app/views/backend/licenses/checkout.blade.php
	app/views/backend/licenses/edit.blade.php
	app/views/backend/locations/edit.blade.php
	app/views/backend/manufacturers/edit.blade.php
	app/views/backend/models/edit.blade.php
	app/views/backend/statuslabels/edit.blade.php
	app/views/backend/suppliers/edit.blade.php
	app/views/frontend/account/change-email.blade.php
	app/views/frontend/account/change-password.blade.php
	app/views/frontend/account/profile.blade.php
	app/views/frontend/auth/forgot-password-confirm.blade.php
	app/views/frontend/auth/signin.blade.php
2015-02-26 10:26:04 -08:00
snipe e89cb883ec Merge pull request #570 from madd15/models
Not Complete - Fix #565 - Models soft delete and restore, several icons and and Category lang
2015-02-26 10:20:15 -08:00
madd15 88ce0abe85 more icons 2015-02-27 01:32:24 +10:30
madd15 4570efc68b Add restore to action button 2015-02-27 01:03:31 +10:30
madd15 ea28873fb0 remove edit, clone when deleted 2015-02-27 00:56:47 +10:30
madd15 eb5d4983de more model functionality and icons 2015-02-27 00:53:16 +10:30
madd15 379f6bef6c catergories lang and serveral icons 2015-02-26 23:48:17 +10:30
madd15 e090762b5a Icon changes on hardware 2015-02-26 22:41:44 +10:30
madd15 9f3edd701b Fixes #565 - Soft Delete Models and Allow Restore
Allow models to be deleted and restored which in turn allows deleted
hardware to function when model is deleted.
2015-02-26 22:35:57 +10:30
snipe 54bad2e4f6 More accessory relationships 2015-02-26 03:19:45 -08:00
snipe e41621def0 Fixed relation between accessory and category 2015-02-26 03:08:27 -08:00
snipe 95fd96f29a Accessory checkout/checkin methods 2015-02-26 03:08:17 -08:00
snipe 663d5213eb Accessory checkout/checkin routes 2015-02-26 03:08:01 -08:00
snipe 92d6ed0761 Migration for accessory checkout 2015-02-26 03:07:37 -08:00
snipe 59ea144b28 Minor UX tweaks 2015-02-26 03:07:19 -08:00
snipe f9f3b5b4f9 Smaller buttons 2015-02-26 02:42:25 -08:00
snipe 3de1a8f96c Pre-release version in footer 2015-02-26 01:07:34 -08:00
snipe 5d71628927 Accessories title 2015-02-26 00:22:15 -08:00
snipe 323a607130 Indenting formatting 2015-02-26 00:22:02 -08:00
snipe 8eaa70c39b Fixes #567 - bug in depreciation report csv export 2015-02-26 00:21:48 -08:00
snipe 29863004e2 more small mobile fixes 2015-02-25 20:01:36 -08:00
snipe c2bbc1281c Mobile fixes 2015-02-25 19:30:37 -08:00
snipe a6232cbfd8 Fix language string for create accessory 2015-02-25 19:19:23 -08:00
snipe 734dc49564 Fixed icon 2015-02-25 18:35:07 -08:00
snipe a5a1c4223b Fixed chevrons 2015-02-25 18:33:22 -08:00
snipe ca1351b704 Switched to all FA 2015-02-25 18:14:51 -08:00
snipe 3135869d5a Fixed font path 2015-02-25 17:53:25 -08:00
snipe c2d30ce865 Ignore siteflow 2015-02-25 17:53:17 -08:00
snipe 69a446af97 Font awesome 2015-02-25 17:51:01 -08:00
snipe 93b11c35d0 CSS updates 2015-02-25 17:50:21 -08:00
snipe cc3d007fa6 Use font-awesome for sidenav 2015-02-25 17:12:23 -08:00
snipe 8cc1bd0159 Updated font-awesome 2015-02-25 16:58:26 -08:00
snipe 8879bff160 Fixed bug for reporting on upload in dashboard 2015-02-25 16:48:42 -08:00
snipe fae70bb485 Updated table strings 2015-02-25 16:38:15 -08:00
snipe d4cafe364f Item language string 2015-02-25 16:38:05 -08:00
snipe 346b62bf26 Missing language string 2015-02-25 16:37:57 -08:00
snipe 3ba6e45011 Added Accessories scaffolding 2015-02-25 16:31:22 -08:00
snipe 525a9225c8 Dashboard 2015-02-25 16:30:59 -08:00
snipe df448f0c35 Merge pull request #564 from splaer/barcode-1
Barcode 1
2015-02-25 12:56:26 -08:00
Splaer 7808039d0d Merge branch 'develop' of https://github.com/snipe/snipe-it into barcode-1 2015-02-25 15:54:06 -05:00
Splaer 0ff0d18351 Functionality back to url view for the time being until other code is implemented 2015-02-25 15:52:24 -05:00
snipe fc4f1fd7fc Updated lock file 2015-02-25 12:35:41 -08:00
snipe d55d9f5530 Merge pull request #562 from splaer/barcode-1
Barcode - Stage 1
2015-02-25 12:32:13 -08:00
Splaer cd7461a3a8 Missed files. Composer to add new package and organized the view page label 2015-02-25 15:08:12 -05:00
snipe ad39ec1dc3 Added markdown to EULA 2015-02-25 11:25:10 -08:00
Splaer b2af455523 Merge conflict resolution. Added a use at the same line as remote. Fixed 2015-02-25 14:09:58 -05:00
Splaer 6d4f4c6064 Preparation for barcode goodness. Changed out library to one that supports all barcode types and not just QR. Prep branch for much bigger barcode things 2015-02-25 14:07:23 -05:00
snipe 2b83b52735 Disallow delete if lock_passwords is true 2015-02-25 10:49:03 -08:00
snipe cd99295f83 More auth locking 2015-02-25 10:41:25 -08:00
snipe 6ab95ff387 Prevent auth changes on demo 2015-02-25 10:37:39 -08:00
snipe 1aa25d1e6d Merge pull request #558 from roncsak/develop
Enhance further install without dummy data
2015-02-25 02:06:56 -08:00
snipe 1b5b3fba8a Merge pull request #559 from cleathley/develop
Updates to Dockerfile for QrCode support
2015-02-25 01:59:55 -08:00
Chris Leathley c71bdc0d5e Removed Dockerfile as this was stopping the actual build (difference in docker versions ?) 2015-02-25 17:49:09 +08:00
Chris Leathley 7380affe9c Added php5-gd as it's required for the QR Codes, Bit of code cleanup and removal of the toolbar by default 2015-02-25 17:46:28 +08:00
Tamás Roncsák 1734c5ab99 Enhance installation further without dummy data
Use --force to prevent user unnecessary user interactions.
Seed StatusLabels even when dummy datas chose to not be seeded because
snipe-it heavily builds on those table.
Seed Categories, because it is very common and goot to have, also.
2015-02-25 08:47:05 +01:00
Tamás Roncsák 18f96bb20a hopefully this sets that motherfucka executable 2015-02-25 08:17:56 +01:00
Tamás Roncsák da28036297 Revert "remove Bitdeli badge"
This reverts commit 474731d1a3.
2015-02-25 08:04:04 +01:00
Tamás Roncsák 474731d1a3 remove Bitdeli badge 2015-02-25 08:03:04 +01:00
Tamás Roncsák f59db3c741 Revert "delete and file mode"
This reverts commit ecfc0e0e2b.
2015-02-25 08:02:14 +01:00
Tamás Roncsák ecfc0e0e2b delete and file mode
Delete bitdeli badge and add executable mode
2015-02-25 07:54:13 +01:00
Tamás Roncsák 8ac16e53c7 Revert "remove Bitdeli badge"
This reverts commit 5d81c04b3d.
2015-02-25 07:53:11 +01:00
Tamás Roncsák 5d81c04b3d remove Bitdeli badge
It is not on origin source
2015-02-25 07:48:12 +01:00
Tamás Roncsák 037a8bee2f Merge branch 'develop' of https://github.com/roncsak/snipe-it into develop 2015-02-25 07:46:17 +01:00
snipe e12bbbc171 Clearly, it's time for me to take a break 2015-02-24 22:21:39 -08:00
snipe 31e2299385 Herp derp broke the build 2015-02-24 22:19:14 -08:00
snipe 097bb38a23 Fixes #163 - accept acceptance + eula
TODO: Language strings, check that the accepting user is the one that should be allowed to accept.
2015-02-24 22:15:36 -08:00
snipe 73ae41f3a9 Merge remote-tracking branch 'origin/develop' 2015-02-24 17:52:14 -08:00
snipe 4340d50071 Stil allow new user creation 2015-02-24 12:06:00 -08:00
snipe de94311c47 Add ability to prevent passwords from being changed 2015-02-24 11:57:46 -08:00
snipe cb51dc45b6 Extend report to 60 days 2015-02-24 03:49:22 -08:00
snipe dee4baf7dd Updated language strings 2015-02-24 02:11:10 -08:00
snipe e04ac89c5a Added expiring warrantee alerts 2015-02-24 02:07:33 -08:00
Tamás Roncsák 3fa1bc5c3f Revert "Update README.md"
This reverts commit c41f4e9203.
2015-02-24 09:57:13 +01:00
Tamás Roncsák 254f4b5f3e Revert "Revert "Revert "Enhance further install without dummy data"""
This reverts commit ae381576aa.
2015-02-24 09:56:23 +01:00
Tamás Roncsák 132578bfe3 Revert "set filemode"
This reverts commit c2a1e39b54.
2015-02-24 09:32:31 +01:00
Tamás Roncsák c2a1e39b54 set filemode 2015-02-24 09:29:58 +01:00
Tamás Roncsák c41f4e9203 Update README.md 2015-02-24 08:45:38 +01:00
Tamás Roncsák c54615a85f Update CONTRIBUTING.md 2015-02-24 08:44:40 +01:00
Tamás Roncsák a7d953f923 Merge remote-tracking branch 'upstream/develop' into develop 2015-02-24 08:24:04 +01:00
snipe 35cf5b3d60 Fixes #423 2015-02-23 18:46:04 -08:00
Tamás Roncsák ae381576aa Revert "Revert "Enhance further install without dummy data""
This reverts commit b28bcce5f1.
2015-02-23 11:52:09 +01:00
Tamás Roncsák b28bcce5f1 Revert "Enhance further install without dummy data"
This reverts commit 7d7059504e.
2015-02-23 11:50:49 +01:00
Tamás Roncsák 7d7059504e Enhance further install without dummy data
Use --force to prevent user unnecessary user interactions.
Seed StatusLabels even when dummy datas chose to not be seeded because
snipe-it heavily builds on those table.
Seed Categories, because it is very common and goot to have, also.
2015-02-23 09:39:42 +01:00
Tamás Roncsák e04fb70aa3 Merge remote-tracking branch 'upstream/master' into develop 2015-02-23 08:25:41 +01:00
snipe 7f1489a701 Updated language strings for logo/header color 2015-02-19 18:15:55 -08:00
snipe 720c36e433 Merge remote-tracking branch 'origin/develop' 2015-02-19 16:00:35 -08:00
snipe 0cceacd17d Merge pull request #547 from madd15/patch-3
Fix activate for strict db
2015-02-19 16:00:17 -08:00
snipe f9ad8d8aa5 Merge remote-tracking branch 'origin/develop' 2015-02-19 15:59:25 -08:00
snipe 253c402f3d Ignore logos 2015-02-19 15:59:18 -08:00
madd15 083cb1b5ec Fix activate for strict db 2015-02-20 10:26:46 +10:30
snipe 8b3e22b58e Fixes #546 - only insert data if values exist 2015-02-19 15:50:53 -08:00
snipe ad9e7f1d9e Cleaned up settings form for nicer display 2015-02-19 15:34:55 -08:00
snipe 5887cce2c5 Merge pull request #545 from madd15/patch-2
Fix #541 - Headers not being skipped if checked
2015-02-19 15:25:39 -08:00
madd15 f85061f988 Fix #541 - Headers not being skipped if checked 2015-02-20 09:54:55 +10:30
snipe f8e12cabd4 Fixes #476 - added logo upload and header color 2015-02-19 15:14:50 -08:00
snipe 348e996e31 Merge pull request #543 from splaer/bug-1
Fixed AutoIncrement Bug with no Assets and cleaned up logic
2015-02-19 12:43:31 -08:00
Splaer 70ae59ed62 Fixed a bug when no assets are in table that the autoincrement method blows up. Also optimzed the logic to get max id instead of popping top off creation date. 2015-02-19 12:52:27 -05:00
snipe 6c4d661a85 Merge pull request #540 from madd15/patch-2
#539 - Allow checked out asset in requestable
2015-02-18 13:51:48 -08:00
madd15 ae104293da #539 - Allow checked out asset in requestable 2015-02-19 08:20:27 +10:30
snipe c07907833c Updated laguage strings 2015-02-18 13:33:05 -08:00
snipe 7360e52f61 Updated composer lock 2015-02-18 13:16:09 -08:00
snipe 7d87b3384c Standardized colors for checkin/checkout in sidebar 2015-02-18 12:22:37 -08:00
snipe 30df21c7aa Fixed missing checkedout-to info on asset view 2015-02-18 10:27:41 -08:00
snipe 6bc1524783 Merge pull request #537 from roncsak/develop
Enhance installation
2015-02-18 09:52:01 -08:00
Tamás Roncsák 366fb60628 Enhance installation
Make available to install app without seeding dummy data.
2015-02-18 16:00:33 +01:00
snipe 01f11f2da4 Updated text 2015-02-18 02:56:01 -08:00
snipe f6ae35df63 Only show the "email credentials" checkbox if new user 2015-02-18 02:51:41 -08:00
snipe 87936a58fa CSV user import 2015-02-18 02:48:16 -08:00
snipe 305db59472 Merge pull request #533 from uberbrady/docker2
Docker2 (DO NOT MERGE YET)
2015-02-17 21:17:17 -08:00
Brady Wetherington c0ce1939cb Make Docker respect email configuration passed via environment. 2015-02-17 21:13:40 -08:00
snipe 879b6b8f3f Merge remote-tracking branch 'origin/develop' 2015-02-17 20:44:19 -08:00
snipe 8777a1a9f1 Updated language strings 2015-02-17 20:44:01 -08:00
snipe 43cdace9de Merge remote-tracking branch 'origin/develop' 2015-02-17 19:18:10 -08:00
snipe a04af4aead Bumped version number 2015-02-17 19:17:53 -08:00
snipe e7eec42ab8 Merge pull request #532 from uberbrady/depreciation_refactor
Depreciation refactor
2015-02-17 18:55:52 -08:00
Brady Wetherington 063e5c407c Fixed the depreciation report, fixes to calculate current depreciated
value (which were only used there). Additional fixes and refactoring
around Depreciable, in terms of how assets get depreciation via models,
and licenses get depreciation directly.
2015-02-17 18:51:13 -08:00
Brady Wetherington 3ba02b65fb Oops - Assets get their Depreciation from their *model* - wheras
Licenses have a Depreciation directly associated with them. So I
pulled the Depreciation relationship out of Depreciable so that both
Assets and Licenses could pull their depreciations in their associated
ways. I could've done this with an inheritance call, but that seems
a bit much (and unnecessarily confusing).
2015-02-17 17:56:59 -08:00
Brady Wetherington 88dc0700f0 Make date functions work; create negative intervals for depreciation,
Also renamed "months_until_depreciation" to "time_until_depreciation"
And renamed Depreciatable to Depreciable (which is an actual word in
English.) Also a cleanup/consistency-enforcement for interval display.
2015-02-17 17:40:16 -08:00
Brady Wetherington 899e2bc9b6 Not convinved this filename is right or anything, but the shared depreciation code is here 2015-02-17 17:40:16 -08:00
Brady Wetherington 1e4071b51d First stab at cleaning up Depreciation
Conflicts:
	app/models/Asset.php

It looks like the same time I pulled depreciation out of the
Asset class, uploads were being added in. It doesn't look
like a conflict to me, but git couldn't figure it out. Oh Well.
2015-02-17 17:39:39 -08:00
Brady Wetherington f5b5f66b82 Update README.md 2015-02-17 16:36:54 -08:00
Brady Wetherington 24e72d1b56 Update README.md 2015-02-17 16:35:31 -08:00
Brady Wetherington f2922b0a44 Update README.md 2015-02-17 16:33:23 -08:00
Brady Wetherington 92a99993ea Update README.md 2015-02-17 16:30:52 -08:00
Brady Wetherington 9be159ea15 Cleaned up the docker images to shrink it; expanded docker documentation 2015-02-17 16:22:03 -08:00
snipe 38961298ed Fixes #439 - loads javascript and CSS locally 2015-02-17 15:29:57 -08:00
snipe ea6a6d098a Fixes #440 - removed unique constraint on serial 2015-02-17 14:15:22 -08:00
Brady Wetherington 3ee9e93349 Note about key:generate 2015-02-16 21:27:23 -08:00
Brady Wetherington c9b51bface Docker kinda-sorta working, and documentation 2015-02-16 21:27:23 -08:00
snipe 1f0f9c2441 Merge remote-tracking branch 'origin/develop' 2015-02-16 20:50:41 -08:00
snipe d4fbea3571 Merge remote-tracking branch 'origin/develop' 2015-02-16 20:49:55 -08:00
snipe b32d74de57 Fixed seeder with duplicate ID 2015-02-16 19:56:11 -08:00
snipe 4e4144ea74 Fixed blade reference 2015-02-16 19:43:22 -08:00
snipe 7b331b26d3 Language string for nothing updated on bulk update 2015-02-16 18:27:27 -08:00
snipe e02bea4275 Fixes #457 - added bulk options to hardware 2015-02-16 18:21:29 -08:00
snipe 24f5cdc743 Fixes #523 - added file uploads to assets 2015-02-16 13:49:51 -08:00
snipe 08ee02d0cd Fixes #525 - added serial to asset model UI 2015-02-16 13:12:57 -08:00
snipe ec1ab6913e Merged layout blades for unified nav 2015-02-16 12:55:32 -08:00
snipe f40bb7b8b3 Fixes #520 postal code requirement 2015-02-13 11:40:28 -08:00
snipe 17258b73a1 Fixes #520 - state no longer required 2015-02-13 11:37:47 -08:00
snipe 4a5007264e Fixed mac address not showing 2015-02-12 21:34:20 -08:00
snipe bd01b11f4f Merge pull request #519 from madd15/patch-2
Fix #517 - User Requestable Assets
2015-02-12 13:21:48 -08:00
madd15 064c0211db Fix #517 - User Requestable Assets 2015-02-13 07:50:47 +10:30
snipe 4cb931a93b Merge remote-tracking branch 'origin/develop' 2015-02-12 12:50:15 -08:00
snipe 3df8243d80 Updated composer to include mockery 2015-02-12 12:49:57 -08:00
snipe f57c61dd4d Possible fix for #518 - license count issue 2015-02-12 12:25:22 -08:00
592 changed files with 24896 additions and 3380 deletions
+5
View File
@@ -0,0 +1,5 @@
.git
.dockerignore
app/storage/logs/*
app/storage/views/*
vendor/*
+4 -1
View File
@@ -17,4 +17,7 @@ public/uploads/avatars/*
/app/storage/debugbar/
/bin/
.idea
crowdin.yaml
crowdin.yaml
public/uploads/logo.gif
public/uploads/logo.png
.siteflow
+2 -1
View File
@@ -6,12 +6,13 @@ Please submit all issues and pull requests to the [snipe/snipe-it](http://github
If you don't have a feature in mind, but would like to contribute back to the project, check out the [open issues](https://github.com/snipe/snipe-it/issues?state=open) and see if there are any you can tackle.
-----
We use Waffle.io to help better communicate our roadmap with users. Our [project page there](http://waffle.io/snipe/snipe-it) will show you the backlog, what's ready to be worked on, what's in progress, and what's completed.
[![Stories in Ready](https://badge.waffle.io/snipe/snipe-it.png?label=ready&title=Ready)](http://waffle.io/snipe/snipe-it)
The labels we use in GitHub Issues and Waffle.io indicate whether we've confirmed an issue as a bug, whether we're considering the issue as a potential feature, and whether it's ready for someone to work on it. We also provide labels such as "n00b", "intermediate" and "advanced" for the experience level we think it requires for contributors who want to help.
-----
## Translations!
+88
View File
@@ -0,0 +1,88 @@
FROM ubuntu
MAINTAINER Brady Wetherington <uberbrady@gmail.com>
RUN apt-get update && apt-get install -y \
apache2-bin \
libapache2-mod-php5 \
php5-mysql \
php5-mcrypt \
php5-gd \
patch \
curl \
vim \
git
RUN php5enmod mcrypt
RUN php5enmod gd
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php5/apache2/php.ini
RUN sed -i 's/variables_order = .*/variables_order = "EGPCS"/' /etc/php5/cli/php.ini
RUN useradd --uid 1000 --gid 50 docker
RUN echo export APACHE_RUN_USER=docker >> /etc/apache2/envvars
RUN echo export APACHE_RUN_GROUP=staff >> /etc/apache2/envvars
COPY docker/000-default.conf /etc/apache2/sites-enabled/000-default.conf
COPY . /var/www/html
RUN a2enmod rewrite
############ INITIAL APPLICATION SETUP #####################
COPY docker/app_start.patch /tmp/app_start.patch
WORKDIR /var/www/html
#Patch bootstrap file
RUN patch -p1 < /tmp/app_start.patch
#DB create?
# mysqladmin -u root create snipeit_laravel
#DB create user, grant access to new DB?
# grant all privileges on snipeit_laravel.* TO snipeit;
#DB config file init? (NEVER overwrite!)
#RUN cp -n /var/www/html/app/config/production/database.example.php /var/www/html/app/config/production/database.php
COPY docker/database.php /var/www/html/app/config/production/database.php
COPY docker/mail.php /var/www/html/app/config/production/mail.php
#change DB file user
#RUN sed -i s/travis/snipe_it/ /var/www/html/app/config/production/database.php
#init app config file (DO NOT overwrite!)
RUN cp -n /var/www/html/app/config/production/app.example.php /var/www/html/app/config/production/app.php
# Change default hostname to blank...I guess?
RUN sed -i s%http://staging.yourserver.com%% /var/www/html/app/config/production/app.php
# turn off the toolbar
RUN sed -i 's%\x27debug\x27 => true%\x27debug\x27 => false%' /var/www/html/app/config/production/app.php
RUN chown -R docker /var/www/html
############## DEPENDENCIES via COMPOSER ###################
#global install of composer
RUN cd /tmp;curl -sS https://getcomposer.org/installer | php;mv /tmp/composer.phar /usr/local/bin/composer
# Get dependencies
RUN cd /var/www/html;composer install
############### APPLICATION INSTALL/INIT #################
#RUN php artisan app:install
# too interactive! Try something else
#COPY docker/app_install.exp /tmp/app_install.exp
#RUN chmod +x /tmp/app_install.exp
#RUN /tmp/app_install.exp
##### START SERVER
CMD . /etc/apache2/envvars ;apache2 -DFOREGROUND
EXPOSE 80
Regular → Executable
-4
View File
@@ -65,7 +65,3 @@ Whenever you pull down a new version from master or develop, when you grab the [
php artisan migrate
Forgetting to do this can mean your DB might end up out of sync with the new files you just pulled, or you may have some funky cached autoloader values. It's a good idea to get into the habit of running these every time you pull anything new down. If there are no database changes to migrate, it won't hurt anything to run migrations anyway.
[![Bitdeli Badge](https://d2weczhvl823v0.cloudfront.net/snipe/snipe-it/trend.png)](https://bitdeli.com/free "Bitdeli Badge")
+34 -2
View File
@@ -31,6 +31,8 @@ class AppCommand extends Command
'email' => null,
'password' => null
);
protected $dummyData = true;
/**
* Create a new command instance.
@@ -67,6 +69,7 @@ class AppCommand extends Command
$this->askUserEmail();
$this->askUserPassword();
$this->askUserDummyData();
$this->comment('');
$this->comment('');
@@ -95,7 +98,19 @@ class AppCommand extends Command
$this->sentryRunner();
// Seed the tables with dummy data
$this->call('db:seed');
if( $this->dummyData === true )
{
$this->call('db:seed', array('--force'=>true));
}
else
{
// Seeding Settings table is mandatory
$this->call('db:seed', array('--class' => 'SettingsSeeder', '--force'=>true));
// Seeding Statuslabels is strongly recommended
$this->call('db:seed', array('--class' => 'StatuslabelsSeeder', '--force'=>true));
// Seeding Categories is good to have
$this->call('db:seed', array('--class' => 'CategoriesSeeder', '--force'=>true));
}
}
/**
@@ -192,6 +207,20 @@ class AppCommand extends Command
$this->userData['password'] = $password;
} while( ! $password);
}
/**
* Asks the user to create dummy data
*
* @return void
* @todo Use the Laravel Validator
*/
protected function askUserDummyData()
{
// Ask the user to input the user password
$dummydata = $this->ask('Do you want to seed your database with dummy data? (deafult is yes): ');
$this->dummyData = ( strstr($dummydata, 'y' ) || empty($dummydata) ) ? true : false;
}
/**
* Runs all the necessary Sentry commands.
@@ -207,7 +236,10 @@ class AppCommand extends Command
$this->sentryCreateUser();
// Create dummy user
$this->sentryCreateDummyUser();
if( $this->dummyData === true )
{
$this->sentryCreateDummyUser();
}
}
/**
+94
View File
@@ -0,0 +1,94 @@
<?php
use Illuminate\Console\Command;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
class SendExpirationAlerts extends Command {
/**
* The console command name.
*
* @var string
*/
protected $name = 'alerts:expiring';
/**
* The console command description.
*
* @var string
*/
protected $description = 'This command checks for expiring warrantees and service agreements, and sends out an alert email.';
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
/**
* Execute the console command.
*
* @return mixed
*/
public function fire()
{
$expiring_assets = Asset::getExpiringWarrantee(60);
$data['count'] = count($expiring_assets);
$data['email_content'] ='';
foreach ($expiring_assets as $asset) {
$now = date("Y-m-d");
$expires = $asset->warrantee_expires();
$difference = round(abs(strtotime($expires) - strtotime($now))/86400);
if ($difference > 30) {
$data['email_content'] .= '<tr style="background-color: #fcffa3;">';
} else {
$data['email_content'] .= '<tr style="background-color:#d9534f;">';
}
$data['email_content'] .= '<td><a href="'.Config::get('app.url').'/hardware/'.$asset->id.'/view">';
$data['email_content'] .= $asset->name.'</a></td><td>'.$asset->asset_tag.'</td>';
$data['email_content'] .= '<td>'.$asset->warrantee_expires().'</td>';
$data['email_content'] .= '<td>'.$difference.' days</td>';
$data['email_content'] .= '</tr>';
}
if ((Setting::getSettings()->alert_email!='') && (Setting::getSettings()->alerts_enabled==1)){
if (count($expiring_assets) > 0) {
Mail::send('emails.expiring-report', $data, function ($m) {
$m->to(Setting::getSettings()->alert_email, Setting::getSettings()->site_name);
$m->subject('Expiring Assets Report');
});
}
} else {
if (Setting::getSettings()->alert_email=='') {
echo "Could not send email. No alert email configured in settings. \n";
} elseif (Setting::getSettings()->alerts_enabled!=1) {
echo "Alerts are disabled in the settings. No mail will be sent. \n";
}
}
}
}
+19 -1
View File
@@ -43,6 +43,20 @@ return array(
*/
'cipher' => MCRYPT_RIJNDAEL_256,
/*
|--------------------------------------------------------------------------
| Prevent Password changes
|--------------------------------------------------------------------------
|
| If for some reason you do not wish for admins to be able to edit the password
| for any user (including themselves), set this to true.
|
*/
'lock_passwords' => false,
/*
|--------------------------------------------------------------------------
@@ -87,6 +101,7 @@ return array(
'Barryvdh\Debugbar\ServiceProvider',
'Cartalyst\Sentry\SentryServiceProvider',
'Chumper\Datatable\DatatableServiceProvider',
'Dinesh\Barcode\BarcodeServiceProvider',
),
@@ -156,7 +171,10 @@ return array(
'Str' => 'Illuminate\Support\Str',
'URL' => 'Illuminate\Support\Facades\URL',
'Validator' => 'Illuminate\Support\Facades\Validator',
'View' => 'Illuminate\Support\Facades\View'
'View' => 'Illuminate\Support\Facades\View',
'Reader' => 'League\Csv\Reader',
'DNS1D' => 'Dinesh\Barcode\Facades\DNS1DFacade',
'DNS2D' => 'Dinesh\Barcode\Facades\DNS2DFacade',
),
@@ -6,6 +6,8 @@ use Redirect;
use Sentry;
use Validator;
use View;
use Config;
use Lang;
class ChangeEmailController extends AuthorizedController
{
@@ -36,34 +38,39 @@ class ChangeEmailController extends AuthorizedController
'email' => 'required|email|unique:users,email,'.Sentry::getUser()->email.',email',
'email_confirm' => 'required|same:email',
);
if (Config::get('app.lock_passwords')) {
return Redirect::route('change-password')->with('error', Lang::get('admin/users/table.lock_passwords'));
} else {
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
// If validation fails, we'll exit the operation now.
if ($validator->fails()) {
// Ooops.. something went wrong
return Redirect::back()->withInput()->withErrors($validator);
}
// Grab the user
$user = Sentry::getUser();
// Check the user current password
if ( ! $user->checkPassword(Input::get('current_password'))) {
// Set the error message
$this->messageBag->add('current_password', 'Your current password is incorrect');
// Redirect to the change email page
return Redirect::route('change-email')->withErrors($this->messageBag);
}
// Update the user email
$user->email = Input::get('email');
$user->save();
// Redirect to the settings page
return Redirect::route('change-email')->with('success', 'Email successfully updated');
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
// If validation fails, we'll exit the operation now.
if ($validator->fails()) {
// Ooops.. something went wrong
return Redirect::back()->withInput()->withErrors($validator);
}
// Grab the user
$user = Sentry::getUser();
// Check the user current password
if ( ! $user->checkPassword(Input::get('current_password'))) {
// Set the error message
$this->messageBag->add('current_password', 'Your current password is incorrect');
// Redirect to the change email page
return Redirect::route('change-email')->withErrors($this->messageBag);
}
// Update the user email
$user->email = Input::get('email');
$user->save();
// Redirect to the settings page
return Redirect::route('change-email')->with('success', 'Email successfully updated');
}
}
}
@@ -6,6 +6,8 @@ use Redirect;
use Sentry;
use Validator;
use View;
use Config;
use Lang;
class ChangePasswordController extends AuthorizedController
{
@@ -37,6 +39,9 @@ class ChangePasswordController extends AuthorizedController
'password_confirm' => 'required|same:password',
);
if (Config::get('app.lock_passwords')) {
return Redirect::route('change-password')->with('error', Lang::get('admin/users/table.lock_passwords'));
} else {
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
@@ -61,6 +66,7 @@ class ChangePasswordController extends AuthorizedController
// Update the user password
$user->password = Input::get('password');
$user->save();
}
// Redirect to the change-password page
return Redirect::route('change-password')->with('success', 'Password successfully updated');
@@ -8,6 +8,9 @@ use Validator;
use Location;
use View;
use Asset;
use Actionlog;
use Lang;
use Accessory;
class ViewAssetsController extends AuthorizedController
{
@@ -36,7 +39,7 @@ class ViewAssetsController extends AuthorizedController
public function getRequestableIndex() {
$assets = Asset::with('model','defaultLoc')->Hardware()->Requestable()->get();
$assets = Asset::with('model','defaultLoc')->Hardware()->RequestableAssets()->get();
return View::make('frontend/account/requestable-assets', compact('user','assets'));
}
@@ -55,6 +58,89 @@ class ViewAssetsController extends AuthorizedController
}
// Get the acceptance screen
public function getAcceptAsset($logID = null) {
if (is_null($findlog = Actionlog::find($logID))) {
// Redirect to the asset management page
return Redirect::to('account')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
// Asset
if (($findlog->asset_id!='') && ($findlog->asset_type=='hardware')) {
$item = Asset::find($findlog->asset_id);
// software
} elseif (($findlog->asset_id!='') && ($findlog->asset_type=='software')) {
$item = License::find($findlog->asset_id);
// accessories
} elseif ($findlog->accessory_id!='') {
$item = Accessory::find($findlog->accessory_id);
}
// Check if the asset exists
if (is_null($item)) {
// Redirect to the asset management page
return Redirect::to('account')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
return View::make('frontend/account/accept-asset', compact('item'))->with('findlog', $findlog);
}
// Save the acceptance
public function postAcceptAsset($logID = null) {
// Check if the asset exists
if (is_null($findlog = Actionlog::find($logID))) {
// Redirect to the asset management page
return Redirect::to('account')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
$user = Sentry::getUser();
$logaction = new Actionlog();
// Asset
if (($findlog->asset_id!='') && ($findlog->asset_type=='hardware')) {
$logaction->asset_id = $findlog->asset_id;
$logaction->accessory_id = NULL;
$logaction->asset_type = 'hardware';
// software
} elseif (($findlog->asset_id!='') && ($findlog->asset_type=='software')) {
$logaction->asset_id = $findlog->asset_id;
$logaction->accessory_id = NULL;
$logaction->asset_type = 'software';
// accessories
} elseif ($findlog->accessory_id!='') {
$logaction->asset_id = NULL;
$logaction->accessory_id = $findlog->accessory_id;
$logaction->asset_type = 'accessory';
}
$logaction->checkedout_to = $findlog->checkedout_to;
$logaction->note = e(Input::get('note'));
$logaction->user_id = $user->id;
$logaction->accepted_at = date("Y-m-d h:i:s");
$log = $logaction->logaction('accepted');
return Redirect::to('account/view-assets')->with('success', 'You have successfully accept this asset.');
}
}
+362
View File
@@ -0,0 +1,362 @@
<?php namespace Controllers\Admin;
use AdminController;
use Input;
use Lang;
use Accessory;
use Redirect;
use Setting;
use DB;
use Sentry;
use Str;
use Validator;
use View;
use User;
use Actionlog;
use Mail;
class AccessoriesController extends AdminController
{
/**
* Show a list of all the accessories.
*
* @return View
*/
public function getIndex()
{
// Grab all the accessories
$accessories = Accessory::orderBy('created_at', 'DESC')->get();
// Show the page
return View::make('backend/accessories/index', compact('accessories'));
}
/**
* Accessory create.
*
* @return View
*/
public function getCreate()
{
// Show the page
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->lists('name', 'id');
return View::make('backend/accessories/edit')->with('accessory',new Accessory)->with('category_list',$category_list);
}
/**
* Accessory create form processing.
*
* @return Redirect
*/
public function postCreate()
{
// create a new model instance
$accessory = new Accessory();
$validator = Validator::make(Input::all(), $accessory->rules);
if ($validator->fails())
{
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
else{
// Update the accessory data
$accessory->name = e(Input::get('name'));
$accessory->category_id = e(Input::get('category_id'));
$accessory->qty = e(Input::get('qty'));
$accessory->user_id = Sentry::getId();
// Was the accessory created?
if($accessory->save()) {
// Redirect to the new accessory page
return Redirect::to("admin/accessories")->with('success', Lang::get('admin/accessories/message.create.success'));
}
}
// Redirect to the accessory create page
return Redirect::to('admin/accessories/create')->with('error', Lang::get('admin/accessories/message.create.error'));
}
/**
* Accessory update.
*
* @param int $accessoryId
* @return View
*/
public function getEdit($accessoryId = null)
{
// Check if the accessory exists
if (is_null($accessory = Accessory::find($accessoryId))) {
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.does_not_exist'));
}
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->lists('name', 'id');
return View::make('backend/accessories/edit', compact('accessory'))->with('category_list',$category_list);
}
/**
* Accessory update form processing page.
*
* @param int $accessoryId
* @return Redirect
*/
public function postEdit($accessoryId = null)
{
// Check if the blog post exists
if (is_null($accessory = Accessory::find($accessoryId))) {
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.does_not_exist'));
}
// get the POST data
$new = Input::all();
// attempt validation
$validator = Validator::make(Input::all(), $accessory->validationRules($accessoryId));
if ($validator->fails())
{
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
// attempt validation
else {
// Update the accessory data
$accessory->name = e(Input::get('name'));
$accessory->category_id = e(Input::get('category_id'));
$accessory->qty = e(Input::get('qty'));
// Was the accessory created?
if($accessory->save()) {
// Redirect to the new accessory page
return Redirect::to("admin/accessories")->with('success', Lang::get('admin/accessories/message.update.success'));
}
}
// Redirect to the accessory management page
return Redirect::to("admin/accessories/$accessoryID/edit")->with('error', Lang::get('admin/accessories/message.update.error'));
}
/**
* Delete the given accessory.
*
* @param int $accessoryId
* @return Redirect
*/
public function getDelete($accessoryId)
{
// Check if the blog post exists
if (is_null($accessory = Accessory::find($accessoryId))) {
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
if ($accessory->hasUsers() > 0) {
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.assoc_users', array('count'=> $accessory->hasUsers())));
} else {
$accessory->delete();
// Redirect to the locations management page
return Redirect::to('admin/accessories')->with('success', Lang::get('admin/accessories/message.delete.success'));
}
}
/**
* Get the accessory information to present to the accessory view page
*
* @param int $accessoryId
* @return View
**/
public function getView($accessoryID = null)
{
$accessory = Accessory::find($accessoryID);
if (isset($accessory->id)) {
return View::make('backend/accessories/view', compact('accessory'));
} else {
// Prepare the error message
$error = Lang::get('admin/accessories/message.does_not_exist', compact('id'));
// Redirect to the user management page
return Redirect::route('accessories')->with('error', $error);
}
}
/**
* Check out the accessory to a person
**/
public function getCheckout($accessoryId)
{
// Check if the accessory exists
if (is_null($accessory = Accessory::find($accessoryId))) {
// Redirect to the accessory management page with error
return Redirect::to('accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
// Get the dropdown of users and then pass it to the checkout view
$users_list = array('' => 'Select a User') + DB::table('users')->select(DB::raw('concat(last_name,", ",first_name) as full_name, id'))->whereNull('deleted_at')->orderBy('last_name', 'asc')->orderBy('first_name', 'asc')->lists('full_name', 'id');
return View::make('backend/accessories/checkout', compact('accessory'))->with('users_list',$users_list);
}
/**
* Check out the accessory to a person
**/
public function postCheckout($accessoryId)
{
// Check if the accessory exists
if (is_null($accessory = Accessory::find($accessoryId))) {
// Redirect to the accessory management page with error
return Redirect::to('accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
$assigned_to = e(Input::get('assigned_to'));
// Declare the rules for the form validation
$rules = array(
'assigned_to' => 'required|min:1'
);
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
// If validation fails, we'll exit the operation now.
if ($validator->fails()) {
// Ooops.. something went wrong
return Redirect::back()->withInput()->withErrors($validator);
}
// Check if the user exists
if (is_null($user = User::find($assigned_to))) {
// Redirect to the accessory management page with error
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.user_does_not_exist'));
}
// Update the accessory data
$accessory->assigned_to = e(Input::get('assigned_to'));
$accessory->users()->attach($accessory->id, array(
'accessory_id' => $accessory->id,
'assigned_to' => e(Input::get('assigned_to'))));
$logaction = new Actionlog();
$logaction->accessory_id = $accessory->id;
$logaction->checkedout_to = $accessory->assigned_to;
$logaction->asset_type = 'accessory';
$logaction->location_id = $user->location_id;
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('note'));
$log = $logaction->logaction('checkout');
$accessory_user = DB::table('accessories_users')->where('assigned_to','=',$accessory->assigned_to)->where('accessory_id','=',$accessory->id)->first();
$data['log_id'] = $logaction->id;
$data['eula'] = $accessory->getEula();
$data['first_name'] = $user->first_name;
$data['item_name'] = $accessory->name;
$data['require_acceptance'] = $accessory->requireAcceptance();
if (($accessory->requireAcceptance()=='1') || ($accessory->getEula())) {
Mail::send('emails.accept-asset', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Confirm accessory delivery');
});
}
// Redirect to the new accessory page
return Redirect::to("admin/accessories")->with('success', Lang::get('admin/accessories/message.checkout.success'));
}
/**
* Check the accessory back into inventory
*
* @param int $accessoryId
* @return View
**/
public function getCheckin($accessoryUserId)
{
// Check if the accessory exists
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
// Redirect to the accessory management page with error
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
$accessory = Accessory::find($accessory_user->accessory_id);
return View::make('backend/accessories/checkin', compact('accessory'));
}
/**
* Check in the item so that it can be checked out again to someone else
*
* @param int $accessoryId
* @return View
**/
public function postCheckin($accessoryUserId)
{
// Check if the accessory exists
if (is_null($accessory_user = DB::table('accessories_users')->find($accessoryUserId))) {
// Redirect to the accessory management page with error
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
$accessory = Accessory::find($accessory_user->accessory_id);
$logaction = new Actionlog();
$logaction->checkedout_to = $accessory_user->assigned_to;
// Was the accessory updated?
if(DB::table('accessories_users')->where('id', '=', $accessory_user->id)->delete()) {
$logaction->accessory_id = $accessory->id;
$logaction->location_id = NULL;
$logaction->asset_type = 'accessory';
$logaction->user_id = Sentry::getUser()->id;
$log = $logaction->logaction('checkin from');
// Redirect to the new accessory page
return Redirect::to("admin/accessories")->with('success', Lang::get('admin/accessories/message.checkin.success'));
}
// Redirect to the accessory management page with error
return Redirect::to("admin/accessories")->with('error', Lang::get('admin/accessories/message.checkin.error'));
}
}
+259 -17
View File
@@ -21,12 +21,12 @@ use Response;
use Config;
use Location;
use Log;
use BaconQrCode\Renderer\Image as QrImage;
use DNS2D;
use Mail;
class AssetsController extends AdminController
{
protected $qrCodeDimensions = array( 'height' => 170, 'width' => 170);
protected $qrCodeDimensions = array( 'height' => 3.5, 'width' => 3.5);
/**
* Show a list of all the assets.
@@ -239,7 +239,10 @@ class AssetsController extends AdminController
// Grab the dropdown list of models
$model_list = array('' => '') + Model::orderBy('name', 'asc')->lists('name', 'id');
$model_list = array('' => '') + DB::table('models')
->select(DB::raw('concat(name," / ",modelno) as name, id'))->orderBy('name', 'asc')
->orderBy('modelno', 'asc')
->lists('name', 'id');
$supplier_list = array('' => '') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
$location_list = array('' => '') + Location::orderBy('name', 'asc')->lists('name', 'id');
@@ -306,7 +309,7 @@ class AssetsController extends AdminController
$asset->supplier_id = e(Input::get('supplier_id'));
}
if (e(Input::get('requestable')) == '') {
if (e(Input::get('requestable')) == '') {
$asset->requestable = 0;
} else {
$asset->requestable = e(Input::get('requestable'));
@@ -429,7 +432,7 @@ class AssetsController extends AdminController
// Check if the user exists
if (is_null($assigned_to = User::find($assigned_to))) {
if (is_null($user = User::find($assigned_to))) {
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.user_does_not_exist'));
}
@@ -443,10 +446,25 @@ class AssetsController extends AdminController
$logaction->asset_id = $asset->id;
$logaction->checkedout_to = $asset->assigned_to;
$logaction->asset_type = 'hardware';
$logaction->location_id = $assigned_to->location_id;
$logaction->location_id = $user->location_id;
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('note'));
$log = $logaction->logaction('checkout');
$data['log_id'] = $logaction->id;
$data['eula'] = $asset->getEula();
$data['first_name'] = $user->first_name;
$data['item_name'] = $asset->name;
$data['require_acceptance'] = $asset->requireAcceptance();
if (($asset->requireAcceptance()=='1') || ($asset->getEula())) {
Mail::send('emails.accept-asset', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Confirm asset delivery');
});
}
// Redirect to the new asset page
return Redirect::to("hardware")->with('success', Lang::get('admin/hardware/message.checkout.success'));
@@ -534,8 +552,6 @@ class AssetsController extends AdminController
$qr_code = (object) array(
'display' => $settings->qr_code == '1',
'height' => $this->qrCodeDimensions['height'],
'width' => $this->qrCodeDimensions['width'],
'url' => route('qr_code/hardware', $asset->id)
);
@@ -562,15 +578,15 @@ class AssetsController extends AdminController
if ($settings->qr_code == '1') {
$asset = Asset::find($assetId);
if (isset($asset->id)) {
if (isset($asset->id,$asset->asset_tag)) {
$content = DNS2D::getBarcodePNG(route('view/hardware', $asset->id), "QRCODE",
$this->qrCodeDimensions['height'],$this->qrCodeDimensions['width']);
$renderer = new \BaconQrCode\Renderer\Image\Png;
$renderer->setWidth($this->qrCodeDimensions['height'])
->setHeight($this->qrCodeDimensions['height']);
$writer = new \BaconQrCode\Writer($renderer);
$content = $writer->writeString(route('view/hardware', $asset->id));
$img = imagecreatefromstring(base64_decode($content));
imagepng($img);
imagedestroy($img);
$content_disposition = sprintf('attachment;filename=qr_code_%s.png', preg_replace('/\W/', '', $asset->asset_tag));
$response = Response::make($content, 200);
@@ -604,7 +620,7 @@ class AssetsController extends AdminController
// Grab the dropdown list of status
$statuslabel_list = Statuslabel::lists('name', 'id');
$location_list = array('' => '') + Location::lists('name', 'id');
$location_list = array('' => '') + Location::lists('name', 'id');
// get depreciation list
$depreciation_list = array('' => '') + Depreciation::lists('name', 'id');
@@ -641,4 +657,230 @@ class AssetsController extends AdminController
}
}
/**
* Upload the file to the server
*
* @param int $assetId
* @return View
**/
public function postUpload($assetID = null)
{
$asset = Asset::find($assetID);
// the asset is valid
$destinationPath = app_path().'/private_uploads';
if (isset($asset->id)) {
if (Input::hasFile('assetfile')) {
foreach(Input::file('assetfile') as $file) {
$rules = array(
'assetfile' => 'required|mimes:png,gif,jpg,jpeg,doc,docx,pdf,txt|max:2000'
);
$validator = Validator::make(array('assetfile'=> $file), $rules);
if($validator->passes()){
$extension = $file->getClientOriginalExtension();
$filename = 'hardware-'.$asset->id.'-'.str_random(8);
$filename .= '-'.Str::slug($file->getClientOriginalName()).'.'.$extension;
$upload_success = $file->move($destinationPath, $filename);
//Log the deletion of seats to the log
$logaction = new Actionlog();
$logaction->asset_id = $asset->id;
$logaction->asset_type = 'hardware';
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('notes'));
$logaction->checkedout_to = NULL;
$logaction->created_at = date("Y-m-d h:i:s");
$logaction->filename = $filename;
$log = $logaction->logaction('uploaded');
} else {
return Redirect::back()->with('error', Lang::get('admin/hardware/message.upload.invalidfiles'));
}
}
if ($upload_success) {
return Redirect::back()->with('success', Lang::get('admin/hardware/message.upload.success'));
} else {
return Redirect::back()->with('success', Lang::get('admin/hardware/message.upload.error'));
}
} else {
return Redirect::back()->with('success', Lang::get('admin/hardware/message.upload.nofiles'));
}
} else {
// Prepare the error message
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id'));
// Redirect to the hardware management page
return Redirect::route('hardware')->with('error', $error);
}
}
/**
* Delete the associated file
*
* @param int $assetId
* @return View
**/
public function getDeleteFile($assetID = null, $fileId = null)
{
$asset = Asset::find($assetID);
$destinationPath = app_path().'/private_uploads';
// the asset is valid
if (isset($asset->id)) {
$log = Actionlog::find($fileId);
$full_filename = $destinationPath.'/'.$log->filename;
if (file_exists($full_filename)) {
unlink($destinationPath.'/'.$log->filename);
}
$log->delete();
return Redirect::back()->with('success', Lang::get('admin/hardware/message.deletefile.success'));
} else {
// Prepare the error message
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id'));
// Redirect to the hardware management page
return Redirect::route('hardware')->with('error', $error);
}
}
/**
* Display/download the uploaded file
*
* @param int $assetId
* @return View
**/
public function displayFile($assetID = null, $fileId = null)
{
$asset = Asset::find($assetID);
// the asset is valid
if (isset($asset->id)) {
$log = Actionlog::find($fileId);
$file = $log->get_src();
return Response::download($file);
} else {
// Prepare the error message
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id'));
// Redirect to the hardware management page
return Redirect::route('hardware')->with('error', $error);
}
}
/**
* Display bulk edit screen
*
* @return View
**/
public function postBulkEdit($assets = null)
{
if (Input::has('edit_asset')) {
$assets = Input::get('edit_asset');
$supplier_list = array('' => '') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
$statuslabel_list = array('' => '') + Statuslabel::lists('name', 'id');
$location_list = array('' => '') + Location::lists('name', 'id');
}
return View::make('backend/hardware/bulk')->with('assets',$assets)->with('supplier_list',$supplier_list)->with('statuslabel_list',$statuslabel_list)->with('location_list',$location_list);
}
/**
* Save bulk edits
*
* @return View
**/
public function postBulkSave($assets = null)
{
if (Input::has('bulk_edit')) {
$assets = Input::get('bulk_edit');
if ( (Input::has('purchase_date')) || (Input::has('rtd_location_id')) || (Input::has('status_id')) ) {
foreach ($assets as $key => $value) {
$update_array = array();
if (Input::has('purchase_date')) {
$update_array['purchase_date'] = e(Input::get('purchase_date'));
}
if (Input::has('rtd_location_id')) {
$update_array['rtd_location_id'] = e(Input::get('rtd_location_id'));
}
if (Input::has('status_id')) {
$update_array['status_id'] = e(Input::get('status_id'));
}
if (DB::table('assets')
->where('id', $key)
->update($update_array)) {
$logaction = new Actionlog();
$logaction->asset_id = $key;
$logaction->asset_type = 'hardware';
$logaction->created_at = date("Y-m-d h:i:s");
if (Input::has('rtd_location_id')) {
$logaction->location_id = e(Input::get('rtd_location_id'));
}
$logaction->user_id = Sentry::getUser()->id;
$log = $logaction->logaction('update');
}
} // endforeach
return Redirect::to("hardware")->with('success', Lang::get('admin/hardware/message.update.success'));
// no values given, nothing to update
} else {
return Redirect::to("hardware")->with('info',Lang::get('admin/hardware/message.update.nothing_updated'));
}
} // endif
return Redirect::to("hardware");
}
}
+19 -5
View File
@@ -38,7 +38,9 @@ class CategoriesController extends AdminController
public function getCreate()
{
// Show the page
return View::make('backend/categories/edit')->with('category',new Category);
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory');
return View::make('backend/categories/edit')->with('category',new Category)
->with('category_types',$category_types);
}
@@ -63,8 +65,12 @@ class CategoriesController extends AdminController
else{
// Update the category data
$category->name = e(Input::get('name'));
$category->user_id = Sentry::getId();
$category->name = e(Input::get('name'));
$category->category_type = e(Input::get('category_type'));
$category->eula_text = e(Input::get('eula_text'));
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
$category->user_id = Sentry::getId();
// Was the asset created?
if($category->save()) {
@@ -97,7 +103,11 @@ class CategoriesController extends AdminController
//$category_options = array('' => 'Top Level') + Category::lists('name', 'id');
$category_options = array('' => 'Top Level') + DB::table('categories')->where('id', '!=', $categoryId)->lists('name', 'id');
return View::make('backend/categories/edit', compact('category'))->with('category_options',$category_options);
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory');
return View::make('backend/categories/edit', compact('category'))
->with('category_options',$category_options)
->with('category_types',$category_types);
}
@@ -133,6 +143,10 @@ class CategoriesController extends AdminController
// Update the category data
$category->name = e(Input::get('name'));
$category->category_type = e(Input::get('category_type'));
$category->eula_text = e(Input::get('eula_text'));
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
// Was the asset created?
if($category->save()) {
@@ -154,7 +168,7 @@ class CategoriesController extends AdminController
*/
public function getDelete($categoryId)
{
// Check if the blog post exists
// Check if the category exists
if (is_null($category = Category::find($categoryId))) {
// Redirect to the blogs management page
return Redirect::to('admin/settings/categories')->with('error', Lang::get('admin/categories/message.not_found'));
+53 -1
View File
@@ -2,6 +2,8 @@
use AdminController;
use View;
use Asset;
use Actionlog;
class DashboardController extends AdminController
{
@@ -13,7 +15,57 @@ class DashboardController extends AdminController
public function getIndex()
{
// Show the page
return View::make('backend/dashboard');
$recent_activity = Actionlog::orderBy('created_at','DESC')->take(7)->get();
$asset_stats['total'] = Asset::Hardware()->count();
$asset_stats['rtd']['total'] = Asset::Hardware()->RTD()->count();
if ($asset_stats['rtd']['total'] > 0) {
$asset_stats['rtd']['percent'] = round(($asset_stats['rtd']['total']/$asset_stats['total']) * 100);
} else {
$asset_stats['rtd']['percent'] = 0;
}
$asset_stats['pending']['total'] = Asset::Hardware()->Pending()->count();
if ($asset_stats['pending']['total'] > 0) {
$asset_stats['pending']['percent'] = round(($asset_stats['pending']['total']/$asset_stats['total']) * 100);
} else {
$asset_stats['pending']['percent'] = 0;
}
$asset_stats['deployed']['total'] = Asset::Hardware()->Deployed()->count();
if ($asset_stats['deployed']['total'] > 0) {
$asset_stats['deployed']['percent'] = round(($asset_stats['deployed']['total']/$asset_stats['total']) * 100);
} else {
$asset_stats['deployed']['percent'] = 0;
}
$asset_stats['undeployable']['total'] = Asset::Hardware()->Undeployable()->count();
if ($asset_stats['undeployable']['total'] > 0) {
$asset_stats['undeployable']['percent'] = round(($asset_stats['undeployable']['total']/$asset_stats['total']) * 100);
} else {
$asset_stats['undeployable']['percent'] = 0;
}
$asset_stats['archived']['total'] = Asset::Hardware()->Archived()->count();
if ($asset_stats['archived']['total'] > 0) {
$asset_stats['archived']['percent'] = round(($asset_stats['archived']['total']/$asset_stats['total']) * 100);
} else {
$asset_stats['archived']['percent'] = 0;
}
return View::make('backend/dashboard')->with('asset_stats',$asset_stats)->with('recent_activity',$recent_activity);
}
}
+5 -4
View File
@@ -369,8 +369,8 @@ class LicensesController extends AdminController
// Delete the license and the associated license seats
DB::table('license_seats')
->where('id', $asset->id)
->update(array('assigned_to' => NULL));
->where('id', $license->id)
->update(array('assigned_to' => NULL,'asset_id' => NULL));
$licenseseats = $license->licenseseats();
$licenseseats->delete();
@@ -511,6 +511,7 @@ class LicensesController extends AdminController
$logaction->asset_type = 'software';
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('note'));
$logaction->asset_id = $licenseseat->license_id;
// Update the asset data
@@ -578,12 +579,12 @@ class LicensesController extends AdminController
$logaction->checkedout_to = $licenseseat->assigned_to;
// Update the asset data
$licenseseat->assigned_to = '0';
$licenseseat->assigned_to = NULL;
$licenseseat->asset_id = NULL;
// Was the asset updated?
if($licenseseat->save()) {
$logaction->asset_id = NULL;
$logaction->asset_id = $licenseseat->license_id;
$logaction->location_id = NULL;
$logaction->asset_type = 'software';
$logaction->note = e(Input::get('note'));
+30 -2
View File
@@ -25,7 +25,12 @@ class ModelsController extends AdminController
public function getIndex()
{
// Grab all the models
$models = Model::orderBy('created_at', 'DESC')->get();
$models = Model::orderBy('created_at', 'DESC');
if (Input::get('Deleted')) {
$models->withTrashed()->Deleted();
}
$models = $models->with('category','assets','depreciation')->get();
// Show the page
return View::make('backend/models/index', compact('models'));
@@ -238,6 +243,29 @@ class ModelsController extends AdminController
return Redirect::to('hardware/models')->with('success', Lang::get('admin/models/message.delete.success'));
}
}
public function getRestore($modelId = null)
{
// Get user information
$model = Model::withTrashed()->find($modelId);
if (isset($model->id)) {
// Restore the model
$model->restore();
// Prepare the success message
$success = Lang::get('admin/models/message.restore.success');
// Redirect back
return Redirect::back()->with('success', $success);
} else {
return Redirect::back()->with('error', Lang::get('admin/models/message.not_found'));
}
}
/**
@@ -248,7 +276,7 @@ class ModelsController extends AdminController
**/
public function getView($modelId = null)
{
$model = Model::find($modelId);
$model = Model::withTrashed()->find($modelId);
if (isset($model->id)) {
return View::make('backend/models/view', compact('model'));
+8 -7
View File
@@ -148,10 +148,8 @@ class ReportsController extends AdminController
*/
public function exportDeprecationReport()
{
// @todo - It may be worthwhile creating a separate controller for reporting
// Grab all the assets
$assets = Asset::orderBy('created_at', 'DESC')->get();
$assets = Asset::with('model','assigneduser','assetstatus','defaultLoc','assetlog')->orderBy('created_at', 'DESC')->get();
$rows = array();
@@ -198,17 +196,20 @@ class ReportsController extends AdminController
$row[] = ''; // Empty string if location is not set
}
$depreciation = $asset->depreciate();
$row[] = $asset->purchase_date;
$row[] = '"'.number_format($asset->purchase_cost).'"';
$row[] = '"'.number_format($depreciation).'"';
$row[] = '"'.number_format($asset->purchase_cost - $depreciation).'"';
$row[] = '"'.Lang::get('general.currency').number_format($asset->purchase_cost).'"';
$row[] = '"'.Lang::get('general.currency').number_format($asset->getDepreciatedValue()).'"';
$row[] = '"-'.Lang::get('general.currency').number_format(($asset->purchase_cost - $asset->getDepreciatedValue())).'"';
$rows[] = implode($row, ',');
}
// spit out a csv
$csv = implode($rows, "\n");
$response = Response::make($csv, 200);
$response->header('Content-Type', 'text/csv');
$response->header('Content-disposition', 'attachment;filename=report.csv');
+25 -2
View File
@@ -10,6 +10,7 @@ use Sentry;
use Str;
use Validator;
use View;
use Image;
class SettingsController extends AdminController
{
@@ -64,8 +65,10 @@ class SettingsController extends AdminController
// Declare the rules for the form validation
$rules = array(
"site_name" => 'required|min:3',
"per_page" => 'required|min:1|numeric',
"qr_text" => 'min:1|max:31'
"per_page" => 'required|min:1|numeric',
"qr_text" => 'min:1|max:31',
"logo" => 'mimes:jpeg,bmp,png,gif',
"alert_email" => 'email',
);
// Create a new validator instance from our validation rules
@@ -77,6 +80,20 @@ class SettingsController extends AdminController
// Ooops.. something went wrong
return Redirect::back()->withInput()->withErrors($validator);
}
if (Input::get('clear_logo')=='1') {
$setting->logo = NULL;
} elseif (Input::file('logo')) {
$image = Input::file('logo');
$file_name = "logo.".$image->getClientOriginalExtension();
$path = public_path('uploads/'.$file_name);
Image::make($image->getRealPath())->resize(null, 40, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->save($path);
$setting->logo = $file_name;
}
// Update the asset data
$setting->id = '1';
@@ -86,9 +103,15 @@ class SettingsController extends AdminController
$setting->per_page = e(Input::get('per_page'));
$setting->qr_code = e(Input::get('qr_code', '0'));
$setting->display_eol = e(Input::get('display_eol', '0'));
$setting->load_remote = e(Input::get('load_remote', '0'));
$setting->qr_text = e(Input::get('qr_text'));
$setting->auto_increment_prefix = e(Input::get('auto_increment_prefix'));
$setting->auto_increment_assets = e(Input::get('auto_increment_assets', '0'));
$setting->alert_email = e(Input::get('alert_email'));
$setting->alerts_enabled = e(Input::get('alerts_enabled', '0'));
$setting->header_color = e(Input::get('header_color'));
$setting->default_eula_text = e(Input::get('default_eula_text'));
// Was the asset updated?
if($setting->save()) {
+137 -2
View File
@@ -21,6 +21,8 @@ use Sentry;
use Validator;
use View;
use Chumper\Datatable\Facades\Datatable;
use League\Csv\Reader;
use Mail;
class UsersController extends AdminController
{
@@ -149,7 +151,7 @@ class UsersController extends AdminController
// permissions here before we create the user.
// Get the inputs, with some exceptions
$inputs = Input::except('csrf_token', 'password_confirm', 'groups');
$inputs = Input::except('csrf_token', 'password_confirm', 'groups','email_user');
// @TODO: Figure out WTF I need to do this.
if ($inputs['manager_id']=='') {
@@ -174,6 +176,22 @@ class UsersController extends AdminController
// Redirect to the new user page
//return Redirect::route('update/user', $user->id)->with('success', $success);
if (Input::get('email_user')==1) {
// Send the credentials through email
$data = array();
$data['email'] = e(Input::get('email'));
$data['first_name'] = e(Input::get('first_name'));
$data['password'] = e(Input::get('password'));
Mail::send('emails.send-login', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Welcome ' . $user->first_name);
});
}
return Redirect::route('users')->with('success', $success);
}
@@ -493,7 +511,7 @@ class UsersController extends AdminController
}
)
->addColumn('activated', function ($model) {
$activated = $model->isActivated() ? '<i class="icon-ok"></i>' : '';
$activated = $model->isActivated() ? '<i class="fa fa-check"></i>' : '';
return $activated;
}
)
@@ -601,5 +619,122 @@ class UsersController extends AdminController
return Redirect::route('users')->with('error', $error);
}
}
/**
* User import.
*
* @return View
*/
public function getImport()
{
// Get all the available groups
$groups = Sentry::getGroupProvider()->findAll();
// Selected groups
$selectedGroups = Input::old('groups', array());
// Get all the available permissions
$permissions = Config::get('permissions');
$this->encodeAllPermissions($permissions);
// Selected permissions
$selectedPermissions = Input::old('permissions', array('superuser' => -1));
$this->encodePermissions($selectedPermissions);
// Show the page
return View::make('backend/users/import', compact('groups', 'selectedGroups', 'permissions', 'selectedPermissions'));
}
/**
* User import form processing.
*
* @return Redirect
*/
public function postImport()
{
if (! ini_get("auto_detect_line_endings")) {
ini_set("auto_detect_line_endings", '1');
}
$csv = Reader::createFromPath(Input::file('user_import_csv'));
$csv->setNewline("\r\n");
if (Input::get('has_headers')==1) {
$csv->setOffset(1);
}
$duplicates = '';
$nbInsert = $csv->each(function ($row) use ($duplicates) {
if (array_key_exists(2, $row)) {
if (Input::get('activate')==1) {
$activated = '1';
} else {
$activated = '0';
}
$pass = substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10);
try {
// Check if this email already exists in the system
$user = DB::table('users')->where('email', $row[2])->first();
if ($user) {
$duplicates .= $row[2].', ';
} else {
$newuser = array(
'first_name' => $row[0],
'last_name' => $row[1],
'email' => $row[2],
'password' => $pass,
'activated' => $activated,
'permissions' => '{"user":1}'
);
DB::table('users')->insert($newuser);
$udpateuser = Sentry::findUserByLogin($row[2]);
// Update the user details
$udpateuser->password = $pass;
// Update the user
$udpateuser->save();
if (Input::get('email_user')==1) {
// Send the credentials through email
$data = array();
$data['email'] = $row[2];
$data['first_name'] = $row[0];
$data['password'] = $pass;
Mail::send('emails.send-login', $data, function ($m) use ($newuser) {
$m->to($newuser['email'], $newuser['first_name'] . ' ' . $newuser['last_name']);
$m->subject('Welcome ' . $newuser['first_name']);
});
}
}
} catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}
return true;
}
});
return Redirect::route('users')->with('duplicates',$duplicates)->with('success', 'Success');
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddLocalonlyToSettings extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('settings', function ($table) {
$table->boolean('load_remote')->default(1);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('settings', function ($table) {
$table->dropColumn('load_remote');
});
}
}
@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddLogoAndColorsToSettings extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('settings', function ($table) {
$table->string('logo')->nullable()->default(NULL);
$table->string('header_color')->nullable()->default(NULL);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('settings', function ($table) {
$table->dropColumn('logo');
$table->dropColumn('header_color');
});
}
}
@@ -0,0 +1,36 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddAlertsToSettings extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('settings', function ($table) {
$table->string('alert_email')->nullable()->default(NULL);
$table->boolean('alerts_enabled')->default(1);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('settings', function ($table) {
$table->dropColumn('alert_email');
$table->dropColumn('alerts_enabled');
});
}
}
@@ -0,0 +1,69 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddEulaFields extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('settings', function ($table) {
$table->longText('default_eula_text');
});
Schema::table('categories', function ($table) {
$table->longText('eula_text');
$table->boolean('use_default_eula')->default(0);
$table->boolean('require_acceptance')->default(0);
});
Schema::table('asset_logs', function ($table) {
$table->dateTime('requested_at')->nullable()->default(NULL);
$table->dateTime('accepted_at')->nullable()->default(NULL);
});
Schema::create('requested_assets', function ($table) {
$table->increments('id');
$table->integer('asset_id')->default(NULL);
$table->integer('user_id')->default(NULL);
$table->dateTime('accepted_at')->nullable()->default(NULL);
$table->dateTime('denied_at')->nullable()->default(NULL);
$table->string('notes')->default(NULL);
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('settings', function ($table) {
$table->dropColumn('default_eula_text');
});
Schema::table('categories', function ($table) {
$table->dropColumn('eula_text');
$table->dropColumn('use_default_eula');
$table->dropColumn('require_acceptance');
});
Schema::table('asset_logs', function ($table) {
$table->dropColumn('requested_at');
$table->dropColumn('accepted_at');
});
Schema::drop('requested_assets');
}
}
@@ -0,0 +1,48 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddAccessoriesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::create('accessories', function ($table) {
$table->increments('id');
$table->string('name')->nullable()->default(NULL);
$table->integer('category_id')->nullable()->default(NULL);
$table->integer('user_id')->nullable()->default(NULL);
$table->integer('qty')->default(0);
$table->boolean('requestable')->default(0);
$table->timestamps();
$table->softDeletes();
});
Schema::table('asset_logs', function ($table) {
$table->integer('accessory_id')->nullable()->default(NULL);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('accessories');
Schema::table('asset_logs', function ($table) {
$table->dropColumn('accessory_id');
});
}
}
@@ -0,0 +1,46 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddAccessoriesUserTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::create('accessories_users', function ($table) {
$table->increments('id');
$table->integer('user_id')->nullable()->default(NULL);
$table->integer('accessory_id')->nullable()->default(NULL);
$table->integer('assigned_to')->nullable()->default(NULL);
$table->timestamps();
});
Schema::table('accessories', function ($table) {
$table->integer('location_id')->nullable()->default(NULL);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('accessories_users');
Schema::table('accessories', function ($table) {
$table->dropColumn('location_id');
});
}
}
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddDeletedAtModels extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('models', function ($table){
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('models', function ($table){
$table->dropColumn('deleted_at');
});
}
}
@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCategoryType extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('categories', function ($table) {
$table->string('category_type')->nullable()->default('asset');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('categories', function ($table) {
$table->dropColumn('category_type');
});
}
}
+2 -2
View File
@@ -175,8 +175,8 @@ class AssetsSeeder extends Seeder
$asset[] = array(
'name' => 'Broke-Ass Laptop',
'asset_tag' => 'NNY67567775',
'name' => 'Broken Laptop',
'asset_tag' => 'NNY6756756775',
'model_id' => 2,
'serial' => 'WS89080890',
'purchase_date' => '2012-01-02',
+10
View File
@@ -12,6 +12,8 @@ class CategoriesSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'use_default_eula' => 0,
'require_acceptance' => 0,
'deleted_at' => NULL,
);
@@ -21,6 +23,8 @@ class CategoriesSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'use_default_eula' => 0,
'require_acceptance' => 0,
'deleted_at' => NULL,
);
@@ -30,6 +34,8 @@ class CategoriesSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'use_default_eula' => 0,
'require_acceptance' => 0,
'deleted_at' => NULL,
);
@@ -39,6 +45,8 @@ class CategoriesSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'use_default_eula' => 0,
'require_acceptance' => 0,
'deleted_at' => NULL,
);
@@ -48,6 +56,8 @@ class CategoriesSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'use_default_eula' => 0,
'require_acceptance' => 0,
'deleted_at' => NULL,
);
+20
View File
@@ -0,0 +1,20 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+37
View File
@@ -0,0 +1,37 @@
<?php
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
);
+9
View File
@@ -0,0 +1,9 @@
<?php
return array(
'eula_text' => 'EULA',
'id' => 'ID',
'require_acceptance' => 'Acceptance',
'title' => 'Accessory Name',
);
+10
View File
@@ -5,7 +5,17 @@ return array(
'about_categories' => 'تصنيفات الأصول تساعدك على ترتيب الأصول. من الأمثلة على التصنيفات &quot; مكاتب &quot;، &quot;أجهزة الكمبيوتر المحمولة &quot;، &quot;الهواتف النقالة &quot;، &quot;أجهزة لوحية &quot; وهكذا، كما يمكنك استخدام التصنيفات بأي طريقة تناسبك. ',
'asset_categories' => 'التصنيفات',
'category_name' => 'اسم التصنيف',
'clone' => 'Clone Category',
'create' => 'إنشاء تصنيف',
'edit' => 'Edit Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
'required_eula' => 'This user will be emailed a copy of the EULA',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'update' => 'تحديث التصنيف',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+5 -4
View File
@@ -1,9 +1,10 @@
<?php
return array(
'id' => 'الرقم',
'parent' => 'التصنيف الأب',
'title' => 'اسم التصنيف',
'eula_text' => 'EULA',
'id' => 'الرقم',
'parent' => 'التصنيف الأب',
'require_acceptance' => 'Acceptance',
'title' => 'اسم التصنيف',
);
+3
View File
@@ -2,6 +2,9 @@
return array(
'bulk_update' => 'Bulk Update Assets',
'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ',
'bulk_update_warn' => 'You are about to edit the properties of :asset_count assets.',
'checkedout_to' => 'Checked Out To',
'checkout_to' => 'Checkout to',
'cost' => 'Purchase Cost',
+1
View File
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
'pending' => 'Pending',
+16 -2
View File
@@ -13,14 +13,28 @@ return array(
),
'update' => array(
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.'
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.',
'nothing_updated' => 'No fields were selected, so nothing was updated.',
),
'restore' => array(
'error' => 'Asset was not restored, please try again',
'success' => 'Asset restored successfully.'
),
'deletefile' => array(
'error' => 'File not deleted. Please try again.',
'success' => 'File successfully deleted.',
),
'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.',
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this asset?',
+4
View File
@@ -2,6 +2,10 @@
return array(
'deleted' => 'This model has been deleted. <a href="/hardware/models/:model_id/restore">Click here to restore it</a>.',
'restore' => 'Restore Model',
'show_mac_address' => 'Show MAC address field in assets in this model',
'view_deleted' => 'View Deleted',
'view_models' => 'View Models',
);
+6 -1
View File
@@ -20,6 +20,11 @@ return array(
'confirm' => 'Are you sure you wish to delete this asset model?',
'error' => 'There was an issue deleting the model. Please try again.',
'success' => 'The model was deleted successfully.'
)
),
'restore' => array(
'error' => 'Model was not restored, please try again',
'success' => 'Model restored successfully.'
),
);
+9 -1
View File
@@ -1,15 +1,23 @@
<?php
return array(
'alert_email' => 'Send alerts to',
'alerts_enabled' => 'Alerts enabled',
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auti_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'default_eula_text' => 'Default EULA',
'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',
'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display QR Codes',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'load_remote' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
'php_gd_info' => 'You must install php-gd to display QR codes, see install instructions.',
+1
View File
@@ -11,4 +11,5 @@ return array(
'last_login' => 'Last Login',
'software_user' => 'Software Checked out to :name',
'view_user' => 'View User :name',
'usercsv' => 'CSV file',
);
+4 -2
View File
@@ -18,14 +18,16 @@ return array(
'unban' => 'User was successfully unbanned.',
'suspend' => 'User was successfully suspended.',
'unsuspend' => 'User was successfully unsuspended.',
'restored' => 'User was successfully restored.'
'restored' => 'User was successfully restored.',
+ 'import' => 'Users imported successfully.',
),
'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.',
'unsuspend' => 'There was an issue unsuspending the user. Please try again.'
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
'import' => 'There was an issue importing users. Please try again.',
),
);
+1
View File
@@ -18,6 +18,7 @@ return array(
'last_login' => 'Last Login',
'last_name' => 'Last Name',
'location' => 'Location',
'lock_passwords' => 'Login details cannot be changed on this installation.',
'manager' => 'Manager',
'name' => 'Name',
'password_confirm' => 'Confirm Password',
+7 -2
View File
@@ -3,6 +3,8 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'العنوان',
'admin' => 'الإدارة',
'all_assets' => 'كل الأصول',
@@ -32,11 +34,13 @@ return array(
'currency' => '$',
'current' => 'الحالي',
'custom_report' => 'Custom Asset Report',
'dashboard' => 'Dashboard',
'date' => 'التاريخ',
'delete' => 'حذف',
'deleted' => 'تم حذفها',
'deployed' => 'مُوزعة',
'depreciation_report' => 'تقرير الإستهلاك',
'download' => 'Download',
'depreciation' => 'الإستهلاك',
'editprofile' => 'تعديل الملف الشخصي',
'eol' => 'الحياة',
@@ -48,8 +52,8 @@ return array(
'gravatar_email' => 'البريد الإلكتروني لخدمة Gravatar',
'history_for' => 'السجل لـ',
'id' => 'الرقم',
'image_delete' => 'حذف الصورة',
'image_upload' => 'رفع صورة',
'image_delete' => 'حذف الصورة',
'image_upload' => 'رفع صورة',
'last_name' => 'الإسم الأخير',
'license' => 'الرخص',
'license_report' => 'License Report',
@@ -85,6 +89,7 @@ return array(
'suppliers' => 'الموردون',
'total_assets' => 'إجمالي الأصول',
'total_licenses' => 'إجمالي الرخص',
'type' => 'Type',
'undeployable' => 'غير قابلة للتوزيع',
'unknown_admin' => 'إداري غير معروف',
'user' => 'المستخدم',
+1
View File
@@ -5,5 +5,6 @@ return array(
'actions' => 'الإجراءات',
'action' => 'Action',
'by' => 'By',
'item' => 'Item',
);
+20
View File
@@ -0,0 +1,20 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+37
View File
@@ -0,0 +1,37 @@
<?php
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
);
+9
View File
@@ -0,0 +1,9 @@
<?php
return array(
'eula_text' => 'EULA',
'id' => 'ID',
'require_acceptance' => 'Acceptance',
'title' => 'Accessory Name',
);
+10
View File
@@ -5,7 +5,17 @@ return array(
'about_categories' => 'Kategorie pomáhají organizovat majetek. Takovou kategorii může být např. &quot;Desktopy&quot;, &quot;Notebooky&quot;, &quot;Mobilní telefony&quot;, &quot;Tablety&quot;, apod., kategorie můžete ale používat jakkoliv Vám to bude dávat smysl. ',
'asset_categories' => 'Kategorie majetku',
'category_name' => 'Jméno kategorie',
'clone' => 'Clone Category',
'create' => 'Vytvořit kategorii',
'edit' => 'Edit Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
'required_eula' => 'This user will be emailed a copy of the EULA',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'update' => 'Upravit kategorii',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+5 -4
View File
@@ -1,9 +1,10 @@
<?php
return array(
'id' => 'ID',
'parent' => 'Nadřazená složka',
'title' => 'Jméno kategorie majetku',
'eula_text' => 'EULA',
'id' => 'ID',
'parent' => 'Nadřazená složka',
'require_acceptance' => 'Acceptance',
'title' => 'Jméno kategorie majetku',
);
+3
View File
@@ -2,6 +2,9 @@
return array(
'bulk_update' => 'Bulk Update Assets',
'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ',
'bulk_update_warn' => 'You are about to edit the properties of :asset_count assets.',
'checkedout_to' => 'Vydané komu',
'checkout_to' => 'Vydat někomu',
'cost' => 'Pořizovací cena',
+1
View File
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Upravit majetek',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
'pending' => 'Pending',
+16 -2
View File
@@ -13,14 +13,28 @@ return array(
),
'update' => array(
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.'
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.',
'nothing_updated' => 'No fields were selected, so nothing was updated.',
),
'restore' => array(
'error' => 'Asset was not restored, please try again',
'success' => 'Asset restored successfully.'
),
'deletefile' => array(
'error' => 'File not deleted. Please try again.',
'success' => 'File successfully deleted.',
),
'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.',
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this asset?',
+4
View File
@@ -2,6 +2,10 @@
return array(
'deleted' => 'This model has been deleted. <a href="/hardware/models/:model_id/restore">Click here to restore it</a>.',
'restore' => 'Restore Model',
'show_mac_address' => 'Show MAC address field in assets in this model',
'view_deleted' => 'View Deleted',
'view_models' => 'View Models',
);
+6 -1
View File
@@ -20,6 +20,11 @@ return array(
'confirm' => 'Are you sure you wish to delete this asset model?',
'error' => 'There was an issue deleting the model. Please try again.',
'success' => 'The model was deleted successfully.'
)
),
'restore' => array(
'error' => 'Model was not restored, please try again',
'success' => 'Model restored successfully.'
),
);
+9 -1
View File
@@ -1,15 +1,23 @@
<?php
return array(
'alert_email' => 'Send alerts to',
'alerts_enabled' => 'Alerts enabled',
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auti_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'default_eula_text' => 'Default EULA',
'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',
'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display QR Codes',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'load_remote' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
'php_gd_info' => 'You must install php-gd to display QR codes, see install instructions.',
+1
View File
@@ -11,4 +11,5 @@ return array(
'last_login' => 'Last Login',
'software_user' => 'Software Checked out to :name',
'view_user' => 'View User :name',
'usercsv' => 'CSV file',
);
+4 -2
View File
@@ -18,14 +18,16 @@ return array(
'unban' => 'User was successfully unbanned.',
'suspend' => 'User was successfully suspended.',
'unsuspend' => 'User was successfully unsuspended.',
'restored' => 'User was successfully restored.'
'restored' => 'User was successfully restored.',
+ 'import' => 'Users imported successfully.',
),
'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.',
'unsuspend' => 'There was an issue unsuspending the user. Please try again.'
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
'import' => 'There was an issue importing users. Please try again.',
),
);
+1
View File
@@ -18,6 +18,7 @@ return array(
'last_login' => 'Last Login',
'last_name' => 'Last Name',
'location' => 'Location',
'lock_passwords' => 'Login details cannot be changed on this installation.',
'manager' => 'Manager',
'name' => 'Name',
'password_confirm' => 'Confirm Password',
+7 -2
View File
@@ -3,6 +3,8 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'Adresa',
'admin' => 'Admin',
'all_assets' => 'Všechna zařízení',
@@ -32,11 +34,13 @@ return array(
'currency' => 'Kč',
'current' => 'Aktuální',
'custom_report' => 'Vlastní report majetku',
'dashboard' => 'Dashboard',
'date' => 'Datum',
'delete' => 'Odstranit',
'deleted' => 'Odstraněno',
'deployed' => 'Vydané',
'depreciation_report' => 'Report zastarání',
'download' => 'Download',
'depreciation' => 'Amortizace',
'editprofile' => 'Upravit profil',
'eol' => 'Konec životnosti',
@@ -48,8 +52,8 @@ return array(
'gravatar_email' => 'Emailová adresa Gravatar',
'history_for' => 'Historie uživatele',
'id' => 'ID',
'image_delete' => 'Smazat obrázek',
'image_upload' => 'Nahrát obrázek',
'image_delete' => 'Smazat obrázek',
'image_upload' => 'Nahrát obrázek',
'last_name' => 'Příjmení',
'license' => 'Licence',
'license_report' => 'Report licencí',
@@ -85,6 +89,7 @@ return array(
'suppliers' => 'Dodavatelé',
'total_assets' => 'celkem zařízení',
'total_licenses' => 'celkem licencí',
'type' => 'Type',
'undeployable' => 'Ne-přiřaditelné',
'unknown_admin' => 'Neznámy správce',
'user' => 'Uživatel',
+1
View File
@@ -5,5 +5,6 @@ return array(
'actions' => 'Akce',
'action' => 'Akce',
'by' => 'Vytvořil',
'item' => 'Item',
);
+20
View File
@@ -0,0 +1,20 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+37
View File
@@ -0,0 +1,37 @@
<?php
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
);
+9
View File
@@ -0,0 +1,9 @@
<?php
return array(
'eula_text' => 'EULA',
'id' => 'ID',
'require_acceptance' => 'Acceptance',
'title' => 'Accessory Name',
);
+11 -1
View File
@@ -2,10 +2,20 @@
return array(
'about_asset_categories' => 'About Asset Categories',
'about_categories' => 'Asset categories help you organize your assets. Some example categories might be &quot;Desktops&quot;, &quot;Laptops&quot;, &quot;Mobile Phones&quot;, &quot;Tablets&quot;, and so on, but you can use asset categories any way that makes sense for you. ',
'about_categories' => 'Asset categories help you organize your assets. Some example categories might be &quot;Desktops&quot;, &quot;Laptops&quot;, &quot;Mobile Phones&quot;, &quot;Tablets&quot;, and so on, but you can use asset categories any way that makes sense for you.',
'asset_categories' => 'Asset Categories',
'category_name' => 'Kategorinavn',
'clone' => 'Clone Category',
'create' => 'Opret kategori',
'edit' => 'Edit Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
'required_eula' => 'This user will be emailed a copy of the EULA',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'update' => 'Opdater kategori',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+5 -4
View File
@@ -1,9 +1,10 @@
<?php
return array(
'id' => 'ID',
'parent' => 'Forælder',
'title' => 'Asset Category Name',
'eula_text' => 'EULA',
'id' => 'ID',
'parent' => 'Forælder',
'require_acceptance' => 'Acceptance',
'title' => 'Asset Category Name',
);
+3
View File
@@ -2,6 +2,9 @@
return array(
'bulk_update' => 'Bulk Update Assets',
'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ',
'bulk_update_warn' => 'You are about to edit the properties of :asset_count assets.',
'checkedout_to' => 'Checked Out To',
'checkout_to' => 'Checkout to',
'cost' => 'Purchase Cost',
+1
View File
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
'pending' => 'Pending',
+16 -2
View File
@@ -13,14 +13,28 @@ return array(
),
'update' => array(
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.'
'error' => 'Asset was not updated, please try again',
'success' => 'Asset updated successfully.',
'nothing_updated' => 'No fields were selected, so nothing was updated.',
),
'restore' => array(
'error' => 'Asset was not restored, please try again',
'success' => 'Asset restored successfully.'
),
'deletefile' => array(
'error' => 'File not deleted. Please try again.',
'success' => 'File successfully deleted.',
),
'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.',
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this asset?',
+4
View File
@@ -2,6 +2,10 @@
return array(
'deleted' => 'This model has been deleted. <a href="/hardware/models/:model_id/restore">Click here to restore it</a>.',
'restore' => 'Restore Model',
'show_mac_address' => 'Show MAC address field in assets in this model',
'view_deleted' => 'View Deleted',
'view_models' => 'View Models',
);
+6 -1
View File
@@ -20,6 +20,11 @@ return array(
'confirm' => 'Are you sure you wish to delete this asset model?',
'error' => 'There was an issue deleting the model. Please try again.',
'success' => 'The model was deleted successfully.'
)
),
'restore' => array(
'error' => 'Model was not restored, please try again',
'success' => 'Model restored successfully.'
),
);
+9 -1
View File
@@ -1,15 +1,23 @@
<?php
return array(
'alert_email' => 'Send alerts to',
'alerts_enabled' => 'Alerts enabled',
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auti_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'default_eula_text' => 'Default EULA',
'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',
'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display QR Codes',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'load_remote' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
'php_gd_info' => 'You must install php-gd to display QR codes, see install instructions.',
+1
View File
@@ -11,4 +11,5 @@ return array(
'last_login' => 'Last Login',
'software_user' => 'Software Checked out to :name',
'view_user' => 'View User :name',
'usercsv' => 'CSV file',
);
+4 -2
View File
@@ -18,14 +18,16 @@ return array(
'unban' => 'User was successfully unbanned.',
'suspend' => 'User was successfully suspended.',
'unsuspend' => 'User was successfully unsuspended.',
'restored' => 'User was successfully restored.'
'restored' => 'User was successfully restored.',
+ 'import' => 'Users imported successfully.',
),
'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.',
'unsuspend' => 'There was an issue unsuspending the user. Please try again.'
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
'import' => 'There was an issue importing users. Please try again.',
),
);
+1
View File
@@ -18,6 +18,7 @@ return array(
'last_login' => 'Last Login',
'last_name' => 'Last Name',
'location' => 'Location',
'lock_passwords' => 'Login details cannot be changed on this installation.',
'manager' => 'Manager',
'name' => 'Name',
'password_confirm' => 'Confirm Password',
+7 -2
View File
@@ -3,6 +3,8 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'Addresse',
'admin' => 'Admin',
'all_assets' => 'Alle aktiver',
@@ -32,11 +34,13 @@ return array(
'currency' => '$',
'current' => 'Current',
'custom_report' => 'Custom Asset Report',
'dashboard' => 'Dashboard',
'date' => 'Dato',
'delete' => 'Slet',
'deleted' => 'Slettet',
'deployed' => 'Deployed',
'depreciation_report' => 'Depreciation Report',
'download' => 'Download',
'depreciation' => 'Depreciation',
'editprofile' => 'Edit Your Profile',
'eol' => 'EOL',
@@ -48,8 +52,8 @@ return array(
'gravatar_email' => 'Gravatar email addresse',
'history_for' => 'History for',
'id' => 'ID',
'image_delete' => 'Slet billede',
'image_upload' => 'Upload billede',
'image_delete' => 'Slet billede',
'image_upload' => 'Upload billede',
'last_name' => 'Efternavn',
'license' => 'Licens',
'license_report' => 'License Report',
@@ -85,6 +89,7 @@ return array(
'suppliers' => 'Leverandører',
'total_assets' => 'total assets',
'total_licenses' => 'totale licenser',
'type' => 'Type',
'undeployable' => 'Un-deployable',
'unknown_admin' => 'Unknown Admin',
'user' => 'Bruger',
+1
View File
@@ -5,5 +5,6 @@ return array(
'actions' => 'Handlinger',
'action' => 'Handling',
'by' => 'Af',
'item' => 'Item',
);
+20
View File
@@ -0,0 +1,20 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+37
View File
@@ -0,0 +1,37 @@
<?php
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
);
+9
View File
@@ -0,0 +1,9 @@
<?php
return array(
'eula_text' => 'EULA',
'id' => 'ID',
'require_acceptance' => 'Acceptance',
'title' => 'Accessory Name',
);
+10
View File
@@ -5,7 +5,17 @@ return array(
'about_categories' => 'Kategorien helfen Ihnen dabei, Ihre Assets zu organisieren. Beispielkategorien sind "Schreibtische", "Laptops", "Handys", "Tablets" usw., jedoch können Sie Kategorien nutzen, wie es für Sie sinnvoll erscheint.',
'asset_categories' => 'Asset-Kategorien',
'category_name' => 'Kategoriename',
'clone' => 'Clone Category',
'create' => 'Kategorie erstellen',
'edit' => 'Edit Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
'required_eula' => 'This user will be emailed a copy of the EULA',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'update' => 'Kategorie aktualisieren',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+5 -4
View File
@@ -1,9 +1,10 @@
<?php
return array(
'id' => 'ID',
'parent' => 'Übergeordneten',
'title' => 'Posten Kategorie Name',
'eula_text' => 'EULA',
'id' => 'ID',
'parent' => 'Übergeordneten',
'require_acceptance' => 'Acceptance',
'title' => 'Posten Kategorie Name',
);
+5 -2
View File
@@ -2,6 +2,9 @@
return array(
'bulk_update' => 'Massenaktualisierung von Assets',
'bulk_update_help' => 'Diese Eingabemaske erlaubt Ihnen die Aktualisierung von mehrere Assets zugleich. Füllen Sie die Felder aus welche Sie ändern möchten. Alle leeren Felder bleiben unverändert. ',
'bulk_update_warn' => 'Sie sind dabei die Eigenschaften von :asset_count assets zu bearbeiten.',
'checkedout_to' => 'Herausgegeben an',
'checkout_to' => 'Herausgeben an',
'cost' => 'Einkaufspreis',
@@ -15,7 +18,7 @@ return array(
'expires' => 'Gültig bis',
'fully_depreciated' => 'Komplett Abgeschrieben',
'help_checkout' => 'Wenn du dieses Asset sofort zuweisen möchtest, solltest du "Ready to Deploy" im Statusfeld auswählen oder es könnten unerwartete Probleme auftreten. ',
'mac_address' => 'MAC Address',
'mac_address' => 'MAC Adresse',
'manufacturer' => 'Hersteller',
'model' => 'Modell',
'months' => 'Monate',
@@ -24,7 +27,7 @@ return array(
'order' => 'Bestellnummer',
'qr' => 'QR-Code',
'requestable' => 'Benutzer dürfen dieses Asset anfordern',
'select_statustype' => 'Select Status Type',
'select_statustype' => 'Status Typ auswählen',
'serial' => 'Seriennummer',
'status' => 'Status',
'supplier' => 'Lieferant',
+8 -7
View File
@@ -1,17 +1,18 @@
<?php
return array(
'archived' => 'Archived',
'archived' => 'Archiviert',
'asset' => 'Asset',
'checkin' => 'Asset zurücknehmen',
'checkout' => 'Asset an Benutzer herausgeben',
'clone' => 'Asset duplizieren',
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'deployable' => 'Einsetzbar',
'deleted' => 'Dieses Asset wurde gelöscht. <a href="/hardware/:asset_id/restore">Zur Wiederherstellung hier klicken</a>.',
'edit' => 'Asset editieren',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
'pending' => 'Pending',
'undeployable' => 'Undeployable',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Anforderbar',
'restore' => 'Asset wiederherstellen',
'pending' => 'Ausstehend',
'undeployable' => 'nicht einsetzbar',
'view' => 'Asset ansehen',
);
+20 -6
View File
@@ -2,8 +2,8 @@
return array(
'undeployable' => '<strong>Warning: </strong> This asset has been marked as currently undeployable.
If this status has changed, please update the asset status.',
'undeployable' => '<strong>Achtung:</strong>Dieses Asset wurde kürzlich als nicht verteilbar markiert.
Falls sich dieser Status verändert hat, aktualisieren Sie bitte den Asset Status.',
'does_not_exist' => 'Asset existiert nicht.',
'assoc_users' => 'Dieses Asset ist im Moment an einen Benutzer herausgegeben und kann nicht entfernt werden. Bitte buchen sie das Asset wieder ein und versuchen Sie dann erneut es zu entfernen. ',
@@ -13,14 +13,28 @@ return array(
),
'update' => array(
'error' => 'Asset wurde nicht aktualisiert. Bitte versuchen Sie es erneut',
'success' => 'Asset wurde erfolgreich aktualisiert.'
'error' => 'Asset wurde nicht aktualisiert. Bitte versuchen Sie es erneut',
'success' => 'Asset wurde erfolgreich aktualisiert.',
'nothing_updated' => 'Es wurden keine Felder ausgewählt, somit wurde auch nichts aktualisiert.',
),
'restore' => array(
'error' => 'Asset was not restored, please try again',
'success' => 'Asset restored successfully.'
'error' => 'Asset wurde nicht wiederhergestellt, bitte versuchen Sie es noch einmal',
'success' => 'Asset erfolgreich wiederhergestellt.'
),
'deletefile' => array(
'error' => 'Datei wurde nicht gelöscht. Bitte noch einmal Probieren.',
'success' => 'Datei erfolgreich gelöscht.',
),
'upload' => array(
'error' => 'Datei(en) wurde nicht hochgeladen. Bitte noch einmal Probieren.',
'success' => 'Datei(en) erfolgreich hochgeladen.',
'nofiles' => 'Sie haben keine Datei zum hochladen ausgewählt',
'invalidfiles' => 'Eine oder mehrere Ihrer Dateien ist zu groß oder deren Dateityp ist nicht zugelassen. Zugelassene Dateitypen sind png, gif, jpg, doc, docx, pdf, und txt.',
),
'delete' => array(
'confirm' => 'Sind Sie sicher, dass Sie dieses Asset entfernen möchten?',
+1 -1
View File
@@ -9,7 +9,7 @@ return array(
'date' => 'Kaufdatum',
'depreciation' => 'Abschreibung',
'expiration' => 'Ablaufdatum',
'maintained' => 'Maintained',
'maintained' => 'Verwaltet',
'name' => 'Software Name',
'no_depreciation' => 'Nicht abschreiben',
'notes' => 'Notizen',
+6 -6
View File
@@ -15,15 +15,15 @@ return array(
),
'deletefile' => array(
'error' => 'File not deleted. Please try again.',
'success' => 'File successfully deleted.',
'error' => 'Datei nicht gelöscht. Bitte versuchen Sie es noch einmal.',
'success' => 'Datei erfolgreich gelöscht.',
),
'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' => 'Datei(en) wurden nicht hochgeladen. Bitte versuchen Sie es noch einmal.',
'success' => 'Datei(en) erfolgreich hochgeladen.',
'nofiles' => 'Sie haben keine Datei(en) zum Hochladen ausgewählt',
'invalidfiles' => 'Eine oder mehrere Ihrer Datei(en) sind zu groß oder ein Dateityp ist nicht erlaubt. Erlaubte Dateitypen sind png, gif, jpg, doc, docx, pdf, and txt.',
),
'update' => array(
+5 -1
View File
@@ -2,6 +2,10 @@
return array(
'show_mac_address' => 'Show MAC address field in assets in this model',
'deleted' => 'This model has been deleted. <a href="/hardware/models/:model_id/restore">Click here to restore it</a>.',
'restore' => 'Restore Model',
'show_mac_address' => 'MAC Adressen Feld anzeigen für Assets mit diesses Modell',
'view_deleted' => 'View Deleted',
'view_models' => 'View Models',
);
+6 -1
View File
@@ -20,6 +20,11 @@ return array(
'confirm' => 'Sind sie sicher, dass sie das Asset löschen wollen?',
'error' => 'Beim Löschen des Modell ist ein Fehler aufgetreten. Bitte probieren Sie es noch einmal.',
'success' => 'Das Modell wurde erfolgreich gelöscht.'
)
),
'restore' => array(
'error' => 'Model was not restored, please try again',
'success' => 'Model restored successfully.'
),
);
+9 -1
View File
@@ -1,15 +1,23 @@
<?php
return array(
'alert_email' => 'Alarme senden an',
'alerts_enabled' => 'Alarme aktiv',
'auto_increment_assets' => 'Erzeugen von fortlaufenden Asset IDs',
'auto_increment_prefix' => 'Präfix (optional)',
'auti_incrementing_help' => 'Aktiviere zuerst fortlaufende asset IDs um dies zu setzen',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'default_eula_text' => 'Default EULA',
'default_eula_help_text' => 'You can also associate custom EULAs to specific asset categories.',
'display_asset_name' => 'Zeige Assetname an',
'display_checkout_date' => 'Zeige Herausgabedatum',
'display_eol' => 'Zeige EOL in der Tabellenansicht',
'display_qr' => 'Zeige QR-Codes',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'header_color' => 'Farbe der Kopfzeile',
'info' => 'Mit diesen Einstellungen können Sie verschieden Aspekte Ihrer Installation bearbeiten.',
'laravel' => 'Laravel Version',
'load_remote' => 'Diese Installation von Snipe-IT kann Skripte aus der Aussenwelt laden.',
'logo' => 'Logo',
'per_page' => 'Ergebnisse pro Seite',
'php' => 'PHP Version',
'php_gd_info' => 'Um QR-Codes anzeigen zu können muss php-gd installiert sein, siehe Installationshinweise.',
+6 -6
View File
@@ -2,14 +2,14 @@
return array(
'about' => 'Info Statusbezeichnung',
'archived' => 'Archived',
'archived' => 'Archiviert',
'create' => 'Statusbezeichnung erstellen',
'deployable' => 'Deployable',
'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'deployable' => 'Einsetzbar',
'info' => 'Status Label werden eingesetzt um diverse Stati Ihrer Assets zu beschreiben. Diese können zB. in Reparatur sein, Gestohlen oder Verlohren worden sein. Sie können neue Status Labels für Einsetzbare, Unerledigte und Archivierte Assets erstellen.',
'name' => 'Statusname',
'pending' => 'Pending',
'status_type' => 'Status Type',
'pending' => 'Unerledigt',
'status_type' => 'Statustyp',
'title' => 'Statusbezeichnungen',
'undeployable' => 'Undeployable',
'undeployable' => 'nicht Einsetzbar',
'update' => 'Statusbezeichnung bearbeiten',
);
+1
View File
@@ -11,4 +11,5 @@ return array(
'last_login' => 'Letzte Anmeldung',
'software_user' => 'Software herausgegeben an :name',
'view_user' => 'Benutze :name ansehen',
'usercsv' => 'CSV Datei',
);
+4 -2
View File
@@ -18,14 +18,16 @@ return array(
'unban' => 'Benutzer wurde erfolgreich wieder eingeschlossen.',
'suspend' => 'Der Benutzer wurde erfolgreich deaktiviert.',
'unsuspend' => 'Der Benutzer wurde erfolgreich reaktiviert.',
'restored' => 'Benutzer wurde erfolgreich wiederhergestellt.'
'restored' => 'Benutzer wurde erfolgreich wiederhergestellt.',
+ 'import' => 'Benutzer erfolgreich Importiert.',
),
'error' => array(
'create' => 'Beim Erstellen des Benutzers ist ein Fehler aufgetreten. Bitte probieren Sie es noch einmal.',
'update' => 'Beim Aktualisieren des Benutzers ist ein Fehler aufgetreten. Bitte probieren Sie es noch einmal.',
'delete' => 'Beim Entfernen des Benutzers ist ein Fehler aufgetreten. Bitte versuchen Sie es erneut.',
'unsuspend' => 'Es gab ein Problem beim reaktivieren des Benutzers. Bitte versuche es erneut.'
'unsuspend' => 'Es gab ein Problem beim reaktivieren des Benutzers. Bitte versuche es erneut.',
'import' => 'Es gab ein Problem beim importieren der Benutzer. Bitte noch einmal versuchen.',
),
);
+1
View File
@@ -18,6 +18,7 @@ return array(
'last_login' => 'Letzte Anmeldung',
'last_name' => 'Familienname',
'location' => 'Ort',
'lock_passwords' => 'Login details cannot be changed on this installation.',
'manager' => 'Manager',
'name' => 'Name',
'password_confirm' => 'Kennwort bestätigen',
+3 -3
View File
@@ -3,12 +3,12 @@
return array(
'actions' => 'Aktionen',
'add' => 'Add New',
'cancel' => 'Cancel',
'add' => 'Hinzufügen',
'cancel' => 'Abbrechen',
'delete' => 'Löschen',
'edit' => 'Bearbeiten',
'restore' => 'Wiederherstellen',
'submit' => 'Abschicken',
'upload' => 'Upload',
'upload' => 'Hochladen',
);
+10 -5
View File
@@ -3,11 +3,13 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'Supplier Address',
'admin' => 'Administrator',
'all_assets' => 'Alle Assets',
'all' => 'Alle',
'archived' => 'Archived',
'archived' => 'Archiviert',
'asset_models' => 'Asset Modelle',
'asset' => 'Asset',
'asset_report' => 'Asset Bericht',
@@ -32,24 +34,26 @@ return array(
'currency' => '€',
'current' => 'Aktuell',
'custom_report' => 'Spezieller Asset Report',
'dashboard' => 'Dashboard',
'date' => 'Purchase Date',
'delete' => 'Löschen',
'deleted' => 'Gelöscht',
'deployed' => 'Herausgegeben',
'depreciation_report' => 'Abschreibunsgreport',
'download' => 'Download',
'depreciation' => 'Abschreibung',
'editprofile' => 'Profil bearbeiten',
'eol' => 'EOL',
'first_name' => 'Vorname',
'file_name' => 'File',
'file_uploads' => 'File Uploads',
'file_name' => 'Datei',
'file_uploads' => 'Datei-Uploads',
'generate' => 'Generieren',
'groups' => 'Gruppen',
'gravatar_email' => 'Gravatar E-Mail Adresse',
'history_for' => 'Verlauf für',
'id' => 'Id',
'image_delete' => 'Bild löschen',
'image_upload' => 'Bild hinzufügen',
'image_delete' => 'Bild löschen',
'image_upload' => 'Bild hinzufügen',
'last_name' => 'Familienname',
'license' => 'Lizenz',
'license_report' => 'Lizenz Report',
@@ -85,6 +89,7 @@ return array(
'suppliers' => 'Lieferanten',
'total_assets' => 'Gesamte Assets',
'total_licenses' => 'Lizenzen insgesamt',
'type' => 'Type',
'undeployable' => 'Nicht herausgebbar',
'unknown_admin' => 'Unbekannter Administrator',
'user' => 'Nutzer',
+1
View File
@@ -5,5 +5,6 @@ return array(
'actions' => 'Aktionen',
'action' => 'Aktion',
'by' => 'Von',
'item' => 'Item',
);
+20
View File
@@ -0,0 +1,20 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
);
+37
View File
@@ -0,0 +1,37 @@
<?php
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
);

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