Fossil SCM

Add submenu links to trunk/tip when browsing files of a non-trunk/tip check-in.

joel 2013-04-24 02:34 trunk
Commit b5b0f1b3fc8c623f783e49c8bd905359a8a6c683
1 file changed +17 -18
+17 -18
--- src/browse.c
+++ src/browse.c
@@ -118,10 +118,11 @@
118118
int rid = 0;
119119
char *zUuid = 0;
120120
Blob dirname;
121121
Manifest *pM = 0;
122122
const char *zSubdirLink;
123
+ int linkTrunk = 1, linkTip = 1;
123124
124125
login_check_credentials();
125126
if( !g.perm.Read ){ login_needed(); return; }
126127
while( nD>1 && zD[nD-2]=='/' ){ zD[(--nD)-1] = 0; }
127128
style_header("File List");
@@ -136,26 +137,41 @@
136137
** files from all check-ins to be displayed.
137138
*/
138139
if( zCI ){
139140
pM = manifest_get_by_name(zCI, &rid);
140141
if( pM ){
142
+ int trunkRid = symbolic_name_to_rid("tag:trunk", "ci");
143
+ linkTrunk = trunkRid && rid != trunkRid;
144
+ linkTip = rid != symbolic_name_to_rid("tip", "ci");
141145
zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
142146
}else{
143147
zCI = 0;
144148
}
145149
}
146
-
147150
148151
/* Compute the title of the page */
149152
blob_zero(&dirname);
150153
if( zD ){
151154
blob_append(&dirname, "in directory ", -1);
152155
hyperlinked_path(zD, &dirname, zCI);
153156
zPrefix = mprintf("%s/", zD);
157
+ if( linkTrunk ){
158
+ style_submenu_element("Trunk", "Trunk", "%R/dir?name=%t&ci=trunk",
159
+ zD);
160
+ }
161
+ if ( linkTip ){
162
+ style_submenu_element("Tip", "Tip", "%R/dir?name=%t&ci=tip", zD);
163
+ }
154164
}else{
155165
blob_append(&dirname, "in the top-level directory", -1);
156166
zPrefix = "";
167
+ if( linkTrunk ){
168
+ style_submenu_element("Trunk", "Trunk", "%R/dir?ci=trunk");
169
+ }
170
+ if ( linkTip ){
171
+ style_submenu_element("Tip", "Tip", "%R/dir?ci=tip");
172
+ }
157173
}
158174
if( zCI ){
159175
char zShort[20];
160176
memcpy(zShort, zUuid, 10);
161177
zShort[10] = 0;
@@ -169,30 +185,13 @@
169185
style_submenu_element("All", "All", "%R/dir");
170186
style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%S",
171187
zUuid);
172188
}
173189
}else{
174
- int hasTrunk;
175190
@ <h2>The union of all files from all check-ins
176191
@ %s(blob_str(&dirname))</h2>
177
- hasTrunk = db_exists(
178
- "SELECT 1 FROM tagxref WHERE tagid=%d AND value='trunk'",
179
- TAG_BRANCH);
180192
zSubdirLink = mprintf("%R/dir?name=%T", zPrefix);
181
- if( zD ){
182
- style_submenu_element("Top", "Top", "%R/dir");
183
- style_submenu_element("Tip", "Tip", "%R/dir?name=%t&ci=tip", zD);
184
- if( hasTrunk ){
185
- style_submenu_element("Trunk", "Trunk", "%R/dir?name=%t&ci=trunk",
186
- zD);
187
- }
188
- }else{
189
- style_submenu_element("Tip", "Tip", "%R/dir?ci=tip");
190
- if( hasTrunk ){
191
- style_submenu_element("Trunk", "Trunk", "%R/dir?ci=trunk");
192
- }
193
- }
194193
}
195194
196195
/* Compute the temporary table "localfiles" containing the names
197196
** of all files and subdirectories in the zD[] directory.
198197
**
199198
--- src/browse.c
+++ src/browse.c
@@ -118,10 +118,11 @@
118 int rid = 0;
119 char *zUuid = 0;
120 Blob dirname;
121 Manifest *pM = 0;
122 const char *zSubdirLink;
 
123
124 login_check_credentials();
125 if( !g.perm.Read ){ login_needed(); return; }
126 while( nD>1 && zD[nD-2]=='/' ){ zD[(--nD)-1] = 0; }
127 style_header("File List");
@@ -136,26 +137,41 @@
136 ** files from all check-ins to be displayed.
137 */
138 if( zCI ){
139 pM = manifest_get_by_name(zCI, &rid);
140 if( pM ){
 
 
 
141 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
142 }else{
143 zCI = 0;
144 }
145 }
146
147
148 /* Compute the title of the page */
149 blob_zero(&dirname);
150 if( zD ){
151 blob_append(&dirname, "in directory ", -1);
152 hyperlinked_path(zD, &dirname, zCI);
153 zPrefix = mprintf("%s/", zD);
 
 
 
 
 
 
 
154 }else{
155 blob_append(&dirname, "in the top-level directory", -1);
156 zPrefix = "";
 
 
 
 
 
 
157 }
158 if( zCI ){
159 char zShort[20];
160 memcpy(zShort, zUuid, 10);
161 zShort[10] = 0;
@@ -169,30 +185,13 @@
169 style_submenu_element("All", "All", "%R/dir");
170 style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%S",
171 zUuid);
172 }
173 }else{
174 int hasTrunk;
175 @ <h2>The union of all files from all check-ins
176 @ %s(blob_str(&dirname))</h2>
177 hasTrunk = db_exists(
178 "SELECT 1 FROM tagxref WHERE tagid=%d AND value='trunk'",
179 TAG_BRANCH);
180 zSubdirLink = mprintf("%R/dir?name=%T", zPrefix);
181 if( zD ){
182 style_submenu_element("Top", "Top", "%R/dir");
183 style_submenu_element("Tip", "Tip", "%R/dir?name=%t&ci=tip", zD);
184 if( hasTrunk ){
185 style_submenu_element("Trunk", "Trunk", "%R/dir?name=%t&ci=trunk",
186 zD);
187 }
188 }else{
189 style_submenu_element("Tip", "Tip", "%R/dir?ci=tip");
190 if( hasTrunk ){
191 style_submenu_element("Trunk", "Trunk", "%R/dir?ci=trunk");
192 }
193 }
194 }
195
196 /* Compute the temporary table "localfiles" containing the names
197 ** of all files and subdirectories in the zD[] directory.
198 **
199
--- src/browse.c
+++ src/browse.c
@@ -118,10 +118,11 @@
118 int rid = 0;
119 char *zUuid = 0;
120 Blob dirname;
121 Manifest *pM = 0;
122 const char *zSubdirLink;
123 int linkTrunk = 1, linkTip = 1;
124
125 login_check_credentials();
126 if( !g.perm.Read ){ login_needed(); return; }
127 while( nD>1 && zD[nD-2]=='/' ){ zD[(--nD)-1] = 0; }
128 style_header("File List");
@@ -136,26 +137,41 @@
137 ** files from all check-ins to be displayed.
138 */
139 if( zCI ){
140 pM = manifest_get_by_name(zCI, &rid);
141 if( pM ){
142 int trunkRid = symbolic_name_to_rid("tag:trunk", "ci");
143 linkTrunk = trunkRid && rid != trunkRid;
144 linkTip = rid != symbolic_name_to_rid("tip", "ci");
145 zUuid = db_text(0, "SELECT uuid FROM blob WHERE rid=%d", rid);
146 }else{
147 zCI = 0;
148 }
149 }
 
150
151 /* Compute the title of the page */
152 blob_zero(&dirname);
153 if( zD ){
154 blob_append(&dirname, "in directory ", -1);
155 hyperlinked_path(zD, &dirname, zCI);
156 zPrefix = mprintf("%s/", zD);
157 if( linkTrunk ){
158 style_submenu_element("Trunk", "Trunk", "%R/dir?name=%t&ci=trunk",
159 zD);
160 }
161 if ( linkTip ){
162 style_submenu_element("Tip", "Tip", "%R/dir?name=%t&ci=tip", zD);
163 }
164 }else{
165 blob_append(&dirname, "in the top-level directory", -1);
166 zPrefix = "";
167 if( linkTrunk ){
168 style_submenu_element("Trunk", "Trunk", "%R/dir?ci=trunk");
169 }
170 if ( linkTip ){
171 style_submenu_element("Tip", "Tip", "%R/dir?ci=tip");
172 }
173 }
174 if( zCI ){
175 char zShort[20];
176 memcpy(zShort, zUuid, 10);
177 zShort[10] = 0;
@@ -169,30 +185,13 @@
185 style_submenu_element("All", "All", "%R/dir");
186 style_submenu_element("File Ages", "File Ages", "%R/fileage?name=%S",
187 zUuid);
188 }
189 }else{
 
190 @ <h2>The union of all files from all check-ins
191 @ %s(blob_str(&dirname))</h2>
 
 
 
192 zSubdirLink = mprintf("%R/dir?name=%T", zPrefix);
 
 
 
 
 
 
 
 
 
 
 
 
 
193 }
194
195 /* Compute the temporary table "localfiles" containing the names
196 ** of all files and subdirectories in the zD[] directory.
197 **
198

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button