mirror of
https://github.com/snipe/snipe-it.git
synced 2025-03-05 20:52:15 -08:00
redoing branch. old branch merge onflicts were waaay too gnarly
This commit is contained in:
parent
fe5fc6e0ce
commit
74efd850af
28
app/Events/NoteAdded.php
Normal file
28
app/Events/NoteAdded.php
Normal file
|
@ -0,0 +1,28 @@
|
|||
<?php
|
||||
|
||||
namespace App\Events;
|
||||
|
||||
use App\Models\User;
|
||||
use Illuminate\Foundation\Events\Dispatchable;
|
||||
use Illuminate\Queue\SerializesModels;
|
||||
|
||||
class NoteAdded
|
||||
{
|
||||
use Dispatchable, SerializesModels;
|
||||
public $itemNoteAddedOn;
|
||||
public $note;
|
||||
public $noteAddedBy;
|
||||
|
||||
|
||||
/**
|
||||
* Create a new event instance.
|
||||
*
|
||||
* @return void
|
||||
*/
|
||||
public function __construct($itemNoteAddedOn, User $noteAddedBy, $note)
|
||||
{
|
||||
$this->itemNoteAddedOn = $itemNoteAddedOn;
|
||||
$this->note = $note;
|
||||
$this->noteAddedBy = $noteAddedBy;
|
||||
}
|
||||
}
|
26
app/Http/Controllers/Api/NotesController.php
Normal file
26
app/Http/Controllers/Api/NotesController.php
Normal file
|
@ -0,0 +1,26 @@
|
|||
<?php
|
||||
|
||||
namespace App\Http\Controllers\Api;
|
||||
|
||||
use App\Events\NoteAdded;
|
||||
use App\Helpers\Helper;
|
||||
use App\Http\Controllers\Controller;
|
||||
use App\Models\Asset;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class NotesController extends Controller
|
||||
{
|
||||
public function store(Request $request)
|
||||
{
|
||||
$item = Asset::findOrFail($request->input("id"));
|
||||
$this->authorize('update', $item);
|
||||
|
||||
$validated = $request->validate([
|
||||
'note' => 'required|string|max:500']);
|
||||
|
||||
event(new NoteAdded($item, Auth::user(), $validated['note']));
|
||||
|
||||
return response()->json(Helper::formatStandardApiResponse('success'));
|
||||
}
|
||||
}
|
|
@ -32,7 +32,8 @@ class ModalController extends Controller
|
|||
'statuslabel',
|
||||
'supplier',
|
||||
'upload-file',
|
||||
'user',
|
||||
'user',
|
||||
'add-note',
|
||||
];
|
||||
|
||||
|
||||
|
|
|
@ -17,6 +17,7 @@ use App\Events\ItemAccepted;
|
|||
use App\Events\ItemDeclined;
|
||||
use App\Events\LicenseCheckedIn;
|
||||
use App\Events\LicenseCheckedOut;
|
||||
use App\Events\NoteAdded;
|
||||
use App\Models\Actionlog;
|
||||
use App\Models\User;
|
||||
use App\Models\LicenseSeat;
|
||||
|
@ -128,6 +129,23 @@ class LogListener
|
|||
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Note is added to action log
|
||||
*
|
||||
*/
|
||||
public function onNoteAdded(NoteAdded $event)
|
||||
{
|
||||
$logaction = new Actionlog();
|
||||
$logaction->item_id = $event->itemNoteAddedOn->id;
|
||||
$logaction->item_type = get_class($event->itemNoteAddedOn);
|
||||
$logaction->note = $event->note; //this is the received alphanumeric text from the box
|
||||
$logaction->user_id = $event->noteAddedBy->id;
|
||||
$logaction->action_type = 'note_added';
|
||||
$logaction->save();
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Register the listeners for the subscriber.
|
||||
*
|
||||
|
@ -141,6 +159,7 @@ class LogListener
|
|||
'CheckoutAccepted',
|
||||
'CheckoutDeclined',
|
||||
'UserMerged',
|
||||
'NoteAdded',
|
||||
];
|
||||
|
||||
foreach ($list as $event) {
|
||||
|
|
17
app/Models/Note.php
Normal file
17
app/Models/Note.php
Normal file
|
@ -0,0 +1,17 @@
|
|||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
use Illuminate\Database\Eloquent\Relations\MorphTo;
|
||||
|
||||
class Note extends Model
|
||||
{
|
||||
/**
|
||||
* Get the parent item of a comment
|
||||
*/
|
||||
public function commentable(): MorphTo
|
||||
{
|
||||
return $this->morphTo();
|
||||
}
|
||||
}
|
|
@ -28,7 +28,7 @@ $(function () {
|
|||
|
||||
var baseUrl = $('meta[name="baseUrl"]').attr('content');
|
||||
//handle modal-add-interstitial calls
|
||||
var model, select, refreshSelector;
|
||||
var model, select, refreshSelector, hasnopayload;
|
||||
|
||||
if($('#createModal').length == 0) {
|
||||
$('body').append('<div class="modal fade" id="createModal"></div><!-- /.modal -->');
|
||||
|
@ -122,11 +122,13 @@ $(function () {
|
|||
$('#modal_error_msg').html(error_message).show();
|
||||
return false;
|
||||
}
|
||||
var id = result.payload.id;
|
||||
var name = result.payload.name || (result.payload.first_name + " " + result.payload.last_name);
|
||||
if(!id || !name) {
|
||||
console.error("Could not find resulting name or ID from modal-create. Name: "+name+", id: "+id);
|
||||
return false;
|
||||
if(!hasnopayload) {
|
||||
var id = result.payload.id;
|
||||
var name = result.payload.name || (result.payload.first_name + " " + result.payload.last_name);
|
||||
if (!id || !name) {
|
||||
console.error("Could not find resulting name or ID from modal-create. Name: " + name + ", id: " + id);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
$('#createModal').modal('hide');
|
||||
$('#createModal').html("");
|
||||
|
|
|
@ -215,6 +215,8 @@ return [
|
|||
'no_results' => 'No Results.',
|
||||
'no' => 'No',
|
||||
'notes' => 'Notes',
|
||||
'note_added' => 'Note Added',
|
||||
'add_note' => 'Add Note',
|
||||
'order_number' => 'Order Number',
|
||||
'only_deleted' => 'Only Deleted Assets',
|
||||
'page_menu' => 'Showing _MENU_ items',
|
||||
|
|
29
resources/views/modals/add-note.blade.php
Normal file
29
resources/views/modals/add-note.blade.php
Normal file
|
@ -0,0 +1,29 @@
|
|||
{{-- See snipeit_modals.js for what powers this --}}
|
||||
<div class="modal-dialog">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<button type="button" class="close" data-dismiss="modal" aria-label="Close"><span aria-hidden="true">×</span></button>
|
||||
<h2 class="modal-title">{{ trans('general.add_note') }}</h2>
|
||||
</div>
|
||||
|
||||
<div class="modal-body">
|
||||
<form action="{{ route('api.notes.store') }}" onsubmit="return false">
|
||||
<input type="hidden" name="type" value="{{request("type")}}"/>
|
||||
<input type="hidden" name="id" value="{{request("id")}}"/>
|
||||
<div class="alert alert-danger" id="modal_error_msg" style="display:none"></div>
|
||||
|
||||
<div class="row">
|
||||
{{ Form::label('note', trans('general.add_note'), array('class' => 'col-md-3 control-label')) }}
|
||||
<div class="col-md-8">
|
||||
<textarea class="form-control" id="note" name="note">{{ old('note') }}</textarea>
|
||||
{!! $errors->first('note', '<span class="alert-msg" aria-hidden="true"><i class="fas fa-times" aria-hidden="true"></i> :message</span>') !!}
|
||||
</div>
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<div class="modal-footer">
|
||||
<button type="button" class="btn btn-default" data-dismiss="modal">{{ trans('button.cancel') }}</button>
|
||||
<button type="button" class="btn btn-primary" id="modal-save">{{ trans('general.save') }}</button>
|
||||
</div>
|
||||
</div><!-- /.modal-content -->
|
||||
</div><!-- /.modal-dialog -->
|
|
@ -1269,6 +1269,22 @@ Route::group(['prefix' => 'v1', 'middleware' => ['api', 'throttle:api']], functi
|
|||
}); // end reports api routes
|
||||
|
||||
/**
|
||||
* Notes API routes
|
||||
*/
|
||||
|
||||
Route::group(['prefix' => 'notes'], function () {
|
||||
|
||||
Route::post(
|
||||
'/',
|
||||
[ Api\NotesController::class,
|
||||
'store'
|
||||
]
|
||||
)->name('api.notes.store');
|
||||
}); // end notes api routes
|
||||
|
||||
|
||||
|
||||
/**
|
||||
* Version API routes
|
||||
*/
|
||||
|
||||
|
|
Loading…
Reference in a new issue