Compare commits

...

1112 Commits

Author SHA1 Message Date
hartvig f1bdde9067 Changes version number to 4.7.2 2012-04-10 08:42:59 -02:00
hartvig 163be2aad2 Updates feedproxy logic: Corrects minor error in xpath query and adds logging when unallowed requests happens 2012-04-10 08:42:10 -02:00
leekelleher c6891dd971 FeedProxy: Introduced a config file to define the allowed hostnames. Also added a package action to allow hostnames. 2012-04-06 11:06:05 -01:00
leekelleher 82a8383df3 Revised fix for FeedProxy.aspx, opens the URL restriction for use, still requiring the user to be logged into back-office. 2012-04-05 14:26:23 -01:00
tg@umbraco.com dbaa4912b7 Merge 2012-04-05 11:09:06 -02:00
tg@umbraco.com a016a661d7 Fixes open proxy issue with the /umbraco/dashboard/FeedProxy.aspx page 2012-04-05 11:06:54 -02:00
agrath 562f533172 Merge 2012-02-28 10:42:40 -13:00
agrath 57985cd0b2 Publish notification/workflow fails when using Distributed Calls, performedUser is null - check for null and replace with admin user 2012-02-28 10:39:02 -13:00
Casey Neehouse 2eebc84f2f WI# 30472 Placed check on hashtable add to check item has not already been added. 2012-02-21 16:03:46 -01:00
Casey Neehouse 2b9e798c35 WI#30727 addendum - Missed adding a lock to the ClearProcessedRequests method 2012-02-11 02:34:59 +05:00
Casey Neehouse 3e38b57496 WI#30727 Added lock to requestHandler _processedRequests Hashtable to block
duplicate entries
2012-02-11 02:28:09 +05:00
Casey Neehouse 7ddecca574 WI#30726 - Add check for UseAspNetMasterPages thus skipping the checkForMaster
that is not necessary
2012-02-11 01:13:41 +05:00
hartvig 90338093ba Change exception type for Work items: 30702 2012-02-03 05:24:32 -01:00
hartvig fc887b95f1 Work items: 30702 2012-02-03 05:08:04 -01:00
hartvig 01d8198579 Work items: 30690 2012-01-27 09:13:48 -01:00
agrath 7b6c711239 Allow CData tags to be embedded in a RichTextEditor controls contents 2012-01-17 14:32:08 -13:00
agrath 980c2d4a7f Fix DynamicXml eating - inside CData sections 2012-01-17 14:27:22 -13:00
agrath 686e0116d8 Allow CData tags to be embedded in a textboxmultiple controls contents 2012-01-17 14:26:48 -13:00
agrath b96a5a3bd9 Merge 2012-01-17 11:44:16 -13:00
agrath 6a3e1819aa Added guid for enhanced content picker for integer upcast 2012-01-17 11:43:16 -13:00
hartvig 72da68c08c Fixes error in cache patch 2012-01-11 11:17:56 -01:00
hartvig 2e916e252c Fixes a cache null ref issue in ClearCacheItem (patch by Sir Stéphane Gay) 2012-01-10 10:59:03 -01:00
agrath 6f5f7a7be5 Add another to IntegerDataTypeModel identified from the Cultiv Razor Examples project 2012-01-09 21:08:41 -13:00
agrath e09c531404 Add two more guids to IntegerDataTypeModel identified from the Cultiv Razor Examples project 2012-01-09 20:56:38 -13:00
agrath 7b157c5083 Added IntegerDataTypeModel and HtmlStringDataTypeModel to the core and removed the internal integer upcasting code. Model will automatically apply for 'Numeric' data type. use umbraco.MacroEngines.RazorDataTypeModels.IntegerDataTypeModel to apply a staticMapping in umbracoSettings for a given datatype or alias as per previous commit 2012-01-09 12:58:15 -13:00
agrath e6f0c2a17c added umbracoSettings.scripting.razor.dataTypeModelStaticMappings to allow RazorDataTypeModels to be specified in the umbracoSettings.config file. These static mappings override the dynamic mappings provided by the RazorDataTypeModel attribute, including priority (from previous commit). You can use this feature to force a particular data type [optionally on a specific document type and/or property] to use a specific model, or exclude the data type guid and just use the aliases. This feature is inteded to be used when you want to force a particular type to return as Integer. See next commit for detail about the Type Names to use. 2012-01-09 12:38:22 -13:00
agrath 6eae64eaf3 Merge 2012-01-09 08:27:22 -13:00
agrath 9f15137832 Made RazorDataTypeModel attribute multiple instance (meaning you can apply the same model to multiple data types without seperate copies of the model). Added a priority with a default of 100 to the model binder attribute. 2012-01-09 08:26:39 -13:00
hartvig 7e714b1a40 Work items: 30423 2012-01-09 11:56:04 -01:00
hartvig 140cf8ec2f Work items: 30659 2012-01-06 08:50:55 -01:00
hartvig ad4e5e841d Work items: 30657 2012-01-06 08:39:26 -01:00
hartvig 39f3c377be Work items: 30660 2012-01-06 08:32:50 -01:00
hartvig c9160dfdda Work items: 30630 2012-01-06 08:06:57 -01:00
hartvig eb19283673 Updating version number to 4.7.1.1 2011-12-22 10:23:57 -01:00
hartvig ea0ffc8ea5 Work items: 30273 2011-12-22 10:20:17 -01:00
hartvig b0f0777952 Merge pull request 2011-12-22 10:00:57 -01:00
hartvig 6ecedd51bb Minor updates to macro rendering and re-adding unused methods but this time marked obsolete for b/w compat. 2011-12-22 09:35:06 -01:00
vertino deb8e46df8 Removed the reference to 'umbracoGui.css'. 2011-12-21 18:03:40 +00:00
agrath fde12a532c Merge 2011-12-20 08:08:35 -13:00
agrath d6fd2304f1 Added support for Decimal on UserControl macros and fixed an issue reported by attack_monkey where usercontrol macro properties that were not set caused FormatException rather than default values 2011-12-20 07:44:43 -13:00
sgay 5aa76b1859 bugfix macro.cs issue with cache key 2011-12-20 13:41:51 -01:00
agrath e731fb5b03 Fixed an issue with && in DynamicNodeList.Where causing False&&False to be true 2011-12-19 13:51:11 -13:00
agrath b34b395d9f Merge 2011-12-04 15:10:59 -13:00
agrath 3b0f2804fd Fixed IsHelpers on IGrouping (DynamicNode.GroupBy) 2011-12-04 15:07:58 -13:00
hartvig aec48c7df9 Major refactor of macro.cs, fixing huge memory leak in caching of xsltExtensions. Work items: 30616, 30522 2011-11-25 14:03:09 -01:00
starfighter83 d6341e73b6 Fixes: TinyMCE Embed Media - Insert youtube video not working
Work items: 30378
2011-11-16 10:21:52 -01:00
starfighter83 82d1a980f7 updates to tinyMCE media plugin, working again except the preview in the dialog 2011-11-15 15:06:35 -01:00
starfighter83 6fafe1ede1 Merge 2011-11-15 07:36:47 -01:00
starfighter83 46e44fd5d1 Fixes issue with default 404 handler and culture based error pages when a dummy domain is used to attach the language 2011-11-15 07:34:19 -01:00
hartvig d0e1a23274 WIP updates to macro engine (better error handling). Be aware that it breaks current build! 2011-11-10 08:07:16 -01:00
mattbrailsford de378a7bcb Updatedt uGoLive to latest dll 2011-11-09 07:57:25 +00:00
mattbrailsford 2ee63d5790 Merge 2011-11-08 21:44:45 +00:00
mattbrailsford a2b3f62aba Updated uGoLive to v1.1 2011-11-08 21:43:23 +00:00
hartvig 0af3ae40db Found an error in the loading of cached controls (MacroEngine and .NET controls) that could result in empty macro cache under heavy load 2011-11-07 10:07:22 -01:00
mattbrailsford 5ee80bc9cc Updated uGoLive js script to latest 2011-11-01 19:28:12 +00:00
mattbrailsford 1452b869a8 Updated uGoLive js script to latest 2011-11-01 19:06:33 +00:00
mattbrailsford 19eebba8cc Added uGoLive dashboard 2011-11-01 16:55:06 +00:00
agrath 95e985b96d Fixed umbraco.cms.businesslogic.Tags.Tag.AddTagsToNode so it works on SqlCE. Added umbraco.cms.businesslogic.Tags.MergeTagsToNode 2011-10-31 10:16:44 -13:00
hartvig 62cf50ba8d Work items: 30041 2011-10-24 10:41:41 -02:00
hartvig 9da185f330 Adds single quote to the default list of characters to exclude from niceurls 2011-10-24 06:57:14 -02:00
agrath ad0c67365f Missed one of the if statements 2011-10-16 09:25:20 -13:00
agrath 79f4925faf Fixed a null in @Library.Wrap check that wasn't short circuiting as intended 2011-10-16 09:24:14 -13:00
sgay a0a2037813 fix #30534 - extra <br/> tags in RTE 2011-10-11 10:02:32 -02:00
agrath 3baaa9173e Changed the behaviour of Library.NodeById and Library.MediaById with invalid ids to return DynamicNull and checked for this in DynamicNode's obsolete methods to maintain backwards compatibility 2011-10-09 07:06:52 -13:00
agrath 49877c4874 Made @Library.NodeById and @Library.MediaById return DynamicNull when the node was not found, rather than an empty DynamicNode instance with Id == 0 (Which is what NodeFactory returns). To support backwards compatibility, DynamicNull supports .Id == 0 and .Name == " 2011-10-09 06:43:37 -13:00
agrath c7e1350abd Added .Name [string.Empty] and .Id [0] to DynamicNull and added implicit casts to int and string - backwards compat support for next commit 2011-10-09 06:36:56 -13:00
agrath 0851c04646 Made the new @Library.StripHtml (HtmlAgilityPack based) handle strings which don't contain HTML 2011-10-09 06:24:06 -13:00
agrath 407f78c84b Made OrderBy(Name) and OrderBy(name) work the same as OrderBy(nodeName) 2011-10-09 06:16:24 -13:00
agrath 293007b8f0 Merge 2011-10-04 08:36:55 -13:00
agrath 5d0a9e63e2 Rewrote @Library.StripHtml to use HtmlAgilityPack rather than a forward only string walker 2011-10-04 08:34:34 -13:00
hartvig 07a384d4f8 Work items: 30431, 30513 2011-09-29 09:45:50 -02:00
hartvig 7b1bb810d3 Work items: 29973 2011-09-27 07:23:16 -02:00
hartvig 300a31d6b0 Adds further validation to the Umbraco Member APIs to not allow a loginname as an empty string 2011-09-27 07:18:36 -02:00
hartvig ac8e9828e9 Updates to member username validation (throw nicer exceptions) 2011-09-27 07:01:22 -02:00
hartvig 12c6124714 Work items: 30028 2011-09-27 06:23:22 -02:00
hartvig b18612390a Fix by dimitri_kourk for 4.7.1 issue with Preview. Work items: 30502 2011-09-26 08:50:56 -02:00
agrath b7caa18309 Added a fake getter method to .Items on DynamicNodeList that was tripping up the latest uBlogsy beta. Could be a backwards compatibility issue 2011-09-22 13:10:01 -12:00
agrath 10529d9a9a Fixed another issue where CSV strings were swallowed by DynamicNode trying to interpret them as integers. This upcast will now only happen if you are using the datatype Integer/Number 2011-09-22 11:56:07 -12:00
agrath 84628a991e Fixed an issue where custom properties (e.g. not the defaults that are in examine) on media items would come back as XML representations when they were empty strings.
For example, a property, caption would come back as <caption></caption> if empty.
The processing code assumed that because the .Value was empty, the property contained XML but didn't check to see if it had children or attributes before returning the XML representation.
2011-09-22 11:20:09 -12:00
agrath a7d8d3c6c2 Fixed a StackOverflow when using .Descendants on Media 2011-09-21 22:31:18 -12:00
agrath 4221d8a53f Added missing constructor overloads back onto DynamicMedia 2011-09-21 21:29:52 -12:00
agrath 0eba71171b Merge 2011-09-21 21:22:57 -12:00
agrath 0c9edb5fbc Fixed an issue with HasValue recursive overloads not passing the recursive flag down to GetProperty 2011-09-21 21:20:08 -12:00
hartvig 5aa8868248 Work items: 30500 2011-09-22 06:42:18 -02:00
hartvig feeba931bc Default config setting was wrong 2011-09-21 08:05:44 -02:00
hartvig 82c0ac805c Merge 2011-09-21 05:11:14 -02:00
hartvig 1ffbbb257d Setting version number to 4.7.1 2011-09-21 05:09:53 -02:00
Shandem d1d96c6d58 Fixed model: 30493, 30471 2011-09-20 20:39:03 -10:00
neehouse bf59d1fca8 Clear response before redirect on ensured pages and end response on transfer. 2011-09-19 21:00:48 +04:00
hartvig 2d10702238 Work items: 30480 2011-09-16 09:32:04 -02:00
Darren@Darren-Laptop 132f6405ed Fix Codeplex #30479 - Dynamic assemblies in Umbraco cause XSLTs to break - TypeFinder.cs. Just return if the assembly is dynamic. 2011-09-16 10:21:57 -01:00
hartvig 2f784920a9 Fixes in regards to trust initialization and TypeResolver 2011-09-15 09:38:28 -02:00
hartvig 017075d4f6 Setting 4.7.1.Beta version number 2011-09-15 08:37:38 -02:00
hartvig 8dcc8251f5 Work items: 23386 2011-09-14 19:13:24 -02:00
hartvig 62249b989b Final speed optimizations for SQL CE 4... 2011-09-14 19:07:09 -02:00
hartvig 238885746c Work items: 30201 2011-09-14 18:37:49 -02:00
hartvig 40495005ac Adios dreaded lock screen. You'll only be missed by bankers. But they'll have the option to enable it... Work items: 30310 2011-09-14 18:05:51 -02:00
hartvig 1eb0d3581b Work items: 30473, 30193 2011-09-14 17:44:34 -02:00
hartvig 8a43220657 Work items: 30204 2011-09-14 17:25:30 -02:00
hartvig eb3cb32965 Error in previous commit 2011-09-14 16:20:39 -02:00
hartvig 910af5ea99 Work items: 30363 2011-09-14 16:18:05 -02:00
hartvig 3522d68755 Work items: 29795 2011-09-14 16:02:32 -02:00
hartvig c32e813210 Updates to internal permission handling in Umbraco 4.7.1 2011-09-14 13:52:33 -02:00
hartvig cffed78df3 Work items: 30151 2011-09-12 14:14:11 -02:00
hartvig 6da379d36d Work items: 30368 2011-09-12 12:47:35 -02:00
hartvig f15903a846 Work items: 30363 2011-09-12 12:31:27 -02:00
hartvig c315cfbbcd Work items: 29670 2011-09-12 11:41:21 -02:00
hartvig ee63128ac2 Work items: 28737 2011-09-12 11:26:27 -02:00
hartvig e4cf319f46 Error with previous push 2011-09-12 11:22:09 -02:00
hartvig 4c2ffb00f9 Work items: 30148 2011-09-12 11:19:37 -02:00
hartvig c1fa3bfb23 Work items: 30075 2011-09-09 10:21:21 -02:00
hartvig b083cb8837 Fixes bugs in 4.7 preview engine. Work items: 30208, 30288 2011-09-09 09:46:04 -02:00
agrath 6bd344834c Merge 2011-09-06 10:30:35 -12:00
agrath 9760ad29c8 Added a cached fallback for custom properties for media when that media item was loaded from examine as the examine fields collection doesn't contain them 2011-09-06 10:28:43 -12:00
agrath b5dddc5e7c Bypassed a dictionary lookup if the datatype is Guid.Empty 2011-09-06 10:27:20 -12:00
hartvig 7cdb0b48de Merge 2011-09-06 07:44:51 -02:00
hartvig caad0e25d1 Work items: 30313, 29864 2011-09-06 07:43:36 -02:00
PerPloug e87205c1fa Merge 2011-09-06 07:35:34 -02:00
PerPloug 95d53d66f3 default.build update to 4.7.1 paths 2011-09-06 07:32:48 -02:00
PerPloug ac7f7d97c4 Updated nant file 2011-09-06 07:28:24 -02:00
hartvig 88316b05c4 Work items: 29835 2011-09-06 07:26:17 -02:00
hartvig 8b87f0fd46 Refactoring of Umbraco Members auth. Work items: 30237, 30334, 30350, 30342 2011-09-06 07:08:15 -02:00
hartvig 39706538f9 Work items: 30448 2011-09-05 06:44:19 -02:00
hartvig cd3c44ae7c Work items: 30446 2011-09-05 06:39:17 -02:00
agrath 3cc136a15c Merge 2011-09-01 08:48:43 -12:00
agrath e2a60d55ff Changed the return type of Pluck when the list was empty from DynamicNull to List<Object>[0] 2011-09-01 08:46:18 -12:00
agrath c097b0f250 Prevented OrderBy from throwing an error when presented with an empty list 2011-09-01 08:45:43 -12:00
hartvig 1c8579123d Work items: 30359 2011-08-31 07:12:30 -02:00
starfighter83 9ad129baad Partially applied pull request 1339, related to GlobalSettings.UseSSL 2011-08-30 07:01:32 -02:00
starfighter83 cc73179b2b Merge 2011-08-30 06:24:35 -02:00
starfighter83 4ad18c1d7b Fixes: RTE Style Selector wraps elements in spans and doesn't allow removal
Applies pull request 1459
Work Items: 30440
2011-08-30 06:23:30 -02:00
agrath 51c76dfcd4 Merge 2011-08-29 11:22:08 -12:00
agrath 265fc0b3ca Improved the handling of DynamicNull when using OrderBy 2011-08-29 11:19:34 -12:00
starfighter83 2e4117d691 Fixes small issues with tinymce config
Work Items: 29945 29829
2011-08-29 09:03:45 -02:00
starfighter83 124da8781b Applies pull request 1121
Work Items: 27050
2011-08-29 05:40:16 -02:00
starfighter83 7edac5756d Fixes: Incorrect url used in GzipModule Disables Rich text editor in Port Forward environment
Work Items: 29936
2011-08-26 06:42:56 -02:00
starfighter83 b73a579a94 Fixes: Data types cannot be renamed
Work Items: 29281
2011-08-25 10:40:59 -02:00
starfighter83 fdbe788d9b Fixes: Security bug with Dashboard (updated dashboard.config to add access node and deny editor and writer on kits control)
Work Items: 30331
2011-08-25 09:26:27 -02:00
starfighter83 9a7d75e1f3 Fixes: Razor example template not correct
Work Items: 30329
2011-08-25 07:38:57 -02:00
starfighter83 c095148dbe Fixes: IE Display Issue with the Move Content dialog
Work Items: 30199
2011-08-25 07:17:20 -02:00
starfighter83 5f8da87c23 Fixes: umbraco.library.GetItem no longer retrieves elements of the node
Work Items: 29078
2011-08-25 06:20:40 -02:00
starfighter83 2db1dfe7fb Fixes Deleting/Changing the default language en-US not possible
Work Items: 28788
2011-08-25 06:02:34 -02:00
starfighter83 97180ded7d Merge 2011-08-25 05:46:03 -02:00
starfighter83 f2243c9d22 Updates jquery,jquery UI and some related scripts/stylesheets, fixes issue with IE9
Work Items: 30137
2011-08-25 05:45:04 -02:00
Shandem e7271ad79b updated config 2011-08-24 16:57:59 -10:00
starfighter83 273ebf49df Merge 2011-08-24 07:24:46 -02:00
starfighter83 656095caee Fixes: Not able to use textMultiLine as macro parameter in wizard
Work Items: 29883
2011-08-24 07:24:13 -02:00
agrath 9925c95d2c merge 2011-08-18 15:00:35 -12:00
agrath 4d3c145be9 Added support to DynamicQueryable to support property accesses via reflection on DynamicNode properties, e.g. list.GroupBy(uBlogsyPostDate.Date) 2011-08-18 14:30:42 -12:00
hartvig 2ba2c0fd61 Work items: 30410 2011-08-18 13:24:55 -02:00
hartvig 96cbe17ea9 Work items: 30418 2011-08-18 13:17:59 -02:00
hartvig 0efabf6fe4 Merge 2011-08-18 07:39:57 -02:00
hartvig 0ff6775e55 Fixes "CSS path does not change when umbracoCssDirectory is added in web.config" Work items: 30417 2011-08-18 07:38:58 -02:00
agrath c657236f7c Fixed DynamicBackingItem autodetection of Media used in NodeById, now you can use NodeById to get Media or Content nodes 2011-08-17 21:27:09 -12:00
agrath b023455068 Added an overload to NodesById and DynamicBackingItem/DynamicNode to signify you want a List<int> to be treated as media, not content 2011-08-15 10:18:15 -12:00
agrath f361e20482 Traced exception message out on DynamicNode 2011-08-11 15:36:54 -12:00
agrath fc770dd50f Merge 2011-08-11 13:05:03 -12:00
agrath b6629c9f65 Merge 2011-08-11 13:03:40 -12:00
agrath 918d5bc720 Fixed a VirtualUrl issue with images in TinyMCE editors not having the ~/ replaced when SystemDirectories.Media contained a ~ and the image was larger than the TinyMCE size 2011-08-11 13:03:27 -12:00
agrath 46253212da Added a ContainsKey check to a dictionary and expanded shorthand ifs to longhand for readability 2011-08-11 13:02:47 -12:00
psterling 5fb5019529 Added Polish language file - credit to the folks from Microsoft Poland for the translation work 2011-08-09 23:07:27 +07:00
psterling 647882af15 Added Portuguese Brazil language file - credit to Carlos Casalicchio for the translation work 2011-08-09 23:04:19 +07:00
starfighter83 96a8b190a4 Fixes: Create Media Button Permissions BUG
Work Items: 30396
2011-08-08 06:36:31 -02:00
agrath 860a33d9b3 Changed return type of Library.StripHtml to be HtmlString to facilitate partial strips feature still returning HTML and not wanting to encode the result 2011-08-07 14:07:09 -12:00
starfighter83 3cfe526d9d Fixes: Changing icon on membertype does not do anything
Work Items: 29853
2011-08-04 08:17:35 -02:00
starfighter83 0d65c29ffd Fixes: Empty string for LoginName can be saved in Members interface and breaks Member creation
Work Items: 30367
2011-08-03 10:22:36 -02:00
starfighter83 47e4239bbc Fixes: Renaming XSLT deletes the file
Work Items: 29287
2011-08-03 08:27:17 -02:00
starfighter83 ba96212505 Fixes issue with Base and dictionary items
Work Items: 30382
2011-08-03 08:07:25 -02:00
starfighter83 5363a328a0 Merge 2011-08-03 07:50:30 -02:00
starfighter83 5843b5deaf Adds confirmation before deleting prevalue
Work Items: 30384
2011-08-03 07:49:08 -02:00
agrath e2e0186174 Added TryGetIndex to DynamicNodeList to allow [] indexing 2011-08-01 11:11:00 -12:00
agrath 7d3cfa4151 Added .Except, .Intersect, .Union and .Distinct to DynamicNodeList 2011-07-31 17:05:44 -12:00
agrath adc3a36ac2 Changed the decimal parsing in ConvertPropertyValueByDataType so it only tries to do this if the string contains the current decimal seperator character to prevent CSV strings from converting to decimals in cultures where , is used as the decimal seperator 2011-07-31 16:34:58 -12:00
agrath 9d996aaf43 More @Library.Truncate parser fixes 2011-07-31 16:27:43 -12:00
agrath 13e5e5a8df Fixed a bug in @Library.Truncate regarding attempting to close tags which were not open when the truncation occurred before any tags had been opened. 2011-07-31 11:16:45 -12:00
agrath 2ea3c4b624 Got rid of InternalHtmlString as it wasn't being used and was throwing off some of the RazorLibraryCore overloads 2011-07-31 10:10:01 -12:00
agrath d022b4a52a Added the datatype GUID to the DateTime parsing code for the Date picker without time 2011-07-28 11:51:04 -12:00
agrath 3a7609cba0 Another fix for Catch FileNotFound exceptions in ExamineBackedMedia which are thrown by Examine currently (bug?) on a LoadBalanced file store after a publish occurs. When caught, ExamineBackedMedia will fall back to GetMedia as if the media item wasn't in the examine index 2011-07-28 09:44:23 -12:00
agrath 4cbd06dad9 Added missing .css to csscolors on the EditorType.HTML as it was throwing 404s, probably meant that embedded style in a template wasn't highlighted properly? 2011-07-28 09:18:02 -12:00
agrath e72bd130e3 Further changes to fix bug with 'incorrect number of lambda paramters' issue with .Where when using && and || 2011-07-26 14:02:25 -12:00
agrath c354acb388 Added umbraco.library:NiceUrlWithDomain for returning the node URL including the domain & root irrespective of site settings. Caches seperately to the standard NiceUrl method so that you can use both without cache collisions 2011-07-26 14:01:37 -12:00
agrath d0fc01751c Added some more entries to .hgignore for when you're testing with a starterkit installed 2011-07-26 13:59:36 -12:00
agrath 30cc6148e7 Added web.config transform file for ssaodsk01 2011-07-26 13:58:55 -12:00
starfighter83 082d680a36 Adds validation to data editor settings (IsRequired and RegexValidationStatement) 2011-07-26 11:18:22 -02:00
starfighter83 23ab698665 Adds default value support to Field data editor setting type 2011-07-26 08:31:07 -02:00
starfighter83 f9f67d4e2e Adds default value support to DocumentType, MediaType, MemberGroup, MemberType data editor setting types 2011-07-26 08:28:12 -02:00
starfighter83 98a1189353 Adds default value support to Path data editor setting type 2011-07-26 08:25:39 -02:00
starfighter83 d8eb584d7a Adds default value support to Checkbox data editor setting type 2011-07-26 08:21:46 -02:00
starfighter83 738380e32a Adds default value support to CheckBoxList data editor setting type 2011-07-26 08:18:27 -02:00
starfighter83 57edbcae25 Adds default value support to DropDownList data editor setting type 2011-07-26 08:17:35 -02:00
starfighter83 0f84165b2b Adds default value support to ListBox and ListBoxMultiple data editor setting types 2011-07-26 08:15:28 -02:00
starfighter83 ff02f5a336 Adds default value support to Password data editor setting type 2011-07-26 08:09:59 -02:00
starfighter83 b7446be08a Adds default value support to RadioButtonList data editor setting type 2011-07-26 08:08:40 -02:00
starfighter83 5c57c192c9 Adds default value support to TextArea data editor setting type 2011-07-26 08:04:52 -02:00
starfighter83 a03b9932ff Fixes: scheduled tasks stops
Work Items: 30376
2011-07-26 06:44:03 -02:00
agrath ae3357de0d Fixed a bug with .Where && and || throwing invalid number of parameters for lambda when both left & right were not lambdas, e.g. Visible && NodeTypeAlias != umbNewsArticleItem 2011-07-24 13:55:36 -12:00
agrath 821188a254 Added work desktop web.config xslt transform 2011-07-24 13:54:30 -12:00
agrath@gmail.com 31169380f8 Changed the return type of RTE to a different HtmlString (internal) so that it can be implicitly convertible for string for If comparisons. Added an extension method for string.HasValue so that .Where can invoke it to improve readibility when comparing RTE to empty string based on feedback from @cultiv. Cleaned up an empty if in DynamicQuerable 2011-07-21 20:19:54 -12:00
agrath@gmail.com 3737a8cf28 Catch FileNotFound exceptions in ExamineBackedMedia which are thrown by Examine currently (bug?) on a LoadBalanced file store after a publish occurs. When caught, ExamineBackedMedia will fall back to GetMedia as if the media item wasn't in the examine index 2011-07-21 13:15:20 -12:00
agrath@gmail.com ba965a95e9 Made ConvertPropertyValueByDataType return DynamicNull instead of empty string when the datatype is a Date/Time and the TryParse fails. Only applied DateTime parsing to datatype Date/Time rather than always trying it 2011-07-21 12:18:58 -12:00
agrath@gmail.com 80e6187436 Made DynamicNull implictly convertable to DateTime (.MinValue) to support next change 2011-07-21 12:17:55 -12:00
agrath@gmail.com 6dcf1fcd8e Slight optimisation in ExtensionMethodFinder. Previous commits fixed #30346 2011-07-21 11:42:34 -12:00
agrath@gmail.com 1a0c9c3e9f merge 2011-07-21 11:35:58 -12:00
agrath@gmail.com f6ab67ea78 Added support to ExtensionMethodFinder to do overload type resolution to locate the correct extension method based on types when there are multiple overloads available 2011-07-21 11:27:34 -12:00
agrath@gmail.com e8a941fc1f Added support for invoking extension methods on native properties on DynamicNode where the native property type is string (e.g. NodeTypeAlias, Name). Half fixes ContainsAny support 2011-07-21 11:25:15 -12:00
sgay c1ff80c52d Fix member cookie value encoding [#30350] 2011-07-21 14:48:39 -02:00
sgay f6eb9c77a9 Add RenderEvent to Macro control [#30362] 2011-07-14 06:54:14 -02:00
sgay f20931cfa4 Refactored Razor DynamicNode.XPath() to returns an empty list when no nodes are found, instead of throwing [#30361] 2011-07-14 06:47:40 -02:00
agrath@gmail.com ff5bf40905 Merge 2011-07-11 12:23:14 -12:00
agrath@gmail.com a66847587c Added pluck aggregates Sum/Average/Min/Max to DynamicNodeList 2011-07-11 12:20:02 -12:00
agrath@gmail.com d9dc90090b Changed @Library.MediaById(.) to return a DynamicMedia again so that specific media functionality can be added. DynamicMedia is just an empty subclass of DynamicNode currently 2011-07-11 11:27:31 -12:00
agrath@gmail.com 892a382eca Added HasValue overloads that function like If/Where shorthands for writing out a value if a property has a value, e.g. Class Name 2011-07-11 11:24:00 -12:00
agrath@gmail.com 17f6ee1c91 Made PropertyResult IHtmlString so if you @Model.GetProperty(propName) then you get the value but it's still a PropertyResult/IProperty 2011-07-11 11:20:31 -12:00
agrath@gmail.com 48c11f6b45 Added TryInvoke and TryGetIndex methods to DynamicNull to prevent crashes on missing properties 2011-07-11 11:13:31 -12:00
agrath@gmail.com da3364c065 Added umbraco\presentation\umbraco\plugins\* to ignore 2011-07-11 11:12:47 -12:00
hartvig e196b4ec13 Fixes issues related to UrlResolving. Work items: 30353, 30324 and 30352 2011-07-07 14:21:04 -02:00
hartvig 0dff9c5dfa Fixes Ensure valid template aliases, work item: 30347 2011-07-06 09:45:02 -02:00
hartvig 93be92442c Fixes "Edit language broken", work item: 30332 2011-07-06 09:36:20 -02:00
hartvig e57c49a3f1 Solves "pressing enter in Locked screen triggers cancel instead of renew", work item: 30345 2011-07-06 06:23:36 -02:00
hartvig 89b89655e4 Fixes work items: 30337 2011-07-06 05:49:58 -02:00
hartvig 1c26ddd87f Adds CTRL+S support in all edit pages + loads of warning clean up 2011-07-05 11:30:06 -02:00
agrath@gmail.com 304e7976bc Detects a null reference exception which occurs when a document type is not transferred properly and cmsPropertyData is missing records and rethrow it with detail about the problem 2011-07-04 15:17:44 -12:00
agrath@gmail.com d5e3ceecec Made IsHelper methods on DynamicNode and DynamicXml return HtmlString instead of string 2011-07-03 22:41:33 -12:00
agrath@gmail.com d81aed3dc5 Fixed ExamineBackedMedia.NodeTypeAlias - was using the wrong Values key 2011-07-03 21:02:35 -12:00
agrath@gmail.com cfcae904ba Added implicit conversion between DynamicNull and bool (false) which allows you to go @if(@Model.dynamicNullProperty) 2011-07-03 19:25:16 -12:00
agrath@gmail.com 8ab1c11bd1 Made @Library.NodeById and @Library.MediaById DynamicNull safe, will return DynamicNull instead of 'Cannot instantiate a DynamicNode without an id' 2011-07-03 18:31:47 -12:00
agrath@gmail.com 41d3c9f3d9 Formatting in Linq Foreach of IRazorDataTypeModel cache build code 2011-07-03 10:14:04 -12:00
agrath@gmail.com 1164ea3ab1 Fixed a bug where if the ContentType (DocumentType) tree was a different tree to the Content or Media (Node) tree then the datatype lookup could fail when retrieving a property recursively.
If GetProperty recursively walked up the content tree to the first node that defined the property and eventutally found it, and the NodeType[Alias] of the node it was found on was not a parent of the original content's node type, then the lookup would fail.
Changed DynamicBackingItem.GetProperty (and PropertyResult class) to return the Node/Context where the property is being returned from and used this context's NodeTypeAlias as the in the data type lookup.
2011-07-03 09:32:29 -12:00
agrath@gmail.com 75d15cdc31 Made GetProperty break earlier if context/parent is null (prevents NRE) and slightly changed behaviour so that empty strings will go recursively to the parent. Added prefix to property access (_) which will cause the property to be looked up recursively. This syntax is used when you want to get the value recursively, but you want to still apply the IRazorDataTypeModel (as @Model.GetPropertyValue won't do that). Syntax is: @Model._propertyName - had to be a _ as that is legal c# 2011-07-02 17:29:47 -12:00
agrath@gmail.com 49a0c8a11a Changed return type of @Library.If to IHtmlString so that you can return HTML with it 2011-07-02 17:27:27 -12:00
agrath@gmail.com 8435067e98 Added overload to @Library.If for trueValue only 2011-06-30 11:56:16 -12:00
agrath@gmail.com eff692249d Made the int.TryParse and decimal.TryParse in DynamicNode culture aware so that , and . as numeric/decimal seperators are handled properly 2011-06-30 11:00:15 -12:00
agrath@gmail.com 0589d34abd Changed the implementation of IRazorDataTypeModel to allow for immutable types to be returned such as string, int. Thanks @zpqrtbnk 2011-06-30 10:32:50 -12:00
agrath@gmail.com 9b4a08950c Added support for attribute first child fallback in DynamicXml 2011-06-30 10:16:30 -12:00
agrath@gmail.com c7c496cadf Removed a razor namespace added in an early 4.7.1 build that shouldn't have been there anymore. Wasn't used when debugging but when doing a nant build it got included 2011-06-29 17:47:28 -12:00
agrath@gmail.com 5988ff5da8 Added a try/catch to GetPropertyInternal to catch a potential MissingMethodException when trying to locate a property that didn't exist 2011-06-29 17:45:08 -12:00
agrath@gmail.com cce3cdc18b fixed some potential crashes in datatype lookups and a keyalreadyexists exception in datatype lookup 2011-06-29 17:36:37 -12:00
agrath@gmail.com 0475b48a8c Fixed an issue with new DynamicNode() and DynamicNode.XPath using the wrong overload, thanks @cultiv 2011-06-29 17:18:10 -12:00
agrath@gmail.com 56e9cdb045 Added overloads to @Library.Truncate and @Library.StripHtml for DynamicNull to prevent errors when properties may not exist 2011-06-27 16:52:04 -12:00
agrath@gmail.com ba8d8f8787 Changed @Library methods which return Dynamic* types to return type dynamic as methods on DynamicNodeList etc wouldn't work due to the type not being dynamic. Because @Model.NodeById got moved to @Library.NodeById and @Model is dynamic, this problem didn't exist before 2011-06-27 12:45:17 -12:00
agrath@gmail.com a747e4dddc Merge 2011-06-26 11:27:52 -12:00
agrath@gmail.com 0b47da8d41 Added @Library.Truncate to simulate string.left but not error when string is < length and be html tag aware. Optionally adds elipsis to end of strings 2011-06-26 11:26:02 -12:00
agrath@gmail.com dc32f500ae Added @Library.StripHtml to remove HTML tags from a string 2011-06-26 09:51:46 -12:00
hartvig f1ee827ece SQL CE 4 double open connection in VerifyConnection method. Thanks Jesper Hauge/Erik Ejskov Jensen for catching that one! 2011-06-23 07:44:13 -02:00
agrath@gmail.com b59b5052ba Bug fix: slightly changed behaviour of ordering code when dealing with dynamic properties (e.g. user properties not fields on DynamicNode) and missing data, thanks @Cultiv for the report 2011-06-22 01:08:15 -08:00
agrath@gmail.com c63b58612d Renamed a variable on one of the overloads of @Library.Wrap and changed the behaviour of Visible so that it applies at render time, not tag creation time instead of returning null, this will enable chaining for invisible tags as well as being able to change your mind about whether the tag should render or not 2011-06-20 11:11:18 -02:00
agrath@gmail.com 7209d68028 Realised that IHtmlString is an interface and may have a method I can implement to avoid .Write() or .ToHtml() on HtmlTagWrapper. Implemented and tested this. Victory. 2011-06-20 07:47:29 -02:00
agrath@gmail.com d0d48f18ff Removed upcasting for uComponents multitreenode picker in DynamicNode ConvertPropertyValueByDataType in favour of the new plugin interface [I]RazorDataTypeModel 2011-06-19 14:40:10 -02:00
agrath@gmail.com c5906c0c79 merge 2011-06-19 08:35:49 -02:00
agrath@gmail.com 754210456c Renamed ssaolap01 dev database 2011-06-19 08:19:45 -02:00
agrath@gmail.com 00141ba801 Added a new feature for plugin developers to create a model class that DynamicNode will return for their data type instead of the underlying type 2011-06-19 08:19:11 -02:00
agrath@gmail.com 315003c16f Changed settings to developer in the erorr message 2011-06-19 07:34:40 -02:00
agrath@gmail.com 28652815ae Improved the error message for a KeyNotFound exception in datatype factory 2011-06-19 07:27:47 -02:00
agrath@gmail.com 3480a5d957 Made DynamicNodeList.XPath only work for content as it is the only one with an XML Backing document 2011-06-18 15:46:34 -02:00
hartvig 82547abe40 Adds missing SqlCeContextGuardian file 2011-06-17 09:20:59 -02:00
hartvig 6a1aa9a8e6 Massive performance increase on SQL CE4 thanks to Jesper Hauge and Erik Ejlskov Jensen (SQL CE MVP) from Twins #h5yr Work items: 28347 2011-06-17 07:03:45 -02:00
agrath@gmail.com cdc4c86325 Added ContainsKey check to Language Dictionary to fix a KeyAlreadyExists exception on app startup. Fixes work item 30195 2011-06-16 11:45:01 -02:00
agrath@gmail.com 940239f1f2 Added HtmlTagWrapper.AddChildren and HtmlTagWrapper.AddChildrenAt methods 2011-06-16 11:02:23 -02:00
agrath@gmail.com d4ed1efcf5 Fixed bug with HtmlTagWrapper.Write not writing if no children or attributes but class names were set 2011-06-16 10:59:36 -02:00
agrath@gmail.com 27aebac7e0 Aliased HtmlTagWrapper.Write as HtmlTagWrapper.ToHtml to match DynamicXml.ToHtml 2011-06-16 10:58:13 -02:00
agrath@gmail.com 86c9e8bde0 Added IsNotEqual IfHelper to DynamicNode and DynamicXml 2011-06-16 10:55:41 -02:00
agrath@gmail.com 9a1cfafb74 Made DynamicXml implicitly search child[0] if no match for dot notation chained child, fixes a regression/backwards compat change break due to the way elements are now consistently returned as sets 2011-06-16 09:54:53 -02:00
agrath@gmail.com 97a9d11cba Added ToHtml method to DynamicXml which allows you to get an IHtmlString back if you didn't want DynamicXml for XML syntactically correct data 2011-06-16 09:29:38 -02:00
agrath@gmail.com ee57f4c449 Adds pageName attribute to DynamicNode
Rename NodeById to NodesById when dealing with multiple parameters
Fixes work item 30290 : Strip - in element and attribute names for DynamicXml
2011-06-13 15:21:16 -02:00
agrath@gmail.com 2c22bea92f Renamed inconsistently named multiple NodeById methods 2011-06-13 12:59:36 -02:00
agrath@gmail.com 8112f240be Fixed an issue with GetProperty not finding properties according to the same case rules as DynamicNode and not falling back to local properties when the property wasn't on the Document Type 2011-06-13 12:28:35 -02:00
agrath@gmail.com 0a04252780 BugFix: Reworked GetProperty to support camel case conversion and reflective property access for non DocumentType properties 2011-06-13 10:15:29 -02:00
agrath@gmail.com 74617e4368 merge 2011-06-13 09:36:44 -02:00
agrath@gmail.com 4eca6e7fbf updated ignore file and adding web.config transform 2011-06-13 09:35:34 -02:00
agrath@gmail.com 288bbe7b91 Added OrderBy to Grouping so the nested lists can be ordered by (supports single property only but does handle desc)
You can control the Group order by manipulating the source list order. Groups will be enumerated in the order they occur.
2011-06-13 09:12:11 -02:00
agrath@gmail.com d2ddd9a284 Implemented DynamicNodeList.InGroupsOf, DynamicNodeList.GroupedInto and DynamicNodeList.GroupBy 2011-06-13 08:53:06 -02:00
agrath@gmail.com fbe150c1ce Fixed a stack overflow in Wrap 2011-06-13 08:39:32 -02:00
agrath@gmail.com 918cdcdffb Added XPath filter & search to DynamicXml class
Added empty method stubs to DynamicNodeList for grouping functionality
2011-06-13 07:13:00 -02:00
agrath@gmail.com b79586b4d7 Added new methods to HtmlTagWrapper: AddChild(TagWrapperBase [text or node]), AddChild(string), AddChildAt, RemoveChildAt, ClearChildren
Added new overloads to Library.Wrap - Adding children in one call and applying predicate check (bool - use @Model.Where() to return a bool)
Added new DynamicNode.Where overload that doesn't ternary text and just returns true/false (same as Element.Match in prototypejs)
2011-06-13 07:01:04 -02:00
hartvig 8279e4d471 Fixes issue with compatibility between .NET Membership and Umbraco Members on logout. Work items: 30171 2011-06-13 06:44:50 -02:00
agrath@gmail.com 60892f9909 fixed .Attr with HtmlTagWrapper 2011-06-12 20:33:48 -02:00
agrath@gmail.com 0cc7799797 HtmlTagWrapper don't write if empty, class methods, attribute methods 2011-06-12 20:12:52 -02:00
agrath@gmail.com 019141c042 Added Anonymous property collections to HtmlTagWrapper 2011-06-12 19:06:09 -02:00
agrath@gmail.com 942a3c3d72 HtmlTagWrapper, a new class to emit content wrapped in HTML tags. Similar to a cross between HtmlGenericControl and Webforms control and Razor HTML helpers.
First commit - internal attributes, classes, children and single tag wrapping.
Todo: don't write if empty, class methods, attribute methods, anonymous attribute parsing
2011-06-12 15:03:38 -02:00
hartvig f3bedcd707 Updates to template editor to insert macro/item elements as self closing tag 2011-06-12 14:32:38 -02:00
agrath@gmail.com 11b64ccd0d Fixed an issue with parent recursion and an ArgumentException being thrown when I really want null if no parent
Added DynamicNode.Where to enable string predicate parsing IIF
Added overloads to DynamicXml which take an xml string and a XPathNodeIterator
Added If method to @Library to make ternaries easier to read in a Razor template (no need for extra brackets)
Added ToDynamicXml overload methods for XPathNodeIterator and XElement to @Library
2011-06-12 13:34:15 -02:00
hartvig 1a6db0ad8e Issue with Media cache when moving, work items: 30326 2011-06-12 13:25:48 -02:00
hartvig 90e1d97ad7 Performance issue in ResolveUrls, work items 30324 2011-06-12 12:59:12 -02:00
agrath@gmail.com 1f6cc18ba4 Clarified exceptions when using NodeById and MediaById and passing empty strings, e.g. if your source came from @Parameter 2011-06-12 12:17:00 -02:00
agrath@gmail.com 23145b9981 Added @Library.Concatenate and @Library.Join 2011-06-12 12:09:59 -02:00
agrath@gmail.com ce4763a956 Added @Library.Coalesce 2011-06-12 12:00:05 -02:00
agrath@gmail.com e2bbccdf6f Added fallback overloads to GetPropertyValue - GetPropertyValue(string alias, bool recursive, string fallback), GetPropertyValue(string alias, string fallback) 2011-06-12 11:55:38 -02:00
agrath@gmail.com 0ea4e2f891 Added IsHelpers to DynamicXml
Added As<T>() [ return (item as T); ] to @Library
Added ToDynamicXml(string) to @Library
2011-06-12 11:50:35 -02:00
agrath@gmail.com b367f63c1d Fixed null reference problems with new dynamicbackingitem
Fixed recursive property null reference problems
Fixed issue with node having no children and property check crashing
Made DynamicXml behave more consistently based on user feedback
Added IsNull and HasValue to PropertyResult (comes back from GetProperty but you may need to cast it)
Added new Model.IsNull(string alias, bool recursive) and Model.HasValue(string alias, bool recursive) and Model.IsNull(string alias) and Model.HasValue(string alias)
2011-06-12 11:21:44 -02:00
agrath@gmail.com c6dd41c36a Deleted some unused class files 2011-06-12 08:23:28 -02:00
agrath@gmail.com f2d8363556 Added IsHelper methods back into DynamicNode after I accidentally removed them while refactoring
Added new IsHelper methods for IsModZero, IsNotModZero, IsPosition, IsNotPosition, IsNotFirst, IsNotLast
Added .Count to DynamicXML
Fixed Media .Url and .NiceUrl to bring back umbracoFile
Moved MediaById and NodeById implementations to RazorLibraryCore and deprecated original methods with redirection
Fixed parsing issue with ExamineBackedMedia XPathNodeIterator cast method
2011-06-12 08:23:10 -02:00
agrath@gmail.com 9c2a9f81f4 Finished ExamineBackedMedia implementation and fixed bug with GetMedia fallback in example code (didn't add current node attributes so was inconsistent compared to examine) 2011-06-12 06:40:18 -02:00
agrath@gmail.com d63ae05693 Got rid of DynamicMedia and DynamicMediaList implementations (still there but subclasses of DynamicNode & DynamicNodeList now) to enable navigation on Media
Started implementing ExamineBackedMedia instead of using new Media()
2011-06-11 22:15:01 -02:00
matt d727d67ad5 Fixed issue with registering adobe air mimetype when it is already declared at the server level (http://our.umbraco.org/projects/website-utilities/desktop-media-uploader/bugs,-feedback-and-suggestions/17101-Won't-Install) 2011-05-26 07:40:31 -01:00
agrath@gmail.com 40099d9d22 Made DynamicNode and DynamicMedia share an intermediary base class (that inherits from DynamicObject) rather than both inheriting from DynamicObject directly
Want to share some functionality between them
2011-05-21 14:55:10 -12:00
agrath@gmail.com cd13f8de55 Can't change the web.config for a 4.7.x release, redid implementation to not require web.config change 2011-05-21 14:47:57 -12:00
agrath@gmail.com 6a0dfc2c11 Razor @Library empty implementation 2011-05-21 14:34:46 -12:00
hartvig e99669d3ae SSL TLC and a little Macro RTE love. Fixes work items: 30285, 27438, 30295, 30286, 30261, 30192 2011-05-09 09:58:12 -02:00
starfighter83 ad3d064acb Merge 2011-05-09 05:05:37 -02:00
starfighter83 bef5f59c26 Fixes issue with installer hanging at 35% when doing upgrade 2011-05-09 05:04:20 -02:00
hartvig b6c6022272 Work items 30244 2011-05-04 09:40:54 -02:00
hartvig 157e96c935 Work items: 30272, 30280 2011-05-02 09:42:34 -02:00
starfighter83 0661842dea Fixes: Modal Dialogs closes when overlay is clicked
Work Items: 30264
2011-04-28 07:40:32 -02:00
starfighter83 96715d8ef3 Minor change to cms.businesslogic.template.Template.cs 2011-04-28 07:24:19 -02:00
starfighter83 2fa56aaca9 Fixed: Latest Edit dashboard is broken (4.7)
Work Items: 30262
2011-04-27 12:28:28 -02:00
starfighter83 013367c8b7 Fixed: Update Password Module breaks all other dashboard controls
Work Items: 30044
2011-04-27 12:20:05 -02:00
starfighter83 46683c78a9 Fixes: User Permission: Not able to edit page permission when long page names are there in the content tree
Work Items: 30265
2011-04-27 12:04:26 -02:00
starfighter83 7540e696cb Fixes: Rolling back the version of a Document with no Template specified causes a YSOD
Work Items: 30252
2011-04-27 10:56:01 -02:00
starfighter83 6c5941196f Forcing .NET 2.0 security rules, to make it possible to run in medium trust 2011-04-27 07:03:55 -02:00
starfighter83 badad9a1c3 small update to previous commit (move or copy dialog) 2011-04-26 13:01:39 -02:00
starfighter83 8f8b00fee9 Fixes issue with permissions on child nodes not being checked when doing a move or copy
Work Items: 30128, 30129
2011-04-26 12:24:18 -02:00
starfighter83 f1196aa088 Uses jeditable for key value prevalue editor inline edit, should support all chars now 2011-04-26 10:00:41 -02:00
starfighter83 7b66d80f5c Merge 2011-04-21 10:19:19 -02:00
starfighter83 8348d551f7 Small update when editing media, other props like width, height will also be refreshed in ui when uploading/deleting image 2011-04-21 10:18:41 -02:00
hartvig ff56d5ed22 Updates to code editor saving routines 2011-04-21 07:37:57 -02:00
starfighter83 8d0a227629 Fixes: Admin user is unable to remove the start node filed values
Work Items: 30255
2011-04-20 07:11:14 -02:00
starfighter83 f8c6e59121 Merge 2011-04-20 06:53:35 -02:00
starfighter83 84c6913162 Fixes: Media, Selecting remove checkbox removes the image but does not remove its specifications
Work Items: 30254
2011-04-20 06:52:28 -02:00
hartvig 35099746be Adds missing Exception file 2011-04-20 05:23:47 -02:00
hartvig 6c83107f24 Merge 2011-04-18 17:44:42 -02:00
hartvig ae18fcda1a Work items 30127 2011-04-18 17:43:23 -02:00
starfighter83 47bd9180dc Fixes: Constrain proportion checkbox should be removed
Work Items: 23421
2011-04-18 11:16:23 -02:00
starfighter83 1d86530879 Fixes Insert / edit embedded media problem in Umbraco 4.7.0
Work Items: 30205
2011-04-18 10:30:24 -02:00
starfighter83 c2eea73b98 Fixes Wrong TinyMCE stylesheet order
Work Items: 30184, 30183
2011-04-18 10:10:13 -02:00
starfighter83 734f029679 Adds mask to datepicker input field
Work Items: 30186
2011-04-18 08:37:25 -02:00
hartvig 2fad45f972 Fixes issue with internal app/section based user validation 2011-04-16 04:54:08 +07:00
agrath@gmail.com 5c6e8526da Changed IsLast implementation to behave properly when the DynamicNodeList is not a parent item children list
Changed IsHelper default valueIfFalse to be string.Empty on IsHelper(Func<DynamicNode,bool> func, string valueIfTrue) implementation
2011-04-05 23:15:23 -12:00
agrath@gmail.com 3c52ac851f Slight change to handling of True/False when value isn't defined on a node but property is in DynamicNode 2011-04-05 23:06:30 -12:00
agrath@gmail.com 5bcf591a72 Fixed OrderBy for multiple properties when one or more of those properties is a real property on DynamicNode [CreateDate etc]
Fixed OrderBy so it doesn't crash when ordering by a property which doesn't exist on one of the DynamicNodes in the set
2011-03-25 10:48:03 -13:00
agrath@gmail.com 10672f02a1 Fixed .OrderBy with single properties which are implemented as actual properties (e.g. Level, CreateDate, UpdateDate) - dynamic properties should have ordered correctly 2011-03-25 09:47:00 -13:00
agrath@gmail.com ddf97c30d1 Added ul, span to the list of excluded elements for DynamicXml 2011-03-25 09:34:55 -13:00
agrath@gmail.com 9a56886f1d Made !, != true more robust when property may not exist on a node
Fixed some cases of && breaking where the wrong number of parameters was passed to the LambdaExpression
2011-03-25 09:34:39 -13:00
agrath@gmail.com b198edeeaa Made DynamicNodeList.Where, DynamicNodeList.OrderBy public again 2011-03-25 09:33:39 -13:00
agrath@gmail.com 76f83ddda0 Fixed RTE types in DynamicNode from still getting converted to DynamicXml due to missing return statement 2011-03-25 09:33:00 -13:00
agrath@gmail.com 23aa9e60fe Added GetProperty(string alias, bool recursive) overload to DynamicNode
Added GetPropertyValue(string alias) and GetPropertyValue(string alias, bool recursive) to DynamicNode
2011-03-22 19:01:17 -13:00
agrath@gmail.com 3d396d2b63 Added Index/Position method to DynamicNode for when it's contained within a DynamicNodeList and you're iterating
Added bool IsHelper(Func<DynamicNode,bool>), string IsHelper(Func<DynamicNode,bool>, string valueIfTrue), string IsHelper(Func<DynamicNode,bool>, string valueIfTrue, string valueIfFlase)
Added IsFirst/IsLast/IsOdd/IsEven helpers for checking position in current context/list
Added IsEqual for checking if the current node matches another by Id
Added IsDescendant/IsDescendantOrSelf/IsAncestor/IsAncestorOrSelf for checking relationships between two nodes
2011-03-22 18:48:57 -13:00
agrath@gmail.com 93d65ced40 Add IsNull and HasValue methods to Dynamic* classes
**Breaking Change: DynamicNull.HasValue and DynamicNull.IsNull have been changed from properties to methods
Rename umbraco.MacroEngines.ExtensionMethods as umbraco.MacroEngines.PrivateExtensionMethods
Implement extension method invokes for DynamicNode
2011-03-22 18:02:32 -13:00
boxbinary a079136665 Fix for umbracoContentXMLUseLocalTemp trying to make a directory with the name "umbraco.config" rather than the container "UmbracoData"
Work Items: 30167
2011-03-15 09:30:56 +00:00
hartvig 77e8c6dfe2 Adds IE9 pinning support by Matt Brailsford 2011-03-14 19:05:35 -01:00
hartvig d2b266824b Adds Related links razor template 2011-03-14 18:38:39 -01:00
hartvig 5a6313182e Added documentation to all Razor templates 2011-03-14 18:14:37 -01:00
starfighter83 252a3061eb update to uc wrapper serialization helper 2011-03-14 12:48:47 -01:00
starfighter83 24cabcdad3 update to SerializationHelper 2011-03-14 12:34:16 -01:00
starfighter83 0ba61139f2 Merge 2011-03-14 12:32:49 -01:00
starfighter83 e3d1e3b48c Adds SerializationHelper to userControlWrapper (makes it super easy to do xml properties with uc wrapper) 2011-03-14 12:32:00 -01:00
hartvig 8833034a35 Updates to Razor snippets (WIP) 2011-03-14 11:42:41 -01:00
starfighter83 58294a6be9 Merge 2011-03-14 09:46:38 -01:00
starfighter83 fc2eaecb33 adding files related to tinymce upgrade 2011-03-14 09:46:21 -01:00
starfighter83 cd38cb1412 Updates tinymce to 3.4 2011-03-14 09:44:03 -01:00
agrath@gmail.com 1b060dfdbf Implemented Pluck/Select to extract a given property from a DynamicNodeList and return it as a List<T>
Example:
var colours = @Model.Children.Select("colour");
//Red, Green, Blue ...
Uses the parser from .Where internally
Aliased as .Pluck
2011-03-12 16:29:02 -13:00
agrath@gmail.com 1a2bba4b2b Added data type detection for MNTP/CSV to return List<int> and fix for NodeById/MediaById to handle List<int> correctly 2011-03-12 15:19:54 -13:00
agrath@gmail.com 44bfcaf373 Changed the decimal.TryParse code slightly to replace , with . before parse attempt
This is because strings like this: "2442,5453,5366" were incorrectly parsing to be "244254535366"
2011-03-12 15:07:17 -13:00
agrath@gmail.com 073053aa33 Work Item: 30160 (DataType lookups not working correctly) 2011-03-12 13:21:34 -13:00
agrath@gmail.com b624d7479a Fixes work item: 30156, using prop.Contains(string) || !prop.Contains(string)
Added ContainsInsensitive extension method for use inside .Where (fixed method finder too)
2011-03-12 12:33:09 -13:00
matt 5b353d7b4c Work Item: 30153 2011-03-10 15:14:25 +00:00
hartvig 3f3c4a78d7 4.7 it is... 2011-03-10 13:25:44 -01:00
hartvig a5e2d1e107 Work items: 30152 2011-03-10 13:17:40 -01:00
agrath@gmail.com b189b70214 Merge 2011-03-09 07:55:54 -13:00
agrath@gmail.com 1716b94449 Added some extra properties/functions to DynamicNull to provide a way to check to see if a child doc type actually exists.
.HasProperty will check for a property existence but because the child types are returned as DynamicNull, you couldn't check for null equality.
Use DynamicNull's .IsNull (true) or .HasValue (false) or .Count() (0) or a typeof check
2011-03-09 07:52:05 -13:00
agrath@gmail.com f5a7001859 Fixed handling of get properties on DynamicNode when used in a BinaryExpression and neither side is a LambdaExpression 2011-03-09 07:42:43 -13:00
starfighter83 111dee7187 Merge 2011-03-09 16:28:42 -01:00
starfighter83 df04d6ce22 Fixes issue with breadcrumb razor cshtml template 2011-03-09 16:28:25 -01:00
hartvig 5fdfc0d1f8 Work items: 30072 2011-03-09 09:23:08 -01:00
agrath@gmail.com ddcf34b80c Added .Sibling to DynamicNodeWalker which is a shorthand for checking both .Next() and .Previous()
overloads are .Sibling(int) [which you can pass negative to and is equivilent to .Previous(+int) ] or .Sibling(string) which checks nodeTypeAlias
.Sibling(string) will start walking forward at the current node and then wrap back to 0 until it reaches the starting point again
2011-03-08 19:54:55 -13:00
agrath@gmail.com a02aca0f62 Added support to DynamicNodeWalker for finding nodes that are Up/Down/Previous/Next by NodeTypeAlias
Up and down are similar to Ancestors(string nodeTypeAlias)/Descendants(string nodeTypeAlias) but return the first match
2011-03-08 19:42:59 -13:00
agrath@gmail.com d7e83cb1ee Added support to DynamicNodeWalker so that .Next() and .Previous() can be called on nodes which did not come from a DynamicNodeList (e.g. a node you have from @Model) - assuming it has a parent 2011-03-08 19:22:41 -13:00
agrath@gmail.com fa5b85557f Added support to DynamicNodeList for .Add and .Remove methods to support this use case:
http://our.umbraco.org/forum/developers/razor/17934-Creating-a-DynamicNodeList-with-a-'for'-loop
2011-03-08 19:06:55 -13:00
agrath@gmail.com 042e373b6a Added support for iterating over DynamicXml
e.g. @foreach(var level in @Model.someXmlProperty.Book)
2011-03-08 19:00:44 -13:00
agrath@gmail.com 150d4648c1 Added support for chaining properties if a previous property access returns DynamicNull 2011-03-08 19:00:04 -13:00
agrath@gmail.com 017ed3635a Fixed .Ancestors(int) to return ancestors where the level <= int rather than level = int to match .Descendants(int) >= behaviour 2011-03-08 18:43:59 -13:00
agrath@gmail.com 9949420c6d Change HasAccess and IsProtected to be getters so they can be used in .Where
http://umbraco.codeplex.com/workitem/30096

Add support to DynamicQueryable for accessing properties that are not dynamic and are actually defined on DynamicNode
2011-03-08 18:38:06 -13:00
agrath@gmail.com 9b74eee10c Ensure that getdatatype doesn't throw an exception
http://our.umbraco.org/forum/developers/razor/18085-Access-custom-node-properties-with-Razor
2011-03-08 18:22:31 -13:00
agrath@gmail.com bc8f21f92d Added implementation for .Visible which wraps umbracoNaviHide != 1 2011-03-08 18:09:06 -13:00
hartvig 1bf6604da9 Work items: 30124 2011-03-08 11:19:06 -01:00
hartvig 5c8eec28c2 Work items: 30088 2011-03-08 11:17:44 -01:00
hartvig c7e1c439ff Work items: 30125 2011-03-08 11:12:49 -01:00
hartvig 8d19cf6925 Work items: 30143 2011-03-08 11:00:16 -01:00
hartvig b52e347396 Work items: 30142 2011-03-08 10:30:58 -01:00
PerPloug c12e2e8e77 symbol files 2011-03-04 13:05:23 -01:00
PerPloug 18ec3850da Merge 2011-03-04 12:15:37 -01:00
PerPloug 5ca7822262 Build file symbols 2011-03-04 12:14:13 -01:00
hartvig 634aaf757f Add support for finding app_code extensions in subfolders for xslt/rest extension discovery 2011-03-03 09:16:03 -01:00
hartvig 1e8bf4ff83 Work items: 30110 2011-03-03 08:41:05 -01:00
starfighter83 dec48c7442 Merge 2011-03-02 13:57:44 -01:00
starfighter83 b566324e7a Merge 2011-03-02 13:57:15 -01:00
starfighter83 bd09b21bb8 Fixes: Splitbuttons in edit template should only be activated on click
Work Items: 30097
2011-03-02 13:56:37 -01:00
hartvig 45ee50ed0f Adding HasCookieValue back to StateHelper and marking it obsolete 2011-03-02 13:50:29 -01:00
hartvig ea30785baf Work items: 30101 2011-03-02 13:17:30 -01:00
Elijah 7edd9e92e5 DLR Editor Now Saves Files In Sub Dirs 2011-03-02 01:48:58 -11:00
PerPloug cd170a18ab Removes python folder and empties macroScripts folder 2011-03-01 12:19:19 -01:00
starfighter83 90539868f3 style updates to splitbutton 2011-03-01 09:18:18 -01:00
starfighter83 1121c7ca79 changes width of splitbutton menu 2011-03-01 09:08:28 -01:00
starfighter83 3d8144c617 changes position of razor splitbutton in template editor menu 2011-03-01 08:58:44 -01:00
starfighter83 914ccf873a splitbutton finetuning 2011-03-01 08:35:34 -01:00
starfighter83 8666742004 Merge 2011-03-01 07:24:32 -01:00
starfighter83 f91013618f changes to splitbutton js 2011-03-01 07:24:07 -01:00
hartvig 3239ae8adb Missing updates to legacy and dlr projects 2011-02-28 19:41:06 -01:00
starfighter83 e8093526d0 Merge 2011-02-28 14:37:53 -01:00
starfighter83 905a55a5ee Adds some js so that the macro dropdown in template editor doesn't go outside the screen 2011-02-28 14:37:15 -01:00
hartvig 931aef0265 Merge 2011-02-28 13:03:58 -01:00
hartvig 23605b5a4b Changing /python to /macroScripts 2011-02-28 13:03:09 -01:00
starfighter83 7422b2a712 Merge 2011-02-28 12:03:58 -01:00
starfighter83 9ac64f2668 Style update to split button 2011-02-28 12:03:09 -01:00
hartvig 5a5aafd610 Merge 2011-02-28 11:49:29 -01:00
hartvig c4272eecf3 Casing error in webpages:Enabled appSetting (all credit to @elijahGlover for spotting!) 2011-02-28 11:48:13 -01:00
starfighter83 e86d5f79c1 style update to split button, down arrow always visible 2011-02-28 11:36:12 -01:00
starfighter83 3904f7799e fixed ie issue with macro split button 2011-02-28 11:32:10 -01:00
starfighter83 fcf92188e9 Merge 2011-02-28 11:19:17 -01:00
starfighter83 25dfb4a2da Merge 2011-02-28 11:18:39 -01:00
PerPloug 31eb415b72 Merge 2011-02-28 11:18:19 -01:00
PerPloug bf3edcf36a version number change to 4.7 2011-02-28 11:16:56 -01:00
starfighter83 ff802ebef4 Merge 2011-02-28 11:16:55 -01:00
hartvig ff678dd856 Marking the changeset as 4.7 RC! 2011-02-28 11:16:21 -01:00
starfighter83 8271892411 Updated to macro button on edit template page (split button, possible to choose macro from dropdown menu) 2011-02-28 11:16:20 -01:00
hartvig d6befbd83c Issue with Membership and homepage + updates to razor templates. Work items: 30072 2011-02-28 11:14:28 -01:00
PerPloug 4b70a5f56e Merge 2011-02-28 11:10:32 -01:00
PerPloug df9a18fb45 missing symbol files 2011-02-28 11:10:02 -01:00
agrath@gmail.com 4f496ef5da Updated web.config.ssaolap01.xslt 2011-02-27 22:56:12 -13:00
agrath@gmail.com aaa90bea14 More graceful handling of missing properties in .Where - TryGetMember now returns DynamicNull
Only return DynamicNull if property truely doesn't exist - if it does exist and has no value, still return null
2011-02-27 22:55:50 -13:00
PerPloug 41d344d481 Merge 2011-02-28 10:47:27 -01:00
PerPloug 6be3b5d93b build version id 2011-02-28 10:46:48 -01:00
hartvig bcb399f768 Merge 2011-02-28 10:03:19 -01:00
hartvig 59e41e3912 Work items: 30086, 30087 2011-02-28 10:01:53 -01:00
PerPloug 468f688f20 Merge 2011-02-28 09:55:40 -01:00
PerPloug 3f74ee4ab5 adding system.webpages to build dir 2011-02-28 09:55:02 -01:00
agrath@gmail.com 60c18bdff9 More graceful handling of missing properties in .Where - TryGetMember now returns DynamicNull (IEnumerable with fake .Where and .OrderBy) when the property/child type doesn't exist.
Expression Tree in DynamicQueryable explictly checks for this type and forces that portion of the predicate/expression tree to return true, bypassing the missing property
Handy when you are checking e.g. a boolean property in a .Where and that boolean doesn't exist on all nodes.
2011-02-27 21:53:45 -13:00
PerPloug 300da7f04a One more change to build file 2011-02-28 09:46:21 -01:00
PerPloug d324ee90a7 Change build order 2011-02-28 09:36:57 -01:00
PerPloug 5fd694cca9 nant build 2011-02-28 09:29:34 -01:00
PerPloug 5491569b8c Merge 2011-02-28 09:23:43 -01:00
PerPloug f1b904ecc4 web.config 2011-02-28 09:23:21 -01:00
PerPloug 50f9170935 sdasda 2011-02-28 09:22:32 -01:00
PerPloug dbc8a07628 sdsad 2011-02-28 09:21:22 -01:00
PerPloug 6519055d21 New nant file 2011-02-28 09:16:35 -01:00
starfighter83 38bbe32f16 Fixes styling issue with split button and chrome 2011-02-28 09:02:42 -01:00
starfighter83 4edc96af7d Merge 2011-02-28 08:35:26 -01:00
starfighter83 e3f42ef388 Update to template split button, new location of razor templates 2011-02-28 08:34:29 -01:00
agrath@gmail.com bba0fcfd5f Merge 2011-02-27 09:00:00 -13:00
agrath@gmail.com 7ca429cb61 Added overloads to AncestorsOrSelf, Ancestors, Descendants, DecendentsOrSelf to filter by Level or NodeTypeAlias
Rewrote implementations internally so a Func<DynamicNode,bool> [or Func<INode,bool>] is used so that there's only one implementation of each
2011-02-27 08:55:15 -13:00
hartvig 9707a61303 Work items: 30078 2011-02-27 18:00:30 -01:00
hartvig 6b2858d552 Updating namespaces in umbraco.MacroEngines.Iron project 2011-02-27 14:49:00 -01:00
hartvig c03ee2cecd Missing assemblyinfo.cs 2011-02-27 14:43:20 -01:00
hartvig 38c60c69bf Adding umbraco.MacroEngines.Iron 2011-02-27 14:37:09 -01:00
hartvig 6bc277b4f2 Work items: 30052 2011-02-27 13:23:01 -01:00
hartvig 1dae998eaf Work items: 30073
Encoding issues in temporary razor files and general developer scripting editor
2011-02-27 12:46:22 -01:00
hartvig 78a3d02b89 Clean up of xslt and dashboard config files 2011-02-27 12:17:04 -01:00
hartvig 9729ad4d31 Work items: 30082
Properties from Richtext editor isn't encoded by razor anymore as DynamicNode will return an IHtmlString for RTE properties
Changed the lookups of Yes/no and tinmce datatypes ids to consts as these won't change anyway
2011-02-27 12:13:04 -01:00
hartvig 11da35ae5f Exclude IronPython and IronRuby from default distribution (will be separate download). Work items: 30081 2011-02-27 11:57:33 -01:00
agrath@gmail.com cbe94ae6aa Refactored ExtensionMethod search code from DynamicNodeList (searches for extension methods e.g. .Random()) to tidy it up
Moved Extension Method searching code to seperate static class
Moved all the defined extension methods for DynamicNode into the same ExtensionMethods.cs file
Changed the way that .ContainsAny within a where is evaluated to use the ExtensionMethodFinder class - should allow extra search methods to be defined
2011-02-26 16:15:45 -13:00
Elijah f58c453334 Fixed Unary StartsWith("~") Razor 2011-02-26 16:26:06 -11:00
Elijah 0202526acc Updated Legacy Macro Engines to work with new changed IMacroEngine 2011-02-26 16:10:16 -11:00
Elijah cfb21237c0 Added FileLocation To <umbraco:macro /> template control 2011-02-26 16:05:30 -11:00
agrath@gmail.com 1f05d43047 Added new overloads to MediaById and NodeById which take List<object> or params object[] and return DynamicNodeList or DynamicMediaList [new - doesn't support OrderBy,Where etc]
Added to allow retreiving multiple items by id when you know the Ids, e.g.: using MNTP to select nodes and then needing to get them in Razor
2011-02-26 11:43:23 -13:00
agrath@gmail.com 6bc71000af Commit of updated umbraco.MacroEngines.csproj 2011-02-26 11:12:26 -13:00
agrath@gmail.com a32e8894cd Added support for calling non standard extension method style helpers within a .Where
Intended as a future extensibility point, provides a way for the parser to redirect into a static method library of helpers
Currently, only one method is available - ContainsAny
Functions like string.Contains but uses needles from a List<string>

var values = new Dictionary<string,object>();
var keywords = new List<string>();
keywords.Add("Five");
keywords.Add("Four");
values.Add("keywords",keywords);
var items = @Model.Children.Where("Name.ContainsAny(keywords)", values);
2011-02-26 11:12:06 -13:00
agrath@gmail.com 6d615e6762 Work on DynamicQueryable to support .Where("bodyText.Contains(\"string\")")
Chaining works too: .Where("Name.SubString(1,3).Contains(\"v\")");
2011-02-25 16:58:17 -13:00
agrath@gmail.com b1ff0db8fe Work on DynamicQueryable to support .Where("shouldBeVisible && Level < 4") rather than .Where("shouldBeVisible == true && Level < 4")
Confirmed other test cases of .Where still work
2011-02-25 12:16:03 -13:00
agrath@gmail.com 3961787463 Added DynamicNode.HasProperty(string) method to check to see if a particular DynamicNode has a property 2011-02-25 00:51:41 -13:00
agrath@gmail.com 9b45a81f22 Rewrote implementation of HandleDynamicNodeLambdas in DynamicQueryable.cs to be easier to read and handle unboxing and type conversion when the output type of the lambda is convertable between the left and right side.
Allows this syntax to work now:
@Model.Children.Where("updateDate < DateTime.Now.AddDays(-2)")
This didn't work previously in 4.7beta because updateDate was still boxed as an object and object < DateTime can't be implicitly converted

@Model.Children.Where("bodyText.Contains('ipsum')") still doesn't work because the parser doesn't know how to invoke .Contains on a LambdaExpression (yet)
2011-02-25 00:39:53 -13:00
starfighter83 0e9fc4a84b Merge 2011-02-25 09:23:17 -01:00
starfighter83 78aaa85765 Fine tuning to edit template split button 2011-02-25 09:20:54 -01:00
agrath@gmail.com 71c5e35443 Added DynamicNodeWalker and implementation on DynamicNode and DynamicNodeList
DynamicNodeWalker is our secret weapon in the fight against the Rebel XSLT Alliance
Navigate nodes by calling Up(), Down(), Next() and Previous() on them
Next(1) will jump two items along within the current list, whereas Next() will walk by one within the list
Previous(1) will move two items backwards within the current list
Up() is a special wrapper around .Parent which has an overload .Up(int) to replace @Model.Parent.Parent.Parent... [.Up(2)]
Down() will take you to the first Child item and is equivilent to .Children.First(), use .Down(1) to replace .Children.First().Children
If one of the NodeWalker functions fails to find a node at the requested position, it will return null
2011-02-24 17:19:50 -13:00
agrath@gmail.com 603a12c5a0 Split umbraco.MacroEngines.Juno into two subfolders (namespaces remain the same)
RazorCore contains all the core razor engine implementation
RazorDynamicNode contains all the DynamicNode functionality and associated support files
2011-02-24 16:05:54 -13:00
agrath@gmail.com 78ae4132eb Added IEnumerable Map method used in Descendants feature
Fixed DynamicNodeList.OrderBy where there was only one column and the ordering was descending
Added DateTime.TryParse support to DynamicNode property retrieval to allow OrderBy and Where to have date support
Added IsProtected & HasAccess to DynamicNode
Added .AncestorsOrSelf to DynamicNode
Added .Descendants to DynamicNode [Deep Children]
Added .DescendantsAndSelf [Deep Children]
Fixed .nodeTypeAlias children collection crashing when the node didn't contain any children of that type
Added cshtml templates first versions for DynamicNode, these are samples I demo'ed at the Auckland umbraco meetup the night of 4.7beta release
2011-02-24 15:56:52 -13:00
psterling 9a4f44e73d Merge 2011-02-25 03:53:50 +08:00
psterling 11d09a6796 Added explanatory text to connection error messages in installer 2011-02-25 03:51:37 +08:00
starfighter83 8d064c89f7 Merge 2011-02-24 14:58:57 -01:00
starfighter83 6936a1db5a Update to edit template toolbar, WIP 2011-02-24 14:57:33 -01:00
matt 007bab36cc Rolled back changes to web.config 2011-02-24 14:58:20 +00:00
matt ccf832fec5 Removed rouge zipupload files, and fixed missing DMU dashboard (didn't realize the config file was in multiple places) 2011-02-24 14:43:53 +00:00
slace 4fcc62f04a merge 2011-02-23 01:17:53 -11:00
starfighter83 c09b5102af Fixes: TinyMCE no longer defaults <P> tags around text
Work Items: 29964
2011-02-23 09:26:40 -01:00
starfighter83 49c4ce45cb Merge 2011-02-23 07:54:52 -01:00
starfighter83 126c62dee5 Merge 2011-02-23 07:50:07 -01:00
starfighter83 20bff9acd4 Fixes: Inserted macro in rte always positioned above existing content (in IE)
Work Items: 30061
2011-02-23 07:49:15 -01:00
Elijah c2ff9019cf Microsoft.Web.Infrastructure.dll is required, missed it bacause webmatrix was installed 2011-02-22 21:14:52 -11:00
hartvig ff3a776617 Fix for parents in DynamicNode by Agrath 2011-02-23 00:16:50 -01:00
slace 76bb93fa23 changing umbraco.presentation project to .NET 4.0 2011-02-22 13:44:54 -11:00
hartvig 4225ac9d8a 4.7.0.beta 2011-02-22 23:10:34 -01:00
hartvig 6e58c622cd Work Items: 30059 2011-02-22 23:03:23 -01:00
hartvig ceb8c9d896 Work items: 29237 2011-02-22 23:00:41 -01:00
hartvig 5eb20a1101 Better error reporting inside the NiceUrl engine 2011-02-22 13:53:56 -01:00
hartvig 9196c039d1 Patches via GPLwhite => Work items: 30057 2011-02-22 13:30:20 -01:00
hartvig d54b2416f0 Work items: 30050 2011-02-22 13:27:45 -01:00
hartvig 7be3314a11 Work items: 29917, 30065, 30066 2011-02-22 13:23:15 -01:00
hartvig c2acb33933 Fix by Lee Kelleher. Work items: 30064 2011-02-22 12:55:50 -01:00
hartvig 5ca12fb99f Work items: 29918 2011-02-22 12:00:15 -01:00
hartvig b2db75bcb2 Fixes issues with macro caching, Work items: 29891 2011-02-22 11:52:58 -01:00
hartvig e2cee9e99d Work items: 29972 2011-02-22 11:21:22 -01:00
hartvig 526bc454a5 Work items: 29149 2011-02-22 11:03:28 -01:00
hartvig fef629181f Work items: 29934 2011-02-22 09:45:21 -01:00
hartvig 33741210b3 Fix to macro container bug. Thank you to the 'mysterious patcher'. Work items: 29874 2011-02-22 09:11:45 -01:00
psterling 970903eb2a Added graceful installation completion option when no connection to repo exists 2011-02-22 13:13:58 +08:00
Elijah 9d5c127c14 Resharper Renamed My Property!!! Now Fixed :( 2011-02-21 17:27:32 -11:00
Elijah 0071bfbb13 webPages:Enabled requires a lowercase "W" 2011-02-21 17:01:55 -11:00
PerPloug 69ccf5a138 AddRestExtension package action, swicth to use XmlHelper instead of doc.load(); 2011-02-21 12:49:45 -01:00
hartvig 4866bcafb8 Fixes issue with tildes in content, work items: 30048 2011-02-21 11:12:38 -01:00
hartvig 64914da779 Adding missing files 2011-02-21 10:05:13 -01:00
hartvig 16f78d0f4c Merge of razor query improvements (missing one file in merge, though - will be added in next commit!) 2011-02-21 09:28:13 -01:00
PerPloug fa008b3679 Removing umbraco.MacroEngines.Legacy files from build 2011-02-21 09:05:34 -01:00
agrath@gmail.com 03441fab21 Added umbraco.Settings entry for controlling what document element types are parsed as DynamicXml
Added documentElement checking to DynamicXml convert for DynamicNode property get to solve a potential issue with XHTML RTEs
Fixed issue with calling @Model.Children.First() in testing (null Children in testing)
Put some commented placeholder code in .XPath->DynamicNodeList inside DynamicNode.cs for future return of DynamicXml if not valid List<NodeFactory.Node>
2011-02-20 19:55:06 -13:00
psterling 3e56fe947a Add catch for no internet connection on final Installer screen 2011-02-21 05:38:03 +08:00
psterling 9410d34485 Update to DB selection text in installer 2011-02-21 05:05:03 +08:00
agrath@gmail.com 6b431eb000 Fixed a bug in DynamicNode when the string contained "false" it would fail and not return (bool)false
Decided that if using @Model.XPath and you were in testing, then the resulting DynamicNodeList should contain self/this, not be empty
Should allow chaining to work when in test mode

Fixed a potential issue when DynamicNode got returned during testing because there are no children
and then property accesses would return false causing chaining to break

Added [a somewhat experimental] DynamicXml and xml fragment detection within DynamicNode to DynamicXml,
When accessing a string property that contains XML, you can now continue your dot based access
Call .ToXml() to get the real XML string again
Call .XPath(string) to run a XPath query on the fragment and return another DynamicXml
Example:
	<Catalog>
	  <Book id="bk101">
	    <Author>Garghentini, Davide</Author>
	    <Title>XML Developer's Guide</Title>
	    <Genre>Computer</Genre>
	    ...
	@Model.Children.Random().someXmlProperty.Catalog.Book[1].Genre
	@Model.Children.Random().someXmlProperty.Book[1].XPath(".//Genre")
	@Model.Children.Random().someXmlProperty.Book[1].ToXml()
2011-02-19 21:19:45 -13:00
agrath@gmail.com 84d7999f32 Added .XPath helper to DynamicNode list that allows you to use XPath to query from the current node represented in XML (e.g. if you have a child DynamicNode which actually exists part way down the original dom from NodeFactory then get it at that position (allowing you to use .. to move to parent)
Nodes are attempted to be turned back into NodeFactory.Node when returned by XPath and then wrapped in DynamicNode and then DynamicNodeList

Added .Random parameterless overload to pick a single random node from the DynamicNodeList

Example of new Methods being used:
<img src='@Model.XPath("//ChildItem[catCount = 2]").Random().Media("catPicture","umbracoFile")'/>
2011-02-19 20:05:02 -13:00
Elijah db89bbc676 Merge 2011-02-18 04:12:41 -11:00
Elijah 344c36a84a Updated presentation web.config for razor support 2011-02-18 04:03:14 -11:00
Elijah 868e1bdb42 Updated Build Web.Config To Support Razor 2011-02-18 03:32:39 -11:00
hartvig fa5e5de818 Updates to fetching macro parameters in a case insensitive way 2011-02-18 13:12:58 -01:00
PerPloug 0c5acf544e Merge 2011-02-18 13:08:50 -01:00
PerPloug 627fbcdd15 Version number for nant 2011-02-18 13:06:06 -01:00
hartvig f64e902bf8 Merge 2011-02-18 13:03:47 -01:00
hartvig b5c78d397d Updates to fetching extension methods in a more stable way in DynamicNodeList 2011-02-18 13:02:20 -01:00
PerPloug fe514e15ea Removal of another post-build-event that fails if done in release mode 2011-02-18 12:52:06 -01:00
PerPloug 32887c23e5 Nant files for 4.6.2 2011-02-18 12:44:32 -01:00
hartvig 7df518155d Clean up of merging 2011-02-18 10:09:20 -01:00
hartvig 90f5c4ce9a Merge initial merge of Agraths improvements (might break compilation atm) 2011-02-18 09:38:19 -01:00
agrath@gmail.com cc23fdbd8e Added .Random implementation from the blog post so it's internal to 4.6.2 2011-02-17 20:57:12 -13:00
agrath@gmail.com 3a30c285fe Updated .OrderBy implementation to support OrderBy,OrderByDescending,ThenBy,ThenByDescending properly on DynamicNodeList
Usage is: @foreach(var item in home.ChildItems.OrderBy("catCount, colour desc"))
If you use the simple form of home.ChildItems.OrderBy("catCount") it will use a simpler/faster implementation
2011-02-17 19:07:22 -13:00
agrath@gmail.com d9f420d45a Added .OrderBy method to DynamicNodeList
Only supports single pass, ascending currently, so no ThenBy implementation or Descending variants
The original query parser supports OrderBy("catCount, name desc") by nesting Expression.Call
Current implementation for DynamicNodeList supports OrderBy("catCount") only
2011-02-17 14:52:05 -13:00
agrath@gmail.com 300c975284 Moved caching of property data type from DynamicNode to a static method in ContentType
Simplified SQL query used for property type lookup
Added cache clearing for propertyType cache when ContentType.ClearCache is called
Improves performance of new razor property lookups - most improvement on large sets
2011-02-17 14:23:20 -13:00
hartvig f8b5e5e89d Merge of DougMs patches 2011-02-17 17:19:06 -01:00
hartvig d57bc67121 Merge of Sebastiaans patches 2011-02-17 16:56:22 -01:00
hartvig 71aa8a20af Merge of ElijahGs brilliant razor implementation 2011-02-17 16:52:15 -01:00
hartvig ef50f7d38c Merge more of sgays patches 2011-02-17 16:07:22 -01:00
hartvig 2e6341b945 Merge sgay patches 2011-02-17 13:42:28 -01:00
Elijah e277e4cadb Dynamic keyword is back for Parameters/Dictionary 2011-02-16 22:53:11 -10:00
Elijah 35cfee3f85 inline @inherts not required, fix 2011-02-16 21:42:45 -10:00
Elijah 3a76e9caae Supports default @inherits directive umbraco.MacroEngines.DynamicNodeContext 2011-02-16 21:29:35 -10:00
Elijah 2def8a520a .razor ext added as a Build Provider 2011-02-16 18:42:14 -10:00
Elijah 45fefda660 editMacro.aspx - adds sub directory slash/now shows "Browse scripting files on server..." 2011-02-16 18:40:40 -10:00
matt 8dac6662a5 Updated DMU with latest changes
Changed DMU version number to 2.1.0 to allow for additional work on original DMU project if needed
2011-02-16 18:48:03 +00:00
Elijah 68ce71685d Updated config added factoryType 2011-02-16 01:49:31 -11:00
Elijah ce83c8a1b9 Added SupportedUIExtensions to IMacroEngine 2011-02-16 01:48:40 -11:00
Elijah 3d5ed109af .razor proxy .cshtml file ext- #unbreakingcode 2011-02-16 01:32:04 -11:00
PerPloug fa4483f08c /base issue with virtual directories fixes: 30042 2011-02-16 08:27:41 -01:00
Elijah 8a1c8475b8 Update Interfaces BaseContext 2011-02-13 22:54:51 -11:00
Elijah 7f57fde279 Seperated Parameter & Culture Dict
Fixed inline auto inherit directive
2011-02-13 22:54:14 -11:00
agrath@gmail.com b20d1bfd4c Added support for string Comparisons e.g. @Model.Children.Where("menuType = \"Top Menu\") and support for And/Or @Model.Children.Where("menuType == \"Top Menu\ || menuType == \"Bottom Menu\"") 2011-02-07 17:28:59 -13:00
agrath@gmail.com 070a03e827 Fixed DynamicNodeList extension method invocation finding the wrong method when the method being checked was defined on a class that implemented no interfaces
Caused user-loaded extension methods on DynamicNodeList to be pretty unreliable (would work sometimes, sometimes wouldn't find method - particularly after an iisreset)
2011-02-07 15:29:44 -13:00
agrath@gmail.com 313d67ed94 Added reference to datalayer (to get SqlHelper) from DynamicNode 2011-02-07 14:11:03 -13:00
agrath@gmail.com e7ebcb29bc Broke string properties with new typecasting stuff by returning false instead of true if the typecasting failed (e.g. it was actually a string)
Changed this to a return true

Replaced some API calls via Document & Property (database level, not nodefactory) with a single SQL scalar where I was getting the control type (to determine if "0"/"1" should actually be "true"/"false")
Should perform a lot better now
2011-02-07 14:10:38 -13:00
agrath@gmail.com e5c3c8869a Upgraded DynamicNode to do some type inferrence from the IProperty type .Value which is a string
Already had support for YesNoType (where the string value is 1 or 0) being converted/parsed to boolean
Added some TryParse calls to int and decimal respecitvely so that if a IProperty.Value is a valid decimal or int it will be returned from DynamicNode.TryGetMember as such
This enables the .Where operator to have the correct type after property retrieval so that some numerical comparisons will work

Added support for >, >=, <, <= and %[mod] to .Where
@Model.Children.Where("catCount > 1")
@Model.Children.Where("catCount % 2 == 0")
2011-02-07 13:12:34 -13:00
agrath@gmail.com 878f6fc812 Added support for some more Func<> types in my Where implementation
Refactored GenerateEqual into a Factory method HandleDynamicNodeLambdas that takes an ExpressionType
Implemented Expression.NotEqual
@Model.Children.Where("shouldBeVisible != true") => children that are hidden
2011-02-07 10:23:40 -13:00
agrath@gmail.com 6d0be45acf Changed some type comparisons where I determine if the LambdaExpression is Func<DynamicNode,object> to handle simple equality operations:
e.g. @Model.Children.Where("shouldBeVisible == true")
Also changed internal where implementation to handle Func<DynamicNode,bool> as well as Func<DynamicNode,object>
Both left & right side as lambda expressions should work (though I haven't tested this yet)
e.g. @Model.Children.Where("property1 == property2")
Only == (Expression.Equals) is supported currently due to the extra code required to invoke the lambda when generating the final comparison expression
2011-02-07 08:56:59 -13:00
agrath@gmail.com 649a98daf4 Added missing DynamicQueryable and DynamicQueryableBinders class files for previous commit 2011-02-06 19:53:07 -13:00
agrath@gmail.com bcf735f4f8 Added support for DynamicLinq in place of Lambda syntax. The short version is you can't use a Lambda with a DynamicNode
e.g. @Model.Children.Where(node=>node.shouldBeVisible)
To solve this, I used the DynamicQueryable class from the Linq samples which has a parser that can take a string then modified the internals a bit so
that if your object is a DynamicObject, an additional expression tree is generated which calls the TryGetMember on it
The end result is that you can now do this [I have Random(this DynamicNodeList nodes, int max) in my bin folder]
@Model.Children.Where("shouldBeVisible").Random(2) => two nodes, randomly picked, from the ones that should be visible
*Only* Where is implemented here currently, I'll add support by OrderBy and ThenBy after I've tested some more complex scenarios.
I need to fix a small issue with my DynamicLoading of extensions - under some scenarios the class doesn't get found and i'm not sure why.
2011-02-06 19:52:05 -13:00
matt ba3c7fd680 Added a wmode parameter to DMU badge to prevent it displaying on top of the lock modal popup 2011-02-06 14:49:26 +00:00
matt 043f0e03b2 Merge 2011-02-05 12:46:28 +00:00
matt 03f8aac4e5 Added DMU Flex source
Changed all TheOutfield namesspaces to Umbraco
Added DMU dasboards
Removed ZipUpload dashboards
Added air mimetype to web.config
2011-02-05 12:21:04 +00:00
agrath@gmail.com eba7c9d550 Overloads for DynamicMedia and DynamicNode constructors that take object and string respectively
New DynamicNode .MediaById (because @Model is DynamicNode) to find a media item by id, e.g. if you are using it with @Model.Parameters.imageId
Overloads for MediaById and NodeById that take object and string to match constructors
2011-02-02 15:51:51 -13:00
agrath@gmail.com 5a5ccfea98 Changed reflection of assemblies to all assemblies in bin folder via BuildManager instead of currently loaded assemblies 2011-02-02 13:05:10 -13:00
agrath@gmail.com 799d718881 Refactored my implementation of IEnumerables being returned from .Children etc to return a new type called DynamicNodeList instead of a DynamicNode (singular) containing a nested list.
This makes the code cleaner and also allows for the .Items (underlying initialization data for DynamicNodeList) to be exposed when you have an instance and hide all of the singular properties etc (Url, Name) that are on DynamicNode - they're not applicable for a List.
Rewrote the reflection code for calling methods on DynamicNodeList to allow mix-ins (e.g. external dlls) to have an extension method defined for DynamicNodeList (e.g. Random(nodeCount))
Lambda syntax still doesn't work (e.g. Children.Where(item=>item.shouldBeVisible)) however methods that don't take lamdas (Take, Random[external], Skip, ElementAt, First, etc) work
2011-02-02 11:52:09 -13:00
sgay 0b5ce63c3a fix #29949 - do not hide errors when loading xslt ext 2011-02-01 13:18:22 -01:00
sgay 39a34954ce fix #29989 - refactor TypeFinder and TypeResolver 2011-02-01 13:17:49 -01:00
agrath@gmail.com 83d88e70a5 Fixed an issue with boolean casting in razor file for if shorthand when properties didn't have value 2011-01-31 08:37:44 -13:00
sebastiaan d165b75456 Workitem: 29976 - Additional fix, sometimes the niceUrl does NOT start with a slash, in which case you wouldn´t want to strip the first character 2011-01-31 15:02:24 -01:00
sebastiaan e07dfd49a1 Workitem: 29976 - Additional fix in wording, the word for ´login´ in Dutch is not ´aanmelden´ (which means: ´to register´), but ´inloggen´. 2011-01-31 10:35:58 -01:00
sebastiaan 2b11cab075 Fixes 29976
NiceUrlFetch now uses the new niceUrlJuno function. The result of niceUrlJuno does not include a leading slash. The old NiceUrl (used in the presentation of the URL) does include one, leading to wrong URLs.
2011-01-31 08:43:38 -01:00
matt a5527769f3 Forgot to save project file before commiting 2011-01-30 17:50:37 +00:00
matt 4b8cc30c3f Added Desktop Media Uploader factories, HttpHandler and initial Dashboard control.
Need to finish dashboard control, swap with ZipUpload and test.
2011-01-30 17:39:20 +00:00
Elijah 5cc819407c *Breaking Change* Removed Parameter & Culture Dictionaries - results in easier to read razor 2011-01-29 03:24:12 -10:00
agrath@gmail.com 26bf18766b Fixed a bad check in my patch for booleans that wasn't installation-portable by making it check the DataTypeDefinition instead of ContentTypeId.
Added a cache for the propertyType lookup (within a single DynamicNode instance) in case the razor logic needs to check the same boolean multiple times within a node.
Should improve performance if working with large trees & repeatedly checking a boolean value
2011-01-28 14:36:13 -13:00
sebastiaan 28d5a81403 Workitem 26949 - Fixed: Login field doesn't fit Dutch translation 2011-01-28 13:35:07 -01:00
agrath@gmail.com c692b296d7 Added Pascal Case support to DynamicMedia and .Media helper 2011-01-27 21:56:09 -13:00
agrath@gmail.com a0dd8aa2ab Improves access to media items when working in Razor
Added a new DynamicMedia class that wraps umbraco.cms.businesslogic.media.Media which caches GetProperty calls (while DynamicMedia is instantiated)
Added method to DynamicNode to retrieve a property as DynamicMedia: @Model.Media("catPicture"); or @Model.Media("catPicture").umbracoFile;
Added overload to DynamicNode Media method for shorthand if you only want one property; @Model.Media("catPicture","umbracoFile");
@Model.catPicture will still return the nodeId of the media item because we can't easily check the propertyType (no propertyType on IProperty)
2011-01-27 21:38:06 -13:00
agrath@gmail.com 6382241e4c Special casing in DynamicNode property retrieval for when the property being retrieved is True/False. I'm not sure how comfortable I am with having to go to Document to get the proerty info or the check of the ContentTypeId but the syntactic sugar of being able to go:
if(@Model.shouldBeVisible) {...} where shouldBeVisible is a true/false property on the datatype is pretty nice
2011-01-27 15:29:38 -13:00
agrath@gmail.com 3ab4944e5e If you're dealing with dynamicNode such as using:
var someNode = new umbraco.MacroEngines.DynamicNode(1046) in your template, it instantiates a DynamicNode like you'd expect, but then it doesn't function as a dynamic object
because it wasn't initialised as a dynamic variable [dynamic someNode = new umbraco.MacroEngines.DynamicNode(1046)]

Added a method to DynamicNode called NodeById which returns a new DynamicNode with the ID you pass, so you can call it off @Model
e.g. var item = @Model.NodeById(1046) will still function as a dynamic, even though it was defined as var
2011-01-27 14:49:56 -13:00
agrath@gmail.com 28b48b187a Added DynamicNode constructor that takes an int and passes it to NodeFactory so you can go var @clientNode = new umbraco.MacroEngines.DynamicNode(1560); 2011-01-27 14:22:28 -13:00
agrath@gmail.com fce7ea48b0 Didn't test the AncestorOrSelf changes on a non-parent node. Changed implementation to call into Func<DynamicNode,bool> to check Level == 1
Also fixed post-build rule on umbraco.MacroEngines which had an incorrect path for copying umbraco.MacroEngines to presentation (allows debug without manual file copy, I think)
2011-01-27 13:07:10 -13:00
agrath@gmail.com fbf13d8cf7 Fixed support for AncestorOrSelf when in Test mode (the INode passed to the razor script in testing has a null parent)
Added AncestorOrSelf overload which doesn't require a Func<DynamicNode,bool> argument

Both changes modify DynamicNode.Parent so that if there is no parent, it returns itself instead of null, (you can't new DynamicNode(null) as it throws exception)
and then in the AncestorOrSelf checks, the loop makes sure that it won't get stuck by continually returning itself (because this.Parent returns this)
2011-01-27 12:59:34 -13:00
DougM 00dc8e0356 fix #29829 - Edit datatype -> Richtext editor displays incorrect icons for remove formatting and media 2011-01-27 19:23:13 +00:00
agrath@gmail.com dca21f9ce1 Added support for Macro Parameters in Razor Macros (@Model.Parameters.AnimalName) where AnimalName is defined on the Macro as a Parameter 2011-01-26 08:28:16 -13:00
DougM 48c635e452 fix #29904 - Rich text editor 'insert link' breaks when selecting node with single quote in name (incorreclty marked as fixed in work item) 2011-01-26 20:38:01 +00:00
agrath@gmail.com 69a1e7000c Added support for calling IEnumerable methods which return IEnumerable (e.g. Skip,Take) rather than single nodes (e.g. First,ElementAt) 2011-01-26 07:35:55 -13:00
DougM 1c02059509 fix #29945 - RTE xhtml strict compliant underline and strikethrough 2011-01-26 20:25:08 +00:00
sgay 7631522a9e fix #29966 - cache xslt extensions 2011-01-26 10:46:47 -01:00
agrath@gmail.com c1f96000b4 Adding web.config transformation file for agrath/Gareth Evans/Sniper Systems Laptop 2011-01-25 22:31:33 -13:00
agrath@gmail.com 873871b6c2 Fixing messup 2011-01-25 22:30:56 -13:00
agrath@gmail.com 6650394bf9 Upgraded DynamicNode to handle IEnumerable better so that you can chain method/property calls through an IEnumerable set like this: @Model.Children.Count() or @Model.Children.ElementAt(2) 2011-01-25 22:24:51 -13:00
agrath@gmail.com 9259dd897f Upgraded DynamicNode to handle IEnumerable better so that you can chain method/property calls through an IEnumerable set like this: @Model.Children.Count() or @Model.Children.ElementAt(2) 2011-01-25 22:24:40 -13:00
sgay 934c48cac6 fix #29956 - refactor cookies 2011-01-25 12:14:05 -01:00
starfighter83 5b99b1e803 Fixes small issue with installer db step 2011-01-25 10:36:35 -01:00
starfighter83 4a144ea6da Merge 2011-01-25 09:39:59 -01:00
starfighter83 991fb6236d Fixes: Possible to upload to media root when user doesn't have access (start media node set)
Work Items: 29942
2011-01-25 09:39:24 -01:00
psterling 05459b12c9 backed out fix for #29741 - updates default Admin Language to en-US including date/time/currency formats 2011-01-25 01:45:06 +08:00
hartvig 966c792c8b Patch by sgay. Work items: 29889 2011-01-24 09:58:14 -01:00
starfighter83 320382a143 Small css update to skin customization dialog 2011-01-24 08:04:18 -01:00
starfighter83 2d856cf664 Merge 2011-01-24 07:41:38 -01:00
starfighter83 1cf475e120 Update to installer, makes 'Connection string' input bigger 2011-01-24 07:40:45 -01:00
Elijah afe872c28e Added InjectContext
Using WebPageBase.CreateInstanceFromVirtualPath to create instances
RenderPage now works, copying Parameters/Node
2011-01-23 00:41:33 -10:00
psterling cd50056154 update to API Wiki link in default dashboard 2011-01-21 23:50:30 +08:00
psterling c2caf8ba91 fixes #29741 - updates default Admin Language to en-US including date/time/currency formats 2011-01-21 23:32:51 +08:00
Elijah ec7619510a Merge 2011-01-21 05:26:26 -10:00
Elijah 5859cc9867 Added BaseContext Future Stub 2011-01-21 05:22:49 -10:00
sgay 6e157581ca fix #29889 - content tabs issues 2011-01-21 14:10:52 -01:00
Elijah 10bf3511fc changed activator to use the build engine object factory 2011-01-21 04:58:54 -10:00
Elijah 6922f1d0d3 **Breaking Change IMacroEngine** passes physical path into the validate method
Added CultureDictionary Escape Char _
Razor Validation Added
Inline @inherits directive added when not found
DLR Scripting Engine Validation Soft Fail
2011-01-21 04:26:26 -10:00
Elijah 8511c2b5c8 Added Dynamic Property For Fetching Dictionary Items
Added Base Dynamic Lambda Dictionary
2011-01-21 02:37:03 -10:00
hartvig 7beffb2305 Merge of gplwhite patches, reviewed by hartvig. Work items: 29833 2011-01-21 11:20:01 -01:00
hartvig f51f5354f1 Merge of sgays patches, reviewed by hartvig. Work items: 29931, 29930, 29929, 29928, 29927, 29926, 29447, 29443, 29470, 28975, 29889 2011-01-21 11:10:01 -01:00
PerPloug b67f3a9c8e Missing build dependencie for release target 2011-01-21 07:32:38 -01:00
PerPloug 27ec2d16f1 Updated build.config for webPi package generation 2011-01-21 07:18:31 -01:00
Elijah 17efba1242 Removed Old Razor Stuff 2011-01-20 21:55:51 -10:00
PerPloug 17c3699612 WebPi Assets 2011-01-21 06:42:21 -01:00
PerPloug 0b4d7902b8 Adding missing SqlCE Manifests for x86 + amd64 2011-01-21 06:41:51 -01:00
Elijah 8ada4a4e1e Merge 2011-01-20 18:00:38 -10:00
Elijah e837c3c841 updated macroengine csproj RazorBuildProvider.cs/App.config 2011-01-20 17:55:59 -10:00
Elijah af79bb24e5 Added Medium Trust Support, Razor DLL's can now exist in the GAC or BIN
Added Inline Razor Support - Caches Templates In The App_Data directory for now
Taken out umbdebug from the engine, as it caches the debug content
Custom Build Provider - Future Stub
2011-01-20 17:52:56 -10:00
Elijah 26e6305e9c Add Helper Binaries - Microsoft.Web.Helpers - System.Web.Helpers 2011-01-20 17:49:38 -10:00
sgay 5790ff26fd fix #29931 - cleanup member statue management 2011-01-20 14:19:06 -01:00
sgay 542b892dd5 fix #29930 2011-01-20 14:08:15 -01:00
sgay 4af6ea2b3c fix #29929 2011-01-20 14:04:32 -01:00
sgay b82a251bb8 fix #29928 2011-01-20 14:01:17 -01:00
sgay 582b5797dc fix #29927 2011-01-20 14:00:08 -01:00
sgay edc930241b fix #29926 2011-01-20 13:56:20 -01:00
sgay f08ca0f014 fix #29447 - fail to rebuild content tree 2011-01-20 13:51:47 -01:00
sgay 415f6f38b1 should fix #29443 - duplicate node in content tree 2011-01-20 13:50:29 -01:00
sgay 3b7c8d73de fix #29470 - macros rendered twice 2011-01-20 13:47:46 -01:00
starfighter83 bae04cd27e WIP installer db step update 2011-01-20 11:42:26 -01:00
starfighter83 447582b018 Update to installer, adds continue button to validate permissions step 2011-01-20 11:10:19 -01:00
starfighter83 2af1812b01 WIP installer db step refactor, opens video help link in new window 2011-01-20 09:45:34 -01:00
starfighter83 d8c98ccfd8 WIP installer db step refactor 2011-01-20 09:23:04 -01:00
starfighter83 f4b4c03a9c Merge 2011-01-19 08:27:35 -01:00
starfighter83 580b670f33 Fixes: RTE can't cleanup pasted code automatically(umbraco 4.6.1)
Work Items: 29897
2011-01-19 08:27:00 -01:00
Elijah b450b04ee6 Added Fully Qualified Namespace For RazorBuildProvider 2011-01-18 16:15:55 -10:00
Elijah 9ca7e02e69 Added Web.Config To Configure Razor
Updated csproj dependency paths
2011-01-18 14:23:26 -10:00
Elijah 7144ff46e7 Added Razor ASP.NET WebPages Dependencies 2011-01-18 14:17:47 -10:00
Elijah 3b07515730 Renamed RazorEngine, Context Now Inherits From WebPageBase 2011-01-18 13:55:19 -10:00
Elijah 6f00df4c85 Updated Razor To Use System.Web.Complication.BuildManager 2011-01-18 06:14:06 -10:00
gplwhite 791b31bc3a Work Item #29833
Avoid saving an empty Xml document to the file-based content cache when a database connection is not available.
2011-01-17 15:00:49 -13:00
sgay 7c87b09e97 fix #28975 - broken macros cache 2011-01-17 14:19:54 -01:00
sgay 3ae4511532 fix #29889 - broken content tabs 2011-01-17 14:19:10 -01:00
hartvig 2fd905edb9 Work items: 29899 2011-01-17 09:34:40 -01:00
starfighter83 db10f1ed26 Merge 2011-01-17 06:47:00 -01:00
starfighter83 a9dd0a7e65 Fixed: RestExtensionMethod doesn't honour returnXml property
Work Items: 29898
2011-01-17 06:46:20 -01:00
hartvig d031e1da91 Work items: 29888 2011-01-15 22:06:28 +05:00
PerPloug 74f80e2ba5 Merge 2011-01-12 14:09:59 -01:00
PerPloug bbfc881a9e EditorControls.csproj release configuration fubar 2011-01-12 14:06:47 -01:00
starfighter83 018c5050b9 Merge 2011-01-12 14:06:46 -01:00
starfighter83 96f2ded0aa Merge 2011-01-12 14:05:12 -01:00
starfighter83 f0883b0994 Fixes tinymce media/members issue 2011-01-12 13:59:44 -01:00
PerPloug 571f89bbe3 Recommit of TinyMCE for media and members 2011-01-12 13:58:08 -01:00
hartvig 8e4deca486 Fixes issue with tinymce on media/members (missing commit) 2011-01-12 12:59:07 -01:00
PerPloug 5650c6427a Removes xml files from /bin on release builds 2011-01-12 12:47:12 -01:00
PerPloug 7b2750f503 Disables umbraco.test project in release mode due to MsTest limitation 2011-01-12 12:35:53 -01:00
PerPloug 7c7004c73e Merge 2011-01-12 12:17:44 -01:00
PerPloug ed2d771d32 Changing the build runner configuration requires editing this XML, move configuration to Teamcity, defaults to Release 2011-01-12 12:16:19 -01:00
hartvig 300de8c4ab Marked as 4.6.1 2011-01-12 11:44:35 -01:00
starfighter83 e777a97cb6 Merge 2011-01-12 10:50:57 -01:00
starfighter83 c72f15d1ba Fixes: Unable to set a link in the rich text editor
Work Items: 29861
2011-01-12 10:50:13 -01:00
hartvig 7ce70cc09f Merge 2011-01-12 10:20:21 -01:00
hartvig 35bc0cce0d Work items: 29016 2011-01-12 10:18:53 -01:00
starfighter83 449418c648 Fixes: Deleting Razor scripting files
Work Items: 29859
2011-01-12 10:14:40 -01:00
PerPloug e67a114a70 just a test to see if the right branch i build 2011-01-12 08:50:29 -01:00
PerPloug 461234ad3f Change nant build to 4.6.1 2011-01-12 08:19:00 -01:00
PerPloug 6a0e15e8f1 Auto-removal of .orig files during nant build 2011-01-12 08:06:01 -01:00
hartvig 7f82a46f56 Work items: 29860, 29858 2011-01-12 07:57:21 -01:00
boxbinary 9449ab1ed0 Opening a new branch for 4.6.1 development in the future.
This will be merged back into 4.6.0, and tagged with the appropriate release, when complete.
2011-01-12 01:18:17 +00:00
boxbinary c1cd915f7d Adding tag for 4.6.0 release (yay) 2011-01-12 01:14:14 +00:00
hartvig 0dbd27f21c Adds <httpRuntime requestValidationMode="2.0" /> to default web.config 2011-01-11 21:13:25 -01:00
hartvig fec91ebd75 Setting version number to 4.6.0 - ahhh 2011-01-11 19:08:15 -01:00
PerPloug 335c7a4333 Missing *.pdb files removal from nant 2011-01-11 18:28:35 -01:00
PerPloug 648ac811e8 Merge 2011-01-11 12:52:22 -01:00
PerPloug f6475b3812 Changes default.nant build ID to 4.6 RC1 2011-01-11 12:50:47 -01:00
hartvig ef5cb3dd4c RC 2011-01-11 12:49:36 -01:00
hartvig 4c76081568 Fix to find all dashboards for a section (even if scattered over multiple area elements) 2011-01-11 12:31:30 -01:00
PerPloug 0889e9c033 Merge, Work items: 29844 2011-01-11 12:21:12 -01:00
PerPloug 700aa48a2e New Nibble.ZipUpload.dll which lowercases extensions before creating media items 2011-01-11 12:18:58 -01:00
hartvig 43ccf77d7e Adds helper text for SQL CE 2011-01-11 12:15:22 -01:00
hartvig 24d5eefe38 Merge 2011-01-11 12:02:56 -01:00
hartvig 551bcdde2f Work items: 29830 2011-01-11 11:59:04 -01:00
PerPloug 6f1776fb69 Work items: 29769 adds 40px to the member create dialog 2011-01-11 11:58:39 -01:00
PerPloug 33618f9c2a Merge 2011-01-11 11:36:52 -01:00
PerPloug ff39e069db Reproduced #29779, Calling RefreshContent() after database upgrade fixes empty paths
work items: 29779
2011-01-11 11:32:56 -01:00
PerPloug a2357bad85 Reproduced #29779, Calling RefreshContent() after database upgrade fixes empty paths
work items: 29779
2011-01-11 11:30:07 -01:00
hartvig 3d02429285 Merge 2011-01-11 11:18:34 -01:00
hartvig cef7401ff8 Work items: 29778 2011-01-11 11:14:31 -01:00
PerPloug 8fb62265b7 Work items: 29836 2011-01-11 10:53:17 -01:00
PerPloug 62db053500 Fixes #29836 CloseTriggrs type changed to CloseTriggers (modal.js line 27) 2011-01-11 10:49:51 -01:00
hartvig 0edf5a5e5e Work items: 29841 2011-01-11 10:31:57 -01:00
hartvig dc1be04202 Work items: 29848 2011-01-11 10:24:39 -01:00
hartvig 5c70ba1eb8 Work items: 28882 2011-01-11 10:03:08 -01:00
hartvig 38b1385b66 Fixes issues with uploading files/images. Work items: 29196 2011-01-11 09:42:28 -01:00
boxbinary b9849a2ded Fixes: "Installer bug in IE8: password confirm message is white color. you can't see it"
Work Items: 29843
2011-01-11 09:32:38 +00:00
hartvig 792450328d Work items: 29846 2011-01-11 07:20:03 -01:00
psterling babf5dabe2 fixes #29792 - Link to UrlRewritingManual in the UrlRewriting.config is not working 2011-01-11 03:02:18 +08:00
psterling 1e3eaf8094 updates to license links in about dialog 2011-01-11 02:54:35 +08:00
psterling fec878227e update database installation video link in installer database step 2011-01-11 01:20:39 +08:00
starfighter83 a1abd9dd18 Merge 2011-01-10 14:11:32 -01:00
starfighter83 44e01c09d6 Fixes: Tilde (~) in media path (when getting property value in .net)
Work Items: 28598
2011-01-10 14:11:19 -01:00
hartvig 6eb738e0d3 Fixes issue with SQL CE and loading macros on front end: Work Items: 29781 2011-01-10 13:33:55 -01:00
PerPloug c50d2e994e Adds RazorEngine.core and .templates to nant build 2011-01-10 13:24:56 -01:00
pgregorynz 058b195a12 Timeout bar translation keys for EN 2011-01-10 01:10:45 -13:00
pgregorynz bff788f048 lockout modal styling 2011-01-10 01:03:00 -13:00
hartvig cc96e01b4c Enhanced Razor support. Adds caching, pre-compilation of templates and support for helpers and more. Work items: 29817 2011-01-10 12:23:26 -01:00
starfighter83 b57b18c0b1 Merge 2011-01-10 11:22:38 -01:00
starfighter83 631eb1fecb Fixes: Macros inserted in the RTE get extraneous <p> tags above and below
Work Items: 21883
2011-01-10 11:22:07 -01:00
hartvig 564fa2659b Work Items: 29822 2011-01-10 08:28:58 -01:00
starfighter83 2177686e43 Make sure user is logged back in when he enters correct password 2011-01-07 14:46:54 -01:00
starfighter83 36e0b28e70 Merge 2011-01-07 14:33:12 -01:00
starfighter83 4ac3a5537e Does a lock out instead of a logout when user is idle to long 2011-01-07 14:32:19 -01:00
boxbinary 51977637b7 UX Tweak: Removes shadow from body text in installer. Modifies shadow on step tabs and h1. 2011-01-07 14:09:17 +00:00
PerPloug ee4477f6ab Merge 2011-01-07 10:41:19 -01:00
PerPloug 8baa2db7e7 Removing unnedded update.ascx file from installer 2011-01-07 10:31:59 -01:00
PerPloug 5d3aeee02f Adds upgrade support to installer 2011-01-07 10:18:34 -01:00
pgregorynz 6da0a00e06 Dashboard updates 2011-01-06 22:17:40 -13:00
starfighter83 7d69bed9c9 Fixed: Exception "This document already has a DocumentElement node"
Work Items: 29412
2011-01-07 09:56:19 -01:00
starfighter83 d182a297b8 Merge 2011-01-07 09:21:13 -01:00
starfighter83 aa3b8fb808 Fixed: Juno, installing starter kit from developer section works but ends in YSOD
Fixed: Juno, installing skin from developer section works but ends in YSOD
Work Items: 29821, 29820
2011-01-07 09:20:32 -01:00
boxbinary 73e552d105 Merge 2011-01-07 01:26:06 +00:00
boxbinary 8f2f81b558 Code env fix: Removes source control bindings from csproj files.
Code env fix: Modified .hgignore to ignore .vs10x files and anything in App_Data\TEMP
Fix: upon saving a document type, if the alias has changed, document Xml is regenerated in the db and the Xml caches are told to update.
Fix: upon saving a document type, if the name has changed, the tree updates with that change
Work Items: 29197, 28738
2011-01-07 01:23:09 +00:00
slace 48ff65e597 adding CurrentPage to the .NET macros 2011-01-06 12:22:34 -11:00
slace 58874238cc Adding a more detailed exception when parsing fails for LINQ to Umbraco 2011-01-06 12:09:24 -11:00
Tim Saunders 8062df53f8 Renabled paging paging on skinning step in installer as it is now dynamic. 2011-01-06 19:32:42 +00:00
Tim Saunders 9df031c6fd Text ammendmens to the installer and hiding of the next and back buttons on the skin page. NOTE: These will need to be re-enabled when there are more skins. 2011-01-06 16:43:36 +00:00
starfighter83 b17e54976f small update (related to chrome / macro) 2011-01-06 14:50:19 -01:00
starfighter83 28479e5257 Merge 2011-01-06 13:56:55 -01:00
starfighter83 fb90e44dad Fixes 28639: Chrome crashes in 4.5 when editing macro parameters in TinyMCE 2011-01-06 13:55:38 -01:00
Adam Shallcross 76fc41f14e Merge merged css changes into repo 2011-01-06 14:31:53 +00:00
Adam Shallcross 60a3d581ab Added missing files and updated CSS for missing styles on starter kit panel and bg in text to make it stand out a bit more from the page 2011-01-06 14:19:42 +00:00
starfighter83 c4385335a1 Fixes 29249: Publish At and Remove At do not work 2011-01-06 10:42:19 -01:00
starfighter83 2f90f76348 adds web.config. ... .xslt 2011-01-06 09:24:41 -01:00
starfighter83 873ee6a7d1 Merge 2011-01-06 09:06:06 -01:00
starfighter83 fa54d0a1e8 Fixes 29799: Macro Container: ordering macros throws exception on some nodes 2011-01-06 09:04:41 -01:00
pgregorynz 413fe775d1 Removed references to the installer images directory from presentation project 2011-01-05 12:49:26 -13:00
pgregorynz dd1119bcad Merge 2011-01-05 12:35:49 -13:00
pgregorynz 9efc931b92 adding link to getting started to the THEEND step on the installer 2011-01-05 12:14:09 -13:00
pgregorynz 09a785537e Adding link to getting started guide on dashboard 2011-01-05 12:09:28 -13:00
Tim Saunders d851afd8e2 Merged installer text changes 2011-01-05 13:05:33 +00:00
Tim Saunders e883a22093 Installer text and spelling corrections. 2011-01-05 12:58:42 +00:00
starfighter83 7dea3b872f Fixes broken build 2011-01-05 11:45:28 -01:00
starfighter83 6795f700d5 small updates to skinning 2011-01-05 11:38:49 -01:00
starfighter83 682104a1f1 some includes (related to TinyMCE upgrade) 2011-01-05 09:21:31 -01:00
starfighter83 d29eb77383 Updates TinyMCE to 3.3.9.3 (latest stable) 2011-01-05 09:17:29 -01:00
starfighter83 07804c149b Merge 2011-01-05 08:17:20 -01:00
starfighter83 b89257b96c Fixes issue with macro container css not being found 2011-01-05 08:15:42 -01:00
Tim Saunders 288ae8826c Updated the instruction text to fix grammar, spelling and readability issues 2011-01-04 18:20:49 +00:00
starfighter83 d00e9c502a Fixes 29798: Importing Document Type with a Master set adds properties to incorrect tab 2011-01-04 08:48:16 -01:00
starfighter83 f4c976e600 updates /config/create/ui.xml 2011-01-04 08:34:19 -01:00
starfighter83 83322a1916 Fixes 29790: Could not find file zipUpload.config 2011-01-04 08:07:26 -01:00
starfighter83 8a9a625964 Fixes 27419: Deleting copied content nodes with an uploadfile property results in deletion of original uploaded file 2011-01-03 09:15:35 -01:00
starfighter83 b0dcfec61e Merge 2011-01-03 08:37:11 -01:00
starfighter83 13d93de517 Merge 2011-01-03 08:36:52 -01:00
starfighter83 0a39ee90c2 trying to merge 2011-01-03 08:36:19 -01:00
starfighter83 b8b39ae890 Fixes: created documnet type can't be deleted, I can assure you that this is a bug. Work Items : 29789 2011-01-03 08:34:26 -01:00
psterling feff4a5713 Fixes #29793 to allow arbitrary return value length from user-defined /base methods 2010-12-31 01:26:39 +08:00
slace d3df402d4a setting the umbraco.config to be ignored and adding a DynamicNode method to do AncestorOrSelf 2010-12-28 00:04:11 -11:00
hartvig 87d96f389d Fixes #29784 and #29788 + updates jQuery to v1.4.4 2010-12-27 09:27:07 -01:00
slace fc23004a1b fixing spelling error 2010-12-26 18:19:08 -11:00
slace 4ec0aaab24 adding pluralization support for finding children 2010-12-26 18:05:47 -11:00
slace cbf9a2e7e0 changed the DynamicNode to also handle child types through property accessors as well 2010-12-26 17:50:21 -11:00
slace 6bf2b10231 web.config changes 2010-12-26 16:27:47 -11:00
slace 792aff0f1a merge 2010-12-25 22:47:48 -11:00
slace 2bbf3c8af2 changin the DLR macro engine also contain a dynamic object 2010-12-25 22:45:32 -11:00
slace c239578bd8 updating hgignore to handle v5 source 2010-12-25 22:37:03 -11:00
slace 0c3f57f537 making the DynamicNode object work more like a Node object without having to rely on reflection 2010-12-25 22:36:12 -11:00
pgregorynz 6b423f5082 move remaining images to umbraco_client/installer images directory remove /install/images 2010-12-23 11:08:45 -13:00
pgregorynz cbea0ad4e7 sets the ie images for the filter in lt7.css to be relative in the installer to allow images from umbraco_client directory 2010-12-23 10:58:27 -13:00
hartvig f18fe684cd It's a beta, baby! 2010-12-23 22:40:56 -01:00
hartvig 4795bb9f43 Fixes caching issue in IE installer 2010-12-23 22:14:38 -01:00
hartvig 63d5615698 Fixes installer ie issue (by duplicating image files - better fix for final release) 2010-12-23 21:42:40 -01:00
hartvig 216ab8c966 Updates to NodeFactory 2010-12-23 20:42:50 -01:00
starfighter83 e5f734acf3 small changes to noNodes page 2010-12-23 10:05:28 -01:00
starfighter83 3646f8af4b Fixes #29760: Update design of no nodes page (so it fits with new installer) 2010-12-23 09:57:21 -01:00
starfighter83 8d16887ba9 Fixes #29771: Juno, installer, when installing starter kit progress has caption for skins 2010-12-23 09:40:23 -01:00
starfighter83 fb7f28e00d Moving installer js and css so it can be used on no nodes page 2010-12-23 09:35:44 -01:00
starfighter83 057ab8cd15 Fixes #29770 : Juno, developer / packages / install skin avoid installing the same skin twice 2010-12-23 06:48:03 -01:00
starfighter83 9203fb6fed Fixes #29768, Juno, installer, last step, replace community blog and twitter feed with video feed 2010-12-23 06:30:01 -01:00
starfighter83 389454868d Fixes #29766 : Juno, default dashboards, 'Click to hide this in the future' nearly invisible 2010-12-23 06:02:14 -01:00
starfighter83 25daf42363 Merge 2010-12-23 05:52:09 -01:00
slace 7b91c3beab merge 2010-12-22 13:39:47 -11:00
slace a36cda81e3 merge 2010-12-22 13:38:33 -11:00
PerPloug aa5f57432d Missing children and ChildrenAslist methods on nodefactory wrapper 2010-12-22 20:25:55 -01:00
PerPloug 386f008dd7 Node Factory Wrapper to ensure backwards compat 2010-12-22 20:04:58 -01:00
psterling 34e0b10633 Fixes #28796 - public access null reference exception with Single User Page Protection 2010-12-23 03:14:01 +08:00
starfighter83 4f5d4c05c1 fixes 29764: Juno, ysod when creating doctype under other doctype 2010-12-22 13:42:44 -01:00
starfighter83 0e6bb6fb10 Merge 2010-12-22 12:32:06 -01:00
starfighter83 93f934b0c1 Fixes #29765 : Juno, can't add params to macro 2010-12-22 12:30:53 -01:00
PerPloug 8c7636558b macroEngines build file 2010-12-22 10:41:27 -01:00
hartvig 7d4430855f Excluding unit tests from default build 2010-12-22 09:56:54 -01:00
hartvig abacb50ee8 Updates to unit tests and ContentType caching 2010-12-22 09:48:53 -01:00
PerPloug 0b1c8e39e6 Merge 2010-12-22 09:00:48 -01:00
PerPloug b0a46e6a06 Merge 2010-12-22 09:00:22 -01:00
PerPloug f27c625439 updated nant build for razord 2010-12-22 08:59:48 -01:00
PerPloug d027fdb3d0 updated nant build for razord 2010-12-22 08:56:52 -01:00
starfighter83 4a40b1046e Merge 2010-12-22 08:09:26 -01:00
starfighter83 10c9c14037 Fixes js error in IE / skin customizer 2010-12-22 08:07:47 -01:00
psterling f29a93422e Copy updates to default dashboards 2010-12-22 03:52:23 +08:00
starfighter83 2c3c6ce391 fixes #29745: New Installer, if you don't install starter kit, don't show 'Preview your new site' option 2010-12-21 11:52:14 -01:00
starfighter83 5105a2c9ef small update to abstractdataeditor 2010-12-21 11:49:06 -01:00
starfighter83 6a92a2f321 Fixes #29759: Not possible to make a property that is using a datatype with the usercontrolwrapper mandatory 2010-12-21 10:02:09 -01:00
starfighter83 4578054f1b fixed #29758: ValidationProperty not picked up when using AbstractDataEditor 2010-12-21 09:39:55 -01:00
starfighter83 1d26a0353b update to usercontrol wrapper, detect if value is xml (if it is, don't store in cdata) 2010-12-21 08:14:41 -01:00
starfighter83 b375ddf1f8 Fixes 29631, tilde not resolved (PropertyContextHelpOption set to icon) 2010-12-20 13:03:47 -01:00
starfighter83 df2cfec816 implements #29749 , return proper http status code when base fails 2010-12-20 12:48:34 -01:00
starfighter83 89182fc3a9 update to usercontrolwrapper prevalue editor, so it loads any additional settings after saving usercontrol selection 2010-12-20 12:12:53 -01:00
starfighter83 bf73588b6e Merge 2010-12-17 08:04:09 -01:00
starfighter83 e29fe682b7 makes it possible to have custom settings on datatypes using the usercontrol wrapper 2010-12-17 08:00:08 -01:00
hartvig c9c7eed6d9 Merge 2010-12-16 23:58:10 -01:00
hartvig 9b56b76ad4 Merge 2010-12-16 23:57:47 -01:00
hartvig 94722e82dd Adding support for Public Properties on Dashboard controls (simply add values as attributes on the <control/> element [case-sensitive!]) 2010-12-16 23:39:31 -01:00
slace a03fe234e8 adding hgignore to default head 2010-12-16 11:13:53 -11:00
slace 5e83d590f9 removing (and ignoring) the .suo file 2010-12-16 11:09:50 -11:00
Tim Saunders ddbbf5e799 Various bug fixes and enhancements to the installer, including: stop animation of progress bar when it reaches 100%, Fixed validtion display errors, fixed database form JQuery issues. 2010-12-16 18:31:18 +00:00
starfighter83 6e51d690ce XsltExtension attribute (now also searches in assemblies, not only app_code) 2010-12-16 11:15:56 -01:00
slace 6a69202f5e some clean up of the restExtension.cs file to make it a bit more robust 2010-12-16 00:28:45 -11:00
starfighter83 06f6111876 updates RestExtension attribute so it also picks up types from app_code 2010-12-16 09:33:08 -01:00
starfighter83 0d91a841ff Merge 2010-12-16 09:09:57 -01:00
starfighter83 47e9aa6088 introduces the RestExtension and RestExtensionMethod attribute 2010-12-16 09:06:39 -01:00
PerPloug 7c7df808b4 nuget.build file 2010-12-15 13:43:24 -01:00
PerPloug 34eea0742b Merge 2010-12-15 13:40:48 -01:00
PerPloug 78c97971aa Missing nuget.build file 2010-12-15 13:32:32 -01:00
starfighter83 4f37fb0c00 Changes targetframework back to 3.5 2010-12-15 13:24:53 -01:00
starfighter83 60ca487ea3 Merge 2010-12-15 12:43:43 -01:00
starfighter83 777a857b6b Merge 2010-12-15 12:40:29 -01:00
starfighter83 712571fc38 fixes broken build 2010-12-15 12:39:49 -01:00
starfighter83 1c08fc0351 WIP another small change to /umbraco/developer/packages/starterkits.aspx page (styling the skin overview) 2010-12-15 11:44:33 -01:00
starfighter83 e765df10fe WIP skinning, change to /umbraco/developer/packages/starterkits.aspx page 2010-12-15 11:33:15 -01:00
PerPloug 84d88161fa nuget.build file for building umbraco dlls as a nuget package 2010-12-15 09:28:25 -01:00
PerPloug accb94c415 Changes from Temp Juno SVN Repo 2010-12-15 09:27:05 -01:00
slace 4c0852c0e8 Adding section on submitting bugs 2010-12-14 11:39:13 -11:00
slace e21057e9c8 Adding readme file 2010-12-14 11:38:48 -11:00
boxbinary 03de5ca711 Adding 'Getting started' note following TFS migration 2010-12-14 22:29:40 +00:00
admin 99d0b8c37e Adding tags 2010-12-14 03:19:56 +08:00
hartvig cfa1143eed Bugfixes to tinymce and tagging controls
[TFS Changeset #81903]
2010-12-13 08:10:23 +00:00
PerPloug f65bd2b9e3 Latest installer js tweaks
[TFS Changeset #81760]
2010-12-10 13:12:22 +00:00
PerPloug 8fa3ff08b3 Latest edits to the installer files, minor edits on the database screen, added validation the user screen
[TFS Changeset #81759]
2010-12-10 13:03:19 +00:00
ashallcross a2b6626f29 Updates to imagery, altered background layouts and fixed skin page layout problem
[TFS Changeset #81709]
2010-12-09 17:01:23 +00:00
psterling 5ba0bb281c Updates Dashboard.config with default dashboards
[TFS Changeset #81698]
2010-12-09 14:29:51 +00:00
hartvig 38c5a9dcf6 Inline scripting support in macros
[TFS Changeset #81653]
2010-12-08 15:28:54 +00:00
starfighter83 badf9784c6 adds example to xslt extensions file
[TFS Changeset #81650]
2010-12-08 14:52:26 +00:00
starfighter83 119c1f8eb3 Updates example in restExtensions.config (assembly attribute set to assembly instead of /bin/assembly)
[TFS Changeset #81649]
2010-12-08 14:49:56 +00:00
starfighter83 326abb482e Fixes issue with rss feed xslt template (wasn't updated 100% to new schema)
[TFS Changeset #81648]
2010-12-08 14:48:50 +00:00
PerPloug 23bbc1f785 license.ascx for installer
[TFS Changeset #81647]
2010-12-08 14:23:37 +00:00
starfighter83 f700525220 Fixes issue with properties not being on correct tab when installing package that has doc type
[TFS Changeset #81643]
2010-12-08 12:49:10 +00:00
PerPloug a9f22c92c8 Minor js edits for installer, loads correct kit / skin name on install
[TFS Changeset #81642]
2010-12-08 11:45:05 +00:00
munkimagik 41497919d1 Minor style font size tweak to installer
[TFS Changeset #81641]
2010-12-08 11:27:21 +00:00
starfighter83 eb131c3f3b wip skinning
[TFS Changeset #81639]
2010-12-08 11:09:17 +00:00
starfighter83 c5667818e2 WIP skinning, make it possible to specify a repo guid on enable skins element (so skins for starter kit can come from different repo)
[TFS Changeset #81638]
2010-12-08 11:04:32 +00:00
PerPloug b2902c18e9 New nant file for razor, and macroEngine Dependencies
[TFS Changeset #81637]
2010-12-08 10:37:04 +00:00
starfighter83 91b4e00ddd wip skinning
[TFS Changeset #81636]
2010-12-08 10:16:46 +00:00
hartvig a345d8c2f1 MacroEngines WIP
[TFS Changeset #81635]
2010-12-08 10:03:52 +00:00
hartvig 08a024273b MacroEngines WIP
[TFS Changeset #81634]
2010-12-08 10:03:21 +00:00
hartvig c8b81701b9 WIP
[TFS Changeset #81633]
2010-12-08 10:02:40 +00:00
starfighter83 11c2ff2ec9 WIP skinning, make it possible to install a local skin from the customisation dialog
[TFS Changeset #81632]
2010-12-08 10:02:00 +00:00
starfighter83 0a02e0c90c skinning wip, small updates to stylesheet to avoid noise from skins
[TFS Changeset #81631]
2010-12-08 09:23:58 +00:00
hartvig 9e89e158ae [TFS Changeset #81625] 2010-12-08 07:49:08 +00:00
hartvig dabafcc972 MacroEngine massage
[TFS Changeset #81621]
2010-12-08 07:09:45 +00:00
PerPloug 2a252dafa4 Installer tweaks on css and js for progress bars on the startkit step
[TFS Changeset #81611]
2010-12-07 21:24:53 +00:00
PerPloug a7b0695ced Added progressbars to skins and starterkits, altho that part has problems, as the counter resets when the app-pool resets due to starter-kit dlls
[TFS Changeset #81610]
2010-12-07 21:08:15 +00:00
munkimagik e0c3ed98a5 CSS tweaks to fix scroll bars on large monitors. Also plugged in progress bar and progress messages on database install step in the installer.
[TFS Changeset #81603]
2010-12-07 16:17:20 +00:00
PerPloug d1fd368fdd Small css tweaks to the skin selection
[TFS Changeset #81600]
2010-12-07 15:02:31 +00:00
PerPloug 41c3db56a0 progress feed for database installer
[TFS Changeset #81595]
2010-12-07 13:41:58 +00:00
PerPloug 7e7ca233c0 Tweaks to user-creation and database steps in installer
[TFS Changeset #81593]
2010-12-07 13:26:12 +00:00
starfighter83 dcfa5662e6 WIP skinning, small update to modifytemplate tasktype
[TFS Changeset #81591]
2010-12-07 13:10:15 +00:00
munkimagik 09a371e525 Removed links from steps in installer header
[TFS Changeset #81590]
2010-12-07 13:00:06 +00:00
munkimagik 74b134842c Updated Business graphic to correct spelling, also updated loadStarterKits.ascx HTML to fix chrome bug.
[TFS Changeset #81589]
2010-12-07 12:23:17 +00:00
PerPloug b77f6496b1 New installer files
[TFS Changeset #81558]
2010-12-06 22:21:17 +00:00
starfighter83 94c1cf0681 Implements #27211: Feature Request: Macro parameter sorting
[TFS Changeset #81540]
2010-12-06 14:22:38 +00:00
hartvig 9dfe873de0 WIP IMacroEngine
[TFS Changeset #81536]
2010-12-06 13:49:34 +00:00
hartvig 290e3338f7 WIP macro refactoring
[TFS Changeset #81531]
2010-12-06 11:47:46 +00:00
hartvig 90450428c7 Fixes 28730
[TFS Changeset #81529]
2010-12-06 11:08:40 +00:00
hartvig 934fe90e68 Implements 29628
[TFS Changeset #81525]
2010-12-06 10:07:46 +00:00
hartvig 724dc74e8b Implements 21002
[TFS Changeset #81524]
2010-12-06 09:43:56 +00:00
PerPloug 6b81546606 Missing installer files
[TFS Changeset #81523]
2010-12-06 09:34:35 +00:00
PerPloug a6ed629fe6 removing old installer files
[TFS Changeset #81522]
2010-12-06 09:16:02 +00:00
PerPloug 3253310743 [TFS Changeset #81521] 2010-12-06 09:15:27 +00:00
PerPloug d172ed2761 InstallerStep and InstallerStepCollection changes
[TFS Changeset #81517]
2010-12-06 08:50:22 +00:00
PerPloug 071d10445d New installer css, js and html files
[TFS Changeset #81516]
2010-12-06 08:49:38 +00:00
hartvig cc29cc8067 Fixes 28646
[TFS Changeset #81514]
2010-12-06 08:14:38 +00:00
psterling bbfdfdc372 added Korean (ko-KR) language file for back end
[TFS Changeset #80941]
2010-11-30 18:08:35 +00:00
hartvig bc6cc2ac00 Fixes 29584 and 29585
[TFS Changeset #80854]
2010-11-29 14:34:05 +00:00
starfighter83 190419393e WIP skinning
[TFS Changeset #80844]
2010-11-29 12:55:17 +00:00
starfighter83 c9afa582b8 WIP skinning, bl cleanup
[TFS Changeset #80843]
2010-11-29 12:43:19 +00:00
slace 2a96b993e4 Prelim support for LINQ to Umbraco being able to run a preview NodeDataProvider
[TFS Changeset #80842]
2010-11-29 12:23:55 +00:00
starfighter83 6b7697b259 Trying to fix broken build
[TFS Changeset #80837]
2010-11-29 11:40:13 +00:00
starfighter83 cca1a275f0 WIP skinning, initial version of css vars
[TFS Changeset #80835]
2010-11-29 11:30:04 +00:00
slace aa3f7b0def Adding Level as a property of the Node object
[TFS Changeset #80834]
2010-11-29 11:24:18 +00:00
starfighter83 75e3c9c8b2 WIP skinning, customization preview now supports css vars
[TFS Changeset #80831]
2010-11-29 11:06:04 +00:00
hartvig 7caa7aea88 Fixes 28731 via Patch by jbreuer
[TFS Changeset #80829]
2010-11-29 10:33:58 +00:00
starfighter83 75d62d6eae WIP skinning, update to Dependency bl
[TFS Changeset #80827]
2010-11-29 10:02:11 +00:00
starfighter83 185e5163d4 WIP skinning
[TFS Changeset #80824]
2010-11-29 09:11:52 +00:00
starfighter83 3fc13e3a12 WIP skinning, CssParser.aspx code behind
[TFS Changeset #80823]
2010-11-29 09:10:25 +00:00
starfighter83 ce3851828c WIP skinning, add css parser page to skinning module
[TFS Changeset #80822]
2010-11-29 08:58:35 +00:00
starfighter83 28c9f0c4f6 WIP skinning, update to skinning bl (css vars)
[TFS Changeset #80821]
2010-11-29 08:52:04 +00:00
starfighter83 460e385a07 wip skinning
[TFS Changeset #80671]
2010-11-26 13:59:35 +00:00
starfighter83 1d182bdc41 WIP skinning, adds initial version of SkinManifestParser + some minor updates to skinning bl
[TFS Changeset #80670]
2010-11-26 13:59:08 +00:00
starfighter83 aafbb3bfb0 WIP skinning, adds CssVariable and CssVariableProperty to skinning bl
[TFS Changeset #80669]
2010-11-26 13:46:30 +00:00
starfighter83 63011b2611 WIP Skinning
[TFS Changeset #80664]
2010-11-26 12:28:18 +00:00
starfighter83 b3881002de WIP skinning, adds simple css parser to skinning bl
[TFS Changeset #80663]
2010-11-26 12:19:57 +00:00
PerPloug de0fba669a Tweaked skinning webserviceurls for 3rd party skinning repository webservices
[TFS Changeset #80662]
2010-11-26 11:55:41 +00:00
hartvig 37e2f4bbd8 Implements 28733, 28758 and 28762. Various updated to Document copy methods
[TFS Changeset #80658]
2010-11-26 09:37:20 +00:00
hartvig 68dcf4d521 Fixes 28763 (via patch from jbreuer)
[TFS Changeset #80654]
2010-11-26 07:53:17 +00:00
hartvig df3aef381d Implements 28923
[TFS Changeset #80653]
2010-11-26 07:45:11 +00:00
starfighter83 de049a81bf Fixes #28034: mySql 4.5 media xml for image is not complete
[TFS Changeset #80616]
2010-11-25 10:18:44 +00:00
starfighter83 0cd73c3273 updates color picker datatype so it supports updates to key value prevalue editor
[TFS Changeset #80615]
2010-11-25 09:59:42 +00:00
starfighter83 abb97482fe Fixes #28810: Color Picker broken in 4.5.2 ~in nada.gif path
[TFS Changeset #80614]
2010-11-25 09:49:50 +00:00
starfighter83 864a9ac94a Fixes #28945: Package Installer Bug - Inconsistent Undo Execution
[TFS Changeset #80613]
2010-11-25 09:06:33 +00:00
starfighter83 d726348bef Fixes small bug in macro container prevalue editor
[TFS Changeset #80609]
2010-11-25 08:01:15 +00:00
starfighter83 ad205fc928 Implements #29539: Add image cropper as default datatype
[TFS Changeset #80608]
2010-11-25 07:51:59 +00:00
starfighter83 bed8310f7e Fixes #20562: Please make sure that you do not have 2 templates with the same alias
[TFS Changeset #80539]
2010-11-24 14:34:59 +00:00
starfighter83 172f0a53ce Fixes #24545 : Copying documenttype bug (only copying tabs and props that are on documenttype and not on masters)
[TFS Changeset #80536]
2010-11-24 14:10:33 +00:00
starfighter83 931bc4e9bb Fixes #20572: Can't import package with master document
[TFS Changeset #80535]
2010-11-24 13:52:35 +00:00
starfighter83 b3b80399d0 Implements #29538 : Xslt tree, add delete / refresh on folders
[TFS Changeset #80528]
2010-11-24 12:48:18 +00:00
starfighter83 fbdad77bac Fixes #29401: Bug - packager doesn't handle files that are at the root of the website
[TFS Changeset #80525]
2010-11-24 12:16:08 +00:00
starfighter83 730ded46a6 Fixes #28696: Macro Container bug: Can't handle bool/checkboxes
[TFS Changeset #80524]
2010-11-24 11:54:12 +00:00
starfighter83 8d3d2fff28 removes /umbraco/developer/packages/boost.aspx
[TFS Changeset #80468]
2010-11-23 11:13:28 +00:00
starfighter83 c59c66bc33 WIP skinning updates
[TFS Changeset #80465]
2010-11-23 09:52:13 +00:00
starfighter83 ccd89bef07 WIP skinning, replaces install runway item in packages tree with install starter kit/skin
[TFS Changeset #80464]
2010-11-23 09:34:07 +00:00
starfighter83 9d985b11ba WIP skinning updates
[TFS Changeset #80410]
2010-11-22 13:14:15 +00:00
starfighter83 3f68d19ce0 WIP skinning fixes #29504: Skinning, image dependency type, if uploading png, transparency is lost
[TFS Changeset #80231]
2010-11-19 13:56:39 +00:00
starfighter83 af57cc12e4 WIP skinning, fixes #29503 and #29502
[TFS Changeset #80230]
2010-11-19 13:32:36 +00:00
starfighter83 c4e5bae76e Fixes #28732 Macro container slows down big times when allowed macroes int are getting bigger.
[TFS Changeset #80227]
2010-11-19 11:37:47 +00:00
starfighter83 64b43ce189 Fixes #29497, Add Macro container as a default datatype (so it appears in the datatype tree by default)
[TFS Changeset #80225]
2010-11-19 10:10:59 +00:00
starfighter83 15d0cf2f89 key value prevalue editor polish, feature #29466 complete
[TFS Changeset #80224]
2010-11-19 09:24:28 +00:00
starfighter83 802b33da94 WIP, updates radiobox datatype so it supports updates to key value prevalue editor
[TFS Changeset #80223]
2010-11-19 08:55:26 +00:00
starfighter83 8cdfec1cc0 WIP, updates dropdown list multiple datatype so it supports updates to key value prevalue editor
[TFS Changeset #80222]
2010-11-19 08:48:33 +00:00
starfighter83 97897c3062 WIP, updates dropdown datatype so it supports updates to key value prevalue editor
[TFS Changeset #80221]
2010-11-19 08:42:14 +00:00
starfighter83 b180f1614f WIP, updates checkboxlist datatype so it supports updates to key value prevalue editor
[TFS Changeset #80185]
2010-11-18 15:06:09 +00:00
starfighter83 1fdbfff8fe WIP , update to key value prevalue editor (inline edit and sorting of values)
[TFS Changeset #80184]
2010-11-18 14:56:47 +00:00
starfighter83 a21cbe6512 Data editor settings refactor, pass in the type reference than the string of the type property
[TFS Changeset #80181]
2010-11-18 12:31:30 +00:00
hartvig 97e55544a0 Implements 29441 - support for 3rd party log engines (like log4net)
[TFS Changeset #79998]
2010-11-15 14:12:21 +00:00
psterling ea4038f16a StartupDashboard refactor with "show once" feature and video feeds updated
[TFS Changeset #79736]
2010-11-09 20:57:27 +00:00
hartvig edc7bb000c Minor markup issue in editing doctypes
[TFS Changeset #79719]
2010-11-09 11:02:04 +00:00
hartvig d17393bcd1 Keep alive to be deleted
[TFS Changeset #79716]
2010-11-09 09:48:56 +00:00
hartvig 0f457e9874 [TFS Changeset #79715] 2010-11-09 09:45:25 +00:00
hartvig 1d7d959a80 Updates to NodeFactory (support for fetching nodes via xpath and get children as list)
[TFS Changeset #79713]
2010-11-09 09:29:46 +00:00
hartvig 4c52b7e97b Missing commit to BasePage
[TFS Changeset #79658]
2010-11-08 04:15:51 +00:00
starfighter83 252a6f06f8 WIP installer refactor, minor update to Skin bl
[TFS Changeset #79332]
2010-11-03 11:06:47 +00:00
hartvig 9adff7e4a9 Implements 29339
[TFS Changeset #79321]
2010-11-03 09:33:40 +00:00
hartvig 4d76c17b02 Work on keepalive refactoring
[TFS Changeset #79320]
2010-11-03 08:19:39 +00:00
hartvig 7f565e8df4 Work on speechbubble
[TFS Changeset #79319]
2010-11-03 08:18:53 +00:00
hartvig 79f6f2a2a4 Fixes 29326
[TFS Changeset #79287]
2010-11-02 12:54:38 +00:00
hartvig 7d65e881c2 Fixes 29330. Also upgrades jQuery to 1.4.3
[TFS Changeset #79286]
2010-11-02 12:48:26 +00:00
hartvig 793fff9154 Implements 29306
[TFS Changeset #79278]
2010-11-02 09:40:53 +00:00
Shandem d98a8543b0 fixes: 28655 - ctrl or right click app icons are back.
[TFS Changeset #79248]
2010-11-01 12:02:02 +00:00
Shandem c9527ebf8f upgraded jquery bbq plugin.
Fixes: 28294

[TFS Changeset #79245]
2010-11-01 11:53:10 +00:00
starfighter83 e496f7076d WIP data editor settings
[TFS Changeset #79009]
2010-10-27 14:21:02 +00:00
hartvig d9896f43c6 WIP - doctype inheritence. Might break stuff, then revert to previous change set. Will finalize tonight/tomorrow
[TFS Changeset #78975]
2010-10-26 13:01:45 +00:00
Shandem 5b6e34b4da Fixes: 29114, 28830
[TFS Changeset #78973]
2010-10-26 11:48:05 +00:00
Shandem 948fb920b7 Fixes: 29264, set compilation debug=true to default in Web.STANDARD.config since this is for development.
[TFS Changeset #78972]
2010-10-26 11:40:31 +00:00
hartvig 1bad5aeafe Implements 29219, Fixes 29265
[TFS Changeset #78962]
2010-10-26 09:40:03 +00:00
Shandem 33b7ade10d Fixes: 28681
[TFS Changeset #78958]
2010-10-26 09:13:47 +00:00
hartvig 63dfc251c4 Fixes 24652
[TFS Changeset #78956]
2010-10-26 09:05:23 +00:00
hartvig 6a185bdc85 Fixes 29262
[TFS Changeset #78953]
2010-10-26 08:27:01 +00:00
hartvig 3861ecf41d Fixes 19818 and implements 29257. Issues with NiceUrl and NEW configuration option to add trailing slash to urls
[TFS Changeset #78909]
2010-10-25 12:09:38 +00:00
hartvig 174bc41560 Implements 20757, new default dashboard control to change password added
[TFS Changeset #78902]
2010-10-25 11:27:09 +00:00
hartvig bd045838df Fixes 29223
[TFS Changeset #78899]
2010-10-25 10:49:06 +00:00
starfighter83 469c248db5 WIP installer refactor, adds removemodule options
[TFS Changeset #78779]
2010-10-22 10:49:37 +00:00
starfighter83 34dc9036bd WIP installer refactor, small update to skinning module
[TFS Changeset #78778]
2010-10-22 10:43:19 +00:00
starfighter83 a61c9d2a77 WIP installer refactor, module injections, modules are now sortable and possible to move them between the different containers
[TFS Changeset #78777]
2010-10-22 10:38:05 +00:00
starfighter83 4671e462eb WIP dataeditor settings, adds default value option
[TFS Changeset #78719]
2010-10-21 14:23:57 +00:00
starfighter83 6bfb41999f WIP data editor settings, small refactor
[TFS Changeset #78718]
2010-10-21 14:12:58 +00:00
Shandem 4df3ef191a applied patch: 7132
[TFS Changeset #78666]
2010-10-20 12:25:50 +00:00
Shandem 4dc4698b6c merge issue
[TFS Changeset #78665]
2010-10-20 12:16:08 +00:00
Shandem 82df347d41 Fixes: 25831 - Applied Patch
[TFS Changeset #78661]
2010-10-20 11:45:47 +00:00
Shandem 3e70a975bb Updates MySQL Installer version - Applied Patch
[TFS Changeset #78660]
2010-10-20 11:41:21 +00:00
Shandem f745aedf2a Fixes: 28428 - Applied Patch
[TFS Changeset #78659]
2010-10-20 11:36:31 +00:00
Shandem 0f93826e17 Fixes: 29068, 29068 - Applied Patch
[TFS Changeset #78652]
2010-10-20 10:25:28 +00:00
Shandem 0cb1877924 Fixes: 29069 - Patch applied.
[TFS Changeset #78651]
2010-10-20 09:27:19 +00:00
Shandem 325a9e8e0a Fixes: 28741 - And Applied patch = NICE
[TFS Changeset #78649]
2010-10-20 08:28:36 +00:00
Shandem 384b7e852f Fixes: 29123 - lots of sql calls saved again :)
[TFS Changeset #78648]
2010-10-20 08:10:08 +00:00
starfighter83 1ea5bc5d7c WIP installer refactor, adds new skinning task type, ModifyPageProperty
[TFS Changeset #78647]
2010-10-20 07:26:44 +00:00
starfighter83 df18581cd2 WIP, data editor settings
[TFS Changeset #78604]
2010-10-19 13:42:59 +00:00
starfighter83 0c88c4b776 WIP installer refactor, small css update
[TFS Changeset #78428]
2010-10-14 18:08:29 +00:00
starfighter83 220983171d WIP installer refactor, update to slider dependency type
[TFS Changeset #78426]
2010-10-14 17:55:38 +00:00
Shandem 07d5ce913c Examine v1.0 RTM checked in
[TFS Changeset #78419]
2010-10-14 11:53:53 +00:00
hartvig 072c3a67bf Adds missing update to NodeFactory
[TFS Changeset #78391]
2010-10-13 19:40:17 +00:00
hartvig d17197a2dc Refactor of niceurl (and parts of requesthandler)
[TFS Changeset #78370]
2010-10-13 13:02:02 +00:00
hartvig 132bd824a7 Implements 29157
[TFS Changeset #78367]
2010-10-13 10:45:05 +00:00
hartvig 91c5ae4204 Implements 29156
[TFS Changeset #78363]
2010-10-13 10:20:14 +00:00
starfighter83 deab9251d3 WIP installer refactor, updates to color picker dependency type
[TFS Changeset #78360]
2010-10-13 09:58:23 +00:00
starfighter83 66ddc8c095 WIP installer refactor, updates to colorpicker, makes sure css is loaded
[TFS Changeset #78359]
2010-10-13 09:34:51 +00:00
starfighter83 ef58e75076 WIP installer refactor, update to option skin dependency type
[TFS Changeset #78358]
2010-10-13 09:24:29 +00:00
starfighter83 954f8e82c9 WIP installer refactor, adds new skinning dependency type: option
[TFS Changeset #78356]
2010-10-13 09:09:11 +00:00
starfighter83 de0c85f40c WIP installer refactor, adds new skinning dependency type: slider
[TFS Changeset #78355]
2010-10-13 08:47:45 +00:00
Shandem e94274e9e6 examine update, member/media search fixes.
[TFS Changeset #78323]
2010-10-12 14:13:18 +00:00
starfighter83 36563d7699 WIP installer refactor, show error message if connection to repo fails
[TFS Changeset #78318]
2010-10-12 13:46:16 +00:00
starfighter83 39c6aca833 WIP installer refactor, another small js update
[TFS Changeset #78313]
2010-10-12 13:33:48 +00:00
Shandem 13615ea270 upgraded Examine. Search is looking pretty sweet.
[TFS Changeset #78312]
2010-10-12 13:29:18 +00:00
starfighter83 2e6613cc56 WIP installer refactor, small js update
[TFS Changeset #78311]
2010-10-12 13:29:16 +00:00
starfighter83 0c86e352b7 WIP installer refactor, removes empty js file
[TFS Changeset #78309]
2010-10-12 12:47:20 +00:00
starfighter83 fc2ed864f5 WIP installer refactor
[TFS Changeset #78308]
2010-10-12 12:43:13 +00:00
starfighter83 64cc5eb3e7 WIP installer refactor
[TFS Changeset #78306]
2010-10-12 12:26:53 +00:00
starfighter83 a71d0f58cb WIP installer refactor
[TFS Changeset #78305]
2010-10-12 12:14:11 +00:00
starfighter83 ac44fc9646 WIP installer refactor
[TFS Changeset #78300]
2010-10-12 11:40:06 +00:00
starfighter83 c05750ee63 WIP installer refactor, updates to skinning
[TFS Changeset #78292]
2010-10-12 09:49:48 +00:00
starfighter83 b1b605f3bd WIP installer refactor, updates RepositoryWebservice.cs
[TFS Changeset #78288]
2010-10-12 05:33:46 +00:00
starfighter83 e65448d28e WIP installer refactor, skinning
[TFS Changeset #78287]
2010-10-12 05:16:09 +00:00
starfighter83 8a0a33870b WIP installer refactor, work on skinning engine
[TFS Changeset #78244]
2010-10-11 15:06:16 +00:00
psterling c0942cdf6b WIP Startup Dashboards use umbraco.uicontrols
[TFS Changeset #78129]
2010-10-08 21:18:50 +00:00
Shandem ded62dba58 more examine updates
[TFS Changeset #78008]
2010-10-06 13:32:29 +00:00
Shandem dca59ce159 New Examine version. Fixes internal search and make it better.
[TFS Changeset #77995]
2010-10-06 10:35:17 +00:00
psterling a23a937813 WIP Startup Dashboards 'hide' feature and Runway auto-detect for default (content, media, settings, developer, member)
[TFS Changeset #77946]
2010-10-05 21:13:17 +00:00
Shandem 7161ff4146 Updates ClientDependency framework version.
Fixes loading in custom single tree without full app and other minor tree bugs.


[TFS Changeset #77930]
2010-10-05 12:59:44 +00:00
starfighter83 bab35e30d8 WIP installer refactor
[TFS Changeset #77708]
2010-10-01 12:31:20 +00:00
PerPloug e45583eed2 Missing skin button
[TFS Changeset #77707]
2010-10-01 12:24:11 +00:00
starfighter83 d0ba157501 WIP installer refactor, open skin customizer on startup if umbSkinningConfigurator is set
[TFS Changeset #77706]
2010-10-01 11:55:14 +00:00
starfighter83 f12a545cd1 WIP installer refactor: changes to skinning installer steps + customization is now a manuall action
[TFS Changeset #77705]
2010-10-01 11:48:26 +00:00
PerPloug 06334d1f06 redirect to visual mode from skin installer
[TFS Changeset #77703]
2010-10-01 11:33:10 +00:00
PerPloug fdbfe72fb1 feedback text on skin installer
[TFS Changeset #77701]
2010-10-01 11:07:05 +00:00
hartvig b3ea418c15 Detection support of SQL CE 4
[TFS Changeset #77700]
2010-10-01 10:55:51 +00:00
PerPloug 5b6961a297 missing error message css for installer
[TFS Changeset #77699]
2010-10-01 10:54:22 +00:00
hartvig bc6c01f44c Updating version number
[TFS Changeset #77698]
2010-10-01 10:37:50 +00:00
PerPloug 72fb76e4e0 [TFS Changeset #77696] 2010-10-01 10:27:48 +00:00
starfighter83 6b3ef0e3bf WIP installer refactor, update to skinning step in installer
[TFS Changeset #77693]
2010-10-01 10:13:43 +00:00
starfighter83 e9f7cc59d5 WIP installer refactor, small updates to skin customizer + fixes some issues introduces by polish
[TFS Changeset #77690]
2010-10-01 10:06:00 +00:00
PerPloug d46eec95de [TFS Changeset #77688] 2010-10-01 08:47:26 +00:00
hartvig f2e207d11e Hides overlay when using the skinning modals for better overview
[TFS Changeset #77686]
2010-10-01 08:41:12 +00:00
starfighter83 0b3c137fd8 WIP installer refactor, changes version to 4.6 Alpha
[TFS Changeset #77685]
2010-10-01 08:39:11 +00:00
starfighter83 92643f641e WIP Installer refactor, modify skin button on edit template toolbar now also redirects to skin customizer
[TFS Changeset #77683]
2010-10-01 08:32:24 +00:00
PerPloug 46a2c183b3 Css tweaks on liveedit
[TFS Changeset #77651]
2010-09-30 15:14:08 +00:00
hartvig 0369bb46e6 Adjustments to skinning modals
[TFS Changeset #77648]
2010-09-30 12:50:32 +00:00
starfighter83 111fcc4967 WIP installer refactor, update to color picker, hide right side
[TFS Changeset #77647]
2010-09-30 12:48:20 +00:00
hartvig c609fc69ae Fixes 28989. Skinning module are no longer loaded with Canvas by default. Need to have umbSkinning=true appended to the url (and of course access to the settings section)
[TFS Changeset #77646]
2010-09-30 12:47:02 +00:00
hartvig b8832b3ab3 Fixes 29025
[TFS Changeset #77645]
2010-09-30 12:01:10 +00:00
PerPloug 31115465a0 Fixes broken addDashboardsection package action undo
[TFS Changeset #77634]
2010-09-30 06:55:17 +00:00
hartvig 8ec8147b69 Fixes 29010 and adds WIP disclamer in installer
[TFS Changeset #77561]
2010-09-28 12:17:13 +00:00
starfighter83 ee6f92596d WIP installer refactor, resolve tilde in liveeditingtoolbar switch to backoffice button
[TFS Changeset #77560]
2010-09-28 12:07:44 +00:00
starfighter83 4610fc14ea WIP installer refactor implements: Add a link to the backoffice if the user gets to canvas from the installer
[TFS Changeset #77559]
2010-09-28 10:31:23 +00:00
starfighter83 af640662bb WIP installer refactor, fixes : Handle cases where there is no skin dependencies
[TFS Changeset #77558]
2010-09-28 10:19:50 +00:00
starfighter83 440ad4a1c5 WIP installer refactor, small update to color picker
[TFS Changeset #77557]
2010-09-28 10:06:23 +00:00
starfighter83 d76bdb80a9 WIP installer refactor, moving some js around
[TFS Changeset #77556]
2010-09-28 09:59:27 +00:00
starfighter83 f91530777f WIP installer refactor, fixes issue with customize skin modal not showing in ie
[TFS Changeset #77555]
2010-09-28 08:46:07 +00:00
starfighter83 b458eb5b97 WIP installer refactor, image uploader/cropper slider style
[TFS Changeset #77554]
2010-09-28 08:24:13 +00:00
starfighter83 4fff2f7906 WIP installer refactor, show slider (that scales image) on image uploader/cropper
[TFS Changeset #77553]
2010-09-28 08:09:42 +00:00
hartvig 8ade52ca07 Fixes issue with "No content available for WYSIWYG editing". Kudos to Our Umbraco user @Stephen for helping with a fix
[TFS Changeset #77552]
2010-09-28 07:54:40 +00:00
hartvig 88ef7df6b4 Fixes 28988
[TFS Changeset #77528]
2010-09-27 12:16:59 +00:00
starfighter83 78f96b2556 WIP installer refactor fixes 28978: Color picker, remove need for button
[TFS Changeset #77527]
2010-09-27 12:13:29 +00:00
hartvig fad4da5eb3 Removing some old and unused references
[TFS Changeset #77526]
2010-09-27 11:22:40 +00:00
PerPloug b14e2fdaf7 keep pdb files in zip for nant
[TFS Changeset #77525]
2010-09-27 11:20:38 +00:00
slace bd6232861c fixing a limitation on the NodeDataProvider with regards to missing httpContext
[TFS Changeset #77516]
2010-09-26 22:33:09 +00:00
PerPloug cd51d592e4 Nant build files updated for the 4.6 alpha
[TFS Changeset #77455]
2010-09-24 09:54:12 +00:00
PerPloug 3551c59548 [TFS Changeset #77454] 2010-09-24 09:48:19 +00:00
hartvig 30a3b3f4d8 Fixes 28951
[TFS Changeset #77411]
2010-09-23 09:33:43 +00:00
psterling 42db92ba69 WIP Startup Dashboard prototypes - updated project file (csproj)
[TFS Changeset #77265]
2010-09-17 23:08:55 +00:00
psterling 0f01f8d588 WIP Startup Dashboard prototypes
[TFS Changeset #77264]
2010-09-17 22:54:26 +00:00
psterling eb7ef0f26e WIP Startup Dashboard prototypes and feed proxy for video, project feeds
[TFS Changeset #77262]
2010-09-17 22:12:00 +00:00
PerPloug 56a2b011f6 yet again, missing files in /install
[TFS Changeset #77248]
2010-09-17 11:12:08 +00:00
PerPloug 06e57f5024 Missing files, breaking build server
[TFS Changeset #77247]
2010-09-17 11:06:30 +00:00
hartvig 79278e4199 Update to SQL CE 4 Umbraco project configuration
[TFS Changeset #77246]
2010-09-17 09:23:16 +00:00
hartvig 84a3e8dcc6 Update to sqlce4umbraco project (reference to datalayer)
[TFS Changeset #77245]
2010-09-17 09:13:44 +00:00
hartvig a83ea36dd2 Adding the SQLCE4Umbraco project and SQLCE4 CTP assemblies
[TFS Changeset #77243]
2010-09-17 08:44:25 +00:00
hartvig a53de5a181 Reorganising location of SQL CE 4 data files
[TFS Changeset #77242]
2010-09-17 08:24:29 +00:00
hartvig ed543a6af4 Minor update to SQL CE 4 (removing it from the presentation project)
[TFS Changeset #77240]
2010-09-17 08:21:56 +00:00
hartvig 9c8436d286 Implements 28907. First version of SQL CE 4 support (more installer TLC to come)
[TFS Changeset #77238]
2010-09-17 08:07:02 +00:00
starfighter83 fd5e6afbbf WIP installer refactor
[TFS Changeset #77226]
2010-09-16 13:50:29 +00:00
starfighter83 1ca82c5871 WIP installer refactor, skin update to rollback dependencies method, also clear saved output
[TFS Changeset #77223]
2010-09-16 11:06:15 +00:00
starfighter83 d348265950 WIP installer refactor, update to template skinning dialog
[TFS Changeset #77221]
2010-09-16 09:18:45 +00:00
starfighter83 f42ec68a3a WIP installer refactor
[TFS Changeset #77220]
2010-09-16 08:41:33 +00:00
starfighter83 5cadb1c360 WIP installer refactor, updates skin module adds fallback when no connection to repo
[TFS Changeset #77219]
2010-09-16 08:24:23 +00:00
starfighter83 e7c8be2d51 WIP installer refactor, updates to skin module, adds rollback active skin option
[TFS Changeset #77218]
2010-09-16 08:17:32 +00:00
starfighter83 bb0a4eb023 WIP installer refactor, small update to skin module avoid client side rollback when customization needs to be applied
[TFS Changeset #77217]
2010-09-16 07:35:38 +00:00
starfighter83 358374ebad WIP installer refactor, changes to template skinning dialog and skin module
[TFS Changeset #77208]
2010-09-15 14:18:08 +00:00
starfighter83 6c172e79d0 WIP installer refactor, updates to template skinning dialog
[TFS Changeset #77202]
2010-09-15 13:48:54 +00:00
starfighter83 234840b7c4 WIP installer refactor
[TFS Changeset #77201]
2010-09-15 13:22:07 +00:00
starfighter83 c51936b242 WIP installer refactor, simplifies assembly load in dependency and task
[TFS Changeset #77200]
2010-09-15 11:39:03 +00:00
starfighter83 ed9ac1d002 WIP installer refactor, tweaks to skin module
[TFS Changeset #77199]
2010-09-15 11:30:09 +00:00
starfighter83 3f319b8f11 WIP installer refactor, changes to skin rollback and modifycss tasktype rollback
[TFS Changeset #77197]
2010-09-15 10:53:55 +00:00
starfighter83 b01a35722a WIP installer refactor, adds skin palette to businesslogic
[TFS Changeset #77196]
2010-09-15 10:37:52 +00:00
starfighter83 b5b66b3f4a WIP installer refactor, Modify Css tasktype rollback method
[TFS Changeset #77193]
2010-09-15 09:37:55 +00:00
starfighter83 3e58afbc8b WIP installer refactor, change to image uploader control (size)
[TFS Changeset #77192]
2010-09-15 09:16:30 +00:00
starfighter83 18488563fa WIP installer refactor, image uploader check for valid image
[TFS Changeset #77173]
2010-09-14 11:29:23 +00:00
starfighter83 e5d1d481c1 WIP installer refactor, image uploader adds option to upload other image
[TFS Changeset #77172]
2010-09-14 11:18:07 +00:00
starfighter83 ffa111617f WIP installer refactor, some comments on image uploader
[TFS Changeset #77171]
2010-09-14 11:04:06 +00:00
starfighter83 e7b2d77b98 WIP installer refactor, image uploader / cropper : work in scaled version if format doesn't fit modal
[TFS Changeset #77170]
2010-09-14 11:00:39 +00:00
starfighter83 ad165945e3 WIP installer refactor, use ClientDependency on Image Uploader
[TFS Changeset #77165]
2010-09-14 08:36:00 +00:00
starfighter83 bab260c032 WIP installer refactor, adds reset option to image cropper
[TFS Changeset #77164]
2010-09-14 08:04:59 +00:00
starfighter83 dcd73c5207 WIP installer refactor, update to image uploader, if width and height not supplied, skip crop step
[TFS Changeset #77163]
2010-09-14 07:55:58 +00:00
PerPloug 3319ded749 template dialog for skinning (WIP)
[TFS Changeset #77161]
2010-09-14 07:14:24 +00:00
starfighter83 437538b23f WIP installer refactor, color picker changes
[TFS Changeset #77159]
2010-09-14 07:01:20 +00:00
starfighter83 b2d00d39ac WIP installer refactor, update to Image dependency type
[TFS Changeset #77156]
2010-09-14 06:23:46 +00:00
starfighter83 59a5c6692b WIP installer refactor, first version of image uploader
[TFS Changeset #77133]
2010-09-13 12:46:56 +00:00
starfighter83 e9325ec857 WIP installer refactor, close image uploader function
[TFS Changeset #77128]
2010-09-13 09:59:17 +00:00
starfighter83 c3044f41fc WIP installer refactor, adds ImageUploader page to canvas skin module
[TFS Changeset #77126]
2010-09-13 09:41:10 +00:00
starfighter83 a64dff4f6e WIP installer refactor, adds image uploader control and sets Image dependency type to use that
[TFS Changeset #77124]
2010-09-13 09:27:27 +00:00
starfighter83 56bfaabc7a WIP installer refactor, fixes issue with tasktype client side rollback
[TFS Changeset #77123]
2010-09-13 09:25:38 +00:00
starfighter83 092732d748 WIP installer refactor, fixes small bug in modal.js (modal window count not being updated correctly)
[TFS Changeset #77122]
2010-09-13 08:15:44 +00:00
starfighter83 f498c0635f WIP installer refactor, adds support for client side rollback on different task types
[TFS Changeset #77038]
2010-09-09 11:55:28 +00:00
starfighter83 a2cbadec4e WIP installer refactor, update to canvas skin module
[TFS Changeset #77037]
2010-09-09 11:00:54 +00:00
starfighter83 69e5e5d32f WIP installer refactor, removing some unused files
[TFS Changeset #77035]
2010-09-09 09:42:18 +00:00
starfighter83 a2ab040cef WIP installer refactor
[TFS Changeset #77034]
2010-09-09 09:14:47 +00:00
starfighter83 f8e1994cfe WIP installer refactor, also execute skin install tasks when activating a skin
[TFS Changeset #77029]
2010-09-09 08:39:36 +00:00
starfighter83 da6229be9b WIP installer refactor
[TFS Changeset #77027]
2010-09-09 08:26:11 +00:00
starfighter83 0a2517668a WIP installer refactor, small change to AddStyleSheetToTemplate roll back method
[TFS Changeset #77026]
2010-09-09 08:20:23 +00:00
starfighter83 949257ca00 WIP installer refactor, adds selector support to AddStyleSheetToTemplate tasktype
[TFS Changeset #77025]
2010-09-09 08:13:42 +00:00
starfighter83 9d7065e117 WIP installer refactor, change to AddStyleSheetToTemplate task client script
[TFS Changeset #76993]
2010-09-08 14:07:49 +00:00
starfighter83 7114de6c36 WIP installer refactor, update to AddStyleSheetToTemplate task
[TFS Changeset #76992]
2010-09-08 14:00:47 +00:00
starfighter83 4ac5f26db0 WIP installer refactor, update to ModifyTemplate task
[TFS Changeset #76991]
2010-09-08 13:59:33 +00:00
starfighter83 6a4b9fb906 WIP installer refactor, adds ExecuteInstallTasks method to Skin
[TFS Changeset #76990]
2010-09-08 13:30:06 +00:00
starfighter83 63edf72bc3 WIP installer refactor, AddStyleSheetToTemplate task update
[TFS Changeset #76989]
2010-09-08 13:12:49 +00:00
starfighter83 ab54ccc918 WIP installer refactor, Adds rollback method to AddStyleSheetToTemplate task
[TFS Changeset #76988]
2010-09-08 13:11:47 +00:00
starfighter83 5c7de15653 WIP installer refactor, small update to AddStyleSheetToTemplate task
[TFS Changeset #76987]
2010-09-08 13:07:58 +00:00
starfighter83 6aeffb161d WIP installer refactor, add stylesheet to template task, client script
[TFS Changeset #76986]
2010-09-08 13:05:57 +00:00
starfighter83 14a177b81e WIP installer refactor, fixes bug that skin selection goes to end instead of canvas skin module
[TFS Changeset #76985]
2010-09-08 12:55:42 +00:00
starfighter83 386cd44012 WIP installer refactor, add stylesheet tasktype
[TFS Changeset #76984]
2010-09-08 12:33:30 +00:00
PerPloug 2741d99af9 enableskins data.cs
[TFS Changeset #76980]
2010-09-08 12:11:22 +00:00
starfighter83 46a826902a WIP installer refactor
[TFS Changeset #76979]
2010-09-08 12:08:35 +00:00
starfighter83 771110c09d WIP installer refactor, go to final step if web.config fails to update
[TFS Changeset #76978]
2010-09-08 12:08:06 +00:00
starfighter83 cbde836c59 WIP installer refactor, prevent missing enableSkins node from crashing package installer
[TFS Changeset #76977]
2010-09-08 11:52:53 +00:00
starfighter83 51efc8f934 WIP installer refactor, redirect to canvas after selecting skin
[TFS Changeset #76975]
2010-09-08 11:41:46 +00:00
starfighter83 b7c9c61182 WIP installer refactor, activate skin
[TFS Changeset #76973]
2010-09-08 11:30:29 +00:00
starfighter83 c689870e13 WIP installer refactor, also install files
[TFS Changeset #76970]
2010-09-08 11:24:07 +00:00
starfighter83 1ee12522f4 WIP installer refactor, show skin module when redirected from installer
[TFS Changeset #76965]
2010-09-08 09:08:41 +00:00
starfighter83 ffd6debefb WIP installer refactor, small update to skin module
[TFS Changeset #76964]
2010-09-08 08:19:04 +00:00
starfighter83 6349d400d3 WIP installer refactor, only change config status if status is empty
[TFS Changeset #76963]
2010-09-08 07:54:04 +00:00
starfighter83 7737059326 WIP installer refactor, adds final skin step (customize) to installer
[TFS Changeset #76962]
2010-09-08 07:45:17 +00:00
starfighter83 3eab36a3ab WIP installer refactor
[TFS Changeset #76926]
2010-09-07 15:32:58 +00:00
PerPloug 88d06f54d3 couple of style tweaks for the installer
[TFS Changeset #76919]
2010-09-07 14:15:35 +00:00
PerPloug 541bb38285 Added some style to the installer and some additional step configurations
[TFS Changeset #76910]
2010-09-07 13:09:54 +00:00
PerPloug 54dfd6d44a Merging, installer / skinning branch with 4.1 branch
[TFS Changeset #76863]
2010-09-06 13:48:30 +00:00
1197 changed files with 70896 additions and 17982 deletions
+38
View File
@@ -0,0 +1,38 @@
# use glob syntax
syntax: glob
*.obj
*.exe
*.pdb
*.user
*.aps
*.pch
*.vspscc
[Bb]in
[Db]ebug*/
obj/
[Rr]elease*/
_ReSharper*/
[Tt]est[Rr]esult*
[Bb]uild[Ll]og.*
*.[Pp]ublish.xml
*.suo
[sS]ource
[sS]andbox
umbraco.config
*.vs10x
App_Data\TEMP\*
umbraco\presentation\umbraco\plugins\*
umbraco\presentation\usercontrols\*
umbraco\presentation\scripts\*
umbraco\presentation\fonts\*
umbraco\presentation\css\*
glob:*App_Code\*
glob:*App_Data\*
glob:*media\*
glob:*masterpages\*
glob:*macroScripts\*
glob:*xslt\*
umbraco\presentation\umbraco\plugins\uComponents\uComponentsInstaller.ascx
umbraco\presentation\packages\uComponents\MultiNodePicker\CustomTreeService.asmx
+7
View File
@@ -0,0 +1,7 @@
d0aba247db91d1b70c39c6397b965ca370a67497 Sprint-Juno-A
0b8f67be2ca8faf008151d87f232c698de69e735 Release-4.5.0
5960c073250926d202861a09472f5f334da6e283 Sprint-Juno-B
f15d4ff81a8368e9d42788f7e0ae726f7a70a3b1 Release-4.0.3
283065df4d3c27245267709dd2644a479c4f62a5 Release-4.0.4.2
ffc34b23e1a03785e4098afa4290d8c03cf10115 Release-4.5.2
d03fcffb8834a9583a56813bb44b6abbd9f042cc Release-4.6.0
+24
View File
@@ -0,0 +1,24 @@
Hi! Thanks for grabbing the Umbraco sourcecode.
===========================================
NOTE - DEFAULT BRANCH EMPTY - December 2010
===========================================
- With the help of CodePlex we have migrated much of our previous changesets (as of Dec 13th 2010) from TFS to Mercurial.
- However, not everything could be migrated to our new branching workflow. So for each nominal group of 4.x changes, we've created named branches. For upcoming 5.x changesets, we'll adhere to our new workflow which we'll describe on the Wiki for contributors.
- FOR THE MOMENT, the 'default' branch is empty - pending the addition of the 5.0 changesets
- To switch to the codebase on which you want to work, 'hg update' to the named branch (e.g. "4.6.0") or tag (e.g. "Release-4.5.2") and browse or work from that point.
Thanks to Matt Hawley at CodePlex for his help in our migration!
Cheers,
The Umbraco Team
http://umbraco.org
http://our.umbraco.org
http://umbraco.codeplex.com
+8 -216
View File
@@ -1,221 +1,13 @@
umbraco v3 is licensed under the open source license CPL - Common Public License (attached below). Please notice that it's only v3 that uses the CPL. The prior versions (v2.0, v2.1 and v2.1.x) uses GPL.
Umbraco CMS version 4.5 is licensed under the OSI approved MIT License:
Important License Guidelines - How we see and adopt the CPL
- You're free to choose whatever license (both open source and properary licenses) for any umbraco extensions you make as long as these are distributed alone and not bundled with umbraco.
- umbraco may only be distributed as a whole. You may not use part of umbraco to create another stand-alone application, this could be using the UI parts to create another CMS.
- You may not re-brand umbraco
- If in doubt, please contact us (http://umbraco.org) before using our software for other than the original purpose. We have a commercial non-CPL license for those in doubt, wishes not to use CPL licensed software or wishes to build a new product based on parts of umbraco (see http://umbraco.org).
Copyright (c) 2007-2010 umbraco I/S.
Common Public License Version 1.0
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
THE ACCOMPANYING PROGRAM IS PROVIDED UNDER THE TERMS OF THIS COMMON PUBLIC
LICENSE ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THE PROGRAM
CONSTITUTES RECIPIENT'S ACCEPTANCE OF THIS AGREEMENT.
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
1. DEFINITIONS
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
"Contribution" means:
a) in the case of the initial Contributor, the initial code and
documentation distributed under this Agreement, and
b) in the case of each subsequent Contributor:
i) changes to the Program, and
ii) additions to the Program;
where such changes and/or additions to the Program originate from and are
distributed by that particular Contributor. A Contribution 'originates' from a
Contributor if it was added to the Program by such Contributor itself or anyone
acting on such Contributor's behalf. Contributions do not include additions to
the Program which: (i) are separate modules of software distributed in
conjunction with the Program under their own license agreement, and (ii) are not
derivative works of the Program.
"Contributor" means any person or entity that distributes the Program.
"Licensed Patents " mean patent claims licensable by a Contributor which are
necessarily infringed by the use or sale of its Contribution alone or when
combined with the Program.
"Program" means the Contributions distributed in accordance with this Agreement.
"Recipient" means anyone who receives the Program under this Agreement,
including all Contributors.
2. GRANT OF RIGHTS
a) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free copyright license to
reproduce, prepare derivative works of, publicly display, publicly perform,
distribute and sublicense the Contribution of such Contributor, if any, and such
derivative works, in source code and object code form.
b) Subject to the terms of this Agreement, each Contributor hereby grants
Recipient a non-exclusive, worldwide, royalty-free patent license under Licensed
Patents to make, use, sell, offer to sell, import and otherwise transfer the
Contribution of such Contributor, if any, in source code and object code form.
This patent license shall apply to the combination of the Contribution and the
Program if, at the time the Contribution is added by the Contributor, such
addition of the Contribution causes such combination to be covered by the
Licensed Patents. The patent license shall not apply to any other combinations
which include the Contribution. No hardware per se is licensed hereunder.
c) Recipient understands that although each Contributor grants the licenses
to its Contributions set forth herein, no assurances are provided by any
Contributor that the Program does not infringe the patent or other intellectual
property rights of any other entity. Each Contributor disclaims any liability to
Recipient for claims brought by any other entity based on infringement of
intellectual property rights or otherwise. As a condition to exercising the
rights and licenses granted hereunder, each Recipient hereby assumes sole
responsibility to secure any other intellectual property rights needed, if any.
For example, if a third party patent license is required to allow Recipient to
distribute the Program, it is Recipient's responsibility to acquire that license
before distributing the Program.
d) Each Contributor represents that to its knowledge it has sufficient
copyright rights in its Contribution, if any, to grant the copyright license set
forth in this Agreement.
3. REQUIREMENTS
A Contributor may choose to distribute the Program in object code form under its
own license agreement, provided that:
a) it complies with the terms and conditions of this Agreement; and
b) its license agreement:
i) effectively disclaims on behalf of all Contributors all warranties and
conditions, express and implied, including warranties or conditions of title and
non-infringement, and implied warranties or conditions of merchantability and
fitness for a particular purpose;
ii) effectively excludes on behalf of all Contributors all liability for
damages, including direct, indirect, special, incidental and consequential
damages, such as lost profits;
iii) states that any provisions which differ from this Agreement are offered
by that Contributor alone and not by any other party; and
iv) states that source code for the Program is available from such
Contributor, and informs licensees how to obtain it in a reasonable manner on or
through a medium customarily used for software exchange.
When the Program is made available in source code form:
a) it must be made available under this Agreement; and
b) a copy of this Agreement must be included with each copy of the Program.
Contributors may not remove or alter any copyright notices contained within the
Program.
Each Contributor must identify itself as the originator of its Contribution, if
any, in a manner that reasonably allows subsequent Recipients to identify the
originator of the Contribution.
4. COMMERCIAL DISTRIBUTION
Commercial distributors of software may accept certain responsibilities with
respect to end users, business partners and the like. While this license is
intended to facilitate the commercial use of the Program, the Contributor who
includes the Program in a commercial product offering should do so in a manner
which does not create potential liability for other Contributors. Therefore, if
a Contributor includes the Program in a commercial product offering, such
Contributor ("Commercial Contributor") hereby agrees to defend and indemnify
every other Contributor ("Indemnified Contributor") against any losses, damages
and costs (collectively "Losses") arising from claims, lawsuits and other legal
actions brought by a third party against the Indemnified Contributor to the
extent caused by the acts or omissions of such Commercial Contributor in
connection with its distribution of the Program in a commercial product
offering. The obligations in this section do not apply to any claims or Losses
relating to any actual or alleged intellectual property infringement. In order
to qualify, an Indemnified Contributor must: a) promptly notify the Commercial
Contributor in writing of such claim, and b) allow the Commercial Contributor to
control, and cooperate with the Commercial Contributor in, the defense and any
related settlement negotiations. The Indemnified Contributor may participate in
any such claim at its own expense.
For example, a Contributor might include the Program in a commercial product
offering, Product X. That Contributor is then a Commercial Contributor. If that
Commercial Contributor then makes performance claims, or offers warranties
related to Product X, those performance claims and warranties are such
Commercial Contributor's responsibility alone. Under this section, the
Commercial Contributor would have to defend claims against the other
Contributors related to those performance claims and warranties, and if a court
requires any other Contributor to pay any damages as a result, the Commercial
Contributor must pay those damages.
5. NO WARRANTY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, THE PROGRAM IS PROVIDED ON AN
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, EITHER EXPRESS OR
IMPLIED INCLUDING, WITHOUT LIMITATION, ANY WARRANTIES OR CONDITIONS OF TITLE,
NON-INFRINGEMENT, MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. Each
Recipient is solely responsible for determining the appropriateness of using and
distributing the Program and assumes all risks associated with its exercise of
rights under this Agreement, including but not limited to the risks and costs of
program errors, compliance with applicable laws, damage to or loss of data,
programs or equipment, and unavailability or interruption of operations.
6. DISCLAIMER OF LIABILITY
EXCEPT AS EXPRESSLY SET FORTH IN THIS AGREEMENT, NEITHER RECIPIENT NOR ANY
CONTRIBUTORS SHALL HAVE ANY LIABILITY FOR ANY DIRECT, INDIRECT, INCIDENTAL,
SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING WITHOUT LIMITATION LOST
PROFITS), HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
OUT OF THE USE OR DISTRIBUTION OF THE PROGRAM OR THE EXERCISE OF ANY RIGHTS
GRANTED HEREUNDER, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.
7. GENERAL
If any provision of this Agreement is invalid or unenforceable under applicable
law, it shall not affect the validity or enforceability of the remainder of the
terms of this Agreement, and without further action by the parties hereto, such
provision shall be reformed to the minimum extent necessary to make such
provision valid and enforceable.
If Recipient institutes patent litigation against a Contributor with respect to
a patent applicable to software (including a cross-claim or counterclaim in a
lawsuit), then any patent licenses granted by that Contributor to such Recipient
under this Agreement shall terminate as of the date such litigation is filed. In
addition, if Recipient institutes patent litigation against any entity
(including a cross-claim or counterclaim in a lawsuit) alleging that the Program
itself (excluding combinations of the Program with other software or hardware)
infringes such Recipient's patent(s), then such Recipient's rights granted under
Section 2(b) shall terminate as of the date such litigation is filed.
All Recipient's rights under this Agreement shall terminate if it fails to
comply with any of the material terms or conditions of this Agreement and does
not cure such failure in a reasonable period of time after becoming aware of
such noncompliance. If all Recipient's rights under this Agreement terminate,
Recipient agrees to cease use and distribution of the Program as soon as
reasonably practicable. However, Recipient's obligations under this Agreement
and any licenses granted by Recipient relating to the Program shall continue and
survive.
Everyone is permitted to copy and distribute copies of this Agreement, but in
order to avoid inconsistency the Agreement is copyrighted and may only be
modified in the following manner. The Agreement Steward reserves the right to
publish new versions (including revisions) of this Agreement from time to time.
No one other than the Agreement Steward has the right to modify this Agreement.
IBM is the initial Agreement Steward. IBM may assign the responsibility to serve
as the Agreement Steward to a suitable separate entity. Each new version of the
Agreement will be given a distinguishing version number. The Program (including
Contributions) may always be distributed subject to the version of the Agreement
under which it was received. In addition, after a new version of the Agreement
is published, Contributor may elect to distribute the Program (including its
Contributions) under the new version. Except as expressly stated in Sections
2(a) and 2(b) above, Recipient receives no rights or licenses to the
intellectual property of any Contributor under this Agreement, whether
expressly, by implication, estoppel or otherwise. All rights in the Program not
expressly granted under this Agreement are reserved.
This Agreement is governed by the laws of the State of New York and the
intellectual property laws of the United States of America. No party to this
Agreement will bring a legal action under this Agreement more than one year
after the cause of action arose. Each party waives its rights to a jury trial in
any resulting litigation.
Umbraco versions prior to 4.5 were licensed under a combination of MIT and a propriatary UI license. The license history can be found here:
http://umbraco.codeplex.com/license
@@ -250,7 +250,7 @@ namespace umbraco.Linq.Core.Node
foreach (var ancestor in elements)
{
var alias = Casing.SafeAliasWithForcingCheck(ancestor.Name.LocalName);
var alias = Casing.SafeAlias(ancestor.Name.LocalName);
var t = KnownTypes[alias];
var instaceOfT = (DocTypeBase)Activator.CreateInstance(t); //create an instance of the type and down-cast so we can use it
this.LoadFromXml(ancestor, instaceOfT);
@@ -276,7 +276,7 @@ namespace umbraco.Linq.Core.Node
});
foreach (var type in types)
this._knownTypes.Add(Casing.SafeAliasWithForcingCheck(type.Key), type.Value);
this._knownTypes.Add(Casing.SafeAlias(type.Key), type.Value);
}
@@ -327,30 +327,67 @@ namespace umbraco.Linq.Core.Node
{
var attr = ReflectionAssistance.GetUmbracoInfoAttribute(p);
XElement propertyXml = xml.Element(Casing.SafeAliasWithForcingCheck(attr.Alias));
XElement propertyXml = xml.Element(Casing.SafeAlias(attr.Alias));
string data = null;
//if the XML doesn't contain the property it means that the node hasn't been re-published with the property
//so then we'll leave the data at null, otherwise let's grab it
if (propertyXml != null)
data = propertyXml.Value;
//Check if the propertyXml and propertyXml.FirstNode aren't null. If they are we don't need to set the value.
if (propertyXml != null && propertyXml.FirstNode != null)
{
//If the FirstNode is an XElement it means the property contains inner xml and we should return it. Otherwise just return the normal value.
if (propertyXml.FirstNode is XElement)
{
var reader = propertyXml.CreateReader();
reader.MoveToContent();
data = reader.ReadInnerXml();
}
else
{
data = propertyXml.Value;
}
}
if (p.PropertyType.IsValueType && p.PropertyType.GetGenericArguments().Length > 0 && typeof(Nullable<>).IsAssignableFrom(p.PropertyType.GetGenericTypeDefinition()))
{
if (string.IsNullOrEmpty(data))
{
//non-mandatory structs which have no value will be null
p.SetValue(node, null, null);
try
{
p.SetValue(node, null, null);
}
catch (FormatException ex)
{
throw new FormatException(
string.Format("Unable to cast '{0}' to the appropriate type ({1}) for node `{2}`. The alias of the property being parsed is {3}. Refer to inner exception for more details", data, p.PropertyType.FullName, node.Id, attr.Alias), ex);
}
}
else
{
//non-mandatory structs which do have a value have to be cast based on the type of their Nullable<T>, found from the first (well, only) GenericArgument
p.SetValue(node, Convert.ChangeType(data, p.PropertyType.GetGenericArguments()[0]), null);
try
{
p.SetValue(node, Convert.ChangeType(data, p.PropertyType.GetGenericArguments()[0]), null);
}
catch (FormatException ex)
{
throw new FormatException(
string.Format("Unable to cast '{0}' to the appropriate type ({1}) for node `{2}`. The alias of the property being parsed is {3}. Refer to inner exception for more details", data, p.PropertyType.FullName, node.Id, attr.Alias), ex);
}
}
}
else
{
// TODO: Address how Convert.ChangeType works in globalisation
p.SetValue(node, Convert.ChangeType(data, p.PropertyType), null);
try
{
p.SetValue(node, Convert.ChangeType(data, p.PropertyType), null);
}
catch (FormatException ex)
{
throw new FormatException(
string.Format("Unable to cast '{0}' to the appropriate type ({1}) for node `{2}`. The alias of the property being parsed is {3}. Refer to inner exception for more details", data, p.PropertyType.FullName, node.Id, attr.Alias), ex);
}
}
}
}
@@ -10,12 +10,16 @@
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>umbraco.Linq.Core</RootNamespace>
<AssemblyName>umbraco.Linq.Core</AssemblyName>
<TargetFrameworkVersion>v3.5</TargetFrameworkVersion>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>SAK</SccProjectName>
<SccLocalPath>SAK</SccLocalPath>
<SccAuxPath>SAK</SccAuxPath>
<SccProvider>SAK</SccProvider>
<SccProjectName>
</SccProjectName>
<SccLocalPath>
</SccLocalPath>
<SccAuxPath>
</SccAuxPath>
<SccProvider>
</SccProvider>
<umbracoPresentationPath>..\..\..\..\..\umbraco\presentation\bin</umbracoPresentationPath>
<FileUpgradeFlags>
</FileUpgradeFlags>
@@ -36,6 +40,7 @@
<IsWebBootstrapper>false</IsWebBootstrapper>
<UseApplicationTrust>false</UseApplicationTrust>
<BootstrapperEnabled>true</BootstrapperEnabled>
<TargetFrameworkProfile />
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
@@ -146,4 +151,4 @@
<PropertyGroup>
<PostBuildEvent>XCOPY "$(TargetPath)" "$(SolutionDir)\umbraco\presentation\bin" /Y</PostBuildEvent>
</PropertyGroup>
</Project>
</Project>
+9
View File
@@ -0,0 +1,9 @@
!! Umbraco - the simple, flexible and friendly ASP.NET CMS
For the first time on the Microsoft platform a free user and developer friendly cms that makes it quick and easy to create websites - or a breeze to build complex web applications. umbraco got award-winning integration capabilities and supports your ASP.NET User and Custom Controls out of the box. It's a developers dream and your users will love it too. Used by more than 57.000 active websites including Heinz.com, Peugeot.com, NAIAS.com and Microsofts documentinteropinitiative.org website you can be sure that the technology is proven, stable and scales.
[url:More info at http://umbraco.org|http://umbraco.org]
!! Forums
We have a forum running on [url:http://our.umbraco.org]. The discussions area on CodePlex will be for discussions on developing the core, and not on Umbraco-implementations or extensions in general. For those topics, please use [url:http://our.umbraco.org].
!! Submitting Issues
Another way you can contribute to Umbraco is by providing issue reports, for information on how to submit an issue report refer to our [url:online guide|http://our.umbraco.org/wiki/how-tos/submitting-bug-reports].
+2 -2
View File
@@ -4,8 +4,8 @@
<Deployment enabled="false" />
<Execution>
<Hosts type="ASP.NET" skipUnhostableTests="false">
<AspNet name="ASP.NET" executionType="WebDev" urlToTest="http://localhost:52453">
<DevelopmentServer pathToWebSite="C:\Users\hartvig\Documents\Visual Studio 2008\Projects\Core\branches\4.1.0\umbraco\presentation" webApplicationRoot="/" />
<AspNet name="ASP.NET" executionType="WebDev" urlToTest="http://localhost:6557">
<DevelopmentServer pathToWebSite="C:\Users\hartvig\Documents\Visual Studio 2010\Projects\Core\umbraco\presentation" webApplicationRoot="/" />
</AspNet>
</Hosts>
<TestTypeSpecific>
+3 -3
View File
@@ -1,19 +1,19 @@
<?xml version="1.0" ?>
<project name="umbraco" default="test" basedir=".">
<description>Build the umbraco 4.5 Application for asp.net 3.5</description>
<description>Build the umbraco 4.6 alpha Application for asp.net 3.5</description>
<property name="nant.settings.currentframework" value="net-2.0" />
<!-- filenames and directories, generally won't change -->
<property name="web.dir" value="D:\inetpub\wwwroot\v4.umbraco.org" />
<property name="public.dir" value="D:\inetpub\wwwroot\nightlies\umbraco 4.1 for asp.net 3.5" />
<property name="public.dir" value="D:\inetpub\wwwroot\nightlies\umbraco 4.6 for asp.net 3.5" />
<property name="root.dir" value="${directory::get-current-directory()}" />
<property name="source.dir" value="${root.dir}\umbraco\presentation" />
<property name="build.dir" value="${root.dir}\build" />
<property name="dlls.dir" value="${root.dir}\foreign dlls" />
<property name="build.version" value="4.1"/>
<property name="build.version" value="4.6 Alpha"/>
<property name="docs.dir" value="${root.dir}\docs" />
Binary file not shown.
@@ -0,0 +1,27 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<actionScriptProperties analytics="false" mainApplicationPath="DesktopMediaUploader.mxml" projectUUID="9115d8c5-0cb4-4a34-8702-48456cca7762" version="6">
<compiler additionalCompilerArguments="-locale en_US" autoRSLOrdering="true" copyDependentFiles="true" fteInMXComponents="false" generateAccessible="true" htmlExpressInstall="true" htmlGenerate="false" htmlHistoryManagement="false" htmlPlayerVersionCheck="true" includeNetmonSwc="false" outputFolderPath="bin" sourceFolderPath="src" strict="true" targetPlayerVersion="0.0.0" useApolloConfig="true" useDebugRSLSwfs="true" verifyDigests="true" warn="true">
<compilerSourcePath/>
<libraryPath defaultLinkType="0">
<libraryPathEntry kind="4" path="">
<excludedEntries>
<libraryPathEntry kind="3" linkType="1" path="${PROJECT_FRAMEWORKS}/libs/flex.swc" useDefaultLinkType="false"/>
</excludedEntries>
</libraryPathEntry>
<libraryPathEntry kind="1" linkType="1" path="libs"/>
</libraryPath>
<sourceAttachmentPath/>
</compiler>
<applications>
<application path="DesktopMediaUploader.mxml">
<airExcludes>
<airExclude path="assets/dmu_orange.fla"/>
<airExclude path="assets/logo.psd"/>
<airExclude path="assets/icon-128-old.png"/>
<airExclude path="assets/icon-128.psd"/>
</airExcludes>
</application>
</applications>
<modules/>
<buildCSSFiles/>
</actionScriptProperties>
@@ -0,0 +1,2 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<flexProperties enableServiceManager="false" flexServerFeatures="0" flexServerType="0" toolCompile="true" useServerFlexSDK="false" version="2"/>
+24
View File
@@ -0,0 +1,24 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>DesktopMediaUploader</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>com.adobe.flexbuilder.project.flexbuilder</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>com.adobe.flexbuilder.project.apollobuilder</name>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>com.adobe.flexbuilder.project.apollonature</nature>
<nature>com.adobe.flexbuilder.project.flexnature</nature>
<nature>com.adobe.flexbuilder.project.actionscriptnature</nature>
</natures>
</projectDescription>
@@ -0,0 +1,3 @@
#Tue Jul 20 11:35:49 BST 2010
eclipse.preferences.version=1
encoding/<project>=utf-8
@@ -0,0 +1,154 @@
<?xml version="1.0" encoding="utf-8" standalone="no"?>
<application xmlns="http://ns.adobe.com/air/application/2.0">
<!-- Adobe AIR Application Descriptor File Template.
Specifies parameters for identifying, installing, and launching AIR applications.
xmlns - The Adobe AIR namespace: http://ns.adobe.com/air/application/2.0
The last segment of the namespace specifies the version
of the AIR runtime required for this application to run.
minimumPatchLevel - The minimum patch level of the AIR runtime required to run
the application. Optional.
-->
<!-- A universally unique application identifier. Must be unique across all AIR applications.
Using a reverse DNS-style name as the id is recommended. (Eg. com.example.ExampleApplication.) Required. -->
<id>org.umbraco.DesktopMediaUploader</id>
<!-- Used as the filename for the application. Required. -->
<filename>Desktop Media Uploader</filename>
<!-- The name that is displayed in the AIR application installer.
May have multiple values for each language. See samples or xsd schema file. Optional. -->
<name>Desktop Media Uploader</name>
<!-- An application version designator (such as "v1", "2.5", or "Alpha 1"). Required. -->
<version>v2.1.0</version>
<!-- Description, displayed in the AIR application installer.
May have multiple values for each language. See samples or xsd schema file. Optional. -->
<description>
This application allows you to upload media to an Umbraco website directly from your desktop.
</description>
<!-- Copyright information. Optional -->
<copyright>2010 Umbraco.org</copyright>
<!-- Publisher ID. Used if you're updating an application created prior to 1.5.3 -->
<!-- <publisherID></publisherID> -->
<!-- Settings for the application's initial window. Required. -->
<initialWindow>
<!-- The main SWF or HTML file of the application. Required. -->
<!-- Note: In Flash Builder, the SWF reference is set automatically. -->
<content>DesktopMediaUploader.swf</content>
<!-- The title of the main window. Optional. -->
<!-- <title></title> -->
<!-- The type of system chrome to use (either "standard" or "none"). Optional. Default standard. -->
<!-- <systemChrome></systemChrome> -->
<!-- Whether the window is transparent. Only applicable when systemChrome is none. Optional. Default false. -->
<!-- <transparent></transparent> -->
<!-- Whether the window is initially visible. Optional. Default false. -->
<!-- <visible></visible> -->
<!-- Whether the user can minimize the window. Optional. Default true. -->
<!-- <minimizable></minimizable> -->
<!-- Whether the user can maximize the window. Optional. Default true. -->
<!-- <maximizable></maximizable> -->
<!-- Whether the user can resize the window. Optional. Default true. -->
<!-- <resizable></resizable> -->
<!-- The window's initial width in pixels. Optional. -->
<!-- <width></width> -->
<!-- The window's initial height in pixels. Optional. -->
<!-- <height></height> -->
<!-- The window's initial x position. Optional. -->
<!-- <x></x> -->
<!-- The window's initial y position. Optional. -->
<!-- <y></y> -->
<!-- The window's minimum size, specified as a width/height pair in pixels, such as "400 200". Optional. -->
<!-- <minSize></minSize> -->
<!-- The window's initial maximum size, specified as a width/height pair in pixels, such as "1600 1200". Optional. -->
<!-- <maxSize></maxSize> -->
</initialWindow>
<!-- We recommend omitting the supportedProfiles element, -->
<!-- which in turn permits your application to be deployed to all -->
<!-- devices supported by AIR. If you wish to restrict deployment -->
<!-- (i.e., to only mobile devices) then add this element and list -->
<!-- only the profiles which your application does support. -->
<!-- <supportedProfiles>desktop extendedDesktop mobileDevice extendedMobileDevice</supportedProfiles> -->
<!-- The subpath of the standard default installation location to use. Optional. -->
<!-- <installFolder></installFolder> -->
<!-- The subpath of the Programs menu to use. (Ignored on operating systems without a Programs menu.) Optional. -->
<!-- <programMenuFolder></programMenuFolder> -->
<!-- The icon the system uses for the application. For at least one resolution,
specify the path to a PNG file included in the AIR package. Optional. -->
<icon>
<image16x16>assets/icon-16.png</image16x16>
<image32x32>assets/icon-32.png</image32x32>
<image48x48>assets/icon-48.png</image48x48>
<image128x128>assets/icon-128.png</image128x128>
</icon>
<!-- Whether the application handles the update when a user double-clicks an update version
of the AIR file (true), or the default AIR application installer handles the update (false).
Optional. Default false. -->
<!-- <customUpdateUI></customUpdateUI> -->
<!-- Whether the application can be launched when the user clicks a link in a web browser.
Optional. Default false. -->
<allowBrowserInvocation>true</allowBrowserInvocation>
<!-- Listing of file types for which the application can register. Optional. -->
<!-- <fileTypes> -->
<!-- Defines one file type. Optional. -->
<!-- <fileType> -->
<!-- The name that the system displays for the registered file type. Required. -->
<!-- <name></name> -->
<!-- The extension to register. Required. -->
<!-- <extension></extension> -->
<!-- The description of the file type. Optional. -->
<!-- <description></description> -->
<!-- The MIME content type. -->
<!-- <contentType></contentType> -->
<!-- The icon to display for the file type. Optional. -->
<!-- <icon>
<image16x16></image16x16>
<image32x32></image32x32>
<image48x48></image48x48>
<image128x128></image128x128>
</icon> -->
<!-- </fileType> -->
<!-- </fileTypes> -->
</application>
@@ -0,0 +1,90 @@
/* CSS file */
@namespace s "library://ns.adobe.com/flex/spark";
@namespace mx "library://ns.adobe.com/flex/mx";
global
{
focus-color: #EEB470;
selection-color: #EEB470;
roll-over-color: #EEEEEE;
}
mx|Tree
{
textSelectedColor: #ffffff;
textRollOverColor: #000000;
selection-color: #f36f21;
roll-over-color: #cccccc;
}
#grpSignInForm s|Label
{
paddingTop: 5px;
}
#grpSignInForm s|CheckBox s|Label
{
paddingTop: 0;
}
.header
{
borderColor: #7a7a7a;
backgroundColor: #7a7a7a;
paddingTop: 25px;
paddingBottom: 25px;
paddingLeft: 25px;
paddingRight: 25px;
}
.header mx|Label
{
color: #ffffff;
font-size: 16px;
font-weight: bold;
}
.header s|DropDownList
{
skinClass: ClassReference('org.umbraco.desktopmediauploader.skins.HeaderDropDownListSkin');
color: #ffffff;
content-background-color: #7a7a7a;
roll-over-color: #f36f22;
}
.header s|DropDownList s|Label
{
font-size: 12px;
font-weight: normal;
}
#btnSignIn,
#btnUpload
{
cornerRadius: 5px;
borderThickness: 2px;
downSkin: Embed(source="assets/dmu_orange.swf", symbol="Button_downSkin");
overSkin: Embed(source="assets/dmu_orange.swf", symbol="Button_overSkin");
upSkin: Embed(source="assets/dmu_orange.swf", symbol="Button_upSkin");
paddingLeft: 20px;
paddingRight: 20px;
paddingTop: 7px;
paddingBottom: 7px;
color: #ffffff;
font-weight: bold;
font-size: 14px;
text-roll-over-color: #ffffff;
text-selected-color: #ffffff;
text-disabled-color: #cccccc;
}
.signOutButton
{
skinClass: ClassReference('org.umbraco.desktopmediauploader.skins.SignOutButtonSkin');
}
.removeButton
{
skinClass: ClassReference('org.umbraco.desktopmediauploader.skins.RemoveButtonSkin');
}
@@ -0,0 +1,65 @@
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
skinClass="org.umbraco.desktopmediauploader.skins.ApplicationSkin"
width="330" height="600" showStatusBar="false"
xmlns:views="org.umbraco.desktopmediauploader.views.*"
windowComplete="init();" >
<fx:Style source="DesktopMediaUploader.css"/>
<fx:Script>
<![CDATA[
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.util.*;
import mx.controls.Alert;
protected function init():void
{
StageHelper.stage = stage;
NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE, app_BrowserInvoke);
vwSignIn.addEventListener(SignedInEvent.SIGNED_IN, vwSignIn_SignedIn);
vwUpload.addEventListener(SignedOutEvent.SIGNED_OUT, vwUpload_SignOut);
vwSignIn.init();
}
protected function app_BrowserInvoke(e:BrowserInvokeEvent):void
{
vwSignIn.visible = true;
vwUpload.visible = false;
}
protected function vwSignIn_SignedIn(e:SignedInEvent):void
{
vwSignIn.visible = false;
vwUpload.visible = true;
}
protected function vwUpload_SignOut(e:SignedOutEvent):void
{
vwSignIn.visible = true;
vwUpload.visible = false;
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<views:SignInView id="vwSignIn" left="0" top="0" right="0" bottom="0">
</views:SignInView>
<views:UploadView id="vwUpload" left="0" top="0" bottom="0" right="0"
visible="false">
</views:UploadView>
</s:WindowedApplication>
@@ -0,0 +1,21 @@
package
{
public class Model
{
[Bindable] public static var url:String;
[Bindable] public static var username:String;
[Bindable] public static var password:String;
[Bindable] public static var ticket:String;
[Bindable] public static var displayName:String;
[Bindable] public static var umbracoPath:String;
[Bindable] public static var maxRequestLength:Number;
[Bindable] public static var currentFolder:XML;
[Bindable] public static var folderId:Number = 0;
[Bindable] public static var folderName:String = "";
[Bindable] public static var folderPath:String = "";
[Bindable] public static var replaceExisting:Boolean = false;
}
}
Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 655 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 778 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

Binary file not shown.
Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

@@ -0,0 +1,122 @@
<?xml version="1.0" encoding="utf-8"?>
<s:TitleWindow xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="260" height="350" title="Select a folder..." creationComplete="folderPickerDialog_CreationComplete(event)"
close="folderPickerDialog_Close(event)" borderVisible="true" chromeColor="#EEEEEE" borderColor="#666666">
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.net.*;
import mx.controls.Alert;
import mx.events.CloseEvent;
import mx.events.FlexEvent;
import mx.managers.*;
protected function folderPickerDialog_CreationComplete(event:FlexEvent):void
{
CursorManager.setBusyCursor();
DmuRequest.makeRequest(DmuRequestAction.FOLDER_LIST,
folderListLoader_Complete,
folderListLoader_Error);
}
protected function folderListLoader_Complete(event:DmuRequestEvent):void
{
CursorManager.removeBusyCursor();
var xml:XML = event.result;
trFolders.dataProvider = xml.folder;
trFolders.labelField = "@name";
trFolders.validateNow();
// Reselect current folder
if (Model.folderId)
{
var node:XMLList = xml..folder.(@id == Model.folderId.toString());
if (node.length() > 0)
{
expandParents(node[0]);
trFolders.selectedItem = node[0];
var idx:int = trFolders.getItemIndex(node[0]);
trFolders.scrollToIndex(idx);
}
else
{
Model.folderId = undefined;
Model.folderName = undefined;
}
}
}
protected function folderListLoader_Error(event:Event):void
{
CursorManager.removeBusyCursor();
Alert.show("Unable to load folder list", "Ooops!");
}
protected function folderPickerDialog_Close(event:CloseEvent):void
{
PopUpManager.removePopUp(this);
}
protected function trFolders_DoubleClick(event:MouseEvent):void
{
var item:XML = trFolders.selectedItem as XML;
Model.currentFolder = item;
Model.folderId = item.@id;
Model.folderName = item.@name;
var pathItem:XML = item;
var path:String = pathItem.@name;
while(pathItem.parent())
{
pathItem = pathItem.parent();
if(pathItem.@name != undefined)
{
path = pathItem.@name +"/"+ path;
}
}
Model.folderPath = path;
PopUpManager.removePopUp(this);
}
private function expandParents(node:XML):void
{
if (node && !trFolders.isItemOpen(node))
{
trFolders.expandItem(node, true);
expandParents(node.parent());
}
}
]]>
</fx:Script>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:Tree width="100%" height="100%" id="trFolders"
defaultLeafIcon="@Embed('assets/folder.png')"
folderClosedIcon="@Embed('assets/folder.png')"
folderOpenIcon="@Embed('assets/folder-open.png')"
paddingLeft="5" paddingRight="5" paddingTop="2" paddingBottom="2"
doubleClickEnabled="true" doubleClick="trFolders_DoubleClick(event)" borderVisible="false"></mx:Tree>
</s:TitleWindow>
@@ -0,0 +1,29 @@
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#e7e7e7" borderColor="#CCCCCC"
width="100%" height="30">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Script>
<![CDATA[
[Bindable] public var totalItems:int;
protected function btnUploadRemove_Click(event:MouseEvent):void
{
dispatchEvent(new Event(Event.CANCEL));
}
]]>
</fx:Script>
<mx:Image left="7" source="@Embed('assets/information.png')" width="16" height="16" verticalCenter="0"/>
<mx:Label id="lblUploadName" text="Total of {totalItems} File{(totalItems == 1)? '' : 's'}" fontWeight="bold" fontSize="12" color="#999999" left="27" truncateToFit="true" minWidth="0" right="35" verticalCenter="0"/>
<s:Button id="btnUploadRemove" width="16" height="16" top="5" right="5" useHandCursor="true" buttonMode="true" styleName="removeButton" click="btnUploadRemove_Click(event)" />
</s:BorderContainer>
@@ -0,0 +1,144 @@
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
backgroundColor="#F5F5F5" borderColor="#CCCCCC"
borderColor.Error="#C50101" backgroundColor.Error="#F3DBDB"
height.Ready="45" height="60" width="100%">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.net.*;
import org.umbraco.desktopmediauploader.util.*;
import flash.desktop.*;
import flash.events.*;
import flash.filesystem.*;
import flash.net.*;
import org.osmf.utils.URL;
[Bindable] public var file:FileReference;
[Bindable] public var path:String;
[Bindable] public var uploading:Boolean = false;;
[Bindable] public var uploaded:Boolean = false;
public function get fullPath():String
{
return path + "/" + file.name;
}
protected function btnUploadRemove_Click(event:MouseEvent):void
{
cancel();
}
protected function file_Complete(event:DataEvent):void
{
uploading = false;
var result:String = StringHelper.cleanXmlString(event.data);
var xml:XML = new XML(result);
if (xml.@success == "true")
{
uploaded = true;
dispatchEvent(new Event(Event.COMPLETE));
}
else
{
file_SecurityError(new SecurityErrorEvent(SecurityErrorEvent.SECURITY_ERROR));
}
}
protected function file_Progress(event:ProgressEvent):void
{
dispatchEvent(event);
}
protected function file_HttpError(event:HTTPStatusEvent):void
{
setCurrentState("Error");
dispatchEvent(event);
}
protected function file_IOError(event:IOErrorEvent):void
{
setCurrentState("Error");
dispatchEvent(event);
}
protected function file_SecurityError(event:SecurityErrorEvent):void
{
setCurrentState("Error");
dispatchEvent(event);
}
public function upload():void
{
setCurrentState("Uploading");
uploading = true;
var vars:URLVariables = new URLVariables();
vars.parentNodeId = Model.folderId;
vars.replaceExisting = Model.replaceExisting ? "1" : "0";
vars.path = path;
var req:URLRequest = DmuRequest.getRequest(DmuRequestAction.UPLOAD, vars);
file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, file_Complete);
file.addEventListener(ProgressEvent.PROGRESS, file_Progress);
file.addEventListener(HTTPStatusEvent.HTTP_STATUS, file_HttpError);
file.addEventListener(IOErrorEvent.IO_ERROR, file_IOError);
file.addEventListener(SecurityErrorEvent.SECURITY_ERROR, file_SecurityError);
file.upload(req);
}
public function pause():void
{
if (uploading)
file.cancel();
uploading = false;
}
public function cancel():void
{
pause();
dispatchEvent(new Event(Event.CANCEL));
}
private function trim( s:String ):String
{
return s.replace( /^([\s|\t|\n]+)?(.*)([\s|\t|\n]+)?$/gm, "$2" );
}
]]>
</fx:Script>
<s:states>
<s:State name="Ready"/>
<s:State name="Uploading"/>
<s:State name="Error"/>
</s:states>
<mx:Image top="6" left="5" source="@Embed('assets/page.png')"/>
<mx:Label id="lblUploadName" text="{file.name}" fontWeight="bold" color="#000000" left="40" top="4" truncateToFit="true" minWidth="0" right="35" />
<s:Button id="btnUploadRemove" width="16" height="16" top="5" right="5" useHandCursor="true" buttonMode="true" click="btnUploadRemove_Click(event)" styleName="removeButton" />
<mx:ProgressBar id="pbUploadProgress" labelPlacement="top" label="" source="{file}" bottom="5" left="5" right="5" excludeFrom="Ready" />
<mx:Label id="lblUploadPath" left="40" top="20" right="35" fontSize="11" color="#CCCCCC" truncateToFit="true" minWidth="0" fontAntiAliasType="advanced" fontGridFitType="pixel" fontThickness="200" fontSharpness="400"
htmlText="&lt;font color='#666666'&gt;{Model.folderPath.replace(/\//g, ' ')}&lt;/font&gt;{path.replace(/\//g, ' ')}"/>
</s:BorderContainer>
@@ -0,0 +1,19 @@
package org.umbraco.desktopmediauploader.events
{
import flash.events.Event;
public class DmuRequestEvent extends Event
{
public static const SUCCESS:String = "success";
public static const ERROR:String = "error";
public var result:XML;
public function DmuRequestEvent(type:String, result:XML = null, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
this.result = result;
}
}
}
@@ -0,0 +1,18 @@
package org.umbraco.desktopmediauploader.events
{
import flash.events.Event;
public class SignedInEvent extends Event
{
public static const SIGNED_IN:String = "signedIn";
public function SignedInEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event {
return new SignedInEvent(type, bubbles, cancelable);
}
}
}
@@ -0,0 +1,18 @@
package org.umbraco.desktopmediauploader.events
{
import flash.events.Event;
public class SignedOutEvent extends Event
{
public static const SIGNED_OUT:String = "signedOut";
public function SignedOutEvent(type:String, bubbles:Boolean=false, cancelable:Boolean=false)
{
super(type, bubbles, cancelable);
}
override public function clone():Event {
return new SignedOutEvent(type, bubbles, cancelable);
}
}
}
@@ -0,0 +1,77 @@
package org.umbraco.desktopmediauploader.net
{
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.util.*;
import flash.events.*;
import flash.net.*;
public class DmuRequest extends EventDispatcher
{
public function DmuRequest(action:String, vars:URLVariables = null, target:IEventDispatcher = null)
{
super(target);
var req:URLRequest = getRequest(action, vars);
var loader:URLLoader = new URLLoader();
loader.addEventListener(Event.COMPLETE, loader_Success);
loader.addEventListener(IOErrorEvent.IO_ERROR, loader_Error);
loader.load(req);
}
private function loader_Success(event:Event):void
{
var loader:URLLoader = event.target as URLLoader;
if (loader != null)
{
var result:String = StringHelper.cleanXmlString(loader.data);
var xml:XML = new XML(result);
if (xml.@success == "true")
{
dispatchEvent(new DmuRequestEvent(DmuRequestEvent.SUCCESS, xml));
}
else
{
loader_Error();
}
}
else
{
loader_Error();
}
}
private function loader_Error(event:IOErrorEvent = null):void
{
dispatchEvent(new DmuRequestEvent(DmuRequestEvent.ERROR));
}
public static function getRequest(action:String, vars:URLVariables = null):URLRequest
{
var loaderUrl:String = Model.url +"/umbraco/webservices/mediauploader.ashx";
if (vars == null)
vars = new URLVariables();
vars.action = action;
vars.username = Model.username;
vars.password = Model.password;
vars.ticket = Model.ticket;
var req:URLRequest = new URLRequest(loaderUrl);
req.data = vars;
req.method = URLRequestMethod.POST;
return req;
}
public static function makeRequest(action:String, successCallback:Function, errorCallback:Function,
vars:URLVariables = null):void
{
var req:DmuRequest = new DmuRequest(action, vars);
req.addEventListener(DmuRequestEvent.SUCCESS, successCallback);
req.addEventListener(DmuRequestEvent.ERROR, errorCallback);
}
}
}
@@ -0,0 +1,9 @@
package org.umbraco.desktopmediauploader.net
{
public class DmuRequestAction
{
public static var CONFIG:String = "config";
public static var FOLDER_LIST:String = "folderList";
public static var UPLOAD:String = "upload";
}
}
@@ -0,0 +1,85 @@
<?xml version="1.0" encoding="utf-8"?>
<!-- http://blog.flexexamples.com/2009/03/13/setting-a-linear-gradient-background-on-an-fxapplication-container-in-flex-gumbo/ -->
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
alpha.disabled="0.5"
alpha.disabledWithControlBar="0.5">
<s:states>
<s:State name="normal" />
<s:State name="disabled" />
<s:State name="normalWithControlBar" />
<s:State name="disabledWithControlBar" />
<s:State name="normalAndInactive" />
</s:states>
<fx:Metadata>
<![CDATA[
[HostComponent("spark.components.Application")]
]]>
</fx:Metadata>
<!-- fill -->
<!---
A rectangle with a solid color fill that forms the background of the application.
The color of the fill is set to the Application's backgroundColor property.
-->
<s:Rect id="backgroundRect" left="0" right="0" top="0" bottom="0" >
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="#cccccc" />
<s:GradientEntry color="#eeeeee" ratio="0.2" />
<s:GradientEntry color="#ffffff" ratio="0.8" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<s:Group left="0" right="0" top="0" bottom="0">
<s:layout>
<s:VerticalLayout gap="0" horizontalAlign="justify" />
</s:layout>
<s:Group id="topGroup" minWidth="0" minHeight="0"
includeIn="normalWithControlBar, disabledWithControlBar" >
<!-- layer 0: control bar highlight -->
<s:Rect left="0" right="0" top="0" bottom="1" >
<s:stroke>
<s:LinearGradientStroke rotation="90" weight="1">
<s:GradientEntry color="0xFFFFFF" />
<s:GradientEntry color="0xD8D8D8" />
</s:LinearGradientStroke>
</s:stroke>
</s:Rect>
<!-- layer 1: control bar fill -->
<s:Rect left="1" right="1" top="1" bottom="2" >
<s:fill>
<s:LinearGradient rotation="90">
<s:GradientEntry color="0xEDEDED" />
<s:GradientEntry color="0xCDCDCD" />
</s:LinearGradient>
</s:fill>
</s:Rect>
<!-- layer 2: control bar divider line -->
<s:Rect left="0" right="0" bottom="0" height="1" alpha="0.55">
<s:fill>
<s:SolidColor color="0x000000" />
</s:fill>
</s:Rect>
<!-- layer 3: control bar -->
<s:Group id="controlBarGroup" left="0" right="0" top="1" bottom="1" minWidth="0" minHeight="0">
<s:layout>
<s:HorizontalLayout paddingLeft="10" paddingRight="10" paddingTop="7" paddingBottom="7" gap="10" />
</s:layout>
</s:Group>
</s:Group>
<s:Group id="contentGroup" width="100%" height="100%" minWidth="0" minHeight="0" />
</s:Group>
</s:Skin>
@@ -0,0 +1,61 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ADOBE SYSTEMS INCORPORATED
Copyright 2009 Adobe Systems Incorporated
All Rights Reserved.
NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.
-->
<!--- The default skin class for a Spark DefaultItemRenderer class.
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4
-->
<s:ItemRenderer focusEnabled="false" xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" useHandCursor="true" buttonMode="true">
<s:states>
<s:State name="normal" />
<s:State name="hovered" />
<s:State name="selected" />
<s:State name="normalAndShowsCaret"/>
<s:State name="hoveredAndShowsCaret"/>
<s:State name="selectedAndShowsCaret"/>
</s:states>
<s:Rect left="0" right="0" top="0" bottom="0">
<s:stroke.normalAndShowsCaret>
<s:SolidColorStroke
color="{getStyle('selectionColor')}"
weight="1"/>
</s:stroke.normalAndShowsCaret>
<s:stroke.hoveredAndShowsCaret>
<s:SolidColorStroke
color="{getStyle('selectionColor')}"
weight="1"/>
</s:stroke.hoveredAndShowsCaret>
<s:stroke.selectedAndShowsCaret>
<s:SolidColorStroke
color="{getStyle('selectionColor')}"
weight="1"/>
</s:stroke.selectedAndShowsCaret>
<s:fill>
<s:SolidColor
color.normal="0x9a9a9a"
color.normalAndShowsCaret="0x9a9a9a"
color.hovered="{getStyle('rollOverColor')}"
color.hoveredAndShowsCaret="{getStyle('rollOverColor')}"
color.selected="{getStyle('selectionColor')}"
color.selectedAndShowsCaret="{getStyle('selectionColor')}"
/>
</s:fill>
</s:Rect>
<s:Label id="labelDisplay" verticalCenter="0" left="5" right="5" top="6" bottom="4"/>
</s:ItemRenderer>
@@ -0,0 +1,58 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ADOBE SYSTEMS INCORPORATED
Copyright 2009 Adobe Systems Incorporated
All Rights Reserved.
NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.
-->
<!--- The default skin class for the anchor button on a Spark DropDownList component.
@see spark.components.DropDownList
@see spark.skins.spark.DropDownListSkin
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4
-->
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009" minWidth="21" minHeight="21">
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<!-- Layer 2: innerFill -->
<s:Rect id="innerFill" left="0" right="0" top="0" bottom="0" radiusX="0">
<s:fill>
<s:SolidColor color="0x9a9a9a" color.up="0x8a8a8a" />
</s:fill>
</s:Rect>
<!-- layer 8: arrow -->
<!--- The arrow graphic displayed in the anchor button. -->
<s:Path right="6" verticalCenter="0" id="arrow"
data="M 7.03 0.5 C 7.43 0.9 7.43 1.55 7.03 1.95 L 4.64 4.34 C 4.24 4.74 3.59 4.74 3.19 4.34 L 0.8 1.95 C 0.4 1.55 0.4 0.9 0.8 0.5 L 7.03 0.5 Z">
<s:fill>
<s:SolidColor color="0xFFFFFF" />
</s:fill>
</s:Path>
</s:Skin>
@@ -0,0 +1,92 @@
<?xml version="1.0" encoding="utf-8"?>
<!--
ADOBE SYSTEMS INCORPORATED
Copyright 2009 Adobe Systems Incorporated
All Rights Reserved.
NOTICE: Adobe permits you to use, modify, and distribute this file
in accordance with the terms of the license agreement accompanying it.
-->
<!--- The default skin class for the Spark DropDownList component.
The skin for the anchor button for a DropDownList component
is defined by the DropDownListButtonSkin class.
@see spark.components.DropDownList
@see spark.skins.spark.DropDownListButtonSkin
@langversion 3.0
@playerversion Flash 10
@playerversion AIR 1.5
@productversion Flex 4
-->
<s:Skin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009" alpha.disabled=".5">
<!-- host component -->
<fx:Metadata>
<![CDATA[
/**
* @copy spark.skins.spark.ApplicationSkin#hostComponent
*/
[HostComponent("spark.components.DropDownList")]
]]>
</fx:Metadata>
<s:states>
<s:State name="normal" />
<s:State name="open" />
<s:State name="disabled" />
</s:states>
<!---
The PopUpAnchor control that opens the drop-down list.
-->
<s:PopUpAnchor id="popUp" displayPopUp.normal="false" displayPopUp.open="true" includeIn="open"
left="0" right="0" top="0" bottom="0" itemDestructionPolicy="auto"
popUpPosition="below" popUpWidthMatchesAnchorWidth="true">
<!---
The drop down area of the skin.
This includes borders, background colors, scrollers, and filters.
-->
<s:Group id="dropDown" maxHeight="134" >
<!-- fill -->
<!---
Defines the appearance of drop-down list's background fill.
-->
<s:Rect id="background" left="0" right="0" top="0" bottom="0" >
<s:fill>
<!---
The color of the drop down's background fill.
The default color is 0xFFFFFF.
-->
<s:SolidColor id="bgFill" color="0x9a9a9a" />
</s:fill>
</s:Rect>
<s:Scroller id="scroller" left="0" top="0" right="0" bottom="0" hasFocusableChildren="false" minViewportInset="1">
<!---
The container for the data items in the drop-down list.
-->
<s:DataGroup id="dataGroup" itemRenderer="org.umbraco.desktopmediauploader.skins.DefaultItemRenderer">
<s:layout>
<s:VerticalLayout gap="0" horizontalAlign="contentJustify"/>
</s:layout>
</s:DataGroup>
</s:Scroller>
</s:Group>
</s:PopUpAnchor>
<!--- The anchor button used by the DropDownList. The default skin is DropDownListButtonSkin. -->
<s:Button id="openButton" left="0" right="0" top="0" bottom="0" focusEnabled="false"
skinClass="org.umbraco.desktopmediauploader.skins.HeaderDropDownListButtonSkin" />
<!--- The prompt area of the DropDownList. -->
<s:Label id="labelDisplay" verticalAlign="middle" maxDisplayedLines="1"
mouseEnabled="false" mouseChildren="false"
left="5" right="20" top="2" bottom="2" width="75" verticalCenter="1" />
</s:Skin>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="21" minHeight="21" alpha.disabled="0.5">
<!-- host component -->
<fx:Metadata>
<![CDATA[
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<mx:Image source="@Embed('assets/cross-grey.png')"
source.over="@Embed('assets/cross.png')"
/>
</s:SparkSkin>
@@ -0,0 +1,26 @@
<?xml version="1.0" encoding="utf-8"?>
<s:SparkSkin xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:fb="http://ns.adobe.com/flashbuilder/2009"
xmlns:mx="library://ns.adobe.com/flex/mx"
minWidth="21" minHeight="21" alpha.disabled="0.5">
<!-- host component -->
<fx:Metadata>
<![CDATA[
[HostComponent("spark.components.Button")]
]]>
</fx:Metadata>
<!-- states -->
<s:states>
<s:State name="up" />
<s:State name="over" />
<s:State name="down" />
<s:State name="disabled" />
</s:states>
<mx:Image source="@Embed('assets/power.png')"
source.over="@Embed('assets/power-over.png')"
/>
</s:SparkSkin>
@@ -0,0 +1,176 @@
package org.umbraco.desktopmediauploader.util
{
import flash.utils.ByteArray;
public class Base64
{
private static const _encodeChars:Vector.<int> = InitEncoreChar();
private static const _decodeChars:Vector.<int> = InitDecodeChar();
public static function encode(data:ByteArray):String
{
var out:ByteArray = new ByteArray();
//Presetting the length keep the memory smaller and optimize speed since there is no "grow" needed
out.length = (2 + data.length - ((data.length + 2) % 3)) * 4 / 3; //Preset length //1.6 to 1.5 ms
var i:int = 0;
var r:int = data.length % 3;
var len:int = data.length - r;
var c:int; //read (3) character AND write (4) characters
while (i < len)
{
//Read 3 Characters (8bit * 3 = 24 bits)
c = data[i++] << 16 | data[i++] << 8 | data[i++];
//Cannot optimize this to read int because of the positioning overhead. (as3 bytearray seek is slow)
//Convert to 4 Characters (6 bit * 4 = 24 bits)
c = (_encodeChars[c >>> 18] << 24) | (_encodeChars[c >>> 12 & 0x3f] << 16) | (_encodeChars[c >>> 6 & 0x3f] << 8 ) | _encodeChars[c & 0x3f];
//Optimization: On older and slower computer, do one write Int instead of 4 write byte: 1.5 to 0.71 ms
out.writeInt(c);
/*
out.writeByte(_encodeChars[c >> 18] );
out.writeByte(_encodeChars[c >> 12 & 0x3f]);
out.writeByte(_encodeChars[c >> 6 & 0x3f]);
out.writeByte(_encodeChars[c & 0x3f]);
*/
}
if (r == 1) //Need two "=" padding
{
//Read one char, write two chars, write padding
c = data[i];
c = (_encodeChars[c >>> 2] << 24) | (_encodeChars[(c & 0x03) << 4] << 16) | 61 << 8 | 61;
out.writeInt(c);
}
else if (r == 2) //Need one "=" padding
{
c = data[i++] << 8 | data[i];
c = (_encodeChars[c >>> 10] << 24) | (_encodeChars[c >>> 4 & 0x3f] << 16) | (_encodeChars[(c & 0x0f) << 2] << 8 ) | 61;
out.writeInt(c);
}
out.position = 0;
return out.readUTFBytes(out.length);
}
public static function decode(str:String):ByteArray
{
var c1:int;
var c2:int;
var c3:int;
var c4:int;
var i:int;
var len:int;
var out:ByteArray;
len = str.length;
i = 0;
out = new ByteArray();
var byteString:ByteArray = new ByteArray();
byteString.writeUTFBytes(str);
while (i < len)
{
//c1
do
{
c1 = _decodeChars[byteString[i++]];
} while (i < len && c1 == -1);
if (c1 == -1) break;
//c2
do
{
c2 = _decodeChars[byteString[i++]];
} while (i < len && c2 == -1);
if (c2 == -1) break;
out.writeByte((c1 << 2) | ((c2 & 0x30) >> 4));
//c3
do
{
c3 = byteString[i++];
if (c3 == 61) return out;
c3 = _decodeChars[c3];
} while (i < len && c3 == -1);
if (c3 == -1) break;
out.writeByte(((c2 & 0x0f) << 4) | ((c3 & 0x3c) >> 2));
//c4
do {
c4 = byteString[i++];
if (c4 == 61) return out;
c4 = _decodeChars[c4];
} while (i < len && c4 == -1);
if (c4 == -1) break;
out.writeByte(((c3 & 0x03) << 6) | c4);
}
return out;
}
public static function encodeString(value : String) : String
{
const source : ByteArray = new ByteArray();
source.writeUTFBytes(value);
return encode(source);
}
public static function decodeToString(str : String) : String
{
return decode(str).toString();
}
public static function InitEncoreChar() : Vector.<int>
{
var encodeChars:Vector.<int> = new Vector.<int>();
// We could push the number directly, but i think it's nice to see the characters (with no overhead on encode/decode)
var chars:String = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
for (var i:int = 0; i < 64; i++)
{
encodeChars.push(chars.charCodeAt(i));
}
/*
encodeChars.push(
65, 66, 67, 68, 69, 70, 71, 72,
73, 74, 75, 76, 77, 78, 79, 80,
81, 82, 83, 84, 85, 86, 87, 88,
89, 90, 97, 98, 99, 100, 101, 102,
103, 104, 105, 106, 107, 108, 109, 110,
111, 112, 113, 114, 115, 116, 117, 118,
119, 120, 121, 122, 48, 49, 50, 51,
52, 53, 54, 55, 56, 57, 43, 47);
*/
return encodeChars;
}
public static function InitDecodeChar() : Vector.<int>
{
var decodeChars:Vector.<int> = new Vector.<int>();
decodeChars.push(-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 62, -1, -1, -1, 63,
52, 53, 54, 55, 56, 57, 58, 59, 60, 61, -1, -1, -1, -1, -1, -1,
-1, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,
15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, -1, -1, -1, -1, -1,
-1, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40,
41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, -1, -1, -1, -1, -1
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,
-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1);
return decodeChars;
}
}
}
@@ -0,0 +1,47 @@
package org.umbraco.desktopmediauploader.util
{
import flash.display.Stage;
import flash.events.Event;
public class StageHelper
{
private static var _stage:Stage;
private static var _resizeListenerSet:Boolean = false;
[Bindable]
public static var stageWidth:int = 0;
[Bindable]
public static var stageHeight:int = 0;
public function StageHelper()
{ }
public static function set stage(value:Stage):void
{
_stage = value;
addResizeListener();
stage_resize();
}
private static function addResizeListener():void
{
if (_resizeListenerSet)
return;
if(!_stage)
return;
_stage.addEventListener(Event.RESIZE, stage_resize);
_resizeListenerSet = true;
}
private static function stage_resize(e:Event = null):void
{
stageWidth = _stage.stageWidth;
stageHeight = _stage.stageHeight;
}
}
}
@@ -0,0 +1,16 @@
package org.umbraco.desktopmediauploader.util
{
import mx.utils.*;
public class StringHelper
{
public static function cleanXmlString(str:String):String
{
// Remove any Byte Order Markers
str = str.replace(String.fromCharCode(65279), "");
// Trim whitespace
return StringUtil.trim(str);
}
}
}
@@ -0,0 +1,206 @@
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="100%" height="100%"
show="vwSignIn_ShowHandler(event);">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.net.*;
import org.umbraco.desktopmediauploader.util.*;
import mx.controls.Alert;
import mx.managers.*;
import mx.events.FlexEvent;
public function init():void
{
NativeApplication.nativeApplication.addEventListener(BrowserInvokeEvent.BROWSER_INVOKE, app_BrowserInvoke);
reset();
if(chkAutoSignIn.selected)
{
doSignIn();
}
}
protected function vwSignIn_ShowHandler(event:FlexEvent):void
{
reset();
}
protected function app_BrowserInvoke(e:BrowserInvokeEvent):void
{
var encLaunchArg:String = unescape(e.arguments[0]);
var launchArg:String = Base64.decodeToString(encLaunchArg);
var launchArgs:Array = launchArg.split(";");
Model.url = parseUrl(launchArgs[0]);
Model.username = launchArgs[1];
Model.password = "";
Model.ticket = launchArgs[2];
// Ok, time to hit the server
CursorManager.setBusyCursor();
this.enabled = false;
// Authenticate credentials
// NB: As every request authenticates anyway, just load config
// and if it fails, assume login was invalid
DmuRequest.makeRequest(DmuRequestAction.CONFIG,
configRequest_Success,
configRequest_Error);
}
protected function reset():void
{
chkRememberMe.selected = (getEncryptedValue("dmu_rememberme") == "true");
chkRememberPassword.selected = (getEncryptedValue("dmu_rememberpassword") == "true");
chkAutoSignIn.selected = (getEncryptedValue("dmu_autosignin") == "true");
if (chkRememberMe.selected)
{
txtUrl.text = getEncryptedValue("dmu_url");
txtUsername.text = getEncryptedValue("dmu_username");
if (chkRememberPassword.selected)
{
txtPassword.text = getEncryptedValue("dmu_password");
}
}
}
protected function txtPassword_Enter(event:Event):void
{
doSignIn();
}
protected function btnSignIn_clickHandler(event:MouseEvent=null):void
{
doSignIn();
}
protected function configRequest_Success(event:DmuRequestEvent):void
{
this.enabled = true;
CursorManager.removeBusyCursor();
var xml:XML = event.result;
// Store config
Model.displayName = xml.displayName;
Model.umbracoPath = xml.umbracoPath;
Model.maxRequestLength = Number(xml.maxRequestLength);
// Remember login
if(!Model.ticket || Model.ticket == "")
{
setEncryptedValue("dmu_url", (chkRememberMe.selected)? Model.url : null);
setEncryptedValue("dmu_username", (chkRememberMe.selected)? Model.username : null);
setEncryptedValue("dmu_password", (chkRememberMe.selected && chkRememberPassword.selected) ? Model.password : null);
setEncryptedValue("dmu_rememberme", chkRememberMe.selected.toString());
setEncryptedValue("dmu_rememberpassword", chkRememberPassword.selected.toString());
setEncryptedValue("dmu_autosignin", chkAutoSignIn.selected.toString());
}
dispatchEvent(new SignedInEvent(SignedInEvent.SIGNED_IN));
}
protected function configRequest_Error(event:Event):void
{
this.enabled = true;
CursorManager.removeBusyCursor();
Alert.show("Invalid login", "Ooops!");
}
private function doSignIn():void
{
Model.url = parseUrl(txtUrl.text);
Model.username = txtUsername.text;
Model.password = txtPassword.text;
Model.ticket = "";
// Ok, time to hit the server
CursorManager.setBusyCursor();
this.enabled = false;
// Authenticate credentials
// NB: As every request authenticates anyway, just load config
// and if it fails, assume login was invalid
DmuRequest.makeRequest(DmuRequestAction.CONFIG,
configRequest_Success,
configRequest_Error);
}
private function parseUrl(url:String):String
{
var urlPattern:RegExp = /^((?P<scheme>https?):\/\/)(?P<hostname>[^:\/\s]+)(?P<port>:([^\/]*))?((?P<path>(\/\w+)*\/)(?P<filename>[-\w.]+[^#?\s]*)?(?P<query>\?([^#]*))?(?P<fragment>#(.*))?)?$/gi;
var result:Array = urlPattern.exec(url.toLowerCase());
if (result != null && result.length > 0)
{
var parsedUrl:String = result.scheme + "://" + result.hostname + result.port + result.path + result.filename;
while(parsedUrl.substr(parsedUrl.length - 1) == "/")
{
parsedUrl = parsedUrl.substr(0, parsedUrl.length - 1);
}
return parsedUrl;
}
return url;
}
private function setEncryptedValue(key:String, value:String):void
{
if (value != null)
{
var data:ByteArray = new ByteArray();
data.writeUTFBytes(value);
EncryptedLocalStore.setItem(key, data);
}
else
{
EncryptedLocalStore.removeItem(key);
}
}
private function getEncryptedValue(key:String):String
{
var data:ByteArray = EncryptedLocalStore.getItem(key);
return (data != null) ? data.readUTFBytes(data.length) : null;
}
]]>
</fx:Script>
<fx:Metadata>
[Event(name="signedIn", type="org.umbraco.desktopmediauploader.events.SignedInEvent")]
</fx:Metadata>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<mx:Image horizontalCenter="0" source="@Embed('assets/logo.png')" verticalCenter="-145"/>
<s:VGroup id="grpSignInForm" height="200" bottom="105" left="25" right="25">
<s:Label text="URL" fontWeight="bold"/>
<s:TextInput width="100%" id="txtUrl" text="@{Model.url}"/>
<s:Label text="Username" fontWeight="bold"/>
<s:TextInput width="100%" id="txtUsername" text="@{Model.username}"/>
<s:Label text="Password" fontWeight="bold"/>
<s:TextInput width="100%" id="txtPassword" displayAsPassword="true" text="@{Model.password}" enter="txtPassword_Enter(event)" />
<s:CheckBox label="Remember Me" id="chkRememberMe" change="(!chkRememberMe.selected) ? chkRememberPassword.selected = chkAutoSignIn.selected = false : null"/>
<s:CheckBox label="Remember Password" id="chkRememberPassword" enabled="{chkRememberMe.selected}" change="(!chkRememberPassword.selected) ? chkAutoSignIn.selected = false : null"/>
<s:CheckBox label="Sign In Automaticaly" id="chkAutoSignIn" enabled="{chkRememberPassword.selected}"/>
</s:VGroup>
<mx:Button label="Sign In" bottom="25" id="btnSignIn" click="btnSignIn_clickHandler(event)" left="25" right="25" height="35" useHandCursor="true" buttonMode="true" styleName=""/>
</s:Group>
@@ -0,0 +1,331 @@
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:components="org.umbraco.desktopmediauploader.components.*"
width="100%" height="100%"
creationComplete="vwUpload_CreationCompleteHandler(event)"
show="vwUpload_ShowHandler(event);">
<s:layout>
<s:BasicLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import org.umbraco.desktopmediauploader.components.*;
import org.umbraco.desktopmediauploader.events.*;
import org.umbraco.desktopmediauploader.net.*;
import org.umbraco.desktopmediauploader.util.*;
import flash.desktop.*;
import flash.events.*;
import flash.filesystem.File;
import flash.net.*;
import mx.collections.Sort;
import mx.collections.SortField;
import mx.controls.Alert;
import mx.controls.Menu;
import mx.core.ScrollPolicy;
import mx.events.FlexEvent;
import mx.managers.*;
import spark.events.IndexChangeEvent;
[Bindable] public var currentUploadItem:UploadItem;
[Bindable] public var uploadItems:ArrayCollection;
[Bindable] private var uploading:Boolean = false;
protected function vwUpload_CreationCompleteHandler(event:FlexEvent):void
{
uploadItems = new ArrayCollection();
addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, vwUpload_DragEnter);
addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, vwUpload_DragDrop);
dmuStatus.addEventListener(Event.CANCEL, dmuStatus_Cancel);
}
protected function vwUpload_ShowHandler(event:FlexEvent):void
{
reset();
}
private function vwUpload_DragEnter(e:NativeDragEvent) :void
{
var valid:Boolean = false;
if(e.clipboard.hasFormat(ClipboardFormats.FILE_LIST_FORMAT))
{
// Only allow drop if at least 1 file is valid
var files:Array = e.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
for each (var f:File in files)
{
if (isValidFile(f))
{
valid = true;
break;
}
}
if (valid)
NativeDragManager.acceptDragDrop(this);
}
}
private function vwUpload_DragDrop(e:NativeDragEvent) :void
{
var files:Array = e.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
addFilesToQueue(files);
// Sort alphabeticlly
var sf:SortField = new SortField("fullPath", true);
var s:Sort = new Sort();
s.fields = [sf];
uploadItems.sort = s;
uploadItems.refresh();
for(var i:int = 0; i < uploadItems.length; i++)
{
grpUploadItemContainer.addElement(uploadItems[i]);
}
}
private function reset():void
{
Model.currentFolder = undefined;
Model.folderId = undefined;
Model.folderName = undefined;
Model.folderPath = undefined;
uploading = false;
currentUploadItem == null;
dmuStatus_Cancel();
}
private function isValidFile(file:File, path:String = ""):Boolean
{
var queued:Boolean = false;
var i:int = uploadItems.length;
while(i--)
{
var uploadItem:UploadItem = uploadItems[i] as UploadItem;
if (uploadItem != null && uploadItem.file.name == file.name && uploadItem.path == path && uploadItem.file.size == file.size)
{
queued = true;
break;
}
}
// TODO: Handle .lnk files?
// TODO: What to do with zip files?
return (!file.isSymbolicLink &&
!file.isPackage &&
!file.isHidden &&
!queued &&
file.size <= (Model.maxRequestLength * 1024));
}
private function addFilesToQueue(files:Array, path:String = ""):void
{
for each (var f:File in files)
{
if(f.isDirectory)
{
addFilesToQueue(f.getDirectoryListing(), path + "/" + f.name)
}
else if (isValidFile(f, path))
{
addFileToQueue(FileReference(f), path);
}
}
}
private function addFileToQueue(file:FileReference, path:String):void
{
var uploadItem:UploadItem = new UploadItem();
uploadItem.file = file;
uploadItem.path = path;
uploadItem.addEventListener(Event.COMPLETE, uploadItem_Complete);
uploadItem.addEventListener(Event.CANCEL, uploadItem_Cancel);
uploadItem.addEventListener(HTTPStatusEvent.HTTP_STATUS, uploadItem_Error);
uploadItem.addEventListener(IOErrorEvent.IO_ERROR, uploadItem_Error);
uploadItem.addEventListener(SecurityErrorEvent.SECURITY_ERROR, uploadItem_Error);
grpUploadItemContainer.addElement(uploadItem);
uploadItems.addItem(uploadItem);
}
protected function ddlConnectedTo_Close(e:Event):void
{
var oldIndex:Number = ddlConnectedTo.selectedIndex;
ddlConnectedTo.selectedIndex = -1;
if (oldIndex >= 0)
{
switch(ddlConnectedTo.dataProvider[oldIndex])
{
case "Launch Site":
navigateToURL(new URLRequest(Model.url));
break;
case "Launch Admin":
navigateToURL(new URLRequest(Model.url + Model.umbracoPath + "/"));
break;
}
}
}
protected function btnSignOut_Click(e:Event):void
{
if (uploading)
Alert.show("Unable to sign out whilst uploading files.", "Ooops!");
else
dispatchEvent(new SignedOutEvent(SignedOutEvent.SIGNED_OUT));
}
protected function uploadItem_Complete(e:Event):void
{
uploadItem_Cancel(e);
uploading = false;
currentUploadItem == null;
if (uploadItems.length > 0)
btnUpload_Click();
else
Alert.show("Upload complete.", "Woo hoo!");
}
protected function uploadItem_Cancel(e:Event):void
{
var uploadItem:UploadItem = e.target as UploadItem;
var i:uint = uploadItems.length;
while(i--)
{
var uploadItem2:UploadItem = uploadItems[i] as UploadItem;
if(uploadItem2.file.name == uploadItem.file.name && uploadItem2.path == uploadItem.path)
{
grpUploadItemContainer.removeElement(uploadItem);
uploadItems.removeItemAt(i);
break;
}
}
}
protected function uploadItem_Error(e:Event):void
{
// TODO: Move item to bottom?
}
protected function dmuStatus_Cancel(event:Event = null):void
{
var i:uint = uploadItems.length;
while(i--)
{
uploadItems[i].cancel();
}
}
protected function btnUploadTo_Click(event:MouseEvent):void
{
var win:FolderPickerDialog = PopUpManager.createPopUp(this, FolderPickerDialog, true) as FolderPickerDialog;
PopUpManager.centerPopUp(win);
}
protected function btnUpload_Click(event:MouseEvent = null):void
{
var uploadItem:UploadItem;
var i:int;
if (!uploading)
{
uploading = false;
currentUploadItem = null;
for(i = 0; i < uploadItems.length; i++)
{
uploadItem = uploadItems[i] as UploadItem;
if (!uploadItem.uploaded)
{
currentUploadItem = uploadItem;
currentUploadItem.upload();
uploading = true;
break;
}
}
}
else
{
for(i = 0; i < uploadItems.length; i++)
{
uploadItem = uploadItems[i] as UploadItem;
if (!uploadItem.uploaded)
{
uploadItem.pause();
}
}
uploading = false;
currentUploadItem = null;
}
}
]]>
</fx:Script>
<fx:Metadata>
[Event(name="signedOut", type="org.umbraco.desktopmediauploader.events.SignedOutEvent")]
</fx:Metadata>
<fx:Declarations>
<fx:Array id="uploadMenuItems">
<fx:Object label="Clear Queue" />
<fx:Object type="separator" />
<fx:Object label="Overwrite existing files" type="check" />
<fx:Object label="Auto extract zip files" type="check" />
</fx:Array>
</fx:Declarations>
<s:BorderContainer top="0" left="0" right="0" height="70" styleName="header">
<mx:Image source="@Embed('assets/icon-48.png')" x="10" y="10" />
<mx:Label id="lblName" text="{Model.displayName}" left="64" y="10" right="50" truncateToFit="true" minWidth="0" />
<s:DropDownList id="ddlConnectedTo" prompt="{Model.url}" close="ddlConnectedTo_Close(event)" x="65" y="33" typicalItem="{Model.url}" maxWidth="{StageHelper.stageWidth - 90}" open="ddlConnectedTo.scroller.setStyle('horizontalScrollPolicy', ScrollPolicy.OFF);" useHandCursor="true" buttonMode="true">
<mx:ArrayCollection>
<fx:String>Launch Site</fx:String>
<fx:String>Launch Admin</fx:String>
</mx:ArrayCollection>
</s:DropDownList>
<s:Button id="btnSignOut" width="13" height="15" top="11" right="25" useHandCursor="true" buttonMode="true" styleName="signOutButton" click="btnSignOut_Click(event)" />
</s:BorderContainer>
<s:VGroup top="90" left="25" right="25" gap="5">
<s:Label text="Upload files to..."/>
<s:Button id="btnUploadTo" label="{(Model.folderPath) ? Model.folderPath.replace(/\//g, ' ') : 'Please select...'}" width="100%" click="btnUploadTo_Click(event)" creationComplete="btnUploadTo.labelDisplay.setStyle('textAlign','left')" height="25" useHandCursor="true" buttonMode="true" />
</s:VGroup>
<s:BorderContainer top="150" left="25" right="25" bottom="100" borderColor="#CCCCCC" backgroundColor="#FFFFFF">
<s:Scroller width="100%" height="100%">
<s:Group id="grpUploadItemContainer">
<s:layout>
<s:VerticalLayout paddingLeft="5" paddingRight="5" paddingTop="5" paddingBottom="5" gap="5"/>
</s:layout>
<components:StatusItem id="dmuStatus" visible="{uploadItems.length &gt; 0}" includeInLayout="{uploadItems.length &gt; 0}" totalItems="{uploadItems.length}" />
<s:Label text="Drag Files and Folders Here To Upload" verticalAlign="middle" textAlign="center"
width="100%" height="100%" fontSize="20" color="#CCCCCC" id="lblInstructions"
paddingLeft="20" paddingRight="20" paddingTop="20" paddingBottom="20"
visible="{uploadItems.length == 0}" includeInLayout="{uploadItems.length == 0}"/>
</s:Group>
</s:Scroller>
</s:BorderContainer>
<s:CheckBox x="25" bottom="73" label="Overwrite existing files with the same filename?" id="chkReplace" selected="@{Model.replaceExisting}" color="#333333"/>
<mx:Button id="btnUpload" label="{!uploading ? 'Upload' : 'Cancel'}" useHandCursor="{btnUpload.enabled}" buttonMode="{btnUpload.enabled}" bottom="25" enabled="{uploadItems.length > 0 &amp;&amp; Model.folderId}" styleName="orange" height="35" left="25" right="25" click="btnUpload_Click(event)"/>
</s:Group>
@@ -0,0 +1,36 @@
using System.Reflection;
using System.Runtime.CompilerServices;
using System.Runtime.InteropServices;
// General Information about an assembly is controlled through the following
// set of attributes. Change these attribute values to modify the information
// associated with an assembly.
[assembly: AssemblyTitle("SqlCE4Umbraco")]
[assembly: AssemblyDescription("")]
[assembly: AssemblyConfiguration("")]
[assembly: AssemblyCompany("Microsoft")]
[assembly: AssemblyProduct("SqlCE4Umbraco")]
[assembly: AssemblyCopyright("Copyright © Microsoft 2010")]
[assembly: AssemblyTrademark("")]
[assembly: AssemblyCulture("")]
// Setting ComVisible to false makes the types in this assembly not visible
// to COM components. If you need to access a type in this assembly from
// COM, set the ComVisible attribute to true on that type.
[assembly: ComVisible(false)]
// The following GUID is for the ID of the typelib if this project is exposed to COM
[assembly: Guid("04436b0a-1dc6-4ee1-9d96-4c04f1a9f429")]
// Version information for an assembly consists of the following four values:
//
// Major Version
// Minor Version
// Build Number
// Revision
//
// You can specify all the values or you can default the Build and Revision Numbers
// by using the '*' as shown below:
// [assembly: AssemblyVersion("1.0.*")]
[assembly: AssemblyVersion("1.0.0.0")]
[assembly: AssemblyFileVersion("1.0.0.0")]
+985
View File
@@ -0,0 +1,985 @@
/*******************************************************************************************
Umbraco database installation script for SQL Server CE 4
IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
Database version: 4.1.0.0
Please increment this version number if ANY change is made to this script,
so compatibility with scripts for other database systems can be verified easily.
The first 3 digits depict the Umbraco version, the last digit is the database version.
(e.g. version 4.0.0.3 means "Umbraco version 4.0.0, database version 3")
Check-in policy: only commit this script if
* you ran the Umbraco installer completely;
* you ran it on the targetted database system;
* you ran the Runway and Module installations;
* you were able to browse the Boost site;
* you were able to open the Umbraco administration panel;
* you have documented the code change in this script;
* you have incremented the version number in this script.
IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
********************************************************************************************/
CREATE TABLE [umbracoRelation]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[parentId] [int] NOT NULL,
[childId] [int] NOT NULL,
[relType] [int] NOT NULL,
[datetime] [datetime] NOT NULL CONSTRAINT [DF_umbracoRelation_datetime] DEFAULT (getdate()),
[comment] [nvarchar] (1000) NOT NULL
)
;
ALTER TABLE [umbracoRelation] ADD CONSTRAINT [PK_umbracoRelation] PRIMARY KEY ([id])
;
CREATE TABLE [cmsDocument]
(
[nodeId] [int] NOT NULL,
[published] [bit] NOT NULL,
[documentUser] [int] NOT NULL,
[versionId] [uniqueidentifier] NOT NULL,
[text] [nvarchar] (255) NOT NULL,
[releaseDate] [datetime] NULL,
[expireDate] [datetime] NULL,
[updateDate] [datetime] NOT NULL CONSTRAINT [DF_cmsDocument_updateDate] DEFAULT (getdate()),
[templateId] [int] NULL,
[alias] [nvarchar] (255) NULL ,
[newest] [bit] NOT NULL CONSTRAINT [DF_cmsDocument_newest] DEFAULT (0)
)
;
ALTER TABLE [cmsDocument] ADD CONSTRAINT [PK_cmsDocument] PRIMARY KEY ([versionId])
;
CREATE TABLE [umbracoLog]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[userId] [int] NOT NULL,
[NodeId] [int] NOT NULL,
[Datestamp] [datetime] NOT NULL CONSTRAINT [DF_umbracoLog_Datestamp] DEFAULT (getdate()),
[logHeader] [nvarchar] (50) NOT NULL,
[logComment] [nvarchar] (1000) NULL
)
;
ALTER TABLE [umbracoLog] ADD CONSTRAINT [PK_umbracoLog] PRIMARY KEY ([id])
;
/* TABLES ARE NEVER USED, REMOVED FOR 4.1
CREATE TABLE [umbracoUserGroup]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[userGroupName] [nvarchar] (255) NOT NULL
)
;
ALTER TABLE [umbracoUserGroup] ADD CONSTRAINT [PK_userGroup] PRIMARY KEY ([id])
;
CREATE TABLE [umbracoUser2userGroup]
(
[user] [int] NOT NULL,
[userGroup] [int] NOT NULL
)
;
ALTER TABLE [umbracoUser2userGroup] ADD CONSTRAINT [PK_user2userGroup] PRIMARY KEY ([user], [userGroup])
;
*/
CREATE TABLE [umbracoApp]
(
[sortOrder] [tinyint] NOT NULL CONSTRAINT [DF_app_sortOrder] DEFAULT (0),
[appAlias] [nvarchar] (50) NOT NULL,
[appIcon] [nvarchar] (255) NOT NULL,
[appName] [nvarchar] (255) NOT NULL,
[appInitWithTreeAlias] [nvarchar] (255) NULL
)
;
ALTER TABLE [umbracoApp] ADD CONSTRAINT [PK_umbracoApp] PRIMARY KEY ([appAlias])
;
CREATE TABLE [cmsPropertyData]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[contentNodeId] [int] NOT NULL,
[versionId] [uniqueidentifier] NULL,
[propertytypeid] [int] NOT NULL,
[dataInt] [int] NULL,
[dataDate] [datetime] NULL,
[dataNvarchar] [nvarchar] (500) NULL,
[dataNtext] [ntext] NULL
)
;
ALTER TABLE [cmsPropertyData] ADD CONSTRAINT [PK_cmsPropertyData] PRIMARY KEY ([id])
;
CREATE INDEX [IX_cmsPropertyData] ON [cmsPropertyData] ([id])
;
CREATE TABLE [cmsContent]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[nodeId] [int] NOT NULL,
[contentType] [int] NOT NULL
)
;
ALTER TABLE [cmsContent] ADD CONSTRAINT [PK_cmsContent] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsContentType]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[nodeId] [int] NOT NULL,
[alias] [nvarchar] (255) NULL,
[icon] [nvarchar] (255) NULL
)
;
ALTER TABLE [cmsContentType] ADD CONSTRAINT [PK_cmsContentType] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsMacroPropertyType]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[macroPropertyTypeAlias] [nvarchar] (50) NULL,
[macroPropertyTypeRenderAssembly] [nvarchar] (255) NULL,
[macroPropertyTypeRenderType] [nvarchar] (255) NULL,
[macroPropertyTypeBaseType] [nvarchar] (255) NULL
)
;
ALTER TABLE [cmsMacroPropertyType] ADD CONSTRAINT [PK_macroPropertyType] PRIMARY KEY ([id])
;
/* TABLE IS NEVER USED, REMOVED FOR 4.1
CREATE TABLE [umbracoStylesheetProperty]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[stylesheetPropertyEditor] [bit] NOT NULL CONSTRAINT [DF_stylesheetProperty_stylesheetPropertyEditor] DEFAULT (0),
[stylesheet] [int] NOT NULL,
[stylesheetPropertyAlias] [nvarchar] (50) NULL,
[stylesheetPropertyName] [nvarchar] (255) NULL,
[stylesheetPropertyValue] [nvarchar] (400) NULL
)
;
ALTER TABLE [umbracoStylesheetProperty] ADD CONSTRAINT [PK_stylesheetProperty] PRIMARY KEY ([id])
;
*/
CREATE TABLE [cmsTab]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[contenttypeNodeId] [int] NOT NULL,
[text] [nvarchar] (255) NOT NULL,
[sortorder] [int] NOT NULL
)
;
ALTER TABLE [cmsTab] ADD CONSTRAINT [PK_cmsTab] PRIMARY KEY ([id])
;
CREATE TABLE [cmsTemplate]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[nodeId] [int] NOT NULL,
[master] [int] NULL,
[alias] [nvarchar] (100) NULL,
[design] [ntext] NOT NULL
)
;
ALTER TABLE [cmsTemplate] ADD CONSTRAINT [PK_templates] PRIMARY KEY ([pk])
;
CREATE TABLE [umbracoUser2app]
(
[user] [int] NOT NULL,
[app] [nvarchar] (50) NOT NULL
)
;
ALTER TABLE [umbracoUser2app] ADD CONSTRAINT [PK_user2app] PRIMARY KEY ([user], [app])
;
CREATE TABLE [umbracoUserType]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[userTypeAlias] [nvarchar] (50) NULL,
[userTypeName] [nvarchar] (255) NOT NULL,
[userTypeDefaultPermissions] [nvarchar] (50) NULL
)
;
ALTER TABLE [umbracoUserType] ADD CONSTRAINT [PK_userType] PRIMARY KEY ([id])
;
CREATE TABLE [umbracoUser]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[userDisabled] [bit] NOT NULL CONSTRAINT [DF_umbracoUser_userDisabled] DEFAULT (0),
[userNoConsole] [bit] NOT NULL CONSTRAINT [DF_umbracoUser_userNoConsole] DEFAULT (0),
[userType] [int] NOT NULL,
[startStructureID] [int] NOT NULL,
[startMediaID] [int] NULL,
[userName] [nvarchar] (255) NOT NULL,
[userLogin] [nvarchar] (125) NOT NULL,
[userPassword] [nvarchar] (125) NOT NULL,
[userEmail] [nvarchar] (255) NOT NULL,
[userDefaultPermissions] [nvarchar] (50) NULL,
[userLanguage] [nvarchar] (10) NULL
)
;
ALTER TABLE [umbracoUser] ADD CONSTRAINT [PK_user] PRIMARY KEY ([id])
;
CREATE TABLE [cmsDocumentType]
(
[contentTypeNodeId] [int] NOT NULL,
[templateNodeId] [int] NOT NULL,
[IsDefault] [bit] NOT NULL CONSTRAINT [DF_cmsDocumentType_IsDefault] DEFAULT (0)
)
;
ALTER TABLE [cmsDocumentType] ADD CONSTRAINT [PK_cmsDocumentType] PRIMARY KEY ([contentTypeNodeId], [templateNodeId])
;
CREATE TABLE [cmsMemberType]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[NodeId] [int] NOT NULL,
[propertytypeId] [int] NOT NULL,
[memberCanEdit] [bit] NOT NULL CONSTRAINT [DF_cmsMemberType_memberCanEdit] DEFAULT (0),
[viewOnProfile] [bit] NOT NULL CONSTRAINT [DF_cmsMemberType_viewOnProfile] DEFAULT (0)
)
;
ALTER TABLE [cmsMemberType] ADD CONSTRAINT [PK_cmsMemberType] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsMember]
(
[nodeId] [int] NOT NULL,
[Email] [nvarchar] (1000) NOT NULL CONSTRAINT [DF_cmsMember_Email] DEFAULT (''),
[LoginName] [nvarchar] (1000) NOT NULL CONSTRAINT [DF_cmsMember_LoginName] DEFAULT (''),
[Password] [nvarchar] (1000) NOT NULL CONSTRAINT [DF_cmsMember_Password] DEFAULT ('')
)
;
CREATE TABLE [umbracoNode]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[trashed] [bit] NOT NULL CONSTRAINT [DF_umbracoNode_trashed] DEFAULT (0),
[parentID] [int] NOT NULL,
[nodeUser] [int] NULL,
[level] [int] NOT NULL,
[path] [nvarchar] (150) NOT NULL,
[sortOrder] [int] NOT NULL,
[uniqueID] [uniqueidentifier] NULL,
[text] [nvarchar] (255) NULL,
[nodeObjectType] [uniqueidentifier] NULL,
[createDate] [datetime] NOT NULL CONSTRAINT [DF_umbracoNode_createDate] DEFAULT (getdate())
)
;
ALTER TABLE [umbracoNode] ADD CONSTRAINT [PK_structure] PRIMARY KEY ([id])
;
;
CREATE TABLE [cmsPropertyType]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[dataTypeId] [int] NOT NULL,
[contentTypeId] [int] NOT NULL,
[tabId] [int] NULL,
[Alias] [nvarchar] (255) NOT NULL,
[Name] [nvarchar] (255) NULL,
[helpText] [nvarchar] (1000) NULL,
[sortOrder] [int] NOT NULL CONSTRAINT [DF__cmsProper__sortO__1EA48E88] DEFAULT (0),
[mandatory] [bit] NOT NULL CONSTRAINT [DF__cmsProper__manda__2180FB33] DEFAULT (0),
[validationRegExp] [nvarchar] (255) NULL,
[Description] [nvarchar] (2000) NULL
)
;
ALTER TABLE [cmsPropertyType] ADD CONSTRAINT [PK_cmsPropertyType] PRIMARY KEY ([id])
;
CREATE TABLE [cmsMacroProperty]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[macroPropertyHidden] [bit] NOT NULL CONSTRAINT [DF_macroProperty_macroPropertyHidden] DEFAULT (0),
[macroPropertyType] [int] NOT NULL,
[macro] [int] NOT NULL,
[macroPropertySortOrder] [tinyint] NOT NULL CONSTRAINT [DF_macroProperty_macroPropertySortOrder] DEFAULT (0),
[macroPropertyAlias] [nvarchar] (50) NOT NULL,
[macroPropertyName] [nvarchar] (255) NOT NULL
)
;
ALTER TABLE [cmsMacroProperty] ADD CONSTRAINT [PK_macroProperty] PRIMARY KEY ([id])
;
CREATE TABLE [cmsMacro]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[macroUseInEditor] [bit] NOT NULL CONSTRAINT [DF_macro_macroUseInEditor] DEFAULT (0),
[macroRefreshRate] [int] NOT NULL CONSTRAINT [DF_macro_macroRefreshRate] DEFAULT (0),
[macroAlias] [nvarchar] (255) NOT NULL,
[macroName] [nvarchar] (255) NULL,
[macroScriptType] [nvarchar] (255) NULL,
[macroScriptAssembly] [nvarchar] (255) NULL,
[macroXSLT] [nvarchar] (255) NULL,
[macroCacheByPage] [bit] NOT NULL CONSTRAINT [DF_cmsMacro_macroCacheByPage] DEFAULT (1),
[macroCachePersonalized] [bit] NOT NULL CONSTRAINT [DF_cmsMacro_macroCachePersonalized] DEFAULT (0),
[macroDontRender] [bit] NOT NULL CONSTRAINT [DF_cmsMacro_macroDontRender] DEFAULT (0)
)
;
ALTER TABLE [cmsMacro] ADD CONSTRAINT [PK_macro] PRIMARY KEY ([id])
;
CREATE TABLE [cmsContentVersion]
(
[id] [int] NOT NULL IDENTITY(1, 1) PRIMARY KEY,
[ContentId] [int] NOT NULL,
[VersionId] [uniqueidentifier] NOT NULL,
[VersionDate] [datetime] NOT NULL CONSTRAINT [DF_cmsContentVersion_VersionDate] DEFAULT (getdate())
)
;
CREATE TABLE [umbracoAppTree]
(
[treeSilent] [bit] NOT NULL CONSTRAINT [DF_umbracoAppTree_treeSilent] DEFAULT (0),
[treeInitialize] [bit] NOT NULL CONSTRAINT [DF_umbracoAppTree_treeInitialize] DEFAULT (1),
[treeSortOrder] [tinyint] NOT NULL,
[appAlias] [nvarchar] (50) NOT NULL,
[treeAlias] [nvarchar] (150) NOT NULL,
[treeTitle] [nvarchar] (255) NOT NULL,
[treeIconClosed] [nvarchar] (255) NOT NULL,
[treeIconOpen] [nvarchar] (255) NOT NULL,
[treeHandlerAssembly] [nvarchar] (255) NOT NULL,
[treeHandlerType] [nvarchar] (255) NOT NULL,
[action] [nvarchar] (255) NULL
)
;
ALTER TABLE [umbracoAppTree] ADD CONSTRAINT [PK_umbracoAppTree] PRIMARY KEY ([appAlias], [treeAlias])
;
CREATE TABLE [cmsContentTypeAllowedContentType]
(
[Id] [int] NOT NULL,
[AllowedId] [int] NOT NULL
)
;
ALTER TABLE [cmsContentTypeAllowedContentType] ADD CONSTRAINT [PK_cmsContentTypeAllowedContentType] PRIMARY KEY ([Id], [AllowedId])
;
CREATE TABLE [cmsContentXml]
(
[nodeId] [int] NOT NULL,
[xml] [ntext] NOT NULL
)
;
ALTER TABLE [cmsContentXml] ADD CONSTRAINT [PK_cmsContentXml] PRIMARY KEY ([nodeId])
;
CREATE TABLE [cmsDataType]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[nodeId] [int] NOT NULL,
[controlId] [uniqueidentifier] NOT NULL,
[dbType] [nvarchar] (50) NOT NULL
)
;
ALTER TABLE [cmsDataType] ADD CONSTRAINT [PK_cmsDataType] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsDataTypePreValues]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[datatypeNodeId] [int] NOT NULL,
[value] [nvarchar] (255) NULL,
[sortorder] [int] NOT NULL,
[alias] [nvarchar] (50) NULL
)
;
ALTER TABLE [cmsDataTypePreValues] ADD CONSTRAINT [PK_cmsDataTypePreValues] PRIMARY KEY ([id])
;
CREATE TABLE [cmsDictionary]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[id] [uniqueidentifier] NOT NULL,
[parent] [uniqueidentifier] NOT NULL,
[key] [nvarchar] (1000) NOT NULL
)
;
ALTER TABLE [cmsDictionary] ADD CONSTRAINT [PK_cmsDictionary] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsLanguageText]
(
[pk] [int] NOT NULL IDENTITY(1, 1),
[languageId] [int] NOT NULL,
[UniqueId] [uniqueidentifier] NOT NULL,
[value] [nvarchar] (1000) NOT NULL
)
;
ALTER TABLE [cmsLanguageText] ADD CONSTRAINT [PK_cmsLanguageText] PRIMARY KEY ([pk])
;
CREATE TABLE [cmsMember2MemberGroup]
(
[Member] [int] NOT NULL,
[MemberGroup] [int] NOT NULL
)
;
ALTER TABLE [cmsMember2MemberGroup] ADD CONSTRAINT [PK_cmsMember2MemberGroup] PRIMARY KEY ([Member], [MemberGroup])
;
CREATE TABLE [cmsStylesheet]
(
[nodeId] [int] NOT NULL,
[filename] [nvarchar] (100) NOT NULL,
[content] [ntext] NULL
)
;
CREATE TABLE [cmsStylesheetProperty]
(
[nodeId] [int] NOT NULL,
[stylesheetPropertyEditor] [bit] NULL,
[stylesheetPropertyAlias] [nvarchar] (50) NULL,
[stylesheetPropertyValue] [nvarchar] (400) NULL
)
;
CREATE TABLE [umbracoDomains]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[domainDefaultLanguage] [int] NULL,
[domainRootStructureID] [int] NULL,
[domainName] [nvarchar] (255) NOT NULL
)
;
ALTER TABLE [umbracoDomains] ADD CONSTRAINT [PK_domains] PRIMARY KEY ([id])
;
CREATE TABLE [umbracoLanguage]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[languageISOCode] [nvarchar] (10) NULL,
[languageCultureName] [nvarchar] (100) NULL
)
;
ALTER TABLE [umbracoLanguage] ADD CONSTRAINT [PK_language] PRIMARY KEY ([id])
;
CREATE TABLE [umbracoRelationType]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[dual] [bit] NOT NULL,
[parentObjectType] [uniqueidentifier] NOT NULL,
[childObjectType] [uniqueidentifier] NOT NULL,
[name] [nvarchar] (255) NOT NULL,
[alias] [nvarchar] (100) NULL
)
;
ALTER TABLE [umbracoRelationType] ADD CONSTRAINT [PK_umbracoRelationType] PRIMARY KEY ([id])
;
/* TABLE IS NEVER USED, REMOVED FOR 4.1
CREATE TABLE [umbracoStylesheet]
(
[nodeId] [int] NOT NULL,
[filename] [nvarchar] (100) NOT NULL,
[content] [ntext] NULL
)
;
ALTER TABLE [umbracoStylesheet] ADD CONSTRAINT [PK_umbracoStylesheet] PRIMARY KEY ([nodeId])
;
*/
CREATE TABLE [umbracoUser2NodeNotify]
(
[userId] [int] NOT NULL,
[nodeId] [int] NOT NULL,
[action] [nchar] (1) NOT NULL
)
;
ALTER TABLE [umbracoUser2NodeNotify] ADD CONSTRAINT [PK_umbracoUser2NodeNotify] PRIMARY KEY ([userId], [nodeId], [action])
;
CREATE TABLE [umbracoUser2NodePermission]
(
[userId] [int] NOT NULL,
[nodeId] [int] NOT NULL,
[permission] [nchar] (1) NOT NULL
)
;
ALTER TABLE [umbracoUser2NodePermission] ADD CONSTRAINT [PK_umbracoUser2NodePermission] PRIMARY KEY ([userId], [nodeId], [permission])
;
CREATE TABLE [umbracoUserLogins]
(
[contextID] [uniqueidentifier] NOT NULL,
[userID] [int] NOT NULL,
[timeout] [bigint] NOT NULL
)
;
ALTER TABLE [umbracoAppTree] ADD
CONSTRAINT [FK_umbracoAppTree_umbracoApp] FOREIGN KEY ([appAlias]) REFERENCES [umbracoApp] ([appAlias])
;
ALTER TABLE [cmsPropertyData] ADD
CONSTRAINT [FK_cmsPropertyData_umbracoNode] FOREIGN KEY ([contentNodeId]) REFERENCES [umbracoNode] ([id])
;
/* TABLES ARE NEVER USED, REMOVED FOR 4.1
ALTER TABLE [umbracoUser2userGroup] ADD
CONSTRAINT [FK_user2userGroup_user] FOREIGN KEY ([user]) REFERENCES [umbracoUser] ([id]),
CONSTRAINT [FK_user2userGroup_userGroup] FOREIGN KEY ([userGroup]) REFERENCES [umbracoUserGroup] ([id])
;
*/
ALTER TABLE [cmsDocument] ADD
CONSTRAINT [FK_cmsDocument_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsMacroProperty] ADD
CONSTRAINT [FK_umbracoMacroProperty_umbracoMacroPropertyType] FOREIGN KEY ([macroPropertyType]) REFERENCES [cmsMacroPropertyType] ([id])
;
ALTER TABLE [umbracoUser] ADD
CONSTRAINT [FK_user_userType] FOREIGN KEY ([userType]) REFERENCES [umbracoUserType] ([id])
;
ALTER TABLE [umbracoNode] ADD
CONSTRAINT [FK_umbracoNode_umbracoNode] FOREIGN KEY ([parentID]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsTemplate] ADD
CONSTRAINT [FK_cmsTemplate_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsContentType] ADD
CONSTRAINT [FK_cmsContentType_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsPropertyType] ADD
CONSTRAINT [FK_cmsPropertyType_cmsTab] FOREIGN KEY ([tabId]) REFERENCES [cmsTab] ([id])
;
ALTER TABLE [cmsContent] ADD
CONSTRAINT [FK_cmsContent_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [umbracoUser2app] ADD
CONSTRAINT [FK_umbracoUser2app_umbracoApp] FOREIGN KEY ([app]) REFERENCES [umbracoApp] ([appAlias]),
CONSTRAINT [FK_umbracoUser2app_umbracoUser] FOREIGN KEY ([user]) REFERENCES [umbracoUser] ([id])
;
ALTER TABLE [cmsTemplate] DROP CONSTRAINT [FK_cmsTemplate_umbracoNode]
;
ALTER TABLE [cmsPropertyType] DROP CONSTRAINT [FK_cmsPropertyType_cmsTab]
;
ALTER TABLE [cmsContent] DROP CONSTRAINT [FK_cmsContent_umbracoNode]
;
ALTER TABLE [cmsMacroProperty] DROP CONSTRAINT [FK_umbracoMacroProperty_umbracoMacroPropertyType]
;
ALTER TABLE [umbracoAppTree] DROP CONSTRAINT [FK_umbracoAppTree_umbracoApp]
;
ALTER TABLE [umbracoUser2app] DROP CONSTRAINT [FK_umbracoUser2app_umbracoApp]
;
ALTER TABLE [umbracoUser2app] DROP CONSTRAINT [FK_umbracoUser2app_umbracoUser]
;
ALTER TABLE [cmsPropertyData] DROP CONSTRAINT [FK_cmsPropertyData_umbracoNode]
;
/* TABLE IS NEVER USED, REMOVED FOR 4.1
ALTER TABLE [umbracoUser2userGroup] DROP CONSTRAINT [FK_user2userGroup_user]
;
ALTER TABLE [umbracoUser2userGroup] DROP CONSTRAINT [FK_user2userGroup_userGroup]
;
*/
ALTER TABLE [umbracoUser] DROP CONSTRAINT [FK_user_userType]
;
ALTER TABLE [cmsContentType] DROP CONSTRAINT [FK_cmsContentType_umbracoNode]
;
ALTER TABLE [cmsDocument] DROP CONSTRAINT [FK_cmsDocument_umbracoNode]
;
ALTER TABLE [umbracoNode] DROP CONSTRAINT [FK_umbracoNode_umbracoNode]
;
!!!SET IDENTITY_INSERT [umbracoNode] ON
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-92, 0, -1, 0, 11, N'-1,-92', 37, 'f0bc4bfb-b499-40d6-ba86-058885a5178c', N'Label', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-90, 0, -1, 0, 11, N'-1,-90', 35, '84c6b441-31df-4ffe-b67e-67d5bc3ae65a', N'Upload', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-89, 0, -1, 0, 11, N'-1,-89', 34, 'c6bac0dd-4ab9-45b1-8e30-e4b619ee5da3', N'Textbox multiple', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-88, 0, -1, 0, 11, N'-1,-88', 33, '0cc0eba1-9960-42c9-bf9b-60e150b429ae', N'Textstring', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-87, 0, -1, 0, 11, N'-1,-87', 32, 'ca90c950-0aff-4e72-b976-a30b1ac57dad', N'Richtext editor', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
||INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-51, 0, -1, 0, 11, N'-1,-51', 4, '2e6d3631-066e-44b8-aec4-96f09099b2b5', N'Numeric', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
||INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-49, 0, -1, 0, 11, N'-1,-49', 2, '92897bc6-a5f3-4ffe-ae27-f2e7e33dda49', N'True/false', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20040930 14:01:49.920')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-43, 0, -1, 0, 1, N'-1,-43', 2, 'fbaf13a8-4036-41f2-93a3-974f678c312a', N'Checkbox list', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:11:04.367')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-42, 0, -1, 0, 1, N'-1,-42', 2, '0b6a45e7-44ba-430d-9da5-4e46060b9e03', N'Dropdown', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:59.000')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-41, 0, -1, 0, 1, N'-1,-41', 2, '5046194e-4237-453c-a547-15db3a07c4e1', N'Date Picker', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:54.303')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-40, 0, -1, 0, 1, N'-1,-40', 2, 'bb5f57c9-ce2b-4bb9-b697-4caca783a805', N'Radiobox', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:49.253')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-39, 0, -1, 0, 1, N'-1,-39', 2, 'f38f0ac7-1d27-439c-9f3f-089cd8825a53', N'Dropdown multiple', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:44.480')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-38, 0, -1, 0, 1, N'-1,-38', 2, 'fd9f1447-6c61-4a7c-9595-5aa39147d318', N'Folder Browser', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:37.020')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-37, 0, -1, 0, 1, N'-1,-37', 2, '0225af17-b302-49cb-9176-b9f35cab9c17', N'Approved Color', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:30.580')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-36, 0, -1, 0, 1, N'-1,-36', 2, 'e4d66c0f-b935-4200-81f0-025f7256b89a', N'Date Picker with time', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20041015 14:10:23.007')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (-1, 0, -1, 0, 0, N'-1', 0, '916724a5-173d-4619-b97e-b9de133dd6f5', N'SYSTEM DATA: umbraco master root', 'ea7d8624-4cfe-4578-a871-24aa946bf34d', '20040930 14:01:49.920')
||INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1031, 0, -1, 1, 1, N'-1,1031', 2, 'f38bd2d7-65d0-48e6-95dc-87ce06ec2d3d', N'Folder', '4ea4382b-2f5a-4c2b-9587-ae9b3cf3602e', '20041201 00:13:40.743')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1032, 0, -1, 1, 1, N'-1,1032', 2, 'cc07b313-0843-4aa8-bbda-871c8da728c8', N'Image', '4ea4382b-2f5a-4c2b-9587-ae9b3cf3602e', '20041201 00:13:43.737')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1033, 0, -1, 1, 1, N'-1,1033', 2, '4c52d8ab-54e6-40cd-999c-7a5f24903e4d', N'File', '4ea4382b-2f5a-4c2b-9587-ae9b3cf3602e', '20041201 00:13:46.210')
||INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1034, 0, -1, 0, 1, N'-1,1034', 2, 'a6857c73-d6e9-480c-b6e6-f15f6ad11125', N'Content Picker', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:29.203')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1035, 0, -1, 0, 1, N'-1,1035', 2, '93929b9a-93a2-4e2a-b239-d99334440a59', N'Media Picker', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:36.143')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1036, 0, -1, 0, 1, N'-1,1036', 2, '2b24165f-9782-4aa3-b459-1de4a4d21f60', N'Member Picker', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:40.260')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1038, 0, -1, 0, 1, N'-1,1038', 2, '1251c96c-185c-4e9b-93f4-b48205573cbd', N'Simple Editor', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:55.250')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1039, 0, -1, 0, 1, N'-1,1039', 2, '06f349a9-c949-4b6a-8660-59c10451af42', N'Ultimate Picker', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:55.250')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1040, 0, -1, 0, 1, N'-1,1040', 2, '21e798da-e06e-4eda-a511-ed257f78d4fa', N'Related Links', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:55.250')
|INSERT INTO [umbracoNode] ([id], [trashed], [parentID], [nodeUser], [level], [path], [sortOrder], [uniqueID], [text], [nodeObjectType], [createDate]) VALUES (1041, 0, -1, 0, 1, N'-1,1041', 2, 'b6b73142-b9c1-4bf8-a16d-e1c23320b549', N'Tags', '30a2a501-1978-4ddb-a57b-f7efed43ba3c', '20060103 13:07:55.250')
|SET IDENTITY_INSERT [umbracoNode] OFF
;
!!!SET IDENTITY_INSERT [cmsContentType] ON
|INSERT INTO [cmsContentType] ([pk], [nodeId], [alias], [icon]) VALUES (532, 1031, N'Folder', N'folder.gif')
|INSERT INTO [cmsContentType] ([pk], [nodeId], [alias], [icon]) VALUES (533, 1032, N'Image', N'mediaPhoto.gif')
|INSERT INTO [cmsContentType] ([pk], [nodeId], [alias], [icon]) VALUES (534, 1033, N'File', N'mediaMulti.gif')
|SET IDENTITY_INSERT [cmsContentType] OFF
;
!!!SET IDENTITY_INSERT [umbracoUser] ON
|INSERT INTO [umbracoUser] ([id], [userDisabled], [userNoConsole], [userType], [startStructureID], [startMediaID], [userName], [userLogin], [userPassword], [userEmail], [userDefaultPermissions], [userLanguage]) VALUES (0, 0, 0, 1, -1, -1, N'Administrator', N'admin', N'default', N'', NULL, N'en')
|SET IDENTITY_INSERT [umbracoUser] OFF
;
!!!SET IDENTITY_INSERT [umbracoUserType] ON
|INSERT INTO [umbracoUserType] ([id], [userTypeAlias], [userTypeName], [userTypeDefaultPermissions]) VALUES (1, N'admin', N'Administrators', N'CADMOSKTPIURZ:')
|INSERT INTO [umbracoUserType] ([id], [userTypeAlias], [userTypeName], [userTypeDefaultPermissions]) VALUES (2, N'writer', N'Writer', N'CAH:')
|INSERT INTO [umbracoUserType] ([id], [userTypeAlias], [userTypeName], [userTypeDefaultPermissions]) VALUES (3, N'editor', N'Editors', N'CADMOSKTPUZ:')
|insert into umbracoUserType ([id], [userTypeAlias], [userTypeName], [userTypeDefaultPermissions]) values (4, N'translator', N'Translator', 'A')
|SET IDENTITY_INSERT [umbracoUserType] OFF
;
!!!INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'content')
|INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'developer')
|INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'media')
|INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'member')
|INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'settings')
|INSERT INTO [umbracoUser2app] ([user], [app]) VALUES (0, N'users')
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'content', 0, N'.traycontent', N'Indhold', N'content')
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'developer', 7, N'.traydeveloper', N'Developer', NULL)
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'media', 1, N'.traymedia', N'Mediearkiv', NULL)
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'member', 8, N'.traymember', N'Medlemmer', NULL)
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'settings', 6, N'.traysettings', N'Indstillinger', NULL)
|INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'users', 5, N'.trayusers', N'Brugere', NULL)
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'content', N'content', 1, 1, 0, N'Indhold', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadContent')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'cacheBrowser', 0, 1, 0, N'CacheBrowser', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadCache')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'CacheItem', 0, 0, 0, N'Cachebrowser', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadCacheItem')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'datatype', 0, 1, 1, N'Datatyper', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadDataTypes')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'macros', 0, 1, 2, N'Macros', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMacros')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'xslt', 0, 1, 5, N'XSLT Files', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadXslt')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'media', N'media', 0, 1, 0, N'Medier', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMedia')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'member', N'member', 0, 1, 0, N'Medlemmer', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMembers')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'member', N'memberGroup', 0, 1, 1, N'MemberGroups', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMemberGroups')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'member', N'memberType', 0, 1, 2, N'Medlemstyper', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMemberTypes')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType], [action]) VALUES (N'settings', N'dictionary', 0, 1, 3, N'Dictionary', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadDictionary', N'openDictionary()')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'languages', 0, 1, 4, N'Languages', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadLanguages')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'mediaTypes', 0, 1, 5, N'Medietyper', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadMediaTypes')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'nodeTypes', 0, 1, 6, N'Dokumenttyper', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadNodeTypes')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'stylesheetProperty', 0, 0, 0, N'Stylesheet Property', N'', N'', N'umbraco', N'loadStylesheetProperty')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'stylesheets', 0, 1, 0, N'Stylesheets', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadStylesheets')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'settings', N'templates', 0, 1, 1, N'Templates', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadTemplates')
|INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'users', N'users', 0, 1, 0, N'Brugere', N'.sprTreeFolder', N'.sprTreeFolder_o', N'umbraco', N'loadUsers')
;
!!!SET IDENTITY_INSERT [cmsMacroPropertyType] ON
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (3, N'mediaCurrent', N'umbraco.macroRenderings', N'media', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (4, N'contentSubs', N'umbraco.macroRenderings', N'content', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (5, N'contentRandom', N'umbraco.macroRenderings', N'content', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (6, N'contentPicker', N'umbraco.macroRenderings', N'content', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (13, N'number', N'umbraco.macroRenderings', N'numeric', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (14, N'bool', N'umbraco.macroRenderings', N'yesNo', N'Boolean')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (16, N'text', N'umbraco.macroRenderings', N'text', N'String')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (17, N'contentTree', N'umbraco.macroRenderings', N'content', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (18, N'contentType', N'umbraco.macroRenderings', N'contentTypeSingle', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (19, N'contentTypeMultiple', N'umbraco.macroRenderings', N'contentTypeMultiple', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (20, N'contentAll', N'umbraco.macroRenderings', N'content', N'Int32')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (21, N'tabPicker', N'umbraco.macroRenderings', N'tabPicker', N'String')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (22, N'tabPickerMultiple', N'umbraco.macroRenderings', N'tabPickerMultiple', N'String')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (23, N'propertyTypePicker', N'umbraco.macroRenderings', N'propertyTypePicker', N'String')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (24, N'propertyTypePickerMultiple', N'umbraco.macroRenderings', N'propertyTypePickerMultiple', N'String')
|INSERT INTO [cmsMacroPropertyType] ([id], [macroPropertyTypeAlias], [macroPropertyTypeRenderAssembly], [macroPropertyTypeRenderType], [macroPropertyTypeBaseType]) VALUES (25, N'textMultiLine', N'umbraco.macroRenderings', N'textMultiple', N'String')
|SET IDENTITY_INSERT [cmsMacroPropertyType] OFF
;
!!!SET IDENTITY_INSERT [cmsTab] ON
|INSERT INTO [cmsTab] ([id], [contenttypeNodeId], [text], [sortorder]) VALUES (3, 1032, N'Image', 1)
|INSERT INTO [cmsTab] ([id], [contenttypeNodeId], [text], [sortorder]) VALUES (4, 1033, N'File', 1)
|INSERT INTO [cmsTab] ([id], [contenttypeNodeId], [text], [sortorder]) VALUES (5, 1031, N'Contents', 1)
|SET IDENTITY_INSERT [cmsTab] OFF
;
!!!SET IDENTITY_INSERT [cmsPropertyType] ON
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (6, -90, 1032, 3, N'umbracoFile', N'Upload image', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (7, -92, 1032, 3, N'umbracoWidth', N'Width', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (8, -92, 1032, 3, N'umbracoHeight', N'Height', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (9, -92, 1032, 3, N'umbracoBytes', N'Size', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (10, -92, 1032, 3, N'umbracoExtension', N'Type', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (24, -90, 1033, 4, N'umbracoFile', N'Upload file', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (25, -92, 1033, 4, N'umbracoExtension', N'Type', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (26, -92, 1033, 4, N'umbracoBytes', N'Size', NULL, 0, 0, NULL, NULL)
|INSERT INTO [cmsPropertyType] ([id], [dataTypeId], [contentTypeId], [tabId], [Alias], [Name], [helpText], [sortOrder], [mandatory], [validationRegExp], [Description]) VALUES (27, -38, 1031, 5, N'contents', N'Contents:', NULL, 0, 0, NULL, NULL)
|SET IDENTITY_INSERT [cmsPropertyType] OFF
;
!!!SET IDENTITY_INSERT [umbracoLanguage] ON
|INSERT INTO [umbracoLanguage] ([id], [languageISOCode], [languageCultureName]) VALUES (1, N'en-US', N'en-US')
|SET IDENTITY_INSERT [umbracoLanguage] OFF
;
INSERT INTO [cmsContentTypeAllowedContentType] ([Id], [AllowedId]) VALUES (1031, 1031)
;
INSERT INTO [cmsContentTypeAllowedContentType] ([Id], [AllowedId]) VALUES (1031, 1032)
;
INSERT INTO [cmsContentTypeAllowedContentType] ([Id], [AllowedId]) VALUES (1031, 1033)
;
!!!SET IDENTITY_INSERT [cmsDataType] ON
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (4, -49, '38b352c1-e9f8-4fd8-9324-9a2eab06d97a', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (6, -51, '1413afcb-d19a-4173-8e9a-68288d2a73b8', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (8, -87, '5E9B75AE-FACE-41c8-B47E-5F4B0FD82F83', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (9, -88, 'ec15c1e5-9d90-422a-aa52-4f7622c63bea', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (10, -89, '67db8357-ef57-493e-91ac-936d305e0f2a', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (11, -90, '5032a6e6-69e3-491d-bb28-cd31cd11086c', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (12, -91, 'a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (13, -92, '6c738306-4c17-4d88-b9bd-6546f3771597', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (14, -36, 'b6fb1622-afa5-4bbf-a3cc-d9672a442222', 'Date')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (15, -37, 'f8d60f68-ec59-4974-b43b-c46eb5677985', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (16, -38, 'cccd4ae9-f399-4ed2-8038-2e88d19e810c', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (17, -39, '928639ed-9c73-4028-920c-1e55dbb68783', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (18, -40, 'a52c7c1c-c330-476e-8605-d63d3b84b6a6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (19, -41, '23e93522-3200-44e2-9f29-e61a6fcbb79a', 'Date')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (20, -42, 'a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (21, -43, 'b4471851-82b6-4c75-afa4-39fa9c6a75e9', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (22, -44, 'a3776494-0574-4d93-b7de-efdfdec6f2d1', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (23, -128, 'a52c7c1c-c330-476e-8605-d63d3b84b6a6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (24, -129, '928639ed-9c73-4028-920c-1e55dbb68783', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (25, -130, 'a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (26, -131, 'a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (27, -132, 'a74ea9c9-8e18-4d2a-8cf6-73c6206c5da6', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (28, -133, '6c738306-4c17-4d88-b9bd-6546f3771597', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (29, -134, '928639ed-9c73-4028-920c-1e55dbb68783', 'Nvarchar')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (30, -50, 'aaf99bb2-dbbe-444d-a296-185076bf0484', 'Date')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (31, 1034, '158aa029-24ed-4948-939e-c3da209e5fba', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (32, 1035, 'ead69342-f06d-4253-83ac-28000225583b', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (33, 1036, '39f533e4-0551-4505-a64b-e0425c5ce775', 'Integer')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (35, 1038, '60b7dabf-99cd-41eb-b8e9-4d2e669bbde9', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (36, 1039, 'cdbf0b5d-5cb2-445f-bc12-fcaaec07cf2c', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (37, 1040, '71b8ad1a-8dc2-425c-b6b8-faa158075e63', 'Ntext')
|INSERT INTO [cmsDataType] ([pk], [nodeId], [controlId], [dbType]) VALUES (38, 1041, '4023e540-92f5-11dd-ad8b-0800200c9a66', 'Ntext')
|SET IDENTITY_INSERT [cmsDataType] OFF
;
ALTER TABLE [cmsTemplate] ADD CONSTRAINT [FK_cmsTemplate_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsPropertyType] ADD CONSTRAINT [FK_cmsPropertyType_cmsTab] FOREIGN KEY ([tabId]) REFERENCES [cmsTab] ([id])
;
ALTER TABLE [cmsContent] ADD CONSTRAINT [FK_cmsContent_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsMacroProperty] ADD CONSTRAINT [FK_umbracoMacroProperty_umbracoMacroPropertyType] FOREIGN KEY ([macroPropertyType]) REFERENCES [cmsMacroPropertyType] ([id])
;
ALTER TABLE [umbracoAppTree] ADD CONSTRAINT [FK_umbracoAppTree_umbracoApp] FOREIGN KEY ([appAlias]) REFERENCES [umbracoApp] ([appAlias])
;
ALTER TABLE [umbracoUser2app] ADD CONSTRAINT [FK_umbracoUser2app_umbracoApp] FOREIGN KEY ([app]) REFERENCES [umbracoApp] ([appAlias])
;
ALTER TABLE [umbracoUser2app] ADD CONSTRAINT [FK_umbracoUser2app_umbracoUser] FOREIGN KEY ([user]) REFERENCES [umbracoUser] ([id])
;
ALTER TABLE [cmsPropertyData] ADD CONSTRAINT [FK_cmsPropertyData_umbracoNode] FOREIGN KEY ([contentNodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [umbracoUser] ADD CONSTRAINT [FK_user_userType] FOREIGN KEY ([userType]) REFERENCES [umbracoUserType] ([id])
;
ALTER TABLE [cmsContentType] ADD CONSTRAINT [FK_cmsContentType_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [cmsDocument] ADD CONSTRAINT [FK_cmsDocument_umbracoNode] FOREIGN KEY ([nodeId]) REFERENCES [umbracoNode] ([id])
;
ALTER TABLE [umbracoNode] ADD CONSTRAINT [FK_umbracoNode_umbracoNode] FOREIGN KEY ([parentID]) REFERENCES [umbracoNode] ([id])
;
!!!set identity_insert umbracoNode on
|insert into umbracoNode (id, trashed, parentID, nodeUser, level, path, sortOrder, uniqueID, text, nodeObjectType) values (-20, 0, -1, 0, 0, '-1,-20', 0, '0F582A79-1E41-4CF0-BFA0-76340651891A', 'Recycle Bin', '01BB7FF2-24DC-4C0C-95A2-C24EF72BBAC8')
|set identity_insert umbracoNode off
;
ALTER TABLE cmsDataTypePreValues ALTER COLUMN value NVARCHAR(2500) NULL
;
CREATE TABLE [cmsTask]
(
[closed] [bit] NOT NULL CONSTRAINT [DF__cmsTask__closed__04E4BC85] DEFAULT ((0)),
[id] [int] NOT NULL IDENTITY(1, 1),
[taskTypeId] [int] NOT NULL,
[nodeId] [int] NOT NULL,
[parentUserId] [int] NOT NULL,
[userId] [int] NOT NULL,
[DateTime] [datetime] NOT NULL CONSTRAINT [DF__cmsTask__DateTim__05D8E0BE] DEFAULT (getdate()),
[Comment] [nvarchar] (500) NULL
)
;
ALTER TABLE [cmsTask] ADD CONSTRAINT [PK_cmsTask] PRIMARY KEY ([id])
;
CREATE TABLE [cmsTaskType]
(
[id] [int] NOT NULL IDENTITY(1, 1),
[alias] [nvarchar] (255) NOT NULL
)
;
ALTER TABLE [cmsTaskType] ADD CONSTRAINT [PK_cmsTaskType] PRIMARY KEY ([id])
;
ALTER TABLE [cmsTask] ADD
CONSTRAINT [FK_cmsTask_cmsTaskType] FOREIGN KEY ([taskTypeId]) REFERENCES [cmsTaskType] ([id])
;
insert into cmsTaskType (alias) values ('toTranslate')
;
/* Add send to translate actions to admins and editors */
update umbracoUserType set userTypeDefaultPermissions = userTypeDefaultPermissions + '5' where userTypeAlias in ('editor','admin')
;
/* Add translator usertype */
;
insert into umbracoRelationType (dual, parentObjectType, childObjectType, name, alias) values (1, 'c66ba18e-eaf3-4cff-8a22-41b16d66a972', 'c66ba18e-eaf3-4cff-8a22-41b16d66a972', 'Relate Document On Copy','relateDocumentOnCopy')
;
ALTER TABLE cmsMacro ADD macroPython nvarchar(255)
;
INSERT INTO [umbracoAppTree]([treeSilent], [treeInitialize], [treeSortOrder], [appAlias], [treeAlias], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES(0, 1, 4, 'developer', 'python', 'Python Files', 'folder.gif', 'folder_o.gif', 'umbraco', 'loadPython')
;
INSERT INTO [umbracoAppTree]([treeSilent], [treeInitialize], [treeSortOrder], [appAlias], [treeAlias], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES(0, 1, 2, 'settings', 'scripts', 'Scripts', 'folder.gif', 'folder_o.gif', 'umbraco', 'loadScripts')
;
alter TABLE [cmsContentType]
add [thumbnail] nvarchar(255) NOT NULL CONSTRAINT
[DF_cmsContentType_thumbnail] DEFAULT ('folder.png')
;
alter TABLE [cmsContentType]
add [description] nvarchar(1500) NULL
;
ALTER TABLE umbracoLog ALTER COLUMN logComment NVARCHAR(4000) NULL
;
!!!SET IDENTITY_INSERT [cmsDataTypePreValues] ON
|insert into cmsDataTypePreValues (id, dataTypeNodeId, [value], sortorder, alias) values (3,-87,',code,undo,redo,cut,copy,mcepasteword,stylepicker,bold,italic,bullist,numlist,outdent,indent,mcelink,unlink,mceinsertanchor,mceimage,umbracomacro,mceinserttable,mcecharmap,' + nchar(124) + '1' + nchar(124) + '1,2,3,' + nchar(124) + '0' + nchar(124) + '500,400' + nchar(124) + '1049,' + nchar(124) + '', 0, '')
|insert into cmsDataTypePreValues (id, dataTypeNodeId, [value], sortorder, alias) values (4,1041,'default', 0, 'group')
|SET IDENTITY_INSERT [cmsDataTypePreValues] OFF
;
/* 3.1 SQL changes */
INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'packager', 0, 1, 3, N'Packages', N'folder.gif', N'folder_o.gif', N'umbraco', N'loadPackager')
;
INSERT INTO [umbracoAppTree] ([appAlias], [treeAlias], [treeSilent], [treeInitialize], [treeSortOrder], [treeTitle], [treeIconClosed], [treeIconOpen], [treeHandlerAssembly], [treeHandlerType]) VALUES (N'developer', N'packagerPackages', 0, 0, 1, N'Packager Packages', N'folder.gif', N'folder_o.gif', N'umbraco', N'loadPackages');
/* Add ActionBrowse as a default permission to all user types that have ActionUpdate */
UPDATE umbracoUserType SET userTypeDefaultPermissions = userTypeDefaultPermissions + 'F' WHERE CHARINDEX('A',userTypeDefaultPermissions,0) >= 1
AND CHARINDEX('F',userTypeDefaultPermissions,0) < 1
;
/* Add ActionToPublish to all users types that have the alias 'writer' */
UPDATE umbracoUserType SET userTypeDefaultPermissions = userTypeDefaultPermissions + 'H' WHERE userTypeAlias = 'writer'
AND CHARINDEX('F',userTypeDefaultPermissions,0) < 1
;
/* Add ActionBrowse to all user permissions for nodes that have the ActionUpdate permission */
INSERT INTO umbracoUser2NodePermission (userID, nodeId, permission)
SELECT userID, nodeId, 'F' FROM umbracoUser2NodePermission WHERE permission='A'
;
/* Add ActionToPublish permissions to all nodes for users that are of type 'writer' */
INSERT INTO umbracoUser2NodePermission (userID, nodeId, permission)
SELECT DISTINCT userID, nodeId, 'H' FROM umbracoUser2NodePermission WHERE userId IN
(SELECT umbracoUser.id FROM umbracoUserType INNER JOIN umbracoUser ON umbracoUserType.id = umbracoUser.userType WHERE (umbracoUserType.userTypeAlias = 'writer'))
;
/* Add the contentRecycleBin tree type */
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 0, 0, 'content', 'contentRecycleBin', 'RecycleBin', 'folder.gif', 'folder_o.gif', 'umbraco', 'cms.presentation.Trees.ContentRecycleBin')
;
/* Add the UserType tree type */
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 1, 'users', 'userTypes', 'User Types', 'folder.gif', 'folder_o.gif', 'umbraco', 'cms.presentation.Trees.UserTypes')
;
/* Add the User Permission tree type */
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 2, 'users', 'userPermissions', 'User Permissions', 'folder.gif', 'folder_o.gif', 'umbraco', 'cms.presentation.Trees.UserPermissions');
/* TRANSLATION RELATED SQL */
INSERT INTO [umbracoApp] ([appAlias], [sortOrder], [appIcon], [appName], [appInitWithTreeAlias]) VALUES (N'translation', 5, N'.traytranslation', N'Translation', NULL)
;
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 1, 'translation','openTasks', 'Tasks assigned to you', '.sprTreeFolder', '.sprTreeFolder_o', 'umbraco', 'loadOpenTasks');
;
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 1, 2, 'translation','yourTasks', 'Tasks created by you', '.sprTreeFolder', '.sprTreeFolder_o', 'umbraco', 'loadYourTasks');
;
alter TABLE [cmsContentType]
add [masterContentType] int NULL CONSTRAINT
[DF_cmsContentType_masterContentType] DEFAULT (0)
;
CREATE TABLE [cmsTagRelationship](
[nodeId] [int] NOT NULL,
[tagId] [int] NOT NULL)
;
CREATE TABLE [cmsTags](
[id] [int] IDENTITY(1,1) NOT NULL,
[tag] [nvarchar](200) NULL,
[parentId] [int] NULL,
[group] [nvarchar](100) NULL)
;
alter TABLE [umbracoUser]
add [defaultToLiveEditing] bit NOT NULL CONSTRAINT
[DF_umbracoUser_defaultToLiveEditing] DEFAULT (0)
;
/* INSERT NEW MEDIA RECYCLE BIN NODE */
!!!SET IDENTITY_INSERT [umbracoNode] ON
|INSERT INTO umbracoNode (id, trashed, parentID, nodeUser, level, path, sortOrder, uniqueID, text, nodeObjectType) VALUES (-21, 0, -1, 0, 0, '-1,-21', 0, 'BF7C7CBC-952F-4518-97A2-69E9C7B33842', 'Recycle Bin', 'CF3D8E34-1C1C-41e9-AE56-878B57B32113')
|SET IDENTITY_INSERT [umbracoNode] OFF
;
/* Add the mediaRecycleBin tree type */
INSERT INTO umbracoAppTree (treeSilent, treeInitialize, treeSortOrder, appAlias, treeAlias, treeTitle, treeIconClosed, treeIconOpen, treeHandlerAssembly, treeHandlerType)
VALUES (0, 0, 0, 'media', 'mediaRecycleBin', 'RecycleBin', 'folder.gif', 'folder_o.gif', 'umbraco', 'cms.presentation.Trees.MediaRecycleBin')
;
/* PREVIEW */
CREATE TABLE [cmsPreviewXml](
[nodeId] [int] NOT NULL,
[versionId] [uniqueidentifier] NOT NULL,
[timestamp] [datetime] NOT NULL,
[xml] [ntext] NOT NULL)
;
/***********************************************************************************************************************
ADD NEW PRIMARY KEYS, FOREIGN KEYS AND INDEXES FOR VERSION 4.1
IMPORTANT!!!!!
YOU MUST MAKE SURE THAT THE SCRIPT BELOW THIS MATCHES THE KeysIndexesAndConstraints.sql FILE FOR THE MANUAL UPGRADE
*/
/************************** CLEANUP ***********************************************/
/************************** CLEANUP END ********************************************/
/************************** RESEEDING NEEDED FOR SQL CE 4 ************************/
ALTER TABLE [umbracoNode] ALTER COLUMN id IDENTITY(1042,1)
;
ALTER TABLE [cmsContentType] ALTER COLUMN pk IDENTITY(535,1)
;
ALTER TABLE [umbracoUser] ALTER COLUMN id IDENTITY(1,1)
;
ALTER TABLE [umbracoUserType] ALTER COLUMN id IDENTITY(5,1)
;
ALTER TABLE [cmsMacroPropertyType] ALTER COLUMN id IDENTITY(26,1)
;
ALTER TABLE [cmsTab] ALTER COLUMN id IDENTITY(6,1)
;
ALTER TABLE [cmsPropertyType] ALTER COLUMN id IDENTITY(28,1)
;
ALTER TABLE [umbracoLanguage] ALTER COLUMN id IDENTITY(2,1)
;
ALTER TABLE [cmsDataType] ALTER COLUMN pk IDENTITY(39,1)
;
ALTER TABLE [cmsDataTypePreValues] ALTER COLUMN id IDENTITY(5,1)
@@ -0,0 +1,98 @@
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
<ProductVersion>8.0.30703</ProductVersion>
<SchemaVersion>2.0</SchemaVersion>
<ProjectGuid>{5BA5425F-27A7-4677-865E-82246498AA2E}</ProjectGuid>
<OutputType>Library</OutputType>
<AppDesignerFolder>Properties</AppDesignerFolder>
<RootNamespace>SQLCE4Umbraco</RootNamespace>
<AssemblyName>SQLCE4Umbraco</AssemblyName>
<TargetFrameworkVersion>v4.0</TargetFrameworkVersion>
<FileAlignment>512</FileAlignment>
<SccProjectName>
</SccProjectName>
<SccLocalPath>
</SccLocalPath>
<SccAuxPath>
</SccAuxPath>
<SccProvider>
</SccProvider>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
<DebugSymbols>true</DebugSymbols>
<DebugType>full</DebugType>
<Optimize>false</Optimize>
<OutputPath>bin\Debug\</OutputPath>
<DefineConstants>DEBUG;TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<DebugType>pdbonly</DebugType>
<Optimize>true</Optimize>
<OutputPath>bin\Release\</OutputPath>
<DefineConstants>TRACE</DefineConstants>
<ErrorReport>prompt</ErrorReport>
<WarningLevel>4</WarningLevel>
</PropertyGroup>
<ItemGroup>
<Reference Include="System" />
<Reference Include="System.Core" />
<Reference Include="System.Data.SqlServerCe, Version=3.5.1.0, Culture=neutral, PublicKeyToken=89845dcd8080cc91, processorArchitecture=MSIL">
<SpecificVersion>False</SpecificVersion>
<HintPath>..\..\foreign dlls\SQLCE4\System.Data.SqlServerCe.dll</HintPath>
</Reference>
<Reference Include="System.Xml.Linq" />
<Reference Include="System.Data.DataSetExtensions" />
<Reference Include="Microsoft.CSharp" />
<Reference Include="System.Data" />
<Reference Include="System.Xml" />
</ItemGroup>
<ItemGroup>
<Compile Include="Properties\AssemblyInfo.cs" />
<Compile Include="SqlCeApplicationBlock.cs" />
<Compile Include="SqlCeContextGuardian.cs" />
<Compile Include="SqlCEDataReader.cs" />
<Compile Include="SqlCEHelper.cs" />
<Compile Include="SqlCEInstaller.cs" />
<Compile Include="SqlCEParameter.cs" />
<Compile Include="SqlCeProviderException.cs" />
<Compile Include="SqlCEResources1.Designer.cs">
<AutoGen>True</AutoGen>
<DesignTime>True</DesignTime>
<DependentUpon>SqlCEResources.resx</DependentUpon>
</Compile>
<Compile Include="SqlCETableUtility.cs" />
<Compile Include="SqlCEUtility.cs" />
</ItemGroup>
<ItemGroup>
<Content Include="Sql\Total.sql" />
</ItemGroup>
<ItemGroup>
<EmbeddedResource Include="SqlCEResources.resx">
<Generator>ResXFileCodeGenerator</Generator>
<LastGenOutput>SqlCEResources1.Designer.cs</LastGenOutput>
</EmbeddedResource>
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\..\umbraco\datalayer\umbraco.datalayer.csproj">
<Project>{C7CB79F0-1C97-4B33-BFA7-00731B579AE2}</Project>
<Name>umbraco.datalayer</Name>
</ProjectReference>
</ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
<PropertyGroup>
<PostBuildEvent>
</PostBuildEvent>
</PropertyGroup>
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
@@ -0,0 +1,10 @@
""
{
"FILE_VERSION" = "9237"
"ENLISTMENT_CHOICE" = "NEVER"
"PROJECT_FILE_RELATIVE_PATH" = ""
"NUMBER_OF_EXCLUDED_FILES" = "0"
"ORIGINAL_PROJECT_FILE_PATH" = ""
"NUMBER_OF_NESTED_PROJECTS" = "0"
"SOURCE_CONTROL_SETTINGS_PROVIDER" = "PROVIDER"
}
@@ -0,0 +1,44 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System.Data.SqlServerCe;
using umbraco.DataLayer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Class that adapts a SqlDataReader.SqlDataReader to a RecordsReaderAdapter.
/// </summary>
public class SqlCeDataReaderHelper : RecordsReaderAdapter<SqlCeDataReader>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlServerDataReader"/> class.
/// </summary>
/// <param name="dataReader">The data reader.</param>
public SqlCeDataReaderHelper(System.Data.SqlServerCe.SqlCeDataReader dataReader) : base(dataReader) { }
#endregion
#region RecordsReaderAdapter Members
/// <summary>
/// Gets a value indicating whether this instance has records.
/// </summary>
/// <value>
/// <c>true</c> if this instance has records; otherwise, <c>false</c>.
/// </value>
public override bool HasRecords
{
get { return DataReader.HasRows; }
}
#endregion
}
}
+99
View File
@@ -0,0 +1,99 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Data;
using System.Data.SqlServerCe;
using System.Xml;
using System.Diagnostics;
using umbraco.DataLayer;
using umbraco.DataLayer.SqlHelpers.SqlServer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Sql Helper for an SQL Server database.
/// </summary>
public class SqlCEHelper : SqlHelper<SqlCeParameter>
{
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEHelper"/> class.
/// </summary>
/// <param name="connectionString">The connection string.</param>
public SqlCEHelper(string connectionString) : base(connectionString)
{
m_Utility = new SqlCEUtility(this);
}
/// <summary>
/// Creates a new parameter for use with this specific implementation of ISqlHelper.
/// </summary>
/// <param name="parameterName">Name of the parameter.</param>
/// <param name="value">Value of the parameter.</param>
/// <returns>A new parameter of the correct type.</returns>
/// <remarks>Abstract factory pattern</remarks>
public override IParameter CreateParameter(string parameterName, object value)
{
return new SqlCEParameter(parameterName, value);
}
/// <summary>
/// Executes a command that returns a single value.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>The return value of the command.</returns>
protected override object ExecuteScalar(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteScalar: " + commandText);
#endif
return SqlCeApplicationBlock.ExecuteScalar(ConnectionString, CommandType.Text, commandText, parameters);
}
/// <summary>
/// Executes a command and returns the number of rows affected.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>
/// The number of rows affected by the command.
/// </returns>
protected override int ExecuteNonQuery(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteNonQuery: " + commandText);
#endif
return SqlCeApplicationBlock.ExecuteNonQuery(ConnectionString, CommandType.Text, commandText, parameters);
}
/// <summary>
/// Executes a command and returns a records reader containing the results.
/// </summary>
/// <param name="commandText">The command text.</param>
/// <param name="parameters">The parameters.</param>
/// <returns>
/// A data reader containing the results of the command.
/// </returns>
protected override IRecordsReader ExecuteReader(string commandText, SqlCeParameter[] parameters)
{
#if DEBUG && DebugDataLayer
// Log Query Execution
Trace.TraceInformation(GetType().Name + " SQL ExecuteReader: " + commandText);
#endif
return new SqlCeDataReaderHelper(SqlCeApplicationBlock.ExecuteReader(ConnectionString, CommandType.Text,
commandText, parameters));
}
}
}
+128
View File
@@ -0,0 +1,128 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Resources;
using umbraco.DataLayer.Utility.Installer;
using System.Diagnostics;
namespace SqlCE4Umbraco
{
/// <summary>
/// Database installer for an SQL Server data source.
/// </summary>
public class SqlCEInstaller : DefaultInstallerUtility<SqlCEHelper>
{
#region Private Constants
/// <summary>The latest database version this installer supports.</summary>
private const DatabaseVersion LatestVersionSupported = DatabaseVersion.Version4_1;
/// <summary>The specifications to determine the database version.</summary>
private static readonly VersionSpecs[] m_VersionSpecs = new VersionSpecs[] {
new VersionSpecs("id","umbracoNode", "-21", DatabaseVersion.Version4_1),
new VersionSpecs("action","umbracoAppTree",DatabaseVersion.Version4),
new VersionSpecs("description","cmsContentType",DatabaseVersion.Version3),
new VersionSpecs("id","sysobjects",DatabaseVersion.None) };
#endregion
#region Public Properties
/// <summary>
/// Gets a value indicating whether the installer can upgrade the data source.
/// </summary>
/// <value>
/// <c>true</c> if the installer can upgrade the data source; otherwise, <c>false</c>.
/// </value>
/// <remarks>Empty data sources can't be upgraded, just installed.</remarks>
public override bool CanUpgrade
{
get
{
return false;
}
}
#endregion
#region Protected Properties
/// <summary>
/// Gets the version specification for evaluation by DetermineCurrentVersion.
/// Only first matching specification is taken into account.
/// </summary>
/// <value>The version specifications.</value>
protected override VersionSpecs[] VersionSpecs
{
get { return m_VersionSpecs; }
}
#endregion
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEInstaller"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCEInstaller(SqlCEHelper sqlHelper) : base(sqlHelper, LatestVersionSupported)
{ }
#endregion
#region DefaultInstaller Members
/// <summary>
/// Returns the sql to do a full install
/// </summary>
protected override string FullInstallSql
{
get { return SqlCEResources.Total; }
}
/// <summary>
/// Returns the sql to do an upgrade
/// </summary>
protected override string UpgradeSql
{
get
{
string upgradeFile = string.Format("{0}_Upgrade", CurrentVersion.ToString());
return SqlCEResources.ResourceManager.GetString(upgradeFile);
}
}
// We need to override this as the default way of detection a db connection checks for systables that doesn't exist
// in a CE db
protected override DatabaseVersion DetermineCurrentVersion()
{
DatabaseVersion version = base.DetermineCurrentVersion();
if (version != DatabaseVersion.Unavailable)
{
return version;
}
// verify connection
try
{
if (SqlCeApplicationBlock.VerifyConnection(base.SqlHelper.ConnectionString))
return DatabaseVersion.None;
}
catch (Exception e)
{
Trace.WriteLine(e.ToString());
}
return DatabaseVersion.Unavailable;
}
#endregion
}
}
@@ -0,0 +1,34 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using System;
using System.Data.SqlServerCe;
using System.Data.SqlTypes;
using umbraco.DataLayer;
namespace SqlCE4Umbraco
{
/// <summary>
/// Parameter class for the SqlCEHelper.
/// </summary>
public class SqlCEParameter : SqlParameterAdapter<SqlCeParameter>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlCEParameter"/> class.
/// </summary>
/// <param name="parameterName">Name of the parameter.</param>
/// <param name="value">Value of the parameter.</param>
public SqlCEParameter(string parameterName, object value)
: base(new SqlCeParameter(parameterName, value))
{ }
#endregion
}
}
@@ -0,0 +1,124 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Windows.Forms" name="System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<data name="Total" type="System.Resources.ResXFileRef, System.Windows.Forms">
<value>sql\total.sql;System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089;Windows-1252</value>
</data>
</root>
+88
View File
@@ -0,0 +1,88 @@
//------------------------------------------------------------------------------
// <auto-generated>
// This code was generated by a tool.
// Runtime Version:4.0.30319.1
//
// Changes to this file may cause incorrect behavior and will be lost if
// the code is regenerated.
// </auto-generated>
//------------------------------------------------------------------------------
namespace SqlCE4Umbraco {
using System;
/// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc.
/// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder
// class via a tool like ResGen or Visual Studio.
// To add or remove a member, edit your .ResX file then rerun ResGen
// with the /str option, or rebuild your VS project.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "4.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
internal class SqlCEResources {
private static global::System.Resources.ResourceManager resourceMan;
private static global::System.Globalization.CultureInfo resourceCulture;
[global::System.Diagnostics.CodeAnalysis.SuppressMessageAttribute("Microsoft.Performance", "CA1811:AvoidUncalledPrivateCode")]
internal SqlCEResources() {
}
/// <summary>
/// Returns the cached ResourceManager instance used by this class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SQLCE4Umbraco.SqlCEResources", typeof(SqlCEResources).Assembly);
resourceMan = temp;
}
return resourceMan;
}
}
/// <summary>
/// Overrides the current thread's CurrentUICulture property for all
/// resource lookups using this strongly typed resource class.
/// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
internal static global::System.Globalization.CultureInfo Culture {
get {
return resourceCulture;
}
set {
resourceCulture = value;
}
}
/// <summary>
/// Looks up a localized string similar to /*******************************************************************************************
///
///
///
///
///
///
///
/// Umbraco database installation script for SQL Server
///
///IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT IMPORTANT
///
/// Database version: 4.1.0.0
///
/// Please increment this version number if ANY change is made to this script,
/// so compatibility with scripts for other database systems can be verified easily.
/// The first 3 digits depict the Umbraco versi [rest of string was truncated]&quot;;.
/// </summary>
internal static string Total {
get {
return ResourceManager.GetString("Total", resourceCulture);
}
}
}
}
@@ -0,0 +1,243 @@
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Text;
using umbraco.DataLayer.Utility.Table;
using umbraco.DataLayer;
using umbraco;
namespace SqlCE4Umbraco
{
/// <summary>
/// SQL Server implementation of <see cref="DefaultTableUtility&lt;S&gt;"/>.
/// </summary>
public class SqlCETableUtility : DefaultTableUtility<SqlCEHelper>
{
/// <summary>
/// Initializes a new instance of the <see cref="SqlCETableUtility"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCETableUtility(SqlCEHelper sqlHelper)
: base(sqlHelper)
{ }
#region DefaultTableUtility<SqlCEHelper> members
/// <summary>
/// Gets the table with the specified name.
/// </summary>
/// <param name="name">The name.</param>
/// <returns>The table, or <c>null</c> if no table with that name exists.</returns>
public override ITable GetTable(string name)
{
if (name == null)
throw new ArgumentNullException("name");
ITable table = null;
// get name in correct casing
name = SqlHelper.ExecuteScalar<string>("SELECT name FROM sys.tables WHERE name=@name",
SqlHelper.CreateParameter("name", name));
if (name != null)
{
table = new DefaultTable(name);
using (IRecordsReader reader = SqlHelper.ExecuteReader(
@"SELECT c.name AS Name, st.name AS DataType, c.max_length, c.is_nullable, c.is_identity
FROM sys.tables AS t
JOIN sys.columns AS c ON t.object_id = c.object_id
JOIN sys.schemas AS s ON s.schema_id = t.schema_id
JOIN sys.types AS ty ON ty.user_type_id = c.user_type_id
JOIN sys.types st ON ty.system_type_id = st.user_type_id
WHERE t.name = @name
ORDER BY c.column_id", SqlHelper.CreateParameter("name", name)))
{
while (reader.Read())
{
table.AddField(table.CreateField(reader.GetString("Name"), GetType(reader)));
}
}
}
return table;
}
/// <summary>
/// Saves or updates the table.
/// </summary>
/// <param name="table">The table to be saved.</param>
public override void SaveTable(ITable table)
{
if (table == null)
throw new ArgumentNullException("table");
ITable oldTable = GetTable(table.Name);
// create the table if it didn't exist, update fields otherwise
if (oldTable == null)
{
CreateTable(table);
}
else
{
foreach (IField field in table)
{
// create the field if it did't exist in the old table
if (oldTable.FindField(field.Name)==null)
{
CreateColumn(table, field);
}
}
}
}
#endregion
#region Protected Helper Methods
/// <summary>
/// Creates the table in the data source.
/// </summary>
/// <param name="table">The table.</param>
protected virtual void CreateTable(ITable table)
{
Debug.Assert(table != null);
// create enumerator and check for first field
IEnumerator<IField> fieldEnumerator = table.GetEnumerator();
bool hasNext = fieldEnumerator.MoveNext();
if(!hasNext)
throw new ArgumentException("The table must contain at least one field.");
// create query
StringBuilder createTableQuery = new StringBuilder();
createTableQuery.AppendFormat("CREATE TABLE [{0}] (", SqlHelper.EscapeString(table.Name));
// add fields
while (hasNext)
{
// add field name and type
IField field = fieldEnumerator.Current;
createTableQuery.Append('[').Append(field.Name).Append(']');
createTableQuery.Append(' ').Append(GetDatabaseType(field));
// append comma if a following field exists
hasNext = fieldEnumerator.MoveNext();
if (hasNext)
{
createTableQuery.Append(',');
}
}
// close CREATE TABLE x (...) bracket
createTableQuery.Append(')');
// execute query
try
{
SqlHelper.ExecuteNonQuery(createTableQuery.ToString());
}
catch (Exception executeException)
{
throw new UmbracoException(String.Format("Could not create table '{0}'.", table), executeException);
}
}
/// <summary>
/// Creates a new column in the table.
/// </summary>
/// <param name="table">The table.</param>
/// <param name="field">The field used to create the column.</param>
protected virtual void CreateColumn(ITable table, IField field)
{
Debug.Assert(table != null && field != null);
StringBuilder addColumnQuery = new StringBuilder();
addColumnQuery.AppendFormat("ALTER TABLE [{0}] ADD [{1}] {2}",
SqlHelper.EscapeString(table.Name),
SqlHelper.EscapeString(field.Name),
SqlHelper.EscapeString(GetDatabaseType(field)));
try
{
SqlHelper.ExecuteNonQuery(addColumnQuery.ToString());
}
catch (Exception executeException)
{
throw new UmbracoException(String.Format("Could not create column '{0}' in table '{1}'.",
field, table.Name), executeException);
}
}
/// <summary>
/// Gets the .Net type corresponding to the specified database data type.
/// </summary>
/// <param name="dataTypeReader">The data type reader.</param>
/// <returns>The .Net type</returns>
protected virtual Type GetType(IRecordsReader dataTypeReader)
{
string typeName = dataTypeReader.GetString("DataType");
switch (typeName)
{
case "bit": return typeof(bool);
case "tinyint": return typeof(byte);
case "datetime": return typeof(DateTime);
// TODO: return different decimal type according to field precision
case "decimal": return typeof(decimal);
case "uniqueidentifier": return typeof(Guid);
case "smallint": return typeof(Int16);
case "int": return typeof(Int32);
case "bigint": return typeof(Int64);
case "nvarchar": return typeof(string);
default:
throw new ArgumentException(String.Format("Cannot convert database type '{0}' to a .Net type.",
typeName));
}
}
/// <summary>
/// Gets the database type corresponding to the field, complete with field properties.
/// </summary>
/// <param name="field">The field.</param>
/// <returns>The database type.</returns>
protected virtual string GetDatabaseType(IField field)
{
StringBuilder fieldBuilder = new StringBuilder();
fieldBuilder.Append(GetDatabaseTypeName(field));
fieldBuilder.Append(field.HasProperty(FieldProperties.Identity) ? " IDENTITY(1,1)" : String.Empty);
fieldBuilder.Append(field.HasProperty(FieldProperties.NotNull) ? " NOT NULL" : " NULL");
return fieldBuilder.ToString();
}
/// <summary>
/// Gets the name of the database type, without field properties.
/// </summary>
/// <param name="field">The field.</param>
/// <returns></returns>
protected virtual string GetDatabaseTypeName(IField field)
{
switch (field.DataType.FullName)
{
case "System.Boolean": return "bit";
case "System.Byte": return "tinyint";
case "System.DateTime": return "datetime";
case "System.Decimal": return "decimal(28)";
case "System.Double": return "decimal(15)";
case "System.Single": return "decimal(7)";
case "System.Guid": return "uniqueidentifier";
case "System.Int16": return "smallint";
case "System.Int32": return "int";
case "System.Int64": return "bigint";;
case "System.String":
string type = "nvarchar";
return field.Size == 0 ? type : String.Format("{0}({1})", type, field.Size);
default:
throw new ArgumentException(String.Format("Cannot convert '{0}' to a database type.", field));
}
}
#endregion
}
}
+53
View File
@@ -0,0 +1,53 @@
/************************************************************************************
*
* Umbraco Data Layer
* MIT Licensed work
* ©2008 Ruben Verborgh
*
***********************************************************************************/
using umbraco.DataLayer.Utility;
using umbraco.DataLayer.Utility.Installer;
using umbraco.DataLayer.Utility.Table;
namespace SqlCE4Umbraco
{
/// <summary>
/// Utility for an SQL Server data source.
/// </summary>
public class SqlCEUtility : DefaultUtility<SqlCEHelper>
{
#region Public Constructors
/// <summary>
/// Initializes a new instance of the <see cref="SqlServerUtility"/> class.
/// </summary>
/// <param name="sqlHelper">The SQL helper.</param>
public SqlCEUtility(SqlCEHelper sqlHelper) : base(sqlHelper)
{ }
#endregion
#region DefaultUtility Members
/// <summary>
/// Creates an installer.
/// </summary>
/// <returns>The SQL Server installer.</returns>
public override IInstallerUtility CreateInstaller()
{
return new SqlCEInstaller(SqlHelper);
}
/// <summary>
/// Creates a table utility.
/// </summary>
/// <returns>The table utility</returns>
public override ITableUtility CreateTableUtility()
{
return new SqlCETableUtility(SqlHelper);
}
#endregion
}
}
@@ -0,0 +1,188 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data.SqlServerCe;
using System.Data;
using System.Diagnostics;
using SQLCE4Umbraco;
namespace SqlCE4Umbraco
{
public class SqlCeApplicationBlock
{
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
/// <returns></returns>
public static object ExecuteScalar(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
object retVal;
try
{
using (SqlCeConnection conn = SqlCeContextGuardian.Open(connectionString))
{
using (SqlCeCommand cmd = new SqlCeCommand(commandText, conn))
{
AttachParameters(cmd, commandParameters);
Debug.WriteLine("---------------------------------SCALAR-------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
retVal = cmd.ExecuteScalar();
}
}
return retVal;
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Scalar: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
public static int ExecuteNonQuery(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
int rowsAffected;
using (SqlCeConnection conn = SqlCeContextGuardian.Open(connectionString))
{
// this is for multiple queries in the installer
if (commandText.Trim().StartsWith("!!!"))
{
commandText = commandText.Trim().Trim('!');
string[] commands = commandText.Split('|');
string currentCmd = String.Empty;
foreach (string cmd in commands)
{
try
{
currentCmd = cmd;
if (!String.IsNullOrWhiteSpace(cmd))
{
SqlCeCommand c = new SqlCeCommand(cmd, conn);
c.ExecuteNonQuery();
}
}
catch (Exception e)
{
Debug.WriteLine("*******************************************************************");
Debug.WriteLine(currentCmd);
Debug.WriteLine(e);
Debug.WriteLine("*******************************************************************");
}
}
return 1;
}
else
{
Debug.WriteLine("----------------------------------------------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
SqlCeCommand cmd = new SqlCeCommand(commandText, conn);
AttachParameters(cmd, commandParameters);
rowsAffected = cmd.ExecuteNonQuery();
}
}
return rowsAffected;
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running NonQuery: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
/// <summary>
///
/// </summary>
/// <param name="connectionString"></param>
/// <param name="commandType"></param>
/// <param name="commandText"></param>
/// <param name="commandParameters"></param>
/// <returns></returns>
public static SqlCeDataReader ExecuteReader(
string connectionString,
CommandType commandType,
string commandText,
params SqlCeParameter[] commandParameters
)
{
try
{
Debug.WriteLine("---------------------------------READER-------------------------------------");
Debug.WriteLine(commandText);
Debug.WriteLine("----------------------------------------------------------------------------");
SqlCeDataReader reader;
SqlCeConnection conn = SqlCeContextGuardian.Open(connectionString);
try
{
SqlCeCommand cmd = new SqlCeCommand(commandText, conn);
AttachParameters(cmd, commandParameters);
reader = cmd.ExecuteReader(CommandBehavior.CloseConnection);
}
catch
{
conn.Close();
throw;
}
return reader;
}
catch (Exception ee)
{
throw new SqlCeProviderException("Error running Reader: \nSQL Statement:\n" + commandText + "\n\nException:\n" + ee.ToString());
}
}
public static bool VerifyConnection(string connectionString)
{
bool isConnected = false;
using (SqlCeConnection conn = SqlCeContextGuardian.Open(connectionString))
{
isConnected = conn.State == ConnectionState.Open;
}
return isConnected;
}
private static void AttachParameters(SqlCeCommand command, SqlCeParameter[] commandParameters)
{
foreach (SqlCeParameter parameter in commandParameters)
{
if ((parameter.Direction == ParameterDirection.InputOutput) && (parameter.Value == null))
{
parameter.Value = DBNull.Value;
}
command.Parameters.Add(parameter);
}
}
}
}
@@ -0,0 +1,55 @@
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Common;
using System.Data.SqlServerCe;
using System.Linq;
using System.Text;
namespace SQLCE4Umbraco
{
public static class SqlCeContextGuardian
{
private static SqlCeConnection _constantOpenConnection;
private static object objLock = new object();
// Awesome SQL CE 4 speed improvement by Erik Ejskov Jensen - SQL CE 4 MVP
// It's not an issue with SQL CE 4 that we never close the connection
public static SqlCeConnection Open(string connectionString)
{
var connectionStringBuilder = new DbConnectionStringBuilder();
try
{
connectionStringBuilder.ConnectionString = connectionString;
}
catch (Exception ex)
{
throw new ArgumentException("Bad connection string.", "connectionString", ex);
}
connectionStringBuilder.Remove("datalayer");
// SQL CE 4 performs better when there's always a connection open in the background
ensureOpenBackgroundConnection(connectionStringBuilder.ConnectionString);
SqlCeConnection conn = new SqlCeConnection(connectionStringBuilder.ConnectionString);
conn.Open();
return conn;
}
private static void ensureOpenBackgroundConnection(string connectionString)
{
lock (objLock)
{
if (_constantOpenConnection == null)
{
_constantOpenConnection = new SqlCeConnection(connectionString);
_constantOpenConnection.Open();
}
else if (_constantOpenConnection.State != ConnectionState.Open)
_constantOpenConnection.Open();
}
}
}
}
@@ -0,0 +1,20 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SqlCE4Umbraco
{
public class SqlCeProviderException : Exception
{
public SqlCeProviderException() : base()
{
}
public SqlCeProviderException(string message) : base(message)
{
}
}
}
@@ -39,6 +39,11 @@ namespace umbraco.editorControls
{
StoreItemId(_data);
// zb-00024 #299260 : see the loooong comments in OnLoad
// setting the value here seems OK but use this.Value to ensure
// that the hidden control exists
this.Value = StoredItemId != -1 ? StoredItemId.ToString() : "";
base.OnInit(e);
}
@@ -53,6 +58,33 @@ namespace umbraco.editorControls
{
ItemIdValue.Value = StoredItemId != -1 ? StoredItemId.ToString() : "";
}
// zb-00024 #299260 : support postback
// on postback ItemIdValue.Value is restored by LoadPostData
// on non-postback it is initialized by the code above
// w/RCC when clicking on 'edit' it is not initialized
// StoredItemId is initialized in OnInit with whatever comes from the
// database, or from what the RCC decides we need to display--but when
// we changes something in the web page, it is handled by LoadPostData
// RCC 'edit':
// ItemIdValue.Value has no value, or a wrong value, which we should ignore
// StoredItemId is initialized with the right value in RCC code
// so we'd need to set ItemIdValue.Value from it
// but if we do it in prerender then we copy over the /old/ StoredItemIt
// value which was the one before we saved... because we don't refresh it
// when we update
// and if we refresh it here we are in trouble because we overwrite what
// comes from the form and we can't actually change the value anymore
// so we should change it /once/ the ItemIdValue.Value changes have been
// akn
// the viewed image ID is set in mediaChoose onPreRender from
// ItemIdValue.Value so we really want it to have a value!
}
#region IDataField Members
@@ -2,21 +2,30 @@ using System;
using System.Collections;
using System.Web.UI;
using System.Web.UI.WebControls;
using ClientDependency.Core;
using umbraco.BusinessLogic;
using umbraco.DataLayer;
using System.Collections.Generic;
using System.Web.UI.HtmlControls;
[assembly: System.Web.UI.WebResource("umbraco.editorControls.KeyValuePrevalueEditor.js", "text/js")]
[assembly: System.Web.UI.WebResource("umbraco.editorControls.KeyValuePrevalueEditor.css", "text/css")]
namespace umbraco.editorControls
{
/// <summary>
/// Summary description for KeyValuePrevalueEditor.
/// </summary>
[ClientDependency(ClientDependencyType.Javascript, "Jeditable/jquery.jeditable.js", "UmbracoClient")]
public class KeyValuePrevalueEditor : System.Web.UI.WebControls.PlaceHolder, interfaces.IDataPrevalue
{
// UI controls
public System.Web.UI.WebControls.DropDownList _dropdownlist;
public TextBox _textbox;
private TextBox _tbhidden;
public umbraco.uicontrols.PropertyPanel pp1 = new umbraco.uicontrols.PropertyPanel();
public umbraco.uicontrols.PropertyPanel pp2 = new umbraco.uicontrols.PropertyPanel();
@@ -56,10 +65,15 @@ namespace umbraco.editorControls
_textbox = new TextBox();
_textbox.ID = "AddValue";
_tbhidden = new TextBox();
_tbhidden.Attributes.Add("style", "display:none;");
_tbhidden.CssClass = "valuesHiddenInput";
// put the childcontrols in context - ensuring that
// the viewstate is persisted etc.
this.Controls.Add(_dropdownlist);
this.Controls.Add(_textbox);
this.Controls.Add(_tbhidden);
_dropdownlist.Items.Add(DBTypes.Date.ToString());
_dropdownlist.Items.Add(DBTypes.Integer.ToString());
@@ -70,6 +84,22 @@ namespace umbraco.editorControls
protected override void OnInit(EventArgs e) {
base.OnInit(e);
System.Web.UI.Page page = (System.Web.UI.Page)System.Web.HttpContext.Current.Handler;
page.ClientScript.RegisterClientScriptInclude(
"umbraco.editorControls.KeyValuePrevalueEditor.js",
page.ClientScript.GetWebResourceUrl(typeof(KeyValuePrevalueEditor), "umbraco.editorControls.KeyValuePrevalueEditor.js"));
HtmlHead head = (HtmlHead)page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", page.ClientScript.GetWebResourceUrl(typeof(KeyValuePrevalueEditor), "umbraco.editorControls.KeyValuePrevalueEditor.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
}
protected override void OnLoad(EventArgs e)
@@ -96,13 +126,55 @@ namespace umbraco.editorControls
public void Save()
{
_datatype.DBType = (cms.businesslogic.datatype.DBTypes)Enum.Parse(typeof(cms.businesslogic.datatype.DBTypes), _dropdownlist.SelectedValue, true);
// If the add new prevalue textbox is filled out - add the value to the collection.
//changes in name and sortorder
if (!string.IsNullOrEmpty(_tbhidden.Text))
{
int so = 0;
foreach (string row in _tbhidden.Text.Split(';'))
{
if (!string.IsNullOrEmpty(row))
{
int id = 0;
if (row.Split('|').Length == 2 && int.TryParse(row.Split('|')[0], out id) && row.Split('|')[1].Length > 0)
{
IParameter[] SqlParams = new IParameter[] {
SqlHelper.CreateParameter("@value",row.Split('|')[1]),
SqlHelper.CreateParameter("@sortorder",so),
SqlHelper.CreateParameter("@id",id)};
SqlHelper.ExecuteNonQuery("update cmsDataTypePreValues set [value] = @value, sortorder = @sortorder where id = @id", SqlParams);
}
so++;
}
}
_tbhidden.Text = "";
}
// If the add new prevalue textbox is filled out - add the value to the collection.
if (_textbox.Text != "")
{
int so = -1;
try
{
so = SqlHelper.ExecuteScalar<int>("select max(sortorder) from cmsDataTypePreValues where datatypenodeid = @dtdefid",
SqlHelper.CreateParameter("@dtdefid", _datatype.DataTypeDefinitionId));
so++;
}
catch { }
IParameter[] SqlParams = new IParameter[] {
SqlHelper.CreateParameter("@value",_textbox.Text),
SqlHelper.CreateParameter("@dtdefid",_datatype.DataTypeDefinitionId)};
SqlHelper.ExecuteNonQuery("insert into cmsDataTypePreValues (datatypenodeid,[value],sortorder,alias) values (@dtdefid,@value,0,'')",SqlParams);
SqlHelper.CreateParameter("@dtdefid",_datatype.DataTypeDefinitionId),
SqlHelper.CreateParameter("@so",so)};
SqlHelper.ExecuteNonQuery("insert into cmsDataTypePreValues (datatypenodeid,[value],sortorder,alias) values (@dtdefid,@value,@so,'')",SqlParams);
_textbox.Text = "";
ScriptManager.GetCurrent(Page).SetFocus(_textbox);
@@ -115,13 +187,14 @@ namespace umbraco.editorControls
_dropdownlist.RenderControl(writer);
writer.Write("<br style='clear: both'/></div>");
SortedList _prevalues = Prevalues;
List<KeyValuePair<int, String>> _prevalues = PrevaluesAsKeyValuePairList;
if (_prevalues.Count > 0) {
writer.Write("<div class='propertyItem'><table style='width: 100%'>");
writer.Write("<tr><th style='width: 15%'>Text</th><td colspan='2'>Value</td></tr>");
writer.Write("<div class='propertyItem'><table style='width: 100%' id=\"prevalues\">");
writer.Write("<tr class='header'><th style='width: 15%'>Text</th><td colspan='2'>Value</td></tr>");
foreach (object key in _prevalues.Keys) {
writer.Write("<tr><td>" + _prevalues[key].ToString() + "</td><td> " + key + "</td><td><a href='?id=" + _datatype.DataTypeDefinitionId + "&delete=" + key.ToString() + "'>" + ui.Text("delete") + "</a></td></tr>");
foreach (KeyValuePair<int, String> item in _prevalues)
{
writer.Write("<tr class=\"row\"><td class=\"text\">" + item.Value + "</td><td class=\"value\"> " + item.Key.ToString() + "</td><td><a onclick='javascript:return ConfirmPrevalueDelete();' href='?id=" + _datatype.DataTypeDefinitionId + "&delete=" + item.Key.ToString() + "'>" + ui.Text("delete") + "</a> <span class=\"handle\" style=\"cursor:move\">sort<span></td></tr>");
}
writer.Write("</table><br style='clear: both'/></div>");
}
@@ -129,14 +202,16 @@ namespace umbraco.editorControls
writer.Write("<div class='propertyItem'><div class='propertyItemheader'>" + ui.Text("addPrevalue") + "</div>");
_textbox.RenderControl(writer);
writer.Write("<br style='clear: both'/></div>");
_tbhidden.RenderControl(writer);
}
public SortedList Prevalues {
get
{
SortedList retval = new SortedList();
IRecordsReader dr = SqlHelper.ExecuteReader(
"Select id, [value] from cmsDataTypePreValues where DataTypeNodeId = "
@@ -148,5 +223,23 @@ namespace umbraco.editorControls
return retval;
}
}
public List<KeyValuePair<int, String>> PrevaluesAsKeyValuePairList
{
get
{
List<KeyValuePair<int, String>> items = new List<KeyValuePair<int, String>>();
IRecordsReader dr = SqlHelper.ExecuteReader(
"Select id, [value] from cmsDataTypePreValues where DataTypeNodeId = "
+ _datatype.DataTypeDefinitionId + " order by sortorder");
while (dr.Read())
items.Add(new KeyValuePair<int, string>(dr.GetInt("id"), dr.GetString("value")));
dr.Close();
return items;
}
}
}
}
@@ -0,0 +1,7 @@
#prevalues .ui-sortable-helper
{
border: 2px dotted #ccc;
background-color: #EEE;
}
@@ -0,0 +1,40 @@
jQuery(document).ready(function () {
jQuery("#prevalues .text").editable(function (value, settings) { $(this).html(value); ResetValues(); }, { onblur: 'submit', tooltip: 'Click to edit', cssclass: 'inlineEditor' });
jQuery("#prevalues tbody").sortable({
items: "tr:not(.header)",
handle: '.handle',
update: function () {
ResetValues();
}
});
});
function ResetValues() {
var val = "";
jQuery("#prevalues .row").each(function () {
var text = jQuery(".text", this).html();
var value = jQuery(".value", this).html();
val += value + "|" + text + ";";
});
jQuery(".valuesHiddenInput").val(val);
}
function ConfirmPrevalueDelete() {
return confirm("Are you sure you want to delete");
}
@@ -0,0 +1,40 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class CheckBox: DataEditorSettingType
{
private System.Web.UI.WebControls.CheckBox cb = new System.Web.UI.WebControls.CheckBox();
private string _val = string.Empty;
public override string Value
{
get
{
return cb.Checked.ToString();
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
cb.ID = sender.GetName();
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue) && DefaultValue == true.ToString())
cb.Checked = true;
else if(_val == true.ToString())
cb.Checked = true;
return cb;
}
}
}
@@ -0,0 +1,61 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class CheckBoxList : DataEditorSettingType
{
private System.Web.UI.WebControls.CheckBoxList cbl = new System.Web.UI.WebControls.CheckBoxList();
private string _val = string.Empty;
public override string Value
{
get
{
string retVal = string.Empty;
foreach (System.Web.UI.WebControls.ListItem item in cbl.Items)
{
if (item.Selected)
retVal += item.Value + ";";
}
return retVal;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
cbl.ID = sender.GetName();
cbl.Items.Clear();
foreach (string s in Prevalues)
{
System.Web.UI.WebControls.ListItem item = new System.Web.UI.WebControls.ListItem(s);
if(_val.Contains(s + ";"))
item.Selected = true;
cbl.Items.Add(item);
}
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
cbl.SelectedValue = DefaultValue;
return cbl;
}
}
}
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class DropDownList: DataEditorSettingType
{
private System.Web.UI.WebControls.DropDownList ddl = new System.Web.UI.WebControls.DropDownList();
private string _val = string.Empty;
public override string Value
{
get
{
return ddl.SelectedValue;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
ddl.ID = sender.GetName();
ddl.Items.Clear();
foreach (string s in Prevalues)
{
ddl.Items.Add(s);
}
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
ddl.SelectedValue = DefaultValue;
else
ddl.SelectedValue = _val;
return ddl;
}
}
}
@@ -0,0 +1,48 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class ListBox : DataEditorSettingType
{
private System.Web.UI.WebControls.ListBox lb = new System.Web.UI.WebControls.ListBox();
private string _val = string.Empty;
public override string Value
{
get
{
return lb.SelectedValue;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
lb.ID = sender.GetName();
lb.CssClass = "guiInputStandardSize";
lb.Items.Clear();
foreach (string s in Prevalues)
{
lb.Items.Add(s);
}
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
lb.SelectedValue = DefaultValue;
else
lb.SelectedValue = _val;
return lb;
}
}
}
@@ -0,0 +1,59 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class ListBoxMultiple : DataEditorSettingType
{
private System.Web.UI.WebControls.ListBox lb = new System.Web.UI.WebControls.ListBox();
private string _val = string.Empty;
public override string Value
{
get
{
string retVal = string.Empty;
foreach (System.Web.UI.WebControls.ListItem item in lb.Items)
{
if (item.Selected)
retVal += item.Value + ";";
}
return retVal;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
lb.ID = sender.GetName();
lb.SelectionMode = System.Web.UI.WebControls.ListSelectionMode.Multiple;
lb.CssClass = "guiInputStandardSize";
lb.Items.Clear();
foreach (string s in Prevalues)
{
System.Web.UI.WebControls.ListItem item = new System.Web.UI.WebControls.ListItem(s);
if (_val.Contains(s + ";"))
item.Selected = true;
lb.Items.Add(item);
}
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
lb.SelectedValue = DefaultValue;
return lb;
}
}
}
@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class Password : DataEditorSettingType
{
private TextBox tb = new TextBox();
public override string Value
{
get
{
return tb.Text;
}
set
{
tb.Text = value;
tb.Attributes["value"] = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
tb.ID = sender.GetName();
tb.TextMode = TextBoxMode.Password;
tb.CssClass = "guiInputText guiInputStandardSize";
if (string.IsNullOrEmpty(tb.Text) && !string.IsNullOrEmpty(DefaultValue))
tb.Text = DefaultValue;
return tb;
}
}
}
@@ -0,0 +1,68 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class BasePicker: DataEditorSettingType
{
public Guid ObjectGuid { get; set; }
private System.Web.UI.WebControls.DropDownList ddl = new System.Web.UI.WebControls.DropDownList();
private string _val = string.Empty;
public override string Value
{
get
{
return ddl.SelectedValue;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
ddl.ID = sender.GetName();
ddl.Items.Clear();
List<KeyValuePair<String, String>> items = new List<KeyValuePair<String, String>>();
if (ObjectGuid != Guid.Empty)
{
Guid[] guids = umbraco.cms.businesslogic.CMSNode.getAllUniquesFromObjectType(ObjectGuid);
foreach (Guid g in guids)
{
umbraco.cms.businesslogic.CMSNode node = new umbraco.cms.businesslogic.CMSNode(g);
items.Add(new KeyValuePair<string, string>(node.Id.ToString(), node.Text));
}
}
items.Sort(delegate(KeyValuePair<String, String> x, KeyValuePair<String, String> y) { return x.Value.CompareTo(y.Value); });
foreach (KeyValuePair<String, String> kv in items)
{
ddl.Items.Add(new System.Web.UI.WebControls.ListItem(kv.Value, kv.Key));
}
System.Web.UI.WebControls.ListItem li = new System.Web.UI.WebControls.ListItem("Choose...", "");
li.Selected = true;
ddl.Items.Insert(0, li);
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
ddl.SelectedValue = DefaultValue;
else
ddl.SelectedValue = _val;
return ddl;
}
}
}
@@ -0,0 +1,180 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using umbraco.cms.businesslogic.datatype;
using System.Web.UI.WebControls;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class Content : DataEditorSettingType
{
private ContentPickerWithXpathOption cc = new ContentPickerWithXpathOption();
private string _val = string.Empty;
public override string Value
{
get
{
return cc.Value;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
cc.ShowXPath = false;
cc.ID = sender.GetName().Replace(" ", "_");
cc.Value = _val;
return cc;
}
}
public class ContentWithXpath : DataEditorSettingType
{
private ContentPickerWithXpathOption cc = new ContentPickerWithXpathOption();
private string _val = string.Empty;
public override string Value
{
get
{
return cc.Value;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
cc.ShowXPath = true;
cc.ID = sender.GetName().Replace(" ", "_");
cc.Value = _val;
return cc;
}
}
public class ContentPickerWithXpathOption : WebControl
{
private bool _showXPath = true;
public bool ShowXPath
{
get { return _showXPath; }
set { _showXPath = value; }
}
private umbraco.controls.ContentPicker cc;
private TextBox tb;
public ContentPickerWithXpathOption()
{
EnsureChildControls();
}
protected override void OnInit(EventArgs e)
{
Page.ClientScript.RegisterClientScriptBlock(this.GetType(), "contentpickerxpath", @"
function showXpathTextbox(control)
{
$('.picker',$('#' + control)).hide();
$('.xpath',$('#' + control)).show();
}
function showContentPicker(control)
{
$('.xpath',$('#' + control)).hide();
$('.xpath input',$('#' + control)).val('');
$('.picker',$('#' + control)).show();
}
", true);
base.OnInit(e);
}
protected override void CreateChildControls()
{
cc = new umbraco.controls.ContentPicker();
this.Controls.Add(cc);
if (_showXPath)
{
tb = new TextBox();
tb.CssClass = "guiInputText guiInputStandardSize";
this.Controls.Add(tb);
}
}
protected override void RenderChildren(System.Web.UI.HtmlTextWriter writer)
{
writer.Write(string.Format("<div class=\"picker\"{0}>", tb.Text != string.Empty ? " style=\"display:none\"" : ""));
cc.RenderControl(writer);
if (_showXPath)
{
writer.Write(string.Format(
"&nbsp<a href=\"javascript:showXpathTextbox('{0}');\">Or enter Xpath</a>",
this.ClientID));
writer.Write("</div>");
writer.Write(string.Format("<div class=\"xpath\"{0}>", !(tb.Text != string.Empty) ? " style=\"display:none\"" : ""));
tb.RenderControl(writer);
writer.Write(string.Format(
"&nbsp;<a href=\"javascript:showContentPicker('{0}');\">Or pick node</a>",
this.ClientID));
}
writer.Write("</div>");
}
private string _val = string.Empty;
public string Value
{
get
{
if (_showXPath && tb.Text != string.Empty)
return tb.Text;
else
return cc.Value;
}
set
{
if (!string.IsNullOrEmpty(value))
{
_val = value;
int nodeId;
if (int.TryParse(_val, out nodeId))
cc.Value = _val;
else if (ShowXPath)
tb.Text = _val;
}
}
}
}
}
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.uicontrols.DatePicker;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class Date: DataEditorSettingType
{
private DateTimePicker dp = new DateTimePicker();
private string _val = string.Empty;
public override string Value
{
get
{
return dp.DateTime.ToString();
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
dp.ShowTime = false;
dp.ID = sender.GetName().Replace(" ", "_");
if(!string.IsNullOrEmpty(_val))
dp.DateTime = Convert.ToDateTime(_val);
return dp;
}
}
}
@@ -0,0 +1,41 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.uicontrols.DatePicker;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class DateWithTime : DataEditorSettingType
{
private DateTimePicker dp = new DateTimePicker();
private string _val = string.Empty;
public override string Value
{
get
{
return dp.DateTime.ToString();
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
dp.ShowTime = true;
dp.ID = sender.GetName().Replace(" ", "_");
if (!string.IsNullOrEmpty(_val))
dp.DateTime = Convert.ToDateTime(_val);
return dp;
}
}
}
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class DocumentType: BasePicker {
public DocumentType() {
ObjectGuid = new Guid("a2cb7800-f571-4787-9638-bc48539a0efb");
}
}
}
@@ -0,0 +1,66 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.DataLayer;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class Field : DataEditorSettingType
{
private System.Web.UI.WebControls.DropDownList ddl = new System.Web.UI.WebControls.DropDownList();
private string _val = string.Empty;
public override string Value
{
get
{
return ddl.SelectedValue;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
ddl.ID = sender.GetName();
ddl.Items.Clear();
List<KeyValuePair<String, String>> items = new List<KeyValuePair<String, String>>();
string[] preValuesSource = { "@createDate", "@creatorName", "@level", "@nodeType", "@nodeTypeAlias", "@pageID", "@pageName", "@parentID", "@path", "@template", "@updateDate", "@writerID", "@writerName" };
string fieldSql = "select distinct alias from cmsPropertyType order by alias";
IRecordsReader dataTypes = umbraco.BusinessLogic.Application.SqlHelper.ExecuteReader(fieldSql);
ddl.DataTextField = "alias";
ddl.DataValueField = "alias";
ddl.DataSource = dataTypes;
ddl.DataBind();
foreach (string s in preValuesSource)
{
ddl.Items.Add(new System.Web.UI.WebControls.ListItem(s, s.Replace("@", "")));
}
System.Web.UI.WebControls.ListItem li = new System.Web.UI.WebControls.ListItem("Choose...", "");
li.Selected = true;
ddl.Items.Insert(0, li);
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
ddl.SelectedValue = DefaultValue;
else
ddl.SelectedValue = _val;
return ddl;
}
}
}
@@ -0,0 +1,49 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class Media : DataEditorSettingType
{
private umbraco.controls.ContentPicker mp = new umbraco.controls.ContentPicker();
private string _val = string.Empty;
public override string Value
{
get
{
return mp.Value;
}
set
{
int output;
if (!string.IsNullOrEmpty(value) && int.TryParse(value, out output))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
mp.ID = sender.GetName().Replace(" ", "_");
mp.AppAlias = "media";
mp.TreeAlias = "media";
int output;
if (!string.IsNullOrEmpty(_val) && int.TryParse(_val, out output))
{
mp.Value = _val;
}
return mp;
}
}
}
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class MediaType : BasePicker
{
public MediaType()
{
ObjectGuid = new Guid("4ea4382b-2f5a-4c2b-9587-ae9b3cf3602e");
}
}
}
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class MemberGroup : BasePicker
{
public MemberGroup()
{
ObjectGuid = new Guid("366e63b9-880f-4e13-a61c-98069b029728");
}
}
}
@@ -0,0 +1,15 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class MemberType : BasePicker
{
public MemberType()
{
ObjectGuid = new Guid("9b5416fb-e72f-45a9-a07b-5a9a2709ce43");
}
}
}
@@ -0,0 +1,92 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
using System.Web.UI.WebControls;
namespace umbraco.editorControls.SettingControls.Pickers
{
public class Path : DataEditorSettingType
{
private PathPicker pp = new PathPicker();
private string _val = string.Empty;
public override string Value
{
get
{
return pp.Value;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
pp.ID = sender.GetName().Replace(" ", "_");
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
pp.Value = DefaultValue;
else
pp.Value = _val;
return pp;
}
}
public class PathPicker : WebControl
{
private TextBox tb;
public PathPicker()
{
EnsureChildControls();
}
protected override void CreateChildControls()
{
tb = new TextBox();
tb.CssClass = "guiInputText guiInputStandardSize";
tb.ID = this.ID + "input";
this.Controls.Add(tb);
}
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
tb.RenderControl(writer);
writer.WriteLine(string.Format(" <a onclick=\"{0}\"href=\"javascript:void(0);\">Select</a>",
string.Format("javascript:UmbClientMgr.openModalWindow('developer/packages/directoryBrowser.aspx?target={0}', 'Choose a file or a folder', true, 400, 500, 0, 0); return false;", tb.ClientID)));
}
private string _val = string.Empty;
public string Value
{
get
{
return tb.Text;
}
set
{
if (!string.IsNullOrEmpty(value))
{
_val = value;
tb.Text = _val;
}
}
}
}
}
@@ -0,0 +1,46 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class RadioButtonList: DataEditorSettingType
{
private System.Web.UI.WebControls.RadioButtonList rbl = new System.Web.UI.WebControls.RadioButtonList();
private string _val = string.Empty;
public override string Value
{
get
{
return rbl.SelectedValue;
}
set
{
if (!string.IsNullOrEmpty(value))
_val = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
rbl.ID = sender.GetName();
rbl.Items.Clear();
foreach (string s in Prevalues)
{
rbl.Items.Add(s);
}
if (string.IsNullOrEmpty(_val) && !string.IsNullOrEmpty(DefaultValue))
rbl.SelectedValue = DefaultValue;
else
rbl.SelectedValue = _val;
return rbl;
}
}
}
@@ -0,0 +1,42 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using umbraco.cms.businesslogic.datatype;
namespace umbraco.editorControls.SettingControls
{
public class TextArea : DataEditorSettingType
{
private TextBox tb = new TextBox();
public override string Value
{
get
{
return tb.Text;
}
set
{
tb.Text = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
tb.ID = sender.GetName();
tb.TextMode = TextBoxMode.MultiLine;
tb.CssClass = "guiInputText guiInputStandardSize";
tb.Rows = 7;
if (string.IsNullOrEmpty(tb.Text) && this.Prevalues.Count > 0)
tb.Text = this.Prevalues[0];
else if (string.IsNullOrEmpty(tb.Text) && !string.IsNullOrEmpty(DefaultValue))
tb.Text = DefaultValue;
return tb;
}
}
}
@@ -0,0 +1,39 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using umbraco.cms.businesslogic.datatype;
using System.Web.UI.WebControls;
namespace umbraco.editorControls.SettingControls
{
public class TextField : DataEditorSettingType
{
private TextBox tb = new TextBox();
public override string Value
{
get
{
return tb.Text;
}
set
{
tb.Text = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
tb.ID = sender.GetName();
tb.TextMode = TextBoxMode.SingleLine;
tb.CssClass = "guiInputText guiInputStandardSize";
if (string.IsNullOrEmpty(tb.Text) && !string.IsNullOrEmpty(DefaultValue))
tb.Text = DefaultValue;
return tb;
}
}
}
@@ -0,0 +1,73 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI.WebControls;
using System.Web.UI.HtmlControls;
using umbraco.cms.businesslogic.datatype;
[assembly: System.Web.UI.WebResource("umbraco.editorControls.SettingControls.js.Values.js", "text/js")]
[assembly: System.Web.UI.WebResource("umbraco.editorControls.SettingControls.css.Values.css", "text/css")]
namespace umbraco.editorControls.SettingControls
{
public class Values : DataEditorSettingType
{
private Panel p = new Panel();
private TextBox tb = new TextBox();
public override string Value
{
get
{
return tb.Text;
}
set
{
tb.Text = value;
}
}
public override System.Web.UI.Control RenderControl(DataEditorSetting sender)
{
tb.ID = sender.GetName();
tb.CssClass = "valuesInput";
tb.Attributes.Add("style", "display:none;");
string html = "<div class='values'>";
html += "</div>";
html += "<input type='text' class='valueInput' />";
html += " <a onclick=\"valuesDataEditorSettingTypeAddValue(this); return false;\" href='#' class='Add'>Add Value</a>";
p.Controls.Add(new System.Web.UI.LiteralControl("<div class='valuesDataEditorSettingType'>"));
p.Controls.Add(new System.Web.UI.LiteralControl(html));
p.Controls.Add(tb);
p.Controls.Add(new System.Web.UI.LiteralControl("</div>"));
System.Web.UI.Page page = (System.Web.UI.Page)HttpContext.Current.Handler;
page.ClientScript.RegisterClientScriptInclude(
"umbraco.editorControls.SettingControls.js.Values.js",
page.ClientScript.GetWebResourceUrl(typeof(Values), "umbraco.editorControls.SettingControls.js.Values.js"));
HtmlHead head = (HtmlHead)page.Header;
HtmlLink link = new HtmlLink();
link.Attributes.Add("href", page.ClientScript.GetWebResourceUrl(typeof(Values), "umbraco.editorControls.SettingControls.css.Values.css"));
link.Attributes.Add("type", "text/css");
link.Attributes.Add("rel", "stylesheet");
head.Controls.Add(link);
return p;
}
}
}
@@ -0,0 +1,15 @@
.valuesDataEditorSettingType .value
{
padding-bottom:5px;
}
.valuesDataEditorSettingType .value .del
{
color:Red;
cursor:pointer;
}
.valuesDataEditorSettingType .value .handle
{
cursor:move;
}
@@ -0,0 +1,183 @@
jQuery(document).ready(function () {
jQuery(".valuesDataEditorSettingType").each(function () {
var vals = jQuery(".valuesInput", this).val();
var values = jQuery(".values", this);
var vals_array = vals.split(";");
var part_num = 0;
while (part_num < vals_array.length) {
if (vals_array[part_num] != "") {
var existingValue = "<div class='value'><span>" + vals_array[part_num] + "</span> <a class='del'>Delete</a> <a class='handle'>Drag</a></div>";
values.append(existingValue);
}
part_num++;
}
});
jQuery(".valuesDataEditorSettingType .value .del").click(function () {
jQuery(this).parent().remove();
valuesDataEditorSettingTypeResetValues();
});
jQuery(".valuesDataEditorSettingType .value span").valuesInlineEdit();
jQuery(".valuesDataEditorSettingType .values").sortable({
handle : '.handle',
update : function () {
valuesDataEditorSettingTypeResetValues();
}
});
});
function valuesDataEditorSettingTypeAddValue(sender) {
var valuesDataEditorSettingType = jQuery(sender).parent();
var value = jQuery(".valueInput", valuesDataEditorSettingType).val();
if (value != "") {
var values = jQuery(".values", valuesDataEditorSettingType);
var newValue = "<div class='value'><span>" + value + "</span> <a class='del'>Delete</a> <a class='handle'>Drag</a></div>";
values.append(newValue);
jQuery(".valuesDataEditorSettingType .value span").valuesInlineEdit();
jQuery(".valueInput", valuesDataEditorSettingType).val("");
valuesDataEditorSettingTypeSetValues(values, jQuery(".valuesInput", valuesDataEditorSettingType));
}
jQuery(".valuesDataEditorSettingType .value .del").click(function () {
jQuery(this).parent().remove();
valuesDataEditorSettingTypeResetValues();
});
jQuery(".valuesDataEditorSettingType .values").sortable({
handle : '.handle',
update : function () {
valuesDataEditorSettingTypeResetValues();
}
});
}
function valuesDataEditorSettingTypeSetValues(valuesContainer,valuesInput) {
var vals = "";
jQuery(".value", valuesContainer).each(function () {
vals += jQuery("span",this).html() + ";";
});
valuesInput.val(vals);
}
function valuesDataEditorSettingTypeResetValues() {
jQuery(".valuesDataEditorSettingType").each(function () {
valuesDataEditorSettingTypeSetValues(jQuery(".values", this), jQuery(".valuesInput", this));
});
}
(function ($) {
$.fn.valuesInlineEdit = function (options) {
options = $.extend({
hover: 'hover',
value: '',
save: '',
placeholder: 'Click to edit'
}, options);
return $.each(this, function () {
$.valuesInlineEdit(this, options);
});
}
$.valuesInlineEdit = function (obj, options) {
var self = $(obj),
placeholderHtml = '<span class="inlineEdit-placeholder">' + options.placeholder + '</span>';
self.value = function (newValue) {
if (arguments.length) {
self.data('value', $(newValue).hasClass('inlineEdit-placeholder') ? '' : newValue);
}
return self.data('value');
}
self.value($.trim(self.text()) || options.value);
self.bind('click', function (event) {
var $this = $(event.target);
if ($this.is(self[0].tagName) || $this.hasClass('inlineEdit-placeholder')) {
self
.html('<input type="text" value="' + self.value() + '">')
.find('input')
.bind('blur', function () {
if ($this.children('input').val().length > 0) {
try {
self.value($this.children('input').val());
} catch (err) { }
}
else {
self.value('Click to edit');
}
if (self.timer) {
window.clearTimeout(self.timer);
}
self.timer = window.setTimeout(function () {
self.html(self.value() || placeholderHtml);
self.removeClass(options.hover);
valuesDataEditorSettingTypeResetValues();
}, 200);
})
.focus();
}
})
.hover(
function () {
$(this).addClass(options.hover);
},
function () {
$(this).removeClass(options.hover);
}
);
if (!self.value()) {
self.html($(placeholderHtml));
}
}
})(jQuery);
@@ -13,7 +13,7 @@ namespace umbraco.editorControls.checkboxlist
get
{
if (_Editor == null)
_Editor = new checkboxlistEditor(Data,((KeyValuePrevalueEditor)PrevalueEditor).Prevalues);
_Editor = new checkboxlistEditor(Data,((KeyValuePrevalueEditor)PrevalueEditor).PrevaluesAsKeyValuePairList);
return _Editor;
}
}

Some files were not shown because too many files have changed in this diff Show More