{"id":16,"date":"2006-01-31T12:47:23","date_gmt":"2006-01-31T17:47:23","guid":{"rendered":"http:\/\/www.tigercrossing.com\/blog\/?p=13"},"modified":"2006-01-31T12:47:23","modified_gmt":"2006-01-31T17:47:23","slug":"advance-on-my-allowance","status":"publish","type":"post","link":"http:\/\/tigercrossing.com\/blog\/advance-on-my-allowance\/","title":{"rendered":"Advance on My Allowance?"},"content":{"rendered":"<p>Permissions are all about <strong>allowing <\/strong>people and groups of people to do things. At least, that&#8217;s the model I&#8217;m using. There are two others&#8230; Allow everything then indicate restrictions (but that can have dangerous security issues), and mix permissions and restrictions together (but that can\/will get messy and confusing).<\/p>\n<p>So if you&#8217;ve been following the examples in this blog, you may have gotten the feeling that those dummy permissions I was using may not be so dummy. I did try to keep them self-consistant as I went along, even to the point of going back and tweeking them a bit. I&#8217;ve been trying to find a system of encoding permissions that is compact and clear, while retaining the ability to design-in more later. &#8220;More&#8221; both in number and in variety.<\/p>\n<p><!--more--><\/p>\n<p>Here are a few that I&#8217;ve used so far (with small updates):<\/p>\n<ul>\n<li>Land Access &#8211; Unlimited<\/li>\n<li>Group IMs &#8211; Can Start and Use<\/li>\n<li>Group Inventory &#8211; Can See and Take Only<\/li>\n<li>Rez Objects &#8211; 100 prims<\/li>\n<li>Teleport Other Here<\/li>\n<\/ul>\n<p>Notice that most are composed of two parts separated with a dash. The general idea is that some permissions will have extra parameters or settings that can be adjusted when the permission is added.<\/p>\n<p>Oh, but first: adding permissions. You&#8217;ve seen the little <strong><img decoding=\"async\" alt=\"[Add]\" title=\"[Add]\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/add.png\" \/><\/strong> symbol next to the Permissions header in the examples. Clicking that is how you add a new permission to the list, through a New Permission window that pops open. In it will be a list of all permissions in outline form. Why an outline and not just a bunch of fields and checkboxes? So new permissions to match new features can be easily added. Each entry in the list will have a sub-list of one or more options. Let&#8217;s try the examples from above:<\/p>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"V\" title=\"V\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/collapse.png\" \/> <\/strong>Land Access<\/li>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"(+)\" title=\"(+)\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_on.gif\" \/> <\/strong><strong> <\/strong><strong> <\/strong>Unlimited<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>With Ticket Only<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>No Access <em>(disabled)<\/em><\/li>\n<\/ul>\n<li><strong><img decoding=\"async\" alt=\"V\" title=\"V\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/collapse.png\" \/> <\/strong>Group IMs<\/li>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"(+)\" title=\"(+)\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_on.gif\" \/> <\/strong><strong> <\/strong>Can Start and Use<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t Start, Can Use<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t Start or Respond<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t See <em>(disabled)<\/em><\/li>\n<\/ul>\n<li><strong><img decoding=\"async\" alt=\"V\" title=\"V\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/collapse.png\" \/> <\/strong>Group Inventory<\/li>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can See and Use<\/li>\n<li><strong><img decoding=\"async\" alt=\"(+)\" title=\"(+)\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_on.gif\" \/> <\/strong>Can See and Take Only<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can See and Give Only<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can See, Can&#8217;t Use<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t See, Can Give (Drop Box)<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t See <em>(disabled)<\/em><\/li>\n<\/ul>\n<li><strong><img decoding=\"async\" alt=\"V\" title=\"V\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/collapse.png\" \/> <\/strong>Rez Objects<\/li>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Unlimited<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Parcel Max<\/li>\n<li><strong><img decoding=\"async\" alt=\"(+)\" title=\"(+)\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_on.gif\" \/> <\/strong>Prim Limit: [ 100 <strong><img decoding=\"async\" alt=\"[Edit]\" title=\"[Edit]\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/edit.gif\" \/><\/strong>] prims<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Not Allowed <em>(disabled)<\/em><\/li>\n<\/ul>\n<li><strong><img decoding=\"async\" alt=\"V\" title=\"V\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/collapse.png\" \/> <\/strong>Teleport Other Here<\/li>\n<ul>\n<li><strong><img decoding=\"async\" alt=\"(+)\" title=\"(+)\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_on.gif\" \/> <\/strong>Can<\/li>\n<li><strong><img decoding=\"async\" alt=\"( )\" title=\"( )\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/radio_off.gif\" \/> <\/strong>Can&#8217;t <em>(disabled)<\/em><\/li>\n<\/ul>\n<\/ul>\n<p>As I wrote the above example, I started with checkboxes instead of radio buttons. So Group Inventory had only three sub items: See, Take, and Give. The problem with that, however, is that certain combinations, namely &#8220;can&#8217;t see, can take&#8221;, are invalid. The list could be coded to gray-out the &#8220;take&#8221; if the see isn&#8217;t checked, but then you are putting interrelationships in there that aren&#8217;t visible to the user until they stumble across them.<\/p>\n<p>Also, the general idea is that the title of the permission changes to reflect the options set within it when it closes. If checkboxes are used, then some internal mapping would have to create this string based on which options were checked. Then you have a dissimilarity between the collapsed and expanded permissions.<\/p>\n<p>Overall, I thought radio buttons would be the clearer option, even if they can get to be a bit more wordy when expanded. What you see is what you get.<\/p>\n<p>For the inline values, clicking them would either open a dialog box with an editable text field or edit the value in-line, depending on the whim of the interface coder. Accepting the changes in a dialog box changes the value in the outline.<\/p>\n<p>The options are listed most-permissive to least-permissive, and the option marked with &#8220;(disabled)&#8221; is the one that will remove that permission completely. It will no longer appear in the Role we are editing in the Group or Land or Object permissions list.<\/p>\n<p>Any permission that can&#8217;t be easily summed up in a single list of radio buttons would be split into several different permission entries. Hopefully, there won&#8217;t be any inter-related permissions that are too complex to be combined.<\/p>\n<p>Now just to clarify the whole picture&#8230; You only see the non-&#8220;(disabled)&#8221; permissions in a Role. When you click the little <strong><img decoding=\"async\" alt=\"[Add]\" title=\"[Add]\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/add.png\" \/> <\/strong>to add a new one, the window that opens lists <strong>all<\/strong> of the permissions, including the ones that are already set. The ones that are set will have the same extended name (after the -) as they did in the Role&#8217;s list, and when expanded show that option as selected. The items that were not visible in the Role are red with no extended name. You would expand one of those and change its option selection to enable it. While in this dialog, you can edit any of the existing permissions or even add more than one.<\/p>\n<p>I&#8217;m going to add the edit icon <strong><img decoding=\"async\" alt=\"[Edit]\" title=\"[Edit]\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/edit.gif\" \/><\/strong> next to all future Role mock-ups along with the remove icon <strong><img decoding=\"async\" alt=\"[Remove]\" title=\"[Remove]\" src=\"http:\/\/www.tigercrossing.com\/blog\/images\/remove.png\" \/><\/strong> so the permission dialog window can be opened directly to that particular permission for editing (or removal), expanded.<\/p>\n<p>That seems to cover how to add, edit, and remove permissions from a Role&#8230; At least, all that I&#8217;ve thought up so far. \ud83d\ude42<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Permissions are all about allowing people and groups of people to do things. At least, that&#8217;s the model I&#8217;m using. There are two others&#8230; Allow everything then indicate restrictions (but that can have dangerous security issues), and mix permissions and restrictions together (but that can\/will get messy and confusing). So if you&#8217;ve been following the [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-16","post","type-post","status-publish","format-standard","hentry","category-group-reform"],"_links":{"self":[{"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/posts\/16","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/comments?post=16"}],"version-history":[{"count":0,"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/posts\/16\/revisions"}],"wp:attachment":[{"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/media?parent=16"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/categories?post=16"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/tigercrossing.com\/blog\/wp-json\/wp\/v2\/tags?post=16"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}