How to display comments(thing) for project(thing)

Repeating group Project to display list of projects


If user click button More
Than user can create own opinion for this project

  1. How to display list of all opinions for this project?
  2. How to moderate before displayed?
  3. What I’m doing wrong?

Hi @andrey_proekt :slight_smile: When a User creates a new Opinion for the project, what is the workflow to save the Opinion in the database? Can you share a few screenshots or a link to the editor?

1 Like

Hi @fayewatson ,


Thanks for help

Thanks! I think the editor may be set to private. To temporarily set it to public, you can go to Settings --> General --> Application Rights --> (Everyone can edit, or Everyone can view).

1 Like

@fayewatson Thanks. I changed this setting. Main conversion way this app bellow.

Ah, so sorry for the delay! I just looked over the page, and I think the first thing to do is to add a field to the Opinion data type called ‘Project’ (type: Project, list: no). This way, each Opinion is ‘connected’ to a Project. For this workflow when a new Opinion is created, you would save the Parent Group Project as the Opinion’s Project field:

Then for each ‘More’ button, you can add a display data action which displays the clicked-on project’s data in the agroup Project Card element.


*I did this for one of the ‘more’ buttons, but it would need to be added to the other ‘more’ buttons as well

The agroup Project Card data source is empty by default (since this is set dynamically in the workflow ‘Display Data’). I added an action to the aSend button workflow which adds the newly created Opinion to the Parent Group Project list of Opinions as well (since you have this as a field in the Project data type):

You can also use ‘Parent Group’s Project’ a reference to display a repeating group of Opinions for that Project using this search, with the added constraint “Project = Parent Group’s Project”, the field needed in the Opinion data type":

To show Opinions for all projects as a unified list of Opinions, you can use a repeating group as well which does a Search for Projects. Then a text element within that which is “Current cell Project’s Name”.

Within that first cell of the Project repeating group, also add another repeating group of type Opinion, with the data source either being: Parent Group’s Project’s Opinions, or, Do A Search for Opinions, with the constraint “Project = Current Cell’s Project”. Both will display the same list of Opinions for each Project, one may be slightly faster depending on the length of the lists of Opinions.

1 Like

Dear @fayewatson All your instructions are very accurate and correct. This problem is solved successfully.
I have a few additional questions about limiting the opinions for each project by one user and organizing ratings for users. Can you help me if I can not do it myself?
Thanks a lot

1 Like

Awesome! :slight_smile: No problem at all! Yes, definitely create a new post in the forum anytime you are stuck, and I, or someone else will definitely jump in to help!

1 Like

Thanks a lot. Only one more question in this topic. How can I restrict the user to make only one opinion for each project?

No problem! :slight_smile: There are a few different ways to do this, but I think the easiest way would be to put the input and button to add an Opinion in a group, and add a conditional statement to that group which is “When Do A Search for Opinions (Project = Parent Group’s Project, Creator = Current User):count is not 0” --> This element is not visible. That search is ‘checking’ if an Opinion already exists for this Project by the Current User, and if it’s ‘not 0’, then the User has already created an Opinion for the Project. This conditional statement will ‘hide’ the new Opinion group from the User if they’ve already created an Opinion for that Project.

Then you could have a separate “Edit My Opinion” button outside of the Add New Opinion Group, which is set not visible on page load. On that button, add a similar conditional statement such as “When Do A Search for Opinions (Project = Parent Group’s Project, Creator = Current User): count is not 0” --> This element is visible. This way, the Edit Opinion Button will be visible is the User has already submitted an Opinion for the Project.

When the Edit Opinion button is clicked, the workflow could, for example, show a popup with a multiline input which allows the User to edit their existing Opinion for the Project. The action for that Button would first need to “Display Data” in the Popup, which would display that User’s Opinion for that Project using (Do a Search for Opinions, Project = Parent Group’s Project, Creator = Current User): firstitem. The second action would then show the popup to the User in order to edit it. Within the popup, could also be two buttons (one to hide the popup, and another Save Changes). That should do it! :slight_smile:

Thanks for the capacious answer but I have difficulties in implementation. In which group do I need to create a group of input and a button?
In the constraint there is no “creator” and “count”


Thanks

@fayewatson If opinions not yet can I show something on this space?

Ah, my apologies for being unclear! It is definitely tricky to setup without screenshots. I just took a look at the application again and think it may just be easier by allowing the User to either submit a new Opinion, or if an Opinion for that Project from the User already exists, to allow them to edit that Opinion using the same form. I set it up for one of the Add Opinion groups (“aGroup Project Card”):

If you look at the Add Opinion inputs you had previously, the multiline inputs are now contained within a new group called “Group Project op”, of type Opinion.

By default, the data source is empty. However, there is a conditional statement on it which checks if an Opinion for the Project from the Current User already exists:

When that is the case, the data source of this group will no longer be empty; it will be the Opinion that the User has already submitted for the Parent Group’s Project (using the expression):

When an Opinion exists, the Initial Content of the multiline inputs will display the Risk Factors, Conclusion, and Information Sources, of the User’s Opinion for that Project automatically. Alternatively, if the User is submitting a new Opinion, the initial content should remain as empty.

Risk Factors:

Conclusion:

Information Sources:

Beneath these multiline inputs, the “aSend” button can either Create a new Opinion if one doesn’t exist, or Update the Opinion if it already exists for that Project from the Current User. In the workflows, the green workflow is what occurs when the “aSend” button is clicked and an Opinion doesn’t already exist.

Here the workflow actions are the same, but I added the statement to the ‘only when’ condition to run the workflow only when the “Group Project op’s data source is empty”. Because If the data source is empty, that means that an Opinion for that Project from the Current User does not yet exist, and the User is trying to submit a new Opinion:

Alternatively, the blue workflow will update an existing Opinion. Here the ‘only when’ statement is similar to the green workflow, but it checks to see if the 'Group Project Op’s data source is not empty. Because if the data source of Group Project is not empty, an Opinion for that Project from the Current User already exists, and the User is trying to update their Opinion:

I also added a conditional statement to the ‘Send Button’ which changes to ‘Update Opinion’ when the Group Project Op’s data source is not empty as well:

I didn’t test this, but I believe this approach should work with your setup! Please let me know if it doesn’t or if you have any additional questions :slight_smile:

@fayewatson Many Thank you for your detail explanation.
I wish you Happy New Year

1 Like