feat: lokales Google-Fonts-Hosting + "Lizenz upgraden"-button (v1.3.0)
- Lizenz-Tab: bei vollen Plaetzen erscheint ein "Lizenz upgraden"-Button (https://lucas-orth.de/wp-plugins/gdpr-content-blocker/) zusaetzlich zur domain-freigabe. - Neues Feature "Schriften": Google Fonts lokal hosten (button-modell). Admin klickt "Jetzt herunterladen & einbinden" -> plugin scannt die seiten, laedt googleapis-CSS + gstatic-schriftdateien einmalig in den uploads-ordner, schreibt die pfade lokal um und tauscht sie per output-buffer im quelltext. Abgedeckt: <link>, inline-@import/url() UND @import/url() in gleicher-origin externen CSS-dateien (mit absolutierung der restlichen relativen pfade). preconnect/dns-prefetch zu google-font-hosts werden entfernt (kein IP-leak). Toggle zum aus/einschalten + "Lokale Schriften loeschen". - i18n-pipeline robuster: build-en-mo.py nutzt jetzt translations-en.json (lookup per quell-string, reihenfolge-unabhaengig) und bricht mit liste ab, falls eine uebersetzung fehlt. Alle neuen strings DE/EN ergaenzt (139). - version 1.3.0 (header + CB_VERSION). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
@@ -250,6 +250,40 @@
|
||||
$out.append( $table );
|
||||
}
|
||||
|
||||
/* ── Local Google Fonts: download & embed ── */
|
||||
$( '#cb-fonts-fetch' ).on( 'click', function () {
|
||||
const i18n = cbAdmin.i18n || {};
|
||||
const $btn = $( this ).prop( 'disabled', true );
|
||||
const $st = $( '#cb-fonts-status' ).text( i18n.fontsFetching || 'Downloading…' );
|
||||
|
||||
$.post( cbAdmin.ajaxUrl, { action: 'cb_fonts_fetch', nonce: cbAdmin.fontsNonce } )
|
||||
.done( function ( resp ) {
|
||||
if ( ! resp || ! resp.success ) {
|
||||
const msg = resp && resp.data && resp.data.message ? resp.data.message : 'Error';
|
||||
$st.text( ( i18n.fontsError || 'Error:' ) + ' ' + msg );
|
||||
return;
|
||||
}
|
||||
$st.text( resp.data.message || 'OK' );
|
||||
setTimeout( function () { window.location.reload(); }, 900 );
|
||||
} )
|
||||
.fail( function ( xhr ) {
|
||||
$st.text( ( i18n.fontsError || 'Error:' ) + ' ' + xhr.status );
|
||||
} )
|
||||
.always( function () {
|
||||
$btn.prop( 'disabled', false );
|
||||
} );
|
||||
} );
|
||||
|
||||
$( '#cb-fonts-clear' ).on( 'click', function () {
|
||||
const i18n = cbAdmin.i18n || {};
|
||||
if ( ! window.confirm( i18n.fontsClearConfirm || 'Delete local fonts?' ) ) {
|
||||
return;
|
||||
}
|
||||
$( this ).prop( 'disabled', true );
|
||||
$.post( cbAdmin.ajaxUrl, { action: 'cb_fonts_clear', nonce: cbAdmin.fontsNonce } )
|
||||
.always( function () { window.location.reload(); } );
|
||||
} );
|
||||
|
||||
/* ── Activate a tab by key ── */
|
||||
function activateTab( tab ) {
|
||||
$( '.cb-tab-content' ).hide();
|
||||
|
||||
Reference in New Issue
Block a user