-------------------------------------------------------------------------------- Chan Changelog -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 0.8.1 -------------------------------------------------------------------------------- 2009-03-31 Template + Template( TemplateFile ) constructor ~ FallBackRender() made virtual instead of static, no longer accepts params ~ Cleanup of string manipulation to use String.IsNullOrEmpty and Generic.Join ! Now uses StringBuilder for Region replacement, should improve speed/ram use Icon ! Nav_Left, Nav_Right, Invaild and Doc_Copy fixed -------------------------------------------------------------------------------- 2009-03-30 Location ~ Split Path property into Path and Page ~ No longer renders Port if it is 443 and Protocol matches /https.*/ (Chan_Demo) (Chan_Clean) ~ removed Self_Test page + class, replaced with standalone Chan_Self_Test.aspx (Chan_SQLite) ! Call Close() and Dispose() on DataReaders + Standalone Chan_Self_Test.aspx -------------------------------------------------------------------------------- 2009-03-24 Controls.Button Controls.Link Controls.Image + Link/Href [Root] paths escaped even if the control has no Parent Page / Site (Controls.List) ListItem + Href [Root] paths escaped Page ~ ParentSite made into a public read only property -------------------------------------------------------------------------------- 2009-03-23 Location + NEW Class - Mirrors Javascript's Window.Location for dead simple URL munging Page ~ Now holds a local Location instance instead of a QueryString collection Controls.Form ~ Retooled to utilize Location for building form action + Adds GET TabPanel overrides into its own action for parent TabPanels Controls.TabPanel ~ Retooled to utilize Location for building and parsing GET tab switching Controls.Image + Non-link image can now be rendered and styled as disabled [Build] + New Chan_Test site, so that i dont keep mucking up chan_demo with prototypes -------------------------------------------------------------------------------- 2009-03-22 Controls.Button ! Crash caused by Root path escape code for Button without a ParentPage -------------------------------------------------------------------------------- 2009-03-20 Template (Page) + Template file path can now contain any of the three Root path escapes + Tempalte file path can now be a local absolute path (thus skipping MapPath) - Original region built-in getters/setters Page + All three root paths now passed down to the client Javascript ~ Head script block always rendered, even if there are no Controls on the Page Site + ReplacePaths function that accepts a string and unescapes any Root paths Controls.CheckList ~ JS [Text],{Index} etc. escapes changed to [Text],[Index] etc. Controls.Button - Static Make() functions and overrides folded back into Tag_Open() - Exception when Link and OnClick were set, why was it thrown to begin with!? - Internal bespok "Override" code, complicated things far too much + Open-Link-In-New-Window Carat support complete, except NoScript Link button Controls (General) ~ Replaced a lot of convoluted code with calls to String.StartsWith. Idiot. ~ Replaced a lot of string + string concatanation with calls to Generic.Join() (All Javascript) + C__Http_Root and C__Site_Root ~ C__Root replaced with C__Chan_Root -------------------------------------------------------------------------------- 2009-03-19 Site ! web.config Root entries containing a trailing slash truncated too eagerly Template (Page) + Built-In regions to reflect Chan,Site and Http roots as set in web.config Controls.Link Controls.Image (Controls.Button, partially) + Support for Chan,Site & Http roots by escaping href/link as [Site_Root] etc. -------------------------------------------------------------------------------- 2009-03-18 Controls.Upload + "Norm" size class added to "currentlty uploaded file" mode textbox + CSS definition to remove any default input border -------------------------------------------------------------------------------- 2009-03-17 Controls.Button ~ Button with Image and Link set now respects the "^" prefix to open-in-new Icon + Home and Find icons [Controls.css] - Removed grey background for disabled image buttons, but increased the opacity from 50 to 33% -------------------------------------------------------------------------------- 2009-03-13 Html.Input ~ Checked and value behaviour changed to remove old CheckBox hack Controls.Panel ~ Now renders own Div around contents into Template when Region is set Controls.CheckBox - Removed static Make functions, users should use Html.Input instead Generic + Href() function, similar to Join but for building links with QueryStrings -------------------------------------------------------------------------------- 2009-03-12 Page - Removed ie6.css linking - it was empty anyway + Controls.css now appears in the HEAD before any user Page_Styles + Now uses a stringbuilder to construct the HEAD block -------------------------------------------------------------------------------- 2009-03-11 Controls.CheckList + Now supports Radio. - "Select" option, it would not have been NoScript friendly + Now generates proper table HTML with colgroups and styling + Added javascript to select and highlight rows Generic + Join upped to maximum of 10 strings, nice round number Html.Input + Checked bool -------------------------------------------------------------------------------- 2009-03-10 Chan_SQLite ! Retooled to use Controls.List for its sidebar menu, to use the new Page_ and Site_ built-in template regions and to use Region-ed Panels to place the menu and comments code. This demo site now no longer uses the default catch-all "Content" template region! Controls.List + NEW Allows you to programatically populate UL/OL lists, including the ability to add child lists, or have link items. Created with menus in mind but deliberately left open for flexibility Controls.ItemList ! RENAMED to CheckList Controls.Panel + Region string property, allows you to name a region in the Page's Template to show the panel's contents in. A region-ed panel must not be contained within any controls itself. Controls.Upload + "Change" button changed to use an Icon + "Change" button now uses javascript to switch to/from an input type="file" Template + Now when setting the text of a Region using the [] property the region will be automatically created if it does not already exist -------------------------------------------------------------------------------- 2009-03-09 Controls.Link - Removed Target Property + Href property can have ^ as first char to make it open in a new window Controls.Image + Link property can have ^ as first char to make it open in a new window -------------------------------------------------------------------------------- 2009-03-08 Controls.Link + Target property (e.g. "_blank") Controls.DropDown + You can now manually set the .Value before adding rows and the correct one will be selected upon addition Html.A + target property Html.Img ! alt text was not being mirrored into title (incorrect title="" assignment) -------------------------------------------------------------------------------- 2009-03-06 ItemList ! No Longer requires a direct id postback to maintain state of its checkboxes ~ Merged CheckBox and Button column and jiggled the css about to neaten it up + Item indexing and removal function suite (8 new methods) + Title and Row.Text can be split into multiple columns by tab-delimiting them -------------------------------------------------------------------------------- 2009-03-05 [Resources] Icon ~ Icon16 renamed to Icon with default size of 16, with 24 and 32 sizes planned + More icons for document/user admin and a few generic ones Controls.DropDown ! Add(object,object) overload now also treats DBNull as null as "" Controls.Label Controls.Literal + Persist bool - allowing it to remember its text across postbacks Controls.ItemList + NEW - shows a list of items in a simple table, added as Value/Text pairs in a fashion similar to DropDown + Allows Buttons to be bound to the header row or for every row - with working Button.Click() events! + Allows a Checkbox column to be shown, with automatic (Script/NoScript) "All" and "None" buttons included. the Checked get/set uses a comma-seperated list of Values Page + Now allows deferred postback to include multiple "___" sequences, previously if the postback was "Submit___A___B___C" A.PostBack would only be called with "B", now it is called with "B___C", note that "Submit___A______B" also works, with the resulting postback being sent as "___B" Html.Input + checkbox hack - set the string value of a type="checkbox" input to "true" or "false" to set the checked state (checked is a C# keyword!) -------------------------------------------------------------------------------- 2009-03-04 [Resources] + New Document and User related icons Icon16 + NEW CLASS - Contains static path references to icons, e.g. Icon16.Edit will give you the path to the 16x16 Edit icon (currently a pencil). Controls.Image Controls.Button + Path/Image property can be set to an escaped string to represent one of the icons. i.e. or btnMyImageButton.Image = "[Icon16.Go_Next]" Controls.Button + if OnClick exists but starts with "return" the button remains a normal submit type button but will only postback if the javascript after the "return" evaluates to true/false. This allows for simple javascript "confirm" buttons that still work (albeit without the dialog) under NoScript Template + New seperate Page_Title and Site_Title built-in regions -------------------------------------------------------------------------------- -------------------------------------------------------------------------------- 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 --------------------------------------------------------------------------------