문의하기: 연락처/지역/첨부파일 추가

master
barunsoft 2 years ago
parent 6a541f0410
commit 9eac62d0ea

@ -257,7 +257,7 @@ trait TraitBoard
$postData = $request->only([
'board_id', 'category', 'notice',
'name', 'email', 'phone',
'name', 'email', 'phone', 'zone',
'subject', 'content', 'related_link'
]);
$postData = array_map('setDefault', $postData);

@ -16,7 +16,7 @@ class BoardArticle extends BaseSoftDeleteModel
protected $fillable = [
'board_id', 'uid',
'notice', 'image', 'category',
'name', 'email', 'phone',
'name', 'email', 'phone', 'zone',
'subject', 'content', 'related_link',
'view_count',
'created_id', 'created_at'
@ -33,7 +33,7 @@ class BoardArticle extends BaseSoftDeleteModel
protected $visible = [
'id', 'board_id', 'uid',
'notice', 'image', 'category',
'name', 'email', 'phone',
'name', 'email', 'phone', 'zone',
'subject', 'content', 'related_link',
'view_count',
'created_id', 'created_at',

@ -87,7 +87,7 @@ class DiskFileService implements FileInterface
$data['size'] = $file->getSize();
$data['ext'] = strtolower($file->getClientOriginalExtension());
$data['count'] = 0;
$data['created_id'] = $user->id;
$data['created_id'] = $user ? $user->id : null;
if ($file->move($destinationPath, $save_name)) {
if (in_array($data['type'], $allowedImageMimeTypes)) {

@ -25,6 +25,7 @@ class CreateBoardArticleTable extends Migration
$table->string('phone', 100)->default('')->comment('연락처');
$table->string('subject', 255)->default('')->comment('제목');
$table->text('content')->nullable()->comment('내용');
$table->string('related_link', 255)->comment('관련링크');
$table->integer('view_count')->default(0)->comment('조희수');
$table->unsignedInteger('created_id')->nullable()->comment('등록 회원번호');
$table->unsignedInteger('updated_id')->nullable()->comment('수정 회원번호');

@ -292,7 +292,7 @@ textarea.required {
font-weight: 500;
}
.form-check-list.disable {
.form-group-box.disable {
background-color: #f3f3f3;
}
.form-check-list input[type="checkbox"],
@ -666,3 +666,25 @@ textarea.required {
top: 0.3rem;
right: 0.3rem;
}
.upload-file {
display: block;
width: 100%;
padding: 0.7rem 0.875rem;
background-color: #e9ecef;
background-clip: padding-box;
border: 1px solid #e9ecef;
border-radius: 4px;
}
.file-item-box {
background-color: #e9ecef;
}
.file-item-box a {
color: #495057;
}
.file-item-box a:hover {
color: #f30;
}

@ -15,6 +15,19 @@
font-size: 1.1rem;
}
.hand {
cursor: pointer;
}
.file-add {
position: absolute;
top: 2px;
right: 13px;
}
.file-add i {
font-size: 1.4rem;
}
.g-main figure .g-img,
.g-main figure .img-wrapper img {
-webkit-backface-visibility: hidden;

@ -5,27 +5,51 @@ $(document).ready(function() {
$(this).remove();
});
$('#writeForm').submit(function () {
$('#writeForm').submit(function (e) {
if (!$("#name").checkEmpty('이름 또는 업체명을 입력해 주세요.')) return false;
if (!$("#email").checkEmpty('이메일 주소를 입력해 주세요.')) return false;
if (!$("#subject").checkEmpty('제목을을 입력해 주세요.')) return false;
if (!$("#phone").checkEmpty('연락처를 입력해 주세요.')) return false;
if (!$("#zone").checkEmpty('지역을 입력해 주세요.')) return false;
if (!$("#subject").checkEmpty('제목을 입력해 주세요.')) return false;
if (!$("#content").checkEmpty('문의내용을 입력해 주세요.')) return false;
$.post($(this).attr('action'), $(this).serialize(), function(result) {
if (result.code == 'success') {
alert('등록되었습니다.');
window.location.reload();
} else {
alert(result.message);
var formData = new FormData(this);
$.ajax({
url : $(this).attr('action'),
type : 'POST',
data : formData,
enctype : 'multipart/form-data',
processData : false,
contentType : false,
dataType : 'json',
cache : false,
async : false,
success: function(result) {
if (result.code == 'success') {
alert('등록되었습니다.');
window.location.reload();
} else {
alert(result.message);
}
},
error: function(result) {
console.log(result);
alert('문의 등록에 실패했습니다!!\n잠시 후 다시 시도해 주세요.');
}
}).fail(function(result) {
console.log(result);
alert('문의 등록에 실패했습니다!!\n잠시 후 다시 시도해 주세요.');
});
return false;
});
$('#file-add').on('click', function() {
$(this).parent().append(
'<div class="custom-file mb-2">'+
'<input type="file" name="files[]" class="form-control rounded-0 hand">'+
'</div>'
);
});
var currentPage = 1;
function getGalleryData(uid) {

@ -49,9 +49,9 @@
<li class="old-file" data-uid="{{ $asset->uid }}" data-size="{{ $asset->asset->size }}">
<i class="fas fa-trash" title="삭제"></i>
@if($asset->asset->width && $asset->asset->height)
<a href="{{ route('download', [$asset->uid], false) }}" class="file-item" data-fancybox="gallery">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
<a href="{{ route('image', [$asset->uid], false) }}" class="file-item" data-fancybox="gallery">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
@else
<a href="{{ route('image', [$asset->uid], false) }}" class="file-item">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
<a href="{{ route('download', [$asset->uid], false) }}" class="file-item">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
@endif
</li>
@endforeach

@ -49,9 +49,9 @@
<li class="old-file" data-uid="{{ $asset->uid }}" data-size="{{ $asset->asset->size }}">
<i class="fas fa-trash" title="삭제"></i>
@if($asset->asset->width && $asset->asset->height)
<a href="{{ route('download', [$asset->uid], false) }}" class="file-item" data-fancybox="gallery">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
<a href="{{ route('image', [$asset->uid], false) }}" class="file-item" data-fancybox="gallery">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
@else
<a href="{{ route('image', [$asset->uid], false) }}" class="file-item">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
<a href="{{ route('download', [$asset->uid], false) }}" class="file-item">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
@endif
</li>
@endforeach

@ -18,6 +18,14 @@
<label for="email">이메일</label>
<input type="text" class="form-control" name="email" id="email" required value="{{ $data->email }}" />
</div>
<div class="form-group">
<label for="phone">연락처</label>
<input type="text" class="form-control" name="phone" id="phone" required value="{{ $data->phone }}" />
</div>
<div class="form-group">
<label for="zone">지역</label>
<input type="text" class="form-control" name="zone" id="zone" required value="{{ $data->zone }}" />
</div>
<div class="form-group">
<label for="subject">제목</label>
<input type="text" class="form-control" name="subject" id="subject" required value="{{ $data->subject }}" />
@ -30,6 +38,16 @@
<label for="created_at">문의일시</label>
<input type="text" class="form-control" id="created_at" disabled="disabled" value="{{ $data->created_at }}" />
</div>
@if($data->assets)
<div class="form-group">
<label for="input-file" class="form-label mb-2">첨부파일</label>
@foreach ($data->assets as $i => $asset)
<div class="form-control file-item-box mb-2">
<a href="{{ route('download', [$asset->uid], false) }}">{{ $asset->asset->orgin_name }} ({{ human_filesize($asset->asset->size) }})</a>
</div>
@endforeach
</div>
@endif
</div>
<div class="card-footer">
<div class="row justify-content-between">

@ -9,7 +9,7 @@
<div class="inquiry-form">
<div class="row">
<div class="col-12 col-md-6 mx-auto">
<form id="writeForm" method="post" accept-charset="utf-8" action="{{ route('board.store', null, false) }}" onsubmit="return false;">
<form id="writeForm" method="post" accept-charset="utf-8" enctype="multipart/form-data" action="{{ route('board.store', null, false) }}" onsubmit="return false;">
<input type="hidden" name="_token" value="{{ csrf_token() }}" />
<input type="hidden" name="mode" value="add" />
<input type="hidden" name="code" value="inquiry" />
@ -18,21 +18,37 @@
<input type="hidden" name="category" value="" />
<div class="row">
<div class="col-12">
<label for="name" class="form-label mb-3">이름 또는 업체명 *</label>
<label for="name" class="form-label mb-2">이름 또는 업체명 *</label>
<input type="text" class="k-input" name="name" id="name" value="" required />
</div>
<div class="col-12">
<label for="email" class="form-label mb-3">이메일 주소 *</label>
<label for="email" class="form-label mb-2">이메일 주소 *</label>
<input type="text" class="k-input" name="email" id="email" value="" required />
</div>
<div class="col-12">
<label for="subject" class="form-label mb-3">제목 *</label>
<label for="phone" class="form-label mb-2">연락처 *</label>
<input type="text" class="k-input number" name="phone" id="phone" value="" placeholder="숫자만 입력해 주세요." required />
</div>
<div class="col-12">
<label for="zone" class="form-label mb-2">지역 *</label>
<input type="text" class="k-input" name="zone" id="zone" value="" required />
</div>
<div class="col-12">
<label for="subject" class="form-label mb-2">제목 *</label>
<input type="text" class="k-input" name="subject" id="subject" value="" required />
</div>
<div class="col-12">
<label for="content" class="form-label mb-2">내용 * </label>
<textarea name="content" id="content" rows="8" class="k-input k-text-area autosize" required></textarea>
</div>
<div id="file-list" class="col-12 mb-3 position-relative">
<label for="input-file" class="form-label mb-2">첨부파일</label>
<a href="javascript:;" id="file-add" class="file-add"><i class="fas fa-circle-plus"></i></a>
<div class="custom-file mb-2">
<input type="file" name="files[]" class="form-control rounded-0 hand">
</div>
</div>
</div>
<label for="content" class="form-label mb-3">내용 * </label>
<textarea name="content" id="content" rows="8" class="k-input k-text-area autosize" required></textarea>
<div class="text-center inquery-submit">
<button type="submit" class="black-submit-button">등록하기</button>
</div>

Loading…
Cancel
Save