Compare commits

...

273 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
snipe 7a4f115cb3 Merge remote-tracking branch 'origin/develop' 2015-02-11 22:57:47 -08:00
snipe 58ff929d71 Fixes error when no model present because new asset 2015-02-11 22:57:22 -08:00
snipe 49f25a23a9 Merge pull request #516 from splaer/fix-475
Fix 475
2015-02-11 21:42:33 -08:00
Splaer bcf75073ec Update style
updated the scss as well until that starts getting auto compiled
2015-02-12 00:38:58 -05:00
snipe 6908456d09 Merge remote-tracking branch 'origin/develop' 2015-02-11 21:27:56 -08:00
snipe c26369f8cc Added spacing between buttons 2015-02-11 21:21:19 -08:00
snipe 56e090f3e7 Unlink username if they've been deleted 2015-02-11 21:19:18 -08:00
Splaer 00f7717142 Fix #475 and styling
Cleaned up styling to break lines with larger notes on hardware view
and asset view. Changed column type to text.
2015-02-11 23:38:59 -05:00
snipe 823e0c8562 Merge remote-tracking branch 'origin/develop' 2015-02-11 16:55:29 -08:00
snipe 95be7908f8 New language strings 2015-02-11 16:51:16 -08:00
snipe c660c71556 Added MAC address to view 2015-02-11 16:43:46 -08:00
snipe fbf03b225d Fixes #509 - added MAC address as model option 2015-02-11 16:37:24 -08:00
snipe a5f4c51ab2 Merge remote-tracking branch 'origin/develop' 2015-02-11 14:31:25 -08:00
snipe 89dce89035 Moved expiration date below purchase date 2015-02-11 14:02:34 -08:00
snipe 8cdd215614 Fixed intenting 2015-02-11 14:02:21 -08:00
snipe 342a8b81af Fix for error when asset has null status 2015-02-11 13:51:28 -08:00
snipe cd5a352961 Fix for wrong math on remaining licenses when assigned to an asset 2015-02-11 13:39:08 -08:00
snipe a451fa1fa6 Merge remote-tracking branch 'origin/develop' 2015-02-11 12:49:39 -08:00
snipe e343c157c5 Fixed naming conflict for requestable 2015-02-11 12:49:21 -08:00
snipe 37fc216c5a Additional language strings 2015-02-11 05:19:23 -08:00
snipe 96feb84fd4 Merge remote-tracking branch 'origin/develop' 2015-02-11 04:59:35 -08:00
snipe 80e10c4c98 Fixes #387 - sortable asset view by manufacturer 2015-02-11 04:57:59 -08:00
snipe 35a133bbf9 Fixes #382 - allow admins to restore deleted assets 2015-02-11 04:44:39 -08:00
snipe 0adbce77f9 Merge remote-tracking branch 'origin/develop' 2015-02-11 03:52:08 -08:00
snipe c89be34503 Fixes #329 and #454 - added category asset view 2015-02-11 03:51:01 -08:00
snipe 9c3873e712 Category asset view 2015-02-11 03:50:16 -08:00
snipe 4f6eeda368 View asset for requests 2015-02-11 03:49:33 -08:00
snipe f690cd6305 Requests table 2015-02-11 03:49:13 -08:00
snipe 447ed3518e Merge remote-tracking branch 'origin/develop' 2015-02-11 00:56:17 -08:00
snipe d9d99b2223 No trashed 2015-02-11 00:44:22 -08:00
snipe 2b99adba5f Do not include trashed for user view 2015-02-11 00:43:50 -08:00
snipe 11aa98d389 Removed extra comments 2015-02-11 00:43:38 -08:00
snipe 591f97f149 Mark unassigned if deleted 2015-02-11 00:43:25 -08:00
snipe ef696f8207 Update licenses to assigned to null if deleted 2015-02-11 00:29:16 -08:00
snipe ab1c921443 Requestable assets views and controllers 2015-02-10 23:55:06 -08:00
snipe 7b165a12e0 Fixes #508 - compacted UI for licenses overview 2015-02-10 21:52:11 -08:00
snipe 6f2f7cc214 Updated language strings 2015-02-10 20:52:22 -08:00
snipe 89729bfa51 Removed invalid comments 2015-02-10 20:47:24 -08:00
snipe 34032c73ce Fixed licenses so null instead of 0 2015-02-10 20:47:11 -08:00
snipe f72b385790 Fix licenses so null instead of 0 2015-02-10 20:46:58 -08:00
snipe d541ded862 Merge remote-tracking branch 'origin/develop'
Conflicts:
	app/views/backend/layouts/default.blade.php
2015-02-10 19:47:43 -08:00
snipe 8cc95a3b9b Merge pull request #507 from madd15/patch-2
Added Archived Lang
2015-02-10 19:19:03 -08:00
snipe bf9a825095 Removed extraneous ID 2015-02-10 19:18:15 -08:00
madd15 5c92be5190 Added Archived Lang 2015-02-11 13:45:04 +10:30
madd15 fa9cf35ff5 Added Archived Lang 2015-02-11 13:43:19 +10:30
snipe f36029a34a Fixed migration for to set assigned_to to null per #506 2015-02-10 18:41:45 -08:00
snipe c2e532e32e Fixed language file for status label messages 2015-02-10 18:33:19 -08:00
snipe 9bcc9a7ed1 Check not deleted 2015-02-10 18:27:00 -08:00
snipe 7715731c4a Fix count in header 2015-02-10 18:26:35 -08:00
snipe a2178392e6 Fixed seeder 2015-02-10 18:09:36 -08:00
snipe 0aa4d2a3db Added undeployable as allowed validation type 2015-02-10 18:06:55 -08:00
snipe 5867c60410 Fixed scope chaining on assigned_to 2015-02-10 17:58:47 -08:00
snipe 268fb98dbb Indented for better readibility 2015-02-10 17:41:42 -08:00
snipe 5f1227d0fa Removed stray chars 2015-02-10 17:41:27 -08:00
snipe 1b93c5538a Get trashed for admins 2015-02-10 17:41:19 -08:00
snipe 3645f85731 Typo :( 2015-02-10 17:23:25 -08:00
snipe 0b02b1631b Merge pull request #505 from madd15/patch-1
Fix RTD query to not display checked out asset
2015-02-10 17:20:20 -08:00
madd15 31f4ba88f6 Fix RTD query to not display checked out asset 2015-02-11 11:49:28 +10:30
snipe c06a4d4118 Fixed wonky checkin/checkout buttons 2015-02-10 17:17:33 -08:00
snipe dbc93de6b3 Fixes checkin button on view 2015-02-10 17:11:40 -08:00
snipe 2277b6ee69 Fixed checkout logic for new assigned_to 2015-02-10 17:04:15 -08:00
snipe b36d73a4bb Missing checkin buttons on index 2015-02-10 17:03:13 -08:00
snipe 283d2855d7 Added user_id to status label migration for strict mode 2015-02-10 16:22:02 -08:00
snipe f175f52530 Fixed spacer in sidenav for list all 2015-02-10 16:08:54 -08:00
snipe e29da5521d Moved location of archived link 2015-02-10 16:08:02 -08:00
snipe 1db1819a56 Added Archived as view for filter 2015-02-10 16:06:33 -08:00
snipe aef3a734a3 Small fix for pending status 2015-02-10 16:06:24 -08:00
snipe d2438f9fdb Fixes #502 - normalized statuses 2015-02-10 15:57:19 -08:00
snipe 53d000e2d0 Migration to correct previous assigned_to=0 issue 2015-02-09 20:29:48 -08:00
snipe addfcd4bc5 Fix RTD bug 2015-02-09 20:02:40 -08:00
snipe b360736b77 Fixes #484 2015-02-09 19:26:57 -08:00
snipe 2bae77b3af Removed extranneous text field 2015-02-09 16:50:12 -08:00
snipe c1600a33db Fixes #499 - timestamps in asset logs 2015-02-09 16:47:36 -08:00
snipe 5d3b84e01a Misc additional assets 2015-02-09 16:45:01 -08:00
snipe 7ed098de67 Merge branch 'develop' of github.com:snipe/snipe-it into develop 2015-02-09 00:48:19 -08:00
snipe 22af5561b2 Updated translation strings 2015-02-09 00:48:03 -08:00
snipe 7009b24748 Merge pull request #498 from snipe/fixes/477
Fixes #477 - wrong sidebar on asset view
2015-02-09 00:35:04 -08:00
snipe 389c27b2e6 Fixes #477 - wrong sidebar on asset view 2015-02-09 00:34:29 -08:00
snipe 95ae26eb2a Updated docs location 2015-02-08 16:21:33 -08:00
snipe cfebe11755 Updated docs for 4.2 2015-02-08 16:20:36 -08:00
snipe d86b5aa613 Bumped version 2015-02-08 16:20:24 -08:00
672 changed files with 26736 additions and 3422 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');
@@ -7,6 +7,10 @@ use Sentry;
use Validator;
use Location;
use View;
use Asset;
use Actionlog;
use Lang;
use Accessory;
class ViewAssetsController extends AuthorizedController
{
@@ -33,4 +37,110 @@ class ViewAssetsController extends AuthorizedController
}
public function getRequestableIndex() {
$assets = Asset::with('model','defaultLoc')->Hardware()->RequestableAssets()->get();
return View::make('frontend/account/requestable-assets', compact('user','assets'));
}
public function getRequestAsset($assetId = null) {
// Check if the asset exists
if (is_null($asset = Asset::find($assetId))) {
// Redirect to the asset management page
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
} else {
return View::make('frontend/account/view-asset', compact('asset'));
}
}
// 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'));
}
}
+304 -25
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.
@@ -46,8 +46,14 @@ class AssetsController extends AdminController
$assets->RTD();
} elseif (Input::get('Undeployable')) {
$assets->Undeployable();
} elseif (Input::get('Archived')) {
$assets->Archived();
} elseif (Input::get('Requestable')) {
$assets->RequestableAssets();
} elseif (Input::get('Deployed')) {
$assets->Deployed();
} elseif (Input::get('Deleted')) {
$assets->withTrashed()->Deleted();
}
$assets = $assets->orderBy('asset_tag', 'ASC')->get();
@@ -93,7 +99,7 @@ class AssetsController extends AdminController
// Grab the dropdown list of status
$statuslabel_list = array('' => Lang::get('general.pending')) + array('0' => Lang::get('general.ready_to_deploy')) + Statuslabel::orderBy('name', 'asc')->lists('name', 'id');
$statuslabel_list = Statuslabel::orderBy('name', 'asc')->lists('name', 'id');
$view = View::make('backend/hardware/edit');
$view->with('supplier_list',$supplier_list);
@@ -187,7 +193,7 @@ class AssetsController extends AdminController
$asset->order_number = e(Input::get('order_number'));
$asset->notes = e(Input::get('notes'));
$asset->asset_tag = e(Input::get('asset_tag'));
$asset->mac_address = e(Input::get('mac_address'));
$asset->user_id = Sentry::getId();
$asset->archived = '0';
$asset->physical = '1';
@@ -233,12 +239,15 @@ 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');
// Grab the dropdown list of status
$statuslabel_list = array('' => Lang::get('general.pending')) + array('0' => Lang::get('general.ready_to_deploy')) + Statuslabel::orderBy('name', 'asc')->lists('name', 'id');
$statuslabel_list = Statuslabel::orderBy('name', 'asc')->lists('name', 'id');
return View::make('backend/hardware/edit', compact('asset'))->with('model_list',$model_list)->with('supplier_list',$supplier_list)->with('location_list',$location_list)->with('statuslabel_list',$statuslabel_list);
}
@@ -300,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'));
@@ -316,10 +325,11 @@ class AssetsController extends AdminController
$asset->name = e(Input::get('name'));
$asset->serial = e(Input::get('serial'));
$asset->model_id = e(Input::get('model_id'));
$asset->order_number = e(Input::get('order_number'));
$asset->order_number = e(Input::get('order_number'));
$asset->asset_tag = e(Input::get('asset_tag'));
$asset->notes = e(Input::get('notes'));
$asset->physical = '1';
$asset->mac_address = e(Input::get('mac_address'));
// Was the asset updated?
if($asset->save()) {
@@ -357,6 +367,12 @@ class AssetsController extends AdminController
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.assoc_users'));
} else {
// Delete the asset
DB::table('assets')
->where('id', $asset->id)
->update(array('assigned_to' => NULL));
$asset->delete();
// Redirect to the asset management page
@@ -416,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'));
}
@@ -430,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'));
@@ -484,7 +515,7 @@ class AssetsController extends AdminController
$logaction->checkedout_to = $asset->assigned_to;
// Update the asset data to null, since it's being checked in
$asset->assigned_to = '0';
$asset->assigned_to = NULL;
// Was the asset updated?
if($asset->save()) {
@@ -513,7 +544,7 @@ class AssetsController extends AdminController
**/
public function getView($assetId = null)
{
$asset = Asset::find($assetId);
$asset = Asset::withTrashed()->find($assetId);
if (isset($asset->id)) {
@@ -521,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)
);
@@ -532,7 +561,7 @@ class AssetsController extends AdminController
$error = Lang::get('admin/hardware/message.does_not_exist', compact('id'));
// Redirect to the user management page
return Redirect::route('assets')->with('error', $error);
return Redirect::route('hardware')->with('error', $error);
}
}
@@ -549,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);
@@ -589,9 +618,9 @@ class AssetsController extends AdminController
$model_list = array('' => '') + Model::lists('name', 'id');
// Grab the dropdown list of status
$statuslabel_list = array('' => 'Pending') + array('0' => 'Ready to Deploy') + Statuslabel::lists('name', 'id');
$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');
@@ -604,4 +633,254 @@ class AssetsController extends AdminController
return View::make('backend/hardware/edit')->with('supplier_list',$supplier_list)->with('model_list',$model_list)->with('statuslabel_list',$statuslabel_list)->with('assigned_to',$assigned_to)->with('asset',$asset)->with('location_list',$location_list);
}
public function getRestore($assetId = null)
{
// Get user information
$asset = Asset::withTrashed()->find($assetId);
if (isset($asset->id)) {
// Restore the user
$asset->restore();
// Prepare the success message
$success = Lang::get('admin/hardware/message.restore.success');
// Redirect to the user management page
return Redirect::route('hardware')->with('success', $success);
} else {
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.not_found'));
}
}
/**
* 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");
}
}
+51 -11
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);
}
@@ -52,26 +54,30 @@ class CategoriesController extends AdminController
// create a new model instance
$category = new Category();
$validator = Validator::make(Input::all(), $category->rules);
if ($validator->fails())
{
// The given data did not pass validation
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
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()) {
// Redirect to the new category page
return Redirect::to("admin/settings/categories")->with('success', Lang::get('admin/categories/message.create.success'));
}
}
}
// Redirect to the category create page
return Redirect::to('admin/settings/categories/create')->with('error', Lang::get('admin/categories/message.create.error'));
@@ -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);
}
@@ -119,9 +129,9 @@ class CategoriesController extends AdminController
// get the POST data
$new = Input::all();
// attempt validation
// attempt validation
$validator = Validator::make(Input::all(), $category->validationRules($categoryId));
if ($validator->fails())
{
@@ -133,13 +143,17 @@ 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()) {
// Redirect to the new category page
return Redirect::to("admin/settings/categories")->with('success', Lang::get('admin/categories/message.update.success'));
}
}
}
// Redirect to the category management page
return Redirect::to("admin/settings/categories/$categoryID/edit")->with('error', Lang::get('admin/categories/message.update.error'));
@@ -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'));
@@ -178,4 +192,30 @@ class CategoriesController extends AdminController
/**
* Get the asset information to present to the category view page
*
* @param int $assetId
* @return View
**/
public function getView($categoryID = null)
{
$category = Category::find($categoryID);
if (isset($category->id)) {
return View::make('backend/categories/view', compact('category'));
} else {
// Prepare the error message
$error = Lang::get('admin/categories/message.does_not_exist', compact('id'));
// Redirect to the user management page
return Redirect::route('categories')->with('error', $error);
}
}
}
+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);
}
}
+11 -6
View File
@@ -116,10 +116,8 @@ class LicensesController extends AdminController
$license->seats = e(Input::get('seats'));
$license->purchase_date = e(Input::get('purchase_date'));
$license->purchase_order = e(Input::get('purchase_order'));
//$license->purchase_cost = e(Input::get('purchase_cost'));
$license->depreciation_id = e(Input::get('depreciation_id'));
$license->expiration_date = e(Input::get('expiration_date'));
//$license->asset_id = e(Input::get('asset_id'));
$license->user_id = Sentry::getId();
if (($license->purchase_date == "") || ($license->purchase_date == "0000-00-00")) {
@@ -142,7 +140,7 @@ class LicensesController extends AdminController
$license_seat = new LicenseSeat();
$license_seat->license_id = $insertedId;
$license_seat->user_id = Sentry::getId();
$license_seat->assigned_to = 0;
$license_seat->assigned_to = NULL;
$license_seat->notes = NULL;
$license_seat->save();
}
@@ -316,7 +314,7 @@ class LicensesController extends AdminController
$license_seat = new LicenseSeat();
$license_seat->license_id = $license->id;
$license_seat->user_id = Sentry::getId();
$license_seat->assigned_to = 0;
$license_seat->assigned_to = NULL;
$license_seat->notes = NULL;
$license_seat->save();
}
@@ -370,11 +368,17 @@ class LicensesController extends AdminController
} else {
// Delete the license and the associated license seats
DB::table('license_seats')
->where('id', $license->id)
->update(array('assigned_to' => NULL,'asset_id' => NULL));
$licenseseats = $license->licenseseats();
$licenseseats->delete();
$license->delete();
// Redirect to the licenses management page
return Redirect::to('admin/licenses')->with('success', Lang::get('admin/licenses/message.delete.success'));
}
@@ -507,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
@@ -574,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'));
@@ -113,7 +113,7 @@ class ManufacturersController extends AdminController
if ($validator->fails())
{
// The given data did not pass validation
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
// attempt validation
@@ -126,7 +126,7 @@ class ManufacturersController extends AdminController
// Redirect to the new manufacturer page
return Redirect::to("admin/settings/manufacturers")->with('success', Lang::get('admin/manufacturers/message.update.success'));
}
}
}
// Redirect to the manufacturer management page
return Redirect::to("admin/settings/manufacturers/$manufacturerId/edit")->with('error', Lang::get('admin/manufacturers/message.update.error'));
@@ -169,5 +169,30 @@ class ManufacturersController extends AdminController
/**
* Get the asset information to present to the category view page
*
* @param int $assetId
* @return View
**/
public function getView($manufacturerID = null)
{
$manufacturer = Manufacturer::find($manufacturerID);
if (isset($manufacturer->id)) {
return View::make('backend/manufacturers/view', compact('manufacturer'));
} else {
// Prepare the error message
$error = Lang::get('admin/manufacturers/message.does_not_exist', compact('id'));
// Redirect to the user management page
return Redirect::route('manufacturers')->with('error', $error);
}
}
}
+45 -16
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'));
@@ -67,13 +72,13 @@ class ModelsController extends AdminController
// attempt validation
if ($model->validate($new)) {
if ( e(Input::get('depreciation_id')) == '') {
$model->depreciation_id = 0;
} else {
$model->depreciation_id = e(Input::get('depreciation_id'));
}
if ( e(Input::get('eol')) == '') {
$model->eol = 0;
} else {
@@ -83,11 +88,11 @@ class ModelsController extends AdminController
// Save the model data
$model->name = e(Input::get('name'));
$model->modelno = e(Input::get('modelno'));
//$model->depreciation_id = e(Input::get('depreciation_id'));
$model->manufacturer_id = e(Input::get('manufacturer_id'));
$model->category_id = e(Input::get('category_id'));
$model->user_id = Sentry::getId();
//$model->eol = e(Input::get('eol'));
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
if (Input::file('image')) {
$image = Input::file('image');
@@ -160,18 +165,18 @@ class ModelsController extends AdminController
if ($validator->fails())
{
// The given data did not pass validation
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
// attempt validation
else {
if ( e(Input::get('depreciation_id')) == '') {
$model->depreciation_id = 0;
} else {
$model->depreciation_id = e(Input::get('depreciation_id'));
}
if ( e(Input::get('eol')) == '') {
$model->eol = 0;
} else {
@@ -180,9 +185,10 @@ class ModelsController extends AdminController
// Update the model data
$model->name = e(Input::get('name'));
$model->modelno = e(Input::get('modelno'));
$model->modelno = e(Input::get('modelno'));
$model->manufacturer_id = e(Input::get('manufacturer_id'));
$model->category_id = e(Input::get('category_id'));
$model->show_mac_address = e(Input::get('show_mac_address', '0'));
if (Input::file('image')) {
$image = Input::file('image');
@@ -198,13 +204,13 @@ class ModelsController extends AdminController
if (Input::get('image_delete') == 1 && Input::file('image') == "") {
$model->image = NULL;
}
// Was it created?
if($model->save()) {
// Redirect to the new model page
return Redirect::to("hardware/models")->with('success', Lang::get('admin/models/message.update.success'));
}
}
}
// Redirect to the model create page
return Redirect::to("hardware/models/$modelId/edit")->with('error', Lang::get('admin/models/message.update.error'));
@@ -237,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'));
}
}
/**
@@ -247,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'));
@@ -261,7 +290,7 @@ class ModelsController extends AdminController
}
public function getClone($modelId = null)
{
// Check if the model exists
@@ -269,10 +298,10 @@ class ModelsController extends AdminController
// Redirect to the model management page
return Redirect::to('assets/models')->with('error', Lang::get('admin/models/message.does_not_exist'));
}
$model = clone $model_to_clone;
$model->id = null;
// Show the page
$depreciation_list = array('' => 'Do Not Depreciate') + Depreciation::lists('name', 'id');
$manufacturer_list = array('' => 'Select One') + Manufacturer::lists('name', 'id');
@@ -284,7 +313,7 @@ class ModelsController extends AdminController
$view->with('model',$model);
$view->with('clone_model',$model_to_clone);
return $view;
}
+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()) {
@@ -38,7 +38,12 @@ class StatuslabelsController extends AdminController
public function getCreate()
{
// Show the page
return View::make('backend/statuslabels/edit')->with('statuslabel',new Statuslabel);
$statuslabel = new Statuslabel;
$use_statuslabel_type = $statuslabel->getStatuslabelType();
$statuslabel_types = array('' => Lang::get('admin/hardware/form.select_statustype')) + array('undeployable' => Lang::get('admin/hardware/general.undeployable')) + array('pending' => Lang::get('admin/hardware/general.pending')) + array('archived' => Lang::get('admin/hardware/general.archived')) + array('deployable' => Lang::get('admin/hardware/general.deployable'));
return View::make('backend/statuslabels/edit', compact('statuslabel_types','statuslabel'))->with('use_statuslabel_type',$use_statuslabel_type);
}
@@ -59,9 +64,15 @@ class StatuslabelsController extends AdminController
// attempt validation
if ($statuslabel->validate($new)) {
$statustype = Statuslabel::getStatuslabelTypesForDB(Input::get('statuslabel_types'));
// Save the Statuslabel data
$statuslabel->name = e(Input::get('name'));
$statuslabel->user_id = Sentry::getId();
$statuslabel->notes = e(Input::get('notes'));
$statuslabel->deployable = $statustype['deployable'];
$statuslabel->pending = $statustype['pending'];
$statuslabel->archived = $statustype['archived'];
// Was the asset created?
if($statuslabel->save()) {
@@ -94,8 +105,11 @@ class StatuslabelsController extends AdminController
return Redirect::to('admin/settings/statuslabels')->with('error', Lang::get('admin/statuslabels/message.does_not_exist'));
}
$use_statuslabel_type = $statuslabel->getStatuslabelType();
return View::make('backend/statuslabels/edit', compact('statuslabel'));
$statuslabel_types = array('' => Lang::get('admin/hardware/form.select_statustype')) + array('undeployable' => Lang::get('admin/hardware/general.undeployable')) + array('pending' => Lang::get('admin/hardware/general.pending')) + array('archived' => Lang::get('admin/hardware/general.archived')) + array('deployable' => Lang::get('admin/hardware/general.deployable'));
return View::make('backend/statuslabels/edit', compact('statuslabel','statuslabel_types'))->with('use_statuslabel_type',$use_statuslabel_type);
}
@@ -118,20 +132,27 @@ class StatuslabelsController extends AdminController
if ($validator->fails())
{
// The given data did not pass validation
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
// attempt validation
else {
// Update the Statuslabel data
$statustype = Statuslabel::getStatuslabelTypesForDB(Input::get('statuslabel_types'));
$statuslabel->name = e(Input::get('name'));
$statuslabel->notes = e(Input::get('notes'));
$statuslabel->deployable = $statustype['deployable'];
$statuslabel->pending = $statustype['pending'];
$statuslabel->archived = $statustype['archived'];
// Was the asset created?
if($statuslabel->save()) {
// Redirect to the saved Statuslabel page
return Redirect::to("admin/settings/statuslabels/")->with('success', Lang::get('admin/statuslabels/message.update.success'));
}
}
}
// Redirect to the Statuslabel management page
return Redirect::to("admin/settings/statuslabels/$statuslabelId/edit")->with('error', Lang::get('admin/statuslabels/message.update.error'));
+138 -3
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);
}
@@ -458,7 +476,7 @@ class UsersController extends AdminController
public function getView($userId = null)
{
$user = Sentry::getUserProvider()->createModel()->withTrashed()->find($userId);
$user = Sentry::getUserProvider()->createModel()->find($userId);
if (isset($user->id)) {
return View::make('backend/users/view', compact('user'));
@@ -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,48 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class FixBadAssignedToIds extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
DB::update('update ' . DB::getTablePrefix() . 'assets SET assigned_to=NULL where assigned_to=0');
Schema::table('status_labels', function ($table) {
$table->boolean('deployable')->default(0);
$table->boolean('pending')->default(0);
$table->boolean('archived')->default(0);
$table->text('notes')->nullable();
});
DB::statement('INSERT into ' . DB::getTablePrefix() . 'status_labels (user_id, name, deployable, pending, archived, notes) VALUES (1,"Pending",0,1,0,"These assets are not yet ready to be deployed, usually because of configuration or waiting on parts.")');
DB::statement('INSERT into ' . DB::getTablePrefix() . 'status_labels (user_id, name, deployable, pending, archived, notes) VALUES (1,"Ready to Deploy",1,0,0,"These assets are ready to deploy.")');
DB::statement('INSERT into ' . DB::getTablePrefix() . 'status_labels (user_id, name, deployable, pending, archived, notes) VALUES (1,"Archived",0,0,1,"These assets are no longer in circulation or viable.")');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('status_labels', function ($table) {
$table->dropColumn('deployable');
$table->dropColumn('pending');
$table->dropColumn('archived');
$table->dropColumn('notes');
});
}
}
@@ -0,0 +1,60 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrateDataToNewStatuses extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
// get newly added statuses from last migration
$statuses = DB::select('select * from ' . DB::getTablePrefix() . 'status_labels where name="Pending" OR name="Ready to Deploy"');
foreach ($statuses as $status) {
if ($status->name =="Pending") {
$pending_id = array($status->id);
} elseif ($status->name =="Ready to Deploy") {
$rtd_id = array($status->id);
}
}
// Pending
$pendings = DB::select('select * from ' . DB::getTablePrefix() . 'assets where status_id IS NULL AND physical=1 ');
foreach ($pendings as $pending) {
DB::update('update ' . DB::getTablePrefix() . 'assets set status_id = ? where status_id IS NULL AND physical=1',$pending_id);
}
// Ready to Deploy
$rtds = DB::select('select * from ' . DB::getTablePrefix() . 'assets where status_id = 0 AND physical=1 ');
foreach ($rtds as $rtd) {
//DB::update('update users set votes = 100 where name = ?', array('John'));
DB::update('update ' . DB::getTablePrefix() . 'assets set status_id = ? where status_id = 0 AND physical=1',$rtd_id);
}
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
@@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrateMakeLicenseAssignedNull extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
DB::update('update ' . DB::getTablePrefix() . 'license_seats SET assigned_to=NULL where assigned_to=0');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}
@@ -0,0 +1,37 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MigrateCreateRequestsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::create('requests', function ($table) {
$table->increments('id');
$table->integer('asset_id');
$table->integer('user_id');
$table->text('request_code');
$table->timestamps();
$table->softDeletes();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::drop('requests');
}
}
@@ -0,0 +1,43 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddMacAddressToAsset extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
Schema::table('assets', function ($table) {
$table->string('mac_address')->nullable()->default(NULL);
});
Schema::table('models', function ($table) {
$table->boolean('show_mac_address')->default(0);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
Schema::table('assets', function ($table) {
$table->dropColumn('mac_address');
});
Schema::table('models', function ($table) {
$table->dropColumn('show_mac_address');
});
}
}
@@ -0,0 +1,27 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class ChangeLicenseNotesType extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
//
$prefix = DB::getTablePrefix();
DB::statement('ALTER TABLE '.$prefix.'licenses MODIFY COLUMN notes TEXT');
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
$prefix = DB::getTablePrefix();
DB::statement('ALTER TABLE '.$prefix.'licenses MODIFY COLUMN notes VARCHAR(255)');
}
}
@@ -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');
});
}
}
+4 -4
View File
@@ -10,7 +10,7 @@ class ActionlogSeeder extends Seeder
$date = new DateTime;
// Pending (status_id is null, assigned_to = 0)
$assetlog[] = array(
'user_id' => '1',
'action_type' => 'checkout',
@@ -23,7 +23,7 @@ class ActionlogSeeder extends Seeder
'filename' => NULL,
);
// Pending (status_id is null, assigned_to = 0)
$assetlog[] = array(
'user_id' => '1',
'action_type' => 'checkin from',
@@ -36,7 +36,7 @@ class ActionlogSeeder extends Seeder
'filename' => NULL,
);
// Pending (status_id is null, assigned_to = 0)
$assetlog[] = array(
'user_id' => '1',
'action_type' => 'checkout',
@@ -49,7 +49,7 @@ class ActionlogSeeder extends Seeder
'filename' => NULL,
);
// Pending (status_id is null, assigned_to = 0)
$assetlog[] = array(
'user_id' => '1',
'action_type' => 'checkin from',
+30 -30
View File
@@ -10,7 +10,7 @@ class AssetsSeeder extends Seeder
$date = new DateTime;
// Pending (status_id is null, assigned_to = 0)
$asset[] = array(
'name' => 'Shanen MBP',
'asset_tag' => 'NNY2878796',
@@ -22,10 +22,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => NULL,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -45,10 +45,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => NULL,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -57,7 +57,7 @@ class AssetsSeeder extends Seeder
);
// RTD (status_id =0, assigned_to = 0)
$asset[] = array(
'name' => 'Alison MBP',
'asset_tag' => 'NNY287958796',
@@ -69,10 +69,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 2,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -80,7 +80,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// RTD (status_id =0, assigned_to = 0)
$asset[] = array(
'name' => 'Brady MBP',
'asset_tag' => 'NNY78795566',
@@ -92,10 +92,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -103,7 +103,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// RTD (status_id =0, assigned_to = 0)
$asset[] = array(
'name' => 'Deborah MBP',
'asset_tag' => 'NNY65756756775',
@@ -115,10 +115,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 2,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 2,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -127,7 +127,7 @@ class AssetsSeeder extends Seeder
);
// Deployed (status_id =0, assigned_to > 0)
$asset[] = array(
'name' => 'Sara MBP',
'asset_tag' => 'NNY6897856775',
@@ -142,7 +142,7 @@ class AssetsSeeder extends Seeder
'assigned_to' => 2,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -150,7 +150,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// Deployed (status_id =0, assigned_to > 0)
$asset[] = array(
'name' => 'Ben MBP',
'asset_tag' => 'NNY67567775',
@@ -165,7 +165,7 @@ class AssetsSeeder extends Seeder
'assigned_to' => 2,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -173,10 +173,10 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// Undeployable (status_id > 0, assigned_to = 0)
$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',
@@ -185,7 +185,7 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 2,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => '3',
@@ -196,7 +196,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// Undeployable (status_id > 0, assigned_to = 0)
$asset[] = array(
'name' => 'Maybe Broke-Ass Laptop',
'asset_tag' => 'NNY6755667775',
@@ -208,7 +208,7 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => '2',
@@ -219,7 +219,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// Undeployable (status_id > 0, assigned_to = 0)
$asset[] = array(
'name' => 'Completely Facacta Laptop',
'asset_tag' => 'NNY6564567775',
@@ -231,7 +231,7 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 1,
'status_id' => '4',
@@ -242,7 +242,7 @@ class AssetsSeeder extends Seeder
'depreciate' => '0',
);
// Undeployable (status_id > 0, assigned_to = 0)
$asset[] = array(
'name' => 'Drunken Shanenigans Laptop',
'asset_tag' => 'NNY6564567775',
@@ -254,7 +254,7 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 1,
'status_id' => '3',
@@ -277,10 +277,10 @@ class AssetsSeeder extends Seeder
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 2,
'assigned_to' => 0,
'assigned_to' => NULL,
'physical' => 1,
'archived' => 0,
'status_id' => 0,
'status_id' => 1,
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
+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,
);
+4 -4
View File
@@ -10,7 +10,7 @@ class LicenseSeatsSeeder extends Seeder
$date = new DateTime;
// Pending (status_id is null, assigned_to = 0)
$license_seats[] = array(
'license_id' => '1',
'assigned_to' => '1',
@@ -46,7 +46,7 @@ class LicenseSeatsSeeder extends Seeder
$license_seats[] = array(
'license_id' => '1',
'assigned_to' => '0',
'assigned_to' => NULL,
'created_at' => $date->modify('-10 day')->format('Y-m-d H:i:s'),
'updated_at' => $date->modify('-3 day')->format('Y-m-d H:i:s'),
'deleted_at' => NULL,
@@ -77,10 +77,10 @@ class LicenseSeatsSeeder extends Seeder
'asset_id' => NULL,
);
// Pending (status_id is null, assigned_to = 0)
$license_seats[] = array(
'license_id' => '2',
'assigned_to' => '0',
'assigned_to' => NULL,
'created_at' => $date->modify('-10 day')->format('Y-m-d H:i:s'),
'updated_at' => $date->modify('-3 day')->format('Y-m-d H:i:s'),
'deleted_at' => NULL,
+2 -2
View File
@@ -10,7 +10,7 @@ class LicensesSeeder extends Seeder
$date = new DateTime;
// Pending (status_id is null, assigned_to = 0)
$license[] = array(
'name' => 'Adobe Photoshop CS6',
'serial' => 'ZOMG-WtF-BBQ-SRSLY',
@@ -31,7 +31,7 @@ class LicensesSeeder extends Seeder
'depreciate' => '0',
);
// Pending (status_id is null, assigned_to = 0)
$license[] = array(
'name' => 'Git Tower',
'serial' => '98049890394-340485934',
+53
View File
@@ -10,12 +10,53 @@ class StatuslabelsSeeder extends Seeder
$date = new DateTime;
$status[] = array(
'name' => 'Ready to Deploy',
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 1,
'pending' => 0,
'archived' => 0,
'notes' => ''
);
$status[] = array(
'name' => 'Pending',
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 1,
'archived' => 0,
'notes' => ''
);
$status[] = array(
'name' => 'Archived',
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 0,
'archived' => 1,
'notes' => 'These assets are permanently undeployable'
);
$status[] = array(
'name' => 'Out for Diagnostics',
'created_at' => $date->modify('-10 day'),
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 0,
'archived' => 0,
'notes' => ''
);
@@ -25,6 +66,10 @@ class StatuslabelsSeeder extends Seeder
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 0,
'archived' => 0,
'notes' => ''
);
@@ -34,6 +79,10 @@ class StatuslabelsSeeder extends Seeder
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 0,
'archived' => 1,
'notes' => ''
);
$status[] = array(
@@ -42,6 +91,10 @@ class StatuslabelsSeeder extends Seeder
'updated_at' => $date->modify('-3 day'),
'user_id' => 1,
'deleted_at' => NULL,
'deployable' => 0,
'pending' => 0,
'archived' => 1,
'notes' => '',
);
+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' => 'اسم التصنيف',
);
+5
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',
@@ -15,6 +18,7 @@ return array(
'expires' => 'Expires',
'fully_depreciated' => 'Fully Depreciated',
'help_checkout' => 'If you wish to assign this asset immediately, you should select "Ready to Deploy" from the status list above, or unexpected things may happen. ',
'mac_address' => 'MAC Address',
'manufacturer' => 'Manufacturer',
'model' => 'Model',
'months' => 'months',
@@ -23,6 +27,7 @@ return array(
'order' => 'Order Number',
'qr' => 'QR Code',
'requestable' => 'Users may request this asset',
'select_statustype' => 'Select Status Type',
'serial' => 'Serial',
'status' => 'Status',
'supplier' => 'Supplier',
+8 -1
View File
@@ -1,11 +1,18 @@
<?php
return array(
'archived' => 'Archived',
'asset' => 'Asset',
'checkin' => 'Checkin Asset',
'checkout' => 'Checkout Asset to User',
'clone' => 'Clone Asset',
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'pending' => 'Pending 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',
'undeployable' => 'Undeployable',
'view' => 'View Asset',
);
+23 -3
View File
@@ -2,7 +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>Warning: </strong> This asset has been marked as currently undeployable.
If this status has changed, please update the asset status.',
'does_not_exist' => 'Asset does not exist.',
'assoc_users' => 'This asset is currently checked out to a user and cannot be deleted. Please check the asset in first, and then try deleting again. ',
@@ -12,10 +13,29 @@ 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?',
'error' => 'There was an issue deleting the asset. Please try again.',
+11
View File
@@ -0,0 +1,11 @@
<?php
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.',
+10 -5
View File
@@ -1,10 +1,15 @@
<?php
return array(
'name' => 'Status Name',
'title' => 'Status Labels',
'update' => 'Update Status Label',
'create' => 'Create Status Label',
'about' => 'About Status Labels',
'info' => 'Status labels are used to describe the various reasons why an asset <strong><em>cannot</em></strong> be deployed. It could be broken, out for diagnostics, out for repair, lost or stolen, etc. Status labels allow your team to show the progression.',
'archived' => 'Archived',
'create' => 'Create Status Label',
'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.',
'name' => 'Status Name',
'pending' => 'Pending',
'status_type' => 'Status Type',
'title' => 'Status Labels',
'undeployable' => 'Undeployable',
'update' => 'Update Status Label',
);
+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',
+8 -2
View File
@@ -3,10 +3,13 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'العنوان',
'admin' => 'الإدارة',
'all_assets' => 'كل الأصول',
'all' => 'الكل',
'archived' => 'Archived',
'asset_models' => 'نماذج الأصول',
'asset' => 'الأصول',
'asset_report' => 'Asset Report',
@@ -31,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' => 'الحياة',
@@ -47,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',
@@ -84,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',
);
+5
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',
@@ -15,6 +18,7 @@ return array(
'expires' => 'Expiruje',
'fully_depreciated' => 'Plně odepsané',
'help_checkout' => 'Pokud si přejete přiřadit majetek okamžitě, měli by jste ze seznamu stavů zvolit "Připraveno k přiděleni", nebo se může něco pokazit. ',
'mac_address' => 'MAC Address',
'manufacturer' => 'Výrobce',
'model' => 'Model',
'months' => 'měsíce',
@@ -23,6 +27,7 @@ return array(
'order' => 'Č. objednávky',
'qr' => 'QR kód',
'requestable' => 'Uživatelé můžou požádat o tento majetek',
'select_statustype' => 'Select Status Type',
'serial' => 'Sériové číslo',
'status' => 'Stav',
'supplier' => 'Dodavatel',
+8 -1
View File
@@ -1,11 +1,18 @@
<?php
return array(
'archived' => 'Archived',
'asset' => 'Majetek',
'checkin' => 'Převzít majetek',
'checkout' => 'Předat majetek uživateli',
'clone' => 'Klonovat majetek',
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Upravit majetek',
'pending' => 'Nevyřízený 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',
'undeployable' => 'Undeployable',
'view' => 'Zobrazit majetek',
);
+23 -3
View File
@@ -2,7 +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>Warning: </strong> This asset has been marked as currently undeployable.
If this status has changed, please update the asset status.',
'does_not_exist' => 'Asset does not exist.',
'assoc_users' => 'This asset is currently checked out to a user and cannot be deleted. Please check the asset in first, and then try deleting again. ',
@@ -12,10 +13,29 @@ 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?',
'error' => 'There was an issue deleting the asset. Please try again.',
+11
View File
@@ -0,0 +1,11 @@
<?php
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.',
+10 -5
View File
@@ -1,10 +1,15 @@
<?php
return array(
'name' => 'Název stavu',
'title' => 'Označení stavu',
'update' => 'Upravit označení stavu',
'create' => 'Vytvořit označení stavu',
'about' => 'O označení stavu',
'info' => 'Označení stavu se používá k popisu různých důvodů proč majetek <strong><em>nemůže</em></strong> být přidělen. Může být pokažený, pryč na opravě, na diagnostice, ztracený nebo ukradený, apod. Označení stavu umožňuje členům týmu zobrazovat postup.',
'archived' => 'Archived',
'create' => 'Vytvořit označení stavu',
'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.',
'name' => 'Název stavu',
'pending' => 'Pending',
'status_type' => 'Status Type',
'title' => 'Označení stavu',
'undeployable' => 'Undeployable',
'update' => 'Upravit označení stavu',
);
+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',
+8 -2
View File
@@ -3,10 +3,13 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'Adresa',
'admin' => 'Admin',
'all_assets' => 'Všechna zařízení',
'all' => 'Vše',
'archived' => 'Archived',
'asset_models' => 'Modely majetku',
'asset' => 'Zařízeni',
'asset_report' => 'Report majetku',
@@ -31,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',
@@ -47,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í',
@@ -84,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',
);
+5
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',
@@ -15,6 +18,7 @@ return array(
'expires' => 'Udløber',
'fully_depreciated' => 'Fully Depreciated',
'help_checkout' => 'If you wish to assign this asset immediately, you should select "Ready to Deploy" from the status list above, or unexpected things may happen. ',
'mac_address' => 'MAC Address',
'manufacturer' => 'Producent',
'model' => 'Model',
'months' => 'måneder',
@@ -23,6 +27,7 @@ return array(
'order' => 'Order Number',
'qr' => 'QR kode',
'requestable' => 'Users may request this asset',
'select_statustype' => 'Select Status Type',
'serial' => 'Serienummer',
'status' => 'Status',
'supplier' => 'Leverandør',
+8 -1
View File
@@ -1,11 +1,18 @@
<?php
return array(
'archived' => 'Archived',
'asset' => 'Asset',
'checkin' => 'Checkin Asset',
'checkout' => 'Checkout Asset to User',
'clone' => 'Clone Asset',
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'pending' => 'Pending 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',
'undeployable' => 'Undeployable',
'view' => 'View Asset',
);
+23 -3
View File
@@ -2,7 +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>Warning: </strong> This asset has been marked as currently undeployable.
If this status has changed, please update the asset status.',
'does_not_exist' => 'Asset does not exist.',
'assoc_users' => 'This asset is currently checked out to a user and cannot be deleted. Please check the asset in first, and then try deleting again. ',
@@ -12,10 +13,29 @@ 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?',
'error' => 'There was an issue deleting the asset. Please try again.',
+11
View File
@@ -0,0 +1,11 @@
<?php
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.',
+10 -5
View File
@@ -1,10 +1,15 @@
<?php
return array(
'name' => 'Status navn',
'title' => 'Status labels',
'update' => 'Opdater status label',
'create' => 'Opret status label',
'about' => 'Om status labels',
'info' => 'Status labels bruges til at beskrive de forskellige grunde til, hvorfor et aktiv <strong><em>ikke</em></strong> kan blive anvendt. Det kan være i stykker, sendt til diagnose, sendt til reparation, mistet eller stjålet, osv. Status labels gør det muligt for dit team at vise udviklingen.',
'archived' => 'Archived',
'create' => 'Opret status label',
'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.',
'name' => 'Status navn',
'pending' => 'Pending',
'status_type' => 'Status Type',
'title' => 'Status labels',
'undeployable' => 'Undeployable',
'update' => 'Opdater status label',
);
+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',
+8 -2
View File
@@ -3,10 +3,13 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'address' => 'Addresse',
'admin' => 'Admin',
'all_assets' => 'Alle aktiver',
'all' => 'Alle',
'archived' => 'Archived',
'asset_models' => 'Asset Models',
'asset' => 'Asset',
'asset_report' => 'Asset Report',
@@ -31,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',
@@ -47,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',
@@ -84,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
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,6 +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 Adresse',
'manufacturer' => 'Hersteller',
'model' => 'Modell',
'months' => 'Monate',
@@ -23,6 +27,7 @@ return array(
'order' => 'Bestellnummer',
'qr' => 'QR-Code',
'requestable' => 'Benutzer dürfen dieses Asset anfordern',
'select_statustype' => 'Status Typ auswählen',
'serial' => 'Seriennummer',
'status' => 'Status',
'supplier' => 'Lieferant',
+8 -1
View File
@@ -1,11 +1,18 @@
<?php
return array(
'archived' => 'Archiviert',
'asset' => 'Asset',
'checkin' => 'Asset zurücknehmen',
'checkout' => 'Asset an Benutzer herausgeben',
'clone' => 'Asset duplizieren',
'deployable' => 'Einsetzbar',
'deleted' => 'Dieses Asset wurde gelöscht. <a href="/hardware/:asset_id/restore">Zur Wiederherstellung hier klicken</a>.',
'edit' => 'Asset editieren',
'pending' => 'Unerledigter 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' => 'Anforderbar',
'restore' => 'Asset wiederherstellen',
'pending' => 'Ausstehend',
'undeployable' => 'nicht einsetzbar',
'view' => 'Asset ansehen',
);

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