From ce036a72ca597a9dd3b19fb1f9871c01376a5361 Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Mon, 24 May 2021 12:21:49 -0400 Subject: Added links on jobs pages to the instructions and player that were running the job. --- captain/requtils.f90 | 129 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 129 insertions(+) (limited to 'captain/requtils.f90') diff --git a/captain/requtils.f90 b/captain/requtils.f90 index a6097d2..df365ff 100644 --- a/captain/requtils.f90 +++ b/captain/requtils.f90 @@ -23,6 +23,16 @@ module request_utils implicit none + interface player_link + module procedure player_link_from_name + module procedure player_link_from_id + end interface + + interface instruction_link + module procedure instruction_link_from_name + module procedure instruction_link_from_id + end interface + contains pure function success_code(req) @@ -232,6 +242,125 @@ contains end function build_link + function element_link_from_name(n, category, gemini_mode, prefix) result(res) + implicit none + + character(*), intent(in)::n, category + logical, intent(in)::gemini_mode + character(*), intent(in), optional::prefix + character(len=:), pointer::res + + character(256)::dest + + if(present(prefix)) then + dest = prefix + if(dest(len_trim(dest):len_trim(dest)) /= '/') then + dest = trim(dest)//"/" + end if + else + dest = "/" + end if + + dest = trim(dest)//trim(category)//"/"//trim(n) + + if(gemini_mode) then + dest = trim(dest)//".gmi" + else + dest = trim(dest)//".html" + end if + + res => build_link(trim(dest), trim(n), gemini_mode) + + end function element_link_from_name + + function player_link_from_name(n, gemini_mode, prefix) result(res) + implicit none + + character(*), intent(in)::n + logical, intent(in)::gemini_mode + character(*), intent(in), optional::prefix + + character(64)::internal_prefix + character(len=:), pointer::res + + if(present(prefix)) then + internal_prefix = prefix + else + internal_prefix = "/" + end if + + res => element_link_from_name(n, "players", gemini_mode, internal_prefix) + + end function player_link_from_name + + function player_link_from_id(id, gemini_mode, prefix) result(res) + use captain_db, only: PLAYER_NAME_LENGTH, get_player_name + implicit none + + integer, intent(in)::id + logical, intent(in)::gemini_mode + character(*), intent(in), optional::prefix + character(len=:), pointer::res + + character(64)::internal_prefix + character(PLAYER_NAME_LENGTH)::name + + if(present(prefix)) then + internal_prefix = prefix + else + internal_prefix = "/" + end if + + name = " " + call get_player_name(id, name) + res => player_link_from_name(name, gemini_mode, internal_prefix) + + end function player_link_from_id + + function instruction_link_from_name(n, gemini_mode, prefix) result(res) + implicit none + + character(*), intent(in)::n + logical, intent(in)::gemini_mode + character(*), intent(in), optional::prefix + + character(64)::internal_prefix + character(len=:), pointer::res + + if(present(prefix)) then + internal_prefix = prefix + else + internal_prefix = "/" + end if + + res => element_link_from_name(n, "instructions", gemini_mode, internal_prefix) + + end function instruction_link_from_name + + function instruction_link_from_id(id, gemini_mode, prefix) result(res) + use captain_db, only: PLAYER_NAME_LENGTH, get_instruction_name + implicit none + + integer, intent(in)::id + logical, intent(in)::gemini_mode + character(*), intent(in), optional::prefix + character(len=:), pointer::res + + character(64)::internal_prefix + character(PLAYER_NAME_LENGTH)::name + + if(present(prefix)) then + internal_prefix = prefix + else + internal_prefix = "/" + end if + + name = " " + call get_instruction_name(id, name) + res => instruction_link_from_name(name, gemini_mode, internal_prefix) + + end function instruction_link_from_id + function generate_simple_pager(startindex, stopindex, step, maxcount, page, gemini_mode) result(res) use logging implicit none -- cgit v1.2.3