You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
131 lines
5.0 KiB
131 lines
5.0 KiB
14 years ago
|
Index: kdoctools/kio_help.cpp
|
||
|
===================================================================
|
||
|
--- kdoctools/kio_help.cpp.orig
|
||
|
+++ kdoctools/kio_help.cpp
|
||
|
@@ -44,7 +44,27 @@ QString HelpProtocol::langLookup(const Q
|
||
|
// assemble the local search paths
|
||
|
const QStringList localDoc = KGlobal::dirs()->resourceDirs("html");
|
||
|
|
||
|
+ kdDebug( 7119 ) << "Looking up help for: " << fname << endl;
|
||
|
+ QString _fname = fname;
|
||
|
+
|
||
|
+ QString path;
|
||
|
+ int slash = _fname.findRev ('/');
|
||
|
+ if (slash == -1 || slash == 0) {
|
||
|
+ path = _fname;
|
||
|
+ _fname = "";
|
||
|
+ } else {
|
||
|
+ path = _fname.left (slash);
|
||
|
+ _fname = _fname.right (_fname.length() - slash);
|
||
|
+ }
|
||
|
+
|
||
|
QStringList langs = KGlobal::locale()->languageList();
|
||
|
+ QStringList::ConstIterator lang;
|
||
|
+ for (lang = langs.begin(); lang != langs.end(); ++lang)
|
||
|
+ if ((*lang).left(2) == "en")
|
||
|
+ search.append(QString("/usr/share/gnome/help/%1/C%2").arg(path).arg(_fname));
|
||
|
+ else
|
||
|
+ search.append(QString("/usr/share/gnome/help/%1/%2%3").arg(path).arg(*lang).arg(_fname));
|
||
|
+
|
||
|
langs.append( "en" );
|
||
|
langs.remove( "C" );
|
||
|
|
||
|
@@ -60,7 +80,7 @@ QString HelpProtocol::langLookup(const Q
|
||
|
{
|
||
|
QStringList::ConstIterator lang;
|
||
|
for (lang = langs.begin(); lang != langs.end(); ++lang)
|
||
|
- search.append(QString("%1%2/%3").arg(localDoc[id], *lang, fname));
|
||
|
+ search.append(QString("%1%2/%3").arg(localDoc[id], *lang, path + _fname));
|
||
|
}
|
||
|
|
||
|
// try to locate the file
|
||
|
@@ -81,6 +101,15 @@ QString HelpProtocol::langLookup(const Q
|
||
|
if (info.exists() && info.isFile() && info.isReadable())
|
||
|
return *it;
|
||
|
}
|
||
|
+
|
||
|
+ if ( ( *it ).right( 5 ) == ".html" )
|
||
|
+ {
|
||
|
+ QString file = (*it).left((*it).findRev('/')) + "/" + path + ".xml";
|
||
|
+ kdDebug( 7119 ) << "Looking for help in: " << file << endl;
|
||
|
+ info.setFile(file);
|
||
|
+ if (info.exists() && info.isFile() && info.isReadable())
|
||
|
+ return *it;
|
||
|
+ }
|
||
|
}
|
||
|
|
||
|
|
||
|
@@ -100,7 +129,7 @@ QString HelpProtocol::lookupFile(const Q
|
||
|
result = langLookup(path);
|
||
|
if (result.isEmpty())
|
||
|
{
|
||
|
- result = langLookup(path+"/index.html");
|
||
|
+ result = langLookup(path + "/index.html");
|
||
|
if (!result.isEmpty())
|
||
|
{
|
||
|
KURL red( "help:/" );
|
||
|
@@ -190,12 +219,26 @@ void HelpProtocol::get( const KURL& url
|
||
|
}
|
||
|
} else {
|
||
|
QString docbook_file = file.left(file.findRev('/')) + "/index.docbook";
|
||
|
+ int last_slash = file.findRev('/');
|
||
|
+ if (last_slash != -1 && last_slash != 0) {
|
||
|
+ int slash2 = file.findRev('/', last_slash -1);
|
||
|
+ if (slash2 != -1 && slash2 != 0) {
|
||
|
+ int slash3 = file.findRev('/', slash2 - 1);
|
||
|
+ if (slash3 != -1) {
|
||
|
+ QString xml_file = file.left(file.findRev('/')) + "/" + file.mid(slash3 + 1, slash2 - (slash3 + 1)) + ".xml";
|
||
|
+ kdDebug( 7119 ) << "xml_file " << xml_file << endl;
|
||
|
+ QFileInfo fi(xml_file);
|
||
|
+ if (fi.exists())
|
||
|
+ docbook_file = xml_file;
|
||
|
+ }
|
||
|
+ }
|
||
|
+ }
|
||
|
if (!KStandardDirs::exists(file)) {
|
||
|
file = docbook_file;
|
||
|
} else {
|
||
|
QFileInfo fi(file);
|
||
|
if (fi.isDir()) {
|
||
|
- file = file + "/index.docbook";
|
||
|
+ file = docbook_file;
|
||
|
} else {
|
||
|
if ( file.right( 5 ) != ".html" || !compareTimeStamps( file, docbook_file ) ) {
|
||
|
get_file( target );
|
||
|
@@ -238,7 +281,11 @@ void HelpProtocol::get( const KURL& url
|
||
|
mParsed = transform(file, locate("dtd", "customization/kde-chunk.xsl"));
|
||
|
if ( !mParsed.isEmpty() ) {
|
||
|
infoMessage( i18n( "Saving to cache" ) );
|
||
|
- QString cache = file.left( file.length() - 7 );
|
||
|
+ QString cache;
|
||
|
+ if (file.endsWith(".xml"))
|
||
|
+ cache = file.left( file.length() - strlen ("xml") );
|
||
|
+ else
|
||
|
+ cache = file.left( file.length() - strlen ("docbook") );
|
||
|
saveToCache( mParsed, locateLocal( "cache",
|
||
|
"kio_help" + cache +
|
||
|
"cache.bz2" ) );
|
||
|
Index: kdoctools/xslt.cpp
|
||
|
===================================================================
|
||
|
--- kdoctools/xslt.cpp.orig
|
||
|
+++ kdoctools/xslt.cpp
|
||
|
@@ -278,10 +278,16 @@ static bool readCache( const QString &fi
|
||
|
QString lookForCache( const QString &filename )
|
||
|
{
|
||
|
kdDebug() << "lookForCache " << filename << endl;
|
||
|
- assert( filename.endsWith( ".docbook" ) );
|
||
|
+ assert( filename.endsWith( ".docbook" ) || filename.endsWith( ".xml" ) );
|
||
|
assert( filename.at( 0 ) == '/' );
|
||
|
|
||
|
- QString cache = filename.left( filename.length() - 7 );
|
||
|
+ QString cache;
|
||
|
+
|
||
|
+ if (filename.endsWith( ".xml" ))
|
||
|
+ cache = filename.left( filename.length() - strlen ("xml") );
|
||
|
+ else
|
||
|
+ cache = filename.left( filename.length() - strlen ("docbook") );
|
||
|
+
|
||
|
QString output;
|
||
|
if ( readCache( filename, cache + "cache.bz2", output) )
|
||
|
return output;
|