3.3.0 =================== - Change: BSFunctions::cookie() does not use static member values, but only parameters - Change: BSFunctions::swap_css_classes() does not use static member values, now returns the value 3.2.3 =================== - Change: More BSDecorator styling updates, creating a .button class to style button links 3.2.2 =================== - New: Added BSTemplate::__toString() to evaluate the template 3.2.1 =================== - New: BSFunctions::bool_to_string() to convert a boolean value into human-readable Yes/No - Change: BSTemplate::flush() will no longer insert debug blocks, but BSTemplate::get_debug_block() can be used to retrieve it - Change: BSTemplate now uses the full file path when caching templates, rather than just the name - Change: BSDecorator fixes based on real-world usage 3.2.0 =================== - New: Decorator.css.php and Decorator.js to be used to create HTML templates with standard formatting - Removed: BSPrinter* and all its variants have been removed, use Decorator+Template instead 3.1.3 =================== - Fixed: BSPrinterRootForm's marked as ::setUpload() would not have the right enctype set - New: BSApi::reset() will reset the object back to an initial state with only the key field still set - New: BSApi::fetchValue() will return the value of a given field from either ->record[] or ->values[] 3.1.2 =================== - Fixed: BSDb::query() would not generate a Result object for explain, show, and describe queries - Change: Change BSApi::remove() to be ::delete() again 3.1.1 =================== - Fixed: BSMail::send() would fail if sending a HTML/multipart email because it would call BSFunctions::Rand() - Fixed: BSMail::send() would not send HTML emails due to a caps typo in the $sendHtml param - Change: BSMail::send() now labels iteslf in its BSApp::debug() messages 3.1.0 =================== - Change: BSPrinterElementTable:__construct() can now take straight strings and convert them into BSPrinterElementLabel's - Change: Removed the text indent on .input elements in BSPrinter - New: BSPrinterRootPage::setHeaderCode() allows injecting in between the tag of the root page element (creates BSPrinterRootPage::$headerCode) - New: BSPrinterAbstract::setId() allows all elements to have an id attribute added in _prepareStyle() - New: Added an ability to quick-set API information via an array with BSApi::setArray() - New: Made many private members protected or public - Change: Added BSPrinterAbstract::__toString() that merely calls paint() - Change: BSTemplate is completely redone - New: Implement Iterator in BSDBResult - New: In the BSTemplate::$preParseHook method, the second parameter will be the BSTemplate object itself - New: Add BSTemplate::$globalVars to be substituted into every template - Change: BSTemplate will better detect parse errors in nested templates in BSTemplate::evaluate() - Change: ApiException will now report all of its messages in ::getMessage() - New: Added BSExceptionHandler to handle all exceptions in a pretty fasion