summaryrefslogtreecommitdiffstats
path: root/opensuse/core/tdelibs/fix-gnome-help-support.diff
blob: 78921f3b3de20cc32485c1e264f5e65d94f6b170 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
Index: kdoctools/kio_help.cpp
===================================================================
--- kdoctools/kio_help.cpp.orig
+++ kdoctools/kio_help.cpp
@@ -44,7 +44,27 @@ TQString HelpProtocol::langLookup(const 
     // assemble the local search paths
     const TQStringList localDoc = KGlobal::dirs()->resourceDirs("html") + KGlobal::dirs()->resourceDirs("html-bundle");
 
+    kdDebug( 7119 ) << "Looking up help for: " << fname << endl;
+    TQString _fname = fname;
+
+    TQString path;
+    int slash = _fname.findRev ('/');
+    if (slash == -1 || slash == 0) {
+      path = _fname;
+      _fname = "";
+    } else {
+      path = _fname.left (slash);
+      _fname = _fname.right (_fname.length() - slash);
+    }
+
     TQStringList langs = KGlobal::locale()->languageList();
+    TQStringList::ConstIterator lang;
+    for (lang = langs.begin(); lang != langs.end(); ++lang)
+        if ((*lang).left(2) == "en")
+	    search.append(TQString("/usr/share/gnome/help/%1/C%2").arg(path).arg(_fname));
+        else
+	    search.append(TQString("/usr/share/gnome/help/%1/%2%3").arg(path).arg(*lang).arg(_fname));
+
     langs.append( "en" );
     langs.remove( "C" );
 
@@ -60,7 +80,7 @@ TQString HelpProtocol::langLookup(const 
     {
         TQStringList::ConstIterator lang;
         for (lang = langs.begin(); lang != langs.end(); ++lang)
-            search.append(TQString("%1%2/%3").arg(localDoc[id], *lang, fname));
+            search.append(TQString("%1%2/%3").arg(localDoc[id], *lang, path + _fname));
     }
 
     // try to locate the file
@@ -81,6 +101,15 @@ TQString HelpProtocol::langLookup(const 
             if (info.exists() && info.isFile() && info.isReadable())
                 return *it;
         }
+
+        if ( ( *it ).right( 5 ) == ".html" )
+        {
+            TQString 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 @@ TQString HelpProtocol::lookupFile(const 
     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 {
         TQString 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) {
+	       TQString xml_file = file.left(file.findRev('/')) + "/" + file.mid(slash3 + 1, slash2 - (slash3 + 1)) + ".xml";
+	       kdDebug( 7119 ) << "xml_file " << xml_file << endl;
+	       TQFileInfo fi(xml_file);
+	       if (fi.exists())
+	         docbook_file = xml_file;
+	     }
+          }
+        }
         if (!KStandardDirs::exists(file)) {
             file = docbook_file;
         } else {
             TQFileInfo 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" ) );
-                TQString cache = file.left( file.length() - 7 );
+		TQString 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 TQString &f
 TQString lookForCache( const TQString &filename )
 {
     kdDebug() << "lookForCache " << filename << endl;
-    assert( filename.endsWith( ".docbook" ) );
+    assert( filename.endsWith( ".docbook" ) || filename.endsWith( ".xml" ) );
     assert( filename.at( 0 ) == '/' );
 
-    TQString cache = filename.left( filename.length() - 7 );
+    TQString cache;
+
+    if (filename.endsWith( ".xml" ))
+      cache = filename.left( filename.length() - strlen ("xml") );
+    else
+      cache = filename.left( filename.length() - strlen ("docbook") );
+
     TQString output;
     if ( readCache( filename, cache + "cache.bz2", output) )
         return output;