The quick and simple way to get that effect is by enabling moderation, and set the forum you want to do this in to "First Post Moderated" - that way if people didn't read, and post a topic no one will see it and the moderator can delete it and let them know that isn't allowed.
Alternately, you could modify the code - but its a lot more work.
The route you take will depend a lot on how many forums you want to do this in and how comfortable you are digging around in the code.
I imagine it woudn't be that hard. Whatever code or file contains the permissions for the Normal users, Moderators and administrators need to be edited right???
You would need to modify the code that checks said permissions where it checks those permissions. How complex that is goes back to the "depends on how many forums you want to do that in" part of my post.
More often than not I usually go the first way as its generally for one or two forums, the members are generally aware that they aren't supposed to post there, and the site has enough moderators to keep it clean.
I have not tested this but in post.asp about line 287-4:
case "Topic" if (strNoCookies = 1) or (strDBNTUserName = "") then Msg = Msg & "<b>Note:</b> You must be registered in order to post a Topic.<br />" if strProhibitNewMembers <> "1" then Msg = Msg & "To register, <a href=""register.asp"">click here</a>. Registration is FREE!<br />" end if end if case "Category"
I think if under the red you added this it would work.
if (mLev = 4) or (chkForumModerator(strRqForumId, strDBNTUserName) = "1") then '## Do Nothing else Go_Result "Only moderators and administrators can create topics" end if
This will leave the link in topic.asp so I'll most likely work on that next.
Anon brought up a good point I assumed that was what you wanted to do but just keep that in mind. In regards to the link it is in forum.asp and topic.asp. I have tried this one so in forum.asp line 698 change if Forum_Status <> 0 then to if Forum_Status <> 0 and ((mLev = 4) or ((chkForumModerator(Forum_ID, strDBNTUserName) = "1"))) then in topic.asp line 878 change if ((Cat_Status = 1) and (Forum_Status = 1)) then to if ((Cat_Status = 1) and (Forum_Status = 1)) and ((mLev = 4) or ((chkForumModerator(Forum_ID, strDBNTUserName) = "1"))) then and that's it for the links. And I also tested the code in the previous post so it all works.
Thank you guys very much. Looks like it worked. I did a breif test and it appears normal users can see the forum as LOCKED. But they can post in topics started by the admin or mod. We had a little request from the main users of this form so that only post to topics can be made but topics can't be created by users. I'm going to try to talk them out of this. Because in my personal opinion it's not how a forum should work....
What you want is called the Posting Restrictions MOD. The options are set on a forum by forum basis. I think it does away with being able to post while logged out though. I don't know if one has been updated for 3.4.xx or not. You might want to ask around.