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.
}
}
}