<!DOCTYPE html>
<html lang="en">
<head>
  <!--#include file="./includes/header.asp"-->
  <!--#include file="./includes/sql.asp"-->
</head>

<%
	theme = Request.Cookies("theme")
	IF theme = "" THEN
		theme="bg-theme1"
	END IF

	' Get sort parameter (default to lastupdated)
	Dim sortBy, sortOrder, orderClause
	sortBy = Request.QueryString("sort")
	sortOrder = Request.QueryString("order")

	' Default sorting (use clicks)
	If sortBy = "" Then sortBy = "clicks"
	If sortOrder = "" Then sortOrder = "DESC"

	' Get total clicks across all KB articles
	Dim totalClicksSQL, rsTotalClicks, totalClicks
	totalClicks = 0
	On Error Resume Next
	totalClicksSQL = "SELECT COALESCE(SUM(clicks), 0) as total_clicks FROM knowledgebase WHERE isactive = 1"
	Set rsTotalClicks = objConn.Execute(totalClicksSQL)
	If Not rsTotalClicks.EOF Then
		totalClicks = CLng(rsTotalClicks("total_clicks"))
	End If
	rsTotalClicks.Close
	Set rsTotalClicks = Nothing
	On Error Goto 0

	' Build ORDER BY clause based on sort parameter
	Select Case LCase(sortBy)
		Case "clicks"
			orderClause = "ORDER BY kb.clicks " & sortOrder & ", kb.lastupdated DESC"
		Case "topic"
			orderClause = "ORDER BY app.appname " & sortOrder
		Case "description"
			orderClause = "ORDER BY kb.shortdescription " & sortOrder
		Case "lastupdated"
			orderClause = "ORDER BY kb.lastupdated " & sortOrder
		Case Else
			' Default to clicks sorting
			orderClause = "ORDER BY kb.clicks DESC, kb.lastupdated DESC"
	End Select
%>
<body class="bg-theme <%Response.Write(theme)%>">

<!-- start loader -->
   <div id="pageloader-overlay" class="visible incoming"><div class="loader-wrapper-outer"><div class="loader-wrapper-inner" ><div class="loader"></div></div></div></div>
   <!-- end loader -->
<!-- Start wrapper-->
 <div id="wrapper">
  <!--#include file="./includes/leftsidebar.asp"-->
<!--Start topbar header-->
  <!--#include file="./includes/topbarheader.asp"-->
<!--End topbar header-->
<div class="clearfix"></div>
  <div class="content-wrapper">
      <div class="row">
        <div class="col-xl-auto">
          <div class="card">
            <div class="card-body">
              <div style="display:flex; justify-content:space-between; align-items:center; margin-bottom:15px;">
                <div style="display:flex; align-items:center;">
                  <h5 class="card-title" style="margin:0; margin-right:15px;">Knowledge Base Articles</h5>
                  <span class="badge badge-info" style="font-size:14px; padding:6px 12px;">
                    <i class="zmdi zmdi-eye"></i> <%=FormatNumber(totalClicks, 0)%> Total Clicks
                  </span>
                </div>
                <a href="./addknowledgebase.asp" class="btn btn-primary">
                  <i class="zmdi zmdi-plus-circle"></i> Add Article
                </a>
              </div>
<%
	' Display status messages
	Dim status, msg
	status = Request.QueryString("status")
	msg = Request.QueryString("msg")

	If status = "added" Then
%>
              <div class="alert alert-success alert-dismissible fade show" role="alert" style="position:relative; padding:0.75rem 3rem 0.75rem 1.25rem;">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close" style="position:absolute; top:50%; right:1rem; transform:translateY(-50%); line-height:1; font-size:1.5rem; opacity:0.5;">
                  <span aria-hidden="true">&times;</span>
                </button>
                <strong>Success!</strong> Knowledge Base article has been added.
              </div>
<%
	ElseIf status = "error" Then
		If msg = "" Then msg = "An error occurred"
%>
              <div class="alert alert-danger alert-dismissible fade show" role="alert" style="position:relative; padding:0.75rem 3rem 0.75rem 1.25rem;">
                <button type="button" class="close" data-dismiss="alert" aria-label="Close" style="position:absolute; top:50%; right:1rem; transform:translateY(-50%); line-height:1; font-size:1.5rem; opacity:0.5;">
                  <span aria-hidden="true">&times;</span>
                </button>
                <strong>Error!</strong> <%=Server.HTMLEncode(Replace(msg, "+", " "))%>
              </div>
<%
	End If
%>
			  <div class="table-responsive">
              <table class="table table-hover">
                <thead>
                  <tr>
<%
	' Helper function to generate sort link with arrow indicator
	Function GetSortLink(columnName, displayName, currentSort, currentOrder)
		Dim newOrder, arrow
		arrow = ""
		If LCase(currentSort) = LCase(columnName) Then
			If UCase(currentOrder) = "DESC" Then
				newOrder = "ASC"
				arrow = " <i class='zmdi zmdi-caret-down'></i>"
			Else
				newOrder = "DESC"
				arrow = " <i class='zmdi zmdi-caret-up'></i>"
			End If
		Else
			newOrder = "DESC"
		End If
		GetSortLink = "<a href='?sort=" & columnName & "&order=" & newOrder & "' style='color:inherit; text-decoration:none;'>" & displayName & arrow & "</a>"
	End Function

	Response.Write("<th scope='col'>" & GetSortLink("topic", "Topic", sortBy, sortOrder) & "</th>")
	Response.Write("<th scope='col'>" & GetSortLink("description", "Description", sortBy, sortOrder) & "</th>")
	Response.Write("<th scope='col'>" & GetSortLink("clicks", "Clicks", sortBy, sortOrder) & "</th>")
	Response.Write("<th scope='col'><i class='zmdi zmdi-info-outline'></i></th>")
%>
                  </tr>
                </thead>
                <tbody>

<%
	strSQL = "SELECT kb.*, app.appname " &_
			"FROM knowledgebase kb " &_
			"INNER JOIN applications app ON kb.appid = app.appid " &_
			"WHERE kb.isactive = 1 " &_
			orderClause &_
			" LIMIT 10"

	set rs = objconn.Execute(strSQL)

	while not rs.eof
		response.write("<tr>")
		response.write("<td><a href='./displaytopic.asp?appid=" &rs("appid") &"' title='Display all " &Server.HTMLEncode(rs("appname")) &" related items'>" &Server.HTMLEncode(rs("appname")) &"</a></td>")

		' Trim description to 95 characters
		Dim description, fullDescription
		fullDescription = rs("shortdescription") & ""
		If Len(fullDescription) > 95 Then
			description = Left(fullDescription, 95) & "..."
		Else
			description = fullDescription
		End If
		' Link description directly to the KB article URL (via clickcounter to track clicks)
		response.write("<td><a href='./clickcounter.asp?linkid=" &rs("linkid") &"' target='_blank' title='" &Server.HTMLEncode(rs("linkurl") & "") &"'>" &Server.HTMLEncode(description) &"</a></td>")

		response.write("<td>" &rs("clicks") &"</td>")
		' Add info icon that links to the article details page
		response.write("<td><a href='./displayknowledgearticle.asp?linkid=" &rs("linkid") &"' title='View Article Details'><i class='zmdi zmdi-info-outline'></i></a></td>")
		response.write("</tr>")
		rs.movenext
	wend
	objConn.Close

%>
                </tbody>
              </table>
            </div>
            </div>
          </div>
        </div>
      </div><!--End Row-->

    <!-- End container-fluid-->

    </div><!--End content-wrapper-->
   <!--Start Back To Top Button-->
    <a href="javaScript:void();" class="back-to-top"><i class="fa fa-angle-double-up"></i> </a>
    <!--End Back To Top Button-->

	<!--Start footer-->
	<footer class="footer">
      </div>
    </footer>
	<!--End footer-->


  </div><!--End wrapper-->


  <!-- Bootstrap core JavaScript-->
  <script src="assets/js/jquery.min.js"></script>
  <script src="assets/js/popper.min.js"></script>
  <script src="assets/js/bootstrap.min.js"></script>

  <!-- simplebar js -->
  <script src="assets/plugins/simplebar/js/simplebar.js"></script>
  <!-- sidebar-menu js -->
  <script src="assets/js/sidebar-menu.js"></script>

  <!-- Custom scripts -->
  <script src="assets/js/app-script.js"></script>

  <style>
  /* Make table headers look clickable */
  thead th a {
      display: block;
      padding: 0;
      cursor: pointer;
  }
  thead th a:hover {
      opacity: 0.8;
      text-decoration: underline !important;
  }
  thead th {
      user-select: none;
  }
  </style>

</body>
</html>
