--- /dev/null
+/**
+ * @file
+ * Info behaviors on node edit form.
+ */
+
+(function ($, window) {
+
+ 'use strict';
+
+ var relationFieldsPathByContentType = "/admin/permissions-by-term/access-info-by-content-type/",
+ relationFieldsPathByUrl = "/admin/permissions-by-term/access-info-by-url?url=";
+
+ /**
+ * @type {Drupal~behavior}
+ */
+ Drupal.behaviors.nodeForm = {
+ attach: function () {
+
+ var contentType = getContentType(),
+ getFormInfo = null;
+
+ if (contentType !== null) {
+ getFormInfo = $.get(relationFieldsPathByContentType + contentType);
+ } else {
+ getFormInfo = $.get(relationFieldsPathByUrl + window.location.pathname);
+ }
+
+ $.when(getFormInfo).done(function(formInfo){
+
+ if (formInfo['taxonomyRelationFieldNames'] !== null) {
+
+ var nodeForm = new NodeForm($),
+ fieldWrapperCSSClasses = nodeForm.computeFieldWrapperCSSClasses(formInfo['taxonomyRelationFieldNames']);
+
+ initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo);
+
+ for (var index = 0; index < fieldWrapperCSSClasses.length; ++index) {
+
+ var formElementCssClass = fieldWrapperCSSClasses[index];
+
+ nodeForm.addFormElementCssClass(formElementCssClass);
+
+ $(formElementCssClass + ' select').change(function (){
+ nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
+ });
+
+ $(formElementCssClass + ' input[type="text"]').on('autocomplete-select', function (){
+ nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
+ });
+
+ $(formElementCssClass + ' input[type="text"]').on('keyup', function (){
+ nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
+ });
+
+ $(formElementCssClass + ' input[type="checkbox"]').change(function (){
+ nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
+ });
+ }
+ }
+
+ });
+
+ function initPermissionInfoByFormElements(nodeForm, fieldWrapperCSSClasses, formInfo) {
+ nodeForm.displayPermissionsBySelect(fieldWrapperCSSClasses, formInfo['permissions']);
+ nodeForm.displayPermissionsByAutocomplete(fieldWrapperCSSClasses, formInfo['permissions']);
+ nodeForm.displayPermissionsByCheckbox($(this).prop('value'), $(this).prop('checked'), formInfo['permissions']);
+ }
+
+ function getContentType() {
+ if (window.location.href.indexOf('/node/add') !== -1) {
+ return window.location.href.split("/").pop();
+ }
+
+ return null;
+ }
+
+ }
+ };
+
+ /**
+ * Handles an auto-complete select event.
+ *
+ * Override the autocomplete method to add a custom event. Overriding is
+ * happening to get full input.
+ *
+ * @param {jQuery.Event} event
+ * The event triggered.
+ * @param {object} ui
+ * The jQuery UI settings object.
+ *
+ * @return {boolean}
+ * Returns false to indicate the event status.
+ */
+ Drupal.autocomplete.options.select = function selectHandler(event, ui) {
+ var terms = Drupal.autocomplete.splitValues(event.target.value);
+ // Remove the current input.
+ terms.pop();
+ // Add the selected item.
+ if (ui.item.value.search(',') > 0) {
+ terms.push('"' + ui.item.value + '"');
+ }
+ else {
+ terms.push(ui.item.value);
+ }
+ event.target.value = terms.join(', ');
+ // Fire custom event that other controllers can listen to.
+ jQuery(event.target).trigger('autocomplete-select');
+
+ // Return false to tell jQuery UI that we've filled in the value already.
+ return false;
+ }
+
+})(jQuery, window);
\ No newline at end of file