From 46628721fe72d4473133ae3dd37b536aa53aea16 Mon Sep 17 00:00:00 2001 From: Ingo Schommer Date: Fri, 2 Mar 2012 18:11:02 +0100 Subject: [PATCH] ENHANCEMENT Using chosen.js for group selection in Member->getCMSFields() --- admin/javascript/LeftAndMain.js | 4 ++-- security/Member.php | 14 +++++++++----- templates/forms/CheckboxSetField_Select.ss | 11 +++++++++++ 3 files changed, 22 insertions(+), 7 deletions(-) create mode 100644 templates/forms/CheckboxSetField_Select.ss diff --git a/admin/javascript/LeftAndMain.js b/admin/javascript/LeftAndMain.js index 9ef2ddbe8..06b5d6b66 100644 --- a/admin/javascript/LeftAndMain.js +++ b/admin/javascript/LeftAndMain.js @@ -363,9 +363,9 @@ jQuery.noConflict(); * we can fix the height cropping. */ - $('.cms .field.dropdown').entwine({ + $('.cms .field.dropdown, .cms .field.checkboxset').entwine({ onmatch: function() { - $(this).find("select:not(.no-chzn)").chosen(); + $(this).find("select:not(.no-chzn)").data('placeholder', ' ').chosen(); $(this).addClass("has-chzn"); this._super(); diff --git a/security/Member.php b/security/Member.php index 49f709a9e..51b0128be 100644 --- a/security/Member.php +++ b/security/Member.php @@ -1133,12 +1133,16 @@ class Member extends DataObject { // Groups relation will get us into logical conflicts because // Members are displayed within group edit form in SecurityAdmin $fields->removeByName('Groups'); - + if(Permission::check('EDIT_PERMISSIONS')) { - $groupsField = new TreeMultiselectField('Groups', false, 'Group'); - $fields->findOrMakeTab('Root.Groups', singleton('Group')->i18n_plural_name()); - $fields->addFieldToTab('Root.Groups', $groupsField); - + $groupsMap = DataList::create('Group')->map('ID', 'Breadcrumbs')->toArray(); + asort($groupsMap); + $fields->addFieldToTab('Root.Main', + Object::create('CheckboxSetField', 'Groups', singleton('Group')->i18n_plural_name()) + ->setTemplate('CheckboxSetField_Select') + ->setSource($groupsMap) + ); + // Add permission field (readonly to avoid complicated group assignment logic). // This should only be available for existing records, as new records start // with no permissions until they have a group assignment anyway. diff --git a/templates/forms/CheckboxSetField_Select.ss b/templates/forms/CheckboxSetField_Select.ss new file mode 100644 index 000000000..f1eb1e6fb --- /dev/null +++ b/templates/forms/CheckboxSetField_Select.ss @@ -0,0 +1,11 @@ +<%-- Renders a CheckboxField with $multiple=true as a select element which can save into relations.--%> +<%-- TODO Make relation saving available on ListboxField --%> + \ No newline at end of file