Developer Changelog

  1. custom superglobals: $APP will be defined as superglobal.
    what to do with pseudostatic things like $HtmlUtil, $Bs_String etc?
  2. exception handling (php5): try/catch/finally will be used.
    but for now we keep the code php4-compatible.
  3. make use of __FUNCTION__ and __CLASS__ after some time. needs php 4.3


    version 4.6.2
    1. Bs_UrlCache: added options for checkRequest to cache pages with get
      request and querystring params. added checks for the checkForErrors
      feature. 2006-07-17 --fab
    2. Bs_MySql::escapeString now uses mysql_real_escape_string() if
      available (php4.3+) isntead of mysql_escape_string(). 2006-07-18 --andrej
    3. Bs_FormItAble::doItYourself(): added 4th param $postData=NULL to be
      able to overwrite the default of using $_POST. 2006-07-20 --andrej
    4. Bs_MySql: tableExists() checks the mysql variable lower_case_table_names
      to see if the table exists, does not look at the os type anymore.
      2006-07-28 --andrej
    5. Bs_SpamImage class (captcha): added the rotateChars feature, it is off
      by default. adds more confusion and security. 2006-08-02 --fab
    6. js ListRegister component: fixed an incompatibility with the new
      mozilla. 2006-08-19 --andrej
    7. In Bs_FormField: in function evalWrapper(...) was using the deprecated
      'pass by reference' to pass a parameter. Corrected. 2006-08-26 --sam
    8. Bs_Dir: Added an isSet() to avoid a PHP-Notice. 2006-08-26 --sam
    9. Bs_EmailUtil: added 4th param to hideEmailWithJsDocumentWrite()
      named htmlEncodedFallback, default is false, which changes the
      output. 2006-08-30 --andrej
    10. Bs_FormFieldSelect.class.js: added param 'posStart' to addElementsByHash()
      to be able to add elements to the beginning of a select field.
      added method addElementsByHash to the flipflop field and example 5 to
      demonstrate the feature. 2006-09-01 --fab
    11. Bs_String: added splitByUpper() with examples and ecg tests.
      2006-09-08 --andrej
    12. Bs_TextUtil: added arrayToStringGenerator()
      2006-09-13 --sam
    13. Bs_TextUtil: added parseRoundBracketString()
      2006-09-14 --cristina
    14. Bs_TextType: added option 'middle' for the 'xAlign' property
      to auto-align the text in the middle of the image.
      2006-09-15 --andrej
    15. Bs_TextType: added option to add shadows to printed text.
      see setFontShadowColor(), fontShadowX etc.
      2006-09-18 --andrej
    16. Bs_HeadCollector: added the option to add onload code only
      by using javascript, using a collector array that is checked
      once the onload function is executed. see the class header docu
      for an example. 2006-09-18 --andrej
    17. Bs_TextUtil: added cleanWordFromPunctuation() 2006-09-20 --andrej
    18. Bs_Url:Corrected: index error: chunk[$i -1]. $i can't be 0!
      2006-09-22 --sam
    19. Bs_FileCache: added delete(). 2006-10-10 --andrej
    20. Bs_UrlCache: added delete(). 2006-10-10 --andrej
    21. JsrsServer: hacked around a bug in the wddx-extension in
      php versions 4.4.3 and 4.4.4 in start(). converting int to
      string, see http://www.blueshoes.org/en/blog/?blogMessageID=10
      2006-10-13 --fab
    22. Bs_Db: getDbObject() does not create a persistent connection
      anymore. 2006-10-18 --andrej
    23. PhpUnit: added Bs_Assert->assertBetween(). 2006-10-20 --andrej
    24. SimpleObjPersister: added the callbacksEnabled flag to temporarily
      disable callbacks. 2006-10-23 --fab
    25. Bs_HtmlUtil: added text functions:
      getTextFromHtmlInParagraphs(), removeTagsInStringRememberPositions(),
      removeTagsInParagraphLinesRememberPositions() they are used to
      extract text from html by logical paragraph, and formattings can
      be preserved, for example to see if a certain string was
      formatted bold. 2006-10-14 --fab
    26. backported from php5: str_ireplace() and stripos()
      2006-11-15 --andrej
    27. Fixed a bug in Bs_HtmlInfo->fetchBaseTag(). 2006-11-28 --andrej
    28. Bs_HttpClient> added $ignoreFollowFileExtensions,
      registerRedirectCallbackMethod() and registerRedirectCallbackFunction()
      2007-01-23 --andrej/cristina
    29. Simple Object Perister: added the 'db' field in the 'table' section
      of the settings to use a different than the default database of the
      current connection. 2007-01-25 --andrej
    30. Bs_HttpClient: fixed a notice with the cookie handling when the
      received string had a space at the end. 2007-02-01 --fab
    31. Bs_Url->realUrl(): fixed a bug with multiple ../../ escaping.
      2007-02-12 --andrej
    32. Bs_UrlCache: fixed a bug in setUrl() that returned a wrong file and
      query part. 2007-02-14 --fab
    33. Bs_Smtp: added 4th param in return of send() to see error messages
      to specific rcpt commands. 2007-03-06 --andrej
    34. added Services_Json to the lib. 2007-03-15 --fab
    35. jsrs server: an object with only methods is considered empty these
      days. :-/ 2007-03-16 --andrej
    36. js date picker: added callbacks (onChange). 2007-03-19 --fab
    37. Bs_HtmlUtil: extended html_entity_decode_utf8() to treat some
      special entities not done by php. 2007-03-19 --andrej
    38. simple object persister: added switchDbBeforeWrite to allow
      mysql synchronization (bin log) even when using different db's.
      2007-03-20 --andrej
    39. js datepicker: fixed a bug in isDateSelectable() with parseInt()
      which lead to wrong results (octal) 2007-04-12 --fab
    40. jsrs: added json as data format as alternative to wddx. it's
      smaller, faster, and works well with utf8. 2007-07-23 --andrej
    41. simple object persister: added sql logging feature, off by
      default. useful for logging all sql changes to a file.
      2007-07-10 --dan
    42. simple object persister: added bs_sop_setSop() callback.
      2007-07-23 --andrej
    43. Bs_DateUtil: added diffTime() and diffDateTime(). 2007-09-17 --andrej
    44. fia class: added the bs_fia_validateField() callback.
      2007-09-28 --andrej
    45. Bs_CugDb: in newest mysql versions the log table failed to be
      created because of a default value that is not accepted anymore.
      in checkLogDbTable() for the field eventDatetime (not '').
      2007-10-19 --fab
    46. PHP5 and PHP6 compatibility: nusoap and simpleobjectpersister had
      a call to get_class_methods() which was not made case-insensitive. fixed.
      2007-10-22 --andrej
    47. HeadCollector: the onload js function now sets
      so that anyone can check these states later.
      2007-10-24 --fab
    48. Js Slider: added light version for faster downloads. 2007-10-24 --fab
    49. Bs_HtmlTable: added option to have auto-generated unique tr and td
      ID's using placeholders, see setGlobalTdAttr(). 2007-10-29 --andrej
    50. Tabset JS component: fixed a firefox annoyance in the image-rendering
      mode (when changing tabs the line did not change). 2007-10-30 --fab

    version 4.6.1
    1. Bs_MySQL: no more persistent connection by default. 2006-02-07 --andrej
    2. included new plugins/onomastics version 2006-02-28 --pete
    3. included new applications/cms 2006-03-14 --fab
    4. Bs_DataGrid.class.js js component. 2006-03-31 --sam
      - There is no need for the constuctor parameter. (Was the old way to do it: Used to have to pass the name of the
      js-var of the object itself ).
      - Simplified the sort function.
      NOTE: there is a bug in Mozillas js-sort. Same values are *switched* during the sort! This is no problem for atomic
      values, but can have anoing effects when sorting obects (havealy used in Bs_DataGrid). The effect is that in a grid
      rows start to 'switch' around when clicking on the head-coloumn, if the column has data with the same value
    5. Js tree component: BUG correced that was brought in!
      (arr['children'].length > 0) caused an error.
      Relaxed the check to only
      typeof(arr['children'])=='object') 2006-04-07 --sam
    6. added Bs_Array::prependAssoc(). 2006-04-27 --fab
    7. javascript: improved global function getAbsolutePos() and added getElementDimensions().
      2006-05-15 --fab reverted the change in getAbsolutePos() cause not accurate 2006-06-14 --andrej
    8. Bs_Array: made arrayToCode static. 2006-06-05 --fab
    9. Bs_Dir: added options for getFileList(): 'followCallback', a callback
      function to decide if the folder should be followed. 'match', a
      more powerful replacement for the 'regEx' & co settings to decide
      if a file/dir should be included in the returned data. kept backward
      compatibility. 2006-06-10 --andrej
    10. evalWrapper() rewrites $this for php5 in param list, see
      http://www.blueshoes.org/en/blog/?blogMessageID=7 2006-06-12 --andrej
    11. added variable $PHP5UP next to $PHP5 in blueshoes.ini.php (also catches
      version 6, 7, ...) 2006-06-12 --andrej
    12. Bs_HtmlMetaCollector: inserted metaType param in set() and setIfEmpty(),
      same in the wrapping methods metaSet() and metaSetIfEmpty() in
      Bs_HtmlPage. this way 'http-equiv' type of meta tags can be set.
      updated the ecg class. 2006-06-13 --andrej
    13. Bs_Stripper: made the specialized php stripper stripPhp() work when
      running it in php5. 2006-06-14 --fab
    14. fixed a "remote file include vulnerability" that could happen if
      all these conditions are true:
      1) blueshoes is installed in the webroot (really not recommended)
      2) register_globals is on (really really not recommended, off
      by default since php 4.2.0, read http://www.php.net/register_globals
      3) allow_url_fopen is on (on by default, often set to off by
      hosting providers)
      fixed it by now allowing to pass certain values in the request.
      in fact it was fixed before already by not using the APP var for
      inclusions anymore, but now overwriting APP stuff by get/post/cookie
      is not possible at all anymore. 2006-06-14 --andrej
    15. Bs_Dir->getFileList(): added 'cache' feature cause reading the file
      list is so expensive. it is off by default to keep bc. 2006-06-15 --andrej
    16. Bs_SimpleObjPersister: _genericLoad() returns false again when no
      record selected in $singleLoad mode. 2006-06-16 --andrej
    17. Bs_SimpleObjPersister and Bs_MySql::updateTableStructure():
      added the option to define the engine, charset and collation.
      2006-06-16 --andrej

    version 4.6
    1. Bs_Form: Cleanded the includes. Bs_Form includes now all form-classes.
      Bs_FormElement and Bs_FormField: unused (cyclic) includes removed.
      2004-01-01 --sam
    2. Bs_Browscap: imported new cloaklist data and made it available in the KB.
      updated detectUserType() with new user agent strings (used as fallback
      when no db connection is available). 2004-01-02 --andrej
    3. Bs_Form: methode onLoadCodeToHtml() The js code now checks if the onload-method
      is in use *before* we use it ourself's. (This can happen if some other 3rd party
      script is loaded that uses the window.onload-method too). If we find a methode,
      we back it up and take care that it's call too during the onload event.
      2004-01-04 --sam
    4. updated the Speed Matters article. 2004-01-04 --andrej
    5. bsSessionBrowscap now uses Bs_SimpleSession before Bs_SessionFile (in
      case that both exist). 2004-01-08 --andrej
    6. the SmartShop applicaton now uses the global Bs_SimpleSession if it
      exists. 2004-01-08 --andrej
    7. Bs_FormTemplateParser: templates can now have php code. added _eval().
      2004-01-21 --fab
    8. Simple Object Persister: fixed a problem with automatic table updates where
      the sop told the mysql class that a field was of type "integer" when mysql
      only understands the type "int". thanks to tj at mailroute for reporting
      this. 2004-01-21 --andrej
    9. evalWrapper() now has the element 'return' set in the &$context param.
      when the evaluated code uses a return statement, this is how you get it.
      the return value of evalWrapper() is still the echo'ed output.
      this way an evaluated piece of code can echo things, and for example return
      a Bs_Exception. 2004-01-25 --andrej
    10. wysiwyg editor: internet explorer used to extend href="/foo" and src="/foo"
      with the host, eg href="http://www.blueshoes.org/foo". this is now "fixed"
      by removing the host. added _getWysiwygElmValue() to do that.
      todo: <form action=""> and <object><param value='url'></object>
      2004-01-26 --andrej
    11. smartshop: fixed the include problem that shows up with mmcache and/or php5.
      it's the same problem that has been fixed in the bs_form package before.
      2004-01-27 --fab
    12. the freely distributed and stripped packages had a syntax that some of the
      new php versions (at least 4.3.2 and 4.3.4) don't like. it caused a
      notice (not warning or error).
      the syntax was: "<?php/***** this is a comment"
      it needs a space or newline after the "<?php".
      2004-01-27 --andrej
    13. Bs_FormFieldSelect class: when there were 2 options, one with value
      "1.32" and one with value "1.320", and the default value was "1.32", then
      both values were selected. simply because ("1.32" == "1.320") is true in
      php. this is fixed now. thanks to hervé raffourt for reporting it with
      a solution. 2004-01-28 --andrej
    14. Bs_Form: output can now be standard html compliant. added var placeHolders
      to switch off the placeHolders feature.
      the placeholders in form templates are now removed for output. thanks to
      peter lindstrom for pointing that out and supplying a fix.
      2004-01-29 --andrej
    15. Bs_FormContainer: toggling now works in mozilla too. the code was ie only
      before. added the 'container.php' example. 2004-01-29 --andrej
    16. Bs_FtpClient: added registerEventCallbackFunction() and
      registerEventCallbackMethod() to be able to log or visually inform the user
      about events such as chdir, put etc.
      added uploadDir() for recursive directory uploads.
      added mkPath() and chPath() (not only mkDir() and chDir()).
      2004-02-01 --andrej
    17. Bs_FileManager: rename and copy were partly broken. fixed. the path can be
      shown relative to the 'virtual root' to the user. the code that handles this
      is a bit hacky. needs some cleanup sometime.
      When copying a file "foo.txt" and pasting it in the same directory, it no
      longer fails with the message "already exists, wanna overwrite?". this
      made no sense. now it creates a new file named "Copy of foo.txt" just like
      windows does. (this is only the case if you're pasting in the same directory.)
      2004-02-01 --andrej
    18. getTmp() from the Bs_Misc.lib.php file:
      it can be that the dir /tmp exists, but is not read/writeable. for example on
      shared linux hosters when safe mode is activated. then we go and try to make a
      temp dir above the webroot, and then in the webroot.
      remember that you can set the tmp path using $APP['path']['tmp'] yourself.
      2004-02-02 --andrej
    19. Bs_Slider: added the optional arrowMouseOver feature. the slider can fire
      (and keep firing in a loop) when the mouse is over the arrow, a click is not
      needed. 2004-02-03 --andrej
    20. Added new js component: Bs_ScrollableDiv. it works altough status is
      experimental. it uses the Bs_Slider component and works in new ie, mozilla
      and opera browsers. an example will follow. 2004-02-04 --andrej
    21. Javasrript tree, example 11 noFramework: the path to the checkbox icons was
      not set. this is not needed when using the framework, because the paths
      are set by default. 2004-02-08 --fab
    22. Bs_Slider: added an experimental vertical slider. added an example for it.
      the colorbar feature as well as the input box don't work for it [yet].
      in internet explorer the onmousewheel now works as 6th way to manipulate
      the slider value. unfortunately mozilla and opera don't support that.
      2004-02-08 --fab
    23. js onomastics client: now supports custom warning messages. the
      Bs_FormFieldFirstname supports that too now, check the header doc of that
      class. 2004-02-10 --andrej
    24. added bs_isoToUni() to core/lang/Bs_Misc.lib.php as global function.
      2004-02-10 --andrej
    25. added the special form field Bs_FormFieldZipcode, a zipcode field currently
      for switzerland only. together with the geoserver, the zipcode DB from
      the KB for switzerland, and jsrs classes, it can be used in web forms
      to find out the city name of a typed zipcode on the fly.
      2004-02-10 --andrej
    26. Bs_Slider.setBackgroundImage() got a third param: an additional css style
      string can be applied to the background image. 2004-02-11 --andrej
    27. Bs_Smtp: added authentication to the smtp email class (using the LOGIN
      mechanism). 2004-02-16 --andrej
    28. Bs_TextType now supports disabling antialias. never needed it before *shurg*.
      2004-02-19 --andrej
    29. Bs_DataGrid component: new features from hervé raffourt
      - mouse over color change line
      - fix header table
      - button to switch collapse or expand table (2 new button gifs)
      - td (data) align different to header
      - toggle sort asc/desc
      - sort float cols
      2004-02-20 --andrej
    30. Bs_DatePicker javascript component now supports language files. check the
      examples. Bs_FormFieldDatePicker is updated as well (which uses the js
      datepicker). thanks to peter lindstrom for the input. 2004-02-23 --fab
    31. Bs_formFieldTxt: if now id is defined then the name is added as id
      to the field as well. example: <input type="text" name="foo" id="foo">
      2004-02-23 --fab
    32. the Bs_DatePicker form field now uses the convertField() method of the
      js datepicker component. this way the input field is also usable in old
      browsers like ns4. thanks to peter lindstrom for the input.
      2004-02-23 --fab
    33. Bs_Om_onomasticsServer has the new var dbName. it may be needed to change the
      default database name "BsOnomastics" on shared hosts.
      2004-02-25 --andrej
    34. Bs_GeoServer has the new var dbNameKb. it may be needed to change the
      default database name "BsKb" on shared hosts.
      2004-02-25 --andrej
    35. Bs_IntervalChart: added the vars margins and filled. more will follow, it's
      currently under development. 2004-02-26 --andrej
    36. Bs_Slider js component: vertical slider: the slider width was subtracted from
      the slide area instead of the slider height. this was a visual problem
      only with large knobs and the new vertical slider.
      new icons (osx, os9 and others) and added example 7 to show them.
      2004-03-01 --andrej
    37. Bs_Radio js component: mozilla now also shows the hand as cursor over the
      text. fixed example 6, added the noFramework version for example 6.
      added osx icons, added example 7 to show it.
      2004-03-01 --andrej
    38. Bs_Slider js component: new loadSkin() method. if you don't use the
      framework then you still need to set the imgDir yourself. added new
      slider icons, see example 7.
      added new skins, see example 7. added the ability to use special background
      images on the left and right side, while keeping a repeating image in the
      middle. this allows for example to have rounded borders. see example 7.
      for this the methods setBackgroundImageLeft() and setBackgroundImageRight()
      have been added. 2004-03-03 --andrej
    39. Bs_EmailUtil->hideEmailWithJsDocumentWrite() now also writes the caption
      (visible text in the email link) in parts. it could be an email address
      too (if the user does not read the phpdoc). 2004-03-04 --andrej
    40. Bs_Checkbox and Bs_Radio js components: both now support the loadSkin()
      method. added new skins. 2004-03-07 --fab
    41. Bs_DatePicker js component: nicer rendering in mozilla. 2004-03-07 --fab
    42. Bs_DatePicker js component: new feature 'autoClose' and it's on by default.
      when a date is chosen the picker closes automatically. added the new var
      dateToday. added support for the mouse wheel (in the year and date field).
      the date field supports the arrow up/down keys. added support for skins,
      the 3 skins win2k, osx and h2ogtk2 are available. instead of the month
      and year input field only text can be used, together with arrows to move.
      a 'today' button can be used to go to the current day.
      added support for dateRangeLower and dateRangeUpper.
      added isDateSelectable(), isValidDate() and dateCalc().
      added new examples. 2004-03-12 --fab
    43. Bs_Cookie.lib.js:
      added support to set/read objects, not only primitive types (strings).
      this requires the wddx and xmlparser classes:
      2004-03-13 --fab
    44. Bs_Tree javascript component: added the rememberState/applyState()
      feature. the example 17 shows this. the Bs_TreeElement.linkStyle and
      Bs_TreeElement.divStyle fields can now be set in initByArray().
      2004-03-13 --fab
    45. Bs_Tree javascript component: added the keyboard navigation feature.
      see the new example 18 for that. 2004-03-19 --andrej
    46. Bs_SpreadSheet: renamed typo sheedHeight to sheetHeight. the examples
      were correct thus i think that change is ok.
      have tried to speed up the rendering - failed. 5 seconds on a 2ghz
      machine for example 2 is ok imo.
      some info:
      have tried to make the header line (a b c ...) not scroll. would
      work, but brings other drawbacks. so i leave it like it is.
      2004-03-21 --andrej
    47. Undone 46, ie did not like it. mozilla was ok. this dhtml work really
      isn't fun. 2004-03-21 --andrej
    48. Bs_Form: updated getValuesArray() to support field names with array
      structures with more than 2 elements. example:
      $myFieldObj->name = "foo[bar][hello][world]";
      2004-03-22 --andrej
    49. Bs_CugDb now registeres the whole user record into the session.
      2004-03-22 --andrej
    50. Bs_SimpleObjPersister->store(): the 2nd param $varsToStore can now
      define which vars to IGNORE. this is done by adding a first
      element to the array with the value '-' (minus character).
      example for vars to STORE:
      $varsToStore = array('field1', 'field2', 'field3');
      example for vars to IGNORE:
      $varsToStore = array('-', 'field1', 'field2', 'field3');
      2004-03-26 --andrej
    51. Bs_Slider js component: added the ability to define the mousewheel
      speed (wheelAmount property). 2004-03-27 --andrej
    52. Bs_ScrollableDiv js component: the mouse wheel can now be used over
      the scrollable area too, not only over the slider. note that only
      internet explorer currently supports the onmousewheel event.
      2004-03-27 --andrej
    53. Bs_FormElement->elementStringFormat was documented to be used in
      'normal', 'read', 'readonly' and 'show' mode. but in fact in 'show'
      mode it was not applied to the output. now it is.
      2004-03-30 --fab
    54. added Bs_DateUtil->getEndOfMonth() and getDaysOfMonth().
      2004-03-30 --fab
    55. Bs_HtmlTable change: in browsers html table cells
      with nothing in it used to be a problem. for example the background
      color was not shown. thus the renderTable() function used a &nbsp;
      when the cell value was "empty". the compare was done with
      ($value == ''). unfortunately an int with value 0 returns true for
      that check. thus it was not shown. fixed it now. we should have
      known better, http://www.blueshoes.org/en/developer/php_cheat_sheet/
      tells about these cases. 2004-03-30 --fab
    56. Bs_DataGrid js component: when using the bHeaderFix feature the div
      always uses the height specified in 'height', even when there is
      not enough data and the div could use less space. in mozilla that's
      fixed using the max-height css property (instead of 'height'). in
      ie it's fixed too by checking the offsetHeight of the table body
      after rendering, and then setting the table body height if it's
      larger than the allowed max. this is done in drawInto().
      the expand/collapse button also hides if it's not needed.
      2004-04-05 --andrej
    57. Bs_ColorUtil.lib.js: added the 2 functions mixColor() and
      mixColorPart(). this code has already been done for
      Bs_LimitedTextarea js component, but i left it there to avoid a
      dependenciy. the Bs_ColorUtil can now be used from the slider
      component for the new fading colorbar feature, see next entry.
      2004-04-08 --andrej
    58. Bs_Slider js component: there can now be 2 colors specified for
      the colorbar to have a fading colorbar. thanks to swaminathang for
      the idea.
      added getValueInPercent().
      2004-04-08 --andrej
    59. Bs_FormFieldFile now uses a text field in 'readonly' mode which
      is disabled and readonly. before, the value was spitted out
      just like in show mode (because file fields cannot have a default
      2004-04-08 --fab
    60. Slider js component: in disabled mode there was the possibility
      to lower the slider value a little bit by clicking the know.
      fixed. 2004-04-09 --andrej
    61. Bs_Checkbox js component: added the setDisabled() method. now
      the checkbox can also be disabled at runtime, not only before
      rendering. 2004-04-09 --andrej
    62. Bs_Tree js component: the checkbox tree can now be set disabled
      both before rendering and at runtime using setDisabled(). see
      and the new "disable/enable tree" button.
      the same applies for the radio tree, see
      this 'disabled' is for the radio and checkbox system only, the
      tree nodes can still be opened/closed. 2004-04-09 --andrej
    63. Bs_Form: added the 'readonlyVisible' mode to all fields where it was
      missing. this is a new mode added by peter lindstrom (thanks).
      added the editor.php example, it's the successor of the wysiwyg.php examples.
      in 'show' mode values of type 'url' and 'email' from text input fields are
      now clickable, thanks to peter again.
      2004-04-09 --andrej
    64. Tree component: cursor-right now goes to the first child if a node is already
      open. cursor-left closes the node if it's open, and on the next cursor-left
      it goes to the parent. this is like most trees and also windows explorer
      do it. thanks to per emanuelsson for the info. 2004-04-10 --andrej
    65. Added the class core/gfx/spamimage/Bs_SpamImage.class.php plus an example:
      This is to prevent people from writing programs to spam a database with fake
      automatic form submits. 2004-04-10 --andrej
    66. Bs_HtmlUtil->arrayToJsArray() now has the option to use temp copies of array
      elements to shrink the final js output.
      example output before:
      var a = new Array();
      a[0] = new Array();
      a[0]['caption'] = "auth";
      a[0]['children'] = new Array();
      a[0]['children'][0] = new Array();
      a[0]['children'][0]['caption'] = "cug";
      same now:
      var a = new Array();
      a[0] = new Array();
      var a_1 = a[0];
      a_1['caption'] = "auth";
      a_1['children'] = new Array();
      var a_2 = a_1['children'];
      a_2[0] = new Array();
      var a_3 = a_2[0];
      a_3['caption'] = "cug";
      more lines of code, but less content. it really matters with large array
      structures. i had one that:
      old: 165KB output, 15KB zipped
      new: 103KB output, 13KB zipped
      2004-04-12 --andrej
    67. Added Bs_FormFieldNumberField.class.php, an implementation of the js
      component Bs_FormField.class.js as Bs_Form element. 2004-04-13 --andrej
    68. Bs_Tree js components: added the vars linkTitle and linkStatus to the
      Bs_TreeElement class. when the mouse moves over the link of a node,
      a title can appear and the status bar text can be changed. added
      example 19 to show it. 2004-04-14 --andrej
    69. Added a working Bs_DateUtil->dayOfWeek(). 2004-04-16 --fab
    70. Bs_HeadCollector: in addOnLoadCode() when the param $code was an
      array it was not added, and all onload code was removed. fixed that
      bug now.
      when using the spit() method that adds an onload handler to the
      document, an already existing onload handler in the doc is now
      "backed up" and called too. this technique has already been in use
      in the bs_form package (thanks to sam).
      2004-04-18 --andrej
    71. Bs_Form: new feature: crypt. see the example crypt.php at
      added other new examples: nice.php, headCollector.php, textarea.php,
      added a flipflop example to the select.php file. 2004-04-18 --andrej
    72. Javascript: added Bs_Rc4Crypt.lib.js and Bs_Base64.lib.js. These
      functions are compliant with their equivalent PHP functions
      base64_encode()/base64_decode() and core/crypt/Bs_Rc4Crypt.class.php.
      2004-04-18 sam and andrej
    73. Bs_Debedoo application: fixed the 'view' mode in _treatFormView().
      it was not up to date, compared to the other modes (add, edit, delete).
      one can now have a post-form-load callback: just define the userland
      function bs_debedoo_postformload(&form) and do what you want. take
      the param $form (the form object) by reference.
      2004-04-18 --andrej
    74. Added Bs_HtmlUtil->toValidJsVarName() to generate valid js variable names
      from strings (clean them). coded ecg tests too. 2004-04-19 --andrej
    75. The function bs_fabricateFormField of the Bs_Form package can now
      accept a string (the field type) as param, and not only an array.
      when the wanted form field class is not included yet, this function
      does it for you. 2004-04-21 --andrej
    76. Added new Bs_FormFieldSpamImage.class.php and the example spamImage.php.
      bs_fabricateFormField() is used in that example. 2004-04-21 --andrej
    77. The Bs_HttpClient can now follow meta refresh tags in fetchPage,
      see the new var followMetaRefresh which is FALSE by default.
      2004-04-26 --fab
    78. Bs_HtmlInfo->fetchLinks() now supports invalid html code to find
      link tags. example: <td><a href="foo.html">caption</td>
      the regular expression: /<a(.*)>(.*)(<\/a>|<a|<\/td>)/iU
      added the html/examples/htmlInfo.php example file. 2004-04-27 --andrej
    79. Bs_NetApplication now has the var timeOut. this is set to the instance
      of Bs_SocketClient. classes like Bs_HttpClient extend netapplication
      and thus can use that. 2004-04-27 --andrej
    80. Bs_HttpClient: when a 302 Moved Temporarily returns a relative
      Location instead of an absolute one (eg 'newFile.html') the program
      did not follow it before. now that works too.
      added the new field 'referer' to send to the host.
      2004-05-03 --andrej
    81. Bs_DataGrid js component: when bHeaderFix was not used a js error
      occured. fixed. 2004-05-16 --andrej
    82. Bs_TextType: posX can now be used together with xAlign 'right' to
      better atjust the position. 2004-05-25 --andrej
    83. Bs_FormFieldCheckbox can now have a value different than the
      default "1" (if checked). see var $value. 2004-05-26 --andrej
    84. Bs_Form: multilevel forms can now define a function that defines
      what step comes next. otherwise, the level is just incremented ++.
      see Bs_Form->setLevelCallback(). 2004-05-27 --andrej
    85. Bs_Form->setDefaultValues() added. if you have a hash in the form
      of fieldname => defaultvalue use that to assign the values. comes
      in handy if you want to set default values to form 2 that you've
      got from form 1, for example. 2004-06-03 --andrej
    86. Bs_ColorPicker: in the example the 2nd picker did not work when
      a black color (#000000) was chosen, because if ('000000') evaluates
      to false in js. fixed, thanks to tonyt for reporting it.
      2004-06-03 --fab
    87. Bs_FormContainer: when mayToggle is on, it now has a toggle text
      "open"/"close" on the top right along with an arrow icon.
      not only clicking the fieldsets legend toggles any longer.
      2004-06-04 --andrej
    88. Bs_LimitedTextarea.class.js: fixed issues with mozilla. (init and
      the progress bar) 2004-06-05 --andrej
    89. Bs_Cug: added the options to recover a password by email address.
      the option to do it by username was already there. check
      treatRecoverPasswordByEmailForm() etc. 2004-06-09 --andrej
    90. Bs_FormItAble: if a field belongs to a group that is not defined,
      the group is auto-created. now if a group is set to bool FALSE,
      those fields are now ignored. 2004-06-10 --andrej
    91. Bs_FormFieldcheckbox: new var checkboxLayout to customize the
      alignment of the box and the clickable text. 2004-06-11 --andrej
    92. Bs_Dir->mkpath() got a 3rd param: $ignoreUmask=FALSE.
      2004-06-11 --andrej
    93. Bs_Debedoo: an update on an existing record caused an insert.
      fixed. it was caused by a change in Bs_Form (editability=never).
      2004-06-13 --fab
    94. Bs_Smtp: when the first character in the body was a \n then
      this one was not replaced with \r\n and qmail refused to
      accept the message. fixed. 2004-06-16 --andrej
    95. Bs_TreeElement: when the checkboxName continued special
      characters, for example a space, an error occured. fixed.
      note that having special chars and spaces in form field names
      is not valid. a form field name must start with a-zA-Z,
      and can then also have 0-9, underscore, dash, double-point
      and point. 2004-06-16 --andrej
    96. Bs_Dir->rm() now checks if it worked by seeing if the dir still
      exists. 2004-06-17 --andrej
    97. Bs_DatePicker: if the initial date is 0000-00-00 or somilar it
      is set to an empty string. looks nicer, means the same.
      the convertField() method now works a bit different. it takes
      the existing field's html code, wraps it in a table, and then
      replaces the html of the existing field with the new content.
      this way the rendering works better, compared to just appending
      the needed things after the element. seems to work fine,
      tested in ie6, moz1.6, ns6.0, opera7.23. old browsers (tested
      in ns4.8) are not affected, they just leave the input field
      the way it was. 2004-06-18 --andrej
    98. Bs_CugDb: new feature: host definitions to say which ip range
      is ok for a user, which is not, or on which ip range an
      auto-login is made for the user specified. 2004-06-18 --andrej
    99. Bs_DataGrid js component: added the methods addRow() and
      removeRow(). added new var sortIgnoreCase, it is on by default
      (which changes the ordering in rare cases). new property
      onclick in setDataProps(). 2004-06-20 --andrej
    100. Bs_IndexServer: fixed a rare endless loop in the searchers
      search function that happened with phraze searches.
      2004-06-23 --fab
    101. Bs_TextUtil: added highlightString(). 2004-06-23 --andrej
    102. Bs_Form: bsFormJumpToFirstError() does not error anymore if
      it fails. happend for example if field was not visible because
      the container was closed. or with spiecial fields.
      2004-06-24 --andrej
    103. Bs_Date: added dateToArray which takes any date as param.
      2004-06-24 --andrej
    104. Bs_DatePicker: added var withTime and method setTime() so that
      inputs like "2004-06-10 15:30:59" can be made. a time
      picker addon that takes the users timezone into account would
      be nice. 2004-06-24 --fab
    105. Because of more and more spam and for privacy reasons I inserted
      my pseudonym "sam blum" and convertet all mail addresses
      form "sam-at-blueshoes-dot-org" (used to be "sam at blueshoes dot org")
      Was surprised that my real name (and andrej's) where in the *first*
      2 hits of google. --sam
    106. added Bs_String->pagingList(), status is experimental.
      2004-06-28 --fab
    107. added class core/dev/Bs_Cvs.class.php 2004-06-30 --andrej
    108. index server plugin: optimized the searcher a lot.
      2004-07-08 --andrej
    109. Bs_DatePicker: added new feature positionAbsolute. need to make an
      example. 2004-07-09 --andrej
    110. Bs_FileSystem.class.php: added placeholders __FILE__ and __DIR__. now
      Bs_Dir is a dependency. 2004-07-16 --andrej
    111. Bs_DatePicker: added the setDisabled() method. 2004-07-21 --andrej
    112. Bs_Smtp: now support multiline replies from the server for all
      commands, as the rfc allows it. 2004-07-22 --andrej
    113. Bs_DataGrid: added getNumRows(). added the vars useNoDataText
      and noDataText. added the whole attachEvent & co stuff.
      2004-07-27 --andrej
    114. Bs_HnXmlHandler: implemented loadDataByXmlString().
      2004-07-30 --andrej
    115. Bs_Debedoo: added var linkParams. added end and start links to
      the clickthrough-bar. 2004-07-31 --andrej
    116. Bs_Button javascript class: fixed the actualizeFromChildren
      feature. example 6 shows it. the image path was missing somehow.
      2004-07-31 --andrej
    117. Bs_FormItAble: added the bs_fia_postReceive callback.
      2004-07-31 --andrej
    118. core/file/Bs_Dir->getFileList(): now returns directories before
      files. this should not cause problems, imho. but if someone
      relies on it... 2004-08-03 --andrej
    119. Bs_Tree js component: added example 20, it shows how to build
      a js tree based on a file system folder and php code.
      2004-08-03 --andrej
    120. Bs_ButtonBar.class.js: added the var backgroundColor so that the
      default 'menu' color can be overwritten. 2004-08-04 --andrej
    121. Bs_Tabset js component: now the tabset can be drawn using border
      images instead of css. this way more fancy stuff is possible.
      added a style and example3 that shows this. addTab() now has
      a third param: onTabSelect. a callback trigger can be registered
      only for that tab. added var defaultTab. 2004-08-04 --andrej
    122. Bs_SimpleObjPersister: added loadBySearch().
      if _genericLoad() is called with a
      varsToLoad array and the primary key is in that list (by accident)
      then no warning is thrown anymore. kinda common that the coder
      tries to load the 'ID' field, for example. if loadByIds() is called
      with an empty id list no error is returned anymore. instead an
      empty array is returned. _genericLoad() used to return an
      exception if the db structure was not up to date. now if there is
      an exception (BsDb) then we check if the db table needs an update,
      do it, and then try again before returning an exception.
      2004-08-05 --andrej
    123. Bs_MySql: added getSelectedDb(). 2004-08-07 --andrej
    124. Bs_FileManager app: now allowing renames, copies, moves etc when
      a filename includes the sequence "..". before that was prevented
      to block 'path breakouts'. now only the sequences "../" and
      "..\" are blocked. 2004-08-12 --fab
    125. added application recordmatcher, status experimental, works for me.
      2004-08-13 --andrej
    126. added new js multilevelselector widget and the webpage for it.
      2004-08-14 --andrej
    127. Bs_Form package: fixed a rare bug that occured with multilevel forms
      if fields had array-style names like foo[bar]. 2004-08-15 --andrej
    128. added the file lib/misc/unsharpmask.php. it has such a php function
      that does not need imagemagick or so. 2004-08-29 --andrej
    129. added Bs_FormFieldcountryList->addElement(). 2004-09-07 --andrej
    130. Bs_FormField: valueInternal is type-casted to int or float if
      bsDataType is set to 'number'. 2004-09-19 --andrej
    131. Bs_URL: various changes 2004-09-25 --rick
      * defined RemoveQueryParam and RemoveQueryParams methods
      * made *QueryParam(s) and glueURL methods callable from a static context
    132. datepicker js component: added the allowedWeekdays var to specify which
      weekdays are allowed or not. added example 9 to show it. 2004-09-25 --andrej
    133. button javascript class: added the pretendClick method. 2004-10-02 --andrej
    134. the file manager application is now mozilla compatible. other small cleanups
      and features added. new version released. 2004-10-03 --andrej
    135. added Bs_DateUtil->countWeekdays(). wrote ecg for it. 2004-10-04 --andrej
    136. Bs_Form: if the maxLength definition was a float it was downgraded to
      an int. now floats are allowed too. 2004-10-07 --andrej
    137. Bs_CsvUtil: added the functionality to read a file line by line rather than
      reading it all in at once. this is needed for large files to avoid reaching
      the memory limit. for small files it does not matter. see initFile(),
      getNextLine() and closeFile() and check the examples/Bs_CsvUtil.php example
      script file. 2004-10-08 --andrej
    138. fixed a bug in Bs_Url->hashArrayToQueryString() with the firstSeparator.
      when the method was called with an array in the hashArray param that
      was not the first element of that hashArray array, and the firstSeparator
      was set to '?' then that array was prefixed with the '?' instead of an
      ampersand '&'. example:
      $arr = array('foo'=>'foo', 'bar'=>'bar', 'arr'=>array('arr'));
      Bs_Url->hashArrayToQueryString($arr, '', '?')
      resulted in
      instead of
      fixed that now. 2004-10-15 --fab
    139. Bs_MySql: added createDb() and createAndSelectDb() for convenience.
      2004-10-19 --andrej
    140. Bs_DataGrid: when setDataProps() was not used the component did not render.
      thus our example 1 didn't work anymore. fixed. 2004-10-19 --andrej
    141. Bs_FormItAble: the bs_fia_postReceive callback now receives 2 params:
      a reference to the fia object and a ref to the form object. so define
      your callback method like this: bs_fia_postReceive(&$fia, &$form)
      2004-10-21 --andrej
    142. Bs_FormFieldFile: var showCurrentFilePrefixPath can now have a placeholder
      to include the value of another field used in that form. 2004-10-21 --andrej
    143. Bs_SimpleObjPersister: added deleteByWhere(). 2004-10-21 --andrej
    144. Bs_Error now internally stores all given params (type, line, func, file)
      in separate fields and not only in one merged string. single fields can be
      fetched in the bs_getErrors() etc functions by specifying the $what param
      which can be one of 'text', 'msg', 'file', 'function', 'line', 'type'
      where 'msg' is the original mesasge given by the coder and 'text' is the big
      merged string. it defaults to 'text' and thus it is fully backward compatible.
      2004-10-22 --andrej
    145. added global js function bs_toggleVisibility() to Bs_Misc.lib.js.
      2004-10-27 --andrej
    146. Bs_Exception: added the methods getErrorWeight(), getErrorCode(),
      getErrorText(), getErrorType() 2004-10-28 --andrej
    147. Bs_Error: added the 6th param to bs_setError(): one can pass an
      exception object by reference if he wants to. then later one can
      fetch it using
      $lastException =& bs_getLastError('exception');
      2004-10-28 --andrej
    148. Bs_FormField->inputManipulate() now works with datetime's that miss the
      seconds. example: "2004-31-12 23:59". 2004-10-29 --andrej
    149. Bs_DatePicker component: more support for the time. it can now be used
      without the seconds (only hh:mm). 2004-10-29 --andrej
    150. Bs_SimpleObjPersister: added support for foreign keys. currently only
      used for searching, planned is onDelete n'stuff. status is experimental.
      2004-10-29 --andrej
    151. Bs_CsvUtil: added the method explodeString(). the read by line functionality
      (getNextLine() etc) now uses this instead of a simple explode(). this
      makes sure that escaped entries are read the way they should, just like
      in csvFileToArray() etc. 2004-11-01 --andrej
    152. Bs_SimpleObjPersister: added the onDelete feature with foreign keys.
      Added the countByWhere() and countAll() methods. they are optimized and
      don't load any objects nor data. 2004-11-01 --andrej
    153. Bs_SimpleObjPersister->loadBySearch(): this feature was added 3 months ago
      with status experimental (#122). now the parameter list has changed and
      one new param has been added. since there was no release in the meantime
      i think that's ok. new is the param $whereClause; an additional where
      for the search. 2004-11-04 --andrej
    154. js component Bs_NumberField: added the allowEmpty class var.
      2004-11-06 --andrej
    155. Bs_Form package: added Bs_FormFieldColorPicker.class.php, the implementation
      of the javascript colorpicker component. added the colorPicker.php
      example. 2004-11-06 --andrej
    156. Bs_HtmlNavigation: added the placeholders __ROW__ and __LEVEL__.
      2004-11-10 --fab
    157. Bs_Form package tree field: added the rememberState feature that was
      added to the js tree component recently. 2004-11-10 --andrej
    158. Bs_DataGrid js component: When a title definition had "quotes" it
      corrupted the html output. fixed. 2004-11-10 --andrej
    159. Bs_Tree js component: added the expandAll() and collapseAll() feature.
      both can be used on the whole tree or on a single node. added example
      21 to show it. 2004-11-10 --andrej
    160. Bs_ScrollableDiv js component: the div can now start at another
      position than the top; somewhere in the middle or at the bottom. see
      the example (2nd div). 2004-11-10 --andrej
    161. core/net/Bs_IntruderBuster class: virus scanners 'detected' a 'crash.IE'
      virus in it. in js code in a php file. reformatted the code and now
      it's ok. no virus scanner complained about it in the public download
      file (with scrambled code). 2004-11-11 --andrej
    162. Bs_Checkbox js component: it was unclear that when using the convertField
      method, the checkboxName still had to be set. and this was stupid;
      we use an existing checkbox field, it already has a name. we now always
      use the existing field name and ignore any other given checkboxName.
      added example 4 to show how to convert fields in a loop. modified example 2.
      2004-11-11 --fab
    163. application Bs_FileBrowser: userland code should be changed (see the
      example, it now includes a central wrapper file). renamed files. added
      the option to define needed image dimensions. unwanted files can now be
      shown in a disabled (grayed out) mode (instead of being omitted). the
      thumbnail view can be activated by default (instead of the list view mode.)
      2004-11-19 --andrej
    164. Bs_FormField: added the normalize var. it's one of the input manipulate
      settings and uses Bs_String->normalize(). 2004-11-20 --andrej
    165. Bs_HtmlNavigation: when the current page is not in the navigation data
      then we try to find the closest parent. then add the missing page(s)
      as hidden nodes so that relations to the current active page like
      parent, child, sibling ... still can be defined.
      added the option to have a node hidden ('hidden' = TRUE).
      added the 'self-or-child' setting for the 'active' style.
      2004-11-20 --fab
    166. added Bs_RangeSelector js component with an example. status is experimental.
      2004-11-24 --andrej
    167. Bs_NumberField: any onchange event put directly into the text field was
      not executed. the browsers simply don't do it. now we do it in the class.<br>
      2004-11-25 --andrej
    168. Bs_Form. added the visibility mode 'disabled'. only implemented in the
      text and checkbox fields so far (the other treat it as 'normal').
      2004-11-25 --andrej
    169. Bs_ImageUtil: added resizeToObject(). 2004-11-25 --andrej
    170. Bs_FileUtil: added searchAndReplace() it can dig recursively through the
      file system. todo maybe check for and omit binary files? add such a param?
      in countLinesDir() implemented the param 'recursive'.
      2004-11-26 --andrej
    171. Bs_FileSystem->makeValidFileName(): Bs_String->normalize is now used
      before Bs_String::clean(), that means special chars like ä è etc
      are not removed but replaced with ascii chars ae e ...
      2004-11-26 --andrej
    172. javascript: added global function bs_isTrue(). it works the same as the php
      function isTrue(). 2004-11-30 --andrej
    173. Bs_DatePicker js component: added the var enableMouseWheel and disabled
      this feature by default. if one scrolls through a form he could by
      accident change the date value without noticing it. 2004-12-02 --andrej
    174. indexedlistmanager application: added an example. 2004-12-02 --andrej
    175. Bs_DropDown js component: when no maxlength was defined mozilla used
      the value -1 which caused that no input could me made. fixed.
      2004-12-03 --fab
    176. Bs_ScrollableDiv: when not used (because no hidden content in the div)
      then mouse-wheeling caused a js error. fixed using isActive var.
      2004-12-07 --andrej
    177. fixed a problem caused by xlhtml in
      Bs_FileConverterExcel->xlsStreamToHtmlString(). the command line utility
      did not return valid html code.
      2004-12-07 --andrej
    178. Bs_ImageUtil->resizeToFile(): added param keepRelation as 5th param,
      moved jpegqual to position 6. jpegqual can still be the 5th param to
      maintain backward compatibility. 2004-12-14 --andrej
    179. Bs_RangeSelector js component: fixed something about the
      'maintainAspectRatio' feature. 2004-12-14 --andrej
    180. Bs_FileCache->_readCacheFile(): a php warning was thrown when a cache
      file existed but was empty. fixed. 2004-12-17 --andrej
    181. Bs_SimpleSession: now works even if open_basedir is used.
      2004-12-29 --andrej
    182. the global function getTmp() now works even if open_basedir is used.
      2004-12-29 --fab
    183. Bs_HtmlUtil->arrayToJsArray() the forceVector param can now be set to -1
      which means force hash. see examples. 2005-01-06 --andrej
    184. added Bs_String->isLetter(). 2005-01-11 --andrej
    185. Bs_HtmlInfo->fetchTitle() got a 2nd param 'clean' to remove spaces at
      the end (often used to hide the browser branding in the title bar).
      it is on by default. 2005-01-11 --andrej
    186. added bsFormGetFormForField() to Bs_Misc.lib.js. 2005-01-20 --fab
    187. Bs_HtmlNavigation: added the 'diff' feature. 2005-01-26 --andrej
    188. Bs_HttpClient->fetchPage(): fixed a bug in the "follow redirect" code
      that occured with the path when the server sent a redirect url that
      was not rfc-compliant. 2005-01-26 --andrej
    189. added Bs_Array->insertAtKey() and insertAtPos(). added ecg as usual.
      2005-02-01 --andrej
    190. Bs_HeadCollector->addIntoHead() got 2 new params: $key and $dublicate.
      2005-02-03 --andrej
    191. Bs_SimpleObjPersister: fixed a bug, typed getErrorCode without brackets.
      2005-02-08 --andrej
    192. Bs_ScrollableDiv: added setSlideSpeed() and setWheelSpeed(), this is the
      new way to define a steady scroll speed.
      added horizontal support. mozilla doesn't do horizontal because of a
      mozilla bug. 2005-03-10 --andrej
    193. added Bs_HtmlInfo->fetchMetaDataForKey(). 2005-03-11 --andrej
    194. added Bs_HtmlInfo->fetchMetaDataForKey(). 2005-03-11 --andrej
    195. added Bs_DateIterator, wrote ecg for it. 2005-03-15 --andrej
    196. added ecg tests for Bs_DateUtil. found a problem in dateCalc with leap
      years. 2005-03-15 --andrej
    197. datepicker js component: when using convertField() as in example 3 and
      the field had a default value, it was not initialized anymore. now it is.
      2005-03-16 --andrej
    198. Bs_DatePicker js component: resetDate() didn't reset the input field before.
      only the internal date. fixed. 2005-03-17 --andrej
    199. added Bs_FileSystem::makeWebsafeFileName(). 2005-04-08 --fab
    200. Bs_XRay: moved the default activateOnIP() activation using 'localhost'
      into blueshoes.ini.php and the configuration into the global.conf.php
      file. see blueshoes.conf.php-dist. 2005-04-14 --andrej
    201. core/gfx/Bs_ColorCodes: added mixColor(). that already existed in the
      javascript libs, now also for php. 2005-04-27 --andrej
    202. instanthelp: added example3 that shows how it can be customized. using
      a custom storage (file instead of db) on the server. client is a bit
      different too. 2005-05-02 --andrej
    203. bs_imagearchive: fixed a bug in generateThumbnails() with lowercase that
      caused a problem on linux. 2005-05-09 --andrej
    204. DatePicker: implemented the internalDateFormat and displayDateFormat
      for both methods drawInto() and convertField(). both in the js component
      and in the Bs_Form field class. 2005-05-11 --fab
    205. Added javascript/core/date/Bs_DateUtil.lib.js, most functions come from
      the datepicker (but belong here). 2005-05-11 --andrej
    206. Bs_TextUtil->parseSearchQuery2(): added toggles for $toLower and $normalize.
      the default behavior stays the same. 2005-05-19 --andrej
    207. Bs_Is_Searcher->search2(): the original word and phrase are no longer
      modified by strToLower() and Bs_String->normalize(). only the internal
      words are. 2005-05-19 --andrej
    208. Added encodeFilename() in Bs_Misc.lib.js. it is a js implementation of
      core/file/Bs_FileUtil.class.php and used with texttype. 2005-05-20 --andrej
    209. Added core/html/Bs_HtmlPage.class.php. 2005-05-21 --andrej
    210. added the js component editablelistbox. added the classes
      core/lang/Bs_Eventable.class.js and Bs_Languageable.class.js.
      2005-06-01 --andrej
    211. added a js implementation of sprintf() in javascript/core/util/Bs_String.lib.js.
      2005-06-16 --andrej
    212. fia: added property overloading in the form of callbacks: bs_fia_get() and
      bs_fia_set(). 2005-06-17 --fab
    213. added the Bs_Form example postValidate.php. It shows how validation can be
      made after a form has been successfully submitted. 2005-06-23 --andrej
    214. added core/text/Bs_ClassLanguifier.class.php with an example in the subfolder.
      It Makes it easy for classes and objects to use text in different languages
      (i18n). 2005-06-24 --andrej
    215. Bs_Form: in Bs_FormFieldTxt added the features disablePaste, titleToTooltip
      and clickawayDefault. they're shown in the disablePaste.php example.
      2005-06-25 --andrej
    216. javascript datepicker: fixed a bug with updating the hidden field when
      convertField() was used together with different internal and visible
      date formats. 2005-06-28 --fab
    217. javascript slider: fixed a bug in getValueInPercent() when minVal was not 0.
      thanks to Carl Meisner for the bugfix. 2005-06-29 --fab
    218. added js instanceOf() because the "instanceof" operator is js 1.4+ only.
      2005-07-08 --andrej
    219. Bs_FormFieldSelect: fixed sortByText() to keep selected values selected.
      2005-07-08 --andrej
    220. Bs_MySql: added getCreateTableSyntax(). 2005-07-12 --andrej
    221. Bs_Form: has the new feature 'trackChanges' to see which field values
      have actually changed on the submit. with the method getTrackedChanges().
      see the new example trackChanges.php. 2005-07-21 --andrej
    222. javascript tree component: in initByArray() the arrays can now be hashes,
      not only vectors. they'll then be looped using for (foo in array) instead
      of for array.length. 2005-07-22 --andrej
    223. Bs_HeadCollector: added addJsCode() and the constants BS_HEADCOLLECTOR_JS
      and BS_HEADCOLLECTOR_JS_NOTAGS. it is a convenient way of adding js into
      the doc head instead of using addIntoHead(). the default behavior
      in spit() using BS_HEADCOLLECTOR_DEFAULT includes it. 2005-07-23 --andrej
    224. Bs_HtmlPage and Bs_Form now also support the news addJsCode() feature.
      2005-07-23 --andrej
    225. js Bs_Spreadsheet: fixed the typo sheedHeight to sheetHeight.
      added var colCaptions so that the default A-Z can be overwritten.
      if inserting/removing rows and cols is allowed can now be controlled
      using mayEditCols and mayEditRows.
      2005-07-27 --fab
    226. Corrected BUG in Bs_FileCache: If no cache file exists (it was never stored
      or was deleted), then the FileCache would go into error without a comment.
      New: Check if file exists first and if not, assume it was never generated
      (same state as if timeout happend or file had changed).
      2005-07-28 --sam
    227. Added new Class in core/net/snmp/Bs_Snmp.class.php
      Adds some extras to the snmp-funtions in PHP.
      2005-08-04 --sam
    228. Bs_FormContainer: added var wrappingTableTag. Elements no longer have to
      be wrapped in html tables in the containers. 2005-08-12 --andrej
    229. Bs_FormItAble: dataPrefix can now also be added in the field properties.
      2005-08-15 --andrej
    230. Bs_InstantToolTip.class.js: fixed a bug with the opening of a tool tip.
      when a tip was active and another one was clicked directly without
      releasing the open one, it didn't work. 2005-08-28 --fab
    231. Js tree component: added the onContextMenu feature, see example
      added the json syntax example (short array and object notation):
      2005-09-08 --fab
    232. js tree component: In Bs_TreeElement.attachEvent() the 2nd param yourEvent can be a function
      or a string to be executed. When generating the tree node data on the server side,
      it is not possible to assign a function directly. thus now the function name
      can be assigned as string, and it is detected as such.
      2005-09-09 --fab
    233. Bs_UrlCache: added params $expireSeconds and $checkOnly to isNotModified().
      no change with the default behavior.
      added the 'usedResources' feature. A list of resources can be named that will be
      checked for modification before returning in cachePage(). maybe this feature should
      rather go into Bs_FileCache?
      2005-09-16 --andrej
    234. Bs_FileCache: added shared memory caching as option (default off). see
      the methods setShmemUse() and setShmemSize(). 2005-09-17 --andrej
    235. Bs_HttpClient: implemented the acceptCookies feature and added example3 to
      show it. 2005-09-29 --andrej
    236. Bs_Snmp: added the SNMP Protocol V2 feature. This can be set by the constructor or
      set methode. 2005-10-04 --sam
    237. Bs_IndexServer: implemented synonyms. 2005-10-08 --andrej
    238. Bs_Exception: stackDump() adds a stackTrace() for the caller of stackDump().
      this is implemented using php's debug_backtrace(), so it is only done for
      php 4.3+. 2005-11-15 --andrej
    239. Bs_Om_OnomasticsServer: added removeQualifiers() and removeTitles(), added the
      usual ecg class with tests for it. 2005-11-15 --andrej
    240. Bs_MySQL: added 3rd param 'newLink' to connect(). it may still not open another
      db connection for you, see http://bugs.php.net/bug.php?id=34369 (use different
      host names for the same machine). 2005-11-15 --andrej
    241. made blueshoes compatible with php 4.4 (memory leak, return by reference,
      see various bug reports about it). 2005-11-18 --fab
    242. Bs_Is_IndexServer: changed cleanString() to split words with more than 1 dash
      while still keeping words with 1 dash together. examples: job-market becomes
      jobmarket while "job-car-appartement" becomes "job car appartement". in text
      ppl sometimes forget the spaces when using dashes. 2005-11-21 --andrej
    243. Added bs_clone() to clone objects in php4 and php5. 2005-11-24 --andrej
    244. Changed sop (simple object persister) to return an empty array in the load
      methods when no record was found. before an error was returned (bool FALSE).
      the change is done in _genericLoad() but affects all load methods. just
      check if the returned value is an empty array. 2005-11-25 --andrej
    245. Bs_Editor js component: added insertOrWrap() and added example 8.
      2005-11-25 --fab
    246. js datepicker: added example 10 to demonstrate the 'positionAbsolute'
      feature. 2005-12-02 --fab
    247. js findWrappingElement() in Bs_HtmlUtil: extended it so that the first
      param findTagName can be an array, and added a 3rd param stopTags.
      2005-12-07 --fab
    248. Bs_ButtonBar js component: added addHtml() to be able to add custom
      stuff into the toolbar (for example a dropdown field). 2005-12-07 --fab
    249. Added core/html/Bs_HtmlMetaCollector.class.php as a handler for meta
      tags. It's used in the cms. Added an ecg for it. 2005-12-08 --andrej

    version 4.5
    1. Bs_Form: a container can now have a template assigned directly via a string var.
      before, only file-based templates were possible.
      Bs_FormContainer: added var templateString.
      Bs_FormTemplateParser: added loadTemplateFromString().
      2003-08-10 --andrej
    2. Bs_FormFieldRadioJs: fixed a typo that rendered the (rarely used) elementList
      param in getField() useless. Anyway, it's still a problem to render the
      different options of a radio-js field to different locations. need to work
      on the generated javascript code. 2003-08-10 --andrej
    3. Bs_FormFieldSelect.class.js: setTo() now has a 2nd param 'type' to specify
      if the comparison should be done on the 'value' or 'text'.
      added method setText() to set a new caption for an existing entry.
      added method removeElement(). 2003-08-12 --andrej
    4. added application IndexedListManager. 2003-08-12 --andrej
    5. Bs_Tree: implemented a cheap version of lookAhead (preload down). works
      well. even with large trees that have 1000 nodes. added example 12 to
      show it. by default a lookAhead of 2 (not -1 which means unlimited)
      is used. 2003-08-12 --andrej
    6. Bs_Dropdown.class.js: added the rememberNewInCookie option, and example 4
      that shows its use. 2003-08-14 --andrej
    7. added bs_addIncludePath to Bs_Misc.lib.js. 2003-08-15 --andrej
    8. Bs_FormFieldSelect now supports to use the FlipFlop js component.
      2003-08-18 --andrej
    9. Bs_FlipFlop: fixed a bug that made a dblclick on the 'selected' field not
      update the hidden field (hidden, in form submitted value). 2003-08-18 --andrej
    10. Bs_Logger: fixed a bug in setDir(). it checked the old dir if it's
      writeable instead of the new given one. 2003-08-18 --andrej
    11. Bs_Form fields now support field names like 'bs_todo[dataHash][frameName]'.
      these produce arrays in the form post, and are now read in correctly after
      the post. 2003-08-18 --andrej
    12. Bs_FileManager: fixed 2 warnings. 2003-08-20 --andrej
    13. added js component Bs_DataGrid (very basic). 2003-08-20 --andrej
    14. added core/text/Bs_Ocr.class.php (very basic). 2003-08-20 --andrej
    15. Bs_DataGrid: extended. lots of work still to do. 2003-08-24 --andrej
    16. Bs_Radio: added the vars imgType, pixelate, invertActive, iconType. added
      exaple 6 that shows these features. changed captionAsAltText to
      captionAsTitleText and kept it backward compatible. reimplemented useMouseover.
      implemented the attachEvent methods, example 1 now shows this.
      2003-08-25 --andrej
    17. Bs_FormItAble now also supports the mode 'view', and not only 'add',
      'edit' and 'delete'. 2003-08-25 --andrej
    18. This change affects quite a few things. Fact: strip_tags() from php converts
      '<b>bold</b><i>italic</i>' to 'bolditalic' and not 'bold italic'. it merges the
      words. Bs_HtmlInfo uses that php function in htmlToText(), which is used in
      the Bs_FileConverter, which is used for pretty much any file conversion
      (word, excel, pdf, html, finally to plain text). so it affected the index
      server as well. this is now changed, in that '<' is simply converted to
      '< ' before doing strip_tags(). cheap, but ok here. 2003-08-28 --andrej
    19. renamed Bs_Url->getUrlJunk() to getUrlChunk(). :-) kept it backward compatible.
      2003-08-29 --andrej
    20. Bs_FormItAble: does not set submitted form values to the object we're handling
      in cases of 'view' and 'delete', since it makes no sense. 2003-08-29 --andrej
    21. Bs_Form: does not validate user input in case of 'view' and 'delete' since
      it makes no sense. 2003-08-29 --andrej
    22. Bs_TextUtil->parseSearchQuery() now supports the 'fuzzy' operator. example:
      +~"Bill Gates" and ~Microsoft
      might also find something that includes "Bills gate" and "Micro$oft.
      2003-09-02 --andrej
    23. IndexServer, namely Bs_Is_Indexer: implemented the fuzzy search logic on a
      per-phrase basis. the new feature in Bs_TextUtil->parseSearchQuery() now
      allows it to do fuzzy searches on parts of the query, instead of all/nothing.
      2003-09-02 --andrej
    24. Bs_FlipFlop now supports to disable the field using setDisabled(). see
      the new example 4.
      2003-09-02 --andrej
    25. Bs_DatePicker: added a reset function and the possibility to set
      an "" (empty) date. 2003-08-28 --sam
    26. Bs_FileSystem->makeValidFileName() added, with ecg tests. 2003-09-04 --andrej
    27. Bs_String->clean() has a new 3rd param $allowThese. 2003-09-04 --andrej
    28. Bs_Editor javascript component: when the unlink (opposite of createlink)
      was unset (to hide it), quite some cpu was wasted. (an exception got
      thrown, invisible for the user, but required cpu, in cycels). fixed.
      2003-09-04 --andrej
    29. bs_undoMagicQuotes() now also works on $_REQUEST. before, only get, post and
      cookies were done. 2003-09-08 --andrej
    30. bs_undoMagicQuotes() is now executed on every page request. it is directly built
      into blueshoes.ini.php. 2003-09-08 --andrej
    31. IndexServer: implemented the collocations feature. this allows us to
      recommend related words to the user. added the lyrics example to test and show it.
      example: someone is searching for "morissette". now we know which words occure the
      most together with morissette, so we can recommend them. the #1 is alanis.
      this helps the user to better find what he's looking for, especially when there
      are many results found. 2003-09-08 --andrej
    32. Bs_Db: getNumRecords() is now optimized in that no data is fetched from the
      db. the query is modified on the fly to a "select count(*)" query. debedoo
      certainly likes this. 2003-09-08 --andrej
    33. Bs_Editor js component: now the style of the editor window can be customized
      using the vars editorCssString and editorCssFile. want smaller fonts? or
      load your custom css settings for header tags? there you go. 2003-09-09 --andrej
    34. Bs_DataGrid: added more css class names, see the example. the sorting
      column can be visualized, see the example. lots of work still to do.
      2003-09-10 --andrej
    35. Bs_XmlParser.class.js: optimization that also affects jsrs. speeds up parsing
      a large xml string by many times. the problem was: in javascript, if you do:
      var string = "fffffffffffffffffffffffffffffff";
      for (var i=0; i<string.length; i++) {
      string = string.substr(1);
      that will make the string one char smaller each loop. and it reassigns the new
      string to the var 'string' each time. with large strings (some thousand characters),
      that is a very, very, very slow thing in javascript. and a longer string
      makes it slower *superproportionally*. it throws away the whole string each time,
      and makes a new one. no optimization is built in.
      the optimization in the parser is that we now don't work on the full string
      when it's not needed. we only pick a part, work on it, and expand it when needed.
      little benchmark:
      an array with 400 elements, each being a hash itself having 5 strings, structured
      as xml (using Bs_Wddx.class.js), took 300 seconds on a 2ghz machine. it's now down
      to 5 seconds.
      2003-09-15 --andrej
    36. Bs_SimpleObjPersister: the bs_sop_postStore() callback now has a 3rd param.
      bs_sop_preStore() has the 2 params: $sopAgent and $fields.
      bs_sop_postStore() had the 2 params: $sopAgent and $success.
      now it receives the $fields too, as 3rd param. it is a list of the fields
      that are affected (by default, all fields are stored). 2003-09-15 --andrej
    37. Bs_Checkbox: Fixed a bug i implemented in bs-4.4. When the checkbox was submitted
      along with a form to the server, the values were not right. No updates of the
      value was done on clicks. So the initial value was taken all the time. very
      bad, i'm sorry. 2003-09-16 --andrej
    38. Bs_TreeElement: since bs-4.4, the tree sometimes used 17 pixel per node instead
      of 16 in height. this was because of a css setting which worked fine with larger
      tree icons (see example 13), but not the standard ones. it most cases it wasn't
      a big deal, but sometimes it was ugly. fixed now. 2003-09-17 --andrej
    39. Bs_Slider: small change in internal _roundToGrid() method to avoid unwanted
      fractions when using a 'valueInterval' setting that is smaller than 1 (for
      example 0.1). 2003-09-17 --andrej
    40. Bs_Radio: the caption is used as alt text. that causes problems if the caption
      uses html (tags). so now it's only used as alt text if the caption has no
      tags in it. a strip_tag() would be another idea. 2003-09-23 --andrej
    41. Bs_Form: moved getVisibility() and the vars visibility and accessRights from
      Bs_FormField to Bs_FormElement (field is a subclass of element). this means that
      all fields still have the same functionality, but the other elements (text,
      html, image ...) now have that too. they can be set to hidden by code or
      by user rights. it was a design mistake that this has not been in
      Bs_FormElement from the start.
      Bs_FormField->editability, which belongs to the same family, stays in the
      field class, that makes sense if you think about it. 2003-09-25 --andrej
    42. Bs_Editor: made the toolbar buttons "compatible" to use with multiple instances
      on one page. didn't fully work in 'toolbar' mode before.
      added the 'x' to close the toolbar. an image would be nicer.
      2003-10-15 --andrej
    43. Bs_TabSet.class.js from (javascript\components\): The function switchTo() also accepts
      the tab's-caption name as parameter (used to only accept the tab-index).
      Also added an onTabSelect(myTabEventHandler) function and an example to show the use.
      2003-10-17 --sam
    44. Bs_ResizeGrip.class.js from (javascript\components\): Was not usable with Mozilla. Now
      it works (more or less), but is still a little clumsy.
      2003-10-17 --sam
    45. Bs_Browscap:
      modified the value of browserLanguages.
      referrer: is now passed along even if runTest() is used. so it's not lost.
      userType: if there is no KB installed, the most important spiders like googlebot are
      still detected.
      connectionType: now works.
      cookiesSession and cookiesPermanent: set to null if unknown, not false.
      same with javaScript and javaScriptEnabled.
      added a howto and 3 examples for this class.
      2003-10-18 --andrej
    46. Bs_ColorPicker: made it mozilla-compatible (without the picker itself, that is omitted
      in mozilla). 2003-10-18 --andrej
    47. Corrected bug reported by fklee at isuisse dot com: commented out empty <div></div>.
      It randomly caused an empty line in the tree in ie.
      2003-10-18 --sam
    48. Bs_SimpleSession.class.php has now it's own default data and is not depending on data
      set in $GLOBAL['APP']['sess']. Also added some examples.
      2003-10-19 --sam
    49. Bs_Db: added getAssoc3(). 2003-10-21 --andrej
    50. Bs_FormItAble: Fixed a bug that overwrote valueDefault in mode "add" which should not
      have happened. thanks to Thomas A. Johnson from mailroute.net for the notice.
      2003-10-23 --andrej
    51. Bs_TreeElement: the var 'icon' can now include a path. added example 15 that shows it.
      added the events 'onBeforeOpen', 'onAfterOpen', 'onBeforeClose' and 'onAfterClose'.
      extended example 6 to show it. 2003-10-27 --andrej
    52. Bs_Slider: small change in internal _roundToGrid() method for better number
      rounding. especially useful when using fractions. added the green slider to example 1.
      2003-10-27 --andrej
    53. Bs_Tree: optimized the lookAhead feature (a lot). the tree can now be used with an
      unlimited amount of nodes (theoretically). the node objects are not all instanciated
      when initiating the tree with the data anymore. before, only the rendering of hidden
      nodes had been postponed to the moment when the nodes were used.
      unfortunately when the checkbox system is used with the walking-down feature
      (checkboxSystemWalkTree >= 2) then this optimization is disabled. (think about it)
      2003-10-29 --andrej
    54. Bs_SpreadSheet: implemented the paste-functionality for mozilla using a workaround
      (because moz lacks access to the clipboard). also removed the description line of
      the toolbar, i don't think it's useful here, it only wastes space. added the
      field/value line below the toolbar. it displays the cell name (for example C4) and
      the value of that cell. especially useful when not all content is displayed in the
      cell because the value is too long. 2003-11-04 --andrej
    55. Bs_Form->includeOnceToHtml(): i am not sure how this happened, but the function
      used the keys of the given $includeOnce vector as value (instead of using the
      values). this resulted in returning garbage like:
      <script type="text/javascript" language="JavaScript" src="0"></script>
      it's fixed now. in case someone is relying on that wrong implementation from
      before: if the key is a string and the value is not, the key is used.
      2003-11-05 --andrej
    56. Bs_FileConverter: wvWare needs a capital W, at least on linux. fixed.
      2003-11-05 --andrej
    57. onomastics: made an editor for the relations using jsrs. 2003-11-08 --andrej
    58. Bs_TextType: now supports the lineSpacing param. 2003-11-12 --andrej
    59. Bs_FileUtil->decodeFilename() and encodeFilename(): now handles all chars.
      is used by Bs_TextType. 2003-11-12 --andrej
    60. Bs_TextType: images where the width/height was autocalcualted had a +20 in width
      and +10 in height to make sure it's engouh. the +20 is not needed anymore, the
      +10 is but only for multiline images. the return value of php's ImageFtBbox() is
      still undocumented, and i guess the behavior of the function will change in the
      sometimes the images don't have enough width, and a bit is cut off. will have to
      work on that.
      apache sends a 'forbidden' for url's equal or longer than 230 chars, but only
      if the directory to the url exists and the file does not. this can be handled
      by linking a 403 to the 404.php file too.
      2003-11-18 --andrej
    61. Bs_HtmlNavigation: changes i have to document, everything is backward compatible,
      added __CAPTION_UPPER__ and __CAPTION_LOWER__ (caption in uppercase, ...)
      2003-11-18 --andrej
    62. Bs_HtmlInfo: fetchLinks() uses the alt tag of images if the link has an image only.
      it now also works if the link looks like <a>&nbsp;<img>&nbsp;</a> ... the
      &nbsp; tags are now treated like spaces. if there is no alt tag but a title tag,
      that one will be used.
      getTagParam() now does not care about the case anymore.
      added fetchImageTexts().
      2003-11-19 --andrej
    63. Bs_Tree: getElementByCaptionPath() did not work with the new lookAhead feature.
      it now does. 2003-11-19 --andrej
    64. Bs_TextType: added new feature: you can now have the width/height autocalculated
      and then extended by some pixels, by specifying imgWidth = "+20". same for
      imgHeight. 2003-11-21 --andrej
    65. Bs_Slider: Slider was broken by change Nr.52. Added a change that works
      2003-11-26 --sam
    66. Bs_Slider: The Events attachOnSlideEnd() and attachOnSlideStart() should work now.
      Also removed some deprecated code. 2003-11-26 --sam
    67. Bs_HtmlTag: added getTokens(). 2003-11-26 --andrej
    68. Bs_Editor: added example 5 and 6. 2003-11-28 --andrej
    69. Bs_Editor: when the editor was used as toolbar, and it was closed while being in
      html (not wysiwyg) mode, the last changes were lost, and getValue() returned
      the text-version of the value (not the html value). fixed. 2003-12-02 --andrej
    70. Bs_FormFieldFile: fixed a bug that prevented file type checks (eg .gif) to work.
      thanks to Peter Lindstrom. 2003-12-14 --andrej
    71. Bs_FormItAble: extended the 'dataPrefix' feature. 2003-12-14 --andrej
    72. Bs_FormFieldTextarea: implemented the bgColorWarning feature (from the
      Bs_LimitedTextarea javascript component). 2003-12-22 --andrej
    73. Bs_TreeElement: the element now receives the colored background (default is yellow)
      also if the caption is a link, and has no js event attached. it used to be like
      that in a previous version. 2003-12-23 --andrej
    74. Bs_FileCache: there was a rare case where fetch() did not return the cache even
      when it was available. it did not cause problems; the only thing was that the
      cache was not used. fixed.
      setVerboseCacheNames(): only the first 60 chars of the origin file
      are used now, no longer 100. 2003-12-27 --andrej
    75. Bs_HnXmlHandler (the xml handler for Bs_HtmlNavigation) now uses a cache for the
      parsed xml files. this increases the speed *a lot*. there is an origin check;
      when the origin xml file changes, the cache is dropped and regenerated. no
      need to do anything. 2003-12-27 --andrej

    version 4.4
    1. Bs_Form: added new specialfield Bs_FormFieldFileBrowser. 2003-04-28 --andrej
    2. added Array.prototype.deleteItemHash() in Bs_Array.class.js to be able to
      remove elements from hashes, not only vectors. 2003-04-29 --andrej
    3. updated the Bs_Tree (js tree) to support drag&drop. experimental. added
      example 9 for it. 2003-04-29 --andrej
    4. added 4 new functions in Bs_Array.class.js: moveUp, moveDown, moveToTop, moveToBottom.
      2003-05-01 --andrej
    5. js toolbar now supports groups. and thus toggle-style buttons. 2003-05-02 --andrej
    6. many features for the filebrowser application. preview of files, for example.
      2003-05-02 --andrej
    7. filemanager: fixed a js problem with sorting of files. added a gif for sorting
      up and down. 2003-05-03 --andrej
    8. js tree: for some reason the code for the autocollapse feature was commented out.
      dunno why. but i've reactivated it. everything seems to work fine. 2003-05-05 --andrej
    9. js tree: added the openPath() feature. for this some changes in open() were needed.
      the new example 10 shows how it works. 2003-05-05 --andrej
    10. Bs_Dir: added the functions cp() and cpDir() to copy dirs recursively, by keeping
      the chmod. 2003-05-05 --andrej
    11. Bs_FileSystem: added getWithoutFileExtension(). 2003-05-06 --andrej
    12. Bs_Dir: added rm(), which is different to emptyDir(). 2003-05-06 --andrej
    13. js dropdown component: onChange now fires also when text has been typed and the
      text field lost the focus. thanks to Winnie Chou for reporting the problem.
      added example3.html to show the component in a form. 2003-05-12 --andrej
    14. Bs_Cug now creates a Bs_SimpleSession and not a Bs_SessionFile anymore if there
      isn't a global session instance already available. Bs_SessionFile is deprecated
      anyway. i don't expect this to cause problems in existing code. but then i'm
      not that sure. anyway, it can be worked around it by making sure the session
      exists before using Bs_Cug. 2003-05-13 --andrej
    15. spreadsheet editor now uses our js buttonbar and button classes instead of domapi.
      the context menu still uses domapi. 2003-05-15 --andrej
    16. added Bs_CsvUtil->guessSeparator() with ecg test. 2003-05-15 --andrej
    17. Bs_Dropdown.class.js: better switching from text field to select field and back.
      no listens onkeydown (enter, escape, F2). 2003-05-15 --andrej
    18. wysiwyg editor: now supports different levels of pasting. allow formatting (html)
      in pasted content? see Bs_Wysiwyg.class.js._fireEditareaOnPaste().
      example1.html shows it in instance 2. 2003-05-16 --andrej
    19. Bs_HtmlUtil.lib.js: added bs_stripTags() (dirty version). 2003-05-16 --andrej
    20. Bs_HtmlUtil->arrayToJsArray() can now deal with empty or non-array input.
      2003-05-17 --andrej
    21. Bs_Button.class.js now shows buttons inactive if set to status 0 using ms filters,
      thus ie only at the moment. looks really good. a mozilla workaround will follow
      somewhen. 2003-05-16 --andrej
    22. Bs_HtmlTableWindrose and Bs_TableStyler are updated to support meta information
      about styles. the meta information is:
      The first row is a title row
      The last row is a title row
      The first column is a title column
      The last column is a title column
      with this information we can present the best table styles from the available ones
      to a user for his specfic table. also there is the key 'tableTag', it's a hint
      that's not used from Bs_HtmlTable but can used from other scripts. 2003-05-21 --andrej
    23. Bs_HtmlTable: added 3rd param 'tableTag' to renderTable(). 2003-05-21 --andrej
    24. added Bs_HtmlTableWindrose->readByString(). 2003-05-21 --andrej
    25. Bs_SimpleObjPersister: fixed typo 'ignoreData' and 'ignorData' are now valid
      attributs 2003-05-23 --sam
    26. Bs_SimpleObjPersister: Bug correction : Adding a new field to the hint hash
      and reading the object (without writing any data) would leave the table
      unchanged (thus the new field was not added). Instead 'unknow field' warnings
      were thrown. This is corrected. 2003-05-23 --sam
    27. Bs_SimpleObjPersister: Bug correction : related to the bug above an
      other bug was corrected too. When adding a new hint field and following load it
      happend that the new field would receive the field-neighbors value.
      This is corrected. 2003-05-24 --sam
    28. Bs_Form: better support for multilevel forms. misc stuff. 2003-05-23 --andrej
    29. Bs_FormFieldCheckbox->getFieldText() now uses the label tag instead of javascript
      to allow clicking the text instead of the checkbox. the radio field did this
      already before. the getFieldCaption() still uses the js way.
      it matters with onClick: onclick only fires when you click the checkbox directly,
      or you click the text between the label tags. a js event that changes the checkbox
      value won't fire the onclick event, it won't even fire the onchange event in ie6! :/
      2003-05-23 --andrej
    30. filemanager: added new features: create folder, delete folders recursively (not
      only files), made it compatible to use without register_globals, create text files.
      cut/copy/paste files around with a virtual clipboard. 2003-05-25 --andrej
    31. Bs_File->_write() returned FALSE instead of TRUE if you wrote an empty string to a
      file, and it succeeded. this was the case because fwrite() returns the number of
      bytes written, and not bool. thus 0 bytes was interpreted as false. fixed.
      2003-05-25 --andrej
    32. added Bs_File->move(), it is like PHP's rename() but can overwrite existing
      destinations. 2003-05-25 --andrej
    33. Bs_TextType can not print text strings with an angle (rotation). 2003-05-26 --andrej
    34. Bs_ButtonBar.class.js and Bs_Button.class.js: added the "multiple choice" feature,
      the visible caption, and the option to draw the toolbar vertically. added examples 4-6.
      2003-05-28 --andrej
    35. Added Bs_CsvUtil.class.js, it is a translation of the php class. not everything done
      yet, but usable. 2003-05-28 --andrej
    36. Added Bs_String.lib.js, it has the bs_trim(), bs_ltrim() and bs_rtrim() functions.
      i am sure that it will grow. 2003-05-28 --andrej
    37. Bs_SpreadSheet: pasting is now possible, just hit ctrl-v on your cell. even areas
      from excel can be pasted, multiple cols/rows are detected and pasted correctly.
      addRow() and addCol() can now be called without param to have a new one at the
      end. it now uses Bs_CsvUtil.class.js, which uses Bs_String.lib.js.
      need to recode the redraw() logic, it's no good that after every small change
      redraw() is called. also the col width should not be lost. 2003-05-28 --andrej
    38. index server: Bs_Is_Searcher returned results that matched -words when the
      exclude word (-word) was at the last position, and there was no 'may' word
      (only must words "+word"). fixed.
      removed a 'var not set' warning that appeard when using phrase search. does not
      change anything, just no warning anymore.
      Bs_Is_Searcher->hintString ("did you mean: xy") is set to empty if no similar
      words found.
      2003-05-31 --andrej
    39. Bs_FormItAble not only listens on the $overwriteFormProps param in
      doItYourself(). 2003-06-02 --andrej
    40. Bs_FormFieldRadio now handles '0' values correctly (usual problem with empty().)
      doItYourself(). 2003-06-02 --andrej
    41. Bs_HtmlNavigation: fixed a side-effect of a new feature in _locateCurrentPage().
    42. Removed all deprecated bigbrother methodes from Bs_Object like bbXfoo().
      Also removed any use of it in BS. 2003-06-02 --sam
    43. Wenn using PHP 4.3 and up all calls to Bs_Error::setError can be simplified
      The last 3 parameters can safely be omited.
      Old: Bs_Error::setError('test_1', 'FATAL', __LINE__, 'function name', __FILE__);
      NEW: Bs_Error::setError('test_1', 'FATAL'); 2003-06-07 --sam
    44. Bs_Debedoo: updated the howto and example, and fixed a notice that showed up
      when set to. 2003-06-09 --andrej
    45. updated most howtos to use the new style. some content editing here and there.
      2003-06-09 --andrej
    46. added bs_isEmpty() into Bs_Misc.lib.js. added other prototype-things to better
      support mozilla. compatibility ... :/ 2003-06-14 --andrej
    47. added new javascript component: tabset. with example. a web page for it will
      follow. 2003-06-17 --andrej
    48. added new javascript component: numberfield. with example. a web page for it
      will follow. 2003-06-18 --andrej
    49. added new js file: core/gfx/Bs_ColorUtil.lib.js 2003-06-19 --andrej
    50. Bs_Button: dragging of the button icons is not possible anymore. newbies
      sometimes don't click 'properly', and drag the button. 2003-06-20 --andrej
    51. Corrected a few bugs and added some features in component Bs_Slider.class.js:
      bug 1) Clicking on the slider-handle (without moving it) passed an unrounded
      value (e.g. 3.234043) to attached functions waiting for an event.
      bug 1.1) Correcting above bug showed that returned value was also small.
      bug 2) If no fieldName was set, it had the value of 'undefined' instead of a
      unique name. Now it's set to the instance name of the component
      followed by the string '_value'.
      bug 3) Rendering was wrong if the range was above 0 and the default was given
      E.g. range 10-20 default 11 would render totally wrong.
      new 1) Replaced the dirty global functions with clean methods calls.
      new 2) You may pass the instance name directly in the constructor.
      E.g. mySlider = new Bs_Slider('mySlider');
      2003-06-21 --sam
    52. lang/Bs_Misc.lib.js: added queryStringToHash() 2003-06-21 --andrej
    53. html/Bs_HtmlUtil.lib.js: added the functions: bs_parseSimpleTagProps(),
      findWrappingElement(), expandSelectionToSimpleTag(). 2003-06-22 --andrej
    54. Bs_NumberField: added mouse wheel support. (note: only ie6 supports the
      onmousewheel event). 2003-06-23 --andrej
    55. added new javascript component: resizegrip. with example. a web page
      will follow. 2003-06-23 --andrej
    56. Bs_Misc.lib.js: added 2nd param 'stopIfAbsolute' to getAbsolutePos().
      2003-06-24 --andrej
    57. added new javascript component: LimitedTextarea. with example.
      2003-06-25 --andrej
    58. added web pages for all the new javascript components, see
      also added a 'misc' page. 2003-06-25 --andrej
    59. Bs_DatePicker now uses the Bs_NumberField for the year field. 2003-06-26 --andrej
    60. added new javascript component: Bs_FlipFlop. with example. see
      http://www.blueshoes.org/en/javascript/flipflop/ 2003-06-29 --andrej
    61. Bs_Checkbox: added convertField() and the var imgStyle. added example 2 for it:
      a value change (eg a click) now updates the icon itself, and does not require
      a rerendering of the full checkbox element. 2003-06-30 --andrej
    62. Bs_Dropdown: added convertField() to start with an existing text field,
      added example 2, fixed the autoAdd feature (in javascript, a class can never
      have a var and a method with the same name. one overwrites the other.)
      added the maxLength feature. added setSize() and documented the options to
      define the width of the fields.
      nicer rendering of the text field with the arrow button, it now nearly looks
      like a real dropdown. the button looks like it's inside the text field because
      of the border handling.
      added var fieldName, _updateHiddenField() etc to support an auto-updated
      hidden form field.
      2003-07-01 --andrej
    63. Bs_Button.class.js: added setTitle(), deactivated the ondrag code which was there
      for better mouse handling - it has issues. better off without. 2003-07-02 --andrej
    64. Bs_DatePicker: added convertField() to start with an existing text field and
      added example 3 to show this. using a Bs_Button instead of +/- chars to toggle
      the calendar layer now.
      When there was no default date, and the picker was opened, it showed the current
      day of the LAST month. the idea was to use the current date. fixed. if you know
      about javascript's date handling, you know how that happened. 2003-07-02 --andrej
    65. Bs_NumberField: added "drawButtonsInside" and "zeroFill" feature, added
      example 2 to show it. 2003-07-02 --andrej
    66. Bs_LimitedTextarea: added the setBgColorWarning() feature. the new example 2
      shows its use. 2003-07-02 --andrej
    67. Bs_Slider: added example4_smiley.html.
      added method setValue() and deprecated onChangeByApi(), it is the same but
      a better name. added the 4th param 'cssStyle' in setArrowIconLeft() and
      setArrowIconRight(). 2003-07-03 --andrej
    68. Bs_TreeElement: The tree allowed to visually select any element, even if it had
      no onclick event attached. the mouse over the element showed the hand instead
      of the cursor, and it was clickable. and it got the yellow background and the
      focus after a click. now it only allows this if there is some sort of
      onClick/onClickCaption attached. i don't think it will cause any harm, but then
      i'm not 100% sure either.
      The changes were around the lines 564 and 1279. 2003-07-03 --andrej
    69. Bs_Radio: implemented the allowNoSelection feature. 2003-07-03 --andrej
    70. Bs_Slider: added setDisabled() to disable/re-enalbe the slider. added
      example 3 for it. 2003-07-06 --andrej
    71. Bs_NumberField: added window resize handling and added a 1second interval to
      check the buttons position. added example 3 that shows it. 2003-07-18 --andrej
    72. Bs_SpreadSheet now works in mozilla 1.4. 2003-07-30 --andrej
    73. Bs_Tree: extendend example 10 to show how different icons can be used for the
      same tree.
      added Bs_Tree.elementCloseWalkDown() and Bs_Tree.elementCloseWalkUp().
      added example 11 that shows how the tree status (checkbox values, open nodes)
      can be fetched and how these settings can be applied to the tree again.
      2003-07-30 --andrej
    74. Bs_Browscap.class.php: better opera handling. does not execute unsupported
      ie code anymore. opera likes to identify itself as ie so it is not blocked
      out of websites.
      2003-07-31 --andrej
    75. Bs_LimitedTextarea is now mozilla and opera compatible. 2003-07-31 --andrej
    76. Bs_TitleToTooltip: mozilla and opera compatible. 2003-08-01 --andrej

    version 4.3
    1. the javascript tree can now be closed and reopened in mozilla aswell. mozilla
      does not support style="display:" it only supports style="display:block". 2002/11/12 --andrej
    2. the javascript slider now updates the text value in mozilla aswell. this did not work
      before because mozilla only supports innerHTML not innerText (yet?). also the colorbar
      feature works now. the problem was caused by a mozilla js bug. 2002/11/12 --andrej
    3. the javascript Bs_FormFieldSelect.class.js can now sortByText(). with example html file. 2002/11/13 --andrej
    4. added $APP['path']['toolbox'] as path in the blueshoes.ini.php 2002/11/14 --andrej
    5. Country.sql from the kb has been changed (the english and german spellings of cote d'ivoire:
      old: INSERT INTO BsKb.Country VALUES(NULL, 'ci', 'Elfenbeinküste; Cote d\'Ivoire', 'Côte d\'Ivoire', 'Côte d\'Ivoire');
      new: INSERT INTO BsKb.Country VALUES(NULL, 'ci', 'Cote d\'Ivoire', 'Elfenbeinküste', 'Côte d\'Ivoire');
    6. added new sql file to the kb: CountryCapital.sql (with php source file for import into the kb) --andrej
    7. updated the list of freemail providers (web.de, yahoo.some) --andrej
    8. updated the BsKb.Country table. added the BsKbCountrySononym table. --andrej
    9. updated bsSessionBrowscap() in Bs_Misc.lib.php, it won't forget posted data even after a redirect. 2002/11/19 --andrej
    10. New basic error handling concept was implemented with Class Bs_Error.class.php. Bs_Error.class.php is a so called
      "BS Language Component" (= *not* inherited by Bs_Object). For comfort some short hand function have been defined that
      base on this class: E.g. The global function bs_setError($msg, $msgType, $_line_, $_func_, $_file_). (sam)
    11. Bs_Object change. Including Bs_Error.class.php into Bs_Object and added new methodes (that use Bs_Error) in Bs_Object:
      setError(), getLastError(), getLastErrors(), getErrors() (sam)
    12. New basic debugging concept was implemented with Class Bs_XRay.class.php. Bs_XRay.class.php is a so called
      "BS Language Component" (= *not* inherited by Bs_Object). For comfort some short hand function have been defined that
      base on this class: E.g. The global function XR_dump($foo, $_line_, $_func_, $_file_).
      Bs_XRay.class.php is the *first* class that is included by default (in blueshoes.ini.php) (sam)
      (again, reported twice...)
      New basic Logging concept was implemented with Class Bs_Logger.class.php. Bs_Logger.class.php is a so called
      "BS Language Component" (= *not* inherited by Bs_Object). For comfort some short hand function have been defined that
      base on this class: E.g. The global function bs_logIt($msg, $msgType, $_line_, $_func_, $_file_).
    13. added core/html/Bs_HtmlEntities.class.php 2002/11/19 --andrej
    14. Bs_Array: re-added randVal(), updated hashKeysToLower() and hashKeysToUpper()
      to use array_change_key_case() if possible and return a new empty array
      if no array was passed as param. 2002/11/19 --sam/andrej
    15. fixed a bug in core/gfx/Bs_ColorCodes->rgbToHex(). 2002/11/20 --andrej
    16. added createDifferentColors() to core/gfx/Bs_ColorCodes. 2002/11/20 --andrej
    17. fixed a bug in Bs_Form that occured with php 4.2.2 but not 4.2.3, together with ie6 and some
      circumstances, not with mozilla/netscape. ask for details. 2002/11/15 --andrej
    18. updated Bs_ColorCodes->createDifferentColors() to use predefined colors (by default). 2002/11/26 --andrej
    19. changed Bs_SessionFile and Bs_Browscap to not create 2 sessions when using the redirection. 2002/11/27 --andrej
    20. updated instanthelp to use innerHTML instead of innerText cause mozilla still does not support it.
      todo: convert nl to br etc. 2002/12/02/ --andrej
    21. fixed a bug in the javascript slider that occured when typing in values and the minVal was not 0. 2002/12/09 --andrej
    22. fixed the tree so that it does not wrap anymore. was fixed in 4.2.5 --andrej
    23. added the toolbar control. ~2002/12/09 --andrej
    24. fixed css support for mozilla in the toolbar control.
      thanks to "Flying" (flying at dom dot natm dot ru) for information and the fixed code. 2002/12/12 --andrej
    25. added sams Bs_HtmlTableParser.class.php to core/html/table. it has been in the toolbox before. also
      updated the toolbox (and the website). 2002/12/12 --andrej
    26. Updated BS-framework to use the global function isEx() instead of $this->isException() 2002/12/11/ --sam
    27. Added new class Bs_SimpleObjPersister.class.php to core/storage/objectpersister.
      I think it's the bettre implementation of Bs_ObjPersister and may replace it. 2002/12/12 --sam
    28. updated the Bs_HtmlTable class to use &nbsp; for empty cells. 2002/12/14 --andrej
    29. fixed the Bs_HtmlTableStyle class when used with arrays and "firstcell" style settings
      (instead of xml). also added an example. 2002/12/14 --andrej
    30. updated the FileManager to use our Bs_Toolbar instead of domapi. 2002/12/15 --andrej
    31. added an example to the FileManager. 2002/12/15 --andrej
    32. added bs_lazyLoadClass() and bs_lazyLoadPackage() to core/lang/Bs_Misc.lib.php, have a look.
      2002/12/16 --andrej
    33. added studlyCapsToSeparated() to Bs_String. 2002/12/16 --andrej
    34. Bs_Form: added the Bs_Form->user and Bs_FormField->accessRights functionality. 2002/12/17 --andrej
    35. now document everything using 2002-12-17 instead of 2002/12/17. this is sam's wish for xmas. 2002-12-17 --andrej
    36. Bs_Form: added <bs_formbuttons /> for templates. added Bs_FormField->hideCaption.
      added Bs_FormFieldCheckbox->textStyles. fixed some bugs, misc changes. 2002-12-19 --andrej
    37. added Bs_Array->arrayToText(). 2002-12-22 --andrej
    38. added bs_undoMagicQuotes() # Check if magic-quotes are on, and if so strip all slashes from
      $_POST, $_GET and $_COOKIE and set magic-quotes flag to off. --sam
    39. bs_recursiveStripSlashes # Strips all slashes from an string or array/hash recursively --sam
    40. added Bs_Array->arrayMergeRecursive() because the php function array_merge_recursive() fucks up
      hashes with numeric keys. 2002-12-27 --andrej
    41. added Bs_HtmlUtil->arrayToHiddenFormFields() with ecg. 2002-12-28 --andrej
    42. we are now using tabs instead of spaces. files will have mixed 2-spaces and tabs until sam cleans
      this using our code-stripper and a regexp. in the end only tabs will be used. currently you need to
      set your editors tab width to 2, otherwise the files look crappy. 2002-12-31 --andrej
    43. added new Bs_FormFieldSlider class, the implementation of the javascript slider as form field.
      2002-12-31 --andrej
    44. javascript slider: added examples 3 (for non-framework users) and 4 (with the smiley). 2002-12-31 --andrej
    45. javascrpit slider: added/updated the class documentation for many class vars. 2002-12-31 --andrej
    46. updated Bs_HtmlUtil->arrayToJsArray() to accept vectors and treat them differently. added ecg
      tests. 2003-01-01 --andrej
    47. added new class: Bs_FormIniHandler to make ini files directly usable with web forms. 2003-01-01 --andrej
    48. added Bs_Array->copyValuesToKeys(). 2003-01-02 --andrej
    49. Bs_Form: added example 'renderMyself.php' to show how one can use selfmade form fields. 2003-01-02 --andrej
    50. added new class Bs_HnXmlHandler.class.php to deal with xml style and data files for the
      Bs_HtmlNavigation.class.php. 2003-01-02 --andrej
    51. fixed Bs_HtmlUtil->filterForJavaScript() to convert int 0 to '0' instead of ''.
      the problem was that php interprets (0 == '') as true. we need ===. 2003-01-03 --andrej
    52. updated Bs_TextType->save() to auto-create a path if it does not exist. 2003-01-04 --andrej
    53. javascript tree: fixed a bug in Bs_TreeElement.initByArray() with the 'isChecked' default value.
      conversion to int is needed, otherwise the value '0' is interpreted wrong. 2003-01-05 --andrej
    54. javascript tree: added new radio button feature and example 8 to show it. 2003-01-05 --andrej
    55. fixed a possible bug in the global function getTmp(). if the temp dir could not be determined the
      function tried to create /tmp. but even if it succeeded the function returned FALSE instead of /tmp/.
      2003-01-08 --andrej
    56. Bs_Form now has full support for file uploads using the Bs_FormFieldFile class. this has not really been
      implemented before. there are quite some special cases for it. have a look at the class doc. 2003-01-08 --andrej
    57. Bs_CugDb now has the 'isUserError' field in the log db table to make a difference of user errors like
      wrong password and system/account errors like 'account expired'. on system/account errors we don't double
      the login timeout. the user-supplied data was ok. 2003-01-10 --andrej
    58. added new class html/Bs_HtmlInfo to fetch information about an html page. 2003-01-11 --andrej
    59. fixed a bug in Bs_Url->parseUrlExtended() that occured when there was no path part in the url. 2003-01-12 --andrej
    60. Extended Bs_HtmlNavigation.class.php in that you may pass your own unique key for every navigation entry
      and only if no key is given then the url is taken (instead of only using the url as key). 2003-01-14 --sam
    61. Added the new placeholder __KEY__ in Bs_HtmlNavigation.class.php and user-placeholders. User-placeholders
      all start with '__USER_' e.g. '__USER_foo'. 2003-01-14 --sam
    62. added new Bs_Odbc class for db access. untested. 2003-01-16 --andrej
    63. added Bs_Url->realUrl(). it works like php's realpath(). ecg tests added aswell. 2003-01-18 --andrej
    64. updated phpunit to work with php4.3 (a method was defined twice). 2003-01-19 --andrej
    65. extended Bs_Url->parseUrlExtended() to return 'extension' aswell, if present. that is the file
      extension, for example 'php' for http://www.blueshoes.org/foo.php. updated the ecg. 2003-01-19 --andrej
    66. added file/converter/Bs_FileConverterPdf.class.php 2003-01-19 --andrej
    67. added 'cpdf', a set of php classes to generate pdf files. it's to pdf what jpgraph is to charts.
      2003-01-20 --andrej
    68. fixed a possible bug in the Bs_Smtp class that made the body appear in the header when using
      some sort of mailserver. 2003-01-22 --andrej
    69. added param $makeVarGlobal in Bs_HtmlUtil->arrayToJsArray(). 2003-01-23 --andrej
    70. Bs_FormContainer: added new option $pseudoIfNada. the container becomes a pseudoContainer if
      there is nothing to show. active by default. 2003-01-23 --andrej
    71. Bs_FormFieldRadio: implemented modes 'read', 'readonly' and 'show'. using images. 2003-01-23 --andrej
    72. javascript Bs_Slider and Bs_FormFieldSlider have the new options moveX and moveY for easy and
      fast positioning (correction of positioning) by pixels. 2003-01-23 --andrej
    73. $_SERVER['DOCUMENT_ROOT'] was not alway ending with a slash '/' because some ppl just dont
      add the slash at the end of the htdoc dir-path (what we think is a bad habbit). fixed by sam.
    74. Bs_Form: added new special field: Bs_FormFieldDatePicker.class.php. with example. 2003-02-03 --andrej
    75. added new Bs_DatePicker javascript component. with example. 2003-02-03 --andrej
    76. finally implemented the hidden field of the Bs_Slider (javascript component and Bs_Form field) properly.
      before it had a bad field name. sam hacked it to get it to work in the meantime. 2003-02-03 --andrej
    77. Bs_SimpleSession: added the feture to destroy session data by passing the session ID (SID).
      Bs_SimpleSession::destroySID($sid, $destroySessName).
    78. Js Wysiwyg editor: added new 'custom 1' tab for full customization. buttons can be added, whatever.
      2003-02-06 --andrej
    79. Js Toolbar: buttonbar help bar can now have the ? icon. 2003-02-06 --andrej
    80. Onomastics plugin: added the option to define your own communicator (serverside php script). 2003-02-07 --andrej
    81. Bs_UnitConverter->bitsAndBytes(): added 4th param $round to round the returned value with a default
      of 2 (digits). 2003-02-08 --andrej
    82. Bs_Form: added new onEnter option: "js:doThis" (read doc for var Bs_Form->onEnter). 2003-02-10 --andrej
    83. updated Bs_DatePicker, added many new features. added 2nd example. 2003-02-11 --andrej
    84. lots of work on the indexserver plugin, new application based on it named websearchengine. 2003-02-11 --andrej
    85. Wrote a new Javascript XML-Parser (Bs_XmlParser.class.js) and a WDDX-de/serializer(Bs_Wddx.class.js).
      JS-RS should now be able to transfer *all* data transparently (and mutch faster :). Data is now passed using
      http-post by default (instead of http-get; http-get still has a problem) 2003-02-11 --sam
    86. added 2 new Bs_Form examples using the wysiwyg widget. 2003-02-11 --andrej
    87. Bs_InstantHelp (tooltip): it now renders to left/right bottom/top, wherever there is enough room.
      2003-02-11 --andrej
    88. Bs_FormFiled has now a server side syntax check for URL and a rudimentary IP 2003-02-14 --sam
    89. Bs_Form: moved vars caption, hideCaption from Bs_FormField to Bs_FormElement, that's where they
      really belong to. that means all non-field elements now can have a caption aswell, but don't
      use it by default. backward compatibility is given.
    90. Bs_FormFieldFile: with var $showCurrentFile one can now specify if and how a currently stored file
      should be made visible in the form. 2003-02-18 --andrej
    91. Bs_CugDb: new methods killOldSessions() and getOldSids() to prevent account-sharing. 2003-02-18 --andrej
    92. javascript tree: new method Bs_Tree->elementOpenWalkUp(). 2003-02-20 --andrej
    93. added new class: core/gfx/chart/Bs_IntervalChart. 2003-02-20 --andrej
    94. extended the Bs_Browscap class to detect pdf/svg/windows media and a few others on ie (win) and
      on mozilla. flash has already been detected. 2003-02-20 --andrej
    95. added new experimentary class core/text/Bs_DailyText. 2003-02-20 --andrej
    96. added new method Bs_Array->reindex(). it takes an array and creates a new index, starting
      at pos 0 (vector). does php really not have such a function? did not find one. 2003-02-20 --andrej
    97. added new "example" (or web frontend) for the Bs_Stripper class, available at
      /_bsCore/util/examples/Bs_Stripper.php. 2003-02-23 --andrej
    98. Bs_TreeElement.class.js: added new var dataContainer. 2003-02-23 --andrej
    99. Bs_Form: lots of new examples. some minor changes. 2003-03-02 --andrej
    100. Bs_Tree: new methods getActiveElement() and setActiveElement(). 2003-03-03 --andrej
    101. bsSessionBrowscap(): when the browscap kicks in, post data is persisted in a temp file.
      when browscap redirected the temp file is read and $_POST is made available again. this
      is how it was. now $_REQUEST is available too. 2003-03-03 --andrej (and sam)
    102. Bs_Form: fixed support for Bs_FormField->mustOneOf. it was broken. 2003-03-03 --andrej
    103. Plugin InstantHelp: made the ToolTip work in Mozilla (1.3b), and made it respect scrollTop and
      scrollLeft. 2003-03-05 --andrej
    104. Bs_Form: added new classes Bs_FormFieldCheckboxJs and Bs_FormFieldRadioJs. these are bs_form
      implementation of the javascript components. 2003-03-06 --andrej
    105. Added new icons for javascript components Bs_Radio and Bs_Checkbox (mainly disabled icons). 2003-03-06 --andrej
    106. 2 new global bs-fuctions (def. in Bs_Misc): bs_storeVar($aPhpVar, $file)/bs_loadVar(&$aPhpVar, $file)
      These 2 functions are very useful for saving(/reading) PHP vars in an *easy-to-read format* to disk. 2003-03-06 --sam
    107. Updated Bs_Misc.lib.js to emulate the IE-DOM functions innerText(), insertAdjacentElement() insertAdjacentHTML()and
      insertAdjacentText() in Mozilla1.2+/Gecko/NS6+ 2003-03-19 --sam
    108. updated Bs_IniHandler to allow [] chars in the value. 2003-03-22 --andrej

    version 4.2
    1. 2002/11/06
      a lot of these are structural changes.
    2. javascript directory moved completely out of core, one up. (andrej)
    3. moved plugin directory out of core, one up. (andrej)
    4. smartshop is now an application, not a plugin anymore. (andrej)
    5. moved the cms dir out of the core, it is not an application for itself. (andrej)
    6. the deprecated core/lang/bs_map.class.php has been removed. such a hash-map is not needed [anymore] in php. (andrej)
    7. all directories are now written in lowercase. class files are still the exceptions, starting with an uppercase letter. other files use “studly caps”. (andrej)
    8. imagearchive is now an app, not a plugin anymore. (andrej)
    9. updated the coding guidelines.
    10. splitted jsrs into client and server part, so the server is now a plugin, and the client is in javascripts plugin directory. (andrej)
    11. cleaned up everything in javascript. for the new rules see the coding guidelines. (andrej)
    12. updated md5.js to avoid possible conflicts because of poor naming in the global scope, and renamed it to md5.lib.js.
    13. renamed Bs_Slider.class.js, Bs_Array.lib.js, Bs_Misc.lib.js Bs_Soundex.class.js, Bs_Number.lib.js, these are the new names. (andrej)
    14. moved the wddx js libs into the util folder and renamed them. they don’t belong to jsrs. (andrej)
    15. Bs_TemplateParser now extends the Bs_XmlParser and not the deprecated Bs_HtmlParser anymore. moved the templateparser into the html/form directory, renamed it to formtemplateparser, it’s only used there. the old cmt directory has been removed. (andrej)
    16. Bs_Misc.inc.php is now Bs_Misc.lib.php.
    17. moved the Bs_LanguageHandler from util to text.
    18. the js stopwatch is now Bs_StopWatch.class.js, updated the file name, class name and the example. the example is now in a subdir.
    19. javascript jumpToFirstError() is now bsFormJumpToFirstError(), same with bsFormToggleCheckbox() and bsFormToggleContainer() (used from bs_form).
    20. javascript: form/utit.js and formUtil.js merged, now called form/Bs_FormUtil.lib.js
    21. oodb and objectpersister moved into subdirs, those are packages.
    22. moved the 3 table classes into core/html/table, they deserve their own package.
    23. the javascript select fields are now in it’s own class, Bs_FormFieldSelect.class.php.
    24. the 3 cug classes are now in the subdir core/auth/cug.
    25. howtos, examples and manuals are now directly where they belong, in subdirs named “howtos”, “manuals” and “examples”. so they’re on the same level as “ecg” directories.
    26. moved the fileconverter classes from /core/util/ to /core/file/converter/.
    27. moved debedoo from /core/storage/debedoo/ to /applications/debedoo/
    28. moved core/phpunit/ to core/lang/phpunit/
    29. added the new php-doc lines @since and @status, examples:
      @since bs4.1
      @since php4.3
      @since bs4.1, php4.3
      @status stable|experimental
      you may want to check the codingGuidelines.txt for all @vars.
    30. New include philosophy for require_once($APP['path']...
      All path parts are small letters and the subpath is part of the 'right side'
      OLD: require_once($APP['path']['core/Html'] . 'foo.class.php');
      NEW : require_once($APP['path']['core'] . 'html/foo.class.php');
    31. extended the javascript tree control when working with the checkbox system. (a few special cases)
    32. added the javascript dropdown control
    33. added the javascript radio control
    34. In Bs_IniHandler.class.php corrected quote-handling. Added file write function. (sam)
    35. updated the slider to work with mozilla (tested 1.0 and 1.2beta).
    36. updated the wysiwyg editor and the spreadsheet editor for bs4.2, and made them much more usable using a class.
    37. added the filebrowser "application" to the codebase. it's not mentioned on the website yet. i am not sure
      if it will remain there. so far it's used for the wysiwyg editor as image selector.
    38. In Bs_Dir. function getFileList() 3x faster.
      Corrected a potential bug (file with name 'false').
      Added bettre comment. Added fuctionality: new ['returnType'] = 'cascade2 (sam)
    39. In Bs_FileSystem added getRealPathSplit() and realPathSplit(). Both accept a path and retun a hash that
      with canonicalized real pathname split in ['pathRoot'] <- Things like '/', 'c:/', 'http://', 'ftp://'
      ['pathCore'] <- e.g. 'path/to/a/subdir/' and ['file'] <- if a file was in the path find it here
    40. Changes in Bs_Array.class.php:
      - Removed obsolet functions and code.
      - Simplified getPos()
      - hashKeysToLower() and hashKeysToUpper() us PHP-function if version is >=4.2
      - New Set-function intersect(), diff(), complement(). (PHP-function are similar but are not censequent with hash-arrays)

    Want to match "William Clinton" when searching for "Bill"? Missing "José-Maria Rodriguez" when looking for "Jose Rodrigues"? The Bs_Onomastics plugin can help you. more ...

    Let us know

    Have you done something interesting with BlueShoes or one of its components?