PageSelector Multilanguage

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

PageSelector Multilanguage

All Replies

Posted by Community Admin on 05-Feb-2013 00:00
Hello,

I'm using Sitefinity 5.1 and have problems with a Page selector control. The website is multilingual. Now I seem that the page selector always shows the page tree of the default language. If the default language is english, the english page tree will be displayed.
I need to display the page tree language depending on the language of the page I'm editing. If I edit spanish page, the page tree will be displayed in spanish. How I can do that?

Here's my code:
Designer.ascx

div class="rwWindowContent rwExternalContent">
    <div class="sfDialog sfSelectorDialog sfDesignerSimpleMode">
      <ul>
            <li>
                <sf:PageField ID="PageSelector" runat="server"        WebServiceUrl="~/Sitefinity/Services/Pages/PagesService.svc/" DisplayMode="Write" />           
            </li>
     </ul>
   </div>
</div>

Designer.cs

public class DesignerMapping : ContentViewDesignerView
 public override IEnumerable<System.Web.UI.ScriptDescriptor> GetScriptDescriptors()
        
           var descriptor = new ScriptControlDescriptor(this.GetType().FullName, this.ClientID);
           descriptor.AddComponentProperty("PageSelectorControl",this.Container.GetControl<Telerik.Sitefinity.Web.UI.Fields.PageField>     ("PageSelector", true).ClientID);
            return new[] descriptor ;
        
 
 protected override void InitializeControls(Telerik.Sitefinity.Web.UI.GenericContainer container)
        
            this.Container.GetControl<Telerik.Sitefinity.Web.UI.Fields.PageField>("PageSelector", true).RootNodeID = Telerik.Sitefinity.Abstractions.SiteInitializer.FrontendRootNodeId;
         

Designer.js

DesignerMapping = function (element)
    DesignerMapping.initializeBase(this, [element]);
    this._pageSelectorControl = null;
DesignerMapping.prototype =
    initialize: function ()
        DesignerMapping.callBaseMethod(this, 'initialize');
    ,
    dispose: function ()
        DesignerMapping.callBaseMethod(this, 'dispose');
    ,
    refreshUI: function ()
        var pageid = this.get_controlData().PageID;
        if (pageid )
            this.get_pageSelectorControl().set_value(pageid);
        
    ,
    applyChanges: function ()
        this.get_controlData().LoginPageID = this.get_pageSelectorControl().get_value();
    ,
    get_controlData: function ()
        return this.get_parentDesigner().get_propertyEditor().get_control(); 
    ,
    get_parentDesigner: function ()
        return this._parentDesigner;
    ,
    set_parentDesigner: function (value)
        this._parentDesigner = value;
    ,
    get_pageSelectorControl: function ()
        return this.pageSelectorControl;
    ,
    set_pageSelectorControl: function (value)
        this._pageSelectorControl = value;
    

Thanks,
Nathalia.



Posted by Community Admin on 05-Feb-2013 00:00
Hi Nathalia,

You could try to add this code to your Initialize method:
if (this.PropertyEditor != null)
   var uiCulture = this.PropertyEditor.PropertyValuesCulture;
   this.PageSelectorControl.UICulture = uiCulture;

Regards,
Daniel
Posted by Community Admin on 05-Feb-2013 00:00
Hi Daniel,
  Thanks for you reply. I used to ContentViewDesignerView so in this class doesn't have the this.PropertyEditor property and my control PageField doesn't contain a definition for 'UICulture', I don't know if exist a instance for that object.

this.Container.GetControl<Telerik.Sitefinity.Web.UI.Fields.PageField>("PageSelector", true).UICulture = uiCulture;

Thanks,
Nathalia.
This thread is closed