patched loggintobogan fixed bug against field_permissions
removed field_collection (gonna dev own custom modules for showroom updated field-permissions to last dev
This commit is contained in:
@@ -0,0 +1,91 @@
|
||||
--- logintoboggan.permissions.js
|
||||
+++ logintoboggan.permissions.js
|
||||
@@ -1,77 +1,25 @@
|
||||
|
||||
/**
|
||||
- * This is a custom implementation of user.permissions.js, which is necessary
|
||||
- * because LoginToboggan needs its pre-auth role to not be explicitly tied to
|
||||
- * the auth role. The change is minor -- simply exclude the pre-auth role from
|
||||
- * all the auto-checking as the anon and auth user roles are.
|
||||
+ * LoginToboggan needs its pre-auth role to not be explicitly tied to
|
||||
+ * the auth role.
|
||||
*/
|
||||
-
|
||||
(function ($) {
|
||||
|
||||
/**
|
||||
* Shows checked and disabled checkboxes for inherited permissions.
|
||||
*/
|
||||
-Drupal.behaviors.permissions = {
|
||||
- attach: function (context) {
|
||||
- var self = this;
|
||||
- $('table#permissions').once('permissions', function () {
|
||||
- // On a site with many roles and permissions, this behavior initially has
|
||||
- // to perform thousands of DOM manipulations to inject checkboxes and hide
|
||||
- // them. By detaching the table from the DOM, all operations can be
|
||||
- // performed without triggering internal layout and re-rendering processes
|
||||
- // in the browser.
|
||||
- var $table = $(this);
|
||||
- if ($table.prev().length) {
|
||||
- var $ancestor = $table.prev(), method = 'after';
|
||||
- }
|
||||
- else {
|
||||
- var $ancestor = $table.parent(), method = 'append';
|
||||
- }
|
||||
- $table.detach();
|
||||
-
|
||||
- // Create dummy checkboxes. We use dummy checkboxes instead of reusing
|
||||
- // the existing checkboxes here because new checkboxes don't alter the
|
||||
- // submitted form. If we'd automatically check existing checkboxes, the
|
||||
- // permission table would be polluted with redundant entries. This
|
||||
- // is deliberate, but desirable when we automatically check them.
|
||||
- var $dummy = $('<input type="checkbox" class="dummy-checkbox" disabled="disabled" checked="checked" />')
|
||||
- .attr('title', Drupal.t("This permission is inherited from the authenticated user role."))
|
||||
- .hide();
|
||||
-
|
||||
- $('input[type=checkbox]', this).not('.rid-2, .rid-1, .rid-' + Drupal.settings.LoginToboggan.preAuthID).addClass('real-checkbox').each(function () {
|
||||
- $dummy.clone().insertAfter(this);
|
||||
+Drupal.behaviors.LoginTobogganPermissions = {
|
||||
+ attach: function (context, settings) {
|
||||
+ // Revert changes made by modules/user/user.permissions.js
|
||||
+ $('table#permissions', context).once('tobogganPermissions', function () {
|
||||
+ $('input[type=checkbox]', this).filter('.rid-' + settings.LoginToboggan.preAuthID).removeClass('real-checkbox').each(function () {
|
||||
+ $(this).next().filter('.dummy-checkbox').remove();
|
||||
+ $('input.rid-' + settings.LoginToboggan.preAuthID).each(function () {
|
||||
+ this.style.display = '';
|
||||
+ });
|
||||
});
|
||||
-
|
||||
- // Initialize the authenticated user checkbox.
|
||||
- $('input[type=checkbox].rid-2', this)
|
||||
- .bind('click.permissions', self.toggle)
|
||||
- // .triggerHandler() cannot be used here, as it only affects the first
|
||||
- // element.
|
||||
- .each(self.toggle);
|
||||
-
|
||||
- // Re-insert the table into the DOM.
|
||||
- $ancestor[method]($table);
|
||||
});
|
||||
},
|
||||
-
|
||||
- /**
|
||||
- * Toggles all dummy checkboxes based on the checkboxes' state.
|
||||
- *
|
||||
- * If the "authenticated user" checkbox is checked, the checked and disabled
|
||||
- * checkboxes are shown, the real checkboxes otherwise.
|
||||
- */
|
||||
- toggle: function () {
|
||||
- var authCheckbox = this, $row = $(this).closest('tr');
|
||||
- // jQuery performs too many layout calculations for .hide() and .show(),
|
||||
- // leading to a major page rendering lag on sites with many roles and
|
||||
- // permissions. Therefore, we toggle visibility directly.
|
||||
- $row.find('.real-checkbox').each(function () {
|
||||
- this.style.display = (authCheckbox.checked ? 'none' : '');
|
||||
- });
|
||||
- $row.find('.dummy-checkbox').each(function () {
|
||||
- this.style.display = (authCheckbox.checked ? '' : 'none');
|
||||
- });
|
||||
- }
|
||||
};
|
||||
|
||||
})(jQuery);
|
||||
Reference in New Issue
Block a user