Assignment Problem Cvxc

Inclure les fichiers Javascript dans le header

Dans le cadre de notre application, nous aurons besoin d'inclure des fichiers Javascript dans le header des pages de notre blog Wordpress. Nous pourrions bien entendu le faire en ajoutant sauvagement du code HTML au fichier de template, mais cela ne serait pas très propre :

  • ces lignes de codes ne disparaîtraient pas en cas de suppression du plugin,
  • le système wordpress a prévu cette éventualité, nous pouvons donc effectuer cela en utilisant les actions wordpress.

Ajout des librairies Javascript : wp_enqueue_script

Vous le savez sans doute, nombre de développeurs web utilisent des librairies Javascript et il en existe de nombreuses : jQuery, PrototypeJS, Mootools... elles facilitent grandement le développement Javascript et gèrent dans la majorité des cas les disparités d'interprétation entre navigateurs.

Dans le cadre de notre exemple wp_jschat, nous utilisons la librairie Javascript jQuery, ce n'était pas réellement obligatoire, mais il s'agissait de couvrir un maximum de fonctionnalités de Wordpress.

Le problème est que d'autres plugins installés sur le blog wordpress de vos utilisateurs peuvent utiliser les mêmes librairies que votre plugin et que nous ne pouvons inclure une même librairie plusieurs fois sous peine de voir apparaître un erreur Javascript.

Heureusement, les développeurs de wordpress y ont pensé, et nous pouvons charger nos librairies tranquillement; d'ailleurs, de nombreuses librairies sont livrées avec la source de wordpress : nous chargeons ces librairies en utilisant la fonction wp_enqueue_script() dans la méthode addHeaderCode() de notre classe principale lorsque que nous avions évoqué les actions wordpress.

wp_enqueue_script('jquery');

Note : vous n'avez pas besoin d'inclure d'adresse vers le fichier jQuery : il est livré avec Wordpress. Pour voir l'inventaire des librairies livrées,rendez-vous sur la documentation officielle de Wordpress. De la même manière, pour inclure le framework prototype et swfObject :

wp_enqueue_script('prototype'); wp_enqueue_script('swfobject');

jQuery noConflict() et Wordpress

La librairie jQuery est configurée en mode "no conflict", afin d'éviter les problèmes de compatibilité avec les autres librairies Javascript dû à l'utilisation du "$".

Dans le mode "no conflict", le raccourci "$()" est remplacé par jQuery(), c'est donc le cas pour notre plugin.

devient donc :

Rien de bien complexe.

Ajout de nos fichiers Javascript

Ce n'est pas tout d'inclure les librairies, il faut maintenant inclure nos propres fichiers JS, toujours avec la même fonction :

wp_enqueue_script('wp_jschat', '/wp-content/plugins/wp_jschat/javascript/wp_jschat.js');

Cette fonction est décrite dans la documentation wordpress : wp_enqueue_script

On passe simplement un premier paramètre comme identifiant de notre fichier, puis l'url vers ce fichier. notez qu'une url absolue sera généré par le système lors de l'affichage.

Développement d'un plugin wordpress :

  • Plugin chat Javascript pour Wordpress 

    Ce plugin de chat Javascript pour wordpress est distribué sous licence GPLv2, il est surtout développé à titre d'exemple dans le cadre d'un cours sur la création d'un plugin Wordpress.

  • Créer un plugin Wordpress 3.X 

    Créer un plugin Wordpress 3.X

  • Structure des plugins Wordpress 

    Tous les plugins wordpress seront installés dans le répertoire wp-content/plugins. Certains plugins peuvent se limiter à l'inclusion d'un seul fichier PHP, mais il est recommandé de toujours créer un dossier pour stocker les plugins....

  • Actions 

    Après avoir défini la structure de notre plugin wordpress, nous pouvons ajouter des actions, dans cet exemple, nous allons ajouter un bout de code qui va s'exécuter dans la balise <head> du blog Wordpress.

  • Filtres 

    Les filtres wordpress sont les fonctions que votre plugin peut accrocher dans le but de modifier le texte de sortie. Ce texte de sortie est généralement formaté et inséré dans une base de données, et montré à l'écran à l'utilisateur.

  • Créer le panneau d'administration d'un plugin wordpress 

    Tous les plugins devraient idéalement posséder un panneau d'administration. Créer ce panneau d'administration n'est pas très complexe, c'est donc un peu pénible de la part des auteurs de plugin de demander à leurs utilisateurs d'éditer eux-mêmes le code PHP (Ce qui n'est généralement pas une bonne idée).

  • Création d'une widget Wordpress 

    Nous allons maintenant créer une widget sous forme de plugin. Les widgets wordpress permettent d'insérer des parties de code facilement sous forme de bloc pour l'utilisateur final. Elles peuvent être ensuite ajoutées dans les barres d'outils prédéfinies selon les thèmes que vous utilisez.

  • Plugin - créer un panneau utilisateur 

    Il peut y avoir des situations où les utilisateurs peuvent être amenés à gérer leurs propres paramètres pour votre plugin : dans le cas de notre projet de chat Javascript, nous allons permettre d'une part aux utilisateur d'afficher ou non le chat, et d'utiliser les smileys ou non.

  • Installation/Désinstallation base de données | plugin Wordpress 

    Maintenant que nous savons créer des panneaux d'administration et des panneaux utilisateurs, nous allons attaquer l'accès au model : en interagissant avec la base de données. C'est une partie très importante du tutoriel wordpress, car lorsque l'on écrit un plugin, on a dans la majorité des cas besoin de stocker des données dans une base.

  • Traitement et affichage des requêtes dans base de données wordpress 

    C'est bien joli d'avoir nos tables dans base de données, maintenant, nous allons afficher les résultats de nos insertions.

  • Inclure les fichiers Javascript dans le header 

    Dans le cadre de notre application, nous aurons besoin d'inclure des fichiers Javascript dans le header des pages de notre blog Wordpress. Nous pourrions bien entendu le faire en ajoutant sauvagement du code HTML au fichier de template, mais on va éviter :)

  • Inclure les feuilles de style CSS 
  • Ajax et les plugins Wordpress 

    Ajax est un protocole qui permet d'envoyer des requêtes http à partir de Javascript, si vous n'êtes pas familier avec ce protocole, vous pouvez en savoir plus sur cet article sur Ajax xmlHttpRequest.

  • Internationalisation du plugin 

    Depuis le début de cette suite d'articles, nous utilisons systématiquement les fonctions e() et __() pour afficher du texte. Nous l'avions déjà évoqué au cours d'articles précédents : c'est dans le but d'internationaliser notre plugin. Tous les textes pourrons ainsi être traduits par les utilisateurs de votre plugin dans des fichiers de langue.

  • Création de shortcode/bbcode Wordpress 

    Nous pouvons déjà créer des pages personnalisées grâce aux filtres wordpress, cependant, dans le cadre de notre plugin, il peut être intéressant d'ajouter des fenêtres de chat dans les pages de notre blog.

  • Distribuer un plugin Wordpress 

    Maintenant que votre plugin fonctionne, il a peut être vocation à être redistribué à la communauté ! Pour cela, rien de plus simple, cet article a vocation à vous expliquer comment vous y prendre.

In mid-January, Cape Town officials announced that the world-class South African city of four million residents would run out of water on April 12. The date, nicknamed “Day Zero,” has since been postponed multiple times, thanks to the intense conservation efforts by locals, a sharp reduction in agricultural water usage, and a 10 billion-liter donation from the private reservoirs of the Groenland Farmers Association. The city now has enough water to sustain the current level of usage until July 9, giving residents hope that the rainy season, which begins in June, will be more regular than has been the case lately.

Four years ago, Cape Town’s water woes would have seemed improbable given that the city’s six dams, which can hold 230 billion liters of water, were filled to the brim. However, three years of low rainfall — a third of normal levels — and the ever-increasing population, have reduced the overflowing dams to puddles.

In an attempt to avoid Day Zero, when water levels will plummet to 13.5 percent capacity, the government has imposed a strict 50-liter daily limit for all households. Residents are being urged to reduce their water usage by making small changes like taking shorter showers, washing hands with sanitizers, and reusing bathing water to flush toilets. Those that use more have to pay hefty fines.

Should Day Zero strike, a million homes, or about 75 percent of the city, will lose access to running water. Residents will instead have to wait in line at the over 200 water distribution centers established around the city to obtain their reduced quota of 25 liters a day. “As things stand, the challenge exceeds anything a major city has had to face anywhere in the world since the Second World War or 9/11,” said Western Cape Premier Helen Zille.

With severe water rationing looming, residents are striving to be as resourceful as possible. More are storing water or filling up at spring water taps established by local breweries. Those who can afford it are digging wells in their backyards, while a waterfront hotel is investing in a desalination plant to obtain its water supply from the ocean. Engineers have also been at work installing new pump equipment in some of the reservoirs to extract the last 10 percent of water, which is notoriously hard to access.

Though these conservation measures will help in the short run, only nature can eliminate the dire situation. If the city gets a reasonable amount of precipitation during its winter season from June to August, it will provide much-needed relief. However, the local officials are not sure it will happen. “We had hope that rainfall would replenish the dams, but it hasn’t happened. What this signaled to me is that climate change is reality. If you doubted it before, you can’t now,” said Greg Pillay, head of Cape Town’s disaster operations center.

Unfortunately, Cape Town is not the only city facing dwindling water sources. In 2015, São Paulo, Brazil was 20 days shy of cutting off water from its 12 million residents, leading to looting and unrest. Areas in India, Indonesia, and Mexico are facing severe shortages, while Australia and California are both combating droughts. In Venice, the legendary canals that traverse the city recently dried out to mere streams thanks to a cold winter, a lack of rain, and low tides caused by February’s super blue blood moon.

The World Wildlife Fund estimates that two-thirds of the globe could be facing water shortages similar to Cape Town’s by 2025 due to climate change-induced droughts and growing urban populations. It is, therefore, crucial for all of us to help avert Day Zero in our town or city with small lifestyle changes like planting drought-resistant shrubs, taking shorter showers, turning off taps when brushing teeth, and fixing leaky faucets and sprinklers.

Resources: bbc.co.uk, nationalgeographic.com,iflscience.com,thesouthafrican.com,vox.com

Listen to Article

0 Thoughts to “Assignment Problem Cvxc

Leave a comment

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati *