1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Feiertage im Kalender einbinden

    • BugFix
    • 21. Oktober 2014 um 11:17

    Du kannst Tage im Monatskalender markieren. Dazu muß eine Maske übergeben werden. Aus mir unverständlichen Gründen wurde zu dieser nicht ganz einfachen Erstellung der Maske keine Funktion in die UDF integriert. Ich hatte deshalb bereits 2009 die fehlende Funktion erstellt, aber wie nicht anders zu erwarten lehnen die Jungs im EN-Forum es ab Funktionen die das Leben erleichtern mit in die Bibliothek aufzunehmen.
    Da die Forensuche zur Zeit immer auf die Startseite verlinkt poste ich mal ein Bsp-Skript:

    Spoiler anzeigen
    [autoit]


    #include <GuiConstantsEx.au3>
    #include <GuiMonthCal.au3>
    #include <WindowsConstants.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()
    GUICreate("Month Calendar Set Day State", 400, 300)
    Local $hMonthCal = GUICtrlCreateMonthCal("", 4, 4, -1, -1, BitOR($WS_BORDER, $MCS_DAYSTATE), 0x00000000)

    [/autoit] [autoit][/autoit] [autoit]

    ; $aMasks ist ein Array in dem die Masken für die Kalenderdarstellung übergeben werden
    Local $aMasks[_GUICtrlMonthCal_GetMonthRangeSpan($hMonthCal, True)]

    [/autoit] [autoit][/autoit] [autoit]

    ; an Index [1] von $aMask wird die HexMask für die zu markierenden Tage gesetzt
    $aMasks[1] = _GetHexMask('1,5,6,8,12,22,23,24,30', ',')

    [/autoit] [autoit][/autoit] [autoit]

    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    $aMasks[1] = _GetHexMask('1,2,3,12,13,14,29,30', ',')
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    $aMasks[1] = _GetHexMask('11', ',')
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    $aMasks[1] = _GetHexMask('') ; Markierung löschen
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    ; oder als Array übergeben
    Sleep(1500)
    Local $a[9] = [1,5,6,8,12,22,23,24,30]
    $aMasks[1] = _GetHexMask($a)
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    Local $b[8] = [1,2,3,12,13,14,29,30]
    $aMasks[1] = _GetHexMask($b)
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    Local $c[1] = [11]
    $aMasks[1] = _GetHexMask($c)
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Sleep(1500)
    Local $d[1] = ['']
    $aMasks[1] = _GetHexMask($d)
    _GUICtrlMonthCal_SetDayState($hMonthCal, $aMasks)
    ConsoleWrite('Markierte Tage sind: ' & _DecodeHexMask($aMasks[1], False, ',') & @CRLF)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name..: _GetHexMask($vDays [, $Delim=Default])
    ; Description....: Codiert die übergebenen Tageszahlen (1-31) als Hex-String, wie er als Maske zum Markieren mit _GUICtrlMonthCal_SetDayState
    ; ...............: im MonthCal Anwendung findet
    ; Parameter(s)...: $vDays Trennzeichenbasierter String oder Array mit den zu markierenden Tagen
    ; ...............: $Delim das Trennzeichen, Standard ist 'Default' (Zeichen von 'GUIDataSeparatorChar')
    ; Return Value(s): Hexstring für $aMasks
    ; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _GetHexMask($vDays, $sDelim=Default)
    If $sDelim = Default Then $sDelim = Opt('GUIDataSeparatorChar')
    If (( Not IsArray($vDays) ) And ($vDays = '') ) Or _
    (( IsArray($vDays) ) And ($vDays[0] = '') ) Then
    Return '0x0'
    Else
    Local $aDays
    If (Not IsArray($vDays)) Then
    $aDays = StringSplit($vDays, $sDelim, 2)
    Else
    $aDays = $vDays
    EndIf
    Local $aHex[8] = [0,0,0,0,0,0,0,0], $pos, $mask = ''
    For $i = 0 To UBound($aDays) -1
    Select
    Case $aDays[$i] < 5
    $pos = 0
    Case $aDays[$i] < 9
    $pos = 1
    Case $aDays[$i] < 13
    $pos = 2
    Case $aDays[$i] < 17
    $pos = 3
    Case $aDays[$i] < 21
    $pos = 4
    Case $aDays[$i] < 25
    $pos = 5
    Case $aDays[$i] < 29
    $pos = 6
    Case Else
    $pos = 7
    EndSelect
    $aDays[$i] -= $pos * 4
    $aHex[$pos] += Int(2 ^ ($aDays[$i]-1))
    Next
    For $i = 0 To UBound($aHex) -1
    $mask = Hex($aHex[$i], 1) & $mask
    Next
    Return '0x' & $mask
    EndIf
    EndFunc ;==>_GetHexMask

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ; Function Name..: _DecodeHexMask($sHex [, $fArray=True[, $Delim=Default]])
    ; Description....: Gibt die mit _GetHexMask() codierten Tageszahlen (1-31) als Array (Standard) oder Trennzeichenstring zurück
    ; Parameter(s)...: $sHex Der Hex-String mit dem/den codierten Zahlenwert/-en
    ; ...............: $fArray Rückgabe als Array (Standard), $a[0]=Anzahl oder String mit Trennzeichen
    ; ...............: $Delim Das Trennzeichen für Stringausgabe, Standard ist 'Default' (Zeichen von 'GUIDataSeparatorChar')
    ; Return Value(s): Array/String mit den im Hex-String codierten Tageszahlen
    ; Author(s)......: BugFix ([email='bugfix@autoit.de'][/email])
    ;===============================================================================
    Func _DecodeHexMask($sHex, $fArray=True, $sDelim=Default)
    If $sDelim = Default Then $sDelim = Opt('GUIDataSeparatorChar')
    Local $aHex = StringSplit(Hex($sHex, 8), '', 2), $iInt, $sOut = ''
    Local $aMask[8][4] = [[29,30,31],[25,26,27,28],[21,22,23,24],[17,18,19,20],[13,14,15,16],[9,10,11,12],[5,6,7,8],[1,2,3,4]]
    For $i = 7 To 0 Step -1
    $iInt = Int('0x' & $aHex[$i])
    If $iInt = 0 Then ContinueLoop
    For $j = 0 To 3
    If BitAND($iInt, 2^$j) Then
    $sOut &= $aMask[$i][$j] & ","
    $iInt = BitXOR($iInt, 2^$j)
    EndIf
    Next
    Next
    If $fArray Then Return StringSplit(StringTrimRight($sOut, 1), ',')
    Return StringTrimRight($sOut, 1)
    EndFunc ;==>_DecodeHexMask

    [/autoit]
  • Forum-Umstellung Problemsammlung

    • BugFix
    • 20. Oktober 2014 um 21:16
    Zitat von i2c

    Es gibt keine getrennten Versionen für Desktop und Mobilgeräte.


    Aber zumimdest ist die Darstellung auf Mobilgeräten unvollständig. In der Beitragsliste sind die Spalten für Zugriffe und Antworten nicht sichtbar, somit kann man nicht direkt zum letzten Beitrag springen.

    So sieht es aus: http://piks.nl/zZ4

    EDIT:
    Da war ich zu vorschnell, es ist nur ein anderes Verhalten. Klicke ich am PC auf die Überschrift des Threads, wird zum Start Thema gesprungen. Auf mobilen Geräten springt man damit zum letzten Beitrag.
    Praktisch, wenn man es weiß. ;)

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 19. Oktober 2014 um 21:40

    Ist "style-6.css" die einzige verwendete Styles-Datei?
    Ich habe sie mir mal geladen und werde Stück für Stück dran basteln. Wenn ich was brauchbares habe, wird es natürlich gepostet.

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 19. Oktober 2014 um 19:33

    Könnt ihr das nachvollziehen:

    Ich bin im Portal/Dashboard (2 Beiträge sind als neu markiert) und klicke auf "alles als gelesen markieren". Dann werden aber die ersten 5 Beiträge als ungelesen markiert. Erst mit dem nächsten Klick wird alles als ungelesen markiert.
    Konnte ich bereits mehrfach reproduzieren.

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 19. Oktober 2014 um 17:33

    Ein weiteres Problem entdeckt:
    Ich weiß nicht ob es mehrere Posts betrifft, aber in "_String_Balanced --> Text zwischen korrespondierenden Klammern" ist alles aus den Fugen geraten. Die Anhänge werden als Text dargestellt.

  • Consolewrite für die GUI?

    • BugFix
    • 18. Oktober 2014 um 18:58

    Oder ganz simpel so:

    Spoiler anzeigen
    [autoit]


    $hGui = GUICreate('Test', 400, 200)
    $cBtnErr = GUICtrlCreateButton('Generiere Fehler', 10, 20, 120, 22)
    $cInput = GUICtrlCreateInput('', 0, 175, 400, 20)
    GUISetState()

    [/autoit] [autoit][/autoit] [autoit]

    $iErr = 0

    [/autoit] [autoit][/autoit] [autoit]

    While True
    Switch GUIGetMsg()
    Case -3
    Exit
    Case $cBtnErr
    $iErr = Random(1,5,1)
    EndSwitch
    If $iErr Then
    GUICtrlSetData($cInput, 'Error = ' & $iErr)
    $iErr = 0
    EndIf
    WEnd

    [/autoit]
  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 18. Oktober 2014 um 10:09
    Zitat von chesstiger

    Das Like-System könnte man aber auch für Gäste freischalten, die beim Googlen über das Forum gestolpert sind und dabei die Lösung gefunden haben


    DAS kann doch nicht dein Ernst sein? Da stehen die Like-Bots schon Schlange, weil sich ja nicht mal registriert werden muß um dass Forum durch eine Like-Attacke lahm zu legen. =O
    Und der Wert dieses Counters hat sich dann auch total erübrigt. Glaubst du wirklich es sind nur Gutmenschen unterwegs? Weißt doch selbst, was für Scharen an Bot-Kids teilweise einfallen. Wenn diese degenerierten Pfeifen dann nicht mal sich registrieren müssen um Unfug zu treiben - Na Gute Nacht!

  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 18. Oktober 2014 um 00:43

    Ich denke, das muss nun nicht weiter erörtert werden. Es ist sicher für jeden ersichtlich, dass wir hier konträre Standpunkte vertreten.
    Bis jetzt habe ich kein Argument gefunden, dass mich in meiner Haltung erschüttert - gleiches ist "auf der anderen Seite" der Fall.
    Aber auch das ist letztlich normal, schließlich wird es immer unterschiedliche Meinungen geben.
    Zumindest ist es erfreulich, dass ein Meinungsstreit möglich ist, der auf Argumenten fußt und nicht mit wilden Emotionen betrieben wird. :thumbup:

  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 18. Oktober 2014 um 00:22
    Zitat von autoiter

    Gerade Sprache ist etwas, das ständig im Fluss ist.


    Dass Sprache Veränderungen unterliegt ist selbstverständlich. Aber Sprache ist auch Identität und die ist kaum noch gegeben, wenn sich keiner mehr wagt deutsch zu reden, weil englische (oder englisch scheinende Kunstwörter wie Handy) die deutsche Sprache überfluten, da es "in" ist. Ist in meinen Augen in erster Linie dem fehlenden Selbstbewußtsein der meisten Menschen geschuldet, die dann einfach mit der Herde laufen und jeden Dreck nachbrabbeln.
    Und insofern sehe ich auch Entwicklungen im Web sehr kritisch und es ist doch berechtigt auch nach einem zu erwartenden Nutzen zu fragen und diesen auch zu fordern. Und da wiederhole ich gerne: Nur weil etwas möglich ist, muß man es noch lange nicht tun.

  • Upload to Dropbox

    • BugFix
    • 17. Oktober 2014 um 23:37

    Warum speicherst du die Dateien nicht in einem Ordner der mit der Dropbox synchronisiert wird? Das ist doch der Gedanke hinter Dropbox: Egal an welcher Hardware du bist, du kannst überall dieselben Daten haben. Ist auch praktisch - bin ich unterwegs, mache ich Einträge übers Handy in mein Fahrtenbuch (Exceltabelle). Komme ich nach Hause und schmeiße den Rechner an kann ich sofort mit den aktuellen daten auf meiner Rechnerkopie arbeiten, da diese sofort synchronisiert wird.

  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 17. Oktober 2014 um 22:38

    Ich versuche mal anhand eines Bsp. deutlich zu machen, welche "Gefahr" wir sehen.

    Geht mal in den Supermarkt und versucht Produkte zu finden die deutlich vordergründig oder sogar ausschließlich deutsch beschriftet sind. - Wird schwierig und umfasst dann nur wenige Prozent der Produktpalette.
    Das kann man dann ohne Ende fortführen: Die Imbißbude heißt jetzt "Snack Bar" der Hausmeister nennt sich "Facility Manager" etc. pp.

    Ich vergleiche das Forum mit der Deutschen Sprache. Läßt man solche kranken Einflüsse zu, gehts den Bach runter.

  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 17. Oktober 2014 um 13:45

    Da muss ich dem Andy total zustimmen.
    Deshalb ist AspirinJunkies Vorschlag mit dem Danke, das nur für den Empfänger und ohne Zähler sichtbar ist m.M. nach das Einzige überhaupt tolerierbare. Wobei ich dann aber die Option haben möchte, für mich diese Dinger auf nicht sichtbar zu schalten. Ich will nicht liken und auch nicht geliked werden. Wer wirklich Hilfe durch mich erfahren hat, kann das gerne in Worten ausdrücken, dafür bin ich dann auch empfänglich. Aber ein blöder Counter der in meinem Beitrag tackert ist das letzte was ich sehen will.

    Wenn wir etwas tun, nur weil es doch alle anderen auch machen, werden wir eines haben: Ein ständig steigendes Foren-Niveau-wo-wo... :thumbdown:

  • Font ändern in Excel

    • BugFix
    • 17. Oktober 2014 um 13:35
    Zitat von Gremlin78

    Kann man die Möglichkeiten der Attribute irgendwo nachlesen?


    Klick dich mal durch: http://msdn.microsoft.com/en-us/library/…office.11).aspx

  • Font ändern in Excel

    • BugFix
    • 17. Oktober 2014 um 12:44
    Zitat von Gremlin78

    Bisher ging das ja noch ganz gut über


    Daran hat sich doch nichts geändert. ".Font.Name" ist ein Attribut, das über Range oder Cells gesetzt werden kann. Völlig unabhängig von AutoIt.

  • Per AutoIt Windows Form : Combobox komplett auslesen

    • BugFix
    • 16. Oktober 2014 um 21:44

    Nein - nicht Emulate sondern Enumerate (Aufzählen). ;)

    Aber es geht besser mit einem Dll-Call für GetComboboxInfo.
    (Falls der Code nicht richtig dargestellt wird - folgende Includes brauchst du:
    <GuiComboBoxEx.au3>
    <GUIConstantsEx.au3>
    <GuiListBox.au3> )

    Spoiler anzeigen
    [autoit]


    #include <GuiComboBoxEx.au3>
    #include <GUIConstantsEx.au3>
    #include <GuiListBox.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Example()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example()
    ; create structure to receive combobox infos
    Local $tagCOMBOBOXINFO = 'struct;dword cbSize;int[4];int[4];dword stateButton;hwnd hwndCombo;hwnd hwndItem;hwnd hwndList;endstruct'
    Local $tCOMBOBOXINFO = DllStructCreate($tagCOMBOBOXINFO)
    DllStructSetData($tCOMBOBOXINFO, 'cbSize', DllStructGetSize($tCOMBOBOXINFO))
    Local $pCOMBOBOXINFO = DllStructGetPtr($tCOMBOBOXINFO)

    [/autoit] [autoit][/autoit] [autoit]

    Local $hGUI, $hCombo

    [/autoit] [autoit][/autoit] [autoit]

    ; Create GUI
    $hGUI = GUICreate("ComboBoxEx Get ComboBox Info", 400, 300)
    $cCombo = GUICtrlCreateCombo('', 10, 10, 200, 22)
    $hCombo = GUICtrlGetHandle($cCombo)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; Add values
    GUICtrlSetData($cCombo, 'Eins|Zwei|Drei|Vier|Fünf', 'Eins')

    [/autoit] [autoit][/autoit] [autoit]

    ; ask for Combobox Info
    $aRet = DllCall('user32.dll', 'int', 'GetComboBoxInfo', 'hwnd', $hCombo, 'ptr', $pCOMBOBOXINFO)
    If Not @error Then
    $hList = DllStructGetData($tCOMBOBOXINFO, "hwndList")
    $iCount = _GUICtrlListBox_GetCount($hList)
    For $i = 0 To $iCount -1
    ConsoleWrite('DropdownList Item-' & $i+1 & ' : ' & _GUICtrlListBox_GetText($hList, $i) & @CRLF)
    Next
    EndIf
    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit]


    In Zeile 33 taucht ein überzähliges ; auf. Der Syntaxhighlighter ist hier noch nicht ganz auf dem Laufenden... ;)
    So ist es korrekt: ConsoleWrite('DropdownList Item-' & $i+1 & ' : ' & _GUICtrlListBox_GetText($hList, $i) & @CRLF)

    EDIT:
    So - das war jetzt die schwierige Variante. Ich konnte mich aber erinnern, dass es irgendeine fertige Func in den UDF geben muss. Nun gefunden:

    Spoiler anzeigen
    [autoit]


    #include <GuiComboBoxEx.au3>
    #include <GUIConstantsEx.au3>

    [/autoit] [autoit][/autoit] [autoit]

    Example1()

    [/autoit] [autoit][/autoit] [autoit]

    Func Example1()
    Local $hGUI, $hCombo

    [/autoit] [autoit][/autoit] [autoit]

    ; Create GUI
    $hGUI = GUICreate("ComboBoxEx Get ComboBox Info", 400, 300)
    $cCombo = GUICtrlCreateCombo('', 10, 10, 200, 22)
    $hCombo = GUICtrlGetHandle($cCombo)
    GUISetState(@SW_SHOW)

    [/autoit] [autoit][/autoit] [autoit]

    ; Add values
    GUICtrlSetData($cCombo, 'Eins|Zwei|Drei|Vier|Fünf', 'Eins')

    [/autoit] [autoit][/autoit] [autoit]

    $sItem = _GUICtrlComboBoxEx_GetList($hCombo)
    ConsoleWrite("@@ Debug line" & @TAB & @ScriptLineNumber & " var: $sItem --> " & $sItem & @LF)

    [/autoit] [autoit][/autoit] [autoit]

    Do
    Until GUIGetMsg() = $GUI_EVENT_CLOSE
    EndFunc ;==>Example

    [/autoit]
  • Per AutoIt Windows Form : Combobox komplett auslesen

    • BugFix
    • 16. Oktober 2014 um 14:53

    Die Liste mit den Einträgen ist ein Child der Combo, so in etwa sollte das mgl. sein:
    - Handle der Combo holen
    - Enumerate Windows dafür durchführen um das Child-Handle zu bekommen (du müsstest zwei Childs finden: Input und Liste)
    - mit dem Child-Handle kannst du den Listeninhalt abfragen

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 16. Oktober 2014 um 09:57

    - Schriftartauswahl im Editor wird nicht übernommen
    - Kopieren von Inhalten im Editor löscht alle Zeilenumbrüche und Leerzeichen beim Wiedereinfügen

  • Like oder nicht Like - das ist die Frage!

    • BugFix
    • 16. Oktober 2014 um 09:14
    Zitat von AspirinJunkie

    Ich kenne mich mit Forensoftware nicht aus.
    Daher nur eine Frage: Gibt es eine Möglichkeit eine Bedanken-Funktion ohne jedwede Zählerfunktion zu machen?
    Also weder einen Dankes-Counter global noch im Thread?
    Idealerweise nur für den Adressaten zu sehen.
    Dann wäre die Befürchtung, dass das Posting-Verhalten, wegen eines Zählwertes oder Suche nach öffentlicher Anerkennung, verändert wird dahin und alle die ein Danke ohne Extra-Post haben wollen bekommen ihren Wunsch auch erfüllt.


    Prima Idee. Damit sollte allen Gemütslagen Rechnung getragen werden. :thumbup:

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 15. Oktober 2014 um 21:18

    1920 x 1080 Auflösung

    Schriften, die m.M. nach zu wuchtig wirken habe ich rot gerahmt.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

    Der Inhalt kann nicht angezeigt werden, da er nicht mehr verfügbar ist.

  • Forum-Umstellung Problemsammlung

    • BugFix
    • 15. Oktober 2014 um 20:17

    :D - da hatte ich mich verlesen. Ich dachte der erste Beitrag ist gemeint, nicht der letzte (neueste).

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™