Compare commits

...

139 Commits

Author SHA1 Message Date
snipe ba39cbb5e0 Merge remote-tracking branch 'origin/develop' 2015-11-25 03:50:08 -08:00
snipe 34276984f3 Bumped version 2015-11-25 03:49:47 -08:00
snipe 2195e27d61 Added company_list to license clone 2015-11-25 03:48:05 -08:00
snipe 948be5c74b Updated language strings 2015-11-25 03:37:48 -08:00
snipe 93c582970c Merge remote-tracking branch 'origin/develop' 2015-11-25 03:19:34 -08:00
snipe 9624388522 Added company_list to clone asset 2015-11-25 03:19:13 -08:00
snipe 6abfb1b968 Merge remote-tracking branch 'origin/develop' 2015-11-25 02:47:48 -08:00
snipe 59b2b8c63e Switch to hash version for more consistent cookie resets 2015-11-25 02:47:21 -08:00
snipe 658462cda5 Merge remote-tracking branch 'origin/develop' 2015-11-25 02:39:13 -08:00
snipe dad1ffb355 Specify table name in select to prevent id overwriting 2015-11-25 02:38:13 -08:00
snipe 12b82d6679 Merge remote-tracking branch 'origin/develop' 2015-11-25 00:22:31 -08:00
snipe 20490986c6 Fixes #1325 - zenbra striping and borders on table for money value clarity 2015-11-24 23:43:10 -08:00
snipe 64eecc8df7 Added image to model listing view for #1370 2015-11-24 23:24:20 -08:00
snipe 0f33bad1b6 Commented out version of export all
This still works sorta wonky, and only exports 50 per page. Possibly related to https://github.com/wenzhixin/bootstrap-table/issues/1576
2015-11-24 23:15:01 -08:00
snipe 632fa92f92 Fixes #1333 - hide checkout button if asset status is not deployable 2015-11-24 22:49:31 -08:00
snipe 99391d0179 Fixes #1332 - added location to accessories 2015-11-24 22:43:13 -08:00
snipe c6c6bd02bb Possible fix for weird UTF-8 issues 2015-11-24 22:30:00 -08:00
snipe 904ddddce9 Removed consumable search sicne it doesn't do anything yet 2015-11-24 22:20:13 -08:00
snipe d34e7178b3 Order consumable assignments by most recent 2015-11-24 22:18:28 -08:00
snipe 0428d21c5e Order consumable assignments by most recent 2015-11-24 22:18:16 -08:00
snipe d8b43215b0 Fix for missing admin ID 2015-11-24 22:00:29 -08:00
snipe b39c53a5ea Closes #1375 - More data in consumables detail view 2015-11-24 21:58:30 -08:00
snipe 67e968b032 Fixed attach() timestamps 2015-11-24 21:52:29 -08:00
snipe 032aabeadd Bumped version 2015-11-24 20:34:16 -08:00
snipe 1202ce4a81 Compound search for consumables 2015-11-24 20:34:10 -08:00
snipe 406e077c1e Fixed indenting 2015-11-24 20:34:00 -08:00
snipe 4be046a675 Fixes #1387 - adds server-side compound search 2015-11-24 20:33:51 -08:00
snipe 535263788d Fixed dumb indenting 2015-11-24 20:20:34 -08:00
snipe 29bb6a3c4f Fixed issue where deleted asset tags could not be re-used
This was by-design to start off with, since it would b weird to re-use an asset tag that legitimately belonged to someone else, however sometimes when assets are accidentally deleted and users don't restore them (or if there were weird duplicates), this can be problematic.
2015-11-24 20:20:28 -08:00
snipe f04e4b1fb4 Bumped version 2015-11-24 19:38:23 -08:00
snipe c8c755f8c3 Fixed filename renaming 2015-11-24 19:38:13 -08:00
snipe 287c7735b6 Added CSRF token for upload 2015-11-24 19:37:59 -08:00
snipe 2a28c73845 Importer fixes - check for asset before inserting 2015-11-24 19:37:37 -08:00
snipe 3dc0381e2b Updated contributing docs 2015-11-24 18:05:48 -08:00
snipe a3dbd87f9f Fixed weird company table styles 2015-11-24 13:47:43 -08:00
snipe 6d42d2c614 Fixed bootstrap class for button 2015-11-24 13:44:58 -08:00
snipe e910b532c7 Account for invalid categories 2015-11-24 13:31:54 -08:00
snipe a777499c0b Fixes #1376 - added new fields to consumables view 2015-11-24 13:30:05 -08:00
snipe b99c138cb0 Fixes #1369 - fixed searching/sorting on location 2015-11-24 12:48:41 -08:00
snipe cbb2151f1a Allow re-use of usernames 2015-11-24 12:29:25 -08:00
snipe 256f33e6b4 Company/category search on accessories 2015-11-24 12:08:49 -08:00
snipe 59315878c3 Bumped version 2015-11-24 11:47:40 -08:00
snipe f6e2654609 Added searching on company name, ordering on company name for PR #1321 2015-11-24 11:47:34 -08:00
snipe 4ad241e65e Merge pull request #1386 from RealEnder/develop
Add Bulgarian lev and replace tabs
2015-11-24 10:51:55 -08:00
snipe 808b66b9f5 Merge pull request #1384 from merid14/develop
Moved installer to snipeit.sh for logging
2015-11-24 10:50:46 -08:00
Walter edbfdc6eb1 pointed wget to snipe master 2015-11-24 09:13:01 -05:00
Alex Stanev 716c459985 Fix ident 2015-11-24 12:30:28 +02:00
Alex Stanev ef011cdf7e Add Bulgarian lev 2015-11-24 12:25:57 +02:00
snipe b93f36a856 Bumped version 2015-11-23 21:04:47 -08:00
snipe e60c0e3b4d Warning message about EOL 2015-11-23 21:04:41 -08:00
snipe 407b341510 Updated bootstrap tables 2015-11-23 20:57:18 -08:00
snipe 120c8394bb Fixes #1380 - groups pagination 2015-11-23 19:18:00 -08:00
snipe cc17862eae Back out the encryption constructor for now 2015-11-23 18:18:49 -08:00
snipe c24f1721d7 Bumped version 2015-11-23 17:44:00 -08:00
snipe c80f1789d4 Set default hasher in constructor 2015-11-23 17:43:53 -08:00
snipe 4a49e6f471 Added popover code 2015-11-23 17:43:43 -08:00
snipe e9f4be711a Added required fields 2015-11-23 17:43:35 -08:00
snipe 1bccb6127e Merge branch 'develop' of github.com:snipe/snipe-it into develop 2015-11-23 15:18:22 -08:00
snipe 61107769e8 Add user ID and make company name hidden by default 2015-11-23 15:18:10 -08:00
snipe 4e96a5a793 Merge pull request #1374 from vabue/features/ukrainian-currency
Add ukrainian and russian currencies for #1373
2015-11-23 15:17:24 -08:00
snipe f87a25bf3f Moved company down further, since it's not used as often 2015-11-23 14:44:08 -08:00
snipe 4ae02c1fb3 Merge pull request #1321 from Ahimta/multiple-companies
Add support for multiple companies
2015-11-23 14:40:37 -08:00
snipe 9ec132acde Small fixed for LDAP in settings table 2015-11-23 14:33:00 -08:00
snipe 318b4b48c6 Fixes null value for LDAP settings 2015-11-23 14:11:55 -08:00
snipe 329a2282e4 Merge pull request #1357 from merid14/features/ldap-settings
Features/ldap settings
2015-11-23 14:10:44 -08:00
Wahlstedt, Walter f8014c4677 Insure running as root. added comment
added comment to ubuntu installer so people know to wait.
2015-11-23 16:37:54 -05:00
Walter 7a07c07e29 removed password insert to database 2015-11-23 16:16:05 -05:00
Wahlstedt, Walter 4b926f015b fixed typo in installer 2015-11-23 16:08:02 -05:00
Wahlstedt, Walter aa834aa72b Merged changes to new snipeit.sh install file. 2015-11-23 16:04:12 -05:00
Wahlstedt, Walter 400b97c40a Merge remote-tracking branch 'refs/remotes/snipe/develop' into develop
Conflicts:
	install.sh
2015-11-23 16:02:59 -05:00
Wahlstedt, Walter 8394212df7 update tzone for centos7 2015-11-23 15:49:08 -05:00
Wahlstedt, Walter 2487ce42e3 remove installers 2015-11-23 15:22:39 -05:00
Wahlstedt, Walter fb59ad9fe6 remove force root 2015-11-23 15:15:08 -05:00
Wahlstedt, Walter 8af5fd0384 Merge remote-tracking branch 'origin/develop' into develop
Conflicts:
	snipeit.sh
2015-11-23 14:43:00 -05:00
Wahlstedt, Walter 4de42f69ba adding some IO redirection 2015-11-23 14:40:15 -05:00
Walter 620d4754c0 install epel repo before IUS 2015-11-22 23:15:01 -05:00
Walter 6ea3bedb9e set decryption and set pword in migraiton 2015-11-22 23:08:18 -05:00
Walter 840e5b1523 Revert "begin work on idap import button"
This reverts commit 3942fd1869.
2015-11-22 11:10:36 -05:00
Walter 1ee3f29d2e Revert "working on ldap import button"
This reverts commit 113dfc9c24.
2015-11-22 11:02:19 -05:00
Walter 6b26640077 Merge remote-tracking branch 'refs/remotes/snipe/develop' into features/ldap-settings 2015-11-22 11:01:07 -05:00
Val Budkin 964d2bc463 Add ukrainian and russian currencies for #1373 2015-11-22 17:50:08 +02:00
Abdullah Alansari e4a634a8a3 Merge remote-tracking branch 'upstream/develop' into multiple-companies 2015-11-21 11:27:00 +03:00
Abdullah Alansari 5445a7d16b Scope users like other companyables
Note that the User model doesn't use global scope,
global models can have unexpected results that
would very likely break many parts of the application
2015-11-21 11:23:42 +03:00
Abdullah Alansari 86a174201e Only users with no company or supers can manage users' companies 2015-11-21 04:30:15 +03:00
Abdullah Alansari 7a03a56498 Fix: company field required 2015-11-21 03:59:12 +03:00
snipe 01b574069a Fixes #1362 - status labels losing type on edit 2015-11-20 09:20:14 -08:00
snipe cc930fc5b8 Fixed links to getting help and common issues 2015-11-20 09:19:45 -08:00
snipe 67a58221eb Fixes #1368 - typos in installer 2015-11-20 07:30:40 -08:00
Walter a0f2ad5d54 point to dev 2015-11-19 21:32:58 -05:00
Walter 2c7553e81e Setting up logging for the install script 2015-11-19 21:15:47 -05:00
Abdullah Alansari e82ede5d44 Fix: some Company functions throw when seeding the DB 2015-11-19 09:44:06 +03:00
Abdullah Alansari e91a22fce0 Fix assumeng Setting::getSettings() is not null in Company
Breaks the TravisCI build:
> php artisan db:seed --no-interaction -vvv
[ErrorException]
Trying to get property of non-object
2015-11-19 09:32:36 +03:00
Abdullah Alansari 31ecd165a3 Merge remote-tracking branch 'upstream/develop' into multiple-companies 2015-11-19 09:24:57 +03:00
Abdullah Alansari fe44846c1b Fix: only super users can change multiple companies support option 2015-11-19 09:17:50 +03:00
Abdullah Alansari c708a24657 Restrict backups to super users 2015-11-19 09:13:20 +03:00
Abdullah Alansari dbdc2c8e64 Fix some typos (e.g: companayable) 2015-11-19 08:48:43 +03:00
Abdullah Alansari e66e2e42d3 Use global scope for companyable children 2015-11-19 08:42:17 +03:00
Abdullah Alansari a598fdcb59 Add global scope for companyable children 2015-11-19 08:03:19 +03:00
Abdullah Alansari 177fadba8a Add better scoping for companayable children 2015-11-19 07:41:32 +03:00
Wahlstedt, Walter 638a7773bd syntax error 2015-11-18 16:36:02 -05:00
Wahlstedt, Walter 113dfc9c24 working on ldap import button
add route for button
added button and open/close for form
2015-11-18 16:22:04 -05:00
Walter 3942fd1869 begin work on idap import button 2015-11-18 12:11:42 -05:00
Abdullah Alansari d2423b2fc8 Show company name for the remaining entities 2015-11-18 19:15:56 +03:00
Abdullah Alansari 08781a561b Fix: use global scope for companies support
Use Eloquent ORM global scope instead of using
Company::scopeCompanayables() all over the place.

In addition, this makes it harder to for a user
that is assigned to a company to access unauthorized
assets through other entities (e.g: license seats)
2015-11-18 16:49:34 +03:00
Abdullah Alansari 8fb7d82bab Fix no admin/consumables route 2015-11-18 16:46:29 +03:00
Abdullah Alansari ced2a99031 Add Eloquent global scope for companayables 2015-11-18 09:29:35 +03:00
Abdullah Alansari 0a97c626e7 Fix $inout used when undefined 2015-11-18 07:16:53 +03:00
Abdullah Alansari 6478425be6 Fix dashboard shows all companies
Fix dashboard page shows statistics of all companies
even when the user is assigned to a company
and full multiple companies support is enabled
2015-11-18 06:14:08 +03:00
Abdullah Alansari 999910f31f Fix 'use' used with non-compound
Fix "The use statement with non-compound name '{Lang,Sentry,Setting}' has no effect"
2015-11-18 05:35:27 +03:00
Wahlstedt, Walter 73a183677d Revert "add escaping to ldap fields in blades"
This reverts commit 1d24450dcd.
2015-11-17 16:12:24 -05:00
Wahlstedt, Walter 1d24450dcd add escaping to ldap fields in blades 2015-11-17 16:06:55 -05:00
Wahlstedt, Walter 6f338e573c set required_if ldap_enabled box has been checked. 2015-11-17 16:00:52 -05:00
Wahlstedt, Walter 8e44421788 added Crypt class and set ldap_pword field to longText 2015-11-17 15:20:55 -05:00
Wahlstedt, Walter e031239cf0 Removed escaping, add sometimes required, add encrypt ldap password 2015-11-17 13:49:59 -05:00
Wahlstedt, Walter ac44140d83 fix edit blades 2015-11-17 10:50:39 -05:00
Wahlstedt, Walter c8ecddba54 Revert "Set required fields if ldap is enabled"
This reverts commit 2f69be03d3.
2015-11-17 10:47:59 -05:00
Wahlstedt, Walter 2f69be03d3 Set required fields if ldap is enabled 2015-11-17 10:46:29 -05:00
Wahlstedt, Walter 63cd0c1ae1 Merge remote-tracking branch 'refs/remotes/snipe/develop' into features/ldap-settings 2015-11-17 10:11:38 -05:00
Wahlstedt, Walter 8a014d4bd3 update ldap integration 2015-11-17 10:00:06 -05:00
Wahlstedt, Walter 8793a04869 add ldap integration to settings page. 2015-11-17 09:59:20 -05:00
Wahlstedt, Walter d72df21b3b Update migration and blades 2015-11-16 16:31:43 -05:00
Wahlstedt, Walter 08d0fe5118 change tables from text to string/int 2015-11-16 13:21:00 -05:00
Wahlstedt, Walter 2ec5f340e8 update validators and lang 2015-11-16 13:08:51 -05:00
Wahlstedt, Walter 3e1e9b0077 syntax errors 2015-11-16 12:48:41 -05:00
Wahlstedt, Walter 937249b960 enable ldap import if data exists in database 2015-11-16 12:38:47 -05:00
Wahlstedt, Walter 50ea6c66f9 LDAP Settings update
update ldap field names
add ldap fields to controllers
add ldap fields to migration
add lang fields
update edit page
2015-11-16 11:30:51 -05:00
Wahlstedt, Walter 0910d9cf8c correct name of migration 2015-11-16 09:44:06 -05:00
Walter 30e8555148 updating users controller to work with database fields 2015-11-15 22:48:56 -05:00
Walter 8f6c37c301 add ldap to en lang 2015-11-15 22:22:42 -05:00
Abdullah Alansari b202e01205 Add full multiple companies support
Added as an option in settings.
When enabled, users (including admins) who are assigned
to companies have access only to their companies' assets.
2015-11-16 06:03:27 +03:00
Walter 7f9fab0055 adjusted settings 2015-11-15 21:42:49 -05:00
Abdullah Alansari 23d10a8f7f Make company field optional
Company field is now optional for the user,
although still required in the controllers.
2015-11-13 09:19:18 +03:00
Abdullah Alansari d8df61bd32 Merge remote-tracking branch 'upstream/develop' into multiple-companies
Conflicts:
	app/controllers/admin/UsersController.php
	app/views/backend/hardware/index.blade.php
2015-11-12 09:30:11 +03:00
Walter 12912b3e27 adjusting the migration 2015-11-11 23:43:02 -05:00
Walter d9cd4a4da0 setting up views for ldap 2015-11-11 23:03:46 -05:00
Walter ecae451ebf form validation 2015-11-09 22:34:18 -05:00
Walter 9627f15412 update settings controller to add ldap field validation 2015-11-09 22:32:00 -05:00
Walter 464f11c398 setting up bones for ldap settings
add migration
add ldap settings to settings controller
add ldap fields edit settings views
2015-11-09 22:09:09 -05:00
Abdullah Alansari 6bf2a2875f Add initial support for multiple companies
You can find screenshots and other files
related to the feature on Dropbox here:
https://www.dropbox.com/sh/wugnzqepwgzwlnh/AAAwNWA5hIKrP0y2VTu-LMHHa?dl=0

https://github.com/snipe/snipe-it/issues/23
2015-11-07 15:22:10 +03:00
289 changed files with 6716 additions and 2685 deletions
+2 -26
View File
@@ -1,31 +1,7 @@
# Contribution Guidelines
**Before opening an issue to report a bug or request help, make sure you've checked the [Common Issues](http://snipeitapp.com/documentation/common-issues/) and [Getting Help](http://snipeitapp.com/documentation/getting-help/) pages.**
**Before opening an issue to report a bug or request help, make sure you've checked the [Common Issues](http://docs.snipeitapp.com/common-issues.html) and [Getting Help](http://docs.snipeitapp.com/getting-help.html) pages.**
## Developing on Snipe-IT
Please submit all pull requests to the [snipe/snipe-it](http://github.com/snipe/snipe-it) repository in the `develop` branch!
**As you're working on bug-fixes or features, please break them out into their own feature branches and open the pull request against your feature branch**. It makes it _much_ easier to decipher down the road, as you open multiple pull requests over time, and makes it much easier for me to approve pull requests quickly.
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!
If you're not a coder but want to give back to the project and you're fluent in other languages, that's okay too. We use [CrowdIn](https://crowdin.com) to manage translations, and it makes it super-simple for you to add translations (or validate proposed translations) to the project without messing with code. __Check out [the Snipe-IT CrowdIn translation project here](https://crowdin.com/project/snipe-it/)__.
Thanks!
-----
## Contributor Code of Conduct
Please note that this project is released with a [Contributor Code of Conduct](CODE_OF_CONDUCT.md). By participating in this project you agree to abide by its terms.
Please see the [Contributing guidelines in the documentation](http://docs.snipeitapp.com/contributing.html).
+46 -33
View File
@@ -285,12 +285,20 @@ class AssetImportCommand extends Command {
}
if (e($user_asset_category)=='') {
$category_name = 'Unnamed Category';
} else {
$category_name = e($user_asset_category);
}
// Check for the category match and create it if it doesn't exist
if ($category = Category::where('name', $user_asset_category)->where('category_type', 'asset')->first()) {
$this->comment('Category '.$user_asset_category.' already exists');
if ($category = Category::where('name', $category_name)->where('category_type', 'asset')->first()) {
$this->comment('Category '.$category_name.' already exists');
} else {
$category = new Category();
$category->name = e($user_asset_category);
$category->name = $category_name;
$category->category_type = 'asset';
$category->user_id = 1;
@@ -338,38 +346,43 @@ class AssetImportCommand extends Command {
}
// Check for the asset match and create it if it doesn't exist
if ($asset = Asset::where('asset_tag', $user_asset_tag)->first()) {
$this->comment('The Asset with asset tag '.$user_asset_tag.' already exists');
} else {
$asset = new Asset();
$asset->name = e($user_asset_asset_name);
if ($user_asset_purchase_date!='') {
$asset->purchase_date = $user_asset_purchase_date;
} else {
$asset->purchase_date = NULL;
}
if ($user_asset_purchase_cost!='') {
$asset->purchase_cost = ParseFloat(e($user_asset_purchase_cost));
} else {
$asset->purchase_cost = 0.00;
}
$asset->serial = e($user_asset_serial);
$asset->asset_tag = e($user_asset_tag);
$asset->model_id = $asset_model->id;
$asset->assigned_to = $user->id;
$asset->rtd_location_id = $location->id;
$asset->user_id = 1;
$asset->status_id = $status_id;
if ($user_asset_purchase_date!='') {
$asset->purchase_date = $user_asset_purchase_date;
} else {
$asset->purchase_date = NULL;
}
$asset->notes = e($user_asset_notes);
$asset = new Asset();
$asset->name = e($user_asset_asset_name);
if ($user_asset_purchase_date!='') {
$asset->purchase_date = $user_asset_purchase_date;
} else {
$asset->purchase_date = NULL;
}
if ($user_asset_purchase_cost!='') {
$asset->purchase_cost = ParseFloat(e($user_asset_purchase_cost));
} else {
$asset->purchase_cost = 0.00;
}
$asset->serial = e($user_asset_serial);
$asset->asset_tag = e($user_asset_tag);
$asset->model_id = $asset_model->id;
$asset->assigned_to = $user->id;
$asset->rtd_location_id = $location->id;
$asset->user_id = 1;
$asset->status_id = $status_id;
if ($user_asset_purchase_date!='') {
$asset->purchase_date = $user_asset_purchase_date;
} else {
$asset->purchase_date = NULL;
}
$asset->notes = e($user_asset_notes);
if ($asset->save()) {
$this->comment('Asset '.$user_asset_name.' with serial number '.$user_asset_serial.' was created');
} else {
$this->comment('Something went wrong! Asset '.$user_asset_name.' was NOT created');
}
}
if ($asset->save()) {
$this->comment('Asset '.$user_asset_name.' with serial number '.$user_asset_serial.' was created');
} else {
$this->comment('Something went wrong! Asset '.$user_asset_name.' was NOT created');
}
$this->comment('=====================================');
+1 -1
View File
@@ -1,5 +1,5 @@
<?php
return array (
'app_version' => 'v2.0.5-pre',
'hash_version' => 'v2.0.5-pre-57-g5ebb267',
'hash_version' => 'v2.0.5-pre-191-g948be5c',
);
+2
View File
@@ -14,6 +14,8 @@ class AdminController extends AuthorizedController
// Apply the admin auth filter
//$this->beforeFilter('admin-auth', array('except' => $this->whitelist));
// CSRF Protection
$this->beforeFilter('csrf', array('on' => 'post'));
}
+11 -11
View File
@@ -31,12 +31,12 @@ class AuthController extends BaseController
*/
function ldap($username, $password, $returnUser = false) {
$ldaphost = Config::get('ldap.url');
$ldaprdn = Config::get('ldap.username');
$ldappass = Config::get('ldap.password');
$baseDn = Config::get('ldap.basedn');
$filterQuery = Config::get('ldap.authentication.filter.query') . $username;
$ldapversion = Config::get('ldap.version');
$ldaphost = Setting::getSettings()->ldap_server;
$ldaprdn = Setting::getSettings()->ldap_uname;
$ldappass = Crypt::decrypt(Setting::getSettings()->ldap_pword);
$baseDn = Setting::getSettings()->ldap_basedn;
$filterQuery = Setting::getSettings()->ldap_auth_filter_query . $username;
$ldapversion = Setting::getSettings()->ldap_version;
// Connecting to LDAP
$connection = ldap_connect($ldaphost) or die("Could not connect to {$ldaphost}");
@@ -74,11 +74,11 @@ class AuthController extends BaseController
*/
function createUserFromLdap($ldapatttibutes){
//Get LDAP attribute config
$ldap_result_username = Config::get('ldap.result.username');
$ldap_result_emp_num = Config::get('ldap.result.emp.num');
$ldap_result_last_name = Config::get('ldap.result.last.name');
$ldap_result_first_name = Config::get('ldap.result.first.name');
$ldap_result_email = Config::get('ldap.result.email');
$ldap_result_username = Setting::getSettings()->ldap_username_field;
$ldap_result_emp_num = Setting::getSettings()->ldap_emp_num;
$ldap_result_last_name = Setting::getSettings()->ldap_lname_field;
$ldap_result_first_name = Setting::getSettings()->ldap_fname_field;
$ldap_result_email = Setting::getSettings()->ldap_email;
//Get LDAP user data
$item = array();
@@ -9,6 +9,7 @@ use Location;
use View;
use Asset;
use Actionlog;
use Company;
use Lang;
use Accessory;
use DB;
@@ -44,6 +45,7 @@ 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'));
}
@@ -56,7 +58,11 @@ class ViewAssetsController extends AuthorizedController
if (is_null($asset = Asset::RequestableAssets()->find($assetId))) {
// Redirect to the asset management page
return Redirect::route('requestable-assets')->with('error', Lang::get('admin/hardware/message.does_not_exist_or_not_requestable'));
} else {
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::route('requestable-assets')->with('error', Lang::get('general.insufficient_permissions'));
}
else {
$logaction = new Actionlog();
$logaction->asset_id = $asset->id;
@@ -133,24 +139,28 @@ class ViewAssetsController extends AuthorizedController
// 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);
else if (!Company::isCurrentUserHasAccess($item)) {
return Redirect::route('requestable-assets')->with('error', Lang::get('general.insufficient_permissions'));
}
else {
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/view-assets')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
// NOTE: make sure the global scope is applied
$is_unauthorized = is_null(Actionlog::where('id', '=', $logID)->first());
if ($is_unauthorized) {
return Redirect::route('requestable-assets')->with('error', Lang::get('general.insufficient_permissions'));
}
if ($findlog->accepted_id!='') {
// Redirect to the asset management page
@@ -221,14 +231,5 @@ class ViewAssetsController extends AuthorizedController
} else {
return Redirect::to('account/view-assets')->with('error', 'Something went wrong ');
}
}
}
+81 -13
View File
@@ -13,6 +13,7 @@ use Validator;
use View;
use User;
use Actionlog;
use Company;
use Mail;
use Datatable;
use Slack;
@@ -41,7 +42,13 @@ class AccessoriesController extends AdminController
{
// Show the page
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
return View::make('backend/accessories/edit')->with('accessory',new Accessory)->with('category_list',$category_list);
$company_list = Company::getSelectList();
$location_list = locationsList();
return View::make('backend/accessories/edit')
->with('accessory', new Accessory)
->with('category_list', $category_list)
->with('company_list', $company_list)
->with('location_list', $location_list);
}
@@ -68,6 +75,8 @@ class AccessoriesController extends AdminController
// Update the accessory data
$accessory->name = e(Input::get('name'));
$accessory->category_id = e(Input::get('category_id'));
$accessory->location_id = e(Input::get('location_id'));
$accessory->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$accessory->order_number = e(Input::get('order_number'));
if (e(Input::get('purchase_date')) == '') {
@@ -111,9 +120,18 @@ class AccessoriesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
return View::make('backend/accessories/edit', compact('accessory'))->with('category_list',$category_list);
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
$company_list = Company::getSelectList();
$location_list = locationsList();
return View::make('backend/accessories/edit', compact('accessory'))
->with('category_list',$category_list)
->with('company_list', $company_list)
->with('location_list', $location_list);
}
@@ -130,6 +148,9 @@ class AccessoriesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
// get the POST data
@@ -149,7 +170,9 @@ class AccessoriesController extends AdminController
// Update the accessory data
$accessory->name = e(Input::get('name'));
$accessory->location_id = e(Input::get('location_id'));
$accessory->category_id = e(Input::get('category_id'));
$accessory->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$accessory->order_number = e(Input::get('order_number'));
if (e(Input::get('purchase_date')) == '') {
@@ -191,6 +214,9 @@ class AccessoriesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
if ($accessory->hasUsers() > 0) {
@@ -222,7 +248,13 @@ class AccessoriesController extends AdminController
$accessory = Accessory::find($accessoryID);
if (isset($accessory->id)) {
if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
else {
return View::make('backend/accessories/view', compact('accessory'));
}
} else {
// Prepare the error message
$error = Lang::get('admin/accessories/message.does_not_exist', compact('id'));
@@ -244,6 +276,9 @@ class AccessoriesController extends AdminController
// Redirect to the accessory management page with error
return Redirect::to('accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
// 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," (",username,")") as full_name, id'))->whereNull('deleted_at')->orderBy('last_name', 'asc')->orderBy('first_name', 'asc')->lists('full_name', 'id');
@@ -262,6 +297,9 @@ class AccessoriesController extends AdminController
// Redirect to the accessory management page with error
return Redirect::to('accessories')->with('error', Lang::get('admin/accessories/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
$admin_user = Sentry::getUser();
$assigned_to = e(Input::get('assigned_to'));
@@ -388,7 +426,13 @@ class AccessoriesController extends AdminController
}
$accessory = Accessory::find($accessory_user->accessory_id);
return View::make('backend/accessories/checkin', compact('accessory'))->with('backto',$backto);
if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
else {
return View::make('backend/accessories/checkin', compact('accessory'))->with('backto',$backto);
}
}
@@ -408,6 +452,11 @@ class AccessoriesController extends AdminController
$accessory = Accessory::find($accessory_user->accessory_id);
if (!Company::isCurrentUserHasAccess($accessory)) {
return Redirect::to('admin/accessories')->with('error', Lang::get('general.insufficient_permissions'));
}
$logaction = new Actionlog();
$logaction->checkedout_to = $accessory_user->assigned_to;
$return_to = $accessory_user->assigned_to;
@@ -493,8 +542,8 @@ class AccessoriesController extends AdminController
public function getDatatable()
{
$accessories = Accessory::with('category')
->whereNull('deleted_at');
$accessories = Accessory::select('accessories.*')->with('category', 'company')
->whereNull('accessories.deleted_at');
if (Input::has('search')) {
$accessories = $accessories->TextSearch(Input::get('search'));
@@ -513,11 +562,22 @@ class AccessoriesController extends AdminController
}
$allowed_columns = ['name','order_number','purchase_date','purchase_cost'];
$allowed_columns = ['name','order_number','purchase_date','purchase_cost','companyName','category'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
$accessories = $accessories->orderBy($sort, $order);
switch ($sort)
{
case 'category':
$accessories = $accessories->OrderCategory($order);
break;
case 'companyName':
$accessories = $accessories->OrderCompany($order);
break;
default:
$accessories = $accessories->orderBy($sort, $order);
break;
}
$accessCount = $accessories->count();
$accessories = $accessories->skip($offset)->take($limit)->get();
@@ -525,18 +585,21 @@ class AccessoriesController extends AdminController
$rows = array();
foreach ($accessories as $accessory) {
$actions = '<a href="'.route('checkout/accessory', $accessory->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($accessory->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/accessory', $accessory->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/accessory', $accessory->id).'" data-content="'.Lang::get('admin/accessories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($accessory->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$actions = '<nobr><a href="'.route('checkout/accessory', $accessory->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($accessory->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/accessory', $accessory->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/accessory', $accessory->id).'" data-content="'.Lang::get('admin/accessories/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($accessory->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
$company = $accessory->company;
$rows[] = array(
'name' => link_to('admin/accessories/'.$accessory->id.'/view', $accessory->name),
'category' => link_to('admin/settings/categories/'.$accessory->category->id.'/view', $accessory->category->name),
'qty' => $accessory->qty,
'order_number' => $accessory->order_number,
'purchase_date' => $accessory->purchase_date,
'purchase_cost' => $accessory->purchase_cost,
'location' => ($accessory->location) ? $accessory->location->name: '',
'purchase_date' => $accessory->purchase_date,
'purchase_cost' => $accessory->purchase_cost,
'numRemaining' => $accessory->numRemaining(),
'actions' => $actions
);
'actions' => $actions,
'companyName' => is_null($company) ? '' : e($company->name)
);
}
$data = array('total'=>$accessCount, 'rows'=>$rows);
@@ -547,6 +610,11 @@ class AccessoriesController extends AdminController
public function getDataView($accessoryID)
{
$accessory = Accessory::find($accessoryID);
if (!Company::isCurrentUserHasAccess($accessory)) {
return ['total' => 0, 'rows' => []];
}
$accessory_users = $accessory->users;
$count = $accessory_users->count();
@@ -5,6 +5,7 @@
use AdminController;
use AssetMaintenance;
use Carbon\Carbon;
use Company;
use DB;
use Input;
use Lang;
@@ -23,6 +24,11 @@
class AssetMaintenancesController extends AdminController
{
private static function getInsufficientPermissionsRedirect()
{
return Redirect::to( 'admin/asset_maintenances')
->with('error', Lang::get( 'general.insufficient_permissions' ) );
}
/**
* getIndex
@@ -48,9 +54,7 @@
public function getDatatable()
{
$maintenances = AssetMaintenance::with('asset','supplier')
$maintenances = AssetMaintenance::with('asset','supplier','asset.company')
->whereNull('deleted_at');
if (Input::has('search')) {
@@ -91,6 +95,8 @@
$maintenance_cost = $settings->default_currency.$maintenance->cost;
}
$company = $maintenance->asset->company;
$rows[] = array(
'id' => $maintenance->id,
'asset_name' => link_to('/hardware/'.$maintenance->asset->id.'/view', $maintenance->asset->showAssetName()) ,
@@ -102,7 +108,8 @@
'start_date' => $maintenance->start_date,
'time' => $maintenance->asset_maintenance_time,
'completion_date' => $maintenance->completion_date,
'actions' => $actions
'actions' => $actions,
'companyName' => is_null($company) ? '' : $company->name
);
}
@@ -123,7 +130,6 @@
*/
public function getCreate( $assetId = null )
{
// Prepare Asset Maintenance Type List
$assetMaintenanceType = [
'' => 'Select an asset maintenance type',
@@ -131,7 +137,7 @@
// Mark the selected asset, if it came in
$selectedAsset = $assetId;
// Get the possible assets using a left join to get a list of assets and some other helpful info
$asset = DB::table( 'assets' )
$asset = Company::scopeCompanyables( DB::table( 'assets' ), 'assets.company_id' )
->leftJoin( 'users', 'users.id', '=', 'assets.assigned_to' )
->leftJoin( 'models', 'assets.model_id', '=', 'models.id' )
->select( 'assets.id', 'assets.name', 'first_name', 'last_name', 'asset_tag',
@@ -207,6 +213,12 @@
$assetMaintenance->notes = e( Input::get( 'notes' ) );
}
$asset = Asset::find( e( Input::get( 'asset_id' ) ) );
if (!Company::isCurrentUserHasAccess($asset)) {
return static::getInsufficientPermissionsRedirect();
}
// Save the asset maintenance data
$assetMaintenance->asset_id = e( Input::get( 'asset_id' ) );
$assetMaintenance->asset_maintenance_type = e( Input::get( 'asset_maintenance_type' ) );
@@ -254,13 +266,15 @@
*/
public function getEdit( $assetMaintenanceId = null )
{
// Check if the asset maintenance exists
if (is_null( $assetMaintenance = AssetMaintenance::find( $assetMaintenanceId ) )) {
// Redirect to the improvement management page
return Redirect::to( 'admin/asset_maintenances' )
->with( 'error', Lang::get( 'admin/asset_maintenances/message.not_found' ) );
}
else if (!Company::isCurrentUserHasAccess( $assetMaintenance->asset )) {
return static::getInsufficientPermissionsRedirect();
}
if ($assetMaintenance->completion_date == '0000-00-00') {
$assetMaintenance->completion_date = null;
@@ -280,7 +294,7 @@
] + AssetMaintenance::getImprovementOptions();
// Get the possible assets using a left join to get a list of assets and some other helpful info
$asset = DB::table( 'assets' )
$asset = Company::scopeCompanyables( DB::table( 'assets' ), 'assets.company_id' )
->leftJoin( 'users', 'users.id', '=', 'assets.assigned_to' )
->leftJoin( 'models', 'assets.model_id', '=', 'models.id' )
->select( 'assets.id', 'assets.name', 'first_name', 'last_name', 'asset_tag',
@@ -335,6 +349,9 @@
return Redirect::to( 'admin/asset_maintenances' )
->with( 'error', Lang::get( 'admin/asset_maintenances/message.not_found' ) );
}
else if (!Company::isCurrentUserHasAccess( $assetMaintenance->asset )) {
return static::getInsufficientPermissionsRedirect();
}
// attempt validation
if ($assetMaintenance->validate( $new )) {
@@ -363,6 +380,12 @@
$assetMaintenance->notes = e( Input::get( 'notes' ) );
}
$asset = Asset::find( e( Input::get( 'asset_id' ) ) );
if (!Company::isCurrentUserHasAccess($asset)) {
return static::getInsufficientPermissionsRedirect();
}
// Save the asset maintenance data
$assetMaintenance->asset_id = e( Input::get( 'asset_id' ) );
$assetMaintenance->asset_maintenance_type = e( Input::get( 'asset_maintenance_type' ) );
@@ -425,13 +448,16 @@
*/
public function getDelete( $assetMaintenanceId )
{
// Check if the asset maintenance exists
if (is_null( $assetMaintenance = AssetMaintenance::find( $assetMaintenanceId ) )) {
// Redirect to the asset maintenance management page
return Redirect::to( 'admin/asset_maintenances' )
->with( 'error', Lang::get( 'admin/asset_maintenances/message.not_found' ) );
}
else if (!Company::isCurrentUserHasAccess( $assetMaintenance->asset )) {
return static::getInsufficientPermissionsRedirect();
}
// Delete the asset maintenance
$assetMaintenance->delete();
@@ -451,13 +477,15 @@
*/
public function getView( $assetMaintenanceId )
{
// Check if the asset maintenance exists
if (is_null( $assetMaintenance = AssetMaintenance::find( $assetMaintenanceId ) )) {
// Redirect to the asset maintenance management page
return Redirect::to( 'admin/asset_maintenances' )
->with( 'error', Lang::get( 'admin/asset_maintenances/message.not_found' ) );
}
else if (!Company::isCurrentUserHasAccess( $assetMaintenance->asset )) {
return static::getInsufficientPermissionsRedirect();
}
return View::make( 'backend/asset_maintenances/view')->with('assetMaintenance', $assetMaintenance);
}
+99 -19
View File
@@ -13,6 +13,7 @@ use Setting;
use Redirect;
use DB;
use Actionlog;
use Company;
use Model;
use Depreciation;
use Sentry;
@@ -65,11 +66,13 @@ class AssetsController extends AdminController
$manufacturer_list = manufacturerList();
$category_list = categoryList();
$supplier_list = suppliersList();
$company_list = Company::getSelectList();
$assigned_to = usersList();
$statuslabel_types = statusTypeList();
$view = View::make('backend/hardware/edit');
$view->with('supplier_list',$supplier_list);
$view->with('company_list',$company_list);
$view->with('model_list',$model_list);
$view->with('statuslabel_list',$statuslabel_list);
$view->with('assigned_to',$assigned_to);
@@ -162,7 +165,8 @@ class AssetsController extends AdminController
// Save the asset data
$asset->name = e(Input::get('name'));
$asset->serial = e(Input::get('serial'));
$asset->model_id = e(Input::get('model_id'));
$asset->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$asset->model_id = e(Input::get('model_id'));
$asset->order_number = e(Input::get('order_number'));
$asset->notes = e(Input::get('notes'));
$asset->asset_tag = e(Input::get('asset_tag'));
@@ -220,6 +224,10 @@ class AssetsController extends AdminController
// Redirect to the asset management page
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
// Grab the dropdown lists
$model_list = modelList();
$statuslabel_list = statusLabelList();
@@ -227,12 +235,14 @@ class AssetsController extends AdminController
$manufacturer_list = manufacturerList();
$category_list = categoryList();
$supplier_list = suppliersList();
$company_list = Company::getSelectList();
$assigned_to = usersList();
$statuslabel_types = statusTypeList();
return View::make('backend/hardware/edit', compact('asset'))
->with('model_list',$model_list)
->with('supplier_list',$supplier_list)
->with('company_list',$company_list)
->with('location_list',$location_list)
->with('statuslabel_list',$statuslabel_list)
->with('assigned_to',$assigned_to)
@@ -255,6 +265,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
//attempt to validate
$validator = Validator::make(Input::all(), $asset->validationRules($assetId));
@@ -314,13 +327,14 @@ class AssetsController extends AdminController
$asset->mac_address = ($checkModel == true) ? e(Input::get('mac_address')) : NULL;
// Update the asset data
$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->asset_tag = e(Input::get('asset_tag'));
$asset->notes = e(Input::get('notes'));
$asset->physical = '1';
$asset->name = e(Input::get('name'));
$asset->serial = e(Input::get('serial'));
$asset->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$asset->model_id = e(Input::get('model_id'));
$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';
// Update the image
if (Input::file('image')) {
@@ -366,6 +380,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
if (isset($asset->assigneduser->id) && ($asset->assigneduser->id!=0)) {
// Redirect to the asset management page
@@ -398,6 +415,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
// Get the dropdown of users and then pass it to the checkout view
$users_list = usersList();
@@ -416,6 +436,9 @@ class AssetsController extends AdminController
if (!$asset = Asset::find($assetId)) {
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
// Declare the rules for the form validation
$rules = array(
@@ -478,6 +501,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
return View::make('backend/hardware/checkin', compact('asset'))->with('backto', $backto);
}
@@ -496,6 +522,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
// Check for a valid user to checkout fa-random
// This will need to be tweaked for checkout to location
@@ -607,8 +636,10 @@ class AssetsController extends AdminController
$asset = Asset::withTrashed()->find($assetId);
$settings = Setting::getSettings();
if ($asset->userloc) {
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if ($asset->userloc) {
$use_currency = $asset->userloc->currency;
} elseif ($asset->assetloc) {
$use_currency = $asset->assetloc->currency;
@@ -657,6 +688,10 @@ class AssetsController extends AdminController
$asset = Asset::find($assetId);
$size = barcodeDimensions($settings->barcode_type);
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
if (isset($asset->id,$asset->asset_tag)) {
$barcode = new \Com\Tecnick\Barcode\Barcode();
$barcode_obj = $barcode->getBarcodeObj($settings->barcode_type, route('view/hardware', $asset->id), $size['height'], $size['width'], 'black', array(-2, -2, -2, -2));
@@ -672,6 +707,10 @@ class AssetsController extends AdminController
$path = app_path().'/private_uploads/imports/assets';
$files = array();
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
if ($handle = opendir($path)) {
/* This is the correct way to loop over the directory. */
@@ -697,7 +736,10 @@ class AssetsController extends AdminController
public function postAPIImportUpload() {
if (!Config::get('app.lock_passwords')) {
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
elseif (!Config::get('app.lock_passwords')) {
$rules = array(
'files' => 'required'
@@ -727,8 +769,9 @@ class AssetsController extends AdminController
return $results;
}
$date = date('Y-m-d-his');
$fixed_filename = str_replace(' ','-',$file->getClientOriginalName());
$file->move($path, date('Y-m-d-his').'-'.$file->getClientOriginalName());
$file->move($path, $date.'-'.$fixed_filename);
$name = date('Y-m-d-his').'-'.$fixed_filename;
$filesize = Setting::fileSizeConvert(filesize($path.'/'.$name));
$results[] = compact('name', 'filesize');
@@ -751,6 +794,10 @@ class AssetsController extends AdminController
public function getProcessImportFile($filename) {
// php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
$output = new BufferedOutput;
Artisan::call('asset-import:csv', ['filename'=> app_path().'/private_uploads/imports/assets/'.$filename, '--email_format'=>'firstname.lastname', '--username_format'=>'firstname.lastname'], $output);
$display_output = $output->fetch();
@@ -775,6 +822,9 @@ class AssetsController extends AdminController
// Redirect to the asset management page
return Redirect::to('hardware')->with('error', Lang::get('admin/hardware/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($asset_to_clone)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
// Grab the dropdown lists
$model_list = modelList();
@@ -785,6 +835,7 @@ class AssetsController extends AdminController
$supplier_list = suppliersList();
$assigned_to = usersList();
$statuslabel_types = statusTypeList();
$company_list = Company::getSelectList();
$asset = clone $asset_to_clone;
$asset->id = null;
@@ -801,7 +852,8 @@ class AssetsController extends AdminController
->with('asset',$asset)
->with('location_list',$location_list)
->with('manufacturer',$manufacturer_list)
->with('category',$category_list);
->with('category',$category_list)
->with('company_list',$company_list);
}
@@ -812,7 +864,10 @@ class AssetsController extends AdminController
// Get user information
$asset = Asset::withTrashed()->find($assetId);
if (isset($asset->id)) {
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (isset($asset->id)) {
// Restore the user
$asset->restore();
@@ -845,6 +900,10 @@ class AssetsController extends AdminController
if (isset($asset->id)) {
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
if (Input::hasFile('assetfile')) {
foreach(Input::file('assetfile') as $file) {
@@ -916,6 +975,11 @@ class AssetsController extends AdminController
// the asset is valid
if (isset($asset->id)) {
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
$log = Actionlog::find($fileId);
$full_filename = $destinationPath.'/'.$log->filename;
if (file_exists($full_filename)) {
@@ -949,6 +1013,11 @@ class AssetsController extends AdminController
// the asset is valid
if (isset($asset->id)) {
if (!Company::isCurrentUserHasAccess($asset)) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
$log = Actionlog::find($fileId);
$file = $log->get_src();
@@ -985,7 +1054,10 @@ class AssetsController extends AdminController
public function postBulkEdit($assets = null)
{
if (!Input::has('edit_asset')) {
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (!Input::has('edit_asset')) {
return Redirect::back()->with('error', 'No assets selected');
} else {
$asset_raw_array = Input::get('edit_asset');
@@ -1041,7 +1113,10 @@ class AssetsController extends AdminController
public function postBulkSave($assets = null)
{
if (Input::has('bulk_edit')) {
if (!Company::isCurrentUserAuthorized()) {
return Redirect::to('hardware')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (Input::has('bulk_edit')) {
$assets = Input::get('bulk_edit');
@@ -1125,7 +1200,7 @@ class AssetsController extends AdminController
{
$assets = Asset::with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category','assetstatus','assetloc')
$assets = Asset::select('assets.*')->with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category','assetstatus','assetloc', 'company')
->Hardware();
if (Input::has('search')) {
@@ -1184,6 +1259,7 @@ class AssetsController extends AdminController
'notes',
'expected_checkin',
'order_number',
'companyName',
'location',
'image',
];
@@ -1199,6 +1275,9 @@ class AssetsController extends AdminController
case 'category':
$assets = $assets->OrderCategory($order);
break;
case 'companyName':
$assets = $assets->OrderCompany($order);
break;
case 'location':
$assets = $assets->OrderLocation($order);
break;
@@ -1251,8 +1330,9 @@ class AssetsController extends AdminController
'last_checkout' => ($asset->last_checkout!='') ? $asset->last_checkout : '',
'expected_checkin' => ($asset->expected_checkin!='') ? $asset->expected_checkin : '',
'change' => ($inout) ? $inout : '',
'actions' => ($actions) ? $actions : ''
);
'actions' => ($actions) ? $actions : '',
'companyName' => is_null($asset->company) ? '' : e($asset->company->name)
);
}
$data = array('total'=>$assetCount, 'rows'=>$rows);
@@ -4,6 +4,7 @@ use AdminController;
use Input;
use Lang;
use Category;
use Company;
use Redirect;
use Setting;
use DB;
@@ -269,7 +270,7 @@ class CategoriesController extends AdminController
public function getDataView($categoryID) {
$category = Category::find($categoryID);
$category = Category::with('assets.company')->find($categoryID);
$category_assets = $category->assets;
if (Input::has('search')) {
@@ -300,7 +301,7 @@ class CategoriesController extends AdminController
$actions = '';
$inout='';
if ($asset->deleted_at=='') {
$actions = '<div style=" white-space: nowrap;"><a href="'.route('clone/hardware', $asset->id).'" class="btn btn-info btn-sm" title="Clone asset"><i class="fa fa-files-o"></i></a> <a href="'.route('update/hardware', $asset->id).'" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> <a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/hardware', $asset->id).'" data-content="'.Lang::get('admin/hardware/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($asset->asset_tag).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></div>';
} elseif ($asset->deleted_at!='') {
@@ -326,8 +327,7 @@ class CategoriesController extends AdminController
'assigned_to' => ($asset->assigneduser) ? link_to('/admin/users/'.$asset->assigneduser->id.'/view', $asset->assigneduser->fullName()): '',
'change' => $inout,
'actions' => $actions,
'companyName' => Company::getName($asset),
);
}
@@ -0,0 +1,127 @@
<?php namespace Controllers\Admin;
use AdminController;
use Company;
use Input;
use Lang;
use Redirect;
use Validator;
use View;
final class CompaniesController extends AdminController
{
public function getIndex()
{
return View::make('backend/companies/index')->with('companies', Company::all());
}
public function getCreate()
{
return View::make('backend/companies/edit')->with('company', new Company);
}
public function postCreate()
{
$company = new Company;
if ($company->validate(Input::all()))
{
$company->name = e(Input::get('name'));
if($company->save())
{
return Redirect::to('admin/settings/companies')
->with('success', Lang::get('admin/companies/message.create.success'));
}
else
{
return Redirect::to('admin/settings/companies/create')
->with('error', Lang::get('admin/companies/message.create.error'));
}
}
else
{
return Redirect::back()->withInput()->withErrors($company->errors());
}
}
public function getEdit($companyId)
{
if (is_null($company = Company::find($companyId)))
{
return Redirect::to('admin/settings/companies')
->with('error', Lang::get('admin/companies/message.does_not_exist'));
}
else
{
return View::make('backend/companies/edit')->with('company', $company);
}
}
public function postEdit($companyId)
{
if (is_null($company = Company::find($companyId)))
{
return Redirect::to('admin/settings/companies')->with('error', Lang::get('admin/companies/message.does_not_exist'));
}
else
{
$validator = Validator::make(Input::all(), $company->validationRules($companyId));
if ($validator->fails())
{
return Redirect::back()->withInput()->withErrors($validator->messages());
}
else
{
$company->name = e(Input::get('name'));
if($company->save())
{
return Redirect::to('admin/settings/companies')
->with('success', Lang::get('admin/companies/message.update.success'));
}
else
{
return Redirect::to("admin/settings/companies/$companyId/edit")
->with('error', Lang::get('admin/companies/message.update.error'));
}
}
}
}
public function postDelete($companyId)
{
if (is_null($company = Company::find($companyId)))
{
return Redirect::to('admin/settings/companies')
->with('error', Lang::get('admin/companies/message.not_found'));
}
else
{
try
{
$company->delete();
return Redirect::to('admin/settings/companies')
->with('success', Lang::get('admin/companies/message.delete.success'));
}
catch (\Illuminate\Database\QueryException $exception)
{
/*
* NOTE: This happens when there's a foreign key constraint violation
* For example when rows in other tables are referencing this company
*/
if ($exception->getCode() == 23000)
{
return Redirect::to('admin/settings/companies')
->with('error', Lang::get('admin/companies/message.assoc_users'));
}
else
{
throw $exception;
}
}
}
}
}
+152 -83
View File
@@ -8,6 +8,7 @@ use Setting;
use DB;
use Sentry;
use Consumable;
use Company;
use Str;
use Validator;
use View;
@@ -41,7 +42,14 @@ class ConsumablesController extends AdminController
{
// Show the page
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','consumable')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
return View::make('backend/consumables/edit')->with('consumable',new Consumable)->with('category_list',$category_list);
$company_list = Company::getSelectList();
$location_list = locationsList();
return View::make('backend/consumables/edit')
->with('consumable', new Consumable)
->with('category_list', $category_list)
->with('company_list', $company_list)
->with('location_list', $location_list);
}
@@ -68,6 +76,8 @@ class ConsumablesController extends AdminController
// Update the consumable data
$consumable->name = e(Input::get('name'));
$consumable->category_id = e(Input::get('category_id'));
$consumable->location_id = e(Input::get('location_id'));
$consumable->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$consumable->order_number = e(Input::get('order_number'));
if (e(Input::get('purchase_date')) == '') {
@@ -111,9 +121,18 @@ class ConsumablesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','consumable')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
return View::make('backend/consumables/edit', compact('consumable'))->with('category_list',$category_list);
$company_list = Company::getSelectList();
$location_list = locationsList();
return View::make('backend/consumables/edit', compact('consumable'))
->with('category_list', $category_list)
->with('company_list', $company_list)
->with('location_list', $location_list);
}
@@ -130,6 +149,9 @@ class ConsumablesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
// get the POST data
@@ -150,6 +172,8 @@ class ConsumablesController extends AdminController
// Update the consumable data
$consumable->name = e(Input::get('name'));
$consumable->category_id = e(Input::get('category_id'));
$consumable->location_id = e(Input::get('location_id'));
$consumable->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$consumable->order_number = e(Input::get('order_number'));
if (e(Input::get('purchase_date')) == '') {
@@ -191,6 +215,9 @@ class ConsumablesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
$consumable->delete();
@@ -212,7 +239,14 @@ class ConsumablesController extends AdminController
$consumable = Consumable::find($consumableID);
if (isset($consumable->id)) {
if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
else {
return View::make('backend/consumables/view', compact('consumable'));
}
} else {
// Prepare the error message
$error = Lang::get('admin/consumables/message.does_not_exist', compact('id'));
@@ -234,6 +268,9 @@ class ConsumablesController extends AdminController
// Redirect to the consumable management page with error
return Redirect::to('consumables')->with('error', Lang::get('admin/consumables/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
// 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," (",username,")") as full_name, id'))->whereNull('deleted_at')->orderBy('last_name', 'asc')->orderBy('first_name', 'asc')->lists('full_name', 'id');
@@ -247,57 +284,60 @@ class ConsumablesController extends AdminController
**/
public function postCheckout($consumableId)
{
// Check if the consumable exists
if (is_null($consumable = Consumable::find($consumableId))) {
// Redirect to the consumable management page with error
return Redirect::to('consumables')->with('error', Lang::get('admin/consumables/message.not_found'));
}
// Check if the consumable exists
if (is_null($consumable = Consumable::find($consumableId))) {
// Redirect to the consumable management page with error
return Redirect::to('consumables')->with('error', Lang::get('admin/consumables/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($consumable)) {
return Redirect::to('admin/consumables')->with('error', Lang::get('general.insufficient_permissions'));
}
$admin_user = Sentry::getUser();
$assigned_to = e(Input::get('assigned_to'));
$admin_user = Sentry::getUser();
$assigned_to = e(Input::get('assigned_to'));
// Declare the rules for the form validation
$rules = array(
'assigned_to' => 'required|min:1'
);
// 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);
// 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);
}
// 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 consumable management page with error
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.user_does_not_exist'));
}
// Check if the user exists
if (is_null($user = User::find($assigned_to))) {
// Redirect to the consumable management page with error
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.user_does_not_exist'));
}
// Update the consumable data
$consumable->assigned_to = e(Input::get('assigned_to'));
// Update the consumable data
$consumable->assigned_to = e(Input::get('assigned_to'));
$consumable->users()->attach($consumable->id, array(
'consumable_id' => $consumable->id,
'assigned_to' => e(Input::get('assigned_to'))));
$consumable->users()->attach($consumable->id, array(
'consumable_id' => $consumable->id,
'user_id' => $admin_user->id,
'assigned_to' => e(Input::get('assigned_to'))));
$logaction = new Actionlog();
$logaction->consumable_id = $consumable->id;
$logaction->checkedout_to = $consumable->assigned_to;
$logaction->asset_type = 'consumable';
$logaction->location_id = $user->location_id;
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('note'));
$logaction = new Actionlog();
$logaction->consumable_id = $consumable->id;
$logaction->checkedout_to = $consumable->assigned_to;
$logaction->asset_type = 'consumable';
$logaction->location_id = $user->location_id;
$logaction->user_id = Sentry::getUser()->id;
$logaction->note = e(Input::get('note'));
$settings = Setting::getSettings();
$settings = Setting::getSettings();
if ($settings->slack_endpoint) {
$slack_settings = [
'username' => $settings->botname,
'channel' => $settings->slack_channel,
@@ -318,45 +358,40 @@ class ConsumablesController extends AdminController
'title' => 'Note:',
'value' => e($logaction->note)
],
]
])->send('Consumable Checked Out');
} catch (Exception $e) {
}
}
$log = $logaction->logaction('checkout');
$log = $logaction->logaction('checkout');
$consumable_user = DB::table('consumables_users')->where('assigned_to','=',$consumable->assigned_to)->where('consumable_id','=',$consumable->id)->first();
$consumable_user = DB::table('consumables_users')->where('assigned_to','=',$consumable->assigned_to)->where('consumable_id','=',$consumable->id)->first();
$data['log_id'] = $logaction->id;
$data['eula'] = $consumable->getEula();
$data['first_name'] = $user->first_name;
$data['item_name'] = $consumable->name;
$data['checkout_date'] = $logaction->created_at;
$data['item_tag'] = '';
$data['expected_checkin'] = '';
$data['note'] = $logaction->note;
$data['require_acceptance'] = $consumable->requireAcceptance();
$data['log_id'] = $logaction->id;
$data['eula'] = $consumable->getEula();
$data['first_name'] = $user->first_name;
$data['item_name'] = $consumable->name;
$data['checkout_date'] = $logaction->created_at;
$data['item_tag'] = '';
$data['expected_checkin'] = '';
$data['note'] = $logaction->note;
$data['require_acceptance'] = $consumable->requireAcceptance();
if (($consumable->requireAcceptance()=='1') || ($consumable->getEula())) {
if (($consumable->requireAcceptance()=='1') || ($consumable->getEula())) {
Mail::send('emails.accept-asset', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Confirm consumable delivery');
});
}
Mail::send('emails.accept-asset', $data, function ($m) use ($user) {
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
$m->subject('Confirm consumable delivery');
});
}
// Redirect to the new consumable page
return Redirect::to("admin/consumables")->with('success', Lang::get('admin/consumables/message.checkout.success'));
// Redirect to the new consumable page
return Redirect::to("admin/consumables")->with('success', Lang::get('admin/consumables/message.checkout.success'));
@@ -365,8 +400,8 @@ class ConsumablesController extends AdminController
public function getDatatable()
{
$consumables = Consumable::select(array('id','name','qty'))
->whereNull('deleted_at');
$consumables = Consumable::select('consumables.*')->whereNull('consumables.deleted_at')
->with('company','location','category','users');
if (Input::has('search')) {
$consumables = $consumables->TextSearch(Input::get('search'));
@@ -384,11 +419,25 @@ class ConsumablesController extends AdminController
$limit = 50;
}
$allowed_columns = ['id','name'];
$allowed_columns = ['id','name','order_number','purchase_date','purchase_cost','companyName','category'];
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
$consumables->orderBy($sort, $order);
switch ($sort)
{
case 'category':
$consumables = $consumables->OrderCategory($order);
break;
case 'location':
$consumables = $consumables->OrderLocation($order);
break;
case 'companyName':
$consumables = $consumables->OrderCompany($order);
break;
default:
$consumables = $consumables->orderBy($sort, $order);
break;
}
$consumCount = $consumables->count();
$consumables = $consumables->skip($offset)->take($limit)->get();
@@ -396,14 +445,21 @@ class ConsumablesController extends AdminController
$rows = array();
foreach($consumables as $consumable) {
$actions = '<a href="'.route('checkout/consumable', $consumable->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($consumable->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/consumable', $consumable->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/consumable', $consumable->id).'" data-content="'.Lang::get('admin/consumables/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($consumable->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
$actions = '<nobr><a href="'.route('checkout/consumable', $consumable->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($consumable->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/consumable', $consumable->id).'" class="btn btn-warning btn-sm" style="margin-right:5px;"><i class="fa fa-pencil icon-white"></i></a><a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/consumable', $consumable->id).'" data-content="'.Lang::get('admin/consumables/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($consumable->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
$company = $consumable->company;
$rows[] = array(
'id' => $consumable->id,
'id' => $consumable->id,
'name' => link_to('admin/consumables/'.$consumable->id.'/view', $consumable->name),
'location' => ($consumable->location) ? e($consumable->location->name) : '',
'qty' => $consumable->qty,
'category' => ($consumable->category) ? $consumable->category->name : 'Missing category',
'order_number' => $consumable->order_number,
'purchase_date' => $consumable->purchase_date,
'purchase_cost' => ($consumable->purchase_cost!='') ? number_format($consumable->purchase_cost,2): '' ,
'numRemaining' => $consumable->numRemaining(),
'actions' => $actions
'actions' => $actions,
'companyName' => is_null($company) ? '' : e($company->name),
);
}
@@ -415,21 +471,34 @@ class ConsumablesController extends AdminController
public function getDataView($consumableID)
{
$consumable = Consumable::find($consumableID);
$consumable_users = $consumable->users;
$count = $consumable_users->count();
//$consumable = Consumable::find($consumableID);
$consumable = Consumable::with(array('consumableAssigments'=>
function($query) {
$query->orderBy('created_at','DESC');
},
'consumableAssigments.admin'=> function($query) {},
'consumableAssigments.user'=> function($query) {},
))->find($consumableID);
$rows = array();
// $consumable->load('consumableAssigments.admin','consumableAssigments.user');
foreach ($consumable_users as $user) {
$rows[] = array(
'name' => link_to('/admin/users/'.$user->id.'/view', $user->fullName())
);
}
$data = array('total' => $count, 'rows' => $rows);
return $data;
if (!Company::isCurrentUserHasAccess($consumable)) {
return ['total' => 0, 'rows' => []];
}
$rows = array();
foreach ($consumable->consumableAssigments as $consumable_assignment) {
$rows[] = array(
'name' => link_to('/admin/users/'.$consumable_assignment->user->id.'/view', $consumable_assignment->user->fullName()),
'created_at' => ($consumable_assignment->created_at->format('Y-m-d H:i:s')=='-0001-11-30 00:00:00') ? '' : $consumable_assignment->created_at->format('Y-m-d H:i:s'),
'admin' => ($consumable_assignment->admin) ? $consumable_assignment->admin->fullName() : '',
);
}
$consumableCount = $consumable->users->count();
$data = array('total' => $consumableCount, 'rows' => $rows);
return $data;
}
}
@@ -4,6 +4,7 @@ use AdminController;
use View;
use Asset;
use Actionlog;
use Company;
class DashboardController extends AdminController
{
@@ -16,7 +17,10 @@ class DashboardController extends AdminController
{
// Show the page
$recent_activity = Actionlog::orderBy('created_at','DESC')->with('accessorylog','consumablelog','licenselog','assetlog','adminlog','userlog')->take(7)->get();
$recent_activity = Actionlog::orderBy('created_at','DESC')
->with('accessorylog','consumablelog','licenselog','assetlog','adminlog','userlog')
->take(7)
->get();
$asset_stats['total'] = Asset::Hardware()->count();
+74 -3
View File
@@ -22,9 +22,6 @@ class GroupsController extends AdminController
*/
public function getIndex()
{
// Grab all the groups
$groups = Sentry::getGroupProvider()->createModel()->paginate();
// Show the page
return View::make('backend/groups/index', compact('groups'));
}
@@ -215,4 +212,78 @@ class GroupsController extends AdminController
}
}
public function getDatatable($status = null)
{
if (Input::has('offset')) {
$offset = e(Input::get('offset'));
} else {
$offset = 0;
}
if (Input::has('limit')) {
$limit = e(Input::get('limit'));
} else {
$limit = 50;
}
if (Input::get('sort')=='name') {
$sort = 'first_name';
} else {
$sort = e(Input::get('sort'));
}
// Grab all the groups
$groups = Sentry::getGroupProvider()->createModel();
//$users = Company::scopeCompanyables($users);
if (Input::has('search')) {
$groups = $users->TextSearch(Input::get('search'));
}
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
$allowed_columns =
[
'name','created_at'
];
$sort = in_array($sort, $allowed_columns) ? $sort : 'name';
$groups = $groups->orderBy($sort, $order);
$groupsCount = $groups->count();
$groups = $groups->skip($offset)->take($limit)->get();
$rows = array();
foreach ($groups as $group)
{
$group_names = '';
$inout = '';
$actions = '<nobr>';
$actions .= '<a href="' . route('update/group', $group->id) . '" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> ';
if (!Config::get('app.lock_passwords')) {
$actions .= '<a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="' . route('delete/group', $group->id) . '" data-content="'.Lang::get('admin/groups/message.delete.confirm').'" data-title="Delete ' . htmlspecialchars($group->name) . '?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a> ';
} else {
$actions .= ' <span class="btn delete-asset btn-danger btn-sm disabled"><i class="fa fa-trash icon-white"></i></span>';
}
$actions .= '</nobr>';
$rows[] = array(
'id' => $group->id,
'name' => $group->name,
'users' => $group->users->count(),
'created_at' => $group->created_at->format('Y-m-d H:i:s'),
'actions' => ($actions) ? $actions : '',
);
}
$data = array('total'=>$groupsCount, 'rows'=>$rows);
return $data;
}
}
+69 -7
View File
@@ -12,6 +12,7 @@ use DB;
use Redirect;
use LicenseSeat;
use Depreciation;
use Company;
use Setting;
use Sentry;
use Str;
@@ -55,11 +56,14 @@ class LicensesController extends AdminController
$depreciation_list = array('0' => Lang::get('admin/licenses/form.no_depreciation')) + Depreciation::lists('name', 'id');
$supplier_list = array('' => 'Select Supplier') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
$company_list = Company::getSelectList();
return View::make('backend/licenses/edit')
->with('license_options',$license_options)
->with('depreciation_list',$depreciation_list)
->with('supplier_list',$supplier_list)
->with('maintained_list',$maintained_list)
->with('company_list', $company_list)
->with('license',new License);
}
@@ -124,6 +128,7 @@ class LicensesController extends AdminController
$license->purchase_date = e(Input::get('purchase_date'));
$license->purchase_order = e(Input::get('purchase_order'));
$license->depreciation_id = e(Input::get('depreciation_id'));
$license->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$license->expiration_date = e(Input::get('expiration_date'));
$license->user_id = Sentry::getId();
@@ -181,6 +186,9 @@ class LicensesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
if ($license->purchase_date == "0000-00-00") {
$license->purchase_date = NULL;
@@ -195,10 +203,13 @@ class LicensesController extends AdminController
$depreciation_list = array('0' => Lang::get('admin/licenses/form.no_depreciation')) + Depreciation::lists('name', 'id');
$supplier_list = array('' => 'Select Supplier') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
$company_list = Company::getSelectList();
return View::make('backend/licenses/edit', compact('license'))
->with('license_options',$license_options)
->with('depreciation_list',$depreciation_list)
->with('supplier_list',$supplier_list)
->with('company_list', $company_list)
->with('maintained_list',$maintained_list);
}
@@ -216,6 +227,9 @@ class LicensesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
// get the POST data
@@ -234,6 +248,7 @@ class LicensesController extends AdminController
$license->notes = e(Input::get('notes'));
$license->order_number = e(Input::get('order_number'));
$license->depreciation_id = e(Input::get('depreciation_id'));
$license->company_id = Company::getIdForCurrentUser(Input::get('company_id'));
$license->purchase_order = e(Input::get('purchase_order'));
$license->maintained = e(Input::get('maintained'));
$license->reassignable = e(Input::get('reassignable'));
@@ -374,6 +389,9 @@ class LicensesController extends AdminController
// Redirect to the license management page
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
if (($license->assignedcount()) && ($license->assignedcount() > 0)) {
@@ -412,6 +430,9 @@ class LicensesController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($licenseseat->license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
// 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," (",username,")") as full_name, id'))->whereNull('deleted_at')->orderBy('last_name', 'asc')->orderBy('first_name', 'asc')->lists('full_name', 'id');
@@ -453,11 +474,15 @@ class LicensesController extends AdminController
public function postCheckout($seatId)
{
$licenseseat = LicenseSeat::find($seatId);
$assigned_to = e(Input::get('assigned_to'));
$asset_id = e(Input::get('asset_id'));
$user = Sentry::getUser();
if (!Company::isCurrentUserHasAccess($licenseseat->license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
// Declare the rules for the form validation
$rules = array(
@@ -499,7 +524,7 @@ class LicensesController extends AdminController
// Check if the asset exists
if (is_null($licenseseat = LicenseSeat::find($seatId))) {
if (is_null($licenseseat)) {
// Redirect to the asset management page with error
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.not_found'));
}
@@ -602,6 +627,9 @@ class LicensesController extends AdminController
// Redirect to the asset management page with error
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.not_found'));
}
else if (!Company::isCurrentUserHasAccess($licenseseat->license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
return View::make('backend/licenses/checkin', compact('licenseseat'))->with('backto',$backto);
}
@@ -621,6 +649,10 @@ class LicensesController extends AdminController
$license = License::find($licenseseat->license_id);
if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
if(!$license->reassignable) {
// Not allowed to checkin
Session::flash('error', 'License not reassignable.');
@@ -722,6 +754,10 @@ class LicensesController extends AdminController
$license = License::find($licenseId);
if (isset($license->id)) {
if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
return View::make('backend/licenses/view', compact('license'));
} else {
// Prepare the error message
@@ -739,10 +775,14 @@ class LicensesController extends AdminController
// Redirect to the blogs management page
return Redirect::to('admin/licenses')->with('error', Lang::get('admin/licenses/message.does_not_exist'));
}
else if (!Company::isCurrentUserHasAccess($license_to_clone)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
// Show the page
$license_options = array('0' => 'Top Level') + License::lists('name', 'id');
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
$company_list = Company::getSelectList();
//clone the orig
$license = clone $license_to_clone;
$license->id = null;
@@ -751,7 +791,13 @@ class LicensesController extends AdminController
// Show the page
$depreciation_list = array('0' => Lang::get('admin/licenses/form.no_depreciation')) + Depreciation::lists('name', 'id');
$supplier_list = array('' => 'Select Supplier') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
return View::make('backend/licenses/edit')->with('license_options',$license_options)->with('depreciation_list',$depreciation_list)->with('supplier_list',$supplier_list)->with('license',$license)->with('maintained_list',$maintained_list);
return View::make('backend/licenses/edit')
->with('license_options',$license_options)
->with('depreciation_list',$depreciation_list)
->with('supplier_list',$supplier_list)
->with('license',$license)
->with('maintained_list',$maintained_list)
->with('company_list',$company_list);
}
@@ -771,6 +817,11 @@ class LicensesController extends AdminController
if (isset($license->id)) {
if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
if (Input::hasFile('licensefile')) {
foreach(Input::file('licensefile') as $file) {
@@ -842,6 +893,11 @@ class LicensesController extends AdminController
// the license is valid
if (isset($license->id)) {
if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
$log = Actionlog::find($fileId);
$full_filename = $destinationPath.'/'.$log->filename;
if (file_exists($full_filename)) {
@@ -874,6 +930,11 @@ class LicensesController extends AdminController
// the license is valid
if (isset($license->id)) {
if (!Company::isCurrentUserHasAccess($license)) {
return Redirect::to('admin/licenses')->with('error', Lang::get('general.insufficient_permissions'));
}
$log = Actionlog::find($fileId);
$file = $log->get_src();
return Response::download($file);
@@ -887,7 +948,7 @@ class LicensesController extends AdminController
}
public function getDatatable() {
$licenses = License::select('id','name','serial','purchase_date','seats');
$licenses = License::select('id','name','serial','purchase_date','seats', 'company_id')->with('company');
if (Input::has('search')) {
$licenses = $licenses->TextSearch(Input::get('search'));
@@ -914,8 +975,9 @@ class LicensesController extends AdminController
'totalSeats' => $license->totalSeatsByLicenseID(),
'remaining' => $license->remaincount(),
'purchase_date' => ($license->purchase_date) ? $license->purchase_date : '',
'actions' => $actions
);
'actions' => $actions,
'companyName' => is_null($license->company) ? '' : e($license->company->name)
);
}
$data = array('total' => $licenseCount, 'rows' => $rows);
@@ -1,6 +1,7 @@
<?php namespace Controllers\Admin;
use AdminController;
use Company;
use Input;
use Lang;
use Manufacturer;
@@ -242,7 +243,7 @@ class ManufacturersController extends AdminController
public function getDataView($manufacturerID) {
$manufacturer = Manufacturer::find($manufacturerID);
$manufacturer = Manufacturer::with('assets.company')->find($manufacturerID);
$manufacturer_assets = $manufacturer->assets;
if (Input::has('search')) {
@@ -288,18 +289,20 @@ class ManufacturersController extends AdminController
}
}
$rows[] = array(
$row = array(
'id' => $asset->id,
'name' => link_to('/hardware/'.$asset->id.'/view', $asset->showAssetName()),
'model' => $asset->model->name,
'asset_tag' => $asset->asset_tag,
'serial' => $asset->serial,
'assigned_to' => ($asset->assigneduser) ? link_to('/admin/users/'.$asset->assigneduser->id.'/view', $asset->assigneduser->fullName()): '',
'change' => $inout,
'actions' => $actions,
'companyName' => Company::getName($asset),
);
if (isset($inout)) { $row['change'] = $inout; }
$rows[] = $row;
}
$data = array('total' => $count, 'rows' => $rows);
+18 -8
View File
@@ -16,6 +16,8 @@ use Validator;
use View;
use Datatable;
use Asset;
use Company;
use Config;
//use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\JsonResponse;
@@ -383,7 +385,7 @@ class ModelsController extends AdminController
public function getDatatable($status = null)
{
$models = Model::with('category','assets','depreciation');
($status != 'Deleted') ?: $models->withTrashed()->Deleted();;
($status != 'Deleted') ?: $models->withTrashed()->Deleted();
if (Input::has('search')) {
$models = $models->TextSearch(Input::get('search'));
@@ -424,6 +426,7 @@ class ModelsController extends AdminController
'id' => $model->id,
'manufacturer' => link_to('/admin/settings/manufacturers/'.$model->manufacturer->id.'/view', $model->manufacturer->name),
'name' => link_to('/hardware/models/'.$model->id.'/view', $model->name),
'image' => ($model->image!='') ? '<img src="'.Config::get('app.url').'/uploads/models/'.$model->image.'" height=50 width=50>' : '',
'modelnumber' => $model->modelno,
'numassets' => $model->assets->count(),
'depreciation' => (($model->depreciation)&&($model->depreciation->id > 0)) ? $model->depreciation->name.' ('.$model->depreciation->months.')' : Lang::get('general.no_depreciation'),
@@ -447,7 +450,7 @@ class ModelsController extends AdminController
**/
public function getDataView($modelID)
{
$assets = Asset::where('model_id','=',$modelID)->withTrashed();
$assets = Asset::where('model_id','=',$modelID)->withTrashed()->with('company');
if (Input::has('search')) {
$assets = $assets->TextSearch(Input::get('search'));
@@ -476,12 +479,18 @@ class ModelsController extends AdminController
$assets = $assets->skip($offset)->take($limit)->get();
$rows = array();
$actions = '';
foreach ($assets as $asset) {
if (($asset->assigned_to !='') && ($asset->assigned_to > 0)) {
$actions = '<a href="'.route('checkin/hardware', $asset->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
} else {
$actions = '<a href="'.route('checkout/hardware', $asset->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
if ($asset->assetstatus) {
if ($asset->assetstatus->deployable != 0) {
if (($asset->assigned_to !='') && ($asset->assigned_to > 0)) {
$actions = '<a href="'.route('checkin/hardware', $asset->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
} else {
$actions = '<a href="'.route('checkout/hardware', $asset->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
}
}
}
$rows[] = array(
@@ -490,8 +499,9 @@ class ModelsController extends AdminController
'asset_tag' => link_to('hardware/'.$asset->id.'/view', $asset->asset_tag),
'serial' => $asset->serial,
'assigned_to' => ($asset->assigned_to) ? link_to('/admin/users/'.$asset->assigned_to.'/view', $asset->assigneduser->fullName()) : '',
'actions' => $actions
);
'actions' => $actions,
'companyName' => Company::getName($asset)
);
}
$data = array('total' => $assetsCount, 'rows' => $rows);
+20 -30
View File
@@ -7,6 +7,7 @@ use Asset;
use AssetMaintenance;
use Carbon\Carbon;
use Category;
use Company;
use Illuminate\Support\Facades\Lang;
use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Response;
@@ -30,7 +31,8 @@ class ReportsController extends AdminController
*/
public function getAccessoryReport()
{
$accessories = Accessory::orderBy('created_at', 'DESC')->get();
$accessories = Accessory::orderBy('created_at', 'DESC')->with('company')->get();
return View::make('backend/reports/accessories', compact('accessories'));
}
@@ -42,6 +44,7 @@ class ReportsController extends AdminController
public function exportAccessoryReport()
{
$accessories = Accessory::orderBy('created_at', 'DESC')->get();
$rows = array();
$header = array(
Lang::get('admin/accessories/table.title'),
@@ -78,10 +81,9 @@ class ReportsController extends AdminController
*/
public function getAssetsReport()
{
// Grab all the assets
$assets = Asset::with( 'model', 'assigneduser.userLoc', 'assetstatus', 'defaultLoc', 'assetlog', 'supplier',
'model.manufacturer' )
'model.manufacturer', 'company' )
->orderBy( 'created_at', 'DESC' )
->get();
@@ -95,10 +97,8 @@ class ReportsController extends AdminController
*/
public function exportAssetReport()
{
// Grab all the assets
$assets = Asset::orderBy( 'created_at', 'DESC' )
->get();
$assets = Asset::orderBy( 'created_at', 'DESC' )->get();
$rows = [ ];
@@ -205,9 +205,8 @@ class ReportsController extends AdminController
{
// Grab all the assets
$assets = Asset::with( 'model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog' )
->orderBy( 'created_at', 'DESC' )
->get();
$assets = Asset::with( 'model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog', 'company' )
->orderBy( 'created_at', 'DESC' )->get();
return View::make( 'backend/reports/depreciation', compact( 'assets' ) );
}
@@ -222,8 +221,7 @@ class ReportsController extends AdminController
// Grab all the assets
$assets = Asset::with( 'model', 'assigneduser', 'assetstatus', 'defaultLoc', 'assetlog' )
->orderBy( 'created_at', 'DESC' )
->get();
->orderBy( 'created_at', 'DESC' )->get();
$csv = \League\Csv\Writer::createFromFileObject( new \SplTempFileObject() );
$csv->setOutputBOM( Reader::BOM_UTF16_BE );
@@ -296,10 +294,8 @@ class ReportsController extends AdminController
*
* @return View
*/
public function getActivityReport()
{
$log_actions = Actionlog::orderBy( 'created_at', 'DESC' )
->with( 'adminlog' )
->with( 'accessorylog' )
@@ -321,6 +317,7 @@ class ReportsController extends AdminController
{
$licenses = License::orderBy( 'created_at', 'DESC' )
->with( 'company' )
->get();
return View::make( 'backend/reports/licenses', compact( 'licenses' ) );
@@ -333,9 +330,8 @@ class ReportsController extends AdminController
*/
public function exportLicenseReport()
{
$licenses = License::orderBy( 'created_at', 'DESC' )->get();
$licenses = License::orderBy( 'created_at', 'DESC' )
->get();
$rows = [ ];
$header = [
Lang::get( 'admin/licenses/table.title' ),
@@ -380,9 +376,8 @@ class ReportsController extends AdminController
public function postCustom()
{
$assets = Asset::orderBy( 'created_at', 'DESC' )->get();
$assets = Asset::orderBy( 'created_at', 'DESC' )
->get();
$rows = [ ];
$header = [ ];
@@ -557,9 +552,8 @@ class ReportsController extends AdminController
*/
public function getAssetMaintenancesReport()
{
// Grab all the improvements
$assetMaintenances = \AssetMaintenance::with( 'asset', 'supplier' )
$assetMaintenances = \AssetMaintenance::with( 'asset', 'supplier', 'asset.company' )
->orderBy( 'created_at', 'DESC' )
->get();
@@ -576,7 +570,6 @@ class ReportsController extends AdminController
*/
public function exportAssetMaintenancesReport()
{
// Grab all the improvements
$assetMaintenances = AssetMaintenance::with( 'asset', 'supplier' )
->orderBy( 'created_at', 'DESC' )
@@ -635,12 +628,9 @@ class ReportsController extends AdminController
*/
public function getAssetAcceptanceReport()
{
$assetsForReport = Asset::notYetAccepted()
->get();
$assetsForReport = Asset::notYetAccepted()->with( 'company' )->get();
return View::make( 'backend/reports/unaccepted_assets', compact( 'assetsForReport' ) );
}
/**
@@ -701,12 +691,13 @@ class ReportsController extends AdminController
*/
protected function getCheckedOutAssetsRequiringAcceptance( $modelsInCategoriesThatRequireAcceptance )
{
$assets = Asset::deployed()
->inModelList( $modelsInCategoriesThatRequireAcceptance )
->select( 'id' )
->get()
->toArray();
return array_pluck( Asset::deployed()
->inModelList( $modelsInCategoriesThatRequireAcceptance )
->select( 'id' )
->get()
->toArray(), 'id' );
return array_pluck( $assets, 'id' );
}
/**
@@ -767,7 +758,6 @@ class ReportsController extends AdminController
*/
protected function getAssetsNotAcceptedYet()
{
return Asset::unaccepted();
}
}
+43 -4
View File
@@ -14,6 +14,8 @@ use Image;
use Config;
use Response;
use Artisan;
use Crypt;
class SettingsController extends AdminController
{
@@ -41,9 +43,20 @@ class SettingsController extends AdminController
*/
public function getEdit()
{
$settings = Setting::orderBy('created_at', 'DESC')->paginate(10);
$setting = Setting::first();
$is_gd_installed = extension_loaded('gd');
return View::make('backend/settings/edit', compact('settings', 'is_gd_installed'));
// echo '<pre>';
// print_r($settings);
// echo '</pre>';
// exit;
if ($setting->ldap_pword!='') {
$show_ldap_pword = Crypt::decrypt($setting->ldap_pword);
} else {
$show_ldap_pword = '';
}
return View::make('backend/settings/edit', compact('setting'))->with('is_gd_installed',$is_gd_installed)->with('show_ldap_pword',$show_ldap_pword);
}
@@ -78,12 +91,20 @@ class SettingsController extends AdminController
"default_currency" => 'required',
"slack_channel" => 'regex:/(?<!\w)#\w+/',
"slack_botname" => 'alpha_dash',
"ldap_server" => 'sometimes|required_if:ldap_enabled,1|url',
"ldap_uname" => 'sometimes|required_if:ldap_enabled,1',
"ldap_pword" => 'sometimes|required_if:ldap_enabled,1',
"ldap_basedn" => 'sometimes|required_if:ldap_enabled,1',
"ldap_filter" => 'sometimes|required_if:ldap_enabled,1',
"ldap_username_field" => 'sometimes|required_if:ldap_enabled,1',
"ldap_lname_field" => 'sometimes|required_if:ldap_enabled,1',
"ldap_auth_filter_query" => 'sometimes|required_if:ldap_enabled,1',
"ldap_version" => 'sometimes|required_if:ldap_enabled,1',
);
if (Config::get('app.lock_passwords')==false) {
$rules['site_name'] = 'required|min:3';
}
}
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $rules);
@@ -135,6 +156,24 @@ class SettingsController extends AdminController
$setting->slack_endpoint = e(Input::get('slack_endpoint'));
$setting->slack_channel = e(Input::get('slack_channel'));
$setting->slack_botname = e(Input::get('slack_botname'));
$setting->ldap_enabled = Input::get('ldap_enabled', '0');
$setting->ldap_server = Input::get('ldap_server');
$setting->ldap_uname = Input::get('ldap_uname');
$setting->ldap_pword = Crypt::encrypt(Input::get('ldap_pword'));
$setting->ldap_basedn = Input::get('ldap_basedn');
$setting->ldap_filter = Input::get('ldap_filter');
$setting->ldap_username_field = Input::get('ldap_username_field');
$setting->ldap_lname_field = Input::get('ldap_lname_field');
$setting->ldap_fname_field = Input::get('ldap_fname_field');
$setting->ldap_auth_filter_query = Input::get('ldap_auth_filter_query');
$setting->ldap_version = Input::get('ldap_version');
$setting->ldap_active_flag = Input::get('ldap_active_flag');
$setting->ldap_emp_num = Input::get('ldap_emp_num');
$setting->ldap_email = Input::get('ldap_email');
if (Sentry::getUser()->isSuperUser()) {
$setting->full_multiple_companies_support = e(Input::get('full_multiple_companies_support', '0'));
}
// Was the asset updated?
+108 -42
View File
@@ -14,6 +14,7 @@ use DB;
use Input;
use User;
use Asset;
use Company;
use Lang;
use Actionlog;
use Location;
@@ -31,6 +32,8 @@ use Mail;
use Accessory;
use Symfony\Component\HttpFoundation\JsonResponse;
use Illuminate\Support\Facades\Log;
use Crypt;
class UsersController extends AdminController {
@@ -40,13 +43,14 @@ class UsersController extends AdminController {
* @var array
*/
protected $validationRules = array(
'first_name' => 'required|alpha_space|min:2',
'last_name' => 'required|alpha_space|min:2',
'location_id' => 'numeric',
'username' => 'required|min:2|unique:users,username, ',
'email' => 'email|unique:users,email',
'password' => 'required|min:6',
'password_confirm' => 'required|min:6|same:password',
'first_name' => 'required|alpha_space|min:2',
'last_name' => 'required|alpha_space|min:2',
'location_id' => 'numeric',
'username' => 'required|min:2|unique:users,deleted_at,NULL',
'email' => 'email|unique:users,email',
'password' => 'required|min:6',
'password_confirm' => 'required|min:6|same:password',
'company_id' => 'integer',
);
/**
@@ -82,6 +86,7 @@ class UsersController extends AdminController {
$location_list = locationsList();
$manager_list = managerList();
$company_list = Company::getSelectList();
/* echo '<pre>';
print_r($userPermissions);
@@ -93,6 +98,7 @@ class UsersController extends AdminController {
return View::make('backend/users/edit', compact('groups', 'userGroups', 'permissions', 'userPermissions'))
->with('location_list', $location_list)
->with('manager_list', $manager_list)
->with('company_list', $company_list)
->with('user', new User);
}
@@ -102,6 +108,12 @@ class UsersController extends AdminController {
* @return Redirect
*/
public function postCreate() {
// echo '<pre>';
// print_r($this->validationRules);
// echo '</pre>';
// exit;
// Create a new validator instance from our validation rules
$validator = Validator::make(Input::all(), $this->validationRules);
$permissions = Input::get('permissions', array());
@@ -120,6 +132,8 @@ class UsersController extends AdminController {
// Get the inputs, with some exceptions
$inputs = Input::except('csrf_token', 'password_confirm', 'groups', 'email_user');
$inputs['company_id'] = Company::getIdForUser(Input::get('company_id'));
// @TODO: Figure out WTF I need to do this.
if ($inputs['manager_id'] == '') {
unset($inputs['manager_id']);
@@ -252,6 +266,10 @@ class UsersController extends AdminController {
// Get the user information
$user = Sentry::getUserProvider()->findById($id);
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
// Get this user groups
$userGroups = $user->groups()->lists('group_id', 'name');
@@ -267,6 +285,7 @@ class UsersController extends AdminController {
$this->encodeAllPermissions($permissions);
$location_list = array('' => '') + Location::lists('name', 'id');
$company_list = Company::getSelectList();
$manager_list = array('' => 'Select a User') + DB::table('users')
->select(DB::raw('concat(last_name,", ",first_name," (",email,")") as full_name, id'))
->whereNull('deleted_at')
@@ -285,6 +304,7 @@ class UsersController extends AdminController {
// Show the page
return View::make('backend/users/edit', compact('user', 'groups', 'userGroups', 'permissions', 'userPermissions'))
->with('location_list', $location_list)
->with('company_list', $company_list)
->with('manager_list', $manager_list);
}
@@ -309,6 +329,10 @@ class UsersController extends AdminController {
try {
// Get the user information
$user = Sentry::getUserProvider()->findById($id);
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
} catch (UserNotFoundException $e) {
// Prepare the error message
$error = Lang::get('admin/users/message.user_not_found', compact('id'));
@@ -357,6 +381,7 @@ class UsersController extends AdminController {
$user->jobtitle = Input::get('jobtitle');
$user->phone = Input::get('phone');
$user->location_id = Input::get('location_id');
$user->company_id = Company::getIdForUser(Input::get('company_id'));
$user->manager_id = Input::get('manager_id');
$user->notes = Input::get('notes');
@@ -488,7 +513,10 @@ class UsersController extends AdminController {
} else {
$statuslabel_list = statusLabelList();
$user_raw_array = array_keys(Input::get('edit_user'));
$users = User::whereIn('id', $user_raw_array)->with('groups')->get();
$users = User::whereIn('id', $user_raw_array)->with('groups');
$users = Company::scopeCompanyables($users)->get();
return View::make('backend/users/confirm-bulk-delete', compact('users', 'statuslabel_list'));
}
}
@@ -512,7 +540,9 @@ class UsersController extends AdminController {
$assets = Asset::whereIn('assigned_to', $user_raw_array)->get();
$accessories = DB::table('accessories_users')->whereIn('assigned_to', $user_raw_array)->get();
$users = User::whereIn('id', $user_raw_array)->delete();
$users = User::whereIn('id', $user_raw_array);
$users = Company::scopeCompanyables($users)->delete();
foreach ($assets as $asset) {
@@ -572,14 +602,20 @@ class UsersController extends AdminController {
// Get user information
$user = Sentry::getUserProvider()->createModel()->withTrashed()->find($id);
// Restore the user
$user->restore();
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
else
{
// Restore the user
$user->restore();
// Prepare the success message
$success = Lang::get('admin/users/message.success.restored');
// Prepare the success message
$success = Lang::get('admin/users/message.success.restored');
// Redirect to the user management page
return Redirect::route('users')->with('success', $success);
// Redirect to the user management page
return Redirect::route('users')->with('success', $success);
}
} catch (UserNotFoundException $e) {
// Prepare the error message
$error = Lang::get('admin/users/message.user_not_found', compact('id'));
@@ -602,7 +638,12 @@ class UsersController extends AdminController {
$userlog = $user->userlog->load('assetlog', 'consumablelog', 'assetlog.model', 'licenselog', 'accessorylog', 'userlog', 'adminlog');
if (isset($user->id)) {
return View::make('backend/users/view', compact('user', 'userlog'));
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
} else {
return View::make('backend/users/view', compact('user', 'userlog'));
}
} else {
// Prepare the error message
$error = Lang::get('admin/users/message.user_not_found', compact('id'));
@@ -689,6 +730,7 @@ class UsersController extends AdminController {
$this->encodeAllPermissions($permissions);
$location_list = array('' => '') + Location::lists('name', 'id');
$company_list = Company::getSelectList();
$manager_list = array('' => 'Select a User') + DB::table('users')
->select(DB::raw('concat(last_name,", ",first_name," (",email,")") as full_name, id'))
->whereNull('deleted_at')
@@ -700,6 +742,7 @@ class UsersController extends AdminController {
// Show the page
return View::make('backend/users/edit', compact('groups', 'userGroups', 'permissions', 'userPermissions'))
->with('location_list', $location_list)
->with('company_list', $company_list)
->with('manager_list', $manager_list)
->with('user', $user)
->with('clone_user', $user_to_clone);
@@ -781,6 +824,7 @@ class UsersController extends AdminController {
'password' => $pass,
'activated' => $activated,
'location_id' => $row[4],
'company_id' => Company::getIdForUser($row[5]),
'permissions' => '{"user":1}',
'notes' => 'Imported user'
);
@@ -845,7 +889,9 @@ class UsersController extends AdminController {
$sort = e(Input::get('sort'));
}
$users = User::select(array('users.id','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes'))->with('assets', 'accessories', 'consumables', 'licenses', 'manager', 'sentryThrottle', 'groups', 'userloc');
$users = User::select(array('users.id','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes','users.company_id'))
->with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc','company');
$users = Company::scopeCompanyables($users);
switch ($status) {
case 'deleted':
@@ -862,12 +908,15 @@ class UsersController extends AdminController {
switch (Input::get('sort'))
{
case 'manager':
$users = $users->OrderManager($order);
$users = $users->OrderManager($order);
break;
case 'location':
$users = $users->OrderLocation($order);
break;
default:
$allowed_columns =
[
'last_name','first_name','email','username','location',
'last_name','first_name','email','username',
'assets','accessories', 'consumables','licenses','groups'
];
@@ -912,6 +961,7 @@ class UsersController extends AdminController {
$actions .= '</nobr>';
$rows[] = array(
'id' => $user->id,
'checkbox' =>'<div class="text-center hidden-xs hidden-sm"><input type="checkbox" name="edit_user['.$user->id.']" class="one_required"></div>',
'name' => '<a title="'.$user->fullName().'" href="../admin/users/'.$user->id.'/view">'.$user->fullName().'</a>',
'email' => ($user->email!='') ?
@@ -927,7 +977,8 @@ class UsersController extends AdminController {
'consumables' => $user->consumables->count(),
'groups' => $group_names,
'notes' => $user->notes,
'actions' => ($actions) ? $actions : ''
'actions' => ($actions) ? $actions : '',
'companyName' => is_null($user->company) ? '' : e($user->company->name)
);
}
@@ -949,7 +1000,10 @@ class UsersController extends AdminController {
if (isset($user->id)) {
if (Input::hasFile('userfile')) {
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
else if (Input::hasFile('userfile')) {
foreach (Input::file('userfile') as $file) {
@@ -1010,13 +1064,19 @@ class UsersController extends AdminController {
// the license is valid
if (isset($user->id)) {
$log = Actionlog::find($fileId);
$full_filename = $destinationPath . '/' . $log->filename;
if (file_exists($full_filename)) {
unlink($destinationPath . '/' . $log->filename);
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
else
{
$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/users/message.deletefile.success'));
}
$log->delete();
return Redirect::back()->with('success', Lang::get('admin/users/message.deletefile.success'));
} else {
// Prepare the error message
$error = Lang::get('admin/users/message.does_not_exist', compact('id'));
@@ -1038,9 +1098,15 @@ class UsersController extends AdminController {
// the license is valid
if (isset($user->id)) {
$log = Actionlog::find($fileId);
$file = $log->get_src();
return Response::download($file);
if (!Company::isCurrentUserHasAccess($user)) {
return Redirect::route('users')->with('error', Lang::get('general.insufficient_permissions'));
}
else
{
$log = Actionlog::find($fileId);
$file = $log->get_src();
return Response::download($file);
}
} else {
// Prepare the error message
$error = Lang::get('admin/users/message.does_not_exist', compact('id'));
@@ -1115,20 +1181,20 @@ class UsersController extends AdminController {
return Redirect::back()->withInput()->withErrors($formValidator);
}
$ldap_version = Config::get('ldap.version');
$url = Config::get('ldap.url');
$username = Config::get('ldap.username');
$password = Config::get('ldap.password');
$base_dn = Config::get('ldap.basedn');
$filter = Config::get('ldap.filter');
$ldap_version = Setting::getSettings()->ldap_version;
$url = Setting::getSettings()->ldap_server;
$username = Setting::getSettings()->ldap_uname;
$password = Crypt::decrypt(Setting::getSettings()->ldap_pword);
$base_dn = Setting::getSettings()->ldap_basedn;
$filter = Setting::getSettings()->ldap_filter;
$ldap_result_username = Config::get('ldap.result.username');
$ldap_result_emp_num = Config::get('ldap.result.emp.num');
$ldap_result_last_name = Config::get('ldap.result.last.name');
$ldap_result_first_name = Config::get('ldap.result.first.name');
$ldap_result_email = Config::get('ldap.result.email');
$ldap_result_active_flag = Config::get('ldap.result.active.flag');
$ldap_result_username = Setting::getSettings()->ldap_username_field;
$ldap_result_last_name = Setting::getSettings()->ldap_lname_field;
$ldap_result_first_name = Setting::getSettings()->ldap_fname_field;
$ldap_result_active_flag = Setting::getSettings()->ldap_active_flag_field;
$ldap_result_emp_num = Setting::getSettings()->ldap_emp_num_field;
$ldap_result_email = Setting::getSettings()->ldap_email_field;
// Connect to LDAP server
$ldapconn = @ldap_connect($url);
@@ -0,0 +1,32 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class CreateCompaniesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create('companies', function(Blueprint $table)
{
$table->increments('id');
$table->string('name')->unique();
$table->timestamps();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::drop('companies');
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdToConsumablesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('consumables', function(Blueprint $table)
{
$table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('consumables', function(Blueprint $table)
{
$table->dropForeign('consumables_company_id_foreign');
$table->dropColumn('company_id');
});
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdToAccessoriesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('accessories', function(Blueprint $table)
{
$table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('accessories', function(Blueprint $table)
{
$table->dropForeign('accessories_company_id_foreign');
$table->dropColumn('company_id');
});
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdToUsersTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('users', function(Blueprint $table)
{
$table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('users', function(Blueprint $table)
{
$table->dropForeign('users_company_id_foreign');
$table->dropColumn('company_id');
});
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdToLicensesTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('licenses', function(Blueprint $table)
{
$table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('licenses', function(Blueprint $table)
{
$table->dropForeign('licenses_company_id_foreign');
$table->dropColumn('company_id');
});
}
}
@@ -0,0 +1,35 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddCompanyIdToAssetsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('assets', function(Blueprint $table)
{
$table->integer('company_id')->unsigned()->nullable();
$table->foreign('company_id')->references('id')->on('companies');
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('assets', function(Blueprint $table)
{
$table->dropForeign('assets_company_id_foreign');
$table->dropColumn('company_id');
});
}
}
@@ -0,0 +1,60 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddLdapFieldsToSettings extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('settings', function(Blueprint $table)
{
$table->string('ldap_enabled')->nullable()->default(NULL);
$table->string('ldap_server')->nullable()->default(NULL);
$table->string('ldap_uname')->nullable()->default(NULL);
$table->longText('ldap_pword')->nullable()->default(NULL);
$table->string('ldap_basedn')->nullable()->default(NULL);
$table->string('ldap_filter')->nullable()->default('cn=*');
$table->string('ldap_username_field')->nullable()->default('samaccountname');
$table->string('ldap_lname_field')->nullable()->default('sn');
$table->string('ldap_fname_field')->nullable()->default('givenname');
$table->string('ldap_auth_filter_query')->nullable()->default('uid=samaccountname');
$table->integer('ldap_version')->nullable()->default(3);
$table->string('ldap_active_flag')->nullable()->default(NULL);
$table->string('ldap_emp_num')->nullable()->default(NULL);
$table->string('ldap_email')->nullable()->default(NULL);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('settings', function(Blueprint $table)
{
$table->dropColumn('ldap_enabled');
$table->dropColumn('ldap_server');
$table->dropColumn('ldap_uname');
$table->longText('ldap_pword');
$table->dropColumn('ldap_basedn');
$table->dropColumn('ldap_filter');
$table->dropColumn('ldap_username_field');
$table->dropColumn('ldap_lname_field');
$table->dropColumn('ldap_fname_field');
$table->dropColumn('ldap_auth_filter_query');
$table->dropColumn('ldap_version');
$table->dropColumn('ldap_active_flag');
$table->dropColumn('ldap_emp_num');
$table->dropColumn('ldap_email');
});
}
}
@@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddFullMultipleCompaniesSupportToSettingsTable extends Migration {
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('settings', function(Blueprint $table)
{
$table->boolean('full_multiple_companies_support')->default(FALSE);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('settings', function(Blueprint $table)
{
$table->dropColumn('full_multiple_companies_support');
});
}
}
+7
View File
@@ -116,6 +116,13 @@ Route::filter('reporting-auth', function () {
}
});
Route::filter('backup-auth', function () {
if (!Sentry::getUser()->isSuperUser()) {
return Redirect::route('home')->with('error', Lang::get('general.insufficient_permissions'));
}
});
/*
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'هذه الفئة غير موجودة.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'تم إخراج :count عنصر من هذا الملحق للمستخدمين، الرجاء إيداع الملحقات ثم حاول مرة أخرى. ',
'create' => array(
'error' => 'فشل إنشاء التصنيف، الرجاء المحاولة مرة أخرى.',
'success' => 'تم إنشاء الفئة بنجاح.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'فشل تحديث التصنيف، الرجاء المحاولة مرة أخرى',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
),
'checkout' => array(
'error' => 'لم يتم إخراج الملحق، الرجاء المحاولة مرة أخرى',
'success' => 'تم إخراج الملحق بنجاح.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'ترجيع',
'city' => 'المدينة',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'الدولة',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'الإسم الأخير',
'last_name' => 'الإسم الأخير',
'license' => 'الرخص',
'license_report' => 'License Report',
'licenses_available' => 'الرخص المتاحة',
@@ -140,4 +143,5 @@
'years' => 'سنوات',
'yes' => 'نعم',
'zip' => 'الرمز البريدي',
'noimage' => 'No image uploaded or image not found.',
];
+3 -3
View File
@@ -5,14 +5,14 @@ return array(
'about_accessories_text' => 'Аксесоарите са всички неща, които се изписват на потребителите, но нямат сериен номер (или няма нужда да бъдат конкретно проследявани). Например, това са мишки, клавиатури и др.',
'accessory_category' => 'Категория аксесоари',
'accessory_name' => 'Аксесоар',
'cost' => 'Purchase Cost',
'cost' => 'Стойност на закупуване',
'create' => 'Създаване на аксесоар',
'date' => 'Purchase Date',
'date' => 'Дата на закупуване',
'eula_text' => 'EULA на категорията',
'eula_text_help' => 'Това поле позволява да задавате различни EULA за всеки тип активи. Ако имате обща EULA за всички активи, можете да използвате кутийката по-долу за да използвате една обща по подразбиране.',
'require_acceptance' => 'Задължаване на потребителите да потвърждават приемането на активи от тази категория.',
'no_default_eula' => 'Няма EULA по подразбиране. Добавете я в Настройки.',
'order' => 'Order Number',
'order' => 'Номер на поръчка',
'qty' => 'Количество',
'total' => 'Oбщо',
'remaining' => 'Наличност',
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Няма такава категория.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'От този аксесоар са предадени :count броя на потребителите. Моля впишете обратно нови или върнати и опитайте отново.',
'create' => array(
'error' => 'Категорията не беше създадена. Моля опитайте отново.',
'success' => 'Категорията е създадена.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Категорията не беше обновена. Моля опитайте отново.',
'success' => 'Категорията е обновена.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Проблем при изтриване на категорията. Моля опитайте отново.',
'success' => 'Категорията бе изтрита успешно.'
),
'checkout' => array(
'error' => 'Аксесоарът не беше изписан. Моля опитайте отново.',
'success' => 'Аксесоарът изписан успешно.',
+3 -3
View File
@@ -4,10 +4,10 @@ return array(
'about_consumables_title' => 'Относно консумативите',
'about_consumables_text' => 'Консумативите са всички неща, купувани във времето. Например тонер за принтер или хартия.',
'consumable_name' => 'Консуматив',
'cost' => 'Purchase Cost',
'cost' => 'Стойност на закупуване',
'create' => 'Създаване на консуматив',
'date' => 'Purchase Date',
'order' => 'Order Number',
'date' => 'Дата на закупуване',
'order' => 'Номер на поръчка',
'remaining' => 'Остава',
'total' => 'Oбщо',
'update' => 'Обновяване на консуматив',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Сериен номер',
'status' => 'Статус',
'title' => 'Актив ',
'image' => 'Device Image',
'days_without_acceptance' => 'Дни без да е предаден'
);
+2 -2
View File
@@ -1,8 +1,8 @@
<?php
return array(
'assets_rtd' => 'Assets RTD',
'assets_checkedout' => 'Assets Assigned',
'assets_rtd' => 'Бракувани активи',
'assets_checkedout' => 'Изписани активи',
'id' => 'ID',
'city' => 'Град',
'state' => 'Област',
+23 -5
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Цвят на хедъра',
'info' => 'Тези настройки позволяват да конфигурирате различни аспекти на Вашата инсталация.',
'laravel' => 'Версия на Laravel',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Отдалечени скриптове',
'load_remote_help_text' => 'Тази Snipe-IT инсталация може да зарежда и изпълнява външни скриптове.',
'logo' => 'Лого',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'незадължително',
'per_page' => 'Резултати на страница',
'php' => 'PHP версия',
@@ -48,7 +66,7 @@ return array(
'system' => 'Информация за системата',
'update' => 'Обновяване на настройките',
'value' => 'Стойност',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'brand' => 'Брандиране',
'about_settings_title' => 'Относно настройките',
'about_settings_text' => 'Тези настройки позволяват да конфигурирате различни аспекти на Вашата инсталация.',
);
+6 -2
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Форма за вписване',
'checkout' => 'Изписване',
'city' => 'Град',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Консуматив',
'consumables' => 'Консумативи',
'country' => 'Държава',
@@ -43,7 +45,7 @@
'date' => 'Дата',
'delete' => 'Изтриване',
'deleted' => 'Изтрито',
'delete_seats' => 'Deleted Seats',
'delete_seats' => 'Изтрити работни места за лиценз',
'deployed' => 'Изписани',
'depreciation_report' => 'Справка за амортизации',
'download' => 'Изтегляне',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Справка за поддръжка на активи',
'asset_maintenances' => 'Поддръжки на активи',
'item' => 'Информация',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Последна',
'last_name' => 'Фамилия',
'last_name' => 'Фамилия',
'license' => 'Лиценз',
'license_report' => 'Справка за лицензите',
'licenses_available' => 'налични лицензи',
@@ -140,4 +143,5 @@
'years' => 'години',
'yes' => 'Да',
'zip' => 'Пощенски код',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Kategorie neexistuje.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Tato kategorie má nyní :count položek k předání uživatelům. Zkontrolujte převzetí příslušenství a zkuste to znovu. ',
'create' => array(
'error' => 'Kategorie nevytvořena, zkuste to znovu.',
'success' => 'Kategorie úspěšně vytvořena.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Kategorie neaktualizována, zkuste to znovu',
'success' => 'Kategorie úspěšně aktualizována.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Vyskytl se problém při mazání kategorie. Zkuste to znovu.',
'success' => 'Kategorie byla úspěšně smazána.'
),
'checkout' => array(
'error' => 'Příslušenství nebylo převzato, zkuste to znovu',
'success' => 'Příslušenství úspěšně předáno.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Sériové číslo',
'status' => 'Stav',
'title' => 'Majetek ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Barva záhlaví',
'info' => 'Tato nastavení umožňují zvolit určité prvky instalace.',
'laravel' => 'Verze Laravel',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'volitelný',
'per_page' => 'Výsledků na stránku',
'php' => 'Verze PHP',
@@ -50,5 +68,5 @@ return array(
'value' => 'Hodnota',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Převzít od',
'checkout' => 'Výdej',
'city' => 'Město',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Země',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Položka',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Poslední',
'last_name' => 'Příjmení',
'last_name' => 'Příjmení',
'license' => 'Licence',
'license_report' => 'Report licencí',
'licenses_available' => 'dostupných licencí',
@@ -140,4 +143,5 @@
'years' => 'roky',
'yes' => 'Ano',
'zip' => 'PSČ',
'noimage' => 'No image uploaded or image not found.',
];
+5 -5
View File
@@ -5,18 +5,18 @@ return array(
'about_accessories_text' => 'Tilbehør er alt du udleverer til brugere men som ikke har et serienummer (eller som du er ligeglad med følge præcist). For eksempel, computermus eller tastaturer.',
'accessory_category' => 'Tilbehør Kategori',
'accessory_name' => 'Tilbehør Navn',
'cost' => 'Purchase Cost',
'create' => 'Create Accessory',
'date' => 'Purchase Date',
'cost' => 'Indkøbspris',
'create' => 'Opret tilbehør',
'date' => 'Købsdato',
'eula_text' => 'Slutbrugerlicenskategori',
'eula_text_help' => 'Dette felt tillader dig at tilpasse din slutbrugerlicens til specifikke typer af tilbehør. Hvis du kun har en slutbrugerlicens for alle dine tilbehør, kan du afkrydse boksen nedenfor for at bruge den primære standardlicens.',
'require_acceptance' => 'Kræver brugere at bekræfte accept af tilbehør i denne kategori.',
'no_default_eula' => 'Ingen primær standard slutbrugerlicens blev fundet. Tilføj en under Indstillinger.',
'order' => 'Order Number',
'order' => 'Ordrenummer',
'qty' => 'STK',
'total' => 'I alt',
'remaining' => 'Tilgængelig',
'update' => 'Update Accessory',
'update' => 'Opdater tilbehør',
'use_default_eula' => 'Brug den <a href="#" data-toggle="modal" data-target="#eulaModal">primære standard slutbrugerlicens</a> i stedet for.',
'use_default_eula_disabled' => '<del>Brug den primære standard slutbrugerlicens i stedet for.</del> Ingen primær standard slutbrugerlicens er defineret. Tilføj en under indstillinger.',
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Kategorien eksisterer ikke.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Dette tilbehør har pt. :count emner tjekket ud til brugere. Tjek tilbehør ind og prøv igen.',
'create' => array(
'error' => 'Kategorien blev ikke oprettet, prøv igen.',
'success' => 'Kategorien blev oprettet.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Kategorien blev ikke opdateret, prøv igen',
'success' => 'Kategorien blev opdateret.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Der opstod et problem under sletning af kategorien. Prøv igen.',
'success' => 'Kategorien blev slettet.'
),
'checkout' => array(
'error' => 'Tilbehør blev ikke tjekket ud, prøv igen',
'success' => 'Tilbehør er tjekket ud.',
+1 -1
View File
@@ -1,7 +1,7 @@
<?php
return array(
'dl_csv' => 'Download CSV',
'dl_csv' => 'Hent CSV',
'eula_text' => 'Slutbrugerlicens',
'id' => 'ID',
'require_acceptance' => 'Accept',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+1 -1
View File
@@ -3,7 +3,7 @@
return array(
'account_already_exists' => 'En konto med denne e-mail eksisterer allerede.',
'account_not_found' => 'The username or password is incorrect.',
'account_not_found' => 'Brugernavn eller kodeord er forkert.',
'account_not_activated' => 'Denne brugerkonto er ikke aktiveret.',
'account_suspended' => 'Denne brugerkonto er suspenderet.',
'account_banned' => 'Denne brugerkonto er blokeret.',
+1 -1
View File
@@ -8,7 +8,7 @@ return array(
'delete' => 'Slet',
'edit' => 'Rediger',
'restore' => 'Gendan',
'request' => 'Request',
'request' => 'Anmodning',
'submit' => 'Send',
'upload' => 'Upload',
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Tjek Ud',
'city' => 'By',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Land',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Efternavn',
'last_name' => 'Efternavn',
'license' => 'Licens',
'license_report' => 'Licensrapport',
'licenses_available' => 'Tilgængelige licenser',
@@ -140,4 +143,5 @@
'years' => 'år',
'yes' => 'Ja',
'zip' => 'Postnummer',
'noimage' => 'No image uploaded or image not found.',
];
+3 -3
View File
@@ -5,14 +5,14 @@ return array(
'about_accessories_text' => 'Ein Zubehör ist alles was Sie an einem Benutzer ausgeben können, jedoch keine Seriennummer besitzt (oder wo es keinen Sinn macht eben diese zu verwalten). Zum Beispiel: Computer Mäuse und Tastaturen.',
'accessory_category' => 'Züberhor Kategorie',
'accessory_name' => 'Zubehör Name',
'cost' => 'Purchase Cost',
'cost' => 'Einkaufspreis',
'create' => 'Zubehör neu erstellen',
'date' => 'Purchase Date',
'date' => 'Kaufdatum',
'eula_text' => 'Kategorie EULA',
'eula_text_help' => 'Dieses Feld erlaubt Ihnen die EULA Ihren Bedürfnissen nach Asset Typ anzupassen.Wenn Sie nur eine EULA für alle Assets haben, aktivieren Sie die Checkbox unterhalb um die Standard EULA zu verwenden.',
'require_acceptance' => 'Erfordert die Zustimmung der Assets in dieser Kategorie durch den Benutzer.',
'no_default_eula' => 'Keine Standard EULA gefunden. Fügen Sie eine in den Einstellungen hinzu.',
'order' => 'Order Number',
'order' => 'Bestellnummer',
'qty' => 'Anzahl',
'total' => 'Gesamt',
'remaining' => 'Verfügbar',
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Diese Kategorie existiert nicht.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Dieses Zubehör ist derzeit an :count Benutzern zur Verwendung ausgegeben worden. Bitte buchen Sie das Zubehör wieder ein und versuchen es dann noch Einmal. ',
'create' => array(
'error' => 'Die Kategorie wurde nicht erstellt, bitte versuchen Sie es erneut.',
'success' => 'Die Kategorie wurde erfolgreich erstellt.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Die Kategorie konnte nicht aktualisiert werden, bitte versuchen Sie es erneut',
'success' => 'Die Kategorie wurde erfolgreich aktualisiert.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Beim Löschen der Kategorie ist ein Problem aufgetreten. Bitte versuchen Sie es erneut.',
'success' => 'Die Kategorie wurde erfolgreich gelöscht.'
),
'checkout' => array(
'error' => 'Zubehör konnte nicht ausgebucht werden, bitte versuchen Sie es erneut',
'success' => 'Zubehör erfolgreich ausgebucht.',
+3 -3
View File
@@ -4,10 +4,10 @@ return array(
'about_consumables_title' => 'Details Verbrauchsmaterialien',
'about_consumables_text' => 'Verbrauchsmaterialien sind alle Dinge, die gekauft und mit der Zeit aufgebraucht werden, wie z.B. Druckerpatronen oder Kopierpapier.',
'consumable_name' => 'Name des Verbrauchsmaterials',
'cost' => 'Purchase Cost',
'cost' => 'Einkaufspreis',
'create' => 'Verbrauchsmaterial erstellen',
'date' => 'Purchase Date',
'order' => 'Order Number',
'date' => 'Kaufdatum',
'order' => 'Bestellnummer',
'remaining' => 'übrig',
'total' => 'Gesamt',
'update' => 'Verbrauchsmaterial überarbeiten',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Seriennummer',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Tage ohne Akzeptierung'
);
+2 -2
View File
@@ -1,8 +1,8 @@
<?php
return array(
'assets_rtd' => 'Assets RTD',
'assets_checkedout' => 'Assets Assigned',
'assets_rtd' => 'Asset bereit zum Herausgeben',
'assets_checkedout' => 'Zugewiesene Assets',
'id' => 'ID',
'city' => 'Stadt',
'state' => 'Bundesland',
+22 -4
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Farbe der Kopfzeile',
'info' => 'Mit diesen Einstellungen können Sie verschieden Aspekte Ihrer Installation bearbeiten.',
'laravel' => 'Laravel Version',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Skripte',
'load_remote_help_text' => 'Diese Installation von Snipe-IT kann Skripte von außerhalb laden.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Ergebnisse pro Seite',
'php' => 'PHP Version',
@@ -49,6 +67,6 @@ return array(
'update' => 'Einstellungen übernehmen',
'value' => 'Wert',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_title' => 'Über Einstellungen',
'about_settings_text' => 'Mit diesen Einstellungen können Sie verschiedene Aspekte Ihrer Installation anpassen.',
);
+6 -2
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Einchecken von',
'checkout' => 'Checkout Asset to User',
'city' => 'Stadt',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Verbrauchsmaterial',
'consumables' => 'Verbrauchsmaterialien',
'country' => 'Land',
@@ -43,7 +45,7 @@
'date' => 'Purchase Date',
'delete' => 'Löschen',
'deleted' => 'Gelöscht',
'delete_seats' => 'Deleted Seats',
'delete_seats' => 'Gelöschte Lizenzen',
'deployed' => 'Herausgegeben',
'depreciation_report' => 'Abschreibunsgreport',
'download' => 'Download',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Wartungsbericht',
'asset_maintenances' => 'Asset Wartungen',
'item' => 'Gegenstand',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Letztes',
'last_name' => 'Familienname',
'last_name' => 'Familienname',
'license' => 'Lizenz',
'license_report' => 'Lizenz Report',
'licenses_available' => 'Verfügbare Lizenzen',
@@ -140,4 +143,5 @@
'years' => 'Jahre',
'yes' => 'Ja',
'zip' => 'Postal Code',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Category does not exist.',
'does_not_exist' => 'Accessory 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.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Last Name',
'last_name' => 'Last Name',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
@@ -140,4 +143,5 @@
'years' => 'years',
'yes' => 'Yes',
'zip' => 'Zip',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Kategori tidak ada.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Aksesori saat ini memiliki :count item untuk pengguna. Silahkan cek di aksesoris dan dan coba lagi. ',
'create' => array(
'error' => 'Kategori gagal dibuat, silakan coba lagi.',
'success' => 'Kategori berhasil disimpan.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Kategori tidak terupdate, silakan coba lagi',
'success' => 'Kategori berhasil diupdate.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Ada masalah menghapus kategori. Silakan coba lagi.',
'success' => 'Kategori berhasil dihapus.'
),
'checkout' => array(
'error' => 'Aksesori belum diperiksa, silakan coba lagi',
'success' => 'Aksesori berhasil diperiksa.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Last Name',
'last_name' => 'Last Name',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
@@ -140,4 +143,5 @@
'years' => 'years',
'yes' => 'Yes',
'zip' => 'Zip',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Category does not exist.',
'does_not_exist' => 'Accessory 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.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+5
View File
@@ -0,0 +1,5 @@
<?php
return [
'select_company' => 'Select Company',
];
+22
View File
@@ -0,0 +1,22 @@
<?php
return array(
'does_not_exist' => 'Company does not exist.',
'assoc_users' => 'This company is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this company and try again. ',
'create' => array(
'error' => 'Company was not created, please try again.',
'success' => 'Company created successfully.'
),
'update' => array(
'error' => 'Company was not updated, please try again',
'success' => 'Company updated successfully.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this company?',
'error' => 'There was an issue deleting the company. Please try again.',
'success' => 'The Company was deleted successfully.'
)
);
+10
View File
@@ -0,0 +1,10 @@
<?php
return array(
'companies' => 'Companies',
'create' => 'Create Company',
'title' => 'Company',
'update' => 'Update Company',
'name' => 'Company Name',
'id' => 'ID',
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+4 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Last Name',
'last_name' => 'Last Name',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Categoría inexistente.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Last Name',
'last_name' => 'Last Name',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
@@ -140,4 +143,5 @@
'years' => 'years',
'yes' => 'Yes',
'zip' => 'Zip',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Categoría inexistente.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Este accesorio actualmente tiene :count entregados a usuarios. Por favor ingrese los accesorios y vuelva a intentar. ',
'create' => array(
'error' => 'La categoría no se ha creado, inténtalo de nuevo.',
'success' => 'Categoría creada correctamente.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'La categoría no se ha actualizado, inténtalo de nuevo',
'success' => 'Categoría actualizada correctamente.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Ha habido un problema eliminando la categoría. Intentalo de nuevo.',
'success' => 'La categoría fue eliminada exitosamente.'
),
'checkout' => array(
'error' => 'El accesorio no fue retirado, por favor vuelva a intentarlo',
'success' => 'Accesorio retirado correctamente.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'N. Serie',
'status' => 'Estado',
'title' => 'Equipo ',
'image' => 'Device Image',
'days_without_acceptance' => 'Días Sin Aceptación'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Color de encabezado',
'info' => 'Estos parámetros permirten personalizar ciertos aspectos de la aplicación.',
'laravel' => 'Versión de Laravel',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'opcional',
'per_page' => 'Resultados por página',
'php' => 'Versión de PHP',
@@ -50,5 +68,5 @@ return array(
'value' => 'Valor',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Devolución de',
'checkout' => 'Asignar a un usuario',
'city' => 'Ciudad',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumible',
'consumables' => 'Consumibles',
'country' => 'Pais',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Reporte de Mantenimiento de Equipo',
'asset_maintenances' => 'Mantenimientos de Equipo',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Último',
'last_name' => 'Apellidos',
'last_name' => 'Apellidos',
'license' => 'Licencia',
'license_report' => 'Reporte de Licencias',
'licenses_available' => 'licencias libres',
@@ -140,4 +143,5 @@
'years' => 'años',
'yes' => 'Si',
'zip' => 'Códio Postal',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Luokkaa ei löydy.',
'does_not_exist' => 'Accessory 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.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Luokkaa ei päivitetty, yritä uudelleen',
'success' => 'Luokka päivitettiin onnistuneesti.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Sarjanumero',
'status' => 'Tila',
'title' => 'Laite ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Yläosion logo',
'info' => 'Näiden asetusten avulla voit mukauttaa tiettyjä toimintoja.',
'laravel' => 'Versio Laravel',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'valinnainen',
'per_page' => 'Tuloksia Per Sivu',
'php' => 'Versio PHP',
@@ -50,5 +68,5 @@ return array(
'value' => 'Arvo',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Luovuta',
'city' => 'Kaupunki',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Maa',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Sukunimi',
'last_name' => 'Sukunimi',
'license' => 'Lisenssi',
'license_report' => 'Lisenssiraportti',
'licenses_available' => 'Vapaana olevat lisenssit',
@@ -140,4 +143,5 @@
'years' => 'vuotta',
'yes' => 'Kyllä',
'zip' => 'Postinumero',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'La catégorie n\'éxiste pas.',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Cet accessoire à présentement des items d\'attribué à des utilisateurs. S\'il vous plaît vérifier l\'accessoire et veuillez réessayer. ',
'create' => array(
'error' => 'La catégorie n\'a pas été crée, veuillez essayer à nouveau.',
'success' => 'Catégorie créée avec succès.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Catégorie n\'a pas été actualisée, veuillez réessayer',
'success' => 'Catégorie actualisée correctement.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Problème lors de l\'effacement de cette catégorie. Veuillez réessayer.',
'success' => 'Catégorie effacée.'
),
'checkout' => array(
'error' => 'Cet accessoire n\'est pas attribué. Veuillez réessayer',
'success' => 'Accessoire attribué correctement.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Numéro de série',
'status' => 'Statut',
'title' => 'Actif ',
'image' => 'Device Image',
'days_without_acceptance' => 'Jours sans acceptation'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Couleur de l\'en-tête',
'info' => 'Ces paramètres vous permettent de personnaliser certains aspects de votre installation.',
'laravel' => 'Version de Laravel',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'facultatif',
'per_page' => 'Résultats par page',
'php' => 'Version de PHP',
@@ -50,5 +68,5 @@ return array(
'value' => 'Valeur',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Dissocier de',
'checkout' => 'Associer',
'city' => 'Ville',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Fourniture',
'consumables' => 'Fournitures',
'country' => 'Pays',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Rapport sur l\'entretien d\'actif',
'asset_maintenances' => 'Entretien d\'actifs',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Dernier',
'last_name' => 'Nom',
'last_name' => 'Nom',
'license' => 'Licence',
'license_report' => 'Rapport de licence',
'licenses_available' => 'Licences disponibles',
@@ -140,4 +143,5 @@
'years' => 'années',
'yes' => 'Oui',
'zip' => 'Code postal',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Category does not exist.',
'does_not_exist' => 'Accessory 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.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Last Name',
'last_name' => 'Last Name',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
@@ -140,4 +143,5 @@
'years' => 'years',
'yes' => 'Yes',
'zip' => 'Zip',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'Category does not exist.',
'does_not_exist' => 'Accessory 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.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'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.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Serial',
'status' => 'Status',
'title' => 'Asset ',
'image' => 'Device Image',
'days_without_acceptance' => 'Days Without Acceptance'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Value',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);
+5 -1
View File
@@ -30,6 +30,8 @@
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'Város',
'companies' => 'Companies',
'company' => 'Company',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Ország',
@@ -66,8 +68,9 @@
'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances',
'item' => 'Item',
'insufficient_permissions' => 'Insufficient permissions!',
'last' => 'Last',
'last_name' => 'Vezetéknév',
'last_name' => 'Vezetéknév',
'license' => 'License',
'license_report' => 'License Report',
'licenses_available' => 'licenses available',
@@ -140,4 +143,5 @@
'years' => 'years',
'yes' => 'Igen',
'zip' => 'Irányítószám',
'noimage' => 'No image uploaded or image not found.',
];
+6 -6
View File
@@ -2,17 +2,17 @@
return array(
'does_not_exist' => 'La categoria non Esiste',
'does_not_exist' => 'Accessory does not exist.',
'assoc_users' => 'Questo accessorio ha attualmente :count elementi controllati agli utenti. Si prega di controllare negli accessori e e riprovare. ',
'create' => array(
'error' => 'La categoria non è stata creata, si prega di riprovare.',
'success' => 'Categoria creata con successo.'
'error' => 'Accessory was not created, please try again.',
'success' => 'Accessory created successfully.'
),
'update' => array(
'error' => 'La categoria non è stata aggiornata, si prega di rirpovare',
'success' => 'Categoria aggiornata con successo.'
'error' => 'Accessory was not updated, please try again',
'success' => 'Accessory updated successfully.'
),
'delete' => array(
@@ -20,7 +20,7 @@ return array(
'error' => 'Si è verificato un problema cercando di eliminare la categoria. Riprova.',
'success' => 'La categoria è stata eliminata con successo.'
),
'checkout' => array(
'error' => 'L\'accessorio non è stato estratto, si prega di riprovare',
'success' => 'Accessorio estratto con successo.',
+1
View File
@@ -18,6 +18,7 @@ return array(
'serial' => 'Seriale',
'status' => 'Stato',
'title' => 'Bene ',
'image' => 'Device Image',
'days_without_acceptance' => 'Giorni senza accettazione'
);
+19 -1
View File
@@ -26,9 +26,27 @@ return array(
'header_color' => 'Colore intestazione',
'info' => 'Queste impostazioni consentono di personalizzare alcuni aspetti della vostra installazione.',
'laravel' => 'Laravel Version',
'ldap_enabled' => 'LDAP enabled',
'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Settings',
'ldap_server' => 'LDAP Server',
'ldap_uname' => 'LDAP Bind Username',
'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter',
'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name',
'ldap_auth_filter_query' => 'LDAP Authentication query',
'ldap_version' => 'LDAP Version',
'ldap_active_flag' => 'LDAP Active Flag',
'ldap_emp_num' => 'LDAP Employee Number',
'ldap_email' => 'LDAP Email',
'load_remote_text' => 'Remote Scripts',
'load_remote_help_text' => 'This Snipe-IT install can load scripts from the outside world.',
'logo' => 'Logo',
'full_multiple_companies_support_help_text' => 'Restricting users (including admins) assigned to companies to their company\'s assets.',
'full_multiple_companies_support_text' => 'Full Multiple Companies Support',
'optional' => 'facoltativo',
'per_page' => 'Risultati per Pagina',
'php' => 'PHP Version',
@@ -50,5 +68,5 @@ return array(
'value' => 'Valore',
'brand' => 'Branding',
'about_settings_title' => 'About Settings',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
);

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