CHANGES

Path: CHANGES
Last Update: Fri Jan 07 23:20:39 JST 2005

2.0.0 preview 1

Main Changes

  • Enabled managing components statefully.
  • Enabled communicating with subcomponents (nested components).
  • Changed not to need creating directory for each component.
  • Changed format of template file (.html) to use HTML attributes to declare elements instead of <CGIKit> tags.
  • Changed format of binding file (.ckd) to Ruby script.
  • Reformed APIs.
  • Added ckold2new to convert .ckd file of 1.x into one of 2.x to misc directory.

Changed Elements

Examples

  • Removed all examples and added HelloWorld, Calc and CKWiki.

1.2.1

  • Fix that literals of array and hash can’t be parsed in definition files.

1.2.0 (2004/4/15)

This version supports only Ruby 1.8.0 or later.

New Features

  • Enable validation of values for CKText and CKTextField.
  • Add WEBrick and Template adapters. The Template adapter returns HTTP response objects instead of displaying HTML string.

Changed Elements

  • Enable all elements to set optional HTML attributes.
  • Enable omitting semicolon as term in definition files.
  • Change to raise error if definitions of elements are repeated.
  • Disable checking undefined attributes of elements.
  • Remove "action" attribute of CKForm.

New and Changed APIs

  • Refactor process to check session.
  • Change CKErrorPage to be loaded by default.
  • Remove CKStringScanner class.
  • Change using Enumerable#each_with_index when setting instance variables of "item" attribute of CKRepetition.
  • Change setting nil for session ID and session after deleting session with CKApplication#clear_session().
  • Change cookie header into the lead of response header.

Fixes

  • Fix that order of setting form data to instance variables in component is not ordered.
  • Fix that session is not enabled indefinite if timeout is setted to 0.
  • Fix that to enable no session IDs in URLs and cookies.
  • Fix that CKCheckbox in CKRepetition do not work with sessions.
  • Fix that authorization of sessions do not work correctly.
  • Fix that raising error if log files is not existed with max_file_size of log option.
  • Fix that "enabled" attribute of CKGenericElement cannot be false.
  • Fix that value of "value" attribute of CKTextField is not be escaped.

1.1.0 (2003/11/4)

New Features

  • Correspond to ruby 1.8.0.
  • Add CKResourceManager class that manages resources like image files, etc.
  • Enable specifying expire time of cookie used for record session IDs. You can set the time with session_cookie_expire attribute of CKApplication.
  • Abolish defining accessors of attributes to use with elements. Elements use instance variable directly if you don’t define accessors.
  • Enable using adapters automatically whether CGI or mod_ruby.
  • Attach cgikit.el development tool for Emacs by rubikitch.

Changed Elements

  • Add "maxlength" attribute to CKTextField.
  • Add "height", "width", "data" and "mime" attributes to CKImage.
  • Add "fileupload" attribute to CKForm.
  • Change class of data excepted uploaded file to String at sending multipart form data with CKForm.

New and Changed APIs

  • Change to display name of HTML file occured parse error.
  • Change to output errors that CGIKit can trap to a log filed
     if log outputer is setted to  the file.
    
  • Add CKKeyValueCoding module.
  • Change CKUtilities class to module.
  • Add hook methods the following.
    CKComponent#post_action:This is called after invoked actions.
  • Change methods the following.

    Change method names

    CKApplication#pre_run:-> pre_action
    CKComponent#pre_run:-> pre_action

Fixes

  • Fix that "escape" attribute of CKBrowser is always setted to true.
  • Fix that HTML control characters don’t be escaped at displaying value of "value" attribute of CKText.
  • Fix using CKFileUpload with setting character code occurs error.
  • Fix that an application name can’t be displayed correctly in path of the application with directories included periods at error page.

1.0.1 (2003/7/22)

New and Changed APIs

  • Add a hook method CKApplication#pre_run(). This is called before generating specified component. When calling the method, objects of request and session are already setted.

Fixes

  • Fix "values" attribute of CKPopUpButton that didn’t work.
  • Fix that "Content-Dispostion" header can’t be setted for CKResponse object.

1.0.0 (2003/7/15)

Official release. Switch licence from GPL licence to Ruby licence.

Experimental Feature

  • Enable using with mod_ruby.

New Features

  • Add "values" attribute to CKBrowser and CKPopUpButton.
  • Enhance logging feature of CKLog.
  • Support specifying character code of form data. By default, Japanese character codes only.
  • Support interpreting locale with language preference of browser.

New and Changed APIs

  • Add comment format for <CGIKIT> in template files.
  • Add CKAdapter::ModRuby.
  • Delete "default" attribute of CKBrowser.
  • Change CKCheckbox to always display content of "value" attribute along HTML 4.01 specification.
  • Add session() to CKComponent. It is alias method for CKApplication#session.
  • Change CKCookie#new to receive arguments for all attributes.
  • Change exclusive_lock() and shared_lock() of CKFileLock to receive arguments the same with arguments of open().
  • Change to raise CKError when clearing session with incorrect methods. Use CKSession#clear in automatic session management, or CKApplication#clear_session.
  • Change to raise SessionTimeoutError when accessing with session IDs not existed.
  • Add languages() to CKRequest. The method returns an array of languages.
  • Add hook methods the following.
    CKApplication#pre_respond:It is called before sending HTTP response to browser.
    CKComponent#post_run:It is called after setting form data for instance variables and run action.
    CKComponent#convert_char_code:It is called before setting form data for instance variables. The form data is converted to specified character code in the method.
  • Change classes and methods the following.

    Delete a class

    CKLock

    Move methods

    CKUtilities.parse_query_string:-> CKRequest.parse_query_string
    CKUtilities.parse_cookie:-> CKCookie.parse_raw_cookie

    Delete a method

    CKApp#debug

Fixes

  • Fix warning in verbose mode.
  • Fix infinite loop at using automatic session management with cookie.
  • Fix CKByteData#write_to_file couldn’t work.
  • Fix "empty" attribute of CKString couldn’t work.
  • Fix "enabled" attribute of elements to not display.
  • Fix error page couldn’t be display at raising errors about attributes of elements.

Examples

  • Add "HelloWorldModRuby" for mod_ruby.
  • Add Japanese locale to "Examples".
  • Add example code for logging to "ErrorScreen".

1.0b7 (2003/4/17)

Last beta version.

New Features

  • Add file uploading element CKFileUpload and generating HTML tags element CKGenericElement.
  • Enable form elements in CKRepetition elements.
  • Enable literals of Array and Hash in binding files.
  • Add "FileUpload", "AddressBook" to samples. And add "RepetitionTablePage" and "GeneratingElementPage" to "Examples".

New and Changed APIs

  • Change "disabled" attributes for CKHyperlink and form elements to "enabled" attributes. The attributes enables the elements when setted true, disables when setted false.
  • Add "method" attrubute to CKForm.
  • Add "enabled" attribute to CKResetButton.
  • Add managing byte string class CKByteData.
  • Add element id class CKElementID. Displayed components and invoked actions are managed by the objects.
  • Add managing elements’ attributes module CKElement::ElementAttribute. The module checks attributes and adds HTML common attributes to all elements displaying HTML tags.
  • Add managing state of elements module CKElemenet::ElementState. The module manages state of CKConditional.
  • Add handling session errors handle_session_error() to CKApplication.
  • Add managing session database CKSessionStore.
  • Implement multipart had not been implemented.
  • Delete searching accessors of components.
  • Add send_redirect() to CKApplication.
  • Change CKAdapter#run’s arguments to get HTTP request and response objects.
  • Add template_file(), definition_string(), definition_file() and variable?() to CKComponent.
  • Change classes and methods the following.

    Change names of methods

    CKApplication#attributes_check:-> check_attributes
    CKElement#init_element:-> init
    CKElement#oid:-> element_id
    CKComponent#html_string:-> template_string
    CKRequest#single_param:-> form_value
    CKRequest#multiple_params:-> form_values
    CKResponse#send_redirect:-> set_redirect

    Move methods

    CKElement.parse_ckd_value:-> CKComponent#parse_ckd_value
    CKBinding.bind:-> CKComponent#bind
    CKSession#save:-> CKApplication#save_session
    CKSession#restore:-> CKApplication#restore_session
    CKSession#clear:-> CKApplication#clear_session
    CKURL#url:-> CKApplication#url

    Move classes

    CKAdaptee::CGI:-> CKAdapter::CGI
    CKSession::SessionTimeoutError:-> CKApplication::SessionTimeoutError
    CKSession::SessionAuthorizationError:-> CKApplication::SessionAuthorizationError

    Delete classes

    CKURL, CKAdaptee, CKBinding

Fixes

  • Change a character for splitting query string in URL to ’;’.
  • Change default value to true for CKApplication’s "debug" attribute.
  • Fix a part of HTML text for CKErrorPage.
  • Fix "string" attribute of CKHyperlink can’t be set Integer objects.
  • Fix CKHyperlink to parse <CGIKIT> elements in enclosed the elements.
  • Fix processing concurrently "list" and "count" attributes of CKRepetition.
  • Fix "escape" attribute of CKString can’t be set false.
  • Fix a spell miss of "columns" attribute of CKText.

1.0b6 (2003/2/22)

New Features

  • Introduce session management.
  • Reimplements parsers that makes performance up.
  • Add "SessionTest" to samples.

New APIs

  • Add "query" attribute to CKForm.
  • Add "error_page" attribute to CKApplication.
  • Add http_version_line() to CKMessage.
  • Add status_line() to CKResponse.
  • Add send_redirect() that redirects to specified URLs to CKResponse.

Fixes

  • Change naming rule for "name" attribute of CKForm that created automatically.
  • Change return value of CKApplication#handle_error() to CKComponent objects.
  • Change the default value for "status" attribute of CKResponse to status code 200 ( OK ).
  • Fix type for "status" attribute of CKResponse to Integer from String.
  • Fix CKUtilities#escape_html() that don’t escape single quotations.
  • Fix that "string" attribute is disabled if "disabled" attribute is true in CKHyperlink.
  • Change resource directory is traced recursively when searching image files in CKImage.
  • Change the default value for "escape" attribute of CKPopUpButton and CKBrowser to true.
  • Change name for "selection" attribute of CKPopUpButton to "selected".
  • Fix raising error if "list" attribute is nil in CKPopUpButton, CKBrowser and CKRepetition.
  • Fix disabled "escape" attribute of CKBrowser.
  • Fix that radio buttons don’t work if definition names differ from values of "name" attribute in CKRadioButton.
  • Change CKURL#url() to add a session ID and query string for URL.

1.0b5 (2002/12/13)

New Features

  • Write RDoc documents.
  • Introduce error showing page. An error page will be shown a reason with stacktraces when exception occurred.
  • Introduce directories for extention elements and components. Files in the directories will be searched and required in creating elements or components.
    $LOAD_PATH/cgikit/elements:For extention elements
    $LOAD_PATH/cgikit/components:For extention components
  • Introduce checking attributes of elements. Set false for CKApplication#attributes_check to stop checking.
  • Combine library files. The file will make performance up more than the splitted files in Ruby 1.6.x.
  • Add "ErrorScreen" to samples.

New APIs

  • Introduce CKPartsMaker. If you access an including CKPartsMaker component directly, you will be redirected to a substitution component ( default is "MainPage" ).
  • Add logging class CKLog.
  • Add locking file class CKFileLock.
  • Add methods getting form parameters and cookies to CKRequest.
  • Add page() method that creates new components to CKApplication.
  • Add add_cookie() method CKComponent and CKMessage.

Fixes

  • Delete "item" attribute of CKBrowser and CKPopUpButton.
  • Change the class name from "CKExceptionPage" to "CKErrorPage".
  • Fix a problem that CKConditional parses HTML in spite of conditional.
  • Change name of "selected" attribute for CKPopUpButton to "selection".
  • Fix a problem that CKString occurs error if "value" attribute is nil when "escape" attribute is true.
  • Fix CKRequest#from returns HTTP header "HTTP_FROM".
  • Fix "enctype" attribute of CKForm has "POST" when set value but "POST, GET, HEAD".
  • Delete CKCookieManager.
  • Fix a key name of "master_locale" that is appended to a query string in CKURL#url().

1.0b4 (2002/10/17)

Fix bugs and refactoring source code.

  • Fix reading components in CKApplication#component_path ( the former path ).
  • Fix sending component data in CKURL#_parse. Accodingly delete CKComponent#fetch, _fetch_from_request.
  • Fix html parser cuts a part of string in repeating parsing.
  • Fix CKCheckbox element shows the "value" attribute in spite of non setting it.
  • Fix CKForm element can’t run without setting CKApplition#baseurl ( the former application ). Change using SCRIPT_NAME of the environment variable when baseurl has no value.
  • Fix CKText element ignores the "value" attribute.
  • Fix CKImage element searches for only CKApplication#resource. Change searching CKApplication#baseurl when resouce has no value.
  • Fix CKString element ignores "true" value not string enclosed quatation in "escape" attribute.
  • Add some attributes to CKApplication.
    path:The file system path of the program.
    component_path:The relative file system path of the components.
    baseurl:The program URL relative to the server’s document root. ( the former application ).
    name:The name of the program minused extension.
  • Add the ’’ delimiter can perform string in binding file.
  • Add the # comment delimiter can comment out binding file.
  • Support the <cgikit/> concluded CGIKit tag in HTML file.
  • Define the exception class CKError.
  • Define cookie class. You don’t have to use cookie with cgi.rb.
  • Define CKUtilities module has escaping, etc. methods.
    CKMessage#escape:-> escape_html
    CKMessage#unescape:-> unescape_html
    CKMessage#date:-> date
    CKMessage#_cookies:-> cookies
    CKAdaptee::CGI#escape:-> escape_url
    CKAdaptee::CGI#unescape:-> unescape_url
    CKAdaptee::CGI#parse:-> parse_query_string
  • Change the names of many methods according to Ruby coding style.
  • Change the single instance method to class method in CKBinding, CKDefinition.
  • Add new "Cookie Counter" and "Reqest Shower" samples.

1.0b3 (2002/10/9)

Change initializing logic.

  • Use install.rb to install CGIKit.
  • Divide the library into separate files.
  • Change initializing Logic by adding CKAdapter.
  • Replace source code with cgi.rb by CKRequest and CKResponse.
  • Add a method CKElement#init_element that can initialize a component without arguments and overriding initialize.
  • Change singleton CKApplication to not singleton.
  • Change initialize methods for CKElement and CKHTMLParser.
  • Move CKElement#_fetchFromRequest to CKComponent.

1.0b2 (2002/9/13)

Fix some codes.

  • Edit comments for RDoc.
  • Delete "autoload".
  • Delete $CKApp of global variable.
  • Change default application path using Dir.pwd.

1.0b (2002/9/3)

First release.

[Validate]