Compare commits
93 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| d47e2aab76 | |||
| c7399b0c4f | |||
| 086b13c17e | |||
| 2620da186b | |||
| 3689a52894 | |||
| 725a9320cb | |||
| 12996cafac | |||
| 859c53e975 | |||
| 1322d81d64 | |||
| 3ab828a4cd | |||
| 5ca572b914 | |||
| 1bc7ff9941 | |||
| b855f2fa2b | |||
| 114e6ec6cc | |||
| be4230af81 | |||
| 390de7ae36 | |||
| 588f0a23ba | |||
| d40129bdae | |||
| 54f3c65624 | |||
| 8e18218652 | |||
| bf9aba3f20 | |||
| 7e554a3c59 | |||
| 91ac9bd485 | |||
| f16122070a | |||
| 4803bc71ec | |||
| f0a589f150 | |||
| 32591d4ca0 | |||
| d1bcee0dfa | |||
| e4dfb188fa | |||
| 4f057bfe5e | |||
| 8bbaf2e52f | |||
| cf5fcdf9d7 | |||
| 2333d4e933 | |||
| e1be3efd82 | |||
| 97f97e3590 | |||
| 701c16f4e6 | |||
| 59c203b6ae | |||
| d84479d9fc | |||
| 480f0ef13b | |||
| 6020de6321 | |||
| 796866fd54 | |||
| ef58de5e8c | |||
| 7e07c7dee3 | |||
| 9dc57ff673 | |||
| dea95f9f5b | |||
| 23431fafd9 | |||
| 2cf566422c | |||
| b85d624f08 | |||
| e69eddeef8 | |||
| 061e0d4cdb | |||
| 64b1355393 | |||
| 2cf169a64a | |||
| 6d810a9b0d | |||
| 4a9701af71 | |||
| 0890a22bdb | |||
| f9c66917bd | |||
| 311cccbb1e | |||
| ca27ef6741 | |||
| 0dfa0d9c45 | |||
| 90442c720b | |||
| e228577936 | |||
| 9a18312ab1 | |||
| fc4863837f | |||
| 9bb2ffcf9a | |||
| a78874d986 | |||
| 458f413c61 | |||
| 503f9145a4 | |||
| 04233336aa | |||
| e5b2163ffe | |||
| 9f899ee878 | |||
| 03caa85396 | |||
| f1a4608faf | |||
| c66fe3d4d2 | |||
| 855b3809d0 | |||
| 2d4dee2f72 | |||
| 8667964e3c | |||
| 72a2ee6ea4 | |||
| 6a638f131f | |||
| ab5ff0f709 | |||
| 36fd4ab7c5 | |||
| 98db6fe9df | |||
| 20fd420690 | |||
| 771e21d9f7 | |||
| 3fd9df62f4 | |||
| 1b1a733043 | |||
| e70dab64a2 | |||
| f121766037 | |||
| 9563cf4614 | |||
| 2d56240408 | |||
| 00bb511506 | |||
| fb1dd29059 | |||
| 0896ca6517 | |||
| 2982cffc3a |
@@ -0,0 +1,31 @@
|
||||
#### Expected Behavior (or desired behavior if a feature request)
|
||||
|
||||
(what you expect to happen goes here)
|
||||
|
||||
-----
|
||||
|
||||
#### Actual Behavior
|
||||
|
||||
(what actually happens goes here)
|
||||
|
||||
-----
|
||||
|
||||
#### Please confirm you have done the following before posting your bug report:
|
||||
|
||||
- [ ] I have enabled debug mode
|
||||
- [ ] I have read [checked the Common Issues page](http://docs.snipeitapp.com/common-issues.html)
|
||||
|
||||
-----
|
||||
#### Please provide answers to these questions before posting your bug report:
|
||||
|
||||
- Version of Snipe-IT you're running
|
||||
- What OS and web server you're running Snipe-IT on
|
||||
- What method you used to install Snipe-IT (install.sh, manual installation, docker, etc)
|
||||
- If you're getting an error in your browser, include that error
|
||||
- What specific Snipe-IT page you're on, and what specific element you're interacting with to trigger the error
|
||||
- If a stacktrace is provided in the error, include that too.
|
||||
- Any errors that appear in your browser's error console.
|
||||
- Confirm whether the error is [reproduceable on the demo](https://snipeitapp.com/demo).
|
||||
- Include any additional information you can find in `app/storage/logs` and your webserver's logs.
|
||||
- Include what you've done so far in the installation, and if you got any error messages along the way.
|
||||
- Indicate whether or not you've manually edited any data directly in the database
|
||||
+15
-2
@@ -1,4 +1,4 @@
|
||||
FROM ubuntu
|
||||
FROM ubuntu:trusty
|
||||
MAINTAINER Brady Wetherington <uberbrady@gmail.com>
|
||||
|
||||
RUN apt-get update && apt-get install -y \
|
||||
@@ -12,7 +12,8 @@ php5-gd \
|
||||
patch \
|
||||
curl \
|
||||
vim \
|
||||
git
|
||||
git \
|
||||
mysql-client
|
||||
|
||||
RUN php5enmod mcrypt
|
||||
RUN php5enmod gd
|
||||
@@ -28,6 +29,7 @@ RUN echo export APACHE_RUN_GROUP=staff >> /etc/apache2/envvars
|
||||
COPY docker/000-default.conf /etc/apache2/sites-enabled/000-default.conf
|
||||
|
||||
#SSL
|
||||
RUN mkdir -p /var/lib/snipeit/ssl
|
||||
COPY docker/001-default-ssl.conf /etc/apache2/sites-enabled/001-default-ssl.conf
|
||||
#COPY docker/001-default-ssl.conf /etc/apache2/sites-available/001-default-ssl.conf
|
||||
|
||||
@@ -50,6 +52,13 @@ COPY docker/*.php /var/www/html/app/config/production/
|
||||
|
||||
RUN chown -R docker /var/www/html
|
||||
|
||||
RUN \
|
||||
rm -r "/var/www/html/app/private_uploads" && ln -fs "/var/lib/snipeit/data/private_uploads" "/var/www/html/app/private_uploads" && \
|
||||
rm -r "/var/www/html/public/uploads/avatars" && ln -fs "/var/lib/snipeit/data/uploads/avatars" "/var/www/html/public/uploads/avatars" && \
|
||||
rm -r "/var/www/html/public/uploads/models" && ln -fs "/var/lib/snipeit/data/uploads/models" "/var/www/html/public/uploads/models" && \
|
||||
rm -r "/var/www/html/public/uploads/suppliers" && ln -fs "/var/lib/snipeit/data/uploads/suppliers" "/var/www/html/public/uploads/suppliers" && \
|
||||
rm -r "/var/www/html/app/storage/dumps" && ln -fs "/var/lib/snipeit/dumps" "/var/www/html/app/storage/dumps"
|
||||
|
||||
############## DEPENDENCIES via COMPOSER ###################
|
||||
|
||||
#global install of composer
|
||||
@@ -67,6 +76,10 @@ RUN cd /var/www/html;composer install
|
||||
#RUN chmod +x /tmp/app_install.exp
|
||||
#RUN /tmp/app_install.exp
|
||||
|
||||
############### DATA VOLUME #################
|
||||
|
||||
VOLUME [/var/lib/snipeit]
|
||||
|
||||
##### START SERVER
|
||||
|
||||
COPY docker/entrypoint.sh /entrypoint.sh
|
||||
|
||||
@@ -1,10 +1,11 @@
|
||||
[](https://pledgie.com/campaigns/22899) [](https://travis-ci.org/snipe/snipe-it) [](http://waffle.io/snipe/snipe-it) [](http://stillmaintained.com/snipe/snipe-it) [](https://crowdin.com/project/snipe-it)
|
||||
[](https://travis-ci.org/snipe/snipe-it) [](http://waffle.io/snipe/snipe-it) []() [](https://crowdin.com/project/snipe-it)
|
||||
[](https://gitter.im/snipe/snipe-it?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
[](https://hub.docker.com/r/snipe/snipe-it/)
|
||||
[](https://twitter.com/snipeyhead)
|
||||
|
||||
|
||||
## Snipe-IT - Asset Management For the Rest of Us
|
||||
|
||||
[](https://gitter.im/snipe/snipe-it?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge)
|
||||
|
||||
This is a FOSS project for asset management in IT Operations. Knowing who has which laptop, when it was purchased in order to depreciate it correctly, handling software licenses, etc.
|
||||
|
||||
It is built on [Laravel 4.2](http://laravel.com) and uses the [Sentry 2](https://github.com/cartalyst/sentry) package.
|
||||
|
||||
@@ -59,7 +59,7 @@ class AssetImportCommand extends Command {
|
||||
|
||||
// Loop through the records
|
||||
$nbInsert = $csv->each(function ($row) use ($duplicates) {
|
||||
$status_id = 1;
|
||||
|
||||
|
||||
// Let's just map some of these entries to more user friendly words
|
||||
|
||||
@@ -77,7 +77,7 @@ class AssetImportCommand extends Command {
|
||||
$user_email = '';
|
||||
}
|
||||
|
||||
// User's email
|
||||
// User's username
|
||||
if (array_key_exists('2',$row)) {
|
||||
$user_username = trim($row[2]);
|
||||
} else {
|
||||
@@ -98,23 +98,24 @@ class AssetImportCommand extends Command {
|
||||
$user_asset_category = '';
|
||||
}
|
||||
|
||||
// Asset Name
|
||||
// Asset Model
|
||||
if (array_key_exists('5',$row)) {
|
||||
$user_asset_name = trim($row[5]);
|
||||
$user_asset_model = substr(trim($row[5]), 0, 254);
|
||||
} else {
|
||||
$user_asset_name = '';
|
||||
$user_asset_model = '';
|
||||
}
|
||||
|
||||
// Asset Manufacturer
|
||||
if (array_key_exists('6',$row)) {
|
||||
$user_asset_mfgr = trim($row[6]);
|
||||
$user_asset_mfgr = substr(trim($row[6]), 0, 254);
|
||||
} else {
|
||||
$user_asset_mfgr = '';
|
||||
}
|
||||
|
||||
// Asset model number
|
||||
if (array_key_exists('7',$row)) {
|
||||
$user_asset_modelno = trim($row[7]);
|
||||
$user_asset_modelno = substr(trim($row[7]), 0, 254);
|
||||
//$user_asset_modelno = trim($row[7]);
|
||||
} else {
|
||||
$user_asset_modelno = '';
|
||||
}
|
||||
@@ -169,16 +170,49 @@ class AssetImportCommand extends Command {
|
||||
$user_asset_purchase_cost = '';
|
||||
}
|
||||
|
||||
// Asset Company Name
|
||||
if (array_key_exists('14',$row)) {
|
||||
if ($row[14]!='') {
|
||||
$user_asset_company_name = trim($row[14]);
|
||||
} else {
|
||||
$user_asset_company_name= '';
|
||||
}
|
||||
} else {
|
||||
$user_asset_company_name = '';
|
||||
}
|
||||
// Asset Company Name
|
||||
if (array_key_exists('14',$row)) {
|
||||
if ($row[14]!='') {
|
||||
$user_asset_company_name = trim($row[14]);
|
||||
} else {
|
||||
$user_asset_company_name= '';
|
||||
}
|
||||
} else {
|
||||
$user_asset_company_name = '';
|
||||
}
|
||||
|
||||
// Asset Status Name
|
||||
if (array_key_exists('15',$row)) {
|
||||
if ($row[15]!='') {
|
||||
$user_asset_status = trim($row[15]);
|
||||
} else {
|
||||
$user_asset_status= '';
|
||||
}
|
||||
} else {
|
||||
$user_asset_status = '';
|
||||
}
|
||||
|
||||
// Asset Warranty Months
|
||||
if (array_key_exists('16',$row)) {
|
||||
if ($row[16]!='') {
|
||||
$user_asset_warranty = intval($row[16]);
|
||||
} else {
|
||||
$user_asset_warranty= NULL;
|
||||
}
|
||||
} else {
|
||||
$user_asset_warranty = NULL;
|
||||
}
|
||||
|
||||
// Asset Supplier
|
||||
if (array_key_exists('17',$row)) {
|
||||
if ($row[17]!='') {
|
||||
$user_asset_supplier = trim($row[17]);
|
||||
} else {
|
||||
$user_asset_supplier= '';
|
||||
}
|
||||
} else {
|
||||
$user_asset_supplier = '';
|
||||
}
|
||||
|
||||
|
||||
// A number was given instead of a name
|
||||
@@ -220,7 +254,7 @@ class AssetImportCommand extends Command {
|
||||
$this->comment('Username: '.$user_username);
|
||||
$this->comment('Email: '.$user_email);
|
||||
$this->comment('Category Name: '.$user_asset_category);
|
||||
$this->comment('Item: '.$user_asset_name);
|
||||
$this->comment('Item: '.$user_asset_model);
|
||||
$this->comment('Manufacturer ID: '.$user_asset_mfgr);
|
||||
$this->comment('Model No: '.$user_asset_modelno);
|
||||
$this->comment('Serial No: '.$user_asset_serial);
|
||||
@@ -228,9 +262,11 @@ class AssetImportCommand extends Command {
|
||||
$this->comment('Location: '.$user_asset_location);
|
||||
$this->comment('Purchase Date: '.$user_asset_purchase_date);
|
||||
$this->comment('Purchase Cost: '.$user_asset_purchase_cost);
|
||||
$this->comment('Status: '.$user_asset_status);
|
||||
$this->comment('Supplier: '.$user_asset_supplier);
|
||||
$this->comment('Warranty Months: '.$user_asset_warranty);
|
||||
$this->comment('Notes: '.$user_asset_notes);
|
||||
$this->comment('Company Name: '.$user_asset_company_name);
|
||||
|
||||
$this->comment('Company Name: '.$user_asset_company_name);
|
||||
$this->comment('------------- Action Summary ----------------');
|
||||
|
||||
if ($user_username!='') {
|
||||
@@ -269,7 +305,7 @@ class AssetImportCommand extends Command {
|
||||
$this->comment('Location '.$user_asset_location.' already exists');
|
||||
} else {
|
||||
|
||||
$location = new Location();
|
||||
$location = new Location();
|
||||
|
||||
if ($user_asset_location!='') {
|
||||
|
||||
@@ -310,7 +346,7 @@ class AssetImportCommand extends Command {
|
||||
|
||||
} else {
|
||||
$category = new Category();
|
||||
$category->name = e($category_name);
|
||||
$category->name = e($category_name);
|
||||
$category->category_type = 'asset';
|
||||
$category->user_id = 1;
|
||||
|
||||
@@ -338,21 +374,65 @@ class AssetImportCommand extends Command {
|
||||
|
||||
}
|
||||
|
||||
// Check for the supplier match and create it if it doesn't exist
|
||||
if ($supplier = Supplier::where('name', e($user_asset_supplier))->first()) {
|
||||
$this->comment('Supplier '.$user_asset_supplier.' already exists');
|
||||
} else {
|
||||
$supplier = new Supplier();
|
||||
$supplier->name = e($user_asset_supplier);
|
||||
$supplier->user_id = 1;
|
||||
|
||||
if ($supplier->save()) {
|
||||
$this->comment('Supplier '.$user_asset_supplier.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Supplier '.$user_asset_supplier.' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
if ($user_asset_status=='') {
|
||||
$user_asset_status = 'Unspecified Status';
|
||||
}
|
||||
// Check for the status label match and create it if it doesn't exist
|
||||
if ($statuslabel = Statuslabel::where('name', e($user_asset_status))->first()) {
|
||||
$this->comment('Status Label '.$user_asset_status.' already exists');
|
||||
} else {
|
||||
|
||||
$statuslabel = new Statuslabel();
|
||||
$statuslabel->name = e($user_asset_status);
|
||||
$statuslabel->user_id = 1;
|
||||
$statuslabel->deployable = 1;
|
||||
|
||||
if ($statuslabel->save()) {
|
||||
$this->comment('Status Label '.$user_asset_status.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Status Label '.$user_asset_status.' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
$status_id = $statuslabel->id;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// Check for the asset model match and create it if it doesn't exist
|
||||
if ($asset_model = Model::where('name', e($user_asset_name))->where('modelno', e($user_asset_modelno))->where('category_id', $category->id)->where('manufacturer_id', $manufacturer->id)->first()) {
|
||||
$this->comment('The Asset Model '.$user_asset_name.' with model number '.$user_asset_modelno.' already exists');
|
||||
if ($asset_model = Model::where('name', e($user_asset_model ))->where('modelno', e($user_asset_modelno))->where('category_id', $category->id)->where('manufacturer_id', $manufacturer->id)->first()) {
|
||||
$this->comment('The Asset Model '.$user_asset_model .' with model number '.$user_asset_modelno.' already exists');
|
||||
} else {
|
||||
$asset_model = new Model();
|
||||
$asset_model->name = e($user_asset_name);
|
||||
$asset_model->name = e($user_asset_model );
|
||||
$asset_model->manufacturer_id = $manufacturer->id;
|
||||
$asset_model->modelno = e($user_asset_modelno);
|
||||
$asset_model->category_id = $category->id;
|
||||
$asset_model->user_id = 1;
|
||||
|
||||
if ($asset_model->save()) {
|
||||
$this->comment('Asset Model '.$user_asset_name.' with model number '.$user_asset_modelno.' was created');
|
||||
$this->comment('Asset Model '.$user_asset_model .' with model number '.$user_asset_modelno.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Asset Model '.$user_asset_name.' was NOT created');
|
||||
$this->comment('Something went wrong! Asset Model '.$user_asset_model .' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
@@ -390,7 +470,7 @@ class AssetImportCommand extends Command {
|
||||
if ($user_asset_purchase_cost!='') {
|
||||
$asset->purchase_cost = ParseFloat(e($user_asset_purchase_cost));
|
||||
} else {
|
||||
$asset->purchase_cost = 0.00;
|
||||
$asset->purchase_cost = '0.00';
|
||||
}
|
||||
$asset->serial = e($user_asset_serial);
|
||||
$asset->asset_tag = e($user_asset_tag);
|
||||
@@ -399,6 +479,7 @@ class AssetImportCommand extends Command {
|
||||
$asset->rtd_location_id = $location->id;
|
||||
$asset->user_id = 1;
|
||||
$asset->status_id = $status_id;
|
||||
$asset->warranty_months = $user_asset_warranty;
|
||||
$asset->company_id = $company->id;
|
||||
if ($user_asset_purchase_date!='') {
|
||||
$asset->purchase_date = $user_asset_purchase_date;
|
||||
@@ -408,9 +489,9 @@ class AssetImportCommand extends Command {
|
||||
$asset->notes = e($user_asset_notes);
|
||||
|
||||
if ($asset->save()) {
|
||||
$this->comment('Asset '.$user_asset_name.' with serial number '.$user_asset_serial.' was created');
|
||||
$this->comment('Asset '.$user_asset_model .' with serial number '.$user_asset_serial.' was created');
|
||||
} else {
|
||||
$this->comment('Something went wrong! Asset '.$user_asset_name.' was NOT created');
|
||||
$this->comment('Something went wrong! Asset '.$user_asset_model .' was NOT created');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
<?php
|
||||
return array (
|
||||
'app_version' => 'v2.1.0',
|
||||
'hash_version' => 'v2.1.0-47-g39f40a3',
|
||||
'app_version' => 'v2.1.1',
|
||||
'hash_version' => 'v2.1.1-55-g701c16f',
|
||||
);
|
||||
|
||||
@@ -332,6 +332,7 @@ class AuthController extends BaseController
|
||||
}
|
||||
|
||||
} catch (Cartalyst\Sentry\Users\UserNotFoundException $e) {
|
||||
return Redirect::route('forgot-password')->withInput()->with('error', $e->getMessage());
|
||||
// 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.
|
||||
|
||||
@@ -42,7 +42,7 @@ class AccessoriesController extends AdminController
|
||||
{
|
||||
// Show the page
|
||||
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$location_list = locationsList();
|
||||
return View::make('backend/accessories/edit')
|
||||
->with('accessory', new Accessory)
|
||||
@@ -125,7 +125,7 @@ class AccessoriesController extends AdminController
|
||||
}
|
||||
|
||||
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','accessory')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$location_list = locationsList();
|
||||
|
||||
return View::make('backend/accessories/edit', compact('accessory'))
|
||||
|
||||
@@ -68,7 +68,7 @@ class AssetsController extends AdminController
|
||||
$manufacturer_list = manufacturerList();
|
||||
$category_list = categoryList();
|
||||
$supplier_list = suppliersList();
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$assigned_to = usersList();
|
||||
$statuslabel_types = statusTypeList();
|
||||
|
||||
@@ -253,7 +253,7 @@ class AssetsController extends AdminController
|
||||
$manufacturer_list = manufacturerList();
|
||||
$category_list = categoryList();
|
||||
$supplier_list = suppliersList();
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$assigned_to = usersList();
|
||||
$statuslabel_types = statusTypeList();
|
||||
|
||||
@@ -650,6 +650,7 @@ class AssetsController extends AdminController
|
||||
$data['item_name'] = $asset->showAssetName();
|
||||
$data['checkin_date'] = $logaction->created_at;
|
||||
$data['item_tag'] = $asset->asset_tag;
|
||||
$data['item_serial'] = $asset->serial;
|
||||
$data['note'] = $logaction->note;
|
||||
|
||||
if ((($asset->checkin_email()=='1')) && ($user) && (!Config::get('app.lock_passwords'))) {
|
||||
@@ -882,7 +883,7 @@ class AssetsController extends AdminController
|
||||
$supplier_list = suppliersList();
|
||||
$assigned_to = usersList();
|
||||
$statuslabel_types = statusTypeList();
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
|
||||
$asset = clone $asset_to_clone;
|
||||
$asset->id = null;
|
||||
|
||||
@@ -171,20 +171,25 @@ class CategoriesController extends AdminController
|
||||
// Check if the category exists
|
||||
if (is_null($category = Category::find($categoryId))) {
|
||||
// Redirect to the blogs management page
|
||||
return Redirect::to('admin/settings/categories')->with('error', Lang::get('admin/categories/message.not_found'));
|
||||
return Redirect::route('categories')->with('error', Lang::get('admin/categories/message.not_found'));
|
||||
}
|
||||
|
||||
|
||||
if ($category->has_models() > 0) {
|
||||
return Redirect::route('categories')->with('error', Lang::get('admin/categories/message.assoc_models'));
|
||||
|
||||
} elseif ($category->accessories()->count() > 0) {
|
||||
return Redirect::route('categories')->with('error', Lang::get('admin/categories/message.assoc_accessories'));
|
||||
|
||||
} elseif ($category->consumables()->count() > 0) {
|
||||
return Redirect::route('categories')->with('error', Lang::get('admin/categories/message.assoc_consumables'));
|
||||
|
||||
// Redirect to the asset management page
|
||||
return Redirect::to('admin/settings/categories')->with('error', Lang::get('admin/categories/message.assoc_users'));
|
||||
} else {
|
||||
|
||||
$category->delete();
|
||||
|
||||
// Redirect to the locations management page
|
||||
return Redirect::to('admin/settings/categories')->with('success', Lang::get('admin/categories/message.delete.success'));
|
||||
return Redirect::route('categories')->with('success', Lang::get('admin/categories/message.delete.success'));
|
||||
}
|
||||
|
||||
|
||||
@@ -267,7 +272,7 @@ class CategoriesController extends AdminController
|
||||
return $data;
|
||||
}
|
||||
|
||||
public function getDataView($categoryID) {
|
||||
public function getDataViewAssets($categoryID) {
|
||||
|
||||
$category = Category::with('assets.company')->find($categoryID);
|
||||
$category_assets = $category->assets;
|
||||
@@ -335,4 +340,111 @@ class CategoriesController extends AdminController
|
||||
}
|
||||
|
||||
|
||||
|
||||
public function getDataViewAccessories($categoryID) {
|
||||
|
||||
$category = Category::with('accessories.company')->find($categoryID);
|
||||
$category_assets = $category->accessories;
|
||||
|
||||
if (Input::has('search')) {
|
||||
$category_assets = $category_assets->TextSearch(e(Input::get('search')));
|
||||
}
|
||||
|
||||
if (Input::has('offset')) {
|
||||
$offset = e(Input::get('offset'));
|
||||
} else {
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
if (Input::has('limit')) {
|
||||
$limit = e(Input::get('limit'));
|
||||
} else {
|
||||
$limit = 50;
|
||||
}
|
||||
|
||||
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
|
||||
|
||||
$allowed_columns = ['id','name','serial','asset_tag'];
|
||||
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
|
||||
$count = $category_assets->count();
|
||||
|
||||
$rows = array();
|
||||
|
||||
foreach ($category_assets as $asset) {
|
||||
|
||||
$actions = '';
|
||||
$inout='';
|
||||
|
||||
if ($asset->deleted_at=='') {
|
||||
$actions = '<div style=" white-space: nowrap;"><a href="'.route('update/accessory', $asset->id).'" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> <a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/accessory', $asset->id).'" data-content="'.Lang::get('admin/hardware/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($asset->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></div>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
$rows[] = array(
|
||||
'id' => $asset->id,
|
||||
'name' => link_to_route('view/accessory', $asset->name, [$asset->id]),
|
||||
'actions' => $actions,
|
||||
'companyName' => Company::getName($asset),
|
||||
);
|
||||
}
|
||||
|
||||
$data = array('total' => $count, 'rows' => $rows);
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
public function getDataViewConsumables($categoryID) {
|
||||
|
||||
$category = Category::with('accessories.company')->find($categoryID);
|
||||
$category_assets = $category->consumables;
|
||||
|
||||
if (Input::has('search')) {
|
||||
$category_assets = $category_assets->TextSearch(e(Input::get('search')));
|
||||
}
|
||||
|
||||
if (Input::has('offset')) {
|
||||
$offset = e(Input::get('offset'));
|
||||
} else {
|
||||
$offset = 0;
|
||||
}
|
||||
|
||||
if (Input::has('limit')) {
|
||||
$limit = e(Input::get('limit'));
|
||||
} else {
|
||||
$limit = 50;
|
||||
}
|
||||
|
||||
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
|
||||
|
||||
$allowed_columns = ['id','name','serial','asset_tag'];
|
||||
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
|
||||
$count = $category_assets->count();
|
||||
|
||||
$rows = array();
|
||||
|
||||
foreach ($category_assets as $asset) {
|
||||
|
||||
$actions = '';
|
||||
$inout='';
|
||||
|
||||
if ($asset->deleted_at=='') {
|
||||
$actions = '<div style=" white-space: nowrap;"><a href="'.route('update/consumable', $asset->id).'" class="btn btn-warning btn-sm"><i class="fa fa-pencil icon-white"></i></a> <a data-html="false" class="btn delete-asset btn-danger btn-sm" data-toggle="modal" href="'.route('delete/consumable', $asset->id).'" data-content="'.Lang::get('admin/hardware/message.delete.confirm').'" data-title="'.Lang::get('general.delete').' '.htmlspecialchars($asset->name).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></div>';
|
||||
}
|
||||
|
||||
|
||||
|
||||
$rows[] = array(
|
||||
'id' => $asset->id,
|
||||
'name' => link_to_route('view/consumable', $asset->name, [$asset->id]),
|
||||
'actions' => $actions,
|
||||
'companyName' => Company::getName($asset),
|
||||
);
|
||||
}
|
||||
|
||||
$data = array('total' => $count, 'rows' => $rows);
|
||||
return $data;
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ class ConsumablesController extends AdminController
|
||||
{
|
||||
// Show the page
|
||||
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','consumable')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$location_list = locationsList();
|
||||
|
||||
return View::make('backend/consumables/edit')
|
||||
@@ -126,7 +126,7 @@ class ConsumablesController extends AdminController
|
||||
}
|
||||
|
||||
$category_list = array('' => '') + DB::table('categories')->where('category_type','=','consumable')->whereNull('deleted_at')->orderBy('name','ASC')->lists('name', 'id');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$location_list = locationsList();
|
||||
|
||||
return View::make('backend/consumables/edit', compact('consumable'))
|
||||
|
||||
@@ -56,7 +56,7 @@ class LicensesController extends AdminController
|
||||
$depreciation_list = array('0' => Lang::get('admin/licenses/form.no_depreciation')) + Depreciation::lists('name', 'id');
|
||||
$supplier_list = array('' => 'Select Supplier') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
|
||||
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
|
||||
return View::make('backend/licenses/edit')
|
||||
->with('license_options',$license_options)
|
||||
@@ -203,7 +203,7 @@ class LicensesController extends AdminController
|
||||
$depreciation_list = array('0' => Lang::get('admin/licenses/form.no_depreciation')) + Depreciation::lists('name', 'id');
|
||||
$supplier_list = array('' => 'Select Supplier') + Supplier::orderBy('name', 'asc')->lists('name', 'id');
|
||||
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
|
||||
return View::make('backend/licenses/edit', compact('license'))
|
||||
->with('license_options',$license_options)
|
||||
@@ -782,7 +782,7 @@ class LicensesController extends AdminController
|
||||
// Show the page
|
||||
$license_options = array('0' => 'Top Level') + License::lists('name', 'id');
|
||||
$maintained_list = array('' => 'Maintained', '1' => 'Yes', '0' => 'No');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
//clone the orig
|
||||
$license = clone $license_to_clone;
|
||||
$license->id = null;
|
||||
@@ -956,7 +956,7 @@ class LicensesController extends AdminController
|
||||
$licenses = $licenses->TextSearch(Input::get('search'));
|
||||
}
|
||||
|
||||
$allowed_columns = ['id','name'];
|
||||
$allowed_columns = ['id','name','serial'];
|
||||
$order = Input::get('order') === 'asc' ? 'asc' : 'desc';
|
||||
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'created_at';
|
||||
|
||||
|
||||
@@ -75,7 +75,7 @@ class LocationsController extends AdminController
|
||||
} else {
|
||||
$location->parent_id = e(Input::get('parent_id'));
|
||||
}
|
||||
$location->currency = Input::get('currency','$');
|
||||
$location->currency = e(Input::get('currency','$'));
|
||||
$location->address = e(Input::get('address'));
|
||||
$location->address2 = e(Input::get('address2'));
|
||||
$location->city = e(Input::get('city'));
|
||||
@@ -203,7 +203,7 @@ class LocationsController extends AdminController
|
||||
} else {
|
||||
$location->parent_id = e(Input::get('parent_id',''));
|
||||
}
|
||||
$location->currency = Input::get('currency','$');
|
||||
$location->currency = e(Input::get('currency','$'));
|
||||
$location->address = e(Input::get('address'));
|
||||
$location->address2 = e(Input::get('address2'));
|
||||
$location->city = e(Input::get('city'));
|
||||
|
||||
@@ -115,6 +115,7 @@ class ModelsController extends AdminController
|
||||
$model->modelno = e(Input::get('modelno'));
|
||||
$model->manufacturer_id = e(Input::get('manufacturer_id'));
|
||||
$model->category_id = e(Input::get('category_id'));
|
||||
$model->note = e(Input::get('note'));
|
||||
$model->user_id = Sentry::getId();
|
||||
if (Input::get('custom_fieldset')!='') {
|
||||
$model->fieldset_id = e(Input::get('custom_fieldset'));
|
||||
@@ -166,6 +167,7 @@ class ModelsController extends AdminController
|
||||
$model->category_id = e(Input::get('category_id'));
|
||||
$model->modelno = e(Input::get('modelno'));
|
||||
$model->user_id = Sentry::getUser()->id;
|
||||
$model->note = e(Input::get('note'));
|
||||
$model->eol=0;
|
||||
|
||||
if($model->save()) {
|
||||
@@ -243,6 +245,7 @@ class ModelsController extends AdminController
|
||||
$model->modelno = e(Input::get('modelno'));
|
||||
$model->manufacturer_id = e(Input::get('manufacturer_id'));
|
||||
$model->category_id = e(Input::get('category_id'));
|
||||
$model->note = e(Input::get('note'));
|
||||
if (Input::get('custom_fieldset')=='') {
|
||||
$model->fieldset_id = null;
|
||||
} else {
|
||||
@@ -454,6 +457,7 @@ class ModelsController extends AdminController
|
||||
'depreciation' => (($model->depreciation)&&($model->depreciation->id > 0)) ? $model->depreciation->name.' ('.$model->depreciation->months.')' : Lang::get('general.no_depreciation'),
|
||||
'category' => ($model->category) ? $model->category->name : '',
|
||||
'eol' => ($model->eol) ? $model->eol.' '.Lang::get('general.months') : '',
|
||||
'note' => $model->getNote(),
|
||||
'actions' => $actions
|
||||
);
|
||||
}
|
||||
|
||||
@@ -43,13 +43,13 @@ class UsersController extends AdminController {
|
||||
* @var array
|
||||
*/
|
||||
protected $validationRules = array(
|
||||
'first_name' => 'required|alpha_space|min:2',
|
||||
'last_name' => 'required|alpha_space|min:2',
|
||||
'first_name' => 'required|alpha_space|min:1',
|
||||
'last_name' => 'required|alpha_space|min:1',
|
||||
'location_id' => 'numeric',
|
||||
'username' => 'required|min:2|unique:users,deleted_at,NULL',
|
||||
'email' => 'email|unique:users,email',
|
||||
'password' => 'required|min:6',
|
||||
'password_confirm' => 'required|min:6|same:password',
|
||||
'password_confirm' => 'required|same:password',
|
||||
'company_id' => 'integer',
|
||||
);
|
||||
|
||||
@@ -86,7 +86,7 @@ class UsersController extends AdminController {
|
||||
|
||||
$location_list = locationsList();
|
||||
$manager_list = managerList();
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
|
||||
/* echo '<pre>';
|
||||
print_r($userPermissions);
|
||||
@@ -285,7 +285,7 @@ class UsersController extends AdminController {
|
||||
$this->encodeAllPermissions($permissions);
|
||||
|
||||
$location_list = locationsList();
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$manager_list = array('' => 'Select a User') + DB::table('users')
|
||||
->select(DB::raw('concat(last_name,", ",first_name," (",email,")") as full_name, id'))
|
||||
->whereNull('deleted_at')
|
||||
@@ -371,21 +371,21 @@ class UsersController extends AdminController {
|
||||
|
||||
try {
|
||||
// Update the user
|
||||
$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->first_name = e(Input::get('first_name'));
|
||||
$user->last_name = e(Input::get('last_name'));
|
||||
$user->username = e(Input::get('username'));
|
||||
$user->email = e(Input::get('email'));
|
||||
$user->employee_num = e(Input::get('employee_num'));
|
||||
$user->activated = e(Input::get('activated', $user->activated));
|
||||
if (Sentry::getUser()->hasAccess('superuser')) {
|
||||
$user->permissions = Input::get('permissions');
|
||||
}
|
||||
$user->jobtitle = Input::get('jobtitle');
|
||||
$user->phone = Input::get('phone');
|
||||
$user->jobtitle = e(Input::get('jobtitle'));
|
||||
$user->phone = e(Input::get('phone'));
|
||||
$user->location_id = Input::get('location_id');
|
||||
$user->company_id = Company::getIdForUser(Input::get('company_id'));
|
||||
$user->manager_id = Input::get('manager_id');
|
||||
$user->notes = Input::get('notes');
|
||||
$user->notes = e(Input::get('notes'));
|
||||
|
||||
if ($user->manager_id == "") {
|
||||
$user->manager_id = NULL;
|
||||
@@ -403,7 +403,7 @@ class UsersController extends AdminController {
|
||||
|
||||
// Do we want to update the user email?
|
||||
if (!Config::get('app.lock_passwords')) {
|
||||
$user->email = Input::get('email');
|
||||
$user->email = e(Input::get('email'));
|
||||
}
|
||||
|
||||
// Get the current user groups
|
||||
@@ -439,7 +439,7 @@ class UsersController extends AdminController {
|
||||
$success = Lang::get('admin/users/message.success.update');
|
||||
|
||||
// Redirect to the user page
|
||||
return Redirect::route('view/user', $id)->with('success', $success);
|
||||
return Redirect::route('users')->with('success', $success);
|
||||
}
|
||||
|
||||
// Prepare the error message
|
||||
@@ -737,7 +737,7 @@ class UsersController extends AdminController {
|
||||
$this->encodeAllPermissions($permissions);
|
||||
|
||||
$location_list = array('' => '') + Location::lists('name', 'id');
|
||||
$company_list = Company::getSelectList();
|
||||
$company_list = companyList();
|
||||
$manager_list = array('' => 'Select a User') + DB::table('users')
|
||||
->select(DB::raw('concat(last_name,", ",first_name," (",email,")") as full_name, id'))
|
||||
->whereNull('deleted_at')
|
||||
@@ -907,7 +907,7 @@ class UsersController extends AdminController {
|
||||
$sort = e(Input::get('sort'));
|
||||
}
|
||||
|
||||
$users = User::select(array('users.id','users.employee_num','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes','users.company_id', 'users.deleted_at'))
|
||||
$users = User::select(array('users.id','users.employee_num','users.email','users.username','users.location_id','users.manager_id','users.first_name','users.last_name','users.created_at','users.notes','users.company_id', 'users.deleted_at','users.activated'))
|
||||
->with('assets','accessories','consumables','licenses','manager','sentryThrottle','groups','userloc','company');
|
||||
$users = Company::scopeCompanyables($users);
|
||||
|
||||
@@ -935,7 +935,7 @@ class UsersController extends AdminController {
|
||||
$allowed_columns =
|
||||
[
|
||||
'last_name','first_name','email','username','employee_num',
|
||||
'assets','accessories', 'consumables','licenses','groups'
|
||||
'assets','accessories', 'consumables','licenses','groups','activated'
|
||||
];
|
||||
|
||||
$sort = in_array($sort, $allowed_columns) ? $sort : 'first_name';
|
||||
@@ -955,7 +955,7 @@ class UsersController extends AdminController {
|
||||
$actions = '<nobr>';
|
||||
|
||||
foreach ($user->groups as $group) {
|
||||
$group_names .= '<a href="' . Config::get('app.url') . '/admin/groups/' . $group->id . '/edit" class="label label-default">' . $group->name . '</a> ';
|
||||
$group_names .= '<a href="' . Config::get('app.url') . '/admin/groups/' . $group->id . '/edit" class="label label-default">' . e($group->name) . '</a> ';
|
||||
}
|
||||
|
||||
|
||||
@@ -983,19 +983,20 @@ class UsersController extends AdminController {
|
||||
'checkbox' =>'<div class="text-center hidden-xs hidden-sm"><input type="checkbox" name="edit_user['.$user->id.']" class="one_required"></div>',
|
||||
'name' => '<a title="'.$user->fullName().'" href="../admin/users/'.$user->id.'/view">'.$user->fullName().'</a>',
|
||||
'email' => ($user->email!='') ?
|
||||
'<a href="mailto:'.$user->email.'" class="hidden-md hidden-lg">'.$user->email.'</a>'
|
||||
.'<a href="mailto:'.$user->email.'" class="hidden-xs hidden-sm"><i class="fa fa-envelope"></i></a>'
|
||||
'<a href="mailto:'.e($user->email).'" class="hidden-md hidden-lg">'.e($user->email).'</a>'
|
||||
.'<a href="mailto:'.e($user->email).'" class="hidden-xs hidden-sm"><i class="fa fa-envelope"></i></a>'
|
||||
.'</span>' : '',
|
||||
'username' => $user->username,
|
||||
'location' => ($user->userloc) ? $user->userloc->name : '',
|
||||
'manager' => ($user->manager) ? '<a title="' . $user->manager->fullName() . '" href="users/' . $user->manager->id . '/view">' . $user->manager->fullName() . '</a>' : '',
|
||||
'username' => e($user->username),
|
||||
'location' => ($user->userloc) ? e($user->userloc->name) : '',
|
||||
'manager' => ($user->manager) ? '<a title="' . e($user->manager->fullName()) . '" href="users/' . $user->manager->id . '/view">' . e($user->manager->fullName()) . '</a>' : '',
|
||||
'assets' => $user->assets->count(),
|
||||
'employee_num' => $user->employee_num,
|
||||
'employee_num' => e($user->employee_num),
|
||||
'licenses' => $user->licenses->count(),
|
||||
'accessories' => $user->accessories->count(),
|
||||
'consumables' => $user->consumables->count(),
|
||||
'groups' => $group_names,
|
||||
'notes' => $user->notes,
|
||||
'notes' => e($user->notes),
|
||||
'activated' => ($user->activated=='1') ? '<i class="fa fa-check"></i>' : '<i class="fa fa-times"></i>',
|
||||
'actions' => ($actions) ? $actions : '',
|
||||
'companyName' => is_null($user->company) ? '' : e($user->company->name)
|
||||
);
|
||||
@@ -1248,17 +1249,42 @@ class UsersController extends AdminController {
|
||||
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_bind').ldap_error($ldapconn));
|
||||
}
|
||||
|
||||
// Perform the search
|
||||
$search_results = @ldap_search($ldapconn, $base_dn, '('.$filter.')');
|
||||
if (!$search_results) {
|
||||
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_search').ldap_error($ldapconn));
|
||||
}
|
||||
// Set up LDAP pagination for very large databases
|
||||
// @author Richard Hofman
|
||||
$page_size = 500;
|
||||
$cookie = '';
|
||||
$result_set = array();
|
||||
$global_count = 0;
|
||||
|
||||
// Get results
|
||||
$results = @ldap_get_entries($ldapconn, $search_results);
|
||||
if (!$results) {
|
||||
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_get_entries').ldap_error($ldapconn));
|
||||
}
|
||||
// Perform the search
|
||||
do {
|
||||
// Paginate (non-critical, if not supported by server)
|
||||
ldap_control_paged_result($ldapconn, $page_size, false, $cookie);
|
||||
|
||||
$search_results = ldap_search($ldapconn, $base_dn, '('.$filter.')');
|
||||
|
||||
if (!$search_results) {
|
||||
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_search').ldap_error($ldapconn));
|
||||
}
|
||||
|
||||
// Get results from page
|
||||
$results = ldap_get_entries($ldapconn, $search_results);
|
||||
if (!$results) {
|
||||
return Redirect::route('users')->with('error', Lang::get('admin/users/message.error.ldap_could_not_get_entries').ldap_error($ldapconn));
|
||||
}
|
||||
|
||||
// Add results to result set
|
||||
$global_count += $results['count'];
|
||||
$result_set = array_merge($result_set, $results);
|
||||
|
||||
ldap_control_paged_result_response($ldapconn, $search_results, $cookie);
|
||||
|
||||
} while ($cookie !== null && $cookie != '');
|
||||
|
||||
// Clean up after search
|
||||
$result_set['count'] = $global_count;
|
||||
$results = $result_set;
|
||||
ldap_control_paged_result($ldapconn, 0);
|
||||
|
||||
$summary = array();
|
||||
for ($i = 0; $i < $results["count"]; $i++) {
|
||||
|
||||
@@ -11,9 +11,8 @@ class EditLocationIdAssetLogsTable extends Migration
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
$prefix=DB::getTablePrefix();
|
||||
DB::statement('ALTER TABLE '.$prefix.'asset_logs MODIFY location_id int(11) null');
|
||||
DB::statement('ALTER TABLE '.$prefix.'asset_logs MODIFY added_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP');
|
||||
DB::statement('ALTER TABLE '.DB::getTablePrefix().'asset_logs MODIFY location_id int(11) null');
|
||||
DB::statement('ALTER TABLE '.DB::getTablePrefix().'asset_logs MODIFY added_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP');
|
||||
|
||||
}
|
||||
|
||||
|
||||
@@ -18,8 +18,8 @@ class ImportLdapSettings extends Migration {
|
||||
// Only update the settings record if there IS an LDAP Config
|
||||
// AND the Settings table doesn't already have LDAP settings in it
|
||||
|
||||
if ((Config::get('ldap.url')) && ($settings->ldap_server=='')) {
|
||||
|
||||
if ((Config::get('ldap.url')) && ($settings) && ($settings->ldap_server)) {
|
||||
|
||||
$settings->ldap_enabled = 1;
|
||||
$settings->ldap_server = Config::get('ldap.url');
|
||||
$settings->ldap_uname = Config::get('ldap.username');
|
||||
|
||||
@@ -0,0 +1,32 @@
|
||||
<?php
|
||||
|
||||
use Illuminate\Database\Schema\Blueprint;
|
||||
use Illuminate\Database\Migrations\Migration;
|
||||
|
||||
class AddNotesToModels extends Migration {
|
||||
|
||||
/**
|
||||
* Run the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function up()
|
||||
{
|
||||
Schema::table('models', function ($table) {
|
||||
$table->text('note')->nullable()->default(NULL);
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function down()
|
||||
{
|
||||
Schema::table('models', function ($table) {
|
||||
$table->dropColumn('note');
|
||||
});
|
||||
}
|
||||
|
||||
}
|
||||
+9
-2
@@ -34,6 +34,7 @@ App::after(function ($request, $response) {
|
||||
Route::filter('auth', function () {
|
||||
// Check if the user is logged in
|
||||
if ( ! Sentry::check()) {
|
||||
Log::debug('Not logged in - auth filter');
|
||||
// Store the current uri in the session
|
||||
Session::put('loginRedirect', Request::url());
|
||||
|
||||
@@ -74,7 +75,8 @@ Route::filter('guest', function () {
|
||||
|
||||
Route::filter('admin-auth', function () {
|
||||
// Check if the user is logged in
|
||||
if ( ! Sentry::check()) {
|
||||
if ( !Sentry::check()) {
|
||||
LOG::debug('Not logged in - admin-auth');
|
||||
// Store the current uri in the session
|
||||
Session::put('loginRedirect', Request::url());
|
||||
|
||||
@@ -84,8 +86,9 @@ Route::filter('admin-auth', function () {
|
||||
|
||||
// Check if the user has access to the admin pages
|
||||
if ( ! Sentry::getUser()->hasAccess('admin')) {
|
||||
LOG::debug('Not a super admin');
|
||||
// Show the insufficient permissions page
|
||||
return Redirect::route('view-assets');
|
||||
return Redirect::route('view-assets')->with('error','You do not have permission to view this page.');
|
||||
}
|
||||
});
|
||||
|
||||
@@ -102,6 +105,7 @@ Route::filter('admin-auth', function () {
|
||||
Route::filter('reporting-auth', function () {
|
||||
// Check if the user is logged in
|
||||
if ( ! Sentry::check()) {
|
||||
LOG::debug('Not logged in');
|
||||
// Store the current uri in the session
|
||||
Session::put('loginRedirect', Request::url());
|
||||
|
||||
@@ -111,6 +115,7 @@ Route::filter('reporting-auth', function () {
|
||||
|
||||
// Check if the user has access to the admin pages
|
||||
if ( ! Sentry::getUser()->hasAccess('reports')) {
|
||||
LOG::debug('Unsufficient permissions');
|
||||
// Show the insufficient permissions page
|
||||
return Redirect::route('profile')->with("error","You do not have permission to view this page.");
|
||||
}
|
||||
@@ -119,6 +124,7 @@ Route::filter('reporting-auth', function () {
|
||||
Route::filter('backup-auth', function () {
|
||||
|
||||
if (!Sentry::getUser()->isSuperUser()) {
|
||||
LOG::debug('Not a super admin');
|
||||
return Redirect::route('home')->with('error', Lang::get('general.insufficient_permissions'));
|
||||
}
|
||||
});
|
||||
@@ -138,6 +144,7 @@ Route::filter('backup-auth', function () {
|
||||
|
||||
Route::filter('csrf', function () {
|
||||
if (Session::token() != Input::get('_token')) {
|
||||
LOG::debug('No CSRF token');
|
||||
throw new Illuminate\Session\TokenMismatchException;
|
||||
}
|
||||
});
|
||||
|
||||
+1
-1
@@ -27,7 +27,7 @@ function modelList() {
|
||||
}
|
||||
|
||||
function companyList() {
|
||||
$company_list = array('' => '') + DB::table('companies')
|
||||
$company_list = array('0' => Lang::get('general.select_company')) + DB::table('companies')
|
||||
->orderBy('name', 'asc')
|
||||
->lists('name', 'id');
|
||||
return $company_list;
|
||||
|
||||
Executable → Regular
+9
-6
@@ -5,19 +5,22 @@ return array(
|
||||
'about_accessories_text' => 'الملحقات هي أي شيء تقوم بتسليمه للمستخدمين لكنه لا يحتوي على رقم تسلسلي (أو أنك لست بحاجة إلى تتبعه بشكل خاص). مثال: فأرة الحاسوب أو لوحة المفاتيح.',
|
||||
'accessory_category' => 'فئة الملحق',
|
||||
'accessory_name' => 'اسم الملحق',
|
||||
'cost' => 'Purchase Cost',
|
||||
'create' => 'Create Accessory',
|
||||
'date' => 'Purchase Date',
|
||||
'cost' => 'تكلفة شراء',
|
||||
'checkout' => 'الملحقات المخرجة',
|
||||
'checkin' => 'إدخالات الملحقات',
|
||||
'create' => 'إنشاء ملحق',
|
||||
'date' => 'تاريخ الشراء',
|
||||
'edit' => 'تعديل الملحق',
|
||||
'eula_text' => 'إنشاء اتفاقية جديدة',
|
||||
'eula_text_help' => 'يسمح لك هذا الحقل بتخصيص الاتفاقيات لأنواع معينة من الأصول. اذا كنت تمتلك اتفاقية واحدة لجميع أصولك يمكنك أن تقوم بتأشير المربع في الأسفل لاستخدام الاتفاقية الافتراضية.',
|
||||
'require_acceptance' => 'مطالبة المستخدمين بتأكيد قبولهم الأصول في هذه الفئة.',
|
||||
'no_default_eula' => 'ليس هناك اتفاقيات. قم باضافة واحدة من "الاعدادات".',
|
||||
'order' => 'Order Number',
|
||||
'order' => 'رقم طلب الشراء',
|
||||
'qty' => 'الكمية',
|
||||
'total' => 'المجموع',
|
||||
'remaining' => 'المتاح',
|
||||
'update' => 'Update Accessory',
|
||||
'update' => 'تحديث الملحق',
|
||||
'use_default_eula' => 'قم باستعمال <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a>.',
|
||||
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
|
||||
'use_default_eula_disabled' => '<del>استخدام (اتفاقية ترخيص المستخدم) الافتراضية الأساسية بدلا من ذلك.</del> لم يتم تحديد (اتفاقية ترخيص المستخدم) الافتراضية الأساسية. الرجاء إضافتها في الإعدادات.',
|
||||
|
||||
);
|
||||
|
||||
Executable → Regular
+9
-9
@@ -2,23 +2,23 @@
|
||||
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Accessory does not exist.',
|
||||
'does_not_exist' => 'الملحق غير موجود.',
|
||||
'assoc_users' => 'تم إخراج :count عنصر من هذا الملحق للمستخدمين، الرجاء إيداع الملحقات ثم حاول مرة أخرى. ',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Accessory was not created, please try again.',
|
||||
'success' => 'Accessory created successfully.'
|
||||
'error' => 'لم يتم انشاء الملحق، الرجاء المحاولة مرة اخرى.',
|
||||
'success' => 'تم انشاء الملحق بنجاح.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Accessory was not updated, please try again',
|
||||
'success' => 'Accessory updated successfully.'
|
||||
'error' => 'لم يتم تحديث الملحق، الرجاء المحاولة مرة أخرى',
|
||||
'success' => 'تم بنجاح تحديث الملحق.'
|
||||
),
|
||||
|
||||
'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' => 'هل أنت متأكد من رغبتك في حذف هذا الملحق؟',
|
||||
'error' => 'حدث خطأ أثناء محاولة حذف الملحق. الرجاء حاول مرة أخرى.',
|
||||
'success' => 'تم حذف الملحق بنجاح.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
@@ -30,7 +30,7 @@ return array(
|
||||
'checkin' => array(
|
||||
'error' => 'لم يتم إيداع الملحق، الرجاء المحاولة مرة أخرى',
|
||||
'success' => 'تم إيداع الملحق بنجاح.',
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.'
|
||||
'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.'
|
||||
)
|
||||
|
||||
|
||||
|
||||
Executable → Regular
+1
-1
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'dl_csv' => 'Download CSV',
|
||||
'dl_csv' => 'التنزيل كملف CSV',
|
||||
'eula_text' => 'اتفاقية ترخيص المستخدم',
|
||||
'id' => 'رقم المعرف',
|
||||
'require_acceptance' => 'القبول',
|
||||
|
||||
Executable → Regular
+10
-10
@@ -1,14 +1,14 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenance_type' => 'Maintenance Type',
|
||||
'title' => 'Title',
|
||||
'start_date' => 'Started',
|
||||
'completion_date' => 'Completed',
|
||||
'cost' => 'Cost',
|
||||
'is_warranty' => 'Warranty Improvement',
|
||||
'asset_maintenance_time' => 'Days',
|
||||
'notes' => 'Notes',
|
||||
'update' => 'Update',
|
||||
'create' => 'Create'
|
||||
'asset_maintenance_type' => 'تصنيف الصيانة',
|
||||
'title' => 'المسمى',
|
||||
'start_date' => 'بدأت',
|
||||
'completion_date' => 'أنجزت',
|
||||
'cost' => 'التكلفة',
|
||||
'is_warranty' => 'تحسين الضمان',
|
||||
'asset_maintenance_time' => 'أيام',
|
||||
'notes' => 'مُلاحظات',
|
||||
'update' => 'تعديل',
|
||||
'create' => 'إنشاء'
|
||||
];
|
||||
|
||||
Executable → Regular
+7
-7
@@ -1,11 +1,11 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'edit' => 'Edit Asset Maintenance',
|
||||
'delete' => 'Delete Asset Maintenance',
|
||||
'view' => 'View Asset Maintenance Details',
|
||||
'repair' => 'Repair',
|
||||
'maintenance' => 'Maintenance',
|
||||
'upgrade' => 'Upgrade'
|
||||
'asset_maintenances' => 'صيانة الاُصول',
|
||||
'edit' => 'تعديل صيانة الأصل',
|
||||
'delete' => 'حذف صيانة الأصل',
|
||||
'view' => 'عرض تفاصيل صيانة الأصل',
|
||||
'repair' => 'إصلاح',
|
||||
'maintenance' => 'الصيانة',
|
||||
'upgrade' => 'الترقية'
|
||||
];
|
||||
|
||||
Executable → Regular
+9
-9
@@ -1,17 +1,17 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'not_found' => 'Asset Maintenance you were looking for was not found!',
|
||||
'not_found' => 'لم يتم العثور على صيانة الأصل!',
|
||||
'delete' => [
|
||||
'confirm' => 'Are you sure you wish to delete this asset maintenance?',
|
||||
'error' => 'There was an issue deleting the asset maintenance. Please try again.',
|
||||
'success' => 'The asset maintenance was deleted successfully.'
|
||||
'confirm' => 'هل أنت متأكد من رغبتك في حذف صيانة الأصل؟',
|
||||
'error' => 'حدثت مشكلة في عملية الحذف لصيانة الأصل. الرجاء المحاولة مرة اُخرى.',
|
||||
'success' => 'تم حذف صيانة الأصل بنجاح.'
|
||||
],
|
||||
'create' => [
|
||||
'error' => 'Asset Maintenance was not created, please try again.',
|
||||
'success' => 'Asset Maintenance created successfully.'
|
||||
'error' => 'لم يتم إنشاء صيانة الأصل، الرجاء المحاولة مرة أخرى.',
|
||||
'success' => 'تم إنشاء صيانة الأصل بنجاح.'
|
||||
],
|
||||
'asset_maintenance_incomplete' => 'Not Completed Yet',
|
||||
'warranty' => 'Warranty',
|
||||
'not_warranty' => 'Not Warranty',
|
||||
'asset_maintenance_incomplete' => 'لم يكتمل بعد',
|
||||
'warranty' => 'الضمان',
|
||||
'not_warranty' => 'لا يوجد ضمان',
|
||||
];
|
||||
Executable → Regular
+5
-5
@@ -1,9 +1,9 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'title' => 'Asset Maintenance',
|
||||
'asset_name' => 'Asset',
|
||||
'supplier_name' => 'Supplier',
|
||||
'is_warranty' => 'Warranty',
|
||||
'dl_csv' => 'Download CSV'
|
||||
'title' => 'صيانة الاُصل',
|
||||
'asset_name' => 'الأصل',
|
||||
'supplier_name' => 'المزود',
|
||||
'is_warranty' => 'الضمان',
|
||||
'dl_csv' => 'التنزيل كملف CSV'
|
||||
];
|
||||
|
||||
Executable → Regular
+11
-11
@@ -5,18 +5,18 @@ return array(
|
||||
'about_categories' => 'تصنيفات الأصول تساعدك على ترتيب الأصول. من الأمثلة على التصنيفات " مكاتب "، "أجهزة الكمبيوتر المحمولة "، "الهواتف النقالة "، "أجهزة لوحية " وهكذا، كما يمكنك استخدام التصنيفات بأي طريقة تناسبك. ',
|
||||
'asset_categories' => 'التصنيفات',
|
||||
'category_name' => 'اسم التصنيف',
|
||||
'checkin_email' => 'Send email to user on checkin.',
|
||||
'clone' => 'Clone Category',
|
||||
'checkin_email' => 'إرسال إشعار للمستخدم عند الإدخال.',
|
||||
'clone' => 'نسخ التصنيف',
|
||||
'create' => 'إنشاء تصنيف',
|
||||
'edit' => 'Edit Category',
|
||||
'eula_text' => 'Category EULA',
|
||||
'eula_text_help' => 'This field allows you to customize your EULAs for specific types of assets. If you only have one EULA for all of your assets, you can check the box below to use the primary default.',
|
||||
'require_acceptance' => 'Require users to confirm acceptance of assets in this category.',
|
||||
'required_acceptance' => 'This user will be emailed with a link to confirm acceptance of this item.',
|
||||
'required_eula' => 'This user will be emailed a copy of the EULA',
|
||||
'no_default_eula' => 'No primary default EULA found. Add one in Settings.',
|
||||
'edit' => 'تعديل التصنيف',
|
||||
'eula_text' => 'إتفاقية الإستخدام للتصنيف',
|
||||
'eula_text_help' => 'يسمح لك هذا الحقل بتخصيص الاتفاقيات لأنواع معينة من الأصول. اذا كنت تمتلك اتفاقية واحدة لجميع أصولك يمكنك أن تقوم بتأشير المربع في الأسفل لاستخدام الاتفاقية الافتراضية.',
|
||||
'require_acceptance' => 'مطالبة المستخدمين بتأكيد قبولهم للأصول في هذا التصنيف.',
|
||||
'required_acceptance' => 'سيتم اشعار المستخدم لتأكيد قبول الأصل.',
|
||||
'required_eula' => 'سيتم إشعار هذا المستخدم بإتفاقية الإستخدام',
|
||||
'no_default_eula' => 'ليس هناك اي اتفاقيات إستخدام. قم باضافة واحدة من "الاعدادات".',
|
||||
'update' => 'تحديث التصنيف',
|
||||
'use_default_eula' => 'Use the <a href="#" data-toggle="modal" data-target="#eulaModal">primary default EULA</a> instead.',
|
||||
'use_default_eula_disabled' => '<del>Use the primary default EULA instead.</del> No primary default EULA is set. Please add one in Settings.',
|
||||
'use_default_eula' => 'قم باستعمال <a href="#" data-toggle="modal" data-target="#eulaModal">إتفاقية الإستخدام الإفتراضية</a>.',
|
||||
'use_default_eula_disabled' => '<del>إستعمال إتفاقية الإستخدام الافتراضية بدلا من ذلك.</del> لم يتم تحديد إتفاقية الإستخدام الافتراضية. الرجاء إضافتها في الإعدادات.',
|
||||
|
||||
);
|
||||
|
||||
Executable → Regular
+2
-1
@@ -3,7 +3,8 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'التصنيف غير موجود.',
|
||||
'assoc_users' => 'هذا التصنيف مرتبط مع نموذج. فضلاً قم بتحديث النماذج بحيث لا تكون مرتبطة بهذا التصنيف. ',
|
||||
'assoc_models' => '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. ',
|
||||
'assoc_items' => 'This category is currently associated with at least one :asset_type and cannot be deleted. Please update your :asset_type to no longer reference this category and try again. ',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'فشل إنشاء التصنيف، فضلاً حاول مرة أخرى.',
|
||||
|
||||
Executable → Regular
+2
-2
@@ -1,10 +1,10 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'eula_text' => 'EULA',
|
||||
'eula_text' => 'اتفاقية ترخيص المستخدم',
|
||||
'id' => 'الرقم',
|
||||
'parent' => 'التصنيف الأب',
|
||||
'require_acceptance' => 'Acceptance',
|
||||
'require_acceptance' => 'القبول',
|
||||
'title' => 'اسم التصنيف',
|
||||
|
||||
);
|
||||
|
||||
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
return [
|
||||
'select_company' => 'اختر الشركة',
|
||||
];
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
return array(
|
||||
'does_not_exist' => 'الشركة غير موجودة.',
|
||||
'assoc_users' => 'هذه الشركة مرتبطة حاليا مع نموذج ولا يمكن حذفها. رجاءً قم بتحديث النماذج بحيث لا تكون مرتبطة بهذه الشركة ثم حاول مرة اُخرى. ',
|
||||
'create' => array(
|
||||
'error' => 'لم يتم انشاء الشركة، رجاءً حاول مرة اُخرى.',
|
||||
'success' => 'تم إنشاء الشركة بنجاح.'
|
||||
),
|
||||
'update' => array(
|
||||
'error' => 'لم يتم تحديث الشركة، رجاءً حاول مرة اُخرى',
|
||||
'success' => 'تم تحديث الشركة بنجاح.'
|
||||
),
|
||||
'delete' => array(
|
||||
'confirm' => 'هل أنت متأكد من رغبتك في حذف هذه الشركة؟',
|
||||
'error' => 'حدثت مشكلة اثناء عملية حذف الشركة. رجاءً المحاولة مرة اُخرى.',
|
||||
'success' => 'تم حذف الشركة بنجاح.'
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
return array(
|
||||
'companies' => 'الشركات',
|
||||
'create' => 'إنشاء شركة',
|
||||
'title' => 'شركة',
|
||||
'update' => 'تحديث الشركة',
|
||||
'name' => 'إسم الشركة',
|
||||
'id' => 'رقم التعريف',
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'about_components_title' => 'حول المكونات',
|
||||
'about_components_text' => 'المكونات هي العناصر التي تشكل جزءا من الأصل، على سبيل المثال القرص الصلب، ذاكرة الوصول العشوائي، إلخ.',
|
||||
'component_name' => 'اسم المكون',
|
||||
'checkin' => 'ادخالات المكونات',
|
||||
'checkout' => 'مخرجات المكونات',
|
||||
'cost' => 'تكلفة الشراء',
|
||||
'create' => 'إنشاء مكون',
|
||||
'edit' => 'تعديل مكون',
|
||||
'date' => 'تاريخ الشراء',
|
||||
'order' => 'رقم طلب الشراء',
|
||||
'remaining' => 'المتبقية',
|
||||
'total' => 'المجموع',
|
||||
'update' => 'تحديث مكون',
|
||||
);
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'المكون غير موجود.',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'لم يتم إنشاء المكون، الرجاء المحاولة مرة أخرى.',
|
||||
'success' => 'تم إنشاء المكون بنجاح.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'لم يتم تحديث المكون، الرجاء المحاولة مرة أخرى',
|
||||
'success' => 'تم تحديث المكون بنجاح.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'هل أنت متأكد من رغبتك في حذف هذا المكون؟',
|
||||
'error' => 'حدثت مشكلة اثناء عملية حذف المكون. رجاءً المحاولة مرة اُخرى.',
|
||||
'success' => 'تم حذف المكون بنجاح.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
'error' => 'لم تتم عملة اخراج المكون، الرجاء المحاولة مرة اخرى',
|
||||
'success' => 'تم إخراج المكون بنجاح.',
|
||||
'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.'
|
||||
),
|
||||
|
||||
'checkin' => array(
|
||||
'error' => 'لم تتم عملية اخراج المكون، الرجاء المحاولة مرة اخرى',
|
||||
'success' => 'تم إدخال المكون بنجاح.',
|
||||
'user_does_not_exist' => 'هذا المستخدم خاطئ، الرجاء المحاولة مرة أخرى.'
|
||||
)
|
||||
|
||||
|
||||
);
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'title' => 'اسم المكون',
|
||||
);
|
||||
Executable → Regular
+11
-10
@@ -1,14 +1,15 @@
|
||||
<?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',
|
||||
'cost' => 'Purchase Cost',
|
||||
'create' => 'Create Consumable',
|
||||
'date' => 'Purchase Date',
|
||||
'order' => 'Order Number',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'update' => 'Update Consumable',
|
||||
'about_consumables_title' => 'حول المواد الاستهلاكية',
|
||||
'about_consumables_text' => 'المواد الاستهلاكية هي الأشياء المشتراة والتي ستستخدم مع مرور الوقت. على سبيل المثال، حبر الطابعة أو ورق الناسخة.',
|
||||
'consumable_name' => 'اسم المادة الإستهلاكية',
|
||||
'cost' => 'تكلفة الشراء',
|
||||
'create' => 'إنشاء مادة إستهلاكية',
|
||||
'date' => 'تاريخ الشراء',
|
||||
'item_no' => 'Item No.',
|
||||
'order' => 'رقم طلب الشراء',
|
||||
'remaining' => 'المتبقية',
|
||||
'total' => 'المجموع',
|
||||
'update' => 'تحديث المادة الإستهلاكية',
|
||||
);
|
||||
|
||||
Executable → Regular
Executable → Regular
@@ -0,0 +1,23 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'custom_fields' => 'Custom Fields',
|
||||
'field' => 'Field',
|
||||
'about_fieldsets_title' => 'About Fieldsets',
|
||||
'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
|
||||
'fieldset' => 'Fieldset',
|
||||
'qty_fields' => 'Qty Fields',
|
||||
'fieldsets' => 'Fieldsets',
|
||||
'fieldset_name' => 'Fieldset Name',
|
||||
'field_name' => 'Field Name',
|
||||
'field_element' => 'Form Element',
|
||||
'field_element_short' => 'Element',
|
||||
'field_format' => 'Format',
|
||||
'field_custom_format' => 'Custom Format',
|
||||
'required' => 'Required',
|
||||
'req' => 'Req.',
|
||||
'used_by_models' => 'Used By Models',
|
||||
'order' => 'Order',
|
||||
'create_fieldset' => 'New Fieldset',
|
||||
'create_field' => 'New Custom Field',
|
||||
);
|
||||
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'field' => array(
|
||||
'invalid' => 'That field does not exist.',
|
||||
'already_added' => 'Field already added',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Field was not created, please try again.',
|
||||
'success' => 'Field created successfully.',
|
||||
'assoc_success' => 'Field successfully added to fieldset.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Field was not updated, please try again',
|
||||
'success' => 'Field updated successfully.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this field?',
|
||||
'error' => 'There was an issue deleting the field. Please try again.',
|
||||
'success' => 'The field was deleted successfully.',
|
||||
'in_use' => 'Field is still in use.',
|
||||
)
|
||||
|
||||
),
|
||||
|
||||
'fieldset' => array(
|
||||
|
||||
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Fieldset was not created, please try again.',
|
||||
'success' => 'Fieldset created successfully.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Fieldset was not updated, please try again',
|
||||
'success' => 'Fieldset updated successfully.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this fieldset?',
|
||||
'error' => 'There was an issue deleting the fieldset. Please try again.',
|
||||
'success' => 'The fieldset was deleted successfully.',
|
||||
'in_use' => 'Fieldset is still in use.',
|
||||
)
|
||||
|
||||
),
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
);
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+9
-1
@@ -36,6 +36,12 @@ return array(
|
||||
'invalidfiles' => 'One or more of your files is too large or is a filetype that is not allowed. Allowed filetypes are png, gif, jpg, doc, docx, pdf, and txt.',
|
||||
),
|
||||
|
||||
'import' => array(
|
||||
'error' => 'Some Items did not import Correctly.',
|
||||
'errorDetail' => 'The Following Items were not imported because of errors.',
|
||||
'success' => "Your File has been imported",
|
||||
),
|
||||
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this asset?',
|
||||
@@ -52,7 +58,9 @@ return array(
|
||||
'checkin' => array(
|
||||
'error' => 'Asset was not checked in, please try again',
|
||||
'success' => 'Asset checked in successfully.',
|
||||
'user_does_not_exist' => 'That user is invalid.. Please try again.'
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.',
|
||||
'already_checked_in' => 'That asset is already checked in.',
|
||||
|
||||
),
|
||||
|
||||
'requests' => array(
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+1
-1
@@ -1,7 +1,7 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'assets_rtd' => 'Assets RTD',
|
||||
'assets_rtd' => 'Assets', // This has NEVER meant Assets Retired. I don't know how it keeps getting reverted.
|
||||
'assets_checkedout' => 'Assets Assigned',
|
||||
'id' => 'ID',
|
||||
'city' => 'City',
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+32
-3
@@ -2,23 +2,30 @@
|
||||
|
||||
return array(
|
||||
'alert_email' => 'Send alerts to',
|
||||
'alerts_enabled' => 'Alerts enabled',
|
||||
'alerts_enabled' => 'Alerts Enabled',
|
||||
'alert_interval' => 'Expiring Alerts Threshold (in days)',
|
||||
'alert_inv_threshold' => 'Inventory Alert Threshold',
|
||||
'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',
|
||||
'backups' => 'Backups',
|
||||
'barcode_type' => 'Barcode Type',
|
||||
'barcode_settings' => 'Barcode Settings',
|
||||
'confirm_purge' => 'Confirm Purge',
|
||||
'confirm_purge_help' => 'Enter the text "DELETE" in the box below to purge your deleted records. This action cannot be undone.',
|
||||
'custom_css' => 'Custom CSS',
|
||||
'custom_css_help' => 'Enter any custom CSS overrides you would like to use. Do not include the <style></style> tags.',
|
||||
'default_currency' => 'Default Currency',
|
||||
'default_eula_text' => 'Default EULA',
|
||||
'default_language' => 'Default Language',
|
||||
'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',
|
||||
'display_qr' => 'Display Square Codes',
|
||||
'display_alt_barcode' => 'Display 2D barcode',
|
||||
'barcode_type' => '3D Barcode Type',
|
||||
'alt_barcode_type' => '2D barcode type',
|
||||
'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',
|
||||
@@ -72,4 +79,26 @@ return array(
|
||||
'brand' => 'Branding',
|
||||
'about_settings_title' => 'About Settings',
|
||||
'about_settings_text' => 'These settings let you customize certain aspects of your installation.',
|
||||
'labels_per_page' => 'Labels per page',
|
||||
'label_dimensions' => 'Label dimensions (inches)',
|
||||
'page_padding' => 'Page margins (inches)',
|
||||
'purge' => 'Purge Deleted Records',
|
||||
'labels_display_bgutter' => 'Label bottom gutter',
|
||||
'labels_display_sgutter' => 'Label side gutter',
|
||||
'labels_fontsize' => 'Label font size',
|
||||
'labels_pagewidth' => 'Label sheet width',
|
||||
'labels_pageheight' => 'Label sheet height',
|
||||
'label_gutters' => 'Label spacing (inches)',
|
||||
'page_dimensions' => 'Page dimensions (inches)',
|
||||
'label_fields' => 'Label visible fields',
|
||||
'inches' => 'inches',
|
||||
'width_w' => 'w',
|
||||
'height_h' => 'h',
|
||||
'text_pt' => 'pt',
|
||||
'left' => 'left',
|
||||
'right' => 'right',
|
||||
'top' => 'top',
|
||||
'bottom' => 'bottom',
|
||||
'vertical' => 'vertical',
|
||||
'horizontal' => 'horizontal',
|
||||
);
|
||||
|
||||
Executable → Regular
+5
@@ -13,5 +13,10 @@ return array(
|
||||
'generated' => 'A new backup file was successfully created.',
|
||||
'file_not_found' => 'That backup file could not be found on the server.',
|
||||
),
|
||||
'purge' => array(
|
||||
'error' => 'An error has occurred while purging. ',
|
||||
'validation_failed' => 'Your purge confirmation is incorrect. Please type the word "DELETE" in the confirmation box.',
|
||||
'success' => 'Deleted records successfully purged.'
|
||||
),
|
||||
|
||||
);
|
||||
|
||||
Executable → Regular
+9
-9
@@ -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' => 'Status Label does not exist.',
|
||||
'assoc_assets' => 'This Status Label is currently associated with at least one Asset and cannot be deleted. Please update your assets to no longer reference this status and try again. ',
|
||||
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Location was not created, please try again.',
|
||||
'success' => 'Location created successfully.'
|
||||
'error' => 'Status Label was not created, please try again.',
|
||||
'success' => 'Status Label created successfully.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Location was not updated, please try again',
|
||||
'success' => 'Location updated successfully.'
|
||||
'error' => 'Status Label was not updated, please try again',
|
||||
'success' => 'Status Label updated successfully.'
|
||||
),
|
||||
|
||||
'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' => 'Are you sure you wish to delete this Status Label?',
|
||||
'error' => 'There was an issue deleting the Status Label. Please try again.',
|
||||
'success' => 'The Status Label was deleted successfully.'
|
||||
)
|
||||
|
||||
);
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+2
-2
@@ -4,14 +4,14 @@
|
||||
return array(
|
||||
|
||||
'assets_user' => 'الجهاز مسجل بعهدة :name',
|
||||
'current_assets' => 'Assets currently checked out to this user',
|
||||
'clone' => 'نسخ المستخدم',
|
||||
'contact_user' => 'اتصل بـ :name',
|
||||
'edit' => 'تعديل المستخدم',
|
||||
'filetype_info' => 'Allowed filetypes are png, gif, jpg, jpeg, doc, docx, pdf, txt, zip, and rar.',
|
||||
'history_user' => 'الأرشيف الخاص بـ :name',
|
||||
'last_login' => 'آخر دخول للمستخدم',
|
||||
'ldap_config_text' => 'LDAP configuration settings can be found in the app/config folder in a file called ldap.php. The selected location will be set for all imported users. You will need to have at least one location set to use this feature.',
|
||||
'ldap_text' => 'Connect to LDAP and create users. Passwords will be auto-generated.',
|
||||
'ldap_config_text' => 'LDAP configuration settings can be found Admin > Settings. The (optional) selected location will be set for all imported users.',
|
||||
'software_user' => 'البرامج المسجلة لـ :name',
|
||||
'view_user' => 'عرض المستخدم :name',
|
||||
'usercsv' => 'ملف CSV',
|
||||
|
||||
Executable → Regular
Executable → Regular
@@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'send_password_link' => 'Send Password Reset Link',
|
||||
'email_reset_password' => 'Email Password Reset',
|
||||
'reset_password' => 'Reset Password',
|
||||
'login' => 'Login',
|
||||
'login_prompt' => 'Please Login',
|
||||
'forgot_password' => 'I forgot my password',
|
||||
'remember_me' => 'Remember Me',
|
||||
];
|
||||
|
||||
Executable → Regular
Executable → Regular
+10
-9
@@ -2,14 +2,15 @@
|
||||
|
||||
return array(
|
||||
|
||||
'actions' => 'الإجراءات',
|
||||
'add' => 'Add New',
|
||||
'cancel' => 'Cancel',
|
||||
'delete' => 'حذف',
|
||||
'edit' => 'تعديل',
|
||||
'restore' => 'إستعادة',
|
||||
'request' => 'Request',
|
||||
'submit' => 'إرسال',
|
||||
'upload' => 'Upload',
|
||||
'actions' => 'الإجراءات',
|
||||
'add' => 'Add New',
|
||||
'cancel' => 'Cancel',
|
||||
'checkin_and_delete' => 'Checkin & Delete User',
|
||||
'delete' => 'حذف',
|
||||
'edit' => 'تعديل',
|
||||
'restore' => 'إستعادة',
|
||||
'request' => 'Request',
|
||||
'submit' => 'إرسال',
|
||||
'upload' => 'Upload',
|
||||
|
||||
);
|
||||
|
||||
Executable → Regular
+19
@@ -2,6 +2,7 @@
|
||||
|
||||
return [
|
||||
'accessories' => 'Accessories',
|
||||
'activated' => 'Activated',
|
||||
'accessory' => 'Accessory',
|
||||
'accessory_report' => 'Accessory Report',
|
||||
'action' => 'Action',
|
||||
@@ -33,6 +34,8 @@
|
||||
'city' => 'المدينة',
|
||||
'companies' => 'Companies',
|
||||
'company' => 'Company',
|
||||
'component' => 'Component',
|
||||
'components' => 'Components',
|
||||
'consumable' => 'Consumable',
|
||||
'consumables' => 'Consumables',
|
||||
'country' => 'الدولة',
|
||||
@@ -53,13 +56,20 @@
|
||||
'depreciation' => 'الإستهلاك',
|
||||
'editprofile' => 'تعديل الملف الشخصي',
|
||||
'eol' => 'الحياة',
|
||||
'email_domain' => 'Email Domain',
|
||||
'email_format' => 'Email Format',
|
||||
'email_domain_help' => 'This is used to generate email addresses when importing',
|
||||
'filastname_format' => 'First Initial Last Name (jsmith@example.com)',
|
||||
'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)',
|
||||
'first' => 'First',
|
||||
'first_name' => 'الإسم الأول',
|
||||
'first_name_format' => 'First Name (jane@example.com)',
|
||||
'file_name' => 'File',
|
||||
'file_uploads' => 'File Uploads',
|
||||
'generate' => 'Generate',
|
||||
'groups' => 'المجموعات',
|
||||
'gravatar_email' => 'البريد الإلكتروني لخدمة Gravatar',
|
||||
'history' => 'History',
|
||||
'history_for' => 'السجل لـ',
|
||||
'id' => 'الرقم',
|
||||
'image_delete' => 'حذف الصورة',
|
||||
@@ -70,6 +80,7 @@
|
||||
'asset_maintenances' => 'Asset Maintenances',
|
||||
'item' => 'Item',
|
||||
'insufficient_permissions' => 'Insufficient permissions!',
|
||||
'language' => 'Language',
|
||||
'last' => 'Last',
|
||||
'last_name' => 'الإسم الأخير',
|
||||
'license' => 'الرخص',
|
||||
@@ -83,8 +94,12 @@
|
||||
'location' => 'الموقع',
|
||||
'locations' => 'المواقع',
|
||||
'logout' => 'تسجيل خروج',
|
||||
'lookup_by_tag' => 'Lookup by Asset Tag',
|
||||
'manufacturer' => 'الشركة المصنعة',
|
||||
'manufacturers' => 'الشركات المصنعة',
|
||||
'markdown' => 'This field allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.',
|
||||
'min_amt' => 'Min. QTY',
|
||||
'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered.',
|
||||
'model_no' => 'رقم الموديل',
|
||||
'months' => 'أشهر',
|
||||
'moreinfo' => 'المزيد من المعلومات',
|
||||
@@ -120,6 +135,8 @@
|
||||
'select_user' => 'Select a User',
|
||||
'select_date' => 'Select Date',
|
||||
'select_statuslabel' => 'Select Status',
|
||||
'select_company' => 'Select Company',
|
||||
'select_asset' => 'Select Asset',
|
||||
'settings' => 'الإعدادات',
|
||||
'sign_in' => 'تسجيل الدخول',
|
||||
'site_name' => 'إسم الموقع',
|
||||
@@ -132,6 +149,7 @@
|
||||
'type' => 'Type',
|
||||
'undeployable' => 'غير قابلة للتوزيع',
|
||||
'unknown_admin' => 'إداري غير معروف',
|
||||
'username_format' => 'Username Format',
|
||||
'update' => 'Update',
|
||||
'uploaded' => 'Uploaded',
|
||||
'user' => 'المستخدم',
|
||||
@@ -146,4 +164,5 @@
|
||||
'yes' => 'نعم',
|
||||
'zip' => 'الرمز البريدي',
|
||||
'noimage' => 'No image uploaded or image not found.',
|
||||
'token_expired' => 'Your form session has expired. Please try again.',
|
||||
];
|
||||
|
||||
Executable → Regular
@@ -0,0 +1,7 @@
|
||||
<?php
|
||||
|
||||
return [
|
||||
'sent' => 'Your password link has been sent!',
|
||||
'user' => 'That user does not exist or does not have an email address associated',
|
||||
];
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
+1
@@ -33,6 +33,7 @@ return array(
|
||||
"digits_between" => "The :attribute must be between :min and :max digits.",
|
||||
"email" => "The :attribute format is invalid.",
|
||||
"exists" => "The selected :attribute is invalid.",
|
||||
"email_array" => "One or more email addresses is invalid.",
|
||||
"image" => "The :attribute must be an image.",
|
||||
"in" => "The selected :attribute is invalid.",
|
||||
"integer" => "The :attribute must be an integer.",
|
||||
|
||||
Executable → Regular
+3
@@ -6,8 +6,11 @@ return array(
|
||||
'accessory_category' => 'Категория аксесоари',
|
||||
'accessory_name' => 'Аксесоар',
|
||||
'cost' => 'Стойност на закупуване',
|
||||
'checkout' => 'Checkout Accessory',
|
||||
'checkin' => 'Checkin Accessory',
|
||||
'create' => 'Създаване на аксесоар',
|
||||
'date' => 'Дата на закупуване',
|
||||
'edit' => 'Edit Accessory',
|
||||
'eula_text' => 'EULA на категорията',
|
||||
'eula_text_help' => 'Това поле позволява да задавате различни EULA за всеки тип активи. Ако имате обща EULA за всички активи, можете да използвате кутийката по-долу за да използвате една обща по подразбиране.',
|
||||
'require_acceptance' => 'Задължаване на потребителите да потвърждават приемането на активи от тази категория.',
|
||||
|
||||
Executable → Regular
+3
-3
@@ -16,9 +16,9 @@ return array(
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Сигурни ли сте, че желаете изтриване на категорията?',
|
||||
'error' => 'Проблем при изтриване на категорията. Моля опитайте отново.',
|
||||
'success' => 'Категорията бе изтрита успешно.'
|
||||
'confirm' => 'Are you sure you wish to delete this accessory?',
|
||||
'error' => 'There was an issue deleting the accessory. Please try again.',
|
||||
'success' => 'The accessory was deleted successfully.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
|
||||
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
Executable → Regular
+2
-1
@@ -3,7 +3,8 @@
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Категорията не съществува.',
|
||||
'assoc_users' => 'Тази категория е асоциирана с поне един модел и не може да бъде изтрита. Моля обновете връзките с моделите и опитайте отново.',
|
||||
'assoc_models' => '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. ',
|
||||
'assoc_items' => 'This category is currently associated with at least one :asset_type and cannot be deleted. Please update your :asset_type to no longer reference this category and try again. ',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Категорията не беше създадена. Моля опитайте отново.',
|
||||
|
||||
Executable → Regular
@@ -0,0 +1,4 @@
|
||||
<?php
|
||||
return [
|
||||
'select_company' => 'Изберете компания',
|
||||
];
|
||||
@@ -0,0 +1,18 @@
|
||||
<?php
|
||||
return array(
|
||||
'does_not_exist' => 'Компанията не съществува.',
|
||||
'assoc_users' => 'This company is currently associated with at least one model and cannot be deleted. Please update your models to no longer reference this company and try again. ',
|
||||
'create' => array(
|
||||
'error' => 'Company was not created, please try again.',
|
||||
'success' => 'Company created successfully.'
|
||||
),
|
||||
'update' => array(
|
||||
'error' => 'Company was not updated, please try again',
|
||||
'success' => 'Company updated successfully.'
|
||||
),
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this company?',
|
||||
'error' => 'There was an issue deleting the company. Please try again.',
|
||||
'success' => 'The Company was deleted successfully.'
|
||||
)
|
||||
);
|
||||
@@ -0,0 +1,9 @@
|
||||
<?php
|
||||
return array(
|
||||
'companies' => 'Компании',
|
||||
'create' => 'Създаване на компания',
|
||||
'title' => 'Компания',
|
||||
'update' => 'Редакция на комания',
|
||||
'name' => 'Име на компания',
|
||||
'id' => 'ID',
|
||||
);
|
||||
@@ -0,0 +1,17 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'about_components_title' => 'About Components',
|
||||
'about_components_text' => 'Components are items that are part of an asset, for example HDD, RAM, etc.',
|
||||
'component_name' => 'Component Name',
|
||||
'checkin' => 'Checkin Component',
|
||||
'checkout' => 'Checkout Component',
|
||||
'cost' => 'Purchase Cost',
|
||||
'create' => 'Create Component',
|
||||
'edit' => 'Edit Component',
|
||||
'date' => 'Purchase Date',
|
||||
'order' => 'Order Number',
|
||||
'remaining' => 'Remaining',
|
||||
'total' => 'Total',
|
||||
'update' => 'Update Component',
|
||||
);
|
||||
@@ -0,0 +1,36 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
|
||||
'does_not_exist' => 'Component does not exist.',
|
||||
|
||||
'create' => array(
|
||||
'error' => 'Component was not created, please try again.',
|
||||
'success' => 'Component created successfully.'
|
||||
),
|
||||
|
||||
'update' => array(
|
||||
'error' => 'Component was not updated, please try again',
|
||||
'success' => 'Component updated successfully.'
|
||||
),
|
||||
|
||||
'delete' => array(
|
||||
'confirm' => 'Are you sure you wish to delete this component?',
|
||||
'error' => 'There was an issue deleting the component. Please try again.',
|
||||
'success' => 'The component was deleted successfully.'
|
||||
),
|
||||
|
||||
'checkout' => array(
|
||||
'error' => 'Component was not checked out, please try again',
|
||||
'success' => 'Component checked out successfully.',
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.'
|
||||
),
|
||||
|
||||
'checkin' => array(
|
||||
'error' => 'Component was not checked in, please try again',
|
||||
'success' => 'Component checked in successfully.',
|
||||
'user_does_not_exist' => 'That user is invalid. Please try again.'
|
||||
)
|
||||
|
||||
|
||||
);
|
||||
@@ -0,0 +1,5 @@
|
||||
<?php
|
||||
|
||||
return array(
|
||||
'title' => 'Component Name',
|
||||
);
|
||||
Executable → Regular
+1
@@ -7,6 +7,7 @@ return array(
|
||||
'cost' => 'Стойност на закупуване',
|
||||
'create' => 'Създаване на консуматив',
|
||||
'date' => 'Дата на закупуване',
|
||||
'item_no' => 'Item No.',
|
||||
'order' => 'Номер на поръчка',
|
||||
'remaining' => 'Остава',
|
||||
'total' => 'Oбщо',
|
||||
|
||||
Executable → Regular
Executable → Regular
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user