$(document).on('turbolinks:load', init_path_modal); function init_path_modal() { path_modal_action(); path_validation_action(); path_type_init(); path_validation($("input[id='procedure_path']")); } function path_modal_action() { $('#publish-modal').on('show.bs.modal', function (event) { $("#publish-modal .modal-body .table .tr-content").hide(); var button = $(event.relatedTarget) // Button that triggered the modal var modal_title = button.data('modal_title'); // Extract info from data-* attributes var modal_index = button.data('modal_index'); // Extract info from data-* attributes var modal = $(this) modal.find('#publish-modal-title').html(modal_title); $("#publish-modal .modal-body .table #"+modal_index).show(); }) } function path_validation_action() { $("input[id='procedure_path']").keyup(function (key) { if (key.keyCode != 13) path_validation(this); }); } function togglePathMessage(valid, mine) { $('#path-messages .message').hide(); if (valid === true && mine === true) { $('#path_is_mine').show(); } else if (valid === true && mine === false) { $('#path_is_not_mine').show(); } else if (valid === false && mine === null) { $('#path_is_invalid').show(); } if ((valid && mine === null) || mine === true) $('#publish-modal #publish').removeAttr('disabled') else $('#publish-modal #publish').attr('disabled', 'disabled') } function path_validation(el) { var valid = validatePath($(el).val()); toggleErrorClass(el, valid); togglePathMessage(valid, null); } function validatePath(path) { var re = /^[a-z0-9_\-]{3,50}$/; return re.test(path); } function path_type_init() { display = 'label'; var bloodhound = new Bloodhound({ datumTokenizer: Bloodhound.tokenizers.obj.whitespace(display), queryTokenizer: Bloodhound.tokenizers.whitespace, remote: { url: '/admin/procedures/path_list?request=%QUERY', wildcard: '%QUERY' } }); bloodhound.initialize(); $("#procedure_path").typeahead({ minLength: 1 }, { display: display, source: bloodhound, templates: { empty: 'Ce lien est disponible !', suggestion: Handlebars.compile("<div class='path-mine-{{mine}}'>{{label}}</div>") }, limit: 5 }); $('#procedure_path').bind('typeahead:select', function(ev, suggestion) { togglePathMessage(true, suggestion['mine']); }); } function transfer_errors_message(show) { if(show){ $("#not_found_admin").slideDown(100) } else { $("#not_found_admin").slideUp(100) } }