323 lines
17 KiB
Plaintext
323 lines
17 KiB
Plaintext
@using boilerplate.Models
|
|
@using Newtonsoft.Json
|
|
@model Setting
|
|
@{
|
|
ViewBag.Title = "تنظیمات";
|
|
Layout = "~/Views/_PanelSideBar.cshtml";
|
|
var Socials = JsonConvert.DeserializeObject<List<SocialModel>>(Model.Setting_Social);
|
|
}
|
|
<style>
|
|
.dataTables_scrollHeadInner, .select2-container {
|
|
width: 100% !important;
|
|
}
|
|
</style>
|
|
<div class="card card-custom">
|
|
<div class="card-header card-header-tabs-line">
|
|
<div class="card-toolbar">
|
|
<ul class="nav nav-tabs nav-bold nav-tabs-line">
|
|
<li class="nav-item">
|
|
<a class="nav-link active" data-toggle="tab" href="#Tab_Panel_1">
|
|
<span class="nav-text">عمومی</span>
|
|
</a>
|
|
</li>
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_2">
|
|
<span class="nav-text">تصاویر</span>
|
|
</a>
|
|
</li>
|
|
@*<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_3">
|
|
<span class="nav-text">سئو</span>
|
|
</a>
|
|
</li>*@
|
|
@*<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_4">
|
|
<span class="nav-text">فوتر سایت</span>
|
|
</a>
|
|
</li>*@
|
|
@*<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_5">
|
|
<span class="nav-text">شبکه های اجتماعی</span>
|
|
</a>
|
|
</li>*@
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_6">
|
|
<span class="nav-text">اس ام اس</span>
|
|
</a>
|
|
</li>
|
|
|
|
<li class="nav-item">
|
|
<a class="nav-link" data-toggle="tab" href="#Tab_Panel_7">
|
|
<span class="nav-text">اطلاعات فاکتور</span>
|
|
</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="card-toolbar">
|
|
<a class="btn btn-success font-weight-bold" onclick="Save()" id="btnSave">ذخیره</a>
|
|
</div>
|
|
</div>
|
|
<div class="card-body">
|
|
<form autocomplete="off">
|
|
<div class="tab-content">
|
|
<div class="tab-pane fade show active" id="Tab_Panel_1" role="tabpanel" aria-labelledby="Tab_Panel_1">
|
|
<div class="row">
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtName">نام سایت:</label>
|
|
<input class="form-control" id="txtName" value="@Model.Setting_Name" />
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtTitle">عنوان سایت:</label>
|
|
<input class="form-control" id="txtTitle" value="@Model.Setting_Title" />
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtHeader">تگ های اضافی هدر (استایل، اسکریپت، ...):</label>
|
|
<textarea class="form-control" id="txtHeader" rows="7" dir="ltr">@HttpUtility.UrlDecode(Model.Setting_Header)</textarea>
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtFooter">تگ های اضافی فوتر (اسکریپت، ...):</label>
|
|
<textarea class="form-control" id="txtFooter" rows="7" dir="ltr">@HttpUtility.UrlDecode(Model.Setting_Footer)</textarea>
|
|
</div>
|
|
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade" id="Tab_Panel_2" role="tabpanel" aria-labelledby="Tab_Panel_2">
|
|
<div class="row">
|
|
<div class="col-md-6 form-group">
|
|
<label for="fuImage">لوگو:</label>
|
|
<input class="form-control" id="fuImage" type="file" accept=".png" />
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<a class="mt-2 float-left" href="~/Media/logo.png?v=1" target="_blank">
|
|
<img src="~/Media/logo.png?v=1" class="img-thumbnail" style="width: 200px; background-color: #222222;" />
|
|
</a>
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="fuIcon">فاوآیکون:</label>
|
|
<input class="form-control" id="fuIcon" type="file" accept=".ico" />
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<a class="mt-2 float-left" href="~/Media/favicon.ico?v=1" target="_blank">
|
|
<img src="~/Media/favicon.ico?v=1" class="img-thumbnail" style="width: 50px;" />
|
|
</a>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade" id="Tab_Panel_3" role="tabpanel" aria-labelledby="Tab_Panel_3">
|
|
<div class="row">
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtDescription">توضیحات سئو:</label>
|
|
<textarea class="form-control" id="txtDescription" rows="3" placeholder="لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است">@Model.Setting_Description</textarea>
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="ddlKeywords">کلمات کلیدی سئو:</label>
|
|
<select class="form-control w-100" id="ddlKeywords" multiple>
|
|
@if (!string.IsNullOrEmpty(Model.Setting_Keywords))
|
|
{
|
|
foreach (var item in Model.Setting_Keywords.Split(','))
|
|
{
|
|
<option value="@item" selected>@item</option>
|
|
}
|
|
}
|
|
</select>
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
</div>
|
|
</div>
|
|
@*<div class="tab-pane fade" id="Tab_Panel_4" role="tabpanel" aria-labelledby="Tab_Panel_4">
|
|
<div class="row">
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtDescriptionFooter">توضیحات فوتر:</label>
|
|
<textarea class="form-control" id="txtDescriptionFooter" rows="3" placeholder="لورم ایپسوم متن ساختگی با تولید سادگی نامفهوم از صنعت چاپ و با استفاده از طراحان گرافیک است">@Model.DescriptionFooter</textarea>
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
</div>
|
|
</div>*@
|
|
<div class="tab-pane fade" id="Tab_Panel_5" role="tabpanel" aria-labelledby="Tab_Panel_5">
|
|
<div class="row">
|
|
@foreach (var item in Socials)
|
|
{
|
|
<div class="col-md-12 form-group">
|
|
<div class="row form-group">
|
|
<label class="col-md-2 col-form-label"><i class="@item.Icon vertical-middle"></i> @item.Value</label>
|
|
<div class="col-6 col-md-3">
|
|
<input class="form-control placeholder-right" id="txtSocialTitle_@item.Key" placeholder="عنوان را وارد نمایید" value="@item.Title" />
|
|
</div>
|
|
<div class="col-6 col-md-3">
|
|
<input class="form-control placeholder-right" id="txtSocialLink_@item.Key" placeholder="لینک را وارد نمایید" value="@item.Link" />
|
|
</div>
|
|
<div class="col-2 col-md-1">
|
|
<input type="hidden" class="Socials" value="@JsonConvert.SerializeObject(item)" />
|
|
<span class="switch switch-sm switch-success">
|
|
<label>
|
|
<input type="checkbox" id="chkSocial_@item.Key" @(item.Checked ? "checked" : "")>
|
|
<span></span>
|
|
</label>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
}
|
|
</div>
|
|
</div>
|
|
<div class="tab-pane fade" id="Tab_Panel_6" role="tabpanel" aria-labelledby="Tab_Panel_6">
|
|
<div class="row">
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtSmsUsername">نام کاربری:</label>
|
|
<input class="form-control" id="txtSmsUsername" dir="ltr" value="@Model.Setting_Username" />
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtSmsPassword">رمز عبور:</label>
|
|
<input class="form-control" id="txtSmsPassword" dir="ltr" value="@Model.Setting_Password" />
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtSmsFromNumber">ارسال سریع از خط:</label>
|
|
<input class="form-control" id="txtSmsFromNumber" dir="ltr" value="@Model.Setting_FromNumber" />
|
|
<span class="text-muted" style="font-size: 13px;">برای اتصال به پنل پیامکی، می توانید از <a href="http://sms.avinpayamak.ir" target="_blank">این لینک</a> استفاده کنید</span>
|
|
<br />
|
|
<span class="text-muted d-block mt-2" style="font-size: 13px;">ترجیحا از شماره <span class="text-primary" dir="ltr">+983000505</span> برای ارسال استفاده کنید و حتما شماره باید در پنل شما فعال باشد</span>
|
|
</div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="SmsPaternLogin">پترن ارسال کد ورود:</label>
|
|
<input class="form-control" id="txtSmsPaternLogin" dir="ltr" value="@Model.Setting_PaternLogin" />
|
|
<span class="text-muted d-block mt-2" style="font-size: 13px;">متن پترن جهت ثبت: کد احراز هویت شما در سایت : %verification-code%</span>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="tab-pane fade" id="Tab_Panel_7" role="tabpanel" aria-labelledby="Tab_Panel_6">
|
|
<div class="row">
|
|
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtaddress">آدرس شرکت:</label>
|
|
<input class="form-control" id="txtaddress" value="@Model.Setting_Address" />
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtpostcode">کد پستی:</label>
|
|
<input class="form-control" id="txtpostcode" value="@Model.Setting_PostCode" />
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtphone">شماره تماس:</label>
|
|
<input class="form-control" id="txtphone" value="@Model.Setting_Phone" />
|
|
</div>
|
|
<div class="col-md-6 form-group"></div>
|
|
<div class="col-md-6 form-group">
|
|
<label for="txtwebsite">وبسایت:</label>
|
|
<input class="form-control" id="txtwebsite" value="@Model.Setting_Website" />
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</form>
|
|
</div>
|
|
<div class="card-footer">
|
|
<div class="col-12 form-group d-none" id="ProgressSection">
|
|
<div class="progress">
|
|
<div class="progress-bar progress-bar-striped" id="Progress" role="progressbar" style="width: 0%" aria-valuenow="10" aria-valuemin="0" aria-valuemax="100">0%</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
@section Script {
|
|
<script>
|
|
$("#SettingMenu").addClass("menu-item-active");
|
|
|
|
$(document).ready(function () {
|
|
$("#ddlKeywords").select2({ placeholder: 'تایپ کنید و اینتر بزنید ...', tags: true });
|
|
//KTLayoutAsideToggle.getToggle().toggleOn();
|
|
});
|
|
|
|
$(window).bind('keydown', function (event) {
|
|
if (event.ctrlKey || event.metaKey) {
|
|
switch (String.fromCharCode(event.which).toLowerCase()) {
|
|
case 's':
|
|
event.preventDefault();
|
|
$("#btnSave").click();
|
|
break;
|
|
}
|
|
}
|
|
});
|
|
|
|
function Save() {
|
|
|
|
// Proceed with the rest of the function if validation passes
|
|
let SocialList = [];
|
|
$(".Socials").each(function () {
|
|
let item = JSON.parse($(this).val());
|
|
item.Title = $(`#txtSocialTitle_${item.Key}`).val().trim();
|
|
item.Link = $(`#txtSocialLink_${item.Key}`).val().trim();
|
|
item.Checked = $(`#chkSocial_${item.Key}`).prop("checked");
|
|
SocialList.push(item);
|
|
});
|
|
|
|
let model = {
|
|
Auth: { UserId: UserId, Token: Token },
|
|
Id: @Model.Setting_Id,
|
|
Name: $("#txtName").val().trim(),
|
|
Title: $("#txtTitle").val().trim(),
|
|
Description: $("#txtDescription").val().trim(),
|
|
Keywords: $("#ddlKeywords").val().join(','),
|
|
Header: escape($("#txtHeader").val().trim()),
|
|
Footer: escape($("#txtFooter").val().trim()),
|
|
Socials: SocialList,
|
|
SmsUsername: $("#txtSmsUsername").val().trim(),
|
|
SmsPassword: $("#txtSmsPassword").val().trim(),
|
|
SmsFromNumber: $("#txtSmsFromNumber").val().trim(),
|
|
SmsPaternLogin: $("#txtSmsPaternLogin").val().trim(),
|
|
|
|
address: $("#txtaddress").val().trim(),
|
|
postcode: $("#txtpostcode").val().trim(),
|
|
phone: $("#txtphone").val().trim(),
|
|
website: $("#txtwebsite").val().trim(),
|
|
};
|
|
|
|
$("#btnSave").css("opacity", 0.5);
|
|
$("#btnSave").removeAttr("onclick");
|
|
|
|
let formData = new FormData();
|
|
formData.append("Model", JSON.stringify(model));
|
|
formData.append("Logo", $("#fuImage")[0].files[0]);
|
|
formData.append("Icon", $("#fuIcon")[0].files[0]);
|
|
|
|
let ajax = new XMLHttpRequest();
|
|
ajax.upload.addEventListener("progress", function (event) {
|
|
let percent = parseInt((event.loaded / event.total) * 100);
|
|
$("#Progress").css("width", `${percent}%`);
|
|
$("#Progress").text(`${percent.toFixed()}%`);
|
|
}, false);
|
|
|
|
ajax.addEventListener("load", function (event) {
|
|
$("#ProgressSection").addClass('d-none');
|
|
$("#btnSave").css("opacity", 1);
|
|
let data = JSON.parse(event.target.responseText);
|
|
if (data.Status == "Success") {
|
|
toastr.success("ذخیره سازی با موفقیت انجام شد");
|
|
setTimeout(function () {
|
|
location.reload();
|
|
}, 1500);
|
|
} else {
|
|
$("#btnSave").attr("onclick", "Save()");
|
|
toastr.warning("خطا هنگام ذخیره سازی اطلاعات");
|
|
}
|
|
}, false);
|
|
|
|
ajax.addEventListener("error", function () {
|
|
$("#ProgressSection").addClass('d-none');
|
|
$("#btnSave").css("opacity", 1);
|
|
$("#btnSave").attr("onclick", "Save()");
|
|
toastr.error("خطا هنگام برقراری ارتباط با سرور");
|
|
}, false);
|
|
|
|
ajax.open("post", "@Url.Action("SaveSettings", "Panel")");
|
|
ajax.send(formData);
|
|
$("#ProgressSection").removeClass('d-none');
|
|
}
|
|
</script>
|
|
}
|