This section allows you to view all posts made by this member. Note that you can only see posts made in areas you currently have access to.
1
Web Server - Ask For Help / Re: WebWebServiceMethod Raw request data
« on: September 10, 2024, 05:56:56 AM »
Thanks. I was looking for requestData or something like that but was relying on Clarion Auto complete as all my web searches failed to find the answer. requestData doesn't show up in Auto Complete ( on my install of clarion ) but it compiles just fine. Auto complete hasn't let me down like that before. Thanks again.
Jeff
Jeff
2
Web Server - Ask For Help / WebWebServiceMethod Raw request data
« on: September 09, 2024, 10:01:28 AM »
I have a NetWebServiceMethod and would like to get access to the request information. in the example below I want access to POST and all the header and body information.
POST /database/databaseCMUSERW HTTP/1.1
Accept: application/json; charset=utf-8
...
...
...
{
"CurrentClientVersion" : 2,
"CurrentUserLogin" : "MARATHON"
}
If I cant have that can I get access to just the body part of the post without knowing what will be in the body section without declaring individual parameter's? I just want the entire request data as its not in xml nor json format. I am looking for something like p_web.GetRequestText I found p_web.WholeURL but thats just this part "POST /database/databaseCMUSERW HTTP/1.1".
{
"CurrentClientVersion" : 2,
"CurrentUserLogin" : "MARATHON"
}
Jeff
POST /database/databaseCMUSERW HTTP/1.1
Accept: application/json; charset=utf-8
...
...
...
{
"CurrentClientVersion" : 2,
"CurrentUserLogin" : "MARATHON"
}
If I cant have that can I get access to just the body part of the post without knowing what will be in the body section without declaring individual parameter's? I just want the entire request data as its not in xml nor json format. I am looking for something like p_web.GetRequestText I found p_web.WholeURL but thats just this part "POST /database/databaseCMUSERW HTTP/1.1".
{
"CurrentClientVersion" : 2,
"CurrentUserLogin" : "MARATHON"
}
Jeff
3
Web Server - Ask For Help / Re: Changing the json results of a netwebservicemethod without using external name
« on: April 05, 2024, 05:50:26 AM »
Fresh day with fresh results. . I used the name of the view 'MSCView' and not what I was shown in debugview++ 'View|1'. Once I changed this I saw the translation take place for my return results.
What worked is in BuildResultsFields at Priority 5000 I added code similar to the following.
renameView = 'view|1'
renameViewField = UPPER('MSCVER:VersionSequence')
renameViewJson = 'VersionSequence'
json.reflection.SetRename(renameView, renameViewField, renameViewJson)
Jeff
What worked is in BuildResultsFields at Priority 5000 I added code similar to the following.
renameView = 'view|1'
renameViewField = UPPER('MSCVER:VersionSequence')
renameViewJson = 'VersionSequence'
json.reflection.SetRename(renameView, renameViewField, renameViewJson)
Jeff
4
Web Server - Ask For Help / Changing the json results of a netwebservicemethod without using external name
« on: April 04, 2024, 05:14:15 AM »
I have several tables that I need to change the way the json is created. I originally had used the external name of the table field to force the json to use upper and lower case. This worked great but, I have to convert these tables to the IPDriver which has proven to not like external names on any fields. Removing the external names fixes all my IPDriver problems but now my nettalk web service methods are not properly setup to translate the json. I found that reflection might be able to solve my issue. I have been able to use json.reflection.walk() to see what is being done with the json. I have been able to use json.reflection.rename() to change the reflection entry. I am not able to figure out where to put this code as I am not getting the results I would like. Nothing is actually getting renamed. I only see that I will need to make these translations on loading and saving of the table for gets as well as updates and adds.
from debugview
797 611.954211 7984 MSCClientWeb.exe [3][rf]FIELD: GroupName=[MSCVERView] ColumnName=[MSCVER:VERSIONSEQUENCE] Num=[0] Type=[rf:NotSet] Rename=[VersionSequence] Pic=[] Attributes=[]
Any help would be appreciated on this.
from debugview
797 611.954211 7984 MSCClientWeb.exe [3][rf]FIELD: GroupName=[MSCVERView] ColumnName=[MSCVER:VERSIONSEQUENCE] Num=[0] Type=[rf:NotSet] Rename=[VersionSequence] Pic=[] Attributes=[]
Any help would be appreciated on this.
5
Web Server - Share Knowledge / CyberSource Payment API
« on: April 13, 2023, 07:07:23 AM »
Code for creating the post and header information.
MAP
CyberSource:FormatMessage (),STRING
CyberSource:GenerateHeader (*NetWebClient pWeb,STRING PostString)
CyberSource:GenerateSignatureFromParams(STRING signatureParams, STRING secretKey),STRING
END
CODE
PostURL = 'https://apitest.cybersource.com/pts/v2/payments'
PostString = CyberSource:FormatMessage()
CyberSource:GenerateHeader(ThisWebClient, PostString)
ThisWebClient.Post(PostURL,PostString)
CyberSource:FormatMessage PROCEDURE
element Group,Name('element')
clientReferenceInformation Group,Name('clientReferenceInformation')
code_ STRING(255),Name('code')
End
paymentInformation Group,Name('paymentInformation')
card Group,Name('card')
number STRING(255),Name('number')
expirationMonth STRING(255),Name('expirationMonth')
expirationYear STRING(255),Name('expirationYear')
End
End
orderInformation Group,Name('orderInformation')
amountDetails Group,Name('amountDetails')
totalAmount STRING(255),Name('totalAmount')
currency STRING(255),Name('currency')
End
billTo Group,Name('billTo')
firstName STRING(255),Name('firstName')
lastName STRING(255),Name('lastName')
address1 STRING(255),Name('address1')
locality STRING(255),Name('locality')
administrativeArea STRING(255),Name('administrativeArea')
postalCode STRING(255),Name('postalCode')
country STRING(255),Name('country')
email STRING(255),Name('email')
phoneNumber STRING(255),Name('phoneNumber')
End
End
End
json jsonClass
strElement StringTheory
CODE
CLEAR(element)
element.clientReferenceInformation.code_ = 'TC50171_3'
element.paymentInformation.card.number = '4111111111111111'
element.paymentInformation.card.expirationMonth = '12'
element.paymentInformation.card.expirationYear = '2031'
element.orderInformation.amountDetails.totalAmount = '102.21'
element.orderInformation.amountDetails.currency = 'USD'
element.orderInformation.billTo.firstName = 'John'
element.orderInformation.billTo.lastName = 'Doe'
element.orderInformation.billTo.address1 = '1 Market St'
element.orderInformation.billTo.locality = 'san francisco'
element.orderInformation.billTo.administrativeArea = 'CA'
element.orderInformation.billTo.postalCode = '94105'
element.orderInformation.billTo.country = 'US'
element.orderInformation.billTo.email = 'test@cybs.com'
element.orderInformation.billTo.phoneNumber = '4158880000'
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Save(element,strElement)
strElement.LineEndings(st:Unix)
return strElement.GetValue()
CyberSource:GenerateHeader PROCEDURE (*NetWebClient pWeb,STRING PostString)
lSecretKey STRING(100)
KeyId STRING(100)
MerchantId STRING(100)
HostName STRING(100)
HostTarget STRING(100)
strPost StringTheory
strHost StringTheory
CODE
lSecretKey = 'yourkey'
KeyId = 'yourid'
MerchantId = 'yourco'
HostName = 'apitest.cybersource.com'
HostTarget = 'post /pts/v2/payments/'
strPost.SetValue(CLIP(PostString))
strPost.SetValue(NetMakeHash(strPost.GetValuePtr(),strPost.Length(),net:CALG_SHA_256))
strPost.Base64Encode()
strHost.SetValue('host: ' & CLIP(HostName) & '<10>' &|
'(request-target): ' & CLIP(HostTarget) & '<10>' &|
'digest: SHA-256=' & strPost.GetValue() & '<10>' &|
'v-c-merchant-id: ' & CLIP(MerchantId) & '')
pWeb.CustomHeader = 'v-c-merchant-id: ' & CLIP(MerchantId) & '<13,10>' &|
'v-c-date: "' & CLIP(pWeb.CreateGMTDate()) & '"' & '<13,10>' &|
'digest: SHA-256=' & strPost.GetValue() & '<13,10>' &|
'Signature: keyid="' & CLIP(KeyId) & '", algorithm="HmacSHA256",' &|
' headers="host (request-target) digest v-c-merchant-id", signature="' &|
CyberSource:GenerateSignatureFromParams(strHost.GetValue(), lSecretKey) & '"'
CyberSource:GenerateSignatureFromParams PROCEDURE (STRING signatureParams,STRING secretKey) ! Declare Procedure
strParams StringTheory
strKey StringTheory
CODE
strParams.SetValue(signatureParams,st:clip)
strKey.SetValue(secretKey,st:clip)
strKey.Base64Decode()
strParams.ToUnicode()
strParams.SetValue(NetMakeHMAC(strParams.GetValuePtr(), strParams.Length(), strKey.GetValue(), net:CALG_SHA_256))
strParams.Base64Encode()
return strParams.GetValue()
MAP
CyberSource:FormatMessage (),STRING
CyberSource:GenerateHeader (*NetWebClient pWeb,STRING PostString)
CyberSource:GenerateSignatureFromParams(STRING signatureParams, STRING secretKey),STRING
END
CODE
PostURL = 'https://apitest.cybersource.com/pts/v2/payments'
PostString = CyberSource:FormatMessage()
CyberSource:GenerateHeader(ThisWebClient, PostString)
ThisWebClient.Post(PostURL,PostString)
CyberSource:FormatMessage PROCEDURE
element Group,Name('element')
clientReferenceInformation Group,Name('clientReferenceInformation')
code_ STRING(255),Name('code')
End
paymentInformation Group,Name('paymentInformation')
card Group,Name('card')
number STRING(255),Name('number')
expirationMonth STRING(255),Name('expirationMonth')
expirationYear STRING(255),Name('expirationYear')
End
End
orderInformation Group,Name('orderInformation')
amountDetails Group,Name('amountDetails')
totalAmount STRING(255),Name('totalAmount')
currency STRING(255),Name('currency')
End
billTo Group,Name('billTo')
firstName STRING(255),Name('firstName')
lastName STRING(255),Name('lastName')
address1 STRING(255),Name('address1')
locality STRING(255),Name('locality')
administrativeArea STRING(255),Name('administrativeArea')
postalCode STRING(255),Name('postalCode')
country STRING(255),Name('country')
email STRING(255),Name('email')
phoneNumber STRING(255),Name('phoneNumber')
End
End
End
json jsonClass
strElement StringTheory
CODE
CLEAR(element)
element.clientReferenceInformation.code_ = 'TC50171_3'
element.paymentInformation.card.number = '4111111111111111'
element.paymentInformation.card.expirationMonth = '12'
element.paymentInformation.card.expirationYear = '2031'
element.orderInformation.amountDetails.totalAmount = '102.21'
element.orderInformation.amountDetails.currency = 'USD'
element.orderInformation.billTo.firstName = 'John'
element.orderInformation.billTo.lastName = 'Doe'
element.orderInformation.billTo.address1 = '1 Market St'
element.orderInformation.billTo.locality = 'san francisco'
element.orderInformation.billTo.administrativeArea = 'CA'
element.orderInformation.billTo.postalCode = '94105'
element.orderInformation.billTo.country = 'US'
element.orderInformation.billTo.email = 'test@cybs.com'
element.orderInformation.billTo.phoneNumber = '4158880000'
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Save(element,strElement)
strElement.LineEndings(st:Unix)
return strElement.GetValue()
CyberSource:GenerateHeader PROCEDURE (*NetWebClient pWeb,STRING PostString)
lSecretKey STRING(100)
KeyId STRING(100)
MerchantId STRING(100)
HostName STRING(100)
HostTarget STRING(100)
strPost StringTheory
strHost StringTheory
CODE
lSecretKey = 'yourkey'
KeyId = 'yourid'
MerchantId = 'yourco'
HostName = 'apitest.cybersource.com'
HostTarget = 'post /pts/v2/payments/'
strPost.SetValue(CLIP(PostString))
strPost.SetValue(NetMakeHash(strPost.GetValuePtr(),strPost.Length(),net:CALG_SHA_256))
strPost.Base64Encode()
strHost.SetValue('host: ' & CLIP(HostName) & '<10>' &|
'(request-target): ' & CLIP(HostTarget) & '<10>' &|
'digest: SHA-256=' & strPost.GetValue() & '<10>' &|
'v-c-merchant-id: ' & CLIP(MerchantId) & '')
pWeb.CustomHeader = 'v-c-merchant-id: ' & CLIP(MerchantId) & '<13,10>' &|
'v-c-date: "' & CLIP(pWeb.CreateGMTDate()) & '"' & '<13,10>' &|
'digest: SHA-256=' & strPost.GetValue() & '<13,10>' &|
'Signature: keyid="' & CLIP(KeyId) & '", algorithm="HmacSHA256",' &|
' headers="host (request-target) digest v-c-merchant-id", signature="' &|
CyberSource:GenerateSignatureFromParams(strHost.GetValue(), lSecretKey) & '"'
CyberSource:GenerateSignatureFromParams PROCEDURE (STRING signatureParams,STRING secretKey) ! Declare Procedure
strParams StringTheory
strKey StringTheory
CODE
strParams.SetValue(signatureParams,st:clip)
strKey.SetValue(secretKey,st:clip)
strKey.Base64Decode()
strParams.ToUnicode()
strParams.SetValue(NetMakeHMAC(strParams.GetValuePtr(), strParams.Length(), strKey.GetValue(), net:CALG_SHA_256))
strParams.Base64Encode()
return strParams.GetValue()
6
Web Server - Ask For Help / WebService and SetSessionLoggedIn
« on: February 22, 2023, 10:56:42 AM »
I would like to have two services.
ServiceA is the login service call
ServiceB must have been logged in using ServiceA
Are there examples of how to use SetSessionLoggedIn with WebServices. I cant figure it out on my own. I saw that there was going to be a webinar on this but couldnt find it.
I tried SetSessionLoggedIn(True) in ServiceA but it appears that this has a different SessionID then when I try to GetSessionLoggedIn in ServiceB. I can see that there seams to be a cookie SessionIDX. but not sure if this is helpful or not. How I would use it in ServiceB.
I found this routine
CheckForToken routine
Should I be swapping out the session ID here? If so then how is that done? On the client I am suing nettalk for all calls to the web services.
Jeff
ServiceA is the login service call
ServiceB must have been logged in using ServiceA
Are there examples of how to use SetSessionLoggedIn with WebServices. I cant figure it out on my own. I saw that there was going to be a webinar on this but couldnt find it.
I tried SetSessionLoggedIn(True) in ServiceA but it appears that this has a different SessionID then when I try to GetSessionLoggedIn in ServiceB. I can see that there seams to be a cookie SessionIDX. but not sure if this is helpful or not. How I would use it in ServiceB.
I found this routine
CheckForToken routine
Should I be swapping out the session ID here? If so then how is that done? On the client I am suing nettalk for all calls to the web services.
Jeff
7
Web Server - Ask For Help / Re: load Webhook POST data load to a queue
« on: May 12, 2022, 04:51:55 AM »
Reading the docs is where its at!
Is the code I chose wrong? It works so I am curious to know if there is a different reason to use your coding method.
Jeff
Is the code I chose wrong? It works so I am curious to know if there is a different reason to use your coding method.
Jeff
8
Web Server - Ask For Help / Re: load Webhook POST data load to a queue
« on: May 11, 2022, 05:30:19 AM »
This is what worked.
json.LoadString(p_web.getvalue('_json_'))
json.Load(element)
json.LoadString(p_web.getvalue('_json_'))
json.Load(element)
9
Web Server - Ask For Help / Re: load Webhook POST data load to a queue
« on: May 11, 2022, 04:47:13 AM »
I put this exact line of code in my program and I no longer get a GPF. The result is that I now have a empty group without any of the post data. Not the result I had hoped for.
Here is my new code
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Load(element,p_web.getvalue('_json_'))
json.Save(element,'D:\dev\json\webjson.txt')
Here is my POST
POST / HTTP/1.1
Host: 127.0.0.1:88
Connection: keep-alive
Content-Length: 434
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
sec-ch-ua-platform: "Windows"
Content-Type: application/json
Accept: */*
Origin: chrome-extension://gmmkjpcadciiokjpikmkkmapphbmdjok
Sec-Fetch-Site: none
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: SESSIONIDX=7jL0Kz8nZLNojwuLMN3hmVMJaV3SxK
{"notificationId":"e73d5945-f462-46aa-b757-37e4635c7fac","eventType":"net.authorize.customer.subscription.expiring","eventDate":"2022-05-11T09:21:04.1574729Z","webhookId":"5f77108b-039f-4c20-9157-b0b9049c4ddf","payload":{"name":"TEST PERSON","amount":100,"status":"active","profile":{"customerProfileId":505297168,"customerPaymentProfileId":508334454,"customerShippingAddressId":507148838},"entityName":"subscription","id":"8119550"}}
Here is my result.
{
"notificationId" : "",
"eventType" : "",
"eventDate" : "",
"webhookId" : "",
"payload" : {
"responseCode" : 0,
"authCode" : "",
"avsResponse" : "",
"authAmount" : 0,
"invoiceNumber" : "",
"entityName" : "",
"id" : ""
}
}
What am I not understanding
Jeff
Here is my new code
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Load(element,p_web.getvalue('_json_'))
json.Save(element,'D:\dev\json\webjson.txt')
Here is my POST
POST / HTTP/1.1
Host: 127.0.0.1:88
Connection: keep-alive
Content-Length: 434
sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="101", "Google Chrome";v="101"
sec-ch-ua-mobile: ?0
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.54 Safari/537.36
sec-ch-ua-platform: "Windows"
Content-Type: application/json
Accept: */*
Origin: chrome-extension://gmmkjpcadciiokjpikmkkmapphbmdjok
Sec-Fetch-Site: none
Sec-Fetch-Mode: cors
Sec-Fetch-Dest: empty
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
Cookie: SESSIONIDX=7jL0Kz8nZLNojwuLMN3hmVMJaV3SxK
{"notificationId":"e73d5945-f462-46aa-b757-37e4635c7fac","eventType":"net.authorize.customer.subscription.expiring","eventDate":"2022-05-11T09:21:04.1574729Z","webhookId":"5f77108b-039f-4c20-9157-b0b9049c4ddf","payload":{"name":"TEST PERSON","amount":100,"status":"active","profile":{"customerProfileId":505297168,"customerPaymentProfileId":508334454,"customerShippingAddressId":507148838},"entityName":"subscription","id":"8119550"}}
Here is my result.
{
"notificationId" : "",
"eventType" : "",
"eventDate" : "",
"webhookId" : "",
"payload" : {
"responseCode" : 0,
"authCode" : "",
"avsResponse" : "",
"authAmount" : 0,
"invoiceNumber" : "",
"entityName" : "",
"id" : ""
}
}
What am I not understanding
Jeff
10
Web Server - Ask For Help / load Webhook POST data load to a queue
« on: May 10, 2022, 08:32:27 AM »
How can I access the POST data section and load this into a group.
The data is in json format. I have tried my best to work with p_web.RequestData.
Here is the group
element Group,Name('element')
notificationId STRING(255),Name('notificationId')
eventType STRING(255),Name('eventType')
eventDate STRING(255),Name('eventDate')
webhookId STRING(255),Name('webhookId')
payload Group,Name('payload')
responseCode Real,Name('responseCode')
authCode STRING(255),Name('authCode')
avsResponse STRING(255),Name('avsResponse')
authAmount Real,Name('authAmount')
invoiceNumber STRING(255),Name('invoiceNumber')
entityName STRING(255),Name('entityName')
id STRING(255),Name('id')
End
End
json jsonClass
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Load(element,p_web.RequestData.DataStringTheory) ! Load From a StringTheory object
This code GPF's
This is the POST data
{"notificationId":"1a5bf2dd-e05d-4224-8157-459f0f11f40e","eventType":"net.authorize.payment.authcapture.created","eventDate":"2022-05-06T08:49:50.3674712Z","webhookId":"5f77108b-039f-4c20-9157-b0b9049c4ddf","payload":{"responseCode":1,"authCode":"AQSOEP","avsResponse":"P","authAmount":123.1,"invoiceNumber":"211210110","entityName":"transaction","id":"40091147498"}}
Jeff
The data is in json format. I have tried my best to work with p_web.RequestData.
Here is the group
element Group,Name('element')
notificationId STRING(255),Name('notificationId')
eventType STRING(255),Name('eventType')
eventDate STRING(255),Name('eventDate')
webhookId STRING(255),Name('webhookId')
payload Group,Name('payload')
responseCode Real,Name('responseCode')
authCode STRING(255),Name('authCode')
avsResponse STRING(255),Name('avsResponse')
authAmount Real,Name('authAmount')
invoiceNumber STRING(255),Name('invoiceNumber')
entityName STRING(255),Name('entityName')
id STRING(255),Name('id')
End
End
json jsonClass
json.start()
json.SetTagCase(jf:CaseAsIs)
json.Load(element,p_web.RequestData.DataStringTheory) ! Load From a StringTheory object
This code GPF's
This is the POST data
{"notificationId":"1a5bf2dd-e05d-4224-8157-459f0f11f40e","eventType":"net.authorize.payment.authcapture.created","eventDate":"2022-05-06T08:49:50.3674712Z","webhookId":"5f77108b-039f-4c20-9157-b0b9049c4ddf","payload":{"responseCode":1,"authCode":"AQSOEP","avsResponse":"P","authAmount":123.1,"invoiceNumber":"211210110","entityName":"transaction","id":"40091147498"}}
Jeff
11
Web Server - Ask For Help / Re: How do I update a record from a netweb browse button
« on: October 08, 2021, 07:48:55 AM »
Send button click to server seems to be what I am looking for.
12
Web Server - Ask For Help / How do I update a record from a netweb browse button
« on: October 08, 2021, 07:28:36 AM »
I want to run a source procedure from a betwebbrowse button
I created my button and onclick I put the name of the procedure. When I run my website I get a message that the page is not found.
What I want to do is add a button to a browse (I think I figured this out) call my source (not sure i understand how this works) and have my source re serve the browse it was called from.
Ideally an example app i can look at would be fantastic!
Here is my source.
UpdateMSCCLSource PROCEDURE (NetWebServerWorker p_web) ! Declare Procedure
FilesOpened BYTE(0)
CODE
DO OpenFiles
MSCCS:SystemGUID = p_web.GetSessionValue('MSCCS:SystemGUID')
IF Access:MSCCS.Fetch(MSCCS:SystemGUIDKey) = Level:Benign AND MSCCS:SessionState <> 'Inactive'
MSCCS:Action = 0
Access:MSCCS.Update()
END
DO CloseFiles
OpenFiles ROUTINE
Access:MSCCS.Open()
Access:MSCCS.UseFile()
FilesOpened = True
CloseFiles ROUTINE
IF FilesOpened THEN
Access:MSCCS.Close()
FilesOpened = False
END
Thank You.
I created my button and onclick I put the name of the procedure. When I run my website I get a message that the page is not found.
What I want to do is add a button to a browse (I think I figured this out) call my source (not sure i understand how this works) and have my source re serve the browse it was called from.
Ideally an example app i can look at would be fantastic!
Here is my source.
UpdateMSCCLSource PROCEDURE (NetWebServerWorker p_web) ! Declare Procedure
FilesOpened BYTE(0)
CODE
DO OpenFiles
MSCCS:SystemGUID = p_web.GetSessionValue('MSCCS:SystemGUID')
IF Access:MSCCS.Fetch(MSCCS:SystemGUIDKey) = Level:Benign AND MSCCS:SessionState <> 'Inactive'
MSCCS:Action = 0
Access:MSCCS.Update()
END
DO CloseFiles
OpenFiles ROUTINE
Access:MSCCS.Open()
Access:MSCCS.UseFile()
FilesOpened = True
CloseFiles ROUTINE
IF FilesOpened THEN
Access:MSCCS.Close()
FilesOpened = False
END
Thank You.
13
Web Server - Ask For Help / Re: How to add CSS and apply to a button on a netwebform
« on: April 22, 2020, 04:19:47 AM »
I noticed a small mistake in my message which i already corrected in my code. .msc-OptionButton should be .msc-optionbutton since CSS is case sensitive. I tried your idea to add a space but this did nothing different.
Does it look like I am doing this correctly?
Jeff
Does it look like I am doing this correctly?
Jeff
14
Web Server - Ask For Help / How to add CSS and apply to a button on a netwebform
« on: April 21, 2020, 11:18:46 AM »
I have a custom css file located in
application folder\web\styles\custom.css
I added a class like the following
.msc-OptionButton {
display: block;
width: 5em;
height: 2em;
border: none;
background-color: red;
color: black;
padding: 1px 1px;
font-size: 48px !important;
text-align: center;
}
I the NetTalk ThisWebServer under Settings->styles->Files->CSS Style Files have my Custom.css file listed 'Custom.css' Browser all and is included in themese.css checked.
Under NetWeb Form->Actions->Fields->Properties->Field BUTTON properties->CSS->Button CSS Class='msc-optionbutton'
When I inspect the element in chrome I see the following
<button type="button" name="WebLookup_AccountDetail_btn" id="WebLookup_AccountDetail_btnh8o8" value="Account Detail" class="nt-flex msc-optionbutton ui-button ui-corner-all ui-widget" onclick="location.href='WebLookup_AccountDetailMenu?&PressedButton='" data-form="weblookup_accountpage">Account Detail</button>
I first see that my css class is listed before the ui-button class. I also can not get my button to use the css class.
Can someone help me put together the step I am missing? Is there a step by step on how to start using CSS?
Jeff Hojka
Khojant LLC
application folder\web\styles\custom.css
I added a class like the following
.msc-OptionButton {
display: block;
width: 5em;
height: 2em;
border: none;
background-color: red;
color: black;
padding: 1px 1px;
font-size: 48px !important;
text-align: center;
}
I the NetTalk ThisWebServer under Settings->styles->Files->CSS Style Files have my Custom.css file listed 'Custom.css' Browser all and is included in themese.css checked.
Under NetWeb Form->Actions->Fields->Properties->Field BUTTON properties->CSS->Button CSS Class='msc-optionbutton'
When I inspect the element in chrome I see the following
<button type="button" name="WebLookup_AccountDetail_btn" id="WebLookup_AccountDetail_btnh8o8" value="Account Detail" class="nt-flex msc-optionbutton ui-button ui-corner-all ui-widget" onclick="location.href='WebLookup_AccountDetailMenu?&PressedButton='" data-form="weblookup_accountpage">Account Detail</button>
I first see that my css class is listed before the ui-button class. I also can not get my button to use the css class.
Can someone help me put together the step I am missing? Is there a step by step on how to start using CSS?
Jeff Hojka
Khojant LLC
15
Web Server - Ask For Help / Re: Browse button for a report
« on: April 21, 2020, 04:37:16 AM »
Thank you very much. WindowOpen is such an odd name for a web procedure. Option A) does the trick and it allows me select the page which is a bonus.
Jeff
Jeff