String GatherTpp::GatherTopics(const char *topic, String& title) { static StaticCriticalSection mapl; int q; INTERLOCKED_(mapl) q = tt.Find(topic); if(q < 0) { Topic p = ReadTopic(LoadFile(TopicFileName(topic))); title = p.title; String t = p; if(IsNull(t)) { String topicEng = ChangeTopicLanguage(topic, LNG_('E','N','U','S')); p = ReadTopic(LoadFile(TopicFileName(topicEng))); String tt = p; if(IsNull(tt)) return "index.html"; title = p.title; p.title += " (translated)"; String help = "topic://uppweb/www/contribweb$" + GetTopicLanguage(topic); p.text = String("{{1f1t0/50b0/50@(240.240.240) [<A2 ") + t_("This page has not been translated yet") + "]. " + "[^" + help + "^ [<A2 " + t_("Do you want to translate it?") + "]]}}&&" + p.text; } INTERLOCKED_(mapl) tt.Add(topic) = p; GatherLinkIterator ti(&reflink); ParseQTF(t).Iterate(ti); #ifdef MTC CoWork work; for(int i = 0; i < ti.link.GetCount(); i++) work & callback2(sGatherTopics, &tt, ti.link[i]); #else for(int i = 0; i < ti.link.GetCount(); i++) GatherTopics(ti.link[i]); #endif } else { INTERLOCKED_(mapl) title = tt[q].title; } return TopicFileNameHtml(topic); }
String GatherTpp::GatherTopics(const char *topic, String& title) { int q = tt.Find(topic); if(q < 0) { Topic p = ReadTopic(LoadFile(TopicFileName(topic))); title = p.title; String t = p; if(IsNull(t)) return "index.html"; tt.Add(topic) = p; GatherLinkIterator ti(&(reflink)); ParseQTF(t).Iterate(ti); for(int i = 0; i < ti.link.GetCount(); i++) { String dummy; GatherTopics(ti.link[i], dummy); } } else title = tt[q].title; return TopicFileNameHtml(topic); }