Get Available Cultures Dynamic Content
I have a custom content type that I am attempting to get the available cultures for the item in my custom workflow. I have done this via Pages with the following
:var page = item.GetValue(context.DataContext) as ISecuredObject;
var pageManager = PageManager.GetManager();
var node = pageManager.GetPageNode(page.Id);
List<System.Globalization.CultureInfo> pageCultures = new List<System.Globalization.CultureInfo>(node.AvailableCultures);
This does not work the same way with my Dynamic Content. Has anyone done anything similar to what I am trying to accomplish?
Hi,
To get the available cultures of items of custom modules created by Module Builder you could use:
DynamicModuleManager dynamicModuleManager = DynamicModuleManager.GetManager();
Type testType = TypeResolutionService.ResolveType(
"Telerik.Sitefinity.DynamicTypes.Model.Test.Test"
);
var testItems = dynamicModuleManager.GetDataItems(testType).Where(i => i.Status == ContentLifecycleStatus.Live).ToList();
foreach
(var item
in
testItems)
var cultures = item.AvailableCultures.ToList();
I will try this out and see what I get. To take this a step farther. I am creating custom workflow for all my Dynamic Content. I am having troubles getting the workflow item and the properties associated with it. I did a workflow for pages and did not have issues. I tried to replicate the logic I used for pages and I am having troubles.
For the content item I did got all values of the properties:
var dataContext = context.DataContext;
var item = dataContext.GetProperties();
Then, I got every value for all 16 properties that exist:
var item = dataContext.GetProperties()["workflowItem"];
var item1 = dataContext.GetProperties()["masterFluent"];
var item2 = dataContext.GetProperties()["fluent"];
var item3 = dataContext.GetProperties()["currentPrincipal"];
var item4 = dataContext.GetProperties()["itemStatus"];
var item5 = dataContext.GetProperties()["IsItemPublished"];
var item6 = dataContext.GetProperties()["handle"];
var item7 = dataContext.GetProperties()["operationName"];
var item8 = dataContext.GetProperties()["workflowDefinitionID"];
var item9 = dataContext.GetProperties()["itemId"];
var item10 = dataContext.GetProperties()["applicationName"];
var item11 = dataContext.GetProperties()["contextBag"];
var item12 = dataContext.GetProperties()["workflowDefinition"];
var item13 = dataContext.GetProperties()["isCheckedOut"];
var item14 = dataContext.GetProperties()["result"];
var item15 = dataContext.GetProperties()["providerName"];
Next, I got each value for each property while I was in debug mode:
Now the question is, what property do I use in order to get the values of the actual workflow item itself? I have tried many different things and nothing seems to work. I think I may not be setting the value to the correct class type. For example, is the following correct (which I thought is what I need from the start):
var dataContext = context.DataContext;
var item = dataContext.GetProperties()["workflowItem"];
var module = item.GetValue(dataContext) as AnyDraftFacade;
By doing this, all values are null in my variable "module". Thoughts?
I have done the following to get the available cultures:
protected
override
void
Execute(CodeActivityContext context)
var dataContext = context.DataContext;
var manager = DynamicModuleManager.GetManager();
//Get Item Obect
var masterFluent = (MasterFacade)dataContext.GetProperties()[
"masterFluent"
].GetValue(dataContext);
//Get Module
var module = masterFluent.Get();
//Get Module Type
Type type = module.GetType();
//Get Data Item
var item = manager.GetDataItem(type, module.Id);
List<System.Globalization.CultureInfo> itemCultures =
new
List<System.Globalization.CultureInfo>(item.AvailableCultures);