467 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			467 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| <%@ Page Title="" Language="C#" MasterPageFile="~/Credentials/Credentials.master" AutoEventWireup="true" CodeFile="ManageAPICredential.aspx.cs" Inherits="ManageAPICredential" %>
 | |
| 
 | |
| <asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
 | |
|     <style type="text/css">
 | |
|         .dialog .dialog-title .dialog-close {
 | |
|             float: right;
 | |
|             margin-right: 6px;
 | |
|             cursor: pointer;
 | |
|         }
 | |
| 
 | |
|             .dialog .dialog-title .dialog-close:before {
 | |
|                 content: '\e600';
 | |
|             }
 | |
| 
 | |
|         .dialog-content table {
 | |
|             border-collapse: collapse;
 | |
|             width: 100%;
 | |
|         }
 | |
| 
 | |
|             .dialog-content table td {
 | |
|                 padding-top: 30px;
 | |
|             }
 | |
| 
 | |
|                 .dialog-content table td.label {
 | |
|                     width: 130px;
 | |
|                     text-align: right;
 | |
|                     padding-right: 10px;
 | |
|                     line-height: 24px;
 | |
|                     height: 24px;
 | |
|                     vertical-align: top;
 | |
|                 }
 | |
| 
 | |
|                 .dialog-content table td input,
 | |
|                 .dialog-content table td textarea {
 | |
|                     border: 1px solid #a9a9a9;
 | |
|                     width: 200px;
 | |
|                     height: 18px;
 | |
|                     padding: 1px;
 | |
|                 }
 | |
| 
 | |
|                     .dialog-content table td input[type="checkbox"] {
 | |
|                         border: none;
 | |
|                     }
 | |
| 
 | |
|                 .dialog-content table td textarea {
 | |
|                     height: 100px;
 | |
|                     max-width: 200px;
 | |
|                 }
 | |
| 
 | |
|         .icon {
 | |
|             font-family: CalciteWebCoreIcons;
 | |
|             cursor: default;
 | |
|         }
 | |
|     </style>
 | |
| 
 | |
|     <script type="text/javascript">
 | |
|         var credentialType = "AEMP";
 | |
|         var credentialList;
 | |
| 
 | |
|         credentialquery = function (method, param, callback, error, nolog) {
 | |
|             _network.request("Credentials/ManageAPICredential.aspx?tp=ashx", -1, method, param, callback, error, nolog);
 | |
|         }
 | |
| 
 | |
|         function OnDelete(cr) {
 | |
|             var cre = cr;
 | |
|             if (!cre) {
 | |
|                 return;
 | |
|             }
 | |
|             showConfirm(GetTextByKey("P_APICRE_DELETETHECREDENTIALTIPS", 'Do you want to delete the credential?'), GetTextByKey("P_APICRE_DELETECREDENTIAL", 'Delete Credential'), function () {
 | |
|                 credentialquery("DeleteApiCredential", cre.ID, function (data) {
 | |
|                     OnRefresh();
 | |
|                 }, function (err) {
 | |
|                     showAlert(GetTextByKey("P_APICRE_FAILEDDELETECREDENTIAL", 'Failed to delete this credential.'), GetTextByKey("P_APICRE_DELETECREDENTIAL", 'Delete Credential'));
 | |
|                 });
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function OnAdd() {
 | |
|             $('.tr_aicredential').hide();
 | |
|             $('#tr_enabled').hide();
 | |
|             creid = undefined;
 | |
|             $('#dialog_apiname').val('').removeAttr("disabled");
 | |
|             $('#dialog_username').val('');
 | |
|             $('#dialog_password').val('');
 | |
|             $('#dialog_apikey').val('');
 | |
|             $('#dialog_apisecret').val('');
 | |
|             $('#dialog_apitoken').val('');
 | |
|             $('#dialog_apitokensecret').val('');
 | |
|             $('#dialog_enabled').attr('checked', false);
 | |
|             $('#dialog_credential .dialog-title span.title').text(GetTextByKey("P_APICRE_ADDMANUFACTURE", 'Add Credential'));
 | |
|             $('#mask_bg').show();
 | |
|             $('#dialog_credential')
 | |
|                 .attr('act', 'add')
 | |
|                 .css({
 | |
|                     'top': (document.documentElement.clientHeight - $('#dialog_credential').height()) / 3,
 | |
|                     'left': (document.documentElement.clientWidth - $('#dialog_credential').width()) / 2
 | |
|                 })
 | |
|                 .showDialogfixed();
 | |
|             $('#dialog_urlkey').focus();
 | |
|         }
 | |
| 
 | |
|         var creid;
 | |
|         function OnEdit() {
 | |
|             var cre = grid_dt.source[grid_dt.selectedIndex].Values;
 | |
|             if (!cre) {
 | |
|                 creid = undefined;
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             $('#tr_enabled').show();
 | |
|             creid = cre.ID;
 | |
|             $('#dialog_apiname').val(cre.ApiDefinitionId).attr("disabled", "disabled");
 | |
|             if (cre.HasUserName) {
 | |
|                 $('#tr_username').show();
 | |
|                 $('#dialog_username').val(cre.UserName);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_username').hide();
 | |
|                 $('#dialog_username').val('');
 | |
|             }
 | |
| 
 | |
|             if (cre.HasPassword) {
 | |
|                 $('#tr_password').show();
 | |
|                 $('#dialog_password').val(cre.Password);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_password').hide();
 | |
|                 $('#dialog_password').val('');
 | |
|             }
 | |
| 
 | |
|             if (cre.HasApiKey) {
 | |
|                 $('#tr_apikey').show();
 | |
|                 $('#dialog_apikey').val(cre.ApiKey);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_apikey').hide();
 | |
|                 $('#dialog_apikey').val('');
 | |
|             }
 | |
| 
 | |
|             if (cre.HasApiSecret) {
 | |
|                 $('#tr_apisecret').show();
 | |
|                 $('#dialog_apisecret').val(cre.ApiSecret);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_apisecret').hide();
 | |
|                 $('#dialog_apisecret').val('');
 | |
|             }
 | |
| 
 | |
|             if (cre.HasApiToken) {
 | |
|                 $('#tr_apitoken').show();
 | |
|                 $('#dialog_apitoken').val(cre.ApiToken);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_apitoken').hide();
 | |
|                 $('#dialog_apitoken').val('');
 | |
|             }
 | |
| 
 | |
|             if (cre.HasApiTokenSecret) {
 | |
|                 $('#tr_apitokensecret').show();
 | |
|                 $('#dialog_apitokensecret').val(cre.ApiTokenSecret);
 | |
|             }
 | |
|             else {
 | |
|                 $('#tr_apitokensecret').hide();
 | |
|                 $('#dialog_apitokensecret').val('');
 | |
|             }
 | |
| 
 | |
|             $('#dialog_enabled').attr("checked", cre.IsEnabled);
 | |
|             $('#dialog_credential .dialog-title span.title').text(GetTextByKey("P_APICRE_EDITMANUFACTURE", 'Edit Credential'));
 | |
|             $('#mask_bg').show();
 | |
|             $('#dialog_credential')
 | |
|                 .attr('act', 'edit')
 | |
|                 .css({
 | |
|                     'top': (document.documentElement.clientHeight - $('#dialog_credential').height()) / 3,
 | |
|                     'left': (document.documentElement.clientWidth - $('#dialog_credential').width()) / 2
 | |
|                 })
 | |
|                 .showDialog();
 | |
|             $('#dialog_urlkey').focus();
 | |
|         }
 | |
| 
 | |
|         function OnDblClick(e) {
 | |
|             OnEdit();
 | |
|         }
 | |
| 
 | |
|         function OnRefresh() {
 | |
|             showloading(true);
 | |
|             credentialquery("GetAPICredentialDefs", '', function (data) {
 | |
|                 showloading(false);
 | |
|                 credentialList = data;
 | |
|                 showCredentialList(credentialList);
 | |
|             }, function (err) {
 | |
|                 showloading(false);
 | |
|             });
 | |
|         }
 | |
| 
 | |
| 
 | |
|         function getAPIDictionaries() {
 | |
|             credentialquery("GetAPIDictionaries", '', function (data) {
 | |
|                 var types = [];
 | |
|                 types.push($('<option value="-1"></option>'));
 | |
|                 if (data && data.length > 0) {
 | |
|                     for (var i = 0; i < data.length; i++) {
 | |
|                         var type = data[i];
 | |
|                         types.push($('<option></option>').prop('selected', i == 0).val(type.Id).text(type.FriendlyName).data('dic', type));
 | |
|                     }
 | |
|                 } else {
 | |
|                     types[0].prop('selected', true);
 | |
|                 }
 | |
| 
 | |
|                 $('#dialog_apiname').empty().append(types);
 | |
|             }, function (err) {
 | |
|             });
 | |
|         }
 | |
| 
 | |
| 
 | |
|         function showCredentialList(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() {
 | |
|             $('#btnEdit').attr("disabled", "disabled");
 | |
| 
 | |
|             grid_dt = new GridView('#credentiallist');
 | |
|             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: 'ApiName', caption: GetTextByKey("P_APICRE_APINAME", "API Name"), valueIndex: 'ApiName', css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'UserName', caption: GetTextByKey("P_APICRE_USERNAME", "User Name"), valueIndex: 'UserName', css: { 'width': 200, 'text-align': 'left' } },
 | |
|                 { name: 'IsEnabled', caption: GetTextByKey("P_APICRE_ENABLED", "Enabled"), valueIndex: 'IsEnabled', css: { 'width': 200, '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_APICRE_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_APICRE_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) {
 | |
|                     creid = rowdata.Values.ID;
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         function OnDialogOK() {
 | |
|             var item = {
 | |
|                 'ApiDefinitionId': $('#dialog_apiname').val(),
 | |
|                 'ApiName': $("#dialog_apiname").find("option:selected").text(),
 | |
|                 'UserName': $('#dialog_username').val().replace(/(^\s*)|(\s*$)/g, ''),
 | |
|                 'Password': $('#dialog_password').val(),
 | |
|                 'ApiKey': $('#dialog_apikey').val().replace(/(^\s*)|(\s*$)/g, ''),
 | |
|                 'ApiSecret': $('#dialog_apisecret').val().replace(/(^\s*)|(\s*$)/g, ''),
 | |
|                 'ApiToken': $('#dialog_apitoken').val().replace(/(^\s*)|(\s*$)/g, ''),
 | |
|                 'ApiTokenSecret': $('#dialog_apitokensecret').val().replace(/(^\s*)|(\s*$)/g, ''),
 | |
|                 'IsEnabled': $('#dialog_enabled').attr("checked") == "checked"
 | |
|             };
 | |
|             var alerttitle;
 | |
|             if (creid) {
 | |
|                 item.ID = creid;
 | |
|                 alerttitle = GetTextByKey("P_APICRE_EDITMANUFACTURE", "Edit Credential");
 | |
|             } else {
 | |
|                 item.ID = "-1";
 | |
|                 item.IsEnabled = true;
 | |
|                 alerttitle = GetTextByKey("P_APICRE_ADDMANUFACTURE", "Add Credential");
 | |
|             }
 | |
|             if (!item.ApiName || item.ApiName.length == 0) {
 | |
|                 showAlert(GetTextByKey("P_APICRE_APINAMENOTBEEMPTY", 'API Name cannot be empty.'), alerttitle);
 | |
|                 $('#dialog_apiname').focus();
 | |
|                 return;
 | |
|             }
 | |
| 
 | |
|             showloading(true);
 | |
|             var param = JSON.stringify(item);
 | |
|             param = htmlencode(param);
 | |
|             credentialquery("UpdateApiCredentialDefs", param, function (data) {
 | |
|                 showloading(false);
 | |
|                 if (data !== 'OK') {
 | |
|                     showAlert(data, GetTextByKey("P_APICRE_SAVEMANUFACTURE", 'Save Credential'));
 | |
|                 } else {
 | |
|                     $('#dialog_credential').hideDialog();
 | |
|                     OnRefresh();
 | |
|                 }
 | |
|             }, function (err) {
 | |
|                 showloading(false);
 | |
|                 showAlert(GetTextByKey("P_APICRE_FAILEDTOSAVECREDENTIAL", 'Failed to save credential.'), GetTextByKey("P_APICRE_SAVEMANUFACTURE", 'Save Credential'));
 | |
|             });
 | |
|         }
 | |
| 
 | |
|         function setInput(dic) {
 | |
|             $('#tr_username').hide();
 | |
|             $('#tr_password').hide();
 | |
|             $('#tr_apikey').hide();
 | |
|             $('#tr_apitoken').hide();
 | |
|             $('#tr_apisecret').hide();
 | |
|             $('#tr_apitokensecret').hide();
 | |
|             $('#dialog_username').val('');
 | |
|             $('#dialog_password').val('');
 | |
|             $('#dialog_apikey').val('');
 | |
|             $('#dialog_apisecret').val('');
 | |
|             $('#dialog_apitoken').val('');
 | |
|             $('#dialog_apitokensecret').val('');
 | |
|             if (dic) {
 | |
|                 if (dic.ApiUsername) {
 | |
|                     $('#tr_username').show();
 | |
|                 }
 | |
|                 if (dic.ApiPassword) {
 | |
|                     $('#tr_password').show();
 | |
|                 }
 | |
|                 if (dic.ApiKey) {
 | |
|                     $('#tr_apikey').show();
 | |
|                 }
 | |
|                 if (dic.ApiSecret) {
 | |
|                     $('#tr_apisecret').show();
 | |
|                 }
 | |
|                 if (dic.ApiToken) {
 | |
|                     $('#tr_apitoken').show();
 | |
|                 }
 | |
|                 if (dic.ApiTokenSecret) {
 | |
|                     $('#tr_apitokensecret').show();
 | |
|                 }
 | |
|             }
 | |
|         }
 | |
| 
 | |
|         $(function () {
 | |
|             setPageTitle(GetTextByKey("P_APICREDENTIALS", 'API Credentials'), true);
 | |
|             InitGridData();
 | |
|             getAPIDictionaries();
 | |
| 
 | |
|             $("#dialog_apiname").change(function () {
 | |
|                 var dic = $("#dialog_apiname").find("option:selected").data("dic");
 | |
|                 setInput(dic);
 | |
|             })
 | |
|             $('#dialog_credential').dialog(function () {
 | |
|                 $('#mask_bg').hide();
 | |
|             });
 | |
|             OnRefresh();
 | |
|             $(window).resize(function () {
 | |
|                 $("#credentiallist").css("height", $(window).height() - $("#credentiallist").offset().top - 4);
 | |
|                 grid_dt && grid_dt.resize();
 | |
|             }).resize();
 | |
|         });
 | |
| 
 | |
|     </script>
 | |
| </asp:Content>
 | |
| 
 | |
| <asp:Content ID="Content3" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
 | |
|     <div style="min-width: 400px;">
 | |
|         <div class="page_title" data-lgid="P_APICREDENTIALS">API Credentials</div>
 | |
|         <div class="function_title">
 | |
|             <span class="sbutton iconadd" onclick="OnAdd();" data-lgid="P_APICRE_ADD">Add</span>
 | |
|             <span class="sbutton iconrefresh" onclick="OnRefresh();" data-lgid="P_APICRE_REFRESH">Refresh</span>
 | |
|         </div>
 | |
|         <div class="clear"></div>
 | |
|         <div id="credentiallist"></div>
 | |
|     </div>
 | |
| 
 | |
|     <div id="mask_bg">
 | |
|         <div class="loading c-spin"></div>
 | |
|     </div>
 | |
|     <div class="dialog" id="dialog_credential" style="display: none; width: 500px;">
 | |
|         <div class="dialog-title"><span class="title" data-lgid="P_APICRE_ADDMANUFACTURE">Add Credential</span><em class="dialog-close"></em></div>
 | |
|         <div class="dialog-content" style="padding-left: 50px;">
 | |
|             <table>
 | |
|                 <tr>
 | |
|                     <td class="label" data-lgid="P_APICRE_APINAME_COLON">API Name:</td>
 | |
|                     <td>
 | |
|                         <select id="dialog_apiname" tabindex="1" style="width: 200px;">
 | |
|                         </select></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_username" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_USERNAME_COLON">User Name:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_username" maxlength="50" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_password" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_PASSWORD_COLON">Password:</td>
 | |
|                     <td>
 | |
|                         <input type="password" id="dialog_password" maxlength="50" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_apikey" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_APIKEY_COLON">API Key:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_apikey" maxlength="200" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_apisecret" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_APISECRET_COLON">API Secret:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_apisecret" maxlength="200" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_apitoken" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_APITOKEN_COLON">API Token:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_apitoken" maxlength="200" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_apitokensecret" class="tr_aicredential" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_APITOKENSECRET_COLON">API Token Secret:</td>
 | |
|                     <td>
 | |
|                         <input type="text" id="dialog_apitokensecret" maxlength="200" tabindex="1" /></td>
 | |
|                 </tr>
 | |
|                 <tr id="tr_enabled" style="display: none;">
 | |
|                     <td class="label" data-lgid="P_APICRE_ENABLED_COLON">Enabled:</td>
 | |
|                     <td>
 | |
|                         <input type="checkbox" id="dialog_enabled" style="width: 18px; margin: 0 auto;" tabindex="4" />
 | |
|                     </td>
 | |
|                 </tr>
 | |
|             </table>
 | |
|         </div>
 | |
|         <div class="dialog-func">
 | |
|             <input type="button" value="Cancel" data-lgid="P_APICRE_CANCEL" class="dialog-close" tabindex="6" />
 | |
|             <input type="button" onclick="OnDialogOK();" value="OK" data-lgid="P_APICRE_OK" tabindex="5" />
 | |
|             <div class="clear"></div>
 | |
|         </div>
 | |
|     </div>
 | |
| </asp:Content>
 | |
| 
 | |
| 
 |