** Only allowed users can do certain changes to wiki content
*** All users can update object and key labels and aliases, and documentation
*** Only allowed users can associate & disassociate Testers and Implementations [functioneers] T299600
*** Only allowed users can associate & disassociate Testers and Implementations from system-provided objects (ZID < 10k) [super-functioneers] T260314
*** Only allowed users can edit Function definitions post-association(?) [super-functioneers] T299604
*** Only allowed users can edit associated Testers and Implementations [functioneers] T299603
*** Only allowed users can create Types [functioneers] T299601
*** Only allowed users can edit Types [super-functioneers] T299602
=>
Required user rights:
Create rights:
* `wikilambda-create` (general ZObjects)
* `wikilambda-create-type` (ZTypes)
* `wikilambda-create-function` (ZFunctions)
* `wikilambda-create-implementation` (ZImplementation)
* `wikilambda-create-tester` (ZTesters)
* `wikilambda-create-predefined` (ZID < 10k)
* `wikilambda-create-language` (ZNaturalLanguage)
* `wikilambda-create-programming` (ZLanguage)
+ equivalent for edits
+
* `wikilambda-connect-implementation`
* `wikilambda-disconnect-implementation`
* `wikilambda-connect-tester`
* `wikilambda-disconnect-tester`
Hardest code will be allowing general users to edit key labels of predefined/etc. items, as those we'll have to walk into the Z2K2's contents; we could skip this for launch, though it'd be a bit painful. Otherwise everything is just a check on the Z2K2's Z1K1 and the Z2K1 value, or the special code we already have for disconnect/connect code?.
----
[x] Create initial rights
[x] Wire up basic rights (ZID < 10K, etc.)
[x] Any create/edit
[x] ZID < 10K
[x] Types
[x] Functions
[x] Implementations
[x] Testers
[x] Natural languages
[x] Programming languages
[ ] Wire up complex rights
[ ] Dis/connecting Implementations and Testers
[ ] Edits to Implementations / Testers which are currently connected
[ ] Wire up special by-pass for adding/editing labels.