2010-01-20 4 views
1

Je travaille sur un projet App Engine qui aura des thèmes personnalisables. J'aimerais pouvoir utiliser les thèmes de l'interface utilisateur jQuery. Le problème est de savoir ce que le fichier CSS va être nommé. (Généralement, "jquery-ui-1.7.2.custom.css" .Les numéros de version changeront, et les gens ont tendance à renommer les choses, mais il ne devrait y avoir qu'un seul fichier CSS, et je suis d'accord avec cela étant une condition d'erreur si il y en a deux ou plus pour une raison quelconque.) Parce que c'est un fichier statique (les fichiers statiques sont téléchargés vers App Engine séparément du reste des ressources de l'application), je ne peux pas simplement le répertoire pour un fichier CSS. Je ne peux pas supposer que c'est codé en dur, et je ne veux vraiment pas en faire un paramètre de configuration, parce que c'est une mauvaise expérience utilisateur. Guido m'a dit de créer un lien symbolique pour que App Engine voit deux copies et puisse traiter l'un comme statique et l'autre comme une ressource d'application, mais les liens symboliques ne fonctionnent pas sous Windows, et comme ce sera finalement open source, je ne peut pas contrôler quel SDK l'utilisateur utilise. Une autre suggestion était d'utiliser un script de déploiement, mais les utilisateurs Mac ont ce joli bouton "Déployer" dans leur version du SDK et je préfère ne pas leur dire: "Oh hé, désolé pour le dérangement, mais vous pouvez n'utilisez pas ça pour ce projet. "Obtenir des informations sur les fichiers statiques dans Python App Engine; solutions de contournement

J'ai clairement besoin d'une solution prête à l'emploi pour celle-ci, mais je suis à court de ressources. Quelqu'un a-t-il de bonnes suggestions pour obtenir un thème d'interface utilisateur jQuery personnalisé à partir du ThemeRoller et dans une application App Engine? Un certain post-traitement est déjà nécessaire, car les seuls fichiers du fichier zip que ThemeRoller vous donne sont dans le répertoire "css". Peut-être que je peux écrire quelque chose qui prend un thème brut comme entrée et crache quelque chose d'utile de l'autre côté (l'astuce de script de déploiement, mais d'une certaine manière moins hostile). L'astuce ici est la présentation - je veux que l'utilisateur passe le moins de temps possible sur la ligne de commande. Une solution idéale suppose que la personne effectuant cette tâche est pour la plupart non technique. Aucune partie de la solution ne peut être beaucoup plus difficile que d'installer quelque chose comme WordPress ou Drupal, et dans un monde parfait, cela devrait être beaucoup plus facile.

+0

Pourquoi avez-vous besoin de connaître le nom du fichier CSS? Le CSS ne sera-t-il pas référencé exclusivement à partir de modèles, qui ne sont pas des contenus statiques, et que vous pouvez donc trouver? –

+0

Parce que c'est un thème qui peut être modifié par l'utilisateur. Ce n'est pas codé en dur. Je souhaite présenter à l'utilisateur une liste déroulante des thèmes disponibles. Le chemin d'accès au fichier CSS doit être établi à partir du nom du thème. –

Répondre

1

Pour accomplir ce que vous demandez, j'utiliserais la banque de données pour servir les fichiers CSS. Comme cela permettrait une liste facile, le tri et même la modification et le téléchargement. À part cela, vos prochaines meilleures options seraient de stocker les données CSS dans un script (un dictionnaire où le nom de fichier est le nom de la clé, et le code CSS est la valeur). Ou, comme vous l'avez suggéré, exécuter un script avant de le déployer dans AppEngine. Personnellement, j'opterais pour le stockage dans l'option de banque de données, car cela permettrait une plus grande personnalisation de l'utilisateur (comme chaque utilisateur pouvant fournir son propre fichier CSS), mais assurez-vous d'utiliser memcache pour évitez d'avoir besoin d'accéder au magasin de données lorsque cela est possible (ce qui devrait être une occurrence très fréquente), ainsi que d'utiliser les en-têtes HTTP pour indiquer au navigateur de mettre en cache le fichier CSS localement.

+0

Le stockage des données CSS à l'intérieur d'un script ne fonctionnera pas, car cela ne résout pas le problème de faciliter le travail des utilisateurs non-techniciens. Je me suis orienté vers le magasin de données ou le magasin de blob, mais je m'inquiète des caractéristiques de performance. Ceux-ci sont susceptibles d'être parmi les fichiers les plus demandés dans l'application. –

+0

En supposant que vous définissiez les en-têtes http qui spécifient le comportement de mise en cache dans le script qui sert le fichier CSS au client, cela devrait être correct (puisque le navigateur ne le demandera pas à chaque chargement de page). Cela combiné avec memcache, il devrait y avoir aucun problème. Je n'aurais aucune réserve à faire cela dans ma propre application. –

Questions connexes