Author |
Topic |
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 26 March 2003 : 04:38:10
|
I'm still developing/testing my forum, working my way through the mods I need to install. I've just implemented OnewayMule's forum rules mod, and was populating the rules table when a thought struck me. What if the Boss doesn't like the forum name I've chosen? I'd have to go through all of the rules I had implemented, and change them to reflect the new name. Now, wouldn't it be nice if we had a (for example) [var]...[/var]code option in which we could insert one of the application variables? Then All of the rules could contain for example: [var]strForumTitle[/var] and the rules would reflect the current forum title if it were ever to be changed. I can see some use of this also in the post/reply functionality, isn't Snitz Forums 2000 itself likely to change it's name? It would be even nicer if the post/reply page contained a drop-down box listing all of the application variables?? I'd have a go at this myself if I had time, but though I'm a competent programmer (near 30 years), I'm still fairly new to ASP, and even newer to SQL!
..Alan |
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 26 March 2003 : 05:53:56
|
Well, despite my inexperience with SQL, I found that the actual code is fairly straightforward. The following snippet does the correct substitutions, now where should I put it? I suspect that early in the cleancode function in inc_func_posting.asp would be best, then anything in the substitution strings themselves that need further cleaning would be handled. Any comments?
<!--#INCLUDE FILE="config.asp" -->
<%
'# replace [var] ... [/var] code
Dim sSubject
sSubject = "[var]strForumTitle[/var] is copyright © [var]strCopyright[/var]"
set my_Conn = Server.CreateObject("ADODB.Connection")
my_Conn.Errors.Clear
Err.Clear
my_Conn.Open strConnString
strSql = "SELECT * FROM " & strTablePrefix & "CONFIG_NEW "
set rsConfig = my_Conn.Execute (strSql)
do while not rsConfig.EOF
sSubject = Replace(sSubject,"[var]" & TRIM(rsConfig("C_VARIABLE")) & "[/var]",Trim(rsConfig("C_VALUE")) ,1,-1,1)
rsConfig.MoveNext
loop
rsConfig.close
%>
.. Alan |
Edited by - ADSaunders on 26 March 2003 06:01:27 |
|
|
Hamlin
Advanced Member
United Kingdom
2386 Posts |
Posted - 26 March 2003 : 06:09:35
|
One comment
The contents of the FORUM_CONFIG_NEW table are loaded into application variables, and in config.asp they are placed in script level variables, that can be accessed anywhere in the forum code. So you do not need to open a recordset and load the values as they are already available.
It is an interesting idea though |
Edited by - Hamlin on 26 March 2003 06:10:15 |
|
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 26 March 2003 : 07:05:14
|
Thanks Hamlin, Ah.. But wouldn't I need a rake of
sSubject = replace(sSubject,"[var]strForumTitle[/var]", strForumTitle)
sSubject = replace(sSubject,"[var]strCopyright[/var]", strCopyright)
... etc
, and what about then having to amend it when new mods added new variables?? .. Alan |
|
|
Hamlin
Advanced Member
United Kingdom
2386 Posts |
Posted - 26 March 2003 : 07:21:56
|
Yes, and yes that would make it harder to modify, I see where your going now, you literally wanted all the variables.
Ok then I'll shut up now and let you get on with what you were doing
As for your original where to put it question I don't have access to the code right now, but the cleancode function, that deals with the other forum code and smiles would be the correct place I suppose. |
Edited by - Hamlin on 26 March 2003 07:22:52 |
|
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 26 March 2003 : 09:21:27
|
CleanCode doesn't seem to be the place for this, everything's reversed, the forum code shows up in the msg and the preview, the substituted code in the edit pane. Any more ideas?? how about the chkstring function. .. Alan |
|
|
pweighill
Junior Member
United Kingdom
453 Posts |
Posted - 26 March 2003 : 10:19:57
|
It might be better (from a performance point of view) to read all the data into an array and store in an application variable rather than query the database all the time. |
|
|
Gremlin
General Help Moderator
New Zealand
7528 Posts |
Posted - 26 March 2003 : 23:18:48
|
Untested, but something like this should work
<!--#INCLUDE FILE="config.asp" -->
<%
'# replace [var] ... [/var] code
Dim sSubject
sSubject = "[var]strForumTitle[/var] is copyright © [var]strCopyright[/var]"
For each Variable in Application.Contents
sSubject = Replace(sSubject,"[var]" & ChkString(Variable, "display") & "[/var]",chkString(CStr(Application.Contents(Variable)), "display") ,1,-1,1)
Next
%>
|
Kiwihosting.Net - The Forum Hosting Specialists
|
Edited by - Gremlin on 27 March 2003 05:53:16 |
|
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 27 March 2003 : 03:56:03
|
Hi Gremlin, I'd already worked out that they should all be in a collection aleady, I've been working on Application.Contents with some success, but yours looks like less code, I'll try it. Regards .. Alan |
|
|
Gremlin
General Help Moderator
New Zealand
7528 Posts |
Posted - 27 March 2003 : 05:51:25
|
Yeah youve just pointed out an error in my code there too, they're in App variable not Session
Change reference to Session.Contents to Application.Contents should do it. |
Kiwihosting.Net - The Forum Hosting Specialists
|
|
|
Gremlin
General Help Moderator
New Zealand
7528 Posts |
Posted - 27 March 2003 : 06:02:07
|
Decided to test it out myself
The following works ok for me, but note my forum is in the root directory of the website so the variables are all called /strxxx etc the code in red handles this by removing the leading "/". If you forum is say in /forum then you'll need to cater for that as well.
<!--#INCLUDE FILE="config.asp"-->
<!--#INCLUDE FILE="inc_header.asp" -->
<%
'# replace [var] ... [/var] code
Dim sSubject
sSubject = "[var]strForumTitle[/var] is copyright © [var]strCopyright[/var]"
For each Variable in Application.Contents
sSubject = Replace(sSubject,"[var]" & ChkString(Right(Variable,Len(Variable)-1), "display") & "[/var]",chkString(CStr(Application.Contents(Variable)), "display") ,1,-1,1)
Next
Response.Write sSubject
%>
|
Kiwihosting.Net - The Forum Hosting Specialists
|
|
|
ADSaunders
Starting Member
United Kingdom
22 Posts |
Posted - 27 March 2003 : 06:08:17
|
Well, Yur 'tis This is now working code. I have been doing some work on providing a drop-down selector A La font & color, but I can't see a use for most of them, just some of the strings in the early ones. If there's any interest, I'll post my code.
This change is pretty trivial to implement, just a single smallish block of code to be inserted into the FormatStr function in inc_func_common.asp:
Look for:
function FormatStr(fString)
on Error resume next
fString = Replace(fString, CHR(13), "")
'fString = Replace(fString, CHR(10) & CHR(10), "<br /><br />")
fString = Replace(fString, CHR(10), "<br />")
if strBadWordFilter = 1 or strBadWordFilter = "1" then
fString = ChkBadWords(fString)
end if
and insert:
'## replace [var] ... [/var] code
if strAllowForumCode = "1" then
if instr(fString, "[var]") > 0 then ' Don't bother if it's not there
dim varitem
for each varitem in Application.contents
if MID(varitem,1,len(strCookieurl)) = strCookieURL then ' Check it's one we created
fString = Replace(fString, "[var]" & TRIM(MID(varitem, len(strCookieURL)+1)) & "[/var]", TRIM(Application.contents varItem)) ,1,-1,1)
end if
next
end if
end if
'## END of replace [var] ... [/var] code
before the check for bad words. (This will stop anyone trying to insert [var]StrBadWords[/var].. well it won't stop them, but they'll be filtered.)
..Alan |
|
|
|
Topic |
|