Gå til innhold

Kildekode: ai_chatbot_loader.asp (Frontend Injector)

Skriptet fungerer som broen mellom Clubsite CMD og frontend widgeten. Ligger inkludert i bunnen av malen.

Mål og Intensjon

  • Failsafe Design: Feil i databasetilkoblingen trykkes i hjel (On Error Resume Next) slik at frontend aldri krasjer.
  • Betinget lasting: Henter innstillingene, sjekker at modulen er skrudd på (IsActive=1), og leser deretter fysisk av og injiserer HTML-koden inn via standardutskrift.
  • DOM-manipulasjon: Erstatter templating-variablene i JS for konfigurasjon.

Kildekode

<%
' ---------------------------------------------------------
' AI Chatbot Loader - Clubsite CMS
' Henter innstillinger fra AI_Chatbot_Settings. 
' Inkluderes i bunnen av nettsiden din før </body>
' ---------------------------------------------------------

Dim ai_rs, ai_SQL
Dim ais_Active, ais_ThemeColor, ais_BotName, ais_Welcome, ais_LogoUrl

' Sjekk først om tabellen finnes og hent status (for å ikke krasje om DB ikke er oppdatert ennå)
On Error Resume Next
ai_SQL = "SELECT * FROM AI_Chatbot_Settings"
Set ai_rs = dbConn.Execute(ai_SQL)

If Err.Number = 0 Then
    If Not ai_rs.EOF Then
        ais_Active = ai_rs("IsActive")
        ais_ThemeColor = ai_rs("ThemeColor")
        ais_BotName = ai_rs("BotName")
        ais_Welcome = ai_rs("WelcomeMessage")
        ais_LogoUrl = ai_rs("LogoUrl")
    End If
End If
On Error GoTo 0

' Kun last inn widget hvis modulen er eksplisitt aktivert i Admin
If (ais_Active = "1" Or ais_Active = True) Then

    Dim fso, fsFile, widgetContent
    Set fso = Server.CreateObject("Scripting.FileSystemObject")

    ' Finn og les inn selve HTML widgeten
    If fso.FileExists(Server.MapPath("/ai_chat_widget.html")) Then
        Set fsFile = fso.OpenTextFile(Server.MapPath("/ai_chat_widget.html"), 1)
        widgetContent = fsFile.ReadAll
        fsFile.Close
        Set fsFile = Nothing

        ' --- THEME REPLACEMENTS ---
        ' Vi søker etter defaults i ai_chat_widget.html og overstyrer med Admin-innhold
        If ais_ThemeColor <> "" Then
            ' Overstyr CSS styles on the fly ved å legge inn CSS-variabler i en style block
            Response.Write "<style>:root { --chatbot-theme: " & ais_ThemeColor & "; }</style>"
        End If

        If ais_BotName <> "" Then
            ' Bruk avansert replace for å bytte ut tekster inne i HTML-fila uten å endre kildekoden
            widgetContent = Replace(widgetContent, "Skigk Bot", Server.HTMLEncode(ais_BotName), 1, -1, 1)
            widgetContent = Replace(widgetContent, "Ski Golfklubb AI", Server.HTMLEncode(ais_BotName), 1, -1, 1)
        End If

        If ais_Welcome <> "" Then
            widgetContent = Replace(widgetContent, "Hei! Jeg er SKI Golfklubb sin nye AI-assistent. Hvordan kan jeg hjelpe deg i dag?", Server.HTMLEncode(ais_Welcome), 1, -1, 1)
        End If

        ' Print ut hele sulamitten
        Response.Write vbCrLf & "<!-- AI CHATBOT START -->" & vbCrLf
        Response.Write widgetContent
        Response.Write vbCrLf & "<!-- AI CHATBOT END -->" & vbCrLf
    Else
        Response.Write "<!-- AI Chatbot Error: ai_chat_widget.html ble ikke funnet i root. -->"
    End If

    Set fso = Nothing
End If

If IsObject(ai_rs) Then
    Set ai_rs = Nothing
End If
%>