Like oddible I think the best way to solve this problem is to change the way LimeSurvey manage LabelSet permissions.
Separate create/edit roles could be an good idea but I think this could be best used at group level instead on global level. With this solution one user could have edit role in his group but not in others.
- Create scenario: when one user create a labelset he has to set what group the LabelSet is associated with, chosen between groups in which the user is enrolled.
The rights are assigned in group page, adding another button beside the "Delete" one. This new button redirect to an another page in which the right (by now only this only one right, maybe other in the future) has to be set.
An user without administration role will view labelset in the list only if he has labelset edit role for that group.
In the database we have to modify LabelSet table adding two columns: "owner_id" and "ugid", which identify the labelset creator and the group associated to the labelset. Then we should create table lime_user_groups_rights, in which there are three columns: ugid [int], uid [int], edit_label[tinyint]. The latter identifies the editing right.
Kemmotar