Before you can upload your pk4 you have to write an addon.conf first, which is needed to run the map ingame. This file has been implemented since Q4 version 1.1 and replaces the old def file. Create a new textfile, call it addon.conf and edit it.
I think in general the lines above are pretty self-explanatory.
"mapDef" is the command to let the engine find the map.
"name" describes the name in the selection menu.
"loading_message" is the "subtitle" of the map which will be shown during the loading process under the mapname.
"loadimage" leads to the loading image (Raven Software always used 512x512 for the resolution; don't know if it's necessary) and "mp_thumb" to the image in the menu (256x256).
You can leave those zeros from "DM" until "Gametype_Deadzone". "0" means "not for this gametype" and "1" describes "for this gametype". It also filters after this criteria.
So if you have a run only map, write "1" after "Run" and after "Gametype_Run". If you have a map which should also be a freestyle map, then overwrite the "0" at "Freestyle" and "Gametype_Freestyle" with a "1".
If you have problems with the different CTF types you can find a description in the "About" section on our website.
Replace the authors name with yours and save the file.
Only one last thing: Always be sure that you haven't deleted any of the quotation marks accidentally and that you've written between them.
Last step before Quake 4 and Quake 4 Run accept the map: You have to create a pk4 file.
You'll need two folders in any case. "gfx" and "maps". Go into the gfx folder and create a new one called "guis". In there, create two new folders called "loadscreens" and "mainmenu". Put your levelshot, which must have the name of your map, into the "loadscreens" directory and the menu picture (which has to be named like that: thumb_nameofyourmap) into the "mainmenu" folder.
Go back and create a folder, named "mp", in "maps". Here you'll have to store your cm, map and proc file. Place the addon.conf in the root directory. Pack the files, remove the ".zip" at the end and write ".pk4" instead. Now your map should work in Q4Run!