relationship IShapeFactoryEvents and Feature?

Topics: Writing modules
Feb 17, 2011 at 5:37 PM

I'm looking at "public class Shapes : IShapeFactoryEvents" in module Orchard.Experimental.

Why is this class only used when feature 'Orchard.Experimental' is enabled? Since the module contains more than feature: Why is this related?

For other features like 'Orchard.Experimental.WebCommandLine' there is an explicit attribute being used on Orchard.Experimental.Controllers.CommandsController: '[OrchardFeature("Orchard.Experimental.WebCommandLine")]' -- so what implicit relationship is there?

Feb 17, 2011 at 7:31 PM

I'm sorry but I'm having trouble understanding the question. If you're asking how enabling and disabling features affects the code that you can call, well the code itself is always there, but whether it can be injected through IoC is affected. The OrchardFeature attribute helps declaring that.

Feb 17, 2011 at 9:01 PM

But there is no OrchardFeatureAttribute applied to the Orchard.Experimental.Shapes class. That's exactly the question: Why depends this on enabling feature Orchard.Experimental (one of many features inside the very same module)?

Feb 17, 2011 at 9:08 PM

That is probably an oversight. The Experimental module is experimental.

Feb 17, 2011 at 9:24 PM

Of course it's experimental ;)

But since Orchard.Experimental.Controllers.ShapeTableController also has no OrchardFeatureAttribute, but also requires the "Orchard.Experimental" to work: Is there a rule which implicitly assigns the first listed feature in Module.txt if there is no explicitly written OrchardFeatureAttribute? Or is there some other magically matching rule?

Feb 17, 2011 at 9:32 PM

Ah, yes, each module has a default feature that has the same name as the module.

Feb 17, 2011 at 11:20 PM

I'm puzzled: When you say "name" you don't mean what appears after "Name: " but more likely "ID" (module folder name / feature node in Module.txt)? Because what is named "Name: " in Module.txt seems to be just a UI friendly caption/title?

Feb 17, 2011 at 11:22 PM

Yes, my bad.

Feb 18, 2011 at 8:04 AM

Does there exist a real detail reference for Module.txt or, yet? (I found none.)

While playing around I found out: At least "Name: " for the module is not only used for a "UI caption" but also defines the route to the controllers+views (so you should not use spaces in there, should you?).

Feb 18, 2011 at 7:20 PM

You are right and that was fixed recently (see

There is no reference document for those, but it's high on the list. Thanks for the feedback.