Compare commits

...

132 Commits

Author SHA1 Message Date
snipe e1724cf25f Merge remote-tracking branch 'origin/develop' into 2.0
# Conflicts:
#	.gitignore
#	app/config/production/session.example.php
#	app/config/staging/session.example.php
#	app/config/version.php
#	app/models/User.php
2015-07-09 01:02:49 -07:00
snipe 2d10931d6c Use league/csv for export 2015-07-08 23:42:17 -07:00
snipe 4a5066054b Display bugfixes for #819 2015-07-08 22:38:35 -07:00
snipe 84ffc1a728 Migration for location-specific currency, updated views for #819
This isn't done yet though. All kinds of busted stuff.
2015-07-08 20:35:40 -07:00
snipe 74429d9075 Merge remote-tracking branch 'origin/develop' into 2.0
# Conflicts:
#	app/lang/en/general.php
#	app/start/artisan.php
#	app/views/backend/hardware/edit.blade.php
#	app/views/backend/layouts/default.blade.php
2015-07-08 18:07:53 -07:00
snipe 1edce0a4fa Merge branch '2.0' of github.com:snipe/snipe-it into 2.0 2015-07-06 19:29:22 -07:00
snipe 7da7907fbd Merge remote-tracking branch 'origin/develop' into 2.0
# Conflicts:
#	app/controllers/admin/AssetsController.php
2015-07-06 19:29:06 -07:00
snipe 32a0f6eb92 Merge pull request #892 from madd15/patch-4
Fix Model Validation for create and edit
2015-07-06 18:07:30 -07:00
madd15 1301119c9a Remove unique from modelno validation rule 2015-07-07 09:50:43 +09:30
madd15 c7f2dc83db Remove $new and replace with Input::all() 2015-07-07 09:50:00 +09:30
madd15 3664e75c47 Change validation to work correctly 2015-07-07 08:51:38 +09:30
snipe 674348b5a5 Smaller text requirement for address2 2015-07-06 14:06:31 -07:00
snipe 7d5810b656 Merge remote-tracking branch 'origin/develop' into 2.0
# Conflicts:
#	app/config/version.php
#	app/controllers/admin/AssetsController.php
2015-07-02 17:23:06 -07:00
snipe d4af197b0e Merge pull request #886 from madd15/Fix---Edit-user
Fix - Edit User
2015-07-01 19:51:33 -07:00
snipe be685467eb Merge pull request #883 from madd15/patch-2
Update Category Types Array to include Consumable
2015-07-01 19:50:36 -07:00
madd15 7a0b3a7350 Allow saving of Username and Email changes
I noted that i was unable to change the username or email fields, but also that the username validation would not allow the form to save as it was checking against itself for being unique.
2015-07-02 12:16:01 +09:30
madd15 55f544829d Update Category Types Array to include Consumable 2015-07-01 17:28:58 +09:30
snipe bb7ce83c48 Merge remote-tracking branch 'origin/develop' into 2.0 2015-06-30 22:42:00 -07:00
snipe a8cb5c1e7d Beginning QR mobile interface 2015-06-30 19:07:44 -07:00
snipe 1fb2878772 Updated activity report for consumables 2015-06-25 18:47:03 -07:00
snipe 84e130d6aa Fixes #869 - compatibility mode for IE 2015-06-25 16:22:07 -07:00
snipe edfa064fd4 Disable emailing imported users if demo mode 2015-06-23 18:38:21 -07:00
snipe 3caded990a Added parent string 2015-06-23 18:32:06 -07:00
snipe 3bca2566d7 Added missing create/update consumable string 2015-06-23 16:35:38 -07:00
snipe 1aa4841868 Remove extra debugging 2015-06-23 16:30:29 -07:00
snipe fc1e8a4e4e Minor comment tweak 2015-06-23 15:05:21 -07:00
snipe bf3cb73070 Include location ID on user import 2015-06-23 15:05:11 -07:00
snipe d77e763f86 Change badge to label 2015-06-23 15:04:35 -07:00
snipe 8ef3d00f22 Fixed language string for users 2015-06-23 14:10:15 -07:00
snipe 5266c22890 Show consumable checkout date 2015-06-23 14:10:04 -07:00
snipe 26540b1aac Updated bad data string 2015-06-23 14:02:01 -07:00
snipe 39a3b93537 Pagination on user history 2015-06-23 14:01:48 -07:00
snipe ba13101f64 Bad data language string 2015-06-23 13:48:56 -07:00
snipe ce55b7ab2f Tightened up history snapshot on dashboard 2015-06-23 13:46:06 -07:00
snipe 28a9f90a72 Lazy eager load history for optimized queries 2015-06-23 13:44:49 -07:00
snipe f2a2ccdab4 Nicer display for profile 2015-06-23 12:59:55 -07:00
snipe f2e1ec0928 Fixed QR simple view route 2015-06-23 12:59:33 -07:00
snipe 17ca66f4a2 Added update string 2015-06-23 12:59:19 -07:00
snipe a43f075ff0 Wider profile box view 2015-06-23 12:46:08 -07:00
snipe c87d4ad801 Eager load dashboard queries 2015-06-23 11:52:18 -07:00
snipe d94cc1f17d Add consumables log 2015-06-23 11:52:07 -07:00
snipe f30285eaea Added text string for consumable name 2015-06-23 11:39:28 -07:00
snipe 20d35953f1 Remove consumable category 2015-06-23 11:39:17 -07:00
snipe 537630bae4 Removed unneeded stylesheet 2015-06-23 11:33:31 -07:00
snipe 85d6b062f3 Fixed checkbox alignment 2015-06-23 11:32:32 -07:00
snipe 74a9a176e9 New language strings 2015-06-23 10:25:44 -07:00
snipe 94f8c61720 Fixes #280, #64 and #860 - added license expiration alert 2015-06-23 01:52:06 -07:00
snipe 75b9b70a86 Fix email field so it's nullable, fix app command to add user 2015-06-23 00:11:54 -07:00
snipe 2e585f9cd2 Fixes #839 - bad seed data 2015-06-23 00:11:06 -07:00
snipe edddf6ae80 Fixes #833 - remove status label field if asset is checked out 2015-06-22 20:01:02 -07:00
snipe ea0f2c5f34 Fixes #833 - remove status label field if asset is checked out 2015-06-22 20:00:28 -07:00
snipe 826d3ccae8 Eager loading user info 2015-06-22 17:57:55 -07:00
snipe fd7d4eb3f2 Removed checkin for consumables 2015-06-22 17:57:44 -07:00
snipe e8e0c7bfe4 Missing filetype info string 2015-06-22 17:57:21 -07:00
snipe ccdda7b8e8 Missing reassignable string 2015-06-22 17:57:09 -07:00
snipe 9abafba180 Updates to consumables view 2015-06-22 17:56:58 -07:00
snipe 2ed47a6089 Removed old file 2015-06-22 17:56:42 -07:00
snipe 818d1769b8 Automated backup to dump SQL and zip uploaded files
Usage:

`php artisan snipeit:backup`

This can be set on a cron or scheduled task
2015-06-22 15:52:26 -07:00
snipe bf6674f6a0 Added table prefix for raw queries 2015-06-19 18:03:28 -07:00
snipe ee08586279 Trying to regain compatibility with PHP 5.4 2015-06-19 17:59:10 -07:00
snipe ef75880398 Added backups to topnav 2015-06-19 17:58:53 -07:00
snipe 221ae62ea5 Example configs 2015-06-19 17:38:06 -07:00
snipe 40c59e664b Backup language string 2015-06-19 17:37:58 -07:00
snipe 61e3381b24 Backup routes 2015-06-19 17:37:49 -07:00
snipe 3dfa1e1ea7 Backups blade 2015-06-19 17:37:40 -07:00
snipe c0fab2f425 Updated deps to still allow for 5.4 (I hope?) 2015-06-19 17:37:32 -07:00
snipe ffdd437e47 Ignore SQL dumps 2015-06-19 17:31:51 -07:00
snipe 76825441b9 Added session config to allow for forced SSL 2015-06-19 14:46:16 -07:00
snipe 8e83206556 Added dumps directory 2015-06-19 14:40:23 -07:00
snipe 2aa357f315 Added fideveloper proxy and DB backup 2015-06-19 14:28:40 -07:00
snipe df59e7f699 New strings 2015-06-19 11:44:19 -07:00
snipe d0216d76f8 Updated to generic strings 2015-06-18 15:00:41 -07:00
snipe ec10526d69 Center envelope in user listing 2015-06-18 15:00:32 -07:00
snipe 49b746a811 QTY strings 2015-06-18 15:00:23 -07:00
snipe 1013580236 Fixed typo 2015-06-18 15:00:16 -07:00
snipe 98d9a2e6f9 Bold current page number 2015-06-18 14:36:32 -07:00
snipe e4217af1ec Minified 2015-06-18 14:36:23 -07:00
snipe 3d4607ebd3 Fixes #858 - find admin group by name instead of ID for consideration of clustered DBs 2015-06-17 17:16:05 -07:00
snipe 2be1d64de3 Merge remote-tracking branch 'origin/develop' into 1.3.0 2015-06-16 12:56:14 -07:00
snipe 16ec68e0b6 Hide email icon if no email address is provided 2015-06-16 01:45:34 -07:00
snipe 3ce9500d75 Moved password up with other required fields 2015-06-16 00:20:43 -07:00
snipe c699452473 Bumped version 2015-06-15 18:39:42 -07:00
snipe d943408f44 Location and email not required, username required 2015-06-15 18:39:34 -07:00
snipe a7aee2fe1c Location no longer required for users 2015-06-15 18:39:02 -07:00
snipe 32f3740eda Update email for #165 to reflect username 2015-06-15 18:38:52 -07:00
snipe f42540fedf More fixes for #165 - added username field 2015-06-15 12:40:27 -07:00
snipe f25b90ee27 Set https as default app url 2015-06-15 12:39:43 -07:00
snipe fdef266089 Addresses #577 and fixes #165 - switch from email to username 2015-06-15 12:16:39 -07:00
snipe c4375f9fbc Merge remote-tracking branch 'origin/develop' into 1.3.0
# Conflicts:
#	app/controllers/admin/UsersController.php
2015-06-15 11:30:40 -07:00
snipe d0189fb076 Added consumables to user matrix for #782 2015-06-09 20:05:24 -07:00
snipe e4517a8782 Removed checkin for #782, since that doesn't exist in consumables 2015-06-09 19:58:22 -07:00
snipe 19604480bb Consumables section
TODO:

- Add checkout to location
- Drop Checkin (doesn't really exist in this context)
- Add missing strings - consolidate where possible. Lots of dupes :-/
2015-06-09 19:50:34 -07:00
snipe 704d66b6f3 Raw DB migration for nullable user notes 2015-06-09 17:45:11 -07:00
snipe 6315c343a7 Add consumables table 2015-06-09 17:44:59 -07:00
snipe 766b4b901f Fixes #822 - make user notes field nullable default null 2015-06-09 17:34:52 -07:00
snipe f671c89b14 Composer update for bin path 2015-06-09 17:31:28 -07:00
snipe 03bd1498e8 Added codeception 2015-06-09 16:52:08 -07:00
snipe f743bacd0f Updated language strings 2015-06-09 16:14:37 -07:00
snipe 309158352e Added Korean translation 2015-06-09 16:14:28 -07:00
snipe 2540ac09ec Fixes #822 2015-06-09 16:02:10 -07:00
snipe af2decea9d Merge remote-tracking branch 'origin/master' into 1.3.0
# Conflicts:
#	app/controllers/admin/AssetsController.php
2015-06-09 02:10:29 -07:00
snipe 9ea8316d74 Merge remote-tracking branch 'origin/develop' into 1.3.0
# Conflicts:
#	app/config/version.php
2015-06-01 17:52:39 -07:00
snipe 123caf42c2 Merge remote-tracking branch 'origin/develop' into 1.3.0
# Conflicts:
#	app/views/backend/hardware/labels.blade.php
#	app/views/backend/layouts/default.blade.php
2015-05-27 11:17:14 -07:00
snipe 5997dd9387 Missing string for action 2015-05-27 11:13:42 -07:00
snipe 9cf03e2e60 Better escaping on activity report page 2015-05-27 10:16:06 -07:00
snipe 212f09dd31 Fixes #806 2015-05-19 19:39:05 -07:00
snipe 8334e7b863 Removed extra open sans call 2015-05-19 19:37:34 -07:00
snipe a80d67c1ff Escaping on labels 2015-05-19 19:37:22 -07:00
snipe 7c95f4231e Fixes #799 - missing text in file delete confirmation 2015-05-14 20:52:19 -07:00
snipe 496a768013 Fixes #795 - add model name if no asset name 2015-05-11 19:23:11 -07:00
snipe 7415a5898f Twiddling column widths 2015-05-08 11:39:51 -07:00
snipe f1486bfee3 Nicer locations listing layout 2015-05-07 19:20:05 -07:00
snipe bc8521043b Bumped version 2015-05-07 18:21:48 -07:00
snipe 3597d71230 Eager load assigned asset locations 2015-05-07 18:21:39 -07:00
snipe d92e2eaebc Method for assigned asset locations 2015-05-07 18:21:27 -07:00
snipe 8cdea8a384 Fix for location totals 2015-05-07 18:21:10 -07:00
snipe 4457c7aec0 Removed extra commented stuff 2015-05-07 18:20:58 -07:00
snipe 95279f885b Fixes #759 - populate form with parent location info 2015-05-07 01:51:46 -07:00
snipe 75644eb894 Dashboard points to app url 2015-05-07 00:30:20 -07:00
snipe 2d7a348ab7 Fixed multi-level array nesting for locations 2015-05-07 00:15:44 -07:00
snipe 139dd13392 Super janky miulti-level menu on create - TODO: Fix this ish. 2015-05-04 18:13:26 -07:00
snipe 2f52369d07 Fixed location string 2015-05-04 15:13:04 -07:00
snipe aab52d0850 Fix for strict mode with location parent 2015-05-04 15:10:57 -07:00
snipe 71febc1c81 Added accessories and location 2015-05-04 13:31:47 -07:00
snipe 68d8b10b22 Changed text to icons for more compacted view 2015-05-04 13:31:38 -07:00
snipe 0d2333203a Display default location 2015-05-04 13:08:38 -07:00
snipe 3881e2e83e Fixes #784 - add "create accessory" to topnav 2015-05-04 11:24:25 -07:00
snipe 51eeee09d7 Fixes bug in #736 for new fields 2015-05-04 11:14:38 -07:00
snipe c487beeaca Asset counter for #759 (needs more work) 2015-05-04 03:05:22 -07:00
snipe f463cd6c8d Fixes for #759 - location heirarchy 2015-05-04 02:50:42 -07:00
snipe 5e7a4e8193 Fixes #599 - show groups in user list 2015-05-04 01:44:49 -07:00
snipe c8870ddcab Fixes #736 - more fields in bulk edit 2015-05-04 01:30:20 -07:00
364 changed files with 9492 additions and 1409 deletions
+4 -1
View File
@@ -7,6 +7,7 @@ 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/*
@@ -22,4 +23,6 @@ public/uploads/logo.gif
public/uploads/logo.png
.siteflow
public/assets/.siteflow
app/config/local/session.php
.settings/settings.json
+36 -9
View File
@@ -18,7 +18,7 @@ class AppCommand extends Command
*
* @var string
*/
protected $description = '';
protected $description = 'This command kicks off your database table creation and migration, and creates your first admin user.';
/**
* Holds the user information.
@@ -28,7 +28,7 @@ class AppCommand extends Command
protected $userData = array(
'first_name' => null,
'last_name' => null,
'email' => null,
'username' => 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->askUserEmail();
$this->askUserUsername();
$this->askUserPassword();
$this->askUserDummyData();
@@ -162,7 +162,7 @@ class AppCommand extends Command
}
/**
* Asks the user for the user email address.
* Asks the user for the username 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 user email: ');
$email = $this->ask('Please enter your email: ');
// Check if email is valid
if ($email == '') {
@@ -185,6 +185,32 @@ 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.
*
@@ -197,7 +223,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 email is valid
// Check if password is valid
if ($password == '') {
// Return an error message
$this->error('Password is invalid. Please try again.');
@@ -217,9 +243,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;
}
/**
@@ -329,7 +355,7 @@ class AppCommand extends Command
$user = Sentry::getUserProvider()->create($data);
// Associate the Admin group to this user
$group = Sentry::getGroupProvider()->findById(1);
$group = Sentry::findGroupByName('Admin');
$user->addGroup($group);
// Show the success message
@@ -350,6 +376,7 @@ 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,
+66 -30
View File
@@ -37,58 +37,94 @@ class SendExpirationAlerts extends Command {
*/
public function fire()
{
$expiring_assets = Asset::getExpiringWarrantee(60);
$data['count'] = count($expiring_assets);
$data['email_content'] ='';
// 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");
foreach ($expiring_assets as $asset) {
$now = date("Y-m-d");
$expires = $asset->warrantee_expires();
$difference = round(abs(strtotime($expires) - strtotime($now))/86400);
if ($difference > 30) {
$data['email_content'] .= '<tr style="background-color: #fcffa3;">';
$asset_data['email_content'] .= '<tr style="background-color: #fcffa3;">';
} else {
$data['email_content'] .= '<tr style="background-color:#d9534f;">';
$asset_data['email_content'] .= '<tr style="background-color:#d9534f;">';
}
$data['email_content'] .= '<td><a href="'.Config::get('app.url').'/hardware/'.$asset->id.'/view">';
$data['email_content'] .= $asset->name.'</a></td><td>'.$asset->asset_tag.'</td>';
$data['email_content'] .= '<td>'.$asset->warrantee_expires().'</td>';
$data['email_content'] .= '<td>'.$difference.' days</td>';
$data['email_content'] .= '</tr>';
$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>';
}
if ((Setting::getSettings()->alert_email!='') && (Setting::getSettings()->alerts_enabled==1)){
// 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 (count($expiring_assets) > 0) {
Mail::send('emails.expiring-report', $data, function ($m) {
Mail::send('emails.expiring-assets-report', $asset_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";
}
}
}
}
}
+65
View File
@@ -0,0 +1,65 @@
<?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);
}
}
+4 -1
View File
@@ -43,7 +43,7 @@ return array(
*/
'cipher' => MCRYPT_RIJNDAEL_256,
/*
|--------------------------------------------------------------------------
| Prevent Password changes
@@ -103,6 +103,8 @@ return array(
'Chumper\Datatable\DatatableServiceProvider',
'Dinesh\Barcode\BarcodeServiceProvider',
'Maknz\Slack\SlackServiceProvider',
'Schickling\Backup\BackupServiceProvider',
'Chumper\Zipper\ZipperServiceProvider',
),
@@ -177,6 +179,7 @@ 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' => 'email',
'login_attribute' => 'username',
),
@@ -0,0 +1,31 @@
<?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' => '*',
);
@@ -0,0 +1,15 @@
<?php
return array(
'path' => storage_path() . '/dumps/',
'mysql' => array(
'dump_command_path' => '',
'restore_command_path' => '',
),
's3' => array(
'path' => ''
),
'compress' => false,
);
+1 -1
View File
@@ -26,7 +26,7 @@ return array(
|
*/
'url' => 'http://production.yourserver.com',
'url' => 'https://production.yourserver.com',
/*
|--------------------------------------------------------------------------
+2 -2
View File
@@ -1,5 +1,5 @@
<?php
return array (
'app_version' => 'v1.2.8-22',
'hash_version' => 'v1.2.8-22-gf8be47d',
'app_version' => 'v1.2.8-150',
'hash_version' => 'v1.2.8-150-g84ffc1a',
);
+14 -86
View File
@@ -27,7 +27,7 @@ class AuthController extends BaseController
{
// Declare the rules for the form validation
$rules = array(
'email' => 'required|email',
'username' => 'required',
'password' => 'required',
);
@@ -42,7 +42,7 @@ class AuthController extends BaseController
try {
// Try to log the user in
Sentry::authenticate(Input::only('email', 'password'), Input::get('remember-me', 0));
Sentry::authenticate(Input::only('username', 'password'), Input::get('remember-me', 0));
// Get the page we were before
$redirect = Session::get('loginRedirect', 'account');
@@ -53,91 +53,19 @@ 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('email', Lang::get('auth/message.account_not_found'));
$this->messageBag->add('username', Lang::get('auth/message.account_not_found'));
} catch (Cartalyst\Sentry\Users\UserNotActivatedException $e) {
$this->messageBag->add('email', Lang::get('auth/message.account_not_activated'));
$this->messageBag->add('username', Lang::get('auth/message.account_not_activated'));
} catch (Cartalyst\Sentry\Throttling\UserSuspendedException $e) {
$this->messageBag->add('email', Lang::get('auth/message.account_suspended'));
$this->messageBag->add('username', Lang::get('auth/message.account_suspended'));
} catch (Cartalyst\Sentry\Throttling\UserBannedException $e) {
$this->messageBag->add('email', Lang::get('auth/message.account_banned'));
$this->messageBag->add('username', 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.
@@ -192,7 +120,7 @@ class AuthController extends BaseController
{
// Declare the rules for the validator
$rules = array(
'email' => 'required|email',
'username' => 'required',
);
// Create a new validator instance from our dynamic rules
@@ -206,22 +134,22 @@ class AuthController extends BaseController
try {
// Get the user password recovery code
$user = Sentry::getUserProvider()->findByLogin(Input::get('email'));
$user = Sentry::getUserProvider()->findByLogin(Input::get('username'));
// Data to be used on the email view
// Data to be used on the username view
$data = array(
'user' => $user,
'forgotPasswordUrl' => URL::route('forgot-password-confirm', $user->getResetPasswordCode()),
);
// 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);
// 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);
$m->subject('Account Password Recovery');
});
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
// Even though the email was not found, we will pretend
// we have sent the password reset code through email,
// Even though the username was not found, we will pretend
// we have sent the password reset code through username,
// this is a security measure against hackers.
}
+20 -20
View File
@@ -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') {
+101 -81
View File
@@ -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('rtd_location_id')) || (Input::has('status_id')) ) {
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')) ) {
foreach ($assets as $key => $value) {
@@ -951,6 +951,22 @@ 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'));
}
@@ -1001,70 +1017,71 @@ class AssetsController extends AdminController
$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'));
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;
}
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;
}
$assets = $assets->orderBy('asset_tag', 'ASC')->get();
$assets = $assets->orderBy('asset_tag', 'ASC')->get();
$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>';
}
$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->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>';
}
});
$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>';
}
});
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)
{
@@ -1075,13 +1092,16 @@ 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 {
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 {
if ($assets->assetstatus) {
return $assets->assetstatus->name;
}
}
})
->addColumn('location',function($assets)
@@ -1100,26 +1120,26 @@ class AssetsController extends AdminController
return 'No category';
}
})
})
->addColumn('eol',function($assets)
{
return $assets->eol_date();
})
->addColumn('eol',function($assets)
{
return $assets->eol_date();
})
->addColumn('checkout_date',function($assets)
{
if (($assets->assigned_to!='') && ($assets->assetlog->first())) {
return $assets->assetlog->first()->created_at->format('Y-m-d');
}
->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')
->orderColumns('name', 'asset_tag', 'serial', 'model', 'status','location','eol','checkout_date', 'inout')
->make();
})
->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();
}
}
+10 -10
View File
@@ -36,7 +36,7 @@ class CategoriesController extends AdminController
public function getCreate()
{
// Show the page
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory');
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory', 'consumable' => 'Consumable');
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');
$category_types= array('' => '', 'asset' => 'Asset', 'accessory' => 'Accessory', 'consumable' => 'Consumable');
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 {
@@ -0,0 +1,390 @@
<?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();
}
}
+18 -18
View File
@@ -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);
}
+35 -19
View File
@@ -23,7 +23,7 @@ class LocationsController extends AdminController
public function getIndex()
{
// Grab all the locations
$locations = Location::orderBy('created_at', 'DESC')->get();
$locations = Location::orderBy('created_at', 'DESC')->with('parent','assets','assignedassets')->get();
// Show the page
return View::make('backend/locations/index', compact('locations'));
@@ -37,9 +37,15 @@ class LocationsController extends AdminController
*/
public function getCreate()
{
// 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);
$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);
}
@@ -62,12 +68,18 @@ 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?
@@ -97,14 +109,15 @@ 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
//$location_options = array('' => 'Top Level') + Location::lists('name', 'id');
$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') + DB::table('locations')->where('id', '!=', $locationId)->lists('name', 'id');
return View::make('backend/locations/edit', compact('location'))->with('location_options',$location_options);
}
@@ -128,27 +141,33 @@ 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'));
$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->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'));
@@ -170,15 +189,12 @@ class LocationsController extends AdminController
}
if ($location->has_users() > 0) {
// Redirect to the asset management page
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) {
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'));
}
+9 -8
View File
@@ -57,14 +57,19 @@ 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 ($model->validate($new)) {
if ($validator->fails())
{
// The given data did not pass validation
return Redirect::back()->withInput()->withErrors($validator->messages());
}
// attempt validation
else {
if ( e(Input::get('depreciation_id')) == '') {
$model->depreciation_id = 0;
@@ -103,10 +108,6 @@ 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
+25 -19
View File
@@ -11,6 +11,9 @@ use Location;
use Redirect;
use Response;
use Actionlog;
use Setting;
use League\Csv\Writer;
use League\Csv\Reader;
class ReportsController extends AdminController
{
@@ -147,6 +150,9 @@ 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
@@ -161,8 +167,9 @@ class ReportsController extends AdminController
Lang::get('admin/hardware/table.book_value'),
Lang::get('admin/hardware/table.diff')
);
$header = array_map('trim', $header);
$rows[] = implode($header, ',');
//we insert the CSV header
$csv->insertOne($header);
// Create a row per asset
foreach ($assets as $asset) {
@@ -182,7 +189,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 {
@@ -192,25 +199,24 @@ 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[] = '"'.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, ',');
$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);
}
// spit out a csv
$csv = implode($rows, "\n");
$csv->output('depreciation-report-'.date('Y-m-d').'.csv');
die;
$response = Response::make($csv, 200);
$response->header('Content-Type', 'text/csv');
$response->header('Content-disposition', 'attachment;filename=report.csv');
return $response;
}
/**
@@ -231,8 +237,8 @@ class ReportsController extends AdminController
->get();
return View::make('backend/reports/activity', compact('log_actions'));
}
/**
* Show Report for Licenses
*
@@ -12,6 +12,7 @@ use Validator;
use View;
use Image;
use Config;
use Response;
class SettingsController extends AdminController
{
@@ -71,6 +72,7 @@ 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',
);
@@ -117,6 +119,7 @@ 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'));
@@ -141,6 +144,63 @@ 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);
}
}
}
+78 -34
View File
@@ -34,8 +34,9 @@ class UsersController extends AdminController
protected $validationRules = array(
'first_name' => 'required|alpha_space|min:2',
'last_name' => 'required|alpha_space|min:2',
'location_id' => 'required',
'email' => 'required|email|unique:users,email',
'location_id' => 'numeric',
'username' => 'required|min:2|unique:users,username',
'email' => 'email|unique:users,email',
'password' => 'required|min:6',
'password_confirm' => 'required|min:6|same:password',
);
@@ -261,8 +262,15 @@ class UsersController extends AdminController
return Redirect::route('users')->with('error', $error);
}
//
$this->validationRules['email'] = "required|email|unique:users,email,{$user->email},email";
//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']);
}
// Do we want to update the user password?
if ( ! $password = Input::get('password')) {
@@ -284,8 +292,10 @@ 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');
@@ -293,7 +303,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;
@@ -451,10 +461,12 @@ class UsersController extends AdminController
public function getView($userId = null)
{
$user = Sentry::getUserProvider()->createModel()->find($userId);
$user = User::with('assets','assets.model','consumables','accessories','licenses','userloc')->find($userId);
$userlog = $user->userlog->load('assetlog','consumablelog','assetlog.model','licenselog','accessorylog','userlog','adminlog');
if (isset($user->id)) {
return View::make('backend/users/view', compact('user'));
return View::make('backend/users/view', compact('user','userlog'));
} else {
// Prepare the error message
$error = Lang::get('admin/users/message.user_not_found', compact('id' ));
@@ -627,20 +639,22 @@ class UsersController extends AdminController
try {
// Check if this email already exists in the system
$user = DB::table('users')->where('email', $row[2])->first();
$user = DB::table('users')->where('username', $row[2])->first();
if ($user) {
$duplicates .= $row[2].', ';
} else {
$newuser = array(
'first_name' => $row[0],
'last_name' => $row[1],
'email' => $row[2],
'password' => $pass,
'activated' => $activated,
'permissions' => '{"user":1}',
'notes' => 'Imported user'
);
$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'
);
DB::table('users')->insert($newuser);
@@ -653,18 +667,19 @@ class UsersController extends AdminController
$updateuser->save();
if (Input::get('email_user')==1) {
if (((Input::get('email_user')==1) && !Config::get('app.lock_passwords'))) {
// Send the credentials through email
if ($row[3]!='') {
$data = array();
$data['username'] = $row[2];
$data['first_name'] = $row[0];
$data['password'] = $pass;
$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']);
});
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']);
});
}
}
}
@@ -686,7 +701,7 @@ class UsersController extends AdminController
public function getDatatable($status = null)
{
$users = User::with('assets','licenses','manager','sentryThrottle');
$users = User::with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc');
switch ($status) {
case 'deleted':
@@ -732,7 +747,12 @@ class UsersController extends AdminController
->addColumn('email',function($users)
{
return '<a title="'.$users->email.'" href="mailto:'.$users->email.'">'.$users->email.'</a>';
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 '';
}
})
->addColumn('manager',function($users)
@@ -742,6 +762,14 @@ class UsersController extends AdminController
}
})
->addColumn('location',function($users)
{
if ($users->userloc) {
return $users->userloc->name;
}
})
->addColumn('assets',function($users)
{
return $users->assets->count();
@@ -751,14 +779,30 @@ class UsersController extends AdminController
{
return $users->licenses->count();
})
->addColumn('activated',function($users)
->addColumn('accessories',function($users)
{
return $users->isActivated() ? '<i class="fa fa-check"></i>' : '';
return $users->accessories->count();
})
->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', 'licenses','assets')
->orderColumns('name','email','manager','activated', 'licenses','assets')
->searchColumns('name','email','manager','activated','groups','location')
->orderColumns('name','email','manager','activated', 'licenses','assets','accessories','consumables','groups','location')
->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');
});
}
}
@@ -0,0 +1,36 @@
<?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');
});
}
}
@@ -0,0 +1,29 @@
<?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);');
}
}
@@ -0,0 +1,63 @@
<?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');
}
}
@@ -0,0 +1,30 @@
<?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);');
}
}
@@ -0,0 +1,31 @@
<?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;');
}
}
@@ -0,0 +1,56 @@
<?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');
});
}
}
+7 -7
View File
@@ -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' => 2,
'assigned_to' => 1,
'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' => 2,
'assigned_to' => 1,
'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' => '4',
'status_id' => '2',
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
@@ -257,7 +257,7 @@ class AssetsSeeder extends Seeder
'assigned_to' => NULL,
'physical' => 1,
'archived' => 1,
'status_id' => '3',
'status_id' => '2',
'notes' => '',
'deleted_at' => NULL,
'archived' => '0',
+9 -9
View File
@@ -3,15 +3,15 @@
return array(
'does_not_exist' => 'هذه الفئة غير موجودة.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'assoc_users' => 'تم إخراج :count عنصر من هذا الملحق للمستخدمين، الرجاء إيداع الملحقات ثم حاول مرة أخرى. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
'error' => 'فشل إنشاء التصنيف، الرجاء المحاولة مرة أخرى.',
'success' => 'تم إنشاء الفئة بنجاح.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'error' => 'فشل تحديث التصنيف، الرجاء المحاولة مرة أخرى',
'success' => 'Category updated successfully.'
),
@@ -22,14 +22,14 @@ return array(
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
'error' => 'لم يتم إخراج الملحق، الرجاء المحاولة مرة أخرى',
'success' => 'تم إخراج الملحق بنجاح.',
'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'error' => 'لم يتم إيداع الملحق، الرجاء المحاولة مرة أخرى',
'success' => 'تم إيداع الملحق بنجاح.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
)
+8
View File
@@ -0,0 +1,8 @@
<?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',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
+1
View File
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
+1
View File
@@ -15,6 +15,7 @@ return array(
'notes' => 'Notes',
'order' => 'Order No.',
'purchase_order' => 'Purchase Order Number',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Remaining Seats',
'seats' => 'Seats',
'serial' => 'Serial',
+1
View File
@@ -6,6 +6,7 @@ return array(
'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat',
'edit' => 'Edit License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone License',
'history_for' => 'History for ',
'in_out' => 'In/Out',
+2 -1
View File
@@ -7,6 +7,7 @@ return array(
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'backups' => 'Backups',
'barcode_type' => 'Barcode Type',
'barcode_settings' => 'Barcode Settings',
'default_eula_text' => 'Default EULA',
@@ -32,7 +33,7 @@ return array(
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'site_name' => 'Site Name',
'site_name' => 'Site Name',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
+7 -2
View File
@@ -5,6 +5,7 @@ return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'action' => 'Action',
'activity_report' => 'Activity Report',
'address' => 'العنوان',
'admin' => 'الإدارة',
@@ -21,14 +22,16 @@ return array(
'avatar_upload' => 'رفع صورة رمزية',
'back' => 'الرجوع للخلف',
'cancel' => 'إلغاء',
'categories' => 'تصنيفات الأصول',
'category' => 'تصنيف الأصول',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'تغيير عنوان البريد الإلكتروني',
'changepassword' => 'تغيير كلمة المرور',
'checkin' => 'تسجيل',
'checkin_from' => 'Checkin from',
'checkout' => 'ترجيع',
'city' => 'المدينة',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'الدولة',
'create' => 'إضافة',
'created_asset' => 'الأصول المضافة',
@@ -88,6 +91,8 @@ return array(
'previous' => 'Previous',
'processing' => 'Processing',
'profile' => 'ملفك الشخصي',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'جاهزة للتوزيع',
'recent_activity' => 'Recent Activity',
'reports' => 'التقارير',
+16 -15
View File
@@ -1,20 +1,21 @@
<?php
return array(
'about_accessories_title' => 'About Accessories',
'about_accessories_text' => 'Accessories are anything you issue to users but that do not have a serial number (or you do not care about tracking them uniquely). For example, computer mice or keyboards.',
'accessory_category' => 'Accessory Category',
'accessory_name' => 'Accessory Name',
'create' => 'Create Category',
'eula_text' => 'Category EULA',
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'qty' => 'QTY',
'total' => 'Total',
'remaining' => 'Avail',
'update' => 'Update Category',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
'about_accessories_title' => 'O příslušenství',
'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',
'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.',
'no_default_eula' => 'Žádná primární EULA. Přidat novou v Nastavení.',
'qty' => 'Množství',
'total' => 'CELKEM',
'remaining' => 'Dostupný',
'update' => 'Upravit kategorii',
'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í.',
);
+15 -15
View File
@@ -2,35 +2,35 @@
return array(
'does_not_exist' => 'Category does not exist.',
'assoc_users' => 'This accessory currently has :count items checked out to users. Please check in the accessories and and try again. ',
'does_not_exist' => 'Kategorie neexistuje.',
'assoc_users' => 'Tato kategorie má nyní :count položek k předání uživatelům. Zkontrolujte převzetí příslušenství a zkuste to znovu. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
'error' => 'Kategorie nevytvořena, zkuste to znovu.',
'success' => 'Kategorie úspěšně vytvořena.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Kategorie neaktualizována, zkuste to znovu',
'success' => 'Kategorie úspěšně aktualizována.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
'confirm' => 'Opravdu chcete smazat tuto kategorii?',
'error' => 'Vyskytl se problém při mazání kategorie. Zkuste to znovu.',
'success' => 'Kategorie byla úspěšně smazána.'
),
'checkout' => array(
'error' => 'Accessory was not checked out, please try again',
'success' => 'Accessory checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
'error' => 'Příslušenství nebylo převzato, zkuste to znovu',
'success' => 'Příslušenství úspěšně předáno.',
'user_does_not_exist' => 'Neplatný uživatel. Zkuste to znovu.'
),
'checkin' => array(
'error' => 'Accessory was not checked in, please try again',
'success' => 'Accessory checked in successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.'
'error' => 'Příslušenství nebylo převzato, zkuste to znovu',
'success' => 'Příslušenství úspěšně předáno.',
'user_does_not_exist' => 'Neplatný uživatel. Zkuste to znovu.'
)
+2 -2
View File
@@ -3,7 +3,7 @@
return array(
'eula_text' => 'EULA',
'id' => 'ID',
'require_acceptance' => 'Acceptance',
'title' => 'Accessory Name',
'require_acceptance' => 'Přijetí',
'title' => 'Název příslušenství',
);
+9 -9
View File
@@ -5,17 +5,17 @@ return array(
'about_categories' => 'Kategorie pomáhají organizovat majetek. Takovou kategorii může být např. &quot;Desktopy&quot;, &quot;Notebooky&quot;, &quot;Mobilní telefony&quot;, &quot;Tablety&quot;, apod., kategorie můžete ale používat jakkoliv Vám to bude dávat smysl. ',
'asset_categories' => 'Kategorie majetku',
'category_name' => 'Jméno kategorie',
'clone' => 'Clone Category',
'clone' => 'Klonovat Kategorii',
'create' => 'Vytvořit kategorii',
'edit' => 'Edit Category',
'eula_text' => 'Category EULA',
'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.',
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
'required_eula' => 'This user will be emailed a copy of the EULA',
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
'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',
'no_default_eula' => 'Nenalezena primární výchozí EULA. Přidejte ji v Nastaveních.',
'update' => 'Upravit kategorii',
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
'use_default_eula' => 'Použijte raději <a href="#" data-toggle="modal" data-target="#eulaModal">primární výchozí EULA</a>.',
'use_default_eula_disabled' => '<del>Použijte raději primární výchozí EULA.</del> Nenalezena primární výchozí EULA. Přidejte ji v Nastaveních prosím.',
);
+7 -7
View File
@@ -6,19 +6,19 @@ return array(
'assoc_users' => 'This category is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this category and try again. ',
'create' => array(
'error' => 'Category was not created, please try again.',
'success' => 'Category created successfully.'
'error' => 'Kategorie nebyla vytvořena, zkuste to znovu prosím.',
'success' => 'Kategorie byla úspěšně vytvořena.'
),
'update' => array(
'error' => 'Category was not updated, please try again',
'success' => 'Category updated successfully.'
'error' => 'Kategorie nebyla aktualizována, zkuste to znovu prosím',
'success' => 'Kategorie aktualizována úspěšně.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this category?',
'error' => 'There was an issue deleting the category. Please try again.',
'success' => 'The category was deleted successfully.'
'confirm' => 'Opravdu chcete smazat tuto kategorii na trvalo?',
'error' => 'Vyskytl se problém při mazání kategorie. Zkuste to znovu prosím.',
'success' => 'Kategorie byla úspěšně smazána.'
)
);
+8
View File
@@ -0,0 +1,8 @@
<?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',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
+8 -8
View File
@@ -3,23 +3,23 @@
return array(
'does_not_exist' => 'Amortizační skupina neexistuje.',
'assoc_users' => 'This depreciation is currently associated with one or more models and cannot be deleted. Please delete the models, and then try deleting again. ',
'assoc_users' => 'Tato amortizace je momentálně spojena s jedním nebo více modely a nemůže být smazáno. Prosím smažte tyto modely a pak to zkuste znovu. ',
'create' => array(
'error' => 'Depreciation class was not created, please try again. :(',
'success' => 'Depreciation class created successfully. :)'
'error' => 'Skupina amrotizace nebyla vytvořena, zkuste to znovu. :(',
'success' => 'Skupina amrotizace úspěšně vytvořena. :)'
),
'update' => array(
'error' => 'Depreciation class was not updated, please try again',
'success' => 'Depreciation class updated successfully.'
'error' => 'Skupina amrotizace nebyla aktualizována, zkuste to znovu',
'success' => 'Skupina amrotizace úspěšně aktualizována.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this depreciation class?',
'error' => 'There was an issue deleting the depreciation class. Please try again.',
'success' => 'The depreciation class was deleted successfully.'
'confirm' => 'Opravdu chcete smazat tuto skupinu amrotizace?',
'error' => 'Vyskytl se problém při mazání skupiny amrotizace. Zkuste to znovu.',
'success' => 'Skupina amrotizace byla úspěšně smazána.'
)
);
+3 -3
View File
@@ -14,9 +14,9 @@ return array(
'delete' => array(
'confirm' => 'Určitě chcete odstranit tuto skupinu?',
'create' => 'There was an issue creating the group. Please try again.',
'update' => 'There was an issue updating the group. Please try again.',
'delete' => 'There was an issue deleting the group. Please try again.',
'create' => 'Vyskytl se problém s vytvářením skupiny. Zkuste to znovu.',
'update' => 'Vyskytl se problém s aktualizací skupiny. Zkuste to znovu.',
'delete' => 'Vyskytl se problém se smazáním skupiny. Zkuste to znovu.',
),
);
+7 -7
View File
@@ -2,12 +2,12 @@
return array(
'bulk_update' => 'Bulk Update Assets',
'bulk_update_help' => 'This form allows you to update multiple assets at once. Only fill in the fields you need to change. Any fields left blank will remain unchanged. ',
'bulk_update_warn' => 'You are about to edit the properties of :asset_count assets.',
'bulk_update' => 'Hromadná aktualizace majetku',
'bulk_update_help' => 'Tento formulář umožňuje hromadnou editaci majetku. Vyplňte pouze položky, které chcete změnit. Jakékoliv prázné položky zůstanou nezměněny. ',
'bulk_update_warn' => 'Budou se editovat vlastnosti :asset_count assets.',
'checkedout_to' => 'Vydané komu',
'checkout_date' => 'Checkout Date',
'checkin_date' => 'Checkin Date',
'checkout_date' => 'Datum vydání',
'checkin_date' => 'Datum převzetí',
'checkout_to' => 'Vydat někomu',
'cost' => 'Pořizovací cena',
'create' => 'Vytvořit záznam majetku',
@@ -20,7 +20,7 @@ return array(
'expires' => 'Expiruje',
'fully_depreciated' => 'Plně odepsané',
'help_checkout' => 'Pokud si přejete přiřadit majetek okamžitě, měli by jste ze seznamu stavů zvolit "Připraveno k přiděleni", nebo se může něco pokazit. ',
'mac_address' => 'MAC Address',
'mac_address' => 'MAC adresa',
'manufacturer' => 'Výrobce',
'model' => 'Model',
'months' => 'měsíce',
@@ -29,7 +29,7 @@ return array(
'order' => 'Č. objednávky',
'qr' => 'QR kód',
'requestable' => 'Uživatelé můžou požádat o tento majetek',
'select_statustype' => 'Select Status Type',
'select_statustype' => 'Zvolte typ stavu',
'serial' => 'Sériové číslo',
'status' => 'Stav',
'supplier' => 'Dodavatel',
+3 -2
View File
@@ -1,14 +1,15 @@
<?php
return array(
'archived' => 'Archived',
'archived' => 'Archivováno',
'asset' => 'Majetek',
'checkin' => 'Převzít majetek',
'checkout' => 'Předat majetek uživateli',
'clone' => 'Klonovat majetek',
'deployable' => 'Deployable',
'deployable' => 'Připraveno k nasazení',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Upravit majetek',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
+1
View File
@@ -15,6 +15,7 @@ return array(
'notes' => 'Notes',
'order' => 'Order No.',
'purchase_order' => 'Purchase Order Number',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Remaining Seats',
'seats' => 'Seats',
'serial' => 'Serial',
+1
View File
@@ -6,6 +6,7 @@ return array(
'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat',
'edit' => 'Edit License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone License',
'history_for' => 'History for ',
'in_out' => 'In/Out',
+8 -8
View File
@@ -2,24 +2,24 @@
return array(
'does_not_exist' => 'Location does not exist.',
'does_not_exist' => 'Místo neexistuje.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
'create' => array(
'error' => 'Location was not created, please try again.',
'success' => 'Location created successfully.'
'error' => 'Místo nebylo vytvořeno, zkuste to znovu prosím.',
'success' => 'Místo bylo úspěšně vytvořeno.'
),
'update' => array(
'error' => 'Location was not updated, please try again',
'success' => 'Location updated successfully.'
'error' => 'Místo nebylo aktualizováno, zkuste to znovu prosím',
'success' => 'Místo úspěšně aktualizováno.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this location?',
'error' => 'There was an issue deleting the location. Please try again.',
'success' => 'The location was deleted successfully.'
'confirm' => 'Opravdu si želáte vymazat tohle místo na trvalo?',
'error' => 'Vyskytl se problém při mazání místa. Zkuste to znovu prosím.',
'success' => 'Místo bylo úspěšně smazáno.'
)
);
+9 -9
View File
@@ -2,23 +2,23 @@
return array(
'does_not_exist' => 'Manufacturer does not exist.',
'assoc_users' => 'This manufacturer is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this manufacturer and try again. ',
'does_not_exist' => 'Výrobce neexistuje.',
'assoc_users' => 'Tento výrobce je uveden minimálně u jednoho modelu a nemůže být smazán. Odstraňte výrobce z modelů a zkuste to znovu. ',
'create' => array(
'error' => 'Manufacturer was not created, please try again.',
'success' => 'Manufacturer created successfully.'
'error' => 'Výrobce nebyl vytvořen, zkuste to znovu.',
'success' => 'Výrobce úspěšně vytvořen.'
),
'update' => array(
'error' => 'Manufacturer was not updated, please try again',
'success' => 'Manufacturer updated successfully.'
'error' => 'Výrobce nebyl vytvořen, zkuste to znovu',
'success' => 'Výrobce úspěšně vytvořen.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this manufacturer?',
'error' => 'There was an issue deleting the manufacturer. Please try again.',
'success' => 'The Manufacturer was deleted successfully.'
'confirm' => 'Opravdu chcete smazat tohoto výrobce?',
'error' => 'Vyskytl se problém se smazáním výrobce. Zkuste to znovu.',
'success' => 'Výrobce byl úspěšně smazán.'
)
);
+4 -4
View File
@@ -2,10 +2,10 @@
return array(
'deleted' => 'This model has been deleted. <a href="/hardware/models/:model_id/restore">Click here to restore it</a>.',
'restore' => 'Restore Model',
'deleted' => 'Model byl vymazán. <a href="/hardware/models/:model_id/restore">Klikněte sem pro jeho obnovení</a>.',
'restore' => 'Obnovení Modelu',
'show_mac_address' => 'Show MAC address field in assets in this model',
'view_deleted' => 'View Deleted',
'view_models' => 'View Models',
'view_deleted' => 'Zobrazit smazané',
'view_models' => 'Zobrazit Modely',
);
+36 -35
View File
@@ -1,45 +1,46 @@
<?php
return array(
'alert_email' => 'Send alerts to',
'alerts_enabled' => 'Alerts enabled',
'asset_ids' => 'Asset IDs',
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'barcode_type' => 'Barcode Type',
'barcode_settings' => 'Barcode Settings',
'default_eula_text' => 'Default EULA',
'default_eula_help_text' => 'You can also associate custom EULAs to specific asset categories.',
'display_asset_name' => 'Display Asset Name',
'display_checkout_date' => 'Display Checkout Date',
'display_eol' => 'Display EOL in table view',
'display_qr' => 'Display QR Codes',
'eula_settings' => 'EULA Settings',
'eula_markdown' => 'This EULA allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
'general_settings' => 'General Settings',
'header_color' => 'Header Color',
'info' => 'These settings let you customize certain aspects of your installation.',
'laravel' => 'Laravel Version',
'load_remote' => 'This Snipe-IT install can load scripts from the outside world.',
'alert_email' => 'Zasílat upozornění na',
'alerts_enabled' => 'Upozornění zapnuta',
'asset_ids' => 'ID majetku',
'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',
'barcode_type' => 'Tyo čárového kódu',
'barcode_settings' => 'Nastavení čárového kódu',
'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',
'display_checkout_date' => 'Zobrazit den převzetí',
'display_eol' => 'Zobrazit EOL v tabulkovém zobrazení',
'display_qr' => 'Zobrazit QR kódy',
'eula_settings' => 'Nastavení EULA',
'eula_markdown' => 'Tato EULA umožňuje <a href="https://help.github.com/articles/github-flavored-markdown/">Github markdown</a>.',
'general_settings' => 'Obecné nastavení',
'header_color' => 'Barva záhlaví',
'info' => 'Tato nastavení umožňují zvolit určité prvky instalace.',
'laravel' => 'Verze Laravel',
'load_remote' => 'Tato instalace Snipe-IT může nahrávat skripty z vnějšího světa.',
'logo' => 'Logo',
'optional' => 'optional',
'per_page' => 'Results Per Page',
'php' => 'PHP Version',
'php_gd_info' => 'You must install php-gd to display QR codes, see install instructions.',
'php_gd_warning' => 'PHP Image Processing and GD plugin is NOT installed.',
'qr_help' => 'Enable QR Codes first to set this',
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'site_name' => 'Site Name',
'optional' => 'volitelný',
'per_page' => 'Výsledků na stránku',
'php' => 'Verze PHP',
'php_gd_info' => 'Je nutné nainstalovat php-gd pro zobrazení QR kódů. Více v instalační příručce.',
'php_gd_warning' => 'PHP pluginy pro zpracování obrazu a GD nejsou nainstalovány.',
'qr_help' => 'Nejprve povolte QR kódy',
'qr_text' => 'Text QR kódu',
'setting' => 'Nastavení',
'settings' => 'Nastavení',
'site_name' => 'Název stránky',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
'slack_integration' => 'Slack Settings',
'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first <a href=":slack_link" target="_new">create an incoming webhook</a> on your Slack account.',
'snipe_version' => 'Snipe-IT version',
'system' => 'System Information',
'update' => 'Update Settings',
'value' => 'Value',
'snipe_version' => 'Verze Snipe-IT',
'system' => 'Systémové informace',
'update' => 'Upravit nastavení',
'value' => 'Hodnota',
);
+2 -2
View File
@@ -4,8 +4,8 @@ return array(
'update' => array(
'error' => 'An error has occurred while updating. ',
'success' => 'Settings updated successfully.'
'error' => 'Vyskytla se chyba při aktualizaci. ',
'success' => 'Nastavení úspěšně uloženo.'
),
);
+9 -9
View File
@@ -2,24 +2,24 @@
return array(
'does_not_exist' => 'Location does not exist.',
'assoc_users' => 'This location is currently associated with at least one user and cannot be deleted. Please update your users to no longer reference this location and try again. ',
'does_not_exist' => 'Místo neexistuje.',
'assoc_users' => 'Toto místo je spojeno s alespoň jedním uživatelem a nemůže být smazáno. Aktualizujte uživatele aby nenáleželi k tomuto místu a zkuste to znovu. ',
'create' => array(
'error' => 'Location was not created, please try again.',
'success' => 'Location created successfully.'
'error' => 'Místo nebylo vytvořeno, zkuste to znovu.',
'success' => 'Místo úspěšně vytvořeno.'
),
'update' => array(
'error' => 'Location was not updated, please try again',
'success' => 'Location updated successfully.'
'error' => 'Místo nebylo aktualizováno, zkuste to znovu',
'success' => 'Místo aktualizováno.'
),
'delete' => array(
'confirm' => 'Are you sure you wish to delete this status label?',
'error' => 'There was an issue deleting the location. Please try again.',
'success' => 'The location was deleted successfully.'
'confirm' => 'Opravdu chcete smazat tento typ stavu?',
'error' => 'Vyskytl se problém při mazání místa. Zkuste to znovu.',
'success' => 'Místo bylo úspěšně smazáno.'
)
);
+6 -6
View File
@@ -2,14 +2,14 @@
return array(
'about' => 'O označení stavu',
'archived' => 'Archived',
'archived' => 'Archivováno',
'create' => 'Vytvořit označení stavu',
'deployable' => 'Deployable',
'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'deployable' => 'Připraveno k nasazení',
'info' => 'Označení stavu se používá k popisu různých stavů majetku. Můžou být v opravě, ztracení atd. Lze vytvořit nové stavy pro další možné stavy.',
'name' => 'Název stavu',
'pending' => 'Pending',
'status_type' => 'Status Type',
'pending' => 'Probíhající',
'status_type' => 'Typ stavu',
'title' => 'Označení stavu',
'undeployable' => 'Undeployable',
'undeployable' => 'Nemožné připravit',
'update' => 'Upravit označení stavu',
);
+15 -15
View File
@@ -2,35 +2,35 @@
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_activated' => 'This user account is not activated.',
'account_suspended' => 'This user account is suspended.',
'account_banned' => 'This user account is banned.',
'account_already_exists' => 'Účet s tímto emailem již existuje.',
'account_not_found' => 'Emailový účet nebo heslo je nesprávné.',
'account_not_activated' => 'Uživatelský účet není aktivován.',
'account_suspended' => 'Uživatelský účet je pozastaven.',
'account_banned' => 'Uživatelský účet je zablokován.',
'signin' => array(
'error' => 'There was a problem while trying to log you in, please try again.',
'success' => 'You have successfully logged in.',
'error' => 'Vyskytl se problém při přihlášení, zkuste to znovu.',
'success' => 'Došlo k úspěšnému přihlášení.',
),
'signup' => array(
'error' => 'There was a problem while trying to create your account, please try again.',
'success' => 'Account sucessfully created.',
'error' => 'Vyskytl se problém při vytváření účtu, zkuste to znovu.',
'success' => 'Účet úspěšně vytvořen.',
),
'forgot-password' => array(
'error' => 'There was a problem while trying to get a reset password code, please try again.',
'success' => 'Password recovery email successfully sent.',
'error' => 'Vyskytl se problém při získávání kódu pro reset hesla, zkuste to znovu.',
'success' => 'Email určený k obnově hesla úspěšně odeslán.',
),
'forgot-password-confirm' => array(
'error' => 'There was a problem while trying to reset your password, please try again.',
'success' => 'Your password has been successfully reset.',
'error' => 'Vyskytl se problém při resetování hesla, zkuste to znovu.',
'success' => 'Vaše heslo bylo úspěšně resetováno.',
),
'activate' => array(
'error' => 'There was a problem while trying to activate your account, please try again.',
'success' => 'Your account has been successfully activated.',
'error' => 'Vyskytl se problém při vytváření účtu, zkuste to znovu.',
'success' => 'Váš účet byl úspěšně vytvořen.',
),
);
+3 -3
View File
@@ -3,12 +3,12 @@
return array(
'actions' => 'Akce',
'add' => 'Add New',
'cancel' => 'Cancel',
'add' => 'Přidej nový',
'cancel' => 'Zrušit',
'delete' => 'Smazat',
'edit' => 'Upravit',
'restore' => 'Obnovit',
'submit' => 'Odeslat',
'upload' => 'Upload',
'upload' => 'Nahrát',
);
+38 -33
View File
@@ -3,14 +3,15 @@
return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'activity_report' => 'Activity Report',
'accessories' => 'Příslušenství',
'accessory' => 'Příslušenství',
'action' => 'Action',
'activity_report' => 'Report aktivity',
'address' => 'Adresa',
'admin' => 'Admin',
'all_assets' => 'Všechna zařízení',
'all' => 'Vše',
'archived' => 'Archived',
'archived' => 'Archivováno',
'asset_models' => 'Modely majetku',
'asset' => 'Zařízeni',
'asset_report' => 'Report majetku',
@@ -21,14 +22,16 @@ return array(
'avatar_upload' => 'Nahrát avatara',
'back' => 'Zpět',
'cancel' => 'Storno',
'categories' => 'Kategorie majetku',
'category' => 'Kategorie majetku',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'Změnit e-mailovou adresu',
'changepassword' => 'Změnit heslo',
'checkin' => 'Příjem',
'checkin_from' => 'Checkin from',
'checkin_from' => 'Převzít od',
'checkout' => 'Výdej',
'city' => 'Město',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Země',
'create' => 'Vytvořit nové',
'created_asset' => 'vytvořit majetek',
@@ -36,20 +39,20 @@ return array(
'currency' => 'Kč',
'current' => 'Aktuální',
'custom_report' => 'Vlastní report majetku',
'dashboard' => 'Dashboard',
'dashboard' => 'Nástěnka',
'date' => 'Datum',
'delete' => 'Odstranit',
'deleted' => 'Odstraněno',
'deployed' => 'Vydané',
'depreciation_report' => 'Report zastarání',
'download' => 'Download',
'download' => 'Stáhnout',
'depreciation' => 'Amortizace',
'editprofile' => 'Upravit profil',
'eol' => 'Konec životnosti',
'first' => 'First',
'first' => 'První',
'first_name' => 'Jméno',
'file_name' => 'File',
'file_uploads' => 'File Uploads',
'file_name' => 'Soubor',
'file_uploads' => 'Nahrání souboru',
'generate' => 'Vytvořit',
'groups' => 'Skupiny',
'gravatar_email' => 'Emailová adresa Gravatar',
@@ -57,15 +60,15 @@ return array(
'id' => 'ID',
'image_delete' => 'Smazat obrázek',
'image_upload' => 'Nahrát obrázek',
'item' => 'Item',
'last' => 'Last',
'item' => 'Položka',
'last' => 'Poslední',
'last_name' => 'Příjmení',
'license' => 'Licence',
'license_report' => 'Report licencí',
'licenses_available' => 'dostupných licencí',
'licenses' => 'Licence',
'list_all' => 'Vypsat vše',
'loading' => 'Loading',
'loading' => 'Nahrávání',
'location' => 'Lokalita',
'locations' => 'Umístění',
'logout' => 'Odhlásit',
@@ -75,32 +78,34 @@ return array(
'months' => 'měsíce',
'moreinfo' => 'Další informace',
'name' => 'Název',
'next' => 'Next',
'next' => 'Další',
'no_depreciation' => 'Žádná amortizace',
'no_results' => 'Žádné výsledky.',
'no' => 'Ne',
'notes' => 'Poznámky',
'page_menu' => 'Showing _MENU_ items',
'pagination_info' => 'Showing _START_ to _END_ of _TOTAL_ items',
'page_menu' => 'Zobrazuji _MENU_ položky',
'pagination_info' => 'Zobrazuji _START_ to _END_ of _TOTAL_ položek',
'pending' => 'Čeká na vyřízení',
'people' => 'Lidé',
'per_page' => 'Výsledků na stránku',
'previous' => 'Previous',
'processing' => 'Processing',
'previous' => 'Předchozí',
'processing' => 'Pracuji',
'profile' => 'Váš profil',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'Připraveno k přidělení',
'recent_activity' => 'Recent Activity',
'recent_activity' => 'Nedávná aktivita',
'reports' => 'Reporty',
'save' => 'Uložit',
'select' => 'Select',
'search' => 'Search',
'select_depreciation' => 'Select a Depreciation Type',
'select_location' => 'Select a Location',
'select_manufacturer' => 'Select a Manufacturer',
'select_model' => 'Select a Model',
'select_supplier' => 'Select a Supplier',
'select_user' => 'Select a User',
'select_date' => 'Select Date',
'select' => 'Zvolit',
'search' => 'Hledat',
'select_depreciation' => 'Zvolit typ amortizace',
'select_location' => 'Zvolit místo',
'select_manufacturer' => 'Zvolit výrobce',
'select_model' => 'Zvolit model',
'select_supplier' => 'Zvolit dodavatele',
'select_user' => 'Zvolit uživatele',
'select_date' => 'Zvolit datum',
'settings' => 'Nastavení',
'sign_in' => 'Přihlásit se',
'site_name' => 'Název lokality',
@@ -110,12 +115,12 @@ return array(
'suppliers' => 'Dodavatelé',
'total_assets' => 'celkem zařízení',
'total_licenses' => 'celkem licencí',
'type' => 'Type',
'type' => 'Typ',
'undeployable' => 'Ne-přiřaditelné',
'unknown_admin' => 'Neznámy správce',
'uploaded' => 'Uploaded',
'uploaded' => 'Nahráno',
'user' => 'Uživatel',
'users' => 'Users',
'users' => 'Uživatelé',
'viewassets' => 'Zobrazit přiřazený majetek',
'website' => 'Webová stránka',
'welcome' => 'Vítej, :name',
+4 -4
View File
@@ -13,12 +13,12 @@ return array(
|
*/
"password" => "Passwords must be six characters and match the confirmation.",
"password" => "Heslo musí mít šest znaků a schodovat se s potvrzujícím heslem.",
"user" => "Username or email address is incorrect",
"user" => "Uživatelské jméno nebo email je chybný",
"token" => "This password reset token is invalid.",
"token" => "Tento token pro reset hesla je neplatný.",
"sent" => "If a matching email address was found, a password reminder has been sent!",
"sent" => "Pokud byl email nalezen, tak bylo heslo zasláno!",
);
+1 -1
View File
@@ -5,6 +5,6 @@ return array(
'actions' => 'Akce',
'action' => 'Akce',
'by' => 'Vytvořil',
'item' => 'Item',
'item' => 'Položka',
);
+31 -31
View File
@@ -27,42 +27,42 @@ return array(
),
"confirmed" => "Potvrzení :attribute se neshoduje.",
"date" => ":attribute není platným datem.",
"date_format" => "The :attribute does not match the format :format.",
"different" => "The :attribute and :other must be different.",
"digits" => "The :attribute must be :digits digits.",
"digits_between" => "The :attribute must be between :min and :max digits.",
"email" => "The :attribute format is invalid.",
"exists" => "The selected :attribute is invalid.",
"image" => "The :attribute must be an image.",
"in" => "The selected :attribute is invalid.",
"integer" => "The :attribute must be an integer.",
"ip" => "The :attribute must be a valid IP address.",
"date_format" => "Atribut :attribute nesouhlasí s formátem :format.",
"different" => ":attribute a :other se musí lišit.",
"digits" => ":attribute musí být :digits číslo.",
"digits_between" => ":attribute musí být mezi hodnotami :min a :max.",
"email" => "Formát :attribute je neplatný.",
"exists" => "Zvolený :attribute je neplatný.",
"image" => ":attribute musí být obrázek.",
"in" => "Zvolený :attribute je neplatný.",
"integer" => ":attribute musí být celočíselný.",
"ip" => ":attribute musí být platná IP adresa.",
"max" => array(
"numeric" => "The :attribute may not be greater than :max.",
"file" => "The :attribute may not be greater than :max kilobytes.",
"string" => "The :attribute may not be greater than :max characters.",
"numeric" => ":attribute nesmí být větší než :max.",
"file" => ":attribute nesmí být větší než :max kilobajtů.",
"string" => ":attribute nesmí být větší než :max znaků.",
),
"mimes" => "The :attribute must be a file of type: :values.",
"mimes" => ":attribute musí být soubor typu: :values.",
"min" => array(
"numeric" => "The :attribute must be at least :min.",
"file" => "The :attribute must be at least :min kilobytes.",
"string" => "The :attribute must be at least :min characters.",
"numeric" => ":attribute musí být minimálne :min.",
"file" => ":attribute musí být minimálně :min kilobajtů.",
"string" => ":attribute musí mít minimálně :min znaků.",
),
"not_in" => "The selected :attribute is invalid.",
"numeric" => "The :attribute must be a number.",
"regex" => "The :attribute format is invalid.",
"required" => "The :attribute field is required.",
"required_if" => "The :attribute field is required when :other is :value.",
"required_with" => "The :attribute field is required when :values is present.",
"required_without" => "The :attribute field is required when :values is not present.",
"same" => "The :attribute and :other must match.",
"not_in" => "Zvolený :attribute je neplatný.",
"numeric" => ":attribute musí být číslo.",
"regex" => "Formát :attribute je neplatný.",
"required" => "Pole :attribute je požadováno.",
"required_if" => "Položka :attribute je vyžadována, když :other je :value.",
"required_with" => "Hodnota :attribute je vyžadována, když je přítomno :values.",
"required_without" => "Hodnota :attribute je vyžadována, když není přítomno :values.",
"same" => ":attribute a :other se musí shodovat.",
"size" => array(
"numeric" => "The :attribute must be :size.",
"file" => "The :attribute must be :size kilobytes.",
"string" => "The :attribute must be :size characters.",
"numeric" => ":attribute musí být :size.",
"file" => ":attribute musí být :size kilobajtů.",
"string" => ":attribute musí mít :size znaků.",
),
"unique" => "The :attribute has already been taken.",
"url" => "The :attribute format is invalid.",
"unique" => ":attribute byl již vybrán.",
"url" => "Formát :attribute je neplatný.",
/*
@@ -77,7 +77,7 @@ return array(
*/
'custom' => array(),
'alpha_space' => "The :attribute field may only contain letters, commas, spaces and dashes.",
'alpha_space' => "Pole :attribute může obsahovat pouze znaky, čárky, mezery a pomlčky.",
/*
|--------------------------------------------------------------------------
+8
View File
@@ -0,0 +1,8 @@
<?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',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
+1
View File
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
+1
View File
@@ -15,6 +15,7 @@ return array(
'notes' => 'Noter',
'order' => 'Order No.',
'purchase_order' => 'Purchase Order Number',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Remaining Seats',
'seats' => 'Seats',
'serial' => 'Serienummer',
+1
View File
@@ -6,6 +6,7 @@ return array(
'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat',
'edit' => 'Edit License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone License',
'history_for' => 'History for ',
'in_out' => 'In/Out',
+2 -1
View File
@@ -7,6 +7,7 @@ return array(
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'backups' => 'Backups',
'barcode_type' => 'Barcode Type',
'barcode_settings' => 'Barcode Settings',
'default_eula_text' => 'Default EULA',
@@ -32,7 +33,7 @@ return array(
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'site_name' => 'Site Name',
'site_name' => 'Site Name',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
+7 -2
View File
@@ -5,6 +5,7 @@ return array(
'accessories' => 'Tilbehør',
'accessory' => 'Tilbehør',
'action' => 'Action',
'activity_report' => 'Activity Report',
'address' => 'Addresse',
'admin' => 'Admin',
@@ -21,14 +22,16 @@ return array(
'avatar_upload' => 'Upload Avatar',
'back' => 'Tilbage',
'cancel' => 'Annuller',
'categories' => 'Aktiv Kategorier',
'category' => 'Aktiv Kategori',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'Skift email adresse',
'changepassword' => 'Skift adgangskode',
'checkin' => 'Tjek Ind',
'checkin_from' => 'Checkin from',
'checkout' => 'Tjek Ud',
'city' => 'By',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Land',
'create' => 'Opret ny',
'created_asset' => 'skabte aktiver',
@@ -88,6 +91,8 @@ return array(
'previous' => 'Previous',
'processing' => 'Processing',
'profile' => 'Din profil',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'Klar til Implementering',
'recent_activity' => 'Recent Activity',
'reports' => 'Rapporter',
+8
View File
@@ -0,0 +1,8 @@
<?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',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
+1
View File
@@ -9,6 +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.',
'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',
+1
View File
@@ -15,6 +15,7 @@ return array(
'notes' => 'Notizen',
'order' => 'Bestellnr.',
'purchase_order' => 'Bestellnummer',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Verbleibende Aktivierungen',
'seats' => 'Anzahl Aktivierungen',
'serial' => 'Seriennummer',
+1
View File
@@ -6,6 +6,7 @@ return array(
'checkout_history' => 'Zuweisungsverlauf',
'checkout' => 'Lizenzaktivierung herausgeben',
'edit' => 'Edit User',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone User',
'history_for' => 'Verlauf für ',
'in_out' => 'Zurücknehmen/Herausgeben',
+9 -8
View File
@@ -7,17 +7,18 @@ return array(
'auto_increment_assets' => 'Erzeugen von fortlaufenden Asset IDs',
'auto_increment_prefix' => 'Präfix (optional)',
'auto_incrementing_help' => 'Aktiviere zuerst fortlaufende Asset IDs um dies zu setzen',
'backups' => 'Backups',
'barcode_type' => 'Barcode Typ',
'barcode_settings' => 'Barcode Settings',
'barcode_settings' => 'Barcode Einstellungen',
'default_eula_text' => 'Standard EULA',
'default_eula_help_text' => 'Sie können ebenfalls eigene EULA\'s mit spezifischen Asset Kategorien verknüpfen.',
'display_asset_name' => 'Zeige Assetname an',
'display_checkout_date' => 'Zeige Herausgabedatum',
'display_eol' => 'Zeige EOL in der Tabellenansicht',
'display_qr' => 'Zeige QR-Codes',
'eula_settings' => 'EULA Settings',
'eula_settings' => 'EULA Einstellungen',
'eula_markdown' => 'Diese EULA <a href="https://help.github.com/articles/github-flavored-markdown/"> erlaubt Github Flavored Markdown</a>.',
'general_settings' => 'General Settings',
'general_settings' => 'Generelle Einstellungen',
'header_color' => 'Farbe der Kopfzeile',
'info' => 'Mit diesen Einstellungen können Sie verschieden Aspekte Ihrer Installation bearbeiten.',
'laravel' => 'Laravel Version',
@@ -32,12 +33,12 @@ return array(
'qr_text' => 'QR Code Text',
'setting' => 'Einstellung',
'settings' => 'Einstellungen',
'site_name' => 'Seitenname',
'site_name' => 'Seitenname',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
'slack_integration' => 'Slack Settings',
'slack_integration_help' => 'Slack integration is optional, however the endpoint and channel are required if you wish to use it. To configure Slack integration, you must first <a href=":slack_link" target="_new">create an incoming webhook</a> on your Slack account.',
'slack_channel' => 'Slack Kanal',
'slack_endpoint' => 'Slack Endpunkt',
'slack_integration' => 'Slack Einstellungen',
'slack_integration_help' => 'Die Slackintegration ist optional. Der Endpunkt und kanal werden benötigt, wenn man Slack benutzen will. Um Slack zu konfigurieren muss zuerst <a href=":slack_link" target="_new"> einen eingehenden Webhook</a> in seinem Slackkonto einrichten.',
'snipe_version' => 'Snipe-IT Version',
'system' => 'Systeminformationen',
'update' => 'Einstellungen übernehmen',
+10 -5
View File
@@ -5,7 +5,8 @@ return array(
'accessories' => 'Zubehör',
'accessory' => 'Zubehör',
'activity_report' => 'Activity Report',
'action' => 'Aktion',
'activity_report' => 'Aktivitätsreport',
'address' => 'Supplier Address',
'admin' => 'Administrator',
'all_assets' => 'Alle Assets',
@@ -21,14 +22,16 @@ return array(
'avatar_upload' => 'Avatar hochladen',
'back' => 'Zurück',
'cancel' => 'Abbrechen',
'categories' => 'Asset Kategorien',
'category' => 'Asset Kategorie',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'E-Mail Adresse ändern',
'changepassword' => 'Passwort ändern',
'checkin' => 'Checkin Asset',
'checkin_from' => 'Einchecken von',
'checkout' => 'Checkout Asset to User',
'city' => 'Stadt',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Land',
'create' => 'Create Location',
'created_asset' => 'Asset angelegt',
@@ -57,7 +60,7 @@ return array(
'id' => 'Id',
'image_delete' => 'Bild löschen',
'image_upload' => 'Bild hinzufügen',
'item' => 'Item',
'item' => 'Gegenstand',
'last' => 'Letztes',
'last_name' => 'Familienname',
'license' => 'Lizenz',
@@ -65,7 +68,7 @@ return array(
'licenses_available' => 'Verfügbare Lizenzen',
'licenses' => 'Lizenzen',
'list_all' => 'Alle auflisten',
'loading' => 'Loading',
'loading' => 'Am laden',
'location' => 'Standort',
'locations' => 'Standorte',
'logout' => 'Abmelden',
@@ -88,6 +91,8 @@ return array(
'previous' => 'Vorherige',
'processing' => 'In Arbeit',
'profile' => 'Ihr Profil',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'Fertig zum herausgeben',
'recent_activity' => 'Letzte Aktivität',
'reports' => 'Berichte',
+8
View File
@@ -0,0 +1,8 @@
<?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',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
@@ -9,6 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
+1
View File
@@ -15,6 +15,7 @@ return array(
'notes' => 'Notes',
'order' => 'Order No.',
'purchase_order' => 'Purchase Order Number',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Remaining Seats',
'seats' => 'Seats',
'serial' => 'Serial',
@@ -6,6 +6,7 @@ return array(
'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat',
'edit' => 'Edit License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone License',
'history_for' => 'History for ',
'in_out' => 'In/Out',
+2 -1
View File
@@ -7,6 +7,7 @@ return array(
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'backups' => 'Backups',
'barcode_type' => 'Barcode Type',
'barcode_settings' => 'Barcode Settings',
'default_eula_text' => 'Default EULA',
@@ -32,7 +33,7 @@ return array(
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'site_name' => 'Site Name',
'site_name' => 'Site Name',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
+7 -2
View File
@@ -5,6 +5,7 @@ return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'action' => 'Action',
'activity_report' => 'Activity Report',
'address' => 'Address',
'admin' => 'Admin',
@@ -21,14 +22,16 @@ return array(
'avatar_upload' => 'Upload Avatar',
'back' => 'Back',
'cancel' => 'Cancel',
'categories' => 'Asset Categories',
'category' => 'Asset Category',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'Change Email Address',
'changepassword' => 'Change Password',
'checkin' => 'Checkin',
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
'create' => 'Create New',
'created_asset' => 'created asset',
@@ -88,6 +91,8 @@ return array(
'previous' => 'Previous',
'processing' => 'Processing',
'profile' => 'Your profile',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'Ready to Deploy',
'recent_activity' => 'Recent Activity',
'reports' => 'Reports',
+11
View File
@@ -0,0 +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.',
'consumable_name' => 'Consumable Name',
'create' => 'Create Consumable',
'remaining' => 'Remaining',
'total' => 'Total',
'update' => 'Update Consumable',
);
+36
View File
@@ -0,0 +1,36 @@
<?php
return array(
'does_not_exist' => 'Consumable does not exist.',
'create' => array(
'error' => 'Consumable was not created, please try again.',
'success' => 'Consumable created successfully.'
),
'update' => array(
'error' => 'Consumable was not updated, please try again',
'success' => 'Consumable updated successfully.'
),
'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.'
),
'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.'
),
'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.'
)
);
+5
View File
@@ -0,0 +1,5 @@
<?php
return array(
'title' => 'Consumable Name',
);
+1 -1
View File
@@ -9,7 +9,7 @@ return array(
'deployable' => 'Deployable',
'deleted' => 'This asset has been deleted. <a href="/hardware/:asset_id/restore">Click here to restore it</a>.',
'edit' => 'Edit Asset',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, doc, docx, pdf, txt, rar and zip.',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'model_deleted' => 'This Assets model has been deleted. You must restore the model before you can restore the Asset.<br/> <a href="/hardware/models/:model_id/restore">Click here to restore the model</a>.',
'requestable' => 'Requestable',
'restore' => 'Restore Asset',
+1 -1
View File
@@ -10,12 +10,12 @@ return array(
'depreciation' => 'Depreciation',
'expiration' => 'Expiration Date',
'maintained' => 'Maintained',
'reassignable' => 'Reassignable',
'name' => 'Software Name',
'no_depreciation' => 'Do Not Depreciate',
'notes' => 'Notes',
'order' => 'Order No.',
'purchase_order' => 'Purchase Order Number',
'reassignable' => 'Reassignable',
'remaining_seats' => 'Remaining Seats',
'seats' => 'Seats',
'serial' => 'Serial',
+1 -1
View File
@@ -6,8 +6,8 @@ return array(
'checkout_history' => 'Checkout History',
'checkout' => 'Checkout License Seat',
'edit' => 'Edit License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
'clone' => 'Clone License',
'filetype_info' => 'Allowed filetypes are png, gif, jpg, doc, docx, pdf, txt, rar and zip.',
'history_for' => 'History for ',
'in_out' => 'In/Out',
'info' => 'License Info',
+2
View File
@@ -12,4 +12,6 @@ return array(
'address' => 'Address',
'zip' => 'Postal Code',
'locations' => 'Locations',
'parent' => 'Parent',
'currency' => 'Location Currency', // this is deprecated
);
+3 -1
View File
@@ -7,8 +7,10 @@ return array(
'auto_increment_assets' => 'Generate auto-incrementing asset IDs',
'auto_increment_prefix' => 'Prefix (optional)',
'auto_incrementing_help' => 'Enable auto-incrementing asset IDs first to set this',
'backups' => 'Backups',
'barcode_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',
@@ -32,7 +34,7 @@ return array(
'qr_text' => 'QR Code Text',
'setting' => 'Setting',
'settings' => 'Settings',
'site_name' => 'Site Name',
'site_name' => 'Site Name',
'slack_botname' => 'Slack Botname',
'slack_channel' => 'Slack Channel',
'slack_endpoint' => 'Slack Endpoint',
+9 -2
View File
@@ -5,6 +5,7 @@ return array(
'accessories' => 'Accessories',
'accessory' => 'Accessory',
'action' => 'Action',
'activity_report' => 'Activity Report',
'address' => 'Address',
'admin' => 'Admin',
@@ -20,8 +21,9 @@ return array(
'avatar_delete' => 'Delete Avatar',
'avatar_upload' => 'Upload Avatar',
'back' => 'Back',
'bad_data' => 'Nothing found. Maybe bad data?',
'cancel' => 'Cancel',
'categories' => 'Asset/Accessory Categories',
'categories' => 'Categories',
'category' => 'Category',
'changeemail' => 'Change Email Address',
'changepassword' => 'Change Password',
@@ -29,11 +31,13 @@ return array(
'checkin_from' => 'Checkin from',
'checkout' => 'Checkout',
'city' => 'City',
'consumable' => 'Consumable',
'consumables' => 'Consumables',
'country' => 'Country',
'create' => 'Create New',
'created_asset' => 'created asset',
'created_at' => 'Created at',
'currency' => '$',
'currency' => '$', // this is deprecated
'current' => 'Current',
'custom_report' => 'Custom Asset Report',
'dashboard' => 'Dashboard',
@@ -89,6 +93,8 @@ return array(
'previous' => 'Previous',
'processing' => 'Processing',
'profile' => 'Your profile',
'qty' => 'QTY',
'quanitity' => 'Quanitity',
'ready_to_deploy' => 'Ready to Deploy',
'recent_activity' => 'Recent Activity',
'reports' => 'Reports',
@@ -115,6 +121,7 @@ return array(
'type' => 'Type',
'undeployable' => 'Un-deployable',
'unknown_admin' => 'Unknown Admin',
'update' => 'Update',
'uploaded' => 'Uploaded',
'user' => 'User',
'users' => 'Users',
+8
View File
@@ -0,0 +1,8 @@
<?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',
);

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