Messages système
De Calvinisme.
PHP | HTML | XMLCeci est la liste des messages disponibles dans l’espace MediaWiki. Veuillez visiter la Localisation de MediaWiki et translatewiki.net si vous désirez contribuer à la localisation générique de MediaWiki.
| Nom du message | Texte par défaut |
|---|---|
| Texte actuel | |
|
1movedto2 discuter | a renommé [[$1]] en [[$2]] |
|
1movedto2_redir discuter | a déplacé [[$1]] vers [[$2]] en écrasant sa redirection |
|
about discuter | À propos |
|
aboutpage discuter | Project:À propos |
|
aboutsite discuter | À propos de {{SITENAME}} |
|
accesskey-ca-addsection discuter | + |
|
accesskey-ca-delete discuter | d |
|
accesskey-ca-edit discuter | e |
|
accesskey-ca-history discuter | h |
|
accesskey-ca-move discuter | m |
|
accesskey-ca-nstab-category discuter | c |
|
accesskey-ca-nstab-help discuter | c |
|
accesskey-ca-nstab-image discuter | c |
|
accesskey-ca-nstab-main discuter | c |
|
accesskey-ca-nstab-media discuter | c |
|
accesskey-ca-nstab-mediawiki discuter | c |
|
accesskey-ca-nstab-project discuter | a |
|
accesskey-ca-nstab-special discuter | |
|
accesskey-ca-nstab-template discuter | c |
|
accesskey-ca-nstab-user discuter | c |
|
accesskey-ca-protect discuter | = |
|
accesskey-ca-talk discuter | t |
|
accesskey-ca-undelete discuter | d |
|
accesskey-ca-unwatch discuter | w |
|
accesskey-ca-viewsource discuter | e |
|
accesskey-ca-watch discuter | w |
|
accesskey-compareselectedversions discuter | v |
|
accesskey-diff discuter | v |
|
accesskey-feed-atom discuter | |
|
accesskey-feed-rss discuter | |
|
accesskey-minoredit discuter | i |
|
accesskey-n-currentevents discuter | |
|
accesskey-n-help discuter | |
|
accesskey-n-mainpage discuter | |
|
accesskey-n-portal discuter | |
|
accesskey-n-randompage discuter | x |
|
accesskey-n-recentchanges discuter | r |
|
accesskey-p-logo discuter | z |
|
accesskey-preview discuter | p |
|
accesskey-pt-anonlogin discuter | o |
|
accesskey-pt-anontalk discuter | n |
|
accesskey-pt-anonuserpage discuter | . |
|
accesskey-pt-login discuter | o |
|
accesskey-pt-logout discuter | |
|
accesskey-pt-mycontris discuter | y |
|
accesskey-pt-mytalk discuter | n |
|
accesskey-pt-preferences discuter | |
|
accesskey-pt-userpage discuter | . |
|
accesskey-pt-watchlist discuter | l |
|
accesskey-save discuter | s |
|
accesskey-search discuter | f |
|
accesskey-search-fulltext discuter | |
|
accesskey-search-go discuter | |
|
accesskey-t-contributions discuter | |
|
accesskey-t-emailuser discuter | |
|
accesskey-t-permalink discuter | |
|
accesskey-t-print discuter | p |
|
accesskey-t-recentchangeslinked discuter | k |
|
accesskey-t-specialpages discuter | q |
|
accesskey-t-upload discuter | u |
|
accesskey-t-whatlinkshere discuter | j |
|
accesskey-upload discuter | s |
|
accesskey-visualcomparison discuter | b |
|
accesskey-watch discuter | w |
|
accmailtext discuter | Un mot de passe généré aléatoirement pour [[User talk:$1|$1]] a été envoyé à $2. Le mot de passe pour ce nouveau compte peut être changé sur la page ''[[Special:ChangePassword|de changement de mot de passe]]'' après s’être connecté. |
|
accmailtitle discuter | Mot de passe envoyé. |
|
accountcreated discuter | Compte créé |
|
accountcreatedtext discuter | Le compte utilisateur pour $1 a été créé. |
|
acct_creation_throttle_hit discuter | Quelqu’un utilisant votre adresse IP a créé {{PLURAL:$1|un compte|$1 comptes}} au cours des dernières 24 heures, ce qui constitue la limite autorisée dans cet intervalle de temps. Par conséquent, la création de compte a été temporairement désactivée pour cette adresse IP. |
|
action-autopatrol discuter | avoir votre modification marquée comme patrouillée |
|
action-block discuter | bloquer en écriture cet utilisateur |
|
action-browsearchive discuter | rechercher des pages supprimées |
|
action-createaccount discuter | créer ce compte utilisateur |
|
action-createpage discuter | créer des pages |
|
action-createtalk discuter | créer des pages de discussion |
|
action-delete discuter | supprimer cette page |
|
action-deletedhistory discuter | voir l’historique supprimé de cette page |
|
action-deleterevision discuter | supprimer cette version |
|
action-edit discuter | modifier cette page |
|
action-import discuter | importer cette page à partir d’un autre wiki |
|
action-importupload discuter | importer cette page à partir d’un fichier téléversé |
|
action-mergehistory discuter | fusionner l’historique de cette page |
|
action-minoredit discuter | marquer cette modification comme mineure |
|
action-move discuter | renommer cette page |
|
action-move-rootuserpages discuter | renommer la page principale d’un utilisateur |
|
action-move-subpages discuter | renommer cette page et ses sous-pages |
|
action-movefile discuter | renommer ce fichier |
|
action-patrol discuter | marquer la modification des autres comme patrouillée |
|
action-protect discuter | modifier les niveaux de protection pour cette page |
|
action-read discuter | lire cette page |
|
action-reupload discuter | écraser ce fichier existant |
|
action-reupload-shared discuter | outrepasser localement ce fichier présent sur un dépôt partagé |
|
action-siteadmin discuter | verrouiller ou déverrouiller la base de données |
|
action-suppressionlog discuter | voir ce journal privé |
|
action-suppressrevision discuter | visionner et rétablir cette version supprimée |
|
action-trackback discuter | soumettre un rétrolien |
|
action-undelete discuter | restaurer cette page |
|
action-unwatchedpages discuter | voir la liste des pages non suivies |
|
action-upload discuter | téléverser ce fichier |
|
action-upload_by_url discuter | téléverser ce fichier à partir d’une adresse URL |
|
action-userrights discuter | modifier tous les droits d’utilisateur |
|
action-userrights-interwiki discuter | modifier les droits des utilisateurs sur d’autres wikis |
|
action-writeapi discuter | utiliser l‘API d’écriture |
|
actioncomplete discuter | Action effectuée |
|
actionthrottled discuter | Action limitée |
|
actionthrottledtext discuter | Pour lutter contre les pourriels, la fréquence d’exécution de cette action est limitée dans un laps de temps assez court, et vous avez dépassé cette limite. Veuillez essayer de nouveau dans quelques minutes. |
|
addedwatch discuter | Ajouté à la liste de suivi |
|
addedwatchtext discuter | La page « [[:$1]] » a été ajoutée à votre [[Special:Watchlist|liste de suivi]]. Les futures modifications de cette page et de sa page de discussion y seront listées et la page apparaîtra '''en gras''' dans la [[Special:RecentChanges|liste des modifications récentes]] pour en faciliter le repérage. |
|
addsection discuter | + |
|
all-logs-page discuter | Toutes les opérations |
|
allarticles discuter | Toutes les pages |
|
allinnamespace discuter | Toutes les pages (dans l’espace de noms $1) |
|
alllogstext discuter | Affichage combiné de tous les journaux disponibles des opérations sur {{SITENAME}}. Vous pouvez restreindre la vue en sélectionnant un type de journal, un nom d’utilisateur ou une page affectée (tous les deux étant sensibles à la casse). |
|
allmessages discuter | Messages système |
|
allmessagescurrent discuter | Texte actuel |
|
allmessagesdefault discuter | Texte par défaut |
|
allmessagesfilter discuter | Filtre de noms de message (expression rationnelle) : |
|
allmessagesmodified discuter | N’afficher que les modifications |
|
allmessagesname discuter | Nom du message |
|
allmessagesnotsupportedDB discuter | Cette page '''{{ns:special}}:Allmessages''' n’est pas utilisable car '''$wgUseDatabaseMessages''' a été désactivé. |
|
allmessagestext discuter | Ceci est la liste des messages disponibles dans l’espace MediaWiki. Veuillez visiter la [http://www.mediawiki.org/wiki/Localisation Localisation de MediaWiki] et [http://translatewiki.net/ translatewiki.net] si vous désirez contribuer à la localisation générique de MediaWiki. |
|
allnotinnamespace discuter | Toutes les pages (hors de l’espace de noms $1) |
|
allowemail discuter | Autoriser l’envoi de courriel venant d’autres utilisateurs |
|
allpages discuter | Toutes les pages |
|
allpages-bad-ns discuter | {{SITENAME}} n’a pas d’espace de noms « $1 ». |
|
allpages-summary discuter | |
|
allpagesbadtitle discuter | Le titre de page indiqué est incorrect ou contient un préfixe inter-langue ou inter-wiki réservé. Il peut aussi contenir un ou plusieurs caractères inutilisables dans les titres. |
|
allpagesfrom discuter | Afficher les pages à partir de : |
|
allpagesnext discuter | Suivant |
|
allpagesprefix discuter | Afficher les pages commençant par le préfixe : |
|
allpagesprev discuter | Précédent |
|
allpagessubmit discuter | Lister |
|
allpagesto discuter | Afficher les pages jusqu’à : |
|
alphaindexline discuter | de $1 à $2 |
|
alreadyrolled discuter | Impossible de révoquer la dernière modification de la page « [[:$1]] » effectuée par [[User:$2|$2]] ([[User talk:$2|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) ; quelqu’un d’autre a déjà modifié ou révoqué la page. La dernière modification de la page a été effectuée par [[User:$3|$3]] ([[User talk:$3|Discuter]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]). |
|
ancientpages discuter | Pages les plus anciennement modifiées |
|
ancientpages-summary discuter | |
|
and discuter |  et |
|
anoneditwarning discuter | '''Attention :''' vous n’êtes pas identifié{{GENDER:||e|(e)}}. Votre adresse IP sera enregistrée dans l’historique de cette page. |
|
anonnotice discuter | - |
|
anononlyblock discuter | utilisateur non enregistré uniquement |
|
anontalk discuter | Discussion avec cette adresse IP |
|
anontalkpagetext discuter | ---- ''Vous êtes sur la page de discussion d’un utilisateur anonyme qui n’a pas encore créé de compte ou qui n’en utilise pas. Pour cette raison, nous devons utiliser son adresse IP pour l’identifier. Une adresse IP peut être partagée par plusieurs utilisateurs. Si vous êtes un utilisateur anonyme et si vous constatez que des commentaires qui ne vous concernent pas vous ont été adressés, vous pouvez [[Special:UserLogin/signup|créer un compte]] ou [[Special:UserLogin|vous connecter]] afin d’éviter toute confusion future avec d’autres contributeurs anonymes.'' |
|
anonymous discuter | {{PLURAL:$1|Utilisateur non enregistré|Utilisateurs non enregistrés}} sur {{SITENAME}} |
|
apr discuter | avr |
|
april discuter | avril |
|
april-gen discuter | avril |
|
article discuter | Page de contenu |
|
articleexists discuter | Il existe déjà une page portant ce titre, ou le titre que vous avez choisi n’est pas correct. Veuillez en choisir un autre. |
|
articlepage discuter | Voir la page de contenu |
|
ascending_abbrev discuter | crois. |
|
aug discuter | aoû |
|
august discuter | août |
|
august-gen discuter | août |
|
autoblock_whitelist discuter | AOL http://webmaster.info.aol.com/proxyinfo.html *64.12.96.0/19 *149.174.160.0/20 *152.163.240.0/21 *152.163.248.0/22 *152.163.252.0/23 *152.163.96.0/22 *152.163.100.0/23 *195.93.32.0/22 *195.93.48.0/22 *195.93.64.0/19 *195.93.96.0/19 *195.93.16.0/20 *198.81.0.0/22 *198.81.16.0/20 *198.81.8.0/23 *202.67.64.128/25 *205.188.192.0/20 *205.188.208.0/23 *205.188.112.0/20 *205.188.146.144/30 *207.200.112.0/21 |
|
autoblockedtext discuter | Votre adresse IP a été bloquée automatiquement car elle a été utilisée par un autre utilisateur, lui-même bloqué par $1. La raison invoquée est : :''$2'' * Début du blocage : $8 * Expiration du blocage : $6 * Compte bloqué : $7 Vous pouvez contacter $1 ou l’un des autres [[{{MediaWiki:Grouppage-sysop}}|administrateurs]] pour discuter de ce blocage. Notez que vous ne pourrez utiliser la fonctionnalité d’envoi de courriel que si vous avez une adresse de courriel validée dans vos [[Special:Preferences|préférences utilisateur]] et que la fonctionnalité n’a pas été désactivée. Votre adresse IP actuelle est $3, et le numéro de blocage est $5. Veuillez préciser ces indications dans toutes les requêtes que vous ferez. |
|
autoblocker discuter | Vous avez été bloqué automatiquement parce que votre adresse IP a été récemment utilisée par « [[User:$1|$1]] ». Le motif fourni pour le blocage de $1 est : « $2 ». |
|
autocomment-prefix discuter |  –  |
|
autoredircomment discuter | Page redirigée vers [[$1]] |
|
autosumm-blank discuter | Page blanchie |
|
autosumm-new discuter | Page créée avec « $1 » |
|
autosumm-replace discuter | Contenu remplacé par « $1 » |
|
bad_image_list discuter | Le format est le suivant : Seules les listes d’énumération (commençant par *) sont prises en compte. Le premier lien d’une ligne doit être celui d’une mauvaise image. Les autres liens sur la même ligne sont considérés comme des exceptions, par exemple des pages sur lesquels l’image peut apparaître. |
|
badaccess discuter | Erreur de permission |
|
badaccess-group0 discuter | Vous n’avez pas les droits suffisants pour réaliser l’action que vous demandez. |
|
badaccess-groups discuter | L’action que vous essayez de réaliser n’est accessible qu’aux utilisateurs {{PLURAL:$2|du groupe|des groupes}} : $1. |
|
badarticleerror discuter | Cette action ne peut pas être effectuée sur cette page. |
|
badfilename discuter | Le fichier a été renommé en « $1 ». |
|
badipaddress discuter | Adresse IP incorrecte |
|
badretype discuter | Les mots de passe que vous avez saisis ne correspondent pas. |
|
badsig discuter | Signature brute incorrecte. Vérifiez vos balises HTML. |
|
badsiglength discuter | Votre signature est trop longue. Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}. |
|
badtitle discuter | Mauvais titre |
|
badtitletext discuter | Le titre de la page demandée est invalide, vide, ou il s’agit d’un titre inter-langue ou inter-projet mal lié. Il contient peut-être un ou plusieurs caractères qui ne peuvent pas être utilisés dans les titres. |
|
blanknamespace discuter | (Principal) |
|
blankpage discuter | Page vide |
|
block-log-flags-angry-autoblock discuter | autoblocage amélioré activé |
|
block-log-flags-anononly discuter | utilisateurs anonymes seulement |
|
block-log-flags-hiddenname discuter | nom d’utilisateur caché |
|
block-log-flags-noautoblock discuter | autoblocage des IP désactivé |
|
block-log-flags-nocreate discuter | création de compte interdite |
|
block-log-flags-noemail discuter | envoi de courriel interdit |
|
block-log-flags-nousertalk discuter | ne peut modifier sa propre page de discussion |
|
blocked-mailpassword discuter | Votre adresse IP est bloquée en écriture, la fonction de rappel du mot de passe est donc désactivée pour éviter les abus. |
|
blockededitsource discuter | Le contenu de '''vos modifications''' apportées à '''$1''' est indiqué ci-dessous : |
|
blockednoreason discuter | aucune raison donnée |
|
blockedoriginalsource discuter | Le code source de '''$1''' est indiqué ci-dessous : |
|
blockedtext discuter | <big>'''Votre compte utilisateur ou votre adresse IP a été bloqué.'''</big> Le blocage a été effectué par $1. La raison invoquée est la suivante : ''$2''. * Début du blocage : $8 * Expiration du blocage : $6 * Compte bloqué : $7. Vous pouvez contacter $1 ou un autre [[{{MediaWiki:Grouppage-sysop}}|administrateur]] pour en discuter. Vous ne pouvez utiliser la fonction « Envoyer un courriel à cet utilisateur » que si une adresse de courriel valide est spécifiée dans vos [[Special:Preferences|préférences]] et que cette fonctionnalité n’a pas été bloquée. Votre adresse IP actuelle est $3 et votre identifiant de blocage est $5. Veuillez préciser ces indications dans toutes les requêtes que vous ferez. |
|
blockedtitle discuter | L’utilisateur est bloqué. |
|
blockip discuter | Bloquer l’utilisateur |
|
blockip-legend discuter | Bloquer l’utilisateur |
|
blockipsuccesssub discuter | Blocage réussi |
|
blockipsuccesstext discuter | [[Special:Contributions/$1|$1]] a été bloqué.<br /> Consultez la [[Special:IPBlockList|liste des adresses IP et comptes bloqués]] pour réviser les blocages. |
|
blockiptext discuter | Utilisez le formulaire ci-dessous pour bloquer l’accès aux modifications faites à partir d’une adresse IP spécifique ou d’un nom d’utilisateur. Une telle mesure ne devrait être prise que pour prévenir le vandalisme et en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]]. Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont été vandalisées). |
|
blocklink discuter | bloquer |
|
blocklist-nousertalk discuter | ne peut modifier sa propre page de discussion |
|
blocklistline discuter | $1 : $2 a bloqué $3 ; $4 |
|
blocklog-fulllog discuter | Journal complet des blocages |
|
blocklogentry discuter | a bloqué [[$1]] ; expiration : $2 $3 |
|
blocklogpage discuter | Journal des blocages |
|
blocklogtext discuter | Ceci est le journal des actions de blocages et déblocages d’utilisateurs. Les adresses IP automatiquement bloquées ne sont pas listées. Consultez la [[Special:IPBlockList|liste des IP bloquées]] pour voir les bannissements et blocages effectivement en cours. |
|
blockme discuter | Bloquez-moi |
|
bold_sample discuter | Texte gras |
|
bold_tip discuter | Texte gras |
|
booksources discuter | Ouvrages de référence |
|
booksources-go discuter | Lister |
|
booksources-invalid-isbn discuter | L’ISBN donné ne semble pas être correct ; vérifiez si vous avez fait une erreur en copiant la source originale. |
|
booksources-isbn discuter | ISBN : |
|
booksources-search-legend discuter | Rechercher parmi des ouvrages de référence |
|
booksources-summary discuter | |
|
booksources-text discuter | Voici une liste indicative et non exclusive de liens vers d’autres sites vendant des livres neufs et d’occasion et sur lesquels vous trouverez peut-être des informations sur les ouvrages que vous cherchez : |
|
boteditletter discuter | b |
|
brokenredirects discuter | Redirections cassées |
|
brokenredirects-delete discuter | (supprimer) |
|
brokenredirects-edit discuter | (modifier) |
|
brokenredirects-summary discuter | |
|
brokenredirectstext discuter | Ces redirections mènent vers des pages inexistantes : |
|
bydate discuter | par date |
|
cachederror discuter | Ceci est une version en cache de la page demandée, elle n’est pas forcément à jour. |
|
cancel discuter | Annuler |
|
cannotdelete discuter | Impossible de supprimer la page ou le fichier indiqué. La suppression a peut-être déjà été effectuée par quelqu’un d’autre. |
|
cannotundelete discuter | La restauration a échoué ; un autre utilisateur a probablement déjà restauré la page. |
|
cant-block-while-blocked discuter | Vous ne pouvez pas bloquer d’autres utilisateurs tant que vous êtes bloqué{{GENDER:||e|(e)}}. |
|
cant-move-to-user-page discuter | Vous n’avez pas la permission de renommer une page vers une page utilisateur (à l’exception d’une sous-page). |
|
cant-move-user-page discuter | Vous n’avez pas la permission de renommer les pages principales d’utilisateurs (en dehors de leurs sous-pages). |
|
cantcreateaccount-nonblock-text discuter | |
|
cantcreateaccount-text discuter | La création de compte depuis cette adresse IP (<b>$1</b>) a été bloquée par [[User:$3|$3]]. La raison donnée par $3 était ''$2''. |
|
cantcreateaccounttitle discuter | Vous ne pouvez pas créer de compte. |
|
cantmove-titleprotected discuter | Vous ne pouvez pas déplacer une page vers cet emplacement car la création de page avec ce nouveau titre a été protégée. |
|
cantrollback discuter | Impossible de révoquer la modification ; le dernier contributeur est le seul auteur de cette page. |
|
cascadeprotected discuter | Cette page est actuellement protégée car elle est incluse dans {{PLURAL:$1|la page suivante|les pages suivantes}}, ayant été protégée{{PLURAL:$1||s}} avec l’option « protection en cascade » activée : $2 |
|
cascadeprotectedwarning discuter | '''ATTENTION :''' Cette page a été protégée de manière à ce que seuls les administrateurs puissent l’éditer. Cette protection a été faite car cette page est incluse dans {{PLURAL:$1|une page protégée|des pages protégées}} avec la « protection en cascade » activée. |
|
categories discuter | Catégories |
|
categories-summary discuter | |
|
categoriesfrom discuter | Afficher les catégories à partir de : |
|
categoriespagetext discuter | Les catégories suivantes sont utilisées par des pages ou fichiers. [[Special:UnusedCategories|Les catégories inutilisées]] ne sont pas affichées ici. Voyez aussi [[Special:WantedCategories|les catégories demandées]]. |
|
category-article-count discuter | Cette catégorie contient {{PLURAL:$2|la page suivante|$2 pages, dont {{PLURAL:$1|celle|les $1}} ci-dessous}}. |
|
category-article-count-limited discuter | {{PLURAL:$1|La page suivante figure|Les $1 pages suivantes figurent}} dans la présente catégorie. |
|
category-empty discuter | ''Cette catégorie ne contient aucune page, sous-catégorie ou fichier multimédia.'' |
|
category-file-count discuter | Cette catégorie contient {{PLURAL:$2|le fichier suivant|$2 fichiers, dont {{PLURAL:$1|celui|les $1}} ci-dessous}}. |
|
category-file-count-limited discuter | {{PLURAL:$1|Le fichier suivant figure|Les $1 fichiers suivants figurent}} dans la présente catégorie. |
|
category-media-header discuter | Fichiers multimédias dans la catégorie « $1 » |
|
category-subcat-count discuter | Cette catégorie comprend {{PLURAL:$2|la sous-catégorie|$2 sous-catégories, dont {{PLURAL:$1|celle|les $1}}}} ci-dessous. |
|
category-subcat-count-limited discuter | Cette catégorie comprend {{PLURAL:$1|la sous-catégorie|les $1 sous-catégories}} ci-dessous. |
|
category_header discuter | Pages dans la catégorie « $1 » |
|
categorypage discuter | Voir la page de catégorie |
|
catseparator discuter | | |
|
change-blocklink discuter | modifier le blocage |
|
changed discuter | modifiée |
|
changepassword discuter | Modification du mot de passe |
|
chick.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Chick. */ |
|
chick.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Poussin uniquement */ |
|
cite_croak discuter | Citation corrompue ; $1 : $2 |
|
cite_desc discuter | Ajoute les balises <nowiki><ref[ name=id]></nowiki> et <nowiki><references/></nowiki>, pour les citations. |
|
cite_error discuter | Erreur de citation : $1 |
|
cite_error_key_str_invalid discuter | Erreur interne ; $str attendue |
|
cite_error_ref_no_input discuter | Appel invalide ; aucune entrée spécifiée |
|
cite_error_ref_no_key discuter | Appel invalide ; aucune clé spécifiée |
|
cite_error_ref_numeric_key discuter | Appel invalide ; clé non-intégrale attendue |
|
cite_error_ref_too_many_keys discuter | Appel invalide ; clés invalides, par exemple, trop de clés spécifiées ou clé erronée |
|
cite_error_references_invalid_input discuter | Entrée invalide ; entrée attendue |
|
cite_error_references_invalid_parameters discuter | Arguments invalides ; argument attendu |
|
cite_error_references_invalid_parameters_group discuter | Balise <code><references></code> incorrecte ; seul le paramètre « group » est autorisé. Utilisez <code><references /></code>, ou bien <code><references group="..." /></code>. |
|
cite_error_references_no_backlink_label discuter | Épuisement des étiquettes personnalisées, définissez-en un plus grand nombre dans le message <nowiki>[[MediaWiki:Cite references link many format backlink labels]]</nowiki> |
|
cite_error_references_no_text discuter | Balise <code><ref></code> invalide; aucun texte n'a été fourni pour les références nommées <code>$1</code> |
|
cite_error_stack_invalid_input discuter | Erreur interne ; clé de pile invalide |
|
cite_reference_link discuter | <sup id="$1" class="reference">[[#$2|<nowiki>[</nowiki>$3<nowiki>]</nowiki>]]</sup> |
|
cite_reference_link_key_with_num discuter | $1_$2 |
|
cite_reference_link_prefix discuter | cite_ref- |
|
cite_reference_link_suffix discuter | |
|
cite_references_link_many discuter | <li id="$1">↑ $2 $3</li> |
|
cite_references_link_many_and discuter | |
|
cite_references_link_many_format discuter | <sup>[[#$1|$2]]</sup> |
|
cite_references_link_many_format_backlink_labels discuter | a b c d e f g h i j k l m n o p q r s t u v w x y z aa ab ac ad ae af ag ah ai aj ak al am an ao ap aq ar as at au av aw ax ay az ba bb bc bd be bf bg bh bi bj bk bl bm bn bo bp bq br bs bt bu bv bw bx by bz ca cb cc cd ce cf cg ch ci cj ck cl cm cn co cp cq cr cs ct cu cv cw cx cy cz da db dc dd de df dg dh di dj dk dl dm dn do dp dq dr ds dt du dv dw dx dy dz ea eb ec ed ee ef eg eh ei ej ek el em en eo ep eq er es et eu ev ew ex ey ez fa fb fc fd fe ff fg fh fi fj fk fl fm fn fo fp fq fr fs ft fu fv fw fx fy fz ga gb gc gd ge gf gg gh gi gj gk gl gm gn go gp gq gr gs gt gu gv gw gx gy gz ha hb hc hd he hf hg hh hi hj hk hl hm hn ho hp hq hr hs ht hu hv hw hx hy hz ia ib ic id ie if ig ih ii ij ik il im in io ip iq ir is it iu iv iw ix iy iz ja jb jc jd je jf jg jh ji jj jk jl jm jn jo jp jq jr js jt ju jv jw jx jy jz ka kb kc kd ke kf kg kh ki kj kk kl km kn ko kp kq kr ks kt ku kv kw kx ky kz la lb lc ld le lf lg lh li lj lk ll lm ln lo lp lq lr ls lt lu lv lw lx ly lz ma mb mc md me mf mg mh mi mj mk ml mm mn mo mp mq mr ms mt mu mv mw mx my mz na nb nc nd ne nf ng nh ni nj nk nl nm nn no np nq nr ns nt nu nv nw nx ny nz oa ob oc od oe of og oh oi oj ok ol om on oo op oq or os ot ou ov ow ox oy oz pa pb pc pd pe pf pg ph pi pj pk pl pm pn po pp pq pr ps pt pu pv pw px py pz qa qb qc qd qe qf qg qh qi qj qk ql qm qn qo qp qq qr qs qt qu qv qw qx qy qz ra rb rc rd re rf rg rh ri rj rk rl rm rn ro rp rq rr rs rt ru rv rw rx ry rz sa sb sc sd se sf sg sh si sj sk sl sm sn so sp sq sr ss st su sv sw sx sy sz ta tb tc td te tf tg th ti tj tk tl tm tn to tp tq tr ts tt tu tv tw tx ty tz ua ub uc ud ue uf ug uh ui uj uk ul um un uo up uq ur us ut uu uv uw ux uy uz va vb vc vd ve vf vg vh vi vj vk vl vm vn vo vp vq vr vs vt vu vv vw vx vy vz wa wb wc wd we wf wg wh wi wj wk wl wm wn wo wp wq wr ws wt wu wv ww wx wy wz xa xb xc xd xe xf xg xh xi xj xk xl xm xn xo xp xq xr xs xt xu xv xw xx xy xz ya yb yc yd ye yf yg yh yi yj yk yl ym yn yo yp yq yr ys yt yu yv yw yx yy yz za zb zc zd ze zf zg zh zi zj zk zl zm zn zo zp zq zr zs zt zu zv zw zx zy zz |
|
cite_references_link_many_sep discuter | |
|
cite_references_link_one discuter | <li id="$1">[[#$2|↑]] $3</li> |
|
cite_references_link_prefix discuter | cite_note- |
|
cite_references_link_suffix discuter | |
|
cite_references_prefix discuter | <ol class="references"> |
|
cite_references_suffix discuter | </ol> |
|
clearyourcache discuter | '''Note :''' après avoir enregistré vos préférences, vous devrez forcer le rechargement complet du cache de votre navigateur pour voir les changements. '''Mozilla / Firefox / Konqueror / Safari :''' maintenez la touche ''Majuscule'' (''Shift'') en cliquant sur le bouton ''Actualiser'' (''Reload'') ou pressez ''Maj-Ctrl-R'' (''Maj-Cmd-R'' sur Apple Mac) ; '''Internet Explorer / Opera :''' maintenez la touche ''Ctrl'' en cliquant sur le bouton ''Actualiser'' ou pressez ''Ctrl-F5''. |
|
cologneblue.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Cologne Blue. */ |
|
cologneblue.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Bleu de cologne uniquement */ |
|
colon-separator discuter | :  |
|
columns discuter | Colonnes : |
|
comma-separator discuter | ,  |
|
common.css discuter | /* Le CSS placé ici sera appliqué à tous les habillages. */ |
|
common.js discuter | /* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */ |
| // <pre><nowiki> // version info window.wikEdProgramVersion = window.wikEdProgramVersion || '0.9.68a'; window.wikEdProgramDate = window.wikEdProgramDate || 'January 9, 2009'; /* Program description and Greasemonkey metadata wikEd is a full-featured JavaScript in-browser editor for Wikipedia and other MediaWiki edit pages. The program works currently ONLY for Mozilla, Firefox, SeaMonkey, Safari, and Chrome browsers. The code has to be saved as UTF-8 in your editor to preserve Unicode characters like ♥ (heart) // ==UserScript== // @name wikEd // @namespace http://en.wikipedia.org/wiki/User:Cacycle/ // @description A full-featured in-browser editor for Wikipedia and other MediaWiki edit pages // @include * // @exclude // // @homepage http://en.wikipedia.org/wiki/User:Cacycle/wikEd // @source http://en.wikipedia.org/wiki/User:Cacycle/wikEd.js // @author Cacycle (http://en.wikipedia.org/wiki/User:Cacycle) // @license Released into the public domain // ==/UserScript== == Installation on a MediaWiki wiki (using monobook.js) == 1. PLEASE DO NOT COPY THE WHOLE PROGRAM (in order to get the frequent updates and bug fixes and to save disk space) 2. See http://en.wikipedia.org/wiki/User:Cacycle/wikEd for more detailed instructions 3. Copy the following short block of code to [[User:YOURUSERNAME/monobook.js]] 4. Click SHIFT-Reload to update to the newest version 5. Optional: customize the program by adding user settings to your monobook.js page // ---- START wikEd INSTALLATION CODE ---- // install [[User:Cacycle/wikEd]] in-browser text editor document.write('<script type="text/javascript" src="' + 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd.js' + '&action=raw&ctype=text/javascript"></script>'); // ---- END wikEd INSTALLATION CODE ---- == General installation for all MediaWiki wikis (using Greasemonkey) == 1. Install Greasemonkey for Firefox from: https://addons.mozilla.org/en-US/firefox/addon/748 2. Install wikEd by opening this address: http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Cacycle/wikEd.user.js 3. Optional: customize the program by adding user settings to the Greasemonkey customization section below (these settings will be overwritten by updates!) */ // // Greasemonkey customization section: add customization settings here // example: window.wikEdAutoUpdate = false; window.wikEdAutoUpdateHours = 7 * 24; // // // WikEdInitGlobalsConfigs: initialize user configurable variables // window.WikEdInitGlobalConfigs = function() { // user readable texts, copy changes to http://en.wikipedia.org/wiki/User:Cacycle/wikEd_international_en.js, also defined in wikEdDiff.js if (typeof(wikEdText) == 'undefined') { window.wikEdText = {}; } // // WikEdInitText: define built-in user interface texts // window.WikEdInitText = function() { WikEdInitObject(wikEdText, { // logo 'wikEdLogo alt': 'wikEd', 'wikEdLogo title': 'wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable', 'wikEdLogo error alt': 'wikEd error', 'wikEdLogo error title': 'Loading error - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to disable', 'wikEdLogo browser alt': '(wikEd)', 'wikEdLogo browser title': 'Browser not supported - wikEd {wikEdProgramVersion} ({wikEdProgramDate})', 'wikEdLogo disabled alt': '(wikEd)', 'wikEdLogo disabled title': 'Disabled - wikEd {wikEdProgramVersion} ({wikEdProgramDate}) Click to enable', // top jumper 'wikEdScrollToEdit4 alt': 'Scroll to edit', 'wikEdScrollToEdit4 title': 'Scroll to edit field', // button bar grip titles 'wikEdGripFormat title': 'Formatting buttons (click to hide or show)', 'wikEdGripCustom1 title': 'Custom buttons (click to hide or show)', 'wikEdGripFind title': 'Find buttons (click to hide or show)', 'wikEdGripFix title': 'Fixing buttons (click to hide or show)', 'wikEdGripCustom2 title': 'Custom buttons (click to hide or show)', 'wikEdGripControl title': 'wikEd control buttons (click to hide or show)', // formatting buttons, top row 'wikEdUndo alt': 'Undo', 'wikEdUndo title': 'Undo', 'wikEdRedo alt': 'Redo', 'wikEdRedo title': 'Redo', 'wikEdBold title': 'Bold text', 'wikEdItalic alt': 'Italic', 'wikEdItalic title': 'Italic text', 'wikEdUnderline alt': 'Underline', 'wikEdUnderline title': 'Underline text', 'wikEdStrikethrough alt': 'Strikethrough', 'wikEdStrikethrough title': 'Strikethrough text', 'wikEdNowiki alt': 'Nowiki', 'wikEdNowiki title': 'Nowiki markup text', 'wikEdSuperscript alt': 'Superscript', 'wikEdSuperscript title': 'Superscript text', 'wikEdSubscript alt': 'Subscript', 'wikEdSubscript title': 'Subscript text', 'wikEdRef alt': 'Ref', 'wikEdRef title': 'In-text reference (shift-click: named tag)', 'wikEdCase alt': 'Case', 'wikEdCase title': 'Toggle between lowercase, uppercase first, and uppercase', 'wikEdSort alt': 'Sort', 'wikEdSort title': 'Sort lines alphabetically', 'wikEdRedirect alt': 'Redirect', 'wikEdRedirect title': 'Create redirect, deletes whole text', 'wikEdUndoAll alt': 'Undo all', 'wikEdUndoAll title': 'Undo all changes', 'wikEdRedoAll alt': 'Redo all', 'wikEdRedoAll title': 'Redo all changes', // formatting buttons, bottom row 'wikEdWikiLink alt': 'Link', 'wikEdWikiLink title': 'Wiki link', 'wikEdWebLink alt': 'Weblink', 'wikEdWebLink title': 'External weblink', 'wikEdHeading alt': 'Heading', 'wikEdHeading title': 'Increase heading levels (shift-click: decrease)', 'wikEdBulletList alt': 'Bullet list', 'wikEdBulletList title': 'Increase bulleted list level (shift-click: decrease)', 'wikEdNumberList alt': 'Number list', 'wikEdNumberList title': 'Increase numbered list level (shift-click: decrease)', 'wikEdIndentList alt': 'Indent list', 'wikEdIndentList title': 'Increase indention (shift-click: decrease)', 'wikEdDefinitionList alt': 'Def list', 'wikEdDefinitionList title': 'Definition list', 'wikEdImage alt': 'Image', 'wikEdImage title': 'Image', 'wikEdTable alt': 'Table', 'wikEdTable title': 'Table', 'wikEdReferences alt': 'References', 'wikEdReferences title': 'References location (shift-click: References section)', 'wikEdWikify alt': 'Wikify', 'wikEdWikify title': 'Convert pasted content to wiki code, update highlighting', 'wikEdTextify alt': 'Textify', 'wikEdTextify title': 'Convert pasted content to plain text, update highlighting', // find and replace buttons, top row 'wikEdFindAll alt': 'Find all', 'wikEdFindAll title': 'Find all matches', 'wikEdFindPrev alt': 'Find prev', 'wikEdFindPrev title': 'Find previous match', 'wikEdFindSelect title': 'Select a previous search or jump to a heading', 'wikEdFindNext alt': 'Find next', 'wikEdFindNext title': 'Find next match (shift-click: get selection)', 'wikEdJumpPrev alt': 'Selected prev', 'wikEdJumpPrev title': 'Find the selected text backwards', 'wikEdJumpNext alt': 'Selected next', 'wikEdJumpNext title': 'Find the selected text forwards', // find and replace buttons, bottom row 'wikEdReplaceAll alt': 'Replace all', 'wikEdReplaceAll title': 'Replace all matches in whole text or selection', 'wikEdReplacePrev alt': 'Replace prev', 'wikEdReplacePrev title': 'Replace previous match', 'wikEdReplaceSelect title': 'Select a previous replacement', 'wikEdReplaceNext alt': 'Replace next (shift-click: get selection)', 'wikEdReplaceNext title': 'Replace next match', 'wikEdCaseSensitive alt': 'Case sensitive', 'wikEdCaseSensitive title': 'Search is case sensitive', 'wikEdRegExp alt': 'RegExp', 'wikEdRegExp title': 'Search field is a regular expression', 'wikEdFindAhead alt': 'Find ahead', 'wikEdFindAhead title': 'Find ahead as you type (case-insensitive non-regexp search)', // fix buttons, top row 'wikEdFixBasic alt': 'Fix basic', 'wikEdFixBasic title': 'Fix blanks and empty lines, also done by other fixing functions', 'wikEdFixHtml alt': 'Fix html', 'wikEdFixHtml title': 'Fix html to wikicode', 'wikEdFixCaps alt': 'Fix caps', 'wikEdFixCaps title': 'Fix caps in headers and lists', 'wikEdfixUnicode alt': 'Fix Unicode', 'wikEdfixUnicode title': 'Fix Unicode character representations', 'wikEdFixAll alt': 'Fix all', 'wikEdFixAll title': 'Fix basic, html, capitalization, and Unicode', 'wikEdFixRegExTypo alt': 'Fix typos', 'wikEdFixRegExTypo title': 'Fix typos using the AutoWikiBrowser RegExTypoFixer rules', // fix buttons, bottom row 'wikEdFixDashes alt': 'Fix dashes', 'wikEdFixDashes title': 'Fix dashes', 'wikEdFixPunct alt': 'Fix punctuation', 'wikEdFixPunct title': 'Fix spaces before punctuation', 'wikEdFixMath alt': 'Fix math', 'wikEdFixMath title': 'Fix math', 'wikEdFixChem alt': 'Fix chem', 'wikEdFixChem title': 'Fix chemical formulas', 'wikEdFixUnits alt': 'Fix units', 'wikEdFixUnits title': 'Fix units', // wikEd control buttons, top row 'wikEdRefHide alt': 'Hide <ref>', 'wikEdRefHide title': 'Toggle <ref> tag hiding', 'wikEdTextZoom alt': 'Text zoom', 'wikEdTextZoom title': 'Text zoom cycling (shift-click: reverse)', 'wikEdClearHistory alt': 'Clear history', 'wikEdClearHistory title': 'Clear the find, replace, and summary history', 'wikEdScrollToPreview alt': 'Scroll to preview', 'wikEdScrollToPreview title': 'Scroll to preview field', 'wikEdScrollToEdit alt': 'Scroll to edit', 'wikEdScrollToEdit title': 'Scroll to edit field', // wikEd control buttons, bottom row 'wikEdUseWikEd alt': 'Use wikEd', 'wikEdUseWikEd title': 'Toggle between classic text area and wikEd', 'wikEdHighlightSyntax alt': 'Syntax', 'wikEdHighlightSyntax title': 'Toggle automatic syntax highlighting', 'wikEdSource alt': 'Source', 'wikEdCloseToolbar title': 'Close the standard non-wikEd toolbar', 'wikEdCloseToolbar alt': 'Close toolbar', 'wikEdSource title': 'Show the source code for testing purposes', 'wikEdUsing alt': 'Using', 'wikEdUsing title': 'Automatically add \'\'…using wikEd\'\' to summaries', 'wikEdDiff alt': 'wikEdDiff', 'wikEdDiff title': 'Toggle automatic improved diff view', 'wikEdFullScreen alt': 'Fullscreen', 'wikEdFullScreen title': 'Toggle the fullscreen mode', 'wikEdTableMode alt': 'Table mode', // {{TABLE}} 'wikEdTableMode title': 'Toggle table edit mode', // {{TABLE}} // summary buttons 'wikEdClearSummary alt': 'Clear summary', 'wikEdClearSummary title': 'Clear the summary field', 'wikEdSummarySelect title': 'Select a previous summary', 'wikEdPresetSummary': [ '/* */ ', 'copyedit', 'reply', 'article created', 'intro rewrite', 'linkfix', 'fixing typos', 'removing linkspam', 'reverting test', 'reverting vandalism', 'formatting source text', '{wikEdUsing}' ], 'wikEdSummaryUsing': '…using [[en:User:Cacycle/wikEd|wikEd]]', // button title acceskey 'alt-shift': 'alt-shift-', // submit buttons 'wikEdLocalPreviewImg alt': 'Preview below', 'wikEdLocalPreview title': 'Show preview below', 'wikEdLocalDiffImg alt': 'Changes below', 'wikEdLocalDiff title': 'Show current changes below', 'wikEdHelpPageLink': ' | <a href="http://en.wikipedia.org/wiki/User:Cacycle/wikEd_help" target="helpwindow">wikEd help</a>', // preview and changes buttons, top 'wikEdClose alt': 'Close', 'wikEdClose title': 'Close preview box', 'wikEdScrollToPreview2 alt': 'Scroll to preview', 'wikEdScrollToPreview2 title': 'Scroll to preview field', 'wikEdScrollToEdit2 alt': 'Scroll to edit', 'wikEdScrollToEdit2 title': 'Scroll to edit field', // preview and changes buttons, bottom 'wikEdClose alt': 'Close', 'wikEdClose title': 'Close preview box', 'wikEdScrollToPreview3 alt': 'Scroll to preview', 'wikEdScrollToPreview3 title': 'Scroll to preview field', 'wikEdScrollToEdit3 alt': 'Scroll to edit', 'wikEdScrollToEdit3 title': 'Scroll to edit field', // preview field 'wikEdPreviewLoading': '...', // formatting functions 'image filename': 'filename', 'image width': 'width', 'table caption': 'caption', 'table heading': 'heading', 'table cell': 'cell', 'redirect article link': 'article link', // fixing functions 'External links': 'External links', 'See also': 'See also', 'References': 'References', // language specific wiki code 'wikicode Image': 'Image', 'wikicode File': 'File', 'wikicode Category': 'Category', 'wikicode Template': 'Template', 'wikEdReferencesSection': '\n== References ==\n\n<references />\n', // shortened button texts 'shortenedPreview': 'Preview', 'shortenedChanges': 'Changes', // follow link popup 'followLink': '(Ctrl-click)', // error message popups 'wikEdTableModeError': 'The table wikicode contains errors', // {{TABLE}} // auto updating 'wikEdGreasemonkeyAutoUpdate': 'wikEd Update:\n\nA new version of the GreaseMonkey script "wikEd" is available.\n\n\nIt will be downloaded from:\n\n{updateURL}' }); } // define built-in user interface texts WikEdInitText(); // use local copies of images for testing (set to true in local copy of edit page), also defined in wikEdDiff.js if (typeof(wikEdUseLocalImages) == 'undefined') { window.wikEdUseLocalImages = false; } // path to local images for testing, also defined in wikEdDiff.js if (typeof(wikEdImagePathLocal) == 'undefined') { window.wikEdImagePathLocal = 'file:///D:/wikEd/images/'; } // path to images, also defined in wikEdDiff.js if (typeof(wikEdImagePath) == 'undefined') { window.wikEdImagePath = 'http://upload.wikimedia.org/wikipedia/commons/'; } // image filenames, also defined in wikEdDiff.js if (typeof(wikEdImage) == 'undefined') { window.wikEdImage = {}; } // WikedInitImages: define built-in image URLs window.WikedInitImages = function() { WikEdInitImage(wikEdImage, { 'blank': '5/51/WikEd_blank.png', 'bold': '5/59/WikEd_bold.png', 'browser': '0/07/WikEd_disabled.png', 'bulletList': '6/62/WikEd_bullet_list.png', 'case': 'a/aa/WikEd_case.png', 'caseSensitive': '0/0d/WikEd_case_sensitive.png', 'clearHistory': 'c/c8/WikEd_clear_history.png', 'clearSummary': '2/2c/WikEd_clear_summary.png', 'close': '9/97/WikEd_close.png', 'closeToolbar': '1/1d/WikEd_close_toolbar.png', 'ctrl': '1/10/WikEd_ctrl.png', 'definitionList': 'f/f5/WikEd_definition_list.png', 'diff': 'd/db/WikEd_diff.png', 'disabled': '0/07/WikEd_disabled.png', 'dummy': 'c/c5/WikEd_dummy.png', 'error': '3/3e/WikEd_error.png', 'findAhead': '3/34/WikEd_find_ahead.png', 'findAll': '7/75/WikEd_find_all.png', 'findNext': 'a/ad/WikEd_find_next.png', 'findPrev': 'f/f5/WikEd_find_prev.png', 'fixAll': '8/86/WikEd_fix_all.png', 'fixBasic': '3/30/WikEd_fix_basic.png', 'fixCaps': '0/00/WikEd_fix_caps.png', 'fixUnicode': 'd/d4/WikEd_fix_unicode.png', 'fixChem': 'e/e7/WikEd_fix_chem.png', 'fixDash': 'e/e5/WikEd_fix_dash.png', 'fixHtml': '0/05/WikEd_fix_html.png', 'fixMath': '3/3f/WikEd_fix_math.png', 'fixPunct': 'd/db/WikEd_fix_punct.png', 'fixRegExTypo': '9/94/WikEd_fix_reg-ex-typo.png', 'fixUnits': '6/69/WikEd_fix_units.png', 'textZoom': '7/71/WikEd_font_size.png', 'fullScreen': 'd/d3/WikEd_fullscreen.png', 'getFind': '9/96/WikEd_get_selection.png', 'grip': 'a/ad/WikEd_grip.png', 'heading': '0/07/WikEd_heading.png', 'highlightSyntax': '6/67/WikEd_syntax.png', 'image': '3/37/WikEd_image.png', 'indentList': '7/7a/WikEd_indent_list.png', 'italic': 'd/d4/WikEd_italic.png', 'jumpNext': '5/54/WikEd_jump_next.png', 'logo': '6/67/WikEd_logo.png', 'nowiki': '5/5a/WikEd_nowiki.png', 'numberList': '3/3b/WikEd_number_list.png', 'jumpPrev': 'c/c7/WikEd_jump_prev.png', 'preview': '3/31/WikEd_preview.png', 'redirect': 'f/fa/WikEd_redirect.png', 'redo': 'd/d7/WikEd_redo.png', 'ref': 'b/ba/WikEd_ref.png', 'refHide': '0/0b/WikEd_ref_hide.png', 'references': '6/66/WikEd_references.png', 'redoAll': '2/2d/WikEd_redo_all.png', 'regExp': '6/6a/WikEd_regexp.png', 'replaceAll': '2/2a/WikEd_replace_all.png', 'replaceNext': 'b/b0/WikEd_replace_next.png', 'replacePrev': 'a/a1/WikEd_replace_prev.png', 'scrollToEdit': '1/13/WikEd_align_top.png', 'scrollToPreview': '3/37/WikEd_align_preview.png', 'scrollToEditDown': 'a/a8/WikEd_align_down.png', 'scrollToPreviewDown': '5/58/WikEd_align_preview_down.png', 'sort': '7/7c/WikEd_sort.png', 'source': '0/02/WikEd_source.png', 'strikethrough': '0/06/WikEd_strikethrough.png', 'subscript': '9/9e/WikEd_subscript.png', 'superscript': 'b/bf/WikEd_superscript.png', 'tab': 'e/e7/WikEd_tab.png', 'table': 'b/bd/WikEd_table.png', 'tableMode': '0/00/WikEd_table_edit.png', // {{TABLE}} 'tableBG': '8/8a/WikEd_unknown.png', // {{TABLE}} 'textify': 'c/cd/WikEd_textify.png', 'underline': '2/21/WikEd_underline.png', 'undo': 'e/e6/WikEd_undo.png', 'undoAll': '0/08/WikEd_undo_all.png', 'unknown': '8/8a/WikEd_unknown.png', 'useWikEd': '6/67/WikEd_logo.png', 'using': 'e/e0/WikEd_using.png', 'webLink': '1/16/WikEd_weblink.png', 'wikEdDiff': 'c/c6/WikEdDiff.png', 'wikify': '9/9f/WikEd_wikify.png', 'wikiLink': '2/21/WikEd_wikilink.png' }); } // edit-frame css rules if (typeof(wikEdFrameCSS) == 'undefined') { window.wikEdFrameCSS = {}; } // WikedInitFrameCSS: define built-in edit frame css window.WikedInitFrameCSS = function() { WikEdInitObject(wikEdFrameCSS, { // frame body '.wikEdFrameBody': 'background: #FFFFFF; margin: 0px; padding: 0.2em; overflow: -moz-scrollbars-vertical; overflow-x: auto; font-family: monospace;', // syntax highlighting '.wikEdBlock': 'background-color: #e8e8e8;', '.wikEdBlockTag': 'color: #0000e0;', '.wikEdInlineTag': 'color: #0000e0;', '.wikEdUnknown': 'background-image: url({wikEdUnknown});', '.wikEdSubscript': 'position: relative; top: 0.3em;', '.wikEdSuperscript': 'position: relative; top: -0.3em;', '.wikEdBold': 'font-weight: bold;', '.wikEdRef': 'color: #808080; background-color: #e8e8e8;', '.wikEdRefHide': 'color: #c0c0c0;', '.wikEdComment': 'background-color: #fff0d0;', '.wikEdDel': 'text-decoration: line-through;', '.wikEdIns': 'text-decoration: underline;', '.wikEdItalic': 'font-style: italic;', '.wikEdNowiki': 'background-color: #e8e8e8;', '.wikEdRGB': '', // horizontal rule '.wikEdHR': 'background-color: #d0d0d0;', '.wikEdHRInline': 'background-color: #d0d0d0;', // wiki code '.wikEdWiki': 'color: #0000e0;', '.wikEdWikiRedir': 'color: #0000e0; background-color: #ffffff; font-weight: bold;', '.wikEdMagic': 'color: #0000ff; background-color: #e0e0e0; font-weight: bold;', '.wikEdSignature': 'color: #0000ff; background-color: #ffffff; font-weight: bold;', // headings '.wikEdHeading': 'background-color: #e0e0e0; font-weight: bold;', '.wikEdHeadingWp': 'background-color: #d8e0ff; font-weight: bold;', // tables '.wikEdTableBlock': 'background-color: #e8e8e8;', '.wikEdTableLine': 'background-color: #e8e8e8;', '.wikEdTableTag': 'background-color: #e8e8e8; color: #0000e0;', // list '.wikEdListBlock': 'background-color: #e8e8e8;', '.wikEdListLine': 'background-color: #f0f0f0', '.wikEdListTag': 'background-color: #e8e8e8; color: #0000e0; font-weight: bold;', // space-pre '.wikEdSpaceBlock': 'background-color: #e8e8e8;', '.wikEdSpaceLine': 'background-color: #e8e8e8;', '.wikEdSpaceTag': 'color: #0000e0; font-weight: bold;', // wiki links, images, categories, templates, parser functions '.wikEdLinkTag': 'color: #0000e0;', '.wikEdLink': '', '.wikEdImage': 'background-color: #d5ffaa;', '.wikEdCat': 'background-color: #d0d8ff;', '.wikEdTempl': 'background-color: #e0e8ff;', '.wikEdTemplTag': 'color: #0000e0;', '.wikEdTemplParam': 'color: #000000; font-weight: bold;', '.wikEdParserFunct': 'color: #0000e0; font-weight: bold;', '.wikEdParam': 'background-color: #00e8ff;', '.wikEdTemplMod': 'color: #6900D2; font-weight: bold;', // interlanguage '.wikEdInter': 'color: #000000;', '.wikEdLinkInter': 'background-color: #c8c8ff;', '.wikEdImageInter': 'background-color: #c8c8ff;', '.wikEdCatInter': 'background-color: #c8c8ff;', '.wikEdTemplInter': 'background-color: #c8c8ff;', // name '.wikEdLinkName': 'color: #f00000; font-weight: bold;', '.wikEdImageName': 'color: #000000; font-weight: bold;', '.wikEdCatName': 'color: #f00000; font-weight: bold;', '.wikEdTemplName': 'color: #f00000; font-weight: bold;', '.wikEdURLLink': 'color: #f00000; font-weight: bold;', // links '.wikEdHighlightLink': 'text-decoration: none; color: #909090;', ':hover.wikEdHighlightLink': 'text-decoration: underline; color: #909090;', // pasted html '.wikEdPastedHtml': 'background-color: #ffc080;', // text and parameters '.wikEdLinkText': 'color: #000000; font-weight: bold;', '.wikEdImageParam': 'color: #0000e0;', '.wikEdImageCaption': 'color: #000000;', '.wikEdCatText': 'color: #000000;', '.wikEdTemplText': 'color: #000000;', '.wikEdURLText': 'color: #000000; font-weight: bold;', // table edit // {{TABLE}} '.wikEdTableEdit': 'border: solid black; border-width: 1px 1px 0 0; background-color: red; background-image: url(\'' + wikEdImage['tableBG'] + '\'); border-collapse: separate; border-spacing: 0;', '.wikEdTableEdit td': 'border: solid black; border-width: 0 0 1px 1px; background-color: white;', '.wikEdTableEdit th': 'border: solid black; border-width: 0 0 1px 1px; background-color: lightgrey; font-weight: bold;', '.wikEdTableEdit tr': 'background-color: lightgrey; font-weight: bold;', // insert wikicode here '.wikEdInsertHere': 'background-color: orange; font-style: italic;', // colors '.wikEdColorsLight': 'color: black;', '.wikEdColorsDark': 'color: white;', // invisibles, control chars, and strange spaces '.wikEdTab': 'white-space: pre; background-image: url({wikEdTab}); background-position: bottom right; background-repeat: no-repeat;', '.wikEdTabPlain': 'white-space: pre;', '.wikEdCtrl': 'white-space: pre; background-image: url({wikEdCtrl}); background-position: center center; background-repeat: no-repeat; margin: 0 1px;', '.wikEdCtrl:before': 'content: \'\u00a0\'', '.wikEdBlank': 'white-space: -moz-pre-wrap; background-image: url({wikEdBlank}); background-position: bottom left; background-repeat: no-repeat; margin: 0 1px; padding: 0 1px;' }); } // main window css rules if (typeof(wikEdMainCSS) == 'undefined') { window.wikEdMainCSS = {}; } // WikedInitMainCSS: define built-in main window css window.WikedInitMainCSS = function() { WikEdInitObject(wikEdMainCSS, { // logo '.wikEdLogo': 'margin-left: 0.5em;', '.wikEdLogoFallBack': 'float: right;', // combo input box '.wikEdCombo': 'font-size: smaller; padding-left: 0.1em; padding-right: 0.1em; margin: 0 0.1em 0 0.1em; height: 1.6em; vertical-align: bottom;', // wikEd button areas // button bar margins '.wikEdButtonBarFormat': 'margin: 0 8px 3px 0; float: left;', '.wikEdButtonBarCustom1': 'margin: 0 8px 3px 0; float: left;', '.wikEdButtonBarFind': 'margin: 0 8px 3px 0; float: left;', '.wikEdButtonBarFix': 'margin: 0 8px 3px 0; float: left;', '.wikEdButtonBarCustom2': 'margin: 0 8px 3px 0; float: left;', '.wikEdButtonBarControl': 'margin: 0 0 3px 0; float: right;', '.wikEdButtonBarPreview': 'margin: 0 0 0.15em 0.6em; float: right;', '.wikEdButtonBarPreviewFull': 'margin: -0.2em 0 0 0.6em; float: right;', '.wikEdButtonBarPreview2': 'margin: 0.2em 0 0.4em 0; float: right;', '.wikEdButtonBarJump': 'margin: 0 0 0 0.6em; float: right;', // button bar inner wrapper: border (hidden: invisible) '.wikEdButtonBarInnerWrapperVisible': 'border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', '.wikEdButtonBarInnerWrapperHidden': '', // button bar grip wrapper: invisible (hidden: border) '.wikEdButtonBarGripWrapperVisible': 'float: left;', '.wikEdButtonBarGripWrapperHidden': 'float: left; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', // button bar buttons wrapper: invisible (hidden: border) '.wikEdButtonBarButtonsWrapperVisible': 'float: left; background: #d4d0cc; ', '.wikEdButtonBarButtonsWrapperHidden': 'float: left; background: #d4d0cc; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0; z-index: 4;', // button bar grip '.wikEdButtonBarGrip': 'background: #d4d0cc; padding: 0; background-image: url({wikEdGrip}); background-repeat: repeat-y; cursor: pointer;', // button bar buttons '.wikEdButtonsFormat': 'background: #d4d0cc; padding: 2px 2px 0 0px;', '.wikEdButtonsCustom1': 'background: #d4d0cc; padding: 2px 2px 0 0px;', '.wikEdButtonsFind': 'background: #d4d0cc; padding: 0px 2px 0 0px;', '.wikEdButtonsFix': 'background: #d4d0cc; padding: 2px 2px 0 0px;', '.wikEdButtonsCustom2': 'background: #d4d0cc; padding: 2px 2px 0 0px;', '.wikEdButtonsControl': 'background: #d4d0cc; padding: 2px 2px 0 1px;', '.wikEdButtonsPreview': 'background: #d4d0cc; padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', '.wikEdButtonsPreviewFull': 'background: #d4d0cc; padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', '.wikEdButtonsPreview2': 'background: #d4d0cc; padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', '.wikEdButtonsJump': 'background: #d4d0cc; padding: 2px; border: 1px solid; border-color: #e0e0e0 #808080 #808080 #e0e0e0;', // wikEd buttons (!important for devmo skin) '.wikEdButton': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;', '.wikEdButton:hover': 'background: #e4e0dd; border: 1px outset !important; cursor: pointer;', '.wikEdButton:active': 'background: #e4e0dc; border: 1px inset !important; cursor: pointer;', '.wikEdButtonSolo': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #d4d0cc; border: 1px #d4d0cc solid !important; cursor: pointer;', '.wikEdButtonSolo:hover': 'background: #e4e0dd; border: 1px outset !important; cursor: pointer;', '.wikEdButtonChecked': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: pointer;', '.wikEdButtonUnchecked': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ddd8d3; border: 1px solid !important; border-color: white black black white !important; cursor: pointer;', '.wikEdButtonPressed': 'vertical-align: text-top; font-size: small; text-decoration: none; margin: 1px 2px; padding: 0; background: #ccc8c3; border: 1px solid !important; border-color: black white white black !important; cursor: wait;', '.wikEdButtonInactive': 'vertical-align: text-top; font-size: small; text-decoration: underline; margin: 1px 2px; padding: 0; background: #c0c0c0; border: 1px #b0b0b0 solid !important; cursor: not-allowed', '.wikEdLocalPreview': 'vertical-align: top; margin: 0 0.33em 0 0.15em; padding: 0;', '.wikEdLocalDiff': 'vertical-align: top; margin: 0 0.33em 0 -0.18em; padding: 0;', '.wikEdButtonDummy': 'vertical-align: text-top; margin: 1px 2px; padding: 1px; background: #d4d0cc;', // preview box '.wikEdPreviewBoxOuter': 'clear: both; margin: 0; border-width: 1px; border-style: solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080;', '.wikEdPreviewBox': 'background-color: #faf8f6; padding: 5px; border-width: 1px; border-style: solid; border-color: #404040 #ffffff #ffffff #404040;', '.wikEdPreviewRefs': 'margin-top: 1.5em; padding-top: 1em;border-top: 1px solid #a0a0a0;', // find field '.wikEdFindComboInput': 'position: relative; padding: 0; margin: 0 0.2em; white-space: nowrap; top: 0; vertical-align: bottom;', '#wikEdFindText': 'vertical-align: 0%; font-family: monospace; padding: 0; margin: 0; position: absolute; z-index: 2; -moz-box-sizing: content-box; left: 0; top: 1px; height: 14px; width: 170px;', '#wikEdFindSelect': 'vertical-align: 0%; font-family: monospace; padding: 0; margin: 0; position: relative; z-index: 1; -moz-box-sizing: content-box; left: 0; top: 0px; height: 18px; border: none;', // replace field '.wikEdReplaceComboInput': 'position: relative; padding: 0; margin: 0 0.2em; white-space: nowrap; top: 0; vertical-align: bottom;', '#wikEdReplaceText': 'vertical-align: 0%; font-family: monospace; padding: 0; margin: 0; position: absolute; z-index: 2; -moz-box-sizing: content-box; left: 0; top: 1px; height: 14px; width: 170px;', '#wikEdReplaceSelect': 'vertical-align: 0%; font-family: monospace; padding: 0; margin: 0; position: relative; z-index: 1; -moz-box-sizing: content-box; left: 0; top: 0px; height: 18px; border: none; ', // summary field '.wikEdSummaryComboInput': 'position: relative; padding: 0; margin: 0 0 0 0.1em; white-space: nowrap; top: 0; vertical-align: text-bottom;', '.wikEdSummaryText': 'vertical-align: 0%; padding: 0; margin: 0; position: absolute; z-index: 2; -moz-box-sizing: content-box; left: 0; top: 0px; height: 18px; width: auto;', '.wikEdSummarySelect': 'vertical-align: 0%; padding: 0; margin: 0; position: relative; z-index: 1; -moz-box-sizing: content-box; left: 0; top: 1px; height: 21px; border: none;', // space around submit buttons '.editButtons': 'margin: 0;', // frame '.wikEdFrameOuter': 'width: 100%; margin: 0; border-width: 1px; border-style: solid; border-color: #808080 #d0d0d0 #d0d0d0 #808080;', '.wikEdFrameInner': 'padding: 0; border-width: 1px; border-style: solid; border-color: #404040 #ffffff #ffffff #404040;', '.wikEdFrame': 'width: 100%; padding: 0; margin: 0; border: none;', // summary '.wikEdSummaryWrapper': 'margin: 0 0 0.4em 0; width: 100%', '.wikEdSummaryWrapperTop': 'margin: 0.1em 0 0.4em 0; width: 100%', '#wpSummaryLabel': 'margin: 0 0.2em 0 0;', '.editOptions': 'position: relative; top: 0.1em;', '.wikEdClearSummaryForm': 'display: inline;', '.wikEdClearSummary': 'vertical-align: middle; margin: 0 0.1em 0 0.5em; padding: 0 0 0.2em 0;', // input wrapper '.wikEdInputWrapper': 'z-index: 100; clear: both; margin-top: 0.5em;', '.wikEdInputWrapperFull': 'position: fixed; top: 0; left: 0; right: 0; padding: 4px; background: white; z-index: 100;', // other wrappers '.wikEdToolbarWrapper': 'margin: 0 0 0.25em 0;', '.wikEdCaptchaWrapper': '', '.wikEdDebugWrapper': 'margin: 0 0 0.35em 0;', '.wikEdTextareaWrapper': 'margin: 0 0 0.35em 0;', '.wikEdFrameWrapper': 'margin: 0 0 0.35em 0;', '.wikEdConsoleWrapper': '', '.wikEdButtonsWrapper': '', '.wikEdSummaryInputWrapper': 'display: inline; white-space: nowrap;', '.wikEdSummaryOptions': 'display: inline;', '.wikEdSubmitWrapper': ';', '.wikEdSubmitButtonsWrapper': '', '.wikEdLocalPrevWrapper': 'margin: 0.5em 0 0 0;', '.wikEdInsertWrapper': '', // various '.wikEdEditOptions': 'display: inline; vertical-align: baseline; margin-right: 0.75em; white-space: nowrap;', '.wikEdEditHelp': 'vertical-align: baseline; margin-right: 0.5em; white-space: nowrap;', '#editpage-specialchars': 'clear: both;' }); } // buttons (id, class, popup title, image src, width, height, alt text, click code) if (typeof(wikEdButton) == 'undefined') { window.wikEdButton = {}; } // WikedInitButton: define built-in buttons (id, class, popup title, image src, width, height, alt text, click handler code were obj is the button element) window.WikedInitButton = function() { WikEdInitObject(wikEdButton, { // workaround for mozilla 3.0 bug 441087: objId = obj.id; eventShiftKey = event.shiftKey; // format top 1: ['wikEdUndo', 'wikEdButtonInactive', wikEdText['wikEdUndo title'], wikEdImage['undo'], '16', '16', wikEdText['wikEdUndo alt'], 'javascript:WikEdEditButton(obj, objId);' ], 2: ['wikEdRedo', 'wikEdButtonInactive', wikEdText['wikEdRedo title'], wikEdImage['redo'], '16', '16', wikEdText['wikEdRedo alt'], 'javascript:WikEdEditButton(obj, objId);' ], 3: ['wikEdBold', 'wikEdButton', wikEdText['wikEdBold title'], wikEdImage['bold'], '16', '16', wikEdText['wikEdBold alt'], 'javascript:WikEdEditButton(obj, objId);' ], 4: ['wikEdItalic', 'wikEdButton', wikEdText['wikEdItalic title'], wikEdImage['italic'], '16', '16', wikEdText['wikEdItalic alt'], 'javascript:WikEdEditButton(obj, objId);' ], 5: ['wikEdUnderline', 'wikEdButton', wikEdText['wikEdUnderline title'], wikEdImage['underline'], '16', '16', wikEdText['wikEdUnderline alt'], 'javascript:WikEdEditButton(obj, objId);' ], 6: ['wikEdStrikethrough', 'wikEdButton', wikEdText['wikEdStrikethrough title'], wikEdImage['strikethrough'], '16', '16', wikEdText['wikEdStrikethrough alt'], 'javascript:WikEdEditButton(obj, objId);' ], 7: ['wikEdNowiki', 'wikEdButton', wikEdText['wikEdNowiki title'], wikEdImage['nowiki'], '16', '16', wikEdText['wikEdNowiki alt'], 'javascript:WikEdEditButton(obj, objId);' ], 8: ['wikEdSuperscript', 'wikEdButton', wikEdText['wikEdSuperscript title'], wikEdImage['superscript'], '16', '16', wikEdText['wikEdSuperscript alt'], 'javascript:WikEdEditButton(obj, objId);' ], 9: ['wikEdSubscript', 'wikEdButton', wikEdText['wikEdSubscript title'], wikEdImage['subscript'], '16', '16', wikEdText['wikEdSubscript alt'], 'javascript:WikEdEditButton(obj, objId);' ], 10: ['wikEdRef', 'wikEdButton', wikEdText['wikEdRef title'], wikEdImage['ref'], '16', '16', wikEdText['wikEdRef alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, \'wikEdRef\'); } else { javascript:WikEdEditButton(obj, \'wikEdRefNamed\'); }' ], 12: ['wikEdCase', 'wikEdButton', wikEdText['wikEdCase title'], wikEdImage['case'], '16', '16', wikEdText['wikEdCase alt'], 'javascript:WikEdEditButton(obj, objId);' ], 80: ['wikEdSort', 'wikEdButton', wikEdText['wikEdSort title'], wikEdImage['sort'], '16', '16', wikEdText['wikEdSort alt'], 'javascript:WikEdEditButton(obj, objId);' ], 25: ['wikEdRedirect', 'wikEdButton', wikEdText['wikEdRedirect title'], wikEdImage['redirect'], '16', '16', wikEdText['wikEdRedirect alt'], 'javascript:WikEdEditButton(obj, objId);' ], 13: ['wikEdUndoAll', 'wikEdButton', wikEdText['wikEdUndoAll title'], wikEdImage['undoAll'], '16', '16', wikEdText['wikEdUndoAll alt'], 'javascript:WikEdEditButton(obj, objId);' ], 14: ['wikEdRedoAll', 'wikEdButtonInactive', wikEdText['wikEdRedoAll title'], wikEdImage['redoAll'], '16', '16', wikEdText['wikEdRedoAll alt'], 'javascript:WikEdEditButton(obj, objId);' ], // format bottom 15: ['wikEdWikiLink', 'wikEdButton', wikEdText['wikEdWikiLink title'], wikEdImage['wikiLink'], '16', '16', wikEdText['wikEdWikiLink alt'], 'javascript:WikEdEditButton(obj, objId);' ], 16: ['wikEdWebLink', 'wikEdButton', wikEdText['wikEdWebLink title'], wikEdImage['webLink'], '16', '16', wikEdText['wikEdWebLink alt'], 'javascript:WikEdEditButton(obj, objId);' ], 17: ['wikEdHeading', 'wikEdButton', wikEdText['wikEdHeading title'], wikEdImage['heading'], '16', '16', wikEdText['wikEdHeading alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, \'wikEdIncreaseHeading\'); } else { javascript:WikEdEditButton(obj, \'wikEdDecreaseHeading\'); }' ], 19: ['wikEdBulletList', 'wikEdButton', wikEdText['wikEdBulletList title'], wikEdImage['bulletList'], '16', '16', wikEdText['wikEdBulletList alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, \'wikEdIncreaseBulletList\'); } else { javascript:WikEdEditButton(obj, \'wikEdDecreaseBulletList\'); }' ], 20: ['wikEdNumberList', 'wikEdButton', wikEdText['wikEdNumberList title'], wikEdImage['numberList'], '16', '16', wikEdText['wikEdNumberList alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, \'wikEdIncreaseNumberList\'); } else { javascript:WikEdEditButton(obj, \'wikEdDecreaseNumberList\'); }' ], 21: ['wikEdIndentList', 'wikEdButton', wikEdText['wikEdIndentList title'], wikEdImage['indentList'], '16', '16', wikEdText['wikEdIndentList alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, \'wikEdIncreaseIndentList\'); } else { javascript:WikEdEditButton(obj, \'wikEdDecreaseIndentList\'); }' ], 22: ['wikEdDefinitionList', 'wikEdButton', wikEdText['wikEdDefinitionList title'], wikEdImage['definitionList'], '16', '16', wikEdText['wikEdDefinitionList alt'], 'javascript:WikEdEditButton(obj, objId);' ], 23: ['wikEdImage', 'wikEdButton', wikEdText['wikEdImage title'], wikEdImage['image'], '16', '16', wikEdText['wikEdImage alt'], 'javascript:WikEdEditButton(obj, objId);' ], 24: ['wikEdTable', 'wikEdButton', wikEdText['wikEdTable title'], wikEdImage['table'], '16', '16', wikEdText['wikEdTable alt'], 'javascript:WikEdEditButton(obj, objId);' ], 11: ['wikEdReferences', 'wikEdButton', wikEdText['wikEdReferences title'], wikEdImage['references'], '16', '16', wikEdText['wikEdReferences alt'], 'if (!eventShiftKey) { javascript:WikEdEditButton(obj, objId); } else { javascript:WikEdEditButton(obj, \'wikEdReferencesSection\'); }' ], 26: ['wikEdWikify', 'wikEdButton', wikEdText['wikEdWikify title'], wikEdImage['wikify'], '16', '16', wikEdText['wikEdWikify alt'], 'javascript:WikEdEditButton(obj, objId);' ], 27: ['wikEdTextify', 'wikEdButton', wikEdText['wikEdTextify title'], wikEdImage['textify'], '16', '16', wikEdText['wikEdTextify alt'], 'javascript:WikEdEditButton(obj, objId);' ], // control top 77: ['wikEdRefHide', 'wikEdButtonUnchecked', wikEdText['wikEdRefHide title'], wikEdImage['refHide'], '16', '16', wikEdText['wikEdRefHide alt'], 'javascript:WikEdButton(obj, objId, true);' ], 29: ['wikEdTextZoom', 'wikEdButton', wikEdText['wikEdTextZoom title'], wikEdImage['textZoom'], '16', '16', wikEdText['wikEdTextZoom alt'], 'if (!eventShiftKey) { javascript:WikEdButton(obj, \'wikEdTextZoomDown\'); } else { javascript:WikEdButton(obj, \'wikEdTextZoomUp\'); }' ], 30: ['wikEdClearHistory', 'wikEdButton', wikEdText['wikEdClearHistory title'], wikEdImage['clearHistory'], '16', '16', wikEdText['wikEdClearHistory alt'], 'javascript:WikEdButton(obj, objId);' ], 31: ['wikEdScrollToPreview', 'wikEdButton', wikEdText['wikEdScrollToPreview title'], wikEdImage['scrollToPreviewDown'], '16', '16', wikEdText['wikEdScrollToPreview alt'], 'javascript:WikEdButton(obj, objId);' ], 32: ['wikEdScrollToEdit', 'wikEdButton', wikEdText['wikEdScrollToEdit title'], wikEdImage['scrollToEditDown'], '16', '16', wikEdText['wikEdScrollToEdit alt'], 'javascript:WikEdButton(obj, objId);' ], // control bottom 33: ['wikEdUseWikEd', 'wikEdButtonChecked', wikEdText['wikEdUseWikEd title'], wikEdImage['useWikEd'], '16', '16', wikEdText['wikEdUseWikEd alt'], 'javascript:WikEdButton(obj, objId, true);' ], 34: ['wikEdHighlightSyntax', 'wikEdButtonUnchecked', wikEdText['wikEdHighlightSyntax title'], wikEdImage['highlightSyntax'], '16', '16', wikEdText['wikEdHighlightSyntax alt'], 'javascript:WikEdButton(obj, objId, true);' ], 35: ['wikEdSource', 'wikEdButton', wikEdText['wikEdSource title'], wikEdImage['source'], '16', '16', wikEdText['wikEdSource alt'], 'javascript:WikEdEditButton(obj, objId);' ], 75: ['wikEdCloseToolbar', 'wikEdButtonUnchecked', wikEdText['wikEdCloseToolbar title'], wikEdImage['closeToolbar'], '16', '16', wikEdText['wikEdCloseToolbar alt'], 'javascript:WikEdButton(obj, objId, true);' ], 36: ['wikEdUsing', 'wikEdButtonUnchecked', wikEdText['wikEdUsing title'], wikEdImage['using'], '16', '16', wikEdText['wikEdUsing alt'], 'javascript:WikEdButton(obj, objId, true);' ], 37: ['wikEdFullScreen', 'wikEdButtonUnchecked', wikEdText['wikEdFullScreen title'], wikEdImage['fullScreen'], '16', '16', wikEdText['wikEdFullScreen alt'], 'javascript:WikEdButton(obj, objId, true);' ], // {{TABLE}} 79: ['wikEdTableMode', 'wikEdButtonUnchecked', wikEdText['wikEdTableMode title'], wikEdImage['tableMode'], '16', '16', wikEdText['wikEdTableMode alt'], 'javascript:WikEdButton(obj, objId, true);' ], // find top 39: ['wikEdFindAll', 'wikEdButton', wikEdText['wikEdFindAll title'], wikEdImage['findAll'], '16', '16', wikEdText['wikEdFindAll alt'], 'javascript:WikEdEditButton(obj, objId);' ], 40: ['wikEdFindPrev', 'wikEdButton', wikEdText['wikEdFindPrev title'], wikEdImage['findPrev'], '16', '16', wikEdText['wikEdFindPrev alt'], 'javascript:WikEdEditButton(obj, objId);' ], 41: ['wikEdFindNext', 'wikEdButton', wikEdText['wikEdFindNext title'], wikEdImage['findNext'], '16', '16', wikEdText['wikEdFindNext alt'], 'if (eventShiftKey) { javascript:WikEdEditButton(obj, objId, \'shift\'); } else { javascript:WikEdEditButton(obj, objId); }' ], 43: ['wikEdJumpPrev', 'wikEdButton', wikEdText['wikEdJumpPrev title'], wikEdImage['jumpPrev'], '16', '16', wikEdText['wikEdJumpPrev alt'], 'javascript:WikEdEditButton(obj, objId);' ], 44: ['wikEdJumpNext', 'wikEdButton', wikEdText['wikEdJumpNext title'], wikEdImage['jumpNext'], '16', '16', wikEdText['wikEdJumpNext alt'], 'javascript:WikEdEditButton(obj, objId);' ], // find bottom 46: ['wikEdReplaceAll', 'wikEdButton', wikEdText['wikEdReplaceAll title'], wikEdImage['replaceAll'], '16', '16', wikEdText['wikEdReplaceAll alt'], 'javascript:WikEdEditButton(obj, objId);' ], 47: ['wikEdReplacePrev', 'wikEdButton', wikEdText['wikEdReplacePrev title'], wikEdImage['replacePrev'], '16', '16', wikEdText['wikEdReplacePrev alt'], 'javascript:WikEdEditButton(obj, objId);' ], 48: ['wikEdReplaceNext', 'wikEdButton', wikEdText['wikEdReplaceNext title'], wikEdImage['replaceNext'], '16', '16', wikEdText['wikEdReplaceNext alt'], 'if (eventShiftKey) { javascript:WikEdEditButton(obj, objId, \'shift\'); } else { javascript:WikEdEditButton(obj, objId); }' ], 49: ['wikEdCaseSensitive', 'wikEdButtonUnchecked', wikEdText['wikEdCaseSensitive title'], wikEdImage['caseSensitive'], '16', '16', wikEdText['wikEdCaseSensitive alt'], 'javascript:WikEdButton(obj, objId, true);' ], 50: ['wikEdRegExp', 'wikEdButtonUnchecked', wikEdText['wikEdRegExp title'], wikEdImage['regExp'], '16', '16', wikEdText['wikEdRegExp alt'], 'javascript:WikEdButton(obj, objId, true);' ], 51: ['wikEdFindAhead', 'wikEdButtonUnchecked', wikEdText['wikEdFindAhead title'], wikEdImage['findAhead'], '16', '16', wikEdText['wikEdFindAhead alt'], 'javascript:WikEdButton(obj, objId, true);' ], // fix top 52: ['wikEdFixBasic', 'wikEdButton', wikEdText['wikEdFixBasic title'], wikEdImage['fixBasic'], '16', '16', wikEdText['wikEdFixBasic alt'], 'javascript:WikEdEditButton(obj, objId);' ], 53: ['wikEdFixHtml', 'wikEdButton', wikEdText['wikEdFixHtml title'], wikEdImage['fixHtml'], '16', '16', wikEdText['wikEdFixHtml alt'], 'javascript:WikEdEditButton(obj, objId);' ], 54: ['wikEdFixCaps', 'wikEdButton', wikEdText['wikEdFixCaps title'], wikEdImage['fixCaps'], '16', '16', wikEdText['wikEdFixCaps alt'], 'javascript:WikEdEditButton(obj, objId);' ], 55: ['wikEdfixUnicode', 'wikEdButton', wikEdText['wikEdfixUnicode title'], wikEdImage['fixUnicode'], '16', '16', wikEdText['wikEdfixUnicode alt'], 'javascript:WikEdEditButton(obj, objId);' ], 56: ['wikEdFixAll', 'wikEdButton', wikEdText['wikEdFixAll title'], wikEdImage['fixAll'], '16', '16', wikEdText['wikEdFixAll alt'], 'javascript:WikEdEditButton(obj, objId);' ], 57: ['wikEdFixRegExTypo', 'wikEdButton', wikEdText['wikEdFixRegExTypo title'], wikEdImage['fixRegExTypo'], '16', '16', wikEdText['wikEdFixRegExTypo alt'], 'javascript:WikEdEditButton(obj, objId);' ], // fix bottom 58: ['wikEdFixDashes', 'wikEdButton', wikEdText['wikEdFixDashes title'], wikEdImage['fixDash'], '16', '16', wikEdText['wikEdFixDashes alt'], 'javascript:WikEdEditButton(obj, objId);' ], 59: ['wikEdFixPunct', 'wikEdButton', wikEdText['wikEdFixPunct title'], wikEdImage['fixPunct'], '16', '16', wikEdText['wikEdFixPunct alt'], 'javascript:WikEdEditButton(obj, objId);' ], 60: ['wikEdFixMath', 'wikEdButton', wikEdText['wikEdFixMath title'], wikEdImage['fixMath'], '16', '16', wikEdText['wikEdFixMath alt'], 'javascript:WikEdEditButton(obj, objId);' ], 61: ['wikEdFixChem', 'wikEdButton', wikEdText['wikEdFixChem title'], wikEdImage['fixChem'], '16', '16', wikEdText['wikEdFixChem alt'], 'javascript:WikEdEditButton(obj, objId);' ], 62: ['wikEdFixUnits', 'wikEdButton', wikEdText['wikEdFixUnits title'], wikEdImage['fixUnits'], '16', '16', wikEdText['wikEdFixUnits alt'], 'javascript:WikEdEditButton(obj, objId);' ], // preview top 65: ['wikEdClose', 'wikEdButton', wikEdText['wikEdClose title'], wikEdImage['close'], '16', '16', wikEdText['wikEdClose alt'], 'javascript:WikEdButton(obj, objId);' ], 66: ['wikEdScrollToPreview2', 'wikEdButton', wikEdText['wikEdScrollToPreview2 title'], wikEdImage['scrollToPreviewDown'], '16', '16', wikEdText['wikEdScrollToPreview2 alt'], 'javascript:WikEdButton(obj, objId);' ], 67: ['wikEdScrollToEdit2', 'wikEdButton', wikEdText['wikEdScrollToEdit2 title'], wikEdImage['scrollToEdit'], '16', '16', wikEdText['wikEdScrollToEdit2 alt'], 'javascript:WikEdButton(obj, objId);' ], // preview bottom 70: ['wikEdClose2', 'wikEdButton', wikEdText['wikEdClose2 title'], wikEdImage['close'], '16', '16', wikEdText['wikEdClose2 alt'], 'javascript:WikEdButton(obj, objId);' ], 71: ['wikEdScrollToPreview3', 'wikEdButton', wikEdText['wikEdScrollToPreview3 title'], wikEdImage['scrollToPreview'], '16', '16', wikEdText['wikEdScrollToPreview3 alt'], 'javascript:WikEdButton(obj, objId);' ], 72: ['wikEdScrollToEdit3', 'wikEdButton', wikEdText['wikEdScrollToEdit3 title'], wikEdImage['scrollToEdit'], '16', '16', wikEdText['wikEdScrollToEdit3 alt'], 'javascript:WikEdButton(obj, objId);' ], // jump 78: ['wikEdDiff', 'wikEdButtonUnchecked', wikEdText['wikEdDiff title'], wikEdImage['wikEdDiff'], '16', '16', wikEdText['wikEdDiff alt'], 'javascript:WikEdButton(obj, objId, true);' ], 74: ['wikEdScrollToEdit4', 'wikEdButtonSolo', wikEdText['wikEdScrollToEdit4 title'], wikEdImage['scrollToEditDown'], '16', '16', wikEdText['wikEdScrollToEdit4 alt'], 'javascript:WikEdButton(obj, objId);' ], // dummy 76: ['wikEdDummy', 'wikEdButtonDummy', '', wikEdImage['dummy'], '16', '16', '', '' ] }); } // button access keys if (typeof(wikEdButtonKey) == 'undefined') { window.wikEdButtonKey = {}; } // WikedInitButtonKey: define accesskeys for edit buttons (wikEd button number: [key string, JS key code]) window.WikedInitButtonKey = function() { WikEdInitObject(wikEdButtonKey, { 26: ['b', 66], // wikify 27: ['o', 79], // textify 67: ['g', 71], // scrolltoedit2 72: ['g', 71], // scrolltoedit3 74: ['g', 71], // scrolltoedit4 32: ['g', 71] // scrolltoedit, overwrites previous wikEd buttons for same key }); } // button bars (id, class, button numbers) if (typeof(wikEdButtonBar) == 'undefined') { window.wikEdButtonBar = {}; } // WikedInitButtonBar: define built-in button bars (id outer, class outer, id inner, class inner, height, grip title, button numbers) window.WikedInitButtonBar = function() { WikEdInitObject(wikEdButtonBar, { 'format': ['wikEdButtonBarFormat', 'wikEdButtonBarFormat', 'wikEdButtonsFormat', 'wikEdButtonsFormat', 44, wikEdText['wikEdGripFormat title'], [1,2,3,4,5,6,7,8,9,10,12,80,13,14,'br',15,16,17,19,20,21,22,23,24,11,25,76,26,27] ], 'custom1': ['wikEdButtonBarCustom1', 'wikEdButtonBarCustom1', 'wikEdButtonsCustom1', 'wikEdButtonsCustom1', 44, wikEdText['wikEdGripCustom1 title'], [ ] ], 'find': ['wikEdButtonBarFind', 'wikEdButtonBarFind', 'wikEdButtonsFind', 'wikEdButtonsFind', 44, wikEdText['wikEdGripFind title'], [39,40,'find',41,76,43,44,'br',46,47,'replace',48,49,50,51] ], 'fix': ['wikEdButtonBarFix', 'wikEdButtonBarFix', 'wikEdButtonsFix', 'wikEdButtonsFix', 44, wikEdText['wikEdGripFix title'], [52,53,54,55,56,57,'br',58,59,60,61,62] ], 'custom2': ['wikEdButtonBarCustom2', 'wikEdButtonBarCustom2', 'wikEdButtonsCustom2', 'wikEdButtonsCustom2', 44, wikEdText['wikEdGripCustom2 title'], [ ] ], 'control': ['wikEdButtonBarControl', 'wikEdButtonBarControl', 'wikEdButtonsControl', 'wikEdButtonsControl', 44, wikEdText['wikEdGripControl title'], [77,29,30,31,32,79,'br',33,34,35,75,36,78,37] ], 'preview': ['wikEdButtonBarPreview', 'wikEdButtonBarPreview', 'wikEdButtonsPreview', 'wikEdButtonsPreview', 0, null, [66,67,65] ], 'preview2': ['wikEdButtonBarPreview2', 'wikEdButtonBarPreview2', 'wikEdButtonsPreview2', 'wikEdButtonsPreview2', 0, null, [71,72,70] ], 'jump': ['wikEdButtonBarJump', 'wikEdButtonBarJump', 'wikEdButtonsJump', 'wikEdButtonsJump', 0, null, [74] ] }); } // history length for find, replace, and summary fields if (typeof(wikEdHistoryLength) == 'undefined') { window.wikEdHistoryLength = {}; } wikEdHistoryLength['find'] = 10; wikEdHistoryLength['replace'] = 10; wikEdHistoryLength['summary'] = 10; // presets for combo input fields dropdown options, {wikEdUsing} appends a link to this script if (typeof(wikEdComboPresetOptions) == 'undefined') { window.wikEdComboPresetOptions = {}; } if (typeof(wikEdComboPresetOptions['summary']) == 'undefined') { window.wikEdComboPresetOptions['summary'] = wikEdText['wikEdPresetSummary']; } // text for summary link to this script if (typeof(wikEdSummaryUsing) == 'undefined') { window.wikEdSummaryUsing = wikEdText['wikEdSummaryUsing']; } // expiration time span for permanent cookies in seconds if (typeof(wikEdCookieExpireSec) == 'undefined') { window.wikEdCookieExpireSec = 30 * 24 * 60 * 60; } // disable wikEd preset if (typeof(wikEdDisabledPreset) == 'undefined') { window.wikEdDisabledPreset = false; } // find ahead as you type checkbox preset if (typeof(wikEdFindAheadSelected) == 'undefined') { window.wikEdFindAheadSelected = true; } // highlight syntax preset if (typeof(wikEdHighlightSyntaxPreset) == 'undefined') { window.wikEdHighlightSyntaxPreset = true; } // enable wikEd preset if (typeof(wikEdUseWikEdPreset) == 'undefined') { window.wikEdUseWikEdPreset = true; } // add '...using wikEd' to summary preset if (typeof(wikEdUsingPreset) == 'undefined') { window.wikEdUsingPreset = false; } // scroll to edit window on non-preview pages if (typeof(wikEdScrollToEdit) == 'undefined') { window.wikEdScrollToEdit = true; } // wikEdDiff preset if (typeof(wikEdDiffPreset) == 'undefined') { window.wikEdDiffPreset = false; } // fullscreen mode preset if (typeof(wikEdFullScreenModePreset) == 'undefined') { window.wikEdFullScreenModePreset = false; } // show MediaWiki toolbar preset if (typeof(wikEdCloseToolbarPreset) == 'undefined') { window.wikEdCloseToolbarPreset = false; } // hide ref tags preset if (typeof(wikEdRefHidePreset) == 'undefined') { window.wikEdRefHidePreset = false; } // initial text zoom for edit window (percentage) if (typeof(wikEdTextZoom) == 'undefined') { window.wikEdTextZoom = 100; } // remove invisible syntax highlighting comments after closing tag if (typeof(wikEdRemoveHighlightComments) == 'undefined') { window.wikEdRemoveHighlightComments = true; } // show the text-to-source button for testing purposes if (typeof(wikEdShowSourceButton) == 'undefined') { window.wikEdShowSourceButton = false; } // show the using-wikEd button if (typeof(wikEdShowUsingButton) == 'undefined') { window.wikEdShowUsingButton = false; } // the wikEd help page link to be displayed after the editing help link, an empty string disables the link if (typeof(wikEdHelpPageLink) == 'undefined') { window.wikEdHelpPageLink = wikEdText['wikEdHelpPageLink']; } // enable external diff script if (typeof(wikEdLoadDiffScript) == 'undefined') { window.wikEdLoadDiffScript = true; } // enable external wikEdDiff script if (typeof(wikEdLoadDiff) == 'undefined') { window.wikEdLoadDiff = true; } // enable external InstaView script if (typeof(wikEdLoadInstaView) == 'undefined') { window.wikEdLoadInstaView = true; } // RegExTypoFix rules page, the address must have the exact same domain name as the used wiki if (typeof(wikEdRegExTypoFixURL) == 'undefined') { window.wikEdRegExTypoFixURL = 'http://en.wikipedia.org/w/index.php?title=Wikipedia:AutoWikiBrowser/Typos&action=raw'; } // enable RegExTypoFix button (http://en.wikipedia.org/wiki/User:Mboverload/RegExTypoFix) if (typeof(wikEdRegExTypoFix) == 'undefined') { window.wikEdRegExTypoFix = false; } // enable highlighting as links if (typeof(wikEdFollowHighlightedLinks) == 'undefined') { window.wikEdFollowHighlightedLinks = false; } // skip the browser detection to run wikEd under IE and Opera if (typeof(wikEdSkipBrowserTest) == 'undefined') { window.wikEdSkipBrowserTest = false; } // set the button bar grip width in px if (typeof(wikEdButtonBarGripWidth) == 'undefined') { window.wikEdButtonBarGripWidth = 8; } // enable local preview (Pilaf's InstaView) if (typeof(wikEdUseLocalPreview) == 'undefined') { window.wikEdUseLocalPreview = true; } // allow ajax requests from local copy for testing, also defined in wikEdDiff.js if (typeof(wikEdAllowLocalAjax) == 'undefined') { window.wikEdAllowLocalAjax = false; } // enable server preview (Ajax) if (typeof(wikEdUseAjaxPreview) == 'undefined') { window.wikEdUseAjaxPreview = true; } // enable appending '<references/> for Ajax section previews if (typeof(wikEdSectionPreviewRefs) == 'undefined') { window.wikEdSectionPreviewRefs = true; } // enable auto update (Ajax) if (typeof(wikEdAutoUpdate) == 'undefined') { window.wikEdAutoUpdate = true; } // hours between update check (monobook.js) if (typeof(wikEdAutoUpdateHours) == 'undefined') { window.wikEdAutoUpdateHours = 20; } // hours between update check (Greasemonkey) if (typeof(wikEdAutoUpdateHoursGM) == 'undefined') { window.wikEdAutoUpdateHoursGM = 40; } // auto update: version url (Ajax) if (typeof(wikEdAutoUpdateUrl) == 'undefined') { window.wikEdAutoUpdateUrl = 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEd_current_version&action=raw&maxage=0'; } // auto update: script url for Greasemonkey update if (typeof(wikEdAutoUpdateScriptUrl) == 'undefined') { window.wikEdAutoUpdateScriptUrl = 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Cacycle/wikEd.user.js'; } // show complete unshortened article text for local diff, also defined in wikEdDiff.js if (typeof(wikEdFullDiff) == 'undefined') { window.wikEdFullDiff = false; } // make links ctrl-clickable if (typeof(wikEdFollowLinks) == 'undefined') { window.wikEdFollowLinks = true; } // correct tab order between check boxes and submit buttons if (typeof(wikEdSubmitTabOrder) == 'undefined') { window.wikEdSubmitTabOrder = false; } // wikify table parameters, replaces original table parameters with this string if (typeof(wikEdWikifyTableParameters) == 'undefined') { window.wikEdWikifyTableParameters = ''; } // do not rearrange page elements if (typeof(wikEdNoRearrange) == 'undefined') { window.wikEdNoRearrange = false; } // use French rules for fix punctuation if (typeof(wikEdFixPunctFrench) == 'undefined') { window.wikEdFixPunctFrench = false; } // wikEdSetupHook, executed after wikEd has been set up, usage: wikEdSetupHook.push(YourFunction); if (typeof(wikEdSetupHook) == 'undefined') { window.wikEdSetupHook = []; } // wikEdOnHook, executed after wikEd has been re-enabled by logo click, usage: wikEdOnHook.push(YourFunction); if (typeof(wikEdOnHook) == 'undefined') { window.wikEdOnHook = []; } // wikEdOffHook, executed after wikEd has been disabled by logo click, usage: wikEdOffHook.push(YourFunction); if (typeof(wikEdOffHook) == 'undefined') { window.wikEdOffHook = []; } // wikEdTextareaHook, executed after classic textarea has been enabled by user, usage: wikEdTextareaHook.push(YourFunction); if (typeof(wikEdTextareaHook) == 'undefined') { window.wikEdTextareaHook = []; } // wikEdFrameHook, executed after wikEd edit frame has been enabled by user, usage: wikEdFrameHook.push(YourFunction); if (typeof(wikEdFrameHook) == 'undefined') { window.wikEdFrameHook = []; } // custom edit form id instead of 'editform' if (typeof(wikEdCustomEditFormId) == 'undefined') { window.wikEdCustomEditFormId = ''; } // custom textarea id instead of 'wpTextbox1' if (typeof(wikEdCustomTextAreaId) == 'undefined') { window.wikEdCustomTextAreaId = ''; } // custom save button id instead of 'wpSave' if (typeof(wikEdCustomSaveButtonId) == 'undefined') { window.wikEdCustomSaveButtonId = ''; } // show table mode togle button // {{TABLE}} if (typeof(wikEdShowTableModeButton) == 'undefined') { window.wikEdShowTableModeButton = false; } // maximal time for syntax highlighting in ms if (typeof(wikEdMaxHighlightTime) == 'undefined') { window.wikEdMaxHighlightTime = 2000; } return; } // diff script URL if (typeof(wikEdDiffScriptSrc) == 'undefined') { window.wikEdDiffScriptSrc = 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/diff.js&action=raw&ctype=text/javascript'; } // wikEdDiff script URL, also defined in wikEdDiff.js if (typeof(wikEdDiffSrc) == 'undefined') { window.wikEdDiffSrc = 'http://en.wikipedia.org/w/index.php?title=User:Cacycle/wikEdDiff.js&action=raw&ctype=text/javascript'; } // InstaView script URL if (typeof(wikEdInstaViewSrc) == 'undefined') { window.wikEdInstaViewSrc = 'http://en.wikipedia.org/w/index.php?title=User:Pilaf/include/instaview.js&action=raw&ctype=text/javascript'; } // wikEd-as-gadget detection, set to true if gadget script name is not MediaWiki:Gadget-wikEd.js if (typeof(wikEdGadget) == 'undefined') { window.wikEdGadget = null; } // // end of user configurable variables // // // WikEdInitGlobals: initialize non-configurable variables // window.WikEdInitGlobals = function() { // global variables window.wikEdTurnedOn = null; window.wikEdDisabled = null; window.wikEdUpload = null; window.wikEdLanguage = ''; // history window.wikEdFieldHist = []; window.wikEdSavedName = []; window.wikEdInputElement = []; window.wikEdSelectElement = []; window.wikEdCheckMarker = []; window.wikEdCheckMarker[true] = '♦'; window.wikEdCheckMarker[false] = '◊'; // cache the parsed DOM object window.wikEdFrameDOMCache = null; // undo all, redo all window.wikEdOrigVersion = ''; window.wikEdLastVersion = null; // global dom elements window.wikEdLogo = null; window.wikEdLogoList = null; window.wikEdDebug = null; window.wikEdTextarea = null; window.wikEdEditForm = null; window.wikEdFrame = null;; window.wikEdFrameBody = null; window.wikEdFrameDocument = null; window.wikEdFrameWindow = null; window.wikEdInputWrapper = null; window.wikEdToolbarWrapper = null; window.wikEdCaptchaWrapper = null; window.wikEdDebugWrapper = null; window.wikEdTextareaWrapper = null; window.wikEdFrameWrapper = null; window.wikEdConsoleWrapper = null; window.wikEdButtonsWrapper = null; window.wikEdSummaryWrapper = null; window.wikEdSummaryInputWrapper = null; window.wikEdSummaryOptions = null; window.wikEdSubmitWrapper = null; window.wikEdSubmitButtonsWrapper = null; window.wikEdLocalPrevWrapper = null; window.wikEdInsertWrapper = null; window.wikEdButtonBarFormat = null; window.wikEdButtonBarCustom1 = null; window.wikEdButtonBarFind = null; window.wikEdButtonBarFix = null; window.wikEdButtonBarCustom2 = null; window.wikEdButtonBarControl = null; window.wikEdButtonBarPreview = null; window.wikEdButtonBarPreview2 = null; window.wikEdButtonBarJump = null; window.wikEdPreviewBox = null; window.wikEdClearSummary = null; window.wikEdClearSummaryImg = null; window.wikEdCaseSensitive = null; window.wikEdRegExp = null; window.wikEdFindAhead = null; window.wikEdFindText = null; window.wikEdReplaceText = null; window.wikEdSummaryText = null; window.wikEdSummarySelect = null; window.wikEdSummaryTextWidth = null; window.wikEdEditOptions = null; window.wikEdEditHelp = null; window.wikEdSaveButton = null; window.wikEdPreviewButton = null; window.wikEdLDiffButton = null; window.wikEdLocalPreview = null; window.wikEdLocalDiff = null; window.wikEdDiffPreviewButton = null; window.wikEdSummaryLabel = null; window.wikEdGetGlobalNode = null; // various window.wikEdEditButtonHandler = {}; window.wikEdTextareaHeight = null; window.wikEdClearSummaryWidth = null; window.wikEdFullScreenMode = false; window.wikEdAddNewSection = null; window.wikEdBrowserNotSupported = false; window.wikEdFrameScrollTop = null; window.wikEdTextareaUpdated = null; window.wikEdPreviewIsAjax = null; window.wikEdButtonKeyCode = []; window.wikEdFollowLinkIdNo = 0; window.wikEdFollowLinkHash = {}; if (typeof(wikEdWikiGlobals) == 'undefined') { window.wikEdWikiGlobals = []; } window.wikEdDirection = null; // overide site javascript functions window.WikEdInsertTagsOriginal = null; window.WikEdInsertAtCursorOriginal = null; // wikEd settings window.wikEdRefHide = null; window.wikEdUsing = null; window.wikEdUseWikEd = null; window.wikEdCloseToolbar = null; window.wikEdHighlightSyntax = null; window.wikEdDiff = null; window.wikEdTableMode = null; // unicode fixing window.wikEdControlCharsStr = ''; window.wikEdSupportedChars = null; window.wikEdSpecialChars = null; window.wikEdProblemChars = null; window.wikEdControlChars = null; window.wikEdStrangeSpaces = null; // RegExTypoFix rules window.wikEdTypoRulesFind = []; window.wikEdTypoRulesReplace = []; // debugging time measurement, usage: wikEdDebugTimer.push([1234, new Date]); WikEdDebugTimer(); window.wikEdDebugTimer = []; // MediaWiki file paths for use in regexps window.wikEdServer = ''; window.wikEdArticlePath = ''; window.wikEdScript = ''; window.wikEdScriptPath = ''; window.wikEdScriptName = ''; // __MAGICWORDS__ window.wikEdMagicWords = '(NOTOC|FORCETOC|TOC|NOEDITSECTION|NEWSECTIONLINK|NOGALLERY|HIDDENCAT|NOCONTENTCONVERT|NOCC|NOTITLECONVERT|NOTC|END|START|NOINDEX|INDEX|STATICREDIRECT)'; // template, parser function, and parser variable modifiers {{modifier:...}} window.wikEdTemplModifier = 'int|msg|msgnw|raw|subst'; // parser variables {{variable}} window.wikEdParserVariables = 'CURRENTYEAR|CURRENTMONTH|CURRENTMONTHNAME|CURRENTMONTHNAMEGEN|CURRENTMONTHABBREV|CURRENTDAY|CURRENTDAY2|CURRENTDOW|CURRENTDAYNAME|CURRENTTIME|CURRENTHOUR|CURRENTWEEK|CURRENTTIMESTAMP|LOCALYEAR|LOCALMONTH|LOCALMONTHNAME|LOCALMONTHNAMEGEN|LOCALMONTHABBREV|LOCALDAY|LOCALDAY2|LOCALDOW|LOCALDAYNAME|LOCALTIME|LOCALHOUR|LOCALWEEK|LOCALTIMESTAMP|SITENAME|CURRENTVERSION|CONTENTLANGUAGE|REVISIONID|REVISIONDAY|REVISIONDAY2|REVISIONMONTH|REVISIONYEAR|REVISIONTIMESTAMP|SERVER|SERVERNAME|SCRIPTPATH|FULLPAGENAME|PAGENAME|BASEPAGENAME|SUBPAGENAME|SUBJECTPAGENAME|TALKPAGENAME|FULLPAGENAMEE|PAGENAMEE|BASEPAGENAMEE|SUBPAGENAMEE|SUBJECTPAGENAMEE|TALKPAGENAMEE|NAMESPACE|SUBJECTSPACE|ARTICLESPACE|TALKSPACE|NAMESPACEE|SUBJECTSPACEE|TALKSPACEE|DIRMARK|DIRECTIONMARK'; // parser variables {{variable:R}} window.wikEdParserVariablesR = 'NUMBEROFPAGES|NUMBEROFARTICLES|NUMBEROFFILES|NUMBEROFEDITS|NUMBEROFUSERS|NUMBEROFADMINS|NUMBEROFVIEWS'; // parser functions {{FUNCTION:parameter|R}} window.wikEdParserFunctionsR = 'NUMBERINGROUP|PAGESINNS|PAGESINNAMESPACE|PAGESINCATEGORY|PAGESINCAT|PAGESIZE|DEFAULTSORT|DISPLAYTITLE'; // parser functions {{function:param|param}} window.wikEdParserFunctions = 'localurl|localurl|fullurl|fullurl|filepath|fullurle|urlencode|anchorencode|ns|lc|lcfirst|uc|ucfirst|formatnum|padleft|padright|padright|plural|grammar'; // parser functions {{#function:param|param}} window.wikEdParserFunctionsHash = 'language|special|tag|tag|expr|if|ifeq|ifexist|ifexpr|switch|time|timel|rel2abs|titleparts|iferror|iferror|special|tag|categorytree'; return; } // variables needed during startup // hash of loaded scripts, also defined in wikEdDiff.js if (typeof(wikEdExternalScripts) == 'undefined') { window.wikEdExternalScripts = null; } if (typeof(wikEdStartup) == 'undefined') { window.wikEdStartup = false; } if (typeof(wikEdPageLoaded) == 'undefined') { window.wikEdPageLoaded = false; } // browser identification if (typeof(wikEdBrowserName) == 'undefined') { window.wikEdBrowserName = ''; } if (typeof(wikEdBrowserFlavor) == 'undefined') { window.wikEdBrowserFlavor = ''; } if (typeof(wikEdBrowserVersion) == 'undefined') { window.wikEdBrowserVersion = 0; } if (typeof(wikEdMSIE) == 'undefined') { window.wikEdMSIE = false; } if (typeof(wikEdMozilla) == 'undefined') { window.wikEdMozilla = false; } if (typeof(wikEdOpera) == 'undefined') { window.wikEdOpera = false; } if (typeof(wikEdSafari) == 'undefined') { window.wikEdSafari = false; } if (typeof(wikEdChrome) == 'undefined') { window.wikEdChrome = false; } if (typeof(wikEdGreasemonkey) == 'undefined') { window.wikEdGreasemonkey = null; } // content language default, also used for wikEd UI localization if (typeof(wikEdLanguageDefault) == 'undefined') { window.wikEdLanguageDefault = 'en'; } // load external translation if (typeof(wikEdLoadTranslation) == 'undefined') { window.wikEdLoadTranslation = true; } // translation javascript URLs if (typeof(wikEdTranslations) == 'undefined') { window.wikEdTranslations = {}; } // WikedInitTranslations: define translation javascript URLs ('': internal default) window.WikedInitTranslations = function() { WikEdInitObject(wikEdTranslations, { 'en': '', 'ar': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:ترجمان05/wikEd_international_ar.js', 'zh': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Shibo77/wikEd_international_zh.js', 'cs': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Sevela.p/wikEd_international_cs.js', 'eo': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:ArnoLagrange/wikEd-eo.js', 'fr': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Leag/wikEd-fr.js', 'de': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Matthias_M./wikEd_international_de.js', 'hu': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Csörföly D/wikEd-hu.js', 'it': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Jalo/wikEd_international_it.js', 'ja': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Hatukanezumi/wikEd_international_ja.js', 'ms': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Aviator/wikEd_international_ms.js', 'no': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Dvyjones/wikEd_international_no.js', 'nn': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Frokor/wikEd_international_nn.js', 'pl': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Konradek/wikEd_international_pl.js', 'pt': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Mosca/wikEd_international_pt.js', 'ro': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Roamataa/wikEd_international_ro.js', 'scn': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Meloscn/wikEd_international_scn.js', 'sk': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Helix84/wikEd_international_sk.js', 'sl': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Eleassar/wikEd_international_sl.js', 'es': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Axelei/wikEd_international_es.js', 'sv': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Where_next_Columbus?/wikEd_international_sv.js', 'vi': 'http://en.wikipedia.org/w/index.php?action=raw&ctype=text/javascript&title=User:Vinhtantran/wikEd_international_vi.js' }); } // general MediaWiki page detection // skin name: [dom element to add logo to (empty: top left, first body element), logo to personal portlet, rearrange page elements, [element id list] ], if (typeof(wikEdMediaWikiSkinIds) == 'undefined') { window.wikEdMediaWikiSkinIds = { // monobook, also detects simple and myskin monobook: [ 'p-personal', true, true, ['column-content', 'content', 'bodyContent', 'siteSub', 'contentSub', 'column-one', 'p-cactions', 'p-personal'] ], // citizendium.org pinkwich5: [ 'p-personal', true, true, ['column-content', 'content', 'bodycontent', 'sitesub', 'contentSub', 'column-one', 'p-cactions', 'p-personal'] ], // other MediaWiki skins standard: [ 'quickbar', false, true, ['content', 'topbar', 'article', 'footer', 'pagestats', 'quickbar'] ], nostalgia: [ 'topbar', false, true, ['content', 'topbar', 'specialpages', 'article', 'footer'] ], cologneblue: [ 'quickbar', false, true, ['content', 'topbar', 'sitetitle', 'sitesub', 'article', 'footer', 'quickbar'] ], modern: [ 'p-personal', true, true, ['mw_header', 'mw_main', 'mw_contentwrapper'] ], // wikia.com monaco: [ 'wikia_header', true, true, ['headerMenuHub', 'background_strip', 'siteSub', 'contentSub', 'monaco_footer'] ], quartz: [ 'welcome', false, true, ['articleWrapper', 'bodyContent', 'siteSub', 'contentSub', 'sidebar'] ], searchwikia: [ 'header-li-buttons', false, true, ['header', 'header-container', 'header-go-button', 'article-container', 'article', 'article-text'] ], // custom skins used on wiki.mozilla.org and developer.mozilla.org cavendish: [ 'nav', false, true, ['internal', 'container', 'header', 'contentTop', 'mBody', 'side', 'nav', 'mainContent', 'siteSub', 'contentSub'] ], devmo: [ 'personal', false, true, ['developer-mozilla-org', 'container', 'header', 'navigation', 'bar', 'personal', 'page', 'sidebar', 'sidebarslideup', 'contentTop', 'siteSub', 'contentSub'] ], // custom skins gumax: [ 'gumax-p-navigation', false, true, ['gumax-header', 'gumax-content-body'] ], // custom MediaWiki identifier mediawiki: [ '', false, false, ['mediawiki'] ] }; } if (typeof(wikEdSkinLogo) == 'undefined') { window.wikEdSkinLogo = ''; } if (typeof(wikEdRearrange) == 'undefined') { window.wikEdRearrange = false; } if (typeof(wikEdLogoToList) == 'undefined') { window.wikEdLogoToList = false; } if (typeof(wikEdSkin) == 'undefined') { window.wikEdSkin = ''; } // non-configurable variables window.wikEdGreasemonkeyToHead = false; window.wikEdTranslationLoaded = false; // // WikEdInitObject: initialize object, keep pre-defined values // window.WikEdInitObject = function(array, preset) { for (var key in preset) { if (typeof(key) != 'string') { continue; } if (array[key] == null) { array[key] = preset[key]; } } return; } // // WikEdInitImage: initialize images, keep pre-defined values // window.WikEdInitImage = function(array, preset) { for (var key in preset) { if (typeof(key) != 'string') { continue; } if (array[key] == null) { // remove MediaWiki path prefixes and add local path if (wikEdUseLocalImages == true) { array[key] = wikEdImagePathLocal + preset[key].replace(/^[0-9a-f]+\/[0-9a-f]+\//, ''); } // add path else { array[key] = wikEdImagePath + preset[key]; } } } return; } // // WikEdStartup: wikEd startup code, called during page load // window.WikEdStartup = function() { // check if this has already been run if (wikEdStartup == true) { return; } wikEdStartup = true; // redirect WED shortcut to WikEdDebug(objectName, object, popup) window.WED = WikEdDebug; // check browser and version var agent = navigator.userAgent.match(/(Firefox|Netscape|SeaMonkey|IceWeasel|IceCat|Minefield|BonEcho|GranParadiso|Shiretoko)\W+(\d+\.\d+)/i); if (agent != null) { wikEdBrowserName = 'Mozilla'; wikEdBrowserFlavor = agent[1]; wikEdBrowserVersion = parseFloat(agent[2]); wikEdMozilla = true; } // check for MSIE else { agent = navigator.userAgent.match(/(MSIE)\W+(\d+\.\d+)/i); if (agent != null) { wikEdBrowserName = 'MSIE'; wikEdBrowserVersion = parseFloat(agent[2]); wikEdMSIE = true; } // check for Opera else { agent = navigator.userAgent.match(/(Opera)\W+(\d+\.\d+)/i); if (agent != null) { wikEdBrowserName = 'Opera'; wikEdBrowserVersion = parseFloat(agent[2]); wikEdOpera = true; } // check for Google Chrome (AppleWebKit/525.13 (KHTML, like Gecko) Chrome/0.2.149.30 Safari/525.13) else { agent = navigator.userAgent.match(/(Chrome)\W+(\d+\.\d+)/i); if (agent != null) { wikEdBrowserName = 'Chrome'; wikEdBrowserVersion = parseFloat(agent[2]); wikEdChrome = true; } // check for Safari else { agent = navigator.userAgent.match(/(Safari)\W+(\d+\.\d+)/i); if (agent != null) { wikEdBrowserName = 'Safari'; wikEdBrowserVersion = parseFloat(agent[2]); wikEdSafari = true; } } } } } // detect if run as a body script added by Greasemonkey installer if (document.getElementById('WikEdHeadScript') != null) { wikEdGreasemonkeyToHead = true; } // load an external wikEd translation and language settings wikEdLanguage = WikEdGetGlobal('wgContentLanguage'); if (wikEdLanguage == undefined) { wikEdLanguage = wikEdLanguageDefault; } WikedInitTranslations(); var scriptUrl = wikEdTranslations[wikEdLanguage]; if ( (scriptUrl != undefined) && (scriptUrl != '') ) { if ( (wikEdLoadTranslation == true) && (wikEdTranslationLoaded == false) ) { WikEdAppendScript(scriptUrl) } wikEdTranslationLoaded = true; } // schedule the setup routine WikEdAddEventListener(window, 'load', WikEdSetup, false); return; } // // WikEdSetup: basic setup routine, scheduled after page load // window.WikEdSetup = function() { WikEdRemoveEventListener(window, 'load', WikEdSetup, false); // check if this has already been run, either as a wiki or a Greasemonkey user script if (document.getElementById('wikEdSetupFlag') != null) { return; } // detect already loaded external scripts if (wikEdExternalScripts == null) { wikEdExternalScripts = []; var pageScripts = document.getElementsByTagName('script'); for (var i = 0; i < pageScripts.length; i ++) { var scriptSrc = pageScripts[i].src; var nameMatch = scriptSrc.match(/\btitle=([^&]*)/); if (nameMatch == null) { nameMatch = scriptSrc.match(/\/([^\/]*?)($|\?)/); } if (nameMatch != null) { var scriptName = nameMatch[1]; if (scriptName != '') { // ignore other diff.js scripts if ( (scriptName == 'diff.js') && (scriptSrc != wikEdDiffScriptSrc) ) { continue; } wikEdExternalScripts[scriptName] = true; } } } } // exit if executed as Greasemonkey script if wiki user script is available if (typeof(GM_getValue) == 'function') { if (wikEdExternalScripts['wikEd.js'] == true) { wikEdGreasemonkey = false; return; } else { wikEdGreasemonkey = true; } } // redirect Greasemonkey debugging function to WikEdDebug if run as a wiki user script else { window.GM_log = window.WikEdDebug; } // detect wikEd running as a gadget if (wikEdGadget == null) { if (wikEdExternalScripts['MediaWiki:Gadget-wikEd.js'] == true) { wikEdGadget = true; } } // set already run flag var flag = document.createElement('span'); flag.id = 'wikEdSetupFlag'; flag.style.display = 'none'; flag.style.visibility = 'hidden'; document.body.appendChild(flag); // detect MediaWiki page and its skin for (var skin in wikEdMediaWikiSkinIds) { var logoElement = wikEdMediaWikiSkinIds[skin][0]; var logoToList = wikEdMediaWikiSkinIds[skin][1]; var rearrange = wikEdMediaWikiSkinIds[skin][2]; var skinIds = wikEdMediaWikiSkinIds[skin][3]; if (typeof(logoElement) != 'string') { continue; } for (var i = 0; i < skinIds.length; i ++) { if (document.getElementById(skinIds[i]) == null) { break; } } if (i == skinIds.length) { wikEdSkinLogo = logoElement; wikEdSkin = skin; wikEdRearrange = rearrange; wikEdLogoToList = logoToList; break; } } // not a MediaWiki page if (wikEdSkin == '') { return; } // initialize user configurable variables WikEdInitGlobalConfigs(); // do not rearrange page elements if (wikEdNoRearrange != false) { wikEdRearrange = false; } // initialize non-configurable variables WikEdInitGlobals(); // parse global MediaWiki globals into hash var variable = ['wgServer', 'wgTitle', 'wgCanonicalNamespace', 'wgArticlePath', 'wgScript', 'wgScriptPath', 'wgUserName', 'wgCurRevisionId', 'wgScript', 'wgContentLanguage']; for (var i = 0; i < variable.length; i ++) { wikEdWikiGlobals[ variable[i] ] = WikEdGetGlobal(variable[i]); } // check for updates WikEdAutoUpdate(); // initialize images (needed here for logo) WikedInitImages(); // add image path to image filename if (wikEdLogo == null) { // insert logo into personal toolbar wikEdLogo = document.createElement('img'); wikEdLogo.id = 'wikEdLogoImg'; // monobook, simple, myskin if (wikEdLogoToList == true) { wikEdLogoList = document.createElement('li'); wikEdLogoList.id = 'wikEdLogoList'; wikEdLogoList.appendChild(wikEdLogo); var personalTools = document.getElementById(wikEdSkinLogo); if (personalTools != null) { personalTools.getElementsByTagName('ul')[0].appendChild(wikEdLogoList); wikEdLogo.className = 'wikEdLogo'; } } // other skins if (wikEdLogo.className == '') { if (wikEdSkinLogo != '') { document.getElementById(wikEdSkinLogo).appendChild(wikEdLogo); wikEdLogo.className = 'wikEdLogo'; } // fallback for undetected skin else { document.body.insertBefore(wikEdLogo, document.body.firstChild); wikEdLogo.className = 'wikEdLogoFallBack'; } } // add event listener to logo WikEdAddEventListener(wikEdLogo, 'click', WikEdMainSwitch, true); } // page loaded flag for dynamically loaded scripts wikEdPageLoaded = true; // load the external diff script if ( (wikEdLoadDiffScript == true) && (wikEdExternalScripts['diff.js'] == null) ) { if (typeof(WDiffString) == 'undefined') { WikEdAppendScript(wikEdDiffScriptSrc); } wikEdExternalScripts['diff.js'] = true; } // load the external wikEdDiff script if ( (wikEdLoadDiff == true) && (wikEdExternalScripts['wikEdDiff.js'] == null) ) { if (typeof(WikEdDiff) == 'undefined') { WikEdAppendScript(wikEdDiffSrc); } wikEdExternalScripts['wikEdDiff.js'] = true; } // check if disabled wikEdDisabled = WikEdGetSavedSetting('wikEdDisabled', wikEdDisabledPreset); if (wikEdDisabled == true) { wikEdUseWikEd = false; WikEdSetLogo(); return; } // continue setup WikEdTurnOn(wikEdScrollToEdit); return; } // // WikEdTurnOn: continue setup, can be called repeatedly // window.WikEdTurnOn = function(scrollToEdit) { // check if setup was already run if (wikEdTurnedOn == true) { return; } // set error logo WikEdSetLogo('error'); // browser test if (wikEdSkipBrowserTest == false) { // no id no wikEd if (navigator.appName == null) { wikEdBrowserNotSupported = true; } // check the browser generation var generation = navigator.appVersion.match(/\d+(\.\d+)/); if ( (generation == null) || (generation[0] < 5.0) ) { wikEdBrowserNotSupported = true; } // check for not supported browsers if ( (wikEdBrowserName == 'MSIE') || (wikEdBrowserName == 'Opera') ) { wikEdBrowserNotSupported = true; } } // check browser versions switch (wikEdBrowserName) { // check Mozilla version case 'Mozilla': if ( (wikEdBrowserFlavor == 'Firefox') && (wikEdBrowserVersion < 1.5) || (wikEdBrowserFlavor == 'Netscape') && (wikEdBrowserVersion < 8.0) || (wikEdBrowserFlavor == 'SeaMonkey') && (wikEdBrowserVersion < 1.0) ) { wikEdBrowserNotSupported = true; } break; // check MSIE version case 'MSIE': wikEdBrowserNotSupported = true; if (wikEdBrowserVersion < 8) { wikEdBrowserNotSupported = true; } break; // check Opera version case 'Opera': if (wikEdBrowserVersion < 9) { wikEdBrowserNotSupported = true; } break; // check Google Chrome version case 'Chrome': if (wikEdBrowserVersion < 0.2) { wikEdBrowserNotSupported = true; } break; // check Safari version case 'Safari': if (wikEdBrowserVersion < 500) { wikEdBrowserNotSupported = true; } break; } // browser or version not supported, set error message and exit if ( (wikEdBrowserNotSupported == true) && (wikEdSkipBrowserTest == false) ) { WikEdSetLogo('browser'); return; } // get the textarea and other form elements // custom form elements if (wikEdCustomEditFormId != '') { wikEdEditForm = document.getElementById(wikEdCustomEditFormId); } if (wikEdCustomTextAreaId != '') { wikEdTextarea = document.getElementById(wikEdCustomTextAreaId); } if (wikEdCustomSaveButtonId != '') { wikEdSaveButton = document.getElementById(wikEdCustomwikEdSaveButtonId); } // standard form elements if (wikEdTextarea == null) { wikEdTextarea = document.getElementsByName('wpTextbox1')[0]; } if (wikEdEditForm == null) { wikEdEditForm = document.getElementById('editform'); } if (wikEdSaveButton == null) { wikEdSaveButton = document.getElementById('wpSave'); } // MediaWiki Semantic Forms extension support if (wikEdTextarea == null) { wikEdEditForm = document.getElementsByName('createbox')[0]; wikEdTextarea = document.getElementsByName('free_text')[0]; } // check if it is an edit page if ( (wikEdTextarea == null) || (wikEdEditForm == null) || (wikEdSaveButton == null) ) { // check if this is an upload page wikEdTextarea = document.getElementsByName('wpUploadDescription')[0]; wikEdEditForm = document.getElementById('mw-upload-form'); wikEdSaveButton = document.getElementsByName('wpUpload')[0]; if ( (wikEdTextarea == null) || (wikEdEditForm == null) || (wikEdSaveButton == null) ) { // set error indicator WikEdSetLogo(); return; } wikEdUpload = true; wikEdRearrange = false; } // initialize frame css, main css, buttons, and button bars WikedInitFrameCSS(); WikedInitMainCSS(); WikedInitButton(); WikedInitButtonKey(); WikedInitButtonBar(); // define Unicode characters for fixing function WikEdInitUnicode(); // detect if we add a new section (+ tab) if (/(\?|&)section=new\b/.test(window.location.search) == true) { wikEdAddNewSection = true; } // load the external InstaView script var head = document.getElementsByTagName('head')[0]; if ( (wikEdGreasemonkey == false) && (wikEdLoadInstaView == true) && (wikEdExternalScripts['instaview.js'] == null) ) { if (typeof(InstaView) == 'undefined') { WikEdAppendScript(wikEdInstaViewSrc); } wikEdExternalScripts['instaview.js'] = true; } else if ( (wikEdGreasemonkey == false) || (wikEdLoadInstaView != true) ) { wikEdUseLocalPreview = false; } // get initial textarea height wikEdTextareaHeight = wikEdTextarea.offsetHeight; // setup the undo buffers and save the original text for local changes view wikEdOrigVersion = wikEdTextarea.value; // add stylesheet definitions var mainStyle = new WikEdStyleSheet(); var rules = ''; for (var ruleName in wikEdMainCSS) { var ruleStyle = wikEdMainCSS[ruleName]; if (typeof(ruleStyle) != 'string') { continue; } ruleStyle = ruleStyle.replace(/\{wikEdGrip\}/g, wikEdImage['grip']); rules += ruleName + ' {' + ruleStyle + '}\n'; } mainStyle.addRules(rules); // get button settings from saved settings wikEdUsing = WikEdGetSavedSetting('wikEdSummaryUsing', wikEdUsingPreset); wikEdUseWikEd = ! WikEdGetSavedSetting('wikEdUseClassic', ! wikEdUseWikEdPreset); wikEdHighlightSyntax = ! WikEdGetSavedSetting('wikEdSyntaxOff', ! wikEdHighlightSyntaxPreset); wikEdFullScreenMode = WikEdGetSavedSetting('wikEdFullscreen', wikEdFullScreenModePreset); wikEdCloseToolbar = WikEdGetSavedSetting('wikEdCloseToolbar', wikEdCloseToolbarPreset); wikEdRefHide = WikEdGetSavedSetting('wikEdRefHide', wikEdRefHidePreset); wikEdDiff = WikEdGetSavedSetting('wikEdDiff', wikEdDiffPreset); wikEdTableMode = false; // {{TABLE}} // no fullscreen for preview and upload pages if ( (wikEdUpload == true) || (window.location.search.match(/(\?|&)action=submit\b/) != null) ) { wikEdFullScreenMode = false; } // disable wikEd for Lupin's autoedit scripts if (window.location.search.match(/(\?|&)autoedit=/) != null) { wikEdUseWikEd = false; } // disable wikEd for js pages if (/\.js$/.test(wikEdWikiGlobals['wgTitle']) == true) { if ( (wikEdWikiGlobals['wgCanonicalNamespace'] != 'User_talk') && (wikEdWikiGlobals['wgCanonicalNamespace'] != 'Talk') ) { if (wikEdOrigVersion.length > 20000) { wikEdUseWikEd = false; } else { wikEdHighlightSyntax = false; } } } // preset frame related styles to avoid browser crashes var styleFrameBody; var styleFrameWrapperPosition; var styleFrameWrapperVisibility; var styleDebugWrapperPosition; var styleDebugWrapperVisibility; var styleTextareaWrapperPosition; var styleTextareaWrapperVisibility; if (wikEdUseWikEd == true) { styleFrameBody = 'style="display: block;" '; styleFrameWrapperPosition = 'static'; styleFrameWrapperVisibility = 'visible'; styleTextareaWrapperPosition = 'absolute'; styleTextareaWrapperVisibility = 'hidden'; } else { styleFrameBody = 'style="display: none;" '; styleFrameWrapperPosition = 'absolute'; styleFrameWrapperVisibility = 'hidden'; styleTextareaWrapperPosition = 'static'; styleTextareaWrapperVisibility = 'visible'; } var inputWrapperClass; if (wikEdFullScreenMode == true) { inputWrapperClass = 'wikEdInputWrapperFull'; } else { inputWrapperClass = 'wikEdInputWrapper'; } // create wikEd element wrappers // create input wrapper, this contains the whole fullscreen content wikEdInputWrapper = document.createElement('div'); wikEdInputWrapper.id = 'wikEdInputWrapper'; wikEdInputWrapper.className = inputWrapperClass; wikEdTextarea.parentNode.insertBefore(wikEdInputWrapper, wikEdTextarea); // create toolbar wrapper wikEdToolbarWrapper = document.createElement('div'); wikEdToolbarWrapper.id = 'wikEdToolbarWrapper'; wikEdToolbarWrapper.className = 'wikEdToolbarWrapper'; wikEdInputWrapper.appendChild(wikEdToolbarWrapper); // create captcha wrapper if (wikEdRearrange == true) { wikEdCaptchaWrapper = document.createElement('div'); wikEdCaptchaWrapper.id = 'wikEdCaptchaWrapper'; wikEdCaptchaWrapper.className = 'wikEdCaptchaWrapper'; wikEdInputWrapper.appendChild(wikEdCaptchaWrapper); } // create debug textarea wrapper wikEdDebugWrapper = document.createElement('div'); wikEdDebugWrapper.id = 'wikEdDebugWrapper'; wikEdDebugWrapper.className = 'wikEdDebugWrapper'; wikEdDebugWrapper.style.position = 'static'; wikEdDebugWrapper.style.visibility = 'hidden'; wikEdInputWrapper.appendChild(wikEdDebugWrapper); // create textarea wrapper wikEdTextareaWrapper = document.createElement('div'); wikEdTextareaWrapper.id = 'wikEdTextareaWrapper'; wikEdTextareaWrapper.className = 'wikEdTextareaWrapper'; wikEdTextareaWrapper.style.position = styleTextareaWrapperPosition; wikEdTextareaWrapper.style.visibility = styleTextareaWrapperVisibility; wikEdInputWrapper.appendChild(wikEdTextareaWrapper); // create frame wrapper wikEdFrameWrapper = document.createElement('div'); wikEdFrameWrapper.id = 'wikEdFrameWrapper'; wikEdFrameWrapper.className = 'wikEdFrameWrapper'; wikEdFrameWrapper.style.position = styleFrameWrapperPosition; wikEdFrameWrapper.style.visibility = styleFrameWrapperVisibility; wikEdInputWrapper.appendChild(wikEdFrameWrapper); // create console wrapper for buttons, summary, and submit if (wikEdRearrange == true) { wikEdConsoleWrapper = document.createElement('div'); wikEdConsoleWrapper.id = 'wikEdConsoleWrapper'; wikEdConsoleWrapper.className = 'wikEdConsoleWrapper'; wikEdInputWrapper.appendChild(wikEdConsoleWrapper); } // create buttons wrapper for wikEd buttons wikEdButtonsWrapper = document.createElement('div'); wikEdButtonsWrapper.id = 'wikEdButtonsWrapper'; wikEdButtonsWrapper.className = 'wikEdButtonsWrapper'; wikEdInputWrapper.insertBefore(wikEdButtonsWrapper, wikEdTextareaWrapper); // create summary wrapper for summary, minor edit, and watch this page if (wikEdRearrange == true) { wikEdSummaryWrapper = document.createElement('div'); wikEdSummaryWrapper.id = 'wikEdSummaryWrapper'; // add summary above the edit field if we add a new section (+ tab) if (wikEdAddNewSection == true) { wikEdSummaryWrapper.className = 'wikEdSummaryWrapperTop'; wikEdInputWrapper.insertBefore(wikEdSummaryWrapper, wikEdFrameWrapper); } else { wikEdSummaryWrapper.className = 'wikEdSummaryWrapper'; wikEdConsoleWrapper.appendChild(wikEdSummaryWrapper); } // create summary input wrapper wikEdSummaryInputWrapper = document.createElement('div'); wikEdSummaryInputWrapper.id = 'wikEdSummaryInputWrapper'; wikEdSummaryInputWrapper.className = 'wikEdSummaryInputWrapper'; wikEdSummaryWrapper.appendChild(wikEdSummaryInputWrapper); // create minor edit and watch page wrapper wikEdSummaryOptions = document.createElement('div'); wikEdSummaryOptions.id = 'wikEdSummaryOptions'; wikEdSummaryOptions.className = 'wikEdSummaryOptions'; wikEdSummaryWrapper.appendChild(wikEdSummaryOptions); // create submit wrapper for submit elements wikEdSubmitWrapper = document.createElement('div'); wikEdSubmitWrapper.id = 'wikEdSubmitWrapper'; wikEdSubmitWrapper.className = 'wikEdSubmitWrapper'; wikEdConsoleWrapper.appendChild(wikEdSubmitWrapper); // create submit buttons wrapper for submit buttons and help links wikEdSubmitButtonsWrapper = document.createElement('div'); wikEdSubmitButtonsWrapper.id = 'wikEdSubmitButtonsWrapper'; wikEdSubmitButtonsWrapper.className = 'wikEdSubmitButtonsWrapper'; wikEdSubmitWrapper.appendChild(wikEdSubmitButtonsWrapper); } // create preview wrapper for preview and diff box wikEdLocalPrevWrapper = document.createElement('div'); wikEdLocalPrevWrapper.id = 'wikEdLocalPrevWrapper'; wikEdLocalPrevWrapper.className = 'wikEdLocalPrevWrapper'; wikEdLocalPrevWrapper.style.display = 'none'; if (wikEdRearrange == true) { wikEdInputWrapper.appendChild(wikEdLocalPrevWrapper); } else { wikEdSaveButton.parentNode.appendChild(wikEdLocalPrevWrapper); } // create insert wrapper for insert special chars links if (wikEdRearrange == true) { wikEdInsertWrapper = document.createElement('div'); wikEdInsertWrapper.id = 'wikEdInsertWrapper'; wikEdInsertWrapper.className = 'wikEdInsertWrapper'; wikEdInputWrapper.appendChild(wikEdInsertWrapper); } // append input wrapper to document if (wikEdRearrange == true) { wikEdEditForm.insertBefore(wikEdInputWrapper, wikEdEditForm.firstChild); } // fill the wrappers // wikEdDiff enhanced ajax diff if (typeof(wikEdDiffTable) == 'object') { if ( (wikEdDiffTable != null) && (wikEdDiff == true) ) { if (typeof(WikEdDiff) == 'function') { WikEdDiff(); } } } // add toolbar to toolbar wrapper var wpToolbar = document.getElementById('toolbar'); if (wikEdCloseToolbar == true) { wikEdToolbarWrapper.style.display = 'none'; } else { wikEdToolbarWrapper.style.display = 'block'; } if (wpToolbar != null) { wikEdToolbarWrapper.appendChild(wpToolbar); } // add elements between form and textarea to captcha wrapper if (wikEdUpload != true) { var node = wikEdInputWrapper.nextSibling; while (node != null) { if (node == wikEdTextarea) { break; } var nextNode = node.nextSibling; wikEdCaptchaWrapper.appendChild(node); node = nextNode; } } // call wikibits:mwSetupToolbar() now because it would terminate with an error after setting textarea to display: none if (wpToolbar != null) { if (wpToolbar.getElementsByTagName('IMG').length == 0) { if (typeof(mwSetupToolbar) == 'function') { mwSetupToolbar(); WikEdRemoveEventListener(window, 'load', mwSetupToolbar, false); } } } var wpSummary = document.getElementsByName('wpSummary'); if (wpSummary.length > 0) { wikEdEditOptions = wpSummary[0].parentNode; wikEdEditOptions.className = 'wikEdEditOptions'; } // add summary elements to summary input wrapper if (wikEdRearrange == true) { wikEdSummaryLabel = document.getElementById('wpSummaryLabel'); if (wikEdSummaryLabel != null) { wikEdSummaryInputWrapper.appendChild(wikEdSummaryLabel); } wikEdSummaryText = document.getElementsByName('wpSummary')[0]; wikEdSummaryInputWrapper.appendChild(wikEdSummaryText); } // move editpage-copywarn out of summary wrapper // needs to be done before appending editOptions to summary wrapper otherwise a linebreak stays (Mozilla bug) if (wikEdRearrange == true) { var copywarn = document.getElementById('editpage-copywarn'); if (copywarn != null) { wikEdInputWrapper.parentNode.insertBefore(copywarn, wikEdInputWrapper.nextSibling); } } // add submit buttons to submit wrapper if (wikEdRearrange == true) { var wpEditButtons = wikEdSaveButton.parentNode; wikEdSubmitWrapper.insertBefore(wpEditButtons, wikEdSubmitButtonsWrapper); } // move edit options after submit buttons; crashes Mozilla when appended after filling the iframe wikEdDiffPreviewButton = document.getElementById('wpDiff'); wikEdPreviewButton = document.getElementById('wpPreview'); if (wikEdRearrange == true) { if (wikEdDiffPreviewButton != null) { wikEdDiffPreviewButton.parentNode.insertBefore(wikEdEditOptions, wikEdDiffPreviewButton.nextSibling); // remove linebreak before minor edit checkbox var node = wikEdEditOptions.firstChild; while (node != null) { if (node.tagName != null) { if (node.tagName == 'BR') { node.parentNode.removeChild(node); break; } } node = node.nextSibling; } // correct tab order between check boxes and submits if (wikEdSubmitTabOrder == true) { var wpMinoredit = document.getElementById('wpMinoredit'); var wpWatchthis = document.getElementById('wpWatchthis'); if ( (wpMinoredit != null) && (wpWatchthis != null) ) { var tabIndex = []; tabIndex.push(wpMinoredit.tabIndex, wpWatchthis.tabIndex, wikEdSaveButton.tabIndex, wikEdPreviewButton.tabIndex, wikEdDiffPreviewButton.tabIndex); wikEdSaveButton.tabIndex = tabIndex.shift(); wikEdPreviewButton.tabIndex = tabIndex.shift(); wikEdDiffPreviewButton.tabIndex = tabIndex.shift(); wpMinoredit.tabIndex = tabIndex.shift(); wpWatchthis.tabIndex = tabIndex.shift(); } } } } // create debug textarea and add to debug wrapper wikEdDebug = document.createElement('textarea'); wikEdDebug.rows = 20; wikEdDebug.style.display = 'none'; wikEdDebugWrapper.appendChild(wikEdDebug); // add textarea to textarea wrapper wikEdTextareaWrapper.appendChild(wikEdTextarea); // add edit-frame to frame wrapper // any DOM changes to a starting iframe in designmode may crash mozilla, including DOM move, display: none; and position: absolute; // create the iframe var html = ''; html += '<div id="wikEdFrameOuter" class="wikEdFrameOuter">'; html += '<div id="wikEdFrameInner" class="wikEdFrameInner">'; html += '<iframe id="wikEdFrame" class="wikEdFrame" name="wikEdFrame" style="height: ' + wikEdTextareaHeight + 'px;"></iframe>'; html += '</div>'; html += '</div>'; wikEdFrameWrapper.innerHTML = html; wikEdInputWrapper.insertBefore(wikEdTextareaWrapper, wikEdFrameWrapper); // fill the frame with content html = ''; html += '<html id="wikEdFrameHtml"><head></head>'; // Mozilla crashes when designmode is turned on before the frame has loaded completely if (wikEdMozilla == true) { html += '<body id="wikEdFrameBody" class="wikEdFrameBody"' + styleFrameBody + 'onload="window.document.designMode = \'on\'; window.document.execCommand(\'styleWithCSS\', false, false);">'; } else { html += '<body id="wikEdFrameBody" class="wikEdFrameBody"' + styleFrameBody + '>'; } html += '</body></html>'; wikEdFrame = document.getElementById('wikEdFrame'); wikEdFrameWindow = wikEdFrame.contentWindow; wikEdFrameDocument = wikEdFrameWindow.document; // turn on designmode for non-Mozilla before adding content if (wikEdMozilla == false) { wikEdFrameDocument.designMode = 'on'; } // fill iframe with content wikEdFrameDocument.open(); wikEdFrameDocument.write(html); wikEdFrameDocument.close(); wikEdFrameBody = wikEdFrameDocument.body; // generate button bars and add them to the buttons wrapper // form wrapper has been added against summary input submit defaulting to this button wikEdButtonBarFormat = MakeButtonBar(wikEdButtonBar['format']); wikEdButtonsWrapper.appendChild(wikEdButtonBarFormat); wikEdButtonBarControl = MakeButtonBar(wikEdButtonBar['control']); wikEdButtonsWrapper.appendChild(wikEdButtonBarControl); if (wikEdButtonBar['custom1'][6].length > 0) { wikEdButtonBarCustom1 = MakeButtonBar(wikEdButtonBar['custom1']); wikEdButtonsWrapper.appendChild(wikEdButtonBarCustom1); } wikEdButtonBarFind = MakeButtonBar(wikEdButtonBar['find']); wikEdButtonsWrapper.appendChild(wikEdButtonBarFind); wikEdButtonBarFix = MakeButtonBar(wikEdButtonBar['fix']); wikEdButtonsWrapper.appendChild(wikEdButtonBarFix); if (wikEdButtonBar['custom2'][6].length > 0) { wikEdButtonBarCustom2 = MakeButtonBar(wikEdButtonBar['custom2']); wikEdButtonsWrapper.appendChild(wikEdButtonBarCustom2); } var br = document.createElement('br'); br.style.clear = 'both'; wikEdButtonsWrapper.appendChild(br); wikEdCaseSensitive = document.getElementById('wikEdCaseSensitive'); wikEdRegExp = document.getElementById('wikEdRegExp'); wikEdFindAhead = document.getElementById('wikEdFindAhead'); wikEdFindText = document.getElementById('wikEdFindText'); wikEdReplaceText = document.getElementById('wikEdReplaceText'); // add preview box top bar to submit wrapper wikEdButtonBarPreview = MakeButtonBar(wikEdButtonBar['preview']); if (wikEdRearrange == true) { wikEdSubmitWrapper.insertBefore(wikEdButtonBarPreview, wikEdSubmitWrapper.firstChild); } // add preview box and its bottom bar to preview wrapper if (wikEdLocalPrevWrapper != null) { var div = document.createElement('div'); div.id = 'wikEdPreviewBoxOuter'; div.className = 'wikEdPreviewBoxOuter'; wikEdLocalPrevWrapper.appendChild(div); wikEdPreviewBox = document.createElement('div'); wikEdPreviewBox.id = 'wikEdPreviewBox'; wikEdPreviewBox.className = 'wikEdPreviewBox'; div.appendChild(wikEdPreviewBox); wikEdButtonBarPreview2 = MakeButtonBar(wikEdButtonBar['preview2']); wikEdLocalPrevWrapper.appendChild(wikEdButtonBarPreview2); } // add jump box to standard preview var wikiPreview = document.getElementById('wikiPreview'); if (wikiPreview != null) { if (wikiPreview.firstChild != null) { wikEdButtonBarJump = MakeButtonBar(wikEdButtonBar['jump']); wikiPreview.insertBefore(wikEdButtonBarJump, wikiPreview.firstChild); } } // add insert special chars to insert wrapper if (wikEdInsertWrapper != null) { var wpSpecialchars = document.getElementById('editpage-specialchars'); if (wpSpecialchars != null) { wikEdInsertWrapper.appendChild(wpSpecialchars); } } // wrappers filled // add local preview button next to submit button wikEdLocalPreview = document.createElement('button'); wikEdLocalPreview.id = 'wikEdLocalPreview'; wikEdLocalPreview.title = wikEdText['wikEdLocalPreview title']; wikEdLocalPreview.className = 'wikEdLocalPreview'; var localPreviewImg = document.createElement('img'); localPreviewImg.id = 'wikEdLocalPreviewImg'; localPreviewImg.src = wikEdImage['preview']; localPreviewImg.alt = wikEdText['wikEdLocalPreviewImg alt']; localPreviewImg.title = wikEdText['wikEdLocalPreviewImg title']; wikEdLocalPreview.appendChild(localPreviewImg); if (wikEdPreviewButton != null) { wikEdPreviewButton.parentNode.insertBefore(wikEdLocalPreview, wikEdPreviewButton.nextSibling); } else { wikEdSaveButton.parentNode.insertBefore(wikEdLocalPreview, wikEdSaveButton.nextSibling); } // add local diff button next to submit button if (wikEdDiffPreviewButton != null) { wikEdLocalDiff = document.createElement('button'); wikEdLocalDiff.id = 'wikEdLocalDiff'; wikEdLocalDiff.title = wikEdText['wikEdLocalDiff title']; wikEdLocalDiff.className = 'wikEdLocalDiff'; var localDiffImg = document.createElement('img'); localDiffImg.id = 'wikEdLocalDiffImg'; localDiffImg.src = wikEdImage['diff']; localDiffImg.alt = wikEdText['wikEdLocalDiffImg alt']; localDiffImg.title = wikEdText['wikEdLocalDiffImg title']; wikEdLocalDiff.appendChild(localDiffImg); wikEdDiffPreviewButton.parentNode.insertBefore(wikEdLocalDiff, wikEdDiffPreviewButton.nextSibling); } // initialize image buttons WikEdButton(document.getElementById('wikEdDiff'), 'wikEdDiff', null, wikEdDiff); WikEdButton(document.getElementById('wikEdRefHide'), 'wikEdRefHide', null, wikEdRefHide); WikEdButton(document.getElementById('wikEdHighlightSyntax'), 'wikEdHighlightSyntax', null, wikEdHighlightSyntax); WikEdButton(document.getElementById('wikEdUseWikEd'), 'wikEdUseWikEd', null, wikEdUseWikEd); WikEdButton(document.getElementById('wikEdCloseToolbar'), 'wikEdCloseToolbar', null, wikEdCloseToolbar); WikEdButton(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, wikEdFullScreenMode); WikEdButton(document.getElementById('wikEdUsing'), 'wikEdUsing', null, wikEdUsing); WikEdButton(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, false); WikEdButton(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, false); WikEdButton(document.getElementById('wikEdFindAhead'), 'wikEdFindAhead', null, wikEdFindAheadSelected); WikEdButton(document.getElementById('wikEdClose'), 'wikEdClose', null, false, 'wikEdButton'); WikEdButton(document.getElementById('wikEdClose2'), 'wikEdClose2', null, false, 'wikEdButton'); WikEdButton(document.getElementById('wikEdTableMode'), 'wikEdTableMode', null, wikEdTableMode); // {{TABLE}} // hide typo fix button until typo fix rules are loaded and parsed document.getElementById('wikEdFixRegExTypo').style.display = 'none'; // add a clear summary button left to the summary input field if (wikEdSummaryText != null) { var clearSummaryForm = document.createElement('form'); clearSummaryForm.id = 'wikEdClearSummaryForm'; clearSummaryForm.className = 'wikEdClearSummaryForm'; wikEdSummaryText.parentNode.insertBefore(clearSummaryForm, wikEdSummaryText); wikEdClearSummary = document.createElement('button'); wikEdClearSummary.id = 'wikEdClearSummary'; wikEdClearSummary.className = 'wikEdClearSummary'; wikEdClearSummary.alt = wikEdText['wikEdClearSummary alt']; wikEdClearSummary.title = wikEdText['wikEdClearSummary title']; wikEdClearSummary.style.height = (wikEdSummaryText.clientHeight + 1) +'px'; clearSummaryForm.appendChild(wikEdClearSummary); wikEdClearSummaryImg = document.createElement('img'); wikEdClearSummaryImg.id = 'wikEdClearSummaryImg'; wikEdClearSummaryImg.src = wikEdImage['clearSummary']; wikEdClearSummaryImg.alt = 'Clear summary'; wikEdClearSummary.appendChild(wikEdClearSummaryImg); // remember button width, might be without image wikEdClearSummaryWidth = wikEdClearSummary.offsetWidth; // make the summary a combo box var summaryComboInput = document.createElement('span'); summaryComboInput.id = 'wikEdSummaryComboInput'; summaryComboInput.className = 'wikEdSummaryComboInput'; summaryComboInput = wikEdSummaryText.parentNode.insertBefore(summaryComboInput, wikEdSummaryText); wikEdSummaryText = wikEdSummaryText.parentNode.removeChild(wikEdSummaryText); wikEdSummaryText.className = 'wikEdSummaryText'; wikEdSummaryTextWidth = wikEdSummaryWrapper.offsetWidth - wikEdSummaryInputWrapper.offsetWidth; if (wikEdSummaryTextWidth < 150) { wikEdSummaryTextWidth = 150; } wikEdSummaryText.style.width = wikEdSummaryTextWidth + 'px'; wikEdSummarySelect = document.createElement('select'); wikEdSummarySelect.id = 'wikEdSummarySelect'; wikEdSummarySelect.className = 'wikEdSummarySelect'; summaryComboInput.appendChild(wikEdSummaryText); summaryComboInput.appendChild(wikEdSummarySelect); } // shorten submit button texts if (wikEdPreviewButton != null) { wikEdPreviewButton.value = wikEdText['shortenedPreview']; } if (wikEdDiffPreviewButton != null) { wikEdDiffPreviewButton.value = wikEdText['shortenedChanges']; } // set up combo input boxes with history wikEdFieldHist ['find'] = []; wikEdSavedName['find'] = 'wikEdFindHistory'; wikEdInputElement['find'] = new Object(wikEdFindText); wikEdSelectElement['find'] = new Object(document.getElementById('wikEdFindSelect')); wikEdSelectElement['find'].title = wikEdText['wikEdFindSelect title']; wikEdFieldHist ['replace'] = []; wikEdSavedName['replace'] = 'wikEdReplaceHistory'; wikEdInputElement['replace'] = new Object(wikEdReplaceText); wikEdSelectElement['replace'] = new Object(document.getElementById('wikEdReplaceSelect')); wikEdSelectElement['replace'].title = wikEdText['wikEdReplaceSelect title']; if (wikEdSummaryInputWrapper != null) { wikEdFieldHist ['summary'] = []; wikEdSavedName['summary'] = 'wikEdSummaryHistory'; wikEdInputElement['summary'] = new Object(wikEdSummaryText); wikEdSelectElement['summary'] = new Object(document.getElementById('wikEdSummarySelect')); wikEdSelectElement['summary'].title = wikEdText['wikEdSummarySelect title']; } // adjust the select field widths to that of the text input fields WikEdResizeComboInput('find'); WikEdResizeComboInput('replace'); WikEdResizeComboInput('summary'); // hide the button bars per saved setting WikEdButtonBarInit(wikEdButtonBarFormat); WikEdButtonBarInit(wikEdButtonBarControl); if (wikEdButtonBarCustom1 != null) { WikEdButtonBarInit(wikEdButtonBarCustom1); } WikEdButtonBarInit(wikEdButtonBarFind); WikEdButtonBarInit(wikEdButtonBarFix); if (wikEdButtonBarCustom2 != null) { WikEdButtonBarInit(wikEdButtonBarCustom2); } // display only the textarea or the iframe, dont change the frame if (wikEdUseWikEd == true) { WikEdSetEditArea(true, true); } else { WikEdSetEditArea(false, true); } // add a link to the wikEd help page if (wikEdRearrange == true) { if ( (wikEdHelpPageLink != '') && (wikEdHelpPageLink != null) ) { var editHelpParent = wikEdDiffPreviewButton; while (editHelpParent != null) { if (editHelpParent.tagName == 'SPAN') { break; } editHelpParent = editHelpParent.nextSibling; } if (editHelpParent != null) { var editHelp = editHelpParent.lastChild; while (editHelp != null) { if (editHelp.tagName == 'A') { break; } editHelp = editHelp.previousSibling; } if (editHelp != null) { wikEdHelpSpan = document.createElement('span'); wikEdHelpSpan.id = 'wikEdHelpSpan'; wikEdHelpSpan.className = 'wikEdHelpSpan'; wikEdHelpSpan.innerHTML = wikEdHelpPageLink; editHelpParent.insertBefore(wikEdHelpSpan, editHelp.nextSibling); wikEdEditHelp = wikEdHelpSpan.parentNode; wikEdEditHelp.id = 'wikEdEditHelp'; wikEdEditHelp.className = 'wikEdEditHelp'; } } } } // add frame stylesheet definition wikEdFrameBody.style.fontSize = parseInt(wikEdTextZoom) + '%'; wikEdDirection = WikEdGetStyle(document.body, 'direction'); wikEdFrameBody.style.direction = wikEdDirection; var frameStyle = new WikEdStyleSheet(wikEdFrameDocument); var rules = ''; for (var ruleName in wikEdFrameCSS) { var ruleStyle = wikEdFrameCSS[ruleName]; if (typeof(ruleStyle) != 'string') { continue; } ruleStyle = ruleStyle.replace(/\{wikEdUnknown\}/g, wikEdImage['unknown']); ruleStyle = ruleStyle.replace(/\{wikEdTab\}/g, wikEdImage['tab']); ruleStyle = ruleStyle.replace(/\{wikEdCtrl\}/g, wikEdImage['ctrl']); ruleStyle = ruleStyle.replace(/\{wikEdBlank\}/g, wikEdImage['blank']); ruleStyle = ruleStyle.replace(/\{wikEdGrip\}/g, wikEdImage['grip']); rules += ruleName + ' {' + ruleStyle + '}\n'; } frameStyle.addRules(rules); // copy the textarea content to the iframe if (wikEdUseWikEd == true) { window.WikEdUpdateFrame(); } // register edit button click events for (var buttonId in wikEdEditButtonHandler) { if (typeof(wikEdEditButtonHandler[buttonId]) != 'string') { continue; } var buttonObj = document.getElementById(buttonId); if (buttonObj != null) { WikEdAddEventListener(buttonObj, 'click', WikEdEditButtonHandler, true); } } // register summary shrinking event after loading the 'Clear summary' image handler WikEdAddEventListener(wikEdClearSummaryImg, 'load', WikEdShrinkSummaryHandler, true); // register summary resize event for window resizing (MS IE bug: fires once always) WikEdAddEventListener(window, 'resize', WikEdResizeSummaryHandler, true); // register frame events WikEdAddEventListener(wikEdFrameDocument, 'keydown', WikEdKeyFrameHandler, true); WikEdAddEventListener(wikEdFrameDocument, 'keyup', WikEdKeyFrameHandler, true); WikEdAddEventListener(wikEdFrameDocument, 'keypress', WikEdKeyFrameHandler, true); WikEdAddEventListener(wikEdFrameDocument, 'mouseup', WikEdKeyFrameHandler, true); WikEdAddEventListener(wikEdFrameDocument, 'keydown', WikEdShiftAltHandler, true); // register document events WikEdAddEventListener(document, 'keydown', WikEdShiftAltHandler, true); // register find ahead events WikEdAddEventListener(wikEdFindText, 'keyup', WikEdFindAhead, true); // register submit button events WikEdAddEventListener(wikEdSaveButton, 'click', WikEdSaveButtonHandler, true); WikEdAddEventListener(wikEdPreviewButton, 'click', WikEdPreviewButtonHandler, true); WikEdAddEventListener(wikEdDiffPreviewButton, 'click', wikEdDiffPreviewButtonHandler, true); WikEdAddEventListener(wikEdLocalPreview, 'click', WikEdLocalPreviewHandler, true); WikEdAddEventListener(wikEdLocalDiff, 'click', WikEdLocalDiffHandler, true); // unload (leaving page) events WikEdAddEventListener(window, 'pagehide', WikEdUnloadHandler, false); // set button bar grip area events WikEdAddEventListener(wikEdButtonBarFormat.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); WikEdAddEventListener(wikEdButtonBarControl.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); if (wikEdButtonBarCustom1 != null) { if (wikEdButtonBarCustom1.firstChild.firstChild != null) { WikEdAddEventListener(wikEdButtonBarCustom1.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); } } WikEdAddEventListener(wikEdButtonBarFind.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); WikEdAddEventListener(wikEdButtonBarFix.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); if (wikEdButtonBarCustom2 != null) { if (wikEdButtonBarCustom2.firstChild.firstChild != null) { WikEdAddEventListener(wikEdButtonBarCustom2.firstChild.firstChild, 'click', WikEdButtonBarGripHandler, false); } } // register combo box events WikEdAddEventListener(wikEdSummarySelect, 'change', function() { WikEdChangeComboInput('summary'); }, false); WikEdAddEventListener(wikEdSummarySelect, 'focus', function() { WikEdSetComboOptions('summary'); }, false); WikEdAddEventListener(wikEdSelectElement['find'],'change', function() { WikEdChangeComboInput('find'); }, false); WikEdAddEventListener(wikEdSelectElement['find'],'focus', function() { WikEdSetComboOptions('find'); }, false); WikEdAddEventListener(wikEdSelectElement['replace'],'change', function() { WikEdChangeComboInput('replace'); }, false); WikEdAddEventListener(wikEdSelectElement['replace'],'focus', function() { WikEdSetComboOptions('replace'); }, false); // register the clear summary click handler WikEdAddEventListener(wikEdClearSummary, 'click', WikEdClearSummaryHandler, true); // select the text on focus for find and replace fields WikEdAddEventListener(wikEdFindText, 'focus', WikEdFindReplaceHandler, true); WikEdAddEventListener(wikEdReplaceText, 'focus', WikEdFindReplaceHandler, true); // tab / shift-tab between find and replace fields WikEdAddEventListener(wikEdFindText, 'keydown', WikEdFindReplaceHandler, true); WikEdAddEventListener(wikEdReplaceText, 'keydown', WikEdFindReplaceHandler, true); // scroll to edit window if it is not a preview page if (scrollToEdit != false) { if (window.location.search.match(/(\?|&)action=submit\b/) == null) { window.scroll(0, WikEdGetOffsetTop(wikEdInputWrapper) - 2); } // focus the edit area if (wikEdUseWikEd == true) { wikEdFrameWindow.focus(); } else { if (wikEdMSIE == true) { } else { wikEdTextarea.setSelectionRange(0, 0); } wikEdTextarea.focus(); } } // init MediaWiki file paths for use in regexps if (wikEdWikiGlobals['wgServer'] != null) { wikEdServer = wikEdWikiGlobals['wgServer']; } if (wikEdWikiGlobals['wgArticlePath'] != null) { wikEdArticlePath = wikEdWikiGlobals['wgArticlePath'] } if (wikEdWikiGlobals['wgScriptPath'] != null) { wikEdScriptPath = wikEdWikiGlobals['wgScriptPath']; } if (wikEdWikiGlobals['wgScript'] != null) { wikEdScript = wikEdWikiGlobals['wgScript']; } wikEdArticlePath = wikEdArticlePath.replace(wikEdServer, ''); wikEdScriptPath = wikEdScriptPath.replace(wikEdServer, ''); wikEdArticlePath = wikEdArticlePath.replace(/\$1$/, ''); wikEdScriptPath = wikEdScriptPath.replace(/\/?$/, '/'); wikEdScriptName = wikEdScript.replace(wikEdScriptPath, ''); // prepare for use in regexps wikEdServer = wikEdServer.replace(/(\W)/g, '\\$1'); wikEdArticlePath = wikEdArticlePath.replace(/(\W)/g, '\\$1'); wikEdScript = wikEdScript.replace(/(\W)/g, '\\$1'); wikEdScriptPath = wikEdScriptPath.replace(/(\W)/g, '\\$1'); wikEdScriptName = wikEdScriptName.replace(/(\W)/g, '\\$1'); // fullscreen mode if (wikEdFullScreenMode == true) { WikEdFullScreen(wikEdFullScreenMode, true); } // override the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars if (typeof(insertTags) == 'function') { if (WikEdInsertTagsOriginal == null) { WikEdInsertTagsOriginal = insertTags; } insertTags = window.WikEdInsertTags; } // override insertAtCursor function in wikia.com MediaWiki:Functions.js if (typeof(insertAtCursor) == 'function') { if (WikEdInsertAtCursorOriginal == null) { WikEdInsertAtCursorOriginal = insertAtCursor; } insertAtCursor = window.WikEdInsertAtCursor; } // reset error indicator WikEdSetLogo(); wikEdTurnedOn = true; // load and parse RegExTypoFix rules if the button is enabled WikEdLoadTypoFixRules(); /* ///// register article name autofind var inputId = 'wikEdFindText'; var formId = 'searchform'; var inputNode = document.getElementById(inputId); if (inputNode != null) { if (typeof(os_initHandlers) == 'function') { os_initHandlers(inputId, formId, inputNode); } } */ // run scheduled custom functions WikEdExecuteHook(wikEdSetupHook); // setup and turn on finished return; } // // WikEdAutoUpdate: check for the latest version and force-reload to update // window.WikEdAutoUpdate = function() { // check only on non-interaction pages if (/(\?|&)action=/.test(window.location.search) == true) { return; } // check if autoupdate is enabled if (wikEdAutoUpdate != true) { return; } // get date of last update check var lastCheckStr = WikEdGetPersistent('wikEdAutoUpdate'); var lastCheckDate = new Date(lastCheckStr); // fix missing or corrupt saved setting if (isNaN(lastCheckDate.valueOf()) == true) { WikEdSetPersistent('wikEdAutoUpdate', 'January 1, 1970', 0, '/'); return; } // get the hours since last update check var currentDate = new Date(); var diffHours = (currentDate - lastCheckDate) / 1000 / 60 / 60; if (wikEdGreasemonkey == true) { if (diffHours < wikEdAutoUpdateHoursGM) { return; } } else if (diffHours < wikEdAutoUpdateHours) { return; } // save current update check date WikEdSetPersistent('wikEdAutoUpdate', currentDate.toUTCString(), 0, '/'); // make the ajax request WikEdAjaxRequest('GET', wikEdAutoUpdateUrl, null, null, null, null, function(ajax) { // get response var html = ajax.responseText; // get current version number from string var ver = wikEdProgramVersion.match(/(\d+)\.(\d+)\.(\d+)(\w?)/); if (ver == null) { return; } var currentVersion = ((Number(ver[1]) * 1000 + Number(ver[2])) * 1000 + Number(ver[3])) * 100 + (ver[4] + '0').charCodeAt(0); // get new version number from string var ver = html.match(/(\d+)\.(\d+)\.(\d+)(\w?)/); if (ver == null) { return; } var newVersion = ((Number(ver[1]) * 1000 + Number(ver[2])) * 1000 + Number(ver[3])) * 100 + (ver[4] + '0').charCodeAt(0); // compare the versions if (currentVersion >= newVersion) { return; } // update Greasemonkey script by navigating to the script code page if (wikEdGreasemonkey == true) { var updatePopup = wikEdText['wikEdGreasemonkeyAutoUpdate']; updatePopup = updatePopup.replace(/\{updateURL\}/g, wikEdAutoUpdateUrl); alert(updatePopup); window.location.href = wikEdAutoUpdateScriptUrl; } // update wikEd by reloading the page with cache bypassing (equivalent to Shift-Reload or Shift-F5) else { window.location.reload(true); } }); return; } // // WikEdLoadTypoFixRules: load and parse RegExTypoFix rules if the button is enabled // window.WikEdLoadTypoFixRules = function() { // load RegExTypoFix rules per Ajax if enabled if ( (wikEdRegExTypoFix == true) && (wikEdTypoRulesFind.length == 0) ) { // make the ajax request WikEdAjaxRequest('GET', wikEdRegExTypoFixURL, null, null, null, null, function(ajax) { // get response var rulesTxt = ajax.responseText; // parse regexp rules var regExp = new RegExp('^<Typo +word="(.+?)" +find="(.+?)" +replace="(.+?)" +/>', 'gim'); while ( (regExpMatch = regExp.exec(rulesTxt)) != null) { // check if this is a valid regexp var regExpFind; try { regExpFind = new RegExp(regExpMatch[2], 'gim'); } catch (err) { continue; } // save regexp and replace wikEdTypoRulesFind.push(regExpFind); wikEdTypoRulesReplace.push(regExpMatch[3]); } // display typo fix button if (wikEdTypoRulesFind.length > 0) { document.getElementById('wikEdFixRegExTypo').style.display = 'inline'; } return; }); } return; } // // WikEdEditButtonHandler: handler for clicks on edit buttons // window.WikEdEditButtonHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } // execute the button click handler code var obj; if (event.currentTarget != null) { obj = event.currentTarget; } // MS IE compatibility else { obj = event.srcElement; } // workaround for mozilla 3.0 bug 441087 objId = obj.id; eventShiftKey = event.shiftKey; eval(wikEdEditButtonHandler[objId]); return; } // // WikEdShrinkSummaryHandler: shrink the summary after loading the 'Clear summary' image // window.WikEdShrinkSummaryHandler = function(event) { var diffWidth = wikEdClearSummary.offsetWidth - wikEdClearSummaryWidth; // Firefox < 3.0 if ( typeof(wikEdInputElement['summary'].clientLeft) == 'undefined' ) { wikEdInputElement['summary'].style.width = (wikEdInputElement['summary'].clientWidth - diffWidth) + 'px'; wikEdSelectElement['summary'].style.width = (wikEdSelectElement['summary'].clientWidth - diffWidth) + 'px'; } // Firefox >= 3.0 else { wikEdInputElement['summary'].style.width = (wikEdInputElement['summary'].clientWidth - diffWidth) + 'px'; wikEdSelectElement['summary'].style.width = (wikEdSelectElement['summary'].clientWidth - diffWidth + 3) + 'px'; } wikEdClearSummaryWidth = wikEdClearSummary.offsetWidth; return; } // // WikEdResizeSummaryHandler: adjust the summary width after resizing the window // window.WikEdResizeSummaryHandler = function(event) { WikEdResizeSummary(); return; } // // WikEdUnloadHandler: save editing frame to cached textarea // window.WikEdUnloadHandler = function(event) { // update textarea if not already done in submit handlers if (wikEdUseWikEd == true) { if (wikEdTextareaUpdated != true) { WikEdUpdateTextarea(); } } return; } // // WikEdSaveButtonHandler: 'Save page' click handler // window.WikEdSaveButtonHandler = function(event) { WikEdRemoveEventListener(wikEdSaveButton, 'click', WikEdSaveButtonHandler, true); // update textarea if (wikEdUseWikEd == true) { WikEdUpdateTextarea(); wikEdTextareaUpdated = true; } // add "using wikEd" to summary, not for adding a new section (+ tab) var text = wikEdSummaryText.value; text = text.replace(/^[, ]+/, ''); text = text.replace(/[, ]+$/, ''); WikEdAddToHistory('summary'); if ( (wikEdUsing == true) && (text != '') ) { if (text.lastIndexOf(wikEdSummaryUsing) < 0) { if (wikEdAddNewSection != true) { text += ' ' + wikEdSummaryUsing; } } } wikEdSummaryText.value = text; // submit wikEdSaveButton.click(); // reinstate handler in case the browser back button will be used WikEdAddEventListener(wikEdSaveButton, 'click', WikEdSaveButtonHandler, true); return; } // // WikEdPreviewButtonHandler: 'Show preview' click handler // window.WikEdPreviewButtonHandler = function(event) { if (wikEdUseWikEd == true) { WikEdUpdateTextarea(); wikEdTextareaUpdated = true; } return; } // // wikEdDiffPreviewButtonHandler: 'Show changes' click handler // window.wikEdDiffPreviewButtonHandler = function(event) { if (wikEdFullScreenMode == true) { WikEdFullScreen(false); } if (wikEdUseWikEd == true) { WikEdUpdateTextarea(); wikEdTextareaUpdated = true; } return; } // // WikEdFollowLinkHandler: open highlighted link in new window/tab // window.WikEdFollowLinkHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } if (event.ctrlKey == true) { var linkId = event.currentTarget.id; //// todo: find the lowest span that triggered this event for links in templates if (linkId != null) { var linkUrl = wikEdFollowLinkHash[linkId]; if (linkUrl != null) { event.stopPropagation(); window.open(linkUrl); window.focus(); } } } return; } // // WikEdLocalPreviewHandler: local 'Show preview' image button click handler // window.WikEdLocalPreviewHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } event.preventDefault(); WikEdButton(wikEdLocalPreview, 'wikEdLocalPreview'); return; } // // WikEdLocalDiffHandler: local 'Show changes' image button click handler // window.WikEdLocalDiffHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } event.preventDefault(); WikEdButton(wikEdLocalDiff, 'wikEdLocalDiff'); return; } // // WikEdButtonBarGripHandler: click, mouseover handler, see also WikEdButtonBarInit() // window.WikEdButtonBarGripHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } event.stopPropagation(); var grip = event.target; var gripWrapper = grip.parentNode; var buttonsWrapper = gripWrapper.nextSibling; var buttons = buttonsWrapper.firstChild; var barInnerWrapper = gripWrapper.parentNode; var bar = barInnerWrapper.parentNode; if (event.type == 'click') { buttonsWrapper.style.position = 'static'; // hide the buttons bar if (buttonsWrapper.minimized != true) { barInnerWrapper.className = 'wikEdButtonBarInnerWrapperHidden'; gripWrapper.className = 'wikEdButtonBarGripWrapperHidden'; buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperHidden'; buttonsWrapper.widthOriginal = buttonsWrapper.offsetWidth; buttonsWrapper.style.display = 'none'; buttonsWrapper.minimized = true; WikEdAddEventListener(grip, 'mouseover', WikEdButtonBarGripHandler, false); WikEdSetPersistent(bar.id + 'Hidden', '1', 0, '/'); } // unhide the buttons bar else { barInnerWrapper.className = 'wikEdButtonBarInnerWrapperVisible'; gripWrapper.className = 'wikEdButtonBarGripWrapperVisible'; buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperVisible'; buttonsWrapper.style.display = 'block'; buttonsWrapper.minimized = false; WikEdRemoveEventListener(grip, 'mouseover', WikEdButtonBarGripHandler, false); WikEdSetPersistent(bar.id + 'Hidden', '0', 0, '/'); } } // show the buttons bar on mouseover else if (event.type == 'mouseover') { if (buttonsWrapper.minimized == true) { WikEdAddEventListener(bar, 'mouseout', WikEdButtonBarHandler, false); // show buttons to the right if (bar.offsetParent.clientWidth > grip.offsetLeft + grip.offsetWidth + buttonsWrapper.widthOriginal) { buttonsWrapper.style.left = (grip.offsetLeft + grip.offsetWidth) + 'px'; } // show buttons to the left else { buttonsWrapper.style.left = (gripWrapper.offsetLeft - buttonsWrapper.widthOriginal) + 'px'; } // a mozilla bug sometimes gives offsetTop - 1 when the wikEdToolbarWrapper is hidden buttonsWrapper.style.top = gripWrapper.offsetTop + 'px'; buttonsWrapper.style.position = 'absolute'; buttonsWrapper.style.display = 'block'; } } return; } // // WikEdButtonBarGripHandler: mouseout handler // window.WikEdButtonBarHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } event.stopPropagation(); var bar = event.currentTarget; var barInnerWrapper = bar.firstChild; var gripWrapper = barInnerWrapper.firstChild; var grip = gripWrapper.firstChild; var buttonsWrapper = gripWrapper.nextSibling; var buttons = buttonsWrapper.firstChild; // hide the buttons if (event.type == 'mouseout') { if (buttonsWrapper.minimized == true) { // filter the events for mouseouts actually leaving the bar if ( ( ( (event.target == grip) || (event.target == gripWrapper) ) && (event.relatedTarget != gripWrapper) && (event.relatedTarget != buttonsWrapper) && (event.relatedTarget != buttons) && (event.relatedTarget.parentNode != buttons) ) || ( ( (event.target.parentNode.parentNode == buttons) || (event.target.parentNode == buttons) || (event.target == buttons) || (event.target == buttonsWrapper) ) && (event.relatedTarget.parentNode.parentNode != buttons) && (event.relatedTarget.parentNode != buttons) && (event.relatedTarget != buttons) && (event.relatedTarget != buttonsWrapper) && (event.relatedTarget != gripWrapper) && (event.relatedTarget != grip) ) ) { WikEdRemoveEventListener(bar, 'mouseout', WikEdButtonBarHandler, false); buttonsWrapper.style.display = 'none'; buttonsWrapper.style.position = 'static'; } } } return; } // // clear the summary click handler // window.WikEdClearSummaryHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } event.preventDefault(); // clear the summary if it is only a paragraph name if ( /^\/\* .*? \*\/ *$/.test(wikEdSummaryText.value) ) { wikEdSummaryText.value = ''; } // clear the summary but leave paragraph names else { wikEdSummaryText.value = wikEdSummaryText.value.replace(/^((\/\* .*? \*\/ *)?).*()/, function (p, p1, p2) { if (p1.length > 0) { p1 = p1 + ' '; } return(p1); } ); } wikEdSummaryText.focus(); return; } // // WikEdFindReplaceHandler: find and replace: tab and shift-tab between fields, select on focus // window.WikEdFindReplaceHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } // tab / shift-tab between fields if (event.type == 'keydown') { if (event.keyCode == 9) { if (event.target == wikEdFindText) { event.preventDefault(); WikEdRemoveEventListener(wikEdReplaceText, 'focus', WikEdFindReplaceHandler, true); wikEdReplaceText.focus(); WikEdAddEventListener(wikEdReplaceText, 'focus', WikEdFindReplaceHandler, true); } else if (event.target == wikEdReplaceText) { event.preventDefault(); WikEdRemoveEventListener(wikEdFindText, 'focus', WikEdFindReplaceHandler, true); wikEdFindText.focus(); WikEdAddEventListener(wikEdFindText, 'focus', WikEdFindReplaceHandler, true); } } } // select on focus else if (event.type == 'focus') { if (wikEdMSIE == true) { } else { event.target.setSelectionRange(0, this.textLength); } } return; } // // WikEdSetLogo: set the logo on top of the page // window.WikEdSetLogo = function(state) { if (state == 'error') { wikEdLogo.src = wikEdImage['error']; wikEdLogo.alt = wikEdText['wikEdLogo error alt']; wikEdLogo.title = wikEdText['wikEdLogo error title']; } else if (state == 'browser') { wikEdLogo.src = wikEdImage['browser']; wikEdLogo.alt = wikEdText['wikEdLogo browser alt']; wikEdLogo.title = wikEdText['wikEdLogo browser title']; } else { if (wikEdDisabled == true) { wikEdLogo.src = wikEdImage['disabled']; wikEdLogo.alt = wikEdText['wikEdLogo disabled alt']; wikEdLogo.title = wikEdText['wikEdLogo disabled title']; } else { wikEdLogo.src = wikEdImage['logo']; wikEdLogo.alt = wikEdText['wikEdLogo alt']; wikEdLogo.title = wikEdText['wikEdLogo title']; } } var version = wikEdProgramVersion; if (wikEdGadget == true) { version += ' G'; } else if (wikEdGreasemonkey == true) { version += ' GM'; } else if (wikEdGreasemonkeyToHead == true) { version += ' GM'; } wikEdLogo.title = wikEdLogo.title.replace(/\{wikEdProgramVersion\}/g, version); wikEdLogo.title = wikEdLogo.title.replace(/\{wikEdProgramDate\}/g, wikEdProgramDate); return; } // // MakeButtonBar: generate button bar div element // window.MakeButtonBar = function(bar) { // id outer, class outer, id inner, class inner, alt, button numbers var barId = bar[0]; var barClass = bar[1]; var buttonsId = bar[2]; var buttonsClass = bar[3]; var barHeight = bar[4]; var gripTitle = bar[5]; var buttonNumbers = bar[6]; // collect the buttons var buttons = ''; for (var property in buttonNumbers) { if ( (typeof(buttonNumbers[property]) != 'string') && (typeof(buttonNumbers[property]) != 'number') ) { continue; } var buttonNo = buttonNumbers[property]; switch (buttonNo) { case 'br': buttons += '<br />'; break; case 'find': buttons += '<span class="wikEdFindComboInput" id="wikEdFindComboInput">'; buttons += '<input class="wikEdCombo" id="wikEdFindText" type="text" value="">'; buttons += '<select class="wikEdCombo" id="wikEdFindSelect">'; buttons += '</select>'; buttons += '</span>'; break; case 'replace': buttons += '<span class="wikEdReplaceComboInput" id="wikEdReplaceComboInput">'; buttons += '<input class="wikEdCombo" id="wikEdReplaceText" type="text" value="">'; buttons += '<select class="wikEdCombo" id="wikEdReplaceSelect">'; buttons += '</select>'; buttons += '</span>'; break; default: var currButton = wikEdButton[buttonNo]; if (typeof(currButton) != 'object') { alert('Loading error: The button "' + buttonNumbers[property] + '" is not defined.'); } if ( (currButton[0] == 'wikEdSource') && (wikEdShowSourceButton != true) ) { break; } else if ( (currButton[0] == 'wikEdUsing') && (wikEdShowUsingButton != true) ) { break; } else if ( (currButton[0] == 'wikEdTableMode') && (wikEdShowTableModeButton != true) ) { // {{TABLE}} break; } // add accesskey information to button title and var accessKey = ''; if (wikEdButtonKey[buttonNo] != null) { accessKey = ' [' + wikEdText['alt-shift'] + wikEdButtonKey[buttonNo][0] + ']'; // initialize wikEdButtonKeyCode[keyCode] = id wikEdButtonKeyCode[ (wikEdButtonKey[buttonNo][1]) ] = currButton[0]; } // add button html code buttons += '<img id="' + currButton[0] + '" class="' + currButton[1] + '" title="' + currButton[2] + accessKey +'" src="' + currButton[3] + '" width="' + currButton[4] + '" height="' + currButton[5] + '" alt="' + currButton[6] + '">'; // collect click event info wikEdEditButtonHandler[ currButton[0] ] = currButton[7]; } } // create the button bar div var div = document.createElement('div'); div.id = barId; div.className = barClass; var buttonsStyle = ''; if (barHeight > 0) { buttonsStyle = ' style="height: ' + barHeight + 'px;"'; } // make a grip bar var html = ''; if (gripTitle != null) { var gripStyle = 'width: ' + wikEdButtonBarGripWidth + 'px; '; if (barHeight > 0) { gripStyle += 'height: ' + barHeight + 'px; '; } if (gripStyle.length > 0){ gripStyle = ' style="' + gripStyle + '"'; } html += '<div class="wikEdButtonBarInnerWrapperVisible" style="height: ' + barHeight + 'px;">'; html += '<div class="wikEdButtonBarGripWrapperVisible">'; html += '<div class="wikEdButtonBarGrip"' + gripStyle + ' title="' + gripTitle + '">'; html += ' '; html += '</div>'; html += '</div>'; html += '<div class="wikEdButtonBarButtonsWrapperVisible"' + buttonsStyle + '>'; html += '<div id="' + buttonsId + '" class="' + buttonsClass + '" style="">'; html += buttons; html += '</div>'; html += '</div>'; html += '</div>'; } // make a standard no-grip bar else { html += '<div id="' + buttonsId + '" class="' + buttonsClass + '"' + buttonsStyle + '">'; html += buttons; html += '</div>'; } div.innerHTML = html; return(div); } // // WikEdButtonBarInit: hide buttons bar, see also WikEdButtonBarGripHandler() // window.WikEdButtonBarInit = function(bar) { if (WikEdGetPersistent(bar.id + 'Hidden') == '1') { var barInnerWrapper = bar.firstChild; var gripWrapper = barInnerWrapper.firstChild; var grip = gripWrapper.firstChild; var buttonsWrapper = gripWrapper.nextSibling; var buttons = buttonsWrapper.firstChild; barInnerWrapper.className = 'wikEdButtonBarInnerWrapperHidden'; gripWrapper.className = 'wikEdButtonBarGripWrapperHidden'; buttonsWrapper.className = 'wikEdButtonBarButtonsWrapperHidden'; buttonsWrapper.widthOriginal = buttonsWrapper.offsetWidth; buttonsWrapper.style.display = 'none'; buttonsWrapper.minimized = true; WikEdAddEventListener(grip, 'mouseover', WikEdButtonBarGripHandler, true); } return; } // // WikEdSetEditArea: apply css changes to switch between classic textarea and rich text frame // window.WikEdSetEditArea = function(useFrame, notFrame) { // turn rich text frame on if (useFrame == true) { wikEdTextareaWrapper.style.position = 'absolute'; wikEdTextareaWrapper.style.visibility = 'hidden'; wikEdTextarea.style.display = 'none'; if (notFrame != true) { wikEdFrameWrapper.style.position = 'static'; wikEdFrameWrapper.style.visibility = 'visible'; wikEdFrameBody.style.display = 'block'; } if (document.getElementById('toolbar') != null) { if (wikEdCloseToolbar == true) { wikEdToolbarWrapper.style.display = 'none'; } else { wikEdToolbarWrapper.style.display = 'block'; } } wikEdButtonBarFormat.style.display = 'block'; if (wikEdButtonBarCustom1 != null) { wikEdButtonBarCustom1.style.display = 'block'; } wikEdButtonBarFind.style.display = 'block'; wikEdButtonBarFix.style.display = 'block'; if (wikEdButtonBarCustom2 != null) { wikEdButtonBarCustom2.style.display = 'block'; } wikEdButtonBarControl.style.display = 'block'; } // turn classic textarea on else { if (notFrame != true) { wikEdFrameWrapper.style.position = 'absolute'; wikEdFrameWrapper.style.visibility = 'hidden'; // Mozilla or wikEd bug: <br> insertion before text a while after setting display to 'none', test with setTimeout('alert(wikEdFrameBody.innerHTML)', 1000); // wikEdFrameBody.style.display = 'none'; } wikEdTextareaWrapper.style.position = 'static'; wikEdTextareaWrapper.style.visibility = 'visible'; wikEdTextarea.style.display = 'block'; if (document.getElementById('toolbar') != null) { wikEdToolbarWrapper.style.display = 'block'; } wikEdButtonBarFormat.style.display = 'none'; if (wikEdButtonBarCustom1 != null) { wikEdButtonBarCustom1.style.display = 'none'; } wikEdButtonBarFind.style.display = 'none'; wikEdButtonBarFix.style.display = 'none'; if (wikEdButtonBarCustom2 != null) { wikEdButtonBarCustom2.style.display = 'none'; } wikEdButtonBarControl.style.display = 'block'; } return; } // // WikEdButton: toggle or set button checked state // used for buttons that do not require nor change the text. Faster than WikEdEditButton() // window.WikEdButton = function(buttonObj, buttonId, toggleButton, setButton, classButton, doButton) { if (buttonObj != null) { // check if the button is disabled if (buttonObj.className == 'wikEdButtonInactive') { return; } // set button to pressed, set cursor to hourglass buttonObj.style.cursor = 'wait'; // init the button if (setButton != null) { if (setButton == false) { buttonObj.setAttribute('checked', false); if (classButton == null) { buttonObj.className = 'wikEdButtonUnchecked'; } } else { buttonObj.setAttribute('checked', true); if (classButton == null) { buttonObj.className = 'wikEdButtonChecked'; } } } else if (classButton != null) { buttonObj.className = classButton; } // toggle the button if (toggleButton != null) { if (toggleButton == true) { if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { buttonObj.setAttribute('checked', false); buttonObj.className = 'wikEdButtonUnchecked'; } else { buttonObj.setAttribute('checked', true); buttonObj.className = 'wikEdButtonChecked'; } } } } // perform specific actions var focusFrame = false; if ( ( (setButton == null) && (classButton == null) ) || (doButton == true) ) { // remove active content WikEdRemoveElements(['script', 'object', 'applet', 'embed']); switch (buttonId) { // switch between syntax highlighting and plain text case 'wikEdHighlightSyntax': if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { wikEdHighlightSyntax = true; WikEdSetPersistent('wikEdSyntaxOff', '0', 0, '/'); } else { wikEdHighlightSyntax = false; WikEdSetPersistent('wikEdSyntaxOff', '1', 0, '/'); } // do not keep whole text selected WikEdEditButton( null, 'wikEdUpdateAll', {'keepSel': false} ); break; // toggle table mode // {{TABLE}} case 'wikEdTableMode': if (WikEdGetAttribute(buttonObj, 'checked') != 'true') { wikEdTableMode = false; } else { // check for matching table tags var obj = {}; WikEdGetText(obj, 'whole'); var plain = obj.whole.plain; // remove exluded text plain = plain.replace(/<!--(.|\n)*?-->/g, ''); plain = plain.replace(/<nowiki\b[^>]*>(.|\n)*?<\/nowiki\s*>/g, ''); plain = plain.replace(/<pre\b[^>]*>(.|\n)*?<\/pre\s*>/g, ''); // check line by line for table code var lines = plain.split('\n'); var tableCount = 0; var tableError = false; for (var i = 0; i < lines.length; i ++) { var line = lines[i]; if (line.match(/^\{\|/) != null) { tableCount ++; } else if (line.match(/^\|\}/) != null) { tableCount --; if (tableCount < 0) { tableError = true; break; } } } if (tableCount > 0) { tableError = true; } if (tableError == true) { wikEdTableMode = false; alert(wikEdText['wikEdTableModeError']); WikEdButton(buttonObj, buttonId, null, false); break; } wikEdTableMode = true; //// to do: convert wikicode to table } WikEdEditButton(null, 'wikEdUpdateAll'); break; // align textbox with display top case 'wikEdScrollToPreview': case 'wikEdScrollToPreview2': case 'wikEdScrollToPreview3': window.scroll(0, WikEdGetOffsetTop(wikEdSaveButton)); focusFrame = true; break; // align edit buttons with display top case 'wikEdScrollToEdit': case 'wikEdScrollToEdit2': case 'wikEdScrollToEdit3': case 'wikEdScrollToEdit4': window.scroll(0, WikEdGetOffsetTop(wikEdInputWrapper)); focusFrame = true; break; // cycle through different font sizes case 'wikEdTextZoomDown': wikEdTextZoom = wikEdTextZoom / 1.2; if (wikEdTextZoom < 100 / 1.2 / 1.2) { wikEdTextZoom = 100 * 1.2 * 1.2; } wikEdFrameBody.style.fontSize = parseInt(wikEdTextZoom) + '%'; focusFrame = true; break; // cycle through different font sizes case 'wikEdTextZoomUp': wikEdTextZoom = wikEdTextZoom * 1.2; if (wikEdTextZoom > 100 * 1.2 * 1.2) { wikEdTextZoom = 100 / 1.2 / 1.2; } wikEdFrameBody.style.fontSize = parseInt(wikEdTextZoom) + '%'; focusFrame = true; break; // display local preview box case 'wikEdLocalPreview': if (wikEdFullScreenMode == true) { WikEdFullScreen(false); } if (wikEdUseWikEd == true) { WikEdUpdateTextarea(); } // scroll to button, textarea, or preview field WikEdScrollToPreview(); // clear box, display loading indicator wikEdPreviewBox.innerHTML = wikEdText['wikEdPreviewLoading']; wikEdLocalPrevWrapper.style.display = 'block'; // prepare ajax preview wikEdPreviewIsAjax = false; if (wikEdUseAjaxPreview == true) { // prepare the data var boundary = '--(fR*3briuStOum6#v)--'; var postData = wikEdTextarea.value; // append references section for section edits var section = document.getElementsByName('wpSection'); if (section != null) { if (section.length > 0) { if (section[0].value != '') { if (/<ref[^>\/]*>.*?<\/ref[^>]*>/i.test(postData) == true) { if (/<references\b[^>]*>/i.test(postData) == false) { postData += '<div class="wikEdPreviewRefs"><references/></div>'; } } } } } postData = '--' + boundary + '\nContent-Disposition: form-data; name="wpTextbox1"\n\n' + postData + '\n--' + boundary; // make the ajax request var formAction; if (wikEdUpload == true) { formAction = wikEdWikiGlobals['wgServer'] + wikEdWikiGlobals['wgScript'] + '?title=wikEdUploadPreview&action=submit'; } else { formAction = wikEdEditForm.action; } if (wikEdEditForm.wpEdittime != null) { formAction += '&wpEdittime=' + wikEdEditForm.wpEdittime.value; } if (wikEdEditForm.wpEditToken != null) { formAction += '&wpEditToken=' + encodeURIComponent(wikEdEditForm.wpEditToken.value); } WikEdAjaxRequest('POST', formAction + '&live', 'Content-Type', 'multipart/form-data; boundary=' + boundary, postData, 'text/html', function(ajax) { wikEdPreviewIsAjax = true; // get response var html = ajax.responseText; // html-ize html = html.replace(/</g, '<'); html = html.replace(/>/g, '>'); html = html.replace(/&/g, '&'); html = html.replace(/"/g, '"') html = html.replace(/'/g, '\''); html = html.replace(/(<preview>)<h2>.*?<\/h2>(.|\n)*?<div class=\'previewnote\'>(.|\n)*?<\/div>/, '$1'); // clean form elements html = html.replace(/<\/?form\b[^>]*>/g, ''); html = html.replace(/(<\/?input\b[^>]*?)\bname="search"([^>]*>)/g, '$1$2'); // remove cite errors for automatic section preview refs html = html.replace(/(<div\b[^>]*?\bclass=\"wikEdPreviewRefs\"[^>]*>(.|\s)*$)/, function (p, p1, p2) { p1 = p1.replace(/<strong\b[^>]*?\bclass=\"error\"[^>]*>(.|\s)*?<\/strong>/g, ''); return(p1); } ); wikEdPreviewBox.innerHTML = html; }); } // prepare a local preview (Pilaf's InstaView), will be overwritten by Ajax version if ( (wikEdUseLocalPreview == true) && (typeof(InstaView) == 'object') ) { InstaView.conf.user.name = wikEdWikiGlobals['wgUserName']; var instaView = InstaView.convert(wikEdTextarea.value); if (wikEdPreviewIsAjax != true) { wikEdPreviewBox.innerHTML = instaView; } } focusFrame = true; break; // display local diff box case 'wikEdLocalDiff': if (typeof(WDiffString) != 'function') { break; } if (wikEdFullScreenMode == true) { WikEdFullScreen(false); } if (wikEdUseWikEd == true) { WikEdUpdateTextarea(); } // scroll to button, textarea, or preview field WikEdScrollToPreview(); // call external diff program var diffText = WDiffString(wikEdOrigVersion, wikEdTextarea.value); if (wikEdFullDiff != true) { diffText = WDiffShortenOutput(diffText); } // scroll to preview field wikEdPreviewBox.innerHTML = diffText; wikEdLocalPrevWrapper.style.display = 'block'; break; // toggle wikEdDiff case 'wikEdDiff': // turn wikEdDiff off if (WikEdGetAttribute(buttonObj, 'checked') != 'true') { wikEdDiff = false; WikEdSetPersistent('wikEdDiff', '0', 0, '/'); if (typeof(wikEdDiffDiv) == 'object') { if (wikEdDiffDiv != null) { wikEdDiffDiv.style.display = 'none'; } } window.scroll(0, WikEdGetOffsetTop(wikEdInputWrapper)); } // turn wikEdDiff on else { wikEdDiff = true; WikEdSetPersistent('wikEdDiff', '1', 0, '/'); if (typeof(wikEdDiffDiv) == 'object') { if (wikEdDiffDiv != null) { wikEdDiffDiv.style.display = 'block'; window.scroll(0, WikEdGetOffsetTop(wikEdDiffDiv)); WikEdDiff(); } } } focusFrame = true; break; // close the preview / diff box case 'wikEdClose': case 'wikEdClose2': window.scroll(0, WikEdGetOffsetTop(wikEdInputWrapper)); wikEdLocalPrevWrapper.style.display = 'none'; focusFrame = true; break; // switch between textarea and frame display // switching an iframe in design mode immediately after initialization between absolute/static may crash mozilla case 'wikEdUseWikEd': // enble wikEd if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { WikEdUpdateFrame(); // turn rich text frame on WikEdSetEditArea(true); wikEdUseWikEd = true; WikEdSetPersistent('wikEdUseClassic', '0', 0, '/'); // run scheduled custom functions WikEdExecuteHook(wikEdFrameHook); } // turn classic textarea on, disable wikEd else { WikEdUpdateTextarea(); WikEdSetEditArea(false); wikEdUseWikEd = false; WikEdSetPersistent('wikEdUseClassic', '1', 0, '/'); // run scheduled custom functions WikEdExecuteHook(wikEdTextareaHook); } break; // add "using wikEd" to summaries case 'wikEdUsing': if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { wikEdUsing = true; WikEdSetPersistent('wikEdSummaryUsing', '1', 0, '/'); } else { wikEdUsing = false; WikEdSetPersistent('wikEdSummaryUsing', '0', 0, '/'); } break; // hide ref tags case 'wikEdRefHide': if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { wikEdRefHide = true; WikEdSetPersistent('wikEdRefHide', '1', 0, '/'); } else { wikEdRefHide = false; WikEdSetPersistent('wikEdRefHide', '0', 0, '/'); } if (wikEdUseWikEd == true) { WikEdEditButton( null, 'wikEdWikify', {'whole': true} ); } break; // close the toolbar case 'wikEdCloseToolbar': if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { wikEdCloseToolbar = true; if (document.getElementById('toolbar') != null) { wikEdToolbarWrapper.style.display = 'none'; } WikEdSetPersistent('wikEdCloseToolbar', '1', 0, '/'); } else { wikEdCloseToolbar = false; if (document.getElementById('toolbar') != null) { wikEdToolbarWrapper.style.display = 'block'; } WikEdSetPersistent('wikEdCloseToolbar', '0', 0, '/'); } if (wikEdFullScreenMode == true) { WikEdFullScreen(wikEdFullScreenMode); } break; // just toggle the case sensitive search button case 'wikEdCaseSensitive': break; // just toggle the regexp search button case 'wikEdRegExp': break; // just toggle the find-ahead-as-you-type search button case 'wikEdFindAhead': break; // switch to fullscreen edit area case 'wikEdFullScreen': if (wikEdRearrange == true) { if (WikEdGetAttribute(buttonObj, 'checked') == 'true') { WikEdFullScreen(true); WikEdSetPersistent('wikEdFullscreen', '1', 0, '/'); } else { WikEdFullScreen(false); WikEdSetPersistent('wikEdFullscreen', '0', 0, '/'); } } break; // clear the saved settings for find, replace, and summary history case 'wikEdClearHistory': WikEdClearHistory('find'); WikEdClearHistory('replace'); WikEdClearHistory('summary'); focusFrame = true; break; // for testing case 'wikEdPlaceholder': break; } } // reset the frame DOM cache because the frame content might have changed wikEdFrameDOMCache = null; // reset cursor to normal if (buttonObj != null) { buttonObj.style.cursor = 'pointer'; } // focus the frame if ( (wikEdUseWikEd == true) && (focusFrame == true) ) { wikEdFrameWindow.focus(); } return; } // // WikEdEditButton: editing functions // used for buttons that require or change the text, more time consuming than WikEdButton() // window.WikEdEditButton = function(buttonObj, buttonId, parameters, CustomHandler) { // check if button is disabled if (buttonObj != null) { if (buttonObj.className == 'wikEdButtonInactive') { return; } } // remove active and non-text content WikEdRemoveElements(['script', 'object', 'applet', 'embed', 'textarea']); // select the appropriate text change targets (whole, selection, cursor, focusWord, focusLine, selectionWord, or selectionLine) var obj = {}; obj.changed = {}; switch (buttonId) { // undo, redo: whole case 'wikEdUndo': case 'wikEdRedo': case 'wikEdUndoAll': case 'wikEdRedoAll': WikEdGetText(obj, 'whole'); obj.changed = obj.whole; break; // basic wiki character formatting: selection / focusWord / cursor case 'wikEdBold': case 'wikEdItalic': case 'wikEdUnderline': case 'wikEdStrikethrough': case 'wikEdNowiki': case 'wikEdSuperscript': case 'wikEdSubscript': case 'wikEdWikiLink': case 'wikEdWebLink': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusWord'); if (obj.focusWord.plain != '') { obj.changed = obj.focusWord; } else { obj.changed = obj.cursor; } } break; // reference: selection / cursor case 'wikEdRef': case 'wikEdRefNamed': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { obj.changed = obj.cursor; } break; // references and small references: selection / cursor case 'wikEdReferences': case 'wikEdReferencesSection': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { obj.changed = obj.cursor; } break; // character formatting: selection / focusWord / cursor case 'wikEdCase': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusWord'); if (obj.focusWord.plain != '') { obj.changed = obj.focusWord; } else { obj.changed = obj.cursor; } } break; // multiple line changes: selectionLine / focusLine / cursor case 'wikEdDecreaseHeading': case 'wikEdIncreaseHeading': case 'wikEdIncreaseBulletList': case 'wikEdDecreaseBulletList': case 'wikEdIncreaseNumberList': case 'wikEdDecreaseNumberList': case 'wikEdIncreaseIndentList': case 'wikEdDecreaseIndentList': case 'wikEdDefinitionList': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { WikEdGetText(obj, 'selectionLine'); obj.changed = obj.selectionLine; } else { WikEdGetText(obj, 'focusLine'); if (obj.focusLine.plain != '') { obj.changed = obj.focusLine; } else { obj.changed = obj.cursor; } } break; // sort: selectionLine / focusLine case 'wikEdSort': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { WikEdGetText(obj, 'selectionLine'); obj.changed = obj.selectionLine; } else { WikEdGetText(obj, 'focusPara'); if (obj.focusPara.plain != '') { obj.changed = obj.focusPara; } } break; // image: selectionWord (if text is selected) / cursor case 'wikEdImage': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { WikEdGetText(obj, 'selectionWord'); obj.changed = obj.selectionWord; } else { obj.changed = obj.cursor; } break; // table: selectionLine / cursor case 'wikEdTable': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { WikEdGetText(obj, 'selectionLine'); obj.changed = obj.selectionLine; } else { WikEdGetText(obj, 'focusLine'); obj.changed = obj.cursor; } break; // wikify: selection / whole case 'wikEdWikify': if (parameters == 'whole') { WikEdGetText(obj, 'whole'); obj.changed = obj.whole; } else { WikEdGetText(obj, 'selection'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'whole'); obj.changed = obj.whole; } } break; // textify: selection / whole, without wikifying case 'wikEdTextify': WikEdGetText(obj, 'selection', false); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'whole', false); obj.changed = obj.whole; } break; // redirect: whole case 'wikEdRedirect': WikEdGetText(obj, 'whole, selection, cursor'); if (obj.selection.plain == '') { WikEdGetText(obj, 'selectionWord'); } obj.changed = obj.whole; break; // find and replace: selection / focusWord / cursor case 'wikEdFindPrev': case 'wikEdFindNext': case 'wikEdJumpPrev': case 'wikEdJumpNext': case 'wikEdReplacePrev': case 'wikEdReplaceNext': case 'wikEdFindAll': WikEdGetText(obj, 'selection'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusWord'); if (obj.focusWord.plain != '') { obj.changed = obj.focusWord; } else { obj.changed = obj.cursor; } } break; // replace all: selection / whole case 'wikEdReplaceAll': WikEdGetText(obj, 'selection'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'whole'); obj.changed = obj.whole; } break; // fixing buttons: selection / whole case 'wikEdFixBasic': case 'wikEdfixUnicode': case 'wikEdFixAll': case 'wikEdFixHtml': case 'wikEdFixRegExTypo': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'whole'); obj.changed = obj.whole } break; // fixing buttons: selection / focusPara / cursor case 'wikEdFixPunct': case 'wikEdFixMath': case 'wikEdFixUnits': case 'wikEdFixDashes': case 'wikEdFixCaps': case 'wikEdFixChem': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusPara'); if (obj.focusPara.plain != '') { obj.changed = obj.focusPara; } else { obj.changed = obj.cursor; } } break; // fixing buttons: selection / focusLine / cursor case 'wikEdFixChem': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusLine'); if (obj.focusPara.plain != '') { obj.changed = obj.focusLine; } else { obj.changed = obj.cursor; } } break; // source: selection / whole case 'wikEdSource': WikEdGetText(obj, 'selection'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'whole'); obj.changed = obj.whole; } break; // insert tags: selection / focusWord / cursor case 'wikEdInsertTags': WikEdGetText(obj, 'selection, cursor'); if (obj.selection.plain != '') { obj.changed = obj.selection; } else { WikEdGetText(obj, 'focusWord'); if (obj.focusWord.plain != '') { obj.changed = obj.focusWord; } else { obj.changed = obj.selection; } } break; // update text view using current control button settings case 'wikEdUpdateAll': WikEdGetText(obj, 'whole'); obj.changed = obj.whole; break; // custom edit functions have to call WikEdGetText() themselves default: WikEdGetText(obj, 'cursor'); obj.changed = obj.cursor; break; } // exit if (obj.changed == null) { wikEdFrameWindow.focus(); // reset button to active, reset cursor if (buttonObj != null) { if (buttonObj.className != 'wikEdButtonInactive') { buttonObj.className = 'wikEdButton'; } } return; } // set local syntax highlighting flag var highlightSyntax = wikEdHighlightSyntax; // manipulate the text var selectChanged = true; var selectChangedText = ''; switch (buttonId) { // undo case 'wikEdUndo': if (wikEdLastVersion == null) { wikEdLastVersion = obj.changed.plain; } WikEdFrameExecCommand('undo'); if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); obj.changed.plain = null; obj.changed.keepSel = true; break; // redo case 'wikEdRedo': WikEdFrameExecCommand('redo'); if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } obj.changed.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); obj.changed.plain = null; obj.changed.keepSel = true; break; // bold case 'wikEdBold': if ( /\'\'\'([^\'].*?)\'\'\'/.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/\'\'\'([^\'].*?)\'\'\'/g, '$1'); } else { obj.changed.plain = '\'\'\'' + obj.changed.plain + '\'\'\''; obj.changed.plain = obj.changed.plain.replace(/(\'\'\')( *)(.*?)( *)(\'\'\')/, '$2$1$3$5$4'); } obj.changed.plain = obj.changed.plain.replace(/\'{6,}/g, '\'\'\'\'\''); obj.changed.keepSel = true; break; // italic case 'wikEdItalic': if ( /(\'{3,})\'\'([^\'].*?)\'\'(\'{3,})/.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/(\'{3,})\'\'([^\'].*?)\'\'(\'{3,})/g, '$1$2$3'); } else if ( /(^|[^\'])\'\'([^\'].*?)\'\'([^\']|$)/.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/(^|[^\'])\'\'([^\'].*?)\'\'([^\']|$)/g, '$1$2$3'); } else { obj.changed.plain = '\'\'' + obj.changed.plain + '\'\''; obj.changed.plain = obj.changed.plain.replace(/(\'\')( *)(.*?)( *)(\'\')/, '$2$1$3$5$4'); } obj.changed.plain = obj.changed.plain.replace(/\'{6,}/g, '\'\'\'\'\''); obj.changed.keepSel = true; break; // underline case 'wikEdUnderline': if ( /<u>(.*?)<\/u>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<u>(.*?)<\/u>/gi, '$1'); } else { obj.changed.plain = '<u>' + obj.changed.plain + '<\/u>'; obj.changed.plain = obj.changed.plain.replace(/(<u>)( *)(.*?)( *)(<\/u>)/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // strikethrough case 'wikEdStrikethrough': if ( /<s>(.*?)<\/s>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<s>(.*?)<\/s>/gi, '$1'); } else { obj.changed.plain = '<s>' + obj.changed.plain + '<\/s>'; obj.changed.plain = obj.changed.plain.replace(/(<s>)( *)(.*?)( *)(<\/s>)/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // nowiki case 'wikEdNowiki': if ( /<nowiki>(.*?)<\/nowiki>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<nowiki>(.*?)<\/nowiki>/gi, '$1'); } else { obj.changed.plain = '<nowiki>' + obj.changed.plain + '<\/nowiki>'; obj.changed.plain = obj.changed.plain.replace(/(<nowiki>)( *)(.*?)( *)(<\/nowiki>)/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // superscript case 'wikEdSuperscript': obj.changed.plain = obj.changed.plain.replace(/^(\s*)<sub>(.*?)<\/sub>(\s*)$/, '$1$2$3'); if ( /<sup>(.*?)<\/sup>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<sup>(.*?)<\/sup>/gi, '$1'); } else { obj.changed.plain = '<sup>' + obj.changed.plain + '</sup>'; obj.changed.plain = obj.changed.plain.replace(/(<sup>)( *)(.*?)( *)(<\/sup>)/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // subscript case 'wikEdSubscript': obj.changed.plain = obj.changed.plain.replace(/^(\s*)<sup>(.*?)<\/sup>(\s*)$/, '$1$2$3'); if ( /<sub>(.*?)<\/sub>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<sub>(.*?)<\/sub>/gi, '$1'); } else { obj.changed.plain = '<sub>' + obj.changed.plain + '</sub>'; obj.changed.plain = obj.changed.plain.replace(/(<sub>)( *)(.*?)( *)(<\/sub>)/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // in-text reference case 'wikEdRef': case 'wikEdRefNamed': if (obj.changed.plain == '') { if (buttonId == 'wikEdRef') { obj.changed.plain = '<ref />'; } else { obj.changed.plain = '<ref name=\"\"/>'; } } else if ( /<ref( name=\"\")? ?\/>/i.test(obj.changed.plain) ) { obj.changed.plain = ''; } else if ( /<ref( name=\"\")?>(.*?)<\/ref>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<ref( name=\"\")?>(.*?)<\/ref>/gi, '$2'); } else { if (buttonId == 'wikEdRef') { obj.changed.plain = '<ref>' + obj.changed.plain + '</ref>'; } else { obj.changed.plain = '<ref name=\"\">' + obj.changed.plain + '</ref>'; } obj.changed.plain = obj.changed.plain.replace(/(<ref( name=\"\")?>)( *)(.*?)( *)(<\/ref>)/, '$3$1$4$6$5'); } obj.changed.keepSel = true; break; // references location case 'wikEdReferences': case 'wikEdReferencesSection': var ref = wikEdText['wikEdReferencesSection']; ref = ref.replace(/</g, '<'); ref = ref.replace(/>/g, '>'); var refEscaped = ref; refEscaped = refEscaped.replace(/([^\w\s\;\&])/g, '\\$1'); refEscaped = refEscaped.replace(/^\n|\n$/g, '\\n*'); refEscaped = refEscaped.replace(/(\n)/g, '\\n'); var regExp = new RegExp(refEscaped, 'gi'); // plain references tag if (buttonId == 'wikEdReferences') { if (obj.changed.plain == '') { obj.changed.plain = '<references/>'; } else if (regExp.test(obj.changed.plain) == true) { obj.changed.plain = obj.changed.plain.replace(regExp, ''); } else if ( /<references ?\/>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<references ?\/>/gi, ''); } else { obj.changed = obj.cursor; obj.changed.plain = '<references/>'; } } // complete references code else { if (obj.changed.plain == '') { obj.changed.plain = ref; } else if (regExp.test(obj.changed.plain) == true) { obj.changed.plain = obj.changed.plain.replace(regExp, ''); } else if ( /<references ?\/>/i.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/<references ?\/>/gi, ''); } else { obj.changed = obj.cursor; obj.changed.plain = ref; } } obj.changed.keepSel = true; break; // toggle lowercase / uppercase case 'wikEdCase': // lowercase all uppercased text if (obj.changed.plain == '') { obj.changed.plain = null; } else { // html character entities to chars var plain = obj.changed.plain; plain = plain.replace(/>/g, '>'); plain = plain.replace(/</g, '<'); plain = plain.replace(/&/g, '&'); if (plain.toUpperCase() == plain) { plain = plain.toLowerCase(); } // first-letter-uppercase all lowercased text else if (plain.toLowerCase() == plain) { plain = plain.replace(/\b([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9])([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\']*)/g, function (p, p1, p2) { return(p1.toUpperCase() + p2.toLowerCase()); } ); } // uppercase mixed upper and lowercased text else { plain = plain.toUpperCase(); } // chars back to html character entities plain = plain.replace(/&/g, '&'); plain = plain.replace(/</g, '<'); plain = plain.replace(/>/g, '>'); obj.changed.plain = plain; } obj.changed.keepSel = true; break; // sort alphabetically by visible words, case insensitive, and numerically case 'wikEdSort': // fix unicode and character entities WikEdFixUnicode(obj.changed); // keep leading and trailing empty lines and table syntax var pre = ''; var main = ''; var post = ''; var regExpMatch = /^(((\{\|.*|!.*|\|\+.*|\|\-.*|)\n)*)((.|\n)*?)(((\|\}.*|\|\-.*|)\n)*)$/.exec(obj.changed.plain); if (regExpMatch != null) { pre = regExpMatch[1]; main = regExpMatch[4]; post = regExpMatch[6]; } else { main = obj.changed.plain; } // join cells in table rows main = main.replace(/(^|\n)(\|[^\-\+\}](.|\n)*?(?=(\|\-|\{\||\|\}|$)|$))/g, function(p, p1, p2) { p2 = p2.replace(/\n/g, '\u0000'); return(p1 + p2); } ); // cycle through lines var lines = main.split('\n'); var sortArray = []; for (var i = 0; i < lines.length; i ++) { var line = lines[i]; var sortKey = line; // remove empty lines if (line == '') { continue; } // remove html sortKey = sortKey.replace(/<.*>/g, ''); // keep visible text of wikilinks only sortKey = sortKey.replace(/\[\[[^\|\[\]\n]*\|([^\[\]]*)\]\]/g, '$1'); // keep visible text of external links only sortKey = sortKey.replace(/\[[^ ]+ +([^\[\]\n]*)\]/g, '$1'); // keep visible cell content only sortKey = sortKey.replace(/^\|[^\+\-\}\[\]][^\[\]\{\}\u0000]*\| */, ''); // keep single ' only sortKey = sortKey.replace(/\'{2,}/g, ''); // remove decimal commas sortKey = sortKey.replace(/(\d)\,(?=\d\d\d(\D|$))/g, '$1'); // sort numerically by adding preceeding 0s to numbers sortKey = sortKey.replace(/0*(\d+)(\.\d*)?/g, '000000000000000'.substr('$1'.length) + '$1$2'); // non-breaking spaces sortKey = sortKey.replace(/ |\u00a0/g, ' '); // join multiple spaces sortKey = sortKey.replace(/ +/g, ' '); // remove non-chars but not spaces sortKey = sortKey.replace(/[^\.\,\:\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\s\']/, ''); // remove leading and trailing spaces sortKey = sortKey.replace(/^ +| +$/g, ''); sortArray.push( [line, sortKey] ); } // sort lines sortArray = sortArray.sort( function(a, b) { if (a[1].toLowerCase() <= b[1].toLowerCase()) { return(-1); } else { return(1); } } ); // join lines var joined = ''; for (var i = 0; i < sortArray.length; i ++) { joined += sortArray[i][0]; if (i < sortArray.length - 1) { joined += '\n'; } } joined = joined.replace(/\u0000/g, '\n'); obj.changed.plain = pre + joined + post; obj.changed.keepSel = true; break; // undo all case 'wikEdUndoAll': if (wikEdLastVersion == null) { wikEdLastVersion = obj.changed.plain; } obj.changed.plain = wikEdOrigVersion; obj.changed.plain = obj.changed.plain.replace(/&/g, '&'); obj.changed.plain = obj.changed.plain.replace(/>/g, '>'); obj.changed.plain = obj.changed.plain.replace(/</g, '<'); break; // redo all case 'wikEdRedoAll': if (wikEdLastVersion != null) { obj.changed.plain = wikEdLastVersion; } break; // create wikilink case 'wikEdWikiLink': if ( /\[\[(.*?)\]\]/.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/\[\[(.*?)\]\]/g, '$1'); } else { obj.changed.plain = '\[\[' + obj.changed.plain + '\]\]'; obj.changed.plain = obj.changed.plain.replace(/(\[\[)( *)(.*?)( *)(\]\])/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // create weblink case 'wikEdWebLink': if ( /\[(.*?)\]/.test(obj.changed.plain) ) { obj.changed.plain = obj.changed.plain.replace(/\[(.*?)\]/g, '$1'); } else { obj.changed.plain = '\[' + obj.changed.plain + '\]'; obj.changed.plain = obj.changed.plain.replace(/(\[)( *)(.*?)( *)(\])/, '$2$1$3$5$4'); } obj.changed.keepSel = true; break; // decrease heading level case 'wikEdDecreaseHeading': // decrease heading obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(=+) *([^\n]*?) *=+(?=\n|$)/g, '$1$2 $3 $2'); // remove heading obj.changed.plain = obj.changed.plain.replace(/(^|\n)=(?!=) *([^\n]*?) *=+(?=\n|$)/g, '$1$2'); // adjust closing tags obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *([^\n]*?) *=+(?=\n|$)/g, '$1$2 $3 $2'); obj.changed.keepSel = true; break; // increase heading level case 'wikEdIncreaseHeading': // increase heading obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *([^\n]*?) *=+(?=\n|$)/g, '$1=$2 $3 $2='); // create new heading if (/\n/.test(obj.changed.plain) == false) { obj.changed.plain = obj.changed.plain.replace(/(^|\n)([^=\n\s][^\n]*?)(?=\n|$)/g, '$1== $2 =='); } // adjust closing tags obj.changed.plain = obj.changed.plain.replace(/(^|\n)(=+) *([^\n]*?) *=+(?=\n|$)/g, '$1$2 $3 $2'); obj.changed.keepSel = true; break; // increase bullet list case 'wikEdIncreaseBulletList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^ *([\*\#\:\;]*) *()/g, '*$1 '); return(p1); } ); obj.changed.keepSel = true; break; // decrease bullet list case 'wikEdDecreaseBulletList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^[\*\#\:\;] *()/g, ''); return(p1); } ); obj.changed.keepSel = true; break; // increase numbered list case 'wikEdIncreaseNumberList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^ *([\*\#\:\;]*) *()/g, '#$1 '); return(p1); } ); obj.changed.keepSel = true; break; // decrease numbered list case 'wikEdDecreaseNumberList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^[\*\#\:\;] *()/g, ''); return(p1); } ); obj.changed.keepSel = true; break; // increase indented list case 'wikEdIncreaseIndentList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^ *([\*\#\:\;]*) *()/g, ':$1 '); return(p1); } ); obj.changed.keepSel = true; break; // decrease indented list case 'wikEdDecreaseIndentList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^[\*\#\:\;] *()/g, ''); return(p1); } ); obj.changed.keepSel = true; break; // create definition list case 'wikEdDefinitionList': obj.changed.plain = obj.changed.plain.replace(/([^\n]+)/g, function (p, p1) { p1 = p1.replace(/^ *([^\s\;]+) *()/g, '; $1 : '); return(p1); } ); break; // create image case 'wikEdImage': if (obj.changed.plain != '') { obj.changed.plain = '[[Image:<span class="wikEdInsertHere">' + wikEdText['image filename'] + '</span>|thumb|<span class="wikEdInsertHere">' + wikEdText['image width'] + '</span>px|' + obj.changed.plain + ']]'; } else { obj.changed.plain = '[[Image:<span class="wikEdInsertHere">' + wikEdText['image filename'] + '</span>|thumb|<span class="wikEdInsertHere">' + wikEdText['image width'] + '</span>px|<span class="wikEdInsertHere"> </span>]]'; if (obj.focusWord != null) { if (obj.focusWord.plain != '') { obj.changed.plain = ' ' + obj.changed.plain + ' '; } } } break; // create table case 'wikEdTable': if (obj.changed.plain != '') { obj.changed.plain = obj.changed.plain.replace(/(^|\n) *()/g, '\n|-\n| '); obj.changed.plain = obj.changed.plain.replace(/^\n\|\-\n/, '\n{| class="wikitable" border="1"\n'); obj.changed.plain = obj.changed.plain.replace(/$/g, '\n|}\n'); } else { obj.changed.plain = '\n{| class="wikitable" border="1"\n|+ <span class="wikEdInsertHere">' + wikEdText['table caption'] + '</span>\n! <span class="wikEdinserthere">' + wikEdText['table heading'] + '</span> !! <span class="wikEdInsertHere">' + wikEdText['table heading'] + '</span>\n|-\n| <span class="wikEdInsertHere">' + wikEdText['table cell'] + '</span> || <span class="wikEdInsertHere">' + wikEdText['table cell'] + '</span>\n|-\n| <span class="wikEdInsertHere">' + wikEdText['table cell'] + '</span> || <span class="wikEdInsertHere">' + wikEdText['table cell'] + '</span>\n|}\n'; if (obj.focusLine.plain != '') { obj.changed.plain = '\n' + obj.changed.plain + '\n'; } } break; // wikify: always done above case 'wikEdWikify': break; // textify: strip html from pasted content case 'wikEdTextify': WikEdTextify(obj.changed); break; // redirect case 'wikEdRedirect': var linkTarget; if (obj.selection.plain != '') { linkTarget = obj.selection.plain; } else if (obj.selectionWord.plain != '') { linkTarget = obj.selectionWord.plain; } else { linkTarget = '<span class="wikEdInsertHere">' + wikEdText['redirect article link'] + '</span>'; } // remove link text after | linkTarget = linkTarget.replace(/\|.*()/, ''); // remove formatting and spaces linkTarget = linkTarget.replace(/^(=+|\'+|<[^>]*>|\s+|\[)+(.*?)(=+|\'+|<[^>]*>|\s+|\])+$/g, '$2'); linkTarget = linkTarget.replace(/\s+/g, ' '); linkTarget = linkTarget.replace(/^\s+|\s+$/g, ''); obj.changed.plain = '#REDIRECT [[' + linkTarget + ']]'; // append to summary if (wikEdInputElement['summary'] != null) { if ( (obj.selection.plain != '') || (obj.selectionWord.plain != '') ) { wikEdInputElement['summary'].value = wikEdInputElement['summary'].value.replace(/#REDIRECT( \[\[[^\]]*\]\])?(, *)?/g, ''); wikEdInputElement['summary'].value = WikEdAppendToSummary(wikEdInputElement['summary'].value, '#REDIRECT [[' + linkTarget + ']]'); } else { wikEdInputElement['summary'].value = WikEdAppendToSummary(wikEdInputElement['summary'].value, '#REDIRECT'); } } selectChanged = false; break; // find and replace case 'wikEdFindPrev': case 'wikEdFindNext': case 'wikEdJumpPrev': case 'wikEdJumpNext': case 'wikEdReplacePrev': case 'wikEdReplaceNext': case 'wikEdFindAll': case 'wikEdReplaceAll': // get the find text var findText; // unescape <, >, and & obj.changed.plain = obj.changed.plain.replace(/</g, '<'); obj.changed.plain = obj.changed.plain.replace(/>/g, '>'); obj.changed.plain = obj.changed.plain.replace(/&/g, '&'); // copy selection/word under cursor to find field if ( (parameters == 'shift') && ( (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdReplaceNext') ) ) { if (/\n/.test(obj.changed.plain) == false) { if (buttonId == 'wikEdFindNext') { wikEdInputElement['find'].value = obj.changed.plain; } else { wikEdInputElement['replace'].value = obj.changed.plain; } obj.changed.keepSel = true; obj.changed.plain = null; break; } } // get the find text from the find field if ( (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) { findText = obj.changed.plain; if (obj.selection.plain == '') { obj.changed.keepSel = true; obj.changed.plain = null; break; } } // get the find text from the find field else { if (wikEdInputElement['find'].value != '') { findText = wikEdInputElement['find'].value; } else { obj.changed.plain = null; break; } } // get button status var regExpChecked = WikEdGetAttribute(wikEdRegExp, 'checked'); var caseSensitiveChecked = WikEdGetAttribute(wikEdCaseSensitive, 'checked'); // handle newlines and special blanks for built-in search if (regExpChecked == 'false') { findText = findText.replace(/\n/g, ''); findText = findText.replace(/\s/g, ' '); } // get the replace text var replaceText = wikEdInputElement['replace'].value; var regExpFind; // set regexp flags var regExpFlags = 'g'; if (caseSensitiveChecked == 'false') { regExpFlags += 'i'; } // format the find and replace texts for a plain text search if ( (regExpChecked == 'false') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdJumpNext') ) { regExpFind = new RegExp(findText.replace(/([\\^\$\*\+\?\.\(\)\[\]\{\}\:\=\!\|\,\-])/g, '\\$1'), regExpFlags); } // format the find and replace texts for a regular expression search else { try { regExpFind = new RegExp(findText, regExpFlags); } catch (err) { return; } // substitute \\ \n \r \t \' \" \127 \x1f \u12ef replaceText = replaceText.replace(/\\\\/g, '\u0000'); replaceText = replaceText.replace(/\\n/g, '\n'); replaceText = replaceText.replace(/\\r/g, '\r'); replaceText = replaceText.replace(/\\t/g, '\t'); replaceText = replaceText.replace(/\\\'/g, '\''); replaceText = replaceText.replace(/\\\"/g, '\"'); replaceText = replaceText.replace(/\\([0-7]{3})/g, function(p, p1) { return(String.fromCharCode(parseInt(p1, 8))); } ); replaceText = replaceText.replace(/\\x([0-9a-fA-F]{2})/g, function(p, p1) { return(String.fromCharCode(parseInt(p1, 16))); } ); replaceText = replaceText.replace(/\\u([0-9a-fA-F]{4})/g, function(p, p1) { return(String.fromCharCode(parseInt(p1, 16))); } ); replaceText = replaceText.replace(/\u0000/g, '\\'); } // replace all var replacedFlag = false; if (buttonId == 'wikEdReplaceAll') { if (regExpFind.test(obj.changed.plain)) { obj.changed.plain = obj.changed.plain.replace(regExpFind, replaceText); replacedFlag = true; } else { obj.changed.plain = null; } } // replace an existing selection else if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') ) { if (regExpFind.test(obj.selection.plain)) { var replaced = obj.selection.plain.replace(regExpFind, replaceText); if (obj.changed.plain != replaced) { obj.changed.plain = replaced; replacedFlag = true; } else { obj.changed.plain = null; } } else { obj.changed.plain = null; } } else if ( (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdJumpNext') || (buttonId == 'wikEdJumpPrev') ) { obj.changed.plain = null; } if ( (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdJumpNext') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdFindAll') ) { if (replacedFlag == false) { // get direction var backwards = false; if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdJumpPrev') || (buttonId == 'wikEdReplacePrev') ) { backwards = true; } // get case sensitive var caseSensitive = false; if (caseSensitiveChecked == 'true') { caseSensitive = true; } // find all if (buttonId == 'wikEdFindAll') { var found; var foundRanges = []; // start at top of text WikEdRemoveAllRanges(obj.sel); var range = wikEdFrameDocument.createRange(); range.setStartBefore(wikEdFrameBody.firstChild); range.collapse(true); range = obj.sel.addRange(range); // cycle through matches var scrollTop = wikEdFrameBody.scrollTop; do { // use regexp seach if (regExpChecked == 'true') { found = WikEdFind(obj, findText, caseSensitive, false, false, regExpFind); } // use built-in sarch else { found = WikEdFind(obj, findText, caseSensitive, false, false, null); } if (found == true) { foundRanges.push(obj.changed.range.cloneRange()); } } while (found == true); // scroll back if (regExpChecked == 'false') { wikEdFrameBody.scrollTop = scrollTop; } // add the found ranges WikEdRemoveAllRanges(obj.sel); for (range in foundRanges) { obj.sel.addRange(foundRanges[range]); } obj.changed.plain = null; } // normal find else { if (regExpChecked == 'true') { WikEdFind(obj, findText, caseSensitive, backwards, true, regExpFind); } else { WikEdFind(obj, findText, caseSensitive, backwards, true, null); selectChanged = false; } } } } // escape <, >, and & if (obj.changed.plain != null) { obj.changed.plain = obj.changed.plain.replace(/&/g, '&'); obj.changed.plain = obj.changed.plain.replace(/</g, '<'); obj.changed.plain = obj.changed.plain.replace(/>/g, '>'); } // save search history to settings if ( (buttonId == 'wikEdFindPrev') || (buttonId == 'wikEdFindNext') || (buttonId == 'wikEdFindAll') ) { WikEdAddToHistory('find'); } if ( (buttonId == 'wikEdReplacePrev') || (buttonId == 'wikEdReplaceNext') || (buttonId == 'wikEdReplaceAll') ) { WikEdAddToHistory('find'); WikEdAddToHistory('replace'); } obj.changed.keepSel = true; break; // fixbasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions // to do: only certain changes in multiline tags: comments, tables, subst case 'wikEdFixBasic': WikEdFixBasic(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixPunct': WikEdFixPunct(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixMath': WikEdFixMath(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixChem': WikEdFixChem(obj.changed); obj.changed.keepSel = true; break; case 'wikEdfixUnicode': WikEdFixUnicode(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixUnits': WikEdFixUnits(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixDashes': WikEdFixDashes(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixHtml': WikEdFixHTML(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixRegExTypo': if ( (wikEdRegExTypoFix == true) && (wikEdTypoRulesFind.length > 0) ) { WikEdFixTypos(obj.changed); } else { obj.changed.plain = null; } obj.changed.keepSel = true; break; case 'wikEdFixCaps': WikEdFixCaps(obj.changed); obj.changed.keepSel = true; break; case 'wikEdFixAll': WikEdFixAll(obj.changed); obj.changed.keepSel = true; break; // source on case 'wikEdSource': obj.changed.plain = obj.changed.code; obj.changed.plain = obj.changed.plain.replace(/(<(br|p)\b[^>]*>)/g, '$1\n'); obj.changed.plain = obj.changed.plain.replace(/&/g, '&'); obj.changed.plain = obj.changed.plain.replace(/</g, '<'); obj.changed.plain = obj.changed.plain.replace(/>/g, '>'); highlightSyntax = false; break; // insert tags case 'wikEdInsertTags': var tagOpen = parameters[0] || ''; var tagClose = parameters[1] || ''; var sampleText = parameters[2] || ''; tagOpen = tagOpen.replace(/&/g, '&'); tagOpen = tagOpen.replace(/</g, '<'); tagOpen = tagOpen.replace(/>/g, '>'); tagClose = tagClose.replace(/&/g, '&'); tagClose = tagClose.replace(/</g, '<'); tagClose = tagClose.replace(/>/g, '>'); tagsampleText = sampleText.replace(/&/g, '&'); tagsampleText = sampleText.replace(/</g, '<'); tagsampleText = sampleText.replace(/>/g, '>'); // single string to insert if ( (tagOpen.length > 0) && (tagClose.length == 0) && (sampleText.length == 0) ) { obj.changed = obj.cursor; obj.changed.plain = tagOpen; } // opening and closing strings else if ( (obj.changed.plain == '') && (sampleText.length > 0) ) { obj.changed.plain = tagOpen + sampleText + tagClose; // select sample text selectChangedText = sampleText; obj.changed.keepSel = true; } else { obj.changed.plain = tagOpen + obj.changed.plain + tagClose; } break; // update text view using current control button settings // {{TABLE}} case 'wikEdUpdateAll': obj.changed.keepSel = true; if (parameters != null) { if (parameters.keepSel == false) { obj.changed.keepSel = false; } } break; // custom edit functions default: if (CustomHandler != null) { CustomHandler(obj); } else { alert('Unknown edit function \'' + buttonId + '\''); } break; } // update the selection only, do not change the text if (obj.changed.plain == null) { if (buttonId != 'wikEdFindAll') { WikEdRemoveAllRanges(obj.sel); obj.sel.addRange(obj.changed.range); // scroll the selected text into the viewport by using a backwards find if (selectChanged != false) { // get the plain text of the selection if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } var plainText = obj.sel.getRangeAt(obj.sel.rangeCount - 1).cloneContents().textContent; // collapse the selection to the end and search backwards if (plainText.length > 0) { plainText = plainText.replace(/\n/g, ''); obj.changed.range.collapse(false); // parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) wikEdFrameWindow.find(plainText, true, true, false, false, false, false); } } } } // apply text changes else { // a text change erases the last version for redo all if ( (buttonId != 'wikEdUndo') && (buttonId != 'wikEdRedo') && (buttonId != 'wikEdUndoAll') ) { wikEdLastVersion = null; } // highlight the syntax obj.html = obj.changed.plain; if (highlightSyntax == true) { if (obj.changed.from == 'whole') { obj.whole = true; } WikEdHighlightSyntax(obj); } // display tabs else { obj.html = obj.html.replace(/(\t)/g, '<span class="wikEdTabPlain">$1</span><!--wikEdTabPlain-->'); } // display multiple blanks as blank- obj.html = obj.html.replace(/(^|\n) /g, '$1 '); obj.html = obj.html.replace(/ (\n|$)/g, ' $1'); obj.html = obj.html.replace(/ /g, ' '); obj.html = obj.html.replace(/ /g, ' '); // newlines to <br /> obj.html = obj.html.replace(/\n/g, '<br />'); // make changed range text the current selection WikEdRemoveAllRanges(obj.sel); obj.sel.addRange(obj.changed.range); //// range over <br> not handled correctly by Seamonkey // get the scroll position var scrollTop; if (obj.changed.from == 'whole') { scrollTop = wikEdFrameBody.scrollTop; } // replace the selection with changed text if (obj.html != '') { WikEdFrameExecCommand('inserthtml', obj.html); } else if (obj.sel.isCollapsed == false) { WikEdFrameExecCommand('delete'); } // select the whole text after replacing the whole text and scroll to same height if (obj.changed.from == 'whole') { WikEdRemoveAllRanges(obj.sel); wikEdFrameBody.scrollTop = scrollTop; var range = wikEdFrameDocument.createRange(); range.setStartBefore(wikEdFrameBody.firstChild); range.setEndAfter(wikEdFrameBody.lastChild); obj.sel.addRange(range); selectChanged = false; } // select the changed text and scroll it into the viewport by using a backwards find if (selectChanged != false) { // get the text content of the changed text if (selectChangedText == '') { var div = document.createElement('div'); div.innerHTML = obj.changed.plain; selectChangedText = div.textContent; } // find the text if (selectChangedText.length > 0) { selectChangedText = selectChangedText.replace(/\n/g, ''); // parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) if (selectChangedText != '') { wikEdFrameWindow.find(selectChangedText, true, true, false, false, false, false); } } } } // remove selection, keep whole text auto-selection as warning if ( ( (obj.changed.keepSel != true) && (obj.changed.from != 'whole') ) || (obj.changed.keepSel == false) || (buttonId == 'wikEdRedirect') || ( (buttonId == 'wikEdWikify') && (parameters == 'whole') ) ) { if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } else { obj.sel.getRangeAt(obj.sel.rangeCount - 1).collapse(false); } } // reset button to active, reset cursor if (buttonObj != null) { if (buttonObj.className != 'wikEdButtonInactive') { buttonObj.className = 'wikEdButton'; } buttonObj.style.cursor = 'auto'; } // grey out inactive buttons WikEdInactiveButtons(); // reset the frame DOM cache because the frame content has been changed wikEdFrameDOMCache = null; // focus the frame if (wikEdUseWikEd == true) { wikEdFrameWindow.focus(); } // add event handler to make highlighted frame links ctrl-clickable if ( (highlightSyntax == true) && (obj.changed.plain != null) ) { WikEdFollowLinks(); } return; } // // WikEdScrollToPreview: scroll to buttons, textarea, or preview field depending on current position // window.WikEdScrollToPreview = function() { var scrollOffset = window.pageYOffset; var inputOffset = WikEdGetOffsetTop(wikEdInputWrapper); var textareaOffset = WikEdGetOffsetTop(wikEdTextareaWrapper); var submitOffset = WikEdGetOffsetTop(wikEdSaveButton); if (scrollOffset > submitOffset) { window.scroll(0, submitOffset); } else if (scrollOffset > (submitOffset - textareaOffset) / 3 * 2 + textareaOffset) { window.scroll(0, submitOffset); } else if (scrollOffset > textareaOffset) { window.scroll(0, textareaOffset); } else { window.scroll(0, inputOffset); } return; } // // WikEdFollowLinks: register click handlers to make highlighted frame links ctrl-clickable // window.WikEdFollowLinks = function() { if (wikEdFollowLinks == true) { for (var linkId in wikEdFollowLinkHash) { if (typeof(wikEdFollowLinkHash[linkId]) != 'string') { continue; } var linkSpan = wikEdFrameDocument.getElementById(linkId); if (linkSpan != null) { WikEdAddEventListener(linkSpan, 'click', WikEdFollowLinkHandler, true); } } } return; } // // WikEdGetText: get the text fragments to manipulate // window.WikEdGetText = function(obj, whichFragment, wikify) { // get selection object if (obj.sel == null) { obj.sel = WikEdGetSelection(); } // cursor for the cursor position (always done) if (obj.cursor == null) { obj.cursor = { 'from': 'cursor', 'keepSel': null, 'plain': '' }; // set cursor range obj.cursor.range = wikEdFrameDocument.createRange(); obj.cursor.range.setStart(obj.sel.focusNode, obj.sel.focusOffset); obj.cursor.range.setEnd(obj.sel.focusNode, obj.sel.focusOffset); } // whole for the whole text if (obj.whole == null) { if (/whole|selectionWord|selectionLine|selectionPara|focusWord|focusLine|focusPara/.test(whichFragment) == true) { obj.whole = { 'plainArray': [], 'plainNode': [], 'plainStart': [], 'from': 'whole', 'keepSel': null }; // set whole range obj.whole.range = wikEdFrameDocument.createRange(); obj.whole.range.setStartBefore(wikEdFrameBody.firstChild); obj.whole.range.setEndAfter(wikEdFrameBody.lastChild); // get whole plain text WikEdGetInnerHTML(obj.whole, wikEdFrameBody); obj.whole.code = obj.whole.html; WikEdRemoveHighlightingWikify(obj.whole, wikify); obj.whole.plain = obj.whole.html; obj.whole.plain = obj.whole.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.whole.plain = obj.whole.plain.replace(/\u00a0/g, ' '); } } // selection for the selected text if (obj.selection == null) { if (/selection\b|selectionWord|selectionLine|selectionPara/.test(whichFragment) == true) { obj.selection = { 'from': 'selection', 'keepSel': null }; // copy range to document fragment if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } obj.selection.range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); var documentFragment = obj.selection.range.cloneContents(); // get selected text WikEdGetInnerHTML(obj.selection, documentFragment); obj.selection.code = obj.selection.html; WikEdRemoveHighlightingWikify(obj.selection, wikify); obj.selection.plain = obj.selection.html; obj.selection.plain = obj.selection.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.selection.plain = obj.selection.plain.replace(/\u00a0/g, ' '); } } // focusWord, focusLine, and focusPara for the word, line, and paragraph under the cursor if (obj.focusWord == null) { if (/focusWord|focusLine|focusPara/.test(whichFragment) == true) { obj.focusWord = { 'from': 'focusWord', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // setup focusLine object for the line under the cursor obj.focusLine = { 'from': 'focusLine', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // setup focusPara object for the paragraph under the cursor obj.focusPara = { 'from': 'focusPara', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // find the word and line boundaries WikEdFindBoundaries(obj.focusWord, obj.focusLine, obj.focusPara, obj.whole, obj.cursor); // get the wikified plain text for the word under the cursor var documentFragment = obj.focusWord.range.cloneContents(); WikEdGetInnerHTML(obj.focusWord, documentFragment); obj.focusWord.code = obj.focusWord.html; WikEdRemoveHighlightingWikify(obj.focusWord, wikify); obj.focusWord.plain = obj.focusWord.html; obj.focusWord.plain = obj.focusWord.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.focusWord.plain = obj.focusWord.plain.replace(/\u00a0/g, ' '); // get the wikified plain text for the line under the cursor var documentFragment = obj.focusLine.range.cloneContents(); WikEdGetInnerHTML(obj.focusLine, documentFragment); obj.focusLine.code = obj.focusLine.html; WikEdRemoveHighlightingWikify(obj.focusLine, wikify); obj.focusLine.plain = obj.focusLine.html; obj.focusLine.plain = obj.focusLine.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.focusLine.plain = obj.focusLine.plain.replace(/\u00a0/g, ' '); // get the wikified plain text for the paragraph under the cursor var documentFragment = obj.focusPara.range.cloneContents(); WikEdGetInnerHTML(obj.focusPara, documentFragment); obj.focusPara.code = obj.focusPara.html; WikEdRemoveHighlightingWikify(obj.focusPara, wikify); obj.focusPara.plain = obj.focusPara.html; obj.focusPara.plain = obj.focusPara.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.focusPara.plain = obj.focusPara.plain.replace(/\u00a0/g, ' '); } } // selectionWord and selectionLine for the complete words and lines under the selection if (obj.selectionWord == null) { if (/selectionWord|selectionLine|selectionPara/.test(whichFragment) == true) { // setup selectionWord object for the words under the selection obj.selectionWord = { 'from': 'selectionWord', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // setup selectionLine object for the lines under the selection obj.selectionLine = { 'from': 'selectionLine', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // setup focusPara object for the paragraph under the selection obj.selectionPara = { 'from': 'selectionPara', 'keepSel': false, 'range': wikEdFrameDocument.createRange(), 'tableEdit': obj.tableEdit }; // find the word and line boundaries WikEdFindBoundaries(obj.selectionWord, obj.selectionLine, obj.selectionPara, obj.whole, obj.selection); // get the wikified plain text for the words under the selection var documentFragment = obj.selectionWord.range.cloneContents(); WikEdGetInnerHTML(obj.selectionWord, documentFragment); obj.selectionWord.code = obj.selectionWord.html; WikEdRemoveHighlightingWikify(obj.selectionWord, wikify); obj.selectionWord.plain = obj.selectionWord.html; obj.selectionWord.plain = obj.selectionWord.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.selectionWord.plain = obj.selectionWord.plain.replace(/\u00a0/g, ' '); // get the wikified plain text for the lines under the selection var documentFragment = obj.selectionLine.range.cloneContents(); WikEdGetInnerHTML(obj.selectionLine, documentFragment); obj.selectionLine.code = obj.selectionLine.html; WikEdRemoveHighlightingWikify(obj.selectionLine, wikify); obj.selectionLine.plain = obj.selectionLine.html; obj.selectionLine.plain = obj.selectionLine.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.selectionLine.plain = obj.selectionLine.plain.replace(/\u00a0/g, ' '); // get the wikified plain text for the paragraph under the selection var documentFragment = obj.selectionPara.range.cloneContents(); WikEdGetInnerHTML(obj.selectionPara, documentFragment); obj.selectionPara.code = obj.selectionPara.html; WikEdRemoveHighlightingWikify(obj.selectionPara, wikify); obj.selectionPara.plain = obj.selectionPara.html; obj.selectionPara.plain = obj.selectionPara.plain.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.selectionPara.plain = obj.selectionPara.plain.replace(/\u00a0/g, ' '); } } return; } // // WikEdFind: custom find function with regexp properties, sets obj.changed.range, uses obj ranges // window.WikEdFind = function(obj, findText, caseSensitive, backwards, wrap, regExp) { if (obj.sel.rangeCount == 0) { obj.sel.collapse(wikEdFrameBody, 0); } var range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); var found = false; // empty the range to avoid error messages for reverse direction ranges obj.changed.range = wikEdFrameDocument.createRange(); // use the fast built-in find function for non-regexp searches if (regExp == null) { // parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) found = wikEdFrameWindow.find(findText, caseSensitive, backwards, wrap, false, true, false); if (found == true) { range = obj.sel.getRangeAt(obj.sel.rangeCount - 1); } obj.changed.range = range.cloneRange(); } // slow javascript regexp find and replace else { // perform find if (obj.plainArray === undefined) { WikEdParseDOM(obj, wikEdFrameBody); } var regExpMatch = []; // find next, search to the right if (backwards == false) { // set start position for search to right regExpMatch = regExp.exec(obj.plain); regExp.lastIndex = obj.plainFocus; // execute the regexp search to the right regExpMatch = regExp.exec(obj.plain); // remember position for repeated searches obj.plainFocus = regExp.lastIndex; // wrap around, start at beginning if ( (wrap == true) && (regExpMatch == null) ) { regExp.lastIndex = 0; regExpMatch = regExp.exec(obj.plain); } } // find previous, search to the left else { // cycle through the matches to the left var regExpMatchNext; do { regExpMatch = regExpMatchNext; regExpMatchNext = regExp.exec(obj.plain); if (regExpMatchNext == null) { break; } } while (regExpMatchNext.index < obj.plainAnchor); // wrap around, find last occurrence if ( (wrap == true) && (regExpMatch == null) ) { do { regExpMatch = regExpMatchNext; regExpMatchNext = regExp.exec(obj.plain); } while (regExpMatchNext != null); } } // select the find if (regExpMatch != null) { found = true; var i = 0; while ( (obj.plainStart[i + 1] <= regExpMatch.index) && (obj.plainStart[i + 1] != null) ) { i ++; } var j = i; while ( (obj.plainStart[j + 1] <= regExpMatch.index + regExpMatch[0].length) && (obj.plainStart[j + 1] != null) ) { j ++; } obj.changed.range.setStart(obj.plainNode[i], regExpMatch.index - obj.plainStart[i]); obj.changed.range.setEnd (obj.plainNode[j], regExpMatch.index + regExpMatch[0].length - obj.plainStart[j]); } } //// range over <br> not handled correctly by Seamonkey return(found); } // // WikEdTextify: strip html off of text // window.WikEdTextify = function(obj) { // convert html to plain obj.plain = obj.html; obj.plain = obj.plain.replace(/\n/g, ' '); // delete tags obj.plain = obj.plain.replace(/<(style|script|object|applet|embed)\b[^>]*>.*?<\/\1>/g, ''); // newlines obj.plain = obj.plain.replace(/<br\b[^>]*> *()/g, '\n'); // remove empty lines from block tags obj.plain = obj.plain.replace(/(<(blockquote|center|div|p|pre|gallery)\b[^>]*>)[\s\u0000]+/gi, '$1'); obj.plain = obj.plain.replace(/[\s\u0000]+(<\/(blockquote|center|div|p|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)>)/gi, '$1'); // remove highlighting pre tags var isRemove = []; obj.plain = obj.plain.replace(/(<(\/?)pre\b([^>]*)>)/g, function (p, p1, p2, p3) { if (p2 == '') { if (/\bclass=\"wikEd\w+\"/.test(p3)) { isRemove.push(true); return(''); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return(''); } return(p1); } ); // blocks obj.plain = obj.plain.replace(/<\/?(address|blockquote|center|div|hr|isindex|p|pre)\b[^>]*>/g, '\u0000\u0000'); // keep headings only if starting with a newline obj.plain = obj.plain.replace(/[\s|\u0000]*(^|\n|\u0000)[\s|\u0000]*<h[1-6]\b[^>]*>(.*?)<\/h[1-6]>[\s|\u0000]*()/g, '\u0000\u0000$2\u0000\u0000'); // lists obj.plain = obj.plain.replace(/<\/?(dir|dl|menu|ol|ul)\b[^>]*>/g, '\u0000'); obj.plain = obj.plain.replace(/<\/(dd|dt|li)>/g, '\u0000'); // forms obj.plain = obj.plain.replace(/<\/?(select|textarea)\b[^>]*>/g, '\u0000'); obj.plain = obj.plain.replace(/<\/(option|legend|optgroup)>/g, '\u0000'); // tables if (wikEdTableMode == true) { // override pasted table class // {{TABLE}} obj.plain = obj.plain.replace(/(<table\b)([^>]*)(>)/gi, function (p, p1, p2, p3) { if (p2.match(/\bclass=/) != null) { p2 = p2.replace(/\bclass\s*=\s*([\'\"]?)[^<>\'\"\n]*?\2/g, 'class="wikEdTableEdit"'); } else { p2 = ' class="wikEdTableEdit"'; } return(p1 + p2 + p3); } ); // keep table html markup // {{TABLE}} obj.plain = obj.plain.replace(/[\s\u0000]*(<table\b[^>]*>)/g, '\u0000\u0000$1'); obj.plain = obj.plain.replace(/(<\/table>)[\s\u0000]*()/g, '$1\u0000'); obj.plain = obj.plain.replace(/<(\/?(table|caption|tr|th|td)\b[^>]*)>/g, '\u0001$1\u0002'); } // textify table else if (wikEdTableMode == false) { obj.plain = obj.plain.replace(/<\/?(table|caption)\b[^>]*>/g, '\u0000'); obj.plain = obj.plain.replace(/<\/(tr|th|td)>/g, '\u0000'); } // finish html to plain conversion obj.plain = obj.plain.replace(/<[^>]*>/g, ''); // recover table html obj.plain = obj.plain.replace(/\u0001/g, '<'); obj.plain = obj.plain.replace(/\u0002/g, '>'); // remove spaces obj.plain = obj.plain.replace(/[ \t\u00a0]+(\u0000)/g, '$1'); obj.plain = obj.plain.replace(/(\u0000)[ \t\u00a0]+/g, '$1'); // trim down \u0000 and \n obj.plain = obj.plain.replace(/\u0000+\n/g, '\n'); obj.plain = obj.plain.replace(/\n\u0000+/g, '\n'); obj.plain = obj.plain.replace(/\n*\u0000(\u0000|\n)+/g, '\n\n'); obj.plain = obj.plain.replace(/\u0000/g, '\n'); obj.plain = obj.plain.replace(/(<\/table>\n)\n+/g, '$1'); // remove empty lines and spaces from article start and end if (obj.from == 'whole') { obj.plain = obj.plain.replace(/^\s+|\s+$/g, ''); } return; } // // WikEdInactiveButtons: grey out inactive buttons, called after every change and click // window.WikEdInactiveButtons = function() { // undo if (wikEdFrameDocument.queryCommandEnabled('undo') == true ) { document.getElementById('wikEdUndo').className = 'wikEdButton'; document.getElementById('wikEdUndoAll').className = 'wikEdButton'; } else { document.getElementById('wikEdUndo').className = 'wikEdButtonInactive'; document.getElementById('wikEdUndoAll').className = 'wikEdButtonInactive'; } // redo if (wikEdFrameDocument.queryCommandEnabled('redo') == true ) { document.getElementById('wikEdRedo').className = 'wikEdButton'; } else { document.getElementById('wikEdRedo').className = 'wikEdButtonInactive'; } // redo all if (wikEdLastVersion != null) { document.getElementById('wikEdRedoAll').className = 'wikEdButton'; } else { document.getElementById('wikEdRedoAll').className = 'wikEdButtonInactive'; } return; } // // WikEdFixBasic: fix characters, spaces, empty lines, certain headings, needed for all fixing functions // //// change: double spaces ok after dot window.WikEdFixBasic = function(obj) { // non-breaking space character to normal space obj.plain = obj.plain.replace(/\u00a0/g, ' '); // tab to space obj.plain = obj.plain.replace(/ *\t[ \t]*()/g, ' '); // remove trailing spaces obj.plain = obj.plain.replace(/(\t| | )+\n/g, '\n'); // remove spaces in empty lines obj.plain = obj.plain.replace(/\n( | |\t)+\n/g, '\n\n'); // empty line before and after headings, spaces around word (lookahead), remove bold, italics, and extra = obj.plain = obj.plain.replace(/(^|\n)+(=+) *([^\n]*?) *(=+)(?=(\n|$))/g, function(p, p1, p2, p3, p4) { p3 = p3.replace(/\'{2,}/g, ''); return('\n\n' + p2 + ' ' + p3 + ' ' + p2 + '\n\n'); } ); // uppercase well known headings var regExp = new RegExp('\\n=+ ' + wikEdText['External links'] + '? =+\\n', 'gi'); obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdText['External links'] + ' ==\n'); regExp = new RegExp('\\n=+ ' + wikEdText['See also'] + ' =+\\n', 'gi'); obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdText['See also'] + ' ==\n'); regExp = new RegExp('\\n=+ ' + wikEdText['References'] + '? =+\\n', 'gi'); obj.plain = obj.plain.replace(regExp, '\n== ' + wikEdText['References'] + ' ==\n'); // add space after * # : ; (list) and after {| |- | (table) obj.plain = obj.plain.replace(/(^|\n)([\*\#\:\;]+|\{\||\|\-|\|\}|\|) *()/g, '$1$2 '); obj.plain = obj.plain.replace(/ +\n/g, '\n'); // empty line before and after tables obj.plain = obj.plain.replace(/\n+(\{\|)/g, '\n\n$1'); obj.plain = obj.plain.replace(/(\n\|\}([^\}]|$)) *([^\n]*)[\n|$]+/g, '$1\n\n$3\n\n'); // empty line before and after lists obj.plain = obj.plain.replace(/(^|\n)([^\*\#\:\;\n][^\n]*)(?=\n[\*\#\:\;])/g, '$1$2\n\n'); obj.plain = obj.plain.replace(/(^|\n)([\*\#\:\;][^\n]*?)(?=\n[^\*\#\:\;\n])/g, '$1$2\n\n'); // split into lines and change single lines, used to handle tables var lines = obj.plain.split('\n'); obj.plain = ''; var tableflag = false; for (var i = 0; i < lines.length; i++) { var line = lines[i]; // do not change lines starting with a blank if (/^ /.test(line) == false) { // detect table if (line.match(/^(\{\||\!|\|[^}])/) != null) { tableflag = true; } else if (line.match(/^\|\}/) != null) { tableflag = false; } // changes only to be done in tables if (tableflag == true) { // add spaces around || line = line.replace(/ *\|\| *()/g, ' || '); } // changes not to be done in tables if (! tableflag) { // empty line before and after images var regExp = new RegExp('^(\\[\\[(Image|File|' + wikEdText['wikicode Image'] + '|' + wikEdText['wikicode File'] + '):.*?\\]\\])', 'ig'); line = line.replace(regExp, '\n$1'); regExp = new RegExp('(\\[\\[(Image|File|' + wikEdText['wikicode Image'] + '|' + wikEdText['wikicode File'] + '):.*?(\\[\\[.*?\\]\\].*?)*\\]\\])$', 'ig'); line = line.replace(regExp, '$1\n'); // empty line before and after includes line = line.replace(/^(\{\{.*?\}\})/g, '\n$1'); line = line.replace(/(\{\{.*?\}\})$/g, '$1\n'); } } // concatenate the lines obj.plain += line; if (i < lines.length - 1) { obj.plain += '\n'; } } // remove underscores in wikilinks obj.plain = obj.plain.replace(/\[\[(.*?)((\|.*?)|)\]\]/g, function (p, p1, p2) { p1 = p1.replace(/_/g, ' '); return('[[' + p1 + p2 + ']]'); } ); // remove spaces in wikilinks obj.plain = obj.plain.replace(/\[\[ *([^\n]*?) *\]\]/g, '[[$1]]'); // remove spaces in external links obj.plain = obj.plain.replace(/\[ *([^\n]*?) *\]/g, '[$1]'); // no space around pipes before brackets obj.plain = obj.plain.replace(/ +\| +\]\]/g, '|]]'); // no space around pipes before curly brackets obj.plain = obj.plain.replace(/ +\| +\}\}/g, '|}}'); // no empty line between headings and includes obj.plain = obj.plain.replace(/\n(=+ [^\n]*? =+\n)\n+(\{\{.*?\}\})/g, '\n$1$2'); // spaces in comments obj.plain = obj.plain.replace(/(<!--) *([^\n]*?) *(-->)/g, '$1 $2 $3'); // empty line before and after categories var regExp = new RegExp('( |\\n)*(\\[\\[(Category|' + wikEdText['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])( |\\n)*', 'gi'); obj.plain = obj.plain.replace(regExp, '\n\n$2\n\n'); // categories not separated by empty lines (lookahead) regExp = new RegExp('(\\[\\[(Category|' + wikEdText['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])\\n*(?=\\[\\[(Category|' + wikEdText['wikicode Category'] + ')\\s*:[^\\n]*?\\]\\])', 'gi'); obj.plain = obj.plain.replace(regExp, '$1\n'); // single empty lines only obj.plain = obj.plain.replace(/\n{3,}/g, '\n\n'); // remove leading and trailing newlines obj.plain = obj.plain.replace(/^\n+/, ''); obj.plain = obj.plain.replace(/\n{2,}$/, '\n'); return; } // // WikEdFixPunct: remove (or add) space before .,:; // window.WikEdFixPunct = function(obj) { WikEdFixBasic(obj); if (wikEdFixPunctFrench == true) { obj.plain = obj.plain.replace(/(«) */g, '$1 '); obj.plain = obj.plain.replace(/ *(»)/g, ' $1'); obj.plain = obj.plain.replace(/([a-zA-Z_ŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\'\"”\]\}\)]) *([\.\,])(?=([a-zA-ZŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\'\"”\[\{\(\s]|$))/g, '$1$2 '); obj.plain = obj.plain.replace(/([a-zA-Z_ŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\'\"”\]\}\)]) *([\:\;\?\!])/g, '$1 $2 '); } else { obj.plain = obj.plain.replace(/([a-zA-Z_ŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\'\"”\]\}\)]) *([\.\,\:\;])(?=([a-zA-ZŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\'\"”\[\{\(\s]|$))/g, '$1$2 '); } obj.plain = obj.plain.replace(/ +$/g, ''); obj.plain = obj.plain.replace(/ +\n/g, '\n'); obj.plain = obj.plain.replace(/ {2,}/g, ' '); return; } // // WikEdFixUnicode: fix unicode character representations // window.WikEdFixUnicode = function(obj) { // replace supported chars: change decimal, hex, and character entities into actual char for (var i = 0; i < wikEdSupportedChars.length; i ++) { var replaceChar = String.fromCharCode(parseInt(wikEdSupportedChars[i][0], 16)); // decimal representation var regExpStr = '&#0*' + parseInt(wikEdSupportedChars[i][0], 16) + ';|'; // hex representation regExpStr += '&#x0*' + wikEdSupportedChars[i][0] + ';'; // case insensitive replace var regExp = new RegExp(regExpStr, 'gi'); obj.plain = obj.plain.replace(regExp, replaceChar); // character entity representation regExpStr = '&' + wikEdSupportedChars[i][1] + ';'; // case sensitive replace regExp = new RegExp(regExpStr, 'g'); obj.plain = obj.plain.replace(regExp, replaceChar); } // replace unsupported chars in IE6: change decimal, hex, and chars into character entities for (var i = 0; i < wikEdProblemChars.length; i ++) { replaceChar = '&' + wikEdProblemChars[i][1] + ';'; // decimal representation regExpStr = '&#0*' + parseInt(wikEdProblemChars[i][0], 16) + ';|'; // hex representation regExpStr += '&#x0*' + wikEdProblemChars[i][0] + ';'; // case insensitive replace regExp = new RegExp(regExpStr, 'gi'); obj.plain = obj.plain.replace(regExp, replaceChar); // actual character representation regExpStr = '\\u' + wikEdProblemChars[i][0]; // case sensitive replace regExp = new RegExp(regExpStr, 'g'); obj.plain = obj.plain.replace(regExp, replaceChar); } // replace special chars (spaces and invisible characters): change decimal, hex, and chars into character entities for (var i = 0; i < wikEdSpecialChars.length; i ++) { var replaceChar = '&' + wikEdSpecialChars[i][1] + ';'; // decimal representation var regExpStr = '&#0*' + parseInt(wikEdSpecialChars[i][0], 16) + ';|'; // hex representation regExpStr += '&#x0*' + wikEdSpecialChars[i][0] + ';'; // case insensitive replace var regExp = new RegExp(regExpStr, 'gi'); obj.plain = obj.plain.replace(regExp, replaceChar); // actual character representation regExpStr = '\\u' + wikEdSpecialChars[i][0]; // case sensitive replace var regExp = new RegExp(regExpStr, 'g'); obj.plain = obj.plain.replace(regExp, replaceChar); } // unicode line separator and paragraph separator obj.plain = obj.plain.replace(/\u2028/g, '\n'); obj.plain = obj.plain.replace(/\u2029/g, '\n\n'); return; } // // WikEdFixMath: math character fixer, originally from User:Omegatron // window.WikEdFixMath = function(obj) { WikEdFixBasic(obj); // change only outside <math> </math> wikicode obj.plain = obj.plain.replace(/(.*?)((<math(\b.*?)>.*?<\/math>)|$)/gi, function (p, p1, p2) { // convert html entities into actual dash characters p1 = p1.replace(/+/g, '+'); p1 = p1.replace(/−/g, '\u2212'); p1 = p1.replace(/·/g, '·'); // convert dash next to a number into a minus sign character p1 = p1.replace(/([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\,\{])-(\d)/g, '$1\u2212$2'); // changes 2x3 to 2×3 p1 = p1.replace(/(\d *)x( *\d)/g, '$1\u00d7$2'); // changes 10^3 to 10<sup>3</sup> p1 = p1.replace(/(\d*\.?\d+)\^(\u2212?\d+\.?\d*)/g, '$1<sup>$2</sup>'); // change x^3 to x<sup>3</sup> p1 = p1.replace(/([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9])\^(\u2212?\d+\.?\d*) /g, '$1<sup>$2</sup>'); // change +/- to ± p1 = p1.replace(/( |\d)\+\/(-|\u2212)( |\d)/g, '$1\u00b1$3'); // htmlize single char superscripts p1 = p1.replace(/(\u00b9|¹)/g, '<sup>1</sup>'); p1 = p1.replace(/(\u00b2|²)/g, '<sup>2</sup>'); p1 = p1.replace(/(\u00b3|³)/g, '<sup>3</sup>'); return(p1 + p2); } ); return; } // // WikEdFixChem: fix chemical formulas // window.WikEdFixChem = function(obj) { WikEdFixBasic(obj); var realElements = 'H|He|Li|Be|B|C|N|O|F|Ne|Na|Mg|Al|Si|P|S|Cl|Ar|K|Ca|Sc|Ti|V|Cr|Mn|Fe|Co|Ni|Cu|Zn|Ga|Ge|As|Se|Br|Kr|Rb|Sr|Y|Zr|Nb|Mo|Tc|Ru|Rh|Pd|Ag|Cd|In|Sn|Sb|Te|I|Xe|Cs|Ba|Hf|Ta|W|Re|Os|Ir|Pt|Au|Hg|Tl|Pb|Bi|Po|At|Rn|Fr|Ra|Rf|Db|Sg|Bh|Hs|Mt|Ds|Rg|La|Ce|Pr|Nd|Pm|Sm|Eu|Gd|Tb|Dy|Ho|Er|Tm|Yb|Lu|Ac|Th|Pa|U|Np|Pu|Am|Cm|Bk|Cf|Es|Fm|Md|No|Lr'; var pseudoElements = '|Me|Et|Pr|Bu|e'; // fix common typos obj.plain = obj.plain.replace(/(^|[^a-z])h2o([^a-z]|$)/g, '$1H2O$2'); obj.plain = obj.plain.replace(/(^|[^a-z])h3o+/g, '$1H3O+'); obj.plain = obj.plain.replace(/(^|[^a-z])oh-/g, '$1OH+'); // uppercase lowercased elements var regExp = new RegExp('(^|[^a-zA-Z])(' + realElements.toLowerCase() + pseudoElements.toLowerCase() + ')([^a-zA-Z]|$)', 'g'); obj.plain = obj.plain.replace(regExp, function (p, p1, p2, p3) { if (p2 != 'e') { p2 = p2.substr(0, 1).toUpperCase() + p2.substr(1).toLowerCase(); } return(p1 + p2 + p3); } ); // fix superscripts obj.plain = obj.plain.replace(/+/g, '+'); obj.plain = obj.plain.replace(/−/g, '\u2212'); obj.plain = obj.plain.replace(/·/g, '·'); regExp = new RegExp('(' + realElements + pseudoElements + '|\\))(\\d*(\\+|-|\\u2212))', 'g'); obj.plain = obj.plain.replace(regExp, function (p, p1, p2, p3) { p2 = p2.replace(/-/g, '\u2212'); return(p1 + '<sup>' + p2 + '</sup>'); } ); // fix indices regExp = new RegExp('(' + realElements + pseudoElements + '|\\))(\\d+)', 'g'); obj.plain = obj.plain.replace(regExp, '$1<sub>$2</sub>'); // fix prefixes regExp = new RegExp('(\\d+) *(\\(|' + realElements + pseudoElements + ')', 'g'); obj.plain = obj.plain.replace(regExp, '$1$2'); // fix arrows obj.plain = obj.plain.replace(/ *-+> *()/g, ' \u2192 '); obj.plain = obj.plain.replace(/ *<-+ *()/g, ' \u2190 '); // &hdarr; and "leftwards harpoon over rightwards harpoon" not supported in IE6 // obj.plain = obj.plain.replace(/ *(<=+>|&hdarr;|↔|\u2190 *\u2192) *()/g, ' \u21cc '); obj.plain = obj.plain.replace(/ *(<==+>|&hdarr;|↔|\u21cc|\u2190 *\u2192) *()/g, ' <=> '); // fix - obj.plain = obj.plain.replace(/([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|\)|>) +(-|\u2212) +([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|\()/g, '$1 \u2212 $3'); return; } // // WikEdFixUnits: unit formatter // window.WikEdFixUnits = function(obj) { WikEdFixBasic(obj); // convert into actual characters obj.plain = obj.plain.replace(/&deg;|&#00b0;/g, '°'); obj.plain = obj.plain.replace(/&#00b5;|&mu;|&micro;/g, 'µ'); obj.plain = obj.plain.replace(/&Omega;|&#8486;/g, '\u03a9'); // add space before units, remove space around /, and use abreviations obj.plain = obj.plain.replace(/( *\/ *|\d *)(Y|yotta|Z|zetta|E|exa|P|peta|T|tera|G|giga|M|mega|k|kilo|K|h|hecto|da|deca|d|deci|c|centi|m|mill?i|micro|u|µ|n|nano|p|pico|f|femto|a|atto|z|zepto|y|yocto|mibi|mebi|)(gramm?s?|g|metres?|meters?|m|amperes?|Amperes?|amps?|Amps?|A|Angstroms?|Angströms?|Å|Kelvins?|kelvins?|K|moles?|Moles?|mol|candelas?|cd|rad|Ci|sr|Hert?z|hert?z|Hz|newtons?|Newtons?|N|Joules?|joules?|J|watts?|Watts?|W|pascals?|Pascals?|Pa|lm|lx|C|volts?|Volts?|V|O|Farads?|F|Wb|T|H|S|bequerels?|Bequerels?|Bq|Gy|Sv|kat|centigrades?|°C|decibels?|db|dB|M|ohms?|Ohms?|\u03a9|sec|seconds?|s|minutes?|min|hour?|h|bits?|Bits?|bit|bytes?|Bytes?|B|bps|Bps)(?=[^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, function (p, p1, p2, p3) { p1 = p1.replace(/ *\/ *()/g, '/'); p1 = p1.replace(/(\d) *()/g, '$1 '); p2 = p2.replace(/yotta/g, 'Y'); p2 = p2.replace(/zetta/g, 'Z'); p2 = p2.replace(/exa/g, 'E'); p2 = p2.replace(/peta/g, 'P'); p2 = p2.replace(/tera/g, 'T'); p2 = p2.replace(/giga/g, 'G'); p2 = p2.replace(/mega/g, 'M'); p2 = p2.replace(/kilo/g, 'k'); p2 = p2.replace(/K/g, 'k'); p2 = p2.replace(/hecto/g, 'h'); p2 = p2.replace(/deca/g, 'da'); p2 = p2.replace(/deci/g, 'd'); p2 = p2.replace(/centi/g, 'c'); p2 = p2.replace(/mill?i/g, 'm'); p2 = p2.replace(/micro|u/g, 'µ'); p2 = p2.replace(/nano/g, 'n'); p2 = p2.replace(/pico/g, 'p'); p2 = p2.replace(/femto/g, 'f'); p2 = p2.replace(/atto/g, 'a'); p2 = p2.replace(/zepto/g, 'z'); p2 = p2.replace(/yocto/g, 'y'); p2 = p2.replace(/mibi/g, 'mebi'); p3 = p3.replace(/gramm?s?/g, 'g'); p3 = p3.replace(/metres?|meters?/g, 'm'); p3 = p3.replace(/amperes?|Amperes?|amps?|Amps?/g, 'A'); p3 = p3.replace(/Angstroms?|Angströms?/g, 'Å'); p3 = p3.replace(/Kelvins?|kelvins?/g, 'K'); p3 = p3.replace(/moles?|Moles?/g, 'mol'); p3 = p3.replace(/candelas?/g, 'cd'); p3 = p3.replace(/Hert?z|hert?z/g, 'Hz'); p3 = p3.replace(/newtons?|Newtons?/g, 'N'); p3 = p3.replace(/Joules?|joules?/g, 'J'); p3 = p3.replace(/watts?|Watts?/g, 'W'); p3 = p3.replace(/pascals?|Pascals?/g, 'Pa'); p3 = p3.replace(/volts?|Volts?/g, 'V'); p3 = p3.replace(/ohms?|Ohms?/g, '\u03a9'); p3 = p3.replace(/bequerels?|Bequerels?/g, 'Bq'); p3 = p3.replace(/Farads?/g, 'F'); p3 = p3.replace(/bits?|Bits?/g, 'bit'); p3 = p3.replace(/bytes?|Bytes?/g, 'B'); p3 = p3.replace(/sec|seconds?/g, 's'); p3 = p3.replace(/minutes?/g, 'min'); p3 = p3.replace(/hours?/g, 'h'); p3 = p3.replace(/sec|seconds?/g, 's'); p3 = p3.replace(/bps/g, 'bit/s'); p3 = p3.replace(/Bps/g, 'B/s'); return(p1 + p2 + p3); } ); // fix prefix casing obj.plain = obj.plain.replace(/ K(bit\/s|B\/s)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, ' k$1$2'); obj.plain = obj.plain.replace(/ m(bit\/s|B\/s)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, ' M$1$2'); obj.plain = obj.plain.replace(/ g(bit\/s|B\/s)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, ' G$1$2'); obj.plain = obj.plain.replace(/ t(bit\/s|B\/s)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, ' T$1$2'); obj.plain = obj.plain.replace(/ e(bit\/s|B\/s)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|$)/g, ' E$1$2'); return; } // // WikEdFixDashes: fixes dashes and minus signs // window.WikEdFixDashes = function(obj) { WikEdFixBasic(obj); // convert html character entities into actual dash characters obj.plain = obj.plain.replace(/&mdash;/g, '—'); obj.plain = obj.plain.replace(/&ndash;/g, '–'); obj.plain = obj.plain.replace(/&minus;/g, '\u2212'); // remove spaces around em dashes obj.plain = obj.plain.replace(/([a-zA-Z\'\"”\]\}\)])( |&nbsp;)*—( |&nbsp;)*([a-zA-Z\'\"“\[\{\(])/g, '$1—$4'); // convert -- to en dashes obj.plain = obj.plain.replace(/([a-zA-Z\'\"”\]\}\)])( |&nbsp;)*--( |&nbsp;)*([a-zA-Z\'\"“\[\{\(])/g, '$1 – $4'); // convert hyphen next to lone number into a minus sign character obj.plain = obj.plain.replace(/([a-zA-Z\'\"”\]\>] ) *(\u2212|–)(\d)/g, '$1\u2212$3'); // convert minus or en dashes to dashes with spaces obj.plain = obj.plain.replace(/([a-zA-Z\'\"”\]\}])( |&nbsp;)*(\u2212|–)( |&nbsp;)*([a-zA-Z\'\"“\[\{])/g, '$1 – $5'); // convert dashes to en dashes in dates obj.plain = obj.plain.replace(/(^|[ \(\|])(\d\d(\d\d)?)(\u2212|-|–)(\d\d)(\u2212|-|–)(\d\d(\d\d)?)([ \)\}\|,.;—]|$)/gm, '$1$2–$5–$7$9'); return; } // // WikEdFixHTML: fix html to wikicode // window.WikEdFixHTML = function(obj) { WikEdFixBasic(obj); // remove syntax highlighting obj.html = obj.plain; obj.html = obj.html.replace(/\n/g, '<br />'); WikEdRemoveHighlighting(obj); // turn visible html code into real html, exclude comments obj.html = obj.html.replace(/<(\/?\w.*?)>/g, '<$1>'); // wikify, keep user added attribute WikEdWikifyHTML(obj, true); // turn real html into visible html code obj.html = obj.html.replace(/<br\b[^>]*>[\r\n ]*()/g, '\n'); obj.html = obj.html.replace(/</g, '<'); obj.html = obj.html.replace(/>/g, '>'); obj.plain = obj.html; return; } // // WikEdFixCaps: fix capitalizing of lists, linklists, images, headings // window.WikEdFixCaps = function(obj) { //WikEdFixBasic(obj); // uppercase lists // start (listcode (char-ent|tag|category..|digit|non-word,non-ret))(word,non-digit..) end obj.plain = obj.plain.replace(/^((\||[\*\#\:\;]+)[ \'\"]*(\'+|\&\w+\;|<[^\n]*?>|\{\{.*?\}\}[^\n]*|\d|[^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\n])*)([^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\d\n\r].*?)?$/gm, function (p, p1, p2, p3, p4) { if (p4.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda|$)/) == null) { // spaces cannot be added to p1 in above regExp !? p4 = p4.replace(/^(\s*)(.*?)$/, function (p, p1, p2) { p2 = p2.substr(0, 1).toUpperCase() + p2.substr(1); return(p1 + p2); } ); } return(p1 + p4); } ); // uppercase link lists (link) obj.plain = obj.plain.replace(/^((\||[\*\#\:\;]+)[ \'\"]*\[\[)([^\n]*?)(\]\])/gm, function (p, p1, p2, p3,p4) { // uppercase link p3 = p3.replace(/^((\&\w+\;|[^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|\d)*)([a-zA-ZŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9_].*)$/, function (p, p1, p2, p3) { if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) { p3 = p3.substr(0, 1).toUpperCase() + p3.substr(1); } return(p1 + p3); } ); // uppercase comment p3 = p3.replace(/(\| *(\&\w+\;|<[^\n]*?>|[^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]|\d)*)([a-zA-ZŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9_].*)$/, function (p, p1, p2, p3) { if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) { p3 = p3.substr(0, 1).toUpperCase() + p3.substr(1); } return(p1 + p3); } ); return(p1 + p3 + p4); } ); // uppercase headings obj.plain = obj.plain.replace(/^(=+ (\&\w+\;|<[^\n]*?>|\d|[^\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\n])*)([a-zA-ZŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9_].*? =+)$/gm, function (p, p1, p2, p3) { if (p3.match(/^(http|ftp|alpha|beta|gamma|delta|epsilon|kappa|lambda)/) == null) { p3 = p3.substr(0, 1).toUpperCase() + p3.substr(1); } return(p1 + p3); } ); // uppercase images regExp = new RegExp('(\\[\\[)((Image|File|' + wikEdText['wikicode Image'] + ')|(' + wikEdText['wikicode File'] + ')):([\\wŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9])([^\\n]*\\]\\])', 'igm'); obj.plain = obj.plain.replace(regExp, function (p, p1, p2, p3, p4, p5, p6) { if (p3 != '') { p3 = wikEdText['wikicode Image']; } else { p4 = wikEdText['wikicode File']; } return(p1 + p3 + p4 + ':' + p5.toUpperCase() + p6); } ); return; } // // WikEdFixTypos: fix typos using the AutoWikiBrowser/RegExTypoFix list (.test() is not faster) // window.WikEdFixTypos = function(obj) { WikEdFixBasic(obj); // split into alternating plain text and {{lang}} template fragments (does not support nested templates) var fragment = []; var nextPos = 0; var regExp = new RegExp('{{\\s*lang\\s*\\|(.|\\n)*?}}', 'g'); while ( (regExpMatch = regExp.exec(obj.plain)) != null) { fragment.push(obj.plain.substring(nextPos, regExpMatch.index)); fragment.push(regExpMatch[0]); nextPos = regExp.lastIndex; } fragment.push(obj.plain.substring(nextPos)); // cycle through the RegExTypoFix rules for (var i = 0; i < wikEdTypoRulesFind.length; i ++) { // cycle through the fragments, jump over {{lang}} templates for (var j = 0; j < fragment.length; j = j + 2) { fragment[j] = fragment[j].replace(wikEdTypoRulesFind[i], wikEdTypoRulesReplace[i]); } } // re-assemble text obj.plain = fragment.join(''); return; } // // WikEdFixAll: // window.WikEdFixAll = function(obj) { WikEdFixBasic(obj); WikEdFixUnicode(obj); WikEdFixHTML(obj); WikEdFixCaps(obj); return; } // // WikEdRemoveElements: remove elements by tag name // window.WikEdRemoveElements = function(tagNameArray) { // cycle through the element names for (var property in tagNameArray) { if ((tagNameArray[property]) != 'string') { continue; } var elementArray = wikEdFrameDocument.getElementsByTagName(tagNameArray[property]); for (var i = 0; i < elementArray.length; i ++) { elementArray[i].parentNode.removeChild(elementArray[i]); } } return; } // // WikEdFindBoundaries: find word boundaries and line boundaries starting from selection.range // window.WikEdFindBoundaries = function(word, line, para, whole, selection) { // get the start node and offset var startNode = selection.range.startContainer; var startNodeOffset = selection.range.startOffset; // get the end node and offset var endNode = selection.range.endContainer; var endNodeOffset = selection.range.endOffset; //// todo: when selecting whole lines with BR do not walk into next line if (startNode.nodeType == 1) { startNode = startNode.childNodes[startNodeOffset]; startNodeOffset = 0; } if (endNode.nodeType == 1) { endNode = endNode.childNodes[endNodeOffset]; endNodeOffset = 0; } // find the start and end nodes in the whole plain text arrays var startNodeIndex; var endNodeIndex; for (var i = 0; i < whole.plainNode.length; i ++) { if (startNode == whole.plainNode[i]) { startNodeIndex = i; } if (endNode == whole.plainNode[i]) { endNodeIndex = i; break; } } // find last previous word and line boundary var foundWord = false; var foundLine = false; var foundPara = false; var regExp = new RegExp('.*[^\\w\\-ŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9]', 'g'); var plainPrev = ''; // check text nodes left-wise for a boundary var plain = ''; for (var i = startNodeIndex; i >= 0; i --) { plainPrev = plain; plain = whole.plainArray[i]; plain = plain.replace(/&/g, '&'); plain = plain.replace(/</g, '<'); plain = plain.replace(/>/g, '>'); // boundary is a new paragraph if ( (plainPrev == '\n') && (plain == '\n') ) { para.range.setStartAfter(whole.plainNode[i + 1]); foundPara = true; break; } // boundary is a newline else if (plain == '\n') { if (foundWord == false) { word.range.setStartAfter(whole.plainNode[i]); foundWord = true; } if (foundLine == false) { line.range.setStartAfter(whole.plainNode[i]); foundLine = true; } } // check text node for a word boundary else if (foundWord == false) { if (i == startNodeIndex) { plain = plain.substr(0, startNodeOffset); } regExp.lastIndex = 0; if (regExp.exec(plain) != null) { word.range.setStart(whole.plainNode[i], regExp.lastIndex); foundWord = true; } } } // boundary is start of text if (foundPara == false) { para.range.setStartBefore(whole.plainNode[0]); } if (foundLine == false) { line.range.setStartBefore(whole.plainNode[0]); } if (foundWord == false) { word.range.setStartBefore(whole.plainNode[0]); } // find next word and line boundary regExp = new RegExp('[^\\w\\-ŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9]', 'g'); foundWord = false; foundLine = false; foundPara = false; // check text nodes right-wise for a boundary plain = ''; for (var i = endNodeIndex; i < whole.plainArray.length; i ++) { plainPrev = plain; plain = whole.plainArray[i]; plain = plain.replace(/&/g, '&'); plain = plain.replace(/</g, '<'); plain = plain.replace(/>/g, '>'); // boundary is a double newline if ( (plainPrev == '\n') && (plain == '\n') ) { para.range.setEndBefore(whole.plainNode[i]); foundPara = true; break; } // boundary is a newline else if (plain == '\n') { if (foundWord == false) { word.range.setEndBefore(whole.plainNode[i]); foundWord = true; } if (foundLine == false) { line.range.setEndBefore(whole.plainNode[i]); foundLine = true; } } // check text node for a word boundary else if (foundWord == false) { if (i == endNodeIndex) { regExp.lastIndex = endNodeOffset; } else { regExp.lastIndex = 0; } var regExpArray = regExp.exec(plain); if (regExpArray != null) { word.range.setEnd(whole.plainNode[i], regExpArray.index); foundWord = true; } } } // boundary is end of text if (foundPara == false) { para.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]); } if (foundLine == false) { line.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]); } if (foundWord == false) { word.range.setEndAfter(whole.plainNode[whole.plainArray.length - 1]); } return; } // // remove syntax highlighting and wikify // window.WikEdRemoveHighlightingWikify = function(obj, wikify) { if ( (obj.html != '') || (wikify == true) ) { // remove syntax highlighting WikEdRemoveHighlighting(obj); // wikify, don't allow many attributes if ( (obj.htmlCode == true) && (wikify != false) ) { WikEdWikifyHTML(obj, false); } } return; } // // WikEdWikifyHTML: // obj.html contains the text to be wikified // expects < > < > & spaces instead of <br> (not \n) // returns <br> (not \n) /* allowed and converted tags: br|p h1|h2|h3|h4|h5|h6 hr i|dfn|cite|em|var b|strong table|caption|col|thead|tfoot|tbody|tr|td|th dl|dt|dd|li|ol|ul a not allowed yet: bdo|q|kbd|samp|abbr|acronym|label other allowed tags: big|blockquote|colgroup|center|code|del|div|font|ins|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby mediawiki tags (inline/block): nowiki|math|noinclude|includeonly|ref|charinsert|fundraising|fundraisinglogo gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references */ window.WikEdWikifyHTML = function(obj, relaxed) { var regExpStr; var regExp; var regExpMatch; // delete tags: <style> obj.html = obj.html.replace(/<(style)\b[^>]*>.*?<\/\1>/gi, ''); // remove MediaWiki section edit spans obj.html = obj.html.replace(/<span[^>]*class=\"editsection\"[^>]*>.*?<\/span>\s*()/gi, ''); // remove MediaWiki heading spans obj.html = obj.html.replace(/<span\b[^>]*\bclass=\"mw-headline\"[^>]*>(.*?)<\/span>\s*()/g, '$1'); // remove MediaWiki divs from article top obj.html = obj.html.replace(/<h3\b[^>]*\bid=\"siteSub\"[^>]*>.*?<\/h3>\s*()/g, ''); obj.html = obj.html.replace(/<div\b[^>]*\bid=\"contentSub\"[^>]*>.*?<\/div>\s*()/g, ''); obj.html = obj.html.replace(/<div\b[^>]*\bid=\"jump-to-nav\"[^>]*>.*?<\/div>\s*()/g, ''); // remove MediaWiki table of contents obj.html = obj.html.replace(/<table\b[^>]*?\bid=\"toc\"[^>]*>.*?<\/table>\s*()/g, ''); // remove MediaWiki print footer obj.html = obj.html.replace(/<div\b[^>]*?\bclass=\"printfooter\"[^>]*>[^<>\"]+\"<a\b[^>]*>[^<]+<\/a>\"<\/div>\s*()/g, ''); // remove MediaWiki category list tags regExp = /<div\b[^>]*\bid=\"catlinks\"[^>]*>(.*?)<\/div>\s*()/g; while(regExp.test(obj.html) == true) { obj.html = obj.html.replace(regExp, '$1'); } regExp = /<p\b[^>]*?\bclass=\"catlinks\"[^>]*>(.*?)<a\b[^>]*>[^<>]+<\/a>: (.*?)<\/p>/g; while(regExp.test(obj.html) == true) { obj.html = obj.html.replace(regExp, '$1$2'); } // convert MS-Word non-standard lists: * obj.html = obj.html.replace(/\s*<p [^>]*>\s*<!--\[if !supportLists\]-->.*?<!--\[endif\]-->\s*(.*?)\s*<\/p>\s*()/g, '* $1\n'); // collect MS-Word footnote texts var footnotes = {}; obj.html = obj.html.replace(/<div\b[^>]* id="ftn(\d+)"[^>]*>\s*<p class="MsoFootnoteText">\s*<a(.|\n)*?<\/a>((.|\n)*?)<\/p>\s*<\/div>/g, function(p, p1, p2, p3) { footnotes[p1] = p3.replace(/^(\s|<br\b[^>]*>)|(\s|<br\b[^>]*>)$/g, ''); return(''); } ); // add footnotes as <ref> tags obj.html = obj.html.replace(/<a\b[^>]* name="_ftnref(\d+)"[^>]*>(.|\n)*?<!--\[endif\]-->\s*<\/span>\s*<\/span>\s*<\/a>/g, function(p, p1) { var ref = '<ref name="footnote_' + p1 + '">' + footnotes[p1] + '</ref>'; return(ref); } ); // remove MS-Word footnote separator obj.html = obj.html.replace(/<!--\[if !supportFootnotes\]-->(\s|<br\b[^>]*>)*<hr\b[^>]*>\s*<!--\[endif\]-->(\s|<br\b[^>]*>)*/g, ''); // correct name for MS-Word images // 1 2 2 3 3 4 4 1 5 5 obj.html = obj.html.replace(/(<v:imagedata\b[^>]*? src="[^">]*?[\\\/]clip_image\d+(\.\w+)"[^>]*? o:title="([^">]*)"[^>]*>(.|\s)*?<img\b[^>]*? src="[^">]*?[\\\/])clip_image\d+\.\w+("[^>]*>)/g, '$1$3$2$5'); // sanitize <span> <div> <p> obj.html = obj.html.replace(/<(span|div|p)\b *(.*?) *\/?>/gi, function (p, p1, p2) { return('<' + p1 + WikEdSanitizeAttributes(p1, p2, relaxed) + '>'); } ); // remove <span> ... </span> pairs withhout attributes var isRemove = []; obj.html = obj.html.replace(/(<(\/?)span\b([^>]*)>)/gi, function (p, p1, p2, p3) { if (p2 == '') { if (p3 == '') { isRemove.push(true); return(''); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return(''); } return(p1); } ); // remove <p> ... </p> pairs withhout attributes var isRemove = []; obj.html = obj.html.replace(/(<(\/?)p\b([^>]*)>)/gi, function (p, p1, p2, p3) { if (p2 == '') { if (p3 == '') { isRemove.push(true); return('\u0000\u0000'); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return('\u0000\u0000'); } return(p1); } ); // escape character entities obj.html = obj.html.replace(/&(?!(amp;|lt;|gt;))/g, '&'); // remove comments obj.html = obj.html.replace(/<!--.*?-->/g, ''); // <hr> horizontal rule obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<hr\b[^>]*>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000----\u0000\u0000'); // <i> <em> <dfn> <var> <cite> italic obj.html = obj.html.replace(/<(i|em|dfn|var|cite)\b[^>]*>/gi, '\'\''); obj.html = obj.html.replace(/<\/(i|em|dfn|var|cite)\b[^>]*>/gi, '\'\''); // <b> <strong> bold obj.html = obj.html.replace(/<(b|strong)\b[^>]*>/gi, '\'\'\''); obj.html = obj.html.replace(/<\/(b|strong)\b[^>]*>/gi, '\'\'\''); // <h1> .. <h6> headings obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h1\b[^>]*>(.*?)<\/h1>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000= $4 =\u0000\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h2\b[^>]*>(.*?)<\/h2>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000== $4 ==\u0000\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h3\b[^>]*>(.*?)<\/h3>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000=== $4 ===\u0000\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h4\b[^>]*>(.*?)<\/h4>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000==== $4 ====\u0000\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h5\b[^>]*>(.*?)<\/h5>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000===== $4 =====\u0000\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(^|\n|<br\b[^>]*>|\u0000)(\s|<br\b[^>]*>|\u0000)*<h6\b[^>]*>(.*?)<\/h6>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000\u0000====== $4 ======\u0000\u0000'); obj.html = obj.html.replace(/<(h[0-6])\b[^>]*>(.*?)<\/\1>/gi, '$2'); // {{TABLE}} // convert html tables to wikicode if (wikEdTableMode == false) { // remove <thead> <tbody> <tfoot> obj.html = obj.html.replace(/(\s|\u0000|<br\b[^>]*>)<\/?(thead|tbody|tfoot)\b[^>]*>(\s|\u0000|<br\b[^>]*>)*()/gi, '$1'); // remove <col></col> and <colgroup></colgroup>\s obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(col)\b[^>]*>.*?<\/\2>(|<br\b[^>]*>|\u0000)*()/gi, ''); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(colgroup)\b[^>]*>.*?<\/\2>(|<br\b[^>]*>|\u0000)*()/gi, ''); // line breaks in table cells obj.html = obj.html.replace(/(<(td|th|caption)\b[^>]*>)(.*?)(<\/\2>)/gi, function(p, p1, p2, p3, p4) { p3 = p3.replace(/^(\s|<br\b[^>]*>|\u0000>)+/gi, ''); p3 = p3.replace(/(\s|<br\b[^>]*>|\u0000>)+$/gi, ''); p3 = p3.replace(/<br\b[^>]*> *()/gi, '<br />'); return(p1 + p3 + p4); } ); // remove table closing tags obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<\/(tr|thead|tbody|tfoot)>(\s|<br\b[^>]*>|\u0000)*()/gi, ''); // <td> table cells obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<td>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000| '); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(td) +([^>]*)>(\s|<br\b[^>]*>|\u0000)*()/gi, function (p, p1, p2, p3, p4) { p3 = WikEdSanitizeAttributes(p2, p3, relaxed); if (p3 == '') { return('\u0000| '); } else { return('\u0000|' + p3 + ' | '); } } ); // <th> table cells obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<th>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000| '); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(th) +([^>]*)>(\s|<br\b[^>]*>|\u0000)*()/gi, function (p, p1, p2, p3, p4) { p3 = WikEdSanitizeAttributes(p2, p3, relaxed); if (p3 == '') { return('\u0000| '); } else { return('\u0000|' + p3 + ' | '); } } ); // <tr> table rows obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<tr>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000|-\u0000'); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(tr) +([^>]*)>(\s|<br\b[^>]*>|\u0000)*()/gi, function (p, p1, p2, p3, p4) { return('\u0000|-' + WikEdSanitizeAttributes(p2, p3, relaxed) + '\u0000'); } ); // <caption> table caption obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<caption>(\s|<br\b[^>]*>|\u0000)*()/gi, '\u0000|+ '); obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*<(caption) +([^>]*)>(\s|<br\b[^>]*>|\u0000)*()/gi, function (p, p1, p2, p3, p4) { p3 = WikEdSanitizeAttributes(p2, p3, relaxed); if (p3 == '') { return('\u0000|+ '); } else { return('\u0000|+' + p3 + ' | '); } } ); // remove closing tags obj.html = obj.html.replace(/\s*<\/(td|th|caption)>\s*()/gi, ''); // line breaks, also in table cells (continued) obj.html = obj.html.replace(/<br\b[^>]*>[\r\n ]*()/gi, '\u0000'); // <table> obj.html = obj.html.replace(/[\s\u0000]*<table>[\s\u0000]*(\|-(?=[\n\u0000]))?/gi, '\u0000\u0000{|\u0000'); obj.html = obj.html.replace(/[\s\u0000]*<(table) +([^>]*)>[\s\u0000]*(\|-(?=[\n\u0000]))?/gi, function (p, p1, p2) { var table = '\u0000\u0000{|'; if (wikEdWikifyTableParameters != '') { table += ' ' + wikEdWikifyTableParameters; } else { table += WikEdSanitizeAttributes(p1, p2); } return(table); } ); obj.html = obj.html.replace(/[\s\u0000]*<\/table>[\s\u0000]*()/gi, '\u0000|}\u0000\u0000'); } // for table mode override pasted table class // {{TABLE}} else if (wikEdTableMode == true) { obj.html = obj.html.replace(/(<table\b)([^>]*)(>)/gi, function (p, p1, p2, p3) { if (p2.match(/\bclass=/)) { p2 = p2.replace(/\bclass\s*=\s*([\'\"]?)[^<>\'\"\n]*?\2/g, 'class="wikEdTableEdit"'); } else { p2 = ' class="wikEdTableEdit"'; } return(p1 + p2 + p3); } ); // table block element needs only one newline obj.html = obj.html.replace(/(\s|<br\b[^>]*>|\u0000)*(<table\b[^>]*>)/gi, '\u0000\u0000$2'); obj.html = obj.html.replace(/(<\/table>)(\s|<br\b[^>]*>|\u0000)*()/gi, '$1\u0000'); } // line breaks (continued) if (wikEdTableMode == true) { obj.html = obj.html.replace(/<br\b[^>]*>[\r\n ]*()/gi, '\u0000'); } // convert links var regExpMatch = []; var regExpStr = '(<a(\\b[^>]*)>(.*?)</a>)'; var regExp = new RegExp(regExpStr, 'gi'); obj.html = obj.html.replace(regExp, function (p, p1, p2, p3) { var linkParam = p2; var linkText = p3; var hrefUrlParam; var hrefUrlArticle; var imgWidth = ''; var hrefParamTitle; var hrefParamISBN; var hrefParamSpecial; var linkArticleAnchor = ''; var linkArticle = ''; var linkTitle = ''; // get href value var hrefValue; regExpMatch = linkParam.match(/ href=\"([^\">]*)\"/); if (regExpMatch != null) { hrefValue = regExpMatch[1]; // get absolute path from ./index.php and ../../index.php hrefValue = WikEdRelativeToAbsolutePath(hrefValue); // check for wiki article link and get parameters // 1 2 article 2 3article 314 anchor 4 6 7 8 urlpar 87539 anchor 9 regExpStr = wikEdServer + '(' + wikEdArticlePath + '([^\\"\\?#]+)|' + wikEdScript + '\\?([^\\"#]*))(#[^\\"]*)?'; regExp = new RegExp(regExpStr); regExpMatch = regExp.exec(hrefValue); if (regExpMatch != null) { // article name from url path <a href="../wiki/ hrefUrlArticle "> if (regExpMatch[2] != null) { hrefUrlArticle = regExpMatch[2]; } // article name from url parameters <a href="url? hrefUrlParam "> else if (regExpMatch[3] != null) { hrefUrlParam = regExpMatch[3]; } // link anchor <a href="link #anchor"> if (regExpMatch[4] != null) { linkArticleAnchor = regExpMatch[4]; linkArticleAnchor = linkArticleAnchor.replace(/\.([0-9A-F]{2})/g, '%$1'); linkArticleAnchor = decodeURIComponent(linkArticleAnchor); linkArticleAnchor = linkArticleAnchor.replace(/_\d+$/g, ''); } // parse hrefUrlParam and check for special parameters if (hrefUrlParam != null) { regExp = new RegExp('(^|&)(\\w+)=([^\\"\\&]+)', 'g'); while ( (regExpMatch = regExp.exec(hrefUrlParam)) != null) { switch (regExpMatch[2]) { case 'title': hrefParamTitle = regExpMatch[3]; break; case 'isbn': hrefParamISBN = regExpMatch[3]; break; case 'redlink': break; case 'action': hrefParamAction = regExpMatch[3]; if (hrefParamAction == 'edit') { break; } default: hrefParamSpecial = true; } } } // ISBN links if ( (hrefParamISBN != null) && (hrefParamSpecial != true) ) { var isbn = hrefParamISBN; regExpMatch = /((\d\-?){13}|(\d\-?){10})/.exec(linkText); if (regExpMatch != null) { isbn = regExpMatch[1]; } return('ISBN ' + isbn); } // get article from href parameters else if ( (hrefParamTitle != null) && (hrefParamSpecial != true) ) { linkArticle = hrefParamTitle; linkArticle = linkArticle.replace(/_/g, ' '); linkArticle = decodeURIComponent(linkArticle); } // get article name from url path else if (hrefUrlArticle != null) { linkArticle = hrefUrlArticle; linkArticle = linkArticle.replace(/_/g, ' '); linkArticle = decodeURIComponent(linkArticle); } // get article name from <a title=""> else { regExpMatch = / title=\"([^\">]+)\"/.exec(linkParam); if (regExpMatch != null) { linkArticle = regExpMatch[1]; } } } // format wiki link if (linkArticle != '') { // check for wiki image regExpStr = '^<img\\b[^>]*?\\bwidth=\\"(\\d+)\\"[^>]*?>$'; regExp = new RegExp(regExpStr); regExpMatch = regExp.exec(linkText); if (regExpMatch != null) { imgWidth = regExpMatch[1]; imgWidth = '|' + imgWidth + 'px'; if ( (linkTitle != '') && (linkTitle != 'Enlarge') ) { linkTitle = '|' + linkTitle; return('[[' + linkArticle + imgWidth + linkTitle + ']]'); } else { return('[[' + linkArticle + imgWidth + ']]'); } } // category link var regExp = new RegExp('^(Category|' + wikEdText['wikicode Category'] + ')\\s*:(.*)', 'i'); regExpMatch = regExp.exec(linkArticle); if (regExpMatch != null) { return('[[' + wikEdText['wikicode Category'] + ':' + regExpMatch[1].substr(0, 1).toUpperCase() + linkText.substr(1) + ']]'); } // wiki link if (linkArticle == linkText.substr(0, 1).toUpperCase() + linkText.substr(1)) { return('[[' + linkText + linkArticleAnchor + ']]'); } // date link (English only) regExpMatch = /^(January|February|March|April|May|June|July|August|September|October|November|December) (\d{1,2})$/.exec(linkArticle); if (regExpMatch != null) { var month = regExpMatch[1]; var day = regExpMatch[2]; if (linkText == (day + ' ' + month) ) { return('[[' + linkArticle + linkArticleAnchor + ']]'); } } // lowercase the article name if the first char of the link text can exist in lower/uppercase and is lowercase if ( linkText.substr(0, 1).toLowerCase() != linkText.substr(0, 1).toUpperCase() ) { if ( linkText.substr(0, 1) == linkText.substr(0, 1).toLowerCase() ) { linkArticle = linkArticle.substr(0, 1).toLowerCase() + linkArticle.substr(1); } } // suffix links regExpStr = '^' + linkArticle.replace(/(\W)/g, '\\$1') + '([\\wŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9]+)$'; regExp = new RegExp(regExpStr); regExpMatch = regExp.exec(linkText); if (regExpMatch != null) { return('[[' + linkArticle + linkArticleAnchor + ']]' + regExpMatch[1]); } return('[[' + linkArticle + linkArticleAnchor + '|' + linkText + ']]'); } // external link if (hrefValue != '') { // PubMed link regExpMatch = /^http:\/\/www\.ncbi\.nlm\.nih\.gov\/entrez\/query\.fcgi\?cmd=Retrieve&db=pubmed&.*?&list_uids=(\d+)/.exec(hrefValue); if (regExpMatch != null) { return('PMID ' + regExpMatch[1]); } // DOI link regExpMatch = /^http:\/\/dx\.doi\.org\/(.*)/.exec(hrefValue); if (regExpMatch != null) { return('{{doi|' + regExpMatch[1] + '}}'); } // other external link return('[' + hrefValue + ' ' + linkText + ']'); } } // return unchanged text return(p1); } ); // clean up MediaWiki category list var regExp = new RegExp('<span\\b[^>]*>(\\[\\[(Category|' + wikEdText['wikicode Category'] + ')\\s*:[^\\]]+\\]\\])<\\/span>[\\s\\u0000\\|]*', 'gi'); obj.html = obj.html.replace(regExp, '$1\u0000'); // clean up DOI obj.html = obj.html.replace(/\[\[Digital object identifier\|DOI\]\]:(\{\{doi\|[^\}\s]+\}\})/gi, '$1'); // convert images obj.html = obj.html.replace(/<img\b([^>]*)>/gi, function (p, p1) { // get and format parameters var address = ''; var regExpMatch = /\bsrc\s*=\s*(\'|\")([^\'\"]*)(\'|\")/i.exec(p1); if (regExpMatch != null) { address = regExpMatch[2].replace(/^ +| +$/g, ''); } var imgAlt = ''; regExpMatch = /\balt\s*=\s*(\'|\")([^\'\"]*)(\'|\")/i.exec(p1); if (regExpMatch != null) { imgAlt = regExpMatch[2].replace(/^ +| +$/g, ''); imgAlt = imgAlt.replace(/&nbsp;|[\n\u0000]/g, ' '); imgAlt = imgAlt.replace(/ {2,}/g, ' '); imgAlt = imgAlt.replace(/^ | $/g, ''); if (imgAlt != '') { imgAlt = '|' + imgAlt; } } var imgWidth = ''; regExpMatch = /\bwidth\s*=\s*(\'|\")([^\'\"]*)(\'|\")/i.exec(p1); if (regExpMatch != null) { imgWidth = '|' + regExpMatch[2].replace(/^ +| +$/g, '') + 'px'; } var imgLink = ''; regExpMatch = /([^\/]+)$/.exec(address); if (regExpMatch != null) { imgLink = regExpMatch[1]; if (imgLink != '') { return('[[' + wikEdText['wikicode Image'] + ':' + imgLink + imgWidth + imgAlt + ']]'); } } return(''); } ); // convert lists: * # : ; var listObj = {}; listObj.prefix = ''; obj.html = obj.html.replace(/[\s\u0000]*<(\/?(ol|ul|li|dl|dd|dt))\b[^>]*>[\s\u0000]*()/gi, function (p, p1, p2, p3, p4) { switch (p1.toLowerCase()) { case 'ol': listObj.prefix += '#'; return('\u0000'); case 'ul': listObj.prefix += '*'; return('\u0000'); case 'dl': listObj.prefix += ':'; return('\u0000'); case '/ol': case '/ul': case '/dl': listObj.prefix = listObj.prefix.substr(0, listObj.prefix.length - 1); return('\u0000\u0000'); case 'li': case 'dd': return('\u0000' + listObj.prefix + ' '); case 'dt': return('\u0000' + listObj.prefix.replace(/:$/, ';') + ' '); case '/li': case '/dt': case '/dd': return(''); } return(''); } ); obj.html = obj.html.replace(/[\n|\u0000]+[#\*:\;]+ (?=[\n|\u0000])/g, ''); // <> remove not allowed tags obj.html = obj.html.replace(/(<\/?)(\/?)(\w+)(.*?>)/g, function (p, p1, p2, p3, p4) { if (wikEdTableMode == true) { if ( /^(table|tr|td|th|thead|tbody|tfoot|col|colgroup|caption)$/i.test(p3) ) { var tag = p1 + p2 + p3 + p4; tag = tag.replace(/</g, '\u0001'); tag = tag.replace(/>/g, '\u0002'); return(tag); } else { return(''); } } else if ( /^(big|blockquote|colgroup|center|code|del|div|font|ins|p|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|noinclude|includeonly|ref|charinsert|fundraising|fundraisinglogo|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)$/i.test(p3) ) { return(p1 + p2 + p3 + p4); } else { return(''); } } ); // sanitize attributes in opening html tags obj.html = obj.html.replace(/<(\w+) +(.*?) *(\/?)>/g, function (p, p1, p2, p3) { if (p3 != '') { p3 = ' ' + p3; } return('<' + p1 + WikEdSanitizeAttributes(p1, p2, relaxed) + p3 + '>'); } ); // unformat underlined, italic or bold blanks obj.html = obj.html.replace(/<u>(\'\'\'|\'\'|\s|\u0000)*([\s\u0000]+)(\'\'\'|\'\'|\s|\u0000)*<\/u>/g, '$2'); obj.html = obj.html.replace(/\'\'\'(\'\'|\s|\u0000)*([\s\u0000]+)(\'\'|\s|\u0000)*\'\'\'/g, '$2'); obj.html = obj.html.replace(/\'\'([\s\u0000]+)\'\'/g, '$1'); // fix MS Word non-style heading formatting obj.html = obj.html.replace(/(\u0000(={1,6}) *)(<u>|\'\'\'|\'\')+(.*?)(<\/u>|\'\'\'|\'\')+( *\2\u0000)/gi, '$1$4$6'); // remove empty headings obj.html = obj.html.replace(/\u0000(={1,6})\s+\1\u0000/g, '\u0000'); // remove space-only lines obj.html = obj.html.replace(/([\s\u0000]*\u0000[\s\u0000]*)/g, function (p, p1) { return(p1.replace(/\n/g, '\u0000')); } ); obj.html = obj.html.replace(/\u0000\s+/g, '\u0000'); obj.html = obj.html.replace(/\s+(?=\u0000)/g, '\u0000'); // remove trailing linebreaks from table cells obj.html = obj.html.replace(/\u0000{2,}(\|)/g, '\u0000$1'); // remove leading and trailing spaces obj.html = obj.html.replace(/>\s+\u0000/g, '>\u0000'); obj.html = obj.html.replace(/\u0000\s+</g, '\u0000<'); // remove empty inline and block tag pairs obj.html = obj.html.replace(/( *)<(big|colgroup|code|del|font|ins|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|noinclude|includeonly|ref|charinsert|fundraising|fundraisinglogo)\b[^>]*><\/\1> *()/gi, '$1'); obj.html = obj.html.replace(/[\s\u0000]*<(blockquote|center|div|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)\b[^>]*><\/\1>[\s\u0000]*()/gi, '\u0000\u0000'); // remove empty lines from block tags obj.html = obj.html.replace(/(<(blockquote|center|div|p|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)\b[^>]*>)[\s\u0000]+/gi, '$1'); obj.html = obj.html.replace(/[\s\u0000]+(<\/(blockquote|center|div|p|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)>)/gi, '$1'); // escape < > obj.html = obj.html.replace(/</g, '<'); obj.html = obj.html.replace(/>/g, '>'); // preserved table tags obj.html = obj.html.replace(/\u0001/g, '<'); obj.html = obj.html.replace(/\u0002/g, '>'); // newlines to <br /> obj.html = obj.html.replace(/\u0000+\n/g, '\n'); obj.html = obj.html.replace(/\n\u0000+/g, '\n'); obj.html = obj.html.replace(/\n*\u0000(\u0000|\n)+/g, '\n\n'); obj.html = obj.html.replace(/\u0000/g, '\n'); obj.html = obj.html.replace(/\n/g, '<br />'); // table block element needs only one newline obj.html = obj.html.replace(/(<\/table><br\b[^>]*>)(<br\b[^>]*>)+/g, '$1'); // remove empty lines from article start and end if (obj.from == 'whole') { obj.html = obj.html.replace(/^(<br\b[^>]*>)+/gi, ''); obj.html = obj.html.replace(/(<br\b[^>]*>)+$/gi, ''); } return; } // // WikEdRelativeToAbsolutePath // broken for editing article names containing "/", https://bugzilla.mozilla.org/show_bug.cgi?id=430910 window.WikEdRelativeToAbsolutePath = function(relativePath, fullPath) { var absolutePath = ''; // get current url if (fullPath == null) { fullPath = window.location.href; fullPath = fullPath.replace(/#.*/, ''); fullPath = fullPath.replace(/\?.*/, ''); } // ./index.php if (/^\.\/()/.test(relativePath) == true) { relativePath = relativePath.replace(/^\.\/()/, ''); fullPath = fullPath.replace(/\/[^\/]*$/, ''); absolutePath = fullPath + '/' + relativePath; } // ../../index.php else if (/^\.\.\/()/.test(relativePath) == true) { while (/^\.\.\/()/.test(relativePath) == true) { relativePath = relativePath.replace(/^\.\.\/()/, ''); fullPath = fullPath.replace(/\/[^\/]*$/, ''); } absolutePath = fullPath + '/' + relativePath; } // full path else { absolutePath = relativePath; } return(absolutePath); } // // WikEdSanitizeAttributes: see Sanitizer.php // window.WikEdSanitizeAttributes = function(tag, attributes, relaxed) { var common; var tablealign; var tablecell; var table; if (relaxed == true) { common = 'dir|style|class'; // not needed: lang|id|title tablealign = '|align|char|charoff|valign'; table = '|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor'; tablecell = '|abbr|axis|headers|scope|rowspan|colspan|nowrap|width|height|bgcolor'; } else { common = 'dir'; table = '|border|cellspacing|cellpadding|align|bgcolor'; tablealign = '|align|valign'; tablecell = '|rowspan|colspan|nowrap|bgcolor'; } tag = tag.toLowerCase(); var sanitized = ''; var regExp = /(\w+)\s*=\s*((\'|\")(.*?)\3|(\w+))/g; var regExpMatch; while ( (regExpMatch = regExp.exec(attributes)) != null) { var attrib = regExpMatch[1]; var attribValue = regExpMatch[4] || regExpMatch[5]; if (attribValue == '') { continue; } var valid = false; // relaxed, for existing text tags if (relaxed == true) { if ('center|em|strong|cite|code|var|sub|supdl|dd|dt|tt|b|i|big|small|strike|s|u|rb|rp|ruby'.indexOf(tag) >= 0) { if (common.indexOf(attrib) >= 0) { valid = true; } } else if ('div|span|h1|h2|h3|h4|h5|h6|p'.indexOf(tag) >= 0) { if ((common + '|align').indexOf(attrib) >= 0) { valid = true; } } else if ('blockquote'.indexOf(tag) >= 0) { if ((common + '|cite').indexOf(attrib) >= 0) { valid = true; } } else if ('br'.indexOf(tag) >= 0) { if ('style|clear'.indexOf(attrib) >= 0) { valid = true; } } else if ('pre'.indexOf(tag) >= 0) { if ((common + '|width').indexOf(attrib) >= 0) { valid = true; } } else if ('ins|del'.indexOf(tag) >= 0) { if ((common + '|cite|datetime').indexOf(attrib) >= 0) { valid = true; } } else if ('ul'.indexOf(tag) >= 0) { if ((common + '|type').indexOf(attrib) >= 0) { valid = true; } } else if ('ol'.indexOf(tag) >= 0) { if ((common + '|type|start').indexOf(attrib) >= 0) { valid = true; } } else if ('li'.indexOf(tag) >= 0) { if ((common + '|type|value').indexOf(attrib) >= 0) { valid = true; } } else if ('table'.indexOf(tag) >= 0) { if ((common + table).indexOf(attrib) >= 0) { valid = true; } } else if ('caption'.indexOf(tag) >= 0) { if ((common + '|align').indexOf(attrib) >= 0) { valid = true; } } else if ('thead|tfoot|tbody'.indexOf(tag) >= 0) { if ((common + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('colgroup|col'.indexOf(tag) >= 0) { if ((common + '|span|width' + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('tr'.indexOf(tag) >= 0) { if ((common + '|bgcolor' + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('td|th'.indexOf(tag) >= 0) { if ((common + tablecell + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('font'.indexOf(tag) >= 0) { if ((common + '|size|color|face').indexOf(attrib) >= 0) { valid = true; } } else if ('hr'.indexOf(tag) >= 0) { if ((common + '|noshade|size|width').indexOf(attrib) >= 0) { valid = true; } } else if ('rt'.indexOf(tag) >= 0) { if ((common + '|rbspan').indexOf(attrib) >= 0) { valid = true; } } else if ('ref'.indexOf(tag) >= 0) { if (('name').indexOf(attrib) >= 0) { valid = true; } } else if ('references'.indexOf(tag) >= 0) { } else if ('source'.indexOf(tag) >= 0) { if (('lang').indexOf(attrib) >= 0) { valid = true; } } else if ('poem'.indexOf(tag) >= 0) { if (common.indexOf(attrib) >= 0) { valid = true; } } else if ('categorytree'.indexOf(tag) >= 0) { if ((common + '|mode|depth|onlyroot|hideroot|hideprefix|showcount|namespaces').indexOf(attrib) >= 0) { valid = true; } } else if ('charinsert'.indexOf(tag) >= 0) { } else if ('fundraising'.indexOf(tag) >= 0) { } else if ('fundraisinglogo'.indexOf(tag) >= 0) { } else if ('hiero'.indexOf(tag) >= 0) { } else if ('imagemap'.indexOf(tag) >= 0) { } else if ('inputbox'.indexOf(tag) >= 0) { } else if ('timeline'.indexOf(tag) >= 0) { } else if ('gallery'.indexOf(tag) >= 0) { if ((common + '|perrow|widths|heights').indexOf(attrib) >= 0) { valid = true; } } } // strict, for html code to be wikified from external sources (websites, Word) else { if ('center|em|strong|cite|code|var|sub|supdl|dd|dt|tt|b|i|big|small|strike|s|u|rb|rp|ruby|blockquote|pre|ins|del'.indexOf(tag) >= 0) { if (common.indexOf(attrib) >= 0) { valid = true; } } else if ('div|span|h1|h2|h3|h4|h5|h6|p'.indexOf(tag) >= 0) { if ((common + '|align').indexOf(attrib) >= 0) { valid = true; } } else if ('br'.indexOf(tag) >= 0) { if ('clear'.indexOf(attrib) >= 0) { valid = true; } } else if ('ul'.indexOf(tag) >= 0) { if ((common + '|type').indexOf(attrib) >= 0) { valid = true; } } else if ('ol'.indexOf(tag) >= 0) { if ((common + '|type|start').indexOf(attrib) >= 0) { valid = true; } } else if ('li'.indexOf(tag) >= 0) { if ((common + '|type|value').indexOf(attrib) >= 0) { valid = true; } } else if ('table'.indexOf(tag) >= 0) { if ((common + table).indexOf(attrib) >= 0) { valid = true; } } else if ('caption'.indexOf(tag) >= 0) { if ((common + '|align').indexOf(attrib) >= 0) { valid = true; } } else if ('thead|tfoot|tbody'.indexOf(tag) >= 0) { if ((common + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('colgroup|col'.indexOf(tag) >= 0) { if ((common + '|span' + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('tr'.indexOf(tag) >= 0) { if ((common + '|bgcolor' + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('td|th'.indexOf(tag) >= 0) { if ((common + tablecell + tablealign).indexOf(attrib) >= 0) { valid = true; } } else if ('font'.indexOf(tag) >= 0) { if ((common + '|color').indexOf(attrib) >= 0) { valid = true; } } else if ('hr'.indexOf(tag) >= 0) { if ((common + '|noshade|size').indexOf(attrib) >= 0) { valid = true; } } else if ('rt'.indexOf(tag) >= 0) { if ((common + '|rbspan').indexOf(attrib) >= 0) { valid = true; } } else if ('ref'.indexOf(tag) >= 0) { if (('name').indexOf(attrib) >= 0) { valid = true; } } else if ('references'.indexOf(tag) >= 0) { } else if ('source'.indexOf(tag) >= 0) { if (('lang').indexOf(attrib) >= 0) { valid = true; } } else if ('poem'.indexOf(tag) >= 0) { if (common.indexOf(attrib) >= 0) { valid = true; } } else if ('categorytree'.indexOf(tag) >= 0) { if ((common + '|mode|depth|onlyroot|hideroot|hideprefix|showcount|namespaces').indexOf(attrib) >= 0) { valid = true; } } else if ('charinsert'.indexOf(tag) >= 0) { } else if ('fundraising'.indexOf(tag) >= 0) { } else if ('fundraisinglogo'.indexOf(tag) >= 0) { } else if ('hiero'.indexOf(tag) >= 0) { } else if ('imagemap'.indexOf(tag) >= 0) { } else if ('inputbox'.indexOf(tag) >= 0) { } else if ('timeline'.indexOf(tag) >= 0) { } else if ('gallery'.indexOf(tag) >= 0) { } } // clean up if (valid == true) { // clean up defaults for align if (attrib == 'align') { if ('tr|td|th'.indexOf(tag) >= 0) { if (attribValue == 'left') { attribValue = ''; } } } // clean up defaults for valign else if (attrib == 'valign') { if ('tr|td|th'.indexOf(tag) >= 0) { if (attribValue == 'top') { attribValue = ''; } } } // clean up style else if (attrib == 'style') { // remove non-standard Mozilla styles attribValue = attribValue.replace(/(^| )(-moz-[\w\-]+): [\w\-]+; *()/g, '$1'); attribValue = attribValue.replace(/(^| )([\w\-]+): [^;]*(-moz-[\w\-]+|windowtext)[^;]*; *()/g, '$1'); // remove dimensions from null values attribValue = attribValue.replace(/\b0(%|in|cm|mm|em|ex|pt|pc|px)\b/g, '0'); // remove empty definitions and spaces attribValue = attribValue.replace(/[\w\-]+ *\: *\; *()/g, ''); attribValue = attribValue.replace(/ *(;|:) *()/g, '$1 '); attribValue = attribValue.replace(/( |;)+$/g, ';'); } // clean up class else if (attrib == 'class') { // remove MS Word classes attribValue = attribValue.replace(/^Ms.*$/g, ''); } if (attribValue != '') { sanitized += ' ' + attrib + '="' + attribValue + '"'; } } } return(sanitized); } // // // WikEdRemoveHighlighting: remove syntax highlighting in obj.html; sets obj.htmlCode if text contains html code // expects <br /> instead of \n window.WikEdRemoveHighlighting = function(obj) { // remove highlighting and atttribute-free span tags var isRemove = []; obj.html = obj.html.replace(/(<(\/?)span\b([^>]*)>)/g, function (p, p1, p2, p3) { if (p2 == '') { if (/\bclass=\"wikEd\w+\"/.test(p3)) { isRemove.push(true); return(''); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return(''); } return(p1); } ); // remove highlighting div tags var isRemove = []; obj.html = obj.html.replace(/(<(\/?)div\b([^>]*)>)/g, function (p, p1, p2, p3) { if (p2 == '') { if (/\bclass=\"wikEd\w+\"/.test(p3)) { isRemove.push(true); return(''); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return(''); } return(p1); } ); // remove highlighting pre tags var isRemove = []; obj.html = obj.html.replace(/(<(\/?)pre\b([^>]*)>)/g, function (p, p1, p2, p3) { if (p2 == '') { if (/\bclass=\"wikEd\w+\"/.test(p3)) { isRemove.push(true); return(''); } isRemove.push(false); return(p1); } if (isRemove.pop() == true) { return(''); } return(p1); } ); // comments obj.html = obj.html.replace(/<!--wikEd\w+-->/g, ''); // newlines obj.html = obj.html.replace(/[\n\r ]+/g, ' '); // non-breaking spaces obj.html = obj.html.replace(/ /g, '\u00a0'); // check for pasted html content if (obj.html.match(/<(?!br\b)/) != null) { obj.htmlCode = true; } else { obj.htmlCode = false; } return; } // // WikEdHighlightSyntax: highlight syntax in obj.html; if singleLine is set, no block syntax will be highlighted; call WikEdRemoveHighlighting first // expects < > < > & \u00a0 instead of \n instead of <br /> window.WikEdHighlightSyntax = function(obj, singleLine) { var html = obj.html; // start timer to cancel after wikEdMaxHighlightTime var startDate = new Date(); // MS IE compatibility fix: use \n instead of \r\n html = html.replace(/\r\n?/g, '\n'); // < > & to \u0000 \u0001 \u0002 html = html.replace(/</g, '\u0000'); html = html.replace(/>/g, '\u0001'); html = html.replace(/&/g, '\u0002'); // #REDIRECT html = html.replace(/(^|\n)(#)(redirect\b)/gi, '$1<span class="wikEdWikiRedir">$3</span><!--wikEdWikiRedir-->'); // nowiki (no html highlighting) html = html.replace(/(\u0000nowiki\b.*?\u0001)(.*?)(\u0000\/nowiki\b.*?\u0001)/gi, function (p, p1, p2, p3) { p2 = p2.replace(/\u0000/g, '<'); p2 = p2.replace(/\u0001/g, '>'); return(p1 + p2 + p3); } ); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime / 10) { return; } // blocks // lists * # : ; html = html.replace(/^((\u0000!--.*?--\u0001)*)([\*\#\:\;]+)(.*?)$/gm, '<span class="wikEdListLine">$1<span class="wikEdListTag">$3</span><!--wikEdListTag-->$4</span><!--wikEdListLine-->'); if (singleLine != true) { html = html.replace(/((<span class=\"wikEdListLine\">[^\n]*\n)+)/g, '<span class="wikEdListBlock">$1'); html = html.replace(/(<span class=\"wikEdListLine\">[^\n]*)(\n)(?!<span class=\"wikEdListLine\">)/g, '$1</span><!--wikEdListBlock-->$2'); } // #REDIRECT (finish) html = html.replace(/(<span class=\"wikEdWikiRedir\">)(.*?<\/span><!--wikEdWikiRedir-->)/g, '$1#$2'); // various blocks if (singleLine != true) { html = html.replace(/(\u0000(blockquote|center|div|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline)\b[^\u0001]*\u0001.*?\u0000\/\2\u0001)/gi, '<span class="wikEdBlock">$1</span><!--wikEdBlock-->'); } // space-pre if (singleLine != true) { html = html.replace(/^((\u0000!--.*?--\u0001)*)[\u00a0 ]([\u00a0 ]*)(.*?)$/gm, '<span class="wikEdSpaceLine">$1<span class="wikEdSpaceTag"> $3</span><!--wikEdSpaceTag-->$4</span><!--wikEdSpaceLine-->'); html = html.replace(/((<span class=\"wikEdSpaceLine\">[^\n]*\n)+)/g, '<span class="wikEdSpaceBlock">$1'); html = html.replace(/(<span class=\"wikEdSpaceLine\">[^\n]*)(\n)(?!<span class="wikEdSpaceLine">)/g, '$1</span><!--wikEdSpaceBlock-->$2'); } // check spent time if (new Date() - startDate > wikEdMaxHighlightTime / 10) { return; } // ---- <hr> horizontal rule html = html.replace(/(^|\n)((\u0000!--.*?--\u0001|<[^>]*>)*)(----)((\u0000!--.*?--\u0001|<[^>]*>)*)(\n|$)/g, '$1<span class="wikEdHR">$2$4</span><!--wikEdHR-->$5$7'); html = html.replace(/(\u0000hr\u0001)/g, '<span class="wikEdHRInline">$1</span><!--wikEdHRInline-->'); // == headings html = html.replace(/(^|\n)((\u0000!--.*?--\u0001|<[^>]*>)*)(=+[\u00a0 ]*)([^\n]*?)([\u00a0 ]*=+)(?=([\u00a0 ]|<[^>]*>|\u0000!--.*?--\u0001)*(\n|$))/g, function (p, p1, p2, p3, p4, p5, p6) { p4 = p4.replace(/(=+)/g, '<span class="wikEdWiki">$1</span><!--wikEdWiki-->'); p6 = p6.replace(/(=+)/g, '<span class="wikEdWiki">$1</span><!--wikEdWiki-->'); var regExp = new RegExp('^' + wikEdText['External links'] + '?|' + wikEdText['External links'] + '|' + wikEdText['See also'] + '|' + wikEdText['References'] + '$', 'i'); if (regExp.test(p5) == true) { p1 = p1 + '<span class="wikEdHeadingWp">'; p6 = p6 + '</span><!--wikEdHeadingWp-->'; } else { p1 = p1 + '<span class="wikEdHeading">'; p6 = p6 + '</span><!--wikEdHeading-->'; } return(p1 + p2 + p4 + p5 + p6); } ); // tables {| |+ |- ! |} | html = html.replace(/^((\u0000!--.*?--\u0001)*)(\{\||\|\+|\|\-|\!|\|\}([^\}]|$)|\|)(.*?)$/gm, '<span class="wikEdTableLine">$1<span class="wikEdTableTag">$3</span><!--wikEdTableTag-->$5</span><!--wikEdTableLine-->'); if (singleLine != true) { html = html.replace(/(^|\n)((<[^>]*>|\u0000!--.*?--\u0001)*\{\|)/g, '$1<span class="wikEdTableBlock">$2'); html = html.replace(/(^|\n)((<[^>]*>|\u0000!--.*?--\u0001)*\|\}(<[^>]*>)*)/g, '$1$2</span><!--wikEdTableBlock-->'); html = html.replace(/(\u0000table\b[^\u0001]*\u0001)/gi, '<span class="wikEdTableBlock">$1'); html = html.replace(/(\u0000\/table\u0001)/gi, '$1</span><!--wikEdTableBlock-->'); } // <gallery> wiki markup if (singleLine != true) { html = html.replace(/(\u0000(gallery)\b[^\u0001]*\u0001)/gi, '<span class="wikEdWiki">$1'); html = html.replace(/(\u0000\/(gallery)\u0001)/gi, '$1</span><!--wikEdWiki-->'); } // various block tags html = html.replace(/(\u0000\/?(blockquote|center|div|pre|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline)\b[^\u0001]*\u0001)/gi, '<span class="wikEdBlockTag">$1</span><!--wikEdBlockTag-->'); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime / 5) { return; } // <p> ... </p> pairs with (wikEdBlockTag) and withhout attributes (wikEdUnknown) var isRemove = []; html = html.replace(/(\u0000(\/?)p\b([^\u0001]*?)\u0001)/g, function (p, p1, p2, p3) { if (p2 == '') { if (p3 == '') { isRemove.push(true); return('<span class="wikEdUnknown">' + p1 + '</span><!--wikEdUnknown-->'); } if (/\/$/.test(p3)) { return('<span class="wikEdUnknown">' + p1 + '</span><!--wikEdUnknown-->'); } isRemove.push(false); return('<span class="wikEdBlockTag">' + p1 + '</span><!--wikEdBlockTag-->'); } if (isRemove.pop() == true) { return('<span class="wikEdUnknown">' + p1 + '</span><!--wikEdUnknown-->'); } return('<span class="wikEdBlockTag">' + p1 + '</span><!--wikEdBlockTag-->'); } ); // inline elements // <sup> </sub> <ins> <del> html = html.replace(/(\u0000sup\b[^\u0001]*\u0001((.|\n)*?)\u0000\/sup\u0001)/gi, '<span class="wikEdSuperscript">$1</span><!--wikEdSuperscript-->'); html = html.replace(/(\u0000sub\b[^\u0001]*\u0001((.|\n)*?)\u0000\/sub\u0001)/gi, '<span class="wikEdSubscript">$1</span><!--wikEdSubscript-->'); html = html.replace(/(\u0000(ins|u)\b[^\u0001]*\u0001((.|\n)*?)\u0000\/(ins|u)\u0001)/gi, '<span class="wikEdIns">$1</span><!--wikEdIns-->'); html = html.replace(/(\u0000(del|s|strike)\b[^\u0001]*\u0001((.|\n)*?)\u0000\/(del|s|strike)\u0001)/gi, '<span class="wikEdDel">$1</span><!--wikEdDel-->'); // <ref /> and <ref> wiki markup if (wikEdRefHide != true) { html = html.replace(/\u0000(ref\b[^\u0001]*?\/)\u0001/gi, '<span class="wikEdRef"><$1></span><!--wikEdRef-->'); html = html.replace(/(\u0000ref\b[^\u0001]*\u0001((.|\n)*?)\u0000\/ref\u0001)/gi, '<span class="wikEdRef">$1</span><!--wikEdRef-->'); } // various inline tags html = html.replace(/(\u0000\/?(sub|sup|ins|u|del|s|strike|big|br|colgroup|code|font|small|span|tt|rb|rp|rt|ruby)\b[^\u0001]*\u0001)/gi, '<span class="wikEdInlineTag">$1</span><!--wikEdInlineTag-->'); // <references/> wiki markup html = html.replace(/\u0000((references)\b[^\u0001]*?\/)\u0001/gi, '<span class="wikEdWiki"><$1></span><!--wikEdWiki-->'); // wiki markup html = html.replace(/(\u0000(math|noinclude|includeonly|charinsert|fundraising|fundraisinglogo|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)\b[^\u0001]*\u0001((.|\n)*?)(\u0000)\/\2\u0001)/gi, '<span class="wikEdWiki">$1</span><!--wikEdWiki-->'); // unsupported or not needed <> tags html = html.replace(/(\u0000\/?)(\w+)(.*?\/?\u0001)/g, function (p, p1, p2, p3) { if ( ! /^(col|thead|tfoot|tbody|big|br|blockquote|colgroup|center|code|del|div|font|ins|p|pre|s|small|span|strike|sub|sup|tt|u|rb|rp|rt|ruby|nowiki|math|noinclude|includeonly|ref|charinsert|fundraising|fundraisinglogo|gallery|source|poem|categorytree|hiero|imagemap|inputbox|timeline|references)$/i.test(p2) ) { p1 = '<span class="wikEdUnknown">' + p1; p3 = p3 + '</span><!--wikEdUnknown-->'; } return(p1 + p2 + p3); } ); // comments html = html.replace(/(\u0000!--(.|\n)*?--\u0001)/g, '<span class="wikEdComment">$1</span><!--wikEdComment-->'); // named html colors in quotation marks html = html.replace(/(\'|\")(aliceblue|antiquewhite|aqua|aquamarine|azure|beige|bisque|blanchedalmond|burlywood|chartreuse|coral|cornsilk|cyan|darkgray|darkgrey|darkkhaki|darkorange|darksalmon|darkseagreen|floralwhite|fuchsia|gainsboro|ghostwhite|gold|goldenrod|greenyellow|honeydew|hotpink|ivory|khaki|lavender|lavenderblush|lawngreen|lemonchiffon|lightblue|lightcoral|lightcyan|lightgoldenrodyellow|lightgray|lightgreen|lightgrey|lightpink|lightsalmon|lightskyblue|lightsteelblue|lightyellow|lime|linen|magenta|mediumaquamarine|mediumspringgreen|mediumturquoise|mintcream|mistyrose|moccasin|navajowhite|oldlace|orange|palegoldenrod|palegreen|paleturquoise|papayawhip|peachpuff|peru|pink|plum|powderblue|salmon|sandybrown|seashell|silver|skyblue|snow|springgreen|tan|thistle|turquoise|violet|wheat|white|whitesmoke|yellow|yellowgreen)(\1)/g, '$1<span style="background-color: $2;" class="wikEdColorsLight">$2</span><!--wikEdColorsLight-->$3'); html = html.replace(/(\'|\")(black|blue|blueviolet|brown|cadetblue|chocolate|cornflowerblue|crimson|darkblue|darkcyan|darkgoldenrod|darkgreen|darkmagenta|darkolivegreen|darkorchid|darkred|darkslateblue|darkslategray|darkslategrey|darkturquoise|darkviolet|deeppink|deepskyblue|dimgray|dimgrey|dodgerblue|firebrick|forestgreen|gray|green|grey|indianred|indigo|lightseagreen|lightslategray|lightslategrey|limegreen|maroon|mediumblue|mediumorchid|mediumpurple|mediumseagreen|mediumslateblue|mediumvioletred|midnightblue|navy|olive|olivedrab|orangered|orchid|palevioletred|purple|red|rosybrown|royalblue|saddlebrown|seagreen|sienna|slateblue|slategray|slategrey|steelblue|teal|tomato)(\1)/g, '$1<span style="background-color: $2;" class="wikEdColorsDark">$2</span><!--wikEdColorsDark-->$3'); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime / 2) { return; } // RGB hex colors #d4d0cc, exclude links and character entities starting with & html = html.replace(/(^|[^\/\w\u0002])(#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2}))(?=(\W|$))/g, function (p, p1, p2, p3, p4, p5) { var luminance = parseInt(p3, 16) * 0.299 + parseInt(p4, 16) * 0.587 + parseInt(p5, 16) * 0.114; if (luminance > 128) { return(p1 + '<span style="background-color: ' + p2 + '" class="wikEdColorsLight">' + p2 + '</span><!--wikEdColorsLight-->'); } else { return(p1 + '<span style="background-color: ' + p2 + '" class="wikEdColorsDark">' + p2 + '</span><!--wikEdColorsDark-->'); } } ); // RGB hex colors #ddc, exclude links and character entities starting with & html = html.replace(/(^|[^\/\w\u0002])(#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F]))(?=(\W|$))/g, function (p, p1, p2, p3, p4, p5) { var luminance = parseInt(p3, 16) * 16 * 0.299 + parseInt(p4, 16) * 16 * 0.587 + parseInt(p5, 16) * 16 * 0.114; if (luminance > 128) { return(p1 + '<span style="background-color: ' + p2 + '" class="wikEdColorsLight">' + p2 + '</span><!--wikEdColorsLight-->'); } else { return(p1 + '<span style="background-color: ' + p2 + '" class="wikEdColorsDark">' + p2 + '</span><!--wikEdColorsDark-->'); } } ); // RGB decimal colors rgb(128,64,265) html = html.replace(/(rgb\(\s*(\d+),\s*(\d+),\s*(\d+)\s*\))/gi, function (p, p1, p2, p3, p4) { var luminance = p2 * 0.299 + p3 * 0.587 + p4 * 0.114; if (luminance > 128) { return('<span style="background-color: ' + p1 + '" class="wikEdColorsLight">' + p1 + '</span><!--wikEdColorsLight-->'); } else { return('<span style="background-color: ' + p1 + '" class="wikEdColorsDark">' + p1 + '</span><!--wikEdColorsDark-->'); } } ); // clear array of link addresses if (obj.whole == true) { wikEdFollowLinkIdNo = 0; wikEdFollowLinkHash = {}; } obj.whole = false; // URLs html = html.replace(/(^|.)((http:\/\/|https:\/\/|ftp:\/\/|irc:\/\/|gopher:\/\/|news:|mailto:|file:\/\/)[\!\#\%\&\(\)\+-\/\:\;\=\?\@\w\~ŠŒŽœžŸŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]*)/g, function (p, p1, p2, p3) { var trailingChar = ''; // do not include trailing punctuation for in-text links if (p1 != '[') { var linkMatch = p2.match(/^(.*?)([\,\.\!\?\:\;])$/); if (linkMatch != null) { p2 = linkMatch[1]; trailingChar = linkMatch[2]; } } return(p1 + '<span class="wikEdURLLink"' + WikEdFollowLinkUrl(null, null, p2) + '>' + p2 + '</span><!--wikEdURLLink-->' + trailingChar); } ); // URLs with text html = html.replace(/(\[)( *<span class=\"wikEdURLLink\"[^>]*>.*?<\!--wikEdURLLink--> *)([^\]\n]*?)( *\])/gi, function (p, p1, p2, p3, p4) { // link text p3 = p3.replace(/(.*)/, '<span class="wikEdURLText">$1</span><!--wikEdURLText-->'); // link tags p1 = p1.replace(/(\[)/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); p4 = p4.replace(/(\])/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); return(p1 + p2 + p3 + p4); } ); // highlight images // p11 needed to prevent freezing for certain nested tags // 1 23 3 24 456 78 9 7 6 5 10 11 // ( [[ )((Image|File| Image | File ) : )( name )(( | (( wikilink ) ( link ) non-link )*)*)( )( ]] ) var regExpImg = new RegExp('(\\[\\[)((Image|File|' + wikEdText['wikicode Image'] + '|' + wikEdText['wikicode File'] + ') *: *)([^\\[\\]\\|\\n]*)((\\|((\\[\\[[^\\]\\n]*\\]\\])?(\\[[^\\[\\]\\n]*\\])?[^\\[\\]\\|]*)*)*)(.*?)(\\]\\])', 'gi'); html = html.replace(regExpImg, function (p, p1, p2, p3, p4, p5, p6, p7, p8, p9, p10, p11) { var linkTitle = p4; linkTitle = linkTitle.replace(/\|.*()/g, ''); linkTitle = linkTitle.replace(/\n.*()/g, ''); p1 = '<span class="wikEdImage"' + WikEdFollowLinkUrl(p2, linkTitle) + '>' + p1; p11 = p11 + '</span><!--wikEdImage-->'; p2 = '<span class="wikEdImageName">' + p2; p4 = p4 + '</span><!--wikEdImageName-->'; // parameters and capture p5 = p5.replace(/((\[[^\]]\]|\[\[[^\]]\]\]|[^\]\|])+)/g, function (p, p1) { if (/^(thumb|thumbnail|frame|right|left|center|none|\d+px|\d+x\d+px)$/.test(p1) == true) { p1 = '<span class="wikEdImageParam">' + p1 + '</span><!--wikEdImageParam-->'; } else { p1 = '<span class="wikEdImageCaption">' + p1 + '</span><!--wikEdImageCaption-->'; } return(p1); } ); // link tags p1 = p1.replace(/(\[+)/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); p11 = p11.replace(/(\]+)/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); p5 = p5.replace(/(\|)/g, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); return(p1 + p2 + p4 + p5 + p10 + p11); } ); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime / 2) { return; } // [[ ]] links, categories html = html.replace(/(\[\[)([^\[\]]*)(\]\])/g, function (p, p1, p2, p3) { // omit image tags var regExpImg = new RegExp('^(<[^>]*>)*(Image|File|' + wikEdText['wikicode Image'] + '|' + wikEdText['wikicode File'] + ')\\s*:', 'i'); if (regExpImg.test(p2) == true) { return(p1 + p2 + p3); } // get url var linkParam = ''; var linkInter = ''; var linkMatch = p2.match(/^\s*(([\w ŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\-]*\s*:)*)\s*([^\|]+)/); if (linkMatch != null) { linkInter = linkMatch[1]; linkParam = WikEdFollowLinkUrl(linkInter, linkMatch[3]); } // category var regExpCat = new RegExp('^\\s*(Category|' + wikEdText['wikicode Category'] + ')\\s*:', 'i'); if (regExpCat.test(p2)) { var regExp = new RegExp('\\s*[\\w\\- ŠŒŽšœžŸÀ-ÖØ-öø-\\u0220\\u0222-\\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\\u0400-\\u0481\\u048a-\\u04ce\\u04d0-\\u04f5\\u04f8\\u04f9]+\\s*:\\s*(Category|' + wikEdText['wikicode Category'] + ')\\s*:', 'i'); if (p2.match(regExp) != null) { p1 = '<span class="wikEdCatInter"' + linkParam + '>' + p1; p3 = p3 + '</span><!--wikEdCatInter-->'; } else { p1 = '<span class="wikEdCat"' + linkParam + '>' + p1; p3 = p3 + '</span><!--wikEdCat-->'; } p2 = p2.replace(/^(\s*)(([\w ]*:)+)/, '$1<span class="wikEdInter">$2</span><!--wikEdInter-->'); p2 = p2.replace(/(\s*)([^>:\|]+)(\s*\|\s*|$)/, '$1<span class="wikEdCatName">$2</span><!--wikEdCatName-->$3'); p2 = p2.replace(/(\|\s*)(.*)/, function (p, p1, p2) { p2 = p2.replace(/(.*?)(\s*(\||$))/g, '<span class="wikEdCatText">$1</span><!--wikEdCatText-->$2'); return(p1 + p2); } ); } // wikilink else { if (linkInter != '') { p1 = '<span class="wikEdLinkInter"' + linkParam + '>' + p1; p3 = p3 + '</span><!--wikEdLinkInter-->'; } else { p1 = '<span class="wikEdLink"' + linkParam + '>' + p1; p3 = p3 + '</span><!--wikEdLink-->'; } p2 = p2.replace(/^(\s*)(([\w ]*:)+)/, '$1<span class="wikEdInter">$2</span><!--wikEdInter-->'); p2 = p2.replace(/(\s*)([^>:\|]+)(\s*\|\s*|$)/, '$1<span class="wikEdLinkName">$2</span><!--wikEdLinkName-->$3'); p2 = p2.replace(/(\|\s*)(.*)/, function (p, p1, p2) { p2 = p2.replace(/(.*?)(\s*(\||$))/g, '<span class="wikEdLinkText"">$1</span><!--wikEdLinkText-->$2'); return(p1 + p2); } ); } // link tags p1 = p1.replace(/(\[+)/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); p2 = p2.replace(/(\|)/g, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); p3 = p3.replace(/(\]+)/, '<span class="wikEdLinkTag">$1</span><!--wikEdLinkTag-->'); return(p1 + p2 + p3); } ); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // signature ~~~~ html = html.replace(/(~{3,5})/g, '<span class="wikEdSignature">$1</span><!--wikEdSignature-->'); // magic words var regExp = new RegExp('(__' + wikEdMagicWords + '__)', 'gi'); html = html.replace(regExp, '<span class="wikEdMagic">$1</span><!--wikEdMagic-->'); // template parameter {{{parameter|default}}} html = html.replace(/(\{\{\{)(\s*)([^\{\}\|]*?)(\s*)(\|.*?)?(\}\}\})/g, '<span class="wikEdTempl"><span class="wikEdTemplTag">{{</span><!--wikEdTemplTag--><span class="wikEdTemplTag">{</span><!--wikEdTemplTag-->$2<span class="wikEdTemplParam">$3</span><!--wikEdTemplParam-->$4$5<span class="wikEdTemplTag">}</span><!--wikEdTemplTag--><span class="wikEdTemplTag">}}</span><!--wikEdTemplTag--></span><!--wikEdTempl-->'); // parser variables and functions // {{VARIABLE}} start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?(' + wikEdParserVariables + ')(\\s*)(\}\})', 'g'); html = html.replace(regExp, '<span class="wikEdTempl"><span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->$2$3<span class="wikEdParserFunct">$5</span><!--wikEdParserFunct-->$6<span class="wikEdTemplTag">$7</span><!--wikEdTemplTag--></span><!--wikEdTempl-->'); // parser {{VARIABLE:R}} start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?(' + wikEdParserVariablesR + ')(:\\s*R)?(\\s*)(\}\})', 'g'); html = html.replace(regExp, '<span class="wikEdTempl"><span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->$2$3<span class="wikEdParserFunct">$5</span><!--wikEdParserFunct-->$6$7<span class="wikEdTemplTag">$8</span><!--wikEdTemplTag--></span><!--wikEdTempl-->'); // parser {{FUNCTION:param|R}} start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?(' + wikEdParserFunctionsR + '):', 'g'); html = html.replace(regExp, '<span class="wikEdTempl"><span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->$2$3<span class="wikEdParserFunct">$5</span><!--wikEdParserFunct-->:'); // parser {{function:param|param}} start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?(' + wikEdParserFunctions + '):', 'gi'); html = html.replace(regExp, '<span class="wikEdTempl"><span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->$2$3<span class="wikEdParserFunct">$5</span><!--wikEdParserFunct-->:'); // parser {{#function:param|param}} start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?#(' + wikEdParserFunctionsHash + '):', 'gi'); html = html.replace(regExp, '<span class="wikEdTempl"><span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->$2$3<span class="wikEdParserFunct">#$5</span><!--wikEdParserFunct-->:'); // parser function modifier var regExp = new RegExp('(<span class="wikEdTemplTag">\\{\\{</span><!--wikEdTemplTag-->)(' + wikEdTemplModifier + '):', 'gi'); html = html.replace(regExp, '$1<span class="wikEdTemplMod">$2</span><!--wikEdTemplMod-->:'); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // simple non-nested {{templates}} var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?([^\\{\\}\\<\\>\\u0000\\u0001\\n]+)(\\}\\})', 'gi'); html = html.replace(regExp, function (p, p1, p2, p3, p4, p5, p6) { p3 = p3 || ''; p4 = p4 || ''; // template tags p1 = '<span class="wikEdTemplTag">' + p1 + '</span><!--wikEdTemplTag-->'; p6 = '<span class="wikEdTemplTag">' + p6 + '</span><!--wikEdTemplTag-->'; // get url var linkParam = ''; var linkInter; var linkMatch = p5.match(/^\s*(([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]*\s*:)*)\s*([^\|]+)/); if (linkMatch != null) { linkInter = linkMatch[1]; linkParam = WikEdFollowLinkUrl(linkInter + wikEdText['wikicode Template'] + ':', linkMatch[3]) } if (linkInter != '') { p1 = '<span class="wikEdTemplInter" ' + linkParam + '>' + p1; p6 = p6 + '</span><!--wikEdTemplInter-->'; } else { p1 = '<span class="wikEdTempl" ' + linkParam + '>' + p1; p6 = p6 + '</span><!--wikEdTempl-->'; } p3 = p3.replace(/^(.*?)(:\s*)$/, '<span class="wikEdTemplMod">$1</span><!--wikEdTemplMod-->$2'); p5 = p5.replace(/^(\s*)((\w*:)+)/, '$1<span class="wikEdInter">$2</span><!--wikEdInter-->'); p5 = p5.replace(/(\s*)([^>:\|]+)(\s*\|\s*|$)/, '$1<span class="wikEdTemplName">$2</span><!--wikEdTemplName-->$3'); p5 = p5.replace(/(\|\s*)(.*)/, function (p, p1, p2) { p2 = p2.replace(/(.*?)(\s*(\||$))/g, '<span class="wikEdTemplText">$1</span><!--wikEdTemplText-->$2'); return(p1 + p2); } ); // template tags p5 = p5.replace(/(\|)/g, '<span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->'); return(p1 + p2 + p3 + p5 + p6); } ); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // template start var regExp = new RegExp('(\\{\\{)(\\s*)((' + wikEdTemplModifier + '):\\s*)?([^\\{\\}\\<\\>\\u0000\\u0001\\n\\|]+)', 'gi'); html = html.replace(regExp, function (p, p1, p2, p3, p4, p5) { p3 = p3 || ''; p4 = p4 || ''; var linkMatch = p5.match(/^\s*(([\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9]*\s*:)*)\s*([^\|]+)/); var linkParam = ''; var linkInter; if (linkMatch != null) { linkInter = linkMatch[1]; linkParam = WikEdFollowLinkUrl(linkInter + wikEdText['wikicode Template'] + ':', linkMatch[3]); } p3 = p3.replace(/^(.*?)(:\s*)$/, '<span class="wikEdTemplMod">$1</span><!--wikEdTemplMod-->$2'); return('<span class="wikEdTempl"' + linkParam + '><span class="wikEdTemplTag">' + p1 + '</span><!--wikEdTemplTag-->' + p2 + p3 + '<span class="wikEdTemplName">' + p5 + '</span><!--wikEdTemplName-->'); } ); // highlighting curly template brackets at template end html = html.replace(/(\}\})(?!<\/span><!--(wikEdTempl|wikEdTemplTag)-->)/g, '$1</span><!--wikEdTempl-->'); html = html.replace(/(\}\})(?!<\/span><!--wikEdTemplTag-->)/g, '<span class="wikEdTemplTag">$1</span><!--wikEdTemplTag-->'); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // <b> <i> html = html.replace(/(\'\'\')(\'*)(.*?)(\'*)(\'\'\')/g, '<span class="wikEdBold">$2$3$4</span><!--wikEdBold-->'); html = html.replace(/(\'\')(.*?)(\'\')/g, '<span class="wikEdItalic">$1$2$3</span><!--wikEdItalic-->'); html = html.replace(/(<span class=\"wikEdBold\">)/g, '$1\'\'\''); html = html.replace(/(<\/span><!--wikEdBold-->)/g, '\'\'\'$1'); html = html.replace(/(\'{2,})/g, '<span class="wikEdWiki">$1</span><!--wikEdWiki-->'); // nowiki (remove highlighting) html = html.replace(/(\u0000nowiki\b[^\u0001]*\u0001)((.|\n)*?)(\u0000\/nowiki\u0001)/gi, function (p, p1, p2, p3, p4) { p1 = '<span class="wikEdNowiki"><span class="wikEdInlineTag">' + p1 + '</span><!--wikEdInlineTag-->'; p2 = p2.replace(/<[^>]*>/g, ''); p4 = '<span class="wikEdInlineTag">' + p4 + '</span><!--wikEdInlineTag--></span><!--wikEdNowiki-->'; return(p1 + p2 + p4); } ); // hide (fade) <ref> if (wikEdRefHide == true) { // escape <ref /> html = html.replace(/\u0000(ref\b[^\u0001]*?\/)\u0001/g, '<span class="wikEdRefHide"><$1></span><!--wikEdRefHide-->'); // remove <ref> inner highlighting html = html.replace(/(\u0000ref\b[^\u0001]*\u0001)((.|\n)*?)(\u0000\/ref\u0001)/gi, function (p, p1, p2, p3, p4) { p2 = p2.replace(/<[^>]*>/g, ''); var str = '<span class="wikEdRefHide">' + p1 + p2 + p4 + '</span><!--wikEdRefHide-->'; return(str); } ); } // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // \u0000 and \u0001 back to < and > html = html.replace(/\u0000/g, '<'); html = html.replace(/\u0001/g, '>'); html = html.replace(/\u0002/g, '&'); // check spent time if (new Date() - startDate > wikEdMaxHighlightTime) { return; } // display control chars with popup title var regExp = new RegExp('([' + wikEdControlCharsStr + '])', 'g'); html = html.replace(regExp, function (p, p1) { // handle tab if (p1 == '\u0009') { p1 = '<span class="wikEdTab" title="' + wikEdControlChars[p1.charCodeAt(0).toString()] + '">' + p1 + '</span><!--wikEdTab-->'; } // exclude new line else if (p1 != '\u000a') { p1 = '<span class="wikEdCtrl" title="' + wikEdControlChars[p1.charCodeAt(0).toString()] + '">' + p1 + '</span><!--wikEdCtrl-->'; } return(p1); } ); // display strange spaces with popup title var regExpStr = ''; for (var decimalValue in wikEdStrangeSpaces) { if (typeof(wikEdStrangeSpaces[decimalValue]) != 'string') { continue; } regExpStr += String.fromCharCode(decimalValue); } var regExp = new RegExp('([' + regExpStr + '])', 'g'); html = html.replace(regExp, function (p, p1) { // exclude nbsp if (p1 != '\u00a0') { p1 = '<span class="wikEdBlank" title="' + wikEdStrangeSpaces[p1.charCodeAt(0).toString()] + '">' + p1 + '</span><!--wikEdBlank-->'; } return(p1); } ); // remove comments if (wikEdRemoveHighlightComments == true) { html = html.replace(/<!--wikEd\w+-->/g, ''); } obj.html = html; return; } // // WikEdFollowLinkUrl: prepare the span tag parameters for ctrl-click opening of highlighted links // add support for [[/subpage]] window.WikEdFollowLinkUrl = function(linkPrefix, linkTitle, linkUrl) { var linkName = ''; // generate url from interlanguage or namespace prefix and title if (linkUrl == null) { // test for templates if ( (/\{|\}/.test(linkPrefix) == true) || (/\{|\}/.test(linkTitle) ) == true) { return(''); } // remove highlighting code linkPrefix = linkPrefix.replace(/<[^>]*>/g, ''); linkTitle = linkTitle.replace(/<[^>]*>/g, ''); // remove control chars var regExp = new RegExp('[' + wikEdControlCharsStr + ']', 'g'); linkPrefix = linkPrefix.replace(regExp, ''); linkTitle = linkTitle.replace(regExp, ''); // remove strange white spaces linkPrefix = linkPrefix.replace(/\s/, ' '); linkTitle = linkTitle.replace(/\s/, ' '); linkPrefix = linkPrefix.replace(/\s/g, ''); linkPrefix = linkPrefix.replace(/^:+/g, ''); linkTitle = linkTitle.replace(/ /g, '_'); // Wiktionary differentiates between lower and uppercased titles linkUrl = linkPrefix + linkTitle; linkUrl = encodeURI(linkUrl); linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1'); linkUrl = linkUrl.replace(/\'/g, '%27'); linkUrl = linkUrl.replace(/#/g, '%23'); if (wikEdWikiGlobals['wgArticlePath'] == null) { linkUrl = ''; } else { linkUrl = wikEdWikiGlobals['wgArticlePath'].replace(/\$1/, linkUrl); linkName = linkPrefix + linkTitle; } } // url provided else { // test for templates if (/\{|\}/.test(linkUrl) == true) { return(''); } linkName = linkUrl; linkUrl = encodeURI(linkUrl); linkUrl = linkUrl.replace(/%25(\d\d)/g, '%$1'); linkUrl = linkUrl.replace(/\'/g, '%27'); } linkName = linkName.replace(/</g, '<'); linkName = linkName.replace(/>/g, '>'); linkName = linkName.replace(/\"/g, '"'); linkName = linkName.replace(/\'/g, '\\u0027'); var linkParam = ''; if (linkUrl != '') { var linkId = 'wikEdFollowLink' + wikEdFollowLinkIdNo; wikEdFollowLinkIdNo ++; linkParam += 'id="' + linkId + '" title="' + linkName + ' ' + wikEdText['followLink'] + '"'; wikEdFollowLinkHash[linkId] = linkUrl; } return(linkParam) } // // WikEdUpdateTextarea: copy frame content to textarea // window.WikEdUpdateTextarea = function() { // get frame content var obj = {}; obj.html = wikEdFrameBody.innerHTML; // remove trailing blanks and newlines at end of text obj.html = obj.html.replace(/((<br\b[^>]*>)|\s)+$/g, ''); // remove leading spaces in lines obj.html = obj.html.replace(/(<br\b[^>]*>)\n* *()/g, '$1'); // textify so that no html formatting is submitted WikEdTextify(obj); obj.plain = obj.plain.replace(/ | |\u00a0/g, ' '); obj.plain = obj.plain.replace(/</g, '<'); obj.plain = obj.plain.replace(/>/g, '>'); obj.plain = obj.plain.replace(/&/g, '&'); // copy to textarea wikEdTextarea.value = obj.plain; // remember frame scroll position wikEdFrameScrollTop = wikEdFrameBody.scrollTop; return; } // // WikEdUpdateFrame: copy textarea content to frame // window.WikEdUpdateFrame = function() { // get textarea content var obj = {}; obj.html = wikEdTextarea.value; obj.html = obj.html.replace(/&/g, '&'); obj.html = obj.html.replace(/>/g, '>'); obj.html = obj.html.replace(/</g, '<'); // highlight the syntax if (wikEdHighlightSyntax == true) { obj.whole = true; WikEdHighlightSyntax(obj); } // display tabs else { obj.html = obj.html.replace(/(\t)/g, '<span class="wikEdTabPlain">$1</span><!--wikEdTabPlain-->'); } // multiple blanks to blank- obj.html = obj.html.replace(/(^|\n) /g, '$1 '); obj.html = obj.html.replace(/ (\n|$)/g, ' $1'); obj.html = obj.html.replace(/ /g, ' '); obj.html = obj.html.replace(/ /g, ' '); // newlines to <br /> obj.html = obj.html.replace(/\n/g, '<br />'); // select the whole text after replacing the whole text and scroll to same height if (wikEdMSIE == true) { } else { obj.sel = WikEdGetSelection(); WikEdRemoveAllRanges(obj.sel); } // insert content into empty frame if ( (wikEdFrameBody.firstChild == null) || (/^<br[^>]*>\s*$/.test(wikEdFrameBody.innerHTML) == true) ) { wikEdFrameBody.innerHTML = obj.html; } // insert content into frame, preserve history else { var range = wikEdFrameDocument.createRange(); range.setStartBefore(wikEdFrameBody.firstChild); range.setEndAfter(wikEdFrameBody.lastChild); obj.sel.addRange(range); // replace the frame content with the new text if (obj.html != '') { WikEdFrameExecCommand('inserthtml', obj.html); } else { WikEdFrameExecCommand('delete'); } WikEdRemoveAllRanges(obj.sel); // scroll to previous position if (wikEdFrameScrollTop != null) { wikEdFrameBody.scrollTop = wikEdFrameScrollTop; } } wikEdFrameScrollTop = null; // add event handler to make highlighted frame links ctrl-clickable if (wikEdHighlightSyntax == true) { WikEdFollowLinks(); } return; } // // WikEdKeyFrameHandler: event handler for key and mouse events in the frame // window.WikEdKeyFrameHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (event == null) { return; } if (wikEdUseWikEd == true) { switch (event.type) { // trap the tab key case 'keydown': switch (event.keyCode) { case 9: if (event.shiftKey == false) { event.preventDefault(); // scroll to text input top if (wikEdFullScreenMode == false) { var inputWrapperTop = WikEdGetOffsetTop(wikEdInputWrapper); window.scroll(0, inputWrapperTop); } // focus the summary wikEdSummaryText.focus(); } break; } break; // trap any other frame event case 'keyup': case 'keypress': case 'mouseup': // grey out inactive buttons WikEdInactiveButtons(); // reset the frame DOM cache wikEdFrameDOMCache = null; break; } } return; } // // WikEdShiftAltHandler: event handler for emulated accesskey keydown events in main document and frame // window.WikEdShiftAltHandler = function(event) { // MS IE compatibility fix event = WikEdEvent(event); if (wikEdUseWikEd == true) { if ( (event.shiftKey == true) && (event.ctrlKey == false) && (event.altKey == true) ) { // get wikEd button id from keycode var buttonId = wikEdButtonKeyCode[event.keyCode]; if (buttonId != null) { event.preventDefault(); event.stopPropagation(); // execute the button click handler code var obj = document.getElementById(buttonId); objId = obj.id; eval(wikEdEditButtonHandler[buttonId]); } } } return; } // // WikEdFrameExecCommand: wrapper for execCommand method // window.WikEdFrameExecCommand = function(command, option) { wikEdFrameDocument.execCommand(command, false, option); return; } // // WikEdFindAhead: non-regexp and case-insensitive find-as-you-type, event handler for find field // window.WikEdFindAhead = function() { if (WikEdGetAttribute(wikEdFindAhead, 'checked') == 'true') { // get the find text var findText = wikEdFindText.value; if (findText == '') { return; } // remember position var sel = WikEdGetSelection(); var range = sel.getRangeAt(sel.rangeCount - 1).cloneRange(); var rangeClone = range.cloneRange(); var scrollTop = wikEdFrameBody.scrollTop; sel.removeAllRanges(); sel.addRange(range); range.collapse(true); // parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) // Mozilla bug: searchInFrames must be true, otherwise wrapAround does not work var found = wikEdFrameWindow.find(findText, false, false, true, false, true, false); // add original selection if (found == false) { wikEdFrameBody.scrollTop = scrollTop; sel.removeAllRanges(); sel.addRange(rangeClone); } } return; } // // WikEdMainSwitch: click handler for program logo // window.WikEdMainSwitch = function() { // disable function if browser is incompatible if (wikEdBrowserNotSupported == true) { return; } // enable wikEd if (wikEdDisabled == true) { wikEdDisabled = false; WikEdSetPersistent('wikEdDisabled', '0', 0, '/'); // turn rich text frame on if (wikEdTurnedOn == true) { WikEdSetLogo(); WikEdUpdateFrame(); WikEdSetEditArea(true); wikEdButtonsWrapper.style.display = 'block'; wikEdButtonBarPreview.style.display = 'block'; if (wikEdButtonBarJump != null) { wikEdButtonBarJump.style.display = 'block'; } // run scheduled custom functions WikEdExecuteHook(wikEdOnHook); } // setup wikEd else { WikEdTurnOn(false); return; } } // disable wikEd else { wikEdUseWikEd = false; wikEdDisabled = true; WikEdSetLogo(); WikEdSetPersistent('wikEdDisabled', '1', 0, '/'); if (wikEdTurnedOn == true) { if (wikEdFullScreenMode == true) { WikEdFullScreen(false); } // turn classic textarea on WikEdUpdateTextarea(); WikEdSetEditArea(false); wikEdButtonsWrapper.style.display = 'none'; wikEdButtonBarPreview.style.display = 'none'; wikEdLocalPrevWrapper.style.display = 'none'; if (wikEdButtonBarJump != null) { wikEdButtonBarJump.style.display = 'none'; } // run scheduled custom functions WikEdExecuteHook(wikEdOffHook); } } return; } // // WikEdFullScreen: change to fullscreen edit area or back to normal view // window.WikEdFullScreen = function(fullscreen, notFrame) { // hide or show elements var displayStyle; if (fullscreen == true) { displayStyle = 'none'; } else { displayStyle = 'block'; } // elements above input wrapper var node = document.getElementById('editform').previousSibling; while (node != null) { if ( (node.nodeName == 'DIV') || (node.nodeName == 'H3') ) { node.style.display = displayStyle; } node = node.previousSibling; } document.getElementsByTagName('H1')[0].style.display = displayStyle; // divs below input wrapper var node = wikEdInputWrapper.nextSibling; while (node != null) { if (node.nodeName == 'DIV') { node.style.display = displayStyle; } node = node.nextSibling; } // divs below input wrapper, some levels up var node = document.getElementById('column-one'); while (node != null) { if (node.nodeName == 'DIV') { node.style.display = displayStyle; } node = node.nextSibling; } // insert wrapper document.getElementById('wikEdInsertWrapper').style.display = displayStyle; // change styles if (fullscreen == true) { if (notFrame != true) { wikEdInputWrapper.className = 'wikEdInputWrapperFull'; } wikEdButtonBarPreview.className = 'wikEdButtonBarPreviewFull'; } else { if (notFrame != true) { wikEdInputWrapper.className = 'wikEdInputWrapper'; } wikEdButtonBarPreview.className = 'wikEdButtonBarPreview'; } // resize the frame if (fullscreen == true) { var consoleTop = WikEdGetOffsetTop(wikEdConsoleWrapper); var consoleHeight = wikEdConsoleWrapper.offsetHeight; var frameHeight = wikEdFrame.offsetHeight; var windowHeight = WikEdGetWindowInnerHeight(); var windowWidth = WikEdGetWindowInnerWidth(); var frameHeightNew = frameHeight + (windowHeight - (consoleTop + consoleHeight) ) - 2; wikEdFrame.style.height = frameHeightNew + 'px'; } else { wikEdFrame.style.height = wikEdTextareaHeight + 'px'; } // scroll to edit-frame if (fullscreen == false) { window.scroll(0, WikEdGetOffsetTop(wikEdInputWrapper) - 2); } // set the fullscreen button state WikEdButton(document.getElementById('wikEdFullScreen'), 'wikEdFullScreen', null, fullscreen); // grey out or re-activate scroll-to buttons var buttonClass; if (fullscreen == true) { buttonClass = 'wikEdButtonInactive'; } else { buttonClass = 'wikEdButton'; } document.getElementById('wikEdScrollToPreview').className = buttonClass; document.getElementById('wikEdScrollToPreview2').className = buttonClass; document.getElementById('wikEdScrollToEdit').className = buttonClass; document.getElementById('wikEdScrollToEdit2').className = buttonClass; // resize the summary field WikEdResizeSummary(); wikEdFullScreenMode = fullscreen; return; } // // WikEdResizeSummary: recalculate the summary width after resizing the window // window.WikEdResizeSummary = function() { // check if combo field exists if (wikEdSummarySelect == null) { return; } wikEdSummaryText.style.width = ''; wikEdSummarySelect.style.width = ''; wikEdSummaryTextWidth = wikEdSummaryWrapper.clientWidth - ( WikEdGetOffsetLeft(wikEdSummaryText) - WikEdGetOffsetLeft(wikEdSummaryWrapper) ); if (wikEdSummaryTextWidth < 150) { wikEdSummaryTextWidth = 150; } wikEdSummaryText.style.width = wikEdSummaryTextWidth + 'px'; WikEdResizeComboInput('summary'); return; } // // WikEdResizeComboInput: set the size of the background select boxes so that the button is visible // calculates the select button width as the difference between select and option width // adjusts widths so that only the select button is visible behind the input field // window.WikEdResizeComboInput = function(field) { // check if combo field exists if (wikEdSelectElement[field] == null) { return; } // detect browser for MS IE fixes var standardBrowser = true; if (wikEdSelectElement[field].options.offsetWidth != null ) { standardBrowser = false; } // set select height and top if (standardBrowser == false) { wikEdSelectElement[field].style.height = (wikEdInputElement[field].clientHeight + 6) + 'px'; wikEdSelectElement[field].style.top = '3px'; wikEdInputElement[field].style.top = '3px'; } // add a dummy option if no option exists yet var dummy; var testOption = 1; if (standardBrowser == true) { if (wikEdSelectElement[field].options.length == 0) { testOption = 0; wikEdSelectElement[field].options[0] = new Option(''); dummy = true; } } // set option widths to 0 if (standardBrowser == true) { for (var i = 0; i < wikEdSelectElement[field].options.length; i ++) { wikEdSelectElement[field].options[i].style.width = '0'; } } // get input width var inputBorder = (wikEdInputElement[field].offsetWidth - wikEdInputElement[field].clientWidth); var inputWidthInner = wikEdInputElement[field].clientWidth; var inputWidthOuter = wikEdInputElement[field].offsetWidth; // get select width var selectWidthInner = wikEdSelectElement[field].clientWidth; var selectWidthOuter = wikEdSelectElement[field].offsetWidth; // get option width and calculate button width var optionWidthInner; var buttonWidth; if (standardBrowser == true) { // Firefox < 3.0 if ( typeof(wikEdSelectElement[field].options[testOption].clientLeft) == 'undefined' ) { optionWidthInner = wikEdSelectElement[field].options[testOption].clientWidth; buttonWidth = selectWidthInner - optionWidthInner - 6; } // Firefox >= 3.0 else { optionWidthInner = wikEdSelectElement[field].options[testOption].clientWidth; buttonWidth = selectWidthInner - optionWidthInner; } } else { buttonWidth = selectWidthOuter - selectWidthInner - 4; } // for long fields shorten input if (inputWidthOuter + buttonWidth > 150) { wikEdInputElement[field].style.width = (inputWidthInner - inputBorder - buttonWidth) + 'px'; wikEdSelectElement[field].style.width = (inputWidthInner) + 'px'; } // otherwise increase select width else { wikEdSelectElement[field].style.width = (inputWidthOuter + buttonWidth) + 'px'; } // delete dummy option if (dummy == true) { wikEdSelectElement[field].options[0] = null; } // set option widths to auto if (standardBrowser == true) { for (var i = 0; i < wikEdSelectElement[field].options.length; i ++) { wikEdSelectElement[field].options[i].style.width = 'auto'; } } return; } // // WikEdChangeComboInput: set the input value to selected option; onchange event handler for select boxes // window.WikEdChangeComboInput = function(field) { wikEdInputElement[field].focus; // get selection index (-1 for unselected) var selected = wikEdSelectElement[field].selectedIndex; if (selected >= 0) { wikEdSelectElement[field].selectedIndex = -1; // get selected option var option = wikEdSelectElement[field].options[selected]; if (option.text != '') { // jump to heading if ( (field == 'find') && (/^=.*?=$/.test(option.value) == true) ) { // parameters: window.find(string, caseSensitive, backwards, wrapAround, wholeWord, searchInFrames, showDialog) // Mozilla bug: searchInFrames must be true, otherwise wrapAround does not work wikEdFrameWindow.find(option.value, true, false, true, false, true, false); } // update input field else { // add a tag to the summary box if (field == 'summary') { wikEdInputElement[field].value = WikEdAppendToSummary(wikEdInputElement[field].value, option.text); } // add case and regexp checkboxes to find / replace fields else if (option.value == 'setcheck') { WikEdButton(document.getElementById('wikEdCaseSensitive'), 'wikEdCaseSensitive', null, (option.text.charAt(0) == wikEdCheckMarker[true]) ); WikEdButton(document.getElementById('wikEdRegExp'), 'wikEdRegExp', null, (option.text.charAt(1) == wikEdCheckMarker[true]) ); wikEdInputElement[field].value = option.text.substr(3); } // add option text else { wikEdInputElement[field].value = option.text; } // find the new text if ( (field == 'find') && (WikEdGetAttribute(wikEdFindAhead, 'checked') == 'true') ) { WikEdFindAhead(); } } } } return; } // // WikEdAppendToSummary: append a phrase to the summary text // window.WikEdAppendToSummary = function(summary, append) { summary = summary.replace(/^[, ]+/, ''); summary = summary.replace(/[, ]+$/, ''); if (summary != '') { if (summary.match(/ \*\/$/) != null) { summary += ' '; } else if (summary.match(/[\.\;\:]$/) != null) { summary += ' '; } else if (summary.match(/^[\wŠŒŽšœžŸÀ-ÖØ-öø-\u0220\u0222-\u0233ΆΈΉΊΌΎΏΑ-ΡΣ-ώ\u0400-\u0481\u048a-\u04ce\u04d0-\u04f5\u04f8\u04f9\(\)\"\'\+\-]/) == null) { summary += ' '; } else { summary += ', '; } } summary += append; return(summary); } // // WikEdAddToHistory: add an input value to the saved history // window.WikEdAddToHistory = function(field) { if (wikEdInputElement[field].value != '') { // load history from saved settings WikEdLoadHistoryFromSettings(field); // add current value to history wikEdFieldHist[field].unshift(wikEdInputElement[field].value); // add case and regexp checkboxes to find / replace value if ( (field == 'find') || (field == 'replace') ) { wikEdFieldHist[field][0] = wikEdCheckMarker[ (WikEdGetAttribute(wikEdCaseSensitive, 'checked') == 'true') ] + wikEdCheckMarker[ (WikEdGetAttribute(wikEdRegExp, 'checked') == 'true') ] + ' ' + wikEdFieldHist[field][0]; } // remove paragraph names from summary if (field == 'summary') { wikEdFieldHist[field][0] = wikEdFieldHist[field][0].replace(/^\/\* .*? \*\/ *()/, ''); } // remove multiple old copies from history var i = 1; while (i < wikEdFieldHist[field].length) { if (wikEdFieldHist[field][i] == wikEdFieldHist[field][0]) { wikEdFieldHist[field].splice(i, 1); } else { i ++; } } // remove new value if it is a preset value if (wikEdComboPresetOptions[field] != null) { var i = 0; while (i < wikEdComboPresetOptions[field].length) { if (wikEdComboPresetOptions[field][i] == wikEdFieldHist[field][0]) { wikEdFieldHist[field].shift(); break; } else { i ++; } } } // cut history number to maximal history length wikEdFieldHist[field] = wikEdFieldHist[field].slice(0, wikEdHistoryLength[field]); // save history to settings if (wikEdFieldHist[field][0] != '') { WikEdSaveHistoryToSetting(field); } } return; } // // WikEdSetComboOptions: generate the select options from saved history; onfocus handler for select box // window.WikEdSetComboOptions = function(field) { // load history from saved settings WikEdLoadHistoryFromSettings(field); var option = {}; var selectedOption = null; // delete options var options = wikEdSelectElement[field].options; for (var i = 0; i < options.length; i ++) { wikEdSelectElement[field].remove(i); } // delete optgroup option = document.getElementById(field + 'Optgroup'); if (option != null) { wikEdSelectElement[field].removeChild(option); } // workaround for onchange not firing when selecting first option from unselected dropdown option = document.createElement('option'); option.style.display = 'none'; j = 0; wikEdSelectElement[field].options[j++] = option; // add history entries for (var i = 0; i < wikEdFieldHist[field].length; i ++) { if (wikEdFieldHist[field][i] != null) { if (wikEdFieldHist[field][i] == wikEdInputElement[field].value) { selectedOption = j; } option = document.createElement('option'); // replace spaces with nbsp to allow for multiple, leading, and trailing spaces option.text = wikEdFieldHist[field][i].replace(/ /g, '\u00a0'); if ( (field == 'find') || (field == 'replace') ) { option.value = 'setcheck'; } wikEdSelectElement[field].options[j++] = option; } } // add preset entries var startPreset = 0; if (wikEdComboPresetOptions[field] != null) { startPreset = j; for (var i = 0; i < wikEdComboPresetOptions[field].length; i ++) { if (wikEdComboPresetOptions[field][i] != null) { // replace spaces with nbsp to allow for multiple, leading, and trailing spaces wikEdComboPresetOptions[field][i] = wikEdComboPresetOptions[field][i].replace(/ /g, '\u00a0'); // select a dropdown value if (wikEdComboPresetOptions[field][i] == wikEdInputElement[field].value) { selectedOption = j; } option = document.createElement('option'); option.text = wikEdComboPresetOptions[field][i].replace(/ /g, '\u00a0'); if (field == 'summary') { option.text = option.text.replace(/\{wikEdUsing\}/g, wikEdSummaryUsing); } wikEdSelectElement[field].options[j++] = option; } } } // set the selection wikEdSelectElement[field].selectedIndex = selectedOption; // add a blank preset separator if ( (startPreset > 1) && (startPreset < j) ) { option = document.createElement('optgroup'); option.label = '\u00a0'; option.id = field + 'Optgroup'; wikEdSelectElement[field].insertBefore(option, wikEdSelectElement[field].options[startPreset]); } // add the TOC jumper to the find field var startTOC = 0; if (field == 'find') { startTOC = j; // get the whole plain text var plain = wikEdFrameBody.innerHTML; plain = plain.replace(/<br\b[^>]*>/g, '\n'); plain = plain.replace(/<.*?>/g, ''); // cycle through the headings var heading = plain.match(/(^|\n)=+[^\n]+?=+[^\n=]*[ =\t]*(?=(\n|$))/g); if (heading != null) { for (var i = 0; i < heading.length; i ++) { var headingMatch = heading[i].match(/\n?((=+) *([^\n]+?)( *\2))/); var headingIndent = headingMatch[2] headingIndent = headingIndent.replace(/^=/g, ''); headingIndent = headingIndent.replace(/=/g, '\u00a0'); // add headings to the select element option = document.createElement('option'); option.text = '\u21d2' + headingIndent + headingMatch[3]; option.value = headingMatch[1]; wikEdSelectElement[field].options[j++] = option; } } } // add a blank TOC separator if ( (startTOC > 1) && (startTOC < j) ) { option = document.createElement('optgroup'); option.label = '\u00a0'; option.id = field + 'Optgroup'; wikEdSelectElement[field].insertBefore(option, wikEdSelectElement[field].options[startTOC]); } return; } // // WikEdClearHistory: clear the history of combo input fields // window.WikEdClearHistory = function(field) { WikEdSetPersistent(wikEdSavedName[field], '', 0, '/'); WikEdSetComboOptions(field); return; } // // WikEdLoadHistoryFromSettings: get the input box history from the respective saved settings // window.WikEdLoadHistoryFromSettings = function(field) { var setting = WikEdGetPersistent(wikEdSavedName[field]); if (setting != '') { setting = decodeURIComponent(setting); wikEdFieldHist[field] = setting.split('\n'); } else { wikEdFieldHist[field] = []; } return; } // // WikEdSaveHistoryToSetting: save the input box history to the respective saved settings // window.WikEdSaveHistoryToSetting = function(field) { var setting = ''; setting = wikEdFieldHist[field].join('\n') setting = setting.replace(/\n$/, ''); setting = encodeURIComponent(setting); WikEdSetPersistent(wikEdSavedName[field], setting, 0, '/'); return; } // // WikEdGetSelection: cross-browser method to get the current selection // window.WikEdGetSelection = function() { var sel = wikEdFrameWindow.getSelection(); // MS IE compatibility if (sel == null) { sel = wikEdFrameDocument.selection; } // make sure there is at least an empty range if (sel.rangeCount == 0) { sel.collapse(wikEdFrameBody, 0); } return(sel); } // // WikEdClearSelection: cross-browser method to clear the currently selected text // window.WikEdRemoveAllRanges = function(sel) { if (typeof(sel.removeAllRanges) == 'function') { sel.removeAllRanges(); } // MS IE compatibility else if (typeof(sel.empty) == 'function') { sel.empty(); } return; } // // WikEdGetSavedSetting: get a wikEd setting // window.WikEdGetSavedSetting = function(settingName, preset) { var setting = WikEdGetPersistent(settingName); if (setting == '') { setting = preset; } else if (setting == '1') { setting = true; } else { setting = false; } return(setting); } // // WikEdGetPersistent: get a cookie or a Greasemonkey persistent value (code copied to wikEdDiff.js) // window.WikEdGetPersistent = function(name) { var getStr = ''; // get a Greasemonkey persistent value if (wikEdGreasemonkey == true) { getStr = GM_getValue(name, ''); } // get a cookie value else { getStr = WikEdGetCookie(name); } return(getStr); } // // WikEdSetPersistent: set a cookie or a Greasemonkey persistent value, deletes the value for expire = -1 // window.WikEdSetPersistent = function(name, value, expires, path, domain, secure) { // set a Greasemonkey persistent value if (wikEdGreasemonkey == true) { if (expires == -1) { GM_setValue(name, ''); } else { GM_setValue(name, value); } } // set a cookie value else { WikEdSetCookie(name, value, expires, path, domain, secure); } return; } // // WikEdGetCookie: get a cookie (code copied to wikEdDiff.js) // window.WikEdGetCookie = function(cookieName) { var cookie = ' ' + document.cookie; var search = ' ' + cookieName + '='; var cookieValue = ''; var offset = 0; var end = 0; offset = cookie.indexOf(search); if (offset != -1) { offset += search.length; end = cookie.indexOf(';', offset) if (end == -1) { end = cookie.length; } cookieValue = cookie.substring(offset, end); cookieValue = cookieValue.replace(/\\+/g, ' '); cookieValue = decodeURIComponent(cookieValue); } return(cookieValue); } // // WikEdSetCookie: set a cookie, deletes a cookie for expire = -1 // window.WikEdSetCookie = function(name, value, expires, path, domain, secure) { var cookie = name + '=' + encodeURIComponent(value); if (expires != null) { // generate a date 1 hour ago to delete the cookie if (expires == -1) { var cookieExpire = new Date(); expires = cookieExpire.setTime(cookieExpire.getTime() - 60 * 60 * 1000); expires = cookieExpire.toUTCString(); } // get date from expiration preset else if (expires == 0) { var cookieExpire = new Date(); expires = cookieExpire.setTime(cookieExpire.getTime() + wikEdCookieExpireSec * 1000); expires = cookieExpire.toUTCString(); } cookie += '; expires=' + expires; } if (path != null) { cookie += '; path=' + path; } if (domain != null) { cookie += '; domain=' + domain; } if (secure != null) { cookie += '; secure'; } document.cookie = cookie; return; } // // WikEdGetOffsetTop: get element offset relative to window top (code copied to wikEdDiff.js) // window.WikEdGetOffsetTop = function(element) { var offset = 0; do { offset += element.offsetTop; } while ( (element = element.offsetParent) != null ); return(offset); } // // WikEdGetOffsetLeft: get element offset relative to left window border // window.WikEdGetOffsetLeft = function(element) { var offset = 0; do { offset += element.offsetLeft; } while ( (element = element.offsetParent) != null ); return(offset); } // // WikEdAppendScript: append script to head // window.WikEdAppendScript = function(scriptUrl) { var head = document.getElementsByTagName('head')[0]; var script = document.createElement('script'); script.type = 'text/javascript'; script.src = scriptUrl; head.appendChild(script); return; } // define leaf elements for WikEdGetInnerHTML window.wikEdLeafElements = []; wikEdLeafElements['IMG'] = true; wikEdLeafElements['HR'] = true; wikEdLeafElements['BR'] = true; wikEdLeafElements['INPUT'] = true; // // WikEdParseDOM: parses a DOM subtree and and adds plain text into a complex data structure // wikEdFrameDOMCache contains the last parse if the frame has not changed // window.WikEdParseDOM = function(obj, topNode) { /* problematic because of obj.changed //// if (wikEdFrameDOMCache != null) { obj = wikEdFrameDOMCache; return; } */ obj.plainLength = 0; obj.plainArray = []; obj.plainNode = []; obj.plainStart = []; obj.plainPos = []; WikEdParseDOMRecursive(obj, topNode); obj.plain = obj.plainArray.join(''); wikEdFrameDOMCache = obj; return; } // // WikEdParseDOMRecursive: parses a DOM tree and and adds plain text into the data structure // window.WikEdParseDOMRecursive = function(obj, currentNode) { // cycle through the child nodes of currentNode for (var property in currentNode.childNodes) { var childNode = currentNode.childNodes[property]; if (typeof(childNode) == 'string') { continue; } if (childNode == null) { break; } // check for selection if (childNode == obj.sel.focusNode) { obj.plainFocus = obj.plainLength + obj.sel.focusOffset; } if (childNode == obj.sel.anchorNode) { obj.plainAnchor = obj.plainLength + obj.sel.anchorOffset; } var value = null; // get text of child node switch (childNode.nodeType) { case 1: if ( (childNode.childNodes.length == 0) && (wikEdLeafElements[childNode.nodeName] == true) ) { if (childNode.nodeName == 'BR') { value = '\n'; } } else { WikEdParseDOMRecursive(obj, childNode); } break; case 3: value = childNode.nodeValue; value = value.replace(/\n/g, ' '); break; case 5: value = '&' + childNode.nodeName + ';'; break; } // add text to text object if (value != null) { // array of text fragments obj.plainArray.push(value); // array of text fragment node references obj.plainNode.push(childNode); // array of text fragment text positions obj.plainStart.push(obj.plainLength); // node references containing text positions obj.plainPos[childNode] = obj.plainLength; // current text length obj.plainLength += value.length; } } return; } // // WikEdGetInnerHTML: get the innerHTML from a document fragment // window.WikEdGetInnerHTML = function(obj, currentNode) { // initialize string if (obj.html == null) { obj.html = ''; } if (obj.plain == null) { obj.plain = ''; } if (obj.plainArray == null) { obj.plainArray = []; obj.plainNode = []; obj.plainStart = []; } for (var i = 0; i < currentNode.childNodes.length; i ++) { var childNode = currentNode.childNodes.item(i); switch (childNode.nodeType) { case 1: obj.html += '<' + childNode.nodeName.toLowerCase(); for (var j = 0; j < childNode.attributes.length; j ++) { if (childNode.attributes.item(j).nodeValue != null) { obj.html += ' ' + childNode.attributes.item(j).nodeName + '="' + childNode.attributes.item(j).nodeValue.replace(/</g, '<').replace(/>/g, '>') + '"'; } } if ( (childNode.childNodes.length == 0) && wikEdLeafElements[childNode.nodeName] ) { obj.html += '>'; if (childNode.nodeName == 'BR') { obj.plainArray.push('\n'); obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); obj.plain += '\n'; } } else { obj.html += '>'; WikEdGetInnerHTML(obj, childNode); obj.html += '</' + childNode.nodeName.toLowerCase() + '>' } break; case 3: var value = childNode.nodeValue; value = value.replace(/\n/g, ' '); // important for pasted page content obj.plainArray.push(value); // plain array contains & < > instead of & < > obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); value = value.replace(/&/g, '&'); value = value.replace(/</g, '<'); value = value.replace(/>/g, '>'); obj.html += value; obj.plain += value; break; case 4: obj.html += '<![CDATA[' + childNode.nodeValue + ']]>'; break; case 5: var value = '&' + childNode.nodeName + ';'; obj.plainArray.push(value); obj.plainNode.push(childNode); obj.plainStart.push(obj.plain.length); value = value.replace(/&/g, '&'); obj.html += value; obj.plain += value; break; case 8: obj.html += '<!--' + childNode.nodeValue + '-->'; break; } } return; } // // WikEdStyleSheet: create a new style sheet object (code copied to wikEdDiff.js) // window.WikEdStyleSheet = function(contextObj) { if (contextObj == null) { contextObj = document; } this.styleElement = null; // MS IE compatibility if (contextObj.createStyleSheet) { this.styleElement = contextObj.createStyleSheet(); } // standards compliant browsers else { this.styleElement = contextObj.createElement('style'); this.styleElement.from = 'text/css'; var insert = contextObj.getElementsByTagName('head')[0]; if (insert != null) { this.styleElement.appendChild(contextObj.createTextNode('')); // Safari 3 fix insert.appendChild(this.styleElement); } } // // WikEdStyleSheet.addRule: add one rule at the time using DOM method, very slow // this.addRule = function(selector, declaration) { // MS IE compatibility if (this.styleElement.addRule != null) { if (declaration.length > 0) { this.styleElement.addRule(selector, declaration); } } // standards compliant browsers else { if (this.styleElement.sheet != null) { if (this.styleElement.sheet.insertRule != null) { this.styleElement.sheet.insertRule(selector + ' { ' + declaration + ' } ', 0); } } } } // // WikEdStyleSheet.addRules: add all rules at once, much faster // this.addRules = function(rules) { // MS IE compatibility if (this.styleElement.innerHTML == null) { this.styleElement.cssText = rules; } // Safari, Chrome else if ( (wikEdSafari == true) || (wikEdChrome == true) ) { this.styleElement.appendChild(contextObj.createTextNode(rules)); } // via innerHTML else { this.styleElement.innerHTML = rules; } return; } } // // WikEdGetStyle: get computed style properties for non-inline css definitions // window.WikEdGetStyle = function(element, styleProperty) { var style; if (element != null) { if ( (document.defaultView != null) && (document.defaultView.getComputedStyle != null) ) { style = document.defaultView.getComputedStyle(element, null)[styleProperty]; } // MS IE compatibility else if (element.currentStyle != null) { style = element.currentStyle[styleProperty]; // recurse up trough the DOM tree if (style == 'inherit') { style = WikEdGetStyle(element.parent, styleProperty); } } else { style = element.style[styleProperty]; } } return(style); } // // WikEdAjaxRequest: cross browser wrapper for Ajax requests (code copied to wikEdDiff.js) // window.WikEdAjaxRequest = function(requestMethod, requestUrl, headerName, headerValue, bodyData, overrideMimeType, responseHandler) { var request; // use Greasemonkey GM_xmlhttpRequest if (wikEdGreasemonkey == true) { var headerArray = { 'User-Agent': navigator.userAgent } if (headerName != null) { headerArray[headerName] = headerValue; } request = new GM_xmlhttpRequest({ 'method': requestMethod, 'url': requestUrl, 'headers': headerArray, 'data': bodyData, 'onreadystatechange': function(ajax) { if (ajax.readyState != 4) { return; } responseHandler(ajax); return; } }); } // use standard XMLHttpRequest else { // allow ajax request from local copy for testing if (wikEdAllowLocalAjax == true) { if (typeof(netscape) == 'object') { netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead'); } } // new ajax request object try { request = new XMLHttpRequest(); } // IE 6 catch(err) { try { request = new ActiveXObject('Microsoft.XMLHTTP'); } // IE 5.5 catch(err) { try { request = new ActiveXObject('Msxml2.XMLHTTP'); } catch(err) { return; } } } request.open(requestMethod, requestUrl, true); if (headerName != null) { request.setRequestHeader(headerName, headerValue); } if ( (request.overrideMimeType != null) && (overrideMimeType != null) ) { request.overrideMimeType(overrideMimeType); } request.send(bodyData); request.onreadystatechange = function() { if (request.readyState != 4) { return; } responseHandler(request); return; } } return; } // // WikEdGetGlobal: access values of global variables from Greasemonkey scripts using the 'location hack' (code copied to wikEdDiff.js) // window.WikEdGetGlobal = function(globalName) { var globalValue; if (wikEdGreasemonkey == true) { if (wikEdGetGlobalNode == null) { wikEdGetGlobalNode = document.getElementById('wikEdGetGlobalNode'); } if (wikEdGetGlobalNode == null) { wikEdGetGlobalNode = document.createElement('textarea'); wikEdGetGlobalNode.id = 'wikEdGetGlobalNode'; wikEdGetGlobalNode.style.display = 'none'; wikEdGetGlobalNode.style.visibility = 'hidden'; document.body.appendChild(wikEdGetGlobalNode); } location.href = 'javascript:void(typeof(' + globalName + ')!=\'undefined\'?(' + globalName + '!=null?(document.getElementById(\'wikEdGetGlobalNode\').value=' + globalName + '.toString()):null):null)'; globalValue = wikEdGetGlobalNode.value; } else { try { globalValue = eval(globalName + '.toString();'); } catch(err) { } } return(globalValue); } // // WikEdGetAttribute: MS IE compatibility wrapper for element.getAttribute() // window.WikEdGetAttribute = function(element, attribName) { var attribValue = element.getAttribute(attribName); // MS IE compatibility for checked if (attribName == 'checked') { if ( typeof(attribValue) == 'boolean' ) { if (attribValue == true) { attribValue = 'true'; } else { attribValue = 'false'; } } } return(attribValue); } // // WikEdGetWindowInnerHeight: MS IE compatibility wrapper for window.innerHeight // window.WikEdGetWindowInnerHeight = function() { var value = window.innerHeight; if (value == null) { if (document.documentElement != null) { value = document.documentElement.clientHeight; } if ( (value == null) || (value == 0) ) { value = document.body.clientHeight } } return(value); } // // WikEdGetWindowInnerWidth: MS IE compatibility wrapper for window.innerWidth // window.WikEdGetWindowInnerWidth = function() { var value = window.innerWidth; if (value == null) { if (document.documentElement != null) { value = document.documentElement.clientWidth; } if ( (value == null) || (value == 0) ) { value = document.body.clientWidth } } return(value); } // // WikEdAddEventListener: wrapper for addEventListener (http://ejohn.org/projects/flexible-javascript-events/) // window.WikEdAddEventListener = function(domElement, eventType, eventHandler, useCapture) { if (domElement != null) { if (domElement.attachEvent != null) { domElement['wikEd' + eventType + eventHandler] = eventHandler; domElement[eventType + eventHandler] = function() { domElement['wikEd' + eventType + eventHandler](window.event); } domElement.attachEvent('on' + eventType, domElement[eventType + eventHandler] ); } else { domElement.addEventListener(eventType, eventHandler, useCapture); } } return; } // // WikEdRemoveEventListener: wrapper for removeEventListener // window.WikEdRemoveEventListener = function(domElement, eventType, eventHandler, useCapture) { if (domElement.detachEvent != null) { domElement.detachEvent('on' + eventType, domElement[eventType + eventHandler]); domElement[eventType + eventHandler] = null; } else { domElement.removeEventListener(eventType, eventHandler, useCapture); } return; } // // WikEdEvent: MS IE compatibility fix for event object // window.WikEdEvent = function(event) { var eventAlt; if (window.event != null) { eventAlt = window.event; } else if (wikEdFrameWindow.event != null) { eventAlt = wikEdFrameWindow.event; } if (eventAlt != null) { event = eventAlt; event.stopPropagation = function() { event.cancelBubble = true; }; event.preventDefault = function() { event.returnValue = false; }; event.target = event.srcElement; if (event.type == 'mouseout') { event.relatedTarget = event.toElement; } else if (event.type == 'mouseover') { event.relatedTarget = event.fromElement; } } return(event); } // // WikEdDebug: print the value of variables // use either a single value or a description followed by a value // popup = true: use alert popup if debug textarea is not yet setup // window.WikEdDebug = function(objectName, object, usePopup) { var useDebug; if (typeof(wikEdDebug) != 'undefined') { if (wikEdDebug != null) { useDebug = true; } } // use debug textarea if (useDebug == true) { wikEdDebugWrapper.style.position = 'static'; wikEdDebugWrapper.style.visibility = 'visible'; wikEdDebug.style.display = 'block'; if (objectName == null) { wikEdDebug.value = ''; } else { if (object == null) { wikEdDebug.value = objectName + '\n' + wikEdDebug.value; } else { wikEdDebug.value = objectName + ': ' + object + '\n' + wikEdDebug.value; } } } // use popup alert else if (usePopup == true) { if (object == null) { alert(objectName); } else { alert(objectName + ': ' + object); } } // use error console else { var msg; if (object == null) { msg = objectName + ''; } else { msg = objectName + ': ' + object; } msg = msg.replace(/\'/g, '\\\''); setTimeout('throw new Error(\'WikEdDebug: ' + msg + '\')', 0); } return; } // // WikEdDebugTimer: show all measured timepoints // add a new time measurement: wikEdDebugTimer.push([1234, new Date]); window.WikEdDebugTimer = function() { var times = ''; var start = wikEdDebugTimer[0][1].getTime(); var prev = 0; for (var i = 0; i < wikEdDebugTimer.length; i ++) { var curr = wikEdDebugTimer[i][1].getTime() - start; var diff = curr - prev; var prev = curr; times += wikEdDebugTimer[i][0] + ': ' + curr + ' ms (+ ' + diff + ' ms)\n'; } WikEdDebug(times); wikEdDebugTimer = []; } // // WikEdInsertTags: overrides the insertTags function in wikibits.js used by the standard button toolbar and the editpage special chars // window.WikEdInsertTags = function(tagOpen, tagClose, sampleText) { if (wikEdUseWikEd == true) { WikEdEditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [tagOpen, tagClose, sampleText]); } else if (WikEdInsertTagsOriginal != null) { WikEdInsertTagsOriginal(tagOpen, tagClose, sampleText); } return; } // // WikEdInsertAtCursor: overrides the insertAtCursor function in wikia.com MediaWiki:Functions.js // window.WikEdInsertAtCursor = function(myField, myValue) { if (wikEdUseWikEd == true) { if (myField == wikEdTextarea) { WikEdEditButton(document.getElementById('wikEdInsertTags'), 'wikEdInsertTags', [ myValue ]); } } else if (WikEdInsertAtCursorOriginal != null) { WikEdInsertAtCursorOriginal(myField, myValue); } return; } // // WikEdExecuteHook: executes scheduled custom functions from functionsHook array // window.WikEdExecuteHook = function(functionsHook) { for (var i = 0; i < functionsHook.length; i++) { functionsHook[i](); } return; } // // WikEdInitUnicode: define character tables used in WikedFixUnicode() // see http://kmi.open.ac.uk/projects/ceryle/doc/docs/NOTE-charents.html // removed because of internal use: < ['003c', 'lt']; > ['003e', 'gt']; & ['0026', 'amp'], ['00a0', 'nbsp'] window.WikEdInitUnicode = function() { // define only once if (wikEdSupportedChars != null) { return; } // supported chars in Mozilla and IE wikEdSupportedChars = [ [ 'a1', 'iexcl'], // ¡ [ 'a2', 'cent'], // ¢ [ 'a3', 'pound'], // £ [ 'a4', 'curren'], // ¤ [ 'a5', 'yen'], // ¥ [ 'a6', 'brvbar'], // ¦ [ 'a7', 'sect'], // § [ 'a8', 'uml'], // ¨ [ 'a9', 'copy'], // © [ 'aa', 'ordf'], // ª [ 'ab', 'laquo'], // « [ 'ac', 'not'], // ¬ [ 'ae', 'reg'], // ® [ 'af', 'macr'], // ¯ [ 'b0', 'deg'], // ° [ 'b1', 'plusmn'], // ± [ 'b2', 'sup2'], // ² [ 'b3', 'sup3'], // ³ [ 'b4', 'acute'], // ´ [ 'b5', 'micro'], // µ [ 'b6', 'para'], // ¶ [ 'b7', 'middot'], // · [ 'b8', 'cedil'], // ¸ [ 'b9', 'sup1'], // ¹ [ 'ba', 'ordm'], // º [ 'bb', 'raquo'], // » [ 'bc', 'frac14'], // ¼ [ 'bd', 'frac12'], // ½ [ 'be', 'frac34'], // ¾ [ 'bf', 'iquest'], // ¿ [ 'c0', 'Agrave'], // À [ 'c1', 'Aacute'], // Á [ 'c2', 'Acirc'], //  [ 'c3', 'Atilde'], // à [ 'c4', 'Auml'], // Ä [ 'c5', 'Aring'], // Å [ 'c6', 'AElig'], // Æ [ 'c7', 'Ccedil'], // Ç [ 'c8', 'Egrave'], // È [ 'c9', 'Eacute'], // É [ 'ca', 'Ecirc'], // Ê [ 'cb', 'Euml'], // Ë [ 'cc', 'Igrave'], // Ì [ 'cd', 'Iacute'], // Í [ 'ce', 'Icirc'], // Î [ 'cf', 'Iuml'], // Ï [ 'd0', 'ETH'], // Ð [ 'd1', 'Ntilde'], // Ñ [ 'd2', 'Ograve'], // Ò [ 'd3', 'Oacute'], // Ó [ 'd4', 'Ocirc'], // Ô [ 'd5', 'Otilde'], // Õ [ 'd6', 'Ouml'], // Ö [ 'd7', 'times'], // × [ 'd8', 'Oslash'], // Ø [ 'd9', 'Ugrave'], // Ù [ 'da', 'Uacute'], // Ú [ 'db', 'Ucirc'], // Û [ 'dc', 'Uuml'], // Ü [ 'dd', 'Yacute'], // Ý [ 'de', 'THORN'], // Þ [ 'df', 'szlig'], // ß [ 'e0', 'agrave'], // à [ 'e1', 'aacute'], // á [ 'e2', 'acirc'], // â [ 'e3', 'atilde'], // ã [ 'e4', 'auml'], // ä [ 'e5', 'aring'], // å [ 'e6', 'aelig'], // æ [ 'e7', 'ccedil'], // ç [ 'e8', 'egrave'], // è [ 'e9', 'eacute'], // é [ 'ea', 'ecirc'], // ê [ 'eb', 'euml'], // ë [ 'ec', 'igrave'], // ì [ 'ed', 'iacute'], // í [ 'ee', 'icirc'], // î [ 'ef', 'iuml'], // ï [ 'f0', 'eth'], // ð [ 'f1', 'ntilde'], // ñ [ 'f2', 'ograve'], // ò [ 'f3', 'oacute'], // ó [ 'f4', 'ocirc'], // ô [ 'f5', 'otilde'], // õ [ 'f6', 'ouml'], // ö [ 'f7', 'divide'], // ÷ [ 'f8', 'oslash'], // ø [ 'f9', 'ugrave'], // ù [ 'fa', 'uacute'], // ú [ 'fb', 'ucirc'], // û [ 'fc', 'uuml'], // ü [ 'fd', 'yacute'], // ý [ 'fe', 'thorn'], // þ [ 'ff', 'yuml'], // ÿ [ '27', 'apos'], // ' [ '22', 'quot'], // " [ '152', 'OElig'], // Œ [ '153', 'oelig'], // œ [ '160', 'Scaron'], // Š [ '161', 'scaron'], // š [ '178', 'Yuml'], // Ÿ [ '2c6', 'circ'], // ˆ [ '2dc', 'tilde'], // ˜ ['2013', 'ndash'], // – ['2014', 'mdash'], // — ['2018', 'lsquo'], // ‘ ['2019', 'rsquo'], // ’ ['201a', 'sbquo'], // ‚ ['201c', 'ldquo'], // “ ['201d', 'rdquo'], // ” ['201e', 'bdquo'], // „ ['2020', 'dagger'], // † ['2021', 'Dagger'], // ‡ ['2030', 'permil'], // ‰ ['2039', 'lsaquo'], // ‹ ['203a', 'rsaquo'], // › ['20ac', 'euro'], // € [ '192', 'fnof'], // ƒ [ '391', 'Alpha'], // Α [ '392', 'Beta'], // Β [ '393', 'Gamma'], // Γ [ '394', 'Delta'], // Δ [ '395', 'Epsilon'],// Ε [ '396', 'Zeta'], // Ζ [ '397', 'Eta'], // Η [ '398', 'Theta'], // Θ [ '399', 'Iota'], // Ι [ '39a', 'Kappa'], // Κ [ '39b', 'Lambda'], // Λ [ '39c', 'Mu'], // Μ [ '39d', 'Nu'], // Ν [ '39e', 'Xi'], // Ξ [ '39f', 'Omicron'],// Ο [ '3a0', 'Pi'], // Π [ '3a1', 'Rho'], // Ρ [ '3a3', 'Sigma'], // Σ [ '3a4', 'Tau'], // Τ [ '3a5', 'Upsilon'],// Υ [ '3a6', 'Phi'], // Φ [ '3a7', 'Chi'], // Χ [ '3a8', 'Psi'], // Ψ [ '3a9', 'Omega'], // Ω [ '3b1', 'alpha'], // α [ '3b2', 'beta'], // β [ '3b3', 'gamma'], // γ [ '3b4', 'delta'], // δ [ '3b5', 'epsilon'],// ε [ '3b6', 'zeta'], // ζ [ '3b7', 'eta'], // η [ '3b8', 'theta'], // θ [ '3b9', 'iota'], // ι [ '3ba', 'kappa'], // κ [ '3bb', 'lambda'], // λ [ '3bc', 'mu'], // μ [ '3bd', 'nu'], // ν [ '3be', 'xi'], // ξ [ '3bf', 'omicron'],// ο [ '3c0', 'pi'], // π [ '3c1', 'rho'], // ρ [ '3c2', 'sigmaf'], // ς [ '3c3', 'sigma'], // σ [ '3c4', 'tau'], // τ [ '3c5', 'upsilon'],// υ [ '3c6', 'phi'], // φ [ '3c7', 'chi'], // χ [ '3c8', 'psi'], // ψ [ '3c9', 'omega'], // ω ['2022', 'bull'], // • ['2026', 'hellip'], // … ['2032', 'prime'], // ′ ['2033', 'Prime'], // ″ ['203e', 'oline'], // ‾ ['2044', 'frasl'], // ⁄ ['2122', 'trade'], // ™ ['2190', 'larr'], // ← ['2191', 'uarr'], // ↑ ['2192', 'rarr'], // → ['2193', 'darr'], // ↓ ['2194', 'harr'], // ↔ ['21d2', 'rArr'], // ⇒ ['21d4', 'hArr'], // ⇔ ['2200', 'forall'], // ∀ ['2202', 'part'], // ∂ ['2203', 'exist'], // ∃ ['2207', 'nabla'], // ∇ ['2208', 'isin'], // ∈ ['220b', 'ni'], // ∋ ['220f', 'prod'], // ∏ ['2211', 'sum'], // ∑ ['2212', 'minus'], // − ['221a', 'radic'], // √ ['221d', 'prop'], // ∝ ['221e', 'infin'], // ∞ ['2220', 'ang'], // ∠ ['2227', 'and'], // ∧ ['2228', 'or'], // ∨ ['2229', 'cap'], // ∩ ['222a', 'cup'], // ∪ ['222b', 'int'], // ∫ ['2234', 'there4'], // ∴ ['223c', 'sim'], // ∼ ['2248', 'asymp'], // ≈ ['2260', 'ne'], // ≠ ['2261', 'equiv'], // ≡ ['2264', 'le'], // ≤ ['2265', 'ge'], // ≥ ['2282', 'sub'], // ⊂ ['2283', 'sup'], // ⊃ ['2286', 'sube'], // ⊆ ['2287', 'supe'], // ⊇ ['2295', 'oplus'], // ⊕ ['22a5', 'perp'], // ⊥ ['25ca', 'loz'], // ◊ ['2660', 'spades'], // ♠ ['2663', 'clubs'], // ♣ ['2665', 'hearts'], // ♥ ['2666', 'diams'] // ♦ ]; // special chars (spaces and invisible characters) wikEdSpecialChars = [ ['2002', 'ensp'], // en space [ 'ad', 'shy'], // soft hyphen ['2003', 'emsp'], // em space ['2009', 'thinsp'], // thin space ['200c', 'zwnj'], // zero width non-joiner ['200d', 'zwj'], // zero width joiner ['200e', 'lrm'], // left-to-right mark ['200f', 'rlm'] // right-to-left mark ]; // unsupported chars in IE6 wikEdProblemChars = [ [ '3d1', 'thetasym'], // ϑ [ '3d2', 'upsih'], // ϒ [ '3d6', 'piv'], // ϖ ['2118', 'weierp'], // ℘ ['2111', 'image'], // ℑ ['211c', 'real'], // ℜ ['2135', 'alefsym'], // ℵ ['21b5', 'crarr'], // ↵ ['21d0', 'lArr'], // ⇐ ['21d1', 'uArr'], // ⇑ ['21d3', 'dArr'], // ⇓ ['2205', 'empty'], // ∅ ['2209', 'notin'], // ∉ ['2217', 'lowast'], // ∗ ['2245', 'cong'], // ≅ ['2284', 'nsub'], // ⊄ ['22a5', 'perp'], // ⊥ ['2297', 'otimes'], // ⊗ ['22c5', 'sdot'], // ⋅ ['2308', 'lceil'], // ⌈ ['2309', 'rceil'], // ⌉ ['230a', 'lfloor'], // ⌊ ['230b', 'rfloor'], // ⌋ ['2329', 'lang'], // 〈 ['232a', 'rang'] // 〉 ]; // ASCII control characters and invisibles, used for syntax highlighting wikEdControlChars = { '0': 'null', '1': 'start of heading', '2': 'start of text', '3': 'end of text', '4': 'end of transmission', '5': 'enquiry', '6': 'acknowledge', '7': 'bell', '8': 'backspace', '9': 'horizontal tab', '10': 'line feed, new line', '11': 'vertical tab', '12': 'form feed, new page', '13': 'carriage return', '14': 'shift out', '15': 'shift in', '16': 'data link escape', '17': 'device control 1', '18': 'device control 2', '19': 'device control 3', '20': 'device control 4', '21': 'negative acknowledge', '22': 'synchronous idle', '23': 'end of trans. block', '24': 'cancel', '25': 'end of medium', '26': 'substitute', '27': 'escape', '28': 'file separator', '29': 'group separator', '30': 'record separator', '31': 'unit separator', '173' : 'soft hyphen', // \u00ad '8204': 'zero width non-joiner', // \u200c '8205': 'zero width joiner', // \u200d '8206': 'left-to-right mark', // \u200e '8207': 'right-to-left mark', // \u200f '8232': 'line separator', // \u2028 '8233': 'paragraph separator' // \u2028 }; for (var decimalValue in wikEdControlChars) { if (typeof(wikEdControlChars[decimalValue]) != 'string') { continue; } wikEdControlCharsStr += String.fromCharCode(decimalValue); } // strange spaces, used for syntax highlighting wikEdStrangeSpaces = { '160': 'non-breaking space', // \u00a0 '8194': 'en space', // \u2002 '8195': 'em space', // \u2003 '8201': 'thin space' // \u2009 }; return; } // call wikEd startup WikEdStartup(); // </nowiki></pre> | |
|
compareselectedversions discuter | Comparer les versions sélectionnées |
|
confirm discuter | Confirmer |
|
confirm-purge-bottom discuter | Purger une page l’efface du cache de rendu et force sa dernière version à être régénérée et affichée. |
|
confirm-purge-top discuter | Voulez-vous rafraîchir cette page (purger le cache) ? |
|
confirm_purge_button discuter | Confirmer |
|
confirmdeletetext discuter | Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c’est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faîtes ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]]. |
|
confirmedittext discuter | Vous devez confirmer votre adresse de courriel avant de modifier les pages. Veuillez entrer et valider votre adresse de courriel dans vos [[Special:Preferences|préférences utilisateur]]. |
|
confirmedittitle discuter | Validation de l’adresse de courriel nécessaire pour modifier le contenu |
|
confirmemail discuter | Confirmer l’adresse de courriel |
|
confirmemail_body discuter | Quelqu’un, probablement vous, à partir de l’adresse IP $1, a enregistré un compte « $2 » avec cette adresse de courriel sur le site {{SITENAME}}. Pour confirmer que ce compte vous appartient vraiment et afin d’activer les fonctions de messagerie sur {{SITENAME}}, veuillez suivre ce lien dans votre navigateur : $3 Si vous n’avez *pas* enregistré ce compte, n’ouvrez pas ce lien ; vous pouvez suivre l’autre lien ci-dessous pour annuler la confirmation de votre adresse courriel : $5 Ce code de confirmation expirera le $4. |
|
confirmemail_error discuter | Un problème est survenu lors de l’enregistrement de votre confirmation. |
|
confirmemail_invalid discuter | Code de confirmation incorrect. Celui-ci a peut-être expiré. |
|
confirmemail_invalidated discuter | Confirmation de l’adresse courriel annulée |
|
confirmemail_loggedin discuter | Votre adresse de courriel est maintenant confirmée. |
|
confirmemail_needlogin discuter | Vous devez $1 pour confirmer votre adresse de courriel. |
|
confirmemail_noemail discuter | Vous n’avez pas défini une adresse de courriel valide dans vos [[Special:Preferences|préférences]]. |
|
confirmemail_oncreate discuter | Un code de confirmation a été envoyé à votre adresse de courriel. Ce code n’est pas requis pour vous identifier sur ce wiki, mais vous devrez le fournir pour activer toute fonctionnalité basée sur les courriels. |
|
confirmemail_pending discuter | Un code de confirmation vous a déjà été envoyé par courriel ; si vous venez de créer votre compte, veuillez attendre quelques minutes que le courriel arrive avant de demander un nouveau code. |
|
confirmemail_send discuter | Envoyer un code de confirmation |
|
confirmemail_sendfailed discuter | {{SITENAME}} n’a pas pu vous envoyer le courriel de confirmation. Veuillez vérifiez que votre adresse courriel ne comprend aucun caractère incorrect. Le programme d’envoi de courriel a retourné l’indication suivante : $1 |
|
confirmemail_sent discuter | Courriel de confirmation envoyé |
|
confirmemail_subject discuter | Confirmation d’adresse de courriel pour {{SITENAME}} |
|
confirmemail_success discuter | Votre adresse de courriel a été confirmée. Vous pouvez maintenant vous [[Special:UserLogin|identifier]] et profiter du wiki. |
|
confirmemail_text discuter | Ce wiki nécessite la vérification de votre adresse de courriel avant de pouvoir utiliser toute fonction de messagerie. Utilisez le bouton ci-dessous pour envoyer un courriel de confirmation à votre adresse. Le courriel inclura un lien comportant un code à usage unique et limité dans le temps ; chargez ce lien dans votre navigateur pour confirmer que votre adresse de courriel est valide. |
|
confirmrecreate discuter | L’utilisateur [[User:$1|$1]] ([[User talk:$1|Discussion]]) a supprimé cette page, alors que vous aviez commencé à l’éditer, pour le motif suivant : : ''$2'' Veuillez confirmer que vous désirez réellement recréer cette page. |
|
contextchars discuter | Nombre de caractères de contexte par ligne : |
|
contextlines discuter | Nombre de lignes par réponse : |
|
contribslink discuter | contributions |
|
contribsub2 discuter | Pour $1 ($2) |
|
contributions discuter | Contributions de l’utilisateur |
|
contributions-title discuter | Liste des contributions de l’utilisateur $1 |
|
copyright discuter | Contenu disponible sous $1. |
|
copyrightpage discuter | {{ns:project}}:Copyrights |
|
copyrightpagename discuter | licence {{SITENAME}} |
|
copyrightwarning discuter | Toutes les contributions à {{SITENAME}} sont considérées comme publiées sous les termes de la $2 (voir $1 pour plus de détails). Si vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, merci de ne pas les soumettre ici.<br /> Vous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source provenant du domaine public, ou d’une ressource libre. '''N’UTILISEZ PAS DE TRAVAUX SOUS DROIT D’AUTEUR SANS AUTORISATION EXPRESSE !''' |
|
copyrightwarning2 discuter | Toutes les contributions à {{SITENAME}} peuvent être modifiées ou supprimées par d’autres utilisateurs. Si vous ne désirez pas que vos écrits soient modifiés et distribués à volonté, merci de ne pas les soumettre ici.<br /> Vous nous promettez aussi que vous avez écrit ceci vous-même, ou que vous l’avez copié d’une source provenant du domaine public, ou d’une ressource libre. (voir $1 pour plus de détails). '''N’UTILISEZ PAS DE TRAVAUX SOUS DROIT D’AUTEUR SANS AUTORISATION EXPRESSE !''' |
|
create discuter | Créer |
|
create-this-page discuter | Créer cette page |
|
createaccount discuter | Créer un compte |
|
createaccount-text discuter | Quelqu’un a créé un compte pour votre adresse de courriel sur {{SITENAME}} ($4) intitulé « $2 », avec le mot de passe « $3 ». Vous devriez ouvrir une session et modifier dès à présent votre mot de passe. Ignorez ce message si ce compte a été créé par erreur. |
|
createaccount-title discuter | Création d’un compte pour {{SITENAME}} |
|
createaccountblock discuter | création de compte bloquée |
|
createaccountmail discuter | par courriel |
|
created discuter | créée |
|
creditspage discuter | Crédits de la page |
|
cur discuter | actu |
|
currentevents discuter | Actualités |
|
currentevents-url discuter | Project:Actualités |
|
currentrev discuter | Version actuelle |
|
currentrev-asof discuter | Version actuelle en date du $1 |
|
currentrevisionlink discuter | Voir la version courante |
|
customcssjsprotected discuter | Vous n’avez pas la permission de modifier cette page, car elle contient les préférences d’un autre utilisateur. |
|
databaseerror discuter | Erreur de la base de données |
|
databasenotlocked discuter | La base de données n’est pas verrouillée. |
|
datedefault discuter | Aucune préférence |
|
dateformat discuter | Format de date |
|
datetime discuter | Date et heure |
|
dberr-again discuter | Essayez d’attendre quelques minutes et rechargez. |
|
dberr-cachederror discuter | Ceci est une copie cachée de la page demandée et peut être dépassée. |
|
dberr-header discuter | Ce wiki a un problème |
|
dberr-info discuter | (Connexion au serveur de base de données impossible : $1) |
|
dberr-outofdate discuter | Notez que leurs index de notre contenu peuvent être dépassés. |
|
dberr-problems discuter | Désolé ! Ce site rencontre des difficultés techniques. |
|
dberr-usegoogle discuter | Vous pouvez essayer de chercher avec Google pendant ce temps. |
|
dberrortext discuter | Une erreur de syntaxe de la requête dans la base de données est survenue. Ceci peut indiquer un bogue dans le logiciel. La dernière requête traitée par la base de données était : <blockquote><tt>$1</tt></blockquote> depuis la fonction « <tt>$2</tt> ». MySQL a renvoyé l’erreur « <tt>$3 : $4</tt> ». |
|
dberrortextcl discuter | Une requête dans la base de données comporte une erreur de syntaxe. La dernière requête émise était : « $1 » dans la fonction « $2 ». MySQL a renvoyé l’erreur « $3 : $4 ». |
|
deadendpages discuter | Pages en impasse |
|
deadendpages-summary discuter | |
|
deadendpagestext discuter | Les pages suivantes ne contiennent aucun lien vers d’autres pages du wiki. |
|
dec discuter | déc |
|
december discuter | décembre |
|
december-gen discuter | décembre |
|
default discuter | défaut |
|
defaultns discuter | Rechercher par défaut dans ces espaces de noms |
|
defemailsubject discuter | Courriel de {{SITENAME}} |
|
delete discuter | Supprimer |
|
delete-backlink discuter | ← $1 |
|
delete-confirm discuter | Supprimer « $1 » |
|
delete-edit-reasonlist discuter | Modifier les motifs de suppression de page |
|
delete-legend discuter | Supprimer |
|
delete-toobig discuter | Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}. La suppression de telles pages a été restreinte pour prévenir des perturbations accidentelles de {{SITENAME}}. |
|
delete-warning-toobig discuter | Cette page possède un historique important de modifications, dépassant $1 version{{PLURAL:$1||s}}. La supprimer peut perturber le fonctionnement de la base de données de {{SITENAME}} ; veuiller ne procéder qu’avec prudence. |
|
delete_and_move discuter | Supprimer et renommer |
|
delete_and_move_confirm discuter | Oui, j’accepte de supprimer la page de destination pour permettre le renommage. |
|
delete_and_move_reason discuter | Page supprimée automatiquement pour permettre un renommage |
|
delete_and_move_text discuter | == Suppression requise == La page de destination « [[:$1]] » existe déjà. Voulez-vous vraiment la supprimer pour permettre ce renommage ? |
|
deletecomment discuter | Motif de suppression : |
|
deleted-notice discuter | Cette page a été supprimée. L'historique des suppressions est affiché ci-dessous pour référence. |
|
deletedarticle discuter | a supprimé « [[$1]] » |
|
deletedcontributions discuter | Contributions supprimées |
|
deletedcontributions-title discuter | Contributions supprimées |
|
deletedhist discuter | Historique supprimé |
|
deletedrev discuter | [supprimé] |
|
deletedrevision discuter | L’ancienne version $1 a été supprimée |
|
deletedtext discuter | « <nowiki>$1</nowiki> » a été supprimé. Voir $2 pour une liste des suppressions récentes. |
|
deletedwhileediting discuter | '''Attention''' : cette page a été supprimée après que vous avez commencé à la modifier ! |
|
deletelog-fulllog discuter | Voir l’historique complet |
|
deleteotherreason discuter | Motif autre ou supplémentaire : |
|
deletepage discuter | Supprimer la page |
|
deletereason-dropdown discuter | * Motifs de suppression les plus courants ** Demande de l’auteur ** Violation des droits d’auteur ** Vandalisme ** Langue erronée ** Message mis à jour de façon externe |
|
deletereasonotherlist discuter | Autre motif |
|
deletethispage discuter | Supprimer cette page |
|
deletionlog discuter | journal des suppressions |
|
dellogpage discuter | Journal des suppressions de page |
|
dellogpagetext discuter | Voici la liste des suppressions les plus récentes. |
|
descending_abbrev discuter | décr. |
|
destfilename discuter | Nom sous lequel le fichier sera enregistré : |
|
diff discuter | diff |
|
diff-a discuter | un '''lien''' |
|
diff-added discuter | $1 ajouté |
|
diff-b discuter | '''gras''' |
|
diff-big discuter | '''grand''' |
|
diff-blockquote discuter | une '''citation''' |
|
diff-br discuter | une '''cassure''' |
|
diff-changedfrom discuter | changé depuis $1 |
|
diff-changedto discuter | changé vers $1 |
|
diff-code discuter | un '''bloc de code d’ordinateur''' |
|
diff-dd discuter | une '''définition''' |
|
diff-del discuter | '''supprimé''' |
|
diff-div discuter | une '''division''' |
|
diff-dl discuter | une '''liste de définition''' |
|
diff-dt discuter | un '''terme de définition''' |
|
diff-em discuter | '''emphase''' |
|
diff-font discuter | '''police''' |
|
diff-form discuter | un '''formulaire''' |
|
diff-h1 discuter | un '''en-tête (niveau 1)''' |
|
diff-h2 discuter | un '''en-tête (niveau 2)''' |
|
diff-h3 discuter | un '''en-tête (niveau 3)''' |
|
diff-h4 discuter | un '''en-tête (niveau 4)''' |
|
diff-h5 discuter | un '''en-tête (niveau 5)''' |
|
diff-height discuter | hauteur |
|
diff-hr discuter | une '''règle horizontale''' |
|
diff-i discuter | '''italique''' |
|
diff-img discuter | une '''image''' |
|
diff-input discuter | une '''entrée''' |
|
diff-li discuter | un '''élément de liste''' |
|
diff-movedoutof discuter | déplacé hors de $1 |
|
diff-movedto discuter | déplacée vers $1 |
|
diff-multi discuter | ({{PLURAL:$1|Une version intermédiaire masquée|$1 versions intermédiaires masquées}}) |
|
diff-ol discuter | une '''liste ordonnée''' |
|
diff-p discuter | un '''paragraphe''' |
|
diff-pre discuter | un '''bloc préformaté''' |
|
diff-removed discuter | $1 retiré |
|
diff-span discuter | une '''portée''' |
|
diff-src discuter | source |
|
diff-strike discuter | '''barré''' |
|
diff-strong discuter | '''fort''' |
|
diff-styleadded discuter | style $1 ajouté |
|
diff-styleremoved discuter | style $1 retiré |
|
diff-sub discuter | '''sous-script''' |
|
diff-sup discuter | '''sur-script''' |
|
diff-table discuter | un '''tableau''' |
|
diff-tbody discuter | le '''contenu d’un tableau''' |
|
diff-td discuter | une '''cellule''' |
|
diff-th discuter | un '''en-tête''' |
|
diff-tr discuter | une '''ligne''' |
|
diff-tt discuter | '''largeur fixée''' |
|
diff-ul discuter | une '''liste non ordonnée''' |
|
diff-width discuter | largeur |
|
diff-with discuter |  avec $1 $2 |
|
diff-with-additional discuter | $1 $2 |
|
diff-with-final discuter |  et $1 $2 |
|
diff-withdestination discuter | avec la destination $1 |
|
difference discuter | (Différences entre les versions) |
|
directorycreateerror discuter | Impossible de créer le dossier « $1 ». |
|
disambiguations discuter | Pages d’homonymie |
|
disambiguations-summary discuter | |
|
disambiguations-text discuter | Les pages suivantes comportent un lien vers une '''page d’homonymie'''. Ces liens ambigus devraient plutôt pointer vers le bon article.<br /> Une page est considérée comme une page d’homonymie si elle inclut (directement ou récursivement) un des modèles listés sur [[MediaWiki:Disambiguationspage]]. |
|
disambiguationspage discuter | Template:Homonymie |
|
disclaimerpage discuter | Project:Avertissements généraux |
|
disclaimers discuter | Avertissements |
|
djvu_no_xml discuter | Impossible de récupérer le XML pour le fichier DjVu |
|
djvu_page_error discuter | Page DjVu hors limites |
|
double-redirect-fixed-move discuter | Cette redirection, dont la cible [[$1]] a été renommée, mène maintenant vers [[$2]]. |
|
double-redirect-fixer discuter | Correcteur de redirection |
|
doubleredirects discuter | Doubles redirections |
|
doubleredirects-summary discuter | |
|
doubleredirectstext discuter | Voici une liste des pages qui redirigent vers des pages qui sont elles-mêmes des pages de redirection. Chaque entrée contient des liens vers la première et la seconde redirections, ainsi que la première ligne de texte de la seconde page, ce qui fournit habituellement la « vraie » page cible, vers laquelle la première redirection devrait rediriger. |
|
download discuter | Télécharger |
|
dpl2_articlecount discuter | There {{PLURAL:$1|is one article|are $1 articles}} in this heading. |
|
dpl2_log_1 discuter | ERROR: Wrong '$0' parameter: '$1'! Help: <code>$0= <i>empty string</i> (Main)$3</code>. |
|
dpl2_log_10 discuter | ERROR: the index for the dominant section must be between 1 and the number of arguments of includepage ($0 in this case) |
|
dpl2_log_11 discuter | ERROR: Cannot perform logical operations on the Uncategorized pages (e.g. with the 'category' parameter) because the $0 view does not exist on the database! Help: have the DB admin execute this query: <code>$1</code>. |
|
dpl2_log_12 discuter | ERROR: specifying "openreferences" is incompatible with some other option you specified. See the manual for details. |
|
dpl2_log_13 discuter | WARNING: Unknown parameter '$0' is ignored. Help: available parameters: <code>$1</code>. |
|
dpl2_log_14 discuter | WARNING: Wrong '$0' parameter: '$1'! Using default: '$2'. Help: <code>$0= $3</code>. |
|
dpl2_log_15 discuter | WARNING: Wrong '$0' parameter: '$1'! Using default: '$2' (no limit). Help: <code>$0= <i>empty string</i> (no limit) | n</code>, with <code>n</code> a positive integer. |
|
dpl2_log_16 discuter | WARNING: No results! |
|
dpl2_log_17 discuter | WARNING: Add* parameters ('adduser', 'addeditdate', etc.)' and 'includepage' have no effect with 'mode=category'. Only the page namespace/title can be viewed in this mode. |
|
dpl2_log_18 discuter | WARNING: 'headingmode=$0' has no effect with 'ordermethod' on a single component. Using: '$1'. Help: you can use not-$1 'headingmode' values with 'ordermethod' on multiple components. The first component is used for headings. E.g. 'ordermethod=category,<i>comp</i>' (<i>comp</i> is another component) for category headings. |
|
dpl2_log_19 discuter | WARNING: 'debug=$0' is not in first position in the DPL element. The new debug settings are not applied before all previous parameters have been parsed and checked. |
|
dpl2_log_2 discuter | ERROR: Wrong '$0' parameter: '$1'! Help: <code>$0= <i>full pagename</i></code>. |
|
dpl2_log_20 discuter | WARNING: An infinite transclusion loop is created by page '$0'. |
|
dpl2_log_21 discuter | QUERY: <code>$0</code> |
|
dpl2_log_3 discuter | ERROR: Too many categories! Maximum: $0. Help: increase <code>ExtDynamicPageList2::$maxCategoryCount</code> to specify more categories or set <code>ExtDynamicPageList2::$allowUnlimitedCategories=true</code> for no limitation. (Set the variable in <code>LocalSettings.php</code>, after including <code>DynamicPageList2.php</code>.) |
|
dpl2_log_4 discuter | ERROR: Too few categories! Minimum: $0. Help: decrease <code>ExtDynamicPageList2::$minCategoryCount</code> to specify fewer categories. (Set the variable preferably in <code>LocalSettings.php</code>, after including <code>DynamicPageList2.php</code>.) |
|
dpl2_log_5 discuter | ERROR: No selection criteria found! You must use at least one of the following parameters: category, namespace, titlematch, linksto, uses, createdby, modifiedby, lastmodifiedby or their 'not' variants |
|
dpl2_log_6 discuter | ERROR: You need to include at least one category if you want to use 'addfirstcategorydate=true' or 'ordermethod=categoryadd'! |
|
dpl2_log_7 discuter | ERROR: If you include more than one category, you cannot use 'addfirstcategorydate=true' or 'ordermethod=categoryadd'! |
|
dpl2_log_8 discuter | ERROR: You cannot add more than one type of date at a time! |
|
dpl2_log_9 discuter | ERROR: You can use '$0' with 'ordermethod=[...,]$1' only! |
|
duplicate-defaultsort discuter | Attention : la clé de tri par défaut « $2 » écrase la précédente « $1 ». |
|
duplicatesoffile discuter | {{PLURAL:$1|Le fichier suivant est un duplicata|Les fichiers suivants sont des duplicatas}} de celui-ci ([[Special:FileDuplicateSearch/$2|plus de détails]]) : |
|
eauthentsent discuter | Un courriel de confirmation a été envoyé à l’adresse indiquée. Avant qu’un autre courriel ne soit envoyé à ce compte, vous devrez suivre les instructions du courriel et confirmer que le compte est bien le vôtre. |
|
edit discuter | Modifier |
|
edit-already-exists discuter | La nouvelle page n’a pas pu être créée. Elle existe déjà. |
|
edit-conflict discuter | Conflit de modification. |
|
edit-externally discuter | Modifier ce fichier en utilisant une application externe |
|
edit-externally-help discuter | (Consulter [http://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] pour plus d’informations) |
|
edit-gone-missing discuter | N’a pas pu mettre à jour la page. Il semble qu’elle ait été supprimée. |
|
edit-hook-aborted discuter | Échec de la modification par une extension. Cause inconnue |
|
edit-no-change discuter | Votre modification a été ignorée car aucun changement n’a été fait au texte. |
|
editcomment discuter | Le résumé de la modification était : « ''$1'' ». |
|
editconflict discuter | Conflit de modification : $1 |
|
edithelp discuter | Aide |
|
edithelppage discuter | Help:Comment modifier une page |
|
editing discuter | Modification de $1 |
|
editingcomment discuter | Modification de $1 (nouvelle section) |
|
editinginterface discuter | '''Attention :''' vous êtes en train d’éditer une page utilisée pour créer le texte de l’interface du logiciel. Les changements se répercuteront, selon le contexte, sur toutes ou certaines pages visibles par les autres utilisateurs. Pour les traductions, nous vous invitons à utiliser le projet MediaWiki d’internationalisation des messages [http://translatewiki.net/wiki/Main_Page?setlang=fr translatewiki.net]. |
|
editingold discuter | '''Attention : vous êtes en train de modifier une ancienne version de cette page. Si vous la publiez, toutes les modifications effectuées depuis cette version seront perdues.''' |
|
editingsection discuter | Modification de $1 (section) |
|
editinguser discuter | Modification des droits de l’utilisateur '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]]) |
|
editlink discuter | modifier |
|
editold discuter | modifier |
|
editsection discuter | modifier |
|
editsection-brackets discuter | [$1] |
|
editsectionhint discuter | Modifier la section : $1 |
|
editthispage discuter | Modifier cette page |
|
edittools discuter | <!-- Tout texte entré ici sera affiché sous les boîtes de modification ou les formulaires de téléversement de fichier. --> |
|
editundo discuter | défaire |
|
editusergroup discuter | Modification des groupes utilisateurs |
|
ellipsis discuter | … |
|
email discuter | Courriel |
|
email-legend discuter | Envoyer un courriel à un autre utilisateur de {{SITENAME}} |
|
emailauthenticated discuter | Votre adresse de courriel a été authentifiée le $2 à $3. |
|
emailblock discuter | courriel bloqué |
|
emailccme discuter | M’envoyer par courriel une copie de mon message. |
|
emailccsubject discuter | Copie de votre message à $1 : $2 |
|
emailconfirmlink discuter | Confirmez votre adresse de courriel |
|
emailfrom discuter | Expéditeur : |
|
emailmessage discuter | Message : |
|
emailnotauthenticated discuter | Votre adresse de courriel n’est <strong>pas encore authentifiée</strong>. Aucun courriel ne sera envoyé pour chacune des fonctions suivantes. |
|
emailpage discuter | Envoyer un courriel à l’utilisateur |
|
emailpagetext discuter | Vous pouvez utiliser le formulaire ci-dessous pour envoyer un courriel à cet utilisateur. L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos préférences]] apparaîtra dans le champ « Expéditeur » de votre message ; ainsi, le destinataire pourra vous répondre directement. |
|
emailsend discuter | Envoyer |
|
emailsent discuter | Courriel envoyé |
|
emailsenttext discuter | Votre message a été envoyé par courriel. |
|
emailsubject discuter | Objet : |
|
emailto discuter | Destinataire : |
|
emailuser discuter | Lui envoyer un courriel |
|
emailuserfooter discuter | Ce courriel a été envoyé par « $1 » à « $2 » par la fonction « Envoyer un courriel à l’utilisateur » de {{SITENAME}}. |
|
emptyfile discuter | Le fichier que vous voulez téléverser semble vide. Ceci peut être dû à une erreur dans le nom du fichier. Veuillez vérifier que vous désirez vraiment téléverser ce fichier. |
|
enotif_anon_editor discuter | utilisateur non-enregistré $1 |
|
enotif_body discuter | Cher $WATCHINGUSERNAME, La page « $PAGETITLE » de {{SITENAME}} a été $CHANGEDORCREATED le $PAGEEDITDATE par « $PAGEEDITOR », visitez $PAGETITLE_URL pour visualiser la version actuelle. $NEWPAGE Résumé du contributeur : $PAGESUMMARY $PAGEMINOREDIT Contactez ce contributeur : courriel : $PAGEEDITOR_EMAIL wiki : $PAGEEDITOR_WIKI Il n’y aura pas d’autres notifications en cas de changements ultérieurs, à moins que vous ne visitiez cette page. Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pages de votre liste de suivi. Votre système de notification de {{SITENAME}} -- Pour modifier les paramètres de votre liste de suivi, visitez {{fullurl:Special:Watchlist/edit}} Retour et assistance : {{fullurl:{{MediaWiki:Helppage}}}} |
|
enotif_impersonal_salutation discuter | Utilisateur de {{SITENAME}} |
|
enotif_lastdiff discuter | Voyez $1 pour visualiser ces changements. |
|
enotif_lastvisited discuter | Voyez $1 pour tous les changements depuis votre dernière visite. |
|
enotif_mailer discuter | Système de notification par courriel de {{SITENAME}} |
|
enotif_newpagetext discuter | Ceci est une nouvelle page. |
|
enotif_reset discuter | Marquer toutes les pages comme visitées |
|
enotif_subject discuter | La page $PAGETITLE de {{SITENAME}} a été $CHANGEDORCREATED par $PAGEEDITOR |
|
enterlockreason discuter | Indiquez la raison du verrouillage ainsi qu’une estimation de sa durée |
|
error discuter | Erreur |
|
errorpagetitle discuter | Erreur |
|
exbeforeblank discuter | contenait avant blanchiment « $1 » |
|
exblank discuter | la page était vide |
|
excontent discuter | contenait « $1 » |
|
excontentauthor discuter | contenait « $1 » (et son seul contributeur était [[Special:Contributions/$2|$2]]) |
|
exif-aperturevalue discuter | Ouverture |
|
exif-artist discuter | Auteur |
|
exif-bitspersample discuter | Bits par composante |
|
exif-brightnessvalue discuter | Luminance |
|
exif-cfapattern discuter | Motif CFA |
|
exif-colorspace discuter | Espace colorimétrique |
|
exif-colorspace-1 discuter | sRGB |
|
exif-colorspace-ffff.h discuter | Non calibré |
|
exif-componentsconfiguration discuter | Signification de chaque composante |
|
exif-componentsconfiguration-0 discuter | N’existe pas |
|
exif-componentsconfiguration-1 discuter | Y |
|
exif-componentsconfiguration-2 discuter | Cb |
|
exif-componentsconfiguration-3 discuter | Cr |
|
exif-componentsconfiguration-4 discuter | R |
|
exif-componentsconfiguration-5 discuter | V |
|
exif-componentsconfiguration-6 discuter | B |
|
exif-compressedbitsperpixel discuter | Mode de compression de l’image |
|
exif-compression discuter | Type de compression |
|
exif-compression-1 discuter | Non compressé |
|
exif-compression-6 discuter | JPEG |
|
exif-contrast discuter | Contraste |
|
exif-contrast-0 discuter | Normal |
|
exif-contrast-1 discuter | Faible |
|
exif-contrast-2 discuter | Fort |
|
exif-copyright discuter | Détenteur du droit d’auteur |
|
exif-customrendered discuter | Rendu personnalisé |
|
exif-customrendered-0 discuter | Procédé normal |
|
exif-customrendered-1 discuter | Procédé personnalisé |
|
exif-datetime discuter | Date de modification |
|
exif-datetimedigitized discuter | Date de la numérisation |
|
exif-datetimeoriginal discuter | Date de la prise originelle |
|
exif-devicesettingdescription discuter | Description de la configuration du dispositif |
|
exif-digitalzoomratio discuter | Taux de zoom numérique |
|
exif-exifversion discuter | Version EXIF |
|
exif-exposurebiasvalue discuter | Correction d’exposition |
|
exif-exposureindex discuter | Index d’exposition |
|
exif-exposuremode discuter | Mode d’exposition |
|
exif-exposuremode-0 discuter | Automatique |
|
exif-exposuremode-1 discuter | Manuelle |
|
exif-exposuremode-2 discuter | Fourchette automatique |
|
exif-exposureprogram discuter | Programme d’exposition |
|
exif-exposureprogram-0 discuter | Indéfini |
|
exif-exposureprogram-1 discuter | Manuel |
|
exif-exposureprogram-2 discuter | Programme normal |
|
exif-exposureprogram-3 discuter | Priorité à l’ouverture |
|
exif-exposureprogram-4 discuter | Priorité à l’obturateur |
|
exif-exposureprogram-5 discuter | Programme création (préférence à la profondeur de champ) |
|
exif-exposureprogram-6 discuter | Programme action (préférence à la vitesse d’obturation) |
|
exif-exposureprogram-7 discuter | Mode portrait (pour clichés de près avec arrière-plan flou) |
|
exif-exposureprogram-8 discuter | Mode paysage (pour des clichés de paysages nets) |
|
exif-exposuretime discuter | Temps d’exposition |
|
exif-exposuretime-format discuter | $1 sec ($2) |
|
exif-filesource discuter | Source du fichier |
|
exif-filesource-3 discuter | Appareil photo numérique |
|
exif-flash discuter | Flash |
|
exif-flash-fired-0 discuter | Flash non déclenché |
|
exif-flash-fired-1 discuter | Flash déclenché |
|
exif-flash-function-1 discuter | Pas de fonction de flash |
|
exif-flash-mode-1 discuter | lumière du flash obligatoire |
|
exif-flash-mode-2 discuter | suppression du flash obligatoire |
|
exif-flash-mode-3 discuter | Mode automatique |
|
exif-flash-redeye-1 discuter | Mode anti-yeux rouges |
|
exif-flash-return-0 discuter | aucun stroboscope ne retourne une fonction de détection |
|
exif-flash-return-2 discuter | le stroboscope retourne une lumière non détectée |
|
exif-flash-return-3 discuter | le stroboscope retourne une lumière détectée |
|
exif-flashenergy discuter | Énergie du flash |
|
exif-flashpixversion discuter | Version FlashPix |
|
exif-fnumber discuter | Ouverture |
|
exif-fnumber-format discuter | f/$1 |
|
exif-focallength discuter | Longueur focale |
|
exif-focallength-format discuter | $1 mm |
|
exif-focallengthin35mmfilm discuter | Longueur focale pour un film 35 mm |
|
exif-focalplaneresolutionunit discuter | Unité de résolution du plan focal |
|
exif-focalplaneresolutionunit-2 discuter | Pouce |
|
exif-focalplanexresolution discuter | Résolution horizontale du plan focal |
|
exif-focalplaneyresolution discuter | Résolution verticale du plan focal |
|
exif-gaincontrol discuter | Contrôle du gain |
|
exif-gaincontrol-0 discuter | Aucun |
|
exif-gaincontrol-1 discuter | Gain faiblement positif |
|
exif-gaincontrol-2 discuter | Gain fortement positif |
|
exif-gaincontrol-3 discuter | Gain faiblement négatif |
|
exif-gaincontrol-4 discuter | Gain fortement négatif |
|
exif-gpsaltitude discuter | Altitude |
|
exif-gpsaltituderef discuter | Référence d’altitude (0=altitude, 1=profondeur) |
|
exif-gpsareainformation discuter | Nom de la zone GPS |
|
exif-gpsdatestamp discuter | Date GPS |
|
exif-gpsdestbearing discuter | Relèvement de la destination |
|
exif-gpsdestbearingref discuter | Référence pour le relèvement de la destination |
|
exif-gpsdestdistance discuter | Distance à la destination |
|
exif-gpsdestdistanceref discuter | Référence pour la distance à la destination |
|
exif-gpsdestlatitude discuter | Latitude de la destination |
|
exif-gpsdestlatituderef discuter | Référence pour la latitude de la destination |
|
exif-gpsdestlongitude discuter | Longitude de la destination |
|
exif-gpsdestlongituderef discuter | Référence pour la longitude de la destination |
|
exif-gpsdifferential discuter | Correction différentielle GPS |
|
exif-gpsdirection-m discuter | Nord magnétique |
|
exif-gpsdirection-t discuter | Vrai Nord |
|
exif-gpsdop discuter | Précision de la mesure |
|
exif-gpsimgdirection discuter | Direction de l’image |
|
exif-gpsimgdirectionref discuter | Référence pour la direction de l’image |
|
exif-gpslatitude discuter | Latitude |
|
exif-gpslatitude-n discuter | Nord |
|
exif-gpslatitude-s discuter | Sud |
|
exif-gpslatituderef discuter | Référence pour la latitude |
|
exif-gpslongitude discuter | Longitude |
|
exif-gpslongitude-e discuter | Est |
|
exif-gpslongitude-w discuter | Ouest |
|
exif-gpslongituderef discuter | Référence pour la longitude |
|
exif-gpsmapdatum discuter | Système géodésique utilisé |
|
exif-gpsmeasuremode discuter | Mode de mesure |
|
exif-gpsmeasuremode-2 discuter | Mesure à 2 dimensions |
|
exif-gpsmeasuremode-3 discuter | Mesure à 3 dimensions |
|
exif-gpsprocessingmethod discuter | Nom de la méthode de traitement du GPS |
|
exif-gpssatellites discuter | Satellites utilisés pour la mesure |
|
exif-gpsspeed discuter | Vitesse du récepteur GPS |
|
exif-gpsspeed-k discuter | Kilomètre par heure |
|
exif-gpsspeed-m discuter | Mile par heure |
|
exif-gpsspeed-n discuter | Nœud |
|
exif-gpsspeedref discuter | Unité de vitesse du récepteur GPS |
|
exif-gpsstatus discuter | État du récepteur |
|
exif-gpsstatus-a discuter | Mesure en cours |
|
exif-gpsstatus-v discuter | Interopérabilité de la mesure |
|
exif-gpstimestamp discuter | Heure GPS (horloge atomique) |
|
exif-gpstrack discuter | Direction du mouvement |
|
exif-gpstrackref discuter | Référence pour la direction du mouvement |
|
exif-gpsversionid discuter | Version de la balise GPS |
|
exif-imagedescription discuter | Description de l’image |
|
exif-imagelength discuter | Hauteur |
|
exif-imageuniqueid discuter | Identifiant unique de l’image |
|
exif-imagewidth discuter | Largeur |
|
exif-isospeedratings discuter | Sensibilité ISO |
|
exif-jpeginterchangeformat discuter | Position du SOI JPEG |
|
exif-jpeginterchangeformatlength discuter | Taille en octets des données JPEG |
|
exif-lightsource discuter | Source de lumière |
|
exif-lightsource-0 discuter | Inconnue |
|
exif-lightsource-1 discuter | Lumière du jour |
|
exif-lightsource-10 discuter | Temps nuageux |
|
exif-lightsource-11 discuter | Ombre |
|
exif-lightsource-12 discuter | Éclairage fluorescent « lumière du jour » (D 5700 – 7100 K) |
|
exif-lightsource-13 discuter | Éclairage fluorescent blanc « jour » (N 4600 – 5400 K) |
|
exif-lightsource-14 discuter | Éclairage fluorescent blanc « froid » (W 3900 – 4500 K) |
|
exif-lightsource-15 discuter | Éclairage fluorescent blanc (WW 3200 – 3700 K) |
|
exif-lightsource-17 discuter | Lumière standard A |
|
exif-lightsource-18 discuter | Lumière standard B |
|
exif-lightsource-19 discuter | Lumière standard C |
|
exif-lightsource-2 discuter | Fluorescent |
|
exif-lightsource-20 discuter | D55 |
|
exif-lightsource-21 discuter | D65 |
|
exif-lightsource-22 discuter | D75 |
|
exif-lightsource-23 discuter | D50 |
|
exif-lightsource-24 discuter | Tungstène ISO de studio |
|
exif-lightsource-255 discuter | Autre source de lumière |
|
exif-lightsource-3 discuter | Tungstène (lumière incandescente) |
|
exif-lightsource-4 discuter | Flash |
|
exif-lightsource-9 discuter | Temps clair |
|
exif-make discuter | Fabricant de l’appareil |
|
exif-make-value discuter | $1 |
|
exif-makernote discuter | Notes du fabricant |
|
exif-maxaperturevalue discuter | Ouverture maximale |
|
exif-meteringmode discuter | Mode de mesure |
|
exif-meteringmode-0 discuter | Inconnu |
|
exif-meteringmode-1 discuter | Moyenne |
|
exif-meteringmode-2 discuter | Moyenne pondérée au centre |
|
exif-meteringmode-255 discuter | Autre |
|
exif-meteringmode-3 discuter | Spot |
|
exif-meteringmode-4 discuter | Multi-spot |
|
exif-meteringmode-5 discuter | Modèle |
|
exif-meteringmode-6 discuter | Partielle |
|
exif-model discuter | Modèle de l’appareil |
|
exif-model-value discuter | $1 |
|
exif-oecf discuter | Fonction de conversion opto-électronique |
|
exif-orientation discuter | Orientation |
|
exif-orientation-1 discuter | Normale |
|
exif-orientation-2 discuter | Inversée horizontalement |
|
exif-orientation-3 discuter | Tournée de 180° |
|
exif-orientation-4 discuter | Inversée verticalement |
|
exif-orientation-5 discuter | Tournée de 90° dans le sens antihoraire et inversée verticalement |
|
exif-orientation-6 discuter | Tournée de 90° dans le sens horaire |
|
exif-orientation-7 discuter | Tournée de 90° dans le sens horaire et inversée verticalement |
|
exif-orientation-8 discuter | Tournée de 90° dans le sens antihoraire |
|
exif-photometricinterpretation discuter | Modèle colorimétrique |
|
exif-photometricinterpretation-2 discuter | RGB |
|
exif-photometricinterpretation-6 discuter | YCbCr |
|
exif-pixelxdimension discuter | Largeur d’image valide |
|
exif-pixelydimension discuter | Hauteur d’image valide |
|
exif-planarconfiguration discuter | Arrangement des données |
|
exif-planarconfiguration-1 discuter | Données contiguës |
|
exif-planarconfiguration-2 discuter | Données séparées |
|
exif-primarychromaticities discuter | Chromaticité des primaires |
|
exif-referenceblackwhite discuter | Valeurs de référence noir et blanc |
|
exif-relatedsoundfile discuter | Fichier audio associé |
|
exif-resolutionunit discuter | Unité de résolution |
|
exif-rowsperstrip discuter | Nombre de lignes par bande |
|
exif-samplesperpixel discuter | Composantes par pixel |
|
exif-saturation discuter | Saturation |
|
exif-saturation-0 discuter | Normale |
|
exif-saturation-1 discuter | Faible |
|
exif-saturation-2 discuter | Élevée |
|
exif-scenecapturetype discuter | Type de capture de la scène |
|
exif-scenecapturetype-0 discuter | Standard |
|
exif-scenecapturetype-1 discuter | Paysage |
|
exif-scenecapturetype-2 discuter | Portrait |
|
exif-scenecapturetype-3 discuter | Scène de nuit |
|
exif-scenetype discuter | Type de scène |
|
exif-scenetype-1 discuter | Image directement photographiée |
|
exif-sensingmethod discuter | Type de capteur |
|
exif-sensingmethod-1 discuter | Non défini |
|
exif-sensingmethod-2 discuter | Capteur de couleur à une puce |
|
exif-sensingmethod-3 discuter | Capteur de couleur à deux puces |
|
exif-sensingmethod-4 discuter | Capteur de couleur à trois puces |
|
exif-sensingmethod-5 discuter | Capteur de couleur séquentiel |
|
exif-sensingmethod-7 discuter | Capteur trilinéaire |
|
exif-sensingmethod-8 discuter | Capteur de couleur linéaire séquentiel |
|
exif-sharpness discuter | Netteté |
|
exif-sharpness-0 discuter | Normale |
|
exif-sharpness-1 discuter | Douce |
|
exif-sharpness-2 discuter | Dure |
|
exif-shutterspeedvalue discuter | Vitesse d’obturation |
|
exif-software discuter | Logiciel utilisé |
|
exif-software-value discuter | $1 |
|
exif-spatialfrequencyresponse discuter | Fréquence spatiale |
|
exif-spectralsensitivity discuter | Sensitivité spectrale |
|
exif-stripbytecounts discuter | Taille en octets par bande |
|
exif-stripoffsets discuter | Emplacement des données de l’image |
|
exif-subjectarea discuter | Emplacement du sujet |
|
exif-subjectdistance discuter | Distance du sujet |
|
exif-subjectdistance-value discuter | $1 mètre{{PLURAL:$1||s}} |
|
exif-subjectdistancerange discuter | Distance du sujet |
|
exif-subjectdistancerange-0 discuter | Inconnue |
|
exif-subjectdistancerange-1 discuter | Macro |
|
exif-subjectdistancerange-2 discuter | Rapproché |
|
exif-subjectdistancerange-3 discuter | Distant |
|
exif-subjectlocation discuter | Localisation du sujet |
|
exif-subsectime discuter | Date de modification |
|
exif-subsectimedigitized discuter | Date de la numérisation |
|
exif-subsectimeoriginal discuter | Date de la prise originelle |
|
exif-transferfunction discuter | Fonction de transfert |
|
exif-unknowndate discuter | Date inconnue |
|
exif-usercomment discuter | Commentaires de l’utilisateur |
|
exif-whitebalance discuter | Balance des blancs |
|
exif-whitebalance-0 discuter | Automatique |
|
exif-whitebalance-1 discuter | Manuelle |
|
exif-whitepoint discuter | Chromaticité du point blanc |
|
exif-xresolution discuter | Résolution horizontale |
|
exif-xyresolution-c discuter | $1 dpc |
|
exif-xyresolution-i discuter | $1 dpi |
|
exif-ycbcrcoefficients discuter | Coefficients YCbCr |
|
exif-ycbcrpositioning discuter | Positionnement YCbCr |
|
exif-ycbcrsubsampling discuter | Taux de sous-échantillonnage de Y à C |
|
exif-yresolution discuter | Résolution verticale |
|
expensive-parserfunction-category discuter | Pages avec trop d’appels dispendieux de fonctions parseurs |
|
expensive-parserfunction-warning discuter | Attention : cette page contient de trop nombreux appels à des fonctions coûteuses du parseur. Il devrait y avoir moins de $2 appel{{PLURAL:$2||s}}, alors qu’il y en a maintenant $1. |
|
expiringblock discuter | expire le $1 |
|
explainconflict discuter | Cette page a été sauvegardée après que vous avez commencé à la modifier. La zone de modification supérieure contient le texte tel qu’il est enregistré actuellement dans la base de données. Vos modifications apparaissent dans la zone de modification inférieure. Vous allez devoir fusionner vos modifications dans le texte existant. '''Seul''' le texte de la zone supérieure sera sauvegardé quand vous cliquerez sur « Publier ». |
|
export discuter | Exporter des pages |
|
export-addcat discuter | Ajouter |
|
export-addcattext discuter | Ajouter les pages de la catégorie : |
|
export-addns discuter | Ajouter |
|
export-addnstext discuter | Ajouter des pages dans l’espace de noms : |
|
export-download discuter | Enregistrer dans un fichier |
|
export-pagelinks discuter | Inclure les pages liées à une profondeur de : |
|
export-submit discuter | Exporter |
|
export-templates discuter | Inclure les modèles |
|
exportcuronly discuter | Exporter uniquement la version courante, sans l’historique complet |
|
exportnohistory discuter | ---- '''Note :''' l’exportation de l’historique complet des pages à l’aide de ce formulaire a été désactivée pour des raisons de performance. |
|
exporttext discuter | Vous pouvez exporter en XML le texte et l’historique d’une page ou d’un ensemble de pages ; le résultat peut alors être importé dans un autre wiki utilisant le logiciel MediaWiki via la [[Special:Import|page d’importation]]. Pour exporter des pages, entrez leurs titres dans la boîte de texte ci-dessous, à raison d’un titre par ligne. Sélectionnez si vous désirez ou non la version actuelle avec toutes les anciennes versions, avec les lignes de l’historique de la page, ou simplement la page actuelle avec des informations sur la dernière modification. Dans ce dernier cas vous pouvez aussi utiliser un lien, tel que [[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] pour la page [[{{MediaWiki:Mainpage}}]]. |
|
external_image_whitelist discuter | #Laisser cette ligne exactement telle quelle<pre> #Indiquer les fragments d’expression régulières (juste la partie indiquée entre les //) ci-dessous #Ils correspondront avec les URLs des images (très liées) externes #Celles qui correspondent s’afficheront comme des images, sinon seul un lien vers l’image sera affiché #Les lignes commençant par un # seront considérées comme des commentaires #Cette liste n’est pas sensible à la casse #Mettez tous les fragments d’expressions régulières au dessus de cette ligne. Laissez cette dernière ligne telle quelle.</pre> |
|
externaldberror discuter | Une erreur s’est produite avec la base de données d’authentification externe, ou bien vous n’êtes pas autorisé{{GENDER:||e|(e)}} à mettre à jour votre compte externe. |
|
extlink_sample discuter | http://www.example.com titre du lien |
|
extlink_tip discuter | Lien externe (n’oubliez pas le préfixe http://) |
|
faq discuter | FAQ |
|
faqpage discuter | Project:FAQ |
|
feb discuter | fév |
|
february discuter | février |
|
february-gen discuter | février |
|
feed-atom discuter | Atom |
|
feed-invalid discuter | Type de flux invalide. |
|
feed-rss discuter | RSS |
|
feed-unavailable discuter | Les flux de syndication ne sont pas disponibles |
|
feedlinks discuter | Flux |
|
fewestrevisions discuter | Pages les moins modifiées |
|
fewestrevisions-summary discuter | |
|
file-deleted-duplicate discuter | Un fichier identique à celui-ci ([[$1]]) a déjà été supprimé. Vous devriez vérifier le journal des suppressions de ce fichier avant de le téléverser à nouveau. |
|
file-exists-duplicate discuter | Ce fichier est un doublon {{PLURAL:$1|du fichier suivant|des fichiers suivants}} : |
|
file-info discuter | Taille du fichier : $1, type MIME : $2 |
|
file-info-size discuter | ($1 × $2 pixels, taille du fichier : $3, type MIME : $4) |
|
file-nohires discuter | <small>Pas de plus haute résolution disponible.</small> |
|
file-thumbnail-no discuter | Le nom du fichier commence par '''<tt>$1</tt>'''. Il est possible qu’il s’agisse d’une version réduite ''(vignette)''. Si vous disposez du fichier en haute résolution, importez-le, sinon veuillez modifier son nom. |
|
filecopyerror discuter | Impossible de copier le fichier « $1 » vers « $2 ». |
|
filedelete discuter | Supprimer $1 |
|
filedelete-archive-read-only discuter | Le dossier d’archivage « $1 » n’est pas modifiable par le serveur. |
|
filedelete-backlink discuter | ← $1 |
|
filedelete-comment discuter | Motif de suppression : |
|
filedelete-current-unregistered discuter | Le fichier spécifié « $1 » n’est pas dans la base de données. |
|
filedelete-edit-reasonlist discuter | Modifier les motifs fréquents de suppression |
|
filedelete-intro discuter | Vous êtes sur le point de supprimer '''[[Media:$1|$1]]''' ainsi que tout son historique. |
|
filedelete-intro-old discuter | Vous êtes en train d’effacer la version de '''[[Media:$1|$1]]''' du [$4 $2 à $3]. |
|
filedelete-legend discuter | Supprimer le fichier |
|
filedelete-missing discuter | Le fichier « $1 » ne peut pas être supprimé parce qu’il n’existe pas. |
|
filedelete-nofile discuter | '''$1''' n’existe pas. |
|
filedelete-nofile-old discuter | Il n’existe aucune version archivée de '''$1''' avec les attributs indiqués. |
|
filedelete-old-unregistered discuter | La version du fichier spécifiée « $1 » n’est pas dans la base de données. |
|
filedelete-otherreason discuter | Motif autre / supplémentaire : |
|
filedelete-reason-dropdown discuter | * Motifs fréquents de suppression de fichiers ** Violation du droit d’auteur ** Fichier dupliqué |
|
filedelete-reason-otherlist discuter | Autre motif |
|
filedelete-submit discuter | Supprimer |
|
filedelete-success discuter | '''$1''' a été supprimé. |
|
filedelete-success-old discuter | La version de '''[[Media:$1|$1]]''' du $2 à $3 a été supprimée. |
|
filedeleteerror discuter | Impossible de supprimer le fichier « $1 ». |
|
filedeleteerror-long discuter | Des erreurs ont été rencontrées lors de la suppression du fichier : $1 |
|
filedeleteerror-short discuter | Erreur lors de la suppression du fichier : $1 |
|
filedesc discuter | Description |
|
fileduplicatesearch discuter | Recherche des copies de fichiers identiques |
|
fileduplicatesearch-filename discuter | Nom du fichier : |
|
fileduplicatesearch-info discuter | $1 × $2 pixels<br />Taille du fichier : $3<br />Type MIME : $4 |
|
fileduplicatesearch-legend discuter | Recherche d’une copie identique |
|
fileduplicatesearch-result-1 discuter | Le fichier « $1 » n’a aucune copie identique. |
|
fileduplicatesearch-result-n discuter | Le fichier « $1 » a $2 {{PLURAL:$2|copie identique|copies identiques}}. |
|
fileduplicatesearch-submit discuter | Rechercher |
|
fileduplicatesearch-summary discuter | Recherche des copies de fichiers identiques d’après leur empreinte de hachage. Entrez le nom du fichier sans le préfixe « {{ns:file}}: ». |
|
fileexists discuter | Un fichier avec ce nom existe déjà. Merci de vérifier '''<tt>$1</tt>'''. Êtes-vous certain de vouloir modifier ce fichier ? |
|
fileexists-extension discuter | Un fichier avec un nom similaire existe déjà :<br /> Nom du fichier à importer : '''<tt>$1</tt>'''<br /> Nom du fichier existant : '''<tt>$2</tt>'''<br /> La seule différence est la casse (majuscules / minuscules) de l’extension. Veuillez vérifier que le fichier est différent et changer son nom. |
|
fileexists-forbidden discuter | Un fichier avec ce nom existe déjà et ne peut pas être écrasé. Si vous voulez toujours téléverser votre fichier, merci de retourner en arrière et d’utiliser un nouveau nom. [[File:$1|thumb|center|$1]] |
|
fileexists-shared-forbidden discuter | Un fichier portant ce nom existe déjà dans le dépôt de fichiers partagé. Si vous voulez toujours téléverser votre fichier, veuillez revenir en arrière et utiliser un autre nom. [[File:$1|thumb|center|$1]] |
|
fileexists-thumb discuter | <center>'''Fichier existant'''</center> |
|
fileexists-thumbnail-yes discuter | Le fichier semble être une image en taille réduite ''(vignette)''. Veuillez vérifier le fichier '''<tt>$1</tt>'''.<br /> Si le fichier vérifié est la même image (dans une meilleure résolution), il n’y a pas besoin d’importer une version réduite. |
|
fileexistserror discuter | Impossible d’écrire dans le dossier « $1 » : le fichier existe |
|
filehist discuter | Historique du fichier |
|
filehist-comment discuter | Commentaire |
|
filehist-current discuter | actuel |
|
filehist-datetime discuter | Date et heure |
|
filehist-deleteall discuter | supprimer tout |
|
filehist-deleteone discuter | supprimer |
|
filehist-dimensions discuter | Dimensions |
|
filehist-filesize discuter | Taille du fichier |
|
filehist-help discuter | Cliquer sur une date et heure pour voir le fichier tel qu’il était à ce moment-là. |
|
filehist-nothumb discuter | Pas de miniature |
|
filehist-revert discuter | rétablir |
|
filehist-thumb discuter | Miniature |
|
filehist-thumbtext discuter | Vignette pour la version du $1 |
|
filehist-user discuter | Utilisateur |
|
filemissing discuter | Fichier manquant |
|
filename discuter | Nom du fichier |
|
filename-bad-prefix discuter | Le nom du fichier que vous téléversez commence par '''« $1 »''' qui est typiquement un nom attribué automatiquement par les appareils photo numériques. Veuillez choisir un nom de fichier descriptif. |
|
filename-prefix-blacklist discuter | #<!-- laisser cette ligne telle quelle --><pre> # La syntaxe est la suivante : # * Tout ce qui figure entre un caractère "#" jusqu’à la fin de la ligne est un commentaire ; # * Toute ligne non vide est un préfixe typique de nom de fichier assigné automatiquement par les appareils numériques : CIMG # Casio DSC_ # Nikon DSCF # Fuji DSCN # Nikon DUW # certains téléphones mobiles IMG # générique JD # Jenoptik MGP # Pentax PICT # divers #</pre><!-- laisser cette ligne telle quelle --> |
|
filenotfound discuter | Impossible de trouver le fichier « $1 ». |
|
filepageexists discuter | La page de description pour ce fichier a déjà été créée ici '''<tt>$1</tt>''', mais aucun fichier de ce nom n’existe actuellement. Le résumé que vous allez écrire ne remplacera pas le texte précédent. Pour ce faire vous devrez modifier manuellement la page. |
|
filepath discuter | Chemin d’accès du fichier |
|
filepath-page discuter | Fichier : |
|
filepath-submit discuter | Chemin d’accès |
|
filepath-summary discuter | Cette page spéciale retourne le chemin d’accès complet d’un fichier. Les images sont montrées dans leur pleine résolution, les autres fichiers sont chargés et démarrés directement avec leur programme associé. Entrez le nom du fichier sans le préfixe « {{ns:file}}: » |
|
filerenameerror discuter | Impossible de renommer le fichier « $1 » en « $2 ». |
|
filereuploadsummary discuter | Modifications du fichier : |
|
filerevert discuter | Rétablir $1 |
|
filerevert-backlink discuter | ← $1 |
|
filerevert-badversion discuter | Il n’y a pas localement de version antérieure du fichier qui porte la date indiquée. |
|
filerevert-comment discuter | Commentaire : |
|
filerevert-defaultcomment discuter | Version du $1 à $2 rétablie |
|
filerevert-intro discuter | Vous êtes sur le point de rétablir le fichier '''[[Media:$1|$1]]''' à la [$4 version du $2 à $3]. |
|
filerevert-legend discuter | Rétablir le fichier |
|
filerevert-submit discuter | Rétablir |
|
filerevert-success discuter | '''[[Media:$1|$1]]''' a été rétabli à [$4 la version du $2 à $3]. |
|
files discuter | Fichiers |
|
filesource discuter | Source : |
|
filestatus discuter | Statut des droits d’auteur : |
|
filetype-bad-ie-mime discuter | Le fichier ne peut pas être téléversé parce qu’il serait détecté comme « $1 » par Internet Explorer, ce qui correspond à un type de fichier interdit car potentiellement dangereux. |
|
filetype-badmime discuter | Les fichiers du type MIME « $1 » ne peuvent pas être téléversés. |
|
filetype-banned-type discuter | '''« .$1 »''' n’est pas une extension de fichier autorisée. {{PLURAL:$3|Le type de fichiers accepté est|Les types de fichiers acceptés sont}} $2. |
|
filetype-missing discuter | Le fichier n’a aucune extension (comme « .jpg » par exemple). |
|
filetype-unwanted-type discuter | '''« .$1 »''' est un format de fichier non désiré. {{PLURAL:$3|Le type de fichier préconisé est|Les types de fichiers préconisés sont}} $2. |
|
fileuploadsummary discuter | Description : |
|
filewasdeleted discuter | Un fichier avec ce nom a déjà été téléversé, puis supprimé. Vous devriez vérifier le $1 avant de procéder à un nouveau téléversement. |
|
fix-double-redirects discuter | Mettre à jour les redirections pointant vers le titre original |
|
formerror discuter | Erreur : Impossible de soumettre le formulaire |
|
fri discuter | ven |
|
friday discuter | vendredi |
|
gender-female discuter | Féminin |
|
gender-male discuter | Masculin |
|
gender-unknown discuter | Non renseigné |
|
go discuter | Consulter |
|
googlesearch discuter | <form method="get" action="http://www.google.com/search" id="googlesearch"> <input type="hidden" name="domains" value="{{SERVER}}" /> <input type="hidden" name="num" value="50" /> <input type="hidden" name="ie" value="$2" /> <input type="hidden" name="oe" value="$2" /> <input type="text" name="q" size="31" maxlength="255" value="$1" /> <input type="submit" name="btnG" value="$3" /> <div> <input type="radio" name="sitesearch" id="gwiki" value="{{SERVER}}" checked="checked" /><label for="gwiki">{{SITENAME}}</label> <input type="radio" name="sitesearch" id="gWWW" value="" /><label for="gWWW">WWW</label> </div> </form> |
|
gotaccount discuter | Vous avez déjà un compte ? $1. |
|
gotaccountlink discuter | Connectez-vous |
|
group discuter | Groupe : |
|
group-all discuter | Tous |
|
group-autoconfirmed discuter | Utilisateurs enregistrés |
|
group-autoconfirmed-member discuter | Utilisateur enregistré |
|
group-bot discuter | Bots |
|
group-bot-member discuter | Bot |
|
group-bureaucrat discuter | Bureaucrates |
|
group-bureaucrat-member discuter | Bureaucrate |
|
group-suppress discuter | Superviseurs |
|
group-suppress-member discuter | Superviseur |
|
group-sysop discuter | Administrateurs |
|
group-sysop-member discuter | Administrateur |
|
group-user discuter | Utilisateurs |
|
group-user-member discuter | Utilisateur |
|
grouppage-autoconfirmed discuter | {{ns:project}}:Utilisateurs enregistrés |
|
grouppage-bot discuter | {{ns:project}}:Bots |
|
grouppage-bureaucrat discuter | {{ns:project}}:Bureaucrates |
|
grouppage-suppress discuter | {{ns:project}}:Superviseurs |
|
grouppage-sysop discuter | {{ns:project}}:Administrateurs |
|
grouppage-user discuter | {{ns:project}}:Utilisateurs |
|
guesstimezone discuter | Utiliser la valeur du navigateur |
|
handheld.css discuter | /* Le CSS placé ici affectera les appareils mobiles en fonction de l'habillage configuré $wgHandheldStyle */ |
|
headline_sample discuter | Texte de sous-titre |
|
headline_tip discuter | Sous-titre niveau 2 |
|
hebrew-calendar-m1 discuter | Tishrei |
|
hebrew-calendar-m1-gen discuter | Tishrei |
|
hebrew-calendar-m10 discuter | Tamuz |
|
hebrew-calendar-m10-gen discuter | Tamuz |
|
hebrew-calendar-m11 discuter | Av |
|
hebrew-calendar-m11-gen discuter | Av |
|
hebrew-calendar-m12 discuter | Elul |
|
hebrew-calendar-m12-gen discuter | Elul |
|
hebrew-calendar-m2 discuter | Cheshvan |
|
hebrew-calendar-m2-gen discuter | Cheshvan |
|
hebrew-calendar-m3 discuter | Kislev |
|
hebrew-calendar-m3-gen discuter | Kislev |
|
hebrew-calendar-m4 discuter | Tevet |
|
hebrew-calendar-m4-gen discuter | Tevet |
|
hebrew-calendar-m5 discuter | Shevat |
|
hebrew-calendar-m5-gen discuter | Shevat |
|
hebrew-calendar-m6 discuter | Adar |
|
hebrew-calendar-m6-gen discuter | Adar |
|
hebrew-calendar-m6a discuter | Adar I |
|
hebrew-calendar-m6a-gen discuter | Adar I |
|
hebrew-calendar-m6b discuter | Adar II |
|
hebrew-calendar-m6b-gen discuter | Adar II |
|
hebrew-calendar-m7 discuter | Nisan |
|
hebrew-calendar-m7-gen discuter | Nisan |
|
hebrew-calendar-m8 discuter | Iyar |
|
hebrew-calendar-m8-gen discuter | Iyar |
|
hebrew-calendar-m9 discuter | Sivan |
|
hebrew-calendar-m9-gen discuter | Sivan |
|
help discuter | Aide |
|
helppage discuter | Help:Accueil |
|
hidden-categories discuter | {{PLURAL:$1|Catégorie cachée|Catégories cachées}} |
|
hidden-category-category discuter | Catégories cachées |
|
hiddencategories discuter | {{PLURAL:$1|Catégorie cachée|Catégories cachées}} dont cette page fait partie : |
|
hide discuter | masquer |
|
hidetoc discuter | masquer |
|
hijri-calendar-m1 discuter | Muharram |
|
hijri-calendar-m10 discuter | Shawwal |
|
hijri-calendar-m11 discuter | Dhu al-Qi’dah |
|
hijri-calendar-m12 discuter | Dhu al-Hijjah |
|
hijri-calendar-m2 discuter | Safar |
|
hijri-calendar-m3 discuter | Rabi’ al-awwal |
|
hijri-calendar-m4 discuter | Rabi’ al-thani |
|
hijri-calendar-m5 discuter | Jumada al-awwal |
|
hijri-calendar-m6 discuter | Jumada al-thani |
|
hijri-calendar-m7 discuter | Rajab |
|
hijri-calendar-m8 discuter | Sha’aban |
|
hijri-calendar-m9 discuter | Ramadan |
|
hist discuter | hist |
|
histfirst discuter | toute première |
|
histlast discuter | toute dernière |
|
histlegend discuter | Légende : ({{MediaWiki:Cur}}) = différence avec la version actuelle, ({{MediaWiki:Last}}) = différence avec la version précédente, <b>m</b> = modification mineure |
|
history discuter | Historique de la page |
|
history-feed-description discuter | Historique pour cette page sur le wiki |
|
history-feed-empty discuter | La page demandée n’existe pas. Elle a peut-être été effacée ou renommée. Essayez de [[Special:Search|rechercher sur le wiki]] pour trouver des pages en rapport. |
|
history-feed-item-nocomment discuter | $1 le $2 |
|
history-feed-title discuter | Historique des versions |
|
history-fieldset-title discuter | Naviguer dans l’historique |
|
history-title discuter | Historique des versions de « $1 » |
|
history_copyright discuter | - |
|
history_short discuter | Historique |
|
historyempty discuter | (vide) |
|
historysize discuter | ($1 octet{{PLURAL:$1||s}}) |
|
historywarning discuter | Attention, la page que vous êtes sur le point de supprimer a un historique : |
|
hours-abbrev discuter | h |
|
hr_tip discuter | Ligne horizontale (ne pas en abuser) |
|
ignorewarning discuter | Ignorer l’avertissement et sauvegarder le fichier. |
|
ignorewarnings discuter | Ignorer les avertissements |
|
illegalfilename discuter | Le nom de fichier « $1 » contient des caractères interdits dans les titres de pages. Merci de le renommer et de le téléverser à nouveau. |
|
ilsubmit discuter | Rechercher |
|
image_sample discuter | Exemple.jpg |
|
image_tip discuter | Fichier inséré |
|
imageinvalidfilename discuter | Le nom du fichier cible est incorrect |
|
imagelinks discuter | Utilisations du fichier |
|
imagelistall discuter | toutes |
|
imagelisttext discuter | Voici une liste de '''$1''' fichier{{PLURAL:$1||s}} classée $2. |
|
imagemaxsize discuter | Format maximal des images :<br />''(pour les pages de description d’images)'' |
|
imagenocrossnamespace discuter | Impossible de renommer un fichier vers un espace de noms autre que fichier. |
|
imagepage discuter | Voir la page du fichier |
|
imagetypemismatch discuter | La nouvelle extension de ce fichier ne correspond pas à son type. |
|
imgfile discuter | fichier |
|
imgmultigo discuter | Accéder ! |
|
imgmultigoto discuter | Aller à la page $1 |
|
imgmultipagenext discuter | page suivante → |
|
imgmultipageprev discuter | ← page précédente |
|
immobile-source-namespace discuter | Vous ne pouvez pas renommer les pages dans l’espace de noms « $1 » |
|
immobile-source-page discuter | Cette page n’est pas renommable. |
|
immobile-target-namespace discuter | Vous ne pouvez pas renommer des pages vers l’espace de noms « $1 » |
|
immobile-target-namespace-iw discuter | Les liens interwikis ne sont pas une cible valide pour les renommages. |
|
immobile-target-page discuter | Il n’est pas possible de renommer la page vers ce titre. |
|
import discuter | Importer des pages |
|
import-comment discuter | Commentaire : |
|
import-interwiki-history discuter | Copier toutes les versions de l’historique de cette page |
|
import-interwiki-namespace discuter | Espace de noms de destination : |
|
import-interwiki-source discuter | Wiki et page sources : |
|
import-interwiki-submit discuter | Importer |
|
import-interwiki-templates discuter | Inclure tous les modèles |
|
import-interwiki-text discuter | Sélectionnez un wiki et un titre de page à importer. Les dates des versions et les noms des contributeurs seront préservés. Toutes les actions d’importation inter-wiki sont consignées dans l’[[Special:Log/import|historique des importations]]. |
|
import-invalid-interwiki discuter | Impossible d’importer depuis le wiki spécifié. |
|
import-logentry-interwiki discuter | a importé [[$1]] par transwiki |
|
import-logentry-interwiki-detail discuter | $1 version{{PLURAL:$1||s}} depuis $2 |
|
import-logentry-upload discuter | a importé [[$1]] par téléversement de fichier |
|
import-logentry-upload-detail discuter | $1 version{{PLURAL:$1||s}} |
|
import-noarticle discuter | Aucune page à importer ! |
|
import-nonewrevisions discuter | Toutes les versions ont été importées auparavant. |
|
import-parse-failure discuter | Échec lors de l’analyse du XML à importer |
|
import-revision-count discuter | $1 version{{PLURAL:$1||s}} |
|
import-token-mismatch discuter | Perte des données de session. Veuillez réessayez. |
|
import-upload discuter | Téléversement de données XML |
|
import-upload-filename discuter | Nom du fichier : |
|
importbadinterwiki discuter | Mauvais lien inter-wiki |
|
importcantopen discuter | Impossible d’ouvrir le fichier à importer |
|
importfailed discuter | Échec de l’importation : <nowiki>$1</nowiki> |
|
importhistoryconflict discuter | Un conflit a été détecté dans l’historique des versions (cette page a pu être importée auparavant). |
|
importinterwiki discuter | Importation inter-wiki |
|
importlogpage discuter | Journal des importations |
|
importlogpagetext discuter | Importations administratives de pages avec leur historique de modifications depuis d’autres wikis. |
|
importnofile discuter | Aucun fichier d’importation n’a été téléversé. |
|
importnopages discuter | Aucune page à importer. |
|
importnosources discuter | Aucune source d’importation inter-wiki n’a été définie et les téléversements directs d’historiques sont désactivés. |
|
importnotext discuter | Vide ou sans texte |
|
importstart discuter | Importation des pages... |
|
importsuccess discuter | L’importation a réussi ! |
|
importtext discuter | Veuillez exporter le fichier depuis le wiki d’origine en utilisant son [[Special:Export|outil d’exportation]]. Sauvegardez-le sur votre disque dur puis téléversez-le ici. |
|
importunknownsource discuter | Type inconnu de la source à importer |
|
importuploaderrorpartial discuter | Le téléversement du fichier à importer a échoué. Son contenu n’a été transféré que partiellement. |
|
importuploaderrorsize discuter | Le téléversement du fichier à importer a échoué. Sa taille est supérieure au maximum autorisé pour les téléversements. |
|
importuploaderrortemp discuter | Le téléversement du fichier à importer a échoué. Un dossier temporaire est manquant. |
|
infiniteblock discuter | permanent |
|
info_short discuter | Informations |
|
infosubtitle discuter | Informations pour la page |
|
intentionallyblankpage discuter | Cette page est laissée intentionellement vide. |
|
internalerror discuter | Erreur interne |
|
internalerror_info discuter | Erreur interne : $1 |
|
intersection-desc discuter | Affiche une liste, à puces, des articles les plus récents dans une catégorie, ou à partir d’une combinaison de plusieurs catégories. |
|
intersection_noincludecats discuter | Error : vous devez inclure au moins une catégorie, ou préciser un nom d’espace ! |
|
intersection_noresults discuter | DynamicPageList : Aucun résultat ! |
|
intersection_toofewcats discuter | DynamicPageList : Pas assez de catégories ! |
|
intersection_toomanycats discuter | DynamicPageList : Trop de catégories ! |
|
invalidateemail discuter | Annuler la confirmation de l’adresse de courriel |
|
invalidemailaddress discuter | Cette adresse courriel ne peut pas être acceptée car elle semble avoir un format incorrect. Entrez une adresse bien formatée ou laissez ce champ vide. |
|
invert discuter | Inverser la sélection |
|
ip_range_invalid discuter | Plage IP incorrecte. |
|
ipaddress discuter | Adresse IP : |
|
ipadressorusername discuter | Adresse IP ou nom d’utilisateur : |
|
ipb-blocklist discuter | Voir les blocages existants |
|
ipb-blocklist-addr discuter | Blocages existants pour $1 |
|
ipb-blocklist-contribs discuter | Contributions pour $1 |
|
ipb-change-block discuter | Bloquer à nouveau cet utilisateur avec ces paramètres |
|
ipb-edit-dropdown discuter | Modifier les motifs de blocage par défaut |
|
ipb-needreblock discuter | == Déjà bloqué == $1 est déjà bloqué. Voulez-vous modifier les paramètres ? |
|
ipb-unblock discuter | Débloquer un compte utilisateur ou une adresse IP |
|
ipb-unblock-addr discuter | Débloquer $1 |
|
ipb_already_blocked discuter | « $1 » est déjà bloqué |
|
ipb_blocked_as_range discuter | Erreur : l’adresse IP $1 n’est pas bloquée directement et ne peut donc pas être débloquée. Elle fait cependant partie de la plage $2 qui, elle, peut être débloquée. |
|
ipb_cant_unblock discuter | Erreur : identifiant de blocage $1 non trouvé. Il est possible qu’un déblocage ait déjà été effectué. |
|
ipb_expiry_invalid discuter | Durée d’expiration incorrecte. |
|
ipb_expiry_temp discuter | Les blocages de noms d’utilisateurs cachés doivent être permanents. |
|
ipb_hide_invalid discuter | Impossible de supprimer ce compte ; il semble avoir trop de modifications. |
|
ipballowusertalk discuter | Permet à cet utilisateur de modifier sa propre page de discussion durant sa période de blocage |
|
ipbanononly discuter | Bloquer uniquement les utilisateurs anonymes |
|
ipbcreateaccount discuter | Empêcher la création de compte |
|
ipbemailban discuter | Empêcher l’utilisateur d’envoyer des courriels |
|
ipbenableautoblock discuter | Bloquer automatiquement la dernière adresse IP utilisée par l’utilisateur et toutes ses IPs ultérieures qu’il pourrait essayer |
|
ipbexpiry discuter | Durée avant expiration : |
|
ipbhidename discuter | Masquer le nom d’utilisateur des modifications et des listes |
|
ipblocklist discuter | Adresses IP et utilisateurs bloqués |
|
ipblocklist-empty discuter | La liste des adresses IP bloquées est actuellement vide. |
|
ipblocklist-legend discuter | Chercher un utilisateur bloqué |
|
ipblocklist-no-results discuter | L’adresse IP ou l’utilisateur demandé n’est pas bloqué. |
|
ipblocklist-sh-addressblocks discuter | $1 les blocages d’adresses IP uniques |
|
ipblocklist-sh-tempblocks discuter | $1 les blocages temporaires |
|
ipblocklist-sh-userblocks discuter | $1 les blocages de comptes |
|
ipblocklist-submit discuter | Rechercher |
|
ipblocklist-summary discuter | |
|
ipblocklist-username discuter | Nom de l’utilisateur ou adresse IP : |
|
ipboptions discuter | 2 heures:2 hours,1 jour:1 day,3 jours:3 days,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite |
|
ipbother discuter | Autre durée : |
|
ipbotheroption discuter | autre |
|
ipbotherreason discuter | Motif différent ou supplémentaire : |
|
ipbreason discuter | Motif : |
|
ipbreason-dropdown discuter | * Motifs de blocage les plus fréquents ** Insertion de fausses informations ** Suppression injustifiée de contenu des pages ** Insertion répétée de liens externes publicitaires (spam) ** Insertion de contenu sans aucun sens et de déchets dans les pages ** Tentative d’intimidation ou harcèlement ** Abus d’utilisation de comptes multiples ** Nom d’utilisateur inacceptable, injurieux ou diffamant |
|
ipbreasonotherlist discuter | Autre motif |
|
ipbsubmit discuter | Bloquer cet utilisateur |
|
ipbwatchuser discuter | Suivre les pages utilisateur et de discussion de cet utilisateur |
|
ipusubmit discuter | Supprimer ce blocage |
|
iranian-calendar-m1 discuter | Farvardin |
|
iranian-calendar-m10 discuter | Dey |
|
iranian-calendar-m11 discuter | Bahman |
|
iranian-calendar-m12 discuter | Esfand |
|
iranian-calendar-m2 discuter | Ordibehesht |
|
iranian-calendar-m3 discuter | Khordad |
|
iranian-calendar-m4 discuter | Tir |
|
iranian-calendar-m5 discuter | Mordad |
|
iranian-calendar-m6 discuter | Shahrivar |
|
iranian-calendar-m7 discuter | Mehr |
|
iranian-calendar-m8 discuter | Aban |
|
iranian-calendar-m9 discuter | Azar |
|
isimage discuter | fichier lié |
|
isredirect discuter | page de redirection |
|
istemplate discuter | inclusion |
|
italic_sample discuter | Texte italique |
|
italic_tip discuter | Texte italique |
|
iteminvalidname discuter | Problème avec l’élément « $1 » : le nom est invalide. |
|
jan discuter | jan |
|
january discuter | janvier |
|
january-gen discuter | janvier |
|
jul discuter | jul |
|
july discuter | juillet |
|
july-gen discuter | juillet |
|
jumpto discuter | Aller à : |
|
jumptonavigation discuter | Navigation |
|
jumptosearch discuter | rechercher |
|
jun discuter | jun |
|
june discuter | juin |
|
june-gen discuter | juin |
|
lag-warn-high discuter | En raison d’un retard important du serveur de base de données, les modifications datant de moins de $1 seconde{{PLURAL:$1||s}} peuvent ne pas apparaître dans cette liste. |
|
lag-warn-normal discuter | Les modifications datant de moins de $1 seconde{{PLURAL:$1||s}} peuvent ne pas apparaître dans cette liste. |
|
laggedslavemode discuter | Attention, cette page peut ne pas contenir les toutes dernières modifications effectuées |
|
large-file discuter | Les fichiers téléversés ne devraient pas être plus gros que $1 ; ce fichier fait $2. |
|
largefileserver discuter | La taille de ce fichier est supérieure au maximum autorisé. |
|
last discuter | diff |
|
lastmodifiedat discuter | Dernière modification de cette page le $1 à $2.<br /> |
|
lastmodifiedatby discuter | Cette page a été modifiée pour la dernière fois le $1 à $2 par $3. |
|
license discuter | Licence : |
|
license-nopreview discuter | (Prévisualisation non disponible) |
|
licenses discuter | - |
|
lineno discuter | Ligne $1 : |
|
link_sample discuter | Titre du lien |
|
link_tip discuter | Lien interne |
|
linkedimage_noimg discuter | LinkedImage: No image specified! e.g. 'img_src=Image:LinkedImage.png' |
|
linkedimage_nowikipage discuter | LinkedImage: No link target specified! e.g. 'wikipage=Main_page' |
|
linkprefix discuter | /^(.*?)([a-zA-Z\x80-\xff]+)$/sD |
|
linksearch discuter | Liens externes |
|
linksearch-error discuter | Les caractères jokers ne peuvent être utilisés qu’au début du nom de domaine de l’hôte. |
|
linksearch-line discuter | $1 est lié depuis $2 |
|
linksearch-ns discuter | Espace de noms : |
|
linksearch-ok discuter | Rechercher |
|
linksearch-pat discuter | Expression recherchée : |
|
linksearch-text discuter | Des caractères « jokers » peuvent être utilisés, par exemple <code>*.wikipedia.org</code>.<br /> Protocoles reconnus : <tt>$1</tt>. |
|
linkshere discuter | Les pages ci-dessous contiennent un lien vers '''[[:$1]]''' : |
|
linkstoimage discuter | {{PLURAL:$1|La page suivante utilise|Les $1 pages suivantes utilisent}} ce fichier : |
|
linkstoimage-more discuter | Plus {{PLURAL:$1|d’une page utilise|de $1 pages utilisent}} ce fichier. La liste suivante affiche seulement {{PLURAL:$1|la première page qui utilise|les $1 premières pages qui utilisent}} ce fichier. Une [[Special:WhatLinksHere/$2|liste complète]] est disponible. |
|
listfiles discuter | Liste de fichiers |
|
listfiles-summary discuter | Cette page spéciale permet de lister tous les fichiers téléversés. Par défaut, les derniers fichiers téléversés sont affichés en tête de liste. Cliquer sur un en-tête de colonne permet de changer l’ordre d’affichage. |
|
listfiles_count discuter | Versions |
|
listfiles_date discuter | Date |
|
listfiles_description discuter | Description |
|
listfiles_name discuter | Nom |
|
listfiles_search_for discuter | Rechercher un nom de média : |
|
listfiles_size discuter | Taille |
|
listfiles_user discuter | Utilisateur |
|
listgrouprights discuter | Droits des groupes d’utilisateurs |
|
listgrouprights-addgroup discuter | Ajouter des membres {{PLURAL:$2|au groupe|aux groupes}} : $1 |
|
listgrouprights-addgroup-all discuter | Ajouter des membres à tous les groupes |
|
listgrouprights-group discuter | Groupe |
|
listgrouprights-helppage discuter | Help:Droits des groupes |
|
listgrouprights-members discuter | (liste des membres) |
|
listgrouprights-removegroup discuter | Retirer des membres {{PLURAL:$2|du groupe|des groupes}} : $1 |
|
listgrouprights-removegroup-all discuter | Retirer des membres de tous les groupes |
|
listgrouprights-right-display discuter | $1 ($2) |
|
listgrouprights-rights discuter | Droits associés |
|
listgrouprights-summary discuter | Cette page contient une liste des groupes définis sur ce wiki ainsi que les droits d’accès qui leur sont associés. Des [[{{MediaWiki:Listgrouprights-helppage}}|informations additionnelles]] peuvent exister au sujet des droits individuels. |
|
listingcontinuesabbrev discuter | (suite) |
|
listredirects discuter | Liste des redirections |
|
listredirects-summary discuter | |
|
listusers discuter | Liste des utilisateurs |
|
listusers-creationsort discuter | Trier par date de création |
|
listusers-editsonly discuter | Ne montrer que les utilisateurs ayant au moins une contribution |
|
listusers-noresult discuter | Aucun utilisateur trouvé. Vérifiez aussi les variantes de casse. |
|
listusers-submit discuter | Lister |
|
listusers-summary discuter | |
|
listusersfrom discuter | Afficher les utilisateurs à partir de : |
|
livepreview-error discuter | Impossible de se connecter : $1 « $2 ». Essayez la prévisualisation normale. |
|
livepreview-failed discuter | L’aperçu rapide a échoué ! Essayez la prévisualisation normale. |
|
livepreview-loading discuter | Chargement... |
|
livepreview-ready discuter | Chargement... terminé ! |
|
localtime discuter | Heure locale : |
|
lockbtn discuter | Verrouiller la base de données |
|
lockconfirm discuter | Oui, je confirme que je souhaite verrouiller la base de données. |
|
lockdb discuter | Verrouiller la base de données |
|
lockdbsuccesssub discuter | Verrouillage de la base de données réussi |
|
lockdbsuccesstext discuter | La base de données a été verrouillée.<br /> N’oubliez pas de la [[Special:UnlockDB|déverrouiller]] lorsque vous aurez terminé votre opération de maintenance. |
|
lockdbtext discuter | Le verrouillage de la base de données empêchera tous les utilisateurs de modifier des pages, d’enregistrer leurs préférences, de modifier leur liste de suivi et d’effectuer toutes les autres opérations nécessitant des changements dans la base de données. Veuillez confirmer que c’est bien là ce que vous voulez faire et que vous déverrouillerez la base dès que votre opération de maintenance sera terminée. |
|
lockfilenotwritable discuter | Le fichier de verrouillage de la base de données n’est pas inscriptible. Pour bloquer ou débloquer la base de données, il doit être accessible par le serveur web. |
|
locknoconfirm discuter | Vous n’avez pas coché la case de confirmation. |
|
log discuter | Journaux d’opérations |
|
log-show-hide-patrol discuter | $1 l’historique des versions patrouillées |
|
log-title-wildcard discuter | Chercher parmi les titres commençant par ce texte |
|
logdelete-log-message discuter | $1 sur $2 évènement{{PLURAL:$2||s}} |
|
logdelete-logentry discuter | a modifié la visibilité de l’événement de [[$1]] |
|
logdelete-selected discuter | '''{{PLURAL:$1|Événement d’historique sélectionné|Événements d’historique sélectionnés}} :''' |
|
logdelete-success discuter | '''Visibilité du journal paramétrée avec succès.''' |
|
logempty discuter | Aucune opération correspondante dans les journaux. |
|
login discuter | Connexion |
|
login-throttled discuter | Vous avez tenté un trop grand nombre de mots de passe dernièrement sur ce compte. Veuillez attendre avant d’essayer à nouveau. |
|
loginend discuter | |
|
loginerror discuter | Erreur de connexion |
|
loginlanguagelabel discuter | Langue : $1 |
|
loginlanguagelinks discuter | * Deutsch|de * English|en * Esperanto|eo * Français|fr * Español|es * Italiano|it * Nederlands|nl |
|
loginpagetitle discuter | Connexion |
|
loginprompt discuter | Vous devez activer les témoins (''cookies'') pour vous connecter à {{SITENAME}}. |
|
loginreqlink discuter | connecter |
|
loginreqpagetext discuter | Vous devez vous $1 pour voir les autres pages. |
|
loginreqtitle discuter | Connexion nécessaire |
|
loginstart discuter | |
|
loginsuccess discuter | Vous êtes maintenant connecté{{GENDER:||e|(e)}} à {{SITENAME}} en tant que « $1 ». |
|
loginsuccesstitle discuter | Connexion réussie |
|
logout discuter | Se déconnecter |
|
logouttext discuter | '''Vous êtes à présent déconnecté{{GENDER:||e|(e)}}.'''<br /> Vous pouvez continuer à utiliser {{SITENAME}} de façon anonyme, [[Special:UserLogin|vous reconnecter]] sous le même nom ou un autre. Notez que certaines pages peuvent être encore affichées comme si vous étiez toujours connecté, jusqu’à ce que vous effaciez le cache de votre navigateur. |
|
logouttitle discuter | Déconnexion |
|
lonelypages discuter | Pages orphelines |
|
lonelypages-summary discuter | |
|
lonelypagestext discuter | Les pages suivantes ne sont pas liées ou incluses à partir d’autres pages du wiki. |
|
longpageerror discuter | '''ERREUR : Le texte que vous avez soumis fait $1 Kio, ce qui dépasse la limite fixée à $2 Kio. Le texte ne peut pas être sauvegardé.''' |
|
longpages discuter | Pages longues |
|
longpages-summary discuter | |
|
longpagewarning discuter | '''AVERTISSEMENT : cette page a une longueur de $1 Kio ; certains navigateurs Web gèrent mal la modification des pages approchant ou dépassant 32 Kio. Peut-être devriez-vous diviser la page en sections plus petites.''' |
|
mailerror discuter | Erreur lors de l’envoi du courriel : $1 |
|
mailmypassword discuter | Recevoir un nouveau mot de passe par courriel |
|
mailnologin discuter | Pas d’adresse d’expéditeur |
|
mailnologintext discuter | Vous devez être [[Special:UserLogin|identifié]] et avoir indiqué une adresse électronique valide dans vos [[Special:Preferences|préférences]] pour pouvoir envoyer des courriels à d’autres utilisateurs. |
|
mainpage discuter | Accueil |
|
mainpage-description discuter | Accueil |
|
mainpagedocfooter discuter | Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel. == Démarrer avec MediaWiki == * [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration] * [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki] * [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki] |
|
mainpagetext discuter | <big>'''MediaWiki a été installé avec succès.'''</big> |
|
maintenance discuter | Lancer les scripts de maintenance |
|
maintenance-backlink discuter | Retour à la sélection du script |
|
maintenance-bureaucrat discuter | Promouvoir l’utilisateur au statut de bureaucrate |
|
maintenance-changePassword discuter | Utiliser ce formulaire pour changer le mot de passe d’un utilisateur |
|
maintenance-changePassword-desc discuter | Changer le mot de passe d’un utilisateur |
|
maintenance-confirm discuter | Confirmer |
|
maintenance-createAndPromote discuter | Utiliser ce formulaire pour créer un nouvel utilisateur et le promouvoir administrateur. Cocher la case bureaucrate si vous désirez lui conférer aussi ce statut. |
|
maintenance-createAndPromote-desc discuter | Créer un utilisateur et promouvoir au statut d’administrateur |
|
maintenance-deleteBatch discuter | Utilisez ce formulaire pour supprimer en masse des pages. Indiquer une seule page par ligne. |
|
maintenance-deleteBatch-desc discuter | Suppression de pages en masse |
|
maintenance-deleteRevision discuter | Utilisez ce formulaire pour supprimer en masse des versions. Indiquez une seule version par ligne. |
|
maintenance-deleteRevision-desc discuter | Enlever des versions de la base de données |
|
maintenance-deleted discuter | SUPPRIMÉ |
|
maintenance-desc discuter | [[Special:Maintenance|Interface Web]] pour divers scripts de maintenance |
|
maintenance-error discuter | Erreur : $1 |
|
maintenance-eval discuter | Utilisez cette forme pour évaluer le code PHP dans un environnement MediaWiki. |
|
maintenance-eval-desc discuter | Évaluer un code PHP dans l'environnement MediaWiki |
|
maintenance-failed discuter | ÉCHEC |
|
maintenance-header discuter | Veuillez sélectionner, ci-dessous, un script à exécuter. Les descriptions sont à la suite de chacun de ceux-ci. |
|
maintenance-initEditCount discuter | |
|
maintenance-initEditCount-desc discuter | Recalculer les compteurs de modifications des utilisateurs |
|
maintenance-initStats discuter | Utilisez ce formulaire pour recalculer les statistiques du site, en indiquant, le cas échéant, si vous désirez le recalcul du nombre de visites par page. |
|
maintenance-initStats-desc discuter | Recalculer les statistiques du site |
|
maintenance-invalidname discuter | Nom d’utilisateur incorrect ! |
|
maintenance-invalidtitle discuter | Titre incorrect « $1 » ! |
|
maintenance-invalidtype discuter | Type incorrect ! |
|
maintenance-memc-absent discuter | absents : |
|
maintenance-memc-diffcache discuter | Cache des diff |
|
maintenance-memc-expired discuter | expirés : |
|
maintenance-memc-fake discuter | Vous utilisez ''FakeMemCachedClient''. Aucune statistique ne sera fournie. |
|
maintenance-memc-hits discuter | clics : |
|
maintenance-memc-imagecache discuter | Cache image |
|
maintenance-memc-invalid discuter | incorrects : |
|
maintenance-memc-misses discuter | perdus : |
|
maintenance-memc-parsercache discuter | Cache parseur |
|
maintenance-memc-requests discuter | Requêtes |
|
maintenance-memc-stub discuter | seuil de départ : |
|
maintenance-memc-total discuter | total : |
|
maintenance-memc-uncacheable discuter | hors cache : |
|
maintenance-memc-updates discuter | mis à jour : |
|
maintenance-memc-withoutsession discuter | sans la session : |
|
maintenance-memc-withsession discuter | avec la session : |
|
maintenance-move discuter | Déplacement de $1 vers $2... |
|
maintenance-moveBatch discuter | Utilisez ce formulaire pour déplacer en masse des pages. Chaque ligne devra indiquer la page d’origine et celle de destination, lesquelles devront être séparées par un « <nowiki>|</nowiki> » |
|
maintenance-moveBatch-desc discuter | Renommage de pages en masse |
|
maintenance-movefail discuter | Erreur survenue lors du renommage : $1. Déplacement interrompu. |
|
maintenance-name discuter | Nom d’utilisateur |
|
maintenance-noviews discuter | Cocher ceci pour empêcher la mise à jour du nombre de visites des pages. |
|
maintenance-password discuter | Mot de passe |
|
maintenance-re-ce discuter | Modifications actuelles : $1. |
|
maintenance-re-de discuter | Modifications supprimées : $1 |
|
maintenance-re-force discuter | Réassigner même si l'utilisateur cible n'existe pas |
|
maintenance-re-from discuter | Nom de l'utilisateur à qui prendre les modifications |
|
maintenance-re-nf discuter | L'utilisateur « $1 » n'a pas été trouvé |
|
maintenance-re-rc discuter | Ne pas modifier la table des modifications récentes |
|
maintenance-re-rce discuter | Entrées dans la table des modifications récentes : $1 |
|
maintenance-re-re discuter | Réaffectation des modifications... fait |
|
maintenance-re-report discuter | Afficher les détails de ce qui va être modifié, mais sans mettre à jour les données |
|
maintenance-re-rr discuter | Lancer de nouveau le script sans mettre à jour « $1 ». |
|
maintenance-re-to discuter | Nom de l'utilisateur à qui assigner les modifications |
|
maintenance-re-total discuter | Nombre total de modifications à modifier : $1 |
|
maintenance-reason discuter | Motif |
|
maintenance-reassignEdits discuter | Utilisez ce formulaire pour réassigner des modifications d'un utilisateur vers un autre. |
|
maintenance-reassignEdits-desc discuter | Réassigner des modifications d'un utilisateur vers un autre |
|
maintenance-revdelete discuter | Suppression des versions $1 du wiki $2 |
|
maintenance-revnotfound discuter | Version $1 introuvable ! |
|
maintenance-runJobs discuter | |
|
maintenance-runJobs-desc discuter | Lancer les tâches dans la liste de celles à accomplir |
|
maintenance-showJobs discuter | |
|
maintenance-showJobs-desc discuter | Afficher une liste des tâches en cours dans la liste de celles à accomplir |
|
maintenance-sql discuter | Utilisez cette forme pour exécuter une requête SQL sur la base de données. |
|
maintenance-sql-aff discuter | Lignes affectées : $1 |
|
maintenance-sql-desc discuter | Exécuter une requête SQL |
|
maintenance-sql-res discuter | $1 {{PLURAL:$1|ligne renvoyée|lignes renvoyées}} : $2 |
|
maintenance-stats discuter | |
|
maintenance-stats-admins discuter | Nombre d’administrateurs : $1 |
|
maintenance-stats-articles discuter | Nombre de pages dans l’espace principal : $1 |
|
maintenance-stats-desc discuter | Afficher les statistiques de la mémoire cache |
|
maintenance-stats-edits discuter | Nombre de modifications : $1 |
|
maintenance-stats-images discuter | Nombre de fichiers : $1 |
|
maintenance-stats-pages discuter | Nombre de pages : $1 |
|
maintenance-stats-update discuter | Mise à jour de la base de données... |
|
maintenance-stats-users discuter | Nombre d’utilisateurs : $1 |
|
maintenance-stats-views discuter | Nombre de pages visitées : $1 |
|
maintenance-success discuter | $1 s’est déroulé avec succès ! |
|
maintenance-titlenoexist discuter | Le titre indiqué (« $1 ») n’existe pas ! |
|
maintenance-update discuter | Voulez-vous utiliser la méthode « UPDATE » pour la mise à jour directe d’une table ? Décochez l’option pour utiliser plutôt « DELETE / INSERT » (suppression puis réinsertion). |
|
maintenance-userexists discuter | L’utilisateur existe déjà ! |
|
mar discuter | mar |
|
march discuter | mars |
|
march-gen discuter | mars |
|
markaspatrolleddiff discuter | Marquer comme n’étant pas un vandalisme |
|
markaspatrolledlink discuter | [$1] |
|
markaspatrolledtext discuter | Marquer cette page comme non vandalisée |
|
markedaspatrolled discuter | Marqué comme non vandalisé |
|
markedaspatrollederror discuter | Ne peut être marqué comme non vandalisé |
|
markedaspatrollederror-noautopatrol discuter | Vous n’avez pas le droit de marquer vos propres modifications comme surveillées. |
|
markedaspatrollederrortext discuter | Vous devez sélectionner une version pour pouvoir la marquer comme non vandalisée. |
|
markedaspatrolledtext discuter | La version sélectionnée a été marquée comme non vandalisée. |
|
math discuter | Rendu des maths |
|
math_bad_output discuter | Impossible de créer ou d’écrire dans le répertoire math de sortie |
|
math_bad_tmpdir discuter | Impossible de créer ou d’écrire dans le répertoire math temporaire |
|
math_failure discuter | Erreur math |
|
math_image_error discuter | La conversion en PNG a échoué ; vérifiez l’installation de LaTeX, dvips, gs et convert |
|
math_lexing_error discuter | erreur lexicale |
|
math_notexvc discuter | L’exécutable « texvc » est introuvable. Lisez math/README pour le configurer. |
|
math_sample discuter | Entrez votre formule ici |
|
math_syntax_error discuter | erreur de syntaxe |
|
math_tip discuter | Formule mathématique (LaTeX) |
|
math_unknown_error discuter | erreur indéterminée |
|
math_unknown_function discuter | fonction inconnue |
|
maximum-size discuter | Taille maximum |
|
may discuter | mai |
|
may-gen discuter | mai |
|
may_long discuter | mai |
|
media_sample discuter | Exemple.ogg |
|
media_tip discuter | Lien vers un fichier média |
|
mediawarning discuter | '''Attention :''' ce fichier pourrait contenir du code malveillant, votre système pouvant être compromis lors de son exécution.<hr /> |
|
mediawikipage discuter | Voir la page du message |
|
mergehistory discuter | Fusionner les historiques des pages |
|
mergehistory-autocomment discuter | [[:$1]] fusionnée avec [[:$2]] |
|
mergehistory-box discuter | Fusionner les versions de deux pages : |
|
mergehistory-comment discuter | [[:$1]] fusionnée avec [[:$2]] : $3 |
|
mergehistory-empty discuter | Aucune version ne peut être fusionnée. |
|
mergehistory-fail discuter | Impossible de procéder à la fusion des historiques. Resélectionner la page ainsi que les paramètres de date. |
|
mergehistory-from discuter | Page d’origine : |
|
mergehistory-go discuter | Voir les modifications qui peuvent être fusionnées |
|
mergehistory-header discuter | Cette page vous permet de fusionner des versions de l’historique d’une page d’origine vers une nouvelle page. Assurez-vous que cette opération conservera la continuité de l’historique de la page. |
|
mergehistory-into discuter | Page de destination : |
|
mergehistory-invalid-destination discuter | La page de destination doit avoir un titre valide. |
|
mergehistory-invalid-source discuter | La page d’origine doit avoir un titre valide. |
|
mergehistory-list discuter | Historique des modifications fusionnable |
|
mergehistory-merge discuter | Les versions suivantes de [[:$1]] peuvent être fusionnées avec [[:$2]]. Utilisez la colonne de boutons radio pour fusionner uniquement les versions créées du début jusqu’à la date indiquée. Notez bien que l’utilisation des liens de navigation réinitialisera cette colonne. |
|
mergehistory-no-destination discuter | La page de destination $1 n’existe pas. |
|
mergehistory-no-source discuter | La page d’origine $1 n’existe pas. |
|
mergehistory-reason discuter | Motif : |
|
mergehistory-same-destination discuter | Les pages d’origine et de destination ne peuvent pas être la même |
|
mergehistory-submit discuter | Fusionner les versions |
|
mergehistory-success discuter | $3 version{{PLURAL:$3||s}} de [[:$1]] fusionnée{{PLURAL:$3||s}} dans [[:$2]]. |
|
mergelog discuter | Journal des fusions |
|
mergelogpagetext discuter | Voici la liste des fusions de l’historique d’une page dans celui d’une autre les plus récentes. |
|
metadata discuter | Métadonnées |
|
metadata-collapse discuter | Cacher les informations détaillées |
|
metadata-expand discuter | Montrer les informations détaillées |
|
metadata-fields discuter | Les champs de métadonnées d’EXIF listés dans ce message seront inclus dans la page de description de l’image quand la table de métadonnées sera réduite. Les autres champs seront cachés par défaut. * make * model * datetimeoriginal * exposuretime * fnumber * isospeedratings * focallength |
|
metadata-help discuter | Ce fichier contient des informations supplémentaires, probablement ajoutées par l’appareil photo numérique ou le numériseur utilisé pour le créer. Si le fichier a été modifié depuis son état original, certains détails peuvent ne pas refléter entièrement l’image modifiée. |
|
metadata_help discuter | Métadonnées : |
|
mimesearch discuter | Recherche par type de contenu MIME |
|
mimesearch-summary discuter | Cette page vous permet de lister les fichiers accessibles par ce wiki en fonction de leur type de contenu MIME. Entrée : ''typedecontenu''/''sous-type'', par exemple <tt>image/jpeg</tt>. |
|
mimetype discuter | Type MIME : |
|
minimum-size discuter | Taille minimum |
|
minlength1 discuter | Le noms de fichiers doivent comprendre au moins une lettre. |
|
minoredit discuter | Modification mineure |
|
minoreditletter discuter | m |
|
minutes-abbrev discuter | m |
|
missing-article discuter | La base de données n’a pas trouvé le texte d’une page qu’elle aurait dû trouver, intitulée « $1 » $2. Généralement, cela survient en suivant un lien vers un diff périmé ou vers l’historique d’une page supprimée. Si ce n’est pas le cas, il peut s’agir d’un bogue dans le programme. Veuillez le signaler à un [[Special:ListUsers/sysop|administrateur]] sans oublier de lui indiquer l’URL du lien. |
|
missingarticle-diff discuter | (diff : $1, $2) |
|
missingarticle-rev discuter | (numéro de version : $1) |
|
missingcommentheader discuter | '''Rappel :''' vous n’avez pas fourni de sujet ou de titre à ce commentaire. Si vous cliquez de nouveau sur « Publier », votre modification sera enregistrée sans titre. |
|
missingcommenttext discuter | Veuillez entrer un commentaire ci-dessous. |
|
missingsummary discuter | '''Rappel :''' vous n’avez pas encore fourni le résumé de votre modification. Si vous cliquez de nouveau sur le bouton « Publier », la publication sera faite sans nouvel avertissement. |
|
modern.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Modern. */ |
|
modern.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Moderne uniquement */ |
|
modifiedarticleprotection discuter | a modifié le niveau de protection de « [[$1]] » |
|
mon discuter | lun |
|
monday discuter | lundi |
|
monobook.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Monobook. */ |
|
monobook.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage MonoBook uniquement. */ |
|
month discuter | À partir du mois (et précédents) : |
|
monthsall discuter | tous |
|
moredotdotdot discuter | Et plus … |
|
morelinkstoimage discuter | Voir [[Special:WhatLinksHere/$1|plus de liens]] vers ce fichier. |
|
mostcategories discuter | Pages utilisant le plus de catégories |
|
mostcategories-summary discuter | |
|
mostimages discuter | Fichiers les plus utilisés |
|
mostimages-summary discuter | |
|
mostlinked discuter | Pages les plus liées |
|
mostlinked-summary discuter | |
|
mostlinkedcategories discuter | Catégories les plus utilisées |
|
mostlinkedcategories-summary discuter | |
|
mostlinkedtemplates discuter | Modèles les plus utilisés |
|
mostlinkedtemplates-summary discuter | |
|
mostrevisions discuter | Pages les plus modifiées |
|
mostrevisions-summary discuter | |
|
move discuter | Renommer |
|
move-leave-redirect discuter | Laisser une redirection vers le nouveau titre |
|
move-page discuter | Renommer $1 |
|
move-page-backlink discuter | ← $1 |
|
move-page-legend discuter | Renommer une page |
|
move-redirect-suppressed discuter | redirection supprimée |
|
move-subpages discuter | Renommer les sous-pages (jusqu’à $1 pages) |
|
move-talk-subpages discuter | Renommer les sous-pages de la page de discussion (jusqu’à $1 pages) |
|
move-watch discuter | Suivre cette page |
|
movearticle discuter | Renommer la page : |
|
movedarticleprotection discuter | a déplacé les paramètres de protection depuis « [[$2]] » vers « [[$1]] » |
|
movedto discuter | renommé en |
|
movelogpage discuter | Journal des renommages et déplacements |
|
movelogpagetext discuter | Voici la liste de toutes les pages renommées ou déplacées. |
|
movenologin discuter | Vous n’êtes pas identifié{{GENDER:||e|(e)}}. |
|
movenologintext discuter | Pour pouvoir renommer une page, vous devez être [[Special:UserLogin|identifié{{GENDER:||e|(e)}}]] avec un compte utilisateur enregistré et d’ancienneté suffisante. |
|
movenosubpage discuter | Cette page n’a aucune sous-page. |
|
movenotallowed discuter | Vous n’avez pas la permission de renommer les pages. |
|
movenotallowedfile discuter | Vous n’avez pas la permission de renommer les fichiers. |
|
movepage-max-pages discuter | Le maximum de $1 {{PLURAL:$1|page renommée|pages renommées}} a été atteint et aucune autre page ne sera renommée automatiquement. |
|
movepage-moved discuter | <big>'''« $1 »''' a été renommé '''« $2 »'''</big> |
|
movepage-moved-noredirect discuter | La création d’une redirection depuis l’ancien nom a été annulée. |
|
movepage-moved-redirect discuter | Une redirection depuis l’ancien nom a été créée. |
|
movepage-page-exists discuter | La page $1 existe déjà et ne peut pas être écrasée automatiquement. |
|
movepage-page-moved discuter | La page $1 a été renommée en $2. |
|
movepage-page-unmoved discuter | La page $1 n’a pas pu être renommée en $2. |
|
movepagebtn discuter | Renommer la page |
|
movepagetalktext discuter | La page de discussion associée, si présente, sera automatiquement renommée '''sauf si :''' * une page de discussion non vide existe déjà avec le nouveau nom, ou * vous décochez la case ci-dessous. Dans ces cas-là, vous devrez renommer ou fusionner cette page manuellement si vous le désirez. |
|
movepagetext discuter | Utilisez le formulaire ci-dessous pour renommer une page, en déplaçant tout son historique vers le nouveau nom. L’ancien titre deviendra une page de redirection vers le nouveau titre. Vous pouvez mettre à jour automatiquement les redirections actuelles qui pointent vers le titre original. Si vous choisissez de ne pas le faire, asssurez-vous de vérifier toute [[Special:DoubleRedirects|double redirection]] ou [[Special:BrokenRedirects|redirection cassée]]. Vous avez la responsabilité de vous assurer que les liens continuent de pointer vers leur destination supposée. Notez que la page ne sera '''pas''' déplacée s’il existe déjà une page avec le nouveau titre, sauf si cette dernière est vide ou n’est qu’une redirection et si son historique de modifications est vierge. Cela veut dire que vous pouvez renommer une page vers sa position d’origine si vous avez commis une erreur, mais que vous ne pouvez écraser une page déjà existante. '''ATTENTION !''' Ceci peut provoquer un changement drastique et imprévu pour une page souvent consultée ; assurez-vous d’en avoir compris les conséquences avant de continuer. |
|
movereason discuter | Motif du renommage : |
|
movesubpage discuter | Sous-page{{PLURAL:$1||s}} |
|
movesubpagetext discuter | Cette page a $1 {{PLURAL:$1|sous-page affichée|sous-pages affichées}} ci-dessous. |
|
movetalk discuter | Renommer aussi la page de discussion associée |
|
movethispage discuter | Renommer cette page |
|
mw_math_html discuter | HTML si possible, autrement PNG |
|
mw_math_mathml discuter | MathML |
|
mw_math_modern discuter | Pour les navigateurs modernes |
|
mw_math_png discuter | Toujours produire une image PNG |
|
mw_math_simple discuter | HTML si très simple, autrement PNG |
|
mw_math_source discuter | Laisser le code TeX original |
|
mwsuggest-disable discuter | Désactiver les suggestions AJAX |
|
mycontris discuter | Contributions |
|
mypage discuter | Ma page |
|
mypreferences discuter | Préférences |
|
myskin.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Myskin. */ |
|
myskin.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Mon habillage uniquement */ |
|
mytalk discuter | Page de discussion |
|
mywatchlist discuter | Liste de suivi |
|
namespace discuter | Espace de noms : |
|
namespaceprotected discuter | Vous n’avez pas la permission de modifier les pages de l’espace de noms « '''$1''' ». |
|
namespacesall discuter | Tous |
|
nav-login-createaccount discuter | Créer un compte ou se connecter |
|
navigation discuter | Navigation |
|
nbytes discuter | $1 octet{{PLURAL:$1||s}} |
|
ncategories discuter | $1 catégorie{{PLURAL:$1||s}} |
|
nchanges discuter | $1 modification{{PLURAL:$1||s}} |
|
newarticle discuter | (Nouveau) |
|
newarticletext discuter | Vous avez suivi un lien vers une page qui n’existe pas encore ou qui a été [{{fullurl:Special:Log|type=delete&page={{FULLPAGENAMEE}}}} effacée]. Pour créer cette page, entrez votre texte dans la boîte ci-dessous (vous pouvez consulter [[{{MediaWiki:Helppage}}|la page d’aide]] pour plus d’informations). Si vous êtes arrivé{{GENDER:||e|(e)}} ici par erreur, cliquez sur le bouton '''retour''' de votre navigateur. |
|
newarticletextanon discuter | {{int:newarticletext}} |
|
newimages discuter | Galerie des nouveaux fichiers |
|
newimages-label discuter | Nom du fichier (ou une partie de celui-ci) : |
|
newimages-legend discuter | Nom du fichier |
|
newimages-summary discuter | Cette page spéciale affiche les derniers fichiers importés. |
|
newmessagesdifflink discuter | dernière modification |
|
newmessageslink discuter | de nouveaux messages |
|
newpage discuter | Nouvelle page |
|
newpageletter discuter | N |
|
newpages discuter | Nouvelles pages |
|
newpages-summary discuter | |
|
newpages-username discuter | Utilisateur : |
|
newpassword discuter | Nouveau mot de passe : |
|
newsectionheaderdefaultlevel discuter | == $1 == |
|
newsectionsummary discuter | /* $1 */ nouvelle section |
|
newtalkseparator discuter | ,_ |
|
newtitle discuter | Vers le nouveau titre : |
|
newuserlog-autocreate-entry discuter | Compte créé automatiquement |
|
newuserlog-byemail discuter | mot de passe envoyé par courriel |
|
newuserlog-create-entry discuter | Nouveau compte utilisateur |
|
newuserlog-create2-entry discuter | a créé le nouveau compte $1 |
|
newuserlogentry discuter | |
|
newuserlogpage discuter | Journal des créations de comptes utilisateur |
|
newuserlogpagetext discuter | Cette page affiche l’historique des créations de comptes utilisateur. |
|
newwindow discuter | (ouvre une nouvelle fenêtre) |
|
next discuter | suivant |
|
nextdiff discuter | Modification suivante → |
|
nextn discuter | $1 suivantes |
|
nextn-title discuter | $1 {{PLURAL:$1|résultat suivant|résultats suivants}} |
|
nextpage discuter | Page suivante ($1) |
|
nextrevision discuter | Version suivante → |
|
nlinks discuter | $1 lien{{PLURAL:$1||s}} |
|
nmembers discuter | $1 membre{{PLURAL:$1||s}} |
|
noarticletext discuter | Il n’y a pour l’instant aucun texte sur cette page ; vous pouvez [[Special:Search/{{PAGENAME}}|lancer une recherche de ce titre de page]] dans les autres pages, <span class="plainlinks">[{{fullurl:Special:Log|page={{urlencode:{{FULLPAGENAME}}}}}} rechercher dans les opérations liées] ou [{{fullurl:{{urlencode:{{FULLPAGENAME}}}}|action=edit}} créer cette page]</span>. |
|
noarticletextanon discuter | {{int:noarticletext}} |
|
noautoblockblock discuter | blocage automatique désactivé |
|
noconnect discuter | Le wiki rencontre actuellement quelques difficultés techniques, et ne peut se connecter au serveur de la base de données. <br /> $1 |
|
nocontribs discuter | Aucune modification correspondant à ces critères n’a été trouvée. |
|
nocookieslogin discuter | {{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter. |
|
nocookiesnew discuter | Le compte utilisateur a été créé, mais vous n’êtes pas connecté{{GENDER:||e|(e)}}. {{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter avec le même nom et le même mot de passe. |
|
nocreate-loggedin discuter | Vous n’avez pas la permission de créer de nouvelles pages. |
|
nocreatetext discuter | {{SITENAME}} a restreint la possibilité de créer de nouvelles pages. Vous pouvez revenir en arrière et modifier une page existante, ou bien [[Special:UserLogin|vous connecter ou créer un compte]]. |
|
nocreatetitle discuter | Création de page limitée |
|
nocreativecommons discuter | Les métadonnées « Creative Commons RDF » sont désactivées sur ce serveur. |
|
nocredits discuter | Il n’y a pas d’informations d’attribution disponibles pour cette page. |
|
nodb discuter | Impossible de sélectionner la base de données $1 |
|
nodublincore discuter | Les métadonnées « Dublin Core RDF » sont désactivées sur ce serveur. |
|
noemail discuter | Aucune adresse de courriel n’a été enregistrée pour l’utilisateur « $1 ». |
|
noemailprefs discuter | Indiquez une adresse de courriel dans vos préférences pour utiliser ces fonctions. |
|
noemailtext discuter | Cet utilisateur n’a pas spécifié une adresse de courriel valide. |
|
noemailtitle discuter | Destinataire sans adresse de courriel |
|
noexactmatch discuter | '''Aucune page intitulée « $1 » n’existe.''' Vous pouvez [[:$1|créer cette page]]. |
|
noexactmatch-nocreate discuter | '''Il n’existe aucune page intitulée « $1 ».''' |
|
nohistory discuter | Il n’existe pas d’historique pour cette page. |
|
noimage discuter | Aucun fichier n’existe sous ce nom, mais vous pouvez $1. |
|
noimage-linktext discuter | en téléverser un |
|
noimages discuter | Aucune image à afficher. |
|
nolicense discuter | Aucune licence sélectionnée |
|
nolinkshere discuter | Aucune page ne contient de lien vers '''[[:$1]]'''. |
|
nolinkshere-ns discuter | Aucune page ne contient de lien vers '''[[:$1]]''' dans l’espace de noms choisi. |
|
nolinkstoimage discuter | Aucune page n’utilise ce fichier. |
|
nologin discuter | Vous n’êtes pas encore inscrit ? $1. |
|
nologinlink discuter | Créer un compte |
|
noname discuter | Vous n’avez pas saisi un nom d’utilisateur valide. |
|
nonefound discuter | '''Note''' : seuls certains espaces de noms sont recherchés par défaut. Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (y compris les pages de discussion, les modèles, etc.) ou bien utilisez l’espace de noms souhaité comme préfixe. |
|
nonunicodebrowser discuter | '''Attention : Votre navigateur ne supporte pas l’Unicode.''' Une solution de rechange a été trouvée pour vous permettre de modifier en toute sûreté une page : les caractères non-ASCII apparaîtront dans votre boîte de modification en tant que codes hexadécimaux. Vous devriez utiliser un navigateur plus récent. |
|
nopagetext discuter | La page cible que vous avez indiquée n’existe pas. |
|
nopagetitle discuter | Aucune telle page cible |
|
nospecialpagetext discuter | <big>'''Vous avez demandé une page spéciale qui n’existe pas.'''</big> Une liste des pages spéciales valides se trouve sur [[Special:SpecialPages|{{int:specialpages}}]]. |
|
nostalgia.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Nostalgia. */ |
|
nostalgia.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Nostalgie uniquement */ |
|
nosuchaction discuter | Action inconnue |
|
nosuchactiontext discuter | L’action spécifiée dans l’URL est invalide. Vous avez peut-être mal entré l’URL ou suivi un lien erroné. Il peut également s’agir d’un bogue dans le logiciel utilisé par {{SITENAME}}. |
|
nosuchsectiontext discuter | Vous avez essayé de modifier une section qui n’existe pas. Puisqu’il n’y a pas de section $1, il n’y a pas d’endroit où publier vos modifications. |
|
nosuchsectiontitle discuter | Section manquante |
|
nosuchspecialpage discuter | Page spéciale inexistante |
|
nosuchuser discuter | L’utilisateur « $1 » n’existe pas. Les noms d’utilisateurs sont sensibles à la casse. Vérifiez l’orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]]. |
|
nosuchusershort discuter | Il n’y a pas de contributeur avec le nom « <nowiki>$1</nowiki> ». Veuillez vérifier l’orthographe. |
|
notacceptable discuter | Ce serveur wiki ne peut pas fournir les données dans un format que votre client est capable de lire. |
|
notanarticle discuter | Ce n’est pas une page de contenu |
|
notargettext discuter | Vous n’avez pas indiqué une page ou un utilisateur sur lequel vous souhaitez effectuer cette action. |
|
notargettitle discuter | Pas de cible |
|
note discuter | '''Note :''' |
|
notextmatches discuter | Aucun texte de page ne correspond à la recherche. |
|
notitlematches discuter | Aucun titre de page ne correspond à la recherche. |
|
notloggedin discuter | Non connecté |
|
notvisiblerev discuter | La version a été supprimée |
|
nouserspecified discuter | Vous devez saisir un nom d’utilisateur. |
|
nov discuter | nov |
|
november discuter | novembre |
|
november-gen discuter | novembre |
|
nowatchlist discuter | Votre liste de suivi ne référence aucune page. |
|
nowiki_sample discuter | Entrez le texte non formaté ici |
|
nowiki_tip discuter | Ignorer la syntaxe wiki |
|
nowikiemailtext discuter | Cet utilisateur a choisi de ne pas recevoir de courriel de la part d’autre utilisateurs. |
|
nowikiemailtitle discuter | Pas de courriel autorisé |
|
nrevisions discuter | $1 version{{PLURAL:$1||s}} |
|
ns-specialprotected discuter | Les pages dans l’espace de noms « {{ns:special}} » ne peuvent pas être modifiées. |
|
nstab-category discuter | Catégorie |
|
nstab-help discuter | Aide |
|
nstab-image discuter | Fichier |
|
nstab-main discuter | Page |
|
nstab-media discuter | Média |
|
nstab-mediawiki discuter | Message |
|
nstab-project discuter | À propos |
|
nstab-special discuter | Page spéciale |
|
nstab-template discuter | Modèle |
|
nstab-user discuter | Page utilisateur |
|
numauthors discuter | Nombre d’auteurs distincts : $1 |
|
number_of_watching_users_RCview discuter | [$1] |
|
number_of_watching_users_pageview discuter | [$1 utilisateur{{PLURAL:$1||s}} en train de suivre] |
|
numedits discuter | Nombre de modifications : $1 |
|
numtalkauthors discuter | Nombre d’auteurs distincts (page de discussion) : $1 |
|
numtalkedits discuter | Nombre de modifications (page de discussion) : $1 |
|
numwatchers discuter | Nombre de contributeurs ayant la page dans leur liste de suivi : $1 |
|
nviews discuter | $1 consultation{{PLURAL:$1||s}} |
|
oct discuter | oct |
|
october discuter | octobre |
|
october-gen discuter | octobre |
|
ok discuter | OK |
|
oldpassword discuter | Ancien mot de passe : |
|
opensearch-desc discuter | {{SITENAME}} ({{CONTENTLANGUAGE}}) |
|
othercontribs discuter | Basé sur le travail de $1. |
|
otherlanguages discuter | Autres langues |
|
others discuter | autres |
|
overwroteimage discuter | a téléversé une nouvelle version de « [[$1]] » |
|
page-atom-feed discuter | Flux Atom de « $1 » |
|
page-rss-feed discuter | Flux RSS de « $1 » |
|
page_first discuter | première |
|
page_last discuter | dernier |
|
pagecategories discuter | Catégorie{{PLURAL:$1||s}} |
|
pagecategorieslink discuter | Special:Categories |
|
pagehist discuter | Historique de la page |
|
pagemerge-logentry discuter | [[$1]] fusionnée avec [[$2]] (versions jusqu’au $3) |
|
pagemovedsub discuter | Renommage réussi |
|
pager-newer-n discuter | {{PLURAL:$1|plus récente|$1 plus récentes}} |
|
pager-older-n discuter | {{PLURAL:$1|plus ancienne|$1 plus anciennes}} |
|
pagesize discuter | (octets) |
|
pagetitle discuter | $1 - {{SITENAME}} |
|
pagetitle-view-mainpage discuter | {{SITENAME}} |
|
parser-template-loop-warning discuter | Modèle en boucle détecté : [[$1]] |
|
parser-template-recursion-depth-warning discuter | Limite de profondeur des appels de modèles dépassée ($1) |
|
passwordremindertext discuter | Quelqu’un (probablement vous, ayant l’adresse IP $1) a demandé un nouveau mot de passe pour {{SITENAME}} ($4). Un mot de passe temporaire a été créé pour l’utilisateur « $2 » et est « $3 ». Si cela était votre intention, vous devrez vous connecter et choisir un nouveau mot de passe. Votre mot de passe temporaire expirera dans $5 jour{{PLURAL:$5||s}}. Si vous n’êtes pas l’auteur de cette demande, ou si vous vous souvenez à présent de votre ancien mot de passe et que vous ne souhaitez plus en changer, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe. |
|
passwordremindertitle discuter | Nouveau mot de passe temporaire sur {{SITENAME}} |
|
passwordsent discuter | Un nouveau mot de passe a été envoyé à l’adresse de courriel de l’utilisateur « $1 ». Veuillez vous reconnecter après l’avoir reçu. |
|
passwordtooshort discuter | Votre mot de passe est trop court. Il doit contenir au moins $1 caractère{{PLURAL:$1||s}} et être différent de votre nom d’utilisateur. |
|
patrol-log-auto discuter | (automatique) |
|
patrol-log-diff discuter | v$1 |
|
patrol-log-header discuter | Voici un journal des versions patrouillées. |
|
patrol-log-line discuter | a marqué la version $1 de $2 comme vérifiée $3 |
|
patrol-log-page discuter | Journal des versions patrouillées |
|
percent discuter | $1 % |
|
perfcached discuter | Les données suivantes sont en cache et peuvent ne pas être à jour. |
|
perfcachedts discuter | Les données suivantes sont en cache, elles ne sont donc pas obligatoirement à jour. La dernière actualisation date du $1. |
|
permalink discuter | Lien historique |
|
permissions discuter | Permissions |
|
permissionserrors discuter | Erreur de permissions |
|
permissionserrorstext discuter | Vous n’avez pas la permission d’effectuer l’opération demandée pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} : |
|
permissionserrorstext-withaction discuter | Vous n’êtes pas autorisé{{GENDER:||e|(e)}} à $2, pour {{PLURAL:$1|la raison suivante|les raisons suivantes}} : |
|
personaltools discuter | Outils personnels |
|
pfunc_desc discuter | Augmente le parseur avec des fonctions logiques |
|
pfunc_expr_division_by_zero discuter | Division par zéro |
|
pfunc_expr_invalid_argument discuter | Valeur incorrecte pour $1 : < -1 ou > 1 |
|
pfunc_expr_invalid_argument_ln discuter | Valeur incorrecte pour ln : ≤ 0 |
|
pfunc_expr_missing_operand discuter | Erreur d’expression : l’opérande '''$1''' n’est pas reconnue |
|
pfunc_expr_not_a_number discuter | Dans $1 : le résultat n'est pas un nombre |
|
pfunc_expr_preg_match_failure discuter | Expression erronée : échec inattendu pour <code>preg_match</code> |
|
pfunc_expr_stack_exhausted discuter | Expression erronée : pile épuisée |
|
pfunc_expr_unclosed_bracket discuter | Erreur d’expression : parenthèse non fermée |
|
pfunc_expr_unexpected_closing_bracket discuter | Erreur d’expression : parenthèse fermante inattendue |
|
pfunc_expr_unexpected_number discuter | Expression erronée : nombre inattendu |
|
pfunc_expr_unexpected_operator discuter | Erreur d'expression : l'opérateur '''$1''' n'est pas reconnu |
|
pfunc_expr_unknown_error discuter | Erreur d'expression : erreur inconnue ($1) |
|
pfunc_expr_unrecognised_punctuation discuter | Erreur d'expression : caractère de ponctuation « $1 » non reconnu |
|
pfunc_expr_unrecognised_word discuter | Erreur d'expression : le mot '''$1''' n'est pas reconnu |
|
pfunc_rel2abs_invalid_depth discuter | Erreur: niveau de répertoire invalide dans le chemin : « $1 » (a essayé d’accéder à un niveau au-dessus du répertoire racine) |
|
pfunc_time_error discuter | Erreur : durée invalide |
|
pfunc_time_too_long discuter | Erreur : <code>#time</code> appelé trop de fois |
|
php-uploaddisabledtext discuter | Le téléversement de fichiers a été désactivé dans PHP. Vérifiez l’option de configuration file_uploads. |
|
pipe-separator discuter |  |  |
|
policy-url discuter | Project:Règles |
|
popularpages discuter | Pages les plus consultées |
|
popularpages-summary discuter | |
|
portal discuter | Communauté |
|
portal-url discuter | Project:Accueil |
|
post-expand-template-argument-category discuter | Pages contenant des paramètres de modèle non évalués |
|
post-expand-template-argument-warning discuter | Attention : Cette page contient au moins un paramètre de modèle dont l’inclusion est rendue impossible. Après extension, celui-ci aurait produit un résultat trop long, il n’a donc pas été inclus. |
|
post-expand-template-inclusion-category discuter | Pages contenant trop d’inclusions de modèles |
|
post-expand-template-inclusion-warning discuter | Attention : Cette page contient trop d’inclusions de modèles. Certaines inclusions ne seront pas effectuées. |
|
postcomment discuter | Nouvelle section |
|
powersearch discuter | Rechercher |
|
powersearch-field discuter | Rechercher |
|
powersearch-legend discuter | Recherche avancée |
|
powersearch-ns discuter | Rechercher dans les espaces de noms : |
|
powersearch-redir discuter | Afficher les redirections |
|
preferences discuter | Préférences |
|
preferences-summary discuter | |
|
prefixindex discuter | Toutes les pages débutant par... |
|
prefixindex-summary discuter | |
|
prefs-custom-css discuter | CSS personnalisé |
|
prefs-custom-js discuter | JavaScript personnalisé |
|
prefs-edit-boxsize discuter | Taille de la fenêtre de modification. |
|
prefs-edits discuter | Nombre de modifications : |
|
prefs-help-email discuter | Facultatif : indiquer votre adresse de courriel permet de vous envoyer un nouveau mot de passe si vous oubliez le vôtre. Vous pouvez également décider de laisser les autres vous contacter via votre page de discussion, sans avoir besoin de révéler votre identité. |
|
prefs-help-email-required discuter | Une adresse de courriel est requise. |
|
prefs-help-gender discuter | Facultatif : utilisé pour accorder en genre les messages de l’interface. Cette information sera publique. |
|
prefs-help-realname discuter | Facultatif : si vous le spécifiez, il sera utilisé pour vous attribuer vos contributions. |
|
prefs-memberingroups discuter | Membre {{PLURAL:$1|du groupe|des groupes}} : |
|
prefs-misc discuter | Préférences diverses |
|
prefs-namespaces discuter | Espaces de noms |
|
prefs-personal discuter | Informations personnelles |
|
prefs-rc discuter | Modifications récentes |
|
prefs-resetpass discuter | Modifier le mot de passe |
|
prefs-search-nscustom discuter | Rechercher en utilisant les espaces de noms personnalisés : |
|
prefs-search-nsdefault discuter | Recherche en utilisant les espaces de noms par défaut : |
|
prefs-searchoptions discuter | Options de recherche |
|
prefs-watchlist discuter | Liste de suivi |
|
prefs-watchlist-days discuter | Nombre de jours à afficher dans la liste de suivi : |
|
prefs-watchlist-days-max discuter | (maximum 7 jours) |
|
prefs-watchlist-edits discuter | Nombre de modifications à afficher dans la liste de suivi étendue : |
|
prefs-watchlist-edits-max discuter | (nombre maximum : 1000) |
|
prefsnologin discuter | Non connecté |
|
prefsnologintext discuter | Vous devez être <span class="plainlinks">[{{fullurl:Special:UserLogin|returnto=$1}} connecté]</span> pour modifier vos préférences d’utilisateur. |
|
prefsreset discuter | Les préférences ont été rétablies à partir de la version enregistrée. |
|
preview discuter | Prévisualisation |
|
previewconflict discuter | Cette prévisualisation montre le texte de la boîte supérieure de modification tel qu’il apparaîtra si vous choisissez de le publier. |
|
previewnote discuter | '''Attention, ce texte n’est qu’une prévisualisation et n’a pas encore été publié !''' |
|
previousdiff discuter | ← Modification précédente |
|
previousrevision discuter | ← Version précédente |
|
prevn discuter | $1 précédentes |
|
prevn-title discuter | $1 {{PLURAL:$1|résultat précédent|résultats précédents}} |
|
prevpage discuter | Page précédente ($1) |
|
print discuter | Imprimer |
|
print.css discuter | /* Le CSS placé ici affectera les impressions */ |
|
printableversion discuter | Version imprimable |
|
privacy discuter | Politique de confidentialité |
|
privacypage discuter | Project:Confidentialité |
|
projectpage discuter | Page méta |
|
prot_1movedto2 discuter | [[$1]] renommé en [[$2]] |
|
protect discuter | Protéger |
|
protect-backlink discuter | ← $1 |
|
protect-cantedit discuter | Vous ne pouvez pas changer les niveaux de protection de cette page car vous n’avez pas la permission de la modifier. |
|
protect-cascade discuter | Protège aussi les pages incluses dans celle-ci (protection en cascade) |
|
protect-cascadeon discuter | Cette page est actuellement protégée car incluse dans {{PLURAL:$1|la page suivante|les pages suivantes}}, {{PLURAL:$1|laquelle a été protégée|lesquelles ont été protégées}} avec l’option « protection en cascade » activée. Vous pouvez changer le niveau de protection de cette page sans que cela n’affecte la protection en cascade. |
|
protect-default discuter | Autoriser tous les utilisateurs |
|
protect-dropdown discuter | * Motifs de protection courants ** Vandalisme excessif ** Pourriels ** Conflits de modifications contre-productives ** Page à fort trafic |
|
protect-edit-reasonlist discuter | Modifier les motifs de protection |
|
protect-existing-expiry discuter | Date d’expiration existante : $2 à $3 |
|
protect-expiring discuter | expire le $1 (UTC) |
|
protect-expiry-indefinite discuter | infini |
|
protect-expiry-options discuter | 1 heure:1 hour,1 jour:1 day,1 semaine:1 week,2 semaines:2 weeks,1 mois:1 month,3 mois:3 months,6 mois:6 months,1 an:1 year,indéfiniment:infinite |
|
protect-fallback discuter | Nécessite la permission « $1 » |
|
protect-legend discuter | Confirmer la protection |
|
protect-level-autoconfirmed discuter | Bloquer les nouveaux utilisateurs et les utilisateurs anonymes |
|
protect-level-sysop discuter | Administrateurs uniquement |
|
protect-locked-access discuter | Vous n’avez pas les droits nécessaires pour modifier les niveaux de protection de pages. Voici les réglages actuels de la page '''$1''' : |
|
protect-locked-blocked discuter | Vous ne pouvez pas modifier les niveaux de protection tant que vous êtes bloqué{{GENDER:||e|(e)}}. Voici les réglages actuels de la page '''$1''' : |
|
protect-locked-dblock discuter | Le niveau de protection ne peut pas être modifié car la base de données est verrouillée. Voici les réglages actuels de la page '''$1''' : |
|
protect-otherreason discuter | Motif autre ou supplémentaire : |
|
protect-otherreason-op discuter | motif autre ou supplémentaire |
|
protect-othertime discuter | Autre date d’expiration : |
|
protect-othertime-op discuter | autre date d’expiration |
|
protect-summary-cascade discuter | protection en cascade |
|
protect-text discuter | Vous pouvez consulter et modifier le niveau de protection de la page '''<nowiki>$1</nowiki>'''. |
|
protect-title discuter | Changer le niveau de protection pour « $1 » |
|
protect-unchain discuter | Débloquer les permissions de renommage |
|
protect_change discuter | modifier |
|
protect_expiry_invalid discuter | La date d’expiration est invalide. |
|
protect_expiry_old discuter | La date d’expiration est déjà passée. |
|
protectcomment discuter | Motif de la protection : |
|
protectedarticle discuter | a protégé « [[$1]] » |
|
protectedinterface discuter | Cette page fournit du texte d’interface pour le logiciel et est protégée pour éviter les abus. |
|
protectedpage discuter | Page protégée |
|
protectedpages discuter | Pages protégées |
|
protectedpages-cascade discuter | Uniquement les protections en cascade |
|
protectedpages-indef discuter | Uniquement les protections permanentes |
|
protectedpages-summary discuter | |
|
protectedpagesempty discuter | Aucune page n’est protégée actuellement. |
|
protectedpagestext discuter | Les pages suivantes sont protégées contre les modifications et/ou le renommage. |
|
protectedpagetext discuter | Cette page a été protégée pour empêcher sa modification. |
|
protectedpagewarning discuter | '''AVERTISSEMENT : cette page est protégée. Seuls les utilisateurs ayant le statut d’administrateur peuvent la modifier.''' |
|
protectedtitles discuter | Titres protégés |
|
protectedtitles-summary discuter | |
|
protectedtitlesempty discuter | Aucun titre n’est actuellement protégé avec ces paramètres. |
|
protectedtitlestext discuter | Les titres suivants sont protégés à la création |
|
protectexpiry discuter | Date d’expiration : |
|
protectlogpage discuter | Journal des protections |
|
protectlogtext discuter | Voici une liste historique des protections et déprotections de pages. Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la liste des protections actuellement opérationnelles. |
|
protectthispage discuter | Protéger cette page |
|
proxyblocker discuter | Bloqueur de mandataires |
|
proxyblocker-disabled discuter | Cette fonction est désactivée. |
|
proxyblockreason discuter | Votre adresse IP a été bloquée car il s’agit d’un mandataire ouvert. Veuillez contacter votre fournisseur d’accès Internet ou votre support technique et l’informer de ce sérieux problème de sécurité. |
|
proxyblocksuccess discuter | Fait. |
|
pubmedurl discuter | http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=pubmed&dopt=Abstract&list_uids=$1 |
|
qbbrowse discuter | Défiler |
|
qbedit discuter | Modifier |
|
qbfind discuter | Rechercher |
|
qbmyoptions discuter | Mes options |
|
qbpageinfo discuter | Page d’information |
|
qbpageoptions discuter | Page d’option |
|
qbsettings discuter | Barre d’outils |
|
qbsettings-fixedleft discuter | Gauche |
|
qbsettings-fixedright discuter | Droite |
|
qbsettings-floatingleft discuter | Flottante à gauche |
|
qbsettings-floatingright discuter | Flottante à droite |
|
qbsettings-none discuter | Aucune |
|
qbspecialpages discuter | Pages spéciales |
|
querypage-no-updates discuter | Les mises à jour pour cette page sont actuellement désactivées. Les données ci-dessous ne sont pas mises à jour. |
|
randompage discuter | Page au hasard |
|
randompage-nopages discuter | Il n’y a aucune page dans l’espace de noms « $1 ». |
|
randompage-url discuter | Special:Random |
|
randomredirect discuter | Page de redirection au hasard |
|
randomredirect-nopages discuter | Il n’y a aucune page de redirection dans l’espace de noms « $1 ». |
|
range_block_disabled discuter | Le droit administrateur de créer des blocages de plages IP est désactivé. |
|
rc-change-size discuter | $1 |
|
rc-enhanced-expand discuter | Voir les détails (nécessite JavaScript) |
|
rc-enhanced-hide discuter | Masquer les détails |
|
rc_categories discuter | Limite des catégories (séparation avec « | ») |
|
rc_categories_any discuter | Toutes |
|
rclinks discuter | Afficher les $1 dernières modifications effectuées au cours des $2 derniers jours<br />$3. |
|
rclistfrom discuter | Afficher les nouvelles modifications depuis le $1. |
|
rcnote discuter | Voici {{PLURAL:$1|la dernière modification effectuée|les $1 dernières modifications effectuées}} durant {{PLURAL:$2|la dernière journée|les <b>$2</b> derniers jours}} jusqu’à $5 le $4. |
|
rcnotefrom discuter | Voici les modifications effectuées depuis le '''$2''' ('''$1''' au maximum). |
|
rcpatroldisabled discuter | La fonction de patrouille des modifications récentes n’est pas activée. |
|
rcpatroldisabledtext discuter | La fonctionnalité de surveillance des modifications récentes n’est pas activée. |
|
rcshowhideanons discuter | $1 les utilisateurs anonymes |
|
rcshowhidebots discuter | $1 les bots |
|
rcshowhideliu discuter | $1 les utilisateurs inscrits |
|
rcshowhidemine discuter | $1 mes modifications |
|
rcshowhideminor discuter | $1 les modifications mineures |
|
rcshowhidepatr discuter | $1 les modifications surveillées |
|
readonly discuter | Base de données verrouillée |
|
readonly_lag discuter | La base de données a été automatiquement verrouillée pendant que les serveurs secondaires rattrapent leur retard sur le serveur principal. |
|
readonlytext discuter | Les ajouts et mises à jour de la base de données sont actuellement bloqués, probablement pour permettre la maintenance de la base, après quoi, tout rentrera dans l’ordre. L’administrateur ayant verrouillé la base de données a donné l’explication suivante : $1 |
|
readonlywarning discuter | '''AVERTISSEMENT : La base de données a été verrouillée pour des opérations de maintenance, vous ne pouvez donc pas publier vos modifications pour l’instant.''' Vous pouvez copier le texte dans un fichier texte et le conserver pour plus tard. L’administrateur ayant verrouillé la base de données a donné l’explication suivante : $1 |
|
reblock-logentry discuter | a modifié les paramètres du blocage de [[$1]] avec une expiration au $2 $3 |
|
recentchanges discuter | Modifications récentes |
|
recentchanges-feed-description discuter | Suivre les dernières modifications de ce wiki dans un flux. |
|
recentchanges-legend discuter | Options des modifications récentes |
|
recentchanges-url discuter | Special:RecentChanges |
|
recentchangesall discuter | toutes |
|
recentchangescount discuter | Nombre de modifications à afficher dans les modifications récentes, pages d’historiques et d’opérations, par défaut : |
|
recentchangesdays discuter | Nombre de jours à afficher dans les modifications récentes : |
|
recentchangesdays-max discuter | (maximum $1 jour{{PLURAL:$1||s}}) |
|
recentchangeslinked discuter | Suivi des pages liées |
|
recentchangeslinked-backlink discuter | ← $1 |
|
recentchangeslinked-noresult discuter | Il n’y a pas de modification sur les pages liées pendant la période choisie. |
|
recentchangeslinked-page discuter | Nom de la page : |
|
recentchangeslinked-summary discuter | Cette page spéciale montre les modifications récentes sur les pages qui sont liées. Les pages de votre liste de suivi sont '''en gras'''. |
|
recentchangeslinked-title discuter | Suivi des pages associées à « $1 » |
|
recentchangeslinked-to discuter | Afficher les modifications des pages qui comportent un lien vers la page donnée plutôt que l’inverse |
|
recentchangestext discuter | Piste les changements les plus récents du wiki sur cette page. |
|
recreate discuter | Recréer |
|
recreate-deleted-warn discuter | '''Attention : vous êtes en train de recréer une page qui a été précédemment supprimée.''' Demandez-vous s’il est réellement approprié de la recréer en vous référant à l’historique des suppressions affiché ci-dessous : |
|
red-link-title discuter | $1 (page inexistante) |
|
redirectedfrom discuter | (Redirigé depuis $1) |
|
redirectpagesub discuter | Page de redirection |
|
redirectstofile discuter | {{PLURAL:$1|Le fichier suivant redirige|Les fichiers suivants redirigent}} vers celui-ci : |
|
remembermypassword discuter | Me reconnecter automatiquement à la prochaine visite (cookie) |
|
removedwatch discuter | Retirée de la liste de suivi |
|
removedwatchtext discuter | La page « [[:$1]] » a été retirée de votre [[Special:Watchlist|liste de suivi]]. |
|
resetpass discuter | Changer le mot de passe |
|
resetpass-comment discuter | Raison pour la réinitialisation du mot de passe : |
|
resetpass-log discuter | Journal des réinitialisations de mot de passe |
|
resetpass-logentry discuter | a changé le mot de passe de $1 |
|
resetpass-logtext discuter | Voici la liste des utilisateurs dont le mot de passe a été réinitialisé par un administrateur. |
|
resetpass-no-info discuter | Vous devez être connecté pour avoir accès à cette page. |
|
resetpass-submit-loggedin discuter | Changer le mot de passe |
|
resetpass-temp-password discuter | Mot de passe temporaire : |
|
resetpass-wrong-oldpass discuter | Mot de passe actuel ou temporaire invalide. Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire. |
|
resetpass_announce discuter | Vous vous êtes enregistré{{GENDER:||e|(e)}} avec un mot de passe temporaire envoyé par courriel. Pour terminer l’enregistrement, vous devez entrer un nouveau mot de passe ici : |
|
resetpass_bad_temporary discuter | Mot de passe temporaire invalide. Vous avez peut-être déjà changé votre mot de passe, ou demandé un nouveau mot de passe temporaire. |
|
resetpass_forbidden discuter | Les mots de passe ne peuvent pas être changés |
|
resetpass_header discuter | Changer le mot de passe du compte |
|
resetpass_submit discuter | Changer le mot de passe et se connecter |
|
resetpass_success discuter | Votre mot de passe a été changé avec succès ! Connexion en cours... |
|
resetpass_text discuter | <!-- Ajoutez le texte ici --> |
|
resetprefs discuter | Rétablir les préférences |
|
restorelink discuter | {{PLURAL:$1|la modification effacée|les $1 modifications effacées}} |
|
restoreprefs discuter | Restaurer toutes les valeurs par défaut |
|
restriction-create discuter | Créer |
|
restriction-edit discuter | Modifier |
|
restriction-level discuter | Niveau de restriction : |
|
restriction-level-all discuter | tout niveau |
|
restriction-level-autoconfirmed discuter | semi-protection |
|
restriction-level-sysop discuter | protection complète |
|
restriction-move discuter | Renommer |
|
restriction-type discuter | Permission : |
|
restriction-upload discuter | Téléverser |
|
resultsperpage discuter | Nombre de réponses par page : |
|
retrievedfrom discuter | Récupérée de « $1 » |
|
returnto discuter | Revenir à la page $1. |
|
retypenew discuter | Confirmer le nouveau mot de passe : |
|
reupload discuter | Téléverser à nouveau |
|
reuploaddesc discuter | Annuler et retourner au formulaire de téléversement |
|
rev-deleted-comment discuter | (commentaire supprimé) |
|
rev-deleted-event discuter | (entrée supprimée) |
|
rev-deleted-no-diff discuter | Vous ne pouvez par voir ce diff parce qu’une des versions a été '''supprimée'''. Il peut y avoir plus de détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} jounral des suppressions]. |
|
rev-deleted-text-permission discuter | Cette version de la page a été '''supprimée'''. Il peut y avoir des détails dans l’[{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} historique des suppressions]. |
|
rev-deleted-text-view discuter | Cette version de la page a été '''supprimée'''. En tant qu’administrateur, vous pouvez la visualiser ; il peut y avoir des détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} journal des suppressions]. |
|
rev-deleted-unhide-diff discuter | Une des révisions de cette différence a été '''supprimée'''. Il peut y avoir plus de détails dans le [{{fullurl:Special:Log/delete|page={{FULLPAGENAMEE}}}} journal des suppressions]. En tant qu’administrateur vous pouvez toujours [$1 voir cette différence] si vous le voulez. |
|
rev-deleted-user discuter | (nom d’utilisateur supprimé) |
|
rev-delundel discuter | afficher/masquer |
|
revdel-restore discuter | Modifier la visibilité |
|
revdelete-content discuter | contenu |
|
revdelete-hid discuter | a caché $1 |
|
revdelete-hide-comment discuter | Masquer le commentaire de modification |
|
revdelete-hide-image discuter | Masquer le contenu du fichier |
|
revdelete-hide-name discuter | Masquer l’action et la cible |
|
revdelete-hide-restricted discuter | Supprimer ces données aux administrateurs ainsi qu’aux autres |
|
revdelete-hide-text discuter | Masquer le texte de la version |
|
revdelete-hide-user discuter | Masquer le pseudo ou l’adresse IP du contributeur. |
|
revdelete-legend discuter | Mettre en place des restrictions de visibilité : |
|
revdelete-log discuter | Commentaire pour le journal : |
|
revdelete-log-message discuter | $1 pour $2 version{{PLURAL:$2||s}} |
|
revdelete-logentry discuter | a modifié la visibilité de la version de [[$1]] |
|
revdelete-nologid-text discuter | Vous n’avez pas spécifié une entrée du journal sur laquelle cette action doit être effectuée, ou alors l’événement spécifié n’existe pas. |
|
revdelete-nologid-title discuter | Entrée du journal invalide |
|
revdelete-nologtype-text discuter | Vous n’avez pas spécifié un type de journal sur lequel cette action doit être réalisée. |
|
revdelete-nologtype-title discuter | Aucun type de journal spécifié |
|
revdelete-nooldid-text discuter | Vous n’avez pas précisé la version cible de cette fonction, elle n’existe pas, ou il s’agit de la version actuelle. |
|
revdelete-nooldid-title discuter | Version cible non valide |
|
revdelete-restricted discuter | a appliqué les restrictions aux administrateurs |
|
revdelete-selected discuter | '''{{PLURAL:$2|Version sélectionnée|Versions sélectionnées}} de '''[[:$1]]''' :''' |
|
revdelete-submit discuter | Appliquer à la version sélectionnée |
|
revdelete-success discuter | '''Visibilité des versions changée avec succès.''' |
|
revdelete-summary discuter | résumé de modification |
|
revdelete-suppress discuter | Cacher les données également pour les administrateurs |
|
revdelete-suppress-text discuter | La suppression ne doit être utilisée '''que''' dans les cas suivants : * Informations personnelles inappropriées *: ''adresse, numéro de téléphone, numéro de sécurité sociale, ...'' |
|
revdelete-text discuter | '''Les versions et événements supprimés seront encore présents dans l’historique de la page et dans les journaux, mais leur contenu textuel sera inaccessible au public.''' Les autres administrateurs de {{SITENAME}} pourront toujours accéder au contenu caché et le restaurer à travers cette même interface, à moins que des restrictions supplémentaires ne soit mises en place. Confirmez que ceci est bien ce que vous avez l’intention de faire, que vous en comprenez les conséquences, et que vous faîtes ceci en respect des [[{{MediaWiki:Policy-url}}|règles établies]]. |
|
revdelete-toomanytargets-text discuter | Vous avez spécifié trop de types de cibles différentes sur lesquelles cette action doit être réalisée. |
|
revdelete-toomanytargets-title discuter | Trop de cibles |
|
revdelete-uname discuter | nom d’utilisateur |
|
revdelete-unhid discuter | a démasqué $1 |
|
revdelete-unrestricted discuter | restrictions retirées pour les administrateurs |
|
revdelete-unsuppress discuter | Enlever les restrictions sur les versions restaurées |
|
reverted discuter | Version précédente rétablie |
|
revertmerge discuter | Séparer |
|
revertmove discuter | rétablir |
|
revertpage discuter | Révocation des modifications de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) vers la dernière version de [[User:$1|$1]] |
|
revision-info discuter | Version du $1 par $2 |
|
revision-info-current discuter | - |
|
revision-nav discuter | ($1) $2{{int:pipe-separator}}$3 ($4){{int:pipe-separator}}$5 ($6) |
|
revisionasof discuter | Version du $1 |
|
revisiondelete discuter | Supprimer ou restaurer des événements |
|
rfcurl discuter | http://tools.ietf.org/html/rfc$1 |
|
right-apihighlimits discuter | Utiliser des limites plus élevées dans les requêtes API |
|
right-autoconfirmed discuter | Modifier les pages semi-protégées |
|
right-autopatrol discuter | Avoir ses modifications automatiquement marquées comme surveillées |
|
right-bigdelete discuter | Supprimer des pages ayant un gros historique |
|
right-block discuter | Bloquer en écriture d’autres utilisateurs |
|
right-blockemail discuter | Empêcher un utilisateur d’envoyer des courriels |
|
right-bot discuter | Être traité comme un processus automatisé |
|
right-browsearchive discuter | Rechercher des pages supprimées |
|
right-createaccount discuter | Créer des comptes utilisateur |
|
right-createpage discuter | Créer des pages (qui ne sont pas des pages de discussion) |
|
right-createtalk discuter | Créer des pages de discussion |
|
right-delete discuter | Supprimer des pages |
|
right-deletedhistory discuter | Voir les entrées des historiques supprimés mais sans leur texte |
|
right-deleterevision discuter | Supprimer ou restaurer une version particulière d’une page |
|
right-edit discuter | Modifier les pages |
|
right-editinterface discuter | Modifier l’interface utilisateur |
|
right-editprotected discuter | Modifier les pages protégées (sans protection en cascade) |
|
right-editusercssjs discuter | Modifier les fichiers CSS et JS d’autres utilisateurs |
|
right-hideuser discuter | Bloquer un utilisateur en masquant son nom au public |
|
right-import discuter | Importer des pages depuis d’autres wikis |
|
right-importupload discuter | Importer des pages depuis un fichier |
|
right-ipblock-exempt discuter | Ne pas être affecté par les IP bloquées, les blocages automatiques et les blocages de plages d’IP |
|
right-maintenance discuter | Lancer des scripts de maintenance depuis [[Special:Maintenance]] |
|
right-markbotedits discuter | Marquer des modifications révoquées comme ayant été faites par un bot |
|
right-mergehistory discuter | Fusionner les historiques des pages |
|
right-minoredit discuter | Marquer ses modifications comme mineures |
|
right-move discuter | Renommer des pages |
|
right-move-rootuserpages discuter | Renommer la page principale d’un utilisateur |
|
right-move-subpages discuter | Renommer des pages avec leurs sous-pages |
|
right-movefile discuter | Renommer des fichiers |
|
right-nominornewtalk discuter | Ne pas déclencher la notification de nouveau message lorsqu’on effectue une modification mineure sur la page de discussion d’un utilisateur |
|
right-noratelimit discuter | Ne pas être affecté par les limites de taux |
|
right-override-export-depth discuter | Exporter les pages en incluant les pages liées jusqu’à une profondeur de 5 niveaux |
|
right-patrol discuter | Marquer des modifications des autres comme vérifiées |
|
right-patrolmarks discuter | Voir les marquages de surveillance dans les modifications récentes |
|
right-protect discuter | Modifier le niveau de protection des pages et modifier les pages protégées |
|
right-proxyunbannable discuter | Ne pas être affecté par les blocages automatiques de serveurs mandataires |
|
right-purge discuter | Purger le cache des pages sans demande de confirmation |
|
right-read discuter | Lire les pages |
|
right-reset-passwords discuter | Changer le mot de passe d’autres utilisateurs |
|
right-reupload discuter | Écraser un fichier existant |
|
right-reupload-own discuter | Écraser un fichier que l’on a soi-même téléversé |
|
right-reupload-shared discuter | Écraser localement un fichier présent sur un dépôt partagé |
|
right-rollback discuter | Révoquer rapidement les modifications du dernier contributeur d’une page particulière |
|
right-siteadmin discuter | Verrouiller ou déverrouiller la base de données |
|
right-suppressionlog discuter | Voir les journaux privés |
|
right-suppressredirect discuter | Ne pas créer de redirection depuis le titre d’origine en renommant une page |
|
right-suppressrevision discuter | Examiner et restaurer les versions masquées aux administrateurs |
|
right-trackback discuter | Ajouter des rétroliens |
|
right-undelete discuter | Restaurer une page supprimée |
|
right-unwatchedpages discuter | Voir la liste des pages non suivies |
|
right-upload discuter | Téléverser des fichiers |
|
right-upload_by_url discuter | Téléverser un fichier depuis une adresse URL |
|
right-userrights discuter | Modifier tous les droits d’un utilisateur |
|
right-userrights-interwiki discuter | Modifier les droits d’utilisateurs qui sont sur un autre wiki |
|
right-writeapi discuter | Utiliser l’API de modification du wiki |
|
rightslog discuter | Journal des modifications de statut utilisateur |
|
rightslogentry discuter | a modifié les droits de l’utilisateur « $1 » de $2 à $3 |
|
rightslogtext discuter | Voici l’historique des modifications de statut des utilisateurs. |
|
rightsnone discuter | (aucun) |
|
rollback discuter | Révoquer les modifications |
|
rollback-success discuter | Révocation des modifications effectuées par $1 ; rétablissement de la dernière version par $2. |
|
rollback_short discuter | Révoquer |
|
rollbackfailed discuter | La révocation a échoué |
|
rollbacklink discuter | révoquer |
|
rows discuter | Rangées : |
|
sat discuter | sam |
|
saturday discuter | samedi |
|
savearticle discuter | Publier |
|
savedprefs discuter | Les préférences ont été sauvegardées. |
|
savefile discuter | Sauvegarder le fichier |
|
saveprefs discuter | Enregistrer les préférences |
|
saveusergroups discuter | Sauvegarder les groupes utilisateur |
|
scarytranscludedisabled discuter | [La transclusion interwiki est désactivée] |
|
scarytranscludefailed discuter | [La récupération de modèle a échoué pour $1] |
|
scarytranscludetoolong discuter | [L’URL est trop longue] |
|
search discuter | Rechercher |
|
search-external discuter | Recherche externe |
|
search-interwiki-caption discuter | Projets frères |
|
search-interwiki-custom discuter | |
|
search-interwiki-default discuter | Résultats sur $1 : |
|
search-interwiki-more discuter | (plus) |
|
search-mwsuggest-disabled discuter | sans suggestions |
|
search-mwsuggest-enabled discuter | avec suggestions |
|
search-nonefound discuter | Il n’y a aucun résultat correspondant à la requête. |
|
search-redirect discuter | (redirection depuis $1) |
|
search-relatedarticle discuter | Relaté |
|
search-result-score discuter | Pertinence : $1% |
|
search-result-size discuter | $1 ($2 mot{{PLURAL:$2||s}}) |
|
search-section discuter | (section $1) |
|
search-suggest discuter | Essayez avec cette orthographe : $1 |
|
searchall discuter | Tous |
|
searcharticle discuter | Lire |
|
searchbutton discuter | Rechercher |
|
searchdisabled discuter | La recherche sur {{SITENAME}} est désactivée. En attendant la réactivation, vous pouvez effectuer une recherche via Google. Attention, leur indexation du contenu de {{SITENAME}} peut ne pas être à jour. |
|
searchhelp-url discuter | Help:Accueil |
|
searchmenu-exists discuter | '''Il y a une page ayant comme titre « [[:$1]] » sur ce wiki''' |
|
searchmenu-help discuter | [[{{MediaWiki:Searchhelp-url}}|{{int:help}}]]? |
|
searchmenu-legend discuter | Options de recherche |
|
searchmenu-new discuter | '''Créer la page « [[:$1|$1]] » sur ce wiki !''' |
|
searchmenu-prefix discuter | [[Special:PrefixIndex/$1|Rechercher les pages commençant par ce préfixe]] |
|
searchprofile-advanced discuter | Recherche avancée |
|
searchprofile-advanced-tooltip discuter | Choisir les espaces de noms pour la recherche |
|
searchprofile-articles discuter | Pages de contenu |
|
searchprofile-articles-and-proj discuter | Pages de contenu et projet |
|
searchprofile-articles-tooltip discuter | Rechercher dans $1 |
|
searchprofile-everything discuter | Tout |
|
searchprofile-everything-tooltip discuter | Rechercher dans tout le site (y compris dans les pages de discussion) |
|
searchprofile-images discuter | Fichiers |
|
searchprofile-images-tooltip discuter | Rechercher des fichiers multimédias |
|
searchprofile-project discuter | Pages du projet |
|
searchprofile-project-tooltip discuter | Rechercher dans $1 |
|
searchrelated discuter | relaté |
|
searchresults discuter | Résultats de la recherche |
|
searchresults-title discuter | Résultats de recherche pour « $1 » |
|
searchresultshead discuter | Recherches |
|
searchresulttext discuter | Pour plus d’informations sur la recherche dans {{SITENAME}}, voir [[{{MediaWiki:Helppage}}|{{int:help}}]]. |
|
searchsubtitle discuter | Vous avez recherché « '''[[:$1]]''' » ([[Special:Prefixindex/$1|toutes les pages commençant par « $1 »]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|toutes les pages qui ont un lien vers « $1 »]]) |
|
searchsubtitleinvalid discuter | Vous avez recherché « '''$1''' » |
|
seconds-abbrev discuter | s |
|
sectionlink discuter | → |
|
selectcategory-boxlabel discuter | Categories |
|
selectcategory-subtitle discuter | Shift+Souris afin de (de)sélectionner plusieurs catégories d'affilées, Ctrl+Souris afin de (de)sélectionner des catégories. |
|
selectcategory-taglabel discuter | Popular Categories |
|
selectcategory-title discuter | Choix de catégories |
|
selectcategory-tooltip discuter | Click here to add or remove this category! |
|
selectcategory-userexplanation discuter | A category is a <b>grouping of related articles</b>. You can <b>add this wiki article</b> to one or many of the below categories by:<br>1. Type in a new category name into the input box. <br>2. Type in the name of an existing category into the input box and select from the suggestions below it. <br>3. Select one of the categories from Popular Categories.<br><br> <b>For example</b>, if you are creating a new Solution Offering article, then you should add the category Solution Offerings to the article. Users will then be able to find all Solution Offerings (including the one that you just created) by clicking on the Solution Offerings category link on the bottom of the article page. <br><br>For <b>more information</b> on Categories, click on <b>Help</b> on the left of the page. |
|
selfmove discuter | Les titres d’origine et de destination sont les mêmes ; impossible de renommer une page sur elle-même. |
|
semicolon-separator discuter | ;  |
|
semiprotectedpagewarning discuter | '''Note :''' Cette page a été protégée de telle façon que seuls les contributeurs enregistrés puissent la modifier. |
|
sep discuter | sep |
|
september discuter | septembre |
|
september-gen discuter | septembre |
|
servertime discuter | Heure du serveur : |
|
session_fail_preview discuter | '''Nous ne pouvons enregistrer votre modification à cause d’une perte d’informations concernant votre session.''' Veuillez réessayer. Si cela échoue de nouveau, essayez en vous [[Special:UserLogout|déconnectant]], puis en vous reconnectant. |
|
session_fail_preview_html discuter | '''Nous ne pouvons enregistrer votre modification à cause d’une perte d’informations concernant votre session.''' ''Parce que {{SITENAME}} a activé le HTML brut, la prévisualisation a été masquée afin de prévenir les attaques par JavaScript.'' '''Si la tentative de modification était légitime, veuillez réessayer.''' Si cela échoue de nouveau, [[Special:UserLogout|déconnectez-vous]], puis reconnectez-vous. |
|
sessionfailure discuter | Votre session de connexion semble avoir des problèmes ; cette action a été annulée en prévention d’un piratage de session. Veuillez cliquer sur « Précédent », rechargez la page d’où vous venez, puis réessayez. |
|
shared-repo discuter | un dépôt partagé |
|
shared-repo-from discuter | de $1 |
|
shareddescriptionfollows discuter | - |
|
sharedupload discuter | Ce fichier provient de $1 et peut être utilisé par d’autres projets. |
|
shareduploadwiki discuter | Reportez-vous à la $1 pour plus d’informations. |
|
shareduploadwiki-desc discuter | La description affichée ci-dessous est issue de sa $1 dans le dépôt partagé. |
|
shareduploadwiki-linktext discuter | page de description du fichier |
|
shortpages discuter | Pages courtes |
|
shortpages-summary discuter | |
|
show discuter | afficher |
|
show-big-image discuter | Image en plus haute résolution |
|
show-big-image-thumb discuter | <small>Taille de cet aperçu : $1 × $2 pixels</small> |
|
showdiff discuter | Modifications en cours |
|
showhidebots discuter | ($1 bots) |
|
showingresults discuter | Affichage de <b>$1</b> résultat{{PLURAL:$1||s}} à partir du #<b>$2</b>. |
|
showingresultsnum discuter | Affichage de <b>$3</b> résultat{{PLURAL:$3||s}} à partir du #<b>$2</b>. |
|
showingresultstotal discuter | Affichage {{PLURAL:$4|du résultat '''$1'''|des résultats '''$1 – $2'''}} sur '''$3''' |
|
showlivepreview discuter | Aperçu rapide |
|
shown-title discuter | Afficher $1 résultat{{PLURAL:$1||s}} par page |
|
showpreview discuter | Prévisualiser |
|
showtoc discuter | afficher |
|
sidebar discuter | * navigation ** mainpage|mainpage-description ** portal-url|portal ** currentevents-url|currentevents ** recentchanges-url|recentchanges ** randompage-url|randompage ** helppage|help * SEARCH * TOOLBOX * LANGUAGES |
|
sig_tip discuter | Votre signature avec la date |
|
signature discuter | [[{{ns:user}}:$1|$2]] |
|
signature-anon discuter | [[{{#special:Contributions}}/$1|$2]] |
|
signupend discuter | {{int:loginend}} |
|
simple.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Simple. */ |
|
simple.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Simple uniquement */ |
|
site-atom-feed discuter | Flux Atom de $1 |
|
site-rss-feed discuter | Flux RSS de $1 |
|
sitenotice discuter | - |
|
sitesubtitle discuter | |
|
sitetitle discuter | {{SITENAME}} |
|
siteuser discuter | Utilisateur $1 de {{SITENAME}} |
|
siteusers discuter | {{PLURAL:$2|l’utilisateur|les utilisateurs}} $1 sur {{SITENAME}} |
|
size-bytes discuter | $1 o |
|
size-gigabytes discuter | $1 Gio |
|
size-kilobytes discuter | $1 Kio |
|
size-megabytes discuter | $1 Mio |
|
skin discuter | Habillage |
|
skin-preview discuter | Prévisualiser |
|
skinname-chick discuter | Poussin |
|
skinname-cologneblue discuter | Bleu de Cologne |
|
skinname-modern discuter | Moderne |
|
skinname-monobook discuter | Monobook |
|
skinname-myskin discuter | Mon Interface |
|
skinname-nostalgia discuter | Nostalgie |
|
skinname-simple discuter | Simple |
|
skinname-standard discuter | Standard |
|
sorbs discuter | DNSBL |
|
sorbs_create_account_reason discuter | Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}. Vous ne pouvez pas créer un compte. |
|
sorbsreason discuter | Votre adresse IP est listée comme mandataire ouvert dans le DNSBL utilisé par {{SITENAME}}. |
|
sourcefilename discuter | Nom du fichier source : |
|
sp-contributions-blocklog discuter | journal des blocages |
|
sp-contributions-explain discuter | |
|
sp-contributions-footer discuter | - |
|
sp-contributions-footer-anon discuter | - |
|
sp-contributions-logs discuter | journaux |
|
sp-contributions-newbies discuter | Ne montrer que les contributions des nouveaux utilisateurs |
|
sp-contributions-newbies-sub discuter | Parmi les nouveaux comptes |
|
sp-contributions-newbies-title discuter | Contributions d’utilisateurs parmi les nouveaux comptes |
|
sp-contributions-search discuter | Rechercher les contributions |
|
sp-contributions-submit discuter | Rechercher |
|
sp-contributions-username discuter | Adresse IP ou nom d’utilisateur : |
|
sp-newimages-showfrom discuter | Afficher les nouveaux fichiers à partir du $1 à $2 |
|
spam_blanking discuter | Toutes les versions contenant des liens vers $1 sont blanchies |
|
spam_reverting discuter | Rétablissement de la dernière version ne contenant pas de lien vers $1 |
|
spambot_username discuter | Nettoyage de pourriels par MediaWiki |
|
spamprotectionmatch discuter | La chaîne de caractères « '''$1''' » a déclenché le détecteur de pourriel. |
|
spamprotectiontext discuter | La page que vous avez voulu publier a été bloquée par le filtre anti-pourriel. Ceci est probablement causé par un lien sur liste noire pointant vers un site externe. |
|
spamprotectiontitle discuter | Page automatiquement protégée pour cause de spam |
|
special-categories-sort-abc discuter | tri alphabétique |
|
special-categories-sort-count discuter | tri par nombre d’éléments |
|
speciallogtitlelabel discuter | Titre : |
|
specialloguserlabel discuter | Utilisateur : |
|
specialpage discuter | Page spéciale |
|
specialpage-empty discuter | Il n’y a aucun résultat à afficher. |
|
specialpages discuter | Pages spéciales |
|
specialpages-group-changes discuter | Modifications récentes et journaux |
|
specialpages-group-highuse discuter | Pages d’utilisation intensive |
|
specialpages-group-login discuter | S’identifier / s’inscrire |
|
specialpages-group-maintenance discuter | Rapports de maintenance |
|
specialpages-group-media discuter | Rapports et téléversements de fichiers médias |
|
specialpages-group-other discuter | Autres pages spéciales |
|
specialpages-group-pages discuter | Listes de pages |
|
specialpages-group-pagetools discuter | Outils pour les pages |
|
specialpages-group-redirects discuter | Pages spéciales redirigées |
|
specialpages-group-spam discuter | Outils anti-pourriel |
|
specialpages-group-users discuter | Utilisateurs et droits rattachés |
|
specialpages-group-wiki discuter | Données du wiki et outils |
|
specialpages-note discuter | ---- * Pages spéciales normales. * <strong class="mw-specialpagerestricted">Pages spéciales restreintes.</strong> |
|
specialpages-summary discuter | |
|
sqlhidden discuter | (Requête SQL cachée) |
|
standard.css discuter | /* Le CSS placé ici affectera les utilisateurs de l’habillage Standard. */ |
|
standard.js discuter | /* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Standard uniquement */ |
|
statistics discuter | Statistiques |
|
statistics-articles discuter | Pages de contenu |
|
statistics-edits discuter | Modifications de pages depuis l’installation de {{SITENAME}} |
|
statistics-edits-average discuter | Nombre moyen de modifications par page |
|
statistics-files discuter | Fichiers téléversés |
|
statistics-footer discuter | |
|
statistics-header-edits discuter | Statistiques des modifications |
|
statistics-header-pages discuter | Statistiques des pages |
|
statistics-header-users discuter | Statistiques des utilisateurs |
|
statistics-header-views discuter | Statistiques des visites |
|
statistics-jobqueue discuter | Longueur de la [http://www.mediawiki.org/wiki/Manual:Job_queue liste d’attente de traitement] |
|
statistics-mostpopular discuter | Pages les plus consultées |
|
statistics-pages discuter | Pages |
|
statistics-pages-desc discuter | Toutes les pages du wiki, y compris les pages de discussion, les redirections, etc. |
|
statistics-summary discuter | |
|
statistics-users discuter | [[Special:ListUsers|Utilisateurs]] enregistrés |
|
statistics-users-active discuter | Utilisateurs actifs |
|
statistics-users-active-desc discuter | Utilisateurs ayant fait au moins une action durant {{PLURAL:$1|le dernier jours|les $1 derniers jours}} |
|
statistics-views-peredit discuter | Visites par modification |
|
statistics-views-total discuter | Visites |
|
storedversion discuter | La version enregistrée |
|
stub-threshold discuter | Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) : |
|
subcategories discuter | Sous-catégories |
|
subject discuter | Sujet / titre : |
|
subject-preview discuter | Prévisualisation du sujet/titre : |
|
successfulupload discuter | Téléversement effectué avec succès |
|
summary discuter | Résumé : |
|
summary-preview discuter | Aperçu du résumé : |
|
sun discuter | dim |
|
sunday discuter | dimanche |
|
suppress discuter | Superviser |
|
suppressedarticle discuter | a supprimé « [[$1]] » |
|
suppressionlog discuter | Journal des suppressions |
|
suppressionlogtext discuter | Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs. Voir la [[Special:IPBlockList|liste des adresses IP et utilisateurs bloqués]] pour la liste des bannissements et des blocages actuellement opérationnels. |
|
svg-long-desc discuter | (Fichier SVG, résolution de $1 × $2 pixels, taille : $3) |
|
table_pager_empty discuter | Aucun résultat |
|
table_pager_first discuter | Première page |
|
table_pager_last discuter | Dernière page |
|
table_pager_limit discuter | Montrer $1 élément{{PLURAL:$1||s}} par page |
|
table_pager_limit_submit discuter | Accéder |
|
table_pager_next discuter | Page suivante |
|
table_pager_prev discuter | Page précédente |
|
tag-filter discuter | Filtrer les [[Special:Tags|balises]] : |
|
tag-filter-submit discuter | Filtrer |
|
tagline discuter | De {{SITENAME}}. |
|
tags discuter | Balises des modifications valides |
|
tags-description-header discuter | Description complète de la balise |
|
tags-display-header discuter | Apparence dans les listes de modifications |
|
tags-edit discuter | modifier |
|
tags-hitcount discuter | $1 modification{{PLURAL:$1||s}} |
|
tags-hitcount-header discuter | Modifications balisées |
|
tags-intro discuter | Cette page liste les balises que le logiciel peut utiliser pour marquer une modification avec, et leur signification. |
|
tags-tag discuter | Nom interne de la balise |
|
tags-title discuter | Balises |
|
talk discuter | Discussion |
|
talkexists discuter | '''La page elle-même a été déplacée avec succès, mais la page de discussion n’a pas pu être déplacée car il en existait déjà une sous le nouveau nom. Veuillez les fusionner manuellement.''' |
|
talkpage discuter | Discussion sur cette page |
|
talkpagelinktext discuter | discuter |
|
talkpagetext discuter | <!-- MediaWiki:talkpagetext --> |
|
template-protected discuter | (protégé) |
|
template-semiprotected discuter | (semi-protégé) |
|
templatepage discuter | Voir la page du modèle |
|
templatesused discuter | Modèles utilisés sur cette page : |
|
templatesusedpreview discuter | Modèles utilisés dans cette prévisualisation : |
|
templatesusedsection discuter | Modèles utilisés dans cette section : |
|
textboxsize discuter | Fenêtre de modification |
|
textmatches discuter | Correspondances dans le texte des pages |
|
thisisdeleted discuter | Désirez-vous afficher ou restaurer $1 ? |
|
throttled-mailpassword discuter | Un courriel de rappel de votre mot de passe a déjà été envoyé durant {{PLURAL:$1|la dernière heure|les $1 dernières heures}}. Afin d’éviter les abus, un seul courriel de rappel sera envoyé par {{PLURAL:$1|heure|intervalle de $1 heures}}. |
|
thu discuter | jeu |
|
thumbnail-more discuter | Agrandir |
|
thumbnail_dest_directory discuter | Impossible de créer le répertoire de destination |
|
thumbnail_error discuter | Erreur lors de la création de la miniature : $1 |
|
thumbnail_invalid_params discuter | Paramètres de la miniature incorrects |
|
thumbsize discuter | Taille de la miniature : |
|
thursday discuter | jeudi |
|
timezone-utc discuter | UTC |
|
timezonelegend discuter | Fuseau horaire : |
|
timezoneoffset discuter | Décalage horaire¹ : |
|
timezoneregion-africa discuter | Afrique |
|
timezoneregion-america discuter | Amérique |
|
timezoneregion-antarctica discuter | Antarctique |
|
timezoneregion-arctic discuter | Arctique |
|
timezoneregion-asia discuter | Asie |
|
timezoneregion-atlantic discuter | Océan atlantique |
|
timezoneregion-australia discuter | Australie |
|
timezoneregion-europe discuter | Europe |
|
timezoneregion-indian discuter | Océan indien |
|
timezoneregion-pacific discuter | Océan pacifique |
|
timezoneselect discuter | Zone horaire |
|
timezonetext discuter | Nombre d’heures de décalage entre votre heure locale et l’heure du serveur (UTC). |
|
timezoneuseoffset discuter | Autre (spécifier le décalage) |
|
timezoneuseserverdefault discuter | Utiliser la valeur du serveur |
|
titlematches discuter | Correspondances dans les titres des pages |
|
titleprotected discuter | Ce titre a été protégé à la création par [[User:$1|$1]]. Le motif avancé est « ''$2'' ». |
|
titleprotectedwarning discuter | '''ATTENTION : Cette page a été protégée de telle manière que des [[Special:ListGroupRights|droits spécifiques]] sont requis pour pouvoir la créer.''' |
|
toc discuter | Sommaire |
|
tog-ccmeonemails discuter | M’envoyer une copie des courriels que j’envoie aux autres utilisateurs |
|
tog-diffonly discuter | Ne pas montrer le contenu des pages sous les diffs |
|
tog-editondblclick discuter | Double-cliquer permet de modifier une page (JavaScript doit être activé) |
|
tog-editsection discuter | Activer les liens « [modifier] » pour modifier une section |
|
tog-editsectiononrightclick discuter | Un clic droit sur un titre de section permet de modifier celle-ci (JavaScript doit être activé) |
|
tog-editwidth discuter | Afficher la fenêtre de modification en pleine largeur |
|
tog-enotifminoredits discuter | M’avertir par courriel même en cas de modification mineure |
|
tog-enotifrevealaddr discuter | Afficher mon adresse électronique dans les courriels d’avertissement |
|
tog-enotifusertalkpages discuter | M’avertir par courriel si ma page de discussion est modifiée |
|
tog-enotifwatchlistpages discuter | M’avertir par courriel lorsqu’une page de ma liste de suivi est modifiée |
|
tog-extendwatchlist discuter | Étendre la liste de suivi pour afficher toutes les modification et non seulement les plus récentes |
|
tog-externaldiff discuter | Utiliser un comparateur externe par défaut (pour les utilisateurs avancés, nécessite des réglages sur votre ordinateur) |
|
tog-externaleditor discuter | Utiliser un éditeur de texte externe par défaut (pour les utilisateurs avancés, nécessite des réglages sur votre ordinateur) |
|
tog-fancysig discuter | Traiter la signature comme du wikitexte (sans lien automatique) |
|
tog-forceeditsummary discuter | M’avertir lorsque je n’ai pas spécifié de résumé de modification |
|
tog-hideminor discuter | Cacher les modifications récentes mineures |
|
tog-hidepatrolled discuter | Masquer les modifications surveillées des modifications récentes |
|
tog-highlightbroken discuter | Afficher <a href="" class="new">en rouge</a> les liens vers les pages inexistantes (sinon : comme ceci<a href="" class="internal">?</a>) |
|
tog-justify discuter | Justifier les paragraphes |
|
tog-minordefault discuter | Marquer mes modifications comme mineures par défaut |
|
tog-newpageshidepatrolled discuter | Masquer les pages surveillées de la liste des nouvelles pages |
|
tog-nocache discuter | Désactiver le cache des pages |
|
tog-noconvertlink discuter | Désactiver la conversion des titres |
|
tog-nolangconversion discuter | Désactiver la conversion des variantes de langue |
|
tog-norollbackdiff discuter | Ne pas afficher le diff après avoir effectué une révocation |
|
tog-numberheadings discuter | Numéroter automatiquement les titres de section |
|
tog-previewonfirst discuter | Montrer la prévisualisation lors de la première modification |
|
tog-previewontop discuter | Montrer la prévisualisation au-dessus de la zone de modification |
|
tog-rememberpassword discuter | Se souvenir de mon mot de passe sur cet ordinateur |
|
tog-showhiddencats discuter | Afficher les catégories cachées |
|
tog-showjumplinks discuter | Activer les liens « navigation » et « recherche » en haut de page |
|
tog-shownumberswatching discuter | Afficher le nombre d’utilisateurs qui suivent cette page |
|
tog-showtoc discuter | Afficher la table des matières (pour les pages ayant plus de 3 sections) |
|
tog-showtoolbar discuter | Montrer la barre de menu de modification (JavaScript doit être activé) |
|
tog-underline discuter | Souligner les liens : |
|
tog-uselivepreview discuter | Utiliser l’aperçu rapide (JavaScript doit être activé) (expérimental) |
|
tog-usenewrc discuter | Utiliser les modifications récentes améliorées (nécessite JavaScript) |
|
tog-watchcreations discuter | Ajouter les pages que je crée à ma liste de suivi |
|
tog-watchdefault discuter | Ajouter les pages que je modifie à ma liste de suivi |
|
tog-watchdeletion discuter | Ajouter les pages que je supprime à ma liste de suivi |
|
tog-watchlisthideanons discuter | Masquer les modifications anonymes dans la liste de suivi |
|
tog-watchlisthidebots discuter | Masquer les modifications faites par des bots dans la liste de suivi |
|
tog-watchlisthideliu discuter | Masquer les modifications faites par des utilisateurs inscrits dans la liste de suivi |
|
tog-watchlisthideminor discuter | Masquer les modifications mineures dans la liste de suivi |
|
tog-watchlisthideown discuter | Masquer mes propres modifications dans la liste de suivi |
|
tog-watchlisthidepatrolled discuter | Masquer les modifications surveillées de la liste de suivi |
|
tog-watchmoves discuter | Ajouter les pages que je renomme à ma liste de suivi |
|
token_suffix_mismatch discuter | '''Votre modification n’a pas été acceptée car votre navigateur web a mélangé les caractères de ponctuation dans l’identifiant de modification.''' La modification a été rejetée afin d’empêcher la corruption du texte de la page. Ce problème se produit lorsque vous utilisez un serveur mandataire anonyme problématique. |
|
toolbox discuter | Boîte à outils |
|
tooltip-ca-addsection discuter | Commencer une nouvelle section |
|
tooltip-ca-delete discuter | Supprimer cette page |
|
tooltip-ca-edit discuter | Vous pouvez modifier cette page. Veuillez utiliser le bouton de prévisualisation avant d’enregistrer. |
|
tooltip-ca-history discuter | Les versions passées de cette page (avec leurs contributeurs) |
|
tooltip-ca-move discuter | Renommer cette page |
|
tooltip-ca-nstab-category discuter | Voir la page de la catégorie |
|
tooltip-ca-nstab-help discuter | Voir la page d’aide |
|
tooltip-ca-nstab-image discuter | Voir la page du fichier |
|
tooltip-ca-nstab-main discuter | Voir la page de contenu |
|
tooltip-ca-nstab-media discuter | Voir la page du média |
|
tooltip-ca-nstab-mediawiki discuter | Voir le message système |
|
tooltip-ca-nstab-project discuter | Voir la page du projet |
|
tooltip-ca-nstab-special discuter | Ceci est une page spéciale, vous ne pouvez pas la modifier. |
|
tooltip-ca-nstab-template discuter | Voir le modèle |
|
tooltip-ca-nstab-user discuter | Voir la page utilisateur |
|
tooltip-ca-protect discuter | Protéger cette page |
|
tooltip-ca-talk discuter | Discussion au sujet de cette page de contenu |
|
tooltip-ca-undelete discuter | Rétablir les modifications faites sur cette page avant son effacement |
|
tooltip-ca-unwatch discuter | Retirer cette page de votre liste de suivi |
|
tooltip-ca-viewsource discuter | Cette page est protégée. Vous pouvez toutefois en visualiser la source. |
|
tooltip-ca-watch discuter | Ajouter cette page à votre liste de suivi |
|
tooltip-compareselectedversions discuter | Afficher les différences entre deux versions de cette page |
|
tooltip-diff discuter | Permet de visualiser les changements que vous avez effectués |
|
tooltip-feed-atom discuter | Flux Atom pour cette page |
|
tooltip-feed-rss discuter | Flux RSS pour cette page |
|
tooltip-minoredit discuter | Marquer mes modifications comme mineures |
|
tooltip-n-currentevents discuter | Trouver les informations de fond sur l’actualité du moment |
|
tooltip-n-help discuter | Aide |
|
tooltip-n-mainpage discuter | Visiter la page d’accueil du site |
|
tooltip-n-portal discuter | À propos du projet |
|
tooltip-n-randompage discuter | Afficher une page au hasard |
|
tooltip-n-recentchanges discuter | Liste des modifications récentes sur le wiki |
|
tooltip-p-logo discuter | Page principale |
|
tooltip-preview discuter | Merci de prévisualiser vos modifications avant de les publier |
|
tooltip-pt-anonlogin discuter | Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n’est cependant pas obligatoire. |
|
tooltip-pt-anontalk discuter | La page de discussion pour les contributions depuis cette adresse IP |
|
tooltip-pt-anonuserpage discuter | La page utilisateur de l’IP avec laquelle vous contribuez |
|
tooltip-pt-login discuter | Vous êtes encouragé{{GENDER:||e|(e)}} à vous identifier ; ce n’est cependant pas obligatoire. |
|
tooltip-pt-logout discuter | Se déconnecter |
|
tooltip-pt-mycontris discuter | La liste de vos contributions |
|
tooltip-pt-mytalk discuter | Votre page de discussion |
|
tooltip-pt-preferences discuter | Vos préférences |
|
tooltip-pt-userpage discuter | Votre page utilisateur |
|
tooltip-pt-watchlist discuter | La liste des pages dont vous suivez les modifications |
|
tooltip-recreate discuter | Recréer la page même si celle-ci a été effacée |
|
tooltip-rollback discuter | « Révoquer » annule en un clic la ou les modification(s) de cette page par son dernier contributeur. |
|
tooltip-save discuter | Publier vos modifications |
|
tooltip-search discuter | Rechercher dans {{SITENAME}} |
|
tooltip-search-fulltext discuter | Rechercher les pages comportant ce texte. |
|
tooltip-search-go discuter | Aller vers une page portant exactement ce nom si elle existe. |
|
tooltip-t-contributions discuter | Voir la liste des contributions de cet utilisateur |
|
tooltip-t-emailuser discuter | Envoyer un courriel à cet utilisateur |
|
tooltip-t-permalink discuter | Lien permanent vers cette version de la page |
|
tooltip-t-print discuter | Version imprimable de cette page |
|
tooltip-t-recentchangeslinked discuter | Liste des modifications récentes des pages liées à celle-ci |
|
tooltip-t-specialpages discuter | Liste de toutes les pages spéciales |
|
tooltip-t-upload discuter | Envoyer une image ou fichier média sur le serveur |
|
tooltip-t-whatlinkshere discuter | Liste des pages liées à celle-ci |
|
tooltip-undo discuter | « Défaire » révoque cette modification et ouvre la fenêtre de modification en mode prévisualisation. Permet de rétablir la version précédente et d’ajouter un motif dans la boîte de résumé. |
|
tooltip-upload discuter | Démarrer le téléversement |
|
tooltip-watch discuter | Ajouter cette page à votre liste de suivi |
|
toomanymatches discuter | Un trop grand nombre d’occurrences a été renvoyé, veuillez soumettre une requête différente. |
|
trackback discuter | ; $4 $5: [$2 $1] |
|
trackbackbox discuter | Rétroliens vers cette page :<br /> $1 |
|
trackbackdeleteok discuter | Le rétrolien a été supprimé avec succès. |
|
trackbackexcerpt discuter | ; $4 $5: [$2 $1]: <nowiki>$3</nowiki> |
|
trackbacklink discuter | Rétrolien |
|
trackbackremove discuter | ([$1 Supprimer]) |
|
tue discuter | mar |
|
tuesday discuter | mardi |
|
uctop discuter | (dernière) |
|
uid discuter | Numéro d’utilisateur : |
|
unblocked discuter | [[User:$1|$1]] a été débloqué |
|
unblocked-id discuter | Le blocage $1 a été enlevé |
|
unblockip discuter | Débloquer un utilisateur ou une adresse IP |
|
unblockiptext discuter | Utilisez le formulaire ci-dessous pour rétablir l’accès aux modifications depuis une adresse IP ou un nom d’utilisateur. |
|
unblocklink discuter | débloquer |
|
unblocklogentry discuter | a débloqué $1 |
|
uncategorizedcategories discuter | Catégories non catégorisées |
|
uncategorizedcategories-summary discuter | |
|
uncategorizedimages discuter | Fichiers non catégorisés |
|
uncategorizedimages-summary discuter | |
|
uncategorizedpages discuter | Pages non catégorisées |
|
uncategorizedpages-summary discuter | |
|
uncategorizedtemplates discuter | Modèles sans catégorie |
|
uncategorizedtemplates-summary discuter | |
|
undelete discuter | Voir les pages supprimées |
|
undelete-bad-store-key discuter | Impossible de restaurer la version du fichier datée du $1 : le fichier était absent avant la suppression. |
|
undelete-cleanup-error discuter | Erreur lors de la suppression du fichier d’archive inutilisé « $1 ». |
|
undelete-error-long discuter | Des erreurs ont été rencontrées lors de la restauration du fichier : $1 |
|
undelete-error-short discuter | Erreur lors de la restauration du fichier : $1 |
|
undelete-fieldset-title discuter | Restaurer les versions |
|
undelete-filename-mismatch discuter | Impossible de restaurer la version du fichier datée du $1 : le nom de fichier ne correspond pas. |
|
undelete-header discuter | Consultez le [[Special:Log/delete|journal des suppressions]] pour lister les pages récemment supprimées. |
|
undelete-missing-filearchive discuter | Impossible de restaurer le fichier d’archive avec l’identifiant $1 parce qu’il n’est pas dans la base de données. Il a peut-être déjà été restauré. |
|
undelete-no-results discuter | Aucune page correspondante n’a été trouvée dans les archives de suppression. |
|
undelete-nodiff discuter | Aucune version précédente trouvée. |
|
undelete-revision discuter | Version supprimée de $1 (version du $4 à $5) par $3 : |
|
undelete-search-box discuter | Rechercher des pages supprimées |
|
undelete-search-prefix discuter | Montrer les pages commençant par : |
|
undelete-search-submit discuter | Rechercher |
|
undelete-show-file-confirm discuter | Êtes-vous sûr de vouloir visionner une version supprimée du fichier « <nowiki>$1</nowiki> » datant du $2 à $3 ? |
|
undelete-show-file-submit discuter | Oui |
|
undelete_short discuter | Restaurer $1 modification{{PLURAL:$1||s}} |
|
undeletebtn discuter | Restaurer |
|
undeletecomment discuter | Résumé : |
|
undeletedarticle discuter | a restauré « [[$1]] » |
|
undeletedfiles discuter | $1 {{PLURAL:$1|fichier restauré|fichiers restaurés}} |
|
undeletedpage discuter | <big>'''La page $1 a été restaurée.'''</big> Consultez le [[Special:Log/delete|journal des suppressions]] pour obtenir la liste des récentes suppressions et restaurations. |
|
undeletedrevisions discuter | $1 {{PLURAL:$1|version restaurée|versions restaurées}} |
|
undeletedrevisions-files discuter | $1 version{{PLURAL:$1||s}} et $2 fichier{{PLURAL:$2||s}} restauré{{PLURAL:$2||s}} |
|
undeleteextrahelp discuter | Pour restaurer l’historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''. Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''. Cliquer sur '''''Réinitialiser''''' effacera la boîte de commentaire et réinitialisera toutes les cases à cocher. |
|
undeletehistory discuter | Si vous restaurez la page, toutes les versions seront replacées dans l’historique. Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée. |
|
undeletehistorynoadmin discuter | Cette page a été supprimée. Le motif de la suppression est indiqué dans le résumé ci-dessous, avec les détails des utilisateurs qui l’ont modifié avant sa suppression. Le contenu effectif de ces versions supprimées n’est accessible qu’aux administrateurs. |
|
undeleteinvert discuter | Inverser la sélection |
|
undeletelink discuter | visualiser/rétablir |
|
undeletepage discuter | Voir et restaurer des pages supprimées |
|
undeletepagetext discuter | {{PLURAL:$1|La page suivante a été supprimée et se trouve|Les pages suivantes ont été supprimées et se trouvent}} dans la base de données archive, d’où {{PLURAL:$1|elle peut|elles peuvent}} encore être restaurée{{PLURAL:$1||s}}. L’archive peut être nettoyée périodiquement. |
|
undeletepagetitle discuter | '''La liste suivante contient des versions supprimées de [[:$1|$1]]'''. |
|
undeletereset discuter | Réinitialiser |
|
undeleterevdel discuter | La restauration ne sera pas effectuée si, au final, la version la plus récente de la page ou du fichier reste partiellement supprimée. Dans de tels cas, vous devez décocher ou démasquer les versions effacées les plus récentes (en tête de liste). |
|
undeleterevision-missing discuter | Version incorrecte ou manquante. Vous avez peut-être un mauvais lien, ou la version a pu être restaurée ou supprimée de l’archive. |
|
undeleterevisions discuter | $1 {{PLURAL:$1|version archivée|versions archivées}} |
|
underline-always discuter | Toujours |
|
underline-default discuter | Selon le navigateur |
|
underline-never discuter | Jamais |
|
undo-failure discuter | Cette modification ne peut pas être défaite : cela entrerait en conflit avec les modifications intermédiaires. |
|
undo-norev discuter | La modification n’a pas pu être défaite parce qu’elle est inexistante ou qu’elle a été supprimée. |
|
undo-success discuter | Cette modification va être défaite. Veuillez vérifier les modifications ci-dessous, puis publier si c’est bien ce que vous voulez faire. |
|
undo-summary discuter | Annulation des modifications $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|discussion]]) |
|
unexpected discuter | Valeur inattendue : « $1 » = « $2 ». |
|
unit-pixel discuter | px |
|
unknown_extension_tag discuter | Balise d’extension « $1 » inconnue |
|
unlockbtn discuter | Déverrouiller la base de données |
|
unlockconfirm discuter | Oui, je confirme que je souhaite déverrouiller la base de données. |
|
unlockdb discuter | Déverrouiller la base de données |
|
unlockdbsuccesssub discuter | Verrouillage de la base de données supprimé |
|
unlockdbsuccesstext discuter | La base de données a été déverrouillée. |
|
unlockdbtext discuter | Le déverrouillage de la base de données permettra à nouveau à tous les utilisateurs de modifier des pages, de changer leurs préférences, de modifier leur liste de suivi et d’effectuer les autres opérations nécessitant des changements dans la base de données. Veuillez confirmer que c’est bien là ce que vous voulez faire. |
|
unprotect discuter | Déprotéger |
|
unprotectedarticle discuter | a déprotégé « [[$1]] » |
|
unprotectthispage discuter | Déprotéger cette page |
|
unusedcategories discuter | Catégories inutilisées |
|
unusedcategoriestext discuter | Les catégories suivantes existent mais aucune page ou catégorie ne les utilise. |
|
unusedimages discuter | Fichiers orphelins |
|
unusedimagestext discuter | Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier, et donc qu’un fichier peut être listé comme inutilisé ici alors qu’il est en réalité utilisé sur ces sites. |
|
unusedtemplates discuter | Modèles inutilisés |
|
unusedtemplates-summary discuter | |
|
unusedtemplatestext discuter | Cette page liste toutes les pages de l’espace de noms « {{ns:template}} » qui ne sont incluses dans aucune autre page. N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèles avant de les supprimer. |
|
unusedtemplateswlh discuter | autres liens |
|
unwatch discuter | Ne plus suivre |
|
unwatchedpages discuter | Pages non suivies |
|
unwatchedpages-summary discuter | |
|
unwatching discuter | Fin du suivi... |
|
unwatchthispage discuter | Ne plus suivre |
|
updated discuter | (Mis à jour) |
|
updatedmarker discuter | modifié depuis ma dernière visite |
|
upload discuter | Téléverser un fichier |
|
upload-curl-error28 discuter | Dépassement du délai lors du téléversement |
|
upload-curl-error28-text discuter | Le site a mis trop longtemps à répondre. Vérifiez que le site est en ligne, attendez un peu et réessayez. Vous pouvez aussi réessayer à une heure de moindre affluence. |
|
upload-curl-error6 discuter | URL injoignable |
|
upload-curl-error6-text discuter | L’URL fournie ne peut pas être atteinte. Veuillez vérifier que l’URL est correcte et que le site est en ligne. |
|
upload-file-error discuter | Erreur interne |
|
upload-file-error-text discuter | Une erreur interne est survenue en voulant créer un fichier temporaire sur le serveur. Veuillez contacter un [[Special:ListUsers/sysop|administrateur]]. |
|
upload-maxfilesize discuter | Taille maximale du fichier : $1 |
|
upload-misc-error discuter | Erreur inconnue lors du téléversement |
|
upload-misc-error-text discuter | Une erreur inconnue est survenue pendant le téléversement. Veuillez vérifier que l’URL est valide et accessible, puis essayer à nouveau. Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]]. |
|
upload-permitted discuter | Formats de fichiers autorisés : $1. |
|
upload-preferred discuter | Formats de fichiers préférés : $1. |
|
upload-prohibited discuter | Formats de fichiers interdits : $1. |
|
upload-proto-error discuter | Protocole incorrect |
|
upload-proto-error-text discuter | Le téléversement à distance requiert des URL commençant par <code>http://</code> ou <code>ftp://</code>. |
|
upload-summary discuter | |
|
upload-wasdeleted discuter | '''Attention : vous êtes en train de téléverser un fichier qui a été supprimé précédemment.''' Le journal des suppressions de ce fichier vous aidera à déterminer s’il est opportun de continuer son téléversement : |
|
upload_directory_missing discuter | Le répertoire de téléversement ($1) est introuvable et n’a pas pu être créé par le serveur web. |
|
upload_directory_read_only discuter | Le répertoire de téléversement ($1) n’est pas accessible en écriture depuis le serveur web. |
|
upload_source_file discuter | (un fichier sur votre ordinateur) |
|
upload_source_url discuter | (une URL valide et accessible publiquement) |
|
uploadbtn discuter | Téléverser le fichier |
|
uploadcorrupt discuter | Ce fichier est corrompu, a une taille nulle ou possède une extension invalide. Veuillez vérifier le fichier avant de le téléverser à nouveau. |
|
uploaddisabled discuter | Téléversements désactivés |
|
uploaddisabledtext discuter | Le téléversement de fichiers est désactivé. |
|
uploadedfiles discuter | Fichiers téléversés |
|
uploadedimage discuter | a téléversé « [[$1]] » |
|
uploaderror discuter | Erreur de téléversement |
|
uploadfooter discuter | - |
|
uploadlog discuter | Historique des téléversements |
|
uploadlogpage discuter | Journal des téléversements de fichiers |
|
uploadlogpagetext discuter | Voici la liste des derniers fichiers téléversés sur le serveur. Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentation plus visuelle. |
|
uploadnewversion-linktext discuter | Téléverser une nouvelle version de ce fichier |
|
uploadnologin discuter | Non connecté(e) |
|
uploadnologintext discuter | Vous devez être [[Special:UserLogin|connecté(e)]] pour téléverser des fichiers sur le serveur. |
|
uploadscripted discuter | Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web. |
|
uploadtext discuter | Utilisez ce formulaire pour téléverser des fichiers sur le serveur. Pour voir ou rechercher des images précédemment envoyées, consultez la [[Special:FileList|liste des images]]. Les téléversements sont aussi enregistrés dans le [[Special:Log/upload|journal des téléversements]], et les suppressions dans le [[Special:Log/delete|journal des suppressions]]. Pour inclure un fichier dans une page, utilisez un lien de la forme : * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.jpg]]</nowiki></code>''', pour afficher le fichier en pleine résolution (dans le cas d’une image) ; * '''<code><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fichier.png|200px|thumb|left|texte descriptif]]</nowiki></code>''' pour utiliser une miniature de 200 pixels de large dans une boîte à gauche avec « texte descriptif » comme description ; * '''<code><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fichier.ogg]]</nowiki></code>''' pour lier directement vers le fichier sans l’afficher. |
|
uploadvirus discuter | Ce fichier contient un virus ! Pour plus de détails, consultez : $1 |
|
uploadwarning discuter | Attention ! |
|
usercreated discuter | Créé le $1 à $2 |
|
usercssjsyoucanpreview discuter | '''Astuce :''' utilisez le bouton « Prévisualisation » pour tester votre nouvelle feuille CSS/JS avant de l’enregistrer. |
|
usercsspreview discuter | '''Rappelez-vous que vous n’êtes qu’en train de prévisualiser votre propre feuille CSS.''' '''Elle n’a pas encore été enregistrée !''' |
|
usereditcount discuter | $1 modification{{PLURAL:$1||s}} |
|
userexists discuter | Le nom d’utilisateur que vous avez saisi est déjà utilisé. Veuillez en choisir un autre. |
|
userinvalidcssjstitle discuter | '''Attention :''' il n’existe pas d’habillage « $1 ». Rappelez-vous que les pages personnelles avec extensions .css et .js utilisent des titres en minuscules, par exemple {{ns:user}}:Foo/monobook.css et non {{ns:user}}:Foo/Monobook.css. |
|
userjspreview discuter | '''Rappelez-vous que vous êtes en train de visualiser ou de tester votre code JavaScript et qu’il n’a pas encore été enregistré !''' |
|
userlogin discuter | Créer un compte ou se connecter |
|
userlogout discuter | Déconnexion |
|
usermailererror discuter | Erreur dans l’objet du courriel : |
|
username discuter | Nom d’utilisateur : |
|
userpage discuter | Page utilisateur |
|
userpage-userdoesnotexist discuter | Le compte utilisateur « $1 » n’est pas enregistré. Veuillez vérifier que vous voulez créer cette page. |
|
userrights discuter | gestion des droits utilisateur |
|
userrights-changeable-col discuter | Les groupes que vous pouvez modifier |
|
userrights-editusergroup discuter | Modifier les groupes de l’utilisateur |
|
userrights-groups-help discuter | Vous pouvez modifier les groupes auxquels appartient cet utilisateur. * Une case cochée signifie que l’utilisateur se trouve dans ce groupe. * Une case non cochée signifie qu’il ne s’y trouve pas. * Un astérisque (*) indique que vous ne pouvez pas retirer ce groupe une fois que vous l’avez ajouté et vice-versa. |
|
userrights-groupsmember discuter | Membre de : |
|
userrights-irreversible-marker discuter | $1* |
|
userrights-lookup-user discuter | Gestion des droits utilisateur |
|
userrights-no-interwiki discuter | Vous n’avez pas la permission de modifier des droits d’utilisateurs sur d’autres wikis. |
|
userrights-nodatabase discuter | La base de donnée « $1 » n’existe pas ou n’est pas locale. |
|
userrights-nologin discuter | Vous devez vous [[Special:UserLogin|connecter]] avec un compte d’administrateur pour modifier des droits d’utilisateur. |
|
userrights-notallowed discuter | Votre compte n’a pas la permission de modifier des droits d’utilisateur. |
|
userrights-reason discuter | Motif du changement : |
|
userrights-summary discuter | |
|
userrights-unchangeable-col discuter | Les groupes que vous ne pouvez pas modifier |
|
userrights-user-editname discuter | Entrez un nom d’utilisateur : |
|
variantname-gan discuter | gan |
|
variantname-gan-hans discuter | hans |
|
variantname-gan-hant discuter | hant |
|
variantname-kk discuter | kk |
|
variantname-kk-arab discuter | kk-arab |
|
variantname-kk-cn discuter | kk-cn |
|
variantname-kk-cyrl discuter | kk-cyrl |
|
variantname-kk-kz discuter | kk-kz |
|
variantname-kk-latn discuter | kk-latn |
|
variantname-kk-tr discuter | kk-tr |
|
variantname-ku discuter | ku |
|
variantname-ku-arab discuter | ku-Arab |
|
variantname-ku-latn discuter | ku-Latn |
|
variantname-sr discuter | sr |
|
variantname-sr-ec discuter | sr-ec |
|
variantname-sr-el discuter | sr-el |
|
variantname-tg discuter | tg |
|
variantname-tg-cyrl discuter | tg-Cyrl |
|
variantname-tg-latn discuter | tg-Latn |
|
variantname-zh discuter | zh |
|
variantname-zh-cn discuter | cn |
|
variantname-zh-hans discuter | hans |
|
variantname-zh-hant discuter | hant |
|
variantname-zh-hk discuter | hk |
|
variantname-zh-mo discuter | mo |
|
variantname-zh-my discuter | my |
|
variantname-zh-sg discuter | sg |
|
variantname-zh-tw discuter | tw |
|
version discuter | Version |
|
version-extension-functions discuter | Fonctions d’extension internes |
|
version-extensions discuter | Extensions installées |
|
version-hook-name discuter | Nom du greffon |
|
version-hook-subscribedby discuter | Souscrit par |
|
version-hooks discuter | Greffons |
|
version-license discuter | Licence |
|
version-mediahandlers discuter | Manipulateurs de médias |
|
version-other discuter | Divers |
|
version-parser-extensiontags discuter | Balises étendues du parseur |
|
version-parser-function-hooks discuter | Fonctions étendues du parseur |
|
version-parserhooks discuter | Greffons du parseur |
|
version-skin-extension-functions discuter | Fonctions d’extension de l’interface |
|
version-software discuter | Logiciels installés |
|
version-software-product discuter | Produit |
|
version-software-version discuter | Version |
|
version-specialpages discuter | Pages spéciales |
|
version-variables discuter | Variables |
|
version-version discuter | Version |
|
versionrequired discuter | Version $1 de MediaWiki nécessaire |
|
versionrequiredtext discuter | La version $1 de MediaWiki est nécessaire pour utiliser cette page. Consultez [[Special:Version|la page des versions]] |
|
video-dims discuter | $1, $2×$3 |
|
viewcount discuter | Cette page a été consultée $1 fois{{PLURAL:$1||}}. |
|
viewdeleted discuter | Voir $1 ? |
|
viewdeletedpage discuter | Visualiser les pages supprimées |
|
viewhelppage discuter | Voir la page d’aide |
|
viewpagelogs discuter | Voir les opérations sur cette page |
|
viewprevnext discuter | Voir ($1) ($2) ($3). |
|
views discuter | Affichages |
|
viewsource discuter | Voir le texte source |
|
viewsourcefor discuter | pour $1 |
|
viewsourcelink discuter | voir la source |
|
viewsourceold discuter | voir la source |
|
viewsourcetext discuter | Vous pouvez voir et copier le contenu de la page : |
|
viewtalkpage discuter | Page de discussion |
|
virus-badscanner discuter | Mauvaise configuration : scanneur de virus inconnu : ''$1'' |
|
virus-scanfailed discuter | Échec de la recherche (code $1) |
|
virus-unknownscanner discuter | antivirus inconnu : |
|
visual-comparison discuter | Comparaison visuelle |
|
visualcomparison discuter | Comparaison visuelle |
|
wantedcategories discuter | Catégories les plus demandées |
|
wantedcategories-summary discuter | |
|
wantedfiles discuter | Fichiers les plus désirés |
|
wantedfiles-summary discuter | |
|
wantedpages discuter | Pages les plus demandées |
|
wantedpages-badtitle discuter | Titre invalide dans les résultats : $1 |
|
wantedpages-summary discuter | |
|
wantedtemplates discuter | Modèles demandés |
|
wantedtemplates-summary discuter | |
|
watch discuter | Suivre |
|
watching discuter | Suivi... |
|
watchlist discuter | Liste de suivi |
|
watchlist-details discuter | Votre liste de suivi référence $1 page{{PLURAL:$1||s}}, sans compter les pages de discussion. |
|
watchlist-options discuter | Options de la liste de suivi |
|
watchlistall2 discuter | tout |
|
watchlistanontext discuter | Veuillez vous $1 pour visualiser ou modifier les éléments de votre liste de suivi. |
|
watchlistcontains discuter | Votre liste de suivi référence $1 page{{PLURAL:$1||s}}. |
|
watchlistedit-noitems discuter | Votre liste de suivi ne contient aucun titre. |
|
watchlistedit-normal-done discuter | {{PLURAL:$1|Un titre a été enlevé|$1 titres ont été enlevés}} de votre liste de suivi : |
|
watchlistedit-normal-explain discuter | Les titres de votre liste de suivi sont visibles ci-dessous. Pour retirer un titre de la liste (et sa page de discussion), cochez la case à côté puis cliquez sur le bouton « Retirer les titres sélectionnés ». Vous pouvez aussi [[Special:Watchlist/raw|modifier la liste en mode brut]]. |
|
watchlistedit-normal-legend discuter | Retirer des titres de la liste de suivi |
|
watchlistedit-normal-submit discuter | Retirer les titres sélectionnés |
|
watchlistedit-normal-title discuter | Modifier la liste de suivi |
|
watchlistedit-numitems discuter | Votre liste de suivi contient {{PLURAL:$1|un titre|$1 titres}}, sans compter les pages de discussion. |
|
watchlistedit-raw-added discuter | {{PLURAL:$1|Un titre a été ajouté|$1 titres ont été ajoutés}} : |
|
watchlistedit-raw-done discuter | Votre liste de suivi a été mise à jour. |
|
watchlistedit-raw-explain discuter | Les titres de votre liste de suivi sont affichés ci-dessous et peuvent être modifiés en les ajoutant ou les retirant de la liste (un titre par ligne). Lorsque vous avez fini, cliquez sur le bouton « Mettre à jour la liste de suivi » en bas. Vous pouvez aussi [[Special:Watchlist/edit|utiliser l’éditeur normal]]. |
|
watchlistedit-raw-legend discuter | Modification de la liste de suivi en mode brut |
|
watchlistedit-raw-removed discuter | {{PLURAL:$1|Un titre a été retiré|$1 titres ont été retirés}} : |
|
watchlistedit-raw-submit discuter | Mettre à jour la liste de suivi |
|
watchlistedit-raw-title discuter | Modifier la liste de suivi en mode brut |
|
watchlistedit-raw-titles discuter | Titres : |
|
watchlistfor discuter | (pour '''$1''') |
|
watchlisttools-edit discuter | Voir et modifier la liste de suivi |
|
watchlisttools-raw discuter | Modifier la liste de suivi en mode brut |
|
watchlisttools-view discuter | Liste de suivi |
|
watchmethod-list discuter | vérification des pages suivies pour y trouver des modifications récentes |
|
watchmethod-recent discuter | vérification des modifications récentes pour y trouver des pages suivies |
|
watchnochange discuter | Aucun des éléments que vous suivez n’a été modifié durant la période affichée. |
|
watchnologin discuter | Non connecté |
|
watchnologintext discuter | Vous devez être [[Special:UserLogin|identifié]] pour modifier votre liste de suivi. |
|
watchthis discuter | Suivre cette page |
|
watchthispage discuter | Suivre cette page |
|
watchthisupload discuter | Suivre ce fichier |
|
wed discuter | mer |
|
wednesday discuter | mercredi |
|
welcomecreation discuter | == Bienvenue, $1 ! == Votre compte a été créé. N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{SITENAME}}]]. |
|
whatlinkshere discuter | Pages liées |
|
whatlinkshere-backlink discuter | ← $1 |
|
whatlinkshere-filters discuter | Filtres |
|
whatlinkshere-hideimages discuter | $1 les fichiers liés |
|
whatlinkshere-hidelinks discuter | $1 les liens |
|
whatlinkshere-hideredirs discuter | $1 les redirections |
|
whatlinkshere-hidetrans discuter | $1 les inclusions |
|
whatlinkshere-links discuter | ← liens |
|
whatlinkshere-next discuter | {{PLURAL:$1|suivante|$1 suivantes}} |
|
whatlinkshere-page discuter | Page : |
|
whatlinkshere-prev discuter | {{PLURAL:$1|précédente|$1 précédentes}} |
|
whatlinkshere-summary discuter | |
|
whatlinkshere-title discuter | Pages qui pointent vers « $1 » |
|
whitelistedittext discuter | Vous devez être $1 pour avoir la permission de modifier le contenu. |
|
whitelistedittitle discuter | Connexion nécessaire pour modifier le contenu |
|
widthheight discuter | $1×$2 |
|
widthheightpage discuter | $1 × $2, $3 page{{PLURAL:$3||s}} |
|
wikicodecomparison discuter | Comparaison du wikitexte |
|
withoutinterwiki discuter | Pages sans liens inter-langues |
|
withoutinterwiki-legend discuter | Préfixe |
|
withoutinterwiki-submit discuter | Afficher |
|
withoutinterwiki-summary discuter | Les pages suivantes ne possèdent pas de liens vers d’autres langues : |
|
wlheader-enotif discuter | * La notification par courriel est activée. |
|
wlheader-showupdated discuter | * Les pages qui ont été modifiées depuis votre dernière visite sont affichées en '''gras'''. |
|
wlnote discuter | Ci-dessous {{PLURAL:$1|figure la dernière modification effectuée|figurent les '''$1''' dernières modifications effectuées}} durant {{PLURAL:$2|la dernière heure|les '''$2''' dernières heures}}. |
|
wlshowlast discuter | Montrer les dernières $1 heures, les derniers $2 jours ou bien $3 |
|
word-separator discuter |   |
|
wrong_wfQuery_params discuter | Paramètres incorrects sur wfQuery()<br /> Fonction : $1<br /> Requête : $2 |
|
wrongpassword discuter | Le mot de passe est incorrect. Veuillez essayer à nouveau. |
|
wrongpasswordempty discuter | Vous n’avez pas entré de mot de passe. Veuillez essayer à nouveau. |
|
xml-error-string discuter | $1 à la ligne $2, colonne $3 (octet $4) : $5 |
|
year discuter | À partir de l’année (et précédentes) : |
|
youhavenewmessages discuter | Vous avez $1 ($2). |
|
youhavenewmessagesmulti discuter | Vous avez de nouveaux messages sur $1. |
|
yourdiff discuter | Différences |
|
yourdomainname discuter | Votre domaine |
|
youremail discuter | Adresse de courriel : |
|
yourgender discuter | Sexe : |
|
yourlanguage discuter | Langue de l’interface : |
|
yourname discuter | Nom d’utilisateur : |
|
yournick discuter | Signature pour les discussions : |
|
yourpassword discuter | Mot de passe : |
|
yourpasswordagain discuter | Entrez de nouveau votre mot de passe : |
|
yourrealname discuter | Nom réel : |
|
yourtext discuter | Votre texte |
|
yourvariant discuter | Variante : |
