Aus Tiroler Dialektarchiv
Hinweis: Leere nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
- Firefox/Safari: Umschalttaste drücken und gleichzeitig Aktualisieren anklicken oder entweder Strg+F5 oder Strg+R (⌘+R auf dem Mac) drücken
- Google Chrome: Umschalttaste+Strg+R (⌘+Umschalttaste+R auf dem Mac) drücken
- Internet Explorer: Strg+F5 drücken oder Strg drücken und gleichzeitig Aktualisieren anklicken
- Opera: Extras → Internetspuren löschen … → Individuelle Auswahl → Den kompletten Cache löschen
/* Das folgende JavaScript wird für alle Benutzer geladen. */ $('.belegnahe_stichworte_belege').click(function(e) { var target = e.target; $(target).hide(); $(target).next().show(); }); // Beim Bearbeiten eines Belegs muss im Formular mind. eins von zwei Feldern befüllt sein: if (document.title.indexOf("Bearbeite Beleg:") >= 0 || document.title.indexOf("Erstelle Beleg ") >= 0 ) { $('#wpSave').click( function() { var oneoftwo = false; var values = {}; $('td input').each( function(i) { values[i] = this.value } ); $('th').each( function(i) { var t = $(this).text(); if (t.indexOf("Hat Bedeutung") >= 0 || t.indexOf("Belegnahes Stichwort") >= 0) { if (values[i]) { oneoftwo = true; } } } ); if (oneoftwo) { return true; } else { alert('Entweder "Hat Bedeutung" oder "Belegnahes Stichwort" (oder beide) müssen ausgefüllt sein!'); return false; } }); } // Letzten Teil des Seitentitels in Kapitälchen // TODO: ggf. auf BSW, SSW, Bedeutung beschränken? function add_wordclass( t ) { var text = t.split(' '); // remove the last word and store it in a variable var last = text.pop(); // join the text back and if it has more than 1 word add span to last word return text.join(" ") + (text.length > 0 ? ' <span class="wordclass">'+last+'</span>' : last); } $('#ca-nstab-main').html( function() { $(this).html( add_wordclass( $(this).text() ) ) }); $('.add_wordclass').each( function() { $("a", this).html( add_wordclass( $("a", this).text() ) ) }); // Viele Teile der Seite(n) für nicht Angemeldete ausblenden if ( wgUserName === null ) { //console.log('pagename = '+ wgPageName +' - pagetitle = '+ wgTitle +' - articlepath = '+ wgArticlePath); // Nur bestimmte Seiten erlauben, alle anderen auf die Hauptseite umleiten if ( $('#Schaufensterseite').length == 0 && ( wgTitle != 'Hauptseite' && wgTitle != 'Bibliographie' && wgTitle != 'Glossar' ) ) { $('#globalWrapper').remove(); // gar nichts anzeigen (Weiterleitung dauert ein bisschen) var urlbase = window.location.origin; var mainpage = wgArticlePath.replace( '$1', 'Hauptseite' ); window.location.replace( urlbase + mainpage ); } $('#smwh_head').remove(); // Kopfzeile $('#smwh_menu').remove(); // Menuzeile $('#more').remove(); //"Mehr" Ausklappmenu $('#smwh_breadcrumbs').remove(); $('#footer').remove(); $('.page_createdby').remove(); $('#toc').remove(); $('.srf-gallery').remove(); $('#catlinks').remove(); $('#mw-data-after-content').remove(); $('.internal').remove(); /* $('#Schaufensterseite').remove(); $('#mw-content-text table:first').remove(); $('#mw-content-text h2:contains("Angehängte Dateien") + p').remove(); $('#mw-content-text h2:contains("Belege mit Verkn") + table').remove(); $('#mw-content-text h2:contains("Standardisierte Stich") + ul').remove(); $('#mw-content-text h2:contains("Angehängte Dateien")').remove(); $('#mw-content-text h2:contains("Belege mit Verkn")').remove(); $('#mw-content-text h2:contains("Belege (unkategorisiert)")').remove(); $('#mw-content-text h2:contains("Standardisierte Stich")').remove(); $('#mw-content-text h2:contains("Karte")').remove(); $('#mw-content-text p:first').remove(); $('#mw-content-text p:first').remove(); $('#mw-content-text p:first').remove(); $('#mw-content-text h2:contains("Neue Stichworte anlegen") + ul').remove(); $('#mw-content-text h2:contains("Neue Stichworte anlegen") + ul').remove(); $('#mw-content-text h2:contains("Neue Stichworte anlegen")').remove(); $('#mw-content-text h2:contains("Belegnahe Stichwörter") + ul').remove(); $('#mw-content-text h2:contains("Belegnahe Stichwörter")').remove(); */ // in SSWs Links auf BSWs entfernen und nur Text anzeigen: $('table:contains("Belegnahes Stichwort") td a').each( function() { $(this).replaceWith($(this).html()); } ); } else { $('.showeditorsonly').show(); } // Kartenpopups: // Beim Klicken (auf einen Marker) im Popup die kodierten nicht erlaubten Zeichen in den Daten // (; ~ =) zurückübersetzen // Außerdem dem Originalbeleg (ist von <em></em> umschlossen) die richtige CSS Klasse geben $('#open_layer_1').click( function() { $('.olFramedCloudPopupContent', this).each( function() { var h = $(this).html(); h = h.replace('#+SC-#',';'); h = h.replace('#+TILDE-#', '~'); h = h.replace('#+EQ-#', '='); $(this).html(h); $('em', this).attr('class', 'lautschrift'); }); marker_overlap(); } ); var pos_markerids = {}; // Marker, die an der gleich Position sind etwas verschieben, dazu warten, bis diese geladen sind function marker_overlap() { var pos_dups = []; pos_markerids = {}; $("div[id^='OL_Icon_']").each ( function() { var pos = $(this).css('left') +'_'+ $(this).css('top'); if (typeof pos_markerids[pos] === 'undefined') { pos_markerids[pos] = []; } else { // jede dopplte Position speichern (aber nur einmal) var i; for (i = 0; i < pos_dups.length; i++) { if (pos_dups[i] == pos) break; } if (i >= pos_dups.length) pos_dups.push(pos); } pos_markerids[pos].push( $(this).attr('id') ); }); pos_dups.forEach(spread_markers); } var d = 1.3; var spread_deltas = [ [d,d], [-d,d], [-d,-d], [d,-d], [d,0], [0,d], [0,-d], [-d,0] ]; function spread_markers(pos) { var zoom = globalmaps[0].zoom; for (var i = 0; i < (pos_markerids[pos].length - 1); i++) { // "... - 1": don't move the last marker var dx = spread_deltas[ i % 8 ][0] * zoom; var dy = spread_deltas[ i % 8 ][1] * zoom; var x = parseInt( $('#'+ pos_markerids[pos][i]).css('left').replace('px','') ); var y = parseInt( $('#'+ pos_markerids[pos][i]).css('top').replace('px','') ); $('#'+ pos_markerids[pos][i]).css('left', (x + dx) +'px'); $('#'+ pos_markerids[pos][i]).css('top', (y + dy) +'px'); $('#'+ pos_markerids[pos][i]).attr('moved', pos +' -> '+ x +'/'+ y +' -> '+ (x + dx) +'/'+ (y + dy)); } } //TODO: // Erfordert patch von extensions/Maps20/includes/services/OpenLayers/jquery.openlayers.js // Geht das auch ohne? // Statt setTimeout zu verwenden irgendwie auch Kartenanzeige warten!? Event? tries = 12; setTimeout(check_marker_overlap, 500); function check_marker_overlap() { if ( (typeof globalmaps !== 'undefined') && globalmaps.length > 0 ) { tries = 0; marker_overlap(); globalmaps[0].events.on({zoomend: marker_overlap}); globalmaps[0].events.on({moveend: marker_overlap}); } if ( tries > 0 ) { setTimeout(check_marker_overlap, 500); } tries--; } // Glossar: Bearbeiten-Link (Stift am rechten Rand) korrekt umsetzen $('div.glossary-originalpagetitle').each( function() { var origpagetitle = $(this).attr('id').replace(' ','_'); var editurl = mw.config.get('wgArticlePath').replace('$1', origpagetitle +'?action=formedit'); $(this).find('span.editsection a').attr('href', editurl); } ); // Kartentexte: Links auf Referenzen um abbr-Tags und damit Mouse-over-Popups ergänzen // davor aber warten, bis Lingo/SemanticGlossary bei den Fußnoten aufgeräumt hat setTimeout( addAbbrToRef, 5000 ); function addAbbrToRef() { $('sup.reference a').each( function() { var noteid = $(this).attr('href'); if (noteid && noteid.indexOf('#cite_note') === 0) { var content = $(this).html(); var text = $('li'+ noteid +' span.reference-text').text(); $(this).html('<abbr title="'+ text +'">'+ content +'</abbr>'); } } ); } jQuery(function($) { // 'use strict'; var viewableString = ""; // memoized field sort of function convert_input_string_to_json_encoded_codepoints( v ) { var codePoints = new Array(); viewableString = ""; // reset memoized field if ( v === undefined ) return; for (var i = 0; i < v.length; i++) { codePoints[i] = v.charCodeAt(i); viewableString += v.charAt(i) + ' '; // Otheus: I don't understand this. Shouldn't it be non-breaking space? } // stringify with JSON. Note: MW contains a toJSON implementation which adds spaces and double-quotes around the string. Remove them. return JSON.stringify(codePoints).replaceAll(' ','').replace(/^"(.*)"$/,"$1"); } function convert_input_string_to_displayable( v ) { // always call convert_input_string_to_json_encoded_codepoints first if (! viewableString ) convert_input_string_to_json_encoded_codepoints(v); return viewableString; } function convert_json_encoded_codepoints_to_string( json ) { // check if json is an array if ( ! json.startsWith('"[') && ! json.startsWith('[') ) return; // strip quotes from start/end string var ob_json = json.replace(/(^\"|\"$)/g,''); if ( !ob_json ) return; var ob_str=""; var ob_arr = JSON.parse(ob_json); for ( var i=0; i < ob_arr.length; i++) { ob_str += String.fromCharCode(ob_arr[i]); } return ob_str; } function update_display_originalbeleg() { var $ob = $('#originalbeleg_eingabe input'); if ( ! $ob.length ) { console.log("WARN: " + arguments.callee.name + ": Originalbelege_eingabe form field not found"); return; } const ob_val = $ob.val(); $('#originalbeleg_json input').val( convert_input_string_to_json_encoded_codepoints( ob_val) ); $('#originalbeleg_anzeige').html( convert_input_string_to_displayable( ob_val ) ); } // if originalbeleg is not empty, but originalbelegJSON is empty or doesnt exist, update or insert the latter function input_upvert_decoded_json_if_needed( do_denormalize ) { const $ob = $('#originalbeleg_eingabe input'); if ( ! $ob.val() ) { return false; } const $ob_json = $('#originalbeleg_json input'); if ( convert_json_encoded_codepoints_to_string( $ob_json.first().val() ) ) { return false; } // if requested, deNormalize the input string. See https://en.wikipedia.org/wiki/Unicode_equivalence#Normalization ob_val = do_denormalize ? $ob.val().normalize("NFD") : $ob.val(); // assert: eingabe has stuff, but it's not in json (due to earlier programming error) $ob_json.val( convert_input_string_to_json_encoded_codepoints( ob_val ) ); return true; } // if originalbelegJSON exists and is not empty, update originalBeleg function input_replace_originalbeleg_with_decoded_json_if_exists() { var $ob_json = $('#originalbeleg_json input'); if (! $ob_json.length ) { console.log("WARN: " + arguments.callee.name + ": No origianbeleg_json element found") return; } var ob_json = $ob_json.first().val(); if ( ! ob_json ){ // Note to self/otheus: no need to check for 0-value indepenently of undefined/empty string console.log("INFO: " + arguments.callee.name + ": origianbeleg_json is empty. not updating ob") return; } var newval = convert_json_encoded_codepoints_to_string( ob_json ); /* 2022-09-22:otheus: do nothing if the json string was empty but a valid eingabe already existed */ if ( newval === undefined ) { console.log("WARN: " + arguments.callee.name + ": json-encoding of originalbeleg_json was invalid"); } else if ( newval.length == 0 ) { console.log("WARN: " + arguments.callee.name + ": json-encoding of originalbeleg_json is empty, not overwriting user-input"); } else { var $ob = $('#originalbeleg_eingabe input'); if (! $ob.length ) { console.log("ERROR: " + arguments.callee.name + ": original_beleg_eingabe form element does not exist!"); } else { /* set both the attribute value and the value. This makes it easier to debug in browser.*/ $ob.val(newval); /* why?? */ // $('#originalbeleg_eingabe').find('input').keyup(); return true; } } } // Otheus: Not sure where this is used (see #originableeg_check tr, below) function table_replace_originalbeleg_with_decoded_json( source_selector, target_selector ) { // default: hide row $(this).hide(); var $ob = $(source_selector, this); if ( ! $ob.length ) { console.log("ERROR: " + arguments.callee.name + ": .Originabeleg element not found" ); return; } var $ob_json = $(target_selector, this); if ( ! $ob_json.length ) { console.log("WARN: " + arguments.callee.name + ": .Originabeleg_JSON element not found for " + $ob.val() ); return; } if ( ! $ob_json.html() ) { console.log("INFO: " + arguments.callee.name + ": .Originabeleg_JSON element is empty for " + $ob.val() ); } else { var ob_fromjson = convert_json_encoded_codepoints_to_string( $ob_json.html() ); if ( ob_fromjson === undefined ) { console.log("WARN: " + arguments.callee.name + ": Originalbeleg_JSON invalid encoding for " + $ob.val() ); } else if ( ! ob_fromjson ) { console.log("INFO: " + arguments.callee.name + ": decoded .Originabeleg_JSON is empty for " + $ob.val() ); } else { // Valid JSON string --> replace originalbeleg HTML $ob.html( '<span class="orig">'+ $ob.html() +'</span><span class="fromjson">'+ ob_fromjson +'</span>' ); } $ob_json.hide(); $(this).unhide(); } } /* Originalbeleg Checkseite */ $('#originalbeleg_check tr').each( table_replace_originalbeleg_with_decoded_json(".Originalbeleg",".OriginalbelegJSON") ); // Für das Bearbeiten und Anzeigen von Belegen beim Originalbeleg tricksen: if ( wgPageName.startsWith('Beleg_') && wgAction == 'formedit' ) { // Originalbeleg: Wenn bearbeitet: auch Anzeige aktualisieren $('#originalbeleg_eingabe').on('change', update_display_originalbeleg ); $('#originalbeleg_eingabe').on('keyup', update_display_originalbeleg ); // Eingabefeld größer anzeigen $('#originalbeleg_eingabe').find('input').css('font-size', '120%'); // Originalbeleg aus JSON wiederherstellen input_upvert_decoded_json_if_needed( do_denormalize=true ) || input_replace_originalbeleg_with_decoded_json_if_exists(); } });