3 * Info behaviors on node edit form.
6 (function ($, window) {
10 if ($("#edit-permissions-by-term-info").length > 0) {
12 var relationFieldsPathByContentType = "/admin/permissions-by-term/access-info-by-content-type/",
13 relationFieldsPathByUrl = "/admin/permissions-by-term/access-info-by-url?url=";
16 * @type {Drupal~behavior}
18 Drupal.behaviors.nodeForm = {
21 var contentType = getContentType(),
24 if (contentType !== null) {
25 getFormInfo = $.get(relationFieldsPathByContentType + contentType);
27 getFormInfo = $.get(relationFieldsPathByUrl + window.location.pathname);
30 $.when(getFormInfo).done(function(formInfo){
32 if (formInfo['taxonomyRelationFieldNames'] !== null) {
34 var nodeForm = new NodeForm($),
35 fieldWrapperCSSClasses = nodeForm.computeFieldWrapperCSSClasses(formInfo['taxonomyRelationFieldNames']);
37 initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo);
39 for (var index = 0; index < fieldWrapperCSSClasses.length; ++index) {
41 var formElementCssClass = fieldWrapperCSSClasses[index];
43 nodeForm.addFormElementCssClass(formElementCssClass);
45 $(formElementCssClass + ' select').change(function (){
46 nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
49 $(formElementCssClass + ' input[type="text"]').on('autocomplete-select', function (){
50 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
53 $(formElementCssClass + ' input[type="text"]').on('keyup', function (){
54 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
57 $(formElementCssClass + ' input[type="checkbox"]').change(function (){
58 nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
65 function initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo) {
66 nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
67 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
68 nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
71 function getContentType() {
72 if (window.location.href.indexOf('/node/add') !== -1) {
73 return window.location.href.split("/").pop();
82 if (Drupal.autocomplete) {
84 * Handles an auto-complete select event.
86 * Override the autocomplete method to add a custom event. Overriding is
87 * happening to get full input.
89 * @param {jQuery.Event} event
90 * The event triggered.
92 * The jQuery UI settings object.
95 * Returns false to indicate the event status.
97 Drupal.autocomplete.options.select = function selectHandler(event, ui) {
98 var terms = Drupal.autocomplete.splitValues(event.target.value);
99 // Remove the current input.
101 // Add the selected item.
102 if (ui.item.value.search(',') > 0) {
103 terms.push('"' + ui.item.value + '"');
106 terms.push(ui.item.value);
108 event.target.value = terms.join(', ');
109 // Fire custom event that other controllers can listen to.
110 jQuery(event.target).trigger('autocomplete-select');
112 // Return false to tell jQuery UI that we've filled in the value already.