238 lines
12 KiB
Plaintext
238 lines
12 KiB
Plaintext
@model NP.Model.VMCM
|
|
@{
|
|
var qdiff = Model.ComCodes.Where(w => w.cgroup == "ccdiff");
|
|
var qt1 = Model.ComCodes.Where(w => w.cgroup == "cc1");
|
|
var qt2 = Model.ComCodes.Where(w => w.cgroup == "cc2");
|
|
var qt3 = Model.ComCodes.Where(w => w.cgroup == "cc3");
|
|
var qt4 = Model.ComCodes.Where(w => w.cgroup == "cc4");
|
|
var qt5 = Model.ComCodes.Where(w => w.cgroup == "cc5");
|
|
var isqdiff = qdiff.Count() > 0;
|
|
var isqt1 = qt1.Count() > 0;
|
|
var isqt2 = qt2.Count() > 0;
|
|
var isqt3 = qt3.Count() > 0;
|
|
var isqt4 = qt4.Count() > 0;
|
|
var isqt5 = qt5.Count() > 0;
|
|
}
|
|
<div>
|
|
<ul class="pagination pagination-md" style="margin: 0;">
|
|
<li class="active"><a href="#" data-toggle="tab">학습콘텐츠</a></li>
|
|
<li class=""><a href="#" onclick="gotab(0);" data-toggle="tab">그룹코드관리</a></li>
|
|
<li class=""><a href="#" onclick="gotab(2);" data-toggle="tab">문제</a></li>
|
|
<li class=""><a href="#" onclick="gotab(3);" data-toggle="tab">설문지</a></li>
|
|
</ul>
|
|
</div>
|
|
<br />
|
|
<form id="mform" method="post">
|
|
<section class="panel panel-default clearfix devsearch">
|
|
@Html.Partial("./Partial/SearchCaption")
|
|
<div class="step-content">
|
|
<div class="step-pane active form-inline" style="line-height: 5px;">
|
|
@Html.Partial("./Partial/Select", Model.CMs, new ViewDataDictionary { { "name", "stringval" }, { "selected", Model.stringval }, { "cssclass", "searchcon " }, { "df", ":과정명" } })
|
|
@if (isqdiff)
|
|
{@Html.Partial("./Partial/Select", qdiff, new ViewDataDictionary { { "name", "stringval2" }, { "selected", Model.stringval2 }, { "cssclass", "searchcon " }, { "df", ":" + qdiff.First().cgroupname } })}
|
|
@if (isqt1)
|
|
{@Html.Partial("./Partial/Select", qt1, new ViewDataDictionary { { "name", "stringval3" }, { "selected", Model.stringval3 }, { "cssclass", "searchcon " }, { "df", ":" + qt1.First().cgroupname } })}
|
|
@if (isqt2)
|
|
{@Html.Partial("./Partial/Select", qt2, new ViewDataDictionary { { "name", "stringval4" }, { "selected", Model.stringval4 }, { "cssclass", "searchcon " }, { "df", ":" + qt2.First().cgroupname } })}
|
|
@if (isqt3)
|
|
{@Html.Partial("./Partial/Select", qt3, new ViewDataDictionary { { "name", "stringval5" }, { "selected", Model.stringval5 }, { "cssclass", "searchcon " }, { "df", ":" + qt3.First().cgroupname } })}
|
|
@if (isqt4)
|
|
{@Html.Partial("./Partial/Select", qt4, new ViewDataDictionary { { "name", "stringval6" }, { "selected", Model.stringval6 }, { "cssclass", "searchcon " }, { "df", ":" + qt4.First().cgroupname } })}
|
|
@if (isqt5)
|
|
{@Html.Partial("./Partial/Select", qt5, new ViewDataDictionary { { "name", "stringval7" }, { "selected", Model.stringval7 }, { "cssclass", "searchcon " }, { "df", ":" + qt5.First().cgroupname } })}
|
|
@Html.Partial("./Partial/Select", Model.stringval8, new ViewDataDictionary { { "name", "stringval8" }, { "selected", Model.stringval8 }, { "valuetext", ":사용여부;1:사용;0:미사용" } })
|
|
<br /><br />
|
|
@Html.Partial("./Partial/Text", Model.searchtext, Helpers.DicText(new NP.Model.TextDic() { PH = "콘텐츠명을 입력하세요.", Name = "searchtext", Value = Model.searchtext }))
|
|
@Html.Partial("./Partial/Button", new NP.Model.Button() { Special = "search" })
|
|
</div>
|
|
</div>
|
|
</section>
|
|
<div class="tar buttonbox">
|
|
<a href="#" onclick="javascript:delme();" class="btn btn-s-xs btn-danger">선택삭제</a>
|
|
<a href="#" onclick="javascript:reg(0);" class="btn btn-s-xs btn-info">개별등록</a>
|
|
<a href="#" onclick="javascript:reg(-1);" class="btn btn-s-xs btn-info">일괄등록</a>
|
|
<a href="~/Content/file/contents.xlsx" class="btn btn-s-xs btn-default">일괄등록양식다운로드</a>
|
|
</div>
|
|
<section class="panel panel-default">
|
|
<header class="panel-heading">문제목록</header>
|
|
<div class="table-responsive" id="excel1">
|
|
<table class="table table-striped b-t b-light">
|
|
<thead>
|
|
<tr>
|
|
<th><input type="checkbox" onclick="javascript: checkall('excel1', this);" /></th>
|
|
<th width="80">No</th>
|
|
<th>Code</th>
|
|
<th>과정명</th>
|
|
<th>유형</th>
|
|
<th>콘텐츠명</th>
|
|
<th>수정일</th>
|
|
<th>사용여부</th>
|
|
<th>미리보기</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody class="data" id="tbody1">
|
|
@foreach (var item in Model.CTs)
|
|
{
|
|
<tr>
|
|
<td>@Html.Raw(Model.addstringval.Contains("," + item.ctno + ",") ? "":string.Format("<input type=\"checkbox\" class=\"autocheck\" value=\"{0}\" />", item.ctno))</td>
|
|
<td>@item.rnorvt (@item.ctno)</td>
|
|
<td>@item.ccode</td>
|
|
<td class="text-left">@item.cname</td>
|
|
<td>@item.ctypename</td>
|
|
<td class="link" style="max-width: 300px; overflow: hidden;"><a class="link" href="#" onclick="reg(@item.ctno);" style="white-space: nowrap; max-width: 300px; overflow: hidden;">@item.ctname</a></td>
|
|
<td>@item.udtymd2</td>
|
|
<td class="text-center">@(item.isuse == 1 ? "Y" : "N")</td>
|
|
<td class="link text-center">
|
|
<a href="#" class="btn btn-select btn-xxs" style="color: #fff;" onclick="preview(@item.ctno, 0)">PC</a>
|
|
<a href="#" class="btn btn-select btn-xxs" style="color: #fff;" onclick="preview(@item.ctno, 1)">모바일</a>
|
|
</td>
|
|
</tr>
|
|
}
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
@Html.Pager((int)Model.pagenum, 10, Model.pagerowcount, Model.pagetotalcount)
|
|
</section>
|
|
</form>
|
|
<form id="dform" method="post" action="/cm/ctr">
|
|
@Html.Partial("./Partial/DForm", Model, new ViewDataDictionary { { "preform", 1 } })
|
|
</form>
|
|
<div id="thisbox" class="findbox draggable regbox" style="width: 500px; z-index: 1041; left: 50%; margin-left: -250px; top: 60px; overflow: auto;">
|
|
<h4><i class="fa fa-bars"></i> <span id="pcap">일괄등록</span><a href="#" class="btn btn-default btn-xs f-r closethisbox">닫기</a></h4>
|
|
<br />
|
|
<div style="color: red;">※ URL유형방식만 업로드를 지원합니다.</div>
|
|
<div>(VOD, HTML, iFrame방식은 개별등록을 사용해주세요.)</div>
|
|
<table class="regtable">
|
|
<colgroup><col style="width:200px;" /><col /></colgroup>
|
|
<tr id="trisparent">
|
|
<th class="req">일괄등록파일</th>
|
|
<td style="line-height: 35px;"><input id="uploadfile" type="file" /></td>
|
|
</tr>
|
|
</table>
|
|
<div class="findboxbtnbox">
|
|
<a href="~/Content/file/contents.xlsx" class="btn btn-info">양식다운로드</a>
|
|
<a href="#" class="btn btn-primary" onclick="save();">일괄등록</a>
|
|
</div>
|
|
<br /><br />
|
|
</div>
|
|
@section styles{
|
|
<style type="text/css">
|
|
.phright{z-index: 2; margin-left: -50px}
|
|
</style>
|
|
}
|
|
@section scripts{
|
|
<script>
|
|
$(document).ready(function () {
|
|
focus("searchtext");
|
|
});
|
|
var _delcount = 0;
|
|
function reg(no) {
|
|
if (no < 0) {
|
|
//일괄등록
|
|
bglayer(); $("#thisbox").slideDown("fast", function () { $("#thisbox").scrollTop(0); });
|
|
}
|
|
else {
|
|
$("#dform_intval").val(no);
|
|
$("#dform").submit();
|
|
}
|
|
}
|
|
function save() {
|
|
if ($("#uploadfile").val() == "") {
|
|
msg2("파일을 선택해주세요.");
|
|
}
|
|
else {
|
|
var thumbext = $("#uploadfile").val();
|
|
thumbext = thumbext.slice(thumbext.indexOf(".") + 1).toLowerCase();
|
|
if ("xlsx".indexOf(thumbext) < 0) {
|
|
msg("xlsx 확장자만 가능합니다.", 0, true);
|
|
}
|
|
else if (confirm("일괄등록하시겠습니까?")) {
|
|
var formData = new FormData();
|
|
formData.append("uploadfile", $("#uploadfile")[0].files[0]);
|
|
formData.append("uploadjob", "contentsbatch");
|
|
capfile("/acommon/uploadexcel", formData, "cbsave", true, false, true, true);
|
|
}
|
|
}
|
|
}
|
|
function cbsave() {
|
|
if (capResult.code == 1000) {
|
|
msg2("일괄등록을 완료했습니다.", null, true, null, true);
|
|
gotab(1, 500);
|
|
}
|
|
else if (capResult.code == 123) {
|
|
var es = capResult.msg.split(';');
|
|
msg2("존재하지 않는 문제유형코드가 있습니다. 확인후 다시 업로드해주세요.<br />" +
|
|
(es[0] != "" ? ("난이도: " + es[0] + "<br />") : "") +
|
|
(es[1] != "" ? ("분류1: " + es[1] + "<br />") : "") +
|
|
(es[2] != "" ? ("분류2: " + es[2] + "<br />") : "") +
|
|
(es[3] != "" ? ("분류3: " + es[3] + "<br />") : "") +
|
|
(es[4] != "" ? ("분류4: " + es[4] + "<br />") : "") +
|
|
(es[5] != "" ? ("분류5: " + es[5]) : ""));
|
|
}
|
|
else {
|
|
console.log(capResult.msg);
|
|
msg2("업로드가 실패했습니다.<br /><br /><br />" + capResult.msg, null, true);
|
|
}
|
|
}
|
|
function gotab(idx, t) {
|
|
bglayer();
|
|
t = t || 0;
|
|
setTimeout(function () {
|
|
if (idx == 0) { location.href = "/cm/cc"; }
|
|
else if (idx == 1) { location.href = "/cm/cts"; }
|
|
else if (idx == 2) { location.href = "/cm/qs"; }
|
|
else if (idx == 3) { location.href = "/cm/rs"; }
|
|
}, t);
|
|
}
|
|
var _dtype = 1;
|
|
var _ctno = 0;
|
|
var _ismobile;
|
|
function preview(ctno, ismobile) {
|
|
_ctno = ctno;
|
|
_ismobile = ismobile;
|
|
capp("/acommon/setauthkey", { dtype: _dtype, intval: _ctno }, "cbauth");
|
|
}
|
|
function cbauth() {
|
|
if (capResult.code == 1000) {
|
|
var nWidth = "1080";
|
|
var nHeight = screen.availHeight;
|
|
var popOption = "";
|
|
popOption += "width=" + nWidth + "px,";
|
|
popOption += "height=" + nHeight + "px,";
|
|
popOption += "toolbar=no,menubar=no,location=yes,";
|
|
popOption += "resizable=yes,status=yes,scrollbars=yes";
|
|
var pop = window.open("@ViewBag.Front.Replace("https://", "http://")/CDMS/PlayTaste?authtype=" + _dtype + "&authkey=" + capResult.obj + "&ctno=" + _ctno + "&ismobile=" + _ismobile, 'contentsview', popOption);
|
|
if (pop == null) {
|
|
msg("팝업이 차단되어 있습니다. 차단을 해제해 주세요.");
|
|
}
|
|
}
|
|
}
|
|
function delme() {
|
|
_delcount = $("#tbody1 tr td input.autocheck:checked").length;
|
|
if (_delcount < 1) {
|
|
msg("삭제할 데이터를 선택해주세요.");
|
|
} else {
|
|
var ctnos = "";
|
|
$.each($("#tbody1 tr td input.autocheck:checked"), function (i, c) {
|
|
ctnos += "," + $(c).val();
|
|
});
|
|
if (confirm("선택한 콘텐츠를 삭제하시겠습니까?")) {
|
|
capp("/acommon/ctdel", { ctnos: ctnos.substr(1) }, "cbdelete");
|
|
}
|
|
}
|
|
}
|
|
function cbdelete() {
|
|
if (capResult.code == 1000) {
|
|
if (_delcount == capResult.obj) {
|
|
msg("삭제했습니다.", 0, null, null, true);
|
|
submit(null, 500, true);
|
|
} else {
|
|
msg(_delcount + "건 중 " + capResult.obj + "건을 삭제했습니다(연결된 콘텐츠" + (_delcount - capResult.obj) + ")", 0, null, null, true);
|
|
submit(null, 500, true);
|
|
}
|
|
} else {
|
|
msg("연결된 과정/강좌가 있습니다. 삭제할 수 없습니다.");
|
|
}
|
|
}
|
|
</script>
|
|
} |