/** * Add the Simplify Tab to the Group edit page * * @param FieldSet $fields List of CMS fields to update */ public function updateCMSFields(FieldList $fields) { if ($this->owner->class == "Group") { //print_r($this->owner->Permissions()); $groupID = $this->owner->ID; //Only remove fields if Simplify isn't disabled if (!SimplifyPermission::check("SIMPLIFY_DISABLED")) { //Check if any Simplify Permissions are disabling Secutity Group fields.. if (SimplifyPermission::check("SIMPLIFY_SECURITY_HIDE_MEMBERS")) { $fields->removeByName("Members"); } if (SimplifyPermission::check("SIMPLIFY_SECURITY_HIDE_PERMISSIONS")) { $fields->removeByName("Permissions"); } if (SimplifyPermission::check("SIMPLIFY_SECURITY_HIDE_IP")) { $fields->removeByName("IP Addresses"); } //If the permisison to hide the Simplify tab itself is set, exit now - as we don't want to create the tab if (SimplifyPermission::check("SIMPLIFY_SECURITY_HIDE_SIMPLIFY")) { return; } } //Create the Simplify TabSet $fields->addFieldToTab("Root", new TabSet("Simplify")); //loop Through permissions and build header tabs and checkboxes foreach (SimplifyPermissionProvider::mergedPermissions() as $title => $grouping) { $tab = str_replace(" ", "", $title); $fields->findOrMakeTab("Root.Simplify.{$tab}"); foreach ($grouping as $code => $label) { //See if perm exists $perm = DataObject::get_one("Permission", "\"Code\"='{$code}' AND \"GroupID\"={$groupID}"); $setChecked = ""; if ($perm) { $checked = 1; $setChecked = "checked='checked'"; } else { $checked = 0; } //$fields->addFieldToTab("Root.Simplify.{$tab}", new CheckboxField($code."|".$groupID, $label, $checked)); //TODO: Should be line above, have to hack for now with onclick to avoid race cond. $fields->addFieldToTab("Root.Simplify.{$tab}", new LiteralField($code . "|" . $groupID, "<p id='{$code}|{$groupID}' class='checkbox'>\n\t\t\t\t\t\t\t<input type='checkbox' value='1' {$setChecked} name='{$code}' onclick='Simplify.PermissionToggle(this)'/>\n\t\t\t\t\t\t\t<label class='right' for='{$code}'>{$label}</label>\t\t\t\t\t\t\t\n\t\t\t\t\t\t</p>")); } } //Add button lists to the HTML Editor tab $fields->addFieldsToTab("Root.Simplify.HTMLEditor", array(new TextField("HTMLEditorLine1", "Line 1"), new TextField("HTMLEditorLine2", "Line 2"), new TextField("HTMLEditorLine3", "Line 3"), new LiteralField("HTMLNote", "\n\t\t\t\t\t<p class='simpHead'>Default Buttons</p>\n\t\t\t\t\t<p class='simpHead'>Line 1</p>\n\t\t\t\t\t<p class='default1'>" . implode(",", self::$editor_buttons[1]) . "</p>\n\t\t\t\t\t<p class='simpHead'>Line 2</p>\n\t\t\t\t\t<p class='default2'>" . implode(",", self::$editor_buttons[2]) . "</p>\n\t\t\t\t\t<p class='simpHead'>Line 3</p>\n\t\t\t\t\t<p class='default3'>" . implode(",", self::$editor_buttons[3]) . "</p>\n\t\t\t\t\t<p><button class='simplifyHtmlDefaults action' type='button'>Reset to defaults</button></p>\t\t\t\t\t\t\t\t\t\t\n\t\t\t\t\t"))); //Add select/deselect all to Page Creation $pageCreation = $fields->findOrMakeTab("Root.Simplify.PageCreation"); $firstField = $pageCreation->Fields()->First(); $fields->addFieldToTab("Root.Simplify.PageCreation", new LiteralField("SelectDeselect", "<button class='simplifyPageCreationAll'>Select all</button><button class='simplifyPageCreationNone'>Deselect all</button>"), $firstField->getName()); //TODO - these are future niceities..impl them! //$fields->addFieldToTab("Root.Simplify", new CheckboxField("FieldTreeInherit", "Inherit Permissions")); //$fields->addFieldToTab("Root.Simplify", new CheckboxField("FieldTreeDisable", "Disable instead of hiding")); //Create Field Tree tab //This is hacky until SS 2.4 comes with its improved admin JS //Tree is loaded by AJAX button as its too big to load whole tree //TODO: Eventually replace with tree with AJAX branches $fields->addFieldsToTab("Root.Simplify.Fields", array(new LiteralField("FieldTreeNote", "<p>Hide the following Pages, Tabs and Fields from this group (in the CMS).</p>"), new LiteralField("TreeActivator", '<div id="TreeActivator"> <input class="simplifyGroupCode" type="hidden" name="groupCode" value="' . $this->owner->Code . '"> <button onclick="Simplify.TreeActivator()" type="button" class="action">Load Field Tree...</button> </div>'))); } }