fleet-contractor/Site/Security/UserGroup.aspx
2023-04-28 12:22:26 +08:00

845 lines
35 KiB
Plaintext

<%@ Page Title="" Language="C#" MasterPageFile="~/Security/Security.master" AutoEventWireup="true" CodeFile="UserGroup.aspx.cs" Inherits="Security_UserGroup" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<link href="<%=Common.GenerateUrl("../fic/fic/css/tabcontrol.css") %>" rel="stylesheet" />
<style type="text/css">
.main_group {
table-layout: fixed;
}
.main_group td {
overflow: hidden;
text-overflow: ellipsis;
}
.group_table {
width: 100%;
border-collapse: collapse;
}
.group_table tr {
height: 24px;
line-height: 24px;
}
.group_table td {
padding: 0;
vertical-align: top;
}
td.label {
width: 160px;
}
.ctl_button {
font-family: 'CalciteWebCoreIcons';
display: block;
margin: 6px auto;
width: 60px;
height: 22px;
line-height: 21px;
padding: 0;
}
#dialog_user_group {
z-index: 500;
top: 60px;
left: 150px;
}
.inputbox {
width: 500px;
padding: 1px;
}
#dialog_group_description {
padding: 2px;
height: 60px;
}
.group_table .main_table thead tr {
display: block;
}
.group_table .main_table tbody {
height: 280px;
display: block;
overflow-y: auto;
}
.group_table .main_table th {
width: 165px;
padding: 0;
}
.group_table .main_table td {
width: 170px;
}
.group_table .main_table td div {
width: 170px;
overflow: hidden;
text-overflow: ellipsis;
}
.div_module {
font-weight: 700;
}
.table_module {
line-height: 30px;
margin-left: 20px;
margin-bottom: 15px;
}
.td_module {
width: 200px;
}
.label { /*cover tab.css*/
display: table-cell;
}
</style>
<%--<script src="<%=GetFileUrlWithVersion("js/controls.js")%>" type="text/javascript"></script>--%>
<script src="<%=GetFileUrlWithVersion("../js/controls.js")%>" type="text/javascript"></script>
<script src="<%=GetFileUrlWithVersion("../js/modulelang.js")%>" type="text/javascript"></script>
<script type="text/javascript">
var groups;
var featuresloaded = false;
_network.groupquery = function (method, param, callback, error) {
_network.request("Security/UserGroup.aspx", -1, method, param, callback, error);
}
function userrequest(method, param, callback, error) {
_network.request("Security/AddUser.aspx", -1, method, param, callback, error || function (e) {
console.log(e);
showmaskbg(false, true);
showAlert(GetTextByKey('P_UG_PAGEERROR', 'An unknown error occurred. Please refresh page.'), GetTextByKey('P_UG_QUERY', 'Query'));
});
}
var uiid;
function OnAdd() {
$('#tab_header_info').click();
$('#tab_header_security').hide();
uiid = undefined;
$('#dialog_group_name').val('');
$('#dialog_group_description').val('');
$('#dialog_user_group .dialog-title span.title').text(GetTextByKey("P_UG_ADDGROUP", 'Add Group'));
showmaskbg(true);
$('#dialog_user_group')
.attr('act', 'add')
.css({
'top': (document.documentElement.clientHeight - $('#dialog_user_group').height()) / 3,
'left': (document.documentElement.clientWidth - $('#dialog_user_group').width()) / 2
})
.showDialog();
$('#dialog_group_name').focus();
$('#dialog_user_group .maskbg').css('display', '');
getGroupInfo();
}
function OnEdit() {
var u = grid_dt.source[grid_dt.selectedIndex].Values;
if (!u) {
uiid = undefined;
return;
}
$('#tab_header_info').click();
$('#tab_header_security').show();
uiid = u.ID;
showmaskbg(true);
$('#dialog_user_group')
.attr('act', !uiid ? 'edit' : 'add')
.css({
'top': ($('#content').height() - $('#dialog_user_group').height()) / 3,
'left': ($('#content').width() - $('#dialog_user_group').width()) / 2
})
.showDialog();
$('#dialog_group_name').focus();
$('#dialog_user_group .maskbg').css('display', '');
getGroupInfo();
}
function OnDblClick(e) {
OnEdit();
}
function OnDelete(u) {
if (!u) {
return;
}
showConfirm(GetTextByKey("P_UG_DOYOUWANTTODELETE", 'Do you want to delete {0} ?').replace('{0}', u.Name), GetTextByKey("P_UG_DELETEGROUP", 'Delete group'), function () {
_network.groupquery('DeleteGroup', u.ID, function (data) {
if (data && data.length > 0) {
if (data === "There are one or more users in this user group,so it cannot be deleted.")
data = GetTextByKey("P_UG_USERSINTHISUSERGROUP", "There are one or more users in this user group,so it cannot be deleted.");
showAlert(data, GetTextByKey("P_UG_FAILEDTODELETETHISGROUP", 'Failed to delete this group'));
} else {
OnRefresh();
}
}, function (err) {
showAlert(GetTextByKey("P_UG_FAILEDTODELETETHISGROUP", 'Failed to delete this group.'), GetTextByKey("P_UG_DELETEGROUP", 'Delete group'));
});
});
}
function OnRefresh() {
showloading(true);
_network.groupquery('GetGroups', '', function (data) {
showloading(false);
groups = data;
showGroupList(data);
}, function (err) {
showloading(false);
});
}
function showGroupList(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
var fr = { Values: r };
rows.push(fr);
}
grid_dt.setData(rows);
}
var grid_dt;
function InitGridData() {
grid_dt = new GridView('#grouplist');
grid_dt.lang = {
all: GetTextByKey("P_GRID_ALL", "(All)"),
ok: GetTextByKey("P_GRID_OK", "OK"),
reset: GetTextByKey("P_GRID_RESET", "Reset")
};
var list_columns = [
{ name: 'Name', caption: GetTextByKey("P_UG_USERGROUPNAME", "User Group Name"), valueIndex: 'Name', css: { 'width': 500, 'text-align': 'left' } },
{ name: 'Notes', caption: GetTextByKey("P_UG_DESCRIPTION", "Description"), valueIndex: 'Notes', css: { 'width': 500, 'text-align': 'left' } },
{ name: 'Edit', caption: "", css: { 'width': 30, 'text-align': 'center' } },
{ name: 'Delete', caption: "", css: { 'width': 30, 'text-align': 'center' } }
];
var columns = [];
// head
for (var hd in list_columns) {
var col = {};
col.name = list_columns[hd].name;
col.caption = list_columns[hd].caption;
col.visible = true;
col.sortable = true;
col.width = list_columns[hd].css.width;
col.align = list_columns[hd].css["text-align"]
col.key = list_columns[hd].valueIndex;
if (col.name === "Edit") {
col.isurl = true;
col.text = "\uf044";
col.events = {
onclick: function () {
OnEdit();
}
};
col.classFilter = function (e) {
return "icon-col";
}
col.attrs = { 'title': GetTextByKey("P_UG_EDIT", 'Edit') };
}
else if (col.name === "Delete") {
col.isurl = true;
col.text = "\uf00d";
col.events = {
onclick: function () {
OnDelete(this);
}
};
col.classFilter = function (e) {
return "icon-col";
};
col.attrs = { 'title': GetTextByKey("P_UG_DELETE", 'Delete') };
}
columns.push(col);
}
grid_dt.canMultiSelect = false;
grid_dt.columns = columns;
grid_dt.init();
grid_dt.rowdblclick = OnEdit;
grid_dt.selectedrowchanged = function (rowindex) {
var rowdata = grid_dt.source[rowindex];
if (rowdata) {
uiid = rowdata.Values.ID;
}
}
}
/************************** User********************************/
/*************************************************************************/
var allMachines;
function getGroupInfo() {
_network.groupquery('GetGroupInfo', uiid, function (data) {
var grp = data.GroupInfo;
allMachines = data.Users;
showSelectedMachine(!grp.Users ? [] : grp.Users);
getMatchAvailableMachines();
$('#dialog_group_name').val(grp.Name);
$('#dialog_group_description').val(grp.Notes);
$('#dialog_user_group .dialog-title span.title').text(GetTextByKey("P_UG_EDITGROUP", 'Edit Group'));
$('#dialog_user_group .maskbg').css('display', 'none');
$('#dialog_group_name').focus();
}, function (err) {
showAlert(GetTextByKey("P_UG_FAILEDTOLOADUSERS", 'Failed to load users.'), GetTextByKey("P_UG_LOADUSERS", 'Load users'));
});
}
function getMatchAvailableMachines() {
var selected = [];
for (var i = 0; i < grid_dtsm.source.length; i++) {
var m = grid_dtsm.source[i].Values;
selected.push(m.IID);
}
_availableMachines = [];
for (var i = 0; i < allMachines.length; i++) {
var m = allMachines[i];
if ($.inArray(m.IID, selected) < 0) {
_availableMachines.push(m);
}
}
showAvailableMachine(_availableMachines);
}
function showAvailableMachine(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
var fr = { Values: r };
rows.push(fr);
}
grid_dtam.setData(rows);
}
function showSelectedMachine(data) {
var rows = [];
for (var i = 0; i < data.length; i++) {
var r = data[i];
var fr = { Values: r };
rows.push(fr);
}
grid_dtsm.setData(rows);
}
var grid_dtam;
function InitGridAvailableMachines() {
grid_dtam = new GridView('#availablemachinelist');
grid_dtam.lang = {
all: GetTextByKey("P_GRID_ALL", "(All)"),
ok: GetTextByKey("P_GRID_OK", "OK"),
reset: GetTextByKey("P_GRID_RESET", "Reset")
};
var list_columns = [
{ name: 'ID', caption: GetTextByKey("P_UG_USERID", "User ID"), valueIndex: 'ID', css: { 'width': 170, 'text-align': 'left' } },
{ name: 'DisplayName', caption: GetTextByKey("P_UG_USERNAME", "User Name"), valueIndex: 'DisplayName', css: { 'width': 160, 'text-align': 'left' } }
];
var columns = [];
// head
for (var hd in list_columns) {
var col = {};
col.name = list_columns[hd].name;
col.caption = list_columns[hd].caption;
col.visible = true;
col.sortable = true;
col.width = list_columns[hd].css.width;
col.align = list_columns[hd].css["text-align"]
col.key = list_columns[hd].valueIndex;
columns.push(col);
}
grid_dtam.canMultiSelect = true;
grid_dtam.columns = columns;
grid_dtam.init();
grid_dtam.rowdblclick = function (rowindex) {
var rowdata = grid_dtam.source[rowindex];
if (rowdata) {
grid_dtam.source.splice(rowindex, 1);
grid_dtam.setData(grid_dtam.source);
grid_dtsm.source.push(rowdata);
grid_dtsm.setData(grid_dtsm.source);
}
};
grid_dtam.selectedrowchanged = function (rowindex) {
var rowdata = grid_dtam.source[rowindex];
if (rowdata) {
}
}
}
var grid_dtsm;
function InitGridSelectedMachines() {
grid_dtsm = new GridView('#selectedmachinelist');
var list_columns = [
{ name: 'ID', caption: GetTextByKey("P_UG_USERID", "User ID"), valueIndex: 'ID', css: { 'width': 170, 'text-align': 'left' } },
{ name: 'DisplayName', caption: GetTextByKey("P_UG_USERNAME", "User Name"), valueIndex: 'DisplayName', css: { 'width': 160, 'text-align': 'left' } }
];
var columns = [];
// head
for (var hd in list_columns) {
var col = {};
col.name = list_columns[hd].name;
col.caption = list_columns[hd].caption;
col.visible = true;
col.sortable = true;
col.width = list_columns[hd].css.width;
col.align = list_columns[hd].css["text-align"]
col.key = list_columns[hd].valueIndex;
columns.push(col);
}
grid_dtsm.canMultiSelect = true;
grid_dtsm.columns = columns;
grid_dtsm.init();
grid_dtsm.rowdblclick = function (rowindex) {
var rowdata = grid_dtsm.source[rowindex];
if (rowdata) {
grid_dtsm.source.splice(rowindex, 1);
grid_dtsm.setData(grid_dtsm.source);
grid_dtam.source.push(rowdata);
grid_dtam.setData(grid_dtam.source);
}
};
grid_dtsm.selectedrowchanged = function (rowindex) {
var rowdata = grid_dtsm.source[rowindex];
if (rowdata) {
}
}
}
function OnEditorAdd() {
var indexs = grid_dtam.selectedIndexes;
if (indexs.length <= 0)
return;
var rowstemp = [];
for (var i = 0; i < indexs.length; i++) {
var rowindex = indexs[i];
var rowdata = grid_dtam.source[rowindex];
rowstemp.push(rowdata);
}
var index = grid_dtsm.source.length;
for (var i = 0; i < rowstemp.length; i++) {
var rowdata = rowstemp[i];
grid_dtam.source.splice(grid_dtam.source.indexOf(rowdata), 1);
grid_dtsm.source.splice(index, 0, rowdata);
index++;
}
grid_dtam.setData(grid_dtam.source);
grid_dtsm.setData(grid_dtsm.source);
}
function OnEditorAddAll() {
for (var i = 0; i < grid_dtam.source.length; i++) {
var rowindex = grid_dtam.source[i];
var rowdata = grid_dtam.source[i];
grid_dtsm.source.push(rowdata);
}
grid_dtsm.setData(grid_dtsm.source);
grid_dtam.source = [];
grid_dtam.setData(grid_dtam.source);
}
function OnEditorRemove() {
var indexs = grid_dtsm.selectedIndexes;
if (indexs.length <= 0)
return;
var rowstemp = [];
for (var i = 0; i < indexs.length; i++) {
var rowindex = indexs[i];
var rowdata = grid_dtsm.source[rowindex];
rowstemp.push(rowdata);
}
var index = grid_dtam.source.length;
for (var i = 0; i < rowstemp.length; i++) {
var rowdata = rowstemp[i];
grid_dtsm.source.splice(grid_dtsm.source.indexOf(rowdata), 1);
grid_dtam.source.splice(index, 0, rowdata);
index++;
}
grid_dtsm.setData(grid_dtsm.source);
grid_dtam.setData(grid_dtam.source);
}
function OnEditorRemoveAll() {
for (var i = 0; i < grid_dtsm.source.length; i++) {
var rowindex = grid_dtsm.source[i];
var rowdata = grid_dtsm.source[i];
grid_dtam.source.push(rowdata);
}
grid_dtam.setData(grid_dtam.source);
grid_dtsm.source = [];
grid_dtsm.setData(grid_dtsm.source);
}
/**************************End User********************************/
/*****************************************************************************/
function OnDialogOK() {
var item = {
'Name': $('#dialog_group_name').val(),
'Notes': $('#dialog_group_description').val()
};
if (uiid) {
item.ID = uiid;
}
var alerttitle = GetTextByKey("P_UG_SAVEGROUP", 'Save group');
if (!item.Name || item.Name.trim().length == 0) {
showAlert(GetTextByKey("P_UG_GROUPNAMECANNOTBEEMPTYORWHITESPACE", 'Group Name cannot be empty or whitespace.'), alerttitle);
$('#dialog_group_name').focus();
return;
}
if (item.Name.length > 100) {
showAlert(GetTextByKey("P_UG_GROUPNAMEISTOOLONG", 'Group Name is too long (> 100 characters).'), alerttitle);
$('#dialog_group_name').focus();
return;
}
if (item.Notes.length > 200) {
showAlert(GetTextByKey("P_UG_NOTESISTOOLONG", 'Notes is too long (> 200 characters).'), alerttitle);
$('#dialog_group_description').focus();
return;
}
item.Users = [];
for (var i = 0; i < grid_dtsm.source.length; i++) {
var m = grid_dtsm.source[i].Values;
var iid = m.IID;
item.Users.push({
'IID': iid
});
}
var features = [];
if (uiid && featuresloaded) {
var ipts = $('#security_message').find('input[type=radio]:checked');
for (var i = 0; i < ipts.length; i++) {
var ipt = ipts[i];
var id = $(ipt).data('featureid');
var pm = $(ipt).val();
if (!pm)
continue;
var permissions = [];
permissions.push(pm)
var ftitem = { 'Key': id, 'Value': permissions };
features.push(ftitem);
}
}
$('#dialog_user_group .maskbg').css('display', '');
var param = JSON.stringify({
'GroupInfo': item,
'Features': features
});
param = htmlencode(param);
_network.groupquery('SaveGroup', param, function (data) {
//alert('Save user info successfully.');
if (data && data.length > 0) {
showAlert(data, alerttitle);
$('#dialog_user_group .maskbg').css('display', 'none');
} else {
$('#dialog_user_group').hideDialog();
OnRefresh();
}
}, function (err) {
showAlert(GetTextByKey("P_UG_FAILEDTOSAVEGROUP", 'Failed to save group.'), alerttitle);
$('#dialog_user_group .maskbg').css('display', 'none');
});
}
/************************** Security********************************/
/*************************************************************************/
var featuresloaded = false;
function onsecurityclick() {
if (!featuresloaded) {
featuresloaded = true;;
}
$(".featureradio").prop("checked", false);
GetFeaturesDefinedOnUser()
}
function GetFeaturesDefinedOnUser() {
userrequest('GetFeaturesDefinedOnUser', uiid, function (data) {
if (typeof (data) === "string") {
showAlert(data, GetTextByKey("P_UG_ERROR", 'Error'));
return;
}
getFeaturesDefinedLang(data);
createFeatureModule(data);
}, function (err) {
console.log(err);
});
}
function getFeaturesDefinedLang(data) {
for (var i = 0; i < data.length; i++) {
var m = data[i].Module;
var f = data[i].Features;
setMoudulesLang(m);
setFeaturesLang(f);
}
}
function setFeaturesLang(features) {
for (var i = 0; i < features.length; i++) {
var f = features[i].Item1;
if (f.Id === 1)
f.CurrentName = GetTextByKey("P_FEATURE_MAPVIEW", f.Name);
else if (f.Id === 100)
f.CurrentName = GetTextByKey("P_FEATURE_JOBSITES", f.Name);
else if (f.Id === 110)
f.CurrentName = GetTextByKey("P_FEATURE_AUTOCREATIONCONFIG", f.Name);
else if (f.Id === 120)
f.CurrentName = GetTextByKey("P_FEATURE_JOBSITEREQUIREMENTS", f.Name);
else if (f.Id === 130)
f.CurrentName = GetTextByKey("P_FEATURE_DISPATCHREQUESTS", f.Name);
else if (f.Id === 140)
f.CurrentName = GetTextByKey("P_FEATURE_SCHEDULER", f.Name);
else if (f.Id === 200)
f.CurrentName = GetTextByKey("P_FEATURE_ALERTSMANAGEMENT", f.Name);
else if (f.Id === 210)
f.CurrentName = GetTextByKey("P_FEATURE_WORKORDER", f.Name);
else if (f.Id === 220)
f.CurrentName = GetTextByKey("P_FEATURE_PREVENTATIVEMAINTENANCEPLAN", f.Name);
else if (f.Id === 230)
f.CurrentName = GetTextByKey("P_FEATURE_FUELRECORDS", f.Name);
else if (f.Id === 235)
f.CurrentName = GetTextByKey("P_FEATURE_CUSTOMERRECORD", f.Name);
else if (f.Id === 237)
f.CurrentName = GetTextByKey("P_FEATURE_WORKORDERCONFIGURATION", f.Name);
else if (f.Id === 239)
f.CurrentName = GetTextByKey("P_FEATURE_REOPENWORKORDERS", f.Name);
else if (f.Id === 245)
f.CurrentName = GetTextByKey("P_FEATURE_COMMUNICATEWITHCUSTOMER", f.Name);
else if (f.Id === 248)
f.CurrentName = GetTextByKey("P_FEATURE_WORKORDERSURVEYS", f.Name);
else if (f.Id === 249)
f.CurrentName = GetTextByKey("P_FEATURE_WORKORDERGENERATOR", f.Name);
else if (f.Id === 250)
f.CurrentName = GetTextByKey("P_FEATURE_XXXXXX", f.Name);
else if (f.Id === 252)
f.CurrentName = GetTextByKey("P_FEATURE_XXXXXX", f.Name);
else if (f.Id === 300)
f.CurrentName = GetTextByKey("P_FEATURE_FILTERQ", f.Name);
else if (f.Id === 400)
f.CurrentName = GetTextByKey("P_FEATURE_CREDENTIALS", f.Name);
else if (f.Id === 401)
f.CurrentName = GetTextByKey("P_FEATURE_JDLINK", f.Name);
else if (f.Id === 402)
f.CurrentName = GetTextByKey("P_FEATURE_JOHNDEERENOTIFICATIONS", f.Name);
else if (f.Id === 500)
f.CurrentName = GetTextByKey("P_FEATURE_USERS", f.Name);
else if (f.Id === 510)
f.CurrentName = GetTextByKey("P_FEATURE_CURFEWCONFIGURATION", f.Name);
else if (f.Id === 600)
f.CurrentName = GetTextByKey("P_FEATURE_MANAGEASSETS", f.Name);
else if (f.Id === 601)
f.CurrentName = GetTextByKey("P_FEATURE_ASSETPAIRING", f.Name);
else if (f.Id === 602)
f.CurrentName = GetTextByKey("P_FEATURE_ASSETATTRIBUTEADJUSTMENTS", f.Name);
else if (f.Id === 603)
f.CurrentName = GetTextByKey("P_FEATURE_ASSETGROUPS", f.Name);
else if (f.Id === 700)
f.CurrentName = GetTextByKey("P_FEATURE_FICMANAGEMENT", f.Name);
else if (f.Id === 800)
f.CurrentName = GetTextByKey("P_FEATURE_M3", f.Name);
else if (f.Id === 900)
f.CurrentName = GetTextByKey("P_FEATURE_OVERUNDERTRUCKINGALERTS", f.Name);
else if (f.Id === 1000)
f.CurrentName = GetTextByKey("P_FEATURE_MANAGEHARSHDRIVING", f.Name);
else if (f.Id === 1000)
f.CurrentName = GetTextByKey("P_FEATURE_MANAGEHARSHDRIVING", f.Name);
else if (f.Id === 1100)
f.CurrentName = GetTextByKey("P_FEATURE_MANAGETEMPLATES", f.Name);
else if (f.Id === 1101)
f.CurrentName = GetTextByKey("P_FEATURE_INSPECTIONREPORTS", f.Name);
else if (f.Id === 1110)
f.CurrentName = GetTextByKey("P_FEATURE_REASSIGNWORKORDERS", f.Name);
else if (f.Id === 1200)
f.CurrentName = GetTextByKey("P_FEATURE_MANAGETEMPLATES", f.Name);
else if (f.Id === 1201)
f.CurrentName = GetTextByKey("P_FEATURE_INSPECTIONREPORTS", f.Name);
else
f.CurrentName = f.Name;
}
}
function createFeatureModule(data) {
$('#security_message').empty();
if (!data)
return;
for (var i = 0; i < data.length; i++) {
var ft = data[i];
var div = $('<div class="div_module"></div>').text(ft.Module.CurrentName);
$('#security_message').append(div);
createFeatures(ft.Features);
}
}
function createFeatures(features) {
var nonetext = GetTextByKey("P_UM_NONE", "None");
var readonlytext = GetTextByKey("P_UM_READONLY", "Read Only");
var fullcontroltext = GetTextByKey("P_UM_FULLCONTROL", "Full Control");
var requestonlytext = GetTextByKey("P_UM_REQUESTONLY", "Request Only");
var tb = $('<table class="table_module" style="width:640px;"></table>');
$('#security_message').append(tb);
for (var i = 0; i < features.length; i++) {
var feature = features[i].Item1;
var tr = $('<tr></tr>');
tb.append(tr);
var td = $('<td class="td_module"></td>').text(feature.CurrentName);
tr.append(td);
for (var j = 0; j < feature.AvailablePermissions.length; j++) {
var pm = feature.AvailablePermissions[j];
td = $('<td style="width: 100px;"></td>');
tr.append(td);
var name = "";
if (pm === 0)
name = nonetext;
else if (pm === 1)
name = readonlytext;
else if (pm === 10)
name = requestonlytext;
else if (pm === 99999)
name = fullcontroltext;
var lab = $('<label></label>').text(name);
td.append(lab);
var ipt = $('<input type="radio" class="featureradio" />').attr('name', 'feature_' + feature.Id).val(pm).data('featureid', feature.Id);
td.append(ipt);
}
$("input:radio[name='feature_" + feature.Id + "'][value='" + features[i].Item2[0] + "']").prop("checked", true);
td = $('<td></td>');
tr.append(td);
}
}
/**************************End Security********************************/
/*****************************************************************************/
$(function () {
setPageTitle(GetTextByKey("P_USERSGROUPS", 'User Groups'), true);
InitGridData();
InitGridAvailableMachines();
InitGridSelectedMachines();
$("#div_container").tab();
$('#dialog_user_group').prop('iframe', true).dialog(function () {
showmaskbg(false);
});
OnRefresh();
$(window).resize(function () {
$("#grouplist").css("height", $(window).height() - $("#grouplist").offset().top - 4);
grid_dt && grid_dt.resize();
}).resize();
})
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div style="min-width: 400px;">
<div class="page_title" data-lgid="P_USERSGROUPS">User Groups</div>
<div class="function_title">
<span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_UG_ADD">Add</span>
<span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_UG_REFRESH">Refresh</span>
</div>
<div class="clear"></div>
<div id="grouplist"></div>
<div id="mask_bg" style="display: none;">
<div class="loading c-spin"></div>
</div>
<div class="dialog" id="dialog_user_group" style="display: none; z-index: 500; width: 840px;">
<div class="dialog-title"><span class="title" data-lgid="P_UG_ADDUSERGROUP">Add User Group</span><em class="dialog-close"></em></div>
<div class="dialog-content">
<div id="div_container">
<ul id="ul_container" class="tab_header" style="padding-top: 5px;">
<li id="tab_header_info" data-href="tab_groupinfo" class="selected" data-lgid="P_UG_GROUPINFORMATION">Group Information</li>
<li id="tab_header_security" data-href="tab_security" onclick="onsecurityclick()" data-lgid="P_UG_SECURITY">Security</li>
</ul>
<div id="tab_groupinfo" data-page="tab_groupinfo">
<div class="dialog-subheader" data-lgid="P_UG_USERGROUPPROPERTIES">User Group Properties</div>
<table class="group_table">
<tr style="height: 27px;">
<td class="label" data-lgid="P_UG_USERGROUPNAME_COLON">User Group Name:</td>
<td>
<input type="text" class="inputbox" id="dialog_group_name" tabindex="1" maxlength="100" /></td>
</tr>
<tr>
<td class="label" data-lgid="P_UG_DESCRIPTION_COLON">Description:</td>
<td>
<textarea class="inputbox" id="dialog_group_description" tabindex="2" maxlength="200"></textarea></td>
</tr>
</table>
<div class="dialog-subheader" data-lgid="P_UG_GROUPMEMBERS">Group Members</div>
<table class="group_table" style="min-height: 300px;">
<thead>
<tr>
<td data-lgid="P_UG_AVAILABLEUSERS">Available Users</td>
<td></td>
<td data-lgid="P_UG_ASSIGNEDGROUPMEMBERS">Assigned Group Members</td>
</tr>
</thead>
<tbody>
<tr>
<td style="width: 400px;">
<div id="availablemachinelist" style="height: 300px;"></div>
</td>
<td style="text-align: center; vertical-align: middle; width: 80px;">
<input class="ctl_button" type="button" value="&#xe62b;" tabindex="3" onclick="OnEditorAdd();" />
<input class="ctl_button" type="button" value="&#xe632;" tabindex="4" onclick="OnEditorAddAll();" />
<input class="ctl_button" type="button" value="&#xe62a;" tabindex="5" onclick="OnEditorRemove();" />
<input class="ctl_button" type="button" value="&#xe631;" tabindex="6" onclick="OnEditorRemoveAll();" />
</td>
<td style="width: 400px;">
<div id="selectedmachinelist" style="height: 300px;"></div>
</td>
</tr>
</tbody>
</table>
</div>
<div id="tab_security" data-page="tab_security" style="display: none">
<div id="security_message" style="padding-left: 50px; height: 440px; overflow: auto;">
</div>
</div>
<div class="mask_loading dialog" style="display: none;"></div>
</div>
</div>
<div class="dialog-func">
<input type="button" value="Cancel" data-lgid="P_UG_CANCEL" class="dialog-close" tabindex="8" />
<input type="button" onclick="OnDialogOK();" value="OK" data-lgid="P_UG_OK" tabindex="7" />
<div class="clear"></div>
</div>
<div class="maskbg" style="display: none;"></div>
</div>
</div>
</asp:Content>