I would like to have a button on a page
-Use Case: User logs in with our SSO we get their user id, when they navigate pages they can save them to a favorites category. Then when they go to our homepage we can generate a list of urls from that and display them so they can navigate our site quicker.
Favorite This Page
we will grab the user id (I know how to do this already)
Then I check the file. - Need to read specific kirby text file - If id:page exist show red button if they don’t show blue button.
Then if they click the button - if it exists delete the entry if it doesn’t create it.
I hope that is simple enough. I basically need to know how to write and read from any text file anywhere on the site, store an array and call back to it. Delete it etc.
Maybe I can use tags for my user ids. Then if they “favorite” or tag that page it will ad a tag to that page. If the page doesn’t exist it will add the page and ad their user id for that page.
How many users and pages are we talking about? Maybe this would be a use case for a little data base? Of course, you could also store this in a separate content page or even in a text file (using f::write()). As an example, in my Kirby logger plugin, I save log data in a text file.
Since you want to show favorite pages per user, it would make sense to save a list of pages per userID rather than the other way round. In a pure Kirby environment, I’d probably store this information in the user account file. But since you are using a different login system, you have to store this information somewhere else.
So, I’ve created one template that uses modules which will be used on 90% of the pages. I’m going to ad a tag feature to that where I will store ids. Then I’ll check the array on page load for the userid.
The reason reason I’m not going to store the urls like I was, is that if a url gets changed, it will lose all it’s users and that url will need to be updated manually in the file.txt where I save the ids. Same with the logic that goes into saving it in a webservice.
Do you think in the next release. That every new page / module that is generated could have a site key id. Like sitekeyid = 1 sitekeyid = 2?
That way evertime if the user creates a new page it increments and I can track the page not by the urls but by the id. Thus if the url changes, “which happens here a lot because we use this as a backend program.” I can reference regardless if the url changes?
Currently it stores the values based on the urls. For instance, 22,55,33,55 : /about-us
But if about us changes the url to /about or in the folder structure 2-about-us becomes 3-about-us
I would have to update this manually to remind the system where the new url with user id’s was. But if Kirby auto assigned every generated page a key id. sets say about-us was keyid 3. Then
22,55,33,55 : 3
Could be stored anywhere and if the url changed it wouldn’t matter.
Then I can say query all pages for site keyid 3, show me it’s users. But if I try and query about-us and it even changed positions. Lets say from 2-about-us to 3-about-us. It will break.
Thus my logic for now will be to store all user-ids in the page under a hidden field. Then search those and see if the user that’s logged in exists.
I’m still wondering though, even after all this. If storing the ids in the text file will be easier. If I go that way.
How at the click of a button can I write to the current page text file from the frontend. Just wondering if there is a simple way, or a way. I read some things on post, but I would also need to remove values. Like a toggle. If it exists if it doesn’t.
Thanks for your quick reply. Support here is outstanding.