Bloom.Book.TranslationGroupManager.PrepareElementsOnPageOneLanguage C# (CSharp) Method

PrepareElementsOnPageOneLanguage() private static method

private static PrepareElementsOnPageOneLanguage ( XmlNode pageDiv, string isoCode ) : void
pageDiv System.Xml.XmlNode
isoCode string
return void
        private static void PrepareElementsOnPageOneLanguage(XmlNode pageDiv, string isoCode)
        {
            foreach (
                XmlElement groupElement in
                    pageDiv.SafeSelectNodes("descendant-or-self::*[contains(@class,'bloom-translationGroup')]"))
            {
                MakeElementWithLanguageForOneGroup(groupElement, isoCode);

                //remove any elements in the translationgroup which don't have a lang (but ignore any label elements, which we're using for annotating groups)
                foreach (
                    XmlElement elementWithoutLanguage in
                        groupElement.SafeSelectNodes("textarea[not(@lang)] | div[not(@lang) and not(self::label)]"))
                {
                    elementWithoutLanguage.ParentNode.RemoveChild(elementWithoutLanguage);
                }
            }

            //any editable areas which still don't have a language, set them to the vernacular (this is used for simple templates (non-shell pages))
            foreach (
                XmlElement element in
                    pageDiv.SafeSelectNodes( //NB: the jscript will take items with bloom-editable and set the contentEdtable to true.
                        "descendant-or-self::textarea[not(@lang)] | descendant-or-self::*[(contains(@class, 'bloom-editable') or @contentEditable='true'  or @contenteditable='true') and not(@lang)]")
                )
            {
                element.SetAttribute("lang", isoCode);
            }

            foreach (XmlElement e in pageDiv.SafeSelectNodes("descendant-or-self::*[starts-with(text(),'{')]"))
            {
                foreach (var node in e.ChildNodes)
                {
                    XmlText t = node as XmlText;
                    if (t != null && t.Value.StartsWith("{"))
                        t.Value = "";
                    //otherwise html tidy will throw away spans (at least) that are empty, so we never get a chance to fill in the values.
                }
            }
        }