API
Are you missing any API for your custom development?
-
LINQ interface to the content tree, custom document types, custom tables, everything!
It's almost 2010, I think we are ready to move beyond simple untyped DataSets...
131 votesstarted ·
Michal Neuwirth (Product Manager)
responded
Preparing for version 6.0
-
New API with proper object orientation
New API layer with:
- Real object orientation
- Strongly typed data access
- Proper intellisense support in Visual StudioFor example, the CMS.TreeEngine.TreeProvider.SelectNodes() and other similar methods simply return a dataset. This data is tabular and by no means object oriented, nor strongly typed.
An improvement would be if such methods would for example return a strongly typed NodeCollection.
To take this idea a step further, an object oriented data layer could automatically be generated for custom document types. I have written such code myself and it is quite doable.
92 votesstarted ·
Michal Neuwirth (Product Manager)
responded
We are preparing Business Layer & LINQ support for version 6.0
-
Start API redesign with unit testing in mind
I am working on a Class Library project to support ASPX development. I need to be able to unit test the code I write. I also need to write integration tests that hit the database.
It seems impossible... I don't understand how you could have created 60 assemblies and manage to have dependencies all over the place, but you sure did.
Working with a database connection alone spans over 3 or 4 assemblies, with multiple hardcoded dependencies and 'providers' that are not providers (since you can't change them), and reinventions of classes that have been in the .NET BCL since… more
55 votes -
Rebuild Document tree API to Strong Type Objects
Would be greate to have a Strong Type Objects for working with Docuemtn Tree
For now becouse it return DataSet, it not possible to work with LINQ for example, and Intellisence is not working too. Developer need to know what exatly the DataSet colums name is returning ...
Example from current Documentation
using CMS.SiteProvider;
DataSet ds = null;
// create a TreeProvider instance
UserInfo ui = UserInfoProvider.GetUserInfo("administrator");
CMS.TreeEngine.TreeProvider tree = new CMS.TreeEngine.TreeProvider(ui);
// get dataset of tree nodes specified by alias path and class names (separated by semicolon),
// the second parameter says whether to return default culture documents if… more
43 votesstarted ·
Michal Neuwirth (Product Manager)
responded
We are working on the Business Layer & LINQ support
-
Use dependency injection (DI) in the API/code to allow for better testability.
It is difficult to test customized code, especially the e-commerce providers, without DI because it requires the testing code to be running the entire site with full database state. It is only possible to test in isolation by creating lots of mocks and stubs which reverse engineering the necessary calls based on what is being tested.
28 votes -
23 votes
-
All macros should use same syntax throuhout the system
Presently, depending where you add a macro you must use the API syntax to insert i.e. a custom string:
<%= CMS.GlobalHelper.ResHelper.GetString("pwl.flash.lan") %>versus {$pwl.flash.lan$}
18 votesunder review ·
Michal Neuwirth (Product Manager)
responded
Considering for version 6.0
-
Event Driven
There are many parts of Kentico that would be nice to have notification of individual events. If someone could register event handlers for things like "user logged in", "order placed", etc. we could place our custom code in the exact places and react to things happening without having to overwrite complete pieces of eCommerce code, complete web parts, etc.
So it would be nice to have the MAJOR events within the system event enabled so that we as developers can tie into those specific areas.
6 votes