LazyLoad.js utilise énormément de CPU et ralentit considérablement le
défilement de page, en particulier lorsque le nombre d'articles
augmente.
Dans le cas des articles repliés, il n'y a en fait pas besoin du
mécanisme complexe de LazyLoad.js basé sur les événements scroll, car il
suffit de charger les images lors du dépliage es articles, et cela
allège énormément l'expérience.
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)
notification.js était tout petit et occasionnait une requête
supplémentaire et un événement JavaScript en plus.
Proposition de fusion dans le nouveau main.js statique.
En JavaScript, sans requête au serveur, décrémente ou incrémente le
nombre d'articles non lus ou en favoris suite à une action de
l'utilisateur.
Utilise un nouvel attribut data-unread pour stocker le nombre d'articles
non-lus et du pur CSS pour afficher cette valeur.
Nouvel attribut data-priority (pour savoir s'il faut inclure le flux ou
pas dans les nombres d'articles non lus).
Légère simplification CSS au passage (d'autres optimisations des
performances CSS seraient souhaitables en évitant les règles contenant
trop de sélecteurs universels imbriqués genre ".categories .favorites
.btn" et en évitant les changements de style en JavaScript lors du
chargement - j'essayerai de faire une proposition dans un patch séparé).
Bug connu : une catégorie finissant par une espace suivi d'un nombre
entre parenthèses comme "Exemple (2)" cause actuellement un léger bug
d'affichage dans le <title> s'il y a 0 article non lu et que
l'utilisateur en marque un comme "non lu". Il faudra une modification
pour utiliser data-unread aussi pour le <title>
Une bonne amélioration des performances est possible en utilisant le
cache HTTP.
Ce patch propose un .htaccess par défaut (pour Apache).
L'accès "Satisfy Any" pour favicon.ico est pour le cas où le répertoire
FreshRSS serait protégé par un mot de passe, ce qui pose problèmes pour
certaines utilisations de favicon (y compris dans Firefox).
Le "Cache-Control public" est surtout utile pour la mise en cache dans
le cas de HTTPS.
* 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)
* Les popups de synchro et notification sont mieux réparties à l'écran
notamment en vue mobile
* Le nom du flux actuellement affiché (à droite de Aujourd'hui par exemple)
est mieux tronqué avec des ... (trois petits points)
* Refactorisation de quelques bouts de CSS
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
On n'essaye plus de charger les articles suivant s'il n'y a plus rien
après. On teste donc que le lien a#load_more existe, sinon l'url de
chargement est vidée
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.
La barre contenant le lien connexion/déconnexion est supprimée (sauf en
vue mobile)
Le lien connexion se trouve à la place de la roue des paramètres
Le lien déconnexion se trouve dans la liste des actions en cliquant sur
la roue des paramètres
*** ATTENTION, MODIFICATION DE LA BDD ***
Cette option permet de garder les vieux articles d'un flux en même s'ils
sont plus vieux que la limite des X mois d'historique (3 par défaut)
Les modifications de la base de données :
- ajout du champ "keep_history int(1) DEFAULT 0" à la table feed
- suppression des champs "is_public" et "lastUpdate" de la table entry
(n'étaient plus utilisés de toute façon)
Désormais, en cliquant sur une catégorie ou un flux, une "popup" s'ouvre
nous proposant les flux à lire directement. Les mêmes actions que la vue
normale sont alors possibles
Cela a impliqué de gros changements javascript en aval puisque les
articles n'étaient plus repérés en fonction de la fenêtre, mais en
fonction du popup (#panel)
Le code va vraiment devoir être repris pour avoir une architecture
logique (voir issue #121)
Ajout de la date et du lien vers site externe au pied des articles
Modification comportement raccourci "up" : si la fenêtre est sous
l'article actif, on remonte en haut de cet article. Si la fenêtre est au
début de l'article actif ou au-dessus, on remonte en haut de l'écran