Fetch customized user inputs, store them globally at the app leve | Community | Zoho Projects

Fetch customized user inputs, store them globally at the app leve | Community | Zoho Projects

This data storage concept enables you to store data related to your extension for both entity properties and extension properties.

In our previous piece, we looked at how to store data for entities using entity properties. In this post, we'll look at an example of using extension properties effectively. Extension properties enable you to record data for an app in its entirety. Refer to this article on the limitations of extension properties for additional details.

Scenario

Let's say that as a developer you want to gather feedback/reviews through your extension. In general, reviews and feedback help you gain insights into users' perspectives.

When designing a review/feedback template, using a standard question with predefined options will restrict the feedback/review process to certain specific standards/requirements. However, your clients may use Zoho Projects to manage a variety of businesses, each with its own set of processes tailored to the needs of that company.

What can you do to standardize and streamline this process for all clients?
It would be beneficial to create a standard feedback/review template for your customers and then enable them to customize the question and its options to meet their own company feedback requirements.

Goal: Create a generic feedback/review template that enables clients to provide their personalized inputs to customize the review/feedback question per their company needs.

Solution

To accomplish this goal, we'll incorporate both entity and app data storage—as well as a few other capabilities—into our extension. Let's look at the features and steps we'll be taking to develop this example.
  • First, we must gather the question and options that the user wants for their feedback/review form. To accomplish this, we can create a bottom navigation bar widget called "Feedback or Review template settings" that enables the user to provide their personalized feedback/review question along with its options as input. We can accomplish this using the widgets approach explained earlier in this post.
  • Next, we must save the values the user provides for the question and options. We can accomplish this by using the data storage extension properties, which will store the data and make it available across the app/extension. (Now that we have the values stored for the entire extension/app, we can retrieve the data and access it across the necessary entities.)
  • In our example, we want to collect feedback/reviews from users for the tasks and issues entities. For this, we can create a widget called "Feedback or Review" in the details page of the task and issue entities, respectively.
  • In this widget, we must populate the question with the options the user previously provided as part of the "Feedback or Review template settings" widget. We can accomplish this by retrieving the previously saved details and displaying them in the relevant entities (tasks and issues, in our example).
  • Once we've displayed the question and options to the user, they can select an option to provide feedback or a review for the entity they're working on.
  • Furthermore, we can save the user's option selection and associate it with the entity. This will enable us to display the previously selected option for that question each time the user accesses the "Feedback or Review" widget, which we can accomplish using the data storage-entity properties concept.
Required components
  • An extension configuration process includes the following:
    • Creating an extension.
    • Configuring the plugin manifest.
    • Setting up the widget code.
  • Bottom navigation bar widget (top_band): Enables the user to input their customized values for the feedback/review template's question and its options.
  • Task details tab widget (task_tab)/Issue details tab (issue_tab): Enables us to fetch and display the value the user enters for the feedback/review template in the respective entities.
Let's explore these components now.

Extension configuration

Extension creation: We've created a new extension for Zoho Projects. Learn more about the steps to create an extension.
                                                                  

Plugin-manifest.json configuration: Once we created the extension, we configured the plugin-manifest.json file to include the widgets. For a more detailed understanding of how to configure the plugin-manifest.json file, refer to our earlier post.

For our extension use case, the plugin-manifest.json file is configured as shown in the screenshot below.

Note: We'll have to set the storage key to true in order for storage space to be allocated in the Zoho Projects product for this extension. By default, the value will be false.
                                                

Setting up the widget code

Now that we've set up the other components, let's move on to writing our widget code and incorporating the data storage feature.

Feedback or Review template settings widget (Bottom navigation bar - top_band) - Enables us to gather personalized user input for the feedback/review template. Please find the index.html code snippet attached in the post.
  • In the code snippet above for the bottom navigation bar widget, the user is presented with two text boxes: one for entering their customized question for feedback/review and the other for entering their customized options, each separated by a comma.
➤ The app.store method in the extension properties is used to store this data against the extension in the form of key-value pairs.
➤ The values for the question and options are constructed as a JSON object and then stored against the key "storedappvalue" using the app.store method.
Note: For user-entered options separated by a comma, these options are converted to an array using the split() method, with the comma serving as the criteria, and then stored against the key.
➤ Finally, when the values are successfully stored after clicking the Add button, the zohoprojects.invoke method is used, and the user is notified with the alert "Data added".
  • Additionally, every time this widget loads, the data stored at the app level in the key "storedappvalue" is obtained using the app.retrieve method.
  • From this retrieved value, any previously stored data against the key "storedappvalue" is removed using the app.remove method.
  • This is done because whenever a user wishes to change their feedback/review question and options, the new data will be added and stored against the key as well. Since we require the newly entered values to be displayed as part of our "Feedback or Review" widget in the tasks and issues entities, the previously stored data is removed, and the new values entered are stored against the key upon clicking on the Add button.

Feedback or Review widget (task details tab - task_tab) - Displays the feedback question and options and enables the user to provide feedback for the entity they're working on. Please find the Taskfeedback.html code snippet attached in the post.
  • In the code snippet above—for task/issue details tab—we're first retrieving the value stored against the extension (in the bottom-band navigation bar) by invoking the app.retrieve method using the key "storedappvalue".
  • From this retrieved value, we fetch the question and its options. The options for the question are displayed in the widget in radio button format, which enables the user to choose one option for the feedback/review question.
  • Once the user chooses an option and clicks the Save button, the data is saved using the entity properties in data storage feature.
➤ Here, the selected review option (selectedreview) value and its index position (selectedoptionnumber) in the radio button element are stored using the entity.store method. We use entity storage here since this value chosen is specific to the entity the user is working on.
  • Every time the widget loads, the chosen value stored using the entity.store method is retrieved using the entity.retrieve method and checked against the radio element options. This allows the chosen value to be enabled and displayed to the user every time the widget loads.
We can use the same snippet across the issue entity as well.

Now that we've completed the setup for both the widgets and have all the extension components ready, let's go ahead and see the output.

Sample output:
                                                

This example demonstrates how to efficiently use data storage for extension properties. The data stored against an extension/app can be retrieved across multiple entities to perform logical functions. Additionally, in this example, we also witnessed code reusability across multiple entities. You may enhance this example by incorporating more than one feedback/review question.

In this way, you can use extension properties to store data across an extension/app. We hope you found this information useful. Follow this space for more insights!

Sign up for a Zoho Developer account and start developing extensions for Zoho Projects using Sigma.

SEE ALSO



    Nederlandse Hulpbronnen


      • Recent Topics

      • Does Client Script work on Zoho CRM Portal?

        Hi ! I create a new module to use at customer portal. But Client Script looks not work. Please help me clarify, thank you!
      • Default view in Email on Company Module

        Is there a way to default the view on the COMPANY module to be "Emails Associated with the Related Contact" it is extremely frustrating to have to swap it every time. This is fairly new - it used to have it defaulted differently
      • 【Zoho CRM】各タブ内の一覧表示画面のアップデート

        ユーザーの皆さま、こんにちは。コミュニティチームの藤澤です。 今回は「Zoho CRM アップデート情報」の中から各タブ内の一覧表示画面のアップデートをご紹介します。 各タブの一覧表示では、設定条件に基づきデータを行や列で表示し、関連する詳細情報を一目で確認することが可能です。 今回のアップデートでは、タブの一覧表示で利用できる機能が増えました。 【目次】 各行の活動ラベル(ステータス)表示 「フィルター基準」オプション 項目列の非表示 URLのコピー 1.各行の活動ラベル(ステータス)表示 一覧表示内の各データの横に各業務のステータスのラベルが表示されるようになりました。
      • Re-emphasizing the importance of Domain Whitelisting in ASAP's JWT Authentication Mechanism

        The problem We discovered a security vulnerability related to using OAuth tokens in non-whitelisted domains and have reinforced our security measures. If you experience any request failures in the authorized domains, please verify that they are whitelisted
      • Add multiple users to a task

        When I´m assigning a task it is almost always related to more than one person. Practical situation: When a client request some improvement the related department opens the task with the situation and people related to it as the client itself, the salesman
      • Automated Shopify adjustment problem. "An inventory adjustment has been created by the system to set the initial stock from Shopify"

        Has anyone noticed issues since the Shopify Sync has been updated recently? If you sync with Shopify, check to see if there are automated adjustments for old products that keep recurring. We have this problem for 6 SKU's that Zoho is doubling the stock
      • Average Costing / Weighted Average Costing

        Hello fellow maadirs. I understand Zoho Books uses FIFO method of dealing with inventory costing, but do you guys have any plans to introduce average costing? We indians need average costing. It's part of our culture. Please. I beg thee. Thanks.
      • Zoho Desk's ASAP announcement | Time to embrace the enhanced JWT Authentication Mechanism for ASAP | Dec'23

        Hi All, We are eager to introduce the enhanced JWT authentication mechanism for accessing your ASAP add-ons. Effective December 25th, 2023, the ASAP's old JWT authentication mechanism will be deprecated. This means that the option to switch to the new
      • DataPrep Export to CRM - Linking Modules

        Is it possible to export data to linking modules in Zoho CRM? If I want to do this will I have to create a custom module using functions and workflows to mimic a linking module? If this is not possible it should be added. I don't see how this is functionally
      • Is ASAP user authentication via SAML?

        The ASAP user authentication says to use SSO with remote authentication so that you can use JWTs. The remote authentication help page says that this features is being deprecated and to use SAML instead. Before I go through the trouble of implementing
      • Proceed with SSL certification for your domain

        Hi Team For white labelling of Zoho Survey, we have done the following things Domain Mapping Go to your domain provider's Admin Console Create a CNAME entry under your domain Edit the CNAME to survey.cs.zohohost.in Kindly proceed for the SSL Certification
      • Desk Contact Name > split to First and Last name

        I am new to Zoho and while setting up the Desk and Help Center, I saw that new tickets created or submitted from the Help Center used the Contact Name field. This would create a new Contact but put the person's name in the Last Name field only. The First
      • Enhancing self-service capabilities with AI-based Zia Answer Bot

        Hello All, Zia Answer Bot is available with better accuracy to enhance the self-service capabilities of the platform and to empower the users to resolve queries independently. By leveraging knowledge base (KB) resources, the Answer Bot provides accurate
      • Expand Zia's Language Support and AI Capabilities

        Dear Zoho Desk Support, I would like to submit a feature request to improve Zia, the AI-driven support assistant in Zoho Desk. Currently, Zia only supports the English language, while other AI agents such as Gemini, ChatGPT, and Claude can work with a
      • Automated Messages in Zoho Desk - WhatsApp

        Hi, We set-up an automated message reply to our whatsapp channel for our support that was connected to the zoho desk. I need to change these automated messages but am unable to find the place where I can make these changes. Anyone able to assist?
      • Adding Attachment to Desk Ticket via Deluge

        Hello, My team has a process where some people are entering information into a workbook in Zoho Sheet, and we need to get a copy of workbook into a ticket in Desk. We currently have a 'Submit' button on the Sheet that triggers a webhook to Flow, and from
      • Launching CPQ for Zoho CRM! An in-built solution for bespoke quote management

        Hello everyone, We are thrilled to announce the public release of CPQ (Configure, Price, Quote) for Zoho CRM, which is a fundamental block in sales management. NOTE: CPQ was a public early access feature from March 2023 — January 2024. Since February
      • Zoho Creator Get Records Integration Task

        Trying to use Zoho Creator's Get Records integration task to fetch records from a specified report in Zoho Creator: https://www.zoho.com/deluge/help/creator/get-records.html However, I continue to receive a code 2894 error saying that the report is not
      • spark sync problem with iphone

        Hello, I am using the spark application on iphone 15 pro max and 16 pro max. After several days of installing the account on spark i dont get notifications on new emails, i have to open the app in order to receive the new emails. After sending email to
      • Issues with GC Integration and Ticket Retrieval in Instant Messaging

        I am using Guided Conversations (GC) within Instant Messaging (IM) channels. When a user sends a message, a ticket is created in Desk, but GC cannot identify which ticket it corresponds to. To address this, I have implemented a workflow rule to rename
      • Localhost works fine, but issue come Zoha mailer on live server

        package.json "proxy": { "/auth/google": { "target": "http://localhost:8000/" } }, ContactForm.jsx import React, { useState, useEffect } from 'react' const ContactForm = () => { const [fname, setFname] = useState(""); const [lname, setLname] = useState("");
      • Set Mandatory Lookup Fields in Ticket Layout

        I added a custom module called 'Site' in the desk. I also added a lookup field 'Site' in the ticket layout. Now, I want the 'Site' field to be mandatory in the blueprint transition. How can I do that?
      • Ability to Initiate WhatsApp Template Messages in Zoho SalesIQ Without Preexisting Chat

        Hi Zoho SalesIQ Team, I hope you're doing well. I understand that with the WhatsApp integration in SalesIQ, clients can contact us via WhatsApp, and we can use WhatsApp templates to send messages outside of the 24-hour window by reopening an existing
      • CPQ Quantity suggestion does not allow multiple products

        I have come across an issue in the CPQ Product Configuration. I want 10 products to trigger the suggestion of an additional product via the quantity in quoted items function. However, when specifying the configuration, I am only able to choose one base
      • Work Orders / Bundle Requests

        Zoho Inventory needs a work order / bundle request system. This record would be analogous to a purchase order in the purchasing workflow or a sales order in the sales cycle. It would be non-journaling, but it would reserve the appropriate inventory of
      • Email content strategy

        This is basically a couple of questions about the best practices when it comes to the use of colors as part of the message sent through the email campaign. 1 - Is there a guide or recommendation as to what are the best colors for text/background associated
      • Bill Of Material

        Can anyone tell me how to generate Bill of  Material (BOM) in zoho. _Thanks and regards, Dinesh A.
      • How to extract URL parameters with Zoho Flow

        Hello, I try to extract different parameters like UTM and Ads platform id like MSCKLID. Ex. mydomain.com/?utm_source=1234 They aren't necessarly all filed due to the usage of different platform. I have a field with the URL in Zoho CRM I have individual
      • Weekly Tips: SecurePass For Extra Security

        Imagine sensitive data from your organisation sent via email is being accessed by unintended recipients. The sensitive data can range from Personal Identification Information to a tender quotation or a client’s NDA document. The unintended access could
      • Paid Support Plans with Automated Billing

        We (like many others, I'm sure) are designing or have paid support plans. Our design involves a given number of support hours in each plan. Here are my questions: 1) Are there any plans to add time-based plans in the Zoho Desk Support Plans feature? The
      • Delete a department or category

        How do I delete a Department?  Also, how do I delete a Category? This is pretty basic stuff here and it's impossible to find.
      • No puedo enviar correos, outgoing blocked

        No puedo enviar correos, me sale un mensaje de error outgoing blocked. Pueden revisar y desbloquear la cuenta. Gracias
      • Open A.I assistant Connect with Zoho Desk instant Message Conversations

        I would like to know how do I connect my instant messenger in Zoho desk with my Open A.I Gpt Assistant. this is very easy to setup using the Salesiq Zobot but when it comes to Zoho Desk i cannot figure how to make the connection. Ideal workflow Customers
      • Reopen and Continue WhatsApp Chats within 24-Hour Window

        Dear Zoho SalesIQ Team, I'm writing to request a new feature that would enhance WhatsApp communication management within the 24-hour window: the ability to reopen and continue conversations with customers after a chat has been closed from our end. Current
      • How to Initiate WhatsApp Message on SalesIQ?

        I've just activated a Business WhatsApp phone number through SalesIQ because of its touted omnichannel chat approach. Sounds exciting. I understand that when a customer sends me a WA message, I can reply to it on SalesIQ and keep the chat going, perfect.
      • Cannot create alias, getting AS101

        The error AS101 is shown while I try to add the alias. How can I fix that?
      • BOLETO PARA PAGAMENTO

        Gostaria de saber como faço para pagar o boleto de licença anual do o email do zoho
      • CAIXA DE E-MAIL BLOQUEADA

        Obrigado, bom dia! O e-mail financeiro@grupoa7.com.br está com a caixa de e-mail bloqueada e já apagamos alguns e-mails e agora estamos tentando fazer backup dos mais antigos e não estamos conseguindo. Poderiam nos ajudar?
      • Email sent from Automated system on Oracle Netsuite of my customer not being received in my zoho mail

        My customer is using Oracle Netsuite to send us enquiries and PO's. It is strange that these are not being received in my Zoho Mail account. It is not even bouncing back. I am not sure why is it is not being shown. I wrote to support@zoho.com but the
      • Paypal Payaments Pro not available in our live account.

        We have a test environment set up and one of hte payment gateways is paypal payments pro. This option is not avaiable in our live account and the regular paypal gateway says auto-charge not available. Why does paypal payments pro not appear in our live
      • Next Page