|
Server : Apache/2.4.41 (Ubuntu) System : Linux vmi1525618.contaboserver.net 5.4.0-105-generic #119-Ubuntu SMP Mon Mar 7 18:49:24 UTC 2022 x86_64 User : www-data ( 33) PHP Version : 8.2.12 Disable Function : NONE Directory : /var/www/erp.theinteractive.co.in/resources/views/project_task/ |
Upload File : |
<div class="modal-body task-id" id="{{$task->id}}">
<div class="card">
<div class="card-body">
<h5> {{__('Task Detail')}}</h5>
<div class="row mt-4">
<div class="col-md-4 col-sm-6">
<div class="d-flex align-items-start">
<div class="ms-2">
<p class="text-muted text-sm mb-0">{{__('Estimated Hours')}}</p>
<h3 class="mb-0 text-success">{{ (!empty($task->estimated_hrs)) ? number_format($task->estimated_hrs) : '-' }}</h3>
</div>
</div>
</div>
<div class="col-md-4 col-sm-6 my-3 my-sm-0">
<div class="d-flex align-items-start">
<div class="ms-2">
<p class="text-muted text-sm mb-0">{{__('Milestone')}}</p>
<h3 class="mb-0 text-primary">{{ (!empty($task->milestone)) ? $task->milestone->title : '-' }}</h3>
</div>
</div>
</div>
@if($allow_progress == 'false')
<div class="col-md-4 col-sm-6">
<div class="d-flex align-items-start">
<div class="ms-2">
<p class="text-muted text-sm mb-0"> {{__('Task Progress')}}</p>
<h3 class="mb-0 text-danger"><b id="t_percentage">{{ $task->progress }}</b>%</h3>
<div class="progress mb-0">
<div id="progress-result" class="tab-pane tab-example-result fade show active" role="tabpanel" aria-labelledby="progress-result-tab">
<input type="range" class="task_progress custom-range" value="{{ $task->progress }}" id="task_progress" name="progress" data-url="{{ route('change.progress',[$task->project_id,$task->id]) }}">
</div>
</div>
</div>
</div>
</div>
@endif
</div>
<div class="row mt-4">
<div class="col">
<p class="text-sm text-muted mb-2">{{ (!empty($task->description)) ? $task->description : '-' }}</p>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row mb-4 align-items-center">
<div class="col-6">
<h5> {{__('Checklist')}}</h5>
</div>
<div class="col-6 ">
<div class="float-end">
<a data-bs-toggle="collapse" href="#form-checklist" role="button" aria-expanded="false" aria-controls="form-checklist" data-bs-toggle="tooltip" title="{{__('Add item')}}" class="btn btn-sm btn-primary">
<i class="ti ti-plus"></i>
</a>
</div>
</div>
</div>
<div class="checklist" id="checklist">
<form id="form-checklist" class="collapse pb-2" data-action="{{route('checklist.store',[$task->project_id,$task->id])}}">
<div class="card border shadow-none">
<div class="px-3 py-2 row align-items-center">
@csrf
<div class="col-10">
<input type="text" name="name" required class="form-control" placeholder="{{__('Checklist Name')}}"/>
</div>
<div class="col-2 card-meta d-inline-flex align-items-center">
<button class="btn btn-sm btn-primary" type="button" id="checklist_submit" data-bs-toggle="tooltip" title="{{__('Create')}}">
<i class="ti ti-check"></i>
</button>
</div>
</div>
</div>
</form>
@foreach($task->checklist as $checklist)
<div class="card border shadow-none checklist-member">
<div class="px-3 py-2 row align-items-center">
<div class="col">
<div class="form-check form-check-inline">
<input type="checkbox" class="form-check-input" id="check-item-{{ $checklist->id }}" @if($checklist->status) checked @endif data-url="{{route('checklist.update',[$task->project_id,$checklist->id])}}">
<label class="form-check-label h6 text-sm" for="check-item-{{ $checklist->id }}">{{ $checklist->name }}</label>
</div>
</div>
<div class="col-auto">
<div class="action-btn bg-danger ms-2">
<a href="#" class="mx-3 btn btn-sm align-items-center delete-checklist" data-url="{{ route('checklist.destroy',[$task->project_id,$checklist->id]) }}">
<i data-bs-toggle="tooltip" title="{{__('Delete')}}" class="ti ti-trash text-white"></i>
</a>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row mb-4 align-items-center">
<div class="col-6">
<h5>{{__('Attachments')}}</h5>
</div>
<div class="col-6 ">
<div class="float-end">
<a data-bs-toggle="collapse" href="#add_file" role="button" aria-expanded="false" aria-controls="add_file" data-bs-toggle="tooltip" title="{{__('Add attachment')}}" class="btn btn-sm btn-primary">
<i class="ti ti-plus"></i>
</a>
</div>
</div>
</div>
<div class="attachments" id="attachments">
<form id="add_file" class="collapse pb-2">
<div class="card border shadow-none">
<div class="px-3 py-2 row align-items-center">
@csrf
<div class="col-10">
<input type="file" name="task_attachment" id="task_attachment" onchange="document.getElementById('blah').src = window.URL.createObjectURL(this.files[0])" required class="form-control"/>
</div>
<div class="col-2 card-meta d-inline-flex align-items-center">
<button class="btn btn-sm btn-primary" type="button" id="file_attachment_submit"
data-action="{{ route('comment.store.file',[$task->project_id,$task->id]) }}" data-bs-toggle="tooltip" title="{{__('Create')}}">
<i class="ti ti-check"></i>
</button>
</div>
<img id="blah" src="" class="img_preview" />
</div>
</div>
</form>
<div id="comments-file">
@foreach($task->taskFiles as $file)
<div class="card mb-3 border shadow-none task-file">
<div class="px-3 py-3">
<div class="row align-items-center">
<div class="col ml-n2">
<h6 class="text-sm mb-0">
<a href="#">{{ $file->name }}</a>
</h6>
<p class="card-text small text-muted">{{ $file->file_size }}</p>
</div>
<div class="col-auto actions">
<div class="action-btn bg-secondary ms-2">
<a href="{{asset(Storage::url('tasks/'.$file->file))}}" download class="mx-3 btn btn-sm align-items-center" role="button">
<i class="ti ti-download text-white"></i>
</a>
</div>
@auth('web')
<div class="action-btn bg-danger ms-2">
<a href="#" class="mx-3 btn btn-sm align-items-center delete-comment-file" data-url="{{ route('comment.destroy.file',[$task->project_id,$task->id,$file->id]) }}">
<i data-bs-toggle="tooltip" title="{{__('Delete')}}" class="ti ti-trash text-white"></i>
</a>
</div>
@endauth
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row mb-4 align-items-center">
<div class="col-6">
<h5> {{__('Activity')}}</h5>
</div>
</div>
<div class="activity" id="activity">
@foreach($task->activity_log() as $activity)
@php $user = \App\Models\User::find($activity->user_id); @endphp
<div class="list-group-item px-0">
<div class="row align-items-center">
<div class="col-auto">
<a href="#" class="avatar avatar-sm ms-2">
<img data-toggle="tooltip" data-original-title="{{(!empty($user)?$user->name:'')}}" @if($user->avatar) src="{{asset('/storage/uploads/avatar/'.$user->avatar)}}" @else src="{{asset('/storage/uploads/avatar/avatar.png')}}" @endif title="{{ $user->name }}" class="wid-40 rounded-circle ml-3">
</a>
</div>
<div class="col ml-n2">
<span class="text-dark text-sm">{{ __($activity->log_type) }}</span>
<a class="d-block h6 text-sm font-weight-light mb-0">{!! $activity->getRemark() !!}</a>
<small class="d-block">{{$activity->created_at->diffForHumans()}}</small>
</div>
</div>
</div>
@endforeach
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="row ">
<div class="col-6">
<h5 class="mb-3">{{__('Comments')}}</h5>
</div>
@php
$plan= \App\Models\Utility::getChatGPTSettings();
@endphp
@if($plan->chatgpt == 1)
<div class="col-6 text-end">
<a href="#" data-size="md" class="btn btn-primary btn-icon btn-sm mb-3 me-2" data-ajax-popup-over="true" id="grammarCheck" data-url="{{ route('grammar',['grammar']) }}"
data-bs-placement="top" data-title="{{ __('Grammar check with AI') }}">
<i class="ti ti-rotate"></i> <span>{{__('Grammar check with AI')}}</span>
</a>
</div>
@endif
</div>
@if(empty($task->comments))
<hr></hr>
@endif
<div class="activity" id="comments">
@foreach($task->comments as $comment)
@php $user = \App\Models\User::find($comment->user_id); @endphp
<div class="list-group-item px-0 mb-1">
<div class="row align-items-center">
<div class="col-auto">
<a href="#" class="avatar avatar-sm rounded-circle ms-2">
<img data-original-title="{{(!empty($user)?$user->name:'')}}" @if($user->avatar) src="{{asset('/storage/uploads/avatar/'.$user->avatar)}}" @else src="{{asset('/storage/uploads/avatar/avatar.png')}}" @endif title="{{ $comment->user->name }}" class="wid-40 rounded-circle ml-3">
</a>
</div>
<div class="col ml-n2">
<p class="d-block h6 text-sm font-weight-light mb-0 text-break">{{ $comment->comment }}</p>
<small class="d-block">{{$comment->created_at->diffForHumans()}}</small>
</div>
<div class="col-auto">
<div class="action-btn bg-danger me-2">
<a href="#" class="mx-3 btn btn-sm align-items-center delete-comment" data-url="{{ route('comment.destroy',[$task->project_id,$task->id,$comment->id]) }}">
<i data-bs-toggle="tooltip" title="{{__('Delete')}}" class="ti ti-trash text-white"></i>
</a>
</div>
</div>
</div>
</div>
@endforeach
</div>
</div>
<div class="card-footer">
<div class="col-12 d-flex">
<div class="avatar me-3">
<img data-original-title="{{(!empty(\Auth::user()) ? \Auth::user()->name:'')}}" @if(\Auth::user()->avatar) src="{{asset('/storage/uploads/avatar/'.\Auth::user()->avatar)}}" @else src="{{asset('/storage/uploads/avatar/avatar.png')}}" @endif title="{{ Auth::user()->name }}" class="wid-40 rounded-circle ml-3">
</div>
<div class="form-group mb-0 form-send w-100">
<form method="post" class="card-comment-box" id="form-comment" data-action="{{route('task.comment.store',[$task->project_id,$task->id])}}">
<textarea rows="1" class="form-control grammer_textarea" name="comment" data-toggle="autosize" placeholder="{{__('Add a comment...')}}"></textarea>
</form>
</div>
<button id="comment_submit" class="btn btn-send"><i class="text-primary ti ti-brand-telegram"></i></button>
</div>
</div>
</div>
</div>
@push('script-page')
<script>
$(document).ready(function () {
$(".colorPickSelector").colorPick({
'onColorSelected': function () {
var task_id = this.element.parents('.side-modal').attr('id');
var color = this.color;
if (task_id) {
this.element.css({'backgroundColor': color});
$.ajax({
url: '{{ route('update.task.priority.color') }}',
method: 'PATCH',
data: {
'task_id': task_id,
'color': color,
},
success: function (data) {
$('.task-list-items').find('#' + task_id).attr('style', 'border-left:2px solid ' + color + ' !important');
}
});
}
}
});
});
</script>
@endpush