Fossil

Diff
Login

Differences From Artifact [950d48b3d9]:

To Artifact [2e7fe6a641]:


56
57
58
59
60
61
62



63


64
65
66
67
68
69
70
56
57
58
59
60
61
62
63
64
65

66
67
68
69
70
71
72
73
74







+
+
+
-
+
+







** Return NULL if zSkinName is NULL or an empty string.
**
** If ifExists is true, and the named skin does not exist, return NULL.
*/
static char *skinVarName(const char *zSkinName, int ifExists){
  char *z;
  if( zSkinName==0 || zSkinName[0]==0 ) return 0;
  if( g.zSkin ){
    z = mprintf("skin(%s):%s", g.zSkin, zSkinName);
  }else{
  z = mprintf("skin:%s", zSkinName);
    z = mprintf("skin:%s", zSkinName);
  }
  if( ifExists && !db_exists("SELECT 1 FROM config WHERE name=%Q", z) ){
    free(z);
    z = 0;
  }
  return z;
}

94
95
96
97
98
99
100
101

102
103
104
105
106
107
108
98
99
100
101
102
103
104

105
106
107
108
109
110
111
112







-
+







        zLabel = mprintf("skins/default/%s.txt", azType[i]);
        z = builtin_text(zLabel);
        fossil_free(zLabel);
      }
    }
    blob_appendf(&val,
       "REPLACE INTO config(name,value,mtime) VALUES(%Q,%Q,now());\n",
       azType[i], z
       db_skin_name(azType[i]), z
    );
  }
  return blob_str(&val);
}

/*
** WEBPAGE: setup_skin
164
165
166
167
168
169
170
171
172




173
174
175
176
177



178
179
180
181
182
183
184
168
169
170
171
172
173
174


175
176
177
178
179
180



181
182
183
184
185
186
187
188
189
190







-
-
+
+
+
+


-
-
-
+
+
+







    for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
      if( fossil_strcmp(aBuiltinSkin[i].zSQL, zCurrent)==0 ){
        seen = 1;
        break;
      }
    }
    if( !seen ){
      seen = db_exists("SELECT 1 FROM config WHERE name GLOB 'skin:*'"
                       " AND value=%Q", zCurrent);
      seen = db_exists("SELECT 1 FROM config"
                       " WHERE name GLOB %Q"
                       "   AND value=%Q",
                       skinVarName("*",0), zCurrent);
      if( !seen ){
        db_multi_exec(
          "INSERT INTO config(name,value,mtime) VALUES("
          "  strftime('skin:Backup On %%Y-%%m-%%d %%H:%%M:%%S'),"
          "  %Q,now())", zCurrent
          "INSERT INTO config(name,value,mtime) "
          " VALUES(strftime(%Q),%Q,now())",
          skinVarName("Backup On %Y-%m-%d %H:%M:%S",0), zCurrent
        );
      }
    }
    seen = 0;
    for(i=0; i<sizeof(aBuiltinSkin)/sizeof(aBuiltinSkin[0]); i++){
      if( fossil_strcmp(aBuiltinSkin[i].zDesc, z)==0 ){
        seen = 1;
217
218
219
220
221
222
223
224
225



226
227
228
229
230

231
232
233
234
235
236
237
223
224
225
226
227
228
229


230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245







-
-
+
+
+





+







      @ <input type="submit" name="load" value="Install" />
      @ </form>
    }
    @ </tr>
  }
  db_prepare(&q,
     "SELECT substr(name, 6), value FROM config"
     " WHERE name GLOB 'skin:*'"
     " ORDER BY name"
     " WHERE name GLOB %Q"
     " ORDER BY name",
     skinVarName("*",0)
  );
  while( db_step(&q)==SQLITE_ROW ){
    const char *zN = db_column_text(&q, 0);
    const char *zV = db_column_text(&q, 1);
    i++;
    if( g.zSkin ) zN += strlen(g.zSkin)+2;
    @ <tr><td>%d(i).<td>%h(zN)<td>&nbsp;&nbsp;<td>
    if( fossil_strcmp(zV, zCurrent)==0 ){
      @ (Currently In Use)
    }else{
      @ <form action="%s(g.zTop)/setup_skin" method="post">
      @ <input type="hidden" name="sn" value="%h(zN)">
      @ <input type="submit" name="load" value="Install">