{"id":180,"date":"2009-11-17T20:37:03","date_gmt":"2009-11-17T18:37:03","guid":{"rendered":"http:\/\/kinsey.no\/blog\/?p=180"},"modified":"2009-12-02T18:04:07","modified_gmt":"2009-12-02T16:04:07","slug":"modifying-privileges-stored-binary-using-extjs","status":"publish","type":"post","link":"https:\/\/kinsey.no\/blog\/index.php\/2009\/11\/17\/modifying-privileges-stored-binary-using-extjs\/","title":{"rendered":"Modifying privileges stored binary using ExtJs"},"content":{"rendered":"<p>In an <a href=\"http:\/\/kinsey.no\/blog\/index.php\/2009\/11\/17\/storing-multiple-privilegessettings-in-a-single-integer\/\">earlier post<\/a> I showed you how to use binary operators to store multiple privileges\/settings in a single integer field. Now I will present to you a simple control for visualizing and modifying such a value.<\/p>\n<p><!--more--><\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nExt.namespace(&quot;Ext.ux&quot;);\r\nExt.ux.Privileges = function(config){\r\n    var _formPanel = this;\r\n    var items = [];\r\n\r\n    for (var key in config.privileges) {\r\n        if (config.privileges.hasOwnProperty(key)) {\r\n            items.push({\r\n                name: &quot;privilege_&quot; + config.privileges[key],\r\n                fieldLabel: key\r\n            });\r\n        }\r\n    }\r\n\r\n    Ext.apply(config, {\r\n        defaultType: &quot;checkbox&quot;,\r\n        items: items,\r\n\t\t\/**\r\n\t\t * Updates the form according to the current privileges\r\n\t\t * @param {Integer} p The integer containing all set privileges\r\n\t\t *\/\r\n        setValue: function(p){\r\n            var field, values = {}, privilege;\r\n\t\t\tfor (var key in config.privileges) {\r\n\t\t\t\t\/\/ Loop over all the privileges, set the value to true if set\r\n                if (config.privileges.hasOwnProperty(key)) {\r\n                    privilege = config.privileges[key];\r\n                    values[&quot;privilege_&quot; + privilege] = (p == (p | privilege));\r\n                }\r\n            }\r\n\t\t\t\/\/ Update the form\r\n            _formPanel.form.setValues(values);\r\n        },\r\n\t\t\/**\r\n\t\t * Returns an integer representing all set privileges\r\n\t\t * @return Integer\r\n\t\t *\/\r\n        getValue: function(){\r\n            var p = 0, field, privilege;\r\n\t\t\tfor (var key in config.privileges) {\r\n\t\t\t\t\/\/ Loop over all the privileges and see if it is set\r\n                if (config.privileges.hasOwnProperty(key)) {\r\n                    privilege = config.privileges[key];\r\n                    field = _formPanel.form.findField(&quot;privilege_&quot; + privilege);\r\n                    if (field.getValue()) {\r\n\t\t\t\t\t\t\/\/ The privilege is set, lets add it to p\r\n                        p = p | privilege;\r\n                    }\r\n                }\r\n            }\r\n            return p;\r\n        },\r\n\t\t\/**\r\n\t\t * Resets the form\r\n\t\t *\/\r\n        clear: function(){\r\n            _formPanel.form.reset();\r\n        }\r\n    });\r\n    Ext.ux.Privileges.superclass.constructor.call(this, config);\r\n};\r\nExt.extend(Ext.ux.Privileges, Ext.form.FormPanel);\r\n<\/pre>\n<p>Using the following code<\/p>\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar _pnlPrivileges= new Ext.ux.Privileges({\r\n\theight: 180,\r\n\tprivileges: {\r\n\t    Read: 1,\r\n\t    Write: 2,\r\n\t    Create: 4,\r\n\t    Delete: 8,\r\n\t    List: 16,\r\n\t    SetPrivileges: 32,\r\n\t    Publish: 64\r\n\t}\r\n});\r\n<\/pre>\n<p>you end up with something like this<\/p>\n<p><img loading=\"lazy\" class=\"size-full wp-image-183 alignnone\" title=\"privileges\" src=\"http:\/\/kinsey.no\/blog\/wp-content\/uploads\/2009\/11\/privileges.png\" alt=\"privileges\" width=\"414\" height=\"196\" srcset=\"https:\/\/kinsey.no\/blog\/wp-content\/uploads\/2009\/11\/privileges.png 414w, https:\/\/kinsey.no\/blog\/wp-content\/uploads\/2009\/11\/privileges-300x142.png 300w\" sizes=\"(max-width: 414px) 100vw, 414px\" \/><\/p>\n<p>The controll exposes its functionality in two methods, setValue and getValue &#8211; both of these should be easy to understand \ud83d\ude42<\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>In an earlier post I showed you how to use binary operators to store multiple privileges\/settings in a single integer field. Now I will present to you a simple control for visualizing and modifying such a value.<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":3,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":[],"categories":[34],"tags":[48,51,45,8,49],"_links":{"self":[{"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/posts\/180"}],"collection":[{"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/comments?post=180"}],"version-history":[{"count":13,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/posts\/180\/revisions"}],"predecessor-version":[{"id":187,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/posts\/180\/revisions\/187"}],"wp:attachment":[{"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/media?parent=180"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/categories?post=180"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsey.no\/blog\/index.php\/wp-json\/wp\/v2\/tags?post=180"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}