<!----------------------------------------------- custom-javascript.js ----------------------------------------------->
<script>
var Permission = (function () {
"use strict";
var userPermissionJson = [];
var permissionResult = {
full: true,
insert: true,
view: true,
edit: true,
deletes: true,
details: true,
report: true
};
function getPermission(menu) {
_.each(userPermissionJson, function (permission) {
if (permission.MenuName == menu || permission.Url == menu) {
permissionResult.full = permission.FullPermission;
permissionResult.insert = permission.AddPermission;
permissionResult.view = permission.ViewPermission;
permissionResult.edit = permission.EditPermission;
permissionResult.deletes = permission.DeletePermission;
permissionResult.details = permission.DetailViewPermission;
permissionResult.report = permission.ReportViewPermission;
}
});
return permissionResult;
}
function getTabPermission(menu, id) {
var permission = _.findWhere(userPermissionJson, { ParentId: id, MenuName: menu });
if (permission) {
permissionResult.full = permission.FullPermission;
permissionResult.insert = permission.AddPermission;
permissionResult.view = permission.ViewPermission;
permissionResult.edit = permission.EditPermission;
permissionResult.deletes = permission.DeletePermission;
permissionResult.details = permission.DetailViewPermission;
permissionResult.report = permission.ReportViewPermission;
}
return permissionResult;
}
var result = {};
result.init = function (jsonData) {
userPermissionJson = jsonData;
}
result.getPermission = function (menu) {
return getPermission(menu);
}
result.getTabPermission = function (menu, id) {
return getTabPermission(menu, id);
}
return result;
}());
</script>
<!----------------------------------------------- index.html ----------------------------------------------->
@using VelocityFinCrime.Entity
@model IEnumerable<MenuConfig>
@{
var defaultMenu= Model.FirstOrDefault(s => s.IsDefault)?? Model.First();
}
@section Menu{
<ul class="sidebar-menu nav-list">
@BuildMenu(Model)
</ul>
}
@helper BuildMenu(IEnumerable<MenuConfig> data, int? parentId = null)
{
var configs = data as IList<MenuConfig> ?? data.ToList();
var items = configs.Where(d => d.ParentId == parentId).OrderBy(i => i.MenuOrder);
if (!items.Any())
{
return;
}
foreach (var item in items)
{
var cssClass = item.IsDefault ? "active" : "";
if (((item.Children == null || item.Children.Count == 0) && item.MenuType==MenuType.Module)|| item.MenuType == MenuType.Menu)
{
<li>
<a Id="menu_@item.Id"
class="@cssClass"
data-menu-id="@item.Id"
data-ajax="true"
data-ajax-begin="Spiner.show();"
data-ajax-complete="OnAjaxRequestComplete(@item.Id)"
data-ajax-method="GET"
data-ajax-mode="replace"
data-ajax-success="OnAjaxRequestSuccess('@item.MenuText')"
data-ajax-update="#mainContent" href="@item.Url">
<i class="@item.Icon"></i><span>@item.MenuText</span>
</a>
</li>
}
else
{
<li class="treeview">
<a href="#" class="@cssClass" data-menu-id="@item.Id">
<i class="@item.Icon"></i> <span>@item.MenuText</span>
<i class="fa fa-angle-left pull-right"></i>
</a>
<ul class="treeview-menu">
@BuildMenu(configs, item.Id)
</ul>
</li>
}
}
}
<div id="bodyContent">
<div id="mainContent">
</div>
<div id="splash-page" class="spiner" style="display: none;"></div>
</div>
<div class="modal fade" id="myModal" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true" data-backdrop="static" data-keyboard="false">
<div class="modal-dialog">
<div class="modal-content" id="modelContent">
</div>
</div>
</div>
@section scripts
{
<script src="~/Scripts/file-upload/jquery.fileupload.js" type="text/javascript"></script>
<script src="~/Scripts/file-upload/jquery.fileupload-ui.js" type="text/javascript"></script>
<script src="~/Scripts/file-upload/jquery.iframe-transport.js" type="text/javascript"></script>
<script>
var permissionJson = [];
$(function() {
if (@ViewBag.ExpiryDate < 10) {
if (@ViewBag.ExpiryDate <= 0) {
bootbox.confirm("Your password is expired. Please Reset your password.",
function(result) {
if (result) {
window.location.href = '/changepassword';
} else {
window.location.href = '/Login/Logout';
}
});
} else {
bootbox.alert({
message: "Your password will expire soon. Please Reset your password."
});
LoadDafultMenu();
}
} else {
LoadDafultMenu();
}
if (localStorage.getItem("userprev") === null) {
loadUserPrivileges();
}
permissionJson = JSON.parse(localStorage.getItem('userprev'));
Permission.init(permissionJson);
});
function LoadDafultMenu() {
$('#PageHeader').html('@defaultMenu.MenuText');
loadLink('@defaultMenu.Url');
}
function loadUserPrivileges() {
$.get( "api/security/user/permission", function( data ) {
localStorage.setItem('userprev',JSON.stringify(data));
});
}
$(document).on("mousemove",".btn",function (e) {
e = e || window.event;
var currentUser = localStorage.getItem('currentUser');
var requestBy = $("#requestUserId").val();
if (currentUser!=requestBy) {
e.returnValue = false;
if(e.preventDefault){
e.preventDefault();
}
if (e.stopImmediatePropagation()) {
e.stopImmediatePropagation();
}
window.location.href = "/Login/Logout";
return false;
} else { return true; }
});
$('.nav-list li>a').on('click', function() {
$('.nav-list li> a.active').removeClass('active');
$(this).addClass('active');
});
function OnAjaxRequestSuccess(data) {
$('#PageHeader').html(data);
}
function OnAjaxRequestComplete(id) {
Spiner.hide();
var aList = $("#mainContent").find('[role="tablist"]>li>a');
$.each(aList,function(index, item) {
var result = Permission.getTabPermission(item.innerHTML,id);
if (!result.deletes&&!result.details&&!result.edit&&!result.view&&!result.report) {
$(item.getAttribute('href')).hide();
item.style.display='none';
}
else {
$(item.getAttribute('href')).show();
$(item).show();
}
});
}
</script>
}