]> git.agnieray.net Git - galette.git/commitdiff
Fix groups selection widget on member form
authorGuillaume AGNIERAY <dev@agnieray.net>
Thu, 7 Mar 2024 17:49:43 +0000 (18:49 +0100)
committerJohan Cwiklinski <johan@x-tnd.be>
Sat, 9 Mar 2024 08:04:31 +0000 (09:04 +0100)
fixes #1801

galette/templates/default/components/forms/groups.html.twig
galette/templates/default/pages/member_form.html.twig

index f59cbcdac5c5f01729a74c7cd97db0f741957ba3..6ed1424b9e37dacfab07c2870a87ac77a540eb75 100644 (file)
     <div class="ui large labels">
         {% for group in groups %}
             {% if member.isGroupMember(group.getName()) or member.isGroupManager(group.getName()) %}
-                <span class="ui label">
                 {% if member.isGroupMember(group.getName()) %}
+                <span class="ui label member">
                     <i class="ui tag icon tooltip" title="{{ _T("Member of group") }}" aria-hidden="true"></i>
                 {% endif %}
                 {% if member.isGroupManager(group.getName()) %}
+                <span class="ui label manager">
                     <i class="ui shield icon tooltip" title="{{ _T("Group manager") }}" aria-hidden="true"></i>
                 {% endif %}
                     {{ group.getName() }}
index e3cd2b3ac7c1adb82bd4510073e7ca5307da9945..cbd0e0bc4bceedb9e14bd64a5859edc800599187 100644 (file)
                         //remove actual groups
                         var _form = (_managed) ? 'managed' : 'user';
                         $('#' + _form + 'groups_form').empty();
-                        var _groups = new Array();
-                        var _groups_str = '<br/><strong>';
-                        if ( _managed ) {
-                            _groups_str += '{{ _T("Manager for:")|e('js') }}';
+                        var _existing_labels = $('#groups_field .labels').children().length;
+                        var _new_labels = 0;
+                        if ($('#groups_field .labels').length === 0) {
+                            var _labels_container = '<div class="ui large labels"></div>';
+                            $('#btngroups').before(_labels_container);
                         } else {
-                            _groups_str += '{{ _T("Member of:")|e('js') }}';
+                            if (_managed) {
+                                $('#groups_field .labels').find('.label.manager').remove();
+                            } else {
+                                $('#groups_field .labels').find('.label.member').remove();
+                            }
                         }
-                        _groups_str += '</strong> ';
+                        var _groups = new Array();
+                        var _groups_str = '';
 
                         $('li[id^="group_"]').each(function(){
                             //get group values
                                 _gid + '|' + _gname + '|' +
                                 '" name="' + _iname + '[]">'
                             );
-                            if ( _groups.length > 1 ) {
-                                _groups_str += ', ';
+                            if (_managed) {
+                                _groups_str += '<span class="ui orange basic label manager">';
+                                _groups_str += '<i class="ui shield icon tooltip" title="' + '{{ _T("Group manager")|e('js') }}' + '" aria-hidden="true"></i>';
+                            } else {
+                                _groups_str += '<span class="ui orange basic label member">';
+                                _groups_str += '<i class="ui tag icon tooltip" title="' + '{{ _T("Member of group")|e('js') }}' + '" aria-hidden="true"></i>';
                             }
                             _groups_str += _gname;
+                            _groups_str += '</span>';
+                            _new_labels += 1;
                         });
-                        $('#' + _form + 'groups').html(_groups_str);
+                        $('#groups_field .labels').append(_groups_str);
+                        var _modified = '<div class="ui yellow tiny message with-transition">{{ _T("Items in this list have been modified. Don't forget to save your changes.")|e('js') }}</div>';
+                        if (_existing_labels != _new_labels) {
+                            $('#groups_field').find('.message').remove();
+                            $('#groups_field').append(_modified);
+                        }
+                        $('.message.with-transition').transition('flash');
                         $('.groups-selection').modal('hide');
                     });