BoltWire

BoltWire 4

Below you will find the entire release history for the 4.xx series. Click here for info on how to transition from BoltWire 3 to 4.

boltwire4.24.zip May 21, 2015
Though this release includes several cool new features, a patch, and a fix--it is primarily designed to prepare your site for the transition to 5.xx. Be sure to install this version, then read this page for full instructions on how to transition to version 5.

  • Have long thought about adding the ability to use basic text tools from php, and finally decided to do it. In particular: length, substring, case, position, and trim. So can do <text substring=1,2>text</text> to get 'ex'. Can also mix and match, so <text substring=1,2 case=caps>text</text> to get 'EX'. Case can also be set to lower, first, or words. With length, <text length>Hello World</text> outputs 11. To trim, use <text trim> text </text> to get rid of the outside spaces. Use <text trim=t right>text</text> to get 'tex'. <text position=x>text</text> returns 3 (no 0 position), while setting position to z would return 0 (ie, false).
  • Fixed the random info extension (see the quotes plugin). Didn't realize it wasn't working before.
  • Added crypt=true to the list of parameters an input field can take to encrypt the value using the site cryptkey. Makes it easier to do password checking without having to use a separate plugin.
  • Fixed a small security patch in the exists conditional.
  • Changed the uploadTypes config variable to uploadImgTypes and uploadFileTypes. The defaults have not changed but if you have something custom in your site.config file you will need to update to these two new variables. They now work more systematically throughout the BoltWire system.
  • Fixed a bug in the data indexing mode when a data field has a null value.
  • Slight change in how the stopwatch feature is displayed (moving it into the body of the html page).
  • Updated the code to use both "when" and "if" in list and search functions. Also changed the deprecate flag to only trigger when "if" is used. This allows you to fix all the deprecated functions in your site without affecting site activity. Just examine each page listed on site.deprecate.if2when, change the if= to when= in your list or search functions, and then delete the page from the list after it is fixed. When the page remains clear and no longer triggers any functions, you should be safe to upgrade to 5.xx. In 5.xx the if parameter will apply to the function as a whole (as in all other functions), and the when parameter will be required for iterating through matches.
  • I changed the BOLTsearchResultsIfCount to BOLTsearchResultsWhenCount. If you are using that in a plugin or config file you will need to fix your code.
  • Similarly, I changed the deprecate flag in the inlist function to only trigger when find and list parameters are not set--so you can fix these conditionals before upgrading. After the upgrade all conditionals will go haystack > needle. So [if inlist 1 1,2] will change to [if inlist 1,2 1]. But since [if inlist find=1 list=1,2] works in both 4.24 and 5 you can fix these in advance and the transition to 5.xx should not cause any problems. Once again use the site.deprecate.inlist page to track down all instances of the deprecated markup and delete them one by one as they are fixed. Note the find parameter was introduced (replacing item) in this version. Item still works but will also be deprecated in 5.xx.
  • If you are using the BOLTCinlist function in a plugin or config you will need to update that function as well. Note the "inlist" utility function remains unchanged with the parameter order remaining item, list.
  • To fix pages in site.deprecate.insource, change markup like [if insource string='...' find='...'] to [if inline line='...' find='...'] and mark off the deprecate page. The string parameter will be removed when we move to 5.xx and the new inline conditional required instead.
  • When searching for deprecated markup in the specified pages, remember that they can show up in other places beside the page itself--such as an included page or a search template. Some can be a bit tricky to find. Also if the item or list has the potential of being a null value you should use quote marks (ie: item='') to avoid triggering the deprecate flag. If you can get to the point there are no more triggers, there's a good chance the upgrade will go smoothly. Also, if you don't have one of these site deprecate pages, then you have nothing to worry about with 5.xx. It is probably because you don't use any of the code being deprecated. That is--assuming you haven't turned the deprecate feature off in site.config. :)

boltwire4.23.zip May 4, 2015
  • Added an optional, very simple, SORT parameter to the infoPoke function. But it does the trick! Can also add to the info function when saving a value.
  • Added an inline condition--essentially strpos in php. I will deprecate the text parameter in the insource condition which is just a cludgy workaround.
  • Fixed the info function so can use its list handling in info parts. IE <(info field=... part=1 value= Bob)> adds Bob to the CSV list in part 1 of the info value. Very cool.
  • Removed the embed, savedata, getlines, and if_number deprecate flags from the core. Those changes are nearly 10 versions old and any needed changes should be part of your site by now. To double check, go to site.deprecate.embed and check to make sure all the pages listed there are working. Then you can delete the page. Repeat for the other three pages.
  • The inlist deprecate flag is still active--so when we make the change in that conditional you can have all the information you need to update your site. Don't delete that page! I've also added an insource deprecate flag to eliminate the string parameter there in favor of the new, separate inline conditional. I'll give instructions about what to do with those two site.deprecate pages soon.
  • Loved Tiffany's suggestion to use "when" instead of "if" when iterating through search/list functions--so added a deprecate flag to catch pages where this will need to be changed when we switch to 5.xx. For now, do nothing and give BoltWire a chance to catch pages that will need to be updated.
  • A few changes to boost performance a bit by reworking caching on info vars and adding caching to skinsettings.

boltwire4.22.zip February 15, 2015
  • Reworked the list info processor to add a few features. Set value=true to return values instead of fields. Duplicates are now deleted unless unique=false. Can change the join parameter from ',' to something else.
  • Fixed a bug in the cron indexing mode, and added config values for indexInclude and indexExclude.
  • Fixed bug in external links being forced to https when ssl on.
  • Added a "random" info processor which takes a page and an optional count parameter (defaults to 1). Takes random keys from your info page and runs them through the list function. Very cool...
  • Added archive and extract commands to tap into those system functions (which convert a page to an info var or vice versa). Page specifies where the archive is located, and the command value is the name of the page to be archived/extracted. I have found these functions extremely useful. Write auth is required for either step, but there are no overwrite protections--so use with care.
  • Can now use field=# with the info function to get the next available thread value (just like in page shortcuts)
  • Can put csv=true in a textarea input and line breaks are converted to commas automatically.
  • Dropped the specific color input in place of a more generic "input" input type. To get modern html5 forms, just go [input type=color...]. Much simpler.
  • A bit more bullet proofing on case insensitivity in lists.
  • Fixed a small bug when saving an info value with parts and the final part is a null value.
  • Templates/Fmts can now take { #3} to get info parts out of a search query.

boltwire4.21.zip December 16, 2014
  • Fixed a bug in the new infopeek function when retrieving the last info field in a data var.
  • Tweaked list function to use the loadcontent utility so can store lists in data vars. Loadcontent can now take a read auth value.
  • Fixed a bug with cleanURLS when there are dots in GET values.
  • Both templates and fmts can now take a page name (even with an anchor).
  • The infopoke utility now can properly delete a field
  • Added two useful utilities called BOLTpageArchive and BOLTpageExtract. Basically they take an entire page and convert it to an info entry (data and all), or restores it. No function or command hooks yet, mostly just useful tools for developers. But very cool...
  • Slight changes to some of the system messages to provide more useful information.
  • BoltWire now handles ' and " better when used in arguments.
  • A few minor improvements here and there including addition of SVG images to accepted upload types.
  • The homeMobile parameter now defaults to main, instead of mobile. Can be changed back in site.config.
  • Slight fix to type parameter in searches involving hyphens.
  • Slight improvement to if command involving nextpage.
  • Fixed some permission bugs with the new loadcontent and savecontent functions.

boltwire4.20.zip November 3, 2014
  • Small fix in auto login function involving the nextpage parameter.
  • Improved comment markup to avoid conflicts with bold/italics combination.
  • Added a hook for a custom myBOLTskinSettings.
  • Code zones (like style sheets) are now processed after page zones (rather than before) to allow for easier site customization.
  • Added a BOLTcssPrefix variable which can be used to modify skin settings on the fly.
  • Added an optional nextpage argument to the warn command to forward the form to a specified error page.
  • Improved reset command to get it to work with post values and passdata.
  • Revised the info function for faster performance, and added new BOLTinfoPeek and BOLTinfoPoke utilities for developers. All under the hood.
  • Added a mode=info parameter to savedata to allow you to save multiple fields as info instead of data.
  • The sum info processor can now take a part parameter to sum up one "column" of an info page.
  • Found a bug in the BOLTexecute function (which handles form processing) involving the nextpage command. Required a bit of a rewrite--but seems to be working now with no side effects...
  • Another very cool feature--can now add id, class, and style attributes to the messages markup.ie: [messages style='color:red']
  • Inpage conditional can now scan page data as well as page content by adding data=true as a parameter.
  • Fixed two related bugs in the indexing function when using cron mode.
  • Can now specify a different index pages by adding an index parameter to the index rule. Can also include variables in the index rule.

boltwire4.19.zip October 21, 2014
  • Removed zone parameter from markup functions (in functions.php). Use global $BOLTzone if need in plugins.
  • Now that have online docs, removed inline comments in some scripts to get download size back under 100k...
  • Added simpler loadcontent and savecontent functions to handle the new page:var content areas. Applied to more info extensions.
  • Fixed infovar function so can now do {page:var::field::part}
  • Fixed a bug in { value} in query sorting. Also can no longer do { value::1}. Just do { 1}
  • Slight bug in BOLTmakeJs function affecting plugins.
  • Fixed a recently introduced bug affecting indexing.
  • Improved pattern matching and indexing of tags to prevent false matches. Tags must now begin with a letter to block things like #1.

boltwire4.18.zip October 10, 2014
  • Tweaked logout function to prevent redirect loops.
  • Fixed bug in BOLTexists when using pageLibraries.
  • A couple fixes to form inputs and passdata command involving checkbox arrays.
  • Improved mail function to generate better output in demo mode.
  • Added a highlight function which takes a page parameter and returns all the sentences with parameter 1 in it, with that word highlighted. A possible candidate for the default search template.
  • Completely rewrote the function that handles sorting of searches. Should add significantly more capability.
  • Added special capabilities to the log, info and search function so can turn a data variable, essentially into a log or info page. Can log to a page:var, query a page:var, and process info vars all in a page:var. Somewhat experimental...
  • Can set data=true in all three index modes to index data along with page content, to include data values in index.
  • Added a string parameter to the insource conditional so can now do the equivalent of strpos. Also added a link to help when matching UTF page names.

boltwire4.17.zip October 3, 2014
  • Page lists in site.members and action.groups now exclude zone pages.
  • Better error handling when skin not found. Now returns message and reverts to default skin.
  • Fixed bug in inpage conditional.
  • Restored webhook for myBOLTMmemberVars function.
  • Added ' and " to utfescapes to solve a bug in certain form commands.
  • Fixed action.changes to work properly.
  • Search function now returns a message if no query or pagelist parameters are set.
  • Can now set a limit parameter to the breadcrumb function to control how many initial page parts are displayed, and a final parameter to customize how the omitted pages are represented.
  • Changed the pagelist function so can now search for groups like group=page. . to get all descendents with exactly three page parts. Thanks Tiffany!
  • Fixed a bug in the {+count} template replacement variable.
  • Fixed a bug in the lastmodified function.
  • Added a {language} system variable.
  • Made a change to the BOLTexecute function so that it now runs commands created by other commands (like if or reset).
  • Added a couple new features to the boltwire function and updated the site page in some cool ways. :)

boltwire4.16.zip September 29, 2014
This release includes a new start script which serves as an auto site creator. Those upgrading MUST lock this script down by going to boltwire/start.php as soon as they upgrade. New users should just follow the super easy install instructions.

  • Fixed bug in translation engine.
  • Changed tags markup order to avoid conflicts
  • Fixed a vertical spacing bug in boxes.
  • Added an escapeTitle option to site.config
  • A slight problem with the escape function fixed.

boltwire4.15.zip September 23, 2014
  • Minor fixes to if parameter in search/list functions
  • Readded checked as parameter to radio buttons. Somehow was deleted.
  • Added a direct call to farm.php (like config.php, but in shared/plugins).
  • Fixed a bug in the report engine introduced in the last release.
  • Added options to use the embed function to insert code into the header and/or the body tag.
  • Added a cols parameter to the report generator. :)
  • Little more polishing of register action.
  • Fixed bug in indexing function involving cron.

boltwire4.14.zip September 19, 2014
  • Added js=back. Equals history.back()
  • Login command now returns true on success
  • Added a safeData option to site.config to strip certain data vars. By default, site.config sets this to title, which is no longer escaped.
  • Oops, small bug in include function.
  • Fixed another small bug in the report generator.
  • Added a simple tags index function and rule for hashtags (#tag) that checks page content and page data, a tag action to retrieve pages with tags, and a markup to highlight tags. Pretty cool. Just start putting some tags on your pages and see what happens!
  • Looks like a bug in the new strip parameter. Fixed.

boltwire4.13.zip September 16, 2014
Here's another big release. No special problems that should affect your site, but a lot of tweaks, enhancements and bug fixes. This release pretty much finishes our code review. Our next big goal is getting ready for version 5.

  • Cool improvements to how output=html and output=source work. Output=false now runs the function and only suppresses the output--which is what was supposed to happen.
  • Counter function revised and simplified
  • Embed function now takes normal vars (ie { id} => {id}). Function parameters still take the { field} format as before.
  • Forward function no longer requires the url paramter. Just use http://... directly. Also nice loop protection and messaging.
  • Quite a bit of work on include function. Now baselinks=true evaluates links as if included page, type=side returns closest side to page parameter. Deleted header and footer capabilities (just include separately). Simplified how func looping is prevented. Got everything working for vars and anchors. Can use rules= to limit markup rules.
  • Simplified lastmodified function.
  • Some nice polishing of index action.
  • Created an indexing: cron mode for site.config. Basically, records edits on site.index.cron for later indexing. To index 5 of these have cron call a page with [(index cron=5)].
  • Now, all functions with a page parameter get pageshortcuts automatically.
  • Login and logout functions now automatically refresh current page on success. Or, use nextpage= (was next=). Also an optional renew= parameter for login function for better persistent logins.
  • Added a math command to go with the math function. Decimal places now defaults to 2 (reset by decimal=). Can also set an id to retrieve prev calcs.
  • Added an id to random so can retrieve previous values--eliminating need for {captcha} which I deleted.
  • Added a memberships command (to match the function) with the added parameters join=somegroup or drop=somegroup. Also create an action.groups page which can be used to create, view or delete groups, and/or update group memberships for members. Nice!
  • Improved forward function to use sessions rather than get vars.
  • Redirect can now better handle anchors and get vars together.
  • Added a translate command (similar to the function). Also, headers are now run through the translation engine.
  • Got the script function back up to speed again. Simplified the format to simple info variables (command: params). Added template variables to insert function params directly into the script. Can set return: some value in the script and that gets passed back to the page.
  • Fixed bug in source function so now works for POST values. Can also set default= if no value found. Works perfectly in form inputs now.
  • Improved preview function so now blocks some, but not all functions from operating. Updated system pages to use improved code.
  • Added some simple styling to the file and select input type in the default skin. Fixed small bug in input markup so options can now have a '' value.
  • Tweaked boxes to enhance vertical spacing including some css changes in default skin
  • Got all form inputs working properly. Some minor changes to filters to allow more html5 tags.
  • Reworked how javascript functions in links and form items. Now can add single line javascript commands as an info var in code.js and call by js=field. Can even put parameters in like js=field::var1::var2 and insert for { 1} and { 2}. I've setup js=print, clear, jump, skip, and alert. :)
  • Added a simple "boltwire" function to insert the license into BoltWire.
  • Search function can now take a none= parameter if no results found. If set, it overrides any none code for templates.
  • Setup a supercool new deprecate tool that automatically tracks pages that have deprecated or soon to be deprecated markups. To turn off, set deprecate: false in site.config. See site.deprecate for more information.
  • Fix required to fail inputs that do not submit a field like checkbox or radio. For file upload checks for file. Updated docs.
  • The rename action now stamps a page at the old location.
  • Add a data=true (or data=some.page) to the create command to copy the data of a page to your new page. This is useful in the copy command which I updated to include an option for copying data as well.
  • Now can retrieve data var parts just like info parts (use {page:field:part} and store as part1 | part2. Also, began preparing info function for data vars. Only a bit more to go.
  • use <br> in bullets now for extra spacing. Stripped out the = markup. Better vertical space mgmt.
  • Added a strip=true parameter to remove all kinds of markup from form input. Also added lines=true/false. True expands from \n, false compresses to \n. Removed from all commands. Now control in the input field for any command. Updated default forms to recommended defaults. Also made BOLTsecureFilter a separate function with a hook to customize this.
  • Just noticed the default search action is missing the query parameter. Added.

boltwire4.12.zip September 5, 2014
With this release I did a complete rewrite of most of our documentation, and at the same time did a thorough code review. That resulted in numerous improvements to the core code (as well as the documentation!). For ease of reading I've broken these improvements down to security, bugs, changes, and new features. One security issue was fairly significant. And the change in how savedata works could disrupt sites--you may wish to turn this change off using the suggested config option until you can fully test your forms. Most of the changes are trivial and should not disrupt sites. The bug fixes just make everything work like its supposed to. The new features are mostly minor enhancements--but there are a lot of them, and some are very cool. Enjoy this great new release!

Security
  • Significant bug was fixed that allowed people to see action pages they shouldn't.
  • Tightened the search function, making it impossible to search directories outside the local field with the (new) exception of the shared folder (set dir=shared or shared/img, etc).
  • A slight bug was fixed in the exists functions, and it now blocks checks outside the field folder
  • Changed savedata to require write permissions for added security. This means some forms will now require an authkey to continue working. To revert to the former behavior, add dataAuth: false to site.config. If turned off, you control by limiting access to the forms that save data.

Bugs
  • Fixed a small bug in the listpages function involving listing only system boltwire pages.
  • Fixed bug in size markup that caused extra slashes around double quotes
  • Fixed a bug in the count parameter for searches when doing a range like count=10-20
  • Changed site.config from indexing: active to the correct indexing: true.
  • Fixed several bugs in the stamp command, changed the defaults config values, and added a new stampsMin. See the tutorial for details.
  • Before, the if parameter was blocked in search and info functions/commands for use in templating. Is now set properly to search and list.

Changes
  • Changed the default edit function to turn off the \n replacement feature.
  • Slight tweak to translation engine.
  • The between condition has been simplified.
  • The inpage and insource conditional now requires case=false to make the check case insensitive. This is a change from previous behavior.
  • The number conditional no longer accepts the [if number forum.1000]. Change it to [if number {p2}] instead.
  • Pretty much rewrote the time conditional. Now it uses syntax like [if time before='time expression'] or [if time after='timestamp']. (Was to and from). If use both before and after, the time must fall within the specified range. You can also specify a time expression for the check value (new), though the current time is still the default.
  • The default sort value for the list function is now sort=false.
  • Changed the default encoding type for emails to UTF-8.
  • Slight change to the nextpage command to give more flexibility in manipulating this. Similar with passdata.
  • Changed the getlines function to accept values like lines=3-5 rather than lines=3..5. Affects both include and source.
  • Help files are no longer included in the download. Users are encouraged to use our online docs.

New
  • Added <del> to the allowed html tags, as <strike> is deprecated in HTML 5.
  • Added js=print to variables.php for creating print buttons.
  • I made a number of other tweaks to the fmt and template engines. Fmts for example can now insert function parameters into the fmt, and the fmt can be stored on action pages (like templates). And you can add \n to either fmts or templates as long as you don't set lines=false. I also added { first}, { last}, { matches}, { page}, { field}, { value}, and { value::1} or { #1} to report engine. The last four work now in conditionals too. {count_matches} was removed as a system variable.
  • The admin & editor conditions now can take an id parameter, or an id in position 1.
  • The stamp conditional now can check any specified page as well as the default current page.
  • The abort conditional is now also triggered when form submission fails due to a blank required field, or a field failing a filter. Also, now can match any abort, or a specific command/input field abort. And you can customize the abort message by msg= right in the input markup.
  • I added the if= parameter to input values. If it fails, the form aborts.
  • The fmt=csv parameter in an input field now runs the value through BOLTcsv to clean it up into a proper list.
  • I reimplemented the return variable. It works great if you use the full url.
  • Got tired of typing <box code>...<box>. Now can do <code>...</code>. Same with html and markup. The longer format still works the same.
  • Significant reworking of the messaging system to add major new capabilities. Now it finally does what I've wanted for a long time. See the tutorial. Can also escape the message markup (at last).
  • Did some serious polishing up of the stopwatch function.
  • Fixed vars processing so can now retrieve info vars from stamps just like data vars. Works in source function as well.
  • Now robots can now be blocked for specific pages, or groups of pages through site.config. Added robotBlock: index*,info*,log*,action*,code*,group*,template* as the default.
  • Added a default site.auth.upload page to make it possible for admins and editors to use the default upload action. Also added jpeg's to the list (had jpg only), and increased the default allowed size to 100000. The default values are still editable, but are hard-coded if not set in site.config. And jpg's can now be renamed to jpeg's and vice versa.

boltwire4.11.zip June 19, 2014
  • Some slight tweaks to how the uploads markup work. One big change: turned off file name filtering and recasing. To restore old behavior, set "uploadStrict: true" in site config and it will force all your uploaded files to conform to BoltWire page names.
  • By default can now do [^"some file.pdf"^] or [^link="some file.pdf"^] (can still include label= and other allowed params)
  • Now can also do link:somefile.pdf (comparable to img:somefile.jpg, but for pdf's), and added jpeg to the img file types.
  • Another slight tweak to the data action display. Seems multi-line data vars weren't showing properly.
  • Several fixes to translation engine, including a hook for more customization. Language files need to be updated to replace redundant lines now that things are case-insensitive.
  • Added a print condition that tells if $BOLTskin is set to print. Nice for print customizations.
  • Slight modification in the missing page mark and its style sheet to prevent disruptions in vertical line spacing.
  • Fixed a significant security vulnerability in the upload function. All users are encouraged to upgrade.

boltwire4.10.zip May 13, 2014
  • The index command now works like the function command, where you can give it a page name or csv list of pages, or assign a specific rule name, or leave blank for general indexing.
  • Added (back?) an autoindex config option ('indexing') by default it is turned on.
  • Changed index function so it doesn't record pages with null index information.
  • Slight simplification to how the data action displays
  • Added a new sort parameter which allows you to sort by any you can generate from the page output. ie: sort=index.birthdays::{ value} will sort by birthdays, assuming the output is a list of member ids and you have their values indexed.
  • This release patches a potentially serious security vulnerability I accidentally discovered. Everyone is urged to upgrade. Contact me if you have questions.

boltwire4.09.zip April 17, 2014
  • Fixed a couple bugs in the info function.
  • Eliminated an error notification in certain situations in the displayfmt function.
  • Fixed a bug in some of the query data parameters (particularly < and > seemed to have been reversed.
  • Minor fix to delete action
  • Added a new folders parameter to search functions. folders=true just returns subdirectory names of the dir directory. folders=false only returns files in the specified dir, but none in nested subfolders. My site has tens of thousand files. This speeds up performance immeasurably.
  • Added two custom strftime parameters: On Mar 5, %e = '5' and %E = '3' with no preceding space or 0.
  • Put linkrot: true in site.config and broken links will be logged automatically whenever viewed. Nice way to keep your site updated.
  • Titles are now returned escaped so you can't put markups in the data variable. I had to go through my custom scripts and replace some BOLTvars("page:title") with BOLTescape(BOLTvars("page:title"), false); Solves a number of problems...

boltwire4.08.zip March 16, 2014
  • Fixed bug in zones action.
  • Did some more work on the search templating. I notice I now need sort=false if I don't want my list functions sorted...
  • Fixed a bug in the form markup and a few other places to improve cleanURL's
  • Fixed up the default skins to work with cleanURL's
  • Added a "ssl: true" config option to the links markup function to convert all links to https if desired.
  • Reworked the login and logout process (should be transparent) for easier custom scripts, and added login/logout functions for instant login/logout. I'm using with cookies to allow indefinite logins. Let me know if you are curious how I did it. I'm thinking mobile...
  • Fixed an authorization bug in the mail function
  • Fixed the info function to save/retrieve info from the proper part of an info index.

boltwire4.07.zip March 7, 2014
  • Changed <embed script> into a function, ie <(embed script)>, with the advantage we drop one markup rule. I also fixed so I can insert parameter like { arg1} into the script via the function call. Very useful. It should also recognize vars like { p} and { id} as well.
  • I also decided to drop the new form command as I can use the include function, with a small change to allow insertion of fields from the include parameters, ie: { field}.
  • Finally decided what to do with the stash command: drop it. :) Can do [(info field=id value='one | two')], or [(log 'field: one | two' page=)]. Hopefully this feature is new enough it won't affect too many people.
  • Did some tinkering on the translation system to improve performance. Ended up rewriting it and re-adding a translate function. Allows for the following (note the cases): [(translate yellow fr)] => jaune [(translate YELLOW language=fr)] => JAUNE [(translate Jaune language=fr reverse=true)] => Yellow. Still not promising languages are working fully on 4.xx. Haven't really tested. No doubt the language packs will need to be updated.
  • Did some hopefully transparent changes under the hood to improve performance of the search function, esp when if statements are used. Won't go into the details here, but let me know if you notice anything strange, as something may have been broken in the process.
  • Spent some time reworking the session system on the site, after discovering some session information was not being cleared properly. Finally got it working beautifully.
  • Discovered an easy way to allow multiple commands with the same name, ie: [command if ...][command if ...] rather than [command if_1 ...][command if_2 ...]. I just got BoltWire to rename duplicate commands for you, automatically. Note {=field} replacements will require you to use the correct name--which could give you a good headache. That is, [command source somevar][command source somevar2][command id {=source}] will bring in somevar. You will need to use {=source_1} to get in the second one, and {=source_2} to get a third if it existed. Still, it helps more than it confuses things! Won't affect site already using commands like if_1 or if_2.
  • Reworked the stopwatch feature. Set $BOLTstopWatch to true in index.php and you'll get a nice report showing how long the entire page takes to load, times for each zone. Helpful in tracking down drags on your site. (I need to document better how those times are calculated: beginning times for each zone are relative to the start, end times are time in each zone. Some functions have nested times, etc).
  • Finally got the auto indexing to work after the page is flushed from the server so there's no lag time.
  • Set the default to not show headers on action pages. To restore them, put actionHeaders: true in site.config.
  • Changed the BOLTargs function to allow parameter names with hyphens, and another small change. Let me know if you notice any side effects.
  • Slight tweak to how the default view action works, so can see the action in the url for enhance possibilities.
  • Significant number of small bug fixes here and there...

boltwire4.06.zip February 6, 2014
  • Been very busy fixing various bugs throughout the code. I haven't documented everything.
  • Quite a bit of work on the indexing system, and some changes to the query system as well. Need to update the docs when I have some time.
  • Changed slightly how forms are handled. Could affect custom scripts using the KEY, COMMAND, or INPUT form session values.
  • Fixed a padding problem on the tables in the default style sheet
  • Fixed a bug affecting sites with a field name that is an integer (ie: 2014).
  • Added an abort conditional so you can tell if a form command fails, ie [if abort register]...[if]
  • Added the ability to tap into command output values directly by [(source command=register)]
  • Completely reworked the register action to do a better job reporting results accurately.
  • Made time function a bit smarter so can now do [(time %x)] or [(time 1234567890)], or even [(time tomorrow)], and it knows what to do. If you try [(time tomorrow %x)] the time must still come before the fmt.

boltwire4.05.zip January 24, 2014
  • Re-added the math function. Have been wanting to do that, but had to wait until php5 (ie 4.xx) so could use try/catch to avoid script failure on bad input.
  • Also restored the math var which allows you to do { 1 1 }. Note the spaces before and after the expression.
  • Added a mode=stash parameter to the passdata function which stores your fields on a page as a data index, even taking care of line breaks. This allows you to retrieve the info as data parts. Line breaks can are also automatically restored when a data value is called.
  • Added first and last info processors to the info function. I'm using these new features to create an awesome new commenting system. Will post more later...
  • Reworked code in library.php so can use parameters like sort, if, exclude, count, type, etc, on queries.
  • Changed login script so can now (optionally) specify a different source for a password. Can for example give one sitewide password anyone can use to login.
  • A little tweaking of the default css, involving forms and tables.
  • More work on the submit conditional to solve redirect problems. Finally!!!

boltwire4.04.zip December 25, 2013
  • A few minor changes to the code for link titles.
  • Slight change in how mail auth permissions are checked.
  • Fixed a minor bug in how mail content is assigned.
  • Reworked the session handling to solve some strange problems I had with one site. :/
  • Found a bug fix in the messaging system.
  • Add a mobile condition triggered by a mobile device or use of mobile skin.
  • Improved ingroup conditional to recognize a csv list of groups, and can set id to other users.
  • A rather tricky reworking of how BoltWire determines when/which action pages are displayed--to improve functionality of external page libraries.
  • Register command now takes a csv list of data fields you want to save with the member page.
  • Fixed bug so now all admins are also editors (not just BOLTadmins).
  • Finally solves a longstanding issues with tables in templates and formats. Now just add table=true or table='border=1' to your search parameters and the full table will be properly constructed.
  • Changed box code to allow you to set type by parameter 1 or type=''. Changed markup type to not include html box and added debug type to show all three.
  • Fixed a bug in the nolines markup (used to escape BoltWire's built vspacing).
  • A little fix--function parameters now should be case insensitive.
  • Complete reworking of the indexing system to give amazing flexibility and much better efficiency. Also a major expansion of BoltWire's data querying capabilities. I've updated the docs on this.
  • Added several new info processors including prev, next, list, and exists (maybe more). But dropped report (use search now) & inlist (???). Code is completely rewritten and simplified.
  • In passdata command can now set mode=post or mode=cookie (add expires argument) and can be use those modes beside the default get. The source and {?var} format now can access get, post, or cookie values.
  • Fixed bug that put wrong .htaccess file in files folder blocking initial image display.

boltwire4.03.zip December 11, 2013
  • Fixed variables.php to properly allow change of location for shared resources.
  • Now BoltWire properly recognizes key vars like {skin}, {shared}, etc in skins.
  • Fixed a bug in the passdata command.
  • Function messages are now turned off by default. Turn on by msg=true.
  • Added an optional autologin feature that allows you to login by adding &login=id:pass to the url. If superadmin, can just do &login=id to login as another user. To enable, set autologin: true in site.config.
  • Several nice tweaks to the print skin.
  • Added an experimental mobile skin. To try it, set skinMobile: true in site config. To change the default mobile home page, change homeMobile: mobile, (or edit page mobile).
  • Changed the {memberships} var to {groups} and some underlying code as well.

boltwire4.02.zip December 04, 2013
  • Lot's of little tweaking as I upgraded my main site to 4.0
  • Changed deprecated ereg to preg_match in markups.php
  • Removed spaces from data variable to fix bug in data action.
  • Added a new form function for creating multi-use forms like forums and comments. Replaces { param} with parameter value in function, also handles vars like { id}, { p}, etc.
  • Slight change to info function so count returns 0 rather than blank if info not found, and can give an optional default=x when no info is found.
  • Fixed a bug in the if command.
  • Got the jump thing working. Give a select field the name jump and it automatically jumps when you select something. The options need to look like {script}pagename.
  • Reworked the listpages function to allow nested folders within the pages directory. Eliminated the folders parameter (just use dir=pages/folder instead). For plugins, etc, use dir={shared}/plugins.
  • Functions now take if statements, but this conflicts with the search and info functions which use if statements in checking results. So I now exempt those functions from the normal function use of if statements.
  • Have tried to eliminate all vestiges of the target parameter. Now use page.
  • Fixed the localtime config value.
  • Added a fmt=since option to the time function. Returns number of days since the timestamp.
  • Can now use links starting with a / which return a url relative to the field directory.
  • Added an BOLTinit system function to simplify code in functions etc that require you to initialize variables from several options. Very cool. Now just need to go through the code and use it.
  • Tweaked engine.php to allow direct control of $BOLTskin variable.
  • Added a myBOLTfuncOutput hook to add custom function output options.
  • Fixed a few bugs in the new BOLTpageLibraries system. Seems to be working!
  • Create command can now take templates for special needs. Set template to a page (or anchor). Use lines=true, vars=true, replace=true in command to replace
, { id} {=field}.
  • Added new submit conditional to tell if a certain button was pushed.
  • Deleted the new passform command and added a post=true parameter to passdata if you want to send via post vs get.
  • The {member} var is now populated by the "title" data field of the member page, rather than a separate "member" data field. This gives lot's of nice advantages--but will affect existing sites.

boltwire4.01.zip December 25, 2012
  • Fixes to groups and group permissions
  • Tweaks to field and script vars
  • Fix to action.missing to properly point to action.undo
  • Some work on cleanUrls. Not sure actions are working...
  • Now set cryptkey in index.php to encrypt passwords.
  • Fixed upload command
  • Several changes to site pages and structure

boltwire4.0.zip December 25, 2012
  • Can now do full filtering of form posts using required, filter=filtername/regex pattern, case=, trim, and other options right in the input markup
  • Can now put arg parameters right in commands just like in functions. Note "session" replaced by "command" in markup. Makes it amazingly easier to simplify commands, and no name conflict between posts and commands.
  • Added a passform command which passes form fields invisibly between pages.
  • Box function now allows type=code,html,markup,comment rule= lines= etc and other parameters. Fully stylable. Rules can be used in comment boxes to limit markups very effectively
  • Info Vars can now be split using "field: var1::var2::var3" and retrieved using {page::field::2}. Allows for incredibly fast data crunching and report generation.
  • Added a new code.settings page for setting up system wide variables (and code) very easily in your site. Available to skins or site pages.
  • If statements are now fully nestable up to 9 levels. :) If parameters can now be put in commands, functions, searches, etc.
  • Replaced old help system with a simple help action and several help pages to ease new users into BoltWire.
  • Changed the translate markup from >>text<< to + text+ . Removed from default pages.
  • Can now set up page libraries in locations outside pages folder. Ideal for shared folders between sites. To use, put something like "$BOLTpageLibraries['bible'] = '../shared/bible/';" in config.php. Writing to these pages is not permitted.
  • Many other features dropped or added. Much of the internal code has been rewritten and dramatically simplified.