1/* Javascript document */ 2(function ($, Drupal) { 3 4 $(document).ready(function () { 5 6 $('.container').on('click','.vk-colorbox-load', function(){ 7 8 $.colorbox({ 9 iframe: true, 10 href:$(this).attr('href'), 11 innerWidth:"900px", 12 innerHeight:"80%", 13 maxWidth:'100%' 14 15 }); 16 return false; 17 }); 18 }); 19 20 // Mit Hilfe von KI, um Problem von Minikalender auf Mobil Gerät zu lösen 21 var mobileCloseHandler = null; 22 23 document.addEventListener('touchstart', function(e) { 24 var tdElement = e.target.closest('.ui-datepicker-calendar td'); 25 if (!tdElement) return; 26 27 e.preventDefault(); 28 e.stopPropagation(); 29 30 // 1. Alten SchlieÃ-Wächter sofort vernichten 31 if (mobileCloseHandler) { 32 document.removeEventListener('touchstart', mobileCloseHandler); 33 document.removeEventListener('click', mobileCloseHandler); 34 } 35 36 var $td = $(tdElement); 37 var $link = $td.find('a'); 38 39 // AN-AUS-Logik für exakt dasselbe Datum 40 if ($td.hasClass('mobile-aktiv')) { 41 $td.removeClass('mobile-aktiv'); 42 $link.off('mouseleave mouseout touchend'); 43 $('.ui-tooltip').remove(); 44 try { $(document).tooltip("disable").tooltip("enable"); } catch(err) {} 45 return; 46 } 47 48 // 2. BEIM WECHSELN: Alles gründlich aufräumen UND den jQuery UI Cache löschen! 49 $('.ui-datepicker-calendar td').removeClass('mobile-aktiv'); 50 $('.ui-tooltip').remove(); 51 $('.ui-datepicker-calendar td a').off('mouseleave mouseout touchend'); 52 53 // WICHTIG: Das zwingt jQuery UI beim Wechseln, das alte Datum komplett zu vergessen! 54 try { $(document).tooltip("disable").tooltip("enable"); } catch(err) {} 55 56 // Das neue Feld aktivieren 57 $td.addClass('mobile-aktiv'); 58 59 var picker = $.datepicker; 60 var $input = $('.hasDatepicker'); 61 var inst = picker ? picker._getInst($input) : null; 62 63 if (inst) { 64 picker._datepickerShowing = true; 65 picker._curInst = inst; 66 } 67 68 // Text-Retter 69 var text = $td.attr('data-speicher') || $link.attr('data-speicher') || $link.attr('title') || $td.attr('title'); 70 if (text) { 71 $td.attr('data-speicher', text); 72 $link.attr('data-speicher', text).attr('title', text); 73 } 74 75 // Events feuern 76 $link.trigger('mouseenter').trigger('mouseover'); 77 78 // SchlieÃ-Events blockieren 79 $link.on('mouseleave mouseout touchend', function(event) { 80 event.preventDefault(); 81 event.stopPropagation(); 82 }); 83 84 // SchlieÃ-Wächter für "woanders klicken" 85 mobileCloseHandler = function(event) { 86 if (!event.target.closest('.ui-datepicker-calendar td')) { 87 $td.removeClass('mobile-aktiv'); 88 $link.off('mouseleave mouseout touchend'); 89 $('.ui-tooltip').remove(); 90 91 try { $(document).tooltip("disable").tooltip("enable"); } catch(err) {} 92 93 document.removeEventListener('touchstart', mobileCloseHandler); 94 document.removeEventListener('click', mobileCloseHandler); 95 mobileCloseHandler = null; 96 } 97 }; 98 99 document.addEventListener('touchstart', mobileCloseHandler, { passive: false }); 100 document.addEventListener('click', mobileCloseHandler); 101 102 }, { passive: false }); 103 104 Drupal.theme.message = ({ text }, { type, id }) => { 105 const messagesTypes = Drupal.Message.getMessageTypeLabels(); 106 const messageWrapper = document.createElement('div'); 107 const userid = drupalSettings.user.uid; 108 if (type == 'error' && userid != 1) { 109 return messageWrapper; 110 } 111 112 messageWrapper.setAttribute('class', `messages messages--${type}`); 113 messageWrapper.setAttribute( 114 'role', 115 type === 'error' || type === 'warning' ? 'alert' : 'status', 116 ); 117 messageWrapper.setAttribute('data-drupal-message-id', id); 118 messageWrapper.setAttribute('data-drupal-message-type', type); 119 120 messageWrapper.setAttribute('aria-label', messagesTypes[type]); 121 122 messageWrapper.innerHTML = `${text}`; 123 124 return messageWrapper; 125 }; 126 127 Drupal.behaviors.entity_browser = { 128 attach: function () { 129 130 $('form[id^="node"][id$="form"]').on('keydown keypress', function (e){ 131 if (e.which == 13) {
132 if (e.target == $('.geolocation-geocoder-address')[0]) { 133 e.preventDefault(); 134 if (e.target.value == '') return; 135 } 136 if ($(e.target).parents('.ck-editor__main').length === 0 && e.target.type != 'textarea') { 137 e.preventDefault(); 138 $('input#edit-submit').click(); 139 } 140 141 } 142 143 }); 144 } 145 } 146 147 Drupal.behaviors.statusmessage = { 148 attach: function () { 149 $('.messages__wrapper').addClass('container'); 150 } 151 } 152})(jQuery, Drupal);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.