@page "{id:int}"
@model Admin.Pages.Forum.Board.Meta.WriteModel
@using Domain.Entities.Forum.Constants
@{
    ViewData["Title"] = "게시판 관리 - 작성";
    ViewData["Sector"] = "Write";
    ViewData["BoardID"] = Model.BoardID;
    ViewData["BoardList"] = Model.BoardList;
    ViewData["QueryString"] = Model.QueryString;
}

<div class="container">
    <partial name="_Header" />
    <partial name="_StatusMessage" />
    <partial name="_Editor" />
    <partial name="/Pages/Forum/Board/_NavTabs.cshtml" />

    <form name="f_admin_write" id="fAdminWrite" method="post" accept-charset="utf-8" autocomplete="off" enctype="multipart/form-data">
        <input type="hidden" asp-for="Input.ID" />
        <input type="hidden" asp-for="Input.BoardID" />

        <div class="row mb-3">
            <label for="Input_ShowHeader" class="col-sm-2 col-form-label">상단 내용</label>
            <div class="col-md-10">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.ShowHeader" class="form-check-input" />
                    <label for="Input_ShowHeader" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">게시판 상단에 내용을 출력합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label class="col-md-2 col-form-label"></label>
            <div class="col-md-10">
                <textarea asp-for="Input.HeaderContent" class="form-control ck-editor"></textarea>
                <span asp-validation-for="Input.HeaderContent" class="text-danger"></span>
                <small class="text-muted form-text">작성란 상단에 표시될 내용을 입력합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_ShowFooter" class="col-sm-2 col-form-label">하단 내용</label>
            <div class="col-md-10">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.ShowFooter" class="form-check-input" />
                    <label for="Input_ShowFooter" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">게시판 하단에 내용을 출력합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label class="col-md-2 col-form-label"></label>
            <div class="col-md-10">
                <textarea asp-for="Input.FooterContent" class="form-control ck-editor"></textarea>
                <span asp-validation-for="Input.FooterContent" class="text-danger"></span>
                <small class="text-muted form-text">작성란 하단에 표시될 내용을 입력합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_DefaultSubject" class="col-md-2 col-form-label">기본 제목</label>
            <div class="col-md-10">
                <input type="text" asp-for="Input.DefaultSubject" class="form-control" maxlength="@PostConstant.MaxAllowedSubjectLength" />
                <span asp-validation-for="Input.DefaultSubject" class="text-danger"></span>
                <small class="text-muted form-text">글 작성 시 기본으로 표시될 제목입니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_DefaultContent" class="col-md-2 col-form-label">기본 내용</label>
            <div class="col-md-10">
                <textarea asp-for="Input.DefaultContent" class="form-control @(Model.Input.AllowEditor ? "ck-editor" : "")" maxlength="@PostConstant.MaxAllowedContentLength"></textarea>
                <span asp-validation-for="Input.DefaultContent" class="text-danger"></span>
                <small class="text-muted form-text">글 작성 시 기본으로 표시될 내용입니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_AllowEditor" class="col-md-2 col-form-label">웹 에디터 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowEditor" class="form-check-input" />
                    <label asp-for="Input.AllowEditor" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">본문을 웹 기반 에디터로 수정할 수 있도록합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_AllowPrefix" class="col-md-2 col-form-label">말머리 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowPrefix" class="form-check-input" />
                    <label asp-for="Input.AllowPrefix" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">말머리를 사용할 수 있도록 합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_RequiredPrefix" class="col-md-2 col-form-label">말머리 필수 선택</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.RequiredPrefix" class="form-check-input" />
                    <label asp-for="Input.RequiredPrefix" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">말머리를 필수 선택하도록 합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_AllowSecret" class="col-md-2 col-form-label">비밀글 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowSecret" class="form-check-input" />
                    <label asp-for="Input.AllowSecret" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">비밀글 작성 기능을 활성화합니다. 비밀글은 작성자 본인과 게시판 관리자 이상만 열람 가능합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_AllowTag" class="col-md-2 col-form-label">태그 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowTag" class="form-check-input" />
                    <label asp-for="Input.AllowTag" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">태그 기능을 활성화합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_TagLimit" class="col-12 col-lg-2 col-form-label">태그 개수 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <input type="number" asp-for="Input.TagLimit" class="form-control" min="1" max="@PostConstant.MaxAllowedTags" required />
                        <span asp-validation-for="Input.TagLimit" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">태그의 최대 개수를 설정합니다. 최대 @(PostConstant.MaxAllowedTags)개</small>
            </div>
        </div>

        <br />
        <h3>웹 에디터 기능 설정</h3>
        <hr />
        <div class="row mb-3">
            <label for="Input_AllowImage" class="col-md-2 col-form-label">이미지 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowImage" class="form-check-input" />
                    <label asp-for="Input.AllowImage" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">이미지 업로드 기능을 활성화합니다. </small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_ImageUploadLimit" class="col-12 col-lg-2 col-form-label">이미지 개수 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <input type="number" asp-for="Input.ImageUploadLimit" class="form-control" min="1" max="@PostConstant.MaxAllowedImages" required />
                        <span asp-validation-for="Input.ImageUploadLimit" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">첨부 가능한 이미지의 최대 개수를 설정합니다. 최대 @(PostConstant.MaxAllowedImages)개</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_ImageUploadMaxSize" class="col-12 col-lg-2 col-form-label">이미지 용량 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <div class="input-group">
                            <input type="number" asp-for="Input.ImageUploadMaxSize" class="form-control" min="0" required />
                            <span class="input-group-text">KB</span>
                        </div>
                        <span asp-validation-for="Input.ImageUploadMaxSize" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">이미지 하나당 최대 용량을 설정합니다. 최대 @(PostConstant.MaxAllowedImageSize)KB</small>
            </div>
        </div>
        <hr />
        <div class="row mb-3">
            <label for="Input_AllowMedia" class="col-md-2 col-form-label">미디어 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowMedia" class="form-check-input" />
                    <label asp-for="Input.AllowMedia" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">미디어 추가 기능을 활성화합니다. (웹 에디터를 사용해야 가능)</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_MediaUploadLimit" class="col-12 col-lg-2 col-form-label">동영상 개수 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <input type="number" asp-for="Input.MediaUploadLimit" class="form-control" min="1" max="@PostConstant.MaxAllowedMedias" required />
                        <span asp-validation-for="Input.MediaUploadLimit" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">첨부 가능한 동영상의 최대 개수를 설정합니다. 최대 @(PostConstant.MaxAllowedMedias)개</small>
            </div>
        </div>
        <hr />
        <div class="row mb-3">
            <label for="Input_AllowFile" class="col-md-2 col-form-label">파일 사용</label>
            <div class="col-md-10 align-self-center">
                <div class="form-check">
                    <input type="checkbox" asp-for="Input.AllowFile" class="form-check-input" />
                    <label asp-for="Input.AllowFile" class="form-check-label">사용합니다.</label>
                </div>
                <small class="text-muted form-text">파일 추가 기능을 활성화합니다.</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_FileUploadLimit" class="col-12 col-lg-2 col-form-label">파일 개수 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <input type="number" asp-for="Input.FileUploadLimit" class="form-control" min="1" max="@PostConstant.MaxAllowedFiles" required />
                        <span asp-validation-for="Input.FileUploadLimit" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">첨부 가능한 파일의 최대 개수를 설정합니다. 최대 @(PostConstant.MaxAllowedFiles)개</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_FileUploadMaxSize" class="col-12 col-lg-2 col-form-label">파일 용량 제한</label>
            <div class="col-lg-10">
                <div class="row">
                    <div class="col-12 col-lg-auto">
                        <div class="input-group">
                            <input type="number" asp-for="Input.FileUploadMaxSize" class="form-control" min="1" max="@PostConstant.MaxAllowedFileSize" required />
                            <span class="input-group-text">KB</span>
                        </div>
                        <span asp-validation-for="Input.FileUploadMaxSize" class="text-danger"></span>
                    </div>
                </div>
                <small class="text-muted form-text">파일 하나당 최대 용량을 설정합니다. 최대 @(PostConstant.MaxAllowedFileSize)KB</small>
            </div>
        </div>
        <div class="row mb-3">
            <label for="Input_FileUploadExtension" class="col-md-2 col-form-label">파일 허용 확장자</label>
            <div class="col-md-10">
                <input type="text" asp-for="Input.FileUploadExtension" class="form-control" />
                <span asp-validation-for="Input.FileUploadExtension" class="text-danger"></span>
                <small class="form-text text-muted">
                    허용할 파일 확장자를 입력합니다. (예: jpg,png,gif)<br/>
                    HTML5 File 속성 사용, `|` 로 구분하여 입력, 입력하지 않으면 확장자 제한없이 첨부 가능
                    <br/><a href="//www.w3schools.com/tags/att_input_accept.asp" target="_blank">[FILE 속성 참고]</a><br/>
                    <pre>&lt;input accept="<em>file_extension</em>|audio/*|video/*|image/*|<i>media_type</i>"&gt;</pre>
                </small>
            </div>
        </div>
        <hr />
        <div class="d-grid gap-2 text-center d-md-block">
            <button type="submit" class="btn btn-success">저장</button>
            <a href="/Forum/Board/List\@Model.QueryString" class="btn btn-secondary">취소</a>
        </div>
        <br />
    </form>
</div>

@section Scripts {
    <script>
        $(document).on("change", "#Input_AllowEditor", function(e) {
            const textareaID = "Input_DefaultContent";
            if (e.target.checked) { // CKEditor 표시
                initEditor(textareaID);
            } else { // Textarea로 변경
                destroyEditor(textareaID);
            }
        });
    </script>
}