Adds another check before adding click functionality, which will also append a message why it can't in this specific case.
Logic for checking canEdit moved inside the loop to refresh every time, but if this turns out to be an expensive call and I'm not realising that we we can pop it back out and just store what it has.