192 lines
9.8 KiB
PHP
192 lines
9.8 KiB
PHP
@extends('layouts.app')
|
|
@section('title', __('professionalproject::lang.edit_task'))
|
|
|
|
@section('content')
|
|
@include('professionalproject::layouts.nav')
|
|
<section class="content-header"><h1>@lang('professionalproject::lang.edit_task')</h1></section>
|
|
<section class="content">
|
|
{!! Form::open(['url' => action([\Modules\ProfessionalProject\Http\Controllers\TaskController::class, 'update'], $task->id), 'method' => 'put']) !!}
|
|
<div class="box box-solid">
|
|
<div class="box-body">
|
|
<div class="row">
|
|
<div class="col-md-8">
|
|
<div class="form-group">
|
|
{!! Form::label('title', __('messages.name') . ':*') !!}
|
|
{!! Form::text('title', $task->title, ['class' => 'form-control', 'required']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('project_id', __('professionalproject::lang.projects') . ':*') !!}
|
|
{!! Form::select('project_id', $projects, $task->project_id, ['class' => 'form-control select2', 'required']) !!}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="form-group">
|
|
{!! Form::label('description', __('lang_v1.description') . ':') !!}
|
|
{!! Form::textarea('description', $task->description, ['class' => 'form-control', 'rows' => 3]) !!}
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-3">
|
|
<div class="form-group">
|
|
{!! Form::label('status_id', __('sale.status') . ':') !!}
|
|
{!! Form::select('status_id', $statuses, $task->status_id, ['class' => 'form-control select2']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="form-group">
|
|
{!! Form::label('priority', __('sale.priority') . ':') !!}
|
|
{!! Form::select('priority', $priorities, $task->priority, ['class' => 'form-control select2']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="form-group">
|
|
{!! Form::label('milestone_id', __('professionalproject::lang.milestone') . ':') !!}
|
|
{!! Form::select('milestone_id', $milestones, $task->milestone_id, ['class' => 'form-control select2']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-3">
|
|
<div class="form-group">
|
|
{!! Form::label('progress', __('professionalproject::lang.progress') . ':') !!}
|
|
{!! Form::number('progress', $task->progress, ['class' => 'form-control', 'min' => 0, 'max' => 100]) !!}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('start_date', __('business.start_date') . ':') !!}
|
|
{!! Form::text('start_date', $task->start_date ? format_date($task->start_date) : null, ['class' => 'form-control datepicker', 'readonly']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('due_date', __('professionalproject::lang.end_date') . ':') !!}
|
|
{!! Form::text('due_date', $task->due_date ? format_date($task->due_date) : null, ['class' => 'form-control datepicker', 'readonly']) !!}
|
|
</div>
|
|
</div>
|
|
<div class="col-md-4">
|
|
<div class="form-group">
|
|
{!! Form::label('user_id', __('professionalproject::lang.assigned_to') . ':') !!}
|
|
{!! Form::select('user_id[]', $users, $task->assignees->pluck('id'), ['class' => 'form-control select2', 'multiple']) !!}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="box-footer">
|
|
<button type="submit" class="btn btn-primary">@lang('messages.update')</button>
|
|
<a href="{{ action([\Modules\ProfessionalProject\Http\Controllers\TaskController::class, 'index']) }}" class="btn btn-default">@lang('messages.cancel')</a>
|
|
</div>
|
|
</div>
|
|
{!! Form::close() !!}
|
|
|
|
<div class="box box-solid">
|
|
<div class="box-header"><h3 class="box-title">@lang('professionalproject::lang.dependencies')</h3></div>
|
|
<div class="box-body">
|
|
<table class="table table-bordered">
|
|
<thead><tr><th>@lang('professionalproject::lang.blocker_task')</th><th>@lang('professionalproject::lang.dependency_type')</th><th></th></tr></thead>
|
|
<tbody>
|
|
@foreach($dependencies as $dep)
|
|
<tr>
|
|
<td>{{ $dep->blocker->title ?? '' }}</td>
|
|
<td>{{ $dep->dependency_type }}</td>
|
|
<td><button class="btn btn-xs btn-danger delete_dep" data-id="{{ $dep->id }}"><i class="fa fa-trash"></i></button></td>
|
|
</tr>
|
|
@endforeach
|
|
</tbody>
|
|
</table>
|
|
{!! Form::open(['id' => 'add_dependency_form']) !!}
|
|
<div class="row">
|
|
<div class="col-md-4">
|
|
{!! Form::select('blocker_task_id', $project_tasks, null, ['class' => 'form-control select2', 'placeholder' => __('messages.please_select')]) !!}
|
|
</div>
|
|
<div class="col-md-3">
|
|
{!! Form::select('dependency_type', ['cannot_start' => __('professionalproject::lang.cannot_start'), 'cannot_complete' => __('professionalproject::lang.cannot_complete')], 'cannot_start', ['class' => 'form-control']) !!}
|
|
</div>
|
|
<div class="col-md-2">
|
|
<button type="button" class="btn btn-primary" id="add_dep_btn">@lang('professionalproject::lang.add_dependency')</button>
|
|
</div>
|
|
</div>
|
|
{!! Form::close() !!}
|
|
</div>
|
|
</div>
|
|
|
|
<div class="box box-solid">
|
|
<div class="box-header"><h3 class="box-title">@lang('professionalproject::lang.integration_actions')</h3></div>
|
|
<div class="box-body">
|
|
<div class="btn-group">
|
|
@if(\Module::has('Essentials') && \Module::isEnabled('Essentials'))
|
|
<button type="button" class="btn btn-warning" id="pp_create_todo_btn">
|
|
<i class="fa fa-check-square"></i> @lang('professionalproject::lang.create_essentials_todo')
|
|
</button>
|
|
<button type="button" class="btn btn-warning" id="pp_create_reminder_btn">
|
|
<i class="fa fa-bell"></i> @lang('professionalproject::lang.create_essentials_reminder')
|
|
</button>
|
|
@endif
|
|
@if(\Module::has('Crm') && \Module::isEnabled('Crm'))
|
|
<button type="button" class="btn btn-info" id="pp_create_crm_followup_btn">
|
|
<i class="fa fa-address-book"></i> @lang('professionalproject::lang.create_crm_followup')
|
|
</button>
|
|
@endif
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
@endsection
|
|
|
|
@section('javascript')
|
|
@include('professionalproject::partials.shamsi_datepicker')
|
|
<script>
|
|
$(document).ready(function() {
|
|
$('#add_dep_btn').click(function() {
|
|
$.post('{{ action([\Modules\ProfessionalProject\Http\Controllers\TaskController::class, "storeDependency"]) }}', {
|
|
_token: '{{ csrf_token() }}',
|
|
task_id: {{ $task->id }},
|
|
project_id: {{ $task->project_id }},
|
|
blocker_task_id: $('select[name="blocker_task_id"]').val(),
|
|
dependency_type: $('select[name="dependency_type"]').val()
|
|
}, function(r) { if (r.success) location.reload(); else toastr.error(r.msg); });
|
|
});
|
|
$('.delete_dep').click(function() {
|
|
var id = $(this).data('id');
|
|
$.ajax({ method: 'DELETE', url: '/professional-project/tasks/dependency/' + id, data: { _token: '{{ csrf_token() }}' }, success: function(r) {
|
|
if (r.success) location.reload();
|
|
}});
|
|
});
|
|
|
|
$('#pp_create_todo_btn').click(function() {
|
|
$.post('/professional-project/integrations/essentials/todo/{{ $task->id }}', { _token: '{{ csrf_token() }}' }, function(r) {
|
|
if (r.success) {
|
|
toastr.success('@lang('professionalproject::lang.integration_created')');
|
|
if (r.redirect_url) { window.open(r.redirect_url, '_blank'); }
|
|
} else {
|
|
toastr.error(r.msg || '@lang('messages.something_went_wrong')');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#pp_create_reminder_btn').click(function() {
|
|
$.post('/professional-project/integrations/essentials/reminder/{{ $task->id }}', { _token: '{{ csrf_token() }}' }, function(r) {
|
|
if (r.success) {
|
|
toastr.success('@lang('professionalproject::lang.integration_created')');
|
|
if (r.redirect_url) { window.open(r.redirect_url, '_blank'); }
|
|
} else {
|
|
toastr.error(r.msg || '@lang('messages.something_went_wrong')');
|
|
}
|
|
});
|
|
});
|
|
|
|
$('#pp_create_crm_followup_btn').click(function() {
|
|
$.post('/professional-project/integrations/crm/follow-up/{{ $task->id }}', { _token: '{{ csrf_token() }}' }, function(r) {
|
|
if (r.success) {
|
|
toastr.success('@lang('professionalproject::lang.integration_created')');
|
|
if (r.redirect_url) { window.open(r.redirect_url, '_blank'); }
|
|
} else {
|
|
toastr.error(r.msg || '@lang('messages.something_went_wrong')');
|
|
}
|
|
});
|
|
});
|
|
});
|
|
</script>
|
|
@endsection
|