-------------------------------------------------------------------------------- Chan Changelog -------------------------------------------------------------------------------- 0.8.0 -------------------------------------------------------------------------------- 2009-02-24 [Controls.Image] + Now renders using a 16x16 invisible gif if no Path is set [Controls.ImagePanel] + Can now set SelectedIndex in Page_Init or from ASPX before adding images [Controls.Link] + Revamped, now supports ID, Class, Enabled, OnClick and Text properties -------------------------------------------------------------------------------- 2009-02-19 [Resources] - invalid/valid gifs etc + New icons sourced from Mark James @ http://www.famfamfam.com/ Controls.Control Controls.js Controls.css ~ Adjusted invalid image placement and styling to sit better next to inputs -------------------------------------------------------------------------------- 2009-02-17 Controls.DecimalBox Controls.Int23Box - Deprecated AutoFormat + AutoLimit bool - wether or not values higher/lower than max/min are re-set + AutoZero bool - Wether or not, when mandatory, it replaces null with Min + Changed Javascript validation to use a new JSON based system + (Int32Box only) - internal overflow check with invalidation + Major internal code cleanup Generic - Removed all RebuildQueryString functions Page + public QueryString collection, allows you to add/remove items + BuildQueryString function for appending to links etc + VirtualPath property + NoScript renamed to Page_NoScript for consistency ! Forms within Panels or TabPanels would not postback (wrong FindControl call) Controls.TabPanel + Now works outside of a Form control + Can have visible panel id set via querystring in form [TabPanelID]=[PanelID] -------------------------------------------------------------------------------- 2009-02-16 Generic + Two new overloads for the static RebuildQueryString function, allowing you to automatically remove or replace a key/value pair -------------------------------------------------------------------------------- 2009-02-13 Controls.Button ! Minor cleanup to rendering logic, now correctly disables image-buttons etc. + A disabled Image Button will be greyed out (using a CSS opacity trick) -------------------------------------------------------------------------------- 2009-02-12 Page + Page_Styles property, for linking CSS files, operates same as Page_Scripts DecimalBox ! Wouldn't correctly render any value set from code! + Min and Max are now int? instead of using an overload of -1 to mean "off" Int32Box ! Wouldn't correctly render any value set from code! -------------------------------------------------------------------------------- 2009-02-11 Controls.Control ! Flagged as abstract Controls.TabPanel + Javascript to select the correct current panel after a reload of postback -------------------------------------------------------------------------------- 2009-02-09 [Controls_TabPanel.js] + NEW FILE Controls.TabPanel Now ClientValidation on a full form will invoke TabPanel validation and so highlight tabs that contain invalid items. -------------------------------------------------------------------------------- 2009-02-09 Site Page Control NoScript Configuration Boolean, propogates from Site (via web.config) to Page (public property) to individual controls. Each higher authority can force the lower (e.g. setting Site.NoScript to ConfigBool.True will force every control in every page to NOT generate javascript). Various other controls now also consult this alongside ClientValidate when generating their HTML. Site Temp_Dir, Site_Root, Chan_Root and Http_Root properties made read only Form ClientValidation now defaults to True AutoValidation debugged Controls.TabPanel [Controls_Panel.js] + Added javascript tab switching whilst preserving the NoScript postback ability. Respects TabPanel's, Page's and Site's NoScript settings. Also respects TabPanel's ValidatePanels parameter, which prevents the user switching tabs if the current tab's contents do not validate. Control ! Server Side invalid-image HTML would not set the IMG TITLE tag to the reason Controls.Int32Box Controls.DecimalBox ~ Changed default width from "Norm" to "Thin" Controls.ImagePanel ! DropDown imagepanel would break javascript when selecting an image for the first time - fixed by defaulting to Clear.gif when non selected. [Controls.js] ! Numerous Int32Box/DecimalBox validation issues ! Validation issue where Chan_[Size] was being confused with control type ! Base64 encoding functions try to hand over to window.atob / btoa where available but were doing it the wrong way around! + Chan_Controls_Validate() for validating all controls in an array, split out of Chan_Form_Validate, used by TabPanels to validate panels on tab switching -------------------------------------------------------------------------------- 2009-02-06 [Controls.js] Chan_IntoHtml now has a new overload where you can pass in a second param of a bool to preserve spaces (i.e. not convert " " to " ") -------------------------------------------------------------------------------- 2008-12-09 Controls.ImagePanel + Now hijacks Control.DoBeforeRender to invoke each child Image's BeforeRender function which in turn allows their Zoom paths to be cached using javascript for much faster/smoother image galleries, done this way to intercept both embedded and programatically added images + Now sets ParentPage/Form/Site and Control on all child Images -------------------------------------------------------------------------------- 2008-12-08 Controls.ImagePanel + NEW PROPERTY - onclick - allows you to name a javascript function that will be called with a reference to the javascript object that controls the image panel when the user selects an image CC_ImagePanel javascript object + property onclick - stowes pointer to above + property SelectedImage - reference to HTML IMAGE/INPUT tag that is selected -------------------------------------------------------------------------------- 2008-12-07 Controls.ImagePanel ! SelectedIndex.get incorrectly range-checked m_iIndex instead of value -------------------------------------------------------------------------------- 2008-12-04 Controls.Upload Now Respects Enabled property Controls.DropDown Now (via hidden form field) will remember its selected value across postbacks when disabled -------------------------------------------------------------------------------- 2008-11-26 Page Now has various config bools to control wether various things are stumped up in the HTML, e.g. the FORM tag will now only include enctype multipart if an Upload control is contained within the page (tho not only if in that particular form - at the moment, but you get the idea) New ImageCache, a string collection that you can .Add(string) the Path of Images you want pre-loaded by javascript for rollovers Image Target="PostTag" redacted Target="Switch" - uses javascript onmouseover to replace the image itself with the "zoom" path -------------------------------------------------------------------------------- 2008-11-21 Controls.Panel Javascript now allows for html inline setting of top and left when parsing Controls.ImagePanel Javascript! Target, Target Tag & Image selection all work in both JS and NOSCRIPT sets top/left to show current selected image when parsing ignores Panel.Div property as JS scripts/dropdown/scrolling need it -------------------------------------------------------------------------------- 2008-11-20 Controls.Image Now respects NOSCRIPT in conjunction with Target property Controls.ImagePanel Now remembers the Image that was "Selected" via user-click Image move and swap functions Remove( Image ) and RemoveAll() functions Page Added if(window.Chan_Page_Load) check to end-of-stream script block -------------------------------------------------------------------------------- 2008-11-19 [CSS / JS / Source] All "Chan_Controls_" references shortened to "Chan_" Generic Html, Url and Base64 coda functions now all retun "" if input string is null Controls.Panel When invisible and remembering would forget any child Image Controls' Paths When invisible and remembering would forget any child Upload Controls' Paths When disabled and part of a TabPanel it's selection tab/button is disabled Controls.TabPanel When disabled all its tab/buttons are also disabled. Controls.Upload Did not upload! (slightly fatal!) Now Base64 Encodes its hidden ___Path control for obscurity and html safety -------------------------------------------------------------------------------- 0.7.9.0 2008-11-14 [Build] + Chan_SQLite now built and zipped up [Chan_SQLite] NEW Demo site A Blog-like site powered by an SQLite Database Extra to Chan_Clean and Chan_Demo Includes slightly more extensive templating -------------------------------------------------------------------------------- 2008-11-10 [Mono Support] + chan_demo tested on apache2 + mod_mono under openSuse 11.0 Controls.ImagePanel ! Now inherits from Panel to centralise Scroll parameter support/rendering Controls.Panel ! Changed scroll rendering, css and javascript so that a noscript scrolling panel will use overflow:scroll at the full size of its container, rather than the 16px wide/tall Chan scroll buttons sitting there being useless and taking up space. -------------------------------------------------------------------------------- 2008-11-08 [Resources] ! Clear.gif is now transparent + Arrow plain+highlighted gifs for all 8 directions used by scrolling panels Controls.Panel + NS,EW,NSEW and Full settings for Scroll parameter all now working Controls.Imagepanel + If not Enabled then images contained within it will not be clickable Controls.Image ~ Target : if target is an Image id the Zoom path will be sent to it along with the (hidden) tag attribute. For any other control the Tag will be sent to it's Text parameter. -------------------------------------------------------------------------------- 2008-11-07 Controls.Panel + Scroll parameter, allows you to apply funky scrolling ability with noscript overflow:scroll as an automatic fallback -------------------------------------------------------------------------------- 2008-11-06 Page ! Additional new "Deferred" PostBack rule, when a submitting ID is passed in it can be re-split into two further parts [ControlID] and [PostBack] causing that Control to have its PostBack() called with the postback string AFTER all other postback processing has finished. Controls.TabPanel + Tab Buttons now use the above postback rule to switch tabs Controls.ImagePanel + NEW + You can Embed or Programatically add images and it will render them all within itself. + Target property - propogated down to embedded images and uses above postback rule for Programatically added images (only if javascript unavailable) Controls.Image + Now Base64 Encodes its path when using the Remember property + Tag property - for storing a string with the image, is transmitted by the Target action and crosses postbacks when using the Remember property + when Target is set but Control.Enabled is false renders as a plain image -------------------------------------------------------------------------------- 2008-11-05 [Resources] + Unknown.gif - shows question mark + White.gif - white + Clear.gif - white (will be invisible eventually) [Javascript] + Chan_Image_Zoom() - for Images that have a Target image and Zoom path set Controls.Control + Class property - allows user to append CSS classes to the final control not yet inherited/implimented by all derivatives Controls.Image + Zoom property - allows you to specify a high res path, use with the new... + Target property - allows you to have thumbnails populate another image. + Impliments Control.Class property Controls.Button ! Correctly renders and posts back when using an Image="" parameter, this now makes toolbars possible! -------------------------------------------------------------------------------- 2008-11-04 [Javascript] ~ Some as yet unused grid related code moved out of the core Controls.js ~ invalid image ID changed to include three underscores instead of one [Controls] ~ invalid image ID changed to include three underscores instead of one Controls.TabPanel + Now shows an indicator against a tab button that has invalid children + When switching tabs after a "ValidateForm" button has posted back invalid indicators against the tabs and children will remain in place until an other (normal) button postback that does not "ValidateForm" occurs, at which point they will all vanish. This is so that after (for example) attempting to save an invalid form the user can still get to the offending control(s) in the tab it occupies without "losing" the invalid indicator and reason. -------------------------------------------------------------------------------- 2008-10-24 [Controls] ! All control meta-ids and information tags now use three underscores and this combo is trapped in Init() to prevent user created controls mirroring these. An example is if you have an upload named "myUpload" there will be a hidden meta control which Chan creates and uses named "myUpload___File". Controls.Control + New general Size property, accepts Thin,Norm,Wide. TextBox.Wide (etc.) redacted as a result. These are now generalised in the CSS so developers can adjust the standard widths to suit. Controls.Date ! Now correctly persists its value across postbacks when in a hidden panel -------------------------------------------------------------------------------- 2008-10-23 Controls.TextBox Controls.CheckBox Controls.Radio Controls.Password Controls.DecimalBox Controls.Int32Box Controls.DropDown + Now use Html namespace to control rendering + Now respect Enabled bool -------------------------------------------------------------------------------- 2008-10-22 [Javascript] Controls.js now forked into Controls_Grid.js and ie6.js Added begginings of locale support (only a handful of EN strings at mo) Added Chan_Page_Load() function to wire up Grids and kick off IE6 scripts Added Chan_Version global string [CSS] Added ie6.css (support code for HEAD conditional comment not in yet) Site.Form_AutoValidate Site.Form_ClientValidate New web.config parameters used to control form validation, to emulate 0.7.0 you'd set these to True and False, respectively Html New Namespace for putting together HTML tags for output, will replace the clumsy static Control.Make function system Controls.Control.BeforePageLoad Controls.Control.AfterPageLoad Controls.Control.BeforePagePreRender New Control events with corresponding recursive "Do" functions Control.Events Removed Controls.Control.Validate Now only fires when the controls parent form is validating itself and not on every page load Controls.Form AutoValidate property moved to be internal, can be overriden by site ClientValidate property added, which can be overridden by site Anchor property (default:true) append an anchor to the top of the form in the GET/ACTION Controls.Button ClientValidation now works correctly alongside ValidateForm! Reworked to use Html namespace for rendering Controls.TabPanel New Control which shows a row of tabs and hosts child Panel controls Controls.Panel Uses "Text" property as its button label when used in a TabPanel Controls.DecimalBox Controls.Int32Box NEW -------------------------------------------------------------------------------- 2008-10-15 [Build] New build script combines building Chan.dll and the Clean and Demo sites. It also copies JS and CSS resources into these then zips them both up before finally posting the entire set to the cyclomedia /pub/chan dir! Form + AutoValidate property, true by default for backwards compatibility but set to false by any Buttons with ValidateForm set to true. Controls the calling of Control.DoValidate Button + New Click event fired for Page.PostedButton only (from Page.OnLoad) after all Control.Events have finished firing + New ValidateForm property, overrides Form.AutoValidate and allows Forms to only be (server side at present) validated by particular button presses. Control + New OnPreRender function invoked from page to fire... + New PreRender "event" Page + Now seeks and fires child control DoPreRender functions -------------------------------------------------------------------------------- 2008-10-10 [Build] Changed version to 0.7.1.10 Moved source into dedicated /c_dev/ folder and out of /c/ ftp tree Page + No longer relies on ClientValidation to determine wether or not to insert Controls.js or set Chan_Chan_Root on the client but still only places them when Controls are present -------------------------------------------------------------------------------- 2008-08-12 Controls.RadioGroup Controls.Radio + Finally added! the RadioGroup handles postback and delegates the "checked" flag to the correct Radio at render time, even if it's a Radio you've spawned on-the-fly, e.g. when using a StringBuilder to make a set of table rows. Hopefully similar postback-magic will be able to be added to other dynamic controls too. Generic + added static StripHtml() function for cleansing Html tags from strings -------------------------------------------------------------------------------- 2008-08-08 Controls.Control + Invalidate function for manual invalidation! -------------------------------------------------------------------------------- 2008-07-31 Generic + MapPath Controls.CSS + Now inserts it's Text property in Tag_Open to allow easy access from code. -------------------------------------------------------------------------------- 2008-07-09 Generic Controls.Control + New recursive FindControl courtesy of "Leading The Next Inquisition" Controls.Panel ! Would override own visible property - did not check Remember or IsPostBack -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 0.7.0.5 2008-06-06 web.config + Chan_Chan_Root setting to locate the Chan support files default "/Chan" Site + Chan_Root public property from web.config Page + Page_Scripts property, give it a comma seperated list of javascript files to link to in the page HEAD + Page_Head property, lifted into this from Template + Now checks for existence of Controls and only then includes their CSS and JS + You no longer need a template file to have a page with a title and head (scripts etc) instead a "middle" fallback render mode exists with just the basic HTML in place. The final fallback being used for AJAX scripts and having no HTML - just raw output. Template - Removed Chan Controls CSS file inclusion - folded into Page ! FallBackRender() is now a static function - no Template instance is needed Controls.Script + Allows simple way to embed per-page Javascript with option to leave inline or insert into the HEAD. Respects Chan.Controls.Visible for itself and it's ascendants. Controls.CSS + Identical to Chan.Script but for per-page CSS Generic + Join() for joining multiple strings as quickly as possible + RandomInt() for generating random numbers -------------------------------------------------------------------------------- 0.6.0.0 2008-03-25 + ImageTools Class housing static image load/save and resize functions + FS Class housing static file path manipulation functions + Generic Class housing static functions with nowhere else to live! + Controls.Upload File upload control Controls.Form + now includes querystring in form action (target page) + now encodes as multipart (to support upload control) Page ! now overrides OnInit, OnLoad and OnPreRender directly thus completely bypassing the built in Page_ events and ignoring any AutoEventWireup - Panel never properly developped but may reappear one day! -------------------------------------------------------------------------------- EOF --------------------------------------------------------------------------------