Author |
Topic |
Etymon
Advanced Member
United States
2385 Posts |
Posted - 01 November 2004 : 11:32:50
|
quote: Originally posted by Davio
Ok, for those of you who offered to help me out with the mod, this one's for you.
I want to display only 150 characters of a message. Anything after that is cut off and replaced with an elipses ...
Needs to be in vbscript. And if possible (not a must, but would be good) to not cut off the message in the middle of a word. But cut it off at the nearest space.
Thanks guys.
Hi Davio,
Take a look at http://forum.snitz.com/forum/topic.asp?ARCHIVE=true&TOPIC_ID=26734&SearchTerms=rsNewStuff, and look for RichardKinsers remarks about rsNewStuff. That's his code for ... - I use it often, and it works fine.
Look for:
TopicSubject = TopicSubject & Trim(Left(ChkString(rsNewStuff("T_SUBJECT"),"display"),16)) & "...."
You can change the T_SUBJECT to fit your field and the 16 to 150 to fit your length.
Etymon
|
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
Posted - 01 November 2004 : 16:02:29
|
Thanks Etymon and Stimmy. Will try out the code. |
Support Snitz Forums
|
|
|
Carefree
Advanced Member
Philippines
4207 Posts |
Posted - 07 November 2004 : 12:11:59
|
I found the second mod which works together with the one above. If you want to take a look at the code, get it here:
Threaded Mod |
|
|
cripto9t
Average Member
USA
881 Posts |
Posted - 11 November 2004 : 10:55:20
|
Davio, I just checked your site for progress and you haven't updated it in a while. So you may have solved this by now Gremlin posted a function to strip html to help limit characters for the "simple Slash Mod". I don't know what the final version looked like you might want to give it a look. I've been using it to help limit characters on a personal weblog that I made from a snitz forum. It works fine but I've never put it through any real serious testing
Here's the function (Add the tags you want to remove to "TAGLIST")
Function RemoveHTML( strText )
Dim TAGLIST
TAGLIST=";A;a;B;b;font;IMG;img;CENTER;center;PRE;pre;BR;br;"
Dim nPos1
Dim nPos2
Dim nPos3
Dim strResult
Dim strTagName
Dim bRemove
Dim bSearchForBlock
nPos1 = InStr(strText, "<")
Do While nPos1 > 0
nPos2 = InStr(nPos1 + 1, strText, ">")
If nPos2 > 0 Then
strTagName = Mid(strText, nPos1 + 1, nPos2 - nPos1 - 1)
strTagName = Replace(Replace(strTagName, vbCr, " "), vbLf, " ")
nPos3 = InStr(strTagName, " ")
If nPos3 > 0 Then
strTagName = Left(strTagName, nPos3 - 1)
End If
If Left(strTagName, 1) = "/" Then
strTagName = Mid(strTagName, 2)
bSearchForBlock = False
Else
bSearchForBlock = True
End If
If InStr(1, TAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
bRemove = True
If bSearchForBlock Then
If InStr(1, BLOCKTAGLIST, ";" & strTagName & ";", vbTextCompare) > 0 Then
nPos2 = Len(strText)
nPos3 = InStr(nPos1 + 1, strText, "</" & strTagName, vbTextCompare)
If nPos3 > 0 Then
nPos3 = InStr(nPos3 + 1, strText, ">")
End If
If nPos3 > 0 Then
nPos2 = nPos3
End If
End If
End If
Else
bRemove = False
End If
If bRemove Then
strResult = strResult & Left(strText, nPos1 - 1)
strText = Mid(strText, nPos2 + 1)
Else
strResult = strResult & Left(strText, nPos1)
strText = Mid(strText, nPos1 + 1)
End If
Else
strResult = strResult & strText
strText = ""
End If
nPos1 = InStr(strText, "<")
Loop
strResult = strResult & strText
RemoveHTML = strResult
End Function
I use it like this
dim sChar, tChar, hChar, dChar, aChar
sChar = 100 ' number of characters to show
tChar = Len(formatStr(ChkString(rs("T_MESSAGE"),"sqlString"))) 'number of characters in message
hChar = Len(RemoveHtml(formatStr(ChkString(rs("T_MESSAGE"),"sqlString")))) 'number of characters with out html tags
dChar = tChar - hChar 'adjust factor
aChar = sChar + dChar 'adjusted character count And then...
Response.Write formatStr(Left(rs("T_MESSAGE"),aChar)) & " ...."
Also like I said in an earlier post, I've been working on a mod for this and I believe it's working pretty good. It looks similar to Davios. I'm not going to release it as a mod because Davios will probably be alot nicer (my coding abilities are very limited ) and I had never seen something like this, so I wasn't sure how it should work. It's a stand alone mod (1 file and a link) and if anybody wants to look at it, I will email just ask.
|
_-/Cripto9t\-_ |
Edited by - cripto9t on 11 November 2004 10:56:40 |
|
|
cripto9t
Average Member
USA
881 Posts |
Posted - 11 November 2004 : 11:01:15
|
quote: Originally posted by Carefree
I found the second mod which works together with the one above. If you want to take a look at the code, get it here:
Threaded Mod
Thanks Carefree . I've seen this mod by Babygate asked for a few times but never found a working link. I'm going to try this out. |
_-/Cripto9t\-_ |
|
|
Da_Stimulator
DEV Team Forum Moderator
USA
3373 Posts |
Posted - 11 November 2004 : 11:59:12
|
This topic is a perfect example of a topic that needs to be split.... |
-Stim |
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
Posted - 11 November 2004 : 16:37:35
|
I'll keep that function in mind cripto, in case Da_Stim function doesn't work out for me.
I only get to work on it on weekends. But the mod is going fine. As I mentioned at my site, the visual part is done. Just need to finish up on the coding. |
Support Snitz Forums
|
|
|
Da_Stimulator
DEV Team Forum Moderator
USA
3373 Posts |
Posted - 11 November 2004 : 18:31:51
|
Davio, updated that function to include HTML support....
Function left150(fString)
if ((InStr(fString, "<")>0) and (InStr(fString, ">")>0) and len(fString)>150) Then
Dim strTemp, strTempcnt, strBrk1, strBrk2, strRemoved,tagCount
strTemp = fString
strTempcnt = 0
strRemoved = 0
tagCount = 0
Do While (InStr(1, strTemp, "<")>0) And (InStr(1, strTemp, ">")>0)
strBrk1 = InStr(1, strTemp, "<")
strBrk2 = InStr(1, strTemp, ">")-strBrk1
tagCount = tagCount + 1
strRemoved = strRemoved + Len(Mid(strTemp, strBrk1, strBrk2))
strTemp = Left(strTemp, Instr(1, strTemp, "<")-1) & Right(strTemp, Len(strTemp)-Instr(1,strTemp, ">"))
strTempcnt = Len(strTemp)
if (InStr(Left(strTemp, 150), "<")<1) And (InStr(Left(StrTemp,150),">")<1) then
Exit Do
end if
Loop
if ((strTempcnt > 150) and (strRemoved > 0)) then
LastChars = Right(Left(strTemp, (140+Cint(Instr(Mid(strTemp,140,15)," ")))-1),5)
left150 = Left(fString, InStr(fString, LastChars)+4) & "..."
elseif (strTempcnt > 150) and (strRemoved < 1) then
left150 = Left(fString, (140+Cint(Instr(Mid(fString,140,15)," ")))-1) & "..."
else
left150 = fString
end if
elseif len(fString)>150 then
left150 = Left(fString, (140+Cint(Instr(Mid(fString,140,15)," ")))-1) & "..."
else
left150 = fString
end if
End Function
|
-Stim |
Edited by - Da_Stimulator on 14 November 2004 21:53:17 |
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
Posted - 11 November 2004 : 18:35:00
|
Cool stuff Stim. Will let you know if it works. |
Support Snitz Forums
|
|
|
aspwiz
Junior Member
250 Posts |
Posted - 13 November 2004 : 05:04:37
|
Hey davio....
Any chance I can get the code for this so far so i can convert it to speedball II ? |
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
Posted - 13 November 2004 : 08:16:08
|
Everyone will get it when it's done aspwiz. |
Support Snitz Forums
|
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
Posted - 14 November 2004 : 19:54:20
|
Hey Stim, tried your function, but not extensively. One thing I notice is, the ellipses ... is added to the post, even when it is less than 150 characters. The ellipses should only be added when the post has been cut short. But if it is the full post, then no ellipses. |
Support Snitz Forums
|
|
|
Da_Stimulator
DEV Team Forum Moderator
USA
3373 Posts |
Posted - 14 November 2004 : 21:54:10
|
Updated it davio, give her a try now :) |
-Stim |
|
|
Davio
Development Team Member
Jamaica
12217 Posts |
|
Da_Stimulator
DEV Team Forum Moderator
USA
3373 Posts |
Posted - 15 November 2004 : 01:14:17
|
I get first dibs when ur done :P |
-Stim |
|
|
Topic |
|
|
|