mirror of
https://github.com/Bubberstation/Bubberstation.git
synced 2026-01-06 06:52:39 +00:00
Arconomy Adjacent Content: Newscaster Refactor Omega (#65038)
This PR moves the in-game Newscaster over to TGUI, which is one the most bothersome html to tgui projects on the codebase being that it's gone untouched for like... over 4 years now after the introduction of tgui. Newscasters are widely used in-game by players wanting to be deranged whistleblowers, noir detectives, and journalists. They're flavorful, fun, and we still use an html window to make them run so it looks like it's from 2003.
This commit is contained in:
@@ -22,9 +22,9 @@ GLOBAL_PROTECT(href_token)
|
||||
var/spamcooldown = 0
|
||||
|
||||
var/admincaster_screen = 0 //TODO: remove all these 5 variables, they are completly unacceptable
|
||||
var/datum/newscaster/feed_message/admincaster_feed_message = new /datum/newscaster/feed_message
|
||||
var/datum/newscaster/wanted_message/admincaster_wanted_message = new /datum/newscaster/wanted_message
|
||||
var/datum/newscaster/feed_channel/admincaster_feed_channel = new /datum/newscaster/feed_channel
|
||||
var/datum/feed_message/admincaster_feed_message = new /datum/feed_message
|
||||
var/datum/wanted_message/admincaster_wanted_message = new /datum/wanted_message
|
||||
var/datum/feed_channel/admincaster_feed_channel = new /datum/feed_channel
|
||||
var/admin_signature
|
||||
|
||||
var/href_token
|
||||
|
||||
@@ -1303,7 +1303,7 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/check = 0
|
||||
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
|
||||
for(var/datum/feed_channel/FC in GLOB.news_network.network_channels)
|
||||
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
|
||||
check = 1
|
||||
break
|
||||
@@ -1312,7 +1312,7 @@
|
||||
else
|
||||
var/choice = tgui_alert(usr,"Please confirm Feed channel creation.","Network Channel Handler",list("Confirm","Cancel"))
|
||||
if(choice=="Confirm")
|
||||
GLOB.news_network.CreateFeedChannel(src.admincaster_feed_channel.channel_name, src.admin_signature, src.admincaster_feed_channel.locked, 1)
|
||||
GLOB.news_network.create_feed_channel(src.admincaster_feed_channel.channel_name, src.admin_signature, "New information from on high." , src.admincaster_feed_channel.locked, 1)
|
||||
SSblackbox.record_feedback("tally", "newscaster_channels", 1, src.admincaster_feed_channel.channel_name)
|
||||
log_admin("[key_name(usr)] created command feed channel: [src.admincaster_feed_channel.channel_name]!")
|
||||
src.admincaster_screen=5
|
||||
@@ -1322,7 +1322,7 @@
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/list/available_channels = list()
|
||||
for(var/datum/newscaster/feed_channel/F in GLOB.news_network.network_channels)
|
||||
for(var/datum/feed_channel/F in GLOB.news_network.network_channels)
|
||||
available_channels += F.channel_name
|
||||
src.admincaster_feed_channel.channel_name = adminscrub(input(usr, "Choose receiving Feed Channel.", "Network Channel Handler") in sort_list(available_channels) )
|
||||
src.access_news_network()
|
||||
@@ -1336,15 +1336,15 @@
|
||||
else if(href_list["ac_submit_new_message"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
if(src.admincaster_feed_message.returnBody(-1) =="" || src.admincaster_feed_message.returnBody(-1) =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" )
|
||||
if(src.admincaster_feed_message.return_body(-1) =="" || src.admincaster_feed_message.return_body(-1) =="\[REDACTED\]" || src.admincaster_feed_channel.channel_name == "" )
|
||||
src.admincaster_screen = 6
|
||||
else
|
||||
GLOB.news_network.SubmitArticle(src.admincaster_feed_message.returnBody(-1), src.admin_signature, src.admincaster_feed_channel.channel_name, null, 1)
|
||||
GLOB.news_network.submit_article(src.admincaster_feed_message.return_body(-1), src.admin_signature, src.admincaster_feed_channel.channel_name, null, 1)
|
||||
SSblackbox.record_feedback("amount", "newscaster_stories", 1)
|
||||
src.admincaster_screen=4
|
||||
|
||||
for(var/obj/machinery/newscaster/NEWSCASTER in GLOB.allCasters)
|
||||
NEWSCASTER.newsAlert(src.admincaster_feed_channel.channel_name)
|
||||
NEWSCASTER.news_alert(src.admincaster_feed_channel.channel_name)
|
||||
|
||||
log_admin("[key_name(usr)] submitted a feed story to channel: [src.admincaster_feed_channel.channel_name]!")
|
||||
src.access_news_network()
|
||||
@@ -1408,10 +1408,10 @@
|
||||
var/choice = tgui_alert(usr,"Please confirm Wanted Issue [(input_param==1) ? ("creation.") : ("edit.")]","Network Security Handler",list("Confirm","Cancel"))
|
||||
if(choice=="Confirm")
|
||||
if(input_param==1) //If input_param == 1 we're submitting a new wanted issue. At 2 we're just editing an existing one. See the else below
|
||||
GLOB.news_network.submitWanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admin_signature, null, 1, 1)
|
||||
GLOB.news_network.submit_wanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admin_signature, null, 1, 1)
|
||||
src.admincaster_screen = 15
|
||||
else
|
||||
GLOB.news_network.submitWanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admin_signature)
|
||||
GLOB.news_network.submit_wanted(admincaster_wanted_message.criminal, admincaster_wanted_message.body, admin_signature)
|
||||
src.admincaster_screen = 19
|
||||
log_admin("[key_name(usr)] issued a Station-wide Wanted Notification for [src.admincaster_wanted_message.criminal]!")
|
||||
src.access_news_network()
|
||||
@@ -1421,35 +1421,35 @@
|
||||
return
|
||||
var/choice = tgui_alert(usr,"Please confirm Wanted Issue removal.","Network Security Handler",list("Confirm","Cancel"))
|
||||
if(choice=="Confirm")
|
||||
GLOB.news_network.deleteWanted()
|
||||
GLOB.news_network.delete_wanted()
|
||||
src.admincaster_screen=17
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_author"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_censor_channel_author"])
|
||||
FC.toggleCensorAuthor()
|
||||
var/datum/feed_channel/FC = locate(href_list["ac_censor_channel_author"])
|
||||
FC.toggle_censor_author()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_story_author"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"])
|
||||
MSG.toggleCensorAuthor()
|
||||
var/datum/feed_message/MSG = locate(href_list["ac_censor_channel_story_author"])
|
||||
MSG.toggle_censor_author()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_censor_channel_story_body"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"])
|
||||
MSG.toggleCensorBody()
|
||||
var/datum/feed_message/MSG = locate(href_list["ac_censor_channel_story_body"])
|
||||
MSG.toggle_censor_body()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_pick_d_notice"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_d_notice"])
|
||||
var/datum/feed_channel/FC = locate(href_list["ac_pick_d_notice"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen=13
|
||||
src.access_news_network()
|
||||
@@ -1457,8 +1457,8 @@
|
||||
else if(href_list["ac_toggle_d_notice"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_toggle_d_notice"])
|
||||
FC.toggleCensorDclass()
|
||||
var/datum/feed_channel/FC = locate(href_list["ac_toggle_d_notice"])
|
||||
FC.toggle_censor_D_class()
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_view"])
|
||||
@@ -1473,17 +1473,17 @@
|
||||
src.admincaster_screen = text2num(href_list["ac_setScreen"])
|
||||
if (src.admincaster_screen == 0)
|
||||
if(src.admincaster_feed_channel)
|
||||
src.admincaster_feed_channel = new /datum/newscaster/feed_channel
|
||||
src.admincaster_feed_channel = new /datum/feed_channel
|
||||
if(src.admincaster_feed_message)
|
||||
src.admincaster_feed_message = new /datum/newscaster/feed_message
|
||||
src.admincaster_feed_message = new /datum/feed_message
|
||||
if(admincaster_wanted_message)
|
||||
admincaster_wanted_message = new /datum/newscaster/wanted_message
|
||||
admincaster_wanted_message = new /datum/wanted_message
|
||||
src.access_news_network()
|
||||
|
||||
else if(href_list["ac_show_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_show_channel"])
|
||||
var/datum/feed_channel/FC = locate(href_list["ac_show_channel"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen = 9
|
||||
src.access_news_network()
|
||||
@@ -1491,7 +1491,7 @@
|
||||
else if(href_list["ac_pick_censor_channel"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_channel/FC = locate(href_list["ac_pick_censor_channel"])
|
||||
var/datum/feed_channel/FC = locate(href_list["ac_pick_censor_channel"])
|
||||
src.admincaster_feed_channel = FC
|
||||
src.admincaster_screen = 12
|
||||
src.access_news_network()
|
||||
@@ -1510,8 +1510,8 @@
|
||||
else if(href_list["ac_del_comment"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_comment/FC = locate(href_list["ac_del_comment"])
|
||||
var/datum/newscaster/feed_message/FM = locate(href_list["ac_del_comment_msg"])
|
||||
var/datum/feed_comment/FC = locate(href_list["ac_del_comment"])
|
||||
var/datum/feed_message/FM = locate(href_list["ac_del_comment_msg"])
|
||||
FM.comments -= FC
|
||||
qdel(FC)
|
||||
src.access_news_network()
|
||||
@@ -1519,7 +1519,7 @@
|
||||
else if(href_list["ac_lock_comment"])
|
||||
if(!check_rights(R_ADMIN))
|
||||
return
|
||||
var/datum/newscaster/feed_message/FM = locate(href_list["ac_lock_comment"])
|
||||
var/datum/feed_message/FM = locate(href_list["ac_lock_comment"])
|
||||
FM.locked ^= 1
|
||||
src.access_news_network()
|
||||
|
||||
|
||||
374
code/modules/admin/verbs/admin_newscaster.dm
Normal file
374
code/modules/admin/verbs/admin_newscaster.dm
Normal file
@@ -0,0 +1,374 @@
|
||||
/datum/admins/proc/access_news_network() //MARKER
|
||||
set category = "Admin.Events"
|
||||
set name = "Access Newscaster Network"
|
||||
set desc = "Allows you to view, add and edit news feeds."
|
||||
|
||||
if (!istype(src, /datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src, /datum/admins))
|
||||
to_chat(usr, "Error: you are not an admin!", confidential = TRUE)
|
||||
return
|
||||
|
||||
var/datum/newspanel/new_newspanel = new
|
||||
|
||||
new_newspanel.ui_interact(usr)
|
||||
|
||||
/datum/newspanel
|
||||
///What newscaster channel is currently being viewed by the player?
|
||||
var/datum/feed_channel/current_channel
|
||||
///What newscaster feed_message is currently having a comment written for it?
|
||||
var/datum/feed_message/current_message
|
||||
///The message that's currently being written for a feed story.
|
||||
var/feed_channel_message
|
||||
///The current image that will be submitted with the newscaster story.
|
||||
var/datum/picture/current_image
|
||||
///Is the current user creating a new channel at the moment?
|
||||
var/creating_channel = FALSE
|
||||
///Is the current user creating a new comment at the moment?
|
||||
var/creating_comment = FALSE
|
||||
///Is the current user editing or viewing a new wanted issue at the moment?
|
||||
var/viewing_wanted = FALSE
|
||||
///What is the user submitted, criminal name for the new wanted issue?
|
||||
var/criminal_name
|
||||
///What is the user submitted, crime description for the new wanted issue?
|
||||
var/crime_description
|
||||
///What is the current, in-creation channel's name going to be?
|
||||
var/channel_name
|
||||
///What is the current, in-creation channel's description going to be?
|
||||
var/channel_desc
|
||||
///What is the current, in-creation comment's body going to be?
|
||||
var/comment_text
|
||||
|
||||
/datum/newspanel/ui_state(mob/user)
|
||||
return GLOB.admin_state
|
||||
|
||||
/datum/newspanel/ui_interact(mob/user, datum/tgui/ui)
|
||||
ui = SStgui.try_update_ui(user, src, ui)
|
||||
if(!ui)
|
||||
ui = new(user, src, "Newscaster")
|
||||
ui.open()
|
||||
|
||||
/datum/newspanel/ui_static_data(mob/user)
|
||||
. = ..()
|
||||
if (!is_admin(user))
|
||||
to_chat(usr, "Error: you are not an admin!", confidential = TRUE)
|
||||
return
|
||||
|
||||
/datum/newspanel/ui_data(mob/user)
|
||||
. = list()
|
||||
var/list/data = list()
|
||||
var/list/channel_list = list()
|
||||
var/list/message_list = list()
|
||||
|
||||
data["user"] = list()
|
||||
data["user"]["name"] = "Centcom Official"
|
||||
data["user"]["job"] = "Official"
|
||||
data["user"]["department"] = "Department of News"
|
||||
|
||||
data["security_mode"] = TRUE
|
||||
data["photo_data"] = !isnull(current_image)
|
||||
data["creating_channel"] = creating_channel
|
||||
data["creating_comment"] = creating_comment
|
||||
|
||||
//Here is all the UI_data sent about the current wanted issue, as well as making a new one in the UI.
|
||||
data["viewing_wanted"] = viewing_wanted
|
||||
data["making_wanted_issue"] = !(GLOB.news_network.wanted_issue?.active)
|
||||
data["criminal_name"] = criminal_name
|
||||
data["crime_description"] = crime_description
|
||||
var/list/wanted_info = list()
|
||||
if(GLOB.news_network.wanted_issue)
|
||||
if(GLOB.news_network.wanted_issue.img)
|
||||
user << browse_rsc(GLOB.news_network.wanted_issue.img, "wanted_photo.png")
|
||||
wanted_info = list(list(
|
||||
"active" = GLOB.news_network.wanted_issue.active,
|
||||
"criminal" = GLOB.news_network.wanted_issue.criminal,
|
||||
"crime" = GLOB.news_network.wanted_issue.body,
|
||||
"author" = GLOB.news_network.wanted_issue.scanned_user,
|
||||
"image" = "wanted_photo.png"
|
||||
))
|
||||
|
||||
//Code breaking down the channels that have been made on-station thus far. ha
|
||||
//Then, breaks down the messages that have been made on those channels.
|
||||
for(var/datum/feed_channel/channel as anything in GLOB.news_network.network_channels)
|
||||
channel_list += list(list(
|
||||
"name" = channel.channel_name,
|
||||
"author" = channel.author,
|
||||
"censored" = channel.censored,
|
||||
"locked" = channel.locked,
|
||||
"ID" = channel.channel_ID,
|
||||
))
|
||||
if(current_channel)
|
||||
for(var/datum/feed_message/feed_message as anything in current_channel.messages)
|
||||
var/photo_ID = null
|
||||
var/list/comment_list
|
||||
if(feed_message.img)
|
||||
user << browse_rsc(feed_message.img, "tmp_photo[feed_message.message_ID].png")
|
||||
photo_ID = "tmp_photo[feed_message.message_ID].png"
|
||||
for(var/datum/feed_comment/comment_message as anything in feed_message.comments)
|
||||
comment_list += list(list(
|
||||
"auth" = comment_message.author,
|
||||
"body" = comment_message.body,
|
||||
"time" = comment_message.time_stamp,
|
||||
))
|
||||
message_list += list(list(
|
||||
"auth" = feed_message.author,
|
||||
"body" = feed_message.body,
|
||||
"time" = feed_message.time_stamp,
|
||||
"channel_num" = feed_message.parent_ID,
|
||||
"censored_message" = feed_message.body_censor,
|
||||
"censored_author" = feed_message.author_censor,
|
||||
"ID" = feed_message.message_ID,
|
||||
"photo" = photo_ID,
|
||||
"comments" = comment_list
|
||||
))
|
||||
|
||||
|
||||
data["viewing_channel"] = current_channel?.channel_ID
|
||||
//Here we display all the information about the current channel.
|
||||
data["channelName"] = current_channel?.channel_name
|
||||
data["channelAuthor"] = current_channel?.author
|
||||
|
||||
if(!current_channel)
|
||||
data["channelAuthor"] = "Nanotrasen Inc"
|
||||
data["channelDesc"] = "Welcome to Newscaster Net. Interface & News networks Operational."
|
||||
data["channelLocked"] = TRUE
|
||||
else
|
||||
data["channelDesc"] = current_channel.channel_desc
|
||||
data["channelLocked"] = current_channel.locked
|
||||
data["channelCensored"] = current_channel.censored
|
||||
|
||||
//We send all the information about all channels and all messages in existance.
|
||||
data["channels"] = channel_list
|
||||
data["messages"] = message_list
|
||||
data["wanted"] = wanted_info
|
||||
return data
|
||||
|
||||
/datum/newspanel/ui_act(action, params)
|
||||
. = ..()
|
||||
if(.)
|
||||
return
|
||||
|
||||
switch(action)
|
||||
if("setChannel")
|
||||
var/prototype_channel = params["channel"]
|
||||
if(isnull(prototype_channel))
|
||||
return TRUE
|
||||
for(var/datum/feed_channel/potential_channel as anything in GLOB.news_network.network_channels)
|
||||
if(prototype_channel == potential_channel.channel_ID)
|
||||
current_channel = potential_channel
|
||||
|
||||
if("createStory")
|
||||
if(!current_channel)
|
||||
to_chat(usr, "select a channel first!")
|
||||
return TRUE
|
||||
var/prototype_channel = params["current"]
|
||||
create_story(channel_name = prototype_channel)
|
||||
|
||||
if("togglePhoto")
|
||||
toggle_photo()
|
||||
return TRUE
|
||||
|
||||
if("startCreateChannel")
|
||||
start_creating_channel()
|
||||
return TRUE
|
||||
|
||||
if("setChannelName")
|
||||
var/pre_channel_name = params["channeltext"]
|
||||
if(!pre_channel_name)
|
||||
return TRUE
|
||||
channel_name = pre_channel_name
|
||||
|
||||
if("setChannelDesc")
|
||||
var/pre_channel_desc = params["channeldesc"]
|
||||
if(!pre_channel_desc)
|
||||
return TRUE
|
||||
channel_desc = pre_channel_desc
|
||||
|
||||
if("createChannel")
|
||||
var/locked = params["lockedmode"]
|
||||
create_channel(locked)
|
||||
return TRUE
|
||||
|
||||
if("cancelCreation")
|
||||
creating_channel = FALSE
|
||||
creating_comment = FALSE
|
||||
viewing_wanted = FALSE
|
||||
return TRUE
|
||||
|
||||
if("storyCensor")
|
||||
var/questionable_message = params["messageID"]
|
||||
for(var/datum/feed_message/iterated_feed_message as anything in current_channel.messages)
|
||||
if(iterated_feed_message.message_ID == questionable_message)
|
||||
iterated_feed_message.toggle_censor_body()
|
||||
break
|
||||
|
||||
if("author_censor")
|
||||
var/questionable_message = params["messageID"]
|
||||
for(var/datum/feed_message/iterated_feed_message in current_channel.messages)
|
||||
if(iterated_feed_message.message_ID == questionable_message)
|
||||
iterated_feed_message.toggle_censor_author()
|
||||
break
|
||||
|
||||
if("channelDNotice")
|
||||
var/prototype_channel = (params["channel"])
|
||||
for(var/datum/feed_channel/potential_channel in GLOB.news_network.network_channels)
|
||||
if(prototype_channel == potential_channel.channel_ID)
|
||||
current_channel = potential_channel
|
||||
break
|
||||
current_channel.toggle_censor_D_class()
|
||||
|
||||
if("startComment")
|
||||
creating_comment = TRUE
|
||||
var/commentable_message = params["messageID"]
|
||||
if(!commentable_message)
|
||||
return TRUE
|
||||
for(var/datum/feed_message/iterated_feed_message as anything in current_channel.messages)
|
||||
if(iterated_feed_message.message_ID == commentable_message)
|
||||
current_message = iterated_feed_message
|
||||
return TRUE
|
||||
|
||||
if("setCommentBody")
|
||||
var/pre_comment_text = params["commenttext"]
|
||||
if(!pre_comment_text)
|
||||
return TRUE
|
||||
comment_text = pre_comment_text
|
||||
return TRUE
|
||||
|
||||
if("createComment")
|
||||
create_comment()
|
||||
return TRUE
|
||||
|
||||
if("toggleWanted")
|
||||
viewing_wanted = TRUE
|
||||
return TRUE
|
||||
|
||||
if("setCriminalName")
|
||||
var/temp_name = tgui_input_text(usr, "Write the Criminal's Name", "Warrent Alert Handler", "John Doe", MAX_NAME_LEN, multiline = FALSE)
|
||||
if(!temp_name)
|
||||
return TRUE
|
||||
criminal_name = temp_name
|
||||
return TRUE
|
||||
|
||||
if("setCrimeData")
|
||||
var/temp_desc = tgui_input_text(usr, "Write the Criminal's Crimes", "Warrent Alert Handler", "Unknown", MAX_BROADCAST_LEN, multiline = TRUE)
|
||||
if(!temp_desc)
|
||||
return TRUE
|
||||
crime_description = temp_desc
|
||||
return TRUE
|
||||
|
||||
if("submitWantedIssue")
|
||||
if(!crime_description || !criminal_name)
|
||||
return TRUE
|
||||
GLOB.news_network.submit_wanted(criminal_name, crime_description, "Centcom Official", current_image, adminMsg = TRUE, newMessage = TRUE)
|
||||
current_image = null
|
||||
return TRUE
|
||||
|
||||
if("clearWantedIssue")
|
||||
clear_wanted_issue(user = usr)
|
||||
return TRUE
|
||||
|
||||
return TRUE
|
||||
|
||||
|
||||
/**
|
||||
* Sends photo data to build the newscaster article.
|
||||
*/
|
||||
/datum/newspanel/proc/send_photo_data()
|
||||
if(!current_image)
|
||||
return null
|
||||
return current_image
|
||||
|
||||
/**
|
||||
* This takes a held photograph, and updates the current_image variable with that of the held photograph's image.
|
||||
* *user: The mob who is being checked for a held photo object.
|
||||
*/
|
||||
/datum/newspanel/proc/attach_photo(mob/user)
|
||||
to_chat(user, "I didn't add this!")
|
||||
return
|
||||
|
||||
/**
|
||||
* Performs a series of sanity checks before giving the user confirmation to create a new feed_channel using channel_name, and channel_desc.
|
||||
* *channel_locked: This variable determines if other users than the author can make comments and new feed_stories on this channel.
|
||||
*/
|
||||
/datum/newspanel/proc/create_channel(channel_locked)
|
||||
if(!channel_name)
|
||||
return
|
||||
for(var/datum/feed_channel/iterated_feed_channel as anything in GLOB.news_network.network_channels)
|
||||
if(iterated_feed_channel.channel_name == channel_name)
|
||||
tgui_alert(usr, "ERROR: Feed channel with that name already exists on the Network.", list("Okay"))
|
||||
return TRUE
|
||||
if(!channel_desc)
|
||||
return TRUE
|
||||
if(isnull(channel_locked))
|
||||
return TRUE
|
||||
var/choice = tgui_alert(usr, "Please confirm feed channel creation","Network Channel Handler", list("Confirm","Cancel"))
|
||||
if(choice == "Confirm")
|
||||
GLOB.news_network.create_feed_channel(channel_name, "Centcom Offical", channel_desc, locked = channel_locked)
|
||||
SSblackbox.record_feedback("text", "newscaster_channels", 1, "[channel_name]")
|
||||
creating_channel = FALSE
|
||||
|
||||
/**
|
||||
* Constructs a comment to attach to the currently selected feed_message of choice, assuming that a user can be found and that a message body has been written.
|
||||
*/
|
||||
/datum/newspanel/proc/create_comment()
|
||||
if(!comment_text)
|
||||
creating_comment = FALSE
|
||||
return TRUE
|
||||
var/datum/feed_comment/new_feed_comment = new /datum/feed_comment
|
||||
new_feed_comment.author = "Centcom Offical"
|
||||
new_feed_comment.body = comment_text
|
||||
new_feed_comment.time_stamp = station_time_timestamp()
|
||||
current_message.comments += new_feed_comment
|
||||
usr.log_message("(as an admin) commented on message [current_message.return_body(-1)] -- [current_message.body]", LOG_COMMENT)
|
||||
creating_comment = FALSE
|
||||
|
||||
/**
|
||||
* This proc performs checks before enabling the creating_channel var on the newscaster, such as preventing a user from having multiple channels,
|
||||
* preventing an un-ID'd user from making a channel, and preventing censored authors from making a channel.
|
||||
* Otherwise, sets creating_channel to TRUE.
|
||||
*/
|
||||
/datum/newspanel/proc/start_creating_channel()
|
||||
//This first block checks for pre-existing reasons to prevent you from making a new channel, like being censored, or if you have a channel already.
|
||||
var/list/existing_authors = list()
|
||||
for(var/datum/feed_channel/iterated_feed_channel as anything in GLOB.news_network.network_channels)
|
||||
if(iterated_feed_channel.author_censor)
|
||||
existing_authors += GLOB.news_network.redacted_text
|
||||
else
|
||||
existing_authors += iterated_feed_channel.author
|
||||
creating_channel = TRUE
|
||||
|
||||
/**
|
||||
* Creates a new feed story to the global newscaster network.
|
||||
* Verifies that the message is being written to a real feed_channel, then provides a text input for the feed story to be written into.
|
||||
* Finally, it submits the message to the network, is logged globally, and clears all message-specific variables from the machine.
|
||||
*/
|
||||
/datum/newspanel/proc/create_story(channel_name)
|
||||
for(var/datum/feed_channel/potential_channel as anything in GLOB.news_network.network_channels)
|
||||
if(channel_name == potential_channel.channel_ID)
|
||||
current_channel = potential_channel
|
||||
break
|
||||
var/temp_message = tgui_input_text(usr, "Write your Feed story", "Network Channel Handler", feed_channel_message, multiline = TRUE)
|
||||
if(length(temp_message) <= 1)
|
||||
return TRUE
|
||||
if(temp_message)
|
||||
feed_channel_message = temp_message
|
||||
GLOB.news_network.submit_article("<font face=\"[PEN_FONT]\">[parsemarkdown(feed_channel_message, usr)]</font>", "Centcom Official", current_channel.channel_name, send_photo_data(), adminMessage = TRUE, allow_comments = TRUE)
|
||||
SSblackbox.record_feedback("amount", "newscaster_stories", 1)
|
||||
feed_channel_message = ""
|
||||
current_image = null
|
||||
|
||||
/**
|
||||
* Selects a currently held photo from the user's hand and makes it the current_image held by the newscaster.
|
||||
* If a photo is still held in the newscaster, it will otherwise clear it from the machine.
|
||||
*/
|
||||
/datum/newspanel/proc/toggle_photo()
|
||||
if(current_image)
|
||||
current_image = null
|
||||
return TRUE
|
||||
else
|
||||
attach_photo(usr)
|
||||
return TRUE
|
||||
|
||||
/datum/newspanel/proc/clear_wanted_issue(user)
|
||||
GLOB.news_network.wanted_issue.active = FALSE
|
||||
return
|
||||
@@ -260,213 +260,6 @@
|
||||
message_admins("[ADMIN_LOOKUPFLW(usr)] [N.timing ? "activated" : "deactivated"] a nuke at [ADMIN_VERBOSEJMP(N)].")
|
||||
SSblackbox.record_feedback("nested tally", "admin_toggle", 1, list("Toggle Nuke", "[N.timing]")) //If you are copy-pasting this, ensure the 2nd parameter is unique to the new proc!
|
||||
|
||||
/datum/admins/proc/access_news_network() //MARKER
|
||||
set category = "Admin.Events"
|
||||
set name = "Access Newscaster Network"
|
||||
set desc = "Allows you to view, add and edit news feeds."
|
||||
|
||||
if (!istype(src, /datum/admins))
|
||||
src = usr.client.holder
|
||||
if (!istype(src, /datum/admins))
|
||||
to_chat(usr, "Error: you are not an admin!", confidential = TRUE)
|
||||
return
|
||||
var/dat
|
||||
dat = text("<HEAD><TITLE>Admin Newscaster</TITLE></HEAD><H3>Admin Newscaster Unit</H3>")
|
||||
|
||||
switch(admincaster_screen)
|
||||
if(0)
|
||||
dat += "Welcome to the admin newscaster.<BR> Here you can add, edit and censor every newspiece on the network."
|
||||
dat += "<BR>Feed channels and stories entered through here will be uneditable and handled as official news by the rest of the units."
|
||||
dat += "<BR>Note that this panel allows full freedom over the news network, there are no constrictions except the few basic ones. Don't break things!</FONT>"
|
||||
if(GLOB.news_network.wanted_issue.active)
|
||||
dat+= "<HR><A href='?src=[REF(src)];[HrefToken()];ac_view_wanted=1'>Read Wanted Issue</A>"
|
||||
dat+= "<HR><BR><A href='?src=[REF(src)];[HrefToken()];ac_create_channel=1'>Create Feed Channel</A>"
|
||||
dat+= "<BR><A href='?src=[REF(src)];[HrefToken()];ac_view=1'>View Feed Channels</A>"
|
||||
dat+= "<BR><A href='?src=[REF(src)];[HrefToken()];ac_create_feed_story=1'>Submit new Feed story</A>"
|
||||
dat+= "<BR><BR><A href='?src=[REF(usr)];[HrefToken()];mach_close=newscaster_main'>Exit</A>"
|
||||
var/wanted_already = 0
|
||||
if(GLOB.news_network.wanted_issue.active)
|
||||
wanted_already = 1
|
||||
dat+="<HR><B>Feed Security functions:</B><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_menu_wanted=1'>[(wanted_already) ? ("Manage") : ("Publish")] \"Wanted\" Issue</A>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_menu_censor_story=1'>Censor Feed Stories</A>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_menu_censor_channel=1'>Mark Feed Channel with Nanotrasen D-Notice (disables and locks the channel).</A>"
|
||||
dat+="<BR><HR><A href='?src=[REF(src)];[HrefToken()];ac_set_signature=1'>The newscaster recognises you as:<BR> <FONT COLOR='green'>[src.admin_signature]</FONT></A>"
|
||||
if(1)
|
||||
dat+= "Station Feed Channels<HR>"
|
||||
if( !length(GLOB.news_network.network_channels) )
|
||||
dat+="<I>No active channels found...</I>"
|
||||
else
|
||||
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
|
||||
if(CHANNEL.is_admin_channel)
|
||||
dat+="<B><FONT style='BACKGROUND-COLOR: LightGreen'><A href='?src=[REF(src)];ac_show_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A></FONT></B><BR>"
|
||||
else
|
||||
dat+="<B><A href='?src=[REF(src)];[HrefToken()];ac_show_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ""]<BR></B>"
|
||||
dat+="<BR><HR><A href='?src=[REF(src)];[HrefToken()];ac_refresh=1'>Refresh</A>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Back</A>"
|
||||
if(2)
|
||||
dat+="Creating new Feed Channel..."
|
||||
dat+="<HR><B><A href='?src=[REF(src)];[HrefToken()];ac_set_channel_name=1'>Channel Name</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>"
|
||||
dat+="<B><A href='?src=[REF(src)];[HrefToken()];ac_set_signature=1'>Channel Author</A>:</B> <FONT COLOR='green'>[src.admin_signature]</FONT><BR>"
|
||||
dat+="<B><A href='?src=[REF(src)];[HrefToken()];ac_set_channel_lock=1'>Will Accept Public Feeds</A>:</B> [(src.admincaster_feed_channel.locked) ? ("NO") : ("YES")]<BR><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_submit_new_channel=1'>Submit</A><BR><BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Cancel</A><BR>"
|
||||
if(3)
|
||||
dat+="Creating new Feed Message..."
|
||||
dat+="<HR><B><A href='?src=[REF(src)];[HrefToken()];ac_set_channel_receiving=1'>Receiving Channel</A>:</B> [src.admincaster_feed_channel.channel_name]<BR>" //MARK
|
||||
dat+="<B>Message Author:</B> <FONT COLOR='green'>[src.admin_signature]</FONT><BR>"
|
||||
dat+="<B><A href='?src=[REF(src)];[HrefToken()];ac_set_new_message=1'>Message Body</A>:</B> [src.admincaster_feed_message.returnBody(-1)] <BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_submit_new_message=1'>Submit</A><BR><BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Cancel</A><BR>"
|
||||
if(4)
|
||||
dat+="Feed story successfully submitted to [src.admincaster_feed_channel.channel_name].<BR><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
if(5)
|
||||
dat+="Feed Channel [src.admincaster_feed_channel.channel_name] created successfully.<BR><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
if(6)
|
||||
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed story to Network.</B></FONT><HR><BR>"
|
||||
if(src.admincaster_feed_channel.channel_name=="")
|
||||
dat+="<FONT COLOR='maroon'>Invalid receiving channel name.</FONT><BR>"
|
||||
if(src.admincaster_feed_message.returnBody(-1) == "" || src.admincaster_feed_message.returnBody(-1) == "\[REDACTED\]")
|
||||
dat+="<FONT COLOR='maroon'>Invalid message body.</FONT><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[3]'>Return</A><BR>"
|
||||
if(7)
|
||||
dat+="<B><FONT COLOR='maroon'>ERROR: Could not submit Feed Channel to Network.</B></FONT><HR><BR>"
|
||||
if(src.admincaster_feed_channel.channel_name =="" || src.admincaster_feed_channel.channel_name == "\[REDACTED\]")
|
||||
dat+="<FONT COLOR='maroon'>Invalid channel name.</FONT><BR>"
|
||||
var/check = 0
|
||||
for(var/datum/newscaster/feed_channel/FC in GLOB.news_network.network_channels)
|
||||
if(FC.channel_name == src.admincaster_feed_channel.channel_name)
|
||||
check = 1
|
||||
break
|
||||
if(check)
|
||||
dat+="<FONT COLOR='maroon'>Channel name already in use.</FONT><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[2]'>Return</A><BR>"
|
||||
if(9)
|
||||
dat+="<B>[admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[created by: <FONT COLOR='maroon'>[admincaster_feed_channel.returnAuthor(-1)]</FONT>\]</FONT><HR>"
|
||||
if(src.admincaster_feed_channel.censored)
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.<BR>"
|
||||
dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>"
|
||||
else
|
||||
if( !length(src.admincaster_feed_channel.messages) )
|
||||
dat+="<I>No feed messages found in channel...</I><BR>"
|
||||
else
|
||||
var/i = 0
|
||||
for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
|
||||
i++
|
||||
dat+="-[MESSAGE.returnBody(-1)] <BR>"
|
||||
if(MESSAGE.img)
|
||||
usr << browse_rsc(MESSAGE.img, "tmp_photo[i].png")
|
||||
dat+="<img src='tmp_photo[i].png' width = '180'><BR><BR>"
|
||||
dat+="<FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>"
|
||||
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]:<br>"
|
||||
for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
|
||||
dat+="[comment.body]<br><font size=1>[comment.author] [comment.time_stamp]</font><br>"
|
||||
dat+="<br>"
|
||||
dat+="<BR><HR><A href='?src=[REF(src)];[HrefToken()];ac_refresh=1'>Refresh</A>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[1]'>Back</A>"
|
||||
if(10)
|
||||
dat+="<B>Nanotrasen Feed Censorship Tool</B><BR>"
|
||||
dat+="<FONT SIZE=1>NOTE: Due to the nature of news Feeds, total deletion of a Feed Story is not possible.<BR>"
|
||||
dat+="Keep in mind that users attempting to view a censored feed will instead see the \[REDACTED\] tag above it.</FONT>"
|
||||
dat+="<HR>Select Feed channel to get Stories from:<BR>"
|
||||
if(!length(GLOB.news_network.network_channels))
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
|
||||
dat+="<A href='?src=[REF(src)];[HrefToken()];ac_pick_censor_channel=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ""]<BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Cancel</A>"
|
||||
if(11)
|
||||
dat+="<B>Nanotrasen D-Notice Handler</B><HR>"
|
||||
dat+="<FONT SIZE=1>A D-Notice is to be bestowed upon the channel if the handling Authority deems it as harmful for the station's"
|
||||
dat+="morale, integrity or disciplinary behaviour. A D-Notice will render a channel unable to be updated by anyone, without deleting any feed"
|
||||
dat+="stories it might contain at the time. You can lift a D-Notice if you have the required access at any time.</FONT><HR>"
|
||||
if(!length(GLOB.news_network.network_channels))
|
||||
dat+="<I>No feed channels found active...</I><BR>"
|
||||
else
|
||||
for(var/datum/newscaster/feed_channel/CHANNEL in GLOB.news_network.network_channels)
|
||||
dat+="<A href='?src=[REF(src)];[HrefToken()];ac_pick_d_notice=[REF(CHANNEL)]'>[CHANNEL.channel_name]</A> [(CHANNEL.censored) ? ("<FONT COLOR='red'>***</FONT>") : ""]<BR>"
|
||||
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Back</A>"
|
||||
if(12)
|
||||
dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>"
|
||||
dat+="<FONT SIZE=2><A href='?src=[REF(src)];[HrefToken()];ac_censor_channel_author=[REF(src.admincaster_feed_channel)]'>[(src.admincaster_feed_channel.authorCensor) ? ("Undo Author censorship") : ("Censor channel Author")]</A></FONT><HR>"
|
||||
|
||||
if( !length(src.admincaster_feed_channel.messages) )
|
||||
dat+="<I>No feed messages found in channel...</I><BR>"
|
||||
else
|
||||
for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
|
||||
dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>"
|
||||
dat+="<FONT SIZE=2><A href='?src=[REF(src)];[HrefToken()];ac_censor_channel_story_body=[REF(MESSAGE)]'>[(MESSAGE.bodyCensor) ? ("Undo story censorship") : ("Censor story")]</A> - <A href='?src=[REF(src)];[HrefToken()];ac_censor_channel_story_author=[REF(MESSAGE)]'>[(MESSAGE.authorCensor) ? ("Undo Author Censorship") : ("Censor message Author")]</A></FONT><BR>"
|
||||
dat+="[MESSAGE.comments.len] comment[MESSAGE.comments.len > 1 ? "s" : ""]: <a href='?src=[REF(src)];[HrefToken()];ac_lock_comment=[REF(MESSAGE)]'>[MESSAGE.locked ? "Unlock" : "Lock"]</a><br>"
|
||||
for(var/datum/newscaster/feed_comment/comment in MESSAGE.comments)
|
||||
dat+="[comment.body] <a href='?src=[REF(src)];[HrefToken()];ac_del_comment=[REF(comment)];ac_del_comment_msg=[REF(MESSAGE)]'>X</a><br><font size=1>[comment.author] [comment.time_stamp]</font><br>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[10]'>Back</A>"
|
||||
if(13)
|
||||
dat+="<B>[src.admincaster_feed_channel.channel_name]: </B><FONT SIZE=1>\[ created by: <FONT COLOR='maroon'>[src.admincaster_feed_channel.returnAuthor(-1)]</FONT> \]</FONT><BR>"
|
||||
dat+="Channel messages listed below. If you deem them dangerous to the station, you can <A href='?src=[REF(src)];[HrefToken()];ac_toggle_d_notice=[REF(src.admincaster_feed_channel)]'>Bestow a D-Notice upon the channel</A>.<HR>"
|
||||
if(src.admincaster_feed_channel.censored)
|
||||
dat+="<FONT COLOR='red'><B>ATTENTION: </B></FONT>This channel has been deemed as threatening to the welfare of the station, and marked with a Nanotrasen D-Notice.<BR>"
|
||||
dat+="No further feed story additions are allowed while the D-Notice is in effect.</FONT><BR><BR>"
|
||||
else
|
||||
if( !length(src.admincaster_feed_channel.messages) )
|
||||
dat+="<I>No feed messages found in channel...</I><BR>"
|
||||
else
|
||||
for(var/datum/newscaster/feed_message/MESSAGE in src.admincaster_feed_channel.messages)
|
||||
dat+="-[MESSAGE.returnBody(-1)] <BR><FONT SIZE=1>\[Story by <FONT COLOR='maroon'>[MESSAGE.returnAuthor(-1)]</FONT>\]</FONT><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[11]'>Back</A>"
|
||||
if(14)
|
||||
dat+="<B>Wanted Issue Handler:</B>"
|
||||
var/wanted_already = 0
|
||||
var/end_param = 1
|
||||
if(GLOB.news_network.wanted_issue.active)
|
||||
wanted_already = 1
|
||||
end_param = 2
|
||||
if(wanted_already)
|
||||
dat+="<FONT SIZE=2><BR><I>A wanted issue is already in Feed Circulation. You can edit or cancel it below.</FONT></I>"
|
||||
dat+="<HR>"
|
||||
dat+="<A href='?src=[REF(src)];[HrefToken()];ac_set_wanted_name=1'>Criminal Name</A>: [src.admincaster_wanted_message.criminal] <BR>"
|
||||
dat+="<A href='?src=[REF(src)];[HrefToken()];ac_set_wanted_desc=1'>Description</A>: [src.admincaster_wanted_message.body] <BR>"
|
||||
if(wanted_already)
|
||||
dat+="<B>Wanted Issue created by:</B><FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT><BR>"
|
||||
else
|
||||
dat+="<B>Wanted Issue will be created under prosecutor:</B><FONT COLOR='green'>[src.admin_signature]</FONT><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_submit_wanted=[end_param]'>[(wanted_already) ? ("Edit Issue") : ("Submit")]</A>"
|
||||
if(wanted_already)
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_cancel_wanted=1'>Take down Issue</A>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Cancel</A>"
|
||||
if(15)
|
||||
dat+="<FONT COLOR='green'>Wanted issue for [src.admincaster_wanted_message.criminal] is now in Network Circulation.</FONT><BR><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
if(16)
|
||||
dat+="<B><FONT COLOR='maroon'>ERROR: Wanted Issue rejected by Network.</B></FONT><HR><BR>"
|
||||
if(src.admincaster_wanted_message.criminal =="" || src.admincaster_wanted_message.criminal == "\[REDACTED\]")
|
||||
dat+="<FONT COLOR='maroon'>Invalid name for person wanted.</FONT><BR>"
|
||||
if(src.admincaster_wanted_message.body == "" || src.admincaster_wanted_message.body == "\[REDACTED\]")
|
||||
dat+="<FONT COLOR='maroon'>Invalid description.</FONT><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
if(17)
|
||||
dat+="<B>Wanted Issue successfully deleted from Circulation</B><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
if(18)
|
||||
dat+="<B><FONT COLOR ='maroon'>-- STATIONWIDE WANTED ISSUE --</B></FONT><BR><FONT SIZE=2>\[Submitted by: <FONT COLOR='green'>[GLOB.news_network.wanted_issue.scannedUser]</FONT>\]</FONT><HR>"
|
||||
dat+="<B>Criminal</B>: [GLOB.news_network.wanted_issue.criminal]<BR>"
|
||||
dat+="<B>Description</B>: [GLOB.news_network.wanted_issue.body]<BR>"
|
||||
dat+="<B>Photo:</B>: "
|
||||
if(GLOB.news_network.wanted_issue.img)
|
||||
usr << browse_rsc(GLOB.news_network.wanted_issue.img, "tmp_photow.png")
|
||||
dat+="<BR><img src='tmp_photow.png' width = '180'>"
|
||||
else
|
||||
dat+="None"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Back</A><BR>"
|
||||
if(19)
|
||||
dat+="<FONT COLOR='green'>Wanted issue for [src.admincaster_wanted_message.criminal] successfully edited.</FONT><BR><BR>"
|
||||
dat+="<BR><A href='?src=[REF(src)];[HrefToken()];ac_setScreen=[0]'>Return</A><BR>"
|
||||
else
|
||||
dat+="I'm sorry to break your immersion. This shit's bugged. Report this bug to Agouri, polyxenitopalidou@gmail.com"
|
||||
|
||||
usr << browse(dat, "window=admincaster_main;size=400x600")
|
||||
onclose(usr, "admincaster_main")
|
||||
|
||||
/client/proc/admin_change_sec_level()
|
||||
set category = "Admin.Events"
|
||||
set name = "Set Security Level"
|
||||
|
||||
Reference in New Issue
Block a user