Merge remote-tracking branch 'origin/develop'

This commit is contained in:
snipe 2016-09-06 10:35:33 -07:00
commit 934b39268d
385 changed files with 3171 additions and 2111 deletions

View file

@ -30,7 +30,7 @@ MAIL_USERNAME=YOURUSERNAME
MAIL_PASSWORD=YOURPASSWORD MAIL_PASSWORD=YOURPASSWORD
MAIL_ENCRYPTION=null MAIL_ENCRYPTION=null
MAIL_FROM_ADDR=you@example.com MAIL_FROM_ADDR=you@example.com
MAIL_FROM_NAME=Snipe-IT MAIL_FROM_NAME='Snipe-IT'
# -------------------------------------------- # --------------------------------------------
@ -74,4 +74,5 @@ AWS_BUCKET=null
APP_LOG=single APP_LOG=single
APP_LOCKED=false APP_LOCKED=false
FILESYSTEM_DISK=local FILESYSTEM_DISK=local
APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1 APP_TRUSTED_PROXIES=192.168.1.1,10.0.0.1
ALLOW_IFRAMING=false

View file

@ -1,25 +1,27 @@
<?php <?php
namespace App\Console\Commands; namespace App\Console\Commands;
use Illuminate\Console\Command; use App\Helpers\Helper;
use Symfony\Component\Console\Input\InputOption;
use Symfony\Component\Console\Input\InputArgument;
use League\Csv\Reader;
use App\Models\Accessory; use App\Models\Accessory;
use App\Models\Asset; use App\Models\Asset;
use App\Models\AssetModel; use App\Models\AssetModel;
use App\Models\Category; use App\Models\Category;
use App\Models\Company; use App\Models\Company;
use App\Models\Consumable; use App\Models\Consumable;
use App\Models\CustomField;
use App\Models\Location; use App\Models\Location;
use App\Models\Manufacturer; use App\Models\Manufacturer;
use App\Models\Setting;
use App\Models\Statuslabel; use App\Models\Statuslabel;
use App\Models\Supplier; use App\Models\Supplier;
use App\Models\User; use App\Models\User;
use App\Models\CustomField;
use DB; use DB;
use App\Models\Setting; use Illuminate\Console\Command;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use League\Csv\Reader;
use Symfony\Component\Console\Input\InputArgument;
use Symfony\Component\Console\Input\InputOption;
use ForceUTF8\Encoding;
ini_set('max_execution_time', 600); //600 seconds = 10 minutes ini_set('max_execution_time', 600); //600 seconds = 10 minutes
ini_set('memory_limit', '500M'); ini_set('memory_limit', '500M');
@ -102,9 +104,17 @@ class ObjectImportCommand extends Command
$this->companies = Company::All(['name', 'id']); $this->companies = Company::All(['name', 'id']);
$this->status_labels = Statuslabel::All(['name', 'id']); $this->status_labels = Statuslabel::All(['name', 'id']);
$this->suppliers = Supplier::All(['name', 'id']); $this->suppliers = Supplier::All(['name', 'id']);
$this->assets = Asset::all(['asset_tag']); switch (strtolower($this->option('item-type'))) {
$this->accessories = Accessory::All(['name']); case "asset":
$this->consumables = Consumable::All(['name']); $this->assets = Asset::all();
break;
case "accessory":
$this->accessories = Accessory::All();
break;
case "consumable":
$this->consumables = Consumable::All();
break;
}
$this->customfields = CustomField::All(['name']); $this->customfields = CustomField::All(['name']);
$bar = null; $bar = null;
@ -275,7 +285,7 @@ class ObjectImportCommand extends Command
*/ */
public function array_smart_fetch(array $array, $key, $default = '') public function array_smart_fetch(array $array, $key, $default = '')
{ {
return array_key_exists($key, $array) ? e(trim($array[ $key ])) : $default; return array_key_exists(trim($key), $array) ? e(Encoding::fixUTF8(trim($array[ $key ]))) : $default;
} }
@ -313,7 +323,7 @@ class ObjectImportCommand extends Command
$asset_model_name = $this->array_smart_fetch($row, "model name"); $asset_model_name = $this->array_smart_fetch($row, "model name");
$asset_modelno = $this->array_smart_fetch($row, "model number"); $asset_modelno = $this->array_smart_fetch($row, "model number");
if (empty($asset_model_name)) { if (empty($asset_model_name)) {
$asset_model_name='Unknown'; $asset_model_name ='Unknown';
} }
if (empty($asset_modelno)) { if (empty($asset_modelno)) {
$asset_modelno=''; $asset_modelno='';
@ -346,6 +356,7 @@ class ObjectImportCommand extends Command
return $asset_model; return $asset_model;
} else { } else {
$this->jsonError('Asset Model "' . $asset_model_name . '"', $asset_model->getErrors()); $this->jsonError('Asset Model "' . $asset_model_name . '"', $asset_model->getErrors());
$this->log('Asset Model "' . $asset_model_name . '"', $asset_model->getErrors());
return $asset_model; return $asset_model;
} }
} else { } else {
@ -732,6 +743,24 @@ class ObjectImportCommand extends Command
*/ */
public function createAssetIfNotExists(array $row, array $item) public function createAssetIfNotExists(array $row, array $item)
{ {
$asset = null;
$editingAsset = false;
foreach ($this->assets as $tempasset) {
if (strcasecmp($tempasset->asset_tag, $item['asset_tag']) == 0) {
$this->log('A matching Asset ' . $item['asset_tag'] . ' already exists');
if (!$this->option('update')) {
$this->log("Skipping item.");
return;
}
$this->log('Updating matching asset with new values');
$editingAsset = true;
$asset = $tempasset;
}
}
if (is_null($asset)) {
$this->log("No Matching Asset, Creating a new one");
$asset = new Asset;
}
$asset_serial = $this->array_smart_fetch($row, "serial number"); $asset_serial = $this->array_smart_fetch($row, "serial number");
$asset_image = $this->array_smart_fetch($row, "image"); $asset_image = $this->array_smart_fetch($row, "image");
$asset_warranty_months = intval($this->array_smart_fetch($row, "warranty months")); $asset_warranty_months = intval($this->array_smart_fetch($row, "warranty months"));
@ -747,12 +776,7 @@ class ObjectImportCommand extends Command
$this->log('Notes: '.$item["notes"]); $this->log('Notes: '.$item["notes"]);
$this->log('Warranty Months: ' . $asset_warranty_months); $this->log('Warranty Months: ' . $asset_warranty_months);
foreach ($this->assets as $tempasset) {
if (strcasecmp($tempasset->asset_tag, $item['asset_tag']) == 0) {
$this->log('A matching Asset ' . $item['asset_tag'] . ' already exists');
return;
}
}
if ($item["status_label"]) { if ($item["status_label"]) {
$status_id = $item["status_label"]->id; $status_id = $item["status_label"]->id;
@ -763,12 +787,14 @@ class ObjectImportCommand extends Command
$status_id = 1; $status_id = 1;
} }
$asset = new Asset(); if (!$editingAsset) {
$asset->name = $item["item_name"]; $asset->asset_tag = $item['asset_tag']; // This doesn't need to be guarded for empty because it's the key we use to identify the asset.
if ($item["purchase_date"] != '') { }
if (!empty($item['item_name'])) {
$asset->name = $item["item_name"];
}
if (!empty($item["purchase_date"])) {
$asset->purchase_date = $item["purchase_date"]; $asset->purchase_date = $item["purchase_date"];
} else {
$asset->purchase_date = null;
} }
if (array_key_exists('custom_fields', $item)) { if (array_key_exists('custom_fields', $item)) {
@ -780,37 +806,53 @@ class ObjectImportCommand extends Command
if (!empty($item["purchase_cost"])) { if (!empty($item["purchase_cost"])) {
//TODO How to generalize this for not USD? //TODO How to generalize this for not USD?
$purchase_cost = substr($item["purchase_cost"], 0, 1) === '$' ? substr($item["purchase_cost"], 1) : $item["purchase_cost"]; $purchase_cost = substr($item["purchase_cost"], 0, 1) === '$' ? substr($item["purchase_cost"], 1) : $item["purchase_cost"];
$asset->purchase_cost = number_format($purchase_cost, 2, '.', ''); // $asset->purchase_cost = number_format($purchase_cost, 2, '.', '');
$asset->purchase_cost = Helper::ParseFloat($purchase_cost);
$this->log("Asset cost parsed: " . $asset->purchase_cost); $this->log("Asset cost parsed: " . $asset->purchase_cost);
} else { } else {
$asset->purchase_cost = 0.00; $asset->purchase_cost = 0.00;
} }
$asset->serial = $asset_serial; if (!empty($asset_serial)) {
$asset->asset_tag = $item['asset_tag']; $asset->serial = $asset_serial;
$asset->warranty_months = $asset_warranty_months; }
if (!empty($asset_warranty_months)) {
$asset->warranty_months = $asset_warranty_months;
}
if ($asset_model) { if ($asset_model) {
$asset->model_id = $asset_model->id; $asset->model_id = $asset_model->id;
} }
if ($item["user"]) { if ($item["user"]) {
$asset->assigned_to = $item["user"]->id; $asset->assigned_to = $item["user"]->id;
} }
if ($item["location"]) { if ($item["location"]) {
$asset->rtd_location_id = $item["location"]->id; $asset->rtd_location_id = $item["location"]->id;
} }
$asset->user_id = $this->option('user_id'); $asset->user_id = $this->option('user_id');
$this->log("status_id: " . $status_id); if (!empty($status_id)) {
$asset->status_id = $status_id; $asset->status_id = $status_id;
}
if ($item["company"]) { if ($item["company"]) {
$asset->company_id = $item["company"]->id; $asset->company_id = $item["company"]->id;
} }
$asset->order_number = $item["order_number"]; if ($item["order_number"]) {
$asset->order_number = $item["order_number"];
}
if ($supplier) { if ($supplier) {
$asset->supplier_id = $supplier->id; $asset->supplier_id = $supplier->id;
} }
$asset->notes = $item["notes"]; if ($item["notes"]) {
$asset->image = $asset_image; $asset->notes = $item["notes"];
$this->assets->add($asset); }
if (!empty($asset_image)) {
$asset->image = $asset_image;
}
if (!$editingAsset) {
$this->assets->add($asset);
}
if (!$this->option('testrun')) { if (!$this->option('testrun')) {
if ($asset->save()) { if ($asset->save()) {
@ -835,17 +877,29 @@ class ObjectImportCommand extends Command
*/ */
public function createAccessoryIfNotExists(array $item) public function createAccessoryIfNotExists(array $item)
{ {
$accessory = null;
$editingAccessory = false;
$this->log("Creating Accessory"); $this->log("Creating Accessory");
foreach ($this->accessories as $tempaccessory) { foreach ($this->accessories as $tempaccessory) {
if (strcasecmp($tempaccessory->name, $item["item_name"]) == 0) { if (strcasecmp($tempaccessory->name, $item["item_name"]) == 0) {
$this->log('A matching Accessory ' . $item["item_name"] . ' already exists. '); $this->log('A matching Accessory ' . $item["item_name"] . ' already exists. ');
// FUTURE: Adjust quantity on import maybe? if (!$this->option('update')) {
return; $this->log("Skipping accessory.");
return;
}
$this->log('Updating matching accessory with new values');
$editingAccessory = true;
$accessory = $tempaccessory;
} }
} }
if (is_null($accessory)) {
$this->log("No Matching Accessory, Creating a new one");
$accessory = new Accessory();
}
$accessory = new Accessory(); if (!$editingAccessory) {
$accessory->name = $item["item_name"]; $accessory->name = $item["item_name"];
}
if (!empty($item["purchase_date"])) { if (!empty($item["purchase_date"])) {
$accessory->purchase_date = $item["purchase_date"]; $accessory->purchase_date = $item["purchase_date"];
@ -853,10 +907,9 @@ class ObjectImportCommand extends Command
$accessory->purchase_date = null; $accessory->purchase_date = null;
} }
if (!empty($item["purchase_cost"])) { if (!empty($item["purchase_cost"])) {
$accessory->purchase_cost = number_format(e($item["purchase_cost"]), 2); $accessory->purchase_cost = Helper::ParseFloat($item["purchase_cost"]);
} else {
$accessory->purchase_cost = 0.00;
} }
if ($item["location"]) { if ($item["location"]) {
$accessory->location_id = $item["location"]->id; $accessory->location_id = $item["location"]->id;
} }
@ -864,20 +917,26 @@ class ObjectImportCommand extends Command
if ($item["company"]) { if ($item["company"]) {
$accessory->company_id = $item["company"]->id; $accessory->company_id = $item["company"]->id;
} }
$accessory->order_number = $item["order_number"]; if (!empty($item["order_number"])) {
$accessory->order_number = $item["order_number"];
}
if ($item["category"]) { if ($item["category"]) {
$accessory->category_id = $item["category"]->id; $accessory->category_id = $item["category"]->id;
} }
//TODO: Implement //TODO: Implement
// $accessory->notes = e($item_notes); // $accessory->notes = e($item_notes);
$accessory->requestable = filter_var($item["requestable"], FILTER_VALIDATE_BOOLEAN); if (!empty($item["requestable"])) {
$accessory->requestable = filter_var($item["requestable"], FILTER_VALIDATE_BOOLEAN);
}
//Must have at least zero of the item if we import it. //Must have at least zero of the item if we import it.
if ($item["quantity"] > -1) { if (!empty($item["quantity"])) {
$accessory->qty = $item["quantity"]; if ($item["quantity"] > -1) {
} else { $accessory->qty = $item["quantity"];
$accessory->qty = 1; } else {
$accessory->qty = 1;
}
} }
if (!$this->option('testrun')) { if (!$this->option('testrun')) {
@ -904,18 +963,29 @@ class ObjectImportCommand extends Command
*/ */
public function createConsumableIfNotExists(array $item) public function createConsumableIfNotExists(array $item)
{ {
$consumable = null;
$editingConsumable = false;
$this->log("Creating Consumable"); $this->log("Creating Consumable");
foreach ($this->consumables as $tempconsumable) { foreach ($this->consumables as $tempconsumable) {
if (strcasecmp($tempconsumable->name, $item["item_name"]) == 0) { if (strcasecmp($tempconsumable->name, $item["item_name"]) == 0) {
$this->log("A matching consumable " . $item["item_name"] . " already exists"); $this->log("A matching consumable " . $item["item_name"] . " already exists");
//TODO: Adjust quantity if different maybe? if (!$this->option('update')) {
return; $this->log("Skipping consumable.");
return;
}
$this->log('Updating matching consumable with new values');
$editingConsumable = true;
$consumable = $tempconsumable;
} }
} }
$consumable = new Consumable(); if (is_null($consumable)) {
$consumable->name = $item["item_name"]; $this->log("No matching consumable, creating one");
$consumable = new Consumable();
}
if (!$editingConsumable) {
$consumable->name = $item["item_name"];
}
if (!empty($item["purchase_date"])) { if (!empty($item["purchase_date"])) {
$consumable->purchase_date = $item["purchase_date"]; $consumable->purchase_date = $item["purchase_date"];
} else { } else {
@ -923,26 +993,37 @@ class ObjectImportCommand extends Command
} }
if (!empty($item["purchase_cost"])) { if (!empty($item["purchase_cost"])) {
$consumable->purchase_cost = number_format(e($item["purchase_cost"]), 2); $consumable->purchase_cost = Helper::ParseFloat($item["purchase_cost"]);
} else { }
$consumable->purchase_cost = 0.00; if ($item["location"]) {
$consumable->location_id = $item["location"]->id;
} }
$consumable->location_id = $item["location"]->id;
$consumable->user_id = $this->option('user_id'); $consumable->user_id = $this->option('user_id');
$consumable->company_id = $item["company"]->id; if ($item["company"]) {
$consumable->order_number = $item["order_number"]; $consumable->company_id = $item["company"]->id;
$consumable->category_id = $item["category"]->id; }
if (!empty($item["order_number"])) {
$consumable->order_number = $item["order_number"];
}
if ($item["category"]) {
$consumable->category_id = $item["category"]->id;
}
// TODO:Implement // TODO:Implement
//$consumable->notes= e($item_notes); //$consumable->notes= e($item_notes);
$consumable->requestable = filter_var($item["requestable"], FILTER_VALIDATE_BOOLEAN); if (!empty($item["requestable"])) {
$consumable->requestable = filter_var($item["requestable"], FILTER_VALIDATE_BOOLEAN);
}
if ($item["quantity"] > -1) { if (!empty($item["quantity"])) {
$consumable->qty = $item["quantity"]; if ($item["quantity"] > -1) {
} else { $consumable->qty = $item["quantity"];
$consumable->qty = 1; } else {
$consumable->qty = 1;
}
} }
if (!$this->option("testrun")) { if (!$this->option("testrun")) {
// dd($consumable);
if ($consumable->save()) { if ($consumable->save()) {
$this->log("Consumable " . $item["item_name"] . ' was created'); $this->log("Consumable " . $item["item_name"] . ' was created');
// $this->comment("Consumable " . $item["item_name"] . ' was created'); // $this->comment("Consumable " . $item["item_name"] . ' was created');
@ -985,8 +1066,9 @@ class ObjectImportCommand extends Command
array('testrun', null, InputOption::VALUE_NONE, 'If set, will parse and output data without adding to database', null), array('testrun', null, InputOption::VALUE_NONE, 'If set, will parse and output data without adding to database', null),
array('logfile', null, InputOption::VALUE_REQUIRED, 'The path to log output to. storage/logs/importer.log by default', storage_path('logs/importer.log') ), array('logfile', null, InputOption::VALUE_REQUIRED, 'The path to log output to. storage/logs/importer.log by default', storage_path('logs/importer.log') ),
array('item-type', null, InputOption::VALUE_REQUIRED, 'Item Type To import. Valid Options are Asset, Consumable, Or Accessory', 'Asset'), array('item-type', null, InputOption::VALUE_REQUIRED, 'Item Type To import. Valid Options are Asset, Consumable, Or Accessory', 'Asset'),
array('web-importer', null, InputOption::VALUE_NONE, 'Internal: packages output for use with the web importer'), array('web-importer', null, InputOption::VALUE_NONE, 'Internal: packages output for use with the web importer'),
array('user_id', null, InputOption::VALUE_REQUIRED, 'ID of user creating items', 1) array('user_id', null, InputOption::VALUE_REQUIRED, 'ID of user creating items', 1),
array('update', null, InputOption::VALUE_NONE, 'If a matching item is found, update item information'),
); );
} }

View file

@ -17,6 +17,8 @@ use App\Models\Component;
use App\Models\Accessory; use App\Models\Accessory;
use App\Models\Consumable; use App\Models\Consumable;
use App\Models\Asset; use App\Models\Asset;
use Crypt;
use Illuminate\Contracts\Encryption\DecryptException;
/* /*
* To change this license header, choose License Headers in Project Properties. * To change this license header, choose License Headers in Project Properties.
@ -237,7 +239,7 @@ class Helper
{ {
$keys=array_keys(CustomField::$PredefinedFormats); $keys=array_keys(CustomField::$PredefinedFormats);
$stuff=array_combine($keys, $keys); $stuff=array_combine($keys, $keys);
return $stuff+["" => "Custom Format..."]; return $stuff+["" => trans('admin/custom_fields/general.custom_format')];
} }
public static function barcodeDimensions($barcode_type = 'QRCODE') public static function barcodeDimensions($barcode_type = 'QRCODE')
@ -476,6 +478,21 @@ class Helper
} }
public static function gracefulDecrypt(CustomField $field, $string) {
if ($field->isFieldDecryptable($string)) {
try {
Crypt::decrypt($string);
return Crypt::decrypt($string);
} catch (DecryptException $e) {
return 'Error Decrypting: '.$e->getMessage();
}
}
return $string;
}
} }

View file

@ -122,20 +122,18 @@ class AssetMaintenancesController extends Controller
$actions = '<nobr><a href="'.route('update/asset_maintenance', $maintenance->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/asset_maintenance', $maintenance->id).'" data-content="'.trans('admin/asset_maintenances/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>'; $actions = '<nobr><a href="'.route('update/asset_maintenance', $maintenance->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/asset_maintenance', $maintenance->id).'" data-content="'.trans('admin/asset_maintenances/message.delete.confirm').'" data-title="'.trans('general.delete').' '.htmlspecialchars($maintenance->title).'?" onClick="return false;"><i class="fa fa-trash icon-white"></i></a></nobr>';
if (($maintenance->cost) && ($maintenance->asset->assetloc) && ($maintenance->asset->assetloc->currency!='')) { if (($maintenance->cost) && (isset($maintenance->asset)) && ($maintenance->asset->assetloc) && ($maintenance->asset->assetloc->currency!='')) {
$maintenance_cost = $maintenance->asset->assetloc->currency.$maintenance->cost; $maintenance_cost = $maintenance->asset->assetloc->currency.$maintenance->cost;
} else { } else {
$maintenance_cost = $settings->default_currency.$maintenance->cost; $maintenance_cost = $settings->default_currency.$maintenance->cost;
} }
$company = $maintenance->asset->company;
$rows[] = array( $rows[] = array(
'id' => $maintenance->id, 'id' => $maintenance->id,
'asset_name' => (string)link_to('/hardware/'.$maintenance->asset->id.'/view', $maintenance->asset->showAssetName()) , 'asset_name' => ($maintenance->asset) ? (string)link_to('/hardware/'.$maintenance->asset->id.'/view', $maintenance->asset->showAssetName()) : 'Deleted Asset' ,
'title' => $maintenance->title, 'title' => $maintenance->title,
'notes' => $maintenance->notes, 'notes' => $maintenance->notes,
'supplier' => $maintenance->supplier->name, 'supplier' => ($maintenance->supplier) ? (string)link_to('/admin/settings/suppliers/'.$maintenance->supplier->id.'/view', $maintenance->supplier->name) : 'Deleted Supplier',
'cost' => $maintenance_cost, 'cost' => $maintenance_cost,
'asset_maintenance_type' => e($maintenance->asset_maintenance_type), 'asset_maintenance_type' => e($maintenance->asset_maintenance_type),
'start_date' => $maintenance->start_date, 'start_date' => $maintenance->start_date,
@ -143,7 +141,7 @@ class AssetMaintenancesController extends Controller
'completion_date' => $maintenance->completion_date, 'completion_date' => $maintenance->completion_date,
'user_id' => ($maintenance->admin) ? (string)link_to('/admin/users/'.$maintenance->admin->id.'/view', $maintenance->admin->fullName()) : '', 'user_id' => ($maintenance->admin) ? (string)link_to('/admin/users/'.$maintenance->admin->id.'/view', $maintenance->admin->fullName()) : '',
'actions' => $actions, 'actions' => $actions,
'companyName' => is_null($company) ? '' : $company->name 'companyName' => ($maintenance->asset) ? $maintenance->asset->company->name : ''
); );
} }

View file

@ -436,14 +436,22 @@ class AssetsController extends Controller
$model = AssetModel::find($request->get('model_id')); $model = AssetModel::find($request->get('model_id'));
if ($model->fieldset) { if ($model->fieldset) {
foreach ($model->fieldset->fields as $field) { foreach ($model->fieldset->fields as $field) {
$asset->{\App\Models\CustomField::name_to_db_name($field->name)} = e($request->input(\App\Models\CustomField::name_to_db_name($field->name)));
// LOG::debug($field->name);
// LOG::debug(\App\Models\CustomField::name_to_db_name($field->name)); if ($field->field_encrypted=='1') {
// LOG::debug($field->db_column_name()); if (Gate::allows('admin')) {
$asset->{\App\Models\CustomField::name_to_db_name($field->name)} = \Crypt::encrypt(e($request->input(\App\Models\CustomField::name_to_db_name($field->name))));
}
} else {
$asset->{\App\Models\CustomField::name_to_db_name($field->name)} = e($request->input(\App\Models\CustomField::name_to_db_name($field->name)));
}
} }
} }
if ($asset->save()) { if ($asset->save()) {
// Redirect to the new asset page // Redirect to the new asset page
\Session::flash('success', trans('admin/hardware/message.update.success')); \Session::flash('success', trans('admin/hardware/message.update.success'));
@ -919,6 +927,18 @@ class AssetsController extends Controller
} }
public function getDeleteImportFile($filename)
{
if (!Company::isCurrentUserAuthorized()) {
return redirect()->to('hardware')->with('error', trans('general.insufficient_permissions'));
}
if (unlink(config('app.private_uploads').'/imports/assets/'.$filename)) {
return redirect()->back()->with('success', trans('admin/hardware/message.import.file_delete_success'));
}
return redirect()->back()->with('error', trans('admin/hardware/message.import.file_delete_error'));
}
/** /**
* Process the uploaded file * Process the uploaded file
@ -928,28 +948,47 @@ class AssetsController extends Controller
* @since [v2.0] * @since [v2.0]
* @return Redirect * @return Redirect
*/ */
public function getProcessImportFile($filename) public function postProcessImportFile()
{ {
// php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname // php artisan asset-import:csv path/to/your/file.csv --domain=yourdomain.com --email_format=firstname.lastname
$filename = Input::get('filename');
$itemType = Input::get('import-type');
$updateItems = Input::get('import-update');
if (!Company::isCurrentUserAuthorized()) { if (!Company::isCurrentUserAuthorized()) {
return redirect()->to('hardware')->with('error', trans('general.insufficient_permissions')); return redirect()->to('hardware')->with('error', trans('general.insufficient_permissions'));
} }
$importOptions = ['filename'=> config('app.private_uploads').'/imports/assets/'.$filename,
$return = Artisan::call(
'snipeit:import',
['filename'=> config('app.private_uploads').'/imports/assets/'.$filename,
'--email_format'=>'firstname.lastname', '--email_format'=>'firstname.lastname',
'--username_format'=>'firstname.lastname', '--username_format'=>'firstname.lastname',
'--web-importer' => true, '--web-importer' => true,
'--user_id' => Auth::user()->id '--user_id' => Auth::user()->id,
] '--item-type' => $itemType,
); ];
if ($updateItems) {
$importOptions['--update'] = true;
}
$return = Artisan::call('snipeit:import', $importOptions);
$display_output = Artisan::output(); $display_output = Artisan::output();
$file = config('app.private_uploads').'/imports/assets/'.str_replace('.csv', '', $filename).'-output-'.date("Y-m-d-his").'.txt'; $file = config('app.private_uploads').'/imports/assets/'.str_replace('.csv', '', $filename).'-output-'.date("Y-m-d-his").'.txt';
file_put_contents($file, $display_output); file_put_contents($file, $display_output);
// We use hardware instead of asset in the url
$redirectTo = "hardware";
switch($itemType) {
case "asset":
$redirectTo = "hardware";
break;
case "accessory":
$redirectTo = "accessories";
break;
case "consumable":
$redirectTo = "consumables";
break;
}
if ($return === 0) { //Success if ($return === 0) { //Success
return redirect()->to('hardware')->with('success', trans('admin/hardware/message.import.success')); return redirect()->to(route($redirectTo))->with('success', trans('admin/hardware/message.import.success'));
} elseif ($return === 1) { // Failure } elseif ($return === 1) { // Failure
return redirect()->back()->with('import_errors', json_decode($display_output))->with('error', trans('admin/hardware/message.import.error')); return redirect()->back()->with('import_errors', json_decode($display_output))->with('error', trans('admin/hardware/message.import.error'));
} }
@ -1588,31 +1627,31 @@ class AssetsController extends Controller
* @since [v2.0] * @since [v2.0]
* @return String JSON * @return String JSON
*/ */
public function getDatatable($status = null) public function getDatatable(Request $request, $status = null)
{ {
$assets = Company::scopeCompanyables(Asset::select('assets.*'))->with('model', 'assigneduser', 'assigneduser.userloc', 'assetstatus', 'defaultLoc', 'assetlog', 'model', 'model.category', 'model.manufacturer', 'model.fieldset', 'assetstatus', 'assetloc', 'company') $assets = Company::scopeCompanyables(Asset::select('assets.*'))->with('model', 'assigneduser', 'assigneduser.userloc', 'assetstatus', 'defaultLoc', 'assetlog', 'model', 'model.category', 'model.manufacturer', 'model.fieldset', 'assetstatus', 'assetloc', 'company')
->Hardware(); ->Hardware();
if (Input::has('search')) { if ($request->has('search')) {
$assets = $assets->TextSearch(e(Input::get('search'))); $assets = $assets->TextSearch(e($request->get('search')));
} }
if (Input::has('offset')) { if ($request->has('offset')) {
$offset = e(Input::get('offset')); $offset = e($request->get('offset'));
} else { } else {
$offset = 0; $offset = 0;
} }
if (Input::has('limit')) { if ($request->has('limit')) {
$limit = e(Input::get('limit')); $limit = e($request->get('limit'));
} else { } else {
$limit = 50; $limit = 50;
} }
if (Input::has('order_number')) { if ($request->has('order_number')) {
$assets->where('order_number', '=', e(Input::get('order_number'))); $assets->where('order_number', '=', e($request->get('order_number')));
} }
switch ($status) { switch ($status) {
@ -1637,9 +1676,18 @@ class AssetsController extends Controller
case 'Deployed': case 'Deployed':
$assets->Deployed(); $assets->Deployed();
break; break;
default:
$assets->NotArchived();
break;
} }
if ($request->has('status_id')) {
$assets->where('status_id','=', e($request->get('status_id')));
}
$allowed_columns = [ $allowed_columns = [
'id', 'id',
'name', 'name',
@ -1669,8 +1717,8 @@ class AssetsController extends Controller
$allowed_columns[]=$field->db_column_name(); $allowed_columns[]=$field->db_column_name();
} }
$order = Input::get('order') === 'asc' ? 'asc' : 'desc'; $order = $request->get('order') === 'asc' ? 'asc' : 'desc';
$sort = in_array(Input::get('sort'), $allowed_columns) ? Input::get('sort') : 'asset_tag'; $sort = in_array($request->get('sort'), $allowed_columns) ? $request->get('sort') : 'asset_tag';
switch ($sort) { switch ($sort) {
case 'model': case 'model':
@ -1772,10 +1820,26 @@ class AssetsController extends Controller
'companyName' => is_null($asset->company) ? '' : e($asset->company->name) 'companyName' => is_null($asset->company) ? '' : e($asset->company->name)
); );
foreach ($all_custom_fields as $field) { foreach ($all_custom_fields as $field) {
if (($field->format=='URL') && ($asset->{$field->db_column_name()}!='')) { $column_name = $field->db_column_name();
$row[$field->db_column_name()] = '<a href="'.$asset->{$field->db_column_name()}.'" target="_blank">'.$asset->{$field->db_column_name()}.'</a>';
if ($field->isFieldDecryptable($asset->{$column_name})) {
if (Gate::allows('admin')) {
if (($field->format=='URL') && ($asset->{$column_name}!='')) {
$row[$column_name] = '<a href="'.Helper::gracefulDecrypt($field, $asset->{$column_name}).'" target="_blank">'.Helper::gracefulDecrypt($field, $asset->{$column_name}).'</a>';
} else {
$row[$column_name] = Helper::gracefulDecrypt($field, $asset->{$column_name});
}
} else {
$row[$field->db_column_name()] = strtoupper(trans('admin/custom_fields/general.encrypted'));
}
} else { } else {
$row[$field->db_column_name()] = e($asset->{$field->db_column_name()}); if (($field->format=='URL') && ($asset->{$field->db_column_name()}!='')) {
$row[$field->db_column_name()] = '<a href="'.$asset->{$field->db_column_name()}.'" target="_blank">'.$asset->{$field->db_column_name()}.'</a>';
} else {
$row[$field->db_column_name()] = e($asset->{$field->db_column_name()});
}
} }
} }

View file

@ -10,6 +10,7 @@ use Redirect;
use App\Models\AssetModel; use App\Models\AssetModel;
use Lang; use Lang;
use Auth; use Auth;
use Illuminate\Http\Request;
/** /**
* This controller handles all actions related to Custom Asset Fields for * This controller handles all actions related to Custom Asset Fields for
@ -63,10 +64,15 @@ class CustomFieldsController extends Controller
* @since [v1.8] * @since [v1.8]
* @return Redirect * @return Redirect
*/ */
public function store() public function store(Request $request)
{ {
// //
$cfset=new CustomFieldset(["name" => Input::get("name"),"user_id" => Auth::user()->id]); $cfset = new CustomFieldset(
[
"name" => e($request->get("name")),
"user_id" => Auth::user()->id]
);
$validator=Validator::make(Input::all(), $cfset->rules); $validator=Validator::make(Input::all(), $cfset->rules);
if ($validator->passes()) { if ($validator->passes()) {
$cfset->save(); $cfset->save();
@ -122,24 +128,33 @@ class CustomFieldsController extends Controller
* @since [v1.8] * @since [v1.8]
* @return Redirect * @return Redirect
*/ */
public function storeField() public function storeField(Request $request)
{ {
$field=new CustomField(["name" => Input::get("name"),"element" => Input::get("element"),"user_id" => Auth::user()->id]); $field = new CustomField([
"name" => e($request->get("name")),
"element" => e($request->get("element")),
"field_values" => e($request->get("field_values")),
"field_encrypted" => e($request->get("field_encrypted", 0)),
"user_id" => Auth::user()->id
]);
if (!in_array(Input::get('format'), array_keys(CustomField::$PredefinedFormats))) { if (!in_array(Input::get('format'), array_keys(CustomField::$PredefinedFormats))) {
$field->format=Input::get("custom_format"); $field->format = e($request->get("custom_format"));
} else { } else {
$field->format=Input::get('format'); $field->format = e($request->get("format"));
} }
$validator=Validator::make(Input::all(), $field->rules); $validator=Validator::make(Input::all(), $field->rules);
if ($validator->passes()) { if ($validator->passes()) {
$results=$field->save(); $results = $field->save();
//return "postCreateField: $results";
if ($results) { if ($results) {
return redirect()->route("admin.custom_fields.index")->with("success", trans('admin/custom_fields/message.field.create.success')); return redirect()->route("admin.custom_fields.index")->with("success", trans('admin/custom_fields/message.field.create.success'));
} else { } else {
dd($field);
return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.field.create.error')); return redirect()->back()->withInput()->with('error', trans('admin/custom_fields/message.field.create.error'));
} }
} else { } else {
@ -175,9 +190,7 @@ class CustomFieldsController extends Controller
*/ */
public function deleteField($field_id) public function deleteField($field_id)
{ {
$field=CustomField::find($field_id); $field = CustomField::find($field_id);
if ($field->fieldset->count()>0) { if ($field->fieldset->count()>0) {
return redirect()->back()->withErrors(['message' => "Field is in-use"]); return redirect()->back()->withErrors(['message' => "Field is in-use"]);

View file

@ -32,7 +32,7 @@ class DashboardController extends Controller
$recent_activity = Actionlog::orderBy('created_at', 'DESC') $recent_activity = Actionlog::orderBy('created_at', 'DESC')
->with('accessorylog', 'consumablelog', 'licenselog', 'assetlog', 'adminlog', 'userlog', 'componentlog') ->with('accessorylog', 'consumablelog', 'licenselog', 'assetlog', 'adminlog', 'userlog', 'componentlog')
->take(30) ->take(20)
->get(); ->get();

View file

@ -55,7 +55,7 @@ class ProfileController extends Controller
if (Input::file('avatar')) { if (Input::file('avatar')) {
$image = Input::file('avatar'); $image = Input::file('avatar');
$file_name = $user->first_name."-".$user->last_name.".".$image->getClientOriginalExtension(); $file_name = str_slug($user->first_name."-".$user->last_name).".".$image->getClientOriginalExtension();
$path = public_path('uploads/avatars/'.$file_name); $path = public_path('uploads/avatars/'.$file_name);
Image::make($image->getRealPath())->resize(84, 84)->save($path); Image::make($image->getRealPath())->resize(84, 84)->save($path);
$user->avatar = $file_name; $user->avatar = $file_name;

View file

@ -120,6 +120,7 @@ class StatuslabelsController extends Controller
$statuslabel->pending = $statustype['pending']; $statuslabel->pending = $statustype['pending'];
$statuslabel->archived = $statustype['archived']; $statuslabel->archived = $statustype['archived'];
$statuslabel->color = e(Input::get('color')); $statuslabel->color = e(Input::get('color'));
$statuslabel->show_in_nav = e(Input::get('show_in_nav'),0);
// Was the asset created? // Was the asset created?
@ -208,6 +209,7 @@ class StatuslabelsController extends Controller
$statuslabel->pending = $statustype['pending']; $statuslabel->pending = $statustype['pending'];
$statuslabel->archived = $statustype['archived']; $statuslabel->archived = $statustype['archived'];
$statuslabel->color = e(Input::get('color')); $statuslabel->color = e(Input::get('color'));
$statuslabel->show_in_nav = e(Input::get('show_in_nav'),0);
// Was the asset created? // Was the asset created?
@ -258,7 +260,7 @@ class StatuslabelsController extends Controller
public function getDatatable() public function getDatatable()
{ {
$statuslabels = Statuslabel::select(array('id','name','deployable','pending','archived','color')) $statuslabels = Statuslabel::select(array('id','name','deployable','pending','archived','color','show_in_nav'))
->whereNull('deleted_at'); ->whereNull('deleted_at');
if (Input::has('search')) { if (Input::has('search')) {
@ -314,6 +316,7 @@ class StatuslabelsController extends Controller
'type' => e($label_type), 'type' => e($label_type),
'name' => e($statuslabel->name), 'name' => e($statuslabel->name),
'color' => $color, 'color' => $color,
'show_in_nav' => ($statuslabel->show_in_nav=='1') ? trans('general.yes') : trans('general.no'),
'actions' => $actions 'actions' => $actions
); );
} }

View file

@ -15,7 +15,10 @@ class FrameGuard
public function handle($request, Closure $next) public function handle($request, Closure $next)
{ {
$response = $next($request); $response = $next($request);
$response->headers->set('X-Frame-Options', 'SAMEORIGIN', false); if (config('app.allow_iframing') == false) {
$response->headers->set('X-Frame-Options', 'SAMEORIGIN', false);
}
return $response; return $response;
} }
} }

View file

@ -25,10 +25,10 @@ class SaveUserRequest extends Request
{ {
return [ return [
'first_name' => 'required|string|min:1', 'first_name' => 'required|string|min:1',
'last_name' => 'required|string|min:1',
'email' => 'email', 'email' => 'email',
'password' => 'required|min:6', 'password' => 'required|min:6',
'password_confirm' => 'sometimes|required_with:password', 'password_confirm' => 'sometimes|required_with:password',
'username' => 'required|string|min:2|unique:users,username,NULL,deleted_at',
]; ];
} }
} }

View file

@ -293,9 +293,13 @@ Route::group(
'uses' => 'AssetsController@getDeleteImportFile' 'uses' => 'AssetsController@getDeleteImportFile'
]); ]);
Route::get( 'import/process/{filename}', [ 'as' => 'assets/import/process-file', Route::post( 'import/process/', [ 'as' => 'assets/import/process-file',
'middleware' => 'authorize:assets.create', 'middleware' => 'authorize:assets.create',
'uses' => 'AssetsController@getProcessImportFile' 'uses' => 'AssetsController@postProcessImportFile'
]);
Route::get( 'import/delete/{filename}', [ 'as' => 'assets/import/delete-file',
'middleware' => 'authorize:assets.create', // TODO What permissions should this require?
'uses' => 'AssetsController@getDeleteImportFile'
]); ]);
Route::get('import',[ Route::get('import',[

View file

@ -628,6 +628,23 @@ public function checkin_email()
}); });
} }
/**
* Query builder scope for non-Archived assets
*
* @param Illuminate\Database\Query\Builder $query Query builder instance
*
* @return Illuminate\Database\Query\Builder Modified query builder
*/
public function scopeNotArchived($query)
{
return $query->whereHas('assetstatus', function ($query) {
$query->where('archived', '=', 0);
});
}
/** /**
* Query builder scope for Archived assets * Query builder scope for Archived assets
* *

View file

@ -11,14 +11,14 @@ class CustomField extends Model
*/ */
public static $PredefinedFormats=[ public static $PredefinedFormats=[
"ANY" => "", "ANY" => "",
"ALPHA" => "alpha", "ALPHA" => "alpha",
"EMAIL" => "email", "EMAIL" => "email",
"DATE" => "date", "DATE" => "date",
"URL" => "url", "URL" => "url",
"NUMERIC" => "numeric", "NUMERIC" => "numeric",
"MAC" => "regex:/^[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}$/", "MAC" => "regex:/^[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}:[a-fA-F0-9]{2}$/",
"IP" => "ip" "IP" => "ip",
]; ];
public $rules=[ public $rules=[
@ -109,4 +109,43 @@ class CustomField extends Model
$this->attributes['format']=$value; $this->attributes['format']=$value;
} }
} }
/**
* Format a value string as an array for select boxes and checkboxes.
*
* @author [A. Gianotto] [<snipe@snipe.net>]
* @since [v3.4]
* @return Array
*/
public function formatFieldValuesAsArray() {
$arr = preg_split("/\\r\\n|\\r|\\n/", $this->field_values);
$result[''] = 'Select '.strtolower($this->format);
for ($x = 0; $x < count($arr); $x++) {
$arr_parts = explode('|', $arr[$x]);
if ($arr_parts[0]!='') {
if (key_exists('1',$arr_parts)) {
$result[$arr_parts[0]] = $arr_parts[1];
} else {
$result[$arr_parts[0]] = $arr_parts[0];
}
}
}
return $result;
}
public function isFieldDecryptable($string) {
if (($this->field_encrypted=='1') && ($string!='')) {
return true;
}
return false;
}
} }

View file

@ -2,6 +2,7 @@
namespace App\Models; namespace App\Models;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Gate;
class CustomFieldset extends Model class CustomFieldset extends Model
{ {
@ -30,16 +31,21 @@ class CustomFieldset extends Model
{ {
$rules=[]; $rules=[];
foreach ($this->fields as $field) { foreach ($this->fields as $field) {
$rule=[]; $rule = [];
if ($field->pivot->required) {
$rule[]="required"; if (($field->field_encrypted!='1') ||
(($field->field_encrypted =='1') && (Gate::allows('admin')) ))
{
if ($field->pivot->required) {
$rule[]="required";
}
} }
array_push($rule, $field->attributes['format']); array_push($rule, $field->attributes['format']);
$rules[$field->db_column_name()]=$rule; $rules[$field->db_column_name()]=$rule;
} }
return $rules; return $rules;
} }
//requiredness goes *here*
//sequence goes here?
} }

View file

@ -81,11 +81,18 @@ class Ldap extends Model
if ($settings->is_ad =='1') if ($settings->is_ad =='1')
{ {
// In case they haven't added an AD domain // Check if they are using the userprincipalname for the username field.
if ($settings->ad_domain == '') { // If they are, we can skip building the UPN to authenticate against AD
$userDn = $username.'@'.$settings->email_domain; if ($ldap_username_field=='userprincipalname')
{
$userDn = $username;
} else { } else {
$userDn = $username.'@'.$settings->ad_domain; // In case they haven't added an AD domain
if ($settings->ad_domain == '') {
$userDn = $username.'@'.$settings->email_domain;
} else {
$userDn = $username.'@'.$settings->ad_domain;
}
} }
} else { } else {

View file

@ -67,7 +67,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
// Loop through the groups to see if any of them grant this permission // Loop through the groups to see if any of them grant this permission
foreach ($user_groups as $user_group) { foreach ($user_groups as $user_group) {
$group_permissions = json_decode($user_group->permissions, true); $group_permissions = (array) json_decode($user_group->permissions, true);
if (((array_key_exists($section, $group_permissions)) && ($group_permissions[$section]=='1'))) { if (((array_key_exists($section, $group_permissions)) && ($group_permissions[$section]=='1'))) {
return true; return true;
} }
@ -84,7 +84,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
foreach ($this->groups as $user_group) { foreach ($this->groups as $user_group) {
$group_permissions = json_decode($user_group->permissions, true); $group_permissions = json_decode($user_group->permissions, true);
$group_array = $group_permissions; $group_array = (array)$group_permissions;
if ((array_key_exists('superuser', $group_array)) && ($group_permissions['superuser']=='1')) { if ((array_key_exists('superuser', $group_array)) && ($group_permissions['superuser']=='1')) {
return true; return true;
} }

View file

@ -22,7 +22,8 @@
"doctrine/dbal": "v2.4.2", "doctrine/dbal": "v2.4.2",
"barryvdh/laravel-debugbar": "^2.1", "barryvdh/laravel-debugbar": "^2.1",
"spatie/laravel-backup": "3.8.1", "spatie/laravel-backup": "3.8.1",
"misterphilip/maintenance-mode": "1.0.*" "misterphilip/maintenance-mode": "1.0.*",
"neitanod/forceutf8": "dev-master"
}, },
"require-dev": { "require-dev": {
"fzaninotto/faker": "~1.4", "fzaninotto/faker": "~1.4",

165
composer.lock generated
View file

@ -4,21 +4,21 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"hash": "a770010d0ebb93a2e1b5f4acadd5a7f3", "hash": "ed9f8700f2dcd943ff662a82e4d8314f",
"content-hash": "59772418a4612685eea10dde38ca77b7", "content-hash": "9c0251ddc1a110d83a762483abeea079",
"packages": [ "packages": [
{ {
"name": "aws/aws-sdk-php", "name": "aws/aws-sdk-php",
"version": "3.18.39", "version": "3.19.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/aws/aws-sdk-php.git", "url": "https://github.com/aws/aws-sdk-php.git",
"reference": "85f1fddaeb40b95106b2a2764268e9c89fc258ce" "reference": "3cb90413129da42c9d3289d542bee0ae1049892c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/85f1fddaeb40b95106b2a2764268e9c89fc258ce", "url": "https://api.github.com/repos/aws/aws-sdk-php/zipball/3cb90413129da42c9d3289d542bee0ae1049892c",
"reference": "85f1fddaeb40b95106b2a2764268e9c89fc258ce", "reference": "3cb90413129da42c9d3289d542bee0ae1049892c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -85,7 +85,7 @@
"s3", "s3",
"sdk" "sdk"
], ],
"time": "2016-08-11 16:40:35" "time": "2016-08-23 20:58:48"
}, },
{ {
"name": "aws/aws-sdk-php-laravel", "name": "aws/aws-sdk-php-laravel",
@ -145,21 +145,21 @@
}, },
{ {
"name": "barryvdh/laravel-debugbar", "name": "barryvdh/laravel-debugbar",
"version": "v2.2.2", "version": "V2.2.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/barryvdh/laravel-debugbar.git", "url": "https://github.com/barryvdh/laravel-debugbar.git",
"reference": "c291e58d0a13953e0f68d99182ee77ebc693edc0" "reference": "ecd1ce5c4a827e2f6a8fb41bcf67713beb1c1cbd"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/c291e58d0a13953e0f68d99182ee77ebc693edc0", "url": "https://api.github.com/repos/barryvdh/laravel-debugbar/zipball/ecd1ce5c4a827e2f6a8fb41bcf67713beb1c1cbd",
"reference": "c291e58d0a13953e0f68d99182ee77ebc693edc0", "reference": "ecd1ce5c4a827e2f6a8fb41bcf67713beb1c1cbd",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"illuminate/support": "5.1.*|5.2.*", "illuminate/support": "5.1.*|5.2.*|5.3.*",
"maximebf/debugbar": "~1.11.0", "maximebf/debugbar": "~1.11.0|~1.12.0",
"php": ">=5.5.9", "php": ">=5.5.9",
"symfony/finder": "~2.7|~3.0" "symfony/finder": "~2.7|~3.0"
}, },
@ -195,7 +195,7 @@
"profiler", "profiler",
"webprofiler" "webprofiler"
], ],
"time": "2016-05-11 13:54:43" "time": "2016-07-29 15:00:36"
}, },
{ {
"name": "classpreloader/classpreloader", "name": "classpreloader/classpreloader",
@ -1018,12 +1018,12 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/Intervention/image.git", "url": "https://github.com/Intervention/image.git",
"reference": "6886d43f5babe6900c29c59640ca81401fe71c80" "reference": "45a41a38bd1e5290cd51ab773013e6f041b2b711"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/Intervention/image/zipball/6886d43f5babe6900c29c59640ca81401fe71c80", "url": "https://api.github.com/repos/Intervention/image/zipball/45a41a38bd1e5290cd51ab773013e6f041b2b711",
"reference": "6886d43f5babe6900c29c59640ca81401fe71c80", "reference": "45a41a38bd1e5290cd51ab773013e6f041b2b711",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1072,7 +1072,7 @@
"thumbnail", "thumbnail",
"watermark" "watermark"
], ],
"time": "2016-06-22 08:03:11" "time": "2016-08-19 14:41:12"
}, },
{ {
"name": "jakub-onderka/php-console-color", "name": "jakub-onderka/php-console-color",
@ -1221,16 +1221,16 @@
}, },
{ {
"name": "laravel/framework", "name": "laravel/framework",
"version": "v5.2.43", "version": "v5.2.45",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/laravel/framework.git", "url": "https://github.com/laravel/framework.git",
"reference": "5490b8f00564bb60839002f86828e27edd1e5610" "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/laravel/framework/zipball/5490b8f00564bb60839002f86828e27edd1e5610", "url": "https://api.github.com/repos/laravel/framework/zipball/2a79f920d5584ec6df7cf996d922a742d11095d1",
"reference": "5490b8f00564bb60839002f86828e27edd1e5610", "reference": "2a79f920d5584ec6df7cf996d922a742d11095d1",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1311,7 +1311,7 @@
"pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).", "pusher/pusher-php-server": "Required to use the Pusher broadcast driver (~2.0).",
"symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).", "symfony/css-selector": "Required to use some of the crawler integration testing tools (2.8.*|3.0.*).",
"symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).", "symfony/dom-crawler": "Required to use most of the crawler integration testing tools (2.8.*|3.0.*).",
"symfony/psr-http-message-bridge": "Required to psr7 bridging features (0.2.*)." "symfony/psr-http-message-bridge": "Required to use psr7 bridging features (0.2.*)."
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -1347,7 +1347,7 @@
"framework", "framework",
"laravel" "laravel"
], ],
"time": "2016-08-10 12:23:59" "time": "2016-08-26 11:44:52"
}, },
{ {
"name": "laravelcollective/html", "name": "laravelcollective/html",
@ -1595,16 +1595,16 @@
}, },
{ {
"name": "maximebf/debugbar", "name": "maximebf/debugbar",
"version": "v1.11.1", "version": "v1.12.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/maximebf/php-debugbar.git", "url": "https://github.com/maximebf/php-debugbar.git",
"reference": "d9302891c1f0a0ac5a4f66725163a00537c6359f" "reference": "e634fbd32cd6bc3fa0e8c972b52d4bf49bab3988"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/d9302891c1f0a0ac5a4f66725163a00537c6359f", "url": "https://api.github.com/repos/maximebf/php-debugbar/zipball/e634fbd32cd6bc3fa0e8c972b52d4bf49bab3988",
"reference": "d9302891c1f0a0ac5a4f66725163a00537c6359f", "reference": "e634fbd32cd6bc3fa0e8c972b52d4bf49bab3988",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -1623,7 +1623,7 @@
"type": "library", "type": "library",
"extra": { "extra": {
"branch-alias": { "branch-alias": {
"dev-master": "1.11-dev" "dev-master": "1.12-dev"
} }
}, },
"autoload": { "autoload": {
@ -1652,7 +1652,7 @@
"debug", "debug",
"debugbar" "debugbar"
], ],
"time": "2016-01-22 12:22:23" "time": "2016-05-15 13:11:34"
}, },
{ {
"name": "misterphilip/maintenance-mode", "name": "misterphilip/maintenance-mode",
@ -1876,6 +1876,40 @@
], ],
"time": "2016-01-05 18:25:05" "time": "2016-01-05 18:25:05"
}, },
{
"name": "neitanod/forceutf8",
"version": "dev-master",
"source": {
"type": "git",
"url": "https://github.com/neitanod/forceutf8.git",
"reference": "2c1b21e00ed16b2b083ae4e27901cb5f2856db90"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/neitanod/forceutf8/zipball/2c1b21e00ed16b2b083ae4e27901cb5f2856db90",
"reference": "2c1b21e00ed16b2b083ae4e27901cb5f2856db90",
"shasum": ""
},
"require": {
"php": ">=5.3.0"
},
"type": "library",
"autoload": {
"psr-0": {
"ForceUTF8\\": "src/"
}
},
"notification-url": "https://packagist.org/downloads/",
"authors": [
{
"name": "Sebastián Grignoli",
"email": "grignoli@gmail.com"
}
],
"description": "PHP Class Encoding featuring popular Encoding::toUTF8() function --formerly known as forceUTF8()-- that fixes mixed encoded strings.",
"homepage": "https://github.com/neitanod/forceutf8",
"time": "2015-05-07 16:37:23"
},
{ {
"name": "nesbot/carbon", "name": "nesbot/carbon",
"version": "1.21.0", "version": "1.21.0",
@ -3132,17 +3166,17 @@
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/tecnickcom/tc-lib-barcode.git", "url": "https://github.com/tecnickcom/tc-lib-barcode.git",
"reference": "220728e5f659b935348442e8d1d3e46fd5f9e178" "reference": "df69541618a0ebc24bc8f938e52f76a471f2e018"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/220728e5f659b935348442e8d1d3e46fd5f9e178", "url": "https://api.github.com/repos/tecnickcom/tc-lib-barcode/zipball/df69541618a0ebc24bc8f938e52f76a471f2e018",
"reference": "220728e5f659b935348442e8d1d3e46fd5f9e178", "reference": "df69541618a0ebc24bc8f938e52f76a471f2e018",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.4", "php": ">=5.4",
"tecnickcom/tc-lib-color": "^1.11.0" "tecnickcom/tc-lib-color": "^1.12.0"
}, },
"require-dev": { "require-dev": {
"apigen/apigen": "^4.1.2", "apigen/apigen": "^4.1.2",
@ -3210,20 +3244,20 @@
"tc-lib-barcode", "tc-lib-barcode",
"upc" "upc"
], ],
"time": "2016-07-10 18:29:15" "time": "2016-08-25 12:36:23"
}, },
{ {
"name": "tecnickcom/tc-lib-color", "name": "tecnickcom/tc-lib-color",
"version": "1.11.0", "version": "1.12.0",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/tecnickcom/tc-lib-color.git", "url": "https://github.com/tecnickcom/tc-lib-color.git",
"reference": "6a000b658758e271bf4c41bbc1ce4c685d8a7160" "reference": "176464ae7ad0256c1dfd9d742ee2461d0b660f7c"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/6a000b658758e271bf4c41bbc1ce4c685d8a7160", "url": "https://api.github.com/repos/tecnickcom/tc-lib-color/zipball/176464ae7ad0256c1dfd9d742ee2461d0b660f7c",
"reference": "6a000b658758e271bf4c41bbc1ce4c685d8a7160", "reference": "176464ae7ad0256c1dfd9d742ee2461d0b660f7c",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3272,7 +3306,7 @@
"tc-lib-color", "tc-lib-color",
"web" "web"
], ],
"time": "2016-06-13 14:31:19" "time": "2016-08-25 11:56:01"
}, },
{ {
"name": "vlucas/phpdotenv", "name": "vlucas/phpdotenv",
@ -3326,24 +3360,24 @@
}, },
{ {
"name": "watson/validating", "name": "watson/validating",
"version": "2.2.1", "version": "2.2.2",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/dwightwatson/validating.git", "url": "https://github.com/dwightwatson/validating.git",
"reference": "64dc3d211372576d468e2bfaf3c7b7ace66ee970" "reference": "8f37e416aaf02129c8ad57a446a6ef7080019687"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/dwightwatson/validating/zipball/64dc3d211372576d468e2bfaf3c7b7ace66ee970", "url": "https://api.github.com/repos/dwightwatson/validating/zipball/8f37e416aaf02129c8ad57a446a6ef7080019687",
"reference": "64dc3d211372576d468e2bfaf3c7b7ace66ee970", "reference": "8f37e416aaf02129c8ad57a446a6ef7080019687",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"illuminate/contracts": "~5.0", "illuminate/contracts": "~5.0 <5.3",
"illuminate/database": "~5.0 || >=5.1.27", "illuminate/database": "~5.0 <5.3 || >=5.1.27",
"illuminate/events": "~5.0", "illuminate/events": "~5.0 <5.3",
"illuminate/support": "~5.0", "illuminate/support": "~5.0 <5.3",
"illuminate/validation": "~5.0", "illuminate/validation": "~5.0 <5.3",
"php": ">=5.4.0" "php": ">=5.4.0"
}, },
"require-dev": { "require-dev": {
@ -3377,7 +3411,7 @@
"laravel", "laravel",
"validation" "validation"
], ],
"time": "2016-04-07 14:59:06" "time": "2016-08-28 07:54:32"
} }
], ],
"packages-dev": [ "packages-dev": [
@ -3571,16 +3605,16 @@
}, },
{ {
"name": "facebook/webdriver", "name": "facebook/webdriver",
"version": "1.1.2", "version": "1.1.3",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/facebook/php-webdriver.git", "url": "https://github.com/facebook/php-webdriver.git",
"reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986" "reference": "b7186fb1bcfda956d237f59face250d06ef47253"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/facebook/php-webdriver/zipball/0b889d7de7461439f8a3bbcca46e0f696cb27986", "url": "https://api.github.com/repos/facebook/php-webdriver/zipball/b7186fb1bcfda956d237f59face250d06ef47253",
"reference": "0b889d7de7461439f8a3bbcca46e0f696cb27986", "reference": "b7186fb1bcfda956d237f59face250d06ef47253",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
@ -3588,7 +3622,9 @@
"php": ">=5.3.19" "php": ">=5.3.19"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "4.6.*" "friendsofphp/php-cs-fixer": "^1.11",
"phpunit/phpunit": "4.6.* || ~5.0",
"squizlabs/php_codesniffer": "^2.6"
}, },
"suggest": { "suggest": {
"phpdocumentor/phpdocumentor": "2.*" "phpdocumentor/phpdocumentor": "2.*"
@ -3611,7 +3647,7 @@
"selenium", "selenium",
"webdriver" "webdriver"
], ],
"time": "2016-06-04 00:02:34" "time": "2016-08-10 00:44:08"
}, },
{ {
"name": "fzaninotto/faker", "name": "fzaninotto/faker",
@ -4580,23 +4616,23 @@
}, },
{ {
"name": "sebastian/environment", "name": "sebastian/environment",
"version": "1.3.7", "version": "1.3.8",
"source": { "source": {
"type": "git", "type": "git",
"url": "https://github.com/sebastianbergmann/environment.git", "url": "https://github.com/sebastianbergmann/environment.git",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716" "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea"
}, },
"dist": { "dist": {
"type": "zip", "type": "zip",
"url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/4e8f0da10ac5802913afc151413bc8c53b6c2716", "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/be2c607e43ce4c89ecd60e75c6a85c126e754aea",
"reference": "4e8f0da10ac5802913afc151413bc8c53b6c2716", "reference": "be2c607e43ce4c89ecd60e75c6a85c126e754aea",
"shasum": "" "shasum": ""
}, },
"require": { "require": {
"php": ">=5.3.3" "php": "^5.3.3 || ^7.0"
}, },
"require-dev": { "require-dev": {
"phpunit/phpunit": "~4.4" "phpunit/phpunit": "^4.8 || ^5.0"
}, },
"type": "library", "type": "library",
"extra": { "extra": {
@ -4626,7 +4662,7 @@
"environment", "environment",
"hhvm" "hhvm"
], ],
"time": "2016-05-17 03:18:57" "time": "2016-08-18 05:49:44"
}, },
{ {
"name": "sebastian/exporter", "name": "sebastian/exporter",
@ -5184,7 +5220,8 @@
"intervention/image": 20, "intervention/image": 20,
"maknz/slack": 20, "maknz/slack": 20,
"erusev/parsedown": 20, "erusev/parsedown": 20,
"tecnickcom/tc-lib-barcode": 20 "tecnickcom/tc-lib-barcode": 20,
"neitanod/forceutf8": 20
}, },
"prefer-stable": false, "prefer-stable": false,
"prefer-lowest": false, "prefer-lowest": false,

View file

@ -127,6 +127,20 @@ return [
'private_uploads' => storage_path().'/private_uploads', 'private_uploads' => storage_path().'/private_uploads',
/*
|--------------------------------------------------------------------------
| ALLOW I-FRAMING
|--------------------------------------------------------------------------
|
| Normal users will never need to edit this. This option lets you run
| Snipe-IT within an I-Frame, which is normally disabled by default for
| security reasons, to prevent clickjacking. It should normally be set to false.
|
*/
'allow_iframing' => env('ALLOW_IFRAMING', false),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Demo Mode Lockdown | Demo Mode Lockdown
@ -140,7 +154,6 @@ return [
'lock_passwords' => env('APP_LOCKED', false), 'lock_passwords' => env('APP_LOCKED', false),
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Autoloaded Service Providers | Autoloaded Service Providers

View file

@ -1,5 +1,5 @@
<?php <?php
return array ( return array (
'app_version' => 'v3.3.0', 'app_version' => 'v3.4.0',
'hash_version' => 'v3.3.0-16-ge52a0f6', 'hash_version' => 'v3.4.0-beta-13-gba70e5b',
); );

View file

@ -0,0 +1,34 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddNewFieldsToCustomFields extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('custom_fields', function (Blueprint $table) {
//
$table->string('field_values')->nullable()->default(null);
$table->boolean('field_encrypted')->default(0);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('custom_fields', function (Blueprint $table) {
//
$table->dropColumn('field_values', 'field_encrypted');
});
}
}

View file

@ -0,0 +1,31 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class AddShowInNavToStatusLabels extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('status_labels', function (Blueprint $table) {
$table->boolean('show_in_nav')->default(0);
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
Schema::table('status_labels', function (Blueprint $table) {
$table->dropColumn('show_in_nav', 'field_encrypted');
});
}
}

View file

@ -0,0 +1,29 @@
<?php
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Database\Migrations\Migration;
class MakePurchaseCostNullable extends Migration
{
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::table('assets', function ($table) {
$table->decimal('purchase_cost',8,2)->nullable()->default(null)->change();
});
}
/**
* Reverse the migrations.
*
* @return void
*/
public function down()
{
//
}
}

View file

@ -22,3 +22,5 @@ APP_KEY=Y5hJeC7x1i7OxhDrvrQPlB9KvCorvRdO
APP_URL=http://127.0.0.1:32782 APP_URL=http://127.0.0.1:32782
APP_TIMEZONE=US/Pacific APP_TIMEZONE=US/Pacific
APP_LOCALE=en APP_LOCALE=en
ALLOW_IFRAMING=false

View file

@ -18,6 +18,7 @@ DB_DATABASE=${MYSQL_DATABASE}
DB_USERNAME=${MYSQL_USER} DB_USERNAME=${MYSQL_USER}
DB_PASSWORD=${MYSQL_PASSWORD} DB_PASSWORD=${MYSQL_PASSWORD}
DB_PREFIX=null DB_PREFIX=null
DB_DUMP_PATH='/usr/bin'
# -------------------------------------------- # --------------------------------------------

4
public/assets/js/html5shiv.js vendored Normal file
View file

@ -0,0 +1,4 @@
/**
* @preserve HTML5 Shiv 3.7.3 | @afarkas @jdalton @jon_neal @rem | MIT/GPL2 Licensed
*/
!function(a,b){function c(a,b){var c=a.createElement("p"),d=a.getElementsByTagName("head")[0]||a.documentElement;return c.innerHTML="x<style>"+b+"</style>",d.insertBefore(c.lastChild,d.firstChild)}function d(){var a=t.elements;return"string"==typeof a?a.split(" "):a}function e(a,b){var c=t.elements;"string"!=typeof c&&(c=c.join(" ")),"string"!=typeof a&&(a=a.join(" ")),t.elements=c+" "+a,j(b)}function f(a){var b=s[a[q]];return b||(b={},r++,a[q]=r,s[r]=b),b}function g(a,c,d){if(c||(c=b),l)return c.createElement(a);d||(d=f(c));var e;return e=d.cache[a]?d.cache[a].cloneNode():p.test(a)?(d.cache[a]=d.createElem(a)).cloneNode():d.createElem(a),!e.canHaveChildren||o.test(a)||e.tagUrn?e:d.frag.appendChild(e)}function h(a,c){if(a||(a=b),l)return a.createDocumentFragment();c=c||f(a);for(var e=c.frag.cloneNode(),g=0,h=d(),i=h.length;i>g;g++)e.createElement(h[g]);return e}function i(a,b){b.cache||(b.cache={},b.createElem=a.createElement,b.createFrag=a.createDocumentFragment,b.frag=b.createFrag()),a.createElement=function(c){return t.shivMethods?g(c,a,b):b.createElem(c)},a.createDocumentFragment=Function("h,f","return function(){var n=f.cloneNode(),c=n.createElement;h.shivMethods&&("+d().join().replace(/[\w\-:]+/g,function(a){return b.createElem(a),b.frag.createElement(a),'c("'+a+'")'})+");return n}")(t,b.frag)}function j(a){a||(a=b);var d=f(a);return!t.shivCSS||k||d.hasCSS||(d.hasCSS=!!c(a,"article,aside,dialog,figcaption,figure,footer,header,hgroup,main,nav,section{display:block}mark{background:#FF0;color:#000}template{display:none}")),l||i(a,d),a}var k,l,m="3.7.3",n=a.html5||{},o=/^<|^(?:button|map|select|textarea|object|iframe|option|optgroup)$/i,p=/^(?:a|b|code|div|fieldset|h1|h2|h3|h4|h5|h6|i|label|li|ol|p|q|span|strong|style|table|tbody|td|th|tr|ul)$/i,q="_html5shiv",r=0,s={};!function(){try{var a=b.createElement("a");a.innerHTML="<xyz></xyz>",k="hidden"in a,l=1==a.childNodes.length||function(){b.createElement("a");var a=b.createDocumentFragment();return"undefined"==typeof a.cloneNode||"undefined"==typeof a.createDocumentFragment||"undefined"==typeof a.createElement}()}catch(c){k=!0,l=!0}}();var t={elements:n.elements||"abbr article aside audio bdi canvas data datalist details dialog figcaption figure footer header hgroup main mark meter nav output picture progress section summary template time video",version:m,shivCSS:n.shivCSS!==!1,supportsUnknownElements:l,shivMethods:n.shivMethods!==!1,type:"default",shivDocument:j,createElement:g,createDocumentFragment:h,addElements:e};a.html5=t,j(b),"object"==typeof module&&module.exports&&(module.exports=t)}("undefined"!=typeof window?window:this,document);

View file

View file

@ -36,6 +36,11 @@ include '../c3.php';
$app = require_once __DIR__.'/../bootstrap/app.php'; $app = require_once __DIR__.'/../bootstrap/app.php';
// set the public path to this directory
$app->bind('path.public', function() {
return __DIR__;
});
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------
| Run The Application | Run The Application

View file

@ -5,11 +5,16 @@ return array(
'field' => 'حقل', 'field' => 'حقل',
'about_fieldsets_title' => 'حول مجموعة الحقول', 'about_fieldsets_title' => 'حول مجموعة الحقول',
'about_fieldsets_text' => 'مجموعات-الحقول تسمح لك بإنشاء مجموعات من الحقول اللتي يمكن إعادة إستخدامها مع أنواع موديل محدد.', 'about_fieldsets_text' => 'مجموعات-الحقول تسمح لك بإنشاء مجموعات من الحقول اللتي يمكن إعادة إستخدامها مع أنواع موديل محدد.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'مجموعة-حقول', 'fieldset' => 'مجموعة-حقول',
'qty_fields' => 'الحقول الكمية', 'qty_fields' => 'الحقول الكمية',
'fieldsets' => 'مجموعات-الحقول', 'fieldsets' => 'مجموعات-الحقول',
'fieldset_name' => 'إسم مجموعة-الحقل', 'fieldset_name' => 'إسم مجموعة-الحقل',
'field_name' => 'إسم الحقل', 'field_name' => 'إسم الحقل',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'عنصر النموذج', 'field_element' => 'عنصر النموذج',
'field_element_short' => 'عنصر', 'field_element_short' => 'عنصر',
'field_format' => 'صيغة', 'field_format' => 'صيغة',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'About Status Labels', 'about' => 'About Status Labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Create Status Label', 'create' => 'Create Status Label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -76,6 +76,7 @@
'image_delete' => 'حذف الصورة', 'image_delete' => 'حذف الصورة',
'image_upload' => 'رفع صورة', 'image_upload' => 'رفع صورة',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance', 'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenances' => 'Asset Maintenances',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Поле', 'field' => 'Поле',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -36,9 +36,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -51,7 +51,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Активът не беше изписан. Моля опитайте отново.', 'error' => 'Активът не беше изписан. Моля опитайте отново.',
'success' => 'Активът изписан успешно.', 'success' => 'Активът изписан успешно.',
'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.' 'user_does_not_exist' => 'Невалиден потребител. Моля опитайте отново.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP парола на потребител за връзка', 'ldap_pword' => 'LDAP парола на потребител за връзка',
'ldap_basedn' => 'Базов DN', 'ldap_basedn' => 'Базов DN',
'ldap_filter' => 'LDAP филтър', 'ldap_filter' => 'LDAP филтър',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Поле за потребителско име', 'ldap_username_field' => 'Поле за потребителско име',
'ldap_lname_field' => 'Фамилия', 'ldap_lname_field' => 'Фамилия',
'ldap_fname_field' => 'LDAP собствено име', 'ldap_fname_field' => 'LDAP собствено име',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'Относно статус етикетите', 'about' => 'Относно статус етикетите',
'archived' => 'Архивирани', 'archived' => 'Архивирани',
'create' => 'Създаване на статус етикет', 'create' => 'Създаване на статус етикет',
'color' => 'Chart Color',
'deployable' => 'Може да бъде предоставен', 'deployable' => 'Може да бъде предоставен',
'info' => 'Статусите се използват за описване на различните състояния на Вашите активи. Например, това са Предаден за ремонт, Изгубен/откраднат и др. Можете да създавате нови статуси за активите, които могат да бъдат предоставяни, очакващи набавяне и архивирани.', 'info' => 'Статусите се използват за описване на различните състояния на Вашите активи. Например, това са Предаден за ремонт, Изгубен/откраднат и др. Можете да създавате нови статуси за активите, които могат да бъдат предоставяни, очакващи набавяне и архивирани.',
'name' => 'Статус', 'name' => 'Статус',
'pending' => 'Изчакване', 'pending' => 'Изчакване',
'status_type' => 'Тип на статуса', 'status_type' => 'Тип на статуса',
'show_in_nav' => 'Show in side nav',
'title' => 'Заглавия на статуси', 'title' => 'Заглавия на статуси',
'undeployable' => 'Не може да бъде предоставян', 'undeployable' => 'Не може да бъде предоставян',
'update' => 'Обновяване на статус', 'update' => 'Обновяване на статус',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Изтриване на изображението', 'image_delete' => 'Изтриване на изображението',
'image_upload' => 'Качване на изображение', 'image_upload' => 'Качване на изображение',
'import' => 'Зареждане', 'import' => 'Зареждане',
'import-history' => 'Import History',
'asset_maintenance' => 'Поддръжка на активи', 'asset_maintenance' => 'Поддръжка на активи',
'asset_maintenance_report' => 'Справка за поддръжка на активи', 'asset_maintenance_report' => 'Справка за поддръжка на активи',
'asset_maintenances' => 'Поддръжки на активи', 'asset_maintenances' => 'Поддръжки на активи',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Pole', 'field' => 'Pole',
'about_fieldsets_title' => 'O sadách polí', 'about_fieldsets_title' => 'O sadách polí',
'about_fieldsets_text' => 'Sady polí Vám umožňují vytvořit si vlastní hodnoty, které chcete evidovat u modelů majetku.', 'about_fieldsets_text' => 'Sady polí Vám umožňují vytvořit si vlastní hodnoty, které chcete evidovat u modelů majetku.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Sada', 'fieldset' => 'Sada',
'qty_fields' => 'Počet', 'qty_fields' => 'Počet',
'fieldsets' => 'Sady', 'fieldsets' => 'Sady',
'fieldset_name' => 'Název sady', 'fieldset_name' => 'Název sady',
'field_name' => 'Název pole', 'field_name' => 'Název pole',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Typ pole', 'field_element' => 'Typ pole',
'field_element_short' => 'Typ', 'field_element_short' => 'Typ',
'field_format' => 'Formát', 'field_format' => 'Formát',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Některé položky se nepodařilo správně nahrát.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'Pro chyby se nepodařilo nahrát následující položky.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Váš soubor byl v pořádku nahrán", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Majetek nebyl předán, zkuste to prosím znovu', 'error' => 'Majetek nebyl předán, zkuste to prosím znovu',
'success' => 'Majetek byl v pořádku předán.', 'success' => 'Majetek byl v pořádku předán.',
'user_does_not_exist' => 'Tento uživatel je neplatný. Zkuste to prosím znovu.' 'user_does_not_exist' => 'Tento uživatel je neplatný. Zkuste to prosím znovu.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'O označení stavu', 'about' => 'O označení stavu',
'archived' => 'Archivováno', 'archived' => 'Archivováno',
'create' => 'Vytvořit označení stavu', 'create' => 'Vytvořit označení stavu',
'color' => 'Chart Color',
'deployable' => 'Připraveno k nasazení', '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.', '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', 'name' => 'Název stavu',
'pending' => 'Probíhající', 'pending' => 'Probíhající',
'status_type' => 'Typ stavu', 'status_type' => 'Typ stavu',
'show_in_nav' => 'Show in side nav',
'title' => 'Označení stavu', 'title' => 'Označení stavu',
'undeployable' => 'Nemožné připravit', 'undeployable' => 'Nemožné připravit',
'update' => 'Upravit označení stavu', 'update' => 'Upravit označení stavu',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Smazat obrázek', 'image_delete' => 'Smazat obrázek',
'image_upload' => 'Nahrát obrázek', 'image_upload' => 'Nahrát obrázek',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Údržba zařízení', 'asset_maintenance' => 'Údržba zařízení',
'asset_maintenance_report' => 'Zpráva o údržbě zařízení', 'asset_maintenance_report' => 'Zpráva o údržbě zařízení',
'asset_maintenances' => 'Záznamy o údržbě zařízení', 'asset_maintenances' => 'Záznamy o údržbě zařízení',

View file

@ -6,11 +6,11 @@ return array(
'accessory_category' => 'Tilbehør Kategori', 'accessory_category' => 'Tilbehør Kategori',
'accessory_name' => 'Tilbehør Navn', 'accessory_name' => 'Tilbehør Navn',
'cost' => 'Indkøbspris', 'cost' => 'Indkøbspris',
'checkout' => 'Checkout Accessory', 'checkout' => 'Tjek tilbehør ud',
'checkin' => 'Checkin Accessory', 'checkin' => 'Tjek tilbehør ind',
'create' => 'Opret tilbehør', 'create' => 'Opret tilbehør',
'date' => 'Købsdato', 'date' => 'Købsdato',
'edit' => 'Edit Accessory', 'edit' => 'Rediger tilbehør',
'eula_text' => 'Slutbrugerlicenskategori', 'eula_text' => 'Slutbrugerlicenskategori',
'eula_text_help' => 'Dette felt tillader dig at tilpasse din slutbrugerlicens til specifikke typer af tilbehør. Hvis du kun har en slutbrugerlicens for alle dine tilbehør, kan du afkrydse boksen nedenfor for at bruge den primære standardlicens.', 'eula_text_help' => 'Dette felt tillader dig at tilpasse din slutbrugerlicens til specifikke typer af tilbehør. Hvis du kun har en slutbrugerlicens for alle dine tilbehør, kan du afkrydse boksen nedenfor for at bruge den primære standardlicens.',
'require_acceptance' => 'Kræver brugere at bekræfte accept af tilbehør i denne kategori.', 'require_acceptance' => 'Kræver brugere at bekræfte accept af tilbehør i denne kategori.',

View file

@ -2,23 +2,23 @@
return array( return array(
'does_not_exist' => 'The accessory does not exist.', 'does_not_exist' => 'Tilbehøret findes ikke.',
'assoc_users' => 'Dette tilbehør har pt. :count emner tjekket ud til brugere. Tjek tilbehør ind og prøv igen.', 'assoc_users' => 'Dette tilbehør har pt. :count emner tjekket ud til brugere. Tjek tilbehør ind og prøv igen.',
'create' => array( 'create' => array(
'error' => 'The accessory was not created, please try again.', 'error' => 'Tilbehøret blev ikke oprettet, prøv venligst igen.',
'success' => 'The accessory was successfully created.' 'success' => 'Tilbehøret blev oprettet.'
), ),
'update' => array( 'update' => array(
'error' => 'The accessory was not updated, please try again', 'error' => 'Tilbehøret blev ikke opdateret, prøv venligst igen',
'success' => 'The accessory was updated successfully.' 'success' => 'Tilbehøret blev opdateret med success.'
), ),
'delete' => array( 'delete' => array(
'confirm' => 'Are you sure you wish to delete this accessory?', 'confirm' => 'Er du sikker på du vil slette dette tilbehør?',
'error' => 'There was an issue deleting the accessory. Please try again.', 'error' => 'Der opstod et problem under sletning af tilbehøret. Prøv venligst igen.',
'success' => 'The accessory was deleted successfully.' 'success' => 'Tilbehøret blev slettet med success.'
), ),
'checkout' => array( 'checkout' => array(

View file

@ -1,17 +1,17 @@
<?php <?php
return [ return [
'not_found' => 'Asset Maintenance you were looking for was not found!', 'not_found' => 'Aktivets vedligeholdelse blev ikke fundet!',
'delete' => [ 'delete' => [
'confirm' => 'Are you sure you wish to delete this asset maintenance?', 'confirm' => 'Er du sikker på du vil slette dette aktivs vedligeholdelse?',
'error' => 'There was an issue deleting the asset maintenance. Please try again.', 'error' => 'Der opstod et problem under sletning af aktivets vedligeholdelse. Prøv venligst igen.',
'success' => 'The asset maintenance was deleted successfully.' 'success' => 'Aktivets vedligeholdelse blev slettet med succes.'
], ],
'create' => [ 'create' => [
'error' => 'Asset Maintenance was not created, please try again.', 'error' => 'Aktivets vedligeholdelse blev ikke oprettet, prøv venligst igen.',
'success' => 'Asset Maintenance created successfully.' 'success' => 'Aktivets vedligeholdelse blev oprettet med succes.'
], ],
'asset_maintenance_incomplete' => 'Not Completed Yet', 'asset_maintenance_incomplete' => 'Ikke afsluttet endnu',
'warranty' => 'Warranty', 'warranty' => 'Garanti',
'not_warranty' => 'Not Warranty', 'not_warranty' => 'Ingen garanti',
]; ];

View file

@ -5,7 +5,7 @@ return array(
'about_categories' => 'Aktiver kategorier hjælper dig med at organisere dine aktiver. Eksempler på kategorier kunne være &quot;Stationære coputere&quot;, &quot;Bærbare&quot;, &quot;Mobiltelefoner&quot;, &quot;Tabletter&quot; osv., men du kan bruge aktiver kategorier på en hvilken som helst måde som giver mening for dig.', 'about_categories' => 'Aktiver kategorier hjælper dig med at organisere dine aktiver. Eksempler på kategorier kunne være &quot;Stationære coputere&quot;, &quot;Bærbare&quot;, &quot;Mobiltelefoner&quot;, &quot;Tabletter&quot; osv., men du kan bruge aktiver kategorier på en hvilken som helst måde som giver mening for dig.',
'asset_categories' => 'Aktiver Kategorier', 'asset_categories' => 'Aktiver Kategorier',
'category_name' => 'Kategorinavn', 'category_name' => 'Kategorinavn',
'checkin_email' => 'Send email to user on checkin.', 'checkin_email' => 'Send email til bruger ved tjek ind.',
'clone' => 'Klon Kategori', 'clone' => 'Klon Kategori',
'create' => 'Opret kategori', 'create' => 'Opret kategori',
'edit' => 'Rediger Kategori', 'edit' => 'Rediger Kategori',

View file

@ -3,8 +3,8 @@
return array( return array(
'does_not_exist' => 'Kategorien eksisterer ikke.', 'does_not_exist' => 'Kategorien eksisterer ikke.',
'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_models' => 'Denne kategori er i øjeblikket associeret med mindst en model og kan ikke slettes. Opdater venligst dine modeller, så de ikke længere refererer til denne kategori og prøv igen. ',
'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. ', 'assoc_items' => 'Denne kategori er i øjeblikket associeret med mindst en :asset_type og kan ikke slettes. Opdater venligst din :asset_type, så de ikke længere refererer til denne kategori og prøv igen. ',
'create' => array( 'create' => array(
'error' => 'Kategorien blev ikke oprettet, prøv igen.', 'error' => 'Kategorien blev ikke oprettet, prøv igen.',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -1,9 +1,9 @@
<?php <?php
return array( return array(
'bulk_delete' => 'Confrm Bulk Delete Assets', 'bulk_delete' => 'Bekræft massesletning af aktiver',
'bulk_delete_help' => 'Review the assets for bulk deletion below. Once deleted, these assets can be restored, but they will no longer be associated with any users they are currently assigned to.', 'bulk_delete_help' => 'Gennemgå aktiver for massesletning nedenfor. Disse aktiver kan gendannes når slettet, men de vil ikke længere være forbundet med eventuelle brugere, de i øjeblikket er tildelt.',
'bulk_delete_warn' => 'You are about to delete :asset_count assets.', 'bulk_delete_warn' => 'Du er i gang med at slette :asset_count aktiver.',
'bulk_update' => 'Masseopdater Aktiver', 'bulk_update' => 'Masseopdater Aktiver',
'bulk_update_help' => 'Denne form tillader dig at opdatere flere aktiver på en gang. Udfyld kun de felter der skal ændres. Ikke udfyldte feltet forbilver uændret.', 'bulk_update_help' => 'Denne form tillader dig at opdatere flere aktiver på en gang. Udfyld kun de felter der skal ændres. Ikke udfyldte feltet forbilver uændret.',
'bulk_update_warn' => 'Du er i færd med at redigere egenskaber på :asset_count aktiver.', 'bulk_update_warn' => 'Du er i færd med at redigere egenskaber på :asset_count aktiver.',
@ -19,10 +19,10 @@ return array(
'default_location' => 'Standardplacering', 'default_location' => 'Standardplacering',
'eol_date' => 'EOL Dato', 'eol_date' => 'EOL Dato',
'eol_rate' => 'EOL Rate', 'eol_rate' => 'EOL Rate',
'expected_checkin' => 'Expected Checkin Date', 'expected_checkin' => 'Forventet indtjekningsdato',
'expires' => 'Udløber', 'expires' => 'Udløber',
'fully_depreciated' => 'Fuldt Afskrevet', 'fully_depreciated' => 'Fuldt Afskrevet',
'help_checkout' => 'If you wish to assign this asset immediately, select "Ready to Deploy" from the status list above. ', 'help_checkout' => 'Vælg "Klar til implementering" fra listen ovenfor, hvis du ønsker at tildele dette aktiv med det samme. ',
'mac_address' => 'MAC-adresse', 'mac_address' => 'MAC-adresse',
'manufacturer' => 'Producent', 'manufacturer' => 'Producent',
'model' => 'Model', 'model' => 'Model',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -11,7 +11,7 @@ return array(
'title' => 'Asset Models', 'title' => 'Asset Models',
'update' => 'Update Asset Model', 'update' => 'Update Asset Model',
'view' => 'View Asset Model', 'view' => 'View Asset Model',
'update' => 'Update Asset Model', 'update' => 'Update Model',
'clone' => 'Clone Model', 'clone' => 'Clone Model',
'edit' => 'Edit Model', 'edit' => 'Edit Model',
); );

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'Om status labels', 'about' => 'Om status labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Opret status label', 'create' => 'Opret status label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status navn', 'name' => 'Status navn',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status labels', 'title' => 'Status labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Opdater status label', 'update' => 'Opdater status label',

View file

@ -5,7 +5,7 @@ return array(
'actions' => 'Handlinger', 'actions' => 'Handlinger',
'add' => 'Tilføj Ny', 'add' => 'Tilføj Ny',
'cancel' => 'Annuller', 'cancel' => 'Annuller',
'checkin_and_delete' => 'Checkin & Delete User', 'checkin_and_delete' => 'Tjek ind og slet bruger',
'delete' => 'Slet', 'delete' => 'Slet',
'edit' => 'Rediger', 'edit' => 'Rediger',
'restore' => 'Gendan', 'restore' => 'Gendan',

View file

@ -2,11 +2,11 @@
return [ return [
'accessories' => 'Tilbehør', 'accessories' => 'Tilbehør',
'activated' => 'Activated', 'activated' => 'Aktiveret',
'accessory' => 'Tilbehør', 'accessory' => 'Tilbehør',
'accessory_report' => 'Accessory Report', 'accessory_report' => 'Tilbehørsrapport',
'action' => 'Action', 'action' => 'Handling',
'activity_report' => 'Activity Report', 'activity_report' => 'Aktivitetsrapport',
'address' => 'Addresse', 'address' => 'Addresse',
'admin' => 'Admin', 'admin' => 'Admin',
'add_seats' => 'Added seats', 'add_seats' => 'Added seats',
@ -22,21 +22,21 @@
'avatar_delete' => 'Slet avatar', 'avatar_delete' => 'Slet avatar',
'avatar_upload' => 'Upload Avatar', 'avatar_upload' => 'Upload Avatar',
'back' => 'Tilbage', 'back' => 'Tilbage',
'bad_data' => 'Nothing found. Maybe bad data?', 'bad_data' => 'Intet fundet. Måske dårlig data?',
'bulk_checkout' => 'Bulk Checkout', 'bulk_checkout' => 'Masseudtjekning',
'cancel' => 'Annuller', 'cancel' => 'Annuller',
'categories' => 'Categories', 'categories' => 'Kategorier',
'category' => 'Category', 'category' => 'Kategori',
'changeemail' => 'Skift email adresse', 'changeemail' => 'Skift email adresse',
'changepassword' => 'Skift adgangskode', 'changepassword' => 'Skift adgangskode',
'checkin' => 'Tjek Ind', 'checkin' => 'Tjek Ind',
'checkin_from' => 'Checkin from', 'checkin_from' => 'Tjek ind fra',
'checkout' => 'Tjek Ud', 'checkout' => 'Tjek Ud',
'city' => 'By', 'city' => 'By',
'companies' => 'Companies', 'companies' => 'Selskaber',
'company' => 'Company', 'company' => 'Selskab',
'component' => 'Component', 'component' => 'Komponent',
'components' => 'Components', 'components' => 'Komponenter',
'consumable' => 'Consumable', 'consumable' => 'Consumable',
'consumables' => 'Consumables', 'consumables' => 'Consumables',
'country' => 'Land', 'country' => 'Land',
@ -57,73 +57,74 @@
'depreciation' => 'Afskrivning', 'depreciation' => 'Afskrivning',
'editprofile' => 'Ret Din Profil', 'editprofile' => 'Ret Din Profil',
'eol' => 'EOL', 'eol' => 'EOL',
'email_domain' => 'Email Domain', 'email_domain' => 'Email domæne',
'email_format' => 'Email Format', 'email_format' => 'Email formattering',
'email_domain_help' => 'This is used to generate email addresses when importing', 'email_domain_help' => 'Dette bruges til at generere email-adresser ved importering',
'filastname_format' => 'First Initial Last Name (jsmith@example.com)', 'filastname_format' => 'Fornavnskarakter Efternavn (jsmith@example.com)',
'firstname_lastname_format' => 'First Name Last Name (jane.smith@example.com)', 'firstname_lastname_format' => 'Fornavn Efternavn (jane.smith@example.com)',
'first' => 'First', 'first' => 'Første',
'first_name' => 'Fornavn', 'first_name' => 'Fornavn',
'first_name_format' => 'First Name (jane@example.com)', 'first_name_format' => 'Fornavn (jane@example.com)',
'file_name' => 'Fil', 'file_name' => 'Fil',
'file_uploads' => 'Filoverførsel', 'file_uploads' => 'Filoverførsel',
'generate' => 'Skab', 'generate' => 'Skab',
'groups' => 'Grupper', 'groups' => 'Grupper',
'gravatar_email' => 'Gravatar email addresse', 'gravatar_email' => 'Gravatar email addresse',
'history' => 'History', 'history' => 'Historik',
'history_for' => 'Historie for', 'history_for' => 'Historie for',
'id' => 'ID', 'id' => 'ID',
'image_delete' => 'Slet billede', 'image_delete' => 'Slet billede',
'image_upload' => 'Upload billede', 'image_upload' => 'Upload billede',
'import' => 'Import', 'import' => 'Importér',
'asset_maintenance' => 'Asset Maintenance', 'import-history' => 'Import History',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance' => 'Vedligeholdelse af aktiv',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenance_report' => 'Aktiv vedligeholdelsesrapport',
'item' => 'Item', 'asset_maintenances' => 'Vedligeholdelse af aktiv',
'insufficient_permissions' => 'Insufficient permissions!', 'item' => 'Emne',
'language' => 'Language', 'insufficient_permissions' => 'Ingen rettigheder!',
'last' => 'Last', 'language' => 'Sprog',
'last' => 'Sidste',
'last_name' => 'Efternavn', 'last_name' => 'Efternavn',
'license' => 'Licens', 'license' => 'Licens',
'license_report' => 'Licensrapport', 'license_report' => 'Licensrapport',
'licenses_available' => 'Tilgængelige licenser', 'licenses_available' => 'Tilgængelige licenser',
'licenses' => 'Licenser', 'licenses' => 'Licenser',
'list_all' => 'Vis alle', 'list_all' => 'Vis alle',
'loading' => 'Loading', 'loading' => 'Indlæser',
'lock_passwords' => 'This field cannot be edited in this installation.', 'lock_passwords' => 'This field cannot be edited in this installation.',
'feature_disabled' => 'This feature has been disabled for this installation.', 'feature_disabled' => 'This feature has been disabled for this installation.',
'location' => 'Lokation', 'location' => 'Lokation',
'locations' => 'Lokationer', 'locations' => 'Lokationer',
'logout' => 'Log ud', 'logout' => 'Log ud',
'lookup_by_tag' => 'Lookup by Asset Tag', 'lookup_by_tag' => 'Søg på aktivkode',
'manufacturer' => 'Producent', 'manufacturer' => 'Producent',
'manufacturers' => 'Producenter', 'manufacturers' => 'Producenter',
'markdown' => 'This field allows <a href="https://help.github.com/articles/github-flavored-markdown/">Github flavored markdown</a>.', 'markdown' => 'Dette felt tillader <a href="https://help.github.com/articles/github-flavored-markdown/">Github koder</a>.',
'min_amt' => 'Min. QTY', 'min_amt' => 'Min. antal',
'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered.', 'min_amt_help' => 'Minimum number of items that should be available before an alert gets triggered.',
'model_no' => 'Modelnummer', 'model_no' => 'Modelnummer',
'months' => 'måneder', 'months' => 'måneder',
'moreinfo' => 'Mere Info', 'moreinfo' => 'Mere Info',
'name' => 'Navn', 'name' => 'Navn',
'next' => 'Next', 'next' => 'Næste',
'new' => 'new!', 'new' => 'ny!',
'no_depreciation' => 'Ingen Afskrivning', 'no_depreciation' => 'Ingen Afskrivning',
'no_results' => 'Ingen Resultater.', 'no_results' => 'Ingen Resultater.',
'no' => 'Nej', 'no' => 'Nej',
'notes' => 'Noter', 'notes' => 'Noter',
'page_menu' => 'Showing _MENU_ items', 'page_menu' => 'Viser _MENU_ emner',
'pagination_info' => 'Showing _START_ to _END_ of _TOTAL_ items', 'pagination_info' => 'Viser _START_ til _END_ af _TOTAL_ emner',
'pending' => 'Afventer', 'pending' => 'Afventer',
'people' => 'Personer', 'people' => 'Personer',
'per_page' => 'Resultater Per Side', 'per_page' => 'Resultater Per Side',
'previous' => 'Previous', 'previous' => 'Forrige',
'processing' => 'Processing', 'processing' => 'Behandler',
'profile' => 'Din profil', 'profile' => 'Din profil',
'qty' => 'QTY', 'qty' => 'STK',
'quantity' => 'Quantity', 'quantity' => 'Antal',
'ready_to_deploy' => 'Klar til Implementering', 'ready_to_deploy' => 'Klar til Implementering',
'recent_activity' => 'Recent Activity', 'recent_activity' => 'Seneste aktivitet',
'remove_company' => 'Remove Company Association', 'remove_company' => 'Fjern association med selskab',
'reports' => 'Rapporter', 'reports' => 'Rapporter',
'requested' => 'Requested', 'requested' => 'Requested',
'save' => 'Gem', 'save' => 'Gem',

View file

@ -1,7 +1,7 @@
<?php <?php
return [ return [
'sent' => 'Your password link has been sent!', 'sent' => 'Dit adgangskode link er blevet sendt!',
'user' => 'That user does not exist or does not have an email address associated', 'user' => 'Brugeren findes ikke eller har ikke nogen email-adresse tilknyttet',
]; ];

View file

@ -17,7 +17,7 @@ return array(
"user" => "Brugernavn eller email adresse er forkert", "user" => "Brugernavn eller email adresse er forkert",
"token" => "This password reset token is invalid.", "token" => "Denne adgangskode nulstillingstoken er ugyldig.",
"sent" => "Hvis en tilsvarende email adresse blev fundet, er der afsendt en påmindelse om adgangskode!", "sent" => "Hvis en tilsvarende email adresse blev fundet, er der afsendt en påmindelse om adgangskode!",

View file

@ -5,6 +5,6 @@ return array(
'actions' => 'Handlinger', 'actions' => 'Handlinger',
'action' => 'Handling', 'action' => 'Handling',
'by' => 'Af', 'by' => 'Af',
'item' => 'Item', 'item' => 'Emne',
); );

View file

@ -32,11 +32,11 @@ return array(
"digits" => ":attribute skal være :digits cifre.", "digits" => ":attribute skal være :digits cifre.",
"digits_between" => ":attribute skal være imellem :min og :max cifre.", "digits_between" => ":attribute skal være imellem :min og :max cifre.",
"email" => ":attribute formatet er ugylidgt.", "email" => ":attribute formatet er ugylidgt.",
"exists" => "The selected :attribute is invalid.", "exists" => "Den valgte :attribute er ugyldig.",
"email_array" => "One or more email addresses is invalid.", "email_array" => "En eller flere email-adresser er ugyldige.",
"image" => ":attribute skal være et billede.", "image" => ":attribute skal være et billede.",
"in" => "Det valgte :attribute er ugyldigt.", "in" => "Det valgte :attribute er ugyldigt.",
"integer" => "The :attribute must be an integer.", "integer" => ":attribute skal være et heltal.",
"ip" => ":attribute skal være en gyldig IP adresse.", "ip" => ":attribute skal være en gyldig IP adresse.",
"max" => array( "max" => array(
"numeric" => ":attribute må ikke overstige :max.", "numeric" => ":attribute må ikke overstige :max.",
@ -49,8 +49,8 @@ return array(
"file" => ":attribute skal mindst være :min kilobytes.", "file" => ":attribute skal mindst være :min kilobytes.",
"string" => ":attribute skal mindst være :min tegn.", "string" => ":attribute skal mindst være :min tegn.",
), ),
"not_in" => "The selected :attribute is invalid.", "not_in" => "Den valgte :attribute er ugyldig.",
"numeric" => "The :attribute must be a number.", "numeric" => ":attribute skal være et tal.",
"regex" => ":attribute formatet er ugyldigt.", "regex" => ":attribute formatet er ugyldigt.",
"required" => ":attribute feltet er krævet.", "required" => ":attribute feltet er krævet.",
"required_if" => ":attribute feltet er krævet når :other er :value.", "required_if" => ":attribute feltet er krævet når :other er :value.",
@ -62,10 +62,10 @@ return array(
"file" => ":attribute skal være :size kilobytes.", "file" => ":attribute skal være :size kilobytes.",
"string" => ":attribute skal være :size tegn.", "string" => ":attribute skal være :size tegn.",
), ),
"unique" => "The :attribute has already been taken.", "unique" => ":attribute er allerede taget.",
"url" => ":attribute formatet er ugyldigt.", "url" => ":attribute formatet er ugyldigt.",
"statuslabel_type" => "You must select a valid status label type", "statuslabel_type" => "Du skal vælge en gyldig statusmærke type",
"unique_undeleted" => "The :attribute must be unique.", "unique_undeleted" => ":attribute skal være unik.",
/* /*
@ -80,7 +80,7 @@ return array(
*/ */
'custom' => array(), 'custom' => array(),
'alpha_space' => "The :attribute field contains a character that is not allowed.", 'alpha_space' => ":attribute feltet indeholder en karakter der ikke er tilladt.",
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Feld', 'field' => 'Feld',
'about_fieldsets_title' => 'Über Feldsätze', 'about_fieldsets_title' => 'Über Feldsätze',
'about_fieldsets_text' => 'Feldsätze erlauben es Gruppen aus benutzerdefinierten Feldern zu erstellen, welche regelmäßig für spezifische Modelltypen benutzt werden.', 'about_fieldsets_text' => 'Feldsätze erlauben es Gruppen aus benutzerdefinierten Feldern zu erstellen, welche regelmäßig für spezifische Modelltypen benutzt werden.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Feldsatz', 'fieldset' => 'Feldsatz',
'qty_fields' => 'Anzahl Felder', 'qty_fields' => 'Anzahl Felder',
'fieldsets' => 'Feldsätze', 'fieldsets' => 'Feldsätze',
'fieldset_name' => 'Feldsatzname', 'fieldset_name' => 'Feldsatzname',
'field_name' => 'Feldname', 'field_name' => 'Feldname',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Formularelement', 'field_element' => 'Formularelement',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -3,7 +3,7 @@
return array( return array(
'archived' => 'Archiviert', 'archived' => 'Archiviert',
'asset' => 'Asset', 'asset' => 'Asset',
'bulk_checkout' => 'Checkout Assets to User', 'bulk_checkout' => 'Assets an Benutzer herausgeben',
'checkin' => 'Asset zurücknehmen', 'checkin' => 'Asset zurücknehmen',
'checkout' => 'Asset an Benutzer herausgeben', 'checkout' => 'Asset an Benutzer herausgeben',
'clone' => 'Asset duplizieren', 'clone' => 'Asset duplizieren',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Einige Elemente wurden nicht korrekt importiert.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'Die Folgenden Elemente wurden aufgrund von Fehlern nicht importiert.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Ihre Datei wurde importiert", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset konnte nicht herausgegeben werden. Bitte versuchen Sie es erneut', 'error' => 'Asset konnte nicht herausgegeben werden. Bitte versuchen Sie es erneut',
'success' => 'Asset wurde erfolgreich herausgegeben.', 'success' => 'Asset wurde erfolgreich herausgegeben.',
'user_does_not_exist' => 'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.' 'user_does_not_exist' => 'Dieser Benutzer existiert nicht. Bitte versuchen Sie es erneut.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -11,7 +11,7 @@ return array(
'title' => 'Asset Modelle', 'title' => 'Asset Modelle',
'update' => 'Asset Modell aktualisieren', 'update' => 'Asset Modell aktualisieren',
'view' => 'Asset Modell ansehen', 'view' => 'Asset Modell ansehen',
'update' => 'Asset Modell aktualisieren', 'update' => 'Modell aktualisieren',
'clone' => 'Modell duplizieren', 'clone' => 'Modell duplizieren',
'edit' => 'Modell bearbeiten', 'edit' => 'Modell bearbeiten',
); );

View file

@ -2,9 +2,9 @@
return array( return array(
'ad' => 'Active Directory', 'ad' => 'Active Directory',
'ad_domain' => 'Active Directory domain', 'ad_domain' => 'Active Directory Domäne',
'ad_domain_help' => 'This is sometimes the same as your email domain, but not always.', 'ad_domain_help' => 'Meistens dieselbe wie die E-Mail Domäne.',
'is_ad' => 'This is an Active Directory server', 'is_ad' => 'Dies ist ein Active Directory Server',
'alert_email' => 'Alarme senden an', 'alert_email' => 'Alarme senden an',
'alerts_enabled' => 'Alarme aktiviert', 'alerts_enabled' => 'Alarme aktiviert',
'alert_interval' => 'Ablauf Alarmschwelle (in Tagen)', 'alert_interval' => 'Ablauf Alarmschwelle (in Tagen)',
@ -41,16 +41,18 @@ return array(
'ldap_integration' => 'LDAP Integration', 'ldap_integration' => 'LDAP Integration',
'ldap_settings' => 'LDAP Einstellungen', 'ldap_settings' => 'LDAP Einstellungen',
'ldap_server' => 'LDAP Server', 'ldap_server' => 'LDAP Server',
'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', 'ldap_server_help' => 'Sollte mit ldap:// (für unencrypted oder TLS) oder ldaps:// (für SSL) starten',
'ldap_server_cert' => 'LDAP SSL Zertifikatsüberprüfung', 'ldap_server_cert' => 'LDAP SSL Zertifikatsüberprüfung',
'ldap_server_cert_ignore' => 'Erlaube ungültige SSL Zertifikate', 'ldap_server_cert_ignore' => 'Erlaube ungültige SSL Zertifikate',
'ldap_server_cert_help' => 'Wählen Sie diese Option, wenn Sie selbstsignierte SSL Zertifikate verwenden und diese gegebenenfalls ungültigen Zertifikate akzeptieren möchten.', 'ldap_server_cert_help' => 'Wählen Sie diese Option, wenn Sie selbstsignierte SSL Zertifikate verwenden und diese gegebenenfalls ungültigen Zertifikate akzeptieren möchten.',
'ldap_tls' => 'Use TLS', 'ldap_tls' => 'TLS verwenden',
'ldap_tls_help' => 'This should be checked only if you are running STARTTLS on your LDAP server. ', 'ldap_tls_help' => 'Sollte nur wenn STARTTLS am LDAP Server verwendet wird, aktiviert sein. ',
'ldap_uname' => 'LDAP Bind Nutzername', 'ldap_uname' => 'LDAP Bind Nutzername',
'ldap_pword' => 'LDAP Bind Passwort', 'ldap_pword' => 'LDAP Bind Passwort',
'ldap_basedn' => 'Basis Bind DN', 'ldap_basedn' => 'Basis Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Benutzername', 'ldap_username_field' => 'Benutzername',
'ldap_lname_field' => 'Familienname', 'ldap_lname_field' => 'Familienname',
'ldap_fname_field' => 'LDAP Vorname', 'ldap_fname_field' => 'LDAP Vorname',
@ -108,5 +110,5 @@ return array(
'bottom' => 'Unten', 'bottom' => 'Unten',
'vertical' => 'Vertikal', 'vertical' => 'Vertikal',
'horizontal' => 'Horizontal', 'horizontal' => 'Horizontal',
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Länge der Asset Tags, inklusive zerofill',
); );

View file

@ -4,11 +4,13 @@ return array(
'about' => 'Info Statusbezeichnung', 'about' => 'Info Statusbezeichnung',
'archived' => 'Archiviert', 'archived' => 'Archiviert',
'create' => 'Statusbezeichnung erstellen', 'create' => 'Statusbezeichnung erstellen',
'color' => 'Chart Color',
'deployable' => 'Einsetzbar', 'deployable' => 'Einsetzbar',
'info' => 'Status Label werden eingesetzt um diverse Stati Ihrer Assets zu beschreiben. Diese können zB. in Reparatur sein, Gestohlen oder Verlohren worden sein. Sie können neue Status Labels für Einsetzbare, Unerledigte und Archivierte Assets erstellen.', 'info' => 'Status Label werden eingesetzt um diverse Stati Ihrer Assets zu beschreiben. Diese können zB. in Reparatur sein, Gestohlen oder Verlohren worden sein. Sie können neue Status Labels für Einsetzbare, Unerledigte und Archivierte Assets erstellen.',
'name' => 'Statusname', 'name' => 'Statusname',
'pending' => 'Unerledigt', 'pending' => 'Unerledigt',
'status_type' => 'Statustyp', 'status_type' => 'Statustyp',
'show_in_nav' => 'Show in side nav',
'title' => 'Statusbezeichnungen', 'title' => 'Statusbezeichnungen',
'undeployable' => 'nicht Einsetzbar', 'undeployable' => 'nicht Einsetzbar',
'update' => 'Statusbezeichnung bearbeiten', 'update' => 'Statusbezeichnung bearbeiten',

View file

@ -23,7 +23,7 @@
'avatar_upload' => 'Avatar hochladen', 'avatar_upload' => 'Avatar hochladen',
'back' => 'Zurück', 'back' => 'Zurück',
'bad_data' => 'Nichts gefunden. Vielleicht defekte Daten?', 'bad_data' => 'Nichts gefunden. Vielleicht defekte Daten?',
'bulk_checkout' => 'Bulk Checkout', 'bulk_checkout' => 'Massen-Checkout',
'cancel' => 'Abbrechen', 'cancel' => 'Abbrechen',
'categories' => 'Kategorien', 'categories' => 'Kategorien',
'category' => 'Kategorie', 'category' => 'Kategorie',
@ -76,6 +76,7 @@
'image_delete' => 'Bild löschen', 'image_delete' => 'Bild löschen',
'image_upload' => 'Bild hinzufügen', 'image_upload' => 'Bild hinzufügen',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Wartung', 'asset_maintenance' => 'Asset Wartung',
'asset_maintenance_report' => 'Asset Wartungsbericht', 'asset_maintenance_report' => 'Asset Wartungsbericht',
'asset_maintenances' => 'Asset Wartungen', 'asset_maintenances' => 'Asset Wartungen',
@ -106,7 +107,7 @@
'moreinfo' => 'Mehr Informationen', 'moreinfo' => 'Mehr Informationen',
'name' => 'Location Name', 'name' => 'Location Name',
'next' => 'Nächstes', 'next' => 'Nächstes',
'new' => 'new!', 'new' => 'Neu!',
'no_depreciation' => 'Do Not Depreciate', 'no_depreciation' => 'Do Not Depreciate',
'no_results' => 'Keine Treffer.', 'no_results' => 'Keine Treffer.',
'no' => 'Nein', 'no' => 'Nein',
@ -142,7 +143,7 @@
'select_asset' => 'Asset auswählen', 'select_asset' => 'Asset auswählen',
'settings' => 'Einstellungen', 'settings' => 'Einstellungen',
'sign_in' => 'Einloggen', 'sign_in' => 'Einloggen',
'some_features_disabled' => 'DEMO MODE: Some features are disabled for this installation.', 'some_features_disabled' => 'Einige Funktionen sind für den DEMO-Modus deaktiviert.',
'site_name' => 'Seitenname', 'site_name' => 'Seitenname',
'state' => 'Zustand', 'state' => 'Zustand',
'status_labels' => 'Statusbezeichnungen', 'status_labels' => 'Statusbezeichnungen',

View file

@ -64,8 +64,8 @@ return array(
), ),
"unique" => ":attribute schon benutzt.", "unique" => ":attribute schon benutzt.",
"url" => ":attribute Format ist ungültig.", "url" => ":attribute Format ist ungültig.",
"statuslabel_type" => "You must select a valid status label type", "statuslabel_type" => "Gültigen Status Beschriftungstyp auswählen!",
"unique_undeleted" => "The :attribute must be unique.", "unique_undeleted" => ":attribute muss eindeutig sein.",
/* /*

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -11,7 +11,7 @@ return array(
'title' => 'Asset Models', 'title' => 'Asset Models',
'update' => 'Update Asset Model', 'update' => 'Update Asset Model',
'view' => 'View Asset Model', 'view' => 'View Asset Model',
'update' => 'Update Asset Model', 'update' => 'Update Model',
'clone' => 'Clone Model', 'clone' => 'Clone Model',
'edit' => 'Edit Model', 'edit' => 'Edit Model',
); );

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'About Status Labels', 'about' => 'About Status Labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Create Status Label', 'create' => 'Create Status Label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Delete Image', 'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image', 'image_upload' => 'Upload Image',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance', 'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenances' => 'Asset Maintenances',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -11,7 +11,7 @@ return array(
'title' => 'Asset Models', 'title' => 'Asset Models',
'update' => 'Update Asset Model', 'update' => 'Update Asset Model',
'view' => 'View Asset Model', 'view' => 'View Asset Model',
'update' => 'Update Asset Model', 'update' => 'Update Model',
'clone' => 'Clone Model', 'clone' => 'Clone Model',
'edit' => 'Edit Model', 'edit' => 'Edit Model',
); );

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'About Status Labels', 'about' => 'About Status Labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Create Status Label', 'create' => 'Create Status Label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Delete Image', 'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image', 'image_upload' => 'Upload Image',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance', 'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenances' => 'Asset Maintenances',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'About Status Labels', 'about' => 'About Status Labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Create Status Label', 'create' => 'Create Status Label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Delete Image', 'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image', 'image_upload' => 'Upload Image',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance', 'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenances' => 'Asset Maintenances',

View file

@ -4,12 +4,18 @@ return array(
'custom_fields' => 'Custom Fields', 'custom_fields' => 'Custom Fields',
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database for each asset. The decrypted value of this field will only be viewable by admins.',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'encrypted' => 'Encrypted',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored. Separate values and labels by pipes on each line (optional).',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',
@ -20,4 +26,5 @@ return array(
'order' => 'Order', 'order' => 'Order',
'create_fieldset' => 'New Fieldset', 'create_fieldset' => 'New Fieldset',
'create_field' => 'New Custom Field', 'create_field' => 'New Custom Field',
'value_encrypted' => 'The value of this field is encrypted in the database. Only admin users will be able to view the decrypted value',
); );

View file

@ -37,9 +37,11 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some items did not import correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your file has been imported", 'success' => "Your file has been imported",
'file_delete_success' => "Your file has been been successfully deleted",
'file_delete_error' => "The file was unable to be deleted",
), ),

View file

@ -10,6 +10,7 @@ return array(
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Field', 'field' => 'Field',
'about_fieldsets_title' => 'About Fieldsets', '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.', 'about_fieldsets_text' => 'Fieldsets allow you to create groups of custom fields that are frequently re-used used for specific asset model types.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Fieldset', 'fieldset' => 'Fieldset',
'qty_fields' => 'Qty Fields', 'qty_fields' => 'Qty Fields',
'fieldsets' => 'Fieldsets', 'fieldsets' => 'Fieldsets',
'fieldset_name' => 'Fieldset Name', 'fieldset_name' => 'Fieldset Name',
'field_name' => 'Field Name', 'field_name' => 'Field Name',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Form Element', 'field_element' => 'Form Element',
'field_element_short' => 'Element', 'field_element_short' => 'Element',
'field_format' => 'Format', 'field_format' => 'Format',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,7 +52,8 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Asset was not checked out, please try again', 'error' => 'Asset was not checked out, please try again',
'success' => 'Asset checked out successfully.', 'success' => 'Asset checked out successfully.',
'user_does_not_exist' => 'That user is invalid. Please try again.' 'user_does_not_exist' => 'That user is invalid. Please try again.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(

View file

@ -51,6 +51,8 @@ return array(
'ldap_pword' => 'LDAP Bind Password', 'ldap_pword' => 'LDAP Bind Password',
'ldap_basedn' => 'Base Bind DN', 'ldap_basedn' => 'Base Bind DN',
'ldap_filter' => 'LDAP Filter', 'ldap_filter' => 'LDAP Filter',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Username Field', 'ldap_username_field' => 'Username Field',
'ldap_lname_field' => 'Last Name', 'ldap_lname_field' => 'Last Name',
'ldap_fname_field' => 'LDAP First Name', 'ldap_fname_field' => 'LDAP First Name',

View file

@ -4,11 +4,13 @@ return array(
'about' => 'About Status Labels', 'about' => 'About Status Labels',
'archived' => 'Archived', 'archived' => 'Archived',
'create' => 'Create Status Label', 'create' => 'Create Status Label',
'color' => 'Chart Color',
'deployable' => 'Deployable', '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.', 'info' => 'Status labels are used to describe the various states your assets could be in. They may be out for repair, lost/stolen, etc. You can create new status labels for deployable, pending and archived assets.',
'name' => 'Status Name', 'name' => 'Status Name',
'pending' => 'Pending', 'pending' => 'Pending',
'status_type' => 'Status Type', 'status_type' => 'Status Type',
'show_in_nav' => 'Show in side nav',
'title' => 'Status Labels', 'title' => 'Status Labels',
'undeployable' => 'Undeployable', 'undeployable' => 'Undeployable',
'update' => 'Update Status Label', 'update' => 'Update Status Label',

View file

@ -76,6 +76,7 @@
'image_delete' => 'Delete Image', 'image_delete' => 'Delete Image',
'image_upload' => 'Upload Image', 'image_upload' => 'Upload Image',
'import' => 'Import', 'import' => 'Import',
'import-history' => 'Import History',
'asset_maintenance' => 'Asset Maintenance', 'asset_maintenance' => 'Asset Maintenance',
'asset_maintenance_report' => 'Asset Maintenance Report', 'asset_maintenance_report' => 'Asset Maintenance Report',
'asset_maintenances' => 'Asset Maintenances', 'asset_maintenances' => 'Asset Maintenances',

View file

@ -7,7 +7,7 @@ return array(
'cost' => 'Precio de compra', 'cost' => 'Precio de compra',
'create' => 'Crear Consumible', 'create' => 'Crear Consumible',
'date' => 'Fecha de compra', 'date' => 'Fecha de compra',
'item_no' => 'Item No.', 'item_no' => 'Artículo núm.',
'order' => 'Orden de compra', 'order' => 'Orden de compra',
'remaining' => 'Restante', 'remaining' => 'Restante',
'total' => 'Total', 'total' => 'Total',

View file

@ -5,11 +5,16 @@ return array(
'field' => 'Campo', 'field' => 'Campo',
'about_fieldsets_title' => 'Acerca de los campos personalizados', 'about_fieldsets_title' => 'Acerca de los campos personalizados',
'about_fieldsets_text' => 'Los grupos de campos personalizados te permiten agrupar campos que se usan frecuentemente para determinados modelos de equipos.', 'about_fieldsets_text' => 'Los grupos de campos personalizados te permiten agrupar campos que se usan frecuentemente para determinados modelos de equipos.',
'custom_format' => 'Custom format...',
'encrypt_field' => 'Encrypt the value of this field in the database',
'encrypt_field_help' => 'WARNING: Encrypting a field makes it unsearchable.',
'fieldset' => 'Grupo de campos personalizados', 'fieldset' => 'Grupo de campos personalizados',
'qty_fields' => 'Campos de Cantidad', 'qty_fields' => 'Campos de Cantidad',
'fieldsets' => 'Grupo de campos personalizados', 'fieldsets' => 'Grupo de campos personalizados',
'fieldset_name' => 'Nombre del grupo', 'fieldset_name' => 'Nombre del grupo',
'field_name' => 'Nombre del campo', 'field_name' => 'Nombre del campo',
'field_values' => 'Field Values',
'field_values_help' => 'Add selectable options, one per line. Blank lines other than the first line will be ignored.',
'field_element' => 'Elemento de formulario', 'field_element' => 'Elemento de formulario',
'field_element_short' => 'Elemento', 'field_element_short' => 'Elemento',
'field_format' => 'Formato', 'field_format' => 'Formato',

View file

@ -3,7 +3,7 @@
return array( return array(
'archived' => 'Archivado', 'archived' => 'Archivado',
'asset' => 'Equipo', 'asset' => 'Equipo',
'bulk_checkout' => 'Checkout Assets to User', 'bulk_checkout' => 'Asignar activos a un usuario',
'checkin' => 'Quitar Equipo', 'checkin' => 'Quitar Equipo',
'checkout' => 'Asignar a un usuario', 'checkout' => 'Asignar a un usuario',
'clone' => 'Clonar Equipo', 'clone' => 'Clonar Equipo',

View file

@ -37,9 +37,9 @@ return array(
), ),
'import' => array( 'import' => array(
'error' => 'Some Items did not import Correctly.', 'error' => 'Some items did not import correctly.',
'errorDetail' => 'The Following Items were not imported because of errors.', 'errorDetail' => 'The following Items were not imported because of errors.',
'success' => "Your File has been imported", 'success' => "Your file has been imported",
), ),
@ -52,14 +52,15 @@ return array(
'checkout' => array( 'checkout' => array(
'error' => 'Equipo no asignado, intentalo de nuevo', 'error' => 'Equipo no asignado, intentalo de nuevo',
'success' => 'Equipo asignado.', 'success' => 'Equipo asignado.',
'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.' 'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.',
'not_available' => 'That asset is not available for checkout!'
), ),
'checkin' => array( 'checkin' => array(
'error' => 'No se ha quitado el equipo. Intentalo de nuevo.', 'error' => 'No se ha quitado el equipo. Intentalo de nuevo.',
'success' => 'Equipo quitado correctamente.', 'success' => 'Equipo quitado correctamente.',
'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.', 'user_does_not_exist' => 'Este usuario no es correcto. Intentalo de nuevo.',
'already_checked_in' => 'That asset is already checked in.', 'already_checked_in' => 'Ese activo ya se quito.',
), ),

View file

@ -9,7 +9,7 @@ return array(
'date' => 'Fecha Compra', 'date' => 'Fecha Compra',
'depreciation' => 'Amortización', 'depreciation' => 'Amortización',
'expiration' => 'Fecha de vencimiento', 'expiration' => 'Fecha de vencimiento',
'license_key' => 'Product Key', 'license_key' => 'Clave de producto',
'maintained' => 'Mantenido', 'maintained' => 'Mantenido',
'name' => 'Aplicación', 'name' => 'Aplicación',
'no_depreciation' => 'No Amortizar', 'no_depreciation' => 'No Amortizar',

View file

@ -1,13 +1,13 @@
<?php <?php
return array( return array(
'ad' => 'Active Directory', 'ad' => 'Directorio Activo',
'ad_domain' => 'Active Directory domain', 'ad_domain' => 'Dominio del Directorio Activo',
'ad_domain_help' => 'This is sometimes the same as your email domain, but not always.', 'ad_domain_help' => 'Esto es a veces el mismo que su correo electrónico de dominio, pero no siempre.',
'is_ad' => 'This is an Active Directory server', 'is_ad' => 'Este es un servidor de Directorio Activo',
'alert_email' => 'Enviar alertas a', 'alert_email' => 'Enviar alertas a',
'alerts_enabled' => 'Alertas habilitadas', 'alerts_enabled' => 'Alertas habilitadas',
'alert_interval' => 'Expiring Alerts Threshold (in days)', 'alert_interval' => 'Limite de alertas de expiración (en días)',
'alert_inv_threshold' => 'Umbral de alerta del inventario', 'alert_inv_threshold' => 'Umbral de alerta del inventario',
'asset_ids' => 'IDs de Recurso', 'asset_ids' => 'IDs de Recurso',
'auto_increment_assets' => 'Generar IDs de equipo autoincrementales', 'auto_increment_assets' => 'Generar IDs de equipo autoincrementales',
@ -26,10 +26,10 @@ return array(
'display_asset_name' => 'Mostrar Nombre Equipo', 'display_asset_name' => 'Mostrar Nombre Equipo',
'display_checkout_date' => 'Mostrar Fecha de Salida', 'display_checkout_date' => 'Mostrar Fecha de Salida',
'display_eol' => 'Mostrar EOL', 'display_eol' => 'Mostrar EOL',
'display_qr' => 'Display Square Codes', 'display_qr' => 'Mostrar Códigos QR',
'display_alt_barcode' => 'Display 1D barcode', 'display_alt_barcode' => 'Mostrar códigos de barras en 1D',
'barcode_type' => '2D Barcode Type', 'barcode_type' => 'Tipo de códigos de barras 2D',
'alt_barcode_type' => '1D barcode type', 'alt_barcode_type' => 'Tipo de códigos de barras 1D',
'eula_settings' => 'Configuración EULA', 'eula_settings' => 'Configuración EULA',
'eula_markdown' => 'Este EULS permite <a href="https://help.github.com/articles/github-flavored-markdown/">makrdown estilo Github</a>.', 'eula_markdown' => 'Este EULS permite <a href="https://help.github.com/articles/github-flavored-markdown/">makrdown estilo Github</a>.',
'general_settings' => 'Configuración General', 'general_settings' => 'Configuración General',
@ -41,16 +41,18 @@ return array(
'ldap_integration' => 'Integración LDAP', 'ldap_integration' => 'Integración LDAP',
'ldap_settings' => 'Ajustes LDAP', 'ldap_settings' => 'Ajustes LDAP',
'ldap_server' => 'Servidor LDAP', 'ldap_server' => 'Servidor LDAP',
'ldap_server_help' => 'This should start with ldap:// (for unencrypted or TLS) or ldaps:// (for SSL)', 'ldap_server_help' => 'Esto debería empezar con ldap:// (sin codificar o TLS) o ldaps:// (para SSL)',
'ldap_server_cert' => 'Certificado de validación SSL LDAP', 'ldap_server_cert' => 'Certificado de validación SSL LDAP',
'ldap_server_cert_ignore' => 'Permitir certificados SSL inválidos', 'ldap_server_cert_ignore' => 'Permitir certificados SSL inválidos',
'ldap_server_cert_help' => 'Selecciona este campo si estás usando un certificado SSL auto firmado y quieres aceptar un certificado SSL inválido.', 'ldap_server_cert_help' => 'Selecciona este campo si estás usando un certificado SSL auto firmado y quieres aceptar un certificado SSL inválido.',
'ldap_tls' => 'Use TLS', 'ldap_tls' => 'Usar TLS',
'ldap_tls_help' => 'This should be checked only if you are running STARTTLS on your LDAP server. ', 'ldap_tls_help' => 'Esto se debe seleccionar si se está ejecutando STARTTLS en el servidor LDAP. ',
'ldap_uname' => 'Enlazar usuario LDAP', 'ldap_uname' => 'Enlazar usuario LDAP',
'ldap_pword' => 'Enlazar contraseña LDAP', 'ldap_pword' => 'Enlazar contraseña LDAP',
'ldap_basedn' => 'Enlazar base DN', 'ldap_basedn' => 'Enlazar base DN',
'ldap_filter' => 'Filtro LDAP', 'ldap_filter' => 'Filtro LDAP',
'ldap_pw_sync' => 'LDAP Password Sync',
'ldap_pw_sync_help' => 'Uncheck this box if you do not wish to keep LDAP passwords synced with local passwords. Disabling this means that your users may not be able to login if your LDAP server is unreachable for some reason.',
'ldap_username_field' => 'Campo de usuario', 'ldap_username_field' => 'Campo de usuario',
'ldap_lname_field' => 'Apellido', 'ldap_lname_field' => 'Apellido',
'ldap_fname_field' => 'Nombre LDAP', 'ldap_fname_field' => 'Nombre LDAP',
@ -89,24 +91,24 @@ return array(
'labels_per_page' => 'Etiquetas por pàgina', 'labels_per_page' => 'Etiquetas por pàgina',
'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)', 'label_dimensions' => 'Dimensiones de las etiquetas (pulgadas)',
'page_padding' => 'Margenès de pàgina (pulgadas)', 'page_padding' => 'Margenès de pàgina (pulgadas)',
'purge' => 'Purge Deleted Records', 'purge' => 'Purgar registros eliminados',
'labels_display_bgutter' => 'Label bottom gutter', 'labels_display_bgutter' => 'Label bottom gutter',
'labels_display_sgutter' => 'Label side gutter', 'labels_display_sgutter' => 'Label side gutter',
'labels_fontsize' => 'Label font size', 'labels_fontsize' => 'Tamaño de fuente de la etiqueta',
'labels_pagewidth' => 'Label sheet width', 'labels_pagewidth' => 'Ancho de la hoja de etiqueta',
'labels_pageheight' => 'Label sheet height', 'labels_pageheight' => 'Altura de la hoja de etiqueta',
'label_gutters' => 'Label spacing (inches)', 'label_gutters' => 'Espaciamiento de etiqueta (pulgadas)',
'page_dimensions' => 'Page dimensions (inches)', 'page_dimensions' => 'Dimensiones de la página (pulgadas)',
'label_fields' => 'Label visible fields', 'label_fields' => 'Campos visibles de la etiqueta',
'inches' => 'inches', 'inches' => 'pulgadas',
'width_w' => 'w', 'width_w' => 'w',
'height_h' => 'h', 'height_h' => 'h',
'text_pt' => 'pt', 'text_pt' => 'pt',
'left' => 'left', 'left' => 'izquierda',
'right' => 'right', 'right' => 'derecha',
'top' => 'top', 'top' => 'arriba',
'bottom' => 'bottom', 'bottom' => 'fondo',
'vertical' => 'vertical', 'vertical' => 'vertical',
'horizontal' => 'horizontal', 'horizontal' => 'horizontal',
'zerofill_count' => 'Length of asset tags, including zerofill', 'zerofill_count' => 'Longitud de etiquetas de activos, incluyendo relleno de ceros',
); );

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