Get Available Cultures Dynamic Content

Posted by Community Admin on 04-Aug-2018 16:35

Get Available Cultures Dynamic Content

All Replies

Posted by Community Admin on 03-Mar-2014 00:00

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?  

Posted by Community Admin on 04-Mar-2014 00:00

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();
           


Regards,
Stefani Tacheva
Telerik
Do you want to have your say in the Sitefinity development roadmap? Do you want to know when a feature you requested is added or when a bug fixed? Explore the Telerik Sitefinity CMS Ideas&Feedback Portal and vote to affect the priority of the items

Posted by Community Admin on 04-Mar-2014 00:00

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?

 

Posted by Community Admin on 05-Mar-2014 00:00

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);

This thread is closed