Compare commits
29 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85a64f9dfd | ||
|
|
106ed6a9a0 | ||
|
|
56f490cef9 | ||
|
|
336858e4ed | ||
|
|
fda6d60225 | ||
|
|
cf4f178485 | ||
|
|
e63a07800f | ||
|
|
5297d699b3 | ||
|
|
a28481cd8f | ||
|
|
5455abfd16 | ||
|
|
3460016c94 | ||
|
|
e49c33b56b | ||
|
|
8b101b10ec | ||
|
|
a5b2dbfaf0 | ||
|
|
e455b2af6e | ||
|
|
d26c40b26e | ||
|
|
abb970fe39 | ||
|
|
f8ecbed829 | ||
|
|
9ac093e0be | ||
|
|
38c9d8d6ca | ||
|
|
4557502b1d | ||
|
|
b85d972488 | ||
|
|
61e16a4668 | ||
|
|
e447159d4a | ||
|
|
b191406a0c | ||
|
|
dacbdd9aa5 | ||
|
|
e1eb2da5f3 | ||
|
|
f5d4eb5842 | ||
|
|
a22687abc5 |
6
.gitignore
vendored
6
.gitignore
vendored
@@ -7,7 +7,6 @@ composer.phar
|
||||
/app/database/*.sqlite
|
||||
/app/storage/meta/services.json
|
||||
/app/config/*/mail.php
|
||||
/app/config/*/session.php
|
||||
/app/config/*/database.php
|
||||
/app/config/*/app.php
|
||||
public/packages/*
|
||||
@@ -23,6 +22,5 @@ public/uploads/logo.gif
|
||||
public/uploads/logo.png
|
||||
.siteflow
|
||||
public/assets/.siteflow
|
||||
.settings/settings.json
|
||||
|
||||
|
||||
app/config/local/session.php
|
||||
.couscous
|
||||
|
||||
48
README.md
48
README.md
@@ -14,13 +14,16 @@ This project is being actively developed and we're [releasing quite frequently](
|
||||
__This is web-based software__. This means there there is no executable file (aka no .exe files), and it must be run on a web server and accessed through a web browser. It runs on any Mac OSX, flavor of Linux, as well as Windows.
|
||||
|
||||
-----
|
||||
### Documentation & Installation
|
||||
|
||||
__Installation and configuration documentation for this project has been moved to http://snipeitapp.com/documentation/.__
|
||||
### Installation
|
||||
|
||||
We'll be adding a long-overdue user's manual soon as well.
|
||||
__Installation and configuration documentation for this project has been moved to http://docs.snipeitapp.com.__
|
||||
|
||||
__To deploy on Ubuntu using Ansible and Vagrant, be sure to check out the [Snipe-IT Installation scripts](https://github.com/GR360RY/snipeit-ansible) created by [@GR360RY](https://github.com/GR360RY/).__
|
||||
#### Server Requirements
|
||||
Please see the [requirements documentation](http://docs.snipeitapp.com/requirements.html) for full requirements.
|
||||
|
||||
|
||||
To deploy on Ubuntu using Ansible and Vagrant, check out the [Snipe-IT Installation scripts](https://github.com/GR360RY/snipeit-ansible) created by [@GR360RY](https://github.com/GR360RY/).
|
||||
|
||||
-----
|
||||
### Bug Reports & Feature Requests
|
||||
@@ -29,44 +32,31 @@ Feel free to check out the [GitHub Issues for this project](https://github.com/s
|
||||
|
||||
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.
|
||||
|
||||
[](http://waffle.io/snipe/snipe-it)
|
||||
If you're having trouble with the installation, please check the [Common Issues](http://docs.snipeitapp.com/common-issues.html) and [Getting Help](http://docs.snipeitapp.com/getting-help.html) documentation.
|
||||
|
||||
-----
|
||||
|
||||
### Upgrading
|
||||
|
||||
Please see the [upgrading documentation](http://docs.snipeitapp.com/upgrading.html) for instructions on upgrading Snipe-IT.
|
||||
|
||||
------
|
||||
### Announcement List
|
||||
|
||||
To be notified of important news (such as new releases, security advisories, etc), [sign up for our list](http://eepurl.com/XyZKz). We'll never sell or give away your info, and we'll only email you when it's important.
|
||||
|
||||
------
|
||||
|
||||
### Translations!
|
||||
|
||||
If you're not a coder but want to give back to the project and you're fluent in other languages, consider helping out with the translations. We use [CrowdIn](https://crowdin.com) to manage translations, and it makes it super-simple for you to add translations to the project without messing with code. Check out [the Snipe-IT CrowdIn translation project here](https://crowdin.com/project/snipe-it/).
|
||||
|
||||
We currently have English, Chinese, Finnish, Malay, Romanian and Spanish completed, and are looking for lots more!
|
||||
|
||||
-----
|
||||
## Requirements
|
||||
|
||||
- PHP 5.4 or later
|
||||
- MCrypt PHP Extension
|
||||
- Fileinfo Extension
|
||||
|
||||
And _one_ of the following image libraries (for QR codes, asset model image and user avatar image uploads).
|
||||
|
||||
- GD Library (>=2.0) … or …
|
||||
- Imagick PHP extension (>=6.3.8)
|
||||
Please see the [translations documentation](http://docs.snipeitapp.com/translations.html) for information about available languages and how to add translations to Snipe-IT.
|
||||
|
||||
-----
|
||||
|
||||
## Important Notes on Updating
|
||||
### Contributing
|
||||
|
||||
Whenever you pull down a new version from master or develop, when you grab the [latest official release](https://github.com/snipe/snipe-it/releases), make sure to run the following commands via command line:
|
||||
Please see the documentation on [contributing and developing for Snipe-IT](http://docs.snipeitapp.com/contributing.html).
|
||||
|
||||
php composer.phar dump-autoload
|
||||
php artisan migrate
|
||||
|
||||
Forgetting to do this can mean your DB might end up out of sync with the new files you just pulled, or you may have some funky cached autoloader values. It's a good idea to get into the habit of running these every time you pull anything new down. If there are no database changes to migrate, it won't hurt anything to run migrations anyway.
|
||||
|
||||
## Contributor Code of Conduct
|
||||
[](http://waffle.io/snipe/snipe-it)
|
||||
|
||||
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.
|
||||
|
||||
|
||||
@@ -18,7 +18,7 @@ class AppCommand extends Command
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'This command kicks off your database table creation and migration, and creates your first admin user.';
|
||||
protected $description = '';
|
||||
|
||||
/**
|
||||
* Holds the user information.
|
||||
@@ -28,7 +28,7 @@ class AppCommand extends Command
|
||||
protected $userData = array(
|
||||
'first_name' => null,
|
||||
'last_name' => null,
|
||||
'username' => null,
|
||||
'email' => null,
|
||||
'password' => null
|
||||
);
|
||||
|
||||
@@ -66,7 +66,7 @@ class AppCommand extends Command
|
||||
// Let's ask the user some questions, shall we?
|
||||
$this->askUserFirstName();
|
||||
$this->askUserLastName();
|
||||
$this->askUserUsername();
|
||||
$this->askUserEmail();
|
||||
$this->askUserPassword();
|
||||
|
||||
$this->askUserDummyData();
|
||||
@@ -162,7 +162,7 @@ class AppCommand extends Command
|
||||
}
|
||||
|
||||
/**
|
||||
* Asks the user for the username address.
|
||||
* Asks the user for the user email address.
|
||||
*
|
||||
* @return void
|
||||
* @todo Use the Laravel Validator
|
||||
@@ -171,7 +171,7 @@ class AppCommand extends Command
|
||||
{
|
||||
do {
|
||||
// Ask the user to input the email address
|
||||
$email = $this->ask('Please enter your email: ');
|
||||
$email = $this->ask('Please enter your user email: ');
|
||||
|
||||
// Check if email is valid
|
||||
if ($email == '') {
|
||||
@@ -185,32 +185,6 @@ class AppCommand extends Command
|
||||
while ( ! $email);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Asks the user for the username address.
|
||||
*
|
||||
* @return void
|
||||
* @todo Use the Laravel Validator
|
||||
*/
|
||||
protected function askUserUsername()
|
||||
{
|
||||
do {
|
||||
// Ask the user to input the username
|
||||
$username = $this->ask('Please enter your username: ');
|
||||
|
||||
// Check if username is valid
|
||||
if ($username == '') {
|
||||
// Return an error message
|
||||
$this->error('Username is invalid. Please try again.');
|
||||
}
|
||||
|
||||
// Store the username address
|
||||
$this->userData['username'] = $username;
|
||||
}
|
||||
while ( ! $username);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Asks the user for the user password.
|
||||
*
|
||||
@@ -223,7 +197,7 @@ class AppCommand extends Command
|
||||
// Ask the user to input the user password
|
||||
$password = $this->ask('Please enter your user password (at least 8 characters): ');
|
||||
|
||||
// Check if password is valid
|
||||
// Check if email is valid
|
||||
if ($password == '') {
|
||||
// Return an error message
|
||||
$this->error('Password is invalid. Please try again.');
|
||||
@@ -243,9 +217,9 @@ class AppCommand extends Command
|
||||
protected function askUserDummyData()
|
||||
{
|
||||
// Ask the user to input the user password
|
||||
$dummydata = $this->ask('Do you want to seed your database with dummy data? Y/n (default is yes): ');
|
||||
$dummydata = $this->ask('Do you want to seed your database with dummy data? y/n (default is yes): ');
|
||||
|
||||
$this->dummyData = ( strstr($dummydata, 'Y' ) || empty($dummydata) ) ? true : false;
|
||||
$this->dummyData = ( strstr($dummydata, 'y' ) || empty($dummydata) ) ? true : false;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -355,7 +329,7 @@ class AppCommand extends Command
|
||||
$user = Sentry::getUserProvider()->create($data);
|
||||
|
||||
// Associate the Admin group to this user
|
||||
$group = Sentry::findGroupByName('Admin');
|
||||
$group = Sentry::getGroupProvider()->findById(1);
|
||||
$user->addGroup($group);
|
||||
|
||||
// Show the success message
|
||||
@@ -376,7 +350,6 @@ class AppCommand extends Command
|
||||
'first_name' => 'John',
|
||||
'last_name' => 'Doe',
|
||||
'email' => 'john.doe@example.com',
|
||||
'username' => 'john.doe@example.com',
|
||||
'password' => substr(str_shuffle(str_repeat('0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ', mt_rand(1,10))),1,10),
|
||||
'notes' => 'Generated on install',
|
||||
'activated' => 1,
|
||||
|
||||
@@ -61,64 +61,154 @@ class ImportCommand extends Command {
|
||||
$nbInsert = $csv->each(function ($row) use ($duplicates) {
|
||||
$status_id = 1;
|
||||
|
||||
if (is_numeric($row[0])) {
|
||||
$this->comment('User '.$row[0].' is not a name - assume this user already exists');
|
||||
} elseif ($row[0]=='') {
|
||||
// Let's just map some of these entries to more user friendly words
|
||||
|
||||
if (array_key_exists('0',$row)) {
|
||||
$user_name = $row[0];
|
||||
} else {
|
||||
$user_name = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('1',$row)) {
|
||||
$user_email = $row[1];
|
||||
} else {
|
||||
$user_email = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('2',$row)) {
|
||||
$user_asset_category = $row[2];
|
||||
} else {
|
||||
$user_asset_category = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('3',$row)) {
|
||||
$user_asset_name = $row[3];
|
||||
} else {
|
||||
$user_asset_name = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('4',$row)) {
|
||||
$user_asset_mfgr = $row[4];
|
||||
} else {
|
||||
$user_asset_mfgr = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('5',$row)) {
|
||||
$user_asset_modelno = $row[5];
|
||||
} else {
|
||||
$user_asset_modelno = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('6',$row)) {
|
||||
$user_asset_serial = $row[6];
|
||||
} else {
|
||||
$user_asset_serial = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('7',$row)) {
|
||||
$user_asset_tag = $row[7];
|
||||
} else {
|
||||
$user_asset_tag = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('8',$row)) {
|
||||
$user_asset_location = $row[8];
|
||||
} else {
|
||||
$user_asset_location = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('9',$row)) {
|
||||
$user_asset_notes = $row[9];
|
||||
} else {
|
||||
$user_asset_notes = '';
|
||||
}
|
||||
|
||||
if (array_key_exists('10',$row)) {
|
||||
if ($row[10]!='') {
|
||||
$user_asset_purchase_date = date("Y-m-d 00:00:01", strtotime($row[10]));
|
||||
} else {
|
||||
$user_asset_purchase_date = '';
|
||||
}
|
||||
} else {
|
||||
$user_asset_purchase_date = '';
|
||||
}
|
||||
|
||||
// A number was given instead of a name
|
||||
if (is_numeric($user_name)) {
|
||||
$this->comment('User '.$user_name.' is not a name - assume this user already exists');
|
||||
// No name was given
|
||||
|
||||
} elseif ($user_name=='') {
|
||||
$this->comment('No user data provided - skipping user creation, just adding asset');
|
||||
$first_name = '';
|
||||
$last_name = '';
|
||||
} else {
|
||||
|
||||
// Generate an email based on their name
|
||||
$name = explode(" ", $row[0]);
|
||||
$first_name = $name[0];
|
||||
$last_name = '';
|
||||
$email_last_name = '';
|
||||
$name = explode(" ", $user_name);
|
||||
$first_name = $name[0];
|
||||
$email_last_name = '';
|
||||
|
||||
if ($first_name=='Unknown') {
|
||||
$status_id = 7;
|
||||
}
|
||||
if (!array_key_exists(1, $name)) {
|
||||
$last_name='';
|
||||
$email_last_name = $last_name;
|
||||
$email_prefix = $first_name;
|
||||
} else {
|
||||
$last_name = str_replace($first_name,'',$user_name);
|
||||
|
||||
if (!array_key_exists(1, $name)) {
|
||||
$last_name='';
|
||||
$email_last_name = $last_name;
|
||||
$email_prefix = $first_name;
|
||||
} else {
|
||||
// Loop through the rest of the explode so you don't truncate
|
||||
for ($x=0; $x < count($name); $x++) {
|
||||
if (($x > 0) && ($name[$x]!='')) {
|
||||
$last_name.=' '.$name[$x];
|
||||
$email_last_name.=$name[$x];
|
||||
if ($this->option('email_format')=='filastname') {
|
||||
$email_last_name.=str_replace(' ','',$last_name);
|
||||
$email_prefix = $first_name[0].$email_last_name;
|
||||
|
||||
} elseif ($this->option('email_format')=='firstname.lastname') {
|
||||
$email_last_name.=str_replace(' ','',$last_name);
|
||||
$email_prefix = $first_name.'.'.$email_last_name;
|
||||
|
||||
} elseif ($this->option('email_format')=='firstname') {
|
||||
$email_last_name.=str_replace(' ','',$last_name);
|
||||
$email_prefix = $first_name;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
$email_prefix = $first_name[0].$email_last_name;
|
||||
}
|
||||
|
||||
$email = strtolower(str_replace('.','',$email_prefix)).'@'.$this->option('domain');
|
||||
$email = str_replace("'",'',$email);
|
||||
// Generate an email based on their name if no email address is given
|
||||
if ($user_email=='') {
|
||||
if ($first_name=='Unknown') {
|
||||
$status_id = 7;
|
||||
}
|
||||
$email = strtolower($email_prefix).'@'.$this->option('domain');
|
||||
$user_email = str_replace("'",'',$email);
|
||||
}
|
||||
|
||||
|
||||
|
||||
$this->comment('Full Name: '.$row[0]);
|
||||
$this->comment('First Name: '.$first_name);
|
||||
$this->comment('Last Name: '.$last_name);
|
||||
$this->comment('Email: '.$email);
|
||||
$this->comment('Category Name: '.$row[1]);
|
||||
$this->comment('Item: '.$row[2]);
|
||||
$this->comment('Manufacturer ID: '.$row[3]);
|
||||
$this->comment('Model No: '.$row[4]);
|
||||
$this->comment('Serial No: '.$row[5]);
|
||||
$this->comment('Asset Tag: '.$row[6]);
|
||||
$this->comment('Location: '.$row[7]);
|
||||
}
|
||||
|
||||
$this->comment('Full Name: '.$user_name);
|
||||
$this->comment('First Name: '.$first_name);
|
||||
$this->comment('Last Name: '.$last_name);
|
||||
$this->comment('Email: '.$user_email);
|
||||
$this->comment('Category Name: '.$user_asset_category);
|
||||
$this->comment('Item: '.$user_asset_name);
|
||||
$this->comment('Manufacturer ID: '.$user_asset_mfgr);
|
||||
$this->comment('Model No: '.$user_asset_modelno);
|
||||
$this->comment('Serial No: '.$user_asset_serial);
|
||||
$this->comment('Asset Tag: '.$user_asset_tag);
|
||||
$this->comment('Location: '.$user_asset_location);
|
||||
$this->comment('Purchase Date: '.$user_asset_purchase_date);
|
||||
$this->comment('Notes: '.$user_asset_notes);
|
||||
|
||||
$this->comment('------------- Action Summary ----------------');
|
||||
|
||||
if (isset($email)) {
|
||||
if ($user = User::where('email', $email)->first()) {
|
||||
$this->comment('User '.$email.' already exists');
|
||||
if ($user_email!='') {
|
||||
if ($user = User::where('email', $user_email)->first()) {
|
||||
$this->comment('User '.$user_email.' already exists');
|
||||
} else {
|
||||
// Create the user
|
||||
$user = Sentry::createUser(array(
|
||||
'first_name' => $first_name,
|
||||
'last_name' => $last_name,
|
||||
'email' => $email,
|
||||
'email' => $user_email,
|
||||
'password' => substr(str_shuffle("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"), 0, 10),
|
||||
'activated' => true,
|
||||
'permissions' => array(
|
||||
@@ -140,11 +230,11 @@ class ImportCommand extends Command {
|
||||
}
|
||||
|
||||
// Check for the location match and create it if it doesn't exist
|
||||
if ($location = Location::where('name', $row[7])->first()) {
|
||||
$this->comment('Location '.$row[7].' already exists');
|
||||
if ($location = Location::where('name', $user_asset_location)->first()) {
|
||||
$this->comment('Location '.$user_asset_location.' already exists');
|
||||
} else {
|
||||
$location = new Location();
|
||||
$location->name = e($row[7]);
|
||||
$location->name = e($user_asset_location);
|
||||
$location->address = '';
|
||||
$location->city = '';
|
||||
$location->state = '';
|
||||
@@ -154,65 +244,65 @@ class ImportCommand extends Command {
|
||||
if (!$this->option('testrun')=='true') {
|
||||
|
||||
if ($location->save()) {
|
||||
$this->comment('Location '.$row[7].' was created');
|
||||
$this->comment('Location '.$user_asset_location.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Location '.$row[1].' was NOT created');
|
||||
$this->comment('Something went wrong! Location '.$user_asset_location.' was NOT created');
|
||||
}
|
||||
|
||||
} else {
|
||||
$this->comment('Location '.$row[7].' was (not) created - test run only');
|
||||
$this->comment('Location '.$user_asset_location.' was (not) created - test run only');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for the category match and create it if it doesn't exist
|
||||
if ($category = Category::where('name', $row[1])->where('category_type', 'asset')->first()) {
|
||||
$this->comment('Category '.$row[1].' already exists');
|
||||
if ($category = Category::where('name', $user_asset_category)->where('category_type', 'asset')->first()) {
|
||||
$this->comment('Category '.$user_asset_category.' already exists');
|
||||
} else {
|
||||
$category = new Category();
|
||||
$category->name = e($row[1]);
|
||||
$category->name = e($user_asset_category);
|
||||
$category->category_type = 'asset';
|
||||
$category->user_id = 1;
|
||||
|
||||
if ($category->save()) {
|
||||
$this->comment('Category '.$row[1].' was created');
|
||||
$this->comment('Category '.$user_asset_category.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Category '.$row[1].' was NOT created');
|
||||
$this->comment('Something went wrong! Category '.$user_asset_category.' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for the manufacturer match and create it if it doesn't exist
|
||||
if ($manufacturer = Manufacturer::where('name', $row[3])->first()) {
|
||||
$this->comment('Manufacturer '.$row[3].' already exists');
|
||||
if ($manufacturer = Manufacturer::where('name', $user_asset_mfgr)->first()) {
|
||||
$this->comment('Manufacturer '.$user_asset_mfgr.' already exists');
|
||||
} else {
|
||||
$manufacturer = new Manufacturer();
|
||||
$manufacturer->name = e($row[3]);
|
||||
$manufacturer->name = e($user_asset_mfgr);
|
||||
$manufacturer->user_id = 1;
|
||||
|
||||
if ($manufacturer->save()) {
|
||||
$this->comment('Manufacturer '.$row[3].' was created');
|
||||
$this->comment('Manufacturer '.$user_asset_mfgr.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Manufacturer '.$row[3].' was NOT created');
|
||||
$this->comment('Something went wrong! Manufacturer '.$user_asset_mfgr.' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Check for the asset model match and create it if it doesn't exist
|
||||
if ($asset_model = Model::where('name', $row[2])->where('modelno', $row[4])->where('category_id', $category->id)->where('manufacturer_id', $manufacturer->id)->first()) {
|
||||
$this->comment('The Asset Model '.$row[2].' with model number '.$row[4].' already exists');
|
||||
if ($asset_model = Model::where('name', $user_asset_name)->where('modelno', $user_asset_modelno)->where('category_id', $category->id)->where('manufacturer_id', $manufacturer->id)->first()) {
|
||||
$this->comment('The Asset Model '.$user_asset_name.' with model number '.$user_asset_modelno.' already exists');
|
||||
} else {
|
||||
$asset_model = new Model();
|
||||
$asset_model->name = e($row[2]);
|
||||
$asset_model->name = e($user_asset_name);
|
||||
$asset_model->manufacturer_id = $manufacturer->id;
|
||||
$asset_model->modelno = e($row[4]);
|
||||
$asset_model->modelno = e($user_asset_modelno);
|
||||
$asset_model->category_id = $category->id;
|
||||
$asset_model->user_id = 1;
|
||||
|
||||
if ($asset_model->save()) {
|
||||
$this->comment('Asset Model '.$row[2].' with model number '.$row[4].' was created');
|
||||
$this->comment('Asset Model '.$user_asset_name.' with model number '.$user_asset_modelno.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Asset Model '.$row[2].' was NOT created');
|
||||
$this->comment('Something went wrong! Asset Model '.$user_asset_name.' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -220,19 +310,25 @@ class ImportCommand extends Command {
|
||||
// Check for the asset match and create it if it doesn't exist
|
||||
|
||||
$asset = new Asset();
|
||||
$asset->name = e($row[2]);
|
||||
$asset->serial = e($row[5]);
|
||||
$asset->asset_tag = e($row[6]);
|
||||
$asset->name = e($user_asset_name);
|
||||
$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 '.$row[2].' with serial number '.$row[5].' was created');
|
||||
$this->comment('Asset '.$user_asset_name.' with serial number '.$user_asset_serial.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Asset '.$row[5].' was NOT created');
|
||||
$this->comment('Something went wrong! Asset '.$user_asset_name.' was NOT created');
|
||||
}
|
||||
|
||||
|
||||
@@ -267,6 +363,7 @@ class ImportCommand extends Command {
|
||||
{
|
||||
return array(
|
||||
array('domain', null, InputOption::VALUE_REQUIRED, 'Email domain for generated email addresses.', null),
|
||||
array('email_format', null, InputOption::VALUE_REQUIRED, 'The format of the email addresses that should be generated. Options are firstname.lastname, firstname, filastname', null),
|
||||
array('testrun', null, InputOption::VALUE_REQUIRED, 'Test the output without writing to the database or not.', null),
|
||||
);
|
||||
}
|
||||
|
||||
@@ -37,94 +37,58 @@ class SendExpirationAlerts extends Command {
|
||||
*/
|
||||
public function fire()
|
||||
{
|
||||
|
||||
// Expiring Assets
|
||||
$expiring_assets = Asset::getExpiringWarrantee(60);
|
||||
$this->info(count($expiring_assets).' expiring assets');
|
||||
|
||||
$asset_data['count'] = count($expiring_assets);
|
||||
$asset_data['email_content'] ='';
|
||||
$now = date("Y-m-d");
|
||||
|
||||
|
||||
$data['count'] = count($expiring_assets);
|
||||
$data['email_content'] ='';
|
||||
|
||||
|
||||
|
||||
foreach ($expiring_assets as $asset) {
|
||||
|
||||
$now = date("Y-m-d");
|
||||
$expires = $asset->warrantee_expires();
|
||||
$difference = round(abs(strtotime($expires) - strtotime($now))/86400);
|
||||
|
||||
|
||||
if ($difference > 30) {
|
||||
$asset_data['email_content'] .= '<tr style="background-color: #fcffa3;">';
|
||||
$data['email_content'] .= '<tr style="background-color: #fcffa3;">';
|
||||
} else {
|
||||
$asset_data['email_content'] .= '<tr style="background-color:#d9534f;">';
|
||||
$data['email_content'] .= '<tr style="background-color:#d9534f;">';
|
||||
}
|
||||
$asset_data['email_content'] .= '<td><a href="'.Config::get('app.url').'/hardware/'.$asset->id.'/view">';
|
||||
$asset_data['email_content'] .= $asset->showAssetName().'</a></td><td>'.$asset->asset_tag.'</td>';
|
||||
$asset_data['email_content'] .= '<td>'.$asset->warrantee_expires().'</td>';
|
||||
$asset_data['email_content'] .= '<td>'.$difference.' days</td>';
|
||||
$asset_data['email_content'] .= '</tr>';
|
||||
$data['email_content'] .= '<td><a href="'.Config::get('app.url').'/hardware/'.$asset->id.'/view">';
|
||||
$data['email_content'] .= $asset->name.'</a></td><td>'.$asset->asset_tag.'</td>';
|
||||
$data['email_content'] .= '<td>'.$asset->warrantee_expires().'</td>';
|
||||
$data['email_content'] .= '<td>'.$difference.' days</td>';
|
||||
$data['email_content'] .= '</tr>';
|
||||
}
|
||||
|
||||
// Expiring licenses
|
||||
$expiring_licenses = License::getExpiringLicenses(60);
|
||||
$this->info(count($expiring_licenses).' expiring licenses');
|
||||
|
||||
|
||||
$license_data['count'] = count($expiring_licenses);
|
||||
$license_data['email_content'] = '';
|
||||
|
||||
foreach ($expiring_licenses as $license) {
|
||||
$expires = $license->expiration_date;
|
||||
$difference = round(abs(strtotime($expires) - strtotime($now))/86400);
|
||||
|
||||
if ($difference > 30) {
|
||||
$license_data['email_content'] .= '<tr style="background-color: #fcffa3;">';
|
||||
} else {
|
||||
$license_data['email_content'] .= '<tr style="background-color:#d9534f;">';
|
||||
}
|
||||
$license_data['email_content'] .= '<td><a href="'.Config::get('app.url').'/admin/licenses/'.$license->id.'/view">';
|
||||
$license_data['email_content'] .= $license->name.'</a></td>';
|
||||
$license_data['email_content'] .= '<td>'.$license->expiration_date.'</td>';
|
||||
$license_data['email_content'] .= '<td>'.$difference.' days</td>';
|
||||
$license_data['email_content'] .= '</tr>';
|
||||
}
|
||||
|
||||
if ((Setting::getSettings()->alert_email!='') && (Setting::getSettings()->alerts_enabled==1)) {
|
||||
|
||||
|
||||
if ((Setting::getSettings()->alert_email!='') && (Setting::getSettings()->alerts_enabled==1)){
|
||||
|
||||
if (count($expiring_assets) > 0) {
|
||||
Mail::send('emails.expiring-assets-report', $asset_data, function ($m) {
|
||||
|
||||
Mail::send('emails.expiring-report', $data, function ($m) {
|
||||
$m->to(Setting::getSettings()->alert_email, Setting::getSettings()->site_name);
|
||||
$m->subject('Expiring Assets Report');
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
if (count($expiring_licenses) > 0) {
|
||||
Mail::send('emails.expiring-licenses-report', $license_data, function ($m) {
|
||||
$m->to(Setting::getSettings()->alert_email, Setting::getSettings()->site_name);
|
||||
$m->subject('Expiring Licenses Report');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
} else {
|
||||
|
||||
|
||||
if (Setting::getSettings()->alert_email=='') {
|
||||
echo "Could not send email. No alert email configured in settings. \n";
|
||||
} elseif (Setting::getSettings()->alerts_enabled!=1) {
|
||||
echo "Alerts are disabled in the settings. No mail will be sent. \n";
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -1,65 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Console\Command;
|
||||
use Symfony\Component\Console\Input\InputOption;
|
||||
use Symfony\Component\Console\Input\InputArgument;
|
||||
|
||||
class SystemBackup extends Command {
|
||||
|
||||
/**
|
||||
* The console command name.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $name = 'snipeit:backup';
|
||||
|
||||
/**
|
||||
* The console command description.
|
||||
*
|
||||
* @var string
|
||||
*/
|
||||
protected $description = 'This commandcreates a database dump and zips up all of the uploaded files in the upload directories.';
|
||||
|
||||
/**
|
||||
* Create a new command instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct()
|
||||
{
|
||||
parent::__construct();
|
||||
}
|
||||
|
||||
/**
|
||||
* Execute the console command.
|
||||
*
|
||||
* @return mixed
|
||||
*/
|
||||
public function fire()
|
||||
{
|
||||
//
|
||||
$files['avatars'] = glob(public_path().'/uploads/avatars/*');
|
||||
$files['models'] = glob(public_path().'/uploads/models/*');
|
||||
$files['suppliers'] = glob(public_path().'/uploads/suppliers/*');
|
||||
$files['private_uploads'] = glob(app_path().'/private_uploads/*');
|
||||
$base_filename = date('Ymdgis');
|
||||
$zip_file = app_path().'/storage/dumps/'.$base_filename.'-backup.zip';
|
||||
$db_dump = Config::get('backup::path').$base_filename.'-db.sql';
|
||||
$this->call('db:backup', array('filename' => $db_dump));
|
||||
|
||||
Zipper::make($zip_file)
|
||||
->folder('avatars')->add($files['avatars'])
|
||||
->folder('models')->add($files['models'])
|
||||
->folder('suppliers')->add($files['suppliers'])
|
||||
->folder('private_uploads')->add($files['private_uploads'])
|
||||
->folder('database')->add($db_dump)->close();
|
||||
|
||||
$this->info('Backup file created at '.$zip_file);
|
||||
$this->info('Removing SQL dump at '.$db_dump);
|
||||
unlink($db_dump);
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
@@ -43,7 +43,7 @@ return array(
|
||||
*/
|
||||
|
||||
'cipher' => MCRYPT_RIJNDAEL_256,
|
||||
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Prevent Password changes
|
||||
@@ -103,8 +103,6 @@ return array(
|
||||
'Chumper\Datatable\DatatableServiceProvider',
|
||||
'Dinesh\Barcode\BarcodeServiceProvider',
|
||||
'Maknz\Slack\SlackServiceProvider',
|
||||
'Schickling\Backup\BackupServiceProvider',
|
||||
'Chumper\Zipper\ZipperServiceProvider',
|
||||
|
||||
),
|
||||
|
||||
@@ -179,7 +177,6 @@ return array(
|
||||
'DNS1D' => 'Dinesh\Barcode\Facades\DNS1DFacade',
|
||||
'DNS2D' => 'Dinesh\Barcode\Facades\DNS2DFacade',
|
||||
'Slack' => 'Maknz\Slack\Facades\Slack',
|
||||
'Zipper' => 'Chumper\Zipper\Zipper',
|
||||
|
||||
),
|
||||
|
||||
|
||||
@@ -134,7 +134,7 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'login_attribute' => 'username',
|
||||
'login_attribute' => 'email',
|
||||
|
||||
),
|
||||
|
||||
|
||||
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
return array(
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
| Trusted Proxies
|
||||
|--------------------------------------------------------------------------
|
||||
|
|
||||
| Set an array of trusted proxies, so Laravel knows to grab the client's
|
||||
| information via the X-Forwarded-* headers.
|
||||
|
|
||||
| To trust all proxies, use the value '*':
|
||||
|
|
||||
| 'proxies' => '*'
|
||||
|
|
||||
|
|
||||
| To trust only specific proxies (recommended), set an array of those
|
||||
| proxies' IP addresses:
|
||||
|
|
||||
| 'proxies' => array('192.168.1.1', '192.168.1.2')
|
||||
|
|
||||
|
|
||||
| Or use CIDR notation:
|
||||
|
|
||||
| 'proxies' => array('192.168.12.0/23')
|
||||
|
|
||||
*/
|
||||
|
||||
'proxies' => '*',
|
||||
|
||||
);
|
||||
@@ -1,15 +0,0 @@
|
||||
<?php
|
||||
return array(
|
||||
'path' => storage_path() . '/dumps/',
|
||||
|
||||
'mysql' => array(
|
||||
'dump_command_path' => '',
|
||||
'restore_command_path' => '',
|
||||
),
|
||||
|
||||
's3' => array(
|
||||
'path' => ''
|
||||
),
|
||||
|
||||
'compress' => false,
|
||||
);
|
||||
@@ -26,7 +26,7 @@ return array(
|
||||
|
|
||||
*/
|
||||
|
||||
'url' => 'https://production.yourserver.com',
|
||||
'url' => 'http://production.yourserver.com',
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v1.2.8-150',
|
||||
'hash_version' => 'v1.2.8-150-g84ffc1a',
|
||||
'app_version' => 'v1.2.8-26',
|
||||
'hash_version' => 'v1.2.8-26-gf5d4eb5',
|
||||
);
|
||||
@@ -27,7 +27,7 @@ class AuthController extends BaseController
|
||||
{
|
||||
// Declare the rules for the form validation
|
||||
$rules = array(
|
||||
'username' => 'required',
|
||||
'email' => 'required|email',
|
||||
'password' => 'required',
|
||||
);
|
||||
|
||||
@@ -42,7 +42,7 @@ class AuthController extends BaseController
|
||||
|
||||
try {
|
||||
// Try to log the user in
|
||||
Sentry::authenticate(Input::only('username', 'password'), Input::get('remember-me', 0));
|
||||
Sentry::authenticate(Input::only('email', 'password'), Input::get('remember-me', 0));
|
||||
|
||||
// Get the page we were before
|
||||
$redirect = Session::get('loginRedirect', 'account');
|
||||
@@ -53,19 +53,91 @@ class AuthController extends BaseController
|
||||
// Redirect to the users page
|
||||
return Redirect::to($redirect)->with('success', Lang::get('auth/message.signin.success'));
|
||||
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
|
||||
$this->messageBag->add('username', Lang::get('auth/message.account_not_found'));
|
||||
$this->messageBag->add('email', Lang::get('auth/message.account_not_found'));
|
||||
} catch (Cartalyst\Sentry\Users\UserNotActivatedException $e) {
|
||||
$this->messageBag->add('username', Lang::get('auth/message.account_not_activated'));
|
||||
$this->messageBag->add('email', Lang::get('auth/message.account_not_activated'));
|
||||
} catch (Cartalyst\Sentry\Throttling\UserSuspendedException $e) {
|
||||
$this->messageBag->add('username', Lang::get('auth/message.account_suspended'));
|
||||
$this->messageBag->add('email', Lang::get('auth/message.account_suspended'));
|
||||
} catch (Cartalyst\Sentry\Throttling\UserBannedException $e) {
|
||||
$this->messageBag->add('username', Lang::get('auth/message.account_banned'));
|
||||
$this->messageBag->add('email', Lang::get('auth/message.account_banned'));
|
||||
}
|
||||
|
||||
// Ooops.. something went wrong
|
||||
return Redirect::back()->withInput()->withErrors($this->messageBag);
|
||||
}
|
||||
|
||||
/**
|
||||
* Account sign up.
|
||||
*
|
||||
* @return View
|
||||
*/
|
||||
public function getSignup()
|
||||
{
|
||||
// Is the user logged in?
|
||||
if (Sentry::check()) {
|
||||
return Redirect::route('account');
|
||||
}
|
||||
|
||||
// Show the page
|
||||
return View::make('frontend.auth.signup');
|
||||
}
|
||||
|
||||
/**
|
||||
* Account sign up form processing.
|
||||
*
|
||||
* @return Redirect
|
||||
*/
|
||||
public function postSignup()
|
||||
{
|
||||
// Declare the rules for the form validation
|
||||
$rules = array(
|
||||
'first_name' => 'required|min:2',
|
||||
'last_name' => 'required|min:2',
|
||||
'email' => 'required|email|unique:users',
|
||||
'email_confirm' => 'required|email|same:email',
|
||||
'password' => 'required|between:10,32',
|
||||
'password_confirm' => 'required|same:password',
|
||||
);
|
||||
|
||||
// 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);
|
||||
}
|
||||
|
||||
try {
|
||||
// Register the user
|
||||
$user = Sentry::register(array(
|
||||
'first_name' => Input::get('first_name'),
|
||||
'last_name' => Input::get('last_name'),
|
||||
'email' => Input::get('email'),
|
||||
'password' => Input::get('password'),
|
||||
));
|
||||
|
||||
// Data to be used on the email view
|
||||
$data = array(
|
||||
'user' => $user,
|
||||
'activationUrl' => URL::route('activate', $user->getActivationCode()),
|
||||
);
|
||||
|
||||
// Send the activation code through email
|
||||
Mail::send('emails.register-activate', $data, function ($m) use ($user) {
|
||||
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
||||
$m->subject('Welcome ' . $user->first_name);
|
||||
});
|
||||
|
||||
// Redirect to the register page
|
||||
return Redirect::back()->with('success', Lang::get('auth/message.signup.success'));
|
||||
} catch (Cartalyst\Sentry\Users\UserExistsException $e) {
|
||||
$this->messageBag->add('email', Lang::get('auth/message.account_already_exists'));
|
||||
}
|
||||
|
||||
// Ooops.. something went wrong
|
||||
return Redirect::back()->withInput()->withErrors($this->messageBag);
|
||||
}
|
||||
|
||||
/**
|
||||
* User account activation page.
|
||||
@@ -120,7 +192,7 @@ class AuthController extends BaseController
|
||||
{
|
||||
// Declare the rules for the validator
|
||||
$rules = array(
|
||||
'username' => 'required',
|
||||
'email' => 'required|email',
|
||||
);
|
||||
|
||||
// Create a new validator instance from our dynamic rules
|
||||
@@ -134,22 +206,22 @@ class AuthController extends BaseController
|
||||
|
||||
try {
|
||||
// Get the user password recovery code
|
||||
$user = Sentry::getUserProvider()->findByLogin(Input::get('username'));
|
||||
$user = Sentry::getUserProvider()->findByLogin(Input::get('email'));
|
||||
|
||||
// Data to be used on the username view
|
||||
// Data to be used on the email view
|
||||
$data = array(
|
||||
'user' => $user,
|
||||
'forgotPasswordUrl' => URL::route('forgot-password-confirm', $user->getResetPasswordCode()),
|
||||
);
|
||||
|
||||
// Send the activation code through username
|
||||
Mail::send('usernames.forgot-password', $data, function ($m) use ($user) {
|
||||
$m->to($user->username, $user->first_name . ' ' . $user->last_name);
|
||||
// Send the activation code through email
|
||||
Mail::send('emails.forgot-password', $data, function ($m) use ($user) {
|
||||
$m->to($user->email, $user->first_name . ' ' . $user->last_name);
|
||||
$m->subject('Account Password Recovery');
|
||||
});
|
||||
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
|
||||
// Even though the username was not found, we will pretend
|
||||
// we have sent the password reset code through username,
|
||||
// Even though the email was not found, we will pretend
|
||||
// we have sent the password reset code through email,
|
||||
// this is a security measure against hackers.
|
||||
}
|
||||
|
||||
|
||||
@@ -274,20 +274,20 @@ class AccessoriesController extends AdminController
|
||||
$logaction->location_id = $user->location_id;
|
||||
$logaction->user_id = Sentry::getUser()->id;
|
||||
$logaction->note = e(Input::get('note'));
|
||||
|
||||
|
||||
$settings = Setting::getSettings();
|
||||
|
||||
|
||||
if ($settings->slack_endpoint) {
|
||||
|
||||
|
||||
|
||||
$slack_settings = [
|
||||
'username' => $settings->botname,
|
||||
'channel' => $settings->slack_channel,
|
||||
'link_names' => true
|
||||
];
|
||||
|
||||
|
||||
$client = new \Maknz\Slack\Client($settings->slack_endpoint,$slack_settings);
|
||||
|
||||
|
||||
try {
|
||||
$client->attach([
|
||||
'color' => 'good',
|
||||
@@ -301,13 +301,13 @@ class AccessoriesController extends AdminController
|
||||
'value' => e($logaction->note)
|
||||
],
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
]
|
||||
])->send('Accessory Checked Out');
|
||||
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -390,20 +390,20 @@ class AccessoriesController extends AdminController
|
||||
$logaction->asset_type = 'accessory';
|
||||
$logaction->user_id = $admin_user->id;
|
||||
$logaction->note = e(Input::get('note'));
|
||||
|
||||
|
||||
$settings = Setting::getSettings();
|
||||
|
||||
|
||||
if ($settings->slack_endpoint) {
|
||||
|
||||
|
||||
|
||||
|
||||
$slack_settings = [
|
||||
'username' => $settings->botname,
|
||||
'channel' => $settings->slack_channel,
|
||||
'link_names' => true
|
||||
];
|
||||
|
||||
|
||||
$client = new \Maknz\Slack\Client($settings->slack_endpoint,$slack_settings);
|
||||
|
||||
|
||||
try {
|
||||
$client->attach([
|
||||
'color' => 'good',
|
||||
@@ -416,17 +416,17 @@ class AccessoriesController extends AdminController
|
||||
'title' => 'Note:',
|
||||
'value' => e($logaction->note)
|
||||
],
|
||||
|
||||
|
||||
]
|
||||
])->send('Accessory Checked In');
|
||||
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$log = $logaction->logaction('checkin from');
|
||||
|
||||
if ($backto=='user') {
|
||||
|
||||
@@ -911,10 +911,10 @@ class AssetsController extends AdminController
|
||||
$assets = Input::get('edit_asset');
|
||||
|
||||
$supplier_list = array('' => '') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
|
||||
$statuslabel_list = array('' => '') + Statuslabel::lists('name', 'id');
|
||||
$location_list = array('' => '') + Location::lists('name', 'id');
|
||||
$statuslabel_list = array('' => '') + Statuslabel::lists('name', 'id');
|
||||
$location_list = array('' => '') + Location::lists('name', 'id');
|
||||
|
||||
return View::make('backend/hardware/bulk')->with('assets',$assets)->with('supplier_list',$supplier_list)->with('statuslabel_list',$statuslabel_list)->with('location_list',$location_list);
|
||||
return View::make('backend/hardware/bulk')->with('assets',$assets)->with('supplier_list',$supplier_list)->with('statuslabel_list',$statuslabel_list)->with('location_list',$location_list);
|
||||
|
||||
|
||||
}
|
||||
@@ -941,7 +941,7 @@ class AssetsController extends AdminController
|
||||
|
||||
$assets = Input::get('bulk_edit');
|
||||
|
||||
if ( (Input::has('purchase_date')) || (Input::has('purchase_cost')) || (Input::has('supplier_id')) || (Input::has('order_number')) || (Input::has('warranty_months')) || (Input::has('rtd_location_id')) || (Input::has('status_id')) ) {
|
||||
if ( (Input::has('purchase_date')) || (Input::has('rtd_location_id')) || (Input::has('status_id')) ) {
|
||||
|
||||
foreach ($assets as $key => $value) {
|
||||
|
||||
@@ -951,22 +951,6 @@ class AssetsController extends AdminController
|
||||
$update_array['purchase_date'] = e(Input::get('purchase_date'));
|
||||
}
|
||||
|
||||
if (Input::has('purchase_cost')) {
|
||||
$update_array['purchase_cost'] = e(Input::get('purchase_cost'));
|
||||
}
|
||||
|
||||
if (Input::has('supplier_id')) {
|
||||
$update_array['supplier_id'] = e(Input::get('supplier_id'));
|
||||
}
|
||||
|
||||
if (Input::has('order_number')) {
|
||||
$update_array['order_number'] = e(Input::get('order_number'));
|
||||
}
|
||||
|
||||
if (Input::has('warranty_months')) {
|
||||
$update_array['warranty_months'] = e(Input::get('warranty_months'));
|
||||
}
|
||||
|
||||
if (Input::has('rtd_location_id')) {
|
||||
$update_array['rtd_location_id'] = e(Input::get('rtd_location_id'));
|
||||
}
|
||||
@@ -1014,74 +998,74 @@ class AssetsController extends AdminController
|
||||
public function getDatatable($status = null)
|
||||
{
|
||||
|
||||
$assets = Asset::with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category')->Hardware()->select(array('id', 'name','model_id','assigned_to','asset_tag','serial','status_id','purchase_date','deleted_at','rtd_location_id'));
|
||||
$assets = Asset::with('model','assigneduser','assigneduser.userloc','assetstatus','defaultLoc','assetlog','model','model.category')->Hardware()->select(array('id', 'name','model_id','assigned_to','asset_tag','serial','status_id','purchase_date','deleted_at','rtd_location_id','notes','order_number'));
|
||||
|
||||
|
||||
switch ($status) {
|
||||
case 'Deleted':
|
||||
$assets->withTrashed()->Deleted();
|
||||
break;
|
||||
case 'Pending':
|
||||
$assets->Pending();
|
||||
break;
|
||||
case 'RTD':
|
||||
$assets->RTD();
|
||||
break;
|
||||
case 'Undeployable':
|
||||
$assets->Undeployable();
|
||||
break;
|
||||
case 'Archived':
|
||||
$assets->Archived();
|
||||
break;
|
||||
case 'Requestable':
|
||||
$assets->RequestableAssets();
|
||||
break;
|
||||
case 'Deployed':
|
||||
$assets->Deployed();
|
||||
break;
|
||||
|
||||
}
|
||||
switch ($status) {
|
||||
case 'Pending':
|
||||
$assets->Pending();
|
||||
break;
|
||||
case 'RTD':
|
||||
$assets->RTD();
|
||||
break;
|
||||
case 'Undeployable':
|
||||
$assets->Undeployable();
|
||||
break;
|
||||
case 'Archived':
|
||||
$assets->Archived();
|
||||
break;
|
||||
case 'Requestable':
|
||||
$assets->RequestableAssets();
|
||||
break;
|
||||
case 'Deployed':
|
||||
$assets->Deployed();
|
||||
break;
|
||||
case 'Deleted':
|
||||
$assets->withTrashed()->Deleted();
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
$assets = $assets->orderBy('asset_tag', 'ASC')->get();
|
||||
$assets = $assets->orderBy('asset_tag', 'ASC')->get();
|
||||
|
||||
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($assets)
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($assets)
|
||||
{
|
||||
if ($assets->deleted_at=='') {
|
||||
return '<a href="'.route('update/hardware', $assets->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', $assets->id).'" data-content="'.Lang::get('admin/hardware/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($assets->asset_tag).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
|
||||
} elseif ($assets->model->deleted_at=='') {
|
||||
return '<a href="'.route('restore/hardware', $assets->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>';
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$inout = new \Chumper\Datatable\Columns\FunctionColumn('inout', function ($assets)
|
||||
{
|
||||
if ($assets->deleted_at=='') {
|
||||
return '<a href="'.route('update/hardware', $assets->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', $assets->id).'" data-content="'.Lang::get('admin/hardware/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($assets->asset_tag).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
|
||||
} elseif ($assets->model->deleted_at=='') {
|
||||
return '<a href="'.route('restore/hardware', $assets->id).'" class="btn btn-warning btn-sm"><i class="fa fa-recycle icon-white"></i></a>';
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
$inout = new \Chumper\Datatable\Columns\FunctionColumn('inout', function ($assets)
|
||||
{
|
||||
if (($assets->assigned_to !='') && ($assets->assigned_to > 0)) {
|
||||
return '<a href="'.route('checkin/hardware', $assets->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
|
||||
} else {
|
||||
return '<a href="'.route('checkout/hardware', $assets->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
|
||||
}
|
||||
if ($assets->assetstatus->deployable != 0) {
|
||||
if (($assets->assigned_to !='') && ($assets->assigned_to > 0)) {
|
||||
return '<a href="'.route('checkin/hardware', $assets->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
|
||||
} else {
|
||||
return '<a href="'.route('checkout/hardware', $assets->id).'" class="btn btn-info btn-sm">'.Lang::get('general.checkout').'</a>';
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
return Datatable::collection($assets)
|
||||
->addColumn('',function($assets)
|
||||
{
|
||||
return '<input type="checkbox" name="edit_asset['.$assets->id.']" class="one_required">';
|
||||
})
|
||||
->addColumn('name',function($assets)
|
||||
{
|
||||
return '<a title="'.$assets->name.'" href="hardware/'.$assets->id.'/view">'.$assets->name.'</a>';
|
||||
})
|
||||
->addColumn('asset_tag',function($assets)
|
||||
{
|
||||
return '<a title="'.$assets->asset_tag.'" href="hardware/'.$assets->id.'/view">'.$assets->asset_tag.'</a>';
|
||||
})
|
||||
|
||||
return Datatable::collection($assets)
|
||||
->addColumn('',function($assets)
|
||||
{
|
||||
return '<input type="checkbox" name="edit_asset['.$assets->id.']" class="one_required">';
|
||||
})
|
||||
->addColumn('name',function($assets)
|
||||
{
|
||||
return '<a title="'.$assets->name.'" href="hardware/'.$assets->id.'/view">'.$assets->name.'</a>';
|
||||
})
|
||||
->addColumn('asset_tag',function($assets)
|
||||
{
|
||||
return '<a title="'.$assets->asset_tag.'" href="hardware/'.$assets->id.'/view">'.$assets->asset_tag.'</a>';
|
||||
})
|
||||
|
||||
->showColumns('serial')
|
||||
->showColumns('serial')
|
||||
|
||||
->addColumn('model',function($assets)
|
||||
{
|
||||
@@ -1092,16 +1076,13 @@ class AssetsController extends AdminController
|
||||
}
|
||||
})
|
||||
|
||||
->addColumn('status',function($assets)
|
||||
{
|
||||
if ($assets->assigned_to!='') {
|
||||
return link_to('../admin/users/'.$assets->assigned_to.'/view', $assets->assigneduser->fullName());
|
||||
} else {
|
||||
if ($assets->assetstatus) {
|
||||
return $assets->assetstatus->name;
|
||||
}
|
||||
|
||||
}
|
||||
->addColumn('status',function($assets)
|
||||
{
|
||||
if ($assets->assigned_to!='') {
|
||||
return link_to('../admin/users/'.$assets->assigned_to.'/view', $assets->assigneduser->fullName());
|
||||
} else {
|
||||
return $assets->assetstatus->name;
|
||||
}
|
||||
|
||||
})
|
||||
->addColumn('location',function($assets)
|
||||
@@ -1120,26 +1101,35 @@ class AssetsController extends AdminController
|
||||
return 'No category';
|
||||
}
|
||||
|
||||
})
|
||||
})
|
||||
|
||||
->addColumn('eol',function($assets)
|
||||
{
|
||||
return $assets->eol_date();
|
||||
})
|
||||
->addColumn('eol',function($assets)
|
||||
{
|
||||
return $assets->eol_date();
|
||||
})
|
||||
|
||||
->addColumn('notes',function($assets)
|
||||
{
|
||||
return $assets->notes;
|
||||
})
|
||||
|
||||
->addColumn('checkout_date',function($assets)
|
||||
{
|
||||
if (($assets->assigned_to!='') && ($assets->assetlog->first())) {
|
||||
return $assets->assetlog->first()->created_at->format('Y-m-d');
|
||||
}
|
||||
->addColumn('order_number',function($assets)
|
||||
{
|
||||
return $assets->order_number;
|
||||
})
|
||||
|
||||
})
|
||||
->addColumn($inout)
|
||||
->addColumn($actions)
|
||||
->searchColumns('name', 'asset_tag', 'serial', 'model', 'status','location','eol','checkout_date', 'inout','category')
|
||||
->orderColumns('name', 'asset_tag', 'serial', 'model', 'status','location','eol','checkout_date', 'inout')
|
||||
->make();
|
||||
->addColumn('checkout_date',function($assets)
|
||||
{
|
||||
if (($assets->assigned_to!='') && ($assets->assetlog->first())) {
|
||||
return $assets->assetlog->first()->created_at->format('Y-m-d');
|
||||
}
|
||||
|
||||
})
|
||||
->addColumn($inout)
|
||||
->addColumn($actions)
|
||||
->searchColumns('name', 'asset_tag', 'serial', 'model', 'status','location','eol','checkout_date', 'inout','category','notes','order_number')
|
||||
->orderColumns('name', 'asset_tag', 'serial', 'model', 'status','location','eol','checkout_date', 'inout','notes','order_number')
|
||||
->make();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,7 +36,7 @@ class CategoriesController extends AdminController
|
||||
public function getCreate()
|
||||
{
|
||||
// Show the page
|
||||
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory', 'consumable' => 'Consumable');
|
||||
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory');
|
||||
return View::make('backend/categories/edit')->with('category',new Category)
|
||||
->with('category_types',$category_types);
|
||||
}
|
||||
@@ -66,8 +66,8 @@ class CategoriesController extends AdminController
|
||||
$category->name = e(Input::get('name'));
|
||||
$category->category_type = e(Input::get('category_type'));
|
||||
$category->eula_text = e(Input::get('eula_text'));
|
||||
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
|
||||
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
|
||||
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
|
||||
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
|
||||
$category->user_id = Sentry::getId();
|
||||
|
||||
// Was the asset created?
|
||||
@@ -101,8 +101,8 @@ class CategoriesController extends AdminController
|
||||
//$category_options = array('' => 'Top Level') + Category::lists('name', 'id');
|
||||
|
||||
$category_options = array('' => 'Top Level') + DB::table('categories')->where('id', '!=', $categoryId)->lists('name', 'id');
|
||||
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory', 'consumable' => 'Consumable');
|
||||
|
||||
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory');
|
||||
|
||||
return View::make('backend/categories/edit', compact('category'))
|
||||
->with('category_options',$category_options)
|
||||
->with('category_types',$category_types);
|
||||
@@ -143,8 +143,8 @@ class CategoriesController extends AdminController
|
||||
$category->name = e(Input::get('name'));
|
||||
$category->category_type = e(Input::get('category_type'));
|
||||
$category->eula_text = e(Input::get('eula_text'));
|
||||
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
|
||||
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
|
||||
$category->use_default_eula = e(Input::get('use_default_eula', '0'));
|
||||
$category->require_acceptance = e(Input::get('require_acceptance', '0'));
|
||||
|
||||
// Was the asset created?
|
||||
if($category->save()) {
|
||||
@@ -241,13 +241,13 @@ class CategoriesController extends AdminController
|
||||
->orderColumns('name','category_type','count','acceptance','eula','actions')
|
||||
->make();
|
||||
}
|
||||
|
||||
|
||||
public function getDataView($categoryID) {
|
||||
$category = Category::find($categoryID);
|
||||
$categoryassets = $category->assets;
|
||||
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($categoryassets)
|
||||
{
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions', function ($categoryassets)
|
||||
{
|
||||
if (($categoryassets->assigned_to !='') && ($categoryassets->assigned_to > 0)) {
|
||||
return '<a href="'.route('checkin/hardware', $categoryassets->id).'" class="btn btn-primary btn-sm">'.Lang::get('general.checkin').'</a>';
|
||||
} else {
|
||||
|
||||
@@ -1,390 +0,0 @@
|
||||
<?php namespace Controllers\Admin;
|
||||
|
||||
use AdminController;
|
||||
use Input;
|
||||
use Lang;
|
||||
use Redirect;
|
||||
use Setting;
|
||||
use DB;
|
||||
use Sentry;
|
||||
use Consumable;
|
||||
use Str;
|
||||
use Validator;
|
||||
use View;
|
||||
use User;
|
||||
use Actionlog;
|
||||
use Mail;
|
||||
use Datatable;
|
||||
use Slack;
|
||||
use Config;
|
||||
|
||||
class ConsumablesController extends AdminController
|
||||
{
|
||||
/**
|
||||
* Show a list of all the consumables.
|
||||
*
|
||||
* @return View
|
||||
*/
|
||||
|
||||
public function getIndex()
|
||||
{
|
||||
return View::make('backend/consumables/index');
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Consumable create.
|
||||
*
|
||||
* @return View
|
||||
*/
|
||||
public function getCreate()
|
||||
{
|
||||
// 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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Consumable create form processing.
|
||||
*
|
||||
* @return Redirect
|
||||
*/
|
||||
public function postCreate()
|
||||
{
|
||||
|
||||
// create a new model instance
|
||||
$consumable = new Consumable();
|
||||
|
||||
$validator = Validator::make(Input::all(), $consumable->rules);
|
||||
|
||||
if ($validator->fails())
|
||||
{
|
||||
// The given data did not pass validation
|
||||
return Redirect::back()->withInput()->withErrors($validator->messages());
|
||||
}
|
||||
else{
|
||||
|
||||
// Update the consumable data
|
||||
$consumable->name = e(Input::get('name'));
|
||||
$consumable->category_id = e(Input::get('category_id'));
|
||||
$consumable->qty = e(Input::get('qty'));
|
||||
$consumable->user_id = Sentry::getId();
|
||||
|
||||
// Was the consumable created?
|
||||
if($consumable->save()) {
|
||||
// Redirect to the new consumable page
|
||||
return Redirect::to("admin/consumables")->with('success', Lang::get('admin/consumables/message.create.success'));
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to the consumable create page
|
||||
return Redirect::to('admin/consumables/create')->with('error', Lang::get('admin/consumables/message.create.error'));
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Consumable update.
|
||||
*
|
||||
* @param int $consumableId
|
||||
* @return View
|
||||
*/
|
||||
public function getEdit($consumableId = null)
|
||||
{
|
||||
// Check if the consumable exists
|
||||
if (is_null($consumable = Consumable::find($consumableId))) {
|
||||
// Redirect to the blogs management page
|
||||
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.does_not_exist'));
|
||||
}
|
||||
|
||||
$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);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Consumable update form processing page.
|
||||
*
|
||||
* @param int $consumableId
|
||||
* @return Redirect
|
||||
*/
|
||||
public function postEdit($consumableId = null)
|
||||
{
|
||||
// Check if the blog post exists
|
||||
if (is_null($consumable = Consumable::find($consumableId))) {
|
||||
// Redirect to the blogs management page
|
||||
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.does_not_exist'));
|
||||
}
|
||||
|
||||
|
||||
// get the POST data
|
||||
$new = Input::all();
|
||||
|
||||
// attempt validation
|
||||
$validator = Validator::make(Input::all(), $consumable->validationRules($consumableId));
|
||||
|
||||
|
||||
if ($validator->fails())
|
||||
{
|
||||
// The given data did not pass validation
|
||||
return Redirect::back()->withInput()->withErrors($validator->messages());
|
||||
}
|
||||
// attempt validation
|
||||
else {
|
||||
|
||||
// Update the consumable data
|
||||
$consumable->name = e(Input::get('name'));
|
||||
$consumable->category_id = e(Input::get('category_id'));
|
||||
$consumable->qty = e(Input::get('qty'));
|
||||
|
||||
// Was the consumable created?
|
||||
if($consumable->save()) {
|
||||
// Redirect to the new consumable page
|
||||
return Redirect::to("admin/consumables")->with('success', Lang::get('admin/consumables/message.update.success'));
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to the consumable management page
|
||||
return Redirect::to("admin/consumables/$consumableID/edit")->with('error', Lang::get('admin/consumables/message.update.error'));
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Delete the given consumable.
|
||||
*
|
||||
* @param int $consumableId
|
||||
* @return Redirect
|
||||
*/
|
||||
public function getDelete($consumableId)
|
||||
{
|
||||
// Check if the blog post exists
|
||||
if (is_null($consumable = Consumable::find($consumableId))) {
|
||||
// Redirect to the blogs management page
|
||||
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.not_found'));
|
||||
}
|
||||
|
||||
|
||||
if ($consumable->hasUsers() > 0) {
|
||||
return Redirect::to('admin/consumables')->with('error', Lang::get('admin/consumables/message.assoc_users', array('count'=> $consumable->hasUsers())));
|
||||
} else {
|
||||
$consumable->delete();
|
||||
|
||||
// Redirect to the locations management page
|
||||
return Redirect::to('admin/consumables')->with('success', Lang::get('admin/consumables/message.delete.success'));
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Get the consumable information to present to the consumable view page
|
||||
*
|
||||
* @param int $consumableId
|
||||
* @return View
|
||||
**/
|
||||
public function getView($consumableID = null)
|
||||
{
|
||||
$consumable = Consumable::find($consumableID);
|
||||
|
||||
if (isset($consumable->id)) {
|
||||
return View::make('backend/consumables/view', compact('consumable'));
|
||||
} else {
|
||||
// Prepare the error message
|
||||
$error = Lang::get('admin/consumables/message.does_not_exist', compact('id'));
|
||||
|
||||
// Redirect to the user management page
|
||||
return Redirect::route('consumables')->with('error', $error);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check out the consumable to a person
|
||||
**/
|
||||
public function getCheckout($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'));
|
||||
}
|
||||
|
||||
// Get the dropdown of users and then pass it to the checkout view
|
||||
$users_list = array('' => 'Select a User') + DB::table('users')->select(DB::raw('concat(last_name,", ",first_name) as full_name, id'))->whereNull('deleted_at')->orderBy('last_name', 'asc')->orderBy('first_name', 'asc')->lists('full_name', 'id');
|
||||
|
||||
return View::make('backend/consumables/checkout', compact('consumable'))->with('users_list',$users_list);
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Check out the consumable to a person
|
||||
**/
|
||||
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'));
|
||||
}
|
||||
|
||||
$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'
|
||||
);
|
||||
|
||||
// Create a new validator instance from our validation rules
|
||||
$validator = Validator::make(Input::all(), $rules);
|
||||
|
||||
// If validation fails, we'll exit the operation now.
|
||||
if ($validator->fails()) {
|
||||
// Ooops.. something went wrong
|
||||
return Redirect::back()->withInput()->withErrors($validator);
|
||||
}
|
||||
|
||||
|
||||
// Check if the user exists
|
||||
if (is_null($user = User::find($assigned_to))) {
|
||||
// Redirect to the 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'));
|
||||
|
||||
$consumable->users()->attach($consumable->id, array(
|
||||
'consumable_id' => $consumable->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'));
|
||||
|
||||
$settings = Setting::getSettings();
|
||||
|
||||
if ($settings->slack_endpoint) {
|
||||
|
||||
|
||||
$slack_settings = [
|
||||
'username' => $settings->botname,
|
||||
'channel' => $settings->slack_channel,
|
||||
'link_names' => true
|
||||
];
|
||||
|
||||
$client = new \Maknz\Slack\Client($settings->slack_endpoint,$slack_settings);
|
||||
|
||||
try {
|
||||
$client->attach([
|
||||
'color' => 'good',
|
||||
'fields' => [
|
||||
[
|
||||
'title' => 'Checked Out:',
|
||||
'value' => strtoupper($logaction->asset_type).' <'.Config::get('app.url').'/admin/consumables/'.$consumable->id.'/view'.'|'.$consumable->name.'> checked out to <'.Config::get('app.url').'/admin/users/'.$user->id.'/view|'.$user->fullName().'> by <'.Config::get('app.url').'/admin/users/'.$admin_user->id.'/view'.'|'.$admin_user->fullName().'>.'
|
||||
],
|
||||
[
|
||||
'title' => 'Note:',
|
||||
'value' => e($logaction->note)
|
||||
],
|
||||
|
||||
|
||||
|
||||
]
|
||||
])->send('Consumable Checked Out');
|
||||
|
||||
} catch (Exception $e) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
$log = $logaction->logaction('checkout');
|
||||
|
||||
$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['require_acceptance'] = $consumable->requireAcceptance();
|
||||
|
||||
|
||||
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');
|
||||
});
|
||||
}
|
||||
|
||||
// Redirect to the new consumable page
|
||||
return Redirect::to("admin/consumables")->with('success', Lang::get('admin/consumables/message.checkout.success'));
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
public function getDatatable()
|
||||
{
|
||||
$consumables = Consumable::select(array('id','name','qty'))
|
||||
->whereNull('deleted_at')
|
||||
->orderBy('created_at', 'DESC');
|
||||
|
||||
$consumables = $consumables->get();
|
||||
|
||||
$actions = new \Chumper\Datatable\Columns\FunctionColumn('actions',function($consumables)
|
||||
{
|
||||
return '<a href="'.route('checkout/consumable', $consumables->id).'" style="margin-right:5px;" class="btn btn-info btn-sm" '.(($consumables->numRemaining() > 0 ) ? '' : ' disabled').'>'.Lang::get('general.checkout').'</a><a href="'.route('update/consumable', $consumables->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', $consumables->id).'" data-content="'.Lang::get('admin/consumables/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($consumables->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a>';
|
||||
});
|
||||
|
||||
return Datatable::collection($consumables)
|
||||
->addColumn('name',function($consumables)
|
||||
{
|
||||
return link_to('admin/consumables/'.$consumables->id.'/view', $consumables->name);
|
||||
})
|
||||
->addColumn('qty',function($consumables)
|
||||
{
|
||||
return $consumables->qty;
|
||||
})
|
||||
->addColumn('numRemaining',function($consumables)
|
||||
{
|
||||
return $consumables->numRemaining();
|
||||
})
|
||||
->addColumn($actions)
|
||||
->searchColumns('name','qty','numRemaining','actions')
|
||||
->orderColumns('name','qty','numRemaining','actions')
|
||||
->make();
|
||||
}
|
||||
|
||||
public function getDataView($consumableID)
|
||||
{
|
||||
$consumable = Consumable::find($consumableID);
|
||||
$consumable_users = $consumable->users;
|
||||
|
||||
|
||||
return Datatable::collection($consumable_users)
|
||||
->addColumn('name',function($consumable_users)
|
||||
{
|
||||
return link_to('/admin/users/'.$consumable_users->id.'/view', $consumable_users->fullName());
|
||||
})
|
||||
->make();
|
||||
}
|
||||
|
||||
}
|
||||
@@ -15,56 +15,56 @@ class DashboardController extends AdminController
|
||||
public function getIndex()
|
||||
{
|
||||
// Show the page
|
||||
|
||||
$recent_activity = Actionlog::orderBy('created_at','DESC')->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();
|
||||
|
||||
|
||||
$asset_stats['rtd']['total'] = Asset::Hardware()->RTD()->count();
|
||||
|
||||
|
||||
if ($asset_stats['rtd']['total'] > 0) {
|
||||
$asset_stats['rtd']['percent'] = round(($asset_stats['rtd']['total']/$asset_stats['total']) * 100);
|
||||
} else {
|
||||
$asset_stats['rtd']['percent'] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$asset_stats['pending']['total'] = Asset::Hardware()->Pending()->count();
|
||||
|
||||
|
||||
if ($asset_stats['pending']['total'] > 0) {
|
||||
$asset_stats['pending']['percent'] = round(($asset_stats['pending']['total']/$asset_stats['total']) * 100);
|
||||
} else {
|
||||
$asset_stats['pending']['percent'] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$asset_stats['deployed']['total'] = Asset::Hardware()->Deployed()->count();
|
||||
|
||||
|
||||
if ($asset_stats['deployed']['total'] > 0) {
|
||||
$asset_stats['deployed']['percent'] = round(($asset_stats['deployed']['total']/$asset_stats['total']) * 100);
|
||||
} else {
|
||||
$asset_stats['deployed']['percent'] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$asset_stats['undeployable']['total'] = Asset::Hardware()->Undeployable()->count();
|
||||
|
||||
|
||||
if ($asset_stats['undeployable']['total'] > 0) {
|
||||
$asset_stats['undeployable']['percent'] = round(($asset_stats['undeployable']['total']/$asset_stats['total']) * 100);
|
||||
} else {
|
||||
$asset_stats['undeployable']['percent'] = 0;
|
||||
}
|
||||
|
||||
|
||||
$asset_stats['archived']['total'] = Asset::Hardware()->Archived()->count();
|
||||
|
||||
|
||||
if ($asset_stats['archived']['total'] > 0) {
|
||||
$asset_stats['archived']['percent'] = round(($asset_stats['archived']['total']/$asset_stats['total']) * 100);
|
||||
} else {
|
||||
$asset_stats['archived']['percent'] = 0;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
return View::make('backend/dashboard')->with('asset_stats',$asset_stats)->with('recent_activity',$recent_activity);
|
||||
}
|
||||
|
||||
|
||||
@@ -23,7 +23,7 @@ class LocationsController extends AdminController
|
||||
public function getIndex()
|
||||
{
|
||||
// Grab all the locations
|
||||
$locations = Location::orderBy('created_at', 'DESC')->with('parent','assets','assignedassets')->get();
|
||||
$locations = Location::orderBy('created_at', 'DESC')->get();
|
||||
|
||||
// Show the page
|
||||
return View::make('backend/locations/index', compact('locations'));
|
||||
@@ -37,15 +37,9 @@ class LocationsController extends AdminController
|
||||
*/
|
||||
public function getCreate()
|
||||
{
|
||||
$locations = Location::orderBy('name','ASC')->get();
|
||||
|
||||
$location_options_array = Location::getLocationHierarchy($locations);
|
||||
$location_options = Location::flattenLocationsArray($location_options_array);
|
||||
$location_options = array('' => 'Top Level') + $location_options;
|
||||
|
||||
return View::make('backend/locations/edit')
|
||||
->with('location_options',$location_options)
|
||||
->with('location',new Location);
|
||||
// Show the page
|
||||
$location_options = array('0' => 'Top Level') + Location::lists('name', 'id');
|
||||
return View::make('backend/locations/edit')->with('location_options',$location_options)->with('location',new Location);
|
||||
}
|
||||
|
||||
|
||||
@@ -68,18 +62,12 @@ class LocationsController extends AdminController
|
||||
|
||||
// Save the location data
|
||||
$location->name = e(Input::get('name'));
|
||||
if (Input::get('parent_id')=='') {
|
||||
$location->parent_id = null;
|
||||
} else {
|
||||
$location->parent_id = e(Input::get('parent_id'));
|
||||
}
|
||||
$location->currency = e(Input::get('currency'));
|
||||
$location->address = e(Input::get('address'));
|
||||
$location->address2 = e(Input::get('address2'));
|
||||
$location->city = e(Input::get('city'));
|
||||
$location->state = e(Input::get('state'));
|
||||
$location->country = e(Input::get('country'));
|
||||
$location->zip = e(Input::get('zip'));
|
||||
$location->zip = e(Input::get('zip'));
|
||||
$location->user_id = Sentry::getId();
|
||||
|
||||
// Was the asset created?
|
||||
@@ -109,15 +97,14 @@ class LocationsController extends AdminController
|
||||
{
|
||||
// Check if the location exists
|
||||
if (is_null($location = Location::find($locationId))) {
|
||||
// Redirect to the blogs management page
|
||||
return Redirect::to('admin/settings/locations')->with('error', Lang::get('admin/locations/message.does_not_exist'));
|
||||
}
|
||||
|
||||
// Show the page
|
||||
$locations = Location::orderBy('name','ASC')->get();
|
||||
$location_options_array = Location::getLocationHierarchy($locations);
|
||||
$location_options = Location::flattenLocationsArray($location_options_array);
|
||||
$location_options = array('' => 'Top Level') + $location_options;
|
||||
//$location_options = array('' => 'Top Level') + Location::lists('name', 'id');
|
||||
|
||||
$location_options = array('' => 'Top Level') + DB::table('locations')->where('id', '!=', $locationId)->lists('name', 'id');
|
||||
return View::make('backend/locations/edit', compact('location'))->with('location_options',$location_options);
|
||||
}
|
||||
|
||||
@@ -141,33 +128,27 @@ class LocationsController extends AdminController
|
||||
|
||||
if ($validator->fails())
|
||||
{
|
||||
// The given data did not pass validation
|
||||
// The given data did not pass validation
|
||||
return Redirect::back()->withInput()->withErrors($validator->messages());
|
||||
}
|
||||
// attempt validation
|
||||
else {
|
||||
|
||||
// Update the location data
|
||||
$location->name = e(Input::get('name'));
|
||||
if (Input::get('parent_id')=='') {
|
||||
$location->parent_id = null;
|
||||
} else {
|
||||
$location->parent_id = e(Input::get('parent_id',''));
|
||||
}
|
||||
$location->currency = e(Input::get('currency'));
|
||||
$location->name = e(Input::get('name'));
|
||||
$location->address = e(Input::get('address'));
|
||||
$location->address2 = e(Input::get('address2'));
|
||||
$location->city = e(Input::get('city'));
|
||||
$location->state = e(Input::get('state'));
|
||||
$location->country = e(Input::get('country'));
|
||||
$location->zip = e(Input::get('zip'));
|
||||
$location->country = e(Input::get('country'));
|
||||
$location->zip = e(Input::get('zip'));
|
||||
|
||||
// Was the asset created?
|
||||
if($location->save()) {
|
||||
// Redirect to the saved location page
|
||||
return Redirect::to("admin/settings/locations/")->with('success', Lang::get('admin/locations/message.update.success'));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Redirect to the location management page
|
||||
return Redirect::to("admin/settings/locations/$locationId/edit")->with('error', Lang::get('admin/locations/message.update.error'));
|
||||
@@ -189,12 +170,15 @@ class LocationsController extends AdminController
|
||||
}
|
||||
|
||||
|
||||
if ($location->has_users->count() > 0) {
|
||||
return Redirect::to('admin/settings/locations')->with('error', Lang::get('admin/locations/message.assoc_users'));
|
||||
} elseif ($location->childLocations->count() > 0) {
|
||||
if ($location->has_users() > 0) {
|
||||
|
||||
// Redirect to the asset management page
|
||||
return Redirect::to('admin/settings/locations')->with('error', Lang::get('admin/locations/message.assoc_users'));
|
||||
} else {
|
||||
|
||||
$location->delete();
|
||||
|
||||
// Redirect to the locations management page
|
||||
return Redirect::to('admin/settings/locations')->with('success', Lang::get('admin/locations/message.delete.success'));
|
||||
}
|
||||
|
||||
|
||||
@@ -57,19 +57,14 @@ class ModelsController extends AdminController
|
||||
public function postCreate()
|
||||
{
|
||||
|
||||
// get the POST data
|
||||
$new = Input::all();
|
||||
|
||||
// Create a new manufacturer
|
||||
$model = new Model;
|
||||
|
||||
$validator = Validator::make(Input::all(), $model->validationRules());
|
||||
|
||||
// attempt validation
|
||||
if ($validator->fails())
|
||||
{
|
||||
// The given data did not pass validation
|
||||
return Redirect::back()->withInput()->withErrors($validator->messages());
|
||||
}
|
||||
// attempt validation
|
||||
else {
|
||||
if ($model->validate($new)) {
|
||||
|
||||
if ( e(Input::get('depreciation_id')) == '') {
|
||||
$model->depreciation_id = 0;
|
||||
@@ -108,6 +103,10 @@ class ModelsController extends AdminController
|
||||
// Redirect to the new model page
|
||||
return Redirect::to("hardware/models")->with('success', Lang::get('admin/models/message.create.success'));
|
||||
}
|
||||
} else {
|
||||
// failure
|
||||
$errors = $model->errors();
|
||||
return Redirect::back()->withInput()->withErrors($errors);
|
||||
}
|
||||
|
||||
// Redirect to the model create page
|
||||
|
||||
@@ -11,9 +11,6 @@ use Location;
|
||||
use Redirect;
|
||||
use Response;
|
||||
use Actionlog;
|
||||
use Setting;
|
||||
use League\Csv\Writer;
|
||||
use League\Csv\Reader;
|
||||
|
||||
class ReportsController extends AdminController
|
||||
{
|
||||
@@ -150,9 +147,6 @@ class ReportsController extends AdminController
|
||||
// Grab all the assets
|
||||
$assets = Asset::with('model','assigneduser','assetstatus','defaultLoc','assetlog')->orderBy('created_at', 'DESC')->get();
|
||||
|
||||
$csv = \League\Csv\Writer::createFromFileObject(new \SplTempFileObject());
|
||||
$csv->setOutputBOM(Reader::BOM_UTF16_BE);
|
||||
|
||||
$rows = array();
|
||||
|
||||
// Create the header row
|
||||
@@ -167,9 +161,8 @@ class ReportsController extends AdminController
|
||||
Lang::get('admin/hardware/table.book_value'),
|
||||
Lang::get('admin/hardware/table.diff')
|
||||
);
|
||||
|
||||
//we insert the CSV header
|
||||
$csv->insertOne($header);
|
||||
$header = array_map('trim', $header);
|
||||
$rows[] = implode($header, ',');
|
||||
|
||||
// Create a row per asset
|
||||
foreach ($assets as $asset) {
|
||||
@@ -189,7 +182,7 @@ class ReportsController extends AdminController
|
||||
if (($asset->assigned_to > 0) && ($asset->assigneduser->location_id > 0)) {
|
||||
$location = Location::find($asset->assigneduser->location_id);
|
||||
if ($location->city) {
|
||||
$row[] = $location->city . ', ' . $location->state;
|
||||
$row[] = '"'.$location->city . ', ' . $location->state.'"';
|
||||
} elseif ($location->name) {
|
||||
$row[] = $location->name;
|
||||
} else {
|
||||
@@ -199,24 +192,25 @@ class ReportsController extends AdminController
|
||||
$row[] = ''; // Empty string if location is not set
|
||||
}
|
||||
|
||||
|
||||
|
||||
if ($asset->assetloc) {
|
||||
$currency = $asset->assetloc->currency;
|
||||
} else {
|
||||
$currency = Setting::first()->default_currency;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
$row[] = $asset->purchase_date;
|
||||
$row[] = $currency.number_format($asset->purchase_cost);
|
||||
$row[] = $currency.number_format($asset->getDepreciatedValue());
|
||||
$row[] = $currency.number_format(($asset->purchase_cost - $asset->getDepreciatedValue()));
|
||||
$csv->insertOne($row);
|
||||
$row[] = '"'.Lang::get('general.currency').number_format($asset->purchase_cost).'"';
|
||||
$row[] = '"'.Lang::get('general.currency').number_format($asset->getDepreciatedValue()).'"';
|
||||
$row[] = '"-'.Lang::get('general.currency').number_format(($asset->purchase_cost - $asset->getDepreciatedValue())).'"';
|
||||
$rows[] = implode($row, ',');
|
||||
}
|
||||
|
||||
$csv->output('depreciation-report-'.date('Y-m-d').'.csv');
|
||||
die;
|
||||
// spit out a csv
|
||||
$csv = implode($rows, "\n");
|
||||
|
||||
$response = Response::make($csv, 200);
|
||||
$response->header('Content-Type', 'text/csv');
|
||||
$response->header('Content-disposition', 'attachment;filename=report.csv');
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -237,8 +231,8 @@ class ReportsController extends AdminController
|
||||
->get();
|
||||
return View::make('backend/reports/activity', compact('log_actions'));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Show Report for Licenses
|
||||
*
|
||||
|
||||
@@ -12,7 +12,6 @@ use Validator;
|
||||
use View;
|
||||
use Image;
|
||||
use Config;
|
||||
use Response;
|
||||
|
||||
class SettingsController extends AdminController
|
||||
{
|
||||
@@ -72,7 +71,6 @@ class SettingsController extends AdminController
|
||||
"logo" => 'mimes:jpeg,bmp,png,gif',
|
||||
"alert_email" => 'email',
|
||||
"slack_endpoint" => 'url',
|
||||
"default_currency" => 'required',
|
||||
"slack_channel" => 'regex:/(?<!\w)#\w+/',
|
||||
"slack_botname" => 'alpha_dash',
|
||||
);
|
||||
@@ -119,7 +117,6 @@ class SettingsController extends AdminController
|
||||
$setting->qr_code = e(Input::get('qr_code', '0'));
|
||||
$setting->barcode_type = e(Input::get('barcode_type'));
|
||||
$setting->load_remote = e(Input::get('load_remote', '0'));
|
||||
$setting->default_currency = e(Input::get('default_currency', '$'));
|
||||
$setting->qr_text = e(Input::get('qr_text'));
|
||||
$setting->auto_increment_prefix = e(Input::get('auto_increment_prefix'));
|
||||
$setting->auto_increment_assets = e(Input::get('auto_increment_assets', '0'));
|
||||
@@ -144,63 +141,6 @@ class SettingsController extends AdminController
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Generate the backup page
|
||||
*
|
||||
* @return View
|
||||
**/
|
||||
|
||||
public function getBackups()
|
||||
{
|
||||
$path = Config::get('backup::path');
|
||||
$files = array();
|
||||
|
||||
if ($handle = opendir($path)) {
|
||||
|
||||
/* This is the correct way to loop over the directory. */
|
||||
while (false !== ($entry = readdir($handle))) {
|
||||
clearstatcache();
|
||||
if (substr(strrchr($entry,'.'),1)=='zip') {
|
||||
$files[] = array(
|
||||
'filename' => $entry,
|
||||
'filesize' => Setting::fileSizeConvert(filesize(Config::get('backup::path').$entry)),
|
||||
'modified' => filemtime(Config::get('backup::path').$entry)
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
closedir($handle);
|
||||
}
|
||||
|
||||
|
||||
return View::make('backend/settings/backups', compact('path','files'));
|
||||
}
|
||||
|
||||
/**
|
||||
* Download the dump file
|
||||
*
|
||||
* @param int $assetId
|
||||
* @return View
|
||||
**/
|
||||
public function downloadFile($filename = null)
|
||||
{
|
||||
|
||||
$file = Config::get('backup::path').'/'.$filename;
|
||||
|
||||
|
||||
// the license is valid
|
||||
if (file_exists($file)) {
|
||||
return Response::download($file);
|
||||
} else {
|
||||
// Prepare the error message
|
||||
$error = Lang::get('admin/settings/message.does_not_exist');
|
||||
|
||||
// Redirect to the licence management page
|
||||
return Redirect::route('settings/backups')->with('error', $error);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -34,9 +34,8 @@ class UsersController extends AdminController
|
||||
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',
|
||||
'location_id' => 'required',
|
||||
'email' => 'required|email|unique:users,email',
|
||||
'password' => 'required|min:6',
|
||||
'password_confirm' => 'required|min:6|same:password',
|
||||
);
|
||||
@@ -262,15 +261,8 @@ class UsersController extends AdminController
|
||||
return Redirect::route('users')->with('error', $error);
|
||||
}
|
||||
|
||||
//Check if username is the same then unset validationRules
|
||||
if (Input::get('username') == $user->username) {
|
||||
unset($this->validationRules['username']);
|
||||
}
|
||||
|
||||
//Check if email is the same then unset validationRules
|
||||
if ($user->email == Input::get('email')) {
|
||||
unset($this->validationRules['email']);
|
||||
}
|
||||
//
|
||||
$this->validationRules['email'] = "required|email|unique:users,email,{$user->email},email";
|
||||
|
||||
// Do we want to update the user password?
|
||||
if ( ! $password = Input::get('password')) {
|
||||
@@ -292,10 +284,8 @@ class UsersController extends AdminController
|
||||
|
||||
try {
|
||||
// Update the user
|
||||
$user->first_name = Input::get('first_name');
|
||||
$user->first_name = Input::get('first_name');
|
||||
$user->last_name = Input::get('last_name');
|
||||
$user->username = Input::get('username');
|
||||
$user->email = Input::get('email');
|
||||
$user->employee_num = Input::get('employee_num');
|
||||
$user->activated = Input::get('activated', $user->activated);
|
||||
$user->permissions = Input::get('permissions');
|
||||
@@ -303,7 +293,7 @@ class UsersController extends AdminController
|
||||
$user->phone = Input::get('phone');
|
||||
$user->location_id = Input::get('location_id');
|
||||
$user->manager_id = Input::get('manager_id');
|
||||
$user->notes = Input::get('notes');
|
||||
$user->notes = Input::get('notes');
|
||||
|
||||
if ($user->manager_id == "") {
|
||||
$user->manager_id = NULL;
|
||||
@@ -319,6 +309,11 @@ class UsersController extends AdminController
|
||||
$user->password = $password;
|
||||
}
|
||||
|
||||
// Do we want to update the user email?
|
||||
if (!Config::get('app.lock_passwords')) {
|
||||
$user->email = Input::get('email');
|
||||
}
|
||||
|
||||
// Get the current user groups
|
||||
$userGroups = $user->groups()->lists('group_id', 'group_id');
|
||||
|
||||
@@ -461,12 +456,10 @@ class UsersController extends AdminController
|
||||
public function getView($userId = null)
|
||||
{
|
||||
|
||||
$user = User::with('assets','assets.model','consumables','accessories','licenses','userloc')->find($userId);
|
||||
|
||||
$userlog = $user->userlog->load('assetlog','consumablelog','assetlog.model','licenselog','accessorylog','userlog','adminlog');
|
||||
$user = Sentry::getUserProvider()->createModel()->find($userId);
|
||||
|
||||
if (isset($user->id)) {
|
||||
return View::make('backend/users/view', compact('user','userlog'));
|
||||
return View::make('backend/users/view', compact('user'));
|
||||
} else {
|
||||
// Prepare the error message
|
||||
$error = Lang::get('admin/users/message.user_not_found', compact('id' ));
|
||||
@@ -639,22 +632,20 @@ class UsersController extends AdminController
|
||||
|
||||
try {
|
||||
// Check if this email already exists in the system
|
||||
$user = DB::table('users')->where('username', $row[2])->first();
|
||||
$user = DB::table('users')->where('email', $row[2])->first();
|
||||
if ($user) {
|
||||
$duplicates .= $row[2].', ';
|
||||
} else {
|
||||
|
||||
$newuser = array(
|
||||
'first_name' => $row[0],
|
||||
'last_name' => $row[1],
|
||||
'username' => $row[2],
|
||||
'email' => $row[3],
|
||||
'password' => $pass,
|
||||
'activated' => $activated,
|
||||
'location_id' => $row[4],
|
||||
'permissions' => '{"user":1}',
|
||||
'notes' => 'Imported user'
|
||||
);
|
||||
$newuser = array(
|
||||
'first_name' => $row[0],
|
||||
'last_name' => $row[1],
|
||||
'email' => $row[2],
|
||||
'password' => $pass,
|
||||
'activated' => $activated,
|
||||
'permissions' => '{"user":1}',
|
||||
'notes' => 'Imported user'
|
||||
);
|
||||
|
||||
DB::table('users')->insert($newuser);
|
||||
|
||||
@@ -667,19 +658,18 @@ class UsersController extends AdminController
|
||||
$updateuser->save();
|
||||
|
||||
|
||||
if (((Input::get('email_user')==1) && !Config::get('app.lock_passwords'))) {
|
||||
if (Input::get('email_user')==1) {
|
||||
// Send the credentials through email
|
||||
if ($row[3]!='') {
|
||||
$data = array();
|
||||
$data['username'] = $row[2];
|
||||
$data['first_name'] = $row[0];
|
||||
$data['password'] = $pass;
|
||||
|
||||
Mail::send('emails.send-login', $data, function ($m) use ($newuser) {
|
||||
$m->to($newuser['email'], $newuser['first_name'] . ' ' . $newuser['last_name']);
|
||||
$m->subject('Welcome ' . $newuser['first_name']);
|
||||
});
|
||||
}
|
||||
$data = array();
|
||||
$data['email'] = $row[2];
|
||||
$data['first_name'] = $row[0];
|
||||
$data['password'] = $pass;
|
||||
|
||||
Mail::send('emails.send-login', $data, function ($m) use ($newuser) {
|
||||
$m->to($newuser['email'], $newuser['first_name'] . ' ' . $newuser['last_name']);
|
||||
$m->subject('Welcome ' . $newuser['first_name']);
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
@@ -701,7 +691,7 @@ class UsersController extends AdminController
|
||||
public function getDatatable($status = null)
|
||||
{
|
||||
|
||||
$users = User::with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc');
|
||||
$users = User::with('assets','licenses','manager','userloc','sentryThrottle');
|
||||
|
||||
switch ($status) {
|
||||
case 'deleted':
|
||||
@@ -747,12 +737,7 @@ class UsersController extends AdminController
|
||||
|
||||
->addColumn('email',function($users)
|
||||
{
|
||||
if ($users->email) {
|
||||
return '<div class="text-center"><a title="'.$users->email.'" href="mailto:'.$users->email.'"><i class="fa fa-envelope fa-lg"></i></div>';
|
||||
} else {
|
||||
return '';
|
||||
}
|
||||
|
||||
return '<a title="'.$users->email.'" href="mailto:'.$users->email.'">'.$users->email.'</a>';
|
||||
})
|
||||
|
||||
->addColumn('manager',function($users)
|
||||
@@ -762,13 +747,12 @@ class UsersController extends AdminController
|
||||
}
|
||||
})
|
||||
|
||||
->addColumn('location',function($users)
|
||||
{
|
||||
if ($users->userloc) {
|
||||
return $users->userloc->name;
|
||||
}
|
||||
|
||||
})
|
||||
->addColumn('location',function($users)
|
||||
{
|
||||
if ($users->userloc) {
|
||||
return '<a title="'.$users->userloc->name.'" href="users/'.$users->location_id.'/view">'.$users->userloc->name.'</a>';
|
||||
}
|
||||
})
|
||||
|
||||
->addColumn('assets',function($users)
|
||||
{
|
||||
@@ -779,30 +763,14 @@ class UsersController extends AdminController
|
||||
{
|
||||
return $users->licenses->count();
|
||||
})
|
||||
|
||||
->addColumn('accessories',function($users)
|
||||
->addColumn('activated',function($users)
|
||||
{
|
||||
return $users->accessories->count();
|
||||
return $users->isActivated() ? '<i class="fa fa-check"></i>' : '';
|
||||
})
|
||||
->addColumn('consumables',function($users)
|
||||
{
|
||||
return $users->consumables->count();
|
||||
})
|
||||
|
||||
|
||||
->addColumn('groups',function($users)
|
||||
{
|
||||
$group_names = '';
|
||||
foreach ($users->groups as $group) {
|
||||
$group_names .= '<a href="'.Config::get('app.url').'/admin/groups/'.$group->id.'/edit" class="label label-default">'.$group->name.'</a> ';
|
||||
}
|
||||
return $group_names;
|
||||
})
|
||||
|
||||
|
||||
->addColumn($actions)
|
||||
->searchColumns('name','email','manager','activated','groups','location')
|
||||
->orderColumns('name','email','manager','activated', 'licenses','assets','accessories','consumables','groups','location')
|
||||
->searchColumns('name','email','manager','activated','licenses','location','assets')
|
||||
->orderColumns('name','email','manager','activated', 'licenses','location','assets')
|
||||
->make();
|
||||
|
||||
}
|
||||
|
||||
@@ -17,13 +17,13 @@ class AddAccessoriesTable extends Migration {
|
||||
$table->increments('id');
|
||||
$table->string('name')->nullable()->default(NULL);
|
||||
$table->integer('category_id')->nullable()->default(NULL);
|
||||
$table->integer('user_id')->nullable()->default(NULL);
|
||||
$table->integer('qty')->default(0);
|
||||
$table->boolean('requestable')->default(0);
|
||||
$table->integer('user_id')->nullable()->default(NULL);
|
||||
$table->integer('qty')->default(0);
|
||||
$table->boolean('requestable')->default(0);
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
});
|
||||
|
||||
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->integer('accessory_id')->nullable()->default(NULL);
|
||||
});
|
||||
@@ -39,7 +39,7 @@ class AddAccessoriesTable extends Migration {
|
||||
{
|
||||
//
|
||||
Schema::drop('accessories');
|
||||
|
||||
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->dropColumn('accessory_id');
|
||||
});
|
||||
|
||||
@@ -13,18 +13,18 @@ class UpdateAcceptedAtToAcceptanceId extends Migration {
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
|
||||
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->integer('accepted_id')->nullable()->default(NULL);
|
||||
});
|
||||
|
||||
|
||||
$results = DB::select('select invitation.id AS invitation_id, acceptance.id AS acceptance_id FROM asset_logs invitation INNER JOIN asset_logs acceptance ON (invitation.checkedout_to=acceptance.checkedout_to AND invitation.asset_id=acceptance.asset_id) WHERE invitation.action_type="checkout" AND acceptance.action_type="accepted"');
|
||||
|
||||
|
||||
|
||||
|
||||
foreach ($results as $result) {
|
||||
$update = DB::update('update asset_logs set accepted_id=? where id=?', [$result->acceptance_id, $result->invitation_id]);
|
||||
$update = DB::update('update asset_logs set accepted_id=? where id=?', [$result->acceptance_id, $result->invitation_id]);
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -38,7 +38,7 @@ class UpdateAcceptedAtToAcceptanceId extends Migration {
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->dropColumn('accepted_id');
|
||||
});
|
||||
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,36 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddParentIdToLocationsTable extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('locations', function(Blueprint $table)
|
||||
{
|
||||
//
|
||||
$table->integer('parent_id')->nullable()->default(NULL);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('locations', function(Blueprint $table)
|
||||
{
|
||||
//
|
||||
$table->dropColumn('parent_id');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,29 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class FixDefaultForUserNotes extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
DB::statement('ALTER TABLE `'.DB::getTablePrefix().'users` MODIFY `notes` varchar(255) DEFAULT NULL;');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
DB::statement('ALTER TABLE `'.DB::getTablePrefix().'users` MODIFY `notes` varchar(255);');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,63 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class CreateConsumables extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
Schema::create('consumables', function ($table) {
|
||||
$table->increments('id');
|
||||
$table->string('name')->nullable()->default(NULL);
|
||||
$table->integer('category_id')->nullable()->default(NULL);
|
||||
$table->integer('location_id')->nullable()->default(NULL);
|
||||
$table->integer('user_id')->nullable()->default(NULL);
|
||||
$table->integer('qty')->default(0);
|
||||
$table->boolean('requestable')->default(0);
|
||||
$table->timestamps();
|
||||
$table->softDeletes();
|
||||
});
|
||||
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->integer('consumable_id')->nullable()->default(NULL);
|
||||
});
|
||||
|
||||
Schema::create('consumables_users', function ($table) {
|
||||
$table->increments('id');
|
||||
$table->integer('user_id')->nullable()->default(NULL);
|
||||
$table->integer('consumable_id')->nullable()->default(NULL);
|
||||
$table->integer('assigned_to')->nullable()->default(NULL);
|
||||
$table->timestamps();
|
||||
});
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
Schema::drop('consumables');
|
||||
|
||||
Schema::table('asset_logs', function ($table) {
|
||||
$table->dropColumn('consumable_id');
|
||||
});
|
||||
|
||||
Schema::drop('consumables_users');
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,30 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class MoveEmailToUsername extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
//
|
||||
DB::update('UPDATE `'.DB::getTablePrefix().'users` SET `username`=`email`');
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
//DB::statement('ALTER TABLE `users` MODIFY `notes` varchar(255);');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,31 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class MakeEmailNullable extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
|
||||
DB::statement('ALTER TABLE `'.DB::getTablePrefix().'users` MODIFY `email` varchar(255) DEFAULT NULL;');
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
DB::statement('ALTER TABLE `'.DB::getTablePrefix().'users` MODIFY `email` varchar(255) NOT NULL;');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,56 +0,0 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddCurrencyToSettingsAndLocations extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
|
||||
Schema::table('settings', function(Blueprint $table)
|
||||
{
|
||||
$table->string('default_currency',10)->nullable()->default(NULL);
|
||||
});
|
||||
|
||||
DB::update('UPDATE `'.DB::getTablePrefix().'settings` SET `default_currency`="'. Lang::get('general.currency').'"');
|
||||
|
||||
Schema::table('locations', function(Blueprint $table)
|
||||
{
|
||||
$table->string('currency',10)->nullable()->default(NULL);
|
||||
});
|
||||
|
||||
DB::update('UPDATE `'.DB::getTablePrefix().'locations` SET `currency`="'. Lang::get('general.currency').'"');
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
//
|
||||
Schema::table('settings', function(Blueprint $table)
|
||||
{
|
||||
//
|
||||
$table->dropColumn('default_currency');
|
||||
});
|
||||
|
||||
Schema::table('locations', function(Blueprint $table)
|
||||
{
|
||||
//
|
||||
$table->dropColumn('currency');
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -72,7 +72,7 @@ class AssetsSeeder extends Seeder
|
||||
'assigned_to' => NULL,
|
||||
'physical' => 1,
|
||||
'archived' => 0,
|
||||
'status_id' => 2,
|
||||
'status_id' => 2,
|
||||
'notes' => '',
|
||||
'deleted_at' => NULL,
|
||||
'archived' => '0',
|
||||
@@ -139,7 +139,7 @@ class AssetsSeeder extends Seeder
|
||||
'created_at' => $date->modify('-10 day'),
|
||||
'updated_at' => $date->modify('-3 day'),
|
||||
'user_id' => 2,
|
||||
'assigned_to' => 1,
|
||||
'assigned_to' => 2,
|
||||
'physical' => 1,
|
||||
'archived' => 0,
|
||||
'status_id' => 1,
|
||||
@@ -162,10 +162,10 @@ class AssetsSeeder extends Seeder
|
||||
'created_at' => $date->modify('-10 day'),
|
||||
'updated_at' => $date->modify('-3 day'),
|
||||
'user_id' => 2,
|
||||
'assigned_to' => 1,
|
||||
'assigned_to' => 2,
|
||||
'physical' => 1,
|
||||
'archived' => 0,
|
||||
'status_id' => 1,
|
||||
'status_id' => 1,
|
||||
'notes' => '',
|
||||
'deleted_at' => NULL,
|
||||
'archived' => '0',
|
||||
@@ -211,7 +211,7 @@ class AssetsSeeder extends Seeder
|
||||
'assigned_to' => NULL,
|
||||
'physical' => 1,
|
||||
'archived' => 0,
|
||||
'status_id' => '2',
|
||||
'status_id' => '2',
|
||||
'notes' => '',
|
||||
'deleted_at' => NULL,
|
||||
'archived' => '0',
|
||||
@@ -234,7 +234,7 @@ class AssetsSeeder extends Seeder
|
||||
'assigned_to' => NULL,
|
||||
'physical' => 1,
|
||||
'archived' => 1,
|
||||
'status_id' => '2',
|
||||
'status_id' => '4',
|
||||
'notes' => '',
|
||||
'deleted_at' => NULL,
|
||||
'archived' => '0',
|
||||
@@ -257,7 +257,7 @@ class AssetsSeeder extends Seeder
|
||||
'assigned_to' => NULL,
|
||||
'physical' => 1,
|
||||
'archived' => 1,
|
||||
'status_id' => '2',
|
||||
'status_id' => '3',
|
||||
'notes' => '',
|
||||
'deleted_at' => NULL,
|
||||
'archived' => '0',
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_accessories_text' => 'الملحقات هي أي شيء تقوم بتسليمه للمستخدمين لكنه لا يحتوي على رقم تسلسلي (أو أنك لست بحاجة إلى تتبعه بشكل خاص). مثال: فأرة الحاسوب أو لوحة المفاتيح.',
|
||||
'accessory_category' => 'فئة الملحق',
|
||||
'accessory_name' => 'اسم الملحق',
|
||||
'create' => 'إنشاء فئة جديدة',
|
||||
'create' => 'Create Accessory',
|
||||
'eula_text' => 'إنشاء اتفاقية جديدة',
|
||||
'eula_text_help' => 'يسمح لك هذا الحقل بتخصيص الاتفاقيات لأنواع معينة من الأصول. اذا كنت تمتلك اتفاقية واحدة لجميع أصولك يمكنك أن تقوم بتأشير المربع في الأسفل لاستخدام الاتفاقية الافتراضية.',
|
||||
'require_acceptance' => 'مطالبة المستخدمين بتأكيد قبولهم الأصول في هذه الفئة.',
|
||||
@@ -13,7 +13,7 @@ return array(
|
||||
'qty' => 'الكمية',
|
||||
'total' => 'المجموع',
|
||||
'remaining' => 'المتاح',
|
||||
'update' => 'تحديث الفئة',
|
||||
'update' => 'Update Accessory',
|
||||
'use_default_eula' => 'قم باستعمال <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a>.',
|
||||
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
|
||||
|
||||
|
||||
14
app/lang/ar/admin/asset_maintenances/form.php
Executable file
14
app/lang/ar/admin/asset_maintenances/form.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Asset Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Start Date',
|
||||
'completion_date' => 'Completion Date',
|
||||
'cost' => 'Cost',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
|
||||
'notes' => 'Notes',
|
||||
'update' => 'Update Asset Maintenance',
|
||||
'create' => 'Create Asset Maintenance'
|
||||
];
|
||||
11
app/lang/ar/admin/asset_maintenances/general.php
Executable file
11
app/lang/ar/admin/asset_maintenances/general.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'edit' => 'Edit Asset Maintenance',
|
||||
'delete' => 'Delete Asset Maintenance',
|
||||
'view' => 'View Asset Maintenance Details',
|
||||
'repair' => 'Repair',
|
||||
'maintenance' => 'Maintenance',
|
||||
'upgrade' => 'Upgrade'
|
||||
];
|
||||
17
app/lang/ar/admin/asset_maintenances/message.php
Executable file
17
app/lang/ar/admin/asset_maintenances/message.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'Asset Maintenance you were looking for was not found!',
|
||||
'delete' => [
|
||||
'confirm' => 'Are you sure you wish to delete this asset maintenance?',
|
||||
'error' => 'There was an issue deleting the asset maintenance. Please try again.',
|
||||
'success' => 'The asset maintenance was deleted successfully.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance was not created, please try again.',
|
||||
'success' => 'Asset Maintenance created successfully.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Not Completed Yet',
|
||||
'warranty' => 'Warranty',
|
||||
'not_warranty' => 'Not Warranty',
|
||||
];
|
||||
9
app/lang/ar/admin/asset_maintenances/table.php
Executable file
9
app/lang/ar/admin/asset_maintenances/table.php
Executable file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Asset Name',
|
||||
'supplier_name' => 'Supplier Name',
|
||||
'is_warranty' => 'Warranty',
|
||||
'dl_csv' => 'Download CSV'
|
||||
];
|
||||
@@ -5,6 +5,7 @@ return array(
|
||||
'about_categories' => 'تصنيفات الأصول تساعدك على ترتيب الأصول. من الأمثلة على التصنيفات " مكاتب "، "أجهزة الكمبيوتر المحمولة "، "الهواتف النقالة "، "أجهزة لوحية " وهكذا، كما يمكنك استخدام التصنيفات بأي طريقة تناسبك. ',
|
||||
'asset_categories' => 'التصنيفات',
|
||||
'category_name' => 'اسم التصنيف',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'clone' => 'Clone Category',
|
||||
'create' => 'إنشاء تصنيف',
|
||||
'edit' => 'Edit Category',
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
return array(
|
||||
'about_consumables_title' => 'About Consumables',
|
||||
'about_consumables_text' => 'Consumables are anything purchased that will be used up over time. For example, printer ink or copier paper.',
|
||||
'consumable_name' => 'Consumable Name',
|
||||
'create' => 'Create Consumable',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'update' => 'Update Consumable',
|
||||
);
|
||||
|
||||
@@ -17,9 +17,10 @@ return array(
|
||||
'default_location' => 'Default Location',
|
||||
'eol_date' => 'EOL Date',
|
||||
'eol_rate' => 'EOL Rate',
|
||||
'expected_checkin' => 'Expected Checkin Date',
|
||||
'expires' => 'Expires',
|
||||
'fully_depreciated' => 'Fully Depreciated',
|
||||
'help_checkout' => 'If you wish to assign this asset immediately, you should select "Ready to Deploy" from the status list above, or unexpected things may happen. ',
|
||||
'help_checkout' => 'If you wish to assign this asset immediately, select "Ready to Deploy" from the status list above. ',
|
||||
'mac_address' => 'MAC Address',
|
||||
'manufacturer' => 'Manufacturer',
|
||||
'model' => 'Model',
|
||||
|
||||
@@ -12,4 +12,6 @@ return array(
|
||||
'address' => 'Address',
|
||||
'zip' => 'Postal Code',
|
||||
'locations' => 'Locations',
|
||||
'parent' => 'Parent',
|
||||
'currency' => 'Location Currency', // this is deprecated
|
||||
);
|
||||
|
||||
@@ -10,6 +10,7 @@ return array(
|
||||
'backups' => 'Backups',
|
||||
'barcode_type' => 'Barcode Type',
|
||||
'barcode_settings' => 'Barcode Settings',
|
||||
'default_currency' => 'Default Currency',
|
||||
'default_eula_text' => 'Default EULA',
|
||||
'default_eula_help_text' => 'You can also associate custom EULAs to specific asset categories.',
|
||||
'display_asset_name' => 'Display Asset Name',
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
|
||||
return array(
|
||||
|
||||
'assets_user' => 'الجهاز مسجل بعهدة :name',
|
||||
'clone' => 'نسخ المستخدم',
|
||||
'contact_user' => 'اتصل بـ :name',
|
||||
'edit' => 'تعديل المستخدم',
|
||||
'history_user' => 'الأرشيف الخاص بـ :name',
|
||||
'last_login' => 'آخر دخول للمستخدم',
|
||||
'software_user' => 'البرامج المسجلة لـ :name',
|
||||
'view_user' => 'عرض المستخدم :name',
|
||||
'usercsv' => 'ملف CSV',
|
||||
'assets_user' => 'الجهاز مسجل بعهدة :name',
|
||||
'clone' => 'نسخ المستخدم',
|
||||
'contact_user' => 'اتصل بـ :name',
|
||||
'edit' => 'تعديل المستخدم',
|
||||
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'history_user' => 'الأرشيف الخاص بـ :name',
|
||||
'last_login' => 'آخر دخول للمستخدم',
|
||||
'software_user' => 'البرامج المسجلة لـ :name',
|
||||
'view_user' => 'عرض المستخدم :name',
|
||||
'usercsv' => 'ملف CSV',
|
||||
);
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
|
||||
return array(
|
||||
|
||||
'user_exists' => 'المستخدم موجود مسبقاً!',
|
||||
'user_not_found' => 'المستخدم [id:] غير موجود.',
|
||||
'user_login_required' => 'حقل "الدخول" مطلوب',
|
||||
'user_password_required' => 'كلمة السر مطلوبة.',
|
||||
'insufficient_permissions' => 'صلاحيات غير كافية.',
|
||||
'user_deleted_warning' => 'تم حذف المستخدم. سيكون عليك استعادة هذا المستخدم للتعديل عليه او تسليمه اجهزة جديدة.',
|
||||
'accepted' => 'You have successfully accepted this asset.',
|
||||
'declined' => 'You have successfully declined this asset.',
|
||||
'user_exists' => 'المستخدم موجود مسبقاً!',
|
||||
'user_not_found' => 'المستخدم [id:] غير موجود.',
|
||||
'user_login_required' => 'حقل "الدخول" مطلوب',
|
||||
'user_password_required' => 'كلمة السر مطلوبة.',
|
||||
'insufficient_permissions' => 'صلاحيات غير كافية.',
|
||||
'user_deleted_warning' => 'تم حذف المستخدم. سيكون عليك استعادة هذا المستخدم للتعديل عليه او تسليمه اجهزة جديدة.',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -29,6 +31,19 @@ return array(
|
||||
'unsuspend' => 'حدث خطأ ما أثناء إلغاء التعليق عن المستخدم. حاول مرة أخرى.',
|
||||
'import' => 'حدث خطأ أثناء استيراد المستخدمين. حاول مرة أخرى.',
|
||||
'asset_already_accepted' => 'هذا الجهاز تم قبوله مسبقاً.',
|
||||
'accept_or_decline' => 'You must either accept or decline this asset.',
|
||||
),
|
||||
|
||||
'deletefile' => array(
|
||||
'error' => 'File not deleted. Please try again.',
|
||||
'success' => 'File successfully deleted.',
|
||||
),
|
||||
|
||||
'upload' => array(
|
||||
'error' => 'File(s) not uploaded. Please try again.',
|
||||
'success' => 'File(s) successfully uploaded.',
|
||||
'nofiles' => 'You did not select any files for upload',
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'account_already_exists' => 'An account with the this email already exists.',
|
||||
'account_not_found' => 'The email account or password is incorrect.',
|
||||
'account_not_found' => 'The username or password is incorrect.',
|
||||
'account_not_activated' => 'This user account is not activated.',
|
||||
'account_suspended' => 'This user account is suspended.',
|
||||
'account_banned' => 'This user account is banned.',
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
|
||||
return [
|
||||
'accessories' => 'Accessories',
|
||||
'accessory' => 'Accessory',
|
||||
'action' => 'Action',
|
||||
@@ -21,6 +19,7 @@ return array(
|
||||
'avatar_delete' => 'حذف الصورة الرمزية',
|
||||
'avatar_upload' => 'رفع صورة رمزية',
|
||||
'back' => 'الرجوع للخلف',
|
||||
'bad_data' => 'Nothing found. Maybe bad data?',
|
||||
'cancel' => 'إلغاء',
|
||||
'categories' => 'Categories',
|
||||
'category' => 'Category',
|
||||
@@ -36,7 +35,7 @@ return array(
|
||||
'create' => 'إضافة',
|
||||
'created_asset' => 'الأصول المضافة',
|
||||
'created_at' => 'أنشئت في',
|
||||
'currency' => '$',
|
||||
'currency' => '$', // this is deprecated
|
||||
'current' => 'الحالي',
|
||||
'custom_report' => 'Custom Asset Report',
|
||||
'dashboard' => 'Dashboard',
|
||||
@@ -60,6 +59,9 @@ return array(
|
||||
'id' => 'الرقم',
|
||||
'image_delete' => 'حذف الصورة',
|
||||
'image_upload' => 'رفع صورة',
|
||||
'asset_maintenance' => 'Asset Maintenance',
|
||||
'asset_maintenance_report' => 'Asset Maintenance Report',
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'item' => 'Item',
|
||||
'last' => 'Last',
|
||||
'last_name' => 'الإسم الأخير',
|
||||
@@ -69,6 +71,8 @@ return array(
|
||||
'licenses' => 'الرخص',
|
||||
'list_all' => 'عرض الكل',
|
||||
'loading' => 'Loading',
|
||||
'lock_passwords' => 'This field cannot be edited in this installation.',
|
||||
'feature_disabled' => 'This feature has been disabled for this installation.',
|
||||
'location' => 'الموقع',
|
||||
'locations' => 'المواقع',
|
||||
'logout' => 'تسجيل خروج',
|
||||
@@ -106,6 +110,7 @@ return array(
|
||||
'select_supplier' => 'Select a Supplier',
|
||||
'select_user' => 'Select a User',
|
||||
'select_date' => 'Select Date',
|
||||
'select_statuslabel' => 'Select Status',
|
||||
'settings' => 'الإعدادات',
|
||||
'sign_in' => 'تسجيل الدخول',
|
||||
'site_name' => 'إسم الموقع',
|
||||
@@ -118,8 +123,11 @@ return array(
|
||||
'type' => 'Type',
|
||||
'undeployable' => 'غير قابلة للتوزيع',
|
||||
'unknown_admin' => 'إداري غير معروف',
|
||||
'update' => 'Update',
|
||||
'uploaded' => 'Uploaded',
|
||||
'user' => 'المستخدم',
|
||||
'accepted' => 'accepted',
|
||||
'declined' => 'declined',
|
||||
'users' => 'Users',
|
||||
'viewassets' => 'عرض الأصول المسجلة',
|
||||
'website' => 'الموقع',
|
||||
@@ -127,5 +135,4 @@ return array(
|
||||
'years' => 'سنوات',
|
||||
'yes' => 'نعم',
|
||||
'zip' => 'الرمز البريدي',
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -77,7 +77,7 @@ return array(
|
||||
*/
|
||||
|
||||
'custom' => array(),
|
||||
'alpha_space' => "The :attribute field may only contain letters, commas, spaces and dashes.",
|
||||
'alpha_space' => "The :attribute field contains a character that is not allowed.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ return array(
|
||||
'about_accessories_text' => 'Příslušenství je cokoliv, co předáte uživatelům, ale nemá to sérivoé číslo (nebo to neevidujete). Např. myš, klávesnice.',
|
||||
'accessory_category' => 'Kategorie příslušenství',
|
||||
'accessory_name' => 'Název příslušenství',
|
||||
'create' => 'Vytvořit kategorii',
|
||||
'create' => 'Vytvoř příslušenství',
|
||||
'eula_text' => 'Kategorie EULA',
|
||||
'eula_text_help' => 'Toto pole umožňuje upravit EULA pro různé druhy majetku. Pokud máte pouze jeden typ pro všechen majetek, můžete zaškrtnout položku níže pro použití jako výchozí.',
|
||||
'require_acceptance' => 'Požadovat potvrzení převzetí majetku v této kategorii.',
|
||||
@@ -13,7 +13,7 @@ return array(
|
||||
'qty' => 'Množství',
|
||||
'total' => 'CELKEM',
|
||||
'remaining' => 'Dostupný',
|
||||
'update' => 'Upravit kategorii',
|
||||
'update' => 'Aktualizace příslušenství',
|
||||
'use_default_eula' => 'Použít <a href="#" data-toggle="modal" data-target="#eulaModal">primární výchozí EULA</a>.',
|
||||
'use_default_eula_disabled' => '<del>Použít výchozí EULA.</del>
|
||||
Žádná výchozí EULA nenastavena. Zadejte novou v nastevení.',
|
||||
|
||||
14
app/lang/cs/admin/asset_maintenances/form.php
Executable file
14
app/lang/cs/admin/asset_maintenances/form.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Asset Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Začátek',
|
||||
'completion_date' => 'Completion Date',
|
||||
'cost' => 'Cena',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
|
||||
'notes' => 'Poznámky',
|
||||
'update' => 'Update Asset Maintenance',
|
||||
'create' => 'Create Asset Maintenance'
|
||||
];
|
||||
11
app/lang/cs/admin/asset_maintenances/general.php
Executable file
11
app/lang/cs/admin/asset_maintenances/general.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'edit' => 'Edit Asset Maintenance',
|
||||
'delete' => 'Delete Asset Maintenance',
|
||||
'view' => 'View Asset Maintenance Details',
|
||||
'repair' => 'Oprava',
|
||||
'maintenance' => 'Maintenance',
|
||||
'upgrade' => 'Upgradovat'
|
||||
];
|
||||
17
app/lang/cs/admin/asset_maintenances/message.php
Executable file
17
app/lang/cs/admin/asset_maintenances/message.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'Asset Maintenance you were looking for was not found!',
|
||||
'delete' => [
|
||||
'confirm' => 'Are you sure you wish to delete this asset maintenance?',
|
||||
'error' => 'There was an issue deleting the asset maintenance. Please try again.',
|
||||
'success' => 'The asset maintenance was deleted successfully.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance was not created, please try again.',
|
||||
'success' => 'Asset Maintenance created successfully.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Not Completed Yet',
|
||||
'warranty' => 'Záruka',
|
||||
'not_warranty' => 'Bez záruky',
|
||||
];
|
||||
9
app/lang/cs/admin/asset_maintenances/table.php
Executable file
9
app/lang/cs/admin/asset_maintenances/table.php
Executable file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Název majetku',
|
||||
'supplier_name' => 'Dodavatel',
|
||||
'is_warranty' => 'Záruka',
|
||||
'dl_csv' => 'Stáhnout CSV'
|
||||
];
|
||||
@@ -5,11 +5,12 @@ return array(
|
||||
'about_categories' => 'Kategorie pomáhají organizovat majetek. Takovou kategorii může být např. "Desktopy", "Notebooky", "Mobilní telefony", "Tablety", apod., kategorie můžete ale používat jakkoliv Vám to bude dávat smysl. ',
|
||||
'asset_categories' => 'Kategorie majetku',
|
||||
'category_name' => 'Jméno kategorie',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'clone' => 'Klonovat Kategorii',
|
||||
'create' => 'Vytvořit kategorii',
|
||||
'edit' => 'Upravit Kategorii',
|
||||
'eula_text' => 'EULA Kategorie',
|
||||
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
|
||||
'eula_text_help' => 'Toto pole umožňuje upravit EULA pro různé druhy majetku. Pokud máte pouze jeden typ pro všechen majetek, můžete zaškrtnout položku níže pro použití jako výchozí.',
|
||||
'require_acceptance' => 'Žádat uživatelé o potvrzení převzetí majetku v této kategorii.',
|
||||
'required_acceptance' => 'Uživateli bude zaslán email s odkazem pro potvrzení přijetí této položky.',
|
||||
'required_eula' => 'Tomuto uživateli bude zaslána kopie EUAL emailem',
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
return array(
|
||||
'about_consumables_title' => 'About Consumables',
|
||||
'about_consumables_text' => 'Consumables are anything purchased that will be used up over time. For example, printer ink or copier paper.',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'consumable_name' => 'Consumable Name',
|
||||
'create' => 'Create Consumable',
|
||||
'remaining' => 'Zbývá',
|
||||
'total' => 'Celkem',
|
||||
'update' => 'Update Consumable',
|
||||
);
|
||||
|
||||
@@ -17,9 +17,10 @@ return array(
|
||||
'default_location' => 'Výchozí umístění',
|
||||
'eol_date' => 'Konec životnosti',
|
||||
'eol_rate' => 'Míra ukončení životnosti',
|
||||
'expected_checkin' => 'Expected Checkin Date',
|
||||
'expires' => 'Expiruje',
|
||||
'fully_depreciated' => 'Plně odepsané',
|
||||
'help_checkout' => 'Pokud si přejete přiřadit majetek okamžitě, měli by jste ze seznamu stavů zvolit "Připraveno k přiděleni", nebo se může něco pokazit. ',
|
||||
'help_checkout' => 'If you wish to assign this asset immediately, select "Ready to Deploy" from the status list above. ',
|
||||
'mac_address' => 'MAC adresa',
|
||||
'manufacturer' => 'Výrobce',
|
||||
'model' => 'Model',
|
||||
|
||||
@@ -25,7 +25,7 @@ return array(
|
||||
|
||||
'deletefile' => array(
|
||||
'error' => 'File not deleted. Please try again.',
|
||||
'success' => 'File successfully deleted.',
|
||||
'success' => 'Soubor byl úspěšně smazán.',
|
||||
),
|
||||
|
||||
'upload' => array(
|
||||
@@ -39,7 +39,7 @@ return array(
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this asset?',
|
||||
'error' => 'There was an issue deleting the asset. Please try again.',
|
||||
'success' => 'The asset was deleted successfully.'
|
||||
'success' => 'Majetek byl úspěšně smazán.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
|
||||
@@ -2,27 +2,27 @@
|
||||
|
||||
return array(
|
||||
|
||||
'asset' => 'Asset',
|
||||
'asset' => 'Majetek',
|
||||
'checkin' => 'Checkin',
|
||||
'cost' => 'Purchase Cost',
|
||||
'create' => 'Create License',
|
||||
'date' => 'Purchase Date',
|
||||
'cost' => 'Pořizovací cena',
|
||||
'create' => 'Založ licenci',
|
||||
'date' => 'Datum pořízení',
|
||||
'depreciation' => 'Depreciation',
|
||||
'expiration' => 'Expiration Date',
|
||||
'maintained' => 'Maintained',
|
||||
'name' => 'Software Name',
|
||||
'expiration' => 'Expirace',
|
||||
'maintained' => 'Údržba',
|
||||
'name' => 'Software',
|
||||
'no_depreciation' => 'Do Not Depreciate',
|
||||
'notes' => 'Notes',
|
||||
'order' => 'Order No.',
|
||||
'notes' => 'Poznámky',
|
||||
'order' => 'Koupeno',
|
||||
'purchase_order' => 'Purchase Order Number',
|
||||
'reassignable' => 'Reassignable',
|
||||
'remaining_seats' => 'Remaining Seats',
|
||||
'seats' => 'Seats',
|
||||
'serial' => 'Serial',
|
||||
'supplier' => 'Supplier',
|
||||
'termination_date' => 'Termination Date',
|
||||
'to_email' => 'Licensed to Email',
|
||||
'to_name' => 'Licensed to Name',
|
||||
'remaining_seats' => 'Nasazeno',
|
||||
'seats' => 'Počet licencí',
|
||||
'serial' => 'Sériové číslo',
|
||||
'supplier' => 'Dodavatel',
|
||||
'termination_date' => 'Platná do',
|
||||
'to_email' => 'Registrováno na Email',
|
||||
'to_name' => 'Registrace na jméno',
|
||||
'update' => 'Update License',
|
||||
'checkout_help' => 'You must check a license out to a hardware asset or a person. You can select both, but the owner of the asset must match the person you\'re checking the asset out to.'
|
||||
);
|
||||
|
||||
@@ -5,16 +5,16 @@ return array(
|
||||
'checkin' => 'Checkin License Seat',
|
||||
'checkout_history' => 'Checkout History',
|
||||
'checkout' => 'Checkout License Seat',
|
||||
'edit' => 'Edit License',
|
||||
'edit' => 'Uprav licenci',
|
||||
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'clone' => 'Clone License',
|
||||
'history_for' => 'History for ',
|
||||
'clone' => 'Duplikovat licenci',
|
||||
'history_for' => 'Historie uživatele ',
|
||||
'in_out' => 'In/Out',
|
||||
'info' => 'License Info',
|
||||
'info' => 'Informace o licenci',
|
||||
'license_seats' => 'License Seats',
|
||||
'seat' => 'Seat',
|
||||
'seats' => 'Seats',
|
||||
'software_licenses' => 'Software Licenses',
|
||||
'software_licenses' => 'Softwarové licence',
|
||||
'user' => 'User',
|
||||
'view' => 'View License',
|
||||
'view' => 'Ukaž licenci',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'License does not exist.',
|
||||
'user_does_not_exist' => 'User does not exist.',
|
||||
'user_does_not_exist' => 'Uživatel neexistuje.',
|
||||
'asset_does_not_exist' => 'The asset you are trying to associate with this license does not exist.',
|
||||
'owner_doesnt_match_asset' => 'The asset you are trying to associate with this license is owned by somene other than the person selected in the assigned to dropdown.',
|
||||
'assoc_users' => 'This license is currently checked out to a user and cannot be deleted. Please check the license in first, and then try deleting again. ',
|
||||
@@ -16,7 +16,7 @@ return array(
|
||||
|
||||
'deletefile' => array(
|
||||
'error' => 'File not deleted. Please try again.',
|
||||
'success' => 'File successfully deleted.',
|
||||
'success' => 'Soubor byl úspěšně smazán.',
|
||||
),
|
||||
|
||||
'upload' => array(
|
||||
@@ -34,7 +34,7 @@ return array(
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this license?',
|
||||
'error' => 'There was an issue deleting the license. Please try again.',
|
||||
'success' => 'The license was deleted successfully.'
|
||||
'success' => 'Licence byla úspěšně smazána.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
|
||||
@@ -7,11 +7,11 @@ return array(
|
||||
'id' => 'ID',
|
||||
'license_email' => 'License Email',
|
||||
'license_name' => 'Licensed To',
|
||||
'purchase_date' => 'Purchase Date',
|
||||
'purchased' => 'Purchased',
|
||||
'purchase_date' => 'Pořízeno',
|
||||
'purchased' => 'Zakoupeno',
|
||||
'seats' => 'Seats',
|
||||
'hardware' => 'Hardware',
|
||||
'serial' => 'Serial',
|
||||
'title' => 'License',
|
||||
'serial' => 'Sériové číslo',
|
||||
'title' => 'Licence',
|
||||
|
||||
);
|
||||
|
||||
@@ -12,4 +12,6 @@ return array(
|
||||
'address' => 'Adresa',
|
||||
'zip' => 'PSČ',
|
||||
'locations' => 'Umístění',
|
||||
'parent' => 'Parent',
|
||||
'currency' => 'Location Currency', // this is deprecated
|
||||
);
|
||||
|
||||
@@ -3,15 +3,15 @@
|
||||
return array(
|
||||
|
||||
'create' => 'Create Asset Model',
|
||||
'created_at' => 'Created at',
|
||||
'created_at' => 'Vytvořeno',
|
||||
'eol' => 'EOL',
|
||||
'modelnumber' => 'Model No.',
|
||||
'modelnumber' => 'Modelová řada',
|
||||
'name' => 'Asset Model Name',
|
||||
'numassets' => 'Assets',
|
||||
'numassets' => 'Počet',
|
||||
'title' => 'Asset Models',
|
||||
'update' => 'Update Asset Model',
|
||||
'view' => 'View Asset Model',
|
||||
'update' => 'Update Asset Model',
|
||||
'clone' => 'Clone Model',
|
||||
'edit' => 'Edit Model',
|
||||
'clone' => 'Kopíruj modelovou řadu',
|
||||
'edit' => 'Edituj model',
|
||||
);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'error' => 'You must select at least ONE option.'
|
||||
'error' => 'Musíte vybrat alespoň jednu možnost.'
|
||||
);
|
||||
|
||||
@@ -7,9 +7,10 @@ return array(
|
||||
'auto_increment_assets' => 'Vygenerovat zvyšující se ID majetku',
|
||||
'auto_increment_prefix' => 'Předpona (volitnelná)',
|
||||
'auto_incrementing_help' => 'Nastavte nejdříve automaticky se zvyšující ID majetku pro nastavení tohoto',
|
||||
'backups' => 'Backups',
|
||||
'backups' => 'Zálohy',
|
||||
'barcode_type' => 'Tyo čárového kódu',
|
||||
'barcode_settings' => 'Nastavení čárového kódu',
|
||||
'default_currency' => 'Default Currency',
|
||||
'default_eula_text' => 'Výchozí EULA',
|
||||
'default_eula_help_text' => 'Můžete také spojit vlastní EULA se specifickými kategoriemi majetku.',
|
||||
'display_asset_name' => 'Zobrazit název majetku',
|
||||
|
||||
@@ -7,7 +7,7 @@ return array(
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Supplier was not created, please try again.',
|
||||
'success' => 'Supplier created successfully.'
|
||||
'success' => 'Dodavatel úspěšně vytvořen.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
@@ -18,7 +18,7 @@ return array(
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this supplier?',
|
||||
'error' => 'There was an issue deleting the supplier. Please try again.',
|
||||
'success' => 'Supplier was deleted successfully.'
|
||||
'success' => 'Dodavatel byl úspěšně smazán.'
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
@@ -3,23 +3,23 @@
|
||||
return array(
|
||||
'address' => 'Supplier Address',
|
||||
'assets' => 'Assets',
|
||||
'city' => 'City',
|
||||
'contact' => 'Contact Name',
|
||||
'country' => 'Country',
|
||||
'create' => 'Create Supplier',
|
||||
'city' => 'Město',
|
||||
'contact' => 'Kontaktní osoba',
|
||||
'country' => 'Země',
|
||||
'create' => 'Nový dodavatel',
|
||||
'email' => 'Email',
|
||||
'fax' => 'Fax',
|
||||
'id' => 'ID',
|
||||
'licenses' => 'Licenses',
|
||||
'name' => 'Supplier Name',
|
||||
'notes' => 'Notes',
|
||||
'phone' => 'Phone',
|
||||
'state' => 'State',
|
||||
'suppliers' => 'Suppliers',
|
||||
'licenses' => 'Licence',
|
||||
'name' => 'Dodavatel',
|
||||
'notes' => 'Poznámky',
|
||||
'phone' => 'Telefon',
|
||||
'state' => 'Stát',
|
||||
'suppliers' => 'Dodavatelé',
|
||||
'update' => 'Update Supplier',
|
||||
'url' => 'URL',
|
||||
'view' => 'View Supplier',
|
||||
'view' => 'Zobrazit dodavatele',
|
||||
'view_assets_for' => 'View Assets for',
|
||||
'zip' => 'Postal Code',
|
||||
'zip' => 'PSČ',
|
||||
|
||||
);
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
|
||||
return array(
|
||||
|
||||
'assets_user' => 'Assets assigned to :name',
|
||||
'clone' => 'Clone User',
|
||||
'contact_user' => 'Contact :name',
|
||||
'edit' => 'Edit User',
|
||||
'history_user' => 'History for :name',
|
||||
'last_login' => 'Last Login',
|
||||
'software_user' => 'Software Checked out to :name',
|
||||
'view_user' => 'View User :name',
|
||||
'usercsv' => 'CSV file',
|
||||
'assets_user' => 'Assets assigned to :name',
|
||||
'clone' => 'Duplikuj uživatele',
|
||||
'contact_user' => 'Kontakt na :name',
|
||||
'edit' => 'Upravit uživatele',
|
||||
'filetype_info' => 'Povolené přílohy: png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'history_user' => 'Historie:',
|
||||
'last_login' => 'Poslední přihlášení',
|
||||
'software_user' => 'Software Checked out to :name',
|
||||
'view_user' => 'Zobraz uživatele',
|
||||
'usercsv' => 'CSV soubor',
|
||||
);
|
||||
|
||||
@@ -2,20 +2,22 @@
|
||||
|
||||
return array(
|
||||
|
||||
'user_exists' => 'User already exists!',
|
||||
'user_not_found' => 'User [:id] does not exist.',
|
||||
'user_login_required' => 'The login field is required',
|
||||
'user_password_required' => 'The password is required.',
|
||||
'insufficient_permissions' => 'Insufficient Permissions.',
|
||||
'user_deleted_warning' => 'This user has been deleted. You will have to restore this user to edit them or assign them new assets.',
|
||||
'accepted' => 'You have successfully accepted this asset.',
|
||||
'declined' => 'You have successfully declined this asset.',
|
||||
'user_exists' => 'Uživatel již existuje!',
|
||||
'user_not_found' => 'Uživatel [:id] neexistuje.',
|
||||
'user_login_required' => 'The login field is required',
|
||||
'user_password_required' => 'Je vyžadováno heslo.',
|
||||
'insufficient_permissions' => 'Insufficient Permissions.',
|
||||
'user_deleted_warning' => 'This user has been deleted. You will have to restore this user to edit them or assign them new assets.',
|
||||
|
||||
|
||||
'success' => array(
|
||||
'create' => 'User was successfully created.',
|
||||
'create' => 'Uživatel byl úspěšně vytvořen.',
|
||||
'update' => 'User was successfully updated.',
|
||||
'delete' => 'User was successfully deleted.',
|
||||
'ban' => 'User was successfully banned.',
|
||||
'unban' => 'User was successfully unbanned.',
|
||||
'unban' => 'Uživatel byl úspěšně povolen.',
|
||||
'suspend' => 'User was successfully suspended.',
|
||||
'unsuspend' => 'User was successfully unsuspended.',
|
||||
'restored' => 'User was successfully restored.',
|
||||
@@ -29,6 +31,19 @@ return array(
|
||||
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
|
||||
'import' => 'There was an issue importing users. Please try again.',
|
||||
'asset_already_accepted' => 'This asset has already been accepted.',
|
||||
'accept_or_decline' => 'You must either accept or decline this asset.',
|
||||
),
|
||||
|
||||
'deletefile' => array(
|
||||
'error' => 'Soubor nebyl smazán. Prosím zkuste to znovu.',
|
||||
'success' => 'Soubor byl úspěšně smazán.',
|
||||
),
|
||||
|
||||
'upload' => array(
|
||||
'error' => 'File(s) not uploaded. Please try again.',
|
||||
'success' => 'File(s) successfully uploaded.',
|
||||
'nofiles' => 'You did not select any files for upload',
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
@@ -2,35 +2,35 @@
|
||||
|
||||
return array(
|
||||
|
||||
'activated' => 'Active',
|
||||
'allow' => 'Allow',
|
||||
'activated' => 'Aktivní',
|
||||
'allow' => 'Povolit',
|
||||
'checkedout' => 'Assets',
|
||||
'created_at' => 'Created',
|
||||
'createuser' => 'Create User',
|
||||
'created_at' => 'Vytvořeno',
|
||||
'createuser' => 'Nový uživatel',
|
||||
'deny' => 'Deny',
|
||||
'email' => 'Email',
|
||||
'employee_num' => 'Employee No.',
|
||||
'first_name' => 'First Name',
|
||||
'employee_num' => 'Osobní číslo',
|
||||
'first_name' => 'Jméno',
|
||||
'groupnotes' => 'Select a group to assign to the user, remember that a user takes on the permissions of the group they are assigned.',
|
||||
'id' => 'Id',
|
||||
'id' => 'ID',
|
||||
'inherit' => 'Inherit',
|
||||
'job' => 'Job Title',
|
||||
'last_login' => 'Last Login',
|
||||
'last_name' => 'Last Name',
|
||||
'location' => 'Location',
|
||||
'last_login' => 'Poslední přihlášení',
|
||||
'last_name' => 'Příjmení',
|
||||
'location' => 'Umístění',
|
||||
'lock_passwords' => 'Login details cannot be changed on this installation.',
|
||||
'manager' => 'Manager',
|
||||
'name' => 'Name',
|
||||
'notes' => 'Notes',
|
||||
'password_confirm' => 'Confirm Password',
|
||||
'password' => 'Password',
|
||||
'phone' => 'Phone',
|
||||
'manager' => 'Nadřízený',
|
||||
'name' => 'Položka',
|
||||
'notes' => 'Poznámky',
|
||||
'password_confirm' => 'Potvrzení hesla',
|
||||
'password' => 'Heslo',
|
||||
'phone' => 'Telefon',
|
||||
'show_current' => 'Show Current Users',
|
||||
'show_deleted' => 'Show Deleted Users',
|
||||
'title' => 'Title',
|
||||
'updateuser' => 'Update User',
|
||||
'username' => 'Username',
|
||||
'username' => 'Uživatelské jméno',
|
||||
'username_note' => '(This is used for Active Directory binding only, not for login.)',
|
||||
'cloneuser' => 'Clone User',
|
||||
'viewusers' => 'View Users',
|
||||
'cloneuser' => 'Duplikuj uživatele',
|
||||
'viewusers' => 'Zobrazit uživatele',
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'account_already_exists' => 'Účet s tímto emailem již existuje.',
|
||||
'account_not_found' => 'Emailový účet nebo heslo je nesprávné.',
|
||||
'account_not_found' => 'Neexistující uživatel nebo chybné heslo!',
|
||||
'account_not_activated' => 'Uživatelský účet není aktivován.',
|
||||
'account_suspended' => 'Uživatelský účet je pozastaven.',
|
||||
'account_banned' => 'Uživatelský účet je zablokován.',
|
||||
|
||||
@@ -1,11 +1,9 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
|
||||
return [
|
||||
'accessories' => 'Příslušenství',
|
||||
'accessory' => 'Příslušenství',
|
||||
'action' => 'Action',
|
||||
'action' => 'Akce',
|
||||
'activity_report' => 'Report aktivity',
|
||||
'address' => 'Adresa',
|
||||
'admin' => 'Admin',
|
||||
@@ -21,9 +19,10 @@ return array(
|
||||
'avatar_delete' => 'Smazat avatara',
|
||||
'avatar_upload' => 'Nahrát avatara',
|
||||
'back' => 'Zpět',
|
||||
'bad_data' => 'Nothing found. Maybe bad data?',
|
||||
'cancel' => 'Storno',
|
||||
'categories' => 'Categories',
|
||||
'category' => 'Category',
|
||||
'categories' => 'Kategorie',
|
||||
'category' => 'Kategorie',
|
||||
'changeemail' => 'Změnit e-mailovou adresu',
|
||||
'changepassword' => 'Změnit heslo',
|
||||
'checkin' => 'Příjem',
|
||||
@@ -36,7 +35,7 @@ return array(
|
||||
'create' => 'Vytvořit nové',
|
||||
'created_asset' => 'vytvořit majetek',
|
||||
'created_at' => 'Vytvořeno',
|
||||
'currency' => 'Kč',
|
||||
'currency' => 'Kč', // this is deprecated
|
||||
'current' => 'Aktuální',
|
||||
'custom_report' => 'Vlastní report majetku',
|
||||
'dashboard' => 'Nástěnka',
|
||||
@@ -60,6 +59,9 @@ return array(
|
||||
'id' => 'ID',
|
||||
'image_delete' => 'Smazat obrázek',
|
||||
'image_upload' => 'Nahrát obrázek',
|
||||
'asset_maintenance' => 'Asset Maintenance',
|
||||
'asset_maintenance_report' => 'Asset Maintenance Report',
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'item' => 'Položka',
|
||||
'last' => 'Poslední',
|
||||
'last_name' => 'Příjmení',
|
||||
@@ -69,6 +71,8 @@ return array(
|
||||
'licenses' => 'Licence',
|
||||
'list_all' => 'Vypsat vše',
|
||||
'loading' => 'Nahrávání',
|
||||
'lock_passwords' => 'This field cannot be edited in this installation.',
|
||||
'feature_disabled' => 'This feature has been disabled for this installation.',
|
||||
'location' => 'Lokalita',
|
||||
'locations' => 'Umístění',
|
||||
'logout' => 'Odhlásit',
|
||||
@@ -92,7 +96,7 @@ return array(
|
||||
'processing' => 'Pracuji',
|
||||
'profile' => 'Váš profil',
|
||||
'qty' => 'QTY',
|
||||
'quanitity' => 'Quanitity',
|
||||
'quanitity' => 'Množství',
|
||||
'ready_to_deploy' => 'Připraveno k přidělení',
|
||||
'recent_activity' => 'Nedávná aktivita',
|
||||
'reports' => 'Reporty',
|
||||
@@ -106,6 +110,7 @@ return array(
|
||||
'select_supplier' => 'Zvolit dodavatele',
|
||||
'select_user' => 'Zvolit uživatele',
|
||||
'select_date' => 'Zvolit datum',
|
||||
'select_statuslabel' => 'Vybrat stav',
|
||||
'settings' => 'Nastavení',
|
||||
'sign_in' => 'Přihlásit se',
|
||||
'site_name' => 'Název lokality',
|
||||
@@ -118,8 +123,11 @@ return array(
|
||||
'type' => 'Typ',
|
||||
'undeployable' => 'Ne-přiřaditelné',
|
||||
'unknown_admin' => 'Neznámy správce',
|
||||
'update' => 'Aktualizace',
|
||||
'uploaded' => 'Nahráno',
|
||||
'user' => 'Uživatel',
|
||||
'accepted' => 'přijato',
|
||||
'declined' => 'zamítnuto',
|
||||
'users' => 'Uživatelé',
|
||||
'viewassets' => 'Zobrazit přiřazený majetek',
|
||||
'website' => 'Webová stránka',
|
||||
@@ -127,5 +135,4 @@ return array(
|
||||
'years' => 'roky',
|
||||
'yes' => 'Ano',
|
||||
'zip' => 'PSČ',
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -77,7 +77,7 @@ return array(
|
||||
*/
|
||||
|
||||
'custom' => array(),
|
||||
'alpha_space' => "Pole :attribute může obsahovat pouze znaky, čárky, mezery a pomlčky.",
|
||||
'alpha_space' => "Pole :attribute obsahuje nepovolené znaky.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ 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',
|
||||
'create' => 'Tilbehør Kategori',
|
||||
'create' => 'Create Accessory',
|
||||
'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.',
|
||||
@@ -13,7 +13,7 @@ return array(
|
||||
'qty' => 'STK',
|
||||
'total' => 'I alt',
|
||||
'remaining' => 'Tilgængelig',
|
||||
'update' => 'Opdater Kategori',
|
||||
'update' => 'Update Accessory',
|
||||
'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.',
|
||||
|
||||
|
||||
14
app/lang/da/admin/asset_maintenances/form.php
Executable file
14
app/lang/da/admin/asset_maintenances/form.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Asset Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Start Date',
|
||||
'completion_date' => 'Completion Date',
|
||||
'cost' => 'Cost',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
|
||||
'notes' => 'Notes',
|
||||
'update' => 'Update Asset Maintenance',
|
||||
'create' => 'Create Asset Maintenance'
|
||||
];
|
||||
11
app/lang/da/admin/asset_maintenances/general.php
Executable file
11
app/lang/da/admin/asset_maintenances/general.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'edit' => 'Edit Asset Maintenance',
|
||||
'delete' => 'Delete Asset Maintenance',
|
||||
'view' => 'View Asset Maintenance Details',
|
||||
'repair' => 'Repair',
|
||||
'maintenance' => 'Maintenance',
|
||||
'upgrade' => 'Upgrade'
|
||||
];
|
||||
17
app/lang/da/admin/asset_maintenances/message.php
Executable file
17
app/lang/da/admin/asset_maintenances/message.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'Asset Maintenance you were looking for was not found!',
|
||||
'delete' => [
|
||||
'confirm' => 'Are you sure you wish to delete this asset maintenance?',
|
||||
'error' => 'There was an issue deleting the asset maintenance. Please try again.',
|
||||
'success' => 'The asset maintenance was deleted successfully.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance was not created, please try again.',
|
||||
'success' => 'Asset Maintenance created successfully.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Not Completed Yet',
|
||||
'warranty' => 'Warranty',
|
||||
'not_warranty' => 'Not Warranty',
|
||||
];
|
||||
9
app/lang/da/admin/asset_maintenances/table.php
Executable file
9
app/lang/da/admin/asset_maintenances/table.php
Executable file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Asset Name',
|
||||
'supplier_name' => 'Supplier Name',
|
||||
'is_warranty' => 'Warranty',
|
||||
'dl_csv' => 'Download CSV'
|
||||
];
|
||||
@@ -5,6 +5,7 @@ return array(
|
||||
'about_categories' => 'Aktiver kategorier hjælper dig med at organisere dine aktiver. Eksempler på kategorier kunne være "Stationære coputere", "Bærbare", "Mobiltelefoner", "Tabletter" osv., men du kan bruge aktiver kategorier på en hvilken som helst måde som giver mening for dig.',
|
||||
'asset_categories' => 'Aktiver Kategorier',
|
||||
'category_name' => 'Kategorinavn',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'clone' => 'Klon Kategori',
|
||||
'create' => 'Opret kategori',
|
||||
'edit' => 'Rediger Kategori',
|
||||
|
||||
@@ -3,6 +3,9 @@
|
||||
return array(
|
||||
'about_consumables_title' => 'About Consumables',
|
||||
'about_consumables_text' => 'Consumables are anything purchased that will be used up over time. For example, printer ink or copier paper.',
|
||||
'consumable_name' => 'Consumable Name',
|
||||
'create' => 'Create Consumable',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'update' => 'Update Consumable',
|
||||
);
|
||||
|
||||
@@ -17,9 +17,10 @@ return array(
|
||||
'default_location' => 'Standardplacering',
|
||||
'eol_date' => 'EOL Dato',
|
||||
'eol_rate' => 'EOL Rate',
|
||||
'expected_checkin' => 'Expected Checkin Date',
|
||||
'expires' => 'Udløber',
|
||||
'fully_depreciated' => 'Fuldt Afskrevet',
|
||||
'help_checkout' => 'Hvis du ønsker at tildele aktiver med det samme, bør du vælge "Klar til Implementering" fra statuslisten ovenfor ellers kan uventede ting ske. ',
|
||||
'help_checkout' => 'If you wish to assign this asset immediately, select "Ready to Deploy" from the status list above. ',
|
||||
'mac_address' => 'MAC-adresse',
|
||||
'manufacturer' => 'Producent',
|
||||
'model' => 'Model',
|
||||
|
||||
@@ -12,4 +12,6 @@ return array(
|
||||
'address' => 'Address',
|
||||
'zip' => 'Postal Code',
|
||||
'locations' => 'Locations',
|
||||
'parent' => 'Parent',
|
||||
'currency' => 'Location Currency', // this is deprecated
|
||||
);
|
||||
|
||||
@@ -10,6 +10,7 @@ return array(
|
||||
'backups' => 'Backups',
|
||||
'barcode_type' => 'Barcode Type',
|
||||
'barcode_settings' => 'Barcode Settings',
|
||||
'default_currency' => 'Default Currency',
|
||||
'default_eula_text' => 'Default EULA',
|
||||
'default_eula_help_text' => 'You can also associate custom EULAs to specific asset categories.',
|
||||
'display_asset_name' => 'Display Asset Name',
|
||||
|
||||
@@ -3,13 +3,14 @@
|
||||
|
||||
return array(
|
||||
|
||||
'assets_user' => 'Assets assigned to :name',
|
||||
'clone' => 'Clone User',
|
||||
'contact_user' => 'Contact :name',
|
||||
'edit' => 'Edit User',
|
||||
'history_user' => 'History for :name',
|
||||
'last_login' => 'Last Login',
|
||||
'software_user' => 'Software Checked out to :name',
|
||||
'view_user' => 'View User :name',
|
||||
'usercsv' => 'CSV file',
|
||||
'assets_user' => 'Assets assigned to :name',
|
||||
'clone' => 'Clone User',
|
||||
'contact_user' => 'Contact :name',
|
||||
'edit' => 'Edit User',
|
||||
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'history_user' => 'History for :name',
|
||||
'last_login' => 'Last Login',
|
||||
'software_user' => 'Software Checked out to :name',
|
||||
'view_user' => 'View User :name',
|
||||
'usercsv' => 'CSV file',
|
||||
);
|
||||
|
||||
@@ -2,12 +2,14 @@
|
||||
|
||||
return array(
|
||||
|
||||
'user_exists' => 'User already exists!',
|
||||
'user_not_found' => 'User [:id] does not exist.',
|
||||
'user_login_required' => 'The login field is required',
|
||||
'user_password_required' => 'The password is required.',
|
||||
'insufficient_permissions' => 'Insufficient Permissions.',
|
||||
'user_deleted_warning' => 'This user has been deleted. You will have to restore this user to edit them or assign them new assets.',
|
||||
'accepted' => 'You have successfully accepted this asset.',
|
||||
'declined' => 'You have successfully declined this asset.',
|
||||
'user_exists' => 'User already exists!',
|
||||
'user_not_found' => 'User [:id] does not exist.',
|
||||
'user_login_required' => 'The login field is required',
|
||||
'user_password_required' => 'The password is required.',
|
||||
'insufficient_permissions' => 'Insufficient Permissions.',
|
||||
'user_deleted_warning' => 'This user has been deleted. You will have to restore this user to edit them or assign them new assets.',
|
||||
|
||||
|
||||
'success' => array(
|
||||
@@ -29,6 +31,19 @@ return array(
|
||||
'unsuspend' => 'There was an issue unsuspending the user. Please try again.',
|
||||
'import' => 'There was an issue importing users. Please try again.',
|
||||
'asset_already_accepted' => 'This asset has already been accepted.',
|
||||
'accept_or_decline' => 'You must either accept or decline this asset.',
|
||||
),
|
||||
|
||||
'deletefile' => array(
|
||||
'error' => 'File not deleted. Please try again.',
|
||||
'success' => 'File successfully deleted.',
|
||||
),
|
||||
|
||||
'upload' => array(
|
||||
'error' => 'File(s) not uploaded. Please try again.',
|
||||
'success' => 'File(s) successfully uploaded.',
|
||||
'nofiles' => 'You did not select any files for upload',
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
@@ -3,7 +3,7 @@
|
||||
return array(
|
||||
|
||||
'account_already_exists' => 'En konto med denne e-mail eksisterer allerede.',
|
||||
'account_not_found' => 'E-mail konto eller adgangskode er forkert.',
|
||||
'account_not_found' => 'The username or password is incorrect.',
|
||||
'account_not_activated' => 'Denne brugerkonto er ikke aktiveret.',
|
||||
'account_suspended' => 'Denne brugerkonto er suspenderet.',
|
||||
'account_banned' => 'Denne brugerkonto er blokeret.',
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
|
||||
return [
|
||||
'accessories' => 'Tilbehør',
|
||||
'accessory' => 'Tilbehør',
|
||||
'action' => 'Action',
|
||||
@@ -21,6 +19,7 @@ return array(
|
||||
'avatar_delete' => 'Slet avatar',
|
||||
'avatar_upload' => 'Upload Avatar',
|
||||
'back' => 'Tilbage',
|
||||
'bad_data' => 'Nothing found. Maybe bad data?',
|
||||
'cancel' => 'Annuller',
|
||||
'categories' => 'Categories',
|
||||
'category' => 'Category',
|
||||
@@ -36,7 +35,7 @@ return array(
|
||||
'create' => 'Opret ny',
|
||||
'created_asset' => 'skabte aktiver',
|
||||
'created_at' => 'Skabt den',
|
||||
'currency' => '$',
|
||||
'currency' => '$', // this is deprecated
|
||||
'current' => 'Aktuelle',
|
||||
'custom_report' => 'Tilpasset Aktiv Rapport',
|
||||
'dashboard' => 'Oversigtspanel',
|
||||
@@ -60,6 +59,9 @@ return array(
|
||||
'id' => 'ID',
|
||||
'image_delete' => 'Slet billede',
|
||||
'image_upload' => 'Upload billede',
|
||||
'asset_maintenance' => 'Asset Maintenance',
|
||||
'asset_maintenance_report' => 'Asset Maintenance Report',
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'item' => 'Item',
|
||||
'last' => 'Last',
|
||||
'last_name' => 'Efternavn',
|
||||
@@ -69,6 +71,8 @@ return array(
|
||||
'licenses' => 'Licenser',
|
||||
'list_all' => 'Vis alle',
|
||||
'loading' => 'Loading',
|
||||
'lock_passwords' => 'This field cannot be edited in this installation.',
|
||||
'feature_disabled' => 'This feature has been disabled for this installation.',
|
||||
'location' => 'Lokation',
|
||||
'locations' => 'Lokationer',
|
||||
'logout' => 'Log ud',
|
||||
@@ -106,6 +110,7 @@ return array(
|
||||
'select_supplier' => 'Select a Supplier',
|
||||
'select_user' => 'Select a User',
|
||||
'select_date' => 'Select Date',
|
||||
'select_statuslabel' => 'Select Status',
|
||||
'settings' => 'Instillinger',
|
||||
'sign_in' => 'Log ind',
|
||||
'site_name' => 'Site Navn',
|
||||
@@ -118,8 +123,11 @@ return array(
|
||||
'type' => 'Type',
|
||||
'undeployable' => 'Ikke implementerbar',
|
||||
'unknown_admin' => 'Ukendt Admin',
|
||||
'update' => 'Update',
|
||||
'uploaded' => 'Uploaded',
|
||||
'user' => 'Bruger',
|
||||
'accepted' => 'accepted',
|
||||
'declined' => 'declined',
|
||||
'users' => 'Brugere',
|
||||
'viewassets' => 'Se Tildelte Aktiver',
|
||||
'website' => 'Hjemmeside',
|
||||
@@ -127,5 +135,4 @@ return array(
|
||||
'years' => 'år',
|
||||
'yes' => 'Ja',
|
||||
'zip' => 'Postnummer',
|
||||
|
||||
);
|
||||
];
|
||||
|
||||
@@ -77,7 +77,7 @@ return array(
|
||||
*/
|
||||
|
||||
'custom' => array(),
|
||||
'alpha_space' => ":attribute feltet må kun indeholde bogstaver, kommaer, mellemrum eller bindestreger.",
|
||||
'alpha_space' => "The :attribute field contains a character that is not allowed.",
|
||||
|
||||
/*
|
||||
|--------------------------------------------------------------------------
|
||||
|
||||
@@ -5,7 +5,7 @@ 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',
|
||||
'create' => 'Kategorie erstellen',
|
||||
'create' => 'Create Accessory',
|
||||
'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.',
|
||||
@@ -13,7 +13,7 @@ return array(
|
||||
'qty' => 'Anzahl',
|
||||
'total' => 'Gesamt',
|
||||
'remaining' => 'Verfügbar',
|
||||
'update' => 'Kategorie aktualisieren',
|
||||
'update' => 'Update Accessory',
|
||||
'use_default_eula' => 'Die <a href="#" data-toggle="modal" data-target="#eulaModal">Standard EULA</a> statt dessen verwenden.',
|
||||
'use_default_eula_disabled' => '<del>Die Standard EULA statt dessen verwenden.</del>Keine Standard EULA definiert. Bitte fügen Sie eine in den Einstellungen hinzu.',
|
||||
|
||||
|
||||
14
app/lang/de/admin/asset_maintenances/form.php
Executable file
14
app/lang/de/admin/asset_maintenances/form.php
Executable file
@@ -0,0 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Asset Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Start Date',
|
||||
'completion_date' => 'Completion Date',
|
||||
'cost' => 'Cost',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Asset Maintenance Time (in days)',
|
||||
'notes' => 'Notes',
|
||||
'update' => 'Update Asset Maintenance',
|
||||
'create' => 'Create Asset Maintenance'
|
||||
];
|
||||
11
app/lang/de/admin/asset_maintenances/general.php
Executable file
11
app/lang/de/admin/asset_maintenances/general.php
Executable file
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'edit' => 'Edit Asset Maintenance',
|
||||
'delete' => 'Delete Asset Maintenance',
|
||||
'view' => 'View Asset Maintenance Details',
|
||||
'repair' => 'Repair',
|
||||
'maintenance' => 'Maintenance',
|
||||
'upgrade' => 'Upgrade'
|
||||
];
|
||||
17
app/lang/de/admin/asset_maintenances/message.php
Executable file
17
app/lang/de/admin/asset_maintenances/message.php
Executable file
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'Asset Maintenance you were looking for was not found!',
|
||||
'delete' => [
|
||||
'confirm' => 'Are you sure you wish to delete this asset maintenance?',
|
||||
'error' => 'There was an issue deleting the asset maintenance. Please try again.',
|
||||
'success' => 'The asset maintenance was deleted successfully.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance was not created, please try again.',
|
||||
'success' => 'Asset Maintenance created successfully.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Not Completed Yet',
|
||||
'warranty' => 'Warranty',
|
||||
'not_warranty' => 'Not Warranty',
|
||||
];
|
||||
9
app/lang/de/admin/asset_maintenances/table.php
Executable file
9
app/lang/de/admin/asset_maintenances/table.php
Executable file
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Asset Name',
|
||||
'supplier_name' => 'Supplier Name',
|
||||
'is_warranty' => 'Warranty',
|
||||
'dl_csv' => 'Download CSV'
|
||||
];
|
||||
@@ -5,6 +5,7 @@ return array(
|
||||
'about_categories' => 'Kategorien helfen Ihnen dabei, Ihre Assets zu organisieren. Beispielkategorien sind "Schreibtische", "Laptops", "Handys", "Tablets" usw., jedoch können Sie Kategorien nutzen, wie es für Sie sinnvoll erscheint.',
|
||||
'asset_categories' => 'Asset-Kategorien',
|
||||
'category_name' => 'Kategoriename',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'clone' => 'Kategorie duplizieren',
|
||||
'create' => 'Kategorie erstellen',
|
||||
'edit' => 'Kategorie bearbeiten',
|
||||
|
||||
@@ -1,8 +1,11 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'about_consumables_title' => 'About Consumables',
|
||||
'about_consumables_text' => 'Consumables are anything purchased that will be used up over time. For example, printer ink or copier paper.',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'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' => 'Consumable Name',
|
||||
'create' => 'Create Consumable',
|
||||
'remaining' => 'übrig',
|
||||
'total' => 'Gesamt',
|
||||
'update' => 'Update Consumable',
|
||||
);
|
||||
|
||||
@@ -2,34 +2,34 @@
|
||||
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Consumable does not exist.',
|
||||
'does_not_exist' => 'Verbrauchsmaterial existiert nicht.',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Consumable was not created, please try again.',
|
||||
'success' => 'Consumable created successfully.'
|
||||
'error' => 'Verbrauchsmaterial konnte nicht angelegt werden, bitte versuchen Sie es erneut.',
|
||||
'success' => 'Verbrauchsmaterial erfolgreich angelegt.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Consumable was not updated, please try again',
|
||||
'success' => 'Consumable updated successfully.'
|
||||
'error' => 'Verbrauchsmaterial konnte nicht aktualisiert werden, bitte versuchen Sie es erneut',
|
||||
'success' => 'Verbrauchsmaterial erfolgreich aktualisiert.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this accessory?',
|
||||
'error' => 'There was an issue deleting the consumable. Please try again.',
|
||||
'success' => 'The accessory was deleted successfully.'
|
||||
'confirm' => 'Wollen Sie dieses Zubehör wirklich löschen?',
|
||||
'error' => 'Es gab Probleme das Verbrauchsmaterial zu löschen. Bitte versuchen Sie es noch einmal.',
|
||||
'success' => 'Zubehör wurde erfolgreich gelöscht.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
'error' => 'Consumable was not checked out, please try again',
|
||||
'success' => 'Consumable checked out successfully.',
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.'
|
||||
'error' => 'Das Verbrauchsmaterial wurde nicht ausgetragen, bitte versuchen Sie es erneut',
|
||||
'success' => 'Verbrauchsmaterial wurde erfolgreich ausgetragen.',
|
||||
'user_does_not_exist' => 'Der angegebene Benutzer ist ungültig. Bitte erneut versuchen.'
|
||||
),
|
||||
|
||||
'checkin' => array(
|
||||
'error' => 'Consumable was not checked in, please try again',
|
||||
'success' => 'Consumable checked in successfully.',
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.'
|
||||
'error' => 'Das Verbrauchsmaterial konnte nicht aufgenommen werden, bitte versuchen Sie es erneut',
|
||||
'success' => 'Verbrauchsmaterial erfolgreich hinzugefügt.',
|
||||
'user_does_not_exist' => 'Dieser Benutzer ist ungültig. Bitte versuchen Sie es noch einmal.'
|
||||
)
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'title' => 'Consumable Name',
|
||||
'title' => 'Name des Verbrauchsmaterials',
|
||||
);
|
||||
|
||||
@@ -17,9 +17,10 @@ return array(
|
||||
'default_location' => 'Standard Lagerort',
|
||||
'eol_date' => 'End of Live Datum (Ende der Nutzungsdauer)',
|
||||
'eol_rate' => 'EOL Rate',
|
||||
'expected_checkin' => 'Expected Checkin Date',
|
||||
'expires' => 'Gültig bis',
|
||||
'fully_depreciated' => 'Komplett Abgeschrieben',
|
||||
'help_checkout' => 'Wenn du dieses Asset sofort zuweisen möchtest, solltest du "Ready to Deploy" im Statusfeld auswählen oder es könnten unerwartete Probleme auftreten. ',
|
||||
'help_checkout' => 'If you wish to assign this asset immediately, select "Ready to Deploy" from the status list above. ',
|
||||
'mac_address' => 'MAC Adresse',
|
||||
'manufacturer' => 'Hersteller',
|
||||
'model' => 'Modell',
|
||||
|
||||
@@ -9,7 +9,7 @@ return array(
|
||||
'deployable' => 'Einsetzbar',
|
||||
'deleted' => 'Dieses Asset wurde gelöscht. <a href="/hardware/:asset_id/restore">Zur Wiederherstellung hier klicken</a>.',
|
||||
'edit' => 'Asset editieren',
|
||||
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'filetype_info' => 'Erlaubte Dateitypen sind png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, oder rar.',
|
||||
'model_deleted' => 'Dieses Asset wurde gelöscht. Sie müssen das Modell Wiederherstellen bevor Sie das Asset Wiederherstellen können <br/><a href="/hardware/models/:model_id/restore">klicken Sie hier um das Modell wiederherzustellen</a>.',
|
||||
'requestable' => 'Anforderbar',
|
||||
'restore' => 'Asset wiederherstellen',
|
||||
|
||||
@@ -15,7 +15,7 @@ return array(
|
||||
'notes' => 'Notizen',
|
||||
'order' => 'Bestellnr.',
|
||||
'purchase_order' => 'Bestellnummer',
|
||||
'reassignable' => 'Reassignable',
|
||||
'reassignable' => 'Zuweisbar',
|
||||
'remaining_seats' => 'Verbleibende Aktivierungen',
|
||||
'seats' => 'Anzahl Aktivierungen',
|
||||
'serial' => 'Seriennummer',
|
||||
|
||||
@@ -12,4 +12,6 @@ return array(
|
||||
'address' => 'Adresse',
|
||||
'zip' => 'Postleitzahl',
|
||||
'locations' => 'Standorte',
|
||||
'parent' => 'Parent',
|
||||
'currency' => 'Location Currency', // this is deprecated
|
||||
);
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user