User Tools

Site Tools


drupal:4dot6

Pour www.oberleiter.net, il faut le début et la fin dans event.module, donc drupal 4.6…

C'est aussi l'occasion d'essayer la localisation (interface en plusieurs langues, locale.module qui est dans core) et i18n.module qui est dans contrib.

Installation depuis les sources

Sur excalibur (UbuntuLinux Hoary).

sudo aptitude install apache2
sudo aptitude install mysql-server libapache2-mod-php4 php4-mysql
sudo apt-get install drupal
sudo apt-get remove drupal
wget http://drupal.org/files/projects/drupal-4.6.2.tar.gz
sudo tar xzf drupal-4.6.2.tar.gz -C /var/www/
sudo mv /var/www/drupal-4.6.2 /var/www/drupal

Quand je surfe dessus, erreur:

Fatal error: Call to undefined function: mysql_connect() in /var/www/drupal/includes/database.mysql.inc on line 31

cf. MySQL pour la résolution (fichier de configuration de PHP4).

Autre erreur ensuite:

Warning: mysql_connect(): Access denied for user: 'username@localhost' (Using password: YES) in /var/www/drupal/includes/database.mysql.inc on line 31
Access denied for user: 'username@localhost' (Using password: YES)

Il faut d'abord créer la base de données:

mysqladmin -u root -p create drupal

Ensuite créer l'utilisateur mysql:

GRANT ALL PRIVILEGES ON drupal.* TO drupal@localhost IDENTIFIED BY 'password';
flush privileges;

Ensuite, populer la base de données:

 mysql -u drupal -p drupal < database/database.mysql

Et ça tourne…

Je crée le premier utilisateur (admin).

Quand je vais dans admin/settings, j'ai une erreur:

 * The directory files does not exist.
 * The built-in GD image toolkit requires that the GD module for PHP be installed and configured properly. For more information see http://php.net/image.

Solutions:

créer files:

mkdir /var/www/drupal/files
sudo chown www-data /var/www/drupal/files

et pour l'autre:

sudo aptitude install php4-gd

Ensuite, dans le fichier /etc/php4/apache2/php.ini, il faut décommenter (enlever le point-virgule) la ligne suivante:

;    extension=gd.so

et redémarrer apache2:

sudo /etc/init.d/apache2 reload

Upgrade

Passage a v. 4.6.3 (security upgrade)

cd /var/www/drupal-4.6.2
patch -p0 -u < /home/carl/drupal4.6/xmlrpc-4.6.2.patch

Passage à v. 4.6.4

cf. ci-dessus, 3 patches à appliquer: pour dsa-2005-007, 008 et 009.

Passage à v. 4.6.5

http://drupal.org/node/41017

backup:

cd /var/www/drupal-4.6.2/
cp database/updates.inc database/updates.orig.inc
cp includes/common.inc includes/common.orig.inc
cp includes/database.mysql.inc includes/database.mysql.orig.inc
cp includes/file.inc includes/file.orig.inc
cp modules/aggregator.module modules/aggregator.module.orig
cp modules/filter.module modules/filter.module.orig
cp modules/search.module modules/search.module.orig

Ensuite copier les fichiers correspondants de la version 4.6.5.

Passage à v. 4.6.6

cf. http://drupal.org/drupal-4.7.0-beta6

cd /home/carl/drupal4.6/
wget http://drupal.org/files/sa-2006-001/4.6.5.patch
mv 4.6.5.patch 4.6.5.adv2006-001.patch
wget http://drupal.org/files/sa-2006-002/4.6.5.patch
mv 4.6.5.patch 4.6.5.adv2006-002.patch
wget http://drupal.org/files/sa-2006-003/4.6.5.patch
mv 4.6.5.patch 4.6.5.adv2006-003.patch
wget http://drupal.org/files/sa-2006-004/4.6.5.patch
mv 4.6.5.patch 4.6.5.adv2006-004.patch
cd /var/www/drupal-4.6.2
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-001.patch
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-002.patch
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-003.patch
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-004.patch
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.5.adv2006-001.patch

Ça a foiré oberleiter.net parce qu'il est en multilingue (sûrement le passage à 4.6.5 oÙ j'ai recopié des fichiers qui avaient dû être patchés).

Au petit bonheur la chance, j'ai commenté 2 fonctions dans la nouvelle version de includes/bootstrap.inc parce qu'elles faisaient double emploi avec celles dans includes/common.inc:

  • url
  • drupal_goto

Passage à v. 4.6.7

cf. http://drupal.org/node/65351

cd /home/carl/drupal4.6/
wget http://drupal.org/files/sa-2006-005/4.6.6.patch
mv 4.6.6.patch 4.6.6.adv2006-005.patch
wget http://drupal.org/files/sa-2006-006/4.6.6.patch
mv 4.6.6.patch 4.6.6.adv2006-006.patch
cd /var/www/drupal-4.6.2
patch -p0 -u < /home/carl/drupal4.6/4.6.6.adv2006-005.patch
patch -p0 -u < /home/carl/drupal4.6/4.6.6.adv2006-006.patch

Passage à v. 4.6.8

 wget http://drupal.org/files/sa-2006-007/4.6.7.patch
mv 4.6.7.patch 4.6.7.adv2006-007.patch
http://drupal.org/files/sa-2006-008/4.6.7.patch
mv 4.6.7.patch 4.6.7.adv2006-008.patch
cd /var/www/drupal-4.6.2
patch -p0 -u < /home/carl/drupal4.6/4.6.7.adv2006-007.patch
patch -p0 -u < /home/carl/drupal4.6/4.6.7.adv2006-008.patch

mise à jour webform

cd drupal4.6
mv webform-4.6.0.tar.gz webform-4.6.0_old.tar.gz
wget http://ftp.osuosl.org/pub/drupal/files/projects/webform-4.6.0.tar.gz

Dans install.txt:

Upgrading from previous version
-------------------------------

1. Copy the new webform.module and webform.inc to the Drupal modules/ directory.

2. Go to "admin" -> "settings" ->  "webform" and select the upgrade link.

Donc:

cd /var/www/drupal46/modules
cp webform.inc webform.old.inc
cp webform.module webform.old.module

Ensuite, s'identifier comme administrateur et aller dans administration > settings > webform > et choisir pas de cross-scripting.

Note: il a fallu retirer les .old parce qu'il y avait une double déclaration de fonction lorsque je surfais sur la page “admin/modules”

Passage à v. 4.6.9

cd drupal4.6
wget http://drupal.org//files/sa-2006-011/4.6.8.patch
cd /var/www/drupal-4.6.2
patch -p0 -u < /home/carl/drupal4.6/4.6.8.patch

Passage à v. 4.6.10

cd drupal4.6
wget http://drupal.org/files/sa-2007-002/4.6.10.patch
mv 4.6.10.patch 4.6.10.adv2007-002.patch
cd /var/www/drupal-4.6.2/
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-002.patch

cd drupal4.6
wget http://drupal.org/files/sa-2007-001/4.6.10.patch
mv 4.6.10.patch 4.6.10.adv2007-001.patch
cd /var/www/drupal-4.6.2/
sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-001.patch

Il y a eu un petit foirage:

sudo patch -p0 -u < /home/carl/drupal4.6/4.6.10.adv2007-001.patch 
(Stripping trailing CRs from patch.)
patching file modules/filter.module
(Stripping trailing CRs from patch.)
patching file modules/system.module
Hunk #1 FAILED at 24.
1 out of 1 hunk FAILED -- saving rejects to file modules/system.module.rej

J'ai été voir, c'est pas grave (enfin, je pense).

Alertes du 11/01/08

J'ai ajouté un patch, pour les autres alertes, ça n'avait aucune incidence sur le site.

Modules

Téléchargeables depuis http://drupal.org/project/Modules

flexinode

pré-requis pour event

wget http://drupal.org/files/projects/flexinode-4.6.0.tar.gz
tar xzf flexinode-4.6.0.tar.gz -C /var/www/drupal/modules/
mysql -u drupal -p drupal < /var/www/drupal/modules/flexinode/flexinode.mysql

activer le module aller dans administer → settings → flexinode et corriger l'emplacement de convert:

/usr/bin/convert

installer imagemagick:

sudo aptitude install imagemagick

event

wget http://drupal.org/files/projects/event-4.6.0.tar.gz
tar xzf event-4.6.0.tar.gz -C /var/www/drupal/modules/
mysql -u drupal -p drupal < /var/www/drupal/modules/event/event.mysql
  • activer le module
  • aller sur administer → content type → onglet configure → sous-onglet content types
  • cliquer configure pour un des types
  • on voit Show in event calendar: c'est cela qu'on peut modifier pour voir apparaitre dans le calendrier

locale

C'est un module déjà installé de base.

Il suffit de l'activer dans adminster → modules

Ensuite, on peut rajouter des langues: administer → localisation

Il faut d'abord rajouter une langue, ensuite importer le fichier .po qu'on aura au préalable téléchargé sur http://drupal.org/project/Translations.

Avec le français et l'italien, ça ne marche pas (il charge, puis il s'arrête).

Vu que ce sont de gros fichiers, j'ai changé dans le fichier /etc/php4/apache2/php.ini le temps d'exécution:

max_execution_time = 120     ;

Mais ça n'a rien donné.

Alors j'ai trouvé ici une autre modification à faire:

memory_limit = 32M      ;

Et ça a fonctionné.

voir aussi:

internationalisation

Il faut d'abord activer le module locale (qui est dans l'installation de base, core).

wget http://drupal.org/files/projects/i18n-4.6.0.tar.gz
tar xzf i18n-4.6.0.tar.gz -C /var/www/drupal-4.6.2/

Apparemment, c'est un peu plus compliqué que pour les autres modules…

Doc:

Lorsqu'on a copie le module dans /var/www/drupal-4.6.2/modules/i18n/, il faut patcher un repertoire (/var/www/drupal-4.6.2/includes) et un fichier (/var/www/drupal-4.6.2/modules/taxonomy.module).

Les explications sur la commande patch se trouvent ici: Diff and patch.

cd /var/www/drupal-4.6.2/includes/
patch -p0 -u < ../modules/i18n/patches/i18n_includes.patch
cd /var/www/drupal-4.6.2/modules/
patch < i18n/patches/i18n_taxonomy_module.patch

Il reste a modifier la base de données:

mysql -u drupal -p drupal < /var/www/drupal-4.6.2/modules/i18n/i18n.mysql

Ensuite, il faut activer le module dans administer > modules et le configurer dans administer > settings > i18n, c'est-a-dire activer les 3 types de noeuds:

  • flexinode-1
  • page
  • story

Dans administer > block, activer languages.

Pour les alias de nom de noeud, il faut activer le module path.

Ensuite, quand un fait un alias, c'est lang/alias: Pour la page de bienvenue:

  • en francais: fr/welcome
  • en anglais: en/welcome
  • en allemand: de/welcome

webform

wget http://drupal.org/files/projects/webform-4.6.0.tar.gz
tar xzf webform-4.6.0.tar.gz
mysql -u drupal -p drupal < webform.mysql
cp webform.module /var/www/drupal-4.6.2/modules/
cp webform.inc /var/www/drupal-4.6.2/modules/

Activer dans administer > modules

le webform est ensuite disponible lorsqu'on ajoute du contenu.

Guestbook

wget http://drupal.org/files/projects/guestbook-4.6.0.tar.gz
tar xzf guestbook-4.6.0.tar.gz
cd guestbook/
mysql -u drupal -p drupal < guestbook.mysql
cp guestbook.module /var/www/drupal-4.6.2/modules/

Pour accéder au guestbook pour tous le site: http://site/drupal/guestbook/0

Statistics filter

wget http://drupal.org/files/projects/statistics_filter-4.6.0.tar.gz
tar xzf statistics_filter-4.6.0.tar.gz
cd statistics_filter/
mysql -u drupal -p drupal < statistics_filter.mysql
cp statistics_filter.module /var/www/drupal-4.6.2/modules/

Dans README.txt:

To ignore search engines, you must install and enable the browscap module.

Activer Statistics dans Administer > Modules, ensuite activer Statistics Filter.

Pour configurer, activer browscap dans Administer > Settings > Browscap, ensuite configurer statistics filter dans Administer > Settings > Statistics filter: ignorer admin et crawlers

On peut voir les logs dans Administer > Logs, il y a plusieurs entrees:

  • referrers
  • top pages
  • top users
  • recent hits
  • user agents

Browscap

Pour le module Statistics filter si on veut sortir des logs les search engines.

wget http://drupal.org/files/projects/browscap-4.6.0.tar.gz
tar xzf browscap-4.6.0.tar.gz -C /var/www/drupal-4.6.2/modules/
cd /var/www/drupal-4.6.2/modules/browscap/
mysql -u drupal -p drupal < browscap.mysql

Activer dans Administer > Modules

Petit probleme, quand je change les settings dans le module statistics filter, j'ai l'erreur:

user error: Duplicate entry 'Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716' for key 1
query: INSERT INTO browscap_statistics (parent,counter,is_crawler) VALUES('Mozilla/5.0 (Windows; U; Win98; en-US; rv:1.7.10) Gecko/20050716 Firefox/1.0.6', 1, 0) in /var/www/drupal-4.6.2/includes/database.mysql.inc on line 66.

warning: Cannot modify header information - headers already sent by (output started at /var/www/drupal-4.6.2/includes/common.inc:320) in /var/www/drupal-4.6.2/includes/bootstrap.inc on line 701.

C'est un bug reporté: http://drupal.org/node/26868

En attendant, mettre la longueur du champ parent de la table browscap_statistics a 255;

ALTER TABLE `browscap_statistics` CHANGE `parent` `parent` VARCHAR( 255 ) NOT NULL 

Customisation

Pour avoir un menu par langue: http://drupal.org/node/17829

Here is a workaround/hack for 4.6.0 to define separate user menus, one for each language. Then have them switch off and on using adminster→blocks→configure (a menu block)→“Page specific visibility settings”. Use en/* to keep an es menu from showing on the en pages, and vice versa.

Look in block.module, around line number 470 for this existing code:
      // Match path if necessary
      if ($block['pages']) {
        $path = drupal_get_path_alias($_GET['q']);

then add the following below it:

     // if a language is enabled, prepend it to the path
     // This will allow blocked page specs to match on language
     $lang = i18n_get_lang($name);
     if (strlen($lang) > 0) {
         $path = $lang . '/' . $path;
     }
I have no idea yet what side effects this may create, just got it to work, but the menus are switching nicely. YMMV
drupal/4dot6.txt · Last modified: 2013/01/30 17:50 (external edit)