Du bist nicht angemeldet. Der Zugriff auf einige Boards wurde daher deaktiviert.

#1 01. Dezember 2016 10:15

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Modulversagen

Ja moin,

vorab, ich bin eine sehr lernwilliger Mensch und ich arbeite schon seit zig Jahren mit cmsms. Die Seiten werden immer cooler der code cleaner, ABER bei meinem aktuellen Projekt hab ich Zweifel, ob die Core Version diverse Module überhaupt noch unterstützt.

Reihenweise Module versagen (Hitcounter, CGCalender, CGGoogle Maps ) und das muss doch eigentlich bedeuten, dass irgendwo ein struktureller Fehler vorliegt, oder nicht ? Benutzt hier einer die neueste cmsms Version und kann mir eine funktionierende Konfiguration nennen mit CGCalender (also dass man den z.B. sieht und events löschen kann...)?


In den Foren/ Echokammern, kann man fast die Meinung bekommen, es habee nie ein funktionierendes CGCalender Modul gegeben...

Hängt das eventuell auch mit den URLs zusammen? Jemand noch Tipps was man außer debug Mode versuchen kann? Meine wirklich einzige Information ist

"TypeError: _holidays.forEach is not a function[Weitere Informationen]" Konsole FF.

Offline

#2 01. Dezember 2016 13:02

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Modulversagen

"TypeError: _holidays.forEach is not a function[Weitere Informationen]" Konsole FF.

Wenn Du jetzt noch sagen könntest in welcher Datei dieser Fehler gemeldet wird, dann wüssten wir auch, wer dafür verantwortlich ist.

Benutzt hier einer die neueste cmsms Version und kann mir eine funktionierende Konfiguration nennen mit CGCalender

Ich fürchte schon allein bei der neuesten Version wird's schwierig hier jemanden zu finden, der damit zufrieden ist.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#3 01. Dezember 2016 13:44

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Re: Modulversagen

Hey NaN,

mein Zwischenstand (zur Anzeige im Backend):

admin_events_tab.tpl bearbeite ich, um die Anzeige zu erschaffen. Jetzt hab ich (neben dem Durchlesen tausender Forenbeiträge) mal die Reihenfolge des Script loadings verändert und siehe da, ein neuer Fehler taucht auf:

ReferenceError: moment is not defined[Weitere Informationen]  cgejs_4122bab8abbbd05ab8edceb39f2c7744.js:5:6
TypeError: $(...).fullCalendar is not a function[Weitere Informationen]

Im Folgenden werd ich da jetzt mal weitermachen.

Im großen und ganzen bin ich mit der neuen cmsms Version zufrieden, aber gerade die praktischsten, weil auch untereinander nutzbaren Module, wollen sich nicht fügen. Immerhin nach dem Update auf 2.1.5 ohne "Fehler mit Modulverwaltungsmodul"

Der Teil des Codes der regulär nicht funktioniert ist dieser:

$(document).ready(function(){
  // restore our selected date from a cookie.
  var cur_date = new Date();
  var tmp = readCookie('calendar_date');
  if( tmp != null ) cur_date = new Date(tmp);
  var _holidays = null;
  $.ajax({
     url: '{module_action_url action=ajax_fetchholidays forajax=1}'
  }).done(function(data){
     if( typeof data != 'undefined' && data != null && data.length > 0 ) {
        _holidays = data;
     }
  $('#calendarview').fullCalendar({
	  
    dayRender: function( date, cell ) {
       // get holiday events for today.
       if( ! _holidays instanceof Array ) return;
       if( _holidays == null || _holidays.length == 0 ) return;
       var _tst1 = date.format('YYYY-MM-DD');
     	   _holidays.forEach(function(entry){
    if( _tst1 == entry.start ) {
          cell.addClass('holiday');
	    cell.css('backgroundColor','{$holiday_bgcolor}').css('color','{$holiday_fgcolor}');
	     cell.html(entry.title);
	 }
       });
    },
    events: {
       url: '{$fetch_url}&showtemplate=false',
       type: 'GET',
       data: {
         '{$actionid}showchildren': 1
       },
       error: function(data) {
         alert(data);
         alert('{$mod->Lang('error_fetching_events')|cms_escape}');
       }
    },
    year: cur_date.getFullYear(),
    month: cur_date.getMonth(),
    date: cur_date.getDate(),
    header: {
      left: 'prev,next,today',
      center: 'title',
      right: 'month,agendaWeek,agendaDay'
    },
    eventColor: '{$dflt_bgcolor}',
    eventTextColor: '{$dflt_fgcolor}',
    allDayText: '{$mod->Lang('allday')|cms_escape}',
    monthNames: {$datestrings.monthNames},
    monthNamesShort: {$datestrings.monthNamesShort},
    dayNames: {$datestrings.dayNames},
    dayNamesShort: {$datestrings.dayNamesShort},
    buttonText: {
       today: '{$text_today|cms_escape}',
       week: '{$text_week|cms_escape}',
       month: '{$text_month|cms_escape}',
       day: '{$text_day|cms_escape}'
    },
    firstDay: {$firstdayofweek},
    defaultEventMinutes: 15,
    slotMinutes: 15,
    editable: true,
    viewRender: function( view, element ) {
      cur_date = $('#calendarview').fullCalendar('getDate');
	 
      createCookie('calendar_date',cur_date,7);
    },

    viewDestroy: function(view) {
        closeDialog('#eventpreview');
	closeDialog('#find_panel');
	closeDialog('#find_results_panel');
    },

    eventClick: function(event, jsEvent, view) {
       $('#event_start').html(formatDate(event.start,!event.allDay));
       $('#event_desc').html(event.summary);
       $('#eventpreview .parent_block').hide();
       $('#eventpreview .child_block').hide();
       if( event.child ) {
         $('#eventpreview .child_block').show();
       }
       else if( event.recurs ) {
         $('#eventpreview .child_block').hide();
         $('#eventpreview .parent_block').show();
       }

       if( event.allDay ) {
         $('#eventpreview .end_block').hide();
	 $('#eventpreview .allday_block').show();
       }
       else {
         $('#eventpreview .allday_block').hide();
         if( event.end ) {
           $('#eventpreview .end_block').show();
           $('#event_end').html(formatDate(event.end,!event.allDay));
	 }
	 else {
           $('#eventpreview .end_block').hide();
	 }
       }

       var tmp_buttons = [{
         text: '{$mod->Lang('cal_edit')}',
	 click: function() {
           var url = '{module_action_link action=admin_add_event event_id=xx jsfriendly=1}';
           url = url.replace('xx',event._id);
           location.href = url;
	 }
       }];

       if( event.child ) {
         tmp_buttons.push({
           text: '{$mod->Lang('editparent')}',
	   click: function() {
             var url = '{module_action_link action=admin_add_event event_id=xx jsfriendly=1}';
             url = url.replace('xx',event.child);
             location.href = url;
	   }
         });
       }

       tmp_buttons.push({
         text: '{$mod->Lang('delete')}',
         click: function() {
             var cont = this;
	     $.ajax({
	         type: 'POST',
                 url: '{module_action_link action=admin_ajax_deleteevent jsfriendly=1}&showtemplate=false',
     	         dataType: 'json',
 	         data: {
  	      	    '{$actionid}event_id': event._id,
	     	    '{$actionid}delete_children': 1 // todo, make this an option
	         }
             }).done(function(data) {
	         if( data.status == 0 ) {
   	             alert(data.msg);
	         } else {
	             // make sure it's not visible
	             $('#calendarview').fullCalendar('refetchEvents');
      	         }
	         closeDialog(cont);
   	     }).fail(function(jqXHR, textStatus, errorThrown) {
	         alert('fail '+textStatus);
	         closeDialog(cont);
             });
	 }
       });

       tmp_buttons.push({
         text: '{$mod->Lang('cancel')}',
	 click: function() {
	   $(this).dialog('close');
	 }
       });

       $('#eventpreview').dialog({
         title: event.title,
         width: 'auto',
	 height: 'auto',
	 position: {
	   my: 'center bottom',
	   at: 'top center',
	   of: jsEvent
	 },
	 buttons: tmp_buttons
       });
    },

    eventResize: function(ev, dayDelta, minuteDelta, revertFunc ) {
      // an event time has been extended
      $.ajax({
        type: 'POST',
	url:  '{module_action_link action=admin_ajax_editevent jsfriendly=1}&showtemplate=false',
	dataType: 'json',
	data: {
	  '{$actionid}event_id': ev.id,
	  '{$actionid}dayDelta': dayDelta,
	  '{$actionid}minuteDelta': minuteDelta,
	},
	success: function( data ) {
	  if( data.status == 0 ) {
	      alert(data.msg);
	      revertFunc();
	  }
	},
	fail: function( data ) {
	  alert('fail');
	  revertFunc();
	}
      });
    },

    eventDrop: function(ev, dayDelta, minuteDelta, allDay, revertFunc) {
      // an event has been moved
      $.ajax({
        type: 'POST',
	url:  '{module_action_link action=admin_ajax_editevent jsfriendly=1}&showtemplate=false',
	dataType: 'json',
	data: {
	  '{$actionid}event_id': ev.id,
	  '{$actionid}dayDelta': dayDelta,
	  '{$actionid}minuteDelta': minuteDelta,
	  '{$actionid}allDay': allDay ? 1 : 0,
	  '{$actionid}move': 1
	},
	success: function( data ) {
	  if( data.status == 0 ) {
	      alert(data.msg);
	      revertFunc();
	  }
	},
	fail: function( data ) {
	  alert('fail');
	  revertFunc();
	}
      });
    }
  });

  });  // fetch holidays done...

  $('a#add_event').click(function(){
    var d = $('#calendarview').fullCalendar('getDate').valueOf()/1000;
    $(this).attr('href',$(this).attr('href').replace('xxxx',d));
  });

  $('a#find_event').click(function(){
    var t = readCookie('cgcal_find');
    if( t != null ) {
      for( var k in t ) {
        var s = '#find_panel :input[name="' + k + '"]';
	$(s).val(t[k]);
      }
    }
    $('#find_panel').dialog({
      width: 375,
      buttons: [
        {
	  text: '{$mod->Lang('submit')}',
	  click: function() {
            // get the data
	    var data = {};
	    var f = 0;
	    $('#find_panel :input').each(function(){
	       var n = $(this).attr('name');
	       var v = $(this).val();
	       if( v ) {
	         data[n] = v;
		 f = 1;
	       }
	    })
	    // save it in a cookie
	    if( f ) createCookie('cgcal_find',data,7);

	    // close the dialog
	    $(this).dialog('close');

	    $.ajax({
	       url: '{$fetch_url}&showtemplate=false',
	       type: 'GET',
	       dataType: 'json',
	       data: {
		 '{$actionid}keyword': data.keyword,
		 '{$actionid}category': data.category,
	         '{$actionid}showchildren': data.showchildren,
		 '{$actionid}when': data.when,
		 '{$actionid}limit': 10
	       },
	       success: function( data ) {
	         if( typeof data.status != 'undefined' && data.status == 0 ) {
		   alert('fetch: '+data.msg);
		 } else {
		   // got 0 or more results
		   if( data.length == 0 ) {
		     $('#find_results_none').show();
		     $('#find_results_area').hide();
		   }
		   else {
		     $('#find_results_none').hide();
		     $('#find_results_area').show();
		     $('#find_results_data').html(''); ..... .... ....

[...]

Da wird mir im Dreamweaver auch irgendwo ein Syntaxfehler angezeigt,scheint in der _holiday-function im Aufbau zu stecken. Leider komm ich so nicht weiter.

Fun Fact: Die Fetch URL die ich per get template vars ausgeben lassen kann ist korrekt. Öffne ich das wird mir ,unverarbeitet, alles aufgelistet , mit Edit und Delete Links...

$fetch_url (string) = http://www.xxx.de/moduleinterface.php?mact=CGCalendar,m1_,admin_ajax_fetchevents,0&_sk_=f0895651e1f5ba17

Offline

#4 01. Dezember 2016 15:32

NaN
Moderator
Ort: Halle (Saale)
Registriert: 09. November 2010
Beiträge: 4.435

Re: Modulversagen

Zum Thema CGCalendar gibts noch diese "Lösung": https://cms-1.org/forum/viewtopic.php?pid=37918#p37918

Der Calendar stellt sich da mit CGExtensions irgendwie selbst ein Bein.


Module: GBFilePicker, AdvancedContent
Sicherheit: Beispiel .htaccess-Datei
CMSms 1.12 unter PHP 7:
cmsms-1.12.3.zip (inoffiziell - komplett inkl. Installer)
CMSms 1.12 unter PHP 8:
cmsms-1.12.4.zip (inoffiziell - komplett inkl. Installer)

Offline

#5 03. Dezember 2016 09:28

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: Modulversagen

Ich hab folgendes:
Core... 2.1.5
CGExtensions... 1.53.13
CGCalendar... 2.1.4.2
CGsimpleSmarty... 2.1.4

zumindest in der Administration funktioniert der Kalender einwandfrei - neue Termine, ändern, löschen, ...

Im Frontend habe ich jedoch erst eine einfache "upcoming"-Liste verarbeitet, über den Rest der Anzeigevarianten kann ich dir noch nichts sagen.

Offline

#6 04. Dezember 2016 08:02

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Modulversagen

pWorker schrieb:

das muss doch eigentlich bedeuten, dass irgendwo ein struktureller Fehler vorliegt

Der Fehler liegt da wohl weniger im Code denn in einer Person vor devil ...

Offline

#7 04. Dezember 2016 12:14

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Re: Modulversagen

Hey,

naja, das dachte ich ja auch, bis mir immer mehr "Geheimtipps" genannt wurden die so nicht in der Modulhilfe waren. Ich lade gerade die Scripte, anstatt lokal über cgrequire übers Internet, ändere ein wenig die laoding Reihenfolge und zack hab ich wieder einen Kalender... leider erkennt der immer genau eine Funktion nicht, egal wie rum ich die Skripte lade. Warum das jetzt mein Fehler sein soll, erschließt sich mir nicht. Wenn ich mir die BE Seite beim Laden anschaue, so stelle ich fest, dass der unzählige js Scripts lädt, auch doppelt, ich die da aber nirgendwo implementiert habe... was kann ich dafür?

Wie gesagt, das Problem ist das Laden des Scripts im Backend, ohne, dass ich da im Vorhinein was dran geändert habe. Mit Strukturell meine ich, genau ein solches Problem, nämlich dass Module falsch im cmsms implementiert sind und dadurch z.B. der javascript nicht vernünftig geladen werden kann (bin ja nun auch nicht der Einzige der Probleme hat) und 90 verschiedene Lösungen zeigen, dass man es irgendwie schaffen muss, dass der den Skript für die Funktion benutzt.

Wie gesagt, ich war mal Designer, aber im Umgang mit cmsms muss man ja zwangsläufig Programmierer werden, wenn einem oben Genanntes nicht schon aus irgendewlchen Gründen klar sein sollte.

Offline

#8 04. Dezember 2016 12:31

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Modulversagen

pWorker schrieb:

naja, das dachte ich ja auch

Mit "Person" warst definitiv nicht du gemeint wink...

pWorker schrieb:

bis mir immer mehr "Geheimtipps" genannt wurden die so nicht in der Modulhilfe waren.

Yep, die Dokumentation ist eines der Probleme der Person, von der ich spreche...

Offline

#9 04. Dezember 2016 16:36

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: Modulversagen

cyberman schrieb:

Der Fehler liegt da wohl weniger im Code denn in einer Person vor devil ...

Machts was wenn ich über den Kalenderfehler derzeit nur grinsen kann?
Ich implementier grade einen Shop. Und dafür kriegst du fast nur Module mit den zwei Großbuchstaben am Anfang. Oder wenn nicht stehen da diese Initialen für den Programmierer.

Da ist der cgcalender ein Lärcherlschaß dagegen. Ich kann auch bestätigen, dass definitiv NICHT du gemeint warst pWorker wink

Der "strukturelle Fehler" liegt an der derzeitigen Befehlskettenstruktur drüben.

Offline

#10 04. Dezember 2016 22:11

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Modulversagen

owr_web schrieb:

Ich implementier grade einen Shop. Und dafür kriegst du fast nur Module mit den zwei Großbuchstaben am Anfang.

Und damit bekommst du das bei dir rechtssicher implementiert?

Offline

#11 05. Dezember 2016 17:12

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: Modulversagen

cyberman schrieb:

Und damit bekommst du das bei dir rechtssicher implementiert?

Wieso nicht?
Die AGB und der Widerruf müssen "händisch" eingepflegt werden und das akzeptieren der beiden muss "extra" eingebaut werden.
Und Bezahlformen bau ich nur Vorkasse und paypal (somit gleichzeitig auch alle Kreditkarten) ein.

Alles andere passt eigentlich soweit. Es ist halt einfach nur eine wilde Klauberei und Sucherei - manche Templates im Layout, andere wieder im Modul usw. usf.
und der Punkt statt Komma - da kriegst du extrem graue Haare und manchmal auch eine Krise ... .

Offline

#12 05. Dezember 2016 20:06

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Re: Modulversagen

Bei `nem Shopsystem kann ich auch Shopware5 in der community Edition empfehlen.

Mal eine allgemeine Frage, müssen Bankdaten zwingend verschlüsselt in der Datenbank gespeichert werden? So wie ich das verstanden habe, liefe das dann ähnlich wie bei dem Passwort, also ich könnte die praktisch nicht mehr einsehen/ bearbeiten... aber wozu sind die dann da?

Und eine andere Frage, wenn ich ca. 200 User übertrage, wie regel ich das dann am besten mit den (bestehenden) Passwörtern? Können die per CSV als Benutzereigenschaft importiert werden? Mein Ziel ist es, möglichst keinen "Lärm" beim User bei der Umstellung zu verursachen.   

MfG


Nachtrag: Oder kann ich das Passwordhash in die neue Datenbank eintragen und an einer anderen Stelle die Encodierung eintragen (so dass die alten Passwörter gültig bleiben)?

Beitrag geändert von pWorker (05. Dezember 2016 20:25)

Offline

#13 07. Dezember 2016 06:57

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: Modulversagen

pWorker schrieb:

.....Mal eine allgemeine Frage, müssen Bankdaten zwingend verschlüsselt in der Datenbank gespeichert werden? So wie ich das verstanden habe, liefe das dann ähnlich wie bei dem Passwort, also ich könnte die praktisch nicht mehr einsehen/ bearbeiten... aber wozu sind die dann da?

Wozu benötigst du die Bankdaten? Die Bankdatenspeicherung dient ja nur dazu, dass du dem Kunden die Möglichkeit bietest, dass er sie nicht mehr eintragen muss, wenn er das nächste mal kommt.
Wenn der Kunde mittels Lastschrift zahlt kriegst du die Bankdaten schriftlich in der Bestätigung über die Bestellung. Bearbeiten musst du sie in deinem online-Banking-System.

Betreffend Shopvarianten:
Ich hab schon einige überlegt und zwei getestet. Aber die ganze Pfrimelei war mir dann doch zu aufwendig. Da ist wider Erwarten das shopsystem vom cmsms gar nicht so extrem - wenn man die Macken des Programmierers und dessen Vorlieben für Schwachsinn kennt.

Offline

#14 07. Dezember 2016 10:34

pWorker
probiert CMS/ms aus
Registriert: 20. Oktober 2016
Beiträge: 78

Re: Modulversagen

Der Kunde ruft an, will seinen Eintrag überarbeitet haben und anschließend wird die Rechnung geschrieben. Ich baue ja gar kein Shop. Praktisch wenn dann die Daten im System sind. Oder kann ich mir die per Mail unverschlüsselt zuschicken?

Offline

#15 07. Dezember 2016 12:38

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Modulversagen

owr_web schrieb:

Da ist wider Erwarten das shopsystem vom cmsms gar nicht so extrem - wenn man die Macken des Programmierers und dessen Vorlieben für Schwachsinn kennt.

Na da wäre aber ein HowTo schon lange überfällig big_smile ...

Offline

#16 05. Februar 2019 22:44

owr_web
Server-Pate
Registriert: 16. Dezember 2010
Beiträge: 543

Re: Modulversagen

cyberman schrieb:

Na da wäre aber ein HowTo schon lange überfällig big_smile ...

Nur der Vollständigkeit halber - nachdem ich den Shop zu 3/4 fertig hatte ist mir sozusagen der Grund für den Shop abhanden gekommen. Somit muss ich leider absagen - aber nach einem recht flotten Start war der Rest eine ziemliche Pfrimelei - insbesondere, da die Module sehr verchachtelt und unlogisch zusammengearbeitet haben.
Grundsätzlich funktionierts recht gut, aber die Feinheiten machens dann exrem zeitaufwändig. Und das meiste davon ist dafür notwendig, die komplizierte Denkweise des CodeGenerators zu verstehen.
Dass z.B. das Komme zwar angezeigt werden kann, aber bei jedem Speichern verschiedener Zahlen diese immer neu eingegeben werden müssen (mit Punkt) ist nur so eines der Dinge, die nur funktionieren, wenn man in den Code eingreift. So ziehts sich auch bei vielen Dingen wie ein roter Faden durch.

Offline

#17 06. Februar 2019 09:23

Andynium
Moderator
Ort: Dohna / SN / Deutschland
Registriert: 13. September 2010
Beiträge: 7.017
Webseite

Re: Modulversagen

owr_web schrieb:

Nur der Vollständigkeit halber - nachdem ich den Shop zu 3/4 fertig hatte ist mir sozusagen der Grund für den Shop abhanden gekommen. Somit muss ich leider absagen

Schade - aber schön, dass du noch an eine Rückmeldung gedacht hast.

owr_web schrieb:

aber nach einem recht flotten Start war der Rest eine ziemliche Pfrimelei - insbesondere, da die Module sehr verchachtelt und unlogisch zusammengearbeitet haben.

Hier hatte ich schon länger das Gefühl, eine Art Über-Modul erstellen zu müssen, um das alles in einen Rahmen zu bringen, wie man es von bewährten Shopsystemen her kennt.

owr_web schrieb:

Dass z.B. das Komme zwar angezeigt werden kann, aber bei jedem Speichern verschiedener Zahlen diese immer neu eingegeben werden müssen (mit Punkt) ist nur so eines der Dinge, die nur funktionieren, wenn man in den Code eingreift

Nach meiner bescheidenen Meinung ist das die Folge der Programmierung auf Sparflamme, denn normalerweise sollten dort die Daten von setlocale() gezogen werden...

Offline

#18 06. Februar 2019 15:32

Janl
Server-Pate
Ort: Freistadt, Österreich
Registriert: 13. Dezember 2010
Beiträge: 1.227
Webseite

Re: Modulversagen

CMSMS als Shop kann man besser vergessen, oder man hat spaß an basteln.

Hier sind einige freie Shops zusammen getragen
http://www.webshop-in.eu/index.php?menu … bshopsfrei

Presta und Oxid nutzen auch Smarty.

Ob Woocommerce in Wordpress taugt kann ich nicht sagen, hab da so meine Zweifel.

MfG
Jan


Ubuntu 16.04 KDE - Kubuntu 18.04 / win10 (1 duo-boot laptop)- LAMP
Raspi 4b mit Ubuntu 20.04 (64bit) und Mate.

Offline