Fossil SCM

Enhance the /setup_skin page to enable renaming of custom skins.

drh 2015-01-23 22:55 trunk
Commit 2431ddf61b96b5c7ff51d9660c8570af4d4d11ef
1 file changed +40 -15
+40 -15
--- src/skins.c
+++ src/skins.c
@@ -102,10 +102,45 @@
102102
azType[i], z
103103
);
104104
}
105105
return blob_str(&val);
106106
}
107
+
108
+/*
109
+** Respond to a Rename button press. Return TRUE if a dialog was painted.
110
+** Return FALSE to continue with the main Skins page.
111
+*/
112
+static int skinRename(void){
113
+ const char *zOldName;
114
+ const char *zNewName;
115
+ if( P("rename")==0 ) return 0;
116
+ zOldName = P("sn");
117
+ zNewName = P("newname");
118
+ if( zOldName==0 ) return 0;
119
+ if( zNewName==0 || zNewName[0]==0 ){
120
+ style_header("Rename A Skin");
121
+ @ <form action="%s(g.zTop)/setup_skin" method="post"><div>
122
+ @ <table border="0"><tr>
123
+ @ <tr><td align="right">Current name:<td align="left"><b>%h(zOldName)</b>
124
+ @ <tr><td align="right">New name:<td align="left">
125
+ @ <input type="text" size="35" name="newname" value="%h(zOldName)">
126
+ @ <tr><td><td>
127
+ @ <input type="hidden" name="sn" value="%h(zOldName)">
128
+ @ <input type="submit" name="rename" value="Rename">
129
+ @ <input type="submit" name="canren" value="Cancel">
130
+ @ </table>
131
+ login_insert_csrf_secret();
132
+ @ </div></form>
133
+ style_footer();
134
+ return 1;
135
+ }
136
+ db_multi_exec(
137
+ "UPDATE config SET name='skin:%q' WHERE name='skin:%q';",
138
+ zNewName, zOldName
139
+ );
140
+ return 0;
141
+}
107142
108143
/*
109144
** WEBPAGE: setup_skin
110145
*/
111146
void setup_skin(void){
@@ -141,21 +176,11 @@
141176
return;
142177
}
143178
if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){
144179
db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
145180
}
146
- if( P("save")!=0 && (zName = skinVarName(P("save"),0))!=0 ){
147
- if( db_exists("SELECT 1 FROM config WHERE name=%Q", zName)
148
- || fossil_strcmp(zName, "Default")==0 ){
149
- zErr = mprintf("Skin name \"%h\" already exists. "
150
- "Choose a different name.", P("sn"));
151
- }else{
152
- db_multi_exec("INSERT INTO config(name,value,mtime) VALUES(%Q,%Q,now())",
153
- zName, zCurrent
154
- );
155
- }
156
- }
181
+ if( skinRename() ) return;
157182
158183
/* The user pressed one of the "Install" buttons. */
159184
if( P("load") && (z = P("sn"))!=0 && z[0] ){
160185
int seen = 0;
161186
@@ -228,21 +253,21 @@
228253
while( db_step(&q)==SQLITE_ROW ){
229254
const char *zN = db_column_text(&q, 0);
230255
const char *zV = db_column_text(&q, 1);
231256
i++;
232257
@ <tr><td>%d(i).<td>%h(zN)<td>&nbsp;&nbsp;<td>
258
+ @ <form action="%s(g.zTop)/setup_skin" method="post">
233259
if( fossil_strcmp(zV, zCurrent)==0 ){
234260
@ (Currently In Use)
235261
}else{
236
- @ <form action="%s(g.zTop)/setup_skin" method="post">
237
- @ <input type="hidden" name="sn" value="%h(zN)">
238262
@ <input type="submit" name="load" value="Install">
239263
@ <input type="submit" name="del1" value="Delete">
240
- @ </form>
241264
}
242
- @ </tr>
265
+ @ <input type="submit" name="rename" value="Rename">
266
+ @ <input type="hidden" name="sn" value="%h(zN)">
267
+ @ </form></tr>
243268
}
244269
db_finalize(&q);
245270
@ </table>
246271
style_footer();
247272
db_end_transaction(0);
248273
}
249274
--- src/skins.c
+++ src/skins.c
@@ -102,10 +102,45 @@
102 azType[i], z
103 );
104 }
105 return blob_str(&val);
106 }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
108 /*
109 ** WEBPAGE: setup_skin
110 */
111 void setup_skin(void){
@@ -141,21 +176,11 @@
141 return;
142 }
143 if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){
144 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
145 }
146 if( P("save")!=0 && (zName = skinVarName(P("save"),0))!=0 ){
147 if( db_exists("SELECT 1 FROM config WHERE name=%Q", zName)
148 || fossil_strcmp(zName, "Default")==0 ){
149 zErr = mprintf("Skin name \"%h\" already exists. "
150 "Choose a different name.", P("sn"));
151 }else{
152 db_multi_exec("INSERT INTO config(name,value,mtime) VALUES(%Q,%Q,now())",
153 zName, zCurrent
154 );
155 }
156 }
157
158 /* The user pressed one of the "Install" buttons. */
159 if( P("load") && (z = P("sn"))!=0 && z[0] ){
160 int seen = 0;
161
@@ -228,21 +253,21 @@
228 while( db_step(&q)==SQLITE_ROW ){
229 const char *zN = db_column_text(&q, 0);
230 const char *zV = db_column_text(&q, 1);
231 i++;
232 @ <tr><td>%d(i).<td>%h(zN)<td>&nbsp;&nbsp;<td>
 
233 if( fossil_strcmp(zV, zCurrent)==0 ){
234 @ (Currently In Use)
235 }else{
236 @ <form action="%s(g.zTop)/setup_skin" method="post">
237 @ <input type="hidden" name="sn" value="%h(zN)">
238 @ <input type="submit" name="load" value="Install">
239 @ <input type="submit" name="del1" value="Delete">
240 @ </form>
241 }
242 @ </tr>
 
 
243 }
244 db_finalize(&q);
245 @ </table>
246 style_footer();
247 db_end_transaction(0);
248 }
249
--- src/skins.c
+++ src/skins.c
@@ -102,10 +102,45 @@
102 azType[i], z
103 );
104 }
105 return blob_str(&val);
106 }
107
108 /*
109 ** Respond to a Rename button press. Return TRUE if a dialog was painted.
110 ** Return FALSE to continue with the main Skins page.
111 */
112 static int skinRename(void){
113 const char *zOldName;
114 const char *zNewName;
115 if( P("rename")==0 ) return 0;
116 zOldName = P("sn");
117 zNewName = P("newname");
118 if( zOldName==0 ) return 0;
119 if( zNewName==0 || zNewName[0]==0 ){
120 style_header("Rename A Skin");
121 @ <form action="%s(g.zTop)/setup_skin" method="post"><div>
122 @ <table border="0"><tr>
123 @ <tr><td align="right">Current name:<td align="left"><b>%h(zOldName)</b>
124 @ <tr><td align="right">New name:<td align="left">
125 @ <input type="text" size="35" name="newname" value="%h(zOldName)">
126 @ <tr><td><td>
127 @ <input type="hidden" name="sn" value="%h(zOldName)">
128 @ <input type="submit" name="rename" value="Rename">
129 @ <input type="submit" name="canren" value="Cancel">
130 @ </table>
131 login_insert_csrf_secret();
132 @ </div></form>
133 style_footer();
134 return 1;
135 }
136 db_multi_exec(
137 "UPDATE config SET name='skin:%q' WHERE name='skin:%q';",
138 zNewName, zOldName
139 );
140 return 0;
141 }
142
143 /*
144 ** WEBPAGE: setup_skin
145 */
146 void setup_skin(void){
@@ -141,21 +176,11 @@
176 return;
177 }
178 if( P("del2")!=0 && (zName = skinVarName(P("sn"), 1))!=0 ){
179 db_multi_exec("DELETE FROM config WHERE name=%Q", zName);
180 }
181 if( skinRename() ) return;
 
 
 
 
 
 
 
 
 
 
182
183 /* The user pressed one of the "Install" buttons. */
184 if( P("load") && (z = P("sn"))!=0 && z[0] ){
185 int seen = 0;
186
@@ -228,21 +253,21 @@
253 while( db_step(&q)==SQLITE_ROW ){
254 const char *zN = db_column_text(&q, 0);
255 const char *zV = db_column_text(&q, 1);
256 i++;
257 @ <tr><td>%d(i).<td>%h(zN)<td>&nbsp;&nbsp;<td>
258 @ <form action="%s(g.zTop)/setup_skin" method="post">
259 if( fossil_strcmp(zV, zCurrent)==0 ){
260 @ (Currently In Use)
261 }else{
 
 
262 @ <input type="submit" name="load" value="Install">
263 @ <input type="submit" name="del1" value="Delete">
 
264 }
265 @ <input type="submit" name="rename" value="Rename">
266 @ <input type="hidden" name="sn" value="%h(zN)">
267 @ </form></tr>
268 }
269 db_finalize(&q);
270 @ </table>
271 style_footer();
272 db_end_transaction(0);
273 }
274

Keyboard Shortcuts

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