CHAN - Bloat free ASP.Net

Introduction | About | Roadmap | Changelog | Licensing | Reference | Download | Guides: Windows , Linux/Mono , Building

Changelog

Version 0.8.5 (full changelog)
Site
  • New Frag_Root path set via web.config, dictates the virtual location of Fragment ascx files
  • Fixed exception when Chan_ paths were not set in web.config, these now properly default
Page
  • Automatically parses, loads and sets properties of Fragments defined in the ASPX
Template
  • Title,Page_Title,Site_Title,Chan_Root,Site_Root,Http_Root tags/tokens filled in after Page contents has been rendered, meaning the page's contents can itself contain the escape codes for these.
Icon
  • Added Date, Link and Blank icons
Controls.Control (base)
  • Fragment support code, inc. allowing nested fragments
  • New size property option of "Mega"
Controls.Fragment - NEW
  • Chan's answer to ASP's UserControls, Master Pages and Repeaters
  • Can contain and process their own forms and controls, including fragments!
  • Prefixxing child controls with Fragment ID is optional and off by default
  • Have Render and ToString functions so they can be used as repeating templates
  • Can be entirely contained in the ASPX, have contents auto-loaded from an ASCX or loaded on the fly from codebehind
  • Can be bound to template regions
Controls.Button
  • Fixed bug where client-side validation was never triggered by a ValidateForm button
Controls.CheckList
  • AddButton() and AddHeadButton() functions + overloads
  • Fixed rendering issues where row or head buttons were specified but not both
  • Clicked property now returns the Posted Back row id even before the list is populated
Controls.Date
  • Major overhaul and cleanup
  • Now includes javascript date picker
  • Min and Max values that accept dates and offsets
Controls.List
  • Ability to set class on ListItems, with Add() function overloads to simplify this
Controls.TextBox
  • Breaking Change - Removed Multiline property
  • Added Type property with options of single (default), multi and rich
  • New Rich mode implimenting CKEditor
  • Respects the Class property
Controls.TabPanel
  • Javascript fixup, including remembering selected tab when refreshing/reloading the page
Controls.Upload
Generic
  • ReplacePaths() - mirrors Site.ReplacePaths()
  • ResolvePath() - Combines Server.MapPath() and Site.ReplacePaths() in one
Resources
  • CSS : Increased textbox and button padding from 1px to 3px, making them chunkier
Site Bundles
  • All have had a layout restructure and all use the App_Code for their CS files, rather than requiring a compiled DLL in the bin folder
  • Chan_Demo : Now uses a Fragment to layout the page and control the menu, also includes an experimental VS 2008 C# Express solution.
General
  • Chan is now built using Visual C# 2008 Express instead of the .Net 2 SDK, mainly to allow the use of intellisense when developing
  • Support for the .Net /App_Code/ directory, instead of requiring a DLL and the .Net SDK
  • Various public and protected members and functions converted to internal and/or protected internal
Version 0.8.1 (full changelog)
Site
  • Fixed truncation of second-to-last char when a Root path was read from web.config that had a trailing slash
  • New ReplacePaths() function which accepts a string and returns it with [Chan_Root],[Site_Root] and [Http_Root] replaced with their respective web.config entries.
Page
  • NEW Location object instance for simple URI manipulation, replaces pubilc QueryString collection.
  • Fixed HEAD inline Script block being rendered when no controls were in the page.
  • Removed link to ie6.css
  • Controls.css now appears in the HEAD before any user Page_Styles
  • General cleanup, now uses StringBuilder and/or Generic.Join() throughout
Template
  • TemplateFile path can now be a local physical path or a relative path - it will figure out which it is automatically.
  • TemplateFile can now contain any of the three Chan [????_Root] path escape sequences.
  • No longer need to Add() Regions to the Template, if you set a Region's contents via Template[ RegionName ] it will be created automatically
  • Removed original built-in Region string getters/setters (only used by Page anyway)
  • New built-in regions "Chan_Root","Site_Root","Http_Root" to reflect the [????_Root] path escapes
  • New built-in regions "Site_Title" and "Page_Title" to complement the constructed "Title" region
Location - NEW
  • New class which reflects both Javascript's window.location object and the .Net URI object
  • Simple cloning constructor for quick manipulation of the current URI
  • Built-in read/write and fully public QueryString collection
  • Href and RelativeHref string getters for use in link creation or Response.Redirect stuffing
Icon - NEW
  • New class containing a raft of static string getters, each returning the URI of a 16x16 png Icon
  • Icons derived from Mark James's CC-Licensed Silk Iconset
  • Can be utilized directly from ASPX by referencing [Icon.IconName] in an Image or Button control's Path and Image properties, respectively
Controls.Control (base)
  • Better use of native C# String functions in internal logic, including calls to StartsWith() etc.
  • Most string manipulation now done using SringBuilgers and/or Generic.Join()
Controls.Button
  • Link and Image properties can now contain any of the three [????_Root] Escapes
  • Link property can now start with "^" to signify "Open in new window"
  • Image property can now contain Icon class references, e.g. [Icon.Home]
  • OnClick now included in submit button javascript onclick if it starts with "return"
  • No longer throws an exception when Link and OnClick are both set
  • Much needed cleanup of internal logic and rendering code
Controls.CheckList - NEW
  • New Control for building simple Tables which may or may not contain a column of Checkboxes/Radios and Buttons.
  • Row-Buttons can have server-side Click() event wired up, just read the CheckBox.Clicked property to find the clicked on Row
  • Can be used as a very basic grid control by using tab-delimited Header/Row text
  • Built-in Checkbox column has automatic Check-All and Uncheck-All buttons
  • Javascript enhanced but 100% NOSCRIPT compatible!
Controls.DropDown
  • Now allows you to set the Value property before filling it with items.
  • Add(object,object) overload now also treats DBNull as ""
Controls.Image
  • Path and Href can inlcude any of the three [????_Root] escapes
  • Href property can now start with "^" to signify "Open in new window"
  • Path property can now include icon escapes, e.g. [Icon.Accept]
  • Cleanup of CSS support, inc styling for a disabled non-linked image
Controls.Label
Controls.Literal
  • New Persist bool property allowing them to retain their Text across postbacks.
Controls.Link
  • Href can inlcude any of the three [????_Root] escapes
  • Href property can now start with "^" to signify "Open in new window"
Controls.List - NEW
  • New Control for building ordered or unorderd lists.
  • Includes a small suite of Add() overloads for simple addition of plain text or links
  • Contains a child ListItem class for advanced manipulation and creation of nested lists
  • Contents can have HtmlEncoding disabled to allow for use of own item HTML
Controls.Panel
  • New Region property, allows a Panel's contents to be automatically rendered into the named Region in the Page's Template.
Controls.Upload
  • Now uses an Icon for its "Change File" button.
  • "Change File" button now uses javascript to revert to the standard Upload control, with NOSCRIPT postback fallback
  • Some cleanup of code, HTML and CSS
Resources
  • CSS : Now targets Eric Meyer's reset.css
  • CSS : Removed grey background for disabled image buttons, but increased the opacity from 50 to 33%
  • JS : New C__Http_Root and C__Site_Root global variables representing the root paths
  • JS : C__Root renamed to C__Chan_Root for consistency with the other root paths
Site Bundles
  • Chan_Demo : Built in Self_Test page and source removed, replaced with standalone (no codebehind) Chan_Self_Test.aspx
  • Chan_Clean : Built in Self_Test source removed, replaced with standalone (no codebehind) Chan_Self_Test.aspx
  • Chan_SQLite : Close() and Dispose() called on all DataReaders
  • Chan_SQLite : Makes use of new Panel.Region capability and Controls.List
  • Chan_SQLite : Included Chan_Self_Test.aspx
 
Version 0.8.0 (full changelog)
Site
  • New Chan_NoScript config bool - For allowing, forcing or disabling javascript througought the site
Page
  • New Page_NoScript config bool - For allowing, forcing or disabling javascript for all controls on the page
  • New Page_Styles string - For listing CSS files to include, works same as Page_Scripts
  • New QueryString collection - replaces Request.QueryString and can have items added/removed
  • New VirtualPath string property
Controls.Control (base)
  • New NoScript property - For allowing or disabling javascript
  • Invalid image styling and placement improved
Controls.DecimalBox
Controls.Int32Box
  • Deprecated AutoFormat property.
  • New AutoLimit property to auto bind the value to min/max without invalidating the control
  • New AutoZero property to auto bing the value to min when it is not a number and the control is Mandatory
  • (Int32Box only) New Overflow invalid state for when value is outside Int32 bounds
  • Min,Max,Digits and Places are now all nullable, latter two still parse -1 as NULL from ASPX (due to ASPX flaw!)
  • Cleanup of code logic, Text property is now read only
Controls.TabPanel
  • Tab switching and validation uses javascript if available
  • Allows individual Tabs to be disabled by disabling the Panel
  • New QueryString override, allowing you to manually specify [TabPanelID]=[PanelID]
  • Now works outside of a Form control
Controls.ImagePanel
  • Target uses Javascript if available
  • Remembers and highlights (via css class) the "Selected" image
  • When using Target and Javascript the "Zoom" images are precached on the client
  • Remove( Image ) and RemoveAll() functions
  • Image move and swap functions
  • Javascript onclick binding fired when an image is selected
Controls.Image
  • Target works without javascript
  • Target allows a value of "switch" for Javascript rollover between Path and Zoom images
  • Will show a 16x16 invisible gif if Path is not set
Controls.Upload
  • Fixed!
  • Now Base64 encodes its paths for HTML safety and a little obscurity
Controls.DropDown
  • Remembers its selected item across postbacks when disabled
Generic
  • RebuildQueryString and BuildFormAction functions removed (functionality folded into Page)
Resources
 
Version 0.7.9
Site
  • NEW - Chan_Form_AutoValidate web.config bool - Wether or not a form's controls are validated on any/every submit or per-button-controlled
  • NEW - Chan_Form_ClientValidate web.config bool - Wether or not to allow client-side javascript pre-validation of form controls
Generic
  • NEW CLASS - Contains static helper functions outside of Server/Page context.
Controls.Control (base)
  • NEW - Enabled bool - Wether or not the user can interact with the control
  • NEW - Invalidate( string s ) - Set a control's state to Invalid including a reason string.
Controls.Button
  • NEW - Click Event - Fired after Page.Page_Load for a clicked button
  • NEW - Click_BeforePageLoad Event - Fired before Page.Page_Load for a clicked button
  • NEW - ValidateForm bool - Wether or not this button triggers a form validation
Controls.CSS
  • Now allows setting of inner markup via the Text property
Controls.DecimalBox
  • NEW CLASS - dedicated Decimal input with formatting rules, min and max values and javascript pre-validation
Controls.Image
  • Target property - when set to the ID of another image control will set its Path to this image's Zoom property when clicked on by a user. Works with or without javscript.
  • Zoom property - URL of a full size / zoomed in version of the image, for use with Target
  • Tag property - Used to store a user string alongside the image, propogated when using Target
Controls.ImagePanel
  • NEW CLASS - Used to display a set of images in a controlled gallery-like manner. Derived from Panel so Scroll works and can have a global Target image ID set for its children
Controls.Int32Box
  • NEW CLASS - dedicated Int32 input with formatting rules, min and max values and javascript pre-validation
Controls.Panel
  • Text property used to set button text when grouped in a TabPanel
  • Scroll property to show arrows for javascript scrolling of contents, shows CSS overflow scrollbars when no javascript is available
Controls.RadioGroup
  • NEW CLASS - For grouping radio buttons
Controls.Radio
  • NEW CLASS - Represents the HTML Radio control
Controls.TabPanel
  • NEW CLASS - Automatically Groups Panel controls into a tabbable interface!