Jump to content


Popular Content

Showing content with the highest reputation since 04/08/2019 in Posts

  1. 3 points
    Hello I want to share something with you guys again. Back then when I only have an 'explore plan', I'm using this workflow to send acknowledgement/notification emails on different persons base on a value of a field in my submission form. My workflow back then is I have a submission form for job applicants. I want to send an email to a certain member of my company depending on which position the applicant is app laying. for example. If the applicant is applying for a staff position, there will be an email an email send to staff manager, If the applicant is applying for an agent position, there will be an email an email send to agent manager. etc... This could easily be done via trigger but since it was unavailable on explore plans. This is what I did. First I made a lookup table containing the emails of the designated managers where I used the job they are managing as a unique field. Then on my submission form. I made a virutal field and set it as a cascading dropdown that is using the field for the position the user is applying for as a parent field and used the table containing the emails of the managers as a lookup table. I enveloped this virtual field with html blocks with html codes for hiding fields. please see this documentation for reference : https://howto.caspio.com/tech-tips-and-articles/common-customizations/how-to-hide-fields-in-datapages/ and https://howto.caspio.com/datapages/datapage-components/cascading-elements/ . Now that it was hidden, we will now proceed to the messaging options. It is up to you to chose if you want an Notification emails or Acknowledgement emails. As I check It works with any of them as long as you are going to use the virtual field with cascading value as the field reference for email. It will now send an email on different person depending on what job the user is applying to. I hope it helps anyone. Also please comment if you have a better idea. Quack
  2. 3 points
    Hello @TroubleShooter, Yes, you can. Currently, it is only possible with JavaScript. The idea is to place the Registration Form and Standalone Login Page side-by-side (or at least, in the same page). You may hide the Login Form ( using <div style="display: none;"></div> on the Header/Footer of the DataPage || More about here...), on your Registration Page but I rather keep them visible so the users can opt to just log-in if they already have an account; or register, if they don't. After registration, JavaScript will fill-out the login form, and submits it programatically, therefore logging-in the newly registered user. The only requirements to this implementation are: 1.) Login DataPage and Registration Form DataPage are deployed on the same page. 2.) Both DataPages are AJAX-Enabled! 3.) Headers/Footers should have the HTML Editor disabled from the Advanced tab. Without futher ado, let's do this. 1.) Open DataPage Configuration for your Registration Page: 2.) Go to 'Configure Fields Section' 2.1.) Add a Header and Footer (Disable HTML Editor from the advanced tab) 2.2.) Paste the code snippet in the Footer and modify the following information. <script> document.addEventListener('BeforeFormSubmit', function() { var registrationDP = "[@cbAppKey]"; var loginDP = "378fd3458dfsjhefjhqerwfdsyui3274239"; //Replace with the AppKey of your Standalone Login Scren var username_field = "username"; //replace with the name of your username field (CASE SENSITIVE!) var password_field = "password"; //replace with the name of your password field (CASE SENSITIVE!) //No modifications necessary from this point onward. document.querySelector(`[action*="${loginDP}"] [id*=xip_username]`).value = document.querySelector(`[action*="${registrationDP}"] [id*=InsertRecord${username_field}]`).value document.querySelector(`[action*="${loginDP}"] [id*=xip_password]`).value = document.querySelector(`[action*="${registrationDP}"] [id*=InsertRecord${password_field}]`).value }) </script> 5.) Go to 'Destination and Messaging' 5.5) Set Destination after record submit to: Display a message; Disable the HMTL Editor! 5.6) Paste the code snippet below; then modify. Registered Successfully. <script> var loginDP = "378fd3458dfsjhefjhqerwfdsyui3274239"; document.querySelector(`[action*="${loginDP}"]`).submit(); </script> After saving, you should be good to go. Working example: https://stage.caspio.com/support/forums/DefinitelyNot31337/register-login/index.html Application Export Package: CaspioData_2019-Apr-02_0219.zip Good luck and happy hacking! Regards DN31337!
  3. 2 points
    Hi @bbewley, @kpcollier, You may try using this JS which should go to the Footer: <script type="text/javascript"> function formatAsDollars(el) { el.value = el.value.replace(/[^\d]/g,'').replace(/(\d\d?)$/,'$1').replace(/^0+/,'').replace( /\d{1,3}(?=(\d{3})+(?!\d))/g , "$&,"); el.value = el.value ? '$' + el.value : ''; } let fields = ["FIELD_1", "FIELD_2"]; //specify your fields here fields.forEach(element => { element = "InsertRecord" + element; // replace "InsertRecord" with "EditRecord" for Details/Single Record Update DP document.getElementById(element).onkeyup = function() { formatAsDollars(this); } document.getElementById(element).onchange= function() { formatAsDollars(this); } }); </script> Pay attention to comments. Hope this helps. Vitalikssssss
  4. 2 points
    Please ensure that you don't have referential integrity enabled in you table relationship. According to the note in https://howto.caspio.com/tables-and-views/triggered-actions/:
  5. 2 points
    Hi @roattw If this is a submission form I assume you mean something like this; Where you can have headings over each section? If so you can split the form up into sections with columns to suit and have HTML block in-between their own sections set at 1 column to span the page like this; This is one column proceeded by the HTML block with the next section containing the submission form fields; You will have to experiment (a lot!) to get decent results and spacing for your whole form as if you start mixing section columns other then 1 and X (in my case X = 5) it will space them to overcome this I either used columns of 1 or 5 and if required less then 5 used 1 and had the elements continue on the same line. Your other option would be to build a full HTML table within the HTML block something similar to this; <style> .wrapper { background-color: lightgray; padding: 5px; } td { padding: 10px; } </style> <table border="0" cellpadding="1" cellspacing="1" style="width:100%;"> <tbody> <tr> <td><strong>Some Data 1</strong></td> <td><strong>Some Data 2</strong></td> <td><strong>Some Data 3</strong></td> </tr> <tr> <td class="wrapper">[@field:Some_Data_1]</td> <td class="wrapper">[@field:Some_Data_2]</td> <td class="wrapper">[@field:Some_Data_3]</td> </tr> <tr> <td><strong>Some Data 4</strong></td> <td><strong>Some Data 5</strong></td> <td><strong>Some Data 6</strong></td> </tr> <tr> <td class="wrapper">[@field:Some_Data_4]</td> <td class="wrapper">[@field:Some_Data_5]</td> <td class="wrapper">[@field:Some_Data_6]</td> </tr> </tbody> </table> Which would result in something like; Again you would have to experiment with layout to match the rest of your form/fields but may be a possible solution but without seeing exactly what you want as an end result its a bit hard to offer any further advise. Good luck, Roosta
  6. 2 points
    Ha! I got this working. I missed the step of having to name the ID for the No Results Message in Localizations. If someone else needs to change the header message when no results are found, this is how. I found some clues using this online help page, https://howto.caspio.com/integration/map-mashup/hiding-the-map-when-no-results-are-found/ Go to Localizations and choose the language you're using, and go to #351 No Records Found. Add a custom message if there isn't already one, and put a div tag around it with an ID, mine is "norecord" for this example. Then add another div tag around the header content you want to change and also give it an ID, ID="HOW" for this example. Then add this code to the footer of your Configure Results Page Fields: Match whatever names you give the respective fields to the IDs in the code below. <script type="text/javascript"> if (document.getElementById("norecord")) { document.getElementById("HOW").innerHTML = "THE NEW CONTENT YOU WANT DISPLAYED WHEN THERE ARE NO RECORDS"; } </script> This new content will overwrite whatever content is in the <div> named HOW when the search returns no results. If you're adding HTML to the new content, you need to escape all your quotes or it won't work. I made that mistake. In a link example, it would be: <a href=\"http://mywebsite.com\">Visit my website!</a>
  7. 2 points
    You can use the code below as a reference. <script type="text/javascript"> document.addEventListener('DataPageReady', function (event) { var c_checkbox = document.getElementById("selectAll") ; var elementID = event.detail.uniqueSuffix; function c_event () { if (c_checkbox.checked) { var listBox = document.getElementById('Value1_1' + elementID); for (i = 0; i < listBox.options.length; i++) listBox.options[i].selected = true; } else { var listBox = document.getElementById('Value1_1' + elementID); for (i = 0; i < listBox.options.length; i++) listBox.options[i].selected = false; } } c_checkbox.onclick = c_event; }); </script> Add this in your search's footer with the HTML editor being disabled. Just make the necessary changes for your form elements' ID attribute. You may use this guide for that.
  8. 2 points
    Hello Batchini! Well, there would be two ways how to create this. If we're going to use trigger, this may be a complex one. One easy way I thought of is with the use of Calculated Fields, but this would only be on a DataPage Level. You can use this formula to get the Minimum Value. SELECT MIN(FieldName) FROM Child WHERE ID = target.[@field:FieldID] Assuming if you have a foreign Key inside your child table. So we'll be using this formula to display the minimum value, Datasource would be your parent table. I hope this helps. Scar();
  9. 2 points
    Hello @TroubleShooter, The reason why the ampersand symbol is being cut is because Caspio renders the link literally. In this example: <a href="https://www.google.com?myParameter=[@field:someField]"> Link </a> If "someField" evaluates to "Some Value & Another Value" then the mark-up would result to <a href="https://www.google.com?myParameter=Some Value & Another Value"> Link </a> This is when urlencoding comes into play. What this does is substitutes the special characters in a standard HTML format which interprets characters a different way. You may try using my code snippet below. 1.) Just replace the link ID with the id attribute of your link. 2.) repeat the addParameter function as needed. The first argument is your parameter name, and the second argument is your field value. <a href="#" id="link-1">MyLink</a> <script> // DO NOT TOUCH FROM THIS POINT var params = []; addParameter = function(qs, val){ params.push(`${qs}=${encodeURIComponent(val)}`); } //UP TO THIS POINT var link_id = "link-1"; var base_url = "https://SomeDomainFrom.caspio.com/dp/926560as124321324dasd00a6523f123123624543123423fc0453b9093"; addParameter('boo', '[@field:SelectedAction]'); //repeat as needed addParameter('far', '[@field:SelectedAction]'); // DO NOT TOUCH FROM THIS POINT var queryString = params.join("&"); document.querySelector(`#${link_id}`).href = `${base_url}?${params.join("&")}` //UP TO THIS POINT </script> Works for me. -DN31337!
  10. 2 points
    I suggest using Print.js. With Print.js you can target the specific id of the element that you wanted to print out as a PDF. More info on the link here: https://printjs.crabbly.com/
  11. 2 points
    Hi @philippe, You can use Javascript for this. First, you need to pass the parameter from the search form. Then inside your Results Page, add a Header and Footer. Put this code inside your footer (make sure to disable HTML Editor) <script> // Replace Value to Parameter name var passID = '[@Name]'; // Replace Value to the Field Name of Event ID inside table var this_field= 'Name'; var insert_field = document.querySelector('form[action*="[@cbAppKey]"] #InlineAdd' + this_field); insert_field.value = passID; </script> Just a little something I learned from this post: Thanks Mahfriend Sample Page: https://c0acd927.caspio.com/dp/e6cb6000e2c14d25606f4cd1ae1b I hope this helps. Glitch.
  12. 1 point
    One solution for this is to have an "Other" option in your field and a new field (text element) where your user can type and will hold a value for the "Other" option. The new field can be hidden at first and will just show once "Other" is selected using Rules. If you want the new field's value to be copied in the first field upon submission, you can use trigger for that. Here is a documentation: https://howto.caspio.com/tables-and-views/triggered-actions/
  13. 1 point

    Label position

    You can put multiple fields in one section and set the section's Label position default to Top.
  14. 1 point
    @roattw Do you use Sections of "Continue next element on the same line" checkbox to place fields in this way?
  15. 1 point

    Camera only option

    Hello, from your file upload options, you can only have the option to also get the mobile camera based on what phone you are using. However, disabling the file upload option is not available as a standard feature. Here in this article: https://howto.caspio.com/files-and-images/uploading-files-and-images/, you can only also choose to display the uploaded file as an image I hope this helps.
  16. 1 point
    Caspio Bridge 21.0 release brought a Tasks\Trigger enhancement which solve this case without complex Trigger\Tasks. There is a new block added to Triggered Action called "Table variable" which forms a table. You can insert table variable into email body and it will be formed link a table (HTML format enabled): Hope it helps someone.
  17. 1 point

    Expand both options

    @Leon13 I think that the best approach is to let your users to either expand all the groups or use the default option. To make it works, you need to add this code to the Footer of the Result set: <script type="text/javascript"> function customClick() { var elems = document.getElementsByClassName('cbResultSetShowHideGroupText'); for(let i = 0; i < elems.length; i++) { if(elems[i].children[0].alt === "expand icon") { elems[i].click(); } } } function assignEvent() { document.getElementById('expandAll').addEventListener('click', customClick); document.removeEventListener('DataPageReady', assignEvent); } document.addEventListener('DataPageReady', assignEvent); </script> And this code to the Header of the result set: <button id="expandAll">Expand All</button> Please note that you need to disable the HTML editor of the Header/Footer. You can make this in the Advanced section.
  18. 1 point
    Hi @norkaman Do you use the following syntax to reference first 2 parameters? [@WID] and [@LBE]? Regards, vitalikssssss
  19. 1 point
    Thx kpcollier. My brain always goes direction that I screwed up some code somehow. Will start referencing that Known Issues more. I do think internally they would have a hot topic/issue awareness about that
  20. 1 point


    Hello Caspio can use fonts on google web fonts for their datapages. They have a barcode font there which you can use to convert values to a barcode. You may like to check the following URL's for more details https://howto.caspio.com/styles/using-google-web-fonts/ https://fonts.google.com/specimen/Libre+Barcode+39 hope it helps, quack
  21. 1 point

    Reminder email trigger - stuck

    Hi @roattw, You can use #inserted in the Select From block instead of the Table (Patients_Encounters_Pre121219). If you use the Table itself, every time the Triggered Action runs, it will send an email to all records where Pending_Info is equal to "Y". You can refer to this video for more information: https://www.caspio.com/webinars/send-sms-emails-using-triggered-actions/ Happy Holidays! -kristina
  22. 1 point
    One scheduled task run (successful or failed) is equal to one DataHub call, regardless of the number of tables the scheduled task contains. https://howto.caspio.com/tables-and-views/scheduled-import-and-export/ https://howto.caspio.com/tables-and-views/scheduled-import-and-export/scheduled-import-task/ https://howto.caspio.com/tables-and-views/scheduled-import-and-export/scheduled-export-task/ https://howto.caspio.com/tables-and-views/scheduled-import-and-export/scheduled-tasks-datahub/
  23. 1 point
    Hi, The suggested method is not available yet. Here is another way to accomplish it. Create a calculated field with something like below and have this as part of the email body. SELECT snv_id = 'Not updating your browser already resulted in the following records being submitted with missing info:' + char(10) + STUFF(( SELECT ', ' + snv_id + ' ' + CONVERT(VARCHAR(10), Visit_Date, 101) + ' ' + Client_Last_Name + ' ' + ' ' + Client_First_name + char(10) FROM _v_v_VisitNotes_Browser where _v_v_VisitNotes_Browser.nurse_User_ID_num_SNV= '[@authfield:Nurse_UserName]' FOR XML PATH('') ), 1, 1, '')
  24. 1 point
    You can set the label for required fields to bold under Labels > Required in your Style.
  25. 1 point
    Hi @lypoextract, You can use import/export of application if you would like to transfer it to different account. Here is a documentation: https://howto.caspio.com/apps/exporting-an-app/ Hope this helps. Regards, vitalikssssss
  26. 1 point

    Run Task every 15 minutes

    You can have 4 similar Tasks running on an hourly basis starting from 12:00 AM, 12:15 AM, 12:30 AM and 12:45 AM accordingly. With this, the operations in your Task will automatically run on an interval of 15 minutes.
  27. 1 point

    data transfer

    Hi @Yolanda, You can find answer in this blog post: https://blog.caspio.com/update-on-caspios-data-transfer-policy/ Regards, vitalikssssss
  28. 1 point

    Multi Step Form Customization

    Hello @kpcollier You can implement a similar workflow if you create datapages "on the fly". It can be done if your datapages use AJAX. All datapages are AJAX by default. First of all, you should create a wrapper div where you will load a new step datapage. On each step of submission, you need to define the custom event to clear wrapper and load new datapage. This event should be fired on click of next/prev buttons. Example of the function: function createPage() { var dataPage = document.createElement('script'); dataPage.src = 'https://your_domen.caspio.com/dp/your_app_key/emb?param1=' + val1 + '&param2=' + val2; document.getElementById('wrapper').appendChild(dataPage); }
  29. 1 point
    Just want to give an example on this. If you have a Home page with a centralized login and you want all users to login from Home page, when they tried to open another page (e.g. Dashboard page), they will be redirected to your Home page. Below is a use case. You have 3 web pages: 1. Dashboard page (dashboard.html). This has 5 DataPages deployed in it. There will be 5 login forms displayed on it. 2. Profile page (myprofile.html). This has 2 DataPages deployed in it. 3. Welcome page (home.html). This has only one DataPage deployed in it. You want all users regardless on from where they come from to see only one centralized login form (not 5 or 2), and you want all users to be redirected to your Dashboard page after login. You set up a “designated entry page” to be home.html, and “login redirection on success” to be dashboard.html. Then, when non-authenticated user opens dashboard.html, they will be redirected to home.html with one login form, and after successful login they will got redirected to dashboard.html. If non-authenticated user tries to open myprofile.html, they will be redirected to home.html, where they will need to enter login information, and then they will be redirected to dashboard.html (as all users after successful login go to Dashboard page). If authenticated user opens any page, they will not be redirected and will stay on the page they opened.
  30. 1 point
    First, I'm not sure why you had to do Full Name and Full Address on your Work Order table when you can structure it the same way as your Clients table (with First_Name, Last_Name, etc... on separate fields). === I haven't reviewed the table design and workflow as well. Haha. But I wanted to mention that formula field values can be referenced in the trigger (Read-only). This means that if you are able to separate the fields you need on a formula field, you may simply set First_Name_Text255 = #inserted.First_Name_Formula on your trigger. Hope this helps -DN31337
  31. 1 point

    Long text in rollover hints

    You can use <br> tag for line breaks. Example: Lorem ipsum dolor sit amet, consectetur adipiscing elit, <br> sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. <br> Ut enim ad minim veniam, quis nostrud exercitation ullamco <br> laboris nisi ut aliquip ex ea commodo consequat.
  32. 1 point

    Total Hours Worked / Datediff

    Count the total mins either in the table or as cal field on your report. Here we call it TimeSpan Datediff(minute,[@field:StartTime], [@field:EndTime]) Then in the aggregation use that to get the total: CAST ((SUM(TimeSpan)/60) AS VARCHAR(6)) + ':' +CAST ((SUM(TimeSpan)%60) AS VARCHAR(2))
  33. 1 point

    How to prevent a form to submit

    Hi @telly, The solution that @SunakoChan provided is correct. You'll need JavaScript coding to prevent submission. For more details, you may also check this forum post: -JolliBeng
  34. 1 point
    Continuation from my previous response: How this works is: DataPage "tbl Web Form" has this script in the Footer (HTML Editor disabled from the Advanced Tab). This script is responsible for submitting the instantiated form when function bulkSubmit() is called from HTML DataPage (i.e. when Bulk Submit! button is clicked). <script> function displayMessage (evt) { document.querySelector(`.cbSubmitButtonContainer [id*=Submit]`).click(); } if (window.addEventListener) { // For standards-compliant web browsers window.addEventListener("message", displayMessage, false); } else { window.attachEvent("onmessage", displayMessage); } </script> Next, let's talk about HTML Page (DataPage). So, we have two buttons. One, for instantiating a Submission Form DataPage upon click; and another button to submit all the instantiated DataPages. <button type="button" onclick="addIframe()"> Add </button> | <button type="button" onclick="bulkSubmit()"> Bulk Submit! </button> We also have an HTML container for the instantiated DataPages. <div id="ifr-container"></div> Finally, we have our JavaScript functions definition: <script type="text/javascript"> var ifrContainer = document.getElementById('ifr-container'); function addIframe() { var ifrCount = ifrContainer.childElementCount; console.log(ifrCount); ifrContainer.insertAdjacentHTML('beforeend', `<iframe class="cdr-iframes" src="[@app:URL_1]"></iframe>`); } function bulkSubmit() { document.querySelectorAll('iframe.cdr-iframes').forEach(function(elem){ elem.contentWindow.postMessage("", "*"); }); } </script> addIframe() inserts a new instantiation of the Submission Form in the HTML container. bulkSubmit() submits the instantiated Submission Forms one by one DN31337!
  35. 1 point

    Ticketing System

    Hi Scarlet, I figured out a way to do this on trigger. The idea is, you'll prevent using two DataPages since the Timestamp is being generated from the trigger. This is a sample trigger you can use. So upon update, you can update the #inserted Start time if the technician (which in your case is the ticket handler), has been changed. And update the #inserted EndTime if the #inserted Status is closed. The case when statement there, is to update the fields only if the respective fields has been changed. Works like a charm. Hope this helps, Scar. Glitch ();
  36. 1 point

    90-Day Password Expiration

    Hi there! The previous reply is correct, you need to have the Last Update field. However, I think Javascript is not necessary. JS would probably be my last option on workarounds. So, how can you do this without Javascript? You can use Tasks to send out email for the users who has outdated Email. You can set it up like this: (You can change the conditions based on your requirement) On the Message Body, you can put in the link of the DataPage that will enable the users change their passwords. Of course, you can add some actions in the task as well, like for example, once a user does not change the password after 90 days, this user will be inactive (using checkboxes prolly) Hope this helps(); Glitch
  37. 1 point
    Hello. You must be looking for Formula Fields or Triggered Actions. https://howto.caspio.com/tables-and-views/data-types/formula-fields/ https://howto.caspio.com/tables-and-views/triggered-actions/ If the Calculated Field is processed using the other fields on the same record, you may use Formula Field. Otherwise, if you are referencing to data outside the row/record, you'd need to use a Triggered Action.
  38. 1 point
    Hello @Subtlety, I think this depends upon what that public forum is trying to achieve. In some cases, Caspio does have a certain feature which you can use but in some, it may require custom codes or in some cases complex ones. Well, for you to better understand Caspio, I think they have their trainings and other stuff that you can utilize. I believe it's here https://www.caspio.com/training. They are conducted during the weekdays and they are free. There are also some features that you may want to check such as Authentication, API Integration, etc. at https://howto.caspio.com. Also, I think it is better if you try to fill out the form of their Professional Services team at https://www.caspio.com/services/professional-services/ I hope this helps you.
  39. 1 point
    Hi @Corpcatalog, Add Header and Footer on your DataPage and paste the Script below (Make sure that you disable your HTML editor before pasting the code). <script> window.onbeforeunload = function (e) { e = e || window.event; if (e) { e.returnValue = 'Sure?'; } return 'Sure?'; }; </script> Here the expected result: I hope this helps.
  40. 1 point
    Hi @kpcollier, As I said in the earlier response, you just need to adjust the margin of the style for your div. This is the result: Check it out here: https://c1abv183.caspio.com/dp/482760006540f98089034387a563
  41. 1 point
    Hi, In case someone might be loooking for this solution, I am attaching a solution of five formulas that will extract the nth element in a delimiter-separated list on string (in this case, the delimiter is a semi-colon). To upload this solution to your account, refer to this documentation: https://howto.caspio.com/apps/importing-an-app/ Hope this helps, DN31337 zapier_source_2019-May-18_2037.zip
  42. 1 point
    Hi @kpcollier, You can try to add and customize the button style for you to be able to do that. For Example, you can try this similar workflow: Add this code in the header of your search form: <style> input[type="button"] { background-color: #008CBA; width: 150px; color: white; padding: 5px; text-align: center; text-decoration: none; display: inline-block; font-size: 14px; } #customstyle { position: fixed; padding: 24px 3px; margin: -69px -10px; cursor: pointer; } </style> Then insert an HTML Block in the very bottom of the search form to add this code: <div id="customstyle"> <input type="button" value="Go to Google" onclick="window.location.href='https://google.com/'" /> </br> </br> <input type="button" value="Caspio site" onclick="window.location.href='https://caspio.com/'"/> </br> </br> <input type="button" value="Check YouTube" onclick="window.location.href='https://youtube.com/'"/> <div> Important note: - Add the button(s) (HTML Block) in the very last part of the form. - Check "Continue next element on the same line" in the advanced option of the field before the HTML Block where the button is located: - Make sure that you unchecked the "Enable HTML editor" in the advance option of your Header and HTML Block. - This is a custom CSS code and adjustment/configuration might not be compatible in your current search form so you will need to change the (padding and margin) to adjust them. You can check the result here: https://c1abv183.caspio.com/dp/482760006540f98089034387a563 I hope this helps ~WatashiwaJin~
  43. 1 point

    Exporting Data

    Hi @Role21, You can enable the Download options on your Report DataPage. Select Download as Excel. So, you can be able to download the data on your Calculated Fields. -JolliBeng
  44. 1 point
    Hi @joneslovescaspio, I contacted Caspio Support and they have replicated the issue for me which I no longer need to do it myself as well. Here are their steps of Replication: 1. We have created 2 DataPages (Test Replace, and Test Replace_1) and configured them differently. 2. Then, we selected 'Test Replace_1' and selected More > Replace, from the DataPage. 3. We were able to select 'Test Replace' and confirm the replace of the configurations of the DataPage from Test Replace_1 to Test Replace. Upon success of Replace: All of the configurations from 'Test Replace_1' DataPage are transferred to the 'Test Replace' DataPage. I have also attached their confirmation dialog box for reference. I hope this helps.
  45. 1 point

    Displaying Record data on website

    This is how I created what I call a "User Logged In Info Snippet" which also functions as the site's login/logout function. I used an HTML DataPage that has only the info I want to show and pulls in logged in user's first name, last name, and role, then provides the logout link. I put the deploy script for that DataPage into the header on the website. It would be possible to use a DataPage without authentication (so it does NOT show the login fields when the user is logged out) but I'm not so sure you'd be able to get to any Caspio data external to a DataPage entirely.
  46. 1 point
    Hi overhear, Caspio is an online database platform that allows our customers to build customized applications without the requirement of being a programmer or having a background in software development. The important objects that you need to be familiarized with are the following: DataPages - these are the various application interfaces that you create in Caspio and deploy to your application portal or website. Examples include web forms, reports, calendars, charts, and more. Some DataPages contain multiple screens, so a simple application may require no more than 3 to 5 DataPages. The limit of deployable DataPages depends on the Caspio plan that you avail. Tables - these are the ones that hold your data. You can create tables in the Tables area of your App. Data can be submitted into these tables using web forms or imported from external files, such as Excel. Tables can also be exported in various file formats and saved onto your computer. Also, tables only allows a maximum of 255 fields. Authentication - this is used to password-protect your DataPages. Formulas and Calculations - there are different ways on how to perform calculations in Caspio. Formula field - it calculates a value based on other fields in the same table. In the formula field, you create an expression that uses values from fields, constants, or functions. Calculated Values - it is a form element that generates dynamic calculations that automatically update as users interact with your form. Calculated Fields - it allow you to perform dynamic, per-record functions on results and details pages of a Report DataPage. Triggered Actions - allow data manipulation, calculations and sending notifications by constructing application logic with a visual interface. They will be executed on specified events to perform actions on data in your tables. I hope the information that I provided helps. -JolliBeng
  47. 1 point

    Add a checkbox "Remember me"

    Hi @deemuss, Yes, it can be done with the jQuery code. You should go to the editing Authentication screen, where there are two fields - Name and Password, for example. Add header and footer element and HTML block. Put the following code to the header element for jQuery library: <script src="https://code.jquery.com/jquery-1.9.1.js"></script> Put the following code into the HTML block for the "Remember me" checkbox: <label class="checkbox"> <input type="checkbox" value="remember-me" id="remember_me"> Remember me </label> Put the following code into the footer element for the jQuery code: <script> $(function() { if (localStorage.chkbx && localStorage.chkbx != '') { $('#remember_me').attr('checked', 'checked'); $('#xip_Name').val(localStorage.usrname); $('#xip_Password').val(localStorage.pass); } else { $('#remember_me').removeAttr('checked'); $('#xip_Name').val(''); $('#xip_Password').val(''); } $('#remember_me').click(function() { if ($('#remember_me').is(':checked')) { // save username and password localStorage.usrname = $('#xip_Name').val(); localStorage.pass = $('#xip_Password').val(); localStorage.chkbx = $('#remember_me').val(); } else { localStorage.usrname = ''; localStorage.pass = ''; localStorage.chkbx = ''; } }); }); </script> where #xip_Name is an ID for the Name field and #xip_Password is an ID for the Password field. Please see this screenshot for better understanding:
  48. 1 point


    You can also use INTEGROMAT. I have found this service very useful to connect to many third party apps and it is very affordable. I have already integrated it with ClickSend as SMS provider and it works really well. I hope you can build what you need with all the suggestions provided for this post. Regards.
  49. 1 point
    Got an answer to my question (Thanks so much Francis!) I got confirmation that the "Social Login Field" is not the same as the account name or the email address. For example, the Google social login field is a text string that resembles the following: "Google:123456789012345678901" Where it's the word "Google:" followed by a 21-digit number that uniquely identifies the Google account. There is a specific set of steps necessary to obtain that information which is not yet documented on the Caspio Support site. As soon as I have a chance I will append the instructions here in case anyone else ever needs to do this as well. However, the unfortunate problem is that this doesn't actually allow the desired results to be accomplished (specifcially: limiting access to a DataPage to specific Google users only by using "ID Service only"). This is because the method that is required to obtain the Google social login field is initiated by the google user, so it can't directly be used to create a list of allowed users because this causes a catch-22 situation where the Caspio admin/developer can't know the ID Service social login field without allowing the new user to login first, and once they do so, they are automatically added to the authentication data source. Therefore you basically need to allow access to all google users in order to get their unique social id which would be used to limit their access. Classic chicken & the egg dilemma. But I have an idea for how to avoid that conundrum and am working on implementing it now. Hopefully it will work...
  50. 1 point
    Hi Simon! Yes, Caspio is very exciting. Did you see the "ready-made app" for job posting websites? Everything you stated you want is already in there like Prego! Let me know if you still need help. setupyoursite@yahoo.com /RA
  • Create New...