Chasse aux entités ! Nous devrions maintenant avoir des pages sans
entités HTML (mais bien sûr des entités XML) ni depuis FreshRSS ni
depuis le contenu.
Dans une prochaine version, les données issues des formulaires devront
être sauvegardées de façon brutes en BDD. htmlspecialchars ne sera
utilisé que du côté de la vue (voir pour utiliser une fonction qui
facilite ça)
Voir commit ff37ae8d49
app/views/javascript/main.phtml est déplacé vers
app/views/helpers/javascript_vars.phtml
Il reste à déplacer le fichier actualize.phtml pour se débarrasser de
javascriptController
Le menu de gestion des catégories a été déplacé au niveau de la gestion
des abonnements (le regroupement est plus logique)
Le lien pour accéder au flux RSS a été déplacé dans le menu "affichage"
(peut être sujet à discussion)
Une prochaine pourrait être de splitter le menu "Général et lecture" en
plusieurs vues
Corrige https://github.com/marienfressinaud/FreshRSS/issues/241
Je trouve que c'est plus robuste de retourner au moins une petite
réponse que rien du tout, et puis cela permettra éventuellement de
retourner quelque chose d'utile comme succès/échec.
Pas testé, mais sûrement plus efficace aussi que l'exception actuelle,
même si celle-ci n'est pas forcément affichée.
Le code pour la connexion via Persona a été bougée dans le fichier
main.js avec le reste du code JS
Ça ne marche toujours pas sous Firefox car il essaye d'initialiser
navigator.id.watch avant que le fichier login.persona.org/include.js
ne soit chargé
L'url est correctement écrite côté serveur pour permettre à Persona
d'indiquer au site que la connexion s'est bien passée
Quelques [img alt="✇" /] pour être valide, avec un caractère Unicode
représentant un film (assez proche d'un flux), mais peut-être qu'on
pourrait en trouver un mieux
* Fusion de endless_mode.js dans main.js car endless_mode.js est
toujours chargé et assez petit.
* Suppression des changements de style en JavaScript lors du chargement
(genre boucle de .hide(), ou d'ajout de classe ".stick") et
implémentation en PHP + CSS à la place.
* Chargement JavaScript asynchrone (defer + async) pour de meilleurs
performances.
* Utilisation préférable des événements globaux plutôt que des
événements pour chaque élément avec jQuery.on(events, selector) pour un
chargement plus rapide et moins de mémoire utilisée.
* Optimisation manuelle du JavaScript (sélecteurs CSS plus performants,
méthodes jQuery plus appropriées, etc.).
* Désactivation de init_img() qui était coûteux, lancé à un moment où
les images ne sont de toute manière pas encore chargées, et qui
n'apporte rien car il y a déjà un img {max-width:100%} en CSS.
* JavaScript en mode strict.
* Enfin, passage du code JavaScript dans JSLint et du coup nombreuses
corrections (syntaxe, variables, méthodes dépréciées...).
* Devrait permettre de fermer
https://github.com/marienfressinaud/FreshRSS/issues/121
* Au passage, quelques simplifications CSS pour de meilleures
performances.
Nouvelles options pour choisir d'afficher ou pas les icônes pour marquer
comme lu/non-lu, favoris, lien vers l'article, ainsi que les champs
partage, tags...
Légères simplifications CSS et PHP au passage.
(Note pour plus tard : Il serait peut-être souhaitable de simplifier le
mécanisme des options en PHP, par exemple en utilisant un tableau de
propriétés. Actuellement, il y a un attribut par option accompagné d'un
accesseur privé, un accesseur public, et idem dans le système de
chargement/écriture du fichier de configuration, ce qui fait beaucoup de
code PHP par option)
Au lieu de faire une requête systématiquement à chaque action de
l'utilisateur vers actualize.phtml (qui est lourd à générer et à lire),
cette requête se fait maintenant uniquement lors de son utilisation.
* Suppression des boutons de fermeture pour les dropdowns : la fermeture
se fait maintenant en cliquant n'importe où sur l'écran
* Suppression fichier fallback.css pour le thème par défaut. Déplacement
dans freshrss.css en fin de fichier pour bien le séparer du reste (#166)
Tel qu'utilisé, LazyLoad charge les nouvelles images lors d'un scroll. Hors dans certains cas (navigation clavier ou clic souris sur un article pour l'ouvrir), aucun scroll n'est généré et du coup les images ne sont pas chargées.
Ce patch ajoute un événement scroll artificiel dans ces cas là.
Exemple de cas sans scroll: bas de liste d'articles (ex: non lus), avec des articles plus petits que la taille verticale de la fenêtre, il n'y a pas de matière pour scroller plus haut.
Dans la vue pour modifier les flux, les URLs du site et du flux RSS ne
sont plus des liens et peuvent être plus facilement copié-collé
Les liens cliquables sont représentés par une icône à coté
Les raccourcis page suivante et précédente n'avait plus lieu d'être avec
le mode endless
Petite correction du design pour les formulaire : les labels (float left)
dépassaient des form-group
1) Lors de la navigation clavier, si le chargement automatique en bas de page est activé, il ne faut pas manuellement charger les nouveaux articles, sinon il y a des doublons.
2) Il faut d'abord changer d'article avant d'en charger des nouveaux.
Vite fait, et vite testé, mais semble marcher et corriger les bugs de doublons que je constatais en navigation clavier (les articles non-lus que je venais de lire se rechargeaient une 2ème fois).
En particulier en affichage mobile, il n'était pas facile de voir quelle
catégorie ou flux on était en train de lire. Ce patch l'affiche sur la
ligne du jours, avec une suggestion de style.
- jQuery updated from version 1.5.2 to 1.10.2 (checked that it is ok
with jQuery Migrate Plugin)
- Put hide_posts() first to avoid flashing content during load
- Big speed optimisation of init_img()
- Use a single on() delegated event (jQuery 1.7+) instead of all
per-article click events as described on http://api.jquery.com/on/
- Moved all the per-article click events to an outside function
init_stream_delegates() that is called only once even when new articles
are dynamically added. Much lighter approach, and does not require
unbinding events and rebinding them at each dynamic load.
- Side effect: corrected the bug of favourites and read/unread that were
not properly unbound during dynamic loading.
- Corrected a JavaScript error for auto_load_more when #load_more is not
visible and therefore does not have a position() defined.
Big effect (on speed and memory), but few changes :-)
Drastically reduced the number of SQL requests needed (from 233 down to
8 to load the home page with my own data set = 140 feeds in 15
categories).
Drastically reduced the amount of data transferred from MySQL to PHP.
Provide better access to the link of the article, and allow
control-click on the title to e.g. open in a background tab, without
having to reach the little link icon on the far right.
Use the faster str_replace() and str_ireplace() instead.
From http://www.php.net/manual/function.str-replace.php : "If you don't
need fancy replacing rules (like regular expressions), you should always
use this function instead of preg_replace(). "