I'm working on an application using Play 2.0.4 in Scala, and one of the features I was asked to implement is to build a form that remembers all of the edit history. Basically, there should be a button next to every field that shows the details of every change, because the app users may want to rollback or use the edit history information later.
The first idea pops up in my mind is to assign a hidden div to every field that appends every change, and only shows the div when users click on the corresponding button. This doesn't sound very hard, but I feel like it may make the HTML a mess (since each user has his own record, each record has many fields). Or I could make a copy of the database and store all the changes inside, with the primary keys changed to be both the id of the form, and the edit time.
Thoughts? Am I overthinking the problem? Is there a more elegant way to store all of the edit history? We estimate that there would only be around 200 people in the company using it, so I guess I can let efficiency slide a little...
Thanks in advance.
I would normalize and persist the record in the database. This would allow you to have history on changes by having a history table for each section that they with to rollback.
This would allow manageability of restorations based on sets of data and significant changes can be tracked. Managing each field separately would be very cumbersome and least pragmatic.
Related
I have a question regarding my Powerapps I've built.
With this app user have to update or confirm the data that is stored in a sharepoint list. I have included the "modified by" column to see when someone has updated the data.
My problem is that if the data is up to date and the user submits the form there is no change in the modified by column. Because of that, I can't see if everybody has checked their data.
How can I achieve this even if no changes are made?
I thought of an extra column where the user has to put in something, but I don't know how to keep this empty every time so that the last input won't be shown anymore.
Thanks for your help.
Best regards,
Elena
If you want to allow users to submit/confirm without being able to change you can use some logic.
The first part of the logic is as normal, let the user submit the form as usual.
Make a flow that is being triggered after the normal update that takes the Row ID of your data and for example sets the record to inactive and back to active as this will triggers the modify date to be set.
So I am working on a project that awards points to students for submitting assignments or participating in forums, these points are then exposed as an Http resource using Flask.
The points are calculated by looking at the events triggered for each student.
One of the requirements right now is to add a box next to the student's name that shows the total amount of points they have. I have two ways of accessing the points, either by an http request from moodle or by storing and retrieving the points from moodle's database.
My question is what is the best approach of creating this "box", I have tried using moodle blocks and hacking the code but nothing seems to be working. Is creating a plugin for this the only solution or is there a simpler way to do it (if it is even possible)?
To answer your question properly you should have provided at least the theme and the Moodle version you work with. Should this box be displayed everywhere? Is the score calculated for every course individually?
Two proposals that came into my mind:
You could create a custom plugin of type block. There you can display the score of the user of the session and the top ten for example (If the score is calculated for each course individually). A disadvantage is that every teacher of a course could remove that block easily, if he or she wants to.
If the score counts system-wide you could put that box at the start page of your Moodle website, where only people with higher rights will be able to remove it.
If you use boost you could display the score in the navbar right next to the users name. For that you will have to create a new child theme of boost and overwrite navbar.mustache of theme_boost which get's it's information from columns2.php because it's included into columns2.mustache. In this PHP file you can include your logic and display it with the HTML which you put into navbar.mustache.
Of course these are not really simple ways to do that. But at the moment I doubt that an easy solution exists for this problem.
We're looking for a solution on how to best deal with the situation where multiple authors are working on the same page. If the first author pushes in the content, the second should have a way to merge it when he tries to publish. Launches appears to be a way to take care of this but it doesn't seem to be handling content merging. Is there any way an author can view the diff(and or do merge) of the content that might have been pushed by another author while they were working concurrently ?
Please help with any pointers.
Page modifications happen in real time to the underlying structure. They also happen at as small a level as possible.i.e. If you go into a text area and modify the text there, the text node is changed on the server, you aren't saving the entire page.
The only way that person A could interfere with what person B is doing is if they were working on the exact same area of the page. Which, honestly is a process issue. I say this because the answer to your question is that there is nothing out of the box to handle this type of scenario and if you are on 6.0 or higher and looking at the JCR3. JCR3 handles this far worse than the older version did. Last time I checked it didn't support nodes at all
Adding to what Bailey said, AEM OOB allow multiple users to edit same page in real time, though if multiple users are working on same node will be a reason of conflict. Such cases can be managed by defining a process like:
1. Take a lock of page and edit page or
2. Create versions of page and publish versions
I am a Django noob and have a situation that goes beyond the basic documentation, etc.
I am updating an ordering webpage that has a form structured as follows:
several text boxes, etc to gather general info (name, date, etc)
two separate tables for selecting (via checkbox) catalogs that are generated/managed using endless_pagination. Each table can have thousands of records, hence the endless_pagination. The first column in each table is a checkbox with value = catalog.id.
a textbox where the user can manually enter catalog IDs
a submit button
I am not sure how to keep track of what a user has selected in the two paginated tables since the checked boxes are lost when choosing a different page. Also, when the user flips back and forth between the pages, the previoulsy checked catalogs will need to be re-checked(since the checked state is not maintained). I am also not sure which tool(s) to use to deal with this.
My thought is to use JavaScript (with which I have minimal experience) to update a list of catalog IDs whenever a checkbox is checked/unchecked and:
- and attach that list to the form or
- update a variable in the form or
- send as a variable separate from the form, whichever is possible/makes more sense.
I'm hoping that maintaining a list of catalog IDs is possible because the next iteration of this form will likely include some sort of filtering so I'm trying to devise a solution that will not have to be reworked later.
I have reviewed a lot of posts but I believe the closest solutions are rendered useless because of the endless_pagination.
Let me know if further clarification is required. Thanks in advance for any suggestions.
UPDATE
I tried using JavaScript to store the catalog IDs in an array when a checkbox is checked. This does not work when a user selects another page in the pagination. The array of checked catalog IDs is lost when the page 'reloads'.
I'm running into this problem right now as well. I'm handling this by writing the checked items to localStorage so they carry across to page 2, 3, etc.. as well as show up as already checked when you go back to page 1. Then every time the page loads, either find and check the existing checkbox, or create a hidden input with the appropriate name and value and append it to the main form.
var selected_items = []
function add_item_to_checkbox(item) {
localStorage.setItem('selected_items', JSON.stringify(selected_items));
checkbox.on("click", add_item_to_checkbox);
bahh... Just look at my jsfiddle it's easier to read and yeah. I don't have to type JS into a textarea on stackoverflow.
Here is my javascript minus a few things that are specific to my code. I'm sure it could be improved upon but it works really well for my application.
I need to save a form's current state and restore it while i am navigating between them. I am using FormManager class to navigate between form's. Is it possible to do that with memory handled efficiently?
bada Allows create up to 30 forms per application. You can use Frame::SetCurrentForm to make desired form active. But as i see you want have exactly one physically existing form at the time. Imho common mechanism to saving some state is not exists ( by the way what exactly states you trying to achieve to save? ).
You can try using some own (depends of what exactly you need) user-define format such as some template-based collection from Osp::Base::Collection