Differences from version 1 to 5



@@ -1,98 +1,122 @@

 ! History
-{MakeToc}
-I originally named this Plugin ))HideText(( - and then my sense of humor got a hold of both of us - and we took a trip to never-never land. What kind of people hide things in plain sight? Well - __Spy's Do__. And the idea gave itself a new name __))SpyText((__ while I fell off my chair laughing about it. If you don't see anything humorious in all of this - take a l look at the code - there's a Spy on nearly every line.
+{maketoc}
+Have you ever had a project that seemed to have a life of it’s own? I have and my latest was ))SpyText((. It not only gave itself it’s name but also demanded features that I never intended to include. Let me explain.
+I originally named the Plugin ))HideText(( on the ((ProposalPage-Plugins|Plugins Proposal Page)) but felt a better name for it would have been ))HideStuff(( - mainly because that's what it does. When I started working on it though - I asked myself - "__What kind of people hide things in plain sight?__" - and quickly answered "__A Spy Does!__" I didn't seem to have be a choice after that. My imagination (and warped sense of humor) took me and I found myself in the Madd Magazine's Land named ))Spy-Verses-Spy(( where I left Secret Messages everywhere. Alive or not - the decision was made. The name became ))SpyText(( and there was no turning back.
+While the idea behind ))SpyText(( was simple - I found that writing the code was far more difficult than I had imagined. I like Puns (especially Groaners) and when I started writing - they kept jumping on my desk and demanding to be included. Each time the code became a little more complex - but that wasn't the real killer. The real difficultly was that I couldn't reach the keyboard while sitting on the floor. Each Pun arrived in rapid succession and they had me laughing so hard I that I kept falling out of my chair.
+I've been told that simple minds are easily amused and I guess it's true. At any rate - there is a Spy hidden on nearly every line of SpyText's code.
+! Summary - So What Does It Do?
+All that ))SpyText(( does is Hide Stuff! The Default Visibility for every Message is - __Don't Show Nobody Nuttin__ and everything placed between it's 2 Code Blocks is hidden from everyone __Except__ the Spy(s) & Agency(ies) (Users & Groups) that you define.
+__Note:__ It's a Plot! A Conspiracy I say! Every Administrator is a Spy! They see every ))SpyText(( Message!
+All of this means that ))SpyText(( can be used as a way of controlling what each User will see on a page. As an example: Anonymous Users can be shown one thing while Registered Users can be shown something else entirely.
+__Note To Administrators:__ If you are using ))SpyText(( Messages in this manner - Make sure you test the visibility of the Messages in the Groups your including (or excluding). I know that this seems obvious - but I made this mistake while writing this page. I do most of my editing on my Testing Site before placing the finished pages on bitweaver.org. Everything looked great to on my Site where I was the Administrator. After adding it to bitweaver.org though - I discovered that __None__ of my Examples were visible. __Oh - Dahhhhh!__
+!- The Plugin's Help
+{PLUGINHELP plugin='spytext' }
+! A Note On Abusing ))SpyText((
+The __alert__ parameter is provided to give the ))Less-Than-Swift(( Spy a little assistance in finding their Messages. Alert Boxes can be very annoying when overused - so please limit their usage to once a page or once per Spy / Group.
 
-! Summary - So What does it Do?
-))SpyText(( Hides text (or anything else) so that only specific people (Spy(s)) or Groups (Agency(s)) can see them. It works the old fashioned way - by encasing the data between a pair of Code Blocks - Like This
-{SpyText}Data{SpyText}
-The data can extend as far as you like - and will be displayed in a div box
+Administrators are not quite that fortunate. Every time ))SpyText(( creates a Hidden Message - an Alert Box is added to give the Administrator notice that a page has Hidden ))SpyText(( Message on it. This may be a mistake and if so it will be changed in the future - but that is how it is right now. What that means is that the Administrator will have a lot of Alert Boxes to respond to when the page contains a lot of hidden messages. __This__ page as an example has 7 Alert Boxes - far too many.
 
-! Parameters - How Do I Call It?
-~np~{SPYTEXT spy= agency= sender= to= hidden= title= width= icon= alert= }~/np~
-* __spy__ A list of UserName's who will be able to see your hidden message
-* __agency__ A list of GroupsName's that will be able to see your hidden message
-* __sender__ A list of UserName's who claim responsibility for sending the message?
-* __to__ An Extra Box showing the spy/agency/sender
-* __hidden__ When Set / The Message is in a DropDown Box with only an Icon or Title Bar showing.
-* __title__ A replacement for the Default Title
-* __width__ Provides a little control over the appearance of the Title Bar
-* __icon__ Used as a replacement to the Title Bar
-* __alert__ Wake that dummy up with an Alert Box
+Now if you __Really__ want to play games with your Administrator - just dump a few hundred Hidden ))SpyText(( Messages on every page. __Yes__ - You can be the first one on your block to find out how long it takes to __Never Be Able To Login Again__.
 
-! Testing
-The following are the tests I used while creating this plugin
+__Note:__ This problem has been eliminated with the last update. Only one Alert Box will be generated per page.
+! __Examples:__
+All of the Examples on this page have __agency='Registered'__ specified so that only Users who are Logged In will be able to see the Messages. Anonymous User will not be able to see any of the Examples on this page. See for yourself - Log out and look at this page. The only ))SpyText(( Message that is visible - is Example 2 for Anonymous Users.
+!!- Example 1 - No Parameters Or Data
+^__-->~123~))SPYTEXT(( }~123~))SPYTEXT((}<--__^
+__-->{SPYTEXT }{/SPYTEXT}<--__ Without Data or Any Parameters ))SpyText(( will only display a single space. That space can be seen here between the Arrows.
+!!- Example 2 - Only Visible To Anonymous Users
+^__~123~))SPYTEXT(( spy='Guest' ~125~Why don't you Log In?
+You will be able to see the Examples on this page if you do.
+Oh - Please!~123~SPYTEXT}__^
+{SPYTEXT spy='Guest' } Why don't you Log In?
+You will be able to see the Examples on this page if you do.
+Oh - Please!{/SPYTEXT}The ))SpyText(( Message in this Example is only be visible to Anonymous Users. That Message (modified so that everyone can see it) was:
+{SPYTEXT agency='Anonymous' } Why don't you Log In?
+You will be able to see the Examples on this page if you do.
+Oh - Please!{/SPYTEXT}__HINT:__ You might want to look at the way bitweaver handles Groups. In essence - everyone who visits a bitweaver site belongs to at least one or more Groups. The Anonymous Group is the first and lowest level. If you were to specify __agency='Anonymous'__ as an example: __Everyone__ will be able to see your ))SpyText(( Message because __Everyone__ is in the Anonymous Group. The Registered Group is the next highest level so specifying __agency='Registered'__ will exclude only the Users that have not logged in as yet.
+!! A Note About The Following Examples
+In the following Examples we are going to play a buildup game with the Parameters. Each Example will have the same Parameters as the preceding Example except as noted.
+!!- Example 3 - Only Visible To Registered Users
+Since this is the first Example in our Buildup Game - the only Parameter it has is __agency='Registered'__
+^__~123~))SPYTEXT(( agency='Registered' }SpyText Message Data~123~SPYTEXT}__^
+{SPYTEXT agency='Registered' }SpyText Message Data{/SPYTEXT}
+!!- Example 4 - The Address Box
+This Example adds __to='TRUE'__
+^__~123~))SPYTEXT(( agency='Registered' to='TRUE' }SpyText Message Data~123~SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT agency='Registered' to='TRUE' }SpyText Message Data{/SPYTEXT}
+!!- Example 5 - The Spy Line Only Displays Valid Users
+This Example adds __spy='Spider|Xing|Confusus'__
+^__~123~))SPYTEXT(( spy='Spider|Xing|Confusus' agency='Registered' to='TRUE' }SpyText Message Data~123~SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT spy='Spider|Xing|Confusus' agency='Registered' to='TRUE' }SpyText Message Data{/SPYTEXT}__Note:__ Only valid Users are displayed in the Address Box and the User __Confusus Does Not Exist__.
+!!- Example 6 - The Agency Line Only Displays Valid Groups
+This Example adds the Group Aardvarks to the __agency__ Parameter = __agency='Aardvarks|Registered'__
+^__~123~))SPYTEXT(( spy='Spider|Xing|Confusus' agency='Aardvarks|Registered' to='TRUE' }SpyText Message Data~123~SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Registered' to='TRUE' }SpyText Message Data{/SPYTEXT}__Note:__ Only valid Groups are displayed in the Address Box and the Group __Aardvarks Does Not Exist__.
+!!- Example 7 - The Sender Line Only Displays Valid Users
+This Example adds __sender='StarRider|Wolffy|Aquarious'__
+^__~123~))SPYTEXT(( spy='Spider|Xing|Confusus' agency='Aardvarks|Registered' sender='StarRider|Wolffy|Aquarius' to='TRUE' }SpyText Message Data~123~SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Registered' sender='StarRider|Wolffy|Aquarius' to='TRUE' }SpyText Message Data{/SPYTEXT}__Note:__ Only valid Users are displayed in the Address Box and the User Aquarius Does Not Exist__.
+!! Examples 8 & 9 - Demonstrate Changing The Address Box Headers
+Each of these Examples use the Parameters __spy='Spider' agency='Registered' sender='StarRider'__ with only the __to__ Parameter being changed.
+In addition to specifying if the Address Box will be displayed (__to='TRUE'__) - the __to__ Parameter can change the Default Headers used in the Address Box. The Default Headers are: "__To the Spy:__" / "__To the Agency:__" / "__From Your Source:__"
+This is accomplished by providing replacement strings separated with the | Character.
+__Note 1:__ The Address Box is available at any time no matter what other parameters are supplied.
+__Note 2:__ For further information on the __to__ Parameter - see the Plugin's Help (above).
+!!!- Example 8 - Changing All Of The Headers
+The __to__ Parameter is __to='To:|To Groups:|From:'__
+^__~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='To:|To Groups:|From:' }SpyText Message Data~123~SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='To:|To Groups:|From:' }SpyText Message Data{/SPYTEXT}
+!!!- Example 9 - Changing A Single Header
+The __to__ Parameter is __to='*|*|The Sexiest Spy Ever:'__
+The * Character is used when you don't want to change a one or more of the Default Headers. In this case - only the Last Header __"From Your Source:"__ is changed.
+^__~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='*|*|The Sexiest Spy Ever:' }SpyText Message Data{/SPYTEXT}__^__Note:__ Click __Address__ to Expand the Address Box
+{SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='*|*|The Sexiest Spy Ever:' }SpyText Message Data{/SPYTEXT}
+!! Hidden Examples
+All of the Hidden Examples use the Parameters __spy='Spider' agency='Registered' sender='StarRider' to='TRUE'__
+))SpyText(( Messages can be hidden on a page. That is - the ))SpyText(( Message Data is placed in a Contracted Expandable Box that uses either the Title or an Icon as the link to Expand/Contract it.
+__Note:__ A Hidden Message cause an Alert Box to be generated for the Administrator even if the Alert Parameter has not set - so please see the Heading about Abusing ))SpyText((.
+!!- Example 10 - A Hidden Message
+Since this is our first Example - lets Add __hidden='TRUE'__
+^Text __~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' }SpyText Message Data~123~SPYTEXT}__ Text^
+Hidden Messages can take 3 different forms. The first is a Text Link that can be embedded in a paragraph like this one. Here is the Link {SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' }SpyText Message Data{/SPYTEXT} and some additional text to show what it looks like when expanded.
+!!- Example 11 - With A Title Bar
+This Example Add __titlebar='TRUE'__
+^Text __~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' titlebar='TRUE' }SpyText Message Data~123~SPYTEXT}__ Text^
+The second form that a Hidden Message can take is the Title Bar. As you can see - a Title Bar is something like a Horizontal Rule with the Link centered on it. {SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' titlebar='TRUE' }SpyText Message Data{/SPYTEXT} When placed inside a paragraph like this was - it always breaks that paragraph.
+!!- Example 12 - Changing the Title Bars Title & Width
+This Example Adds __title='Aardvarks Need Love Too'__ and __width='35' __
+^__~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' titlebar='TRUE' title='Aardvarks Need Love Too' width='35' }SpyText Message Data~123~SPYTEXT}__^
+A long Title can be too long to look good - even when it is wrapped. So the Parameter __width__ is used to make it more appealing. Here is the Link {SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' titlebar='TRUE' title='Aardvarks Need Love Too' width='35' }SpyText Message Data{/SPYTEXT} and some additional text to show what it looks like when expanded.
+!!- Example 13 - The Default Icon
+This Example returns to the parameters used in __Example 10__ and Adds __icon='TRUE'__
+^Text __~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='TRUE' }SpyText Message Data~123~SPYTEXT}__ Text^
+The third form that a Hidden Messages can take is by using Icons. The Icon can be embedded in a paragraph like this one is. {SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='TRUE' }SpyText Message Data{/SPYTEXT} With some additional text to show what it looks like when expanded.
+!!- Example 14 - The Default Icon In A Title Bar
+This Example Adds __ titlebar='TRUE'__
+^Text __~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='TRUE' titlebar='TRUE' }SpyText Message Data~123~SPYTEXT}__ Text^
+Or they can be placed in a Title Bar like this.{SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='TRUE' titlebar='TRUE' }SpyText Message Data{/SPYTEXT} With some additional text to show what it looks like when expanded.
+!!- Example 15 - Using Content Id Numbers
+This Example returns to the parameters used in __Example 10__ and Adds __icon='#24'__
+^Text __~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='#24' }SpyText Message Data~123~SPYTEXT}__ Text^
+Every Imaged stored by the Users (Not the Default Images used by bitweaver) in a Gallery or any Liberty Package has a Content Id Number. {SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='#24' }SpyText Message Data{/SPYTEXT} With some additional text to show what it looks like when expanded.
+__Note:__ The Plugin's Help contains a link so that you can easilly determin what the Content Id Number of an Image is.
+!!- Example 16 - Using A URL
+This Example returns to the parameters used in __Example 10__ and Adds __icon='http://www.bitweaver.org/liberty/icons/imagick_logo.jpg'__
+^__~123~))SPYTEXT(( spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='http://www.bitweaver.org/liberty/icons/imagick_logo.jpg' }SpyText Message Data~123~SPYTEXT}__^
+{SPYTEXT spy='Spider' agency='Registered' sender='StarRider' to='TRUE' hidden='TRUE' icon='http://www.bitweaver.org/liberty/icons/imagick_logo.jpg' }SpyText Message Data{/SPYTEXT}
+!!- Example 17 - Using Alerts
+The Parameters Common in this Example are: __agency='Registered'__ and __hidden='TRUE'__.
+An Icon stored in an Image Gallery is defined by __icon='#'__ and different Alert Messages.
+I used the 3 Hidden ))SPYTEXT(( Messages as a means of demonstrating that only a single Alert will be given Per User or Per Page - and it is __The Last Alert__ that they see.
+^Text __~123~))SPYTEXT(( agency='Registered' hidden='TRUE' icon='#34' alert='*UserName* - See Example 17 Message 1' }Message 1~123~SPYTEXT} Text__
+Text __~123~))SPYTEXT(( agency='Registered' hidden='TRUE' icon='#35' alert='*UserName* - See Example 17 Message 2' }Message 2~123~SPYTEXT} Text__
+Text __~123~))SPYTEXT(( agency='Registered' hidden='TRUE' icon='#36' alert='*UserName* - See Example 17 Message 3' }Message 3~123~SPYTEXT} Text__^
+__Please Note:__ The use of __*UserName*__ in these examples. When included in the __Alert Parameter__ (as shown) it will be replaced by the User's ))UserName((.
+{SPYTEXT agency='Registered' hidden='TRUE' icon='#34' alert='*UserName* - See Example 17 Message 1' }Message 1{/SPYTEXT} {SPYTEXT agency='Registered' hidden='TRUE' icon='#35' alert='*UserName* - See Example 17 Message 2' }Message 2{/SPYTEXT} {SPYTEXT agency='Registered' hidden='TRUE' icon='#36' alert='*UserName* - See Example 17 Message 3' }Message 3{/SPYTEXT}
+! Final Thoughts
+How to end this? For me - ))SpyText(( was one of those projects that make it all worth while. It started as something simple that grew and then just continued growing. At times it was a royal pain in the - Ahh-Hummmm! Most of that was my fault - nobody forced (or even asked) me to try to make everything that popped into my head work. I laughed my - Ahh-Hummmm! - off about it and thoroughly enjoyed myself.
+I hope that each of you will find a similar project.
 
-))SpyText(( / Without Data Nothing will be Displayed
-{SPYTEXT }{SPYTEXT}
-__NOTE__ The same thing applies if
-The current user is not on the list of users(spy)
-The current user is not in the list of the groups(agency)
-
-))SpyText(( / When No Parameters are set - only the data box is displayed
-{SPYTEXT }Data{SPYTEXT}
-
-By the way - this is kind of Cute - Try Looking at this page without being logged in
-None of the ))SpyText(( messages are visible to an Anonymous users
-
-That wouldn't be worth spit if it couldn't be reversed
-By adding Anonymous to the list of groups(agency) - Anonymous users can now see the message
-The problem is that EVERY Flipping User can also see it - and because of the way we do Groups
-I don't see an easy way around that
-))SpyText(( / With agency='Anonymous'
-{SPYTEXT agency='Anonymous' }Data{SPYTEXT}
-
-So Lets Play a Buildup Game - Each Call Adds to the Original
-
-))SpyText(( w/ to='TRUE'
-__Note__ The address box is not displayed because spy/agency/& sender are not defined - so there is nothing to put in it
-{SPYTEXT to='TRUE' }Data{SPYTEXT}
-
-))SpyText(( w/ spy='Spider|Xing|Confusus'
-__Note__ Confusus is not a user so he should not be displayed
-{SPYTEXT spy='Spider|Xing|Confusus' to='TRUE' }Data{SPYTEXT}
-
-))SpyText(( w/ agency='Aardvarks|Testing'
-__Note__ Aardvarks is not a Group so it should not be displayed
-{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Testing' to='TRUE' }Data{SPYTEXT}
-
-))SpyText(( w/ sender='StarRider|Wolffy|Aquarious'
-__Note__ Aquarious is not a user so he should not be displayed
-{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Testing' sender='StarRider|Wolffy|Aquarious' to='TRUE' }Data{SPYTEXT}
-
-Testing the parameter to / Was True / Replacing a single Header
-))SpyText(( w/ to='*|*|The Sexiest Spy Ever:'
-{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Testing' sender='StarRider|Wolffy' to='*|*|The Sexiest Spy Ever:' }Data{SPYTEXT}
-
-Testing the parameter to / Assigning all new Headers
-))SpyText(( w/ to='To:|Groups:|From:'
-{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Testing' sender='StarRider|Wolffy' to='To:|Groups:|From:' }Data{SPYTEXT}
-
-
-Testing the parameter to / Not Assigning Enough Headers
-))SpyText(( w/ to='To:'
-{SPYTEXT spy='Spider|Xing|Confusus' agency='Aardvarks|Testing' sender='StarRider|Wolffy' to='To:' }Data{SPYTEXT}
-
--=::OK - Lets Get Hidden::=-
-This Should display only the Title Bar - Everything else is collapsed
-))SpyText(( Parameter List = spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE'
-{SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' }Data{SPYTEXT}
-
-Added to=TRUE
-))SpyText(( Parameter List = spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE'
-{SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' }Data{SPYTEXT}
-
-Added title='Aardvarks' & width='25'
-))SpyText(( Parameter List = spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' title='Aardvarks' width='25'
-{SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' title='Aardvarks' width='25'}Data{SPYTEXT}
-
--=::OK - Lets Do Icons::=-
-Starting Over - Added icon=TRUE
-))SpyText(( Parameter List = spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' icon='TRUE'
-{SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' icon='TRUE' }Data{SPYTEXT}
-
-An Icon can still be placed in the middle {SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' icon='TRUE' }Data{SPYTEXT} of a line? Dosen't look too bad expanded either.
-
-Changed icon to a URL
-))SpyText(( Parameter List = spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' icon='http://www.bitweaver.org/liberty/icons/imagick_logo.jpg'
-{SPYTEXT spy='Spider|Xing' agency='Aardvarks|Testing' sender='StarRider|Wolffy' hidden='TRUE' to='TRUE' icon='http://www.bitweaver.org/liberty/icons/imagick_logo.jpg' }Data{SPYTEXT}
+StarRider (s-r on IRC)
+Lee L. Bell Jr.
 
Page History
Date/CommentUserIPVersion
11 Mar 2006 (16:53 UTC)
Lee LaMont Bell Jr.24.117.169.2415
Current • Source
Tarus Balog66.45.100.2233
View • Compare • Difference • Source
Lee LaMont Bell Jr.68.95.139.2162
View • Compare • Difference • Source
Lee LaMont Bell Jr.68.95.137.1231
View • Compare • Difference • Source