diff --git a/SQL/database_changelog.txt b/SQL/database_changelog.txt index dc05bae44315..56f05e84f108 100644 --- a/SQL/database_changelog.txt +++ b/SQL/database_changelog.txt @@ -1,15 +1,22 @@ Any time you make a change to the schema files, remember to increment the database schema version. Generally increment the minor number, major should be reserved for significant changes to the schema. Both values go up to 255. -The latest database version is 4.6; The query to update the schema revision table is: +The latest database version is 4.7; The query to update the schema revision table is: -INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 6); +INSERT INTO `schema_revision` (`major`, `minor`) VALUES (4, 7); or -INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 6); +INSERT INTO `SS13_schema_revision` (`major`, `minor`) VALUES (4, 7); In any query remember to add a prefix to the table names if you use one. ---------------------------------------------------- +Version 4.7, 18 August 2018, by CitrusGender +Modified table `messages`, adding column `severity` to classify notes based on their severity. + +ALTER TABLE `messages` ADD `severity` enum('high','medium','minor','none') DEFAULT NULL AFTER `expire_timestamp` + +---------------------------------------------------- + Version 4.6, 11 August 2018, by Jordie0608 Modified table `messages`, adding column `expire_timestamp` to allow for auto-"deleting" messages. diff --git a/SQL/tgstation_schema.sql b/SQL/tgstation_schema.sql index 18602cc52a9c..dc0861220aeb 100644 --- a/SQL/tgstation_schema.sql +++ b/SQL/tgstation_schema.sql @@ -254,6 +254,7 @@ CREATE TABLE `messages` ( `round_id` int(11) unsigned NOT NULL, `secret` tinyint(1) unsigned NOT NULL, `expire_timestamp` datetime DEFAULT NULL, + `severity` enum('high','medium','minor','none') DEFAULT NULL, `lasteditor` varchar(32) DEFAULT NULL, `edits` text, `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', diff --git a/SQL/tgstation_schema_prefixed.sql b/SQL/tgstation_schema_prefixed.sql index 938b293035ad..5cb57a9582e6 100644 --- a/SQL/tgstation_schema_prefixed.sql +++ b/SQL/tgstation_schema_prefixed.sql @@ -254,6 +254,7 @@ CREATE TABLE `SS13_messages` ( `round_id` int(11) unsigned NOT NULL, `secret` tinyint(1) unsigned NOT NULL, `expire_timestamp` datetime DEFAULT NULL, + `severity` enum('high','medium','minor','none') DEFAULT NULL, `lasteditor` varchar(32) DEFAULT NULL, `edits` text, `deleted` tinyint(1) unsigned NOT NULL DEFAULT '0', diff --git a/code/__DEFINES/subsystems.dm b/code/__DEFINES/subsystems.dm index 6f49344dc6bb..b62febed7e28 100644 --- a/code/__DEFINES/subsystems.dm +++ b/code/__DEFINES/subsystems.dm @@ -1,7 +1,7 @@ //Update this whenever the db schema changes //make sure you add an update to the schema_version stable in the db changelog #define DB_MAJOR_VERSION 4 -#define DB_MINOR_VERSION 6 +#define DB_MINOR_VERSION 7 //Timing subsystem //Don't run if there is an identical unique timer active diff --git a/code/modules/admin/DB_ban/functions.dm b/code/modules/admin/DB_ban/functions.dm index 0587092ca5ce..4d58f7cba635 100644 --- a/code/modules/admin/DB_ban/functions.dm +++ b/code/modules/admin/DB_ban/functions.dm @@ -413,6 +413,12 @@ output += "IP: " output += "Computer id: " output += "Duration: " + output += "Severity:" output += "" for(var/j in get_all_jobs()) diff --git a/code/modules/admin/NewBan.dm b/code/modules/admin/NewBan.dm index fefcf003fe6f..7905a8d155ea 100644 --- a/code/modules/admin/NewBan.dm +++ b/code/modules/admin/NewBan.dm @@ -123,9 +123,9 @@ GLOBAL_PROTECT(Banlist) if (temp) WRITE_FILE(GLOB.Banlist["minutes"], bantimestamp) if(!temp) - create_message("note", key, bannedby, "Permanently banned - [reason]", null, null, 0, 0, null, 0) + create_message("note", key, bannedby, "Permanently banned - [reason]", null, null, 0, 0, null, 0, 0) else - create_message("note", key, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0, null, 0) + create_message("note", key, bannedby, "Banned for [minutes] minutes - [reason]", null, null, 0, 0, null, 0, 0) return 1 /proc/RemoveBan(foldername) diff --git a/code/modules/admin/sql_message_system.dm b/code/modules/admin/sql_message_system.dm index 67e85f5596c6..f7f0a6471aeb 100644 --- a/code/modules/admin/sql_message_system.dm +++ b/code/modules/admin/sql_message_system.dm @@ -1,4 +1,4 @@ -/proc/create_message(type, target_key, admin_ckey, text, timestamp, server, secret, logged = 1, browse, expiry) +/proc/create_message(type, target_key, admin_ckey, text, timestamp, server, secret, logged = 1, browse, expiry, note_severity) if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") return @@ -72,7 +72,12 @@ return expiry = query_validate_expire_time.item[1] qdel(query_validate_expire_time) - var/datum/DBQuery/query_create_message = SSdbcore.NewQuery("INSERT INTO [format_table_name("messages")] (type, targetckey, adminckey, text, timestamp, server, server_ip, server_port, round_id, secret, expire_timestamp) VALUES ('[type]', '[target_ckey]', '[admin_ckey]', '[text]', '[timestamp]', '[server]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]','[secret]', [expiry ? "'[expiry]'" : "NULL"])") + if(type == "note" && isnull(note_severity)) + note_severity = input("Set the severity of the note.", "Severity", null, null) as null|anything in list("High", "Medium", "Minor", "None") + if(!note_severity) + return + note_severity = sanitizeSQL(note_severity) + var/datum/DBQuery/query_create_message = SSdbcore.NewQuery("INSERT INTO [format_table_name("messages")] (type, targetckey, adminckey, text, timestamp, server, server_ip, server_port, round_id, secret, expire_timestamp, severity) VALUES ('[type]', '[target_ckey]', '[admin_ckey]', '[text]', '[timestamp]', '[server]', INET_ATON(IF('[world.internet_address]' LIKE '', '0', '[world.internet_address]')), '[world.port]', '[GLOB.round_id]','[secret]', [expiry ? "'[expiry]'" : "NULL"], [note_severity ? "'[note_severity]'" : "NULL"])") var/pm = "[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""]: [text]" var/header = "[key_name(usr)] has created a [type][(type == "note" || type == "message" || type == "watchlist entry") ? " for [target_key]" : ""]" // yogs - Yog Tickets if(!query_create_message.warn_execute()) @@ -222,6 +227,45 @@ browse_messages(target_ckey = ckey(target_key), agegate = TRUE) qdel(query_find_edit_expiry_message) +/proc/edit_message_severity(message_id) + if(!SSdbcore.Connect()) + to_chat(usr, "Failed to establish database connection.") + return + message_id = text2num(message_id) + if(!message_id) + return + var/kn = key_name(usr) + var/kna = key_name_admin(usr) + var/datum/DBQuery/query_find_edit_note_severity = SSdbcore.NewQuery("SELECT type, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), severity FROM [format_table_name("messages")] WHERE id = [message_id] AND deleted = 0") + if(!query_find_edit_note_severity.warn_execute()) + qdel(query_find_edit_note_severity) + return + if(query_find_edit_note_severity.NextRow()) + var/type = query_find_edit_note_severity.item[1] + var/target_key = query_find_edit_note_severity.item[2] + var/admin_key = query_find_edit_note_severity.item[3] + var/old_severity = query_find_edit_note_severity.item[4] + if(!old_severity) + old_severity = "NA" + var/editor_key = sanitizeSQL(usr.key) + var/editor_ckey = sanitizeSQL(usr.ckey) + var/new_severity = input("Set the severity of the note.", "Severity", null, null) as null|anything in list("high", "medium", "minor", "none") //lowercase for edit log consistency + if(!new_severity) + qdel(query_find_edit_note_severity) + return + new_severity = sanitizeSQL(new_severity) + var/edit_text = sanitizeSQL("Note severity edited by [editor_key] on [SQLtime()] from [old_severity] to [new_severity]
") + var/datum/DBQuery/query_edit_note_severity = SSdbcore.NewQuery("UPDATE [format_table_name("messages")] SET severity = '[new_severity]', lasteditor = '[editor_ckey]', edits = CONCAT(IFNULL(edits,''),'[edit_text]') WHERE id = [message_id] AND deleted = 0") + if(!query_edit_note_severity.warn_execute(async = TRUE)) + qdel(query_edit_note_severity) + qdel(qdel(query_find_edit_note_severity)) + return + qdel(query_edit_note_severity) + log_admin_private("[kn] has edited the severity of a [type] for [target_key] made by [admin_key] from [old_severity] to [new_severity]") + message_admins("[kna] has edited the severity time of a [type] for [target_key] made by [admin_key] from [old_severity] to [new_severity]") + browse_messages(target_ckey = ckey(target_key), agegate = TRUE) + qdel(query_find_edit_note_severity) + /proc/toggle_message_secrecy(message_id) if(!SSdbcore.Connect()) to_chat(usr, "Failed to establish database connection.") @@ -260,10 +304,10 @@ return var/list/output = list() var/ruler = "
" - var/list/navbar = list("\[All\]|\[#\]") + var/list/navbar = list("All#") for(var/letter in GLOB.alphabet) - navbar += "|\[[letter]\]" - navbar += "|\[Memos\]|\[Watchlist\]" + navbar += "[letter]" + navbar += "MemosWatchlist" navbar += "
\ \ [HrefTokenFormField()]\ @@ -274,14 +318,14 @@ if(type == "memo" || type == "watchlist entry") if(type == "memo") output += "

Admin memos

" - output += "\[Add memo\]" + output += "Add memo" else if(type == "watchlist entry") output += "

Watchlist entries

" - output += "\[Add watchlist entry\]" + output += "Add watchlist entry" if(filter) - output += "|\[Unfilter clients\]" + output += "Unfilter clients" else - output += "|\[Filter offline clients\]" + output += "Filter offline clients" output += ruler var/datum/DBQuery/query_get_type_messages = SSdbcore.NewQuery("SELECT id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), targetckey, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), expire_timestamp FROM [format_table_name("messages")] WHERE type = '[type]' AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL)") if(!query_get_type_messages.warn_execute()) @@ -308,9 +352,9 @@ if(expire_timestamp) output += " | Expires [expire_timestamp]" output += "" - output += " \[Change Expiry Time\]" - output += " \[Delete\]" - output += " \[Edit\]" + output += " Change Expiry Time" + output += " Delete" + output += " Edit" if(editor_key) output += " Last edit by [editor_key] (Click here to see edit log)" output += "
[text]
" @@ -318,7 +362,7 @@ if(target_ckey) target_ckey = sanitizeSQL(target_ckey) var/target_key - var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), DATEDIFF(NOW(), timestamp), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), expire_timestamp FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL) ORDER BY timestamp DESC") + var/datum/DBQuery/query_get_messages = SSdbcore.NewQuery("SELECT type, secret, id, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = adminckey), text, timestamp, server, (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = lasteditor), DATEDIFF(NOW(), timestamp), (SELECT byond_key FROM [format_table_name("player")] WHERE ckey = targetckey), expire_timestamp, severity FROM [format_table_name("messages")] WHERE type <> 'memo' AND targetckey = '[target_ckey]' AND deleted = 0 AND (expire_timestamp > NOW() OR expire_timestamp IS NULL) ORDER BY timestamp DESC") if(!query_get_messages.warn_execute()) qdel(query_get_messages) return @@ -344,6 +388,7 @@ var/age = text2num(query_get_messages.item[9]) target_key = query_get_messages.item[10] var/expire_timestamp = query_get_messages.item[11] + var/severity = query_get_messages.item[12] var/alphatext = "" var/nsd = CONFIG_GET(number/note_stale_days) var/nfd = CONFIG_GET(number/note_fresh_days) @@ -357,25 +402,33 @@ alpha = 10 skipped = TRUE alphatext = "filter: alpha(opacity=[alpha]); opacity: [alpha/100];" - - var/list/data = list("

[timestamp] | [server] | [admin_key]") + var/list/data = list("

") + if(severity) + data += " " + data += "[timestamp] | [server] | [admin_key][secret ? " | - Secret" : ""]" if(expire_timestamp) data += " | Expires [expire_timestamp]" - data += "" + data += "

" if(!linkless) - data += " \[Change Expiry Time\]" - data += " \[Delete\]" if(type == "note") - data += " [secret ? "\[Secret\]" : "\[Not secret\]"]" + if(severity) + data += "[severity=="none" ? "No" : "[capitalize(severity)]"] Severity" + else + data += "N/A Severity" + data += " Change Expiry Time" + data += " Delete" + if(type == "note") + data += " [secret ? "Secret" : "Not secret"]" if(type == "message sent") data += " Message has been sent" if(editor_key) data += "|" else - data += " \[Edit\]" + data += " Edit" if(editor_key) data += " Last edit by [editor_key] (Click here to see edit log)" - data += "
[text]


" + data += "
" + data += "

[text]


" switch(type) if("message") messagedata += data @@ -396,34 +449,33 @@ qdel(query_get_message_key) output += "

[target_key]

" if(!linkless) - output += "\[Add note\]" - output += " \[Add message\]" - output += " \[Add to watchlist\]" - output += " \[Refresh page\]
" + output += "Add note" + output += " Add message" + output += " Add to watchlist" + output += " Refresh page" else - output += " \[Refresh page\]" + output += " Refresh page" output += ruler if(messagedata) - output += "

Messages

" + output += "

Messages

" output += messagedata if(watchdata) - output += "

Watchlist

" + output += "

Watchlist

" output += watchdata if(notedata) - output += "

Notes

" + output += "

Notes

" output += notedata if(!linkless) if (agegate) if (skipped) //the first skipped message is still shown so that we can put this link over it. - output += "
\[Show [skipped] hidden messages\]
" + output += "
Show [skipped] hidden messages
" else - output += "
\[Show All\]
" - + output += "
Show All
" else - output += "
\[Hide Old\]
" + output += "
Hide Old
" if(index) var/search - output += "
\[Add message\]\[Add watchlist entry\]\[Add note\]
" + output += "
Add messageAdd watchlist entryAdd note
" output += ruler if(!isnum(index)) index = sanitizeSQL(index) @@ -446,9 +498,13 @@ output += "[index_key]
" qdel(query_list_messages) else if(!type && !target_ckey && !index) - output += "
\[Add message\]\[Add watchlist entry\]\[Add note\]
" + output += "
Add messageAdd watchlist entryAdd note
" output += ruler - usr << browse({"[jointext(output, "")]"}, "window=browse_messages;size=900x500") + var/datum/browser/browser = new(usr, "Note panel", "Manage player notes", 1000, 500) + var/datum/asset/notes_assets = get_asset_datum(/datum/asset/simple/notes) + notes_assets.send(src) + browser.set_content(jointext(output, "")) + browser.open() /proc/get_message_output(type, target_ckey) if(!SSdbcore.Connect()) @@ -521,7 +577,7 @@ timestamp = query_convert_time.item[1] qdel(query_convert_time) if(ckey && notetext && timestamp && admin_ckey && server) - create_message("note", ckey, admin_ckey, notetext, timestamp, server, 1, 0, null, 0) + create_message("note", ckey, admin_ckey, notetext, timestamp, server, 1, 0, null, 0, 0) notesfile.cd = "/" notesfile.dir.Remove(ckey) diff --git a/code/modules/admin/topic.dm b/code/modules/admin/topic.dm index 33de495f622d..26a35851b54d 100644 --- a/code/modules/admin/topic.dm +++ b/code/modules/admin/topic.dm @@ -240,37 +240,38 @@ var/banduration = text2num(href_list["dbbaddduration"]) var/banjob = href_list["dbbanaddjob"] var/banreason = href_list["dbbanreason"] + var/banseverity = href_list["dbbanaddseverity"] switch(bantype) if(BANTYPE_PERMA) - if(!banckey || !banreason) - to_chat(usr, "Not enough parameters (Requires ckey and reason).") + if(!banckey || !banreason || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity, and reason).") return banduration = null banjob = null if(BANTYPE_TEMP) - if(!banckey || !banreason || !banduration) - to_chat(usr, "Not enough parameters (Requires ckey, reason and duration).") + if(!banckey || !banreason || !banduration || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, reason, severity and duration).") return banjob = null if(BANTYPE_JOB_PERMA) - if(!banckey || !banreason || !banjob) - to_chat(usr, "Not enough parameters (Requires ckey, reason and job).") + if(!banckey || !banreason || !banjob || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity, reason and job).") return banduration = null if(BANTYPE_JOB_TEMP) - if(!banckey || !banreason || !banjob || !banduration) - to_chat(usr, "Not enough parameters (Requires ckey, reason and job).") + if(!banckey || !banreason || !banjob || !banduration || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity, reason and job).") return if(BANTYPE_ADMIN_PERMA) - if(!banckey || !banreason) - to_chat(usr, "Not enough parameters (Requires ckey and reason).") + if(!banckey || !banreason || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity and reason).") return banduration = null banjob = null if(BANTYPE_ADMIN_TEMP) - if(!banckey || !banreason || !banduration) - to_chat(usr, "Not enough parameters (Requires ckey, reason and duration).") + if(!banckey || !banreason || !banduration || !banseverity) + to_chat(usr, "Not enough parameters (Requires ckey, severity, reason and duration).") return banjob = null @@ -295,7 +296,7 @@ if(!DB_ban_record(bantype, playermob, banduration, banreason, banjob, bankey, banip, bancid )) to_chat(usr, "Failed to apply ban.") return - create_message("note", bankey, null, banreason, null, null, 0, 0, null, 0) + create_message("note", bankey, null, banreason, null, null, 0, 0, null, 0, banseverity) else if(href_list["editrightsbrowser"]) edit_admin_permissions(0) @@ -624,6 +625,9 @@ var/reason = input(usr,"Please State Reason.","Reason") as message|null if(!reason) return + var/severity = input("Set the severity of the note/ban.", "Severity", null, null) as null|anything in list("High", "Medium", "Minor", "None") + if(!severity) + return if(!DB_ban_record(BANTYPE_JOB_PERMA, M, -1, reason, "appearance")) to_chat(usr, "Failed to apply ban.") return @@ -631,7 +635,7 @@ jobban_buildcache(M.client) ban_unban_log_save("[key_name(usr)] appearance banned [key_name(M)]. reason: [reason]") log_admin_private("[key_name(usr)] appearance banned [key_name(M)]. \nReason: [reason]") - create_message("note", M.key, null, "Appearance banned - [reason]", null, null, 0, 0, null, 0) + create_message("note", M.key, null, "Appearance banned - [reason]", null, null, 0, 0, null, 0, severity) message_admins("[key_name_admin(usr)] appearance banned [key_name_admin(M)].") to_chat(M, "You have been appearance banned by [usr.client.key].") to_chat(M, "The reason is: [reason]") @@ -994,6 +998,7 @@ //Banning comes first if(notbannedlist.len) //at least 1 unbanned job exists in joblist so we have stuff to ban. + var/severity = null switch(alert("Temporary Ban for [M.key]?",,"Yes","No", "Cancel")) if("Yes") var/mins = input(usr,"How long (in minutes)?","Ban time",1440) as num|null @@ -1003,7 +1008,9 @@ var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null if(!reason) return - + severity = input("Set the severity of the note/ban.", "Severity", null, null) as null|anything in list("High", "Medium", "Minor", "None") + if(!severity) + return var/msg for(var/job in notbannedlist) if(!DB_ban_record(BANTYPE_JOB_TEMP, M, mins, reason, job)) @@ -1017,7 +1024,7 @@ msg = job else msg += ", [job]" - create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0) + create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg] for [mins] minutes.") to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") to_chat(M, "The reason is: [reason]") @@ -1026,6 +1033,9 @@ return 1 if("No") var/reason = input(usr,"Please State Reason For Banning [M.key].","Reason") as message|null + severity = input("Set the severity of the note/ban.", "Severity", null, null) as null|anything in list("High", "Medium", "Minor", "None") + if(!severity) + return if(reason) var/msg for(var/job in notbannedlist) @@ -1040,7 +1050,7 @@ msg = job else msg += ", [job]" - create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0) + create_message("note", M.key, null, "Banned from [msg] - [reason]", null, null, 0, 0, null, 0, severity) message_admins("[key_name_admin(usr)] banned [key_name_admin(M)] from [msg].") to_chat(M, "You have been [(msg == ("ooc" || "appearance")) ? "banned" : "jobbanned"] by [usr.client.key] from: [msg].") to_chat(M, "The reason is: [reason]") @@ -1177,6 +1187,12 @@ var/message_id = href_list["editmessageexpiryempty"] edit_message_expiry(message_id, browse = 1) + else if(href_list["editmessageseverity"]) + if(!check_rights(R_ADMIN)) + return + var/message_id = href_list["editmessageseverity"] + edit_message_severity(message_id) + else if(href_list["secretmessage"]) if(!check_rights(R_ADMIN)) return @@ -1241,7 +1257,9 @@ if(query_get_message_edits.NextRow()) var/edit_log = query_get_message_edits.item[1] if(!QDELETED(usr)) - usr << browse(edit_log,"window=noteedits") + var/datum/browser/browser = new(usr, "Note edits", "Note edits") + browser.set_content(jointext(edit_log, "")) + browser.open() qdel(query_get_message_edits) else if(href_list["newban"]) diff --git a/code/modules/client/asset_cache.dm b/code/modules/client/asset_cache.dm index 88d08260e208..7c08a3332ce5 100644 --- a/code/modules/client/asset_cache.dm +++ b/code/modules/client/asset_cache.dm @@ -551,6 +551,14 @@ GLOBAL_LIST_EMPTY(asset_datums) "padlock.png" = 'html/padlock.png' ) +/datum/asset/simple/notes + assets = list( + "high_button.png" = 'html/high_button.png', + "medium_button.png" = 'html/medium_button.png', + "minor_button.png" = 'html/minor_button.png', + "none_button.png" = 'html/none_button.png', + ) + //this exists purely to avoid meta by pre-loading all language icons. /datum/asset/language/register() for(var/path in typesof(/datum/language)) diff --git a/code/modules/client/client_procs.dm b/code/modules/client/client_procs.dm index a92345b9bbce..f98901411503 100644 --- a/code/modules/client/client_procs.dm +++ b/code/modules/client/client_procs.dm @@ -706,7 +706,7 @@ GLOBAL_LIST_EMPTY(external_rsc_urls) qdel(query_get_notes) return qdel(query_get_notes) - create_message("note", key, system_ckey, message, null, null, 0, 0, null, 0) + create_message("note", key, system_ckey, message, null, null, 0, 0, null, 0, 0) /client/proc/check_ip_intel() diff --git a/html/browser/common.css b/html/browser/common.css index 5f74c5581f45..0883a2df92f0 100644 --- a/html/browser/common.css +++ b/html/browser/common.css @@ -396,3 +396,17 @@ ul.sparse { .slider.round:before { border-radius: 50%; } + +.severity { + margin:0px; + padding: 1px 8px 1px 8px; + border-radius: 25px; + border: 1px solid #161616; + background: #40628a; + color: #ffffff; +} + +.severity img { + display: inline-block; + vertical-align: middle; +} diff --git a/html/high_button.png b/html/high_button.png new file mode 100644 index 000000000000..6cbae7271b9d Binary files /dev/null and b/html/high_button.png differ diff --git a/html/medium_button.png b/html/medium_button.png new file mode 100644 index 000000000000..7a9fc286fdc6 Binary files /dev/null and b/html/medium_button.png differ diff --git a/html/minor_button.png b/html/minor_button.png new file mode 100644 index 000000000000..ae141e164437 Binary files /dev/null and b/html/minor_button.png differ diff --git a/html/none_button.png b/html/none_button.png new file mode 100644 index 000000000000..2438f2c926b7 Binary files /dev/null and b/html/none_button.png differ