Example #1
0
  //const string dataPath = Machines.basicPath + @"rew\Web4\Schools\EAData\";
  //const string grammarPath = Machines.basicPath + @"rew\Web4\Schools\EAGrammar\";

  static IEnumerable<schools.grammarNode> grItems(IEnumerable<XElement> root) {
    foreach (var el in root) {
      var childs = el.Elements("folder").ToArray();
      if (childs.Length > 0) {
        schools.grammarNode fld = new schools.grammarNode() { title = el.AttributeValue("title") };
        fld.items = grItems(childs).ToArray();
        yield return fld;
      } else {
        schools.grammarNode lf = new schools.grammarNode() { title = el.AttributeValue("title"), jsonId = el.AttributeValue("spaceId") + "/" + el.AttributeValue("globalId") };
        yield return lf;
      }
    }
  }
Example #2
0
  //Sitemap gramatiky s lokalizaci
  //Pouzito v Products.export (= generace sitemap pro kurz)
  public static Dictionary<Langs, string> getGrammar(ProductsDefine.productDescrLow prod, out schools.grammarNode gramm) {
    int[] gramLevs = prod.grammarLevels().ToArray();
    gramm = null;
    if (gramLevs.Length == 0)
      return prod.locs().ToDictionary(l => l, l => "{}");
    CourseIds crsId = prod.course;
    XElement root = XElement.Load(Machines.lmcomData + @"Statistic_Grammar.xml");
    var crsNode = root.Elements("folder").FirstOrDefault(nd => LowUtils.EnumParse<CourseIds>(nd.AttributeValue("id")) == crsId);
    if (crsNode == null)
      return prod.locs().ToDictionary(l => l, l => "{}");
    //******************* grammar sitemap for crsId a lmLevels
    int gramLev = -1;
    gramm = new schools.grammarNode() {
      title = crsNode.AttributeValue("title"),
      courseId = crsId,
      items = crsNode.Elements("folder").
        Where((e, idx) => gramLevs.Contains(gramLev = getGramLev(crsId, idx))).
        Select(e => new schools.grammarNode() {
          title = e.AttributeValue("title"),
          jsonId = fileName(crsId, gramLev), //napr. english_0
          LMLevel = gramLev,
          items = grItems(e.Elements("folder")).ToArray()
        }).ToArray()
    };
    if (gramm != null && gramm.items.Length == 1) { gramm = (schools.grammarNode)gramm.items[0]; gramm.courseId = crsId; }

    //******************* sitemap localization for crsId a lmLevels
    var rootToLoc = new XElement("folder", new XAttribute("title", crsNode.AttributeValue("title")), crsNode.Elements().Where(el => el.Name.LocalName != "folder"));
    var s1 = new XElement[] { crsNode };
    var s2 = crsNode.Elements("folder").Where((e, idx) => gramLevs.Contains(getGramLev(crsId, idx)));
    var s3 = s2.SelectMany(n => n.Descendants("folder"));

    var siteLocs = prod.locs().
      Select(l => new {
        lang = l,
        locs = JsonConvert.SerializeObject(
          s1.Concat(s2).Concat(s3).
            Select(n => n.Elements(l.ToString()).SingleOrDefault()).
            Where(n => n != null).
            Select(n => new { id = n.Parent.AttributeValue("title"), title = n.Value }).
            Where(it => it.id.StartsWith("{{")).
            ToArray().
            ToDictionary(it => it.id.Substring(2, it.id.Length - 4), it => it.title),
          Newtonsoft.Json.Formatting.Indented, EADeployLib.jsonSet
        )
      }).
      ToDictionary(l => l.lang, l => l.locs);

    return siteLocs;
  }