* Early layout work on a cleaner permissions interface
* Cleanup layout. Make new permissions view work. Still needs some css and javascript improvements. Also need to do the same thing to the group view.
* Improve styling, add javascript to toggle an entire group of permissions if choosing the permission on the header row. Would be nice to add collapsing of sections in the future.
* Toggle viewing sections.
* Special case places where we only have one item in a group to only display the item once.
* Filter getCreate the same way.
* BugFix: Asset name was not included in custom report
* BugFix: Custom Asset Report did not escape commas in custom fields. So the csv file is inconsistent, if a custom field containes a comma. Added an escape function which escapes the commas with a backslash.
A csvreader can be configured to handle the escape character.
* Fix the actionlog/companyables problem by adding a company_id to all actionlogs and scoping directly on that. Works around bugs in laravel where trying to hunt down the polymorphic relationship would lead to an infinite loop
* Scope companyables in getactivityreport. Also eager load.
* Improve reportscontroller, work on seeder to test this.
* Only show company users in checkout dialogs
* If no admin associated with log, it might be a request. Leave blank instead of saying deleted admin
* When injecting company_id, use target instead of user if user is a superadmin
* Build up the seeder to generate users, companies, and logs.
* Eager load the log, don't scope the users log because the log should already include things only related to the user.
* commit temporal
* final translation commit -- added email translations
* final translation commit -- removed file for spanish translations
* final translation commit -- removed file for spanish translations
* added missing translations
* method overrided and config files back to default
* config files back to default
* config files back to default
* Create a new action_log table to replace asset_log. Use Polymorphism to generalize class and targets. Port everything I can find to use it. Add a migration to port the asset_logs table to action_logs.
* Initial work on requestable asset models
* Backend work for polymorphic requests table to store checkout requests.
* Add missing files
* Add a record to the db when requesting items. Build up a testing route for interfacing with this.
* Users can now toggle requests of items on the request page. Reformat page to use the same tab layout we use elsewhere
* Polymorphic request function. Implement requesting of asset models. Need to port mail/slack to notifications still.
* Implement requesting of asset models. Build up emails and notifications to support it. Allow specifying a quantity of model to request.
* Add view to show currently requested assets. Needs some work and cleanup, but it isn't accessible from anywhere yet.
* Save progress
* Create a new action_log table to replace asset_log. Use Polymorphism to generalize class and targets. Port everything I can find to use it. Add a migration to port the asset_logs table to action_logs.
* Allow accepted_id to be nullable.
* Comment out the thread_id migration, because it b0rks on a new database with the move. I'm unsure if the thread_id does anything...It doesn't seem to be used
* Clean up all old methods from Actionlog model. Port everything to use new cleaner interface.
* Port the actionlog factory to fix travis.
* Adjust code to work on php5. Also fix lurking adminlog call.
* Remove weird code
* Port the pave command. Also fix dangling adminlog
* Add support for updating assets to the importer.
If an asset with a matching asset tag is found, and the --update flag is
passed to the importer, we edit the matching asset with any
asset-specific values, and persist to the database. Any missing/blank
values are skipped.
TODO: Add to web interface, add support in consumables/accessories
* Allow deleting of files on the import page.
* Extend web interface to allow updating of imported items.
This adds a modal dialog to the import process. Currently the dialog
allows the choice of update vs ignore, and choosing the item type to
import (Accessory, Asset, Consumable).
Also use Helper::ParseFloat() for purchase_cost processing. It exists,
and fixes issues on my end at least.
* Implement editing of consumables and accessories.
* Rename getProcessImportFile to postProcessImportFile to reflect how it's now used
* Fix copy-pasta error.
* Add manufacturer to licenses. Shows in table and edit. Need to improve manufacturer view to show lists beyond assets still.
* Remove extra closing tags, formatting
* Work on making the manufacturer view show more options. Need to figure out how to change the table dynamically.
* Cleanup formatting and fix a few weirdities in hardware/view.blade.php
* Standardize on two-space tabs in this file, as it seems the most
* common.
* Fix a few places where we call number_format without guaranteeing the
* item is a number and not a string.
* Show a "No Results" message on components page if there are no
* components.
* Show table of licenses on manufacturer view page.
This reworks the ManufacturersController::getDataView method to delegate
the view to a sub method (currently assets or licenses, but plan to
extend to consumables/accessories/components as well). We then put tabs
at the top of the view to show multiple tables. This just duplicates
the table layout from licenses/index.blade, but I wonder if theres a way
to centralize that code, maybe through partials, over time..
The only known missing part of manufacturers for licenses would be adding it
to the importer, but the license importer should probably migrate to
object importer before doing too much more...
* Add manufacturer to accessory.
* Add consumables to the manufacturer view page.
This does two main things:
1) The importer now imports as numbers, not parsed strings. This allows
is to format values on output instead of input, which is what was
happening in most places.
2) Add a Helper::parseCurrencyString method and port everything to use
this. This checks to see if the value is numeric or empty, and returns
the appropriate value in all cases. Should fix all known occurances of
number_format expections.
* Prevent multiple checkouts of the same asset.
This adds a new method to the Asset model, availableForCheckout.
Port getDataTable to use availableForCheckout instead of doing the
check manually.
Fixes Issue #2347
* Use availableForCheckout in categories controller. Also gate the checkin/checkout actions here.
* Use gate and availableForCheckout in manufactuers as well.
The importer already formatted/parsed numbers on input into the db
(maybe it shouldn't have?) so running number_format on that string
throws an exception. Check to make sure the value is numeric before
formatting it.
* components.view should point to view, not create
* Fix comment
* Rename variable to accurately reflect its responsibility
* Fix line breaks in serial key, remove places where adding line breaks makes no sense. Fixes#2344
* If a user doesn't belong to a company, when scoping to a company we should only show items that don't belong to a company.
* Scope tables/items to the company they belong to when fetching items for the index.
* Fix asset count to also scope to company. This fixes dashboard view
* Exempt super users from the child company check to be consistent. Fixes license count on dashboard now that we scope everything
LDAP no longer fails completely when the connection settings are wrong, or when app key is messed up. Rather than auth as the admin user and search, we auth as the user themselves. Admin auth is only for LDAP sync now.
This should mean much fewer problems with donked LDAP settings and login.
* Fix adding an image to an asset when public/uploads/assets does not exist.
First check to see if we can create directory and do so. If any errors occur, display the error string as an error on the page.
* Add the public/uploads/assets directory to new installs.
* Add some comments explaining this code so I remember what it does next time.
This is a little janky, as it breaks up the errors into multiple screens if you don't have a status label type AND don't have a name. This is because the model-level validation won't work since we transmogrify that dropdown list of status label types into boolean values for the DB. Should eventually find a less clunky way to handle this, but needed to get a fix in now.
* Add model number column to the hardware list and allow searching based on model number. Column is hidden by default.
* Fix sorting. Add scope to order by model number.
If the requestable checkbox was not checked, it did not exist in the request.
Setting requestable to null in such a case would cause a violation because it should be 0/1.
Also fix a copy/paste where we reset requestable after checking for rtd_location_id.
1) Missing $admin_user in AccessoriesController::postCheckout(). Fixes#2183
2) AssetsController::postCheckin used the hardware url for the user link, not the user url
Reintroducing trusted proxies via fideloper/proxy:
* Upgraded fideloper/proxy to 3.1
* Added fideloper/proxy to Http/Kernel.php
* Added fideloper/proxy to config/app.php
* Added environment variable APP_TRUSTED_PROXIES to env (with '*' being the default fallback)