Esempio n. 1
0
        /* ================================================================================================ Methods */
        protected override void OnInit(EventArgs e)
        {
            UITools.AddScript("$skin/scripts/sn/SN.ContentName.js");
            ResourceEditorController.InitEditorScript(this.Page);

            base.OnInit(e);

            if (this.ControlMode == FieldControlControlMode.Browse)
            {
                return;
            }

            // init javascripts
            var innerControl         = GetInnerControl() as TextBox;
            var nameAvailableControl = GetNameAvailableControl();

            // autofill enabled for new contents only.
            var originalName = this.Content.Name;

            if (this.Content.Id == 0 || AlwaysUpdateName)
            {
                innerControl.Attributes.Add("onkeyup",
                                            string.Format("SN.ContentName.TextEnter('{0}', '{1}')", innerControl.ClientID, originalName));
            }

            // this scripts sets state of nameAvailableControl, to indicate if name is visible in dom
            var initScript = string.Format("SN.ContentName.InitNameControl('{0}','{1}', '{2}');", nameAvailableControl.ClientID, RepositoryPath.InvalidNameCharsPatternForClient, ContentNamingHelper.PlaceholderSymbol);

            UITools.RegisterStartupScript("InitNameControl", initScript, this.Page);
        }
Esempio n. 2
0
        public override void SetData(object data)
        {
            var displayName = data as string;

            _innerData = displayName;
            string className;
            string name;

            if (ResourceManager.ParseResourceKey(displayName, out className, out name))
            {
                var rescontrol = GetResourceEditorLinkControl();
                if (rescontrol != null)
                {
                    // write resourcesJSON to hidden textbox
                    var resourcesData = new Portal.ResourceEditorController.ResourceKeyData
                    {
                        Datas = ResourceEditorController.GetResources(className, name).Select(p => new Portal.ResourceEditorController.ResourceData {
                            Lang = p.Key, Value = p.Value
                        }).ToList(),
                        Name = displayName
                    };
                    var resourcesJSON = new JavaScriptSerializer().Serialize(resourcesData);
                    GetResourcesBoxControl().Text = resourcesJSON;

                    // send optionsJSON to client when clicked
                    string currentlang  = CultureInfo.CurrentUICulture.Name;
                    string currentlangp = CultureInfo.CurrentUICulture.Parent == null ? string.Empty : CultureInfo.CurrentUICulture.Parent.Name;
                    string dialogtitle  = ResourceManager.Current.GetString("Controls", "FieldControl-EditValue-Title");
                    var    title        = string.Format(dialogtitle, this.Field.DisplayName);

                    var optionsJSon = "{'link':$(this), 'currentlang':'" + currentlang + "','currentlangp':'" + currentlangp + "','title':'" + title + "'}";

                    rescontrol.OnClientClick = "SN.ResourceEditor.editResource('" + className + "','" + name + "'," + optionsJSon + "); return false;";
                    rescontrol.Text          = ResourceManager.Current.GetString(className, name);
                }
                var innerControl = GetInnerControl() as TextBox;
                innerControl.Style.Add("display", "none");
            }
            else
            {
                var resourceDiv = GetResourceDivControl();
                if (resourceDiv != null)
                {
                    resourceDiv.Visible = false;
                }
            }

            base.SetData(data);
        }
Esempio n. 3
0
        public override object GetData()
        {
            if (this.ControlMode == FieldControlControlMode.Browse || this.ReadOnly)
            {
                return(_innerData);
            }

            var nameAvailableControl = GetNameAvailableControl();

            // name control is available
            var nameControlAvailable = false;

            if (nameAvailableControl != null)
            {
                if (nameAvailableControl.Text != "0")
                {
                    nameControlAvailable = true;
                }
            }

            var displayName  = string.Empty;
            var innerControl = GetInnerControl() as TextBox;

            displayName = innerControl.Text;

            string className;
            string name;

            if (ResourceManager.ParseResourceKey(displayName, out className, out name))
            {
                // get resources
                var allresStr = GetResourcesBoxControl().Text;

                // if resources JSON is empty, we just entered a resource key into displayname control, but it does not yet come from the resource editor
                if (!string.IsNullOrEmpty(allresStr))
                {
                    var ser    = new JavaScriptSerializer();
                    var allres = ser.Deserialize <Portal.ResourceEditorController.ResourceKeyData>(allresStr);

                    // value comes from the resource editor ui
                    displayName = allres.Name;

                    // if the entered value is a resource key, then update corresponding resources
                    if (ResourceManager.ParseResourceKey(displayName, out className, out name))
                    {
                        ResourceEditorController.SaveResource(className, name, allres.Datas);
                    }
                }
            }

            if (!nameControlAvailable && (this.Content.Id == 0 || AlwaysUpdateName))
            {
                // content name should be set automatically generated from displayname
                var newName = ContentNamingHelper.GetNameFromDisplayName(this.Content.Name, displayName);
                if (newName.Length > 0)
                {
                    this.Content["Name"] = newName;
                }
            }

            return(displayName);
        }