From 342df3430218d5fd3be8ceca606330964b6f098b Mon Sep 17 00:00:00 2001 From: Jeffrey Armstrong Date: Mon, 29 Mar 2021 20:36:27 -0400 Subject: Added further player functions to db. Added contents for listing players via gemini. --- captain/external.f90 | 60 +++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 57 insertions(+), 3 deletions(-) (limited to 'captain/external.f90') diff --git a/captain/external.f90 b/captain/external.f90 index aa65e71..3ec018f 100644 --- a/captain/external.f90 +++ b/captain/external.f90 @@ -4,18 +4,58 @@ implicit none contains + function generate_players_gemini() result(res) + use captain_db + implicit none + + character(len=:), pointer::res + character(len=PLAYER_NAME_LENGTH), dimension(:), pointer::players + integer::n, i, nsize + + character(len=3*PLAYER_NAME_LENGTH)::one_player + + n = get_player_count() + if(n == 0) then + + allocate(character(len=1024) :: res) + + res = "None Yet" + + else + + res = "## Existing Players" + players => get_player_names() + + nsize = 1024 + do i = 1, size(players) + nsize = nsize + 16 + 2*len_trim(players(i)) + end do + + allocate(character(len=nsize) :: res) + do i = 1, n + one_player = "=> /players/"//trim(players(i))//".gmi "//trim(players(i)) + res = trim(res)//new_line(res(1:1))//trim(one_player) + end do + + deallocate(players) + end if + + res = trim(res)//new_line(res(1:1))//"## Management"// & + new_line(res(1:1))//"=> /players/add.gmi Add Player" + + end function generate_players_gemini + function external_request_gemini(request) result(disk_filename) use page_template - use config, only: template_filepath + use config, only: template_filepath, project use logging, only: write_log implicit none character(*), intent(in)::request character(len=:), pointer::disk_filename - integer::renderunit character(1024)::template_file type(template)::page - character(16)::log_tmp + character(len=:), pointer::contents ! Open the base template call template_filepath("index.gmi", template_file) @@ -37,6 +77,18 @@ contains else if(trim(request) == "/players.gmi") then call page%assign('title', 'Players') + contents => generate_players_gemini() + call page%assign('contents', contents) + + else if(request(1:9) == '/players/') then + + if(trim(request) == "/players/add.gmi") then + + ! Need input! + + else + + end if else if(trim(request) == "/about.gmi") then @@ -48,6 +100,8 @@ contains end if + call page%assign('project', project) + call page%render() disk_filename => page%output_filename -- cgit v1.2.3