Removed: [Financial:CurrencyConverter], [Financial:LiveRates], [Social:TweetButton] Tokens
Implemented <code data-language="razor">..</code> as a replacement for <code><razor></code> tags
Increased minimum requirements to .NET 4.0+
Increased minimum requirements to DNN 6+
Moved My Tokens from DesktopModules/avt.MyTokens to DesktopModules/DNNSharp/MyTokens
Implemented: [Portal:Guid] - Returns the portal Guid.
Implemented: [DateTime:Week] - Returns a week's first and last day.
Implemented: [DoMath:Eval(Expression)] - Returns the result of a mathematical expression. Can contain tokens.
Implemented: [Url:Query] - Returns the entire query string
Implemented: [Url:RewrittenQuery] - returns the entire query string as it appears on the server.
Performance optimizations.
Optimized initialization of token sources.
Implemented String Utils Tokens.
Optimezed Database Token by not having it run the same query twice for the same request if it fails.
Implemented the ability to compile Razor scripts per host.
Implemented the ability to support qoutes in default values for TknParams.
Updated usage for String Utils Tokens.
Added support for razor helpers.
Implemented the ability to set DataProviders as SqlDataProviders in code.
Implemented the ablility for SuperUsers to fallback to profile properties per portal.
Implemented the ability to get as return, in case of HTTP errors, the error string.
Implemented the ability to provide portalid for user and profile tokens.
Implemented new interface for tokenization.
Added Debug Message when MyTokens is not activated.
Fixed the bug with the datetime fields beeing saved as .NET objects in JSONs.
Fixed the bug with the TknParams not working in Database Tokens.
Fixed the bug with the Invalid user Tokens.
Fixed the bug with TokenizableContainer when replaceing header tokens.
Fixed the bug with the Razor Token not returning 0 for empty lists.
Fixed HTML module patch for DNN evoq.
Fixed the bug with the Portal settings not working properly inside tokens.
Fixed replacing tokens with 3 levels of recursion from HTML modules.
Fixed datetime access for relative operations.
Fixed the bug when after the Activation the return URL was not working.
Fixed tooltips.
Fixed tokens that have subitems like database tokens.
Fixed item keys.
Removed debug message "Query didn't return any data!"
Fixed the bug when the substring was applyied the start property beeing ignored.
Fixed minor bug with [Url:Query]
Fixed the bug where the razor token used in the where condition wasn't evaluated corectly.
Fixed the bug when empty parameter value used in [User:...] tokens returned the accessing user information.
Fixed the bug with SetCookie Token permitting dash characted in cookie name.
Fixed the bug with looping empty Database Tokens.
Fixed the bug with Token parser throwing exception when a custom token contains subtokens.
Fixed the bug with the broken GetLocalization call.
Fixed the bug with [DateTime:Now|mm dd, yyyy] not returning empty string.
Fixed fixed escaped backslash in connection string of database tokens.
Fixed the bug with String:RegexReplace Input containing parentheses not working.
Fixed the bug with razor token improperly displaying the HTML module with CKEditor provider.
Fixed the bug with View Profile module not displaying when Core Patch is enabled.
Fixed the bug with Session Tokens not working.


Azure compatibility
Run in medium trust
Implemented architecture to load tokens from config files
Added pass through authentication
Added methods to serialize objects to JSON
Implemented ability to pass more code value into the skin object token replacer
Support default value for profile tokens
Implemented new Tokenize skin object that only uses server side code (mainly because this also works with XMod)
Implemented debug mode for a list of IPs
Logging of template code for debugging purposes, with line numbers
Added button to clear logs
Ability to specify default value for TknParams in razor scripts
Ability to specify default values for TknParams
Ability to pass a dictionary when calling tokens from Razor in order to send the parameters - previously only a magic string was allowed
Added LogViewer.aspx to be able to view the log files in browser
Ability to specify connection string name as well in the Database tokens
Ability to invoke user tokens by knowing user email, ID or username
Ability to return the total number of matches from a xpath parser
Tokenize module header and footer in TokenizableContainer
Database tokens now support other database types specified in web.config connection strings
Ability to create non persistent cookies with SetCookie token
Added debug:printvars token
Added [Portal:CurrentLanguage] token
Added [User:IP] token
Added IF:Equals, If:DisplayIfNotEmpty tokens
Added String:Replace token
Added Profile:CountryCode and Profile:RegionCode tokens
Added [Tab:Title] token
Added UserRoles:ExpiryDate and UserRole:EffectiveDate tokens which accept a role id or role name as parameters
Added Guid:New and Guid:NewCompact tokens
Added HttpContextItems, Context, HttpContext synonyms
Added Url:PageName and Url:PageNameWithoutExtension tokens
Added DoMath token
Added Browser: tokens to expose browser capabilities
Added DoesNotHaveRole tokens
Added Tab:HasPerm and Tab:DoesNotHavePerm
Ability to display relative dates (for example [Date:Relative(Add="3 days")] or [Date:Relative(Add="-3 months")]
Fixed BaseDynamicObject and BaseDynamicObjectList to return default columns for database tokens
Fixed version number causing the Repair Install not to popup
Fixed module output token to grab current alias
Fixed caching per user and user session
Fixed DNN 7.3 compatibility, where the Replace Tokens setting of the HTML module doesn't stick
Fixed [Tab:*(tabid=...)] tokes
Fixed accessing tokens from outside of HttpContext (load the tokens default portal)
Fixed User:Ip token when user is not logged in
Fixed ModuleOutput token to show more descriptive error and switched to non URL provider dependent format
fixed database token to not replace the name of the connection string with the actual connection string on save;
Fixed HTTP tokens to post as form data, xml and json


added SetSession, SetCookie and SetProfile tokens
added AppSettings:* tokens
implemented new caching strategy: per user server session
implemented [User:Password] token and an option to turn this on/off from settings
added User:Avatar and User:AvatarUrl tokens
ability to iterated db tokens programatically from razor scripts
Allow underscore in token names and item keys
Allow dynamic parameters to be passed to Razor scripts, accessed through tknparams object
Fixed NavigateUrl tokens to work with DNN tab localization
Fixed [Profile:Photo] token for core patch (in profile view)
Fixed replacing subtokens in objects from scripts
Fixed writing logs to network locations and added check for write permissions
Fixed dnn 7 compatibility issue with security exception
Implemented new ExecToken2 interface that also receives a token replacer and the TknParams dictionary
Added Url:Relative token to return relative URL of current page
Fixed HasRole token when role name was a number interpreted as role ID
Log the generated source code when there are errors from compiling razor scripts


Implemented ModuleOutput token that returns the contents of any module (usage [ModuleOutput:123])
Added HasRole token that returns the format string only if current user has given role
Ability to invoke tokens from outside of HTTP Context (such as from scheduled tasks; note that not all tokesn will work now)
Added Base64Decode token
Ability to pass UserId or Username parameters into User or Profile tokens to get info about a different user than the current user
Added PortalSettings token to access all settings saved in PortalSettings table
Ability to specify a list of assemblies to reference in Razor scripts
Extended XSL parser so it can also transform JSON (by converting it to XML format first)
Added new token [TknParams:Cont] that returns the number of parameters received in a token definition
Added special parameter that will clear the cache for a token (pass clearCache=true)
Added option to specify a list of namespaces that My Tokens will not replace (so other components can do replacement later)
Extended database and contant tokens to take into account the body or query hash when determining cache
Heavily optimized database tokens and removed unnecessary sub-tokenization so they're ultra fast
fixed handling tokens with no namespace (old tokens from DNN such as [Lang])
added HttpContextItems token to provide access to HttpContext.Current.Item collection
increased minimum requirements to .Net3.5 and DNN 5.2


Added new [SiteAdmin:*] token source that shows info about administrator of current portal
Added new cache option, ability to cache tokens per role
Added support for MLHTML (Apollo Multilanguage HTML) module
Added support for the standard IFrame module
Added ability to choose the language when writing Razor templates (C# or VB.NET)
Added new special tokens: ProfileOrInit, CookieOrInit, ServerOrInit; these also initialize a value if it doesn't exist
Added Base64 token source that will encode any text given under token name to base64
Added ability to run under Medium Trust
Added SqlEncode token source that escpaes everything given under token name against SQL injection
Automatically encode tokens invoked from SQL Tokens against SQL Injection
Added JSON support to the XSLT Parser (the json is first converted to XML with json object at root)
Added option to enable logging at various levels: Errors, Info, Debug
Added ability to tokenize module title through the SkinObjectPageTokens skin object


DotNetNuke 6.0 Compatibility
Ability to cache tokens per Host, Portal or User
Implemened Import/Export Tokens function
Added [MD5:] token that returns hash for a text (tha can contain other tokens)
Added [DateTime:Unix] token that returns UNIX time
Always enable scripts in test tokens window (previously they also respected the Allow Inline Scripts options from Setup screen)
Pass token parameters to test window when clicking token name (these are extracted from usage of [TknParams:*] tokens inside the token definition)
Always install under admin with nice icon (removed the Install Under Admin button from the toolbar)
Fixed [Module:*] tokens not working with XSL parsers
Changed main control so it no longers shows the Install Under Admin options, instead shows message and link to My Tokens admin.


Integrated Razor template engine (separate build with Razor requires .Net 4.0 and minimum DNN 5.4)
Integrated Spark template engine (same as Razor but more HTML friendly)
Separate build for .NET 2.0 that works without Razor or Spark support
Added ability to create tokens that are Razor or Spark templates
Added option to enable inline templates (for example in HTML module put the template code between razor or spark tags)
Refactored Token Wizard to dialog
Added ability to move tokens/scripts between namespaces from token wizard screen
Replace left tabs (My Tokens, Core Tokens, Gadgets and 3rd Party) with a Tree that has 1 additional node called Scripts/Templates
Added quick search function at the top of the token tree in left pane
Refactored My Tokens Replacer to run own parsing and replacement (instead of relying on DNN base token replacer) resulting in a much faster token replacement
Created new Setup screen and moved all rarely used admin funcions there
Upgraded Token replacement integration functions to be safer in terms of multi-threading
Cleaned/Simplified My Tokens studio to be more simply to use
Removed New Namespace buttons, they're now created from Token Wizard by selected New Namespace... from the dropdown
Implemented 30 Day trial with full functionalities (and removed the random trial notifications)
Catch exceptions thrown by Test Token function and display nicely (previously the test function would keep spinning)
Upgraded HTTP Request data source so when it fiends a SOAP envelope it no longer handles new lines as different parameters


Added ability to extract multiple columns for same database token
Added ability to clone tokens
Added Undo Core Patch button on the toolbar
fixed getting API Keys for child portals
Fixed invalid tokens in user emails when core was patched (pass Scope and Accessing User parameters from standard replaced to My Tokens replacer)
Changed tokens so they're sorted alphabetically in the namespace listing


Option to patch DotNetNuke core for full My Tokens support
Added Execute Type token (link avt.MyTokens.Core, implement avt.MyTokens.Core.Sources.IExecutableToken and pass the type when creating the token)
Upgraded jQuery and jQuery UI to latest version 1.5.1, respectively 1.8.11
Refactored namespace add/edit form to appear in dialog
Changed appearance to use jQuery UI redmond theme and applied other minor UI adjustments
Added XSL parser for FTP data source


Added support to specify HTTP Headers for tokens built from http requests (makes it compatible with rest based web services)
Added XSLT parser that converts to input to XML then transforms it using the specified template
Added Test without Parser function to easily compare raw input with processed output
Added new logic called servers; refactored FTP tokens to use FTP servers (and removed the sync feature)
Fixed access denied issues for portal administrators on portals other than the default (they appear when doing ajax based operations such as clear cache or test token)


GADGET Framework - My Tokens provides machanism to special tokens that usually result in embedded controls such as Facebook Like button, YouTube videos, Tweet button, RSS Viewer, and much more.
New gadgets: [Financial:CurrencyConverter], [Financial:LiveRates], [Geo:GoogleMap], [Media:YouTube], [News:AjaxFeed], [News:NewsShow], [Social:AddThis], [Social:Disqus], [Social:FbLike], [Social:LinkedInProfileButton], [Social:TweetButton].
Added possibility to send parameters in custom tokens, so invoking [My:Token(MyParam="Some Value")] will make a new token [TknParams:MyParam] that you can use inside token definition.
Skin Object for tokenizing Page Title, Meta description and keywords.
Add possiblity to view token results as HTML when testing in My Tokens Studio.
New predefined token source URL that returns information about current URL (tokens [URL:Domain], [URL:DomainRoot], [URL:Port], [URL:FullUrl]).
New predefined token source NavigateURL - return URL based on current DNN URL Provider; there are 2 variants: [NavigateURL:TabId] and [NavigateURL:/Path/to/Tab].


Six new predefined sources: GetOrSession, GetOrCookie, GetOrProfile, PostOrSession, PostOrCookie, PostOrProfile. These new token sources have the particularity they check for a value in Get or Post, if it exists they also save it in Session/Cookies/User Profile, otherwise if it doesn't exist they also check Session/Cookies/User Profile in case it was previously saved there. Useful to hold page information after user has left the page.
New predefined token source, [UserRoles:All] - returns comma delimited roles for current user.
Fixed issue with patching standard List module.


Added new Predefined Token [Random:Val1,Val2,...,ValN] - randomly returns one of the values, each value can contain other tokens.
Default values for tokens - in Token Wizard specify default value that will be returned when there is no data; the default value can contain other tokens.
Override default values at invoke time; syntax is [MyNamespace:MyToken = Default Value] (default value can also contain other tokens)


External API - allows invoking tokens from external sources (other websites, desktop apps, mobile apps, etc)
File System Token Source - Allows tokens to be extracted from local files (paths can be specified absolute or relative to website root)
FTP Token Source - MyTokens connects to FTP Server to grab files and extract tokens.
Mail Server Token Source (experimental) - MyTokens can connect to Mail Servers using POP3 or IMAP and retrieve emails (subject, body, to, from, attachments)


Nested Predefined Tokens - It's now possible to nest token calls, for example [Profile:[MyNamespace:WhichProfileProperty]].
Decode Html option in all parsers.
Integration mechanism for 3rd party developers to export tokens that can be used by any MyTokens enabled module (see integration notes)
Updated MyTokens Replacer call to include definition of current module (see overloaded ReplaceTokensAll member
Implicit integration with some Dnn Standard Modules (Html, Announcements, Links, Documents, Reoports, User Defined Table, Form and List). MyTokens will automatically patch these modules to integrate with MyTokens.


Token Replacement in DNN Skins - My Tokens comes with a Skin Object that can be included in any skin file to call token replacement.
Added Namespaces as logical containers for tokens.
Token logic divided in two: Token Sources (where data comes from) and Token Parsers (how data should be processed).
Supported Token Sources: Constant String, Database Query, HTTP Request.
Supported Token Parsers: No Parsing, Strip xml/html tags, XML Parser (using XPath), JSON Parser (using XPath, JSON is transformed to XML), RegExp parser (matches regular expressions).
Ability for parser to recursively apply token replacemenet (i.e. Token Sources can return tokens which Parser can replace).
UI Tweaks - MyTokens is faster than ever, all iframes inherited from version 1.2 have been replaced with AJAX. Interface has been reorganized based on user feedback.
Better Javascript Control - After upgrades, javascript errors appeared because browsers didn't download the new javascript files. Starting in 1.5, javascripts contain a dynamic parameter based on version.


Awesome New UI - An AJAX driven IDE environment that allows to easily manage tokens by providing all tools in one place (token managemnt, token information, testing tool, etc)
Added ServerVars predefined token source - binds Request.ServerVariables collection
XmlTokens have been adjusted to skip xml namespaces when runnig xpath queries against it
XmlTokens have been extended to allow access to matched node attributes, all direct child nodes even if they have the same name (access is made using indexing) and to attributes of child nodes
Token Cache! This will significantly improve performance; howerver, be careful when using it, it your token uses other token that are conextual (such as userid or tabid) there will be unexpected results as it be cached for first access
Added support for automatically replacing {databaseOwner} and {objectQualifier} strings inside DbQuery and DbSProc token sources
Upgraded Registration Engine to RegCore4 (Portal License is no longer supported)


implementedIPortable(so now it's possible to import/export tokens)
added more licensing options (Domain License, Full Domain License, Portal License and Server License).
assembled online documentation (can be found at http://docs.avatar-soft.ro/doku.php?id=mytkn:start)
updated underlaying javascript components for greater compatibilities
added dropdown button that holds all the options (Settings, Activate) including a MyTokens menu with quick links to product pages, forums, documentation
added possibility to open dialogs in a new browser window for greater compatibility


added Stored Procedure source
implemented debug messages that are shown when in Edit Mode.


first version

If you're an existing My Tokens user, you need to go to My Account > My Downloads to get the latest build!