/client var/datum/managed_browser/feedback_viewer/feedback_viewer = null /datum/admins/proc/view_feedback() set category = "Admin" set name = "View Feedback" set desc = "Open the Feedback Viewer" if(!check_rights(R_ADMIN|R_DEBUG|R_EVENT)) return if(usr.client.feedback_viewer) usr.client.feedback_viewer.display() else usr.client.feedback_viewer = new(usr.client) // This object holds the code to run the admin feedback viewer. /datum/managed_browser/feedback_viewer base_browser_id = "feedback_viewer" title = "Submitted Feedback" size_x = 900 size_y = 500 var/database/query/last_query = null /datum/managed_browser/feedback_viewer/New(client/new_client) if(!check_rights(R_ADMIN|R_DEBUG|R_EVENT, new_client)) // Just in case someone figures out a way to spawn this as non-staff. message_admins("[new_client] tried to view feedback with insufficent permissions.") qdel(src) ..() /datum/managed_browser/feedback_viewer/Destroy() if(my_client) my_client.feedback_viewer = null return ..() /datum/managed_browser/feedback_viewer/proc/feedback_filter(row_name, thing_to_find, exact = FALSE) var/database/query/query = null if(exact) // Useful for ID searches, so searching for 'id 10' doesn't also get 'id 101'. query = new({" SELECT * FROM [SQLITE_TABLE_FEEDBACK] WHERE [row_name] == ? ORDER BY [SQLITE_FEEDBACK_COLUMN_ID] DESC LIMIT 50; "}, thing_to_find ) else // Wrap the thing in %s so LIKE will work. thing_to_find = "%[thing_to_find]%" query = new({" SELECT * FROM [SQLITE_TABLE_FEEDBACK] WHERE [row_name] LIKE ? ORDER BY [SQLITE_FEEDBACK_COLUMN_ID] DESC LIMIT 50; "}, thing_to_find ) query.Execute(SSsqlite.sqlite_db) SSsqlite.sqlite_check_for_errors(query, "Admin Feedback Viewer - Filter by [row_name] to find [thing_to_find]") return query // Builds the window for players to review their feedback. /datum/managed_browser/feedback_viewer/get_html() var/list/dat = list("
") if(!last_query) // If no query was done before, just show the most recent feedbacks. var/database/query/query = new({" SELECT * FROM [SQLITE_TABLE_FEEDBACK] ORDER BY [SQLITE_FEEDBACK_COLUMN_ID] DESC LIMIT 50; "} ) query.Execute(SSsqlite.sqlite_db) SSsqlite.sqlite_check_for_errors(query, "Admin Feedback Viewer") last_query = query dat += "| [href(src, list("filter_id" = 1), "ID")] | " dat += "[href(src, list("filter_topic" = 1), "Topic")] | " dat += "[href(src, list("filter_author" = 1), "Author")] | " dat += "[href(src, list("filter_content" = 1), "Content")] | " dat += "[href(src, list("filter_datetime" = 1), "Datetime")] | " dat += "
|---|---|---|---|---|
| [row_data[SQLITE_FEEDBACK_COLUMN_ID]] | " dat += "[row_data[SQLITE_FEEDBACK_COLUMN_TOPIC]] | " dat += "[row_data[SQLITE_FEEDBACK_COLUMN_AUTHOR]] | " // TODO: Color this to make hashed keys more distinguishable. var/text = row_data[SQLITE_FEEDBACK_COLUMN_CONTENT] if(length(text) > 512) text = href(src, list( "show_full_feedback" = 1, "feedback_author" = row_data[SQLITE_FEEDBACK_COLUMN_AUTHOR], "feedback_content" = row_data[SQLITE_FEEDBACK_COLUMN_CONTENT] ), "[copytext(text, 1, 64)]... ([length(text)])") else text = replacetext(text, "\n", "[text] | " dat += "[row_data[SQLITE_FEEDBACK_COLUMN_DATETIME]] | " dat += "