3 * Info behaviors on node edit form.
6 (function ($, window) {
10 var relationFieldsPathByContentType = "/admin/permissions-by-term/access-info-by-content-type/",
11 relationFieldsPathByUrl = "/admin/permissions-by-term/access-info-by-url?url=";
14 * @type {Drupal~behavior}
16 Drupal.behaviors.nodeForm = {
19 var contentType = getContentType(),
22 if (contentType !== null) {
23 getFormInfo = $.get(relationFieldsPathByContentType + contentType);
25 getFormInfo = $.get(relationFieldsPathByUrl + window.location.pathname);
28 $.when(getFormInfo).done(function(formInfo){
30 if (formInfo['taxonomyRelationFieldNames'] !== null) {
32 var nodeForm = new NodeForm($),
33 fieldWrapperCSSClasses = nodeForm.computeFieldWrapperCSSClasses(formInfo['taxonomyRelationFieldNames']);
35 initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo);
37 for (var index = 0; index < fieldWrapperCSSClasses.length; ++index) {
39 var formElementCssClass = fieldWrapperCSSClasses[index];
41 nodeForm.addFormElementCssClass(formElementCssClass);
43 $(formElementCssClass + ' select').change(function (){
44 nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
47 $(formElementCssClass + ' input[type="text"]').on('autocomplete-select', function (){
48 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
51 $(formElementCssClass + ' input[type="text"]').on('keyup', function (){
52 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
55 $(formElementCssClass + ' input[type="checkbox"]').change(function (){
56 nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
63 function initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo) {
64 nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
65 nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
66 nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
69 function getContentType() {
70 if (window.location.href.indexOf('/node/add') !== -1) {
71 return window.location.href.split("/").pop();
81 * Handles an auto-complete select event.
83 * Override the autocomplete method to add a custom event. Overriding is
84 * happening to get full input.
86 * @param {jQuery.Event} event
87 * The event triggered.
89 * The jQuery UI settings object.
92 * Returns false to indicate the event status.
94 Drupal.autocomplete.options.select = function selectHandler(event, ui) {
95 var terms = Drupal.autocomplete.splitValues(event.target.value);
96 // Remove the current input.
98 // Add the selected item.
99 if (ui.item.value.search(',') > 0) {
100 terms.push('"' + ui.item.value + '"');
103 terms.push(ui.item.value);
105 event.target.value = terms.join(', ');
106 // Fire custom event that other controllers can listen to.
107 jQuery(event.target).trigger('autocomplete-select');
109 // Return false to tell jQuery UI that we've filled in the value already.