String GatherTpp::Www(const char *topic, int lang, String topicLocation) { String strLang = ToLower(LNGAsText(lang)); String www = GatherTopics(String().Cat() << topicLocation << topic << "$" << strLang); if (www != "index.html") return www; return GatherTopics(String().Cat() << topicLocation << topic << "$" << "en-us"); }
bool GatherTpp::Load(String indexFile, Gate2<int, int> progress) { indexTopic = GetIndexTopic(indexFile); for (int i = 0; i < rootFolders.GetCount(); ++i) { if (progress(i+1, rootFolders.GetCount())) return false; dir = rootFolders[i]; if (!DirectoryExists(dir)) return false; GatherRefLinks(dir); if (i == 0) GatherTopics(indexTopic); } return true; }
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); }
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 dummy; return GatherTopics(topic, dummy); }