Download here

(License : WTFPL)

This is mostly a repackaging, with a minor correction to support PunBB 1.4.2, as it worked almost out of the box.

Reposting the initial release description :

This extension allows users to save a draft of their message when they can't post it right away. Very useful for the careful writers and wordsmiths among your users smile

When a user has at least one draft pending, a "Drafts" link will appear in the header, next to the links for "New posts", "Active topics" etc. This link will open the list of drafts, where the user can delete a draft (only one at a time) or resume writing his message.

Technical speak : a new table will be created for drafts, so as not to pollute the posts table. When a user is replying to a topic, if he saves a draft, the draft is bound to the topic the user wanted to reply to. If the user was creating a new topic, the draft will be bound to the forum the user wanted to post in. Drafts are saved *AFTER* bbcode validation, so as to simplify their display.

English and French language support included.

Download here (version 1.0.2)

This is simply a repackaging of my extension, with the manifest file changed to support the latest PunBB version, as everything just worked when I tested it.

TL;DR : When you read a new topic, PunBB marks it as read in a tracking cookie, which is fine if you always visit your forum from the same computer. This extension tracks the topics in the database instead, so you don't see old topics highlighted when you've already read them on another device.

Reposting the blurb that I wrote for the initial release :

(License : WTFPL)

Back in the days of PunBB 1.2, new posts were highlighted until you logged out (or timed out), even when you had read them (unless you used this mod). PunBB 1.3 improved this by keeping track of the posts you read in a tracking cookie, which is simple enough but not suited to my needs.

In the default installation, PunBB is configured with a visit timeout of 10 minutes, which means that you have to read all the new posts right away : if you go take a walk or something for 20 minutes, you'll lose track of everything you hadn't read.

To accomodate my users who like to idle all day long but not miss one post, my PunBB board is set up with o_timeout_visit = 86400 (24 hours). Problem is, some of us log in from different locations during the day (home, office, iPhone) and so posts that we have read are marked as new (because the cookie is different)

With this extension, your read posts are stored in the database (new column "tracked_topics" in the "users" table)

You could say that my extension corrects a self-inflicted problem, and you'd be right, but maybe a PunBB board admin somewhere needs it too, so there it is.

PLEASE NOTE :
- This extension might hurt your database performance a tiny bit (count 1 more UPDATE query for each topic view by each user)
- Not useful if your o_timeout_visit is lower than 1 or 2 hours, or if each of your users only has one computer
- Just after installing the extension, users currently logged in will see some already read messages reappear as new : this is perfectly normal since the new tracking has to start somewhere ! Everything will be back to normal once the users mark those messages as read.
- You might want to fix your board and get rid of this bug while you're at it (suggested fix inside)

ollyno1uk, the code you installed has been working perfectly fine for me and my users for over a year, so I'm not too worried smile

I have made a bunch of other extensions but haven't released them so far, I only use them on my private forum. If time permits I will gladly post the more interesting ones.

Hey ollyno1uk,

It's only a warning, not an error, so I guess the install should be successful ? If it's not, try changing line 22 in the file manifest.xml:

$forum_db->add_field('users', 'tracked_topics', 'TEXT');

to this:

$forum_db->add_field('users', 'tracked_topics', 'TEXT', true);

5

(3 replies, posted in PunBB 1.3 extensions)

Download here

(License : WTFPL)

This simple extension allows your users to browse your PunBB board with the font of their choice, and their preferred font size. It will add two fields in Profile > Settings : Font, where the user can just type the name of the font he wants to use, and Font size, a dropdown list with values ranging from 6 to 18 (font size is in points)

Technical speak : Adds two columns to the users table, "font" and "font_size".

English and French language support included.

Download here

(License : WTFPL)

This extension allows users to save a draft of their message when they can't post it right away. Very useful for the careful writers and wordsmiths among your users smile

When a user has at least one draft pending, a "Drafts" link will appear in the header, next to the links for "New posts", "Active topics" etc. This link will open the list of drafts, where the user can delete a draft (only one at a time) or resume writing his message.

Technical speak : a new table will be created for drafts, so as not to pollute the posts table. When a user is replying to a topic, if he saves a draft, the draft is bound to the topic the user wanted to reply to. If the user was creating a new topic, the draft will be bound to the forum the user wanted to post in. Drafts are saved *AFTER* bbcode validation, so as to simplify their display.

English and French language support included.

Download here (version 1.0.1 with the warning removed - see below)

(License : WTFPL)

Back in the days of PunBB 1.2, new posts were highlighted until you logged out (or timed out), even when you had read them (unless you used this mod). PunBB 1.3 improved this by keeping track of the posts you read in a tracking cookie, which is simple enough but not suited to my needs.

In the default installation, PunBB is configured with a visit timeout of 10 minutes, which means that you have to read all the new posts right away : if you go take a walk or something for 20 minutes, you'll lose track of everything you hadn't read.

To accomodate my users who like to idle all day long but not miss one post, my PunBB board is set up with o_timeout_visit = 86400 (24 hours). Problem is, some of us log in from different locations during the day (home, office, iPhone) and so posts that we have read are marked as new.

With this extension, your read posts are stored in the database (new column "tracked_topics" in the "users" table)

You could say that my extension corrects a self-inflicted problem, and you'd be right, but maybe a PunBB board admin somewhere needs it too, so there it is.

PLEASE NOTE :
- This extension might hurt your database performance a tiny bit (count 1 more UPDATE query for each topic view by each user)
- Not useful if your o_timeout_visit is lower than 1 or 2 hours, or if each of your users only has one computer
- Just after installing the extension, users currently logged in will see some already read messages reappear as new : this is perfectly normal since the new tracking has to start somewhere ! Everything will be back to normal once the users mark those messages as read.
- You might want to fix your board and get rid of this bug while you're at it (suggested fix inside)

Lines 1541-1542 in functions.php, the code doesn't do what the comment says.

// If the entry is older than "o_timeout_visit", update last_visit for the user in question, then delete him/her from the online list
if ($cur_user['idle'] != '0')

This causes the following problem :

User A is inactive for longer than "o_timeout_online"
User B browses the board, user A is removed from the list of online users (idle = 1)
User A is still inactive (reading/writing a very long post)
User B browses the board, user A is completely removed from the online table and sees his date of last visit modified to the date of his last action, THUS loses track of his unread messages.

Users should always be considered as online (idle or not) for as long as o_timeout_visit. My users tend to idle a lot, so I had configured "o_timeout_visit" to 24 hours back in version 1.2.

The code should be :

// If the entry is older than "o_timeout_visit", update last_visit for the user in question, then delete him/her from the online list
if ($cur_user['logged'] < ($now-$forum_config['o_timeout_visit']))

like it was before.

9

(154 replies, posted in Supported extensions)

I found a tiny little bug in this extension : I wrote a french language pack for it and the alt text for the enveloppe picture showing the PM status is hard-coded in English.

extensions/pun_pm/functions.php, line 986 should be :

                 echo "\t\t\t\t", '<table class="pun_pm_list">', "\n\t\t\t\t\t", '<thead><tr><th class="td1"><input onclick="return pun_pm_select_all(this.checked);" type="checkbox" name="pm_delete_all" value="" /></th><th class="td2"><img src="', $icons_path, '/sent.png" height="16" width="16" alt="', $lang_pun_pm['Status'], '" title="', $lang_pun_pm['Status'], '"/></th><th class="td3">', $forum_page['user_role'], '</th><th class="td4">', $lang_pun_pm['Subject'], '</th><th class="td5">', $lang_pun_pm['Edit date'], '</th></tr></thead>', "\n\t\t\t\t\t", '<tbody>', "\n";

And line 993 should be :

                                '<img src="'.$icons_path.'/'.($message['status'] == 'delivered' ? $forum_page['type'].'_' : '').$message['status'].'.png" height="16" width="16" alt="'.$lang_pun_pm[$message['status']].'" title="'.$lang_pun_pm[$message['status']].'" />',

Lines 65-66 in include/essentials.php :

// Make sure PHP reports all errors except E_NOTICE. PunBB supports E_ALL, but a lot of scripts it may interact with, do not.
error_reporting(E_ALL);

It seems to me that either the comment is wrong, or the code should read

error_reporting(E_ALL & ~E_NOTICE);

Am I right ?

Rien en cours non plus, de toute façon c'est au moment de poster les modifications qu'il faut se soucier des fusions...

Cycle de développement
- Récupérer la dernière archive en date sur le serveur, en notant la date d'upload et la taille
(on peut voir ça ici : http://punbb.informer.com/wiki/lib/exe/ … nbb13/lang )
- Faire les modifs, générer une nouvelle archive
- Retourner sur la page d'upload, vérifier que la date d'upload et la taille correspondent à la version sur laquelle on a travaillé : si oui, tout va bien, on écrase. Sinon, se reporter au forum pour prendre connaissance des modifs faites ou mieux, utiliser des outils de diff pour intégrer les autres changements (je conseille KDiff3, fonctionne aussi bien sur Windows que sur Linux)

Nouvelle version postée, intégrant les corrections des messages 13 et 16. J'accepte donc les espaces à l'intérieur des guillemets, je peux survivre en maintenant ma version perso avec &thinsp; wink (de toute façon les messages à guillemets sont presque tous uniquement destinés à l'administrateur)

Pour le cycle des corrections, je préfère poster mes remarques ici et en discuter avant de publier sur le wiki, je considère que c'est avant tout ta traduction.

xdu wrote:

[…] Si non par défaut est particulièrement lourdingue (je peux le dire, c'est moi qui l'ai écrit).
[…] As-tu une autre idée ?

Je ne trouve pas mieux que «si redéfinies».

xdu wrote:

Ouvrir un sujet : jusqu'ici j'avais utilisé « Lancer un sujet » (voir forum.php). On reste là-dessus ?

Ah oui, je voulais ouvrir le débat là-dessus wink J'ai une préférence pour «ouvrir», je trouve que «lancer» fait un peu familier.

xdu wrote:

Tiens d'ailleurs, sur les guillemets français : c'est un signe double, donc on met un espace avant et après, non ?

Oui, dans les règles de typographie, il faut des espaces d'une largeur d'un huitième de celle de la lettre m «_à l'intérieur_» des guillemets. Il existe une entité HTML pour ça, &thinsp;. Je ne sais pas si elle est supportée par tous les navigateurs, et apparemment il faut que la police d'affichage supporte l'Unicode. Mais bon, si on veut faire dans la diptérophilie anale, on peut l'utiliser smile Je vais faire quelques tests de mon côté.

Je continue mon petit tour, fichier par fichier : (en vert, la version actuelle, en rouge mes suggestions, et en bleu une justification)

admin_forums.php
'Edit forum perms legend'               =>      'Permissions de groupe du forum (suffixées par «(S)» si non par défaut)',
'Edit forum perms legend'               =>      'Permissions des groupes sur le forum (suffixées par «(S)» si non par défaut)',
(pour plus de clarté)

'Only for empty forums'                 =>      'Seulement dans les forums vides',
'Only for empty forums'                 =>      'Disponible seulement dans les forums vides',
(je pense qu'on a la place)

'Post replies'                                  =>      'Réponses',
'Post replies'                                  =>      'Répondre',
(il me semble plus logique de mettre un verbe comme c'est une permission qu'on donne, d'ailleurs on a «Lire le forum» dans la première colonne)

'Post topics'                                   =>      'Sujets',
'Post topics'                                   =>      'Ouvrir&nbsp;un&nbsp;sujet',
(en utilisant des espaces insécables HTML, j'arrive à faire tenir ce libellé sur une ligne et donc je respecte ma «convention» permission = verbe. À tester)

'Forum perms admins info'               =>      'Les administrateurs du forum ont toujours toutes les permissions, sans altération possible.',
'Forum perms admins info'               =>      'Les administrateurs du forum ont toujours toutes les permissions, sans restriction possible.',
(pour coller un peu plus à la version anglaise «…which cannot be restricted»)

J'ai à nouveau téléchargé le fichier, il est bien à jour. Peut-être que Firefox garde les fichiers téléchargés en cache ?

xdu wrote:

Bedroom, comment veux-tu travailler ? Tu postes sur le wiki ce que tu as fait jusqu'ici, et j'intègre les deux dernières remarques (7 & 8) ?

Déjà, je veux bien des journées de 30 heures pour avoir un peu plus de temps libre pour PunBB sad . Désolé d'avoir à nouveau tardé à répondre.

J'ai posté mes corrections sur le wiki, mais étrangement, même si tout semble correct sur cette page (heure de modification et taille du fichier), lorsque je le télécharge à nouveau, j'ai l'ancienne version yikes ? Il faut attendre une validation quelconque par les admins ?

J'ai donc fait toutes les modifications que j'ai signalées, y compris pour les guillemets français, mais sans toucher au mot «élaguer». Je commence à m'y faire... ma copine, qui est un vrai cordon bleu, suggérait également «écrémer» wink

(oups, je n'avais pas activé le suivi du sujet et j'ai tardé à répondre)

D'accord, je vais préparer une version intégrant ces corrections (sauf pour «prune» wink ) et continuer de poster ici mes remarques avant de les intégrer ou pas.

Pour «prune» : c'est vrai que «purger» a malheureusement ce sens de vider totalement. Mais je pense qu'«élaguer» fait partie d'un vocabulaire un peu trop spécifique, j'ai peur que ce soit un mot un peu méconnu et qui n'éveille pas immédiatement cette belle image de débroussaillement (élaguer = 68.000 résultats sur Google, c'est pas énorme, je trouve)

Cela dit, c'est peut-être la même chose pour «prune» pour les anglophones. Et il se peut aussi que je sous-estime les connaissances du francophone moyen tongue

J'essaye de trouver un verbe de remplacement mais c'est pas gagné. Éplucher ? Plumer ? Tondre ? Liquider ? big_smile

(Éparpiller par petits bouts façon puzzle ?)

A priori, on est entre francophones sur ce sujet, donc je vais poster uniquement dans cette langue.

J'avais moi-même commencé et pratiquement terminé un paquetage de traduction, avant de (mieux) chercher à nouveau s'il n'en existait pas déjà un. Merci beaucoup pour ce bon travail ! Certains choix sont beaucoup plus naturels que les miens. J'apprécie aussi la qualité de l'orthographe, si rare dans les traductions libres.

Je vais quand même passer en revue les fichiers, par ordre alphabétique, pour faire quelques remarques et suggestions. Mais tout d'abord une remarque générale :

Personnellement, j'aime bien les guillemets français (« »). Non, ils ne figurent pas sur les claviers AZERTY —il faut utiliser la disposition bépo comme moi smile — et l'immense majorité des francophones s'est habituée au guillemet anglais ("). Mais ça me ferait plaisir que cette traduction respecte cette règle de la typographie du français. Mais c'est pas trop grave, je peux aussi faire les corrections dans mon coin. Oui, je suis maniaque. big_smile

admin_bans.php

'Ban advanced' : attention à l'orthographe de Paramètres

'Ban criteria legend' : «critère» devrait être au pluriel, criteria étant le pluriel de criterion en anglais.

'No user id message' : j'aurais préféré «Il n'y a pas d'utilisateur avec cet identifiant», ID ça fait un peu franglais.

admin_categories.php

'Confirm delete cat' : je préfèrerais «Vous allez supprimer la catégorie...»

'Must be integer' : «L'emplacement doit être un nombre entier positif»

admin_censoring.php
'Add censored word extra' : […] il faut activer l'option «<strong>Censure</strong> […]».

'Add word' : «Ajouter le mot», étant donné qu'on valide avec ce bouton le mot qu'on vient de saisir.

admin_common.php

'Delete help' : j'aurais plutôt dit quelque chose comme «Une confirmation vous sera demandée» ou «Nécessite une confirmation via un formulaire séparé» (plus proche de l'original)

'Required warn' : je trouve que «marqués d'un (Obligatoire)» fait un peu bancal. Marqués par, marqués comme ? Ou encore mieux, «Tous les champs portant la mention %s doivent être remplis avant d'envoyer le formulaire»

'Start' : c'est peut-être un peu trop littéral de traduire par «Début». Pourquoi pas «Général», comme on le voit souvent sur le premier onglet d'options sur un logiciel ?

'Moderate' : il manque un accent à Modérer

'Prune topics' : Élaguer est une traduction littérale de prune, mais je pense que «Purger les sujets» est plus naturel.

admin_ext.php

'Installed extensions warn' : «[…] supprimées de la base de données et ne pourront pas être restaurées par une réinstallation […]» (je trouve que le conditionnel «ne seraient pas» concorde mal après le futur «seront»)

'Illegal ID' : Même remarque qu'au-dessus, ID fait un peu trop franglais. D'un autre côté, on est ici dans un contexte assez technique où le mot «ID» a une vraie signification, c'est une propriété de l'extension qu'on veut installer. Peut-être peut-on ajouter la traduction quand même ? Par ex. «L'ID (identifiant) ne peut contenir […]»

'Missing manifest' : J'aurais dit «Fichier manifest.xml manquant».

J'imagine que tu as préféré laisser les messages suivants en anglais à cause de leur côté très technique, mais voici mes propositions :

Avec des guillemets anglais

'extension root error'                  =>      'L\'élément racine "extension" est mal formé ou manquant.',
'extension/engine error'                =>      'L\'attribut "engine" de l\'élément racine est mal formé ou manquant.',
'extension/engine error2'               =>      'Version non supportée du format de l\'extension.',
'extension/id error'                    =>      'L\'élément "extension/id" est mal formé ou manquant.',
'extension/id error2'                   =>      'L\'élément "extension/id" ne correspond pas au nom du dossier de l\'extension.',
'extension/title error'                 =>      'L\'élément "extension/title" est mal formé ou manquant.',
'extension/version error'               =>      'L\'élément "extension/version" est mal formé ou manquant.',
'extension/description error'   =>      'L\'élément "extension/description" est mal formé ou manquant.',
'extension/author error'                =>      'L\'élément "extension/author" est mal formé ou manquant.',
'extension/minversion error'    =>      'L\'élément "extension/minversion" est mal formé ou manquant.',
'extension/maxtestedon error'   =>      'L\'élément "extension/maxtestedon" est mal formé ou manquant.',
'extension/note error'                  =>      'L\'élément "extension/note" est mal formé.',
'extension/note error2'                 =>      'L\'élément "extension/note" a un attribut "type" mal formé ou manquant.',
'extension/hooks/hook error'    =>      'L\'élément "extension/hooks/hook" est mal formé ou manquant.',
'extension/hooks/hook error2'   =>      'L\'élément "extension/hooks/hook" n\'a pas d\'attribut "id".',
'extension/hooks/hook error3'   =>      'L\'élément "extension/hooks/hook" a une valeur non autorisée pour l\'attribut "priority".',
'extension/hooks/hook error4'   =>      'L\'élément "extension/hooks/hook" a un contenu qui ne se termine pas par du mode PHP.',

Ou avec des guillemets français

'extension root error'                  =>      'L\'élément racine «extension» est mal formé ou manquant.',
'extension/engine error'                =>      'L\'attribut «engine» de l\'élément racine est mal formé ou manquant.',
'extension/engine error2'               =>      'Version non supportée du format de l\'extension.',
'extension/id error'                    =>      'L\'élément «extension/id» est mal formé ou manquant.',
'extension/id error2'                   =>      'L\'élément «extension/id» ne correspond pas au nom du dossier de l\'extension.',
'extension/title error'                 =>      'L\'élément «extension/title» est mal formé ou manquant.',
'extension/version error'               =>      'L\'élément «extension/version» est mal formé ou manquant.',
'extension/description error'   =>      'L\'élément «extension/description» est mal formé ou manquant.',
'extension/author error'                =>      'L\'élément «extension/author» est mal formé ou manquant.',
'extension/minversion error'    =>      'L\'élément «extension/minversion» est mal formé ou manquant.',
'extension/maxtestedon error'   =>      'L\'élément «extension/maxtestedon» est mal formé ou manquant.',
'extension/note error'                  =>      'L\'élément «extension/note» est mal formé.',
'extension/note error2'                 =>      'L\'élément «extension/note» a un attribut «type» mal formé ou manquant.',
'extension/hooks/hook error'    =>      'L\'élément «extension/hooks/hook» est mal formé ou manquant.',
'extension/hooks/hook error2'   =>      'L\'élément «extension/hooks/hook» n\'a pas d\'attribut «id».',
'extension/hooks/hook error3'   =>      'L\'élément «extension/hooks/hook» a une valeur non autorisée pour l\'attribut «priority».',
'extension/hooks/hook error4'   =>      'L\'élément «extension/hooks/hook» a un contenu qui ne se termine pas par du mode PHP.',

Je m'arrête là pour l'instant, pour ne pas te submerger de remarques wink (même si, encore une fois, j'en trouve assez peu à faire et je trouve que c'est du bon boulot)

Actually, in this mod, the result of the parsing is assigned to a div's innerHTML. So it's not really a matter of standards (I hadn't even noticed that innerHTML isn't a W3C standard, thanks for pointing that out !)

Apart from JS not really being my cup of tea, another reason for choosing AJAX is that I don't like reinventing the wheel. My forum uses custom BB tags and smileys and this ensures I have just one file to edit if I want to add/modify/delete one of them. I made this mod mostly for my personnal needs, you see smile

@Connorhd : exactly !

And here's a demo !

##
##
##        Mod title:  AJAX post preview
##
##      Mod version:  1.0.2
##   Works on PunBB:  1.2, 1.2.10
##     Release date:  2005-12-22
##           Author:  bedroom
##
##      Description:  This mod uses the xajax library to quickly display the
##                    preview of a post (or errors in the post)
##
##                    (see: http://xajax.sourceforge.net)
##
##                    Nothing fancy, it does what the "Preview" button does,
##                    only without posting the form and reloading the page.
##
##                    Note that if javascript is disabled, the "Preview"
##                    button will still work the usual way (This is called 
##                    graceful degradation, folks :) )
##
##   Affected files:  header.php
##                    post.php
##                    edit.php
##
##       Affects DB:  No
##
##            Notes:  Tested with Firefox 1.5, Internet Explorer 6.0,
##                    Opera 8.51
##
##       DISCLAIMER:  Please note that "mods" are not officially supported by
##                    PunBB. Installation of this modification is done at your
##                    own risk. Backup your forum database and any and all
##                    applicable files before proceeding.
##
##

This release (finally) fixes problems with Unicode characters displayed incorrectly. All languages will now display just fine in the preview box !

(pun_trim() was a bit too aggressive with the french "à", replaced by trim() )

Download here

1.0.1 users : just grab the post.server.php from this release, that's all you need to update.

This is the return... of the AJAX post preview developper ! smile

dss wrote:

I applied this (three times to be sure I did it right) and nothing happens in Safari.

I'm sorry to hear that, unfortunately I have no way to test this mod with Safari.

Folks, I'm sorry about popping in so late, I had kinda forgotten about posting this mod hmm I made it mainly for myself you see, so I wasn't too curious about what everybody else thought of it.

DENiAL, I guess you could try combining my mod and your image upload mod like this :

<p><input type="submit" name="submit" value="<?php echo $lang_common['Submit'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="s" /><input type="submit" name="preview" onclick="ClearUploadSlots(); xajax_getpreview(xajax.getFormValues('post')); document.location.href='#ajaxpostpreview'; return false;" value="<?php echo $lang_post['Preview'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="p" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p>

I'll study the upload image mod just to check, but I don't think it could harm anything to do it this way.

I'll see if I can set up a demo sometime. Thanks to everyone who tried this mod out, I'm glad that some of you like it !

##
##
##        Mod title:  AJAX post preview
##
##      Mod version:  1.0.1
##   Works on PunBB:  1.2, 1.2.10
##     Release date:  2005-12-08
##           Author:  bedroom
##
##      Description:  This mod uses the xajax library to quickly display the
##                    preview of a post (or errors in the post)
##
##                    (see: http://xajax.sourceforge.net)
##
##                    Nothing fancy, it does what the "Preview" button does,
##                    only without posting the form and reloading the page.
##
##                    Note that if javascript is disabled, the "Preview"
##                    button will still work the usual way (This is called 
##                    graceful degradation, folks :) )
##
##   Affected files:  header.php
##                    post.php
##                    edit.php
##
##       Affects DB:  No
##
##            Notes:  Tested with Firefox 1.5, Internet Explorer 6.0,
##                    Opera 8.51
##
##       DISCLAIMER:  Please note that "mods" are not officially supported by
##                    PunBB. Installation of this modification is done at your
##                    own risk. Backup your forum database and any and all
##                    applicable files before proceeding.
##
##

1.0.1 is the version you want !

This version has two bugfixes :

1. Added utf8_decode() and utf8_encode() going in and out of the getpreview() function in post.server.php. Special characters like the french "à" are now displayed correctly in the preview block.

2. Fixed a bug with single- and double-quotes displaying incorrectly when magic_quotes_gpc is enabled.

Furthermore, 7 additional steps were added to the readme, so that the mod is now applied to edit.php as well.

If you have version 1.0 installed and wish to upgrade, simply download the new files, upload the new post.server.php and follow steps 14 to 21 of the readme.

Thank you for using this mod ! smile

Download here

Demo here

Additional notes : no, it's not an earth-shattering extension, since the default behavior for the preview button is pretty fast, but this mod is intended for those of us who like to live in the warp-speed lane smile
(also, because I use the "preview" button about a zillion times before posting)

If you really want to mimic the "preview" button's original behavior, you should use this on step 13 of the install :

<!-- MOD AJAX post preview -->
<p><input type="submit" name="submit" value="<?php echo $lang_common['Submit'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="s" /><input type="submit" onclick="xajax_getpreview(xajax.getFormValues('post')); document.location.href='#punwrap'; return false;" name="preview" value="<?php echo $lang_post['Preview'] ?>" tabindex="<?php echo $cur_index++ ?>" accesskey="p" /><a href="javascript:history.go(-1)"><?php echo $lang_common['Go back'] ?></a></p>
<!--// MOD AJAX post preview -->

This tells the browser to go to #punwrap, the top of the page, whereas my version goes to #ajaxpostpreview, the preview block.

It doesn't work so well with Opera, because the document.location.href = '#ajaxpostpreview' instruction seems to work only once... if you click "preview" again, the window doesn't scroll back to the right place (Opera's lazy, man). If anybody out there has a fix for this, I'll be glad to know it.

##
##
##        Mod title:  AJAX post preview
##
##      Mod version:  1.0
##   Works on PunBB:  1.2, 1.2.10
##     Release date:  2005-12-08
##           Author:  bedroom
##
##      Description:  This mod uses the xajax library to quickly display the
##                    preview of a post (or errors in the post)
##
##                    (see: http://xajax.sourceforge.net)
##
##                    Nothing fancy, it does what the "Preview" button does,
##                    only without posting the form and reloading the page.
##
##                    Note that if javascript is disabled, the "Preview"
##                    button will still work the usual way (This is called 
##                    graceful degradation, folks :) )
##
##   Affected files:  header.php
##                    post.php
##
##       Affects DB:  No
##
##            Notes:  Tested with Firefox 1.5, Internet Explorer 6.0,
##                    Opera 8.51
##
##       DISCLAIMER:  Please note that "mods" are not officially supported by
##                    PunBB. Installation of this modification is done at your
##                    own risk. Backup your forum database and any and all
##                    applicable files before proceeding.
##
##

Download here