Installer Etherpad

Etherpad est un système de traitement de texte en ligne collaboratif. Il permet de rédigé des documents à plusieurs en temps réel, du moment que la mise en page reste legere. Il est OpenSource, écrit en NodeJS et extensible avec des plugins de la communauté.

Il est possible de l'installer sur 2 types de serveur, Windows ou Linux.

Logiciel prérequis :

  • git
  • nodejs

Il faut ensuite télécharger les sources disponible sur mon repo github. ou sur l'officiel.

Il y a un bug sur la release officielle avec le fichier de compilation windows. Il n'arrive pas a compilé, une pull request est en cours.

 

Pour une installation Windows:

il suffit de lancer le fichier installOnWindows.bat qui se trouve dans le répertoire bin.

Une fois l'installation faite il ne reste plus qu'a lancer le start.bat

Attention tout de même, il y a un peu de paramétrage à faire. Par défaut, il utilise dirtyBD qui n'est pas une vrai BDD à l'instar de SQLite. Toutes les données sont stockées dans un fichier. Les performances et la stabilité du système ne sont pas assurés, mais ça permet de faire des test facilement sans trop altérer l’environnement.

De même pour les utilisateurs, il est possible de définir des administrateurs des utilisateurs lamdba pour gérer les accés au pad.

Pour une installation Linux:

TODO

 

Fonctionnalité supplémentaire(Plugin):

Il existe une multitude de plugins plus ou moins stable pour etherpad, il est possible de directement les installer depuis l'interface admin, depuis l'adresse : serverIP/admin/plugins.

 

Voici une petite liste de plugin pratique:

 

Préparer sa Recalbox

Préparer sa Recalbox.

Il faut suivre quelques étapes simple mais qui peuvent poser un peu probleme si on est pas trop familier avec l'informatique. Déjà il faut acheter les différentes pieces.

  1. Un raspeberry 3 (le plus puissant)
  2. un transfo 5V avec connectique microUSB
  3. une carte Micro SD
  4. et c'est tout.

Il est toujours possible, suivant le projet final(console retro, mamecab) d'acheter certains accessoires supplémentaires comme un boitier en plastique pour protéger la bête, un système de refroidissement (radiateur, ventillo), etc. Il existe pas mal de kit raspberry le seul probleme c'est que souvent la carte fourni est de failble capacité (8Go) toujours suivant le projet, ça peut être court (600Mo pour un jeu Playstation, ~1Go pour la DreamCast), je vous laisse seul juge.

Préparer la carte microSD

Ensuite une fois assemblé, il faut passer à la partie logiciel. L'installation est simple mais la partie formatage peut poser problème.

  • Si vous avez une carte 8 Go, pas trop de souci, il faut seulement la formater au format Fat32.
  • Si c'est une carte avec 32 ou plus, il faut utilisé un logiciel du type partition magique ou Mini Tool partition Wizard. Il faut alors créer une partition de 8 Go Fat32, en partition principale (bootable).
  • Ensuite il suffit de télécharger l'OS sur Github, décompresser le fichier, copier contenu sur la carte, remetre la carte dans la machine et booter.

L'installation se fait de maniere automatique, l'installateur repartionne la carte comme il faut.

Type Accès Entité dans Elgg

Type d'acces pour les entitées dans Elgg

–  « ACCESS_PRIVATE«  (value: 0) Privé.
–  « ACCESS_LOGGED_IN«  (value: 1) Utilisateur logué.
–  « ACCESS_PUBLIC«  (value: 2) Public.
–  « ACCESS_FRIENDS«  (value: -2) Le propriétaire et ses contacts.

– (value: 4)

 

A utilisé lors de la creation avec elgg_extract:

$access_id = elgg_extract('access_id', $vars, ACCESS_DEFAULT);

Script pour bloquer l’ajout de caractère dans un champs input

script pour la verification du champs nom
empeche l'insertion de caractere autre que alphanumérique

$view = '<script type="text/javascript">
    function verif(evt) {
        var keyCode = evt.which ? evt.which : evt.keyCode;
        var accept = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
        if (accept.indexOf(String.fromCharCode(keyCode)) >= 0) {
            return true;
        } else {
            return false;
        }
    }
</script>';

 

source: https://www.grafikart.fr/forum/topics/234

Gagner un peu en vitesse dans le Backoffice Prestashop

Par défaut Prestashop va recuperer des infos sur le site des addons officiels, ce qui à pour effet de méchament ralentir la navigation, c'est encore pire quand ont est en local sur une machine de dev avec une connexion internet poussive(ce qui est mon cas). Il faut quand même faire attention car les module qui pourrait vous servir ne vont plus apparaitre.

Pour ça il faut aller modifier 2 fichiers. Le premier est classes/tools.php. Il faut modifier la methode addonsRequest() et rajouter un return false; des le début de la methode. comme ça plus requete vers le serveur addons.

Pour le second, qui concerne les themes, il faut le chercher dans controllers/admin/AdminThemeControllers.php.

Dedans cherche la methode ajaxProcessGetAddonsThemes(), et appeler la fonction die() des le debut. C'est tout.

Après cela ne fait pas de miracle, mais on gagne un peu. Voili Voilou.

Utilisation des variables smarty dans Prestashop

[WIP] Il existe une certaine quantité de variable smarty définit dans Prestashop, Ce post va essayer de les lister et d'expliquer leurs usages.

La liste ne sera evidement pas exaustive, mais sera compléter avec le temps.

$img_ps_dir       //URL for the PrestaShop image folder.
$img_cat_dir      //URL for the categories images folder.
$img_lang_dir     //URL for the languages images folder.
$img_prod_dir     //URL for the products images folder.
$img_manu_dir     //URL for the manufacturers images folder.
$img_sup_dir      //URL for the suppliers images folder.
$img_ship_dir     //URL for the carriers (shipping) images folder.
$img_dir          //URL for the theme’s images folder.
$css_dir          //URL for the theme’s CSS folder.
$js_dir           //URL for the theme’s JavaScript folder.
$tpl_dir          //URL for the current theme’s folder.
$modules_dir      //URL the modules folder.
$mail_dir         //URL for the mail templates folder.
$pic_dir          //URL for the pictures upload folder

 

Pour aller plus loin, j'ai trouver ce lien qui à l'air d'être pas makl complet sur les variables.

http://blog.gofenice.com/prestashop/global-smarty-variables-used-in-prestashop/

Ajouter des champs personnalisés dans un article WordPress

Pour ajouter des champs spécifiques dans un article WordPress, il faut d'abord ajouter à votre theme le fichier functions.php s'il n'est pas existant. Dedans il faut rajouter un hooks:

 

// nom du hook : "wp_insert_post"

// nom de la fonction à appeler : " champs_defaut"

add_action("wp_insert_post", "champs_defaut");

// prend en parametre l'identifiant du post

 function champs_defaut($post_id){
        if(get_post_type($post_id)=='post'){
            add_post_meta( $post_id, 'prix', '', true );      // ajout du champ 'prix', true => unique
            add_post_meta( $post_id, 'editeur', '', true );
            add_post_meta( $post_id, 'auteur', '', true );
            add_post_meta( $post_id, 'reserve', '', true );
        }
    return true;
    }   

Maintenant dans la page d'ajout d'article 4 champs sont apparut dans le backoffice. Les champs n'apparaissent pas dans les articles existants, il y a juste à clique sur le boutons "mettre à jour".

 

Pour les afficher dans la page single.php,  il reste à ajouter ce code:

 

// get_post_meta retourne la valeur du champs désigné dans les parametres,

// le booleen permet de définir si le retour est sous forme de tableau ou d'un string tout seul

$auteurs = get_post_meta(get_the_id(), 'auteur', false);
$editeur = get_post_meta(get_the_id(), 'editeur', true );
$prix = get_post_meta(get_the_id(), 'prix', true );
$reserve = get_post_meta(get_the_id(), 'reserve', true );

 

Voili voilou!!!

 

 

Migrer un site WordPress

Il peut être utile de savoir migrer son site, rien que pour le mettre en ligne à la suite d'une période de développement. Pour ce faire:

Mise en place

1/ Placer le dossier qui contient le site wordpress à la racine de votre hébergement.

2/ Si besoin creer une nouvelle base de données, sinon recuperer le nom de la base de données fourni par votre hébergeur.

Parametrage

3/ modifier le fichier wp-config.php.

modifier les constantes :

  • DB_NAME
  • DB_USER
  • DB_PASSWORD
  • DB_HOST

4/ importer le dump de la BDD

5/ Modifier la table wp_option.

6/ Modifier dans la table wp_post les colonnes:

  • guid
  • post_content

Utiliser ces requettes SQL pour vous simplifier la vie.

UPDATE wp_posts
SET guid=REPLACE(guid,'http://localhost/ancienne_adresse/wordpress431_1','http://nouvelle_adresse/');


UPDATE wp_posts
SET post_content=
REPLACE(post_content,'http://localhost/ancienne_adresse/wordpress431_1/','http://nouvelle_adresse/');

Normalement ça fonctionne.

Dépannage

En cas de probleme de lien il peut être nécessaire de rafraichir les permaliens.

Allez dans le backoffice/reglages/permaliens.

Passer en mode par defaut, appliquez puis repassez dans le mode qui va bien, dans mon cas c'était nom d'article.

Voili voilou.

 

Création de module [Partie 1]

Pour créer un module dans Prestashop, il faut respecter une certaine arboréscence. Premierement il faut créer un répertoire qui porte le nom du module ex : »MonModule »

  • Répertoire
    • controllers
    • override
    • themes
    • translations
    • upgrade
    • views
  • Fichier
    • monModule
    • logo.png

myModule.php

<?php

  if (!defined('_PS_VERSION_'))
    exit;

  class localaddict_marketplace extends Module {

  public function _-_construct() {
    $this->name = 'localaddict_marketplace';
    $this->tab = 'back_office_features';
    $this->version = '0.0.1';
    $this->author = 'Benoit MOTTIN';
    $this->need_instance = 0;
    $this->ps_versions_compliancy = array('min' => '1.6', 'max' => _PS_VERSION_);
    $this->bootstrap = true;
    
    parent::__construct();
    
    $this->displayName = $this->l('Localaddict Marketplace');
    $this->description = $this->l('Ajout de fonctionnalité pour le multivendeur');
    $this->confirmUninstall = $this->l('Are you sure you want to uninstall?');

    if (!Configuration::get('MYMODULE_NAME')) {
      $this->warning = $this->l('No name provided');
    }

  }

Ceci est le strict minimum pour la déclaration d’un module.