Jump to content


Caspio Guru
  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by LWSChad

  1. Hello, I am trying to let a 3rd party edit a specific DataPage. I have created a group with "Edit DataPage" permission for the single DP. The issue I am running into is that the user only was able to edit or access the DataPage on the 1st login. After that, they can't navigate to it, search for it using the app key, nor use a link to the dp edit page (https://acctID.caspio.com/ui/apps/app/datapages/dpName/appKey/folder/folderName). They are presented with the following error on any Caspio Bridge action. "Permission denied. Contact your in
  2. Great topic! I'll share my process and am would be eager to learn about some other ideas. Also, this approach may not work in all deployments - I use unique html files for every datapage, and use iframes on the main interface for multiple datapages per user interface page. Caspio DataPage folders: FolderName [5-14] // current dev folder for the current project, monthly update, weekly update, feature addition, patch, etc. FolderName [LIVE] FolderName [old-versions] DataPage updates : Revision history! This is a utilized tool when iterations ar
  3. Want to talk about a Caspio project? Schedule a meeting at https://lightbulb.as.me/new-project

  4. Hi @kpcollier, Choosing a specific value from a dropdown can be achieve with a bit of javascript. First, identify the dropdown element and create an array the represents the dropdown choices: const dropdownEle = document.querySelector('[name*=field_name]'); const dropdownChoices = dropdownEle.options; Next, create the makeSelection function: function makeSelection(selectionID) { // loop all the dropdown options for(let i = 0; i < dropdownChoices.length; i++) { // if the dropdownChoice matches the selectionID... i
  5. To expand to all forms document.querySelector('[name*=Recordfield_name]').type = 'number'; Caspio names inputs according to the following syntax. Submission forms: <input type="text" name="InsertRecordfield_name" id="InsertRecordfield_name_includes_textstring_if_cascading" value="" class="cbFormTextField"> Edit and detail forms: <input type="text" name="EditRecordfield_name" id="EditRecordfield_name_includes_textstring_if_cascading" value="" class="cbFormTextField"> Virtual fields in all forms: <input type="text" name="cbParamVirtual2" id="cbParamVirtu
  6. Hi @fundy, Temporary API tokens generated on login would be pretty cool indeed! One approach that successfully allows one to get an API access token while keeping API keys secure is to use an AWS Lamba function. Using a lambda means API keys are used in a server-side function, so the keys stay out of the browser, where they're vulnerable. Call this function with an endpoint exposed using an AWS API Gateway (for example). Successful requests respond with temporary access tokens (and errant calls return a descriptive error message). Lambda Function: var XMLHttpRequest =
  7. I just double checked https://acctid.caspio.com/rest/swagger#/Tables and total records returned in not included in API responses. Try running loops until a response with no results is returned. For example if you have 950 records... https://acctid.caspio.com/rest/v2/tables/tbl_customer/records?q.select=PK_ID&q.pageNumber=1&q.pageSize=1000 may return { "Result": [ { "PK_ID": 1 }, * 949 more results ] } then https://acctid.caspio.com/rest/v2/tables/tbl_customer/records?q.select=PK_ID&q.pageNumber=2&q.pageSize=1000 would
  8. I have bumped into long query string limits as well. This forum post provides some context: https://stackoverflow.com/questions/812925/what-is-the-maximum-possible-length-of-a-query-string Another approach would be to use fields to pass the data. Set the fields to text field or text area so you can pass the data on exit (fig.1). Then set the destination and messaging options to load the new page (fig.2). Lastly, capture the parameters in the submission DataPage with the ID field as a text field for editing (fig.3). fig.1 fig.2 fig.3
  9. Hi @kpcollier Then a bit of javascript to check for the parameter. <script> var p = '[@your_parameter]'; if(p !== '') { console.log('parameter present - auto search'); yourAutoSubmitFunction(); } else { console.log('no parameter - behave normally'); } </script> Pair this with the AutoSubmit described here (and that you mentioned) To prevent a loop, reset Caspio parameters with (cbResetParam=1 on the link back to search. Search form URL: /your-search-page.html?cbResetParam=1 I hope this helps
  10. Hi @CRamsey, I also think your first approach is the best solution. It looks like your authentication source is a view (PRM_User_Table_ preceding each option leads me to that conclusion). Check to make sure the Org_ID is in that view to have it show up there. If that doesn't do the trick, and the parameter approach is also not working (I am a bit confused why the Org_ID wouldn't be the same for all users the admin adds, but alas) you can get the Ord_ID with another approach. Set up a hidden virtual field to load PRM_User_Table_User_ID (from auth fields). Then set Org_ID as a
  11. Unsure, but I wonder if the authenticated DataPage has not had a chance to load yet so the test will always fail as it runs too early. Try an iframe deployment and run the check onload. <iframe name="dp_name" title="dp_name" src="https://123.caspio.com/dp/123">Sorry, but your browser does not support frames.</iframe> <script> var loggedInTestIfr = document.getElementsByName('dp_name')[0]; loggedInTestIfr.onload = function(){ checkLoggedIn(); }; function checkLoggedIn(){ var myTestElem = document.getElementById('loggedInTestDiv'); if (myTestElem == n
  12. If you have updated your DataPages to use the subdomain for your account in the deploy code, the logout link now uses the account subdomain for your account. Rather than b5.caspio.com/folderlogout try ******.caspio.com/folderlogout where ****** is your Also, see: https://howto.caspio.com/deployment/caspio-site-vs-account-subdomain-deployment/ Hope this helps
  13. This behavior is displayed in many places my web-application. Create an account here Choose a free plan so you can log in to see this and other things Caspio
  14. Thanks Bruno, it was a pleasure working with you! I look forward to staying connected and seeing your project (great idea, I must say) grow and evolve!
  15. I do some Caspio and JavaScript freelance. I have thousands of hours of Caspio and JS experience, and can very likely build what you need. (basically full time since 2014) I am interested and able to help with small to medium sized projects. PM me for info. Some notable customers/projects include ezIQ.us QuoStudentTravel.com BaleDoneen.com Block-Trades.com MascotConstruction.com
  16. I want to see a list of available variables I can use here or there. What specifically brought me to this question were File Size error messages and a Date Format error messages that are vague and nondescript. I know I can change the wording, which helps, but I'd like to use the cool variables like "Are you sure you want to delete %n records" in the rest of my error messages. Does anybody know how to use these cool variables?
  17. Hello, I'm tying to improve my app's error messages using Localizations. I see on some error messages there are variables or parameters that provide the user with some very valuable information. Value cannot be shorter than %s characters. Value cannot be larger than %n characters. Are you sure you want to delete %n records. %p authorization failed. Cannot redirect to %p etc. Does anybody know how to use these, or where I can find a list of the variables we can use and how to? Thanks and ThinkEZ
  18. Thanks! Those are good options. I ended up using a workaround using ABSOLUTE. Substring([@field:ScratchPad], Charindex(': ',[@field:ScratchPad], Charindex('Passport Date of Issue: ',[@field:ScratchPad]) ) + 2, Abs( Charindex('===',[@field:ScratchPad], Charindex(': ',[@field:ScratchPad], Charindex('Passport Date of Issue: ',[@field:ScratchPad]) ) ) - Charindex(': ',[@field:ScratchPad], Charindex('Passport Date of Issue: ',[@field:ScratchPad]) ) - 2 ) )
  19. Hi, I'm stumped. This code works Substring([@field:ScratchPad],Charindex(': ',[@field:ScratchPad],Charindex('Departure Airport: ',[@field:ScratchPad])) + 2,Charindex(' ======',[@field:ScratchPad],Charindex(': ',[@field:ScratchPad],Charindex('Departure Airport: ',[@field:ScratchPad]))) - Charindex(': ',[@field:ScratchPad],Charindex('Departure Airport: ',[@field:ScratchPad])) + 2) This code breaks with only a minor adjustment: changing + to - at the very end Substring([@field:ScratchPad],Charindex(': ',[@field:ScratchPad],Charindex('Departure Airport: ',[@field:ScratchPad]))
  20. Hi,

    The purpose of a forum is to share the knowledge.

    If you have a question. Ask it on the forum. If you must, ask me to look at it and I will, but it must already be a question on the forum.

    Let's make sure we share the knowledge.


    1. TWIRED


      That makes sense. 


      This question was posted but didnt get a reply so kinda got impatient

      Will do.


  21. Hi @abelphathost, Thanks for the message, but let's not ask questions privately.... the point of a forum is for people to find that somebody else has already asked the same question. A couple things to note 1 - I've had trouble using JS and Caspio's checkboxes. Dropdowns are easier to work with. 2 - I never use 'onsubmit'. Rather i create a fake submit button that runs that code I need before the submit happens then wrap the function with: document.getElementById("Submit").click() ** If you must have something easier than a dro
  22. Hi @TWIRED, Thanks for your message. Let's do it out here so everybody can see the Q&A. Your path looks good. Two things to check. If it was working, then stopped... check to make sure the DataPage you're sharing these images from DOES NOT require authentication. (something it may not have required when it worked) I also notice your Account Subdomain [Caspio account settings > c2eku***.caspio.com] in use as the domain. I use my Caspio Site [Caspio account settings > b5.caspio.com] as the bdomain for this link. Hope this helps
  23. Email clients don't like style tags, so we must use inline styles. <span style="display: none[@param1]">[@param1]</span> If Param1 = null, then style="display: none" will render normally, thus hiding the span. If it's not null then it will be something that doesn't compute... like style="display: noneABCD", which won't hide the span
  • Create New...