| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 |
- @page
- @model Admin.Pages.Channel.Exp.IndexModel
- @{
- ViewData["Title"] = "채널 경험치 관리";
- }
- <div class="container">
- <h3>@ViewData["Title"]</h3>
- <hr />
- <div asp-validation-summary="ModelOnly" class="text-danger"></div>
- <partial name="_StatusMessage" />
- <form method="post" accept-charset="utf-8" autocomplete="off">
- <div class="alert alert-info" role="alert">
- watch 페이지의 채팅 경험치 / 리더보드 정책을 설정합니다.
- <br />
- 채팅 참여 시마다 XP 가 적립되며, 방송 세션 단위로 리더보드가 집계됩니다 (YouTube 열성 팬 방식).
- </div>
- <hr />
- <!-- 적립 정책 -->
- <details open>
- <summary class="fs-5 mb-3">적립 정책</summary>
- <div class="row mb-2">
- <label asp-for="Input.ChatXpPerMessage" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <input type="number" asp-for="Input.ChatXpPerMessage" class="form-control" min="0" max="100" />
- <div class="text-muted form-text">채팅 1건이 지급하는 XP (기본 1)</div>
- <span asp-validation-for="Input.ChatXpPerMessage" class="text-danger"></span>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.DonationXpPerAmount" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <div class="input-group">
- <input type="number" asp-for="Input.DonationXpPerAmount" class="form-control" min="1" step="100" />
- <span class="input-group-text">POINT / 1 XP</span>
- </div>
- <div class="text-muted form-text">N POINT당 1 XP 환산 (기본 1000 = 1,000원당 1XP)</div>
- <span asp-validation-for="Input.DonationXpPerAmount" class="text-danger"></span>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.ChatXpSessionLimit" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <input type="number" asp-for="Input.ChatXpSessionLimit" class="form-control" min="0" max="10000" />
- <div class="text-muted form-text">방송 1회당 채팅으로 쌓을 수 있는 최대 XP (후원 XP 는 상한 없음)</div>
- <span asp-validation-for="Input.ChatXpSessionLimit" class="text-danger"></span>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.MinContentLength" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <input type="number" asp-for="Input.MinContentLength" class="form-control" min="1" max="500" />
- <div class="text-muted form-text">이 글자수 미만 채팅은 XP 가 적립되지 않음 (도배 방지)</div>
- <span asp-validation-for="Input.MinContentLength" class="text-danger"></span>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.RateLimitSec" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <div class="input-group">
- <input type="number" asp-for="Input.RateLimitSec" class="form-control" min="0" max="60" />
- <span class="input-group-text">초</span>
- </div>
- <div class="text-muted form-text">채팅 최소 간격 (기본 2초)</div>
- <span asp-validation-for="Input.RateLimitSec" class="text-danger"></span>
- </div>
- </div>
- </details>
- <hr />
- <!-- 리더보드 -->
- <details open>
- <summary class="fs-5 mb-3">리더보드</summary>
- <div class="row mb-2">
- <label asp-for="Input.LeaderboardSize" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <input type="number" asp-for="Input.LeaderboardSize" class="form-control" min="1" max="500" />
- <div class="text-muted form-text">리더보드에 표시할 상위 N명 (기본 50)</div>
- <span asp-validation-for="Input.LeaderboardSize" class="text-danger"></span>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.CrownTopN" class="col-sm-3 col-form-label"></label>
- <div class="col-sm-9">
- <input type="number" asp-for="Input.CrownTopN" class="form-control" min="0" max="10" />
- <div class="text-muted form-text">채팅 옆에 크라운을 표시할 상위 N명 (기본 3)</div>
- <span asp-validation-for="Input.CrownTopN" class="text-danger"></span>
- </div>
- </div>
- </details>
- <hr />
- <!-- 사용자 UI -->
- <details open>
- <summary class="fs-5 mb-3">사용자 UI</summary>
- <div class="row mb-2">
- <label asp-for="Input.UxShowLeaderboard" class="col-sm-3 col-form-label">리더보드 패널 노출</label>
- <div class="col-sm-9 align-self-center">
- <div class="form-check">
- <input type="checkbox" asp-for="Input.UxShowLeaderboard" class="form-check-input" />
- <label class="form-check-label" asp-for="Input.UxShowLeaderboard">사용합니다.</label>
- </div>
- </div>
- </div>
- <div class="row mb-2">
- <label asp-for="Input.UxShowMyXpBadge" class="col-sm-3 col-form-label">"내 XP" 뱃지 노출</label>
- <div class="col-sm-9 align-self-center">
- <div class="form-check">
- <input type="checkbox" asp-for="Input.UxShowMyXpBadge" class="form-check-input" />
- <label class="form-check-label" asp-for="Input.UxShowMyXpBadge">사용합니다.</label>
- </div>
- </div>
- </div>
- </details>
- <hr />
- <div class="row">
- <div class="col text-center p-3">
- <button type="submit" class="btn btn-success">저장하기</button>
- </div>
- </div>
- <br />
- </form>
- </div>
- @section Scripts {
- <partial name="_ValidationScriptsPartial" />
- }
|