Welcome to TiddlyWiki created by Jeremy Ruston, Copyright © 2007 UnaMesa Association
# Quelles classes Grégoire a-t-il redoublées ?
# Comment a-t-il réagi après sa première matinée d'école lorsqu'il est rentré en maternelle ?
# Pourquoi a-t-il aimé la classe de Grande Section
# Comment se prénommait son institutrice en GS ?
# Quel est le nom de famille de Grégoire ?
# Quel membre de la famille compte beaucoup pour Grégoire ? Pourquoi ?
# Comment réagit son grand-père quand il apprend que Grégoire redouble sa Sixième ?
# Son grand-père aimait-il l'école ou non ?
# Pour qui Grégoire travaille-t-il ?
# Où cache-t-il l'argent gagné ?
# Dans quelle école veut-il aller ?
# Qu'arrive-t-il au grand-père ?
# Grégoire n'est pas bon en sport. Pourtant, en pensant à son grand-père, il accomplit un "exploit". Lequel ?
# Avez-vous aimé ce livre ou non ? Pour quelles raisons ?
Cette page est optimisée pour Firefox ( car IE génère des erreurs): téléchargez et installez-le à partir d'[[ici|http://download.mozilla.org/?product=firefox-3.0.5&os=win&lang=fr]] pour windows; c'est un navigateur libre, @@color(#0066cc):gratuit@@ et plus sûr.
+++[Comment circuler dans cette page ?|Magique !]>
Vous êtes sur une page TiddlyWiki, dont le fonctionnement différe d'un site.
@@color:green;__''Orientez vous en cliquant sur les rubriques en haut''__@@, ne considérez pas le menu de gauche (qui montre l'architecture de cette page et me sert de palette d'outils). Il vous suffit de cliquer ...et de cliquer, mais @@color(#ff3333):toujours dans la page@@. Vous vous y ferez rapidement.
ou@@color:green; __''Saisissez un terme à rechercher en haut à droite''__@@
Pour revenir en arrière, n'utilisez pas la flèche "Précédent" de votre navigateur, mais @@color:green;''utilisez l'historique de votre parcours''@@ ( en haut de la page, sous le bandeau) ou @@color:green;''utilisez l'action "référent" ''@@(en haut à gauche de la case) qui vous permettra de remonter à la case précédente.
===
+++[Recherche par catégories dans le site]>
<<tiddler 'Plan du site'>>
===
+++[Crédits]
Dans ces pages vous rencontrerez beaucoup d'exercices que j'ai pris à d'autres. Pardon de ne pas les citer.
Néanmoins, je me dois de citer la ~NRP ( je cherche les noms des autres et je les marque dès que je les retrouve...
===
/***
Macro: allTagsExcept
Author: Clint Checketts
Version: 1.0 Sept 8, 2005
usage: {{{<< allTagsExcept systemConfig systemTiddlers >>}}} This will show all tags but those listed (e.g. systemConfig and systemTiddlers
<<allTagsExcept systemConfig systemTiddlers >>
***/
//{{{
version.extensions.allTagsExcept = {major: 0, minor: 1, revision: 0, date: new Date(2005,8,15)};
config.macros.allTagsExcept = {tooltip: "Show tiddlers tagged with '%0'",noTags: "There are no tags to display"};
config.macros.allTagsExcept.handler = function(place,macroName,params)
{
var tags = store.getTags();
var theTagList = createTiddlyElement(place,"ul",null,null,null);
if(tags.length == 0)
createTiddlyElement(theTagList,"li",null,"listTitle",this.noTags);
for (var t=0; t<tags.length; t++) {
var includeTag = true;
for (var p=0;p<params.length; p++) if (tags[t][0] == params[p]) includeTag = false;
if (includeTag){
var theListItem =createTiddlyElement(theTagList,"li",null,null,null);
var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",this.tooltip.format([tags[t][0]]),onClickTag);
theTag.setAttribute("tag",tags[t][0]);
}
}
}
//}}}
config.options.chkHttpReadOnly = true;
Si j'avais à soutenir le droit que nous avons eu de rendre les nègres esclaves, voici ce que je dirais :
Les peuples d'Europe ayant exterminé ceux de l'Amérique, ils ont dû mettre en esclavage ceux de l'Afrique, pour s'en servir à défricher tant de terres.
Le sucre serait trop cher, si l'on ne faisait travailler la plante qui le produit par des esclaves.
Ceux dont il s'agit sont noirs depuis les pieds jusqu'à la tête ; et ils ont le nez si écrasé qu'il est presque impossible de les plaindre.
On ne peut se mettre dans l'esprit que Dieu, qui est un être très sage, ait mis une âme, surtout une âme bonne, dans un corps tout noir.
Il est si naturel de penser que c'est la couleur qui constitue l'essence de l'humanité, que les peuples d'Asie, qui font des eunuques, privent toujours les noirs du rapport qu'ils ont avec nous d'une façon plus marquée.
On peut juger de la couleur de la peau par celle des cheveux, qui, chez les Égyptiens, les meilleurs philosophes du monde, étaient d'une si grande conséquence, qu'ils faisaient mourir tous les hommes roux qui leur tombaient entre les mains.
Une preuve que les nègres n'ont pas le sens commun, c'est qu'ils font plus de cas d'un collier de verre que de l'or, qui, chez des nations policées, est d'une si grande conséquence.
Il est impossible que nous supposions que ces gens-là soient des hommes ; parce que, si nous les supposions des hommes, on commencerait à croire que nous ne sommes pas nous-mêmes chrétiens.
De petits esprits exagèrent trop l'injustice que l'on fait aux Africains. Car, si elle était telle qu'ils le disent, ne serait-il pas venu dans la tête des princes d'Europe, qui font entre eux tant de conventions inutiles, d'en faire une générale en faveur de la miséricorde et de la pitié ?
Un établissement scolaire est un milieu conçu et organisé par les adultes pour transmettre à leurs successeurs leurs connaissances qu’ils estiment indispensables. Mais, pour les jeunes qui le fréquentent, c’est aussi tout autre chose: c’est un lieu de vie et de rencontres. C’est l’endroit où se passe le plus clair de leur temps. Or, la vie d’un jeune ne se réduit pas à l’acte d’apprendre. Il y a tant de choses à découvrir – ou à craindre – à cet âge... Or, cette dimension – essentielle – de la vie des adolescents n’est nullement prise en compte par le lcollège. L'Education Nationale ne se préoccupe pas de "cela". C'est pourtant "cela" - ce //bouillonnement affectif//, ce choc des personnalités //en gestation// - qui exerce sur l'institution scolaire une pression qui parfois la fait trembler.
Une étude récente [...] montre que, parvenus en troisième, les élèves ont une très forte réaction de rejet à l’égard de l’établissement: ils ne s’y sentent plus bien, en critiquent la discipline, estiment qu’il n’y a pas assez d’activités extrascolaires et qu’on ne tient pas assez compte de leur avis. A l’inverse, de la sixième à la troisième, ils estiment que l’entente entre les élèves s’est améliorée et que la solidarité a progressé...
Ainsi, du point de vue des élèves, ce qui est positif dans ce bilan de quatre années, c’est l’expérience de relations nouvelles entre camarades, beaucoup plus que les rapports avec les institutions (que ce soit le lycée ou les professeurs). Alors que le milieu éducatif où ils sont immergés est exclusivement mobilisé pour la formation intellectuelle, ce qui, pour eux, a compté, c’est l’apprentissage de la vie en commun, l’expérience collective. Curieux décalage entre les ambitions des uns et les désirs des autres, entre la théorie et la réalité. Il est certes légitime qu’une institution éducative ait pour premier objet de former les esprits et de transmettre un savoir. Mais peut-elle espérer atteindre son but si elle ignore à ce point les aspirations profondes des élèves?
Poser ces questions est plus aisé que d’y répondre. Les échecs des tentatives diverses, faites ces dernières années, montrent qu’il ne suffit pas de créer un « foyer » ou de multiplier les délégués et les conseils de classe pour faire participer davantage les élèves et répondre à leur désir d’autonomie. C’est toute l’organisation de l’établissement, la répartition du temps et de l’espace, le partage des responsabilités qui demanderaient à être modifiés pour que, progressivement, les élèves cessent d’être des usagers passifs – et vindicatifs – et deviennent des partenaires et des acteurs.
(d’après Frédéric Gaussen, ~Le Monde-Dimanche)
Le citoyen a-t-il encore droit à l'intimité? La mort de Diana aura au moins eu l'avantage de relancer le débat. En Grande-Bretagne, la presse vient de signer un code de bonne conduite dont les premiers bénéficiaires devraient être les petits princes. Mais, au-delà des stars et de leur image, la question se pose pour les anonymes. Les informaticiens du monde entier tenaient le 24 septembre, à Montréal, une conférence sur «La vie privée sans frontières», menacée non pas par les paparazzi, mais par le développement d'Internet et des nouveaux médias. Nous sommes tous surveillés par les caméras vidéo dans la rue, les banques, les halls de gare et les supermarchés. L'anonymat du téléphone a disparu depuis la mise en place de la «présentation du numéro». Nos achats et nos déplacements sont enregistrés par les cartes bancaires et les péages; nos opinions sont fichées sur les ordinateurs des instituts de sondage et des experts en marketing, qui vendent nos adresses à notre insu. Sécurité ou liberté? Il existe des programmes de cryptage qui rendent inviolables les informations échangées sur les réseaux. Et permettent de communiquer sans risque son numéro de Carte bleue. Faut-il les mettre à la disposition du grand public, au risque qu'ils soient aussi détournés au profit des terroristes? Aux Etats-Unis comme en France, les gouvernements s'opposent à leur diffusion. Il subsiste d'autres moyens de résister aux intrusions de Big Brother: se faire inscrire sur liste rouge, coder son e-mail, recourir aux organismes chargés de lutter contre l'utilisation abusive des données personnelles. Mais ces solutions, disparates et d'usage complexe, risquent de rester réservées à l'élite. Celle des mieux informés, des plus riches ou des plus débrouillards. La démocratie électronique demeure à l'état virtuel...
!EXERCICE 1
!!1. Quel est le thème , le sujet abordé par chacun de ces textes.
!!2. Formuler la thèse soutenue par l'auteur dans chaque texte.
Nous mangeons trop. Nous consommons trop. Et encore n'imaginons-nous pas tout ce
qui se gaspille et se jette. Pendant ce temps, les insectes humains de l'Ouganda, ou du
Cambodge, ou bien d'ailleurs, n'ont même pas la poignée de riz qui leur permettrait de
survivre, encore un jour, et un jour, et un jour... Monde des riches, absurde, voué à
l'être toujours davantage, et qui fait des gavés, mais peu d'heureux. Monde des
pauvres, rigoureusement homologue, voué à l'être toujours davantage, et auquel la
faim, non la pléthore, ôte l'idée de ce qu'est l'homme. Ils souffrent pourtant, ces
insectes: ils ont chacun une âme individuelle, et, si vertigineusement vide que soit leur
ventre, ils savent, de toute leur faim abyssale, qu'ils sont l'Homme. Le riche, qui a honte
en eux de lui-même, le sait aussi à sa façon, instantanée, intermittente: et, dans ces
moments, il leur fait la charité. Trois mille tonnes de blé, un hélicoptère, un hôpital de
campagne: c'est mieux que rien, si cela leur' arrive. Mais c'est une dérision. Il ne peut y
avoir la moindre bonne conscience ici-bas tant que les riches n'auront pas pour unique
objectif, pour "priorité des priorités", non seulement de sauver, dans l'immédiat, tous les
pauvres sur terre de la famine, mais d'organiser ensemble, enjoignant l'essentiel de
leurs ressources, une croisade planétaire pour l'autosuffisance de ceux qui sont
faméliques et nus.
P. EMMANUEL, L'arbre et le vent, Seuil
Le voyage a beaucoup de chances de rendre moins suffisant, plus attentif et plus
modeste. Parmi les miens, chez ceux de mon habitude, je m'expose toujours à trouver
que les choses vont de soi, à être distrait. On me comprend à demi-mot. On me fait
confiance a priori comme à un membre de la tribu. Je peux être impunément superficiel
et « brillant ». Mais, à l'étranger, je perds beaucoup de ces avantages désavantageux.
J'ai l'obstacle de la différence, des fuseaux horaires, de l'ignorance ou de la non-maîtrise
de la langue. Il faut que j'avance avec précaution et attention, que j'ouvre les yeux et
que j'ouvre le cœur, que j'écoute bien et que je parle lentement. Je suis obligé de
m'émerveiller un peu plus ou de me rétracter davantage. Je suis bien moins malin et
désinvolte. J'ai donc beaucoup plus de chances d'être vraiment intelligent.
C. ROY
L'un des phénomènes les plus ridicules que l'on puisse observer dans la civilisation
développée est l'attention exclusive, passionnée, qu'elle manifeste à l'égard de sa
progéniture. Les Américains nous ont infligé ce culte de l'enfant, qui s'est propagé chez
nous comme le hamburger et la musique rock. Toute une génération de parents, celle
des miens, s'est abîmée dans le spectacle de ses enfants jus- qu'à la niaiserie. Autrefois,
on disait de son petit qu'il allait devenir quelqu'un. Désormais, il faut avant tout qu'il
reste lui-même. Par un coupable paradoxe, on le livre à l'influence exclusive de la
télévision et de l'école. Au lieu de rester lui-même, il devient donc n'importe qui.
L'essentiel est qu'il garde en lui toute cette puérilité, cette « spontanéité merveilleuse »,
comme on dit à la radio, qui est faite pour rassurer les adultes, parce qu'elle les ramène
à un âge où réfléchir n'est pas encore indispensable.
C. COMBAZ, Éloge de l’âge dans un monde jeune et bronzé, R. Laffont.
« Tu ne feras pas souffrir les animaux, ou du moins tu ne les feras souffrir que le moins
possible. Ils ont leurs droits et leur dignité v comme toi-même », est assurément une
admonition bien modeste; dans l'état actuel des esprits, elle est,hélas, quasi subversive.
Soyons l' subversifs. Révoltons-nous contre l'ignorance, l'indifférence, la cruauté, qui
d'ailleurs ne s'exercent si souvent contre l'homme que parce qu'elles se sont fait la
main sur les bêtes. Rappelons-nous, puisqu'il faut toujours tout ramener à nous-mêmes,
qu'il y aurait moins d'enfants martyrs s'il y avait moins d'animaux torturés, moins de
wagons plombés amenant à la mort les victimes de quelconques dictatures, si nous
n'avions pas pris l'habitude de fourgons où des bêtes agonisent sans nourriture et sans
eau en route vers l'abattoir, moins de gibier humain descendu d'un coup de feu si le
goût et l'habitude de tuer n'étaient l'apanage des chasseurs. Et dans l'humble mesure du
possible, changeons (c'est-à-dire améliorons s'il se peut) la vie.
M. YOURCENAR, Le temps, ce grand sculpteur, Gallimard
!EXERCICE 2
!!1. Identifiez la thèse de l'adversaire dans les deux textes suivants.
!!2. Quelle déformation l'émetteur lui fait-il subir ? Dans quel but ?
!!Texte A
Le massacre des phoques nouveau-nés ajustement frappé l'imagination des masses.
C'est devenu l'un des symboles de notre brutalité envers la nature, pour des raisons
futiles et indéfendables. On voit les profiteurs de ces atrocités ; quelques compagnies
canadiennes et norvégiennes, opérant autour de Saint-Pierre-etMiquelon, de Terre-
Neuve et dans le Labrador depuis qu'heureusement la baie de Fundy a été close aux
bouchers ; quelques compagnies américaines, dans les Pribiloff, vendant aux femmes et
quelquefois aux hommes des jaquettes de fourrure qu'ils ne devraient pas acheter, ou
d'horribles babioles représentant des petits trolls, des petits animaux plus ou moins
comiques, faits d'une touffe de fourrure des bêtes massacrées ; il paraît aussi que
l'huile de phoque dénaturée entre comme crypto-élément dans certaines margarines.
On nous dit que la population locale, qui va assommer les phoques nouveau-nés sur la
glace, et parfois les écorche et les découpe à demi vivants (les bêtes épouvantées «
font le mort » comme on sait), a besoin de ces sanglants profits pour vivre ; qu'on lui
trouve donc d'autres industries locales non polluantes : on n'a pas le droit de combiner
les maux de l'âge atomique et la sauvagerie de l'âge de la pierre. Nous avons au moins
réussi à ce que ni l'Italie, ni l'Allemagne, ni la Hollande n'achètent, désormais de
fourrures de phoques, et j'espère que la même chose se fera en France, si ce n'est déjà
fait. Je trouve atroce d'avoir à penser chaque année, vers la fin de l'hiver, au moment
où les mères phoques mettent bas sur la banquise, que ce grand travail naturel
s'accomplit au profit d'immédiats massacres.
M. YOURCENAR, Les Yeux ouverts
!!Texte B
Nos écologistes sont les maîtres d'une nostalgie qui doit plus à l'instinct qu'à la raison. À
les en croire, notre civilisation nous voue aux catastrophes, par la faute des industriels
de l'alimentation, de la confection, de l'urbanisme, de l'énergie. Leur logique condamne
le pétrole qui pollue l'air et l'eau, le nucléaire qui prépare des cataclysmes. Elle implique
le retour à un passé sans usines et sans voitures. Les bateaux seraient tous à voile,
mais les voiles ne seraient pas de nylon. Le soleil serait la source de toute lumière... II
est probable que le retour au temps des cavernes ne suffirait pas à satisfaire les vrais
écologistes : car l'homme de la préhistoire déjà commençait à chasser le fauve, à
modifier l'environnement, à troubler les cours d'eau, à contraindre la nature. De
nostalgie en nostalgie, il faudrait revenir au paradis terrestre, à condition d'en bannir le
Serpent, mais aussi bien Adam et Ève, les premiers pollueurs.
Faut-il conclure que tous les regrets sont superflus, et que les nostalgies du passé
vivent sur des mythes ? Le temps s'écoule, et nous n'y pouvons rien. Les moeurs
changent, et c'est la loi de l'évolution. L'âge d'or n'est qu'une vue de l'esprit.
R. SEDILLOT, Le Bas de laine
!EXERCICE 3
!!1 Dégagez la thèse soutenue par l’adversaire dans chacun de ces textes ?
!!2. Comment l’auteur s’y prend-t-il pour faire comprendre que cette thèse n’est pas la sienne ?
!!3.Quelle est sa thèse ?
On a parfois tendance à mettre en concurrence les divers moyens de communication et
de culture qui nous sont offerts aujourd'hui. On dit: la télévision entraînera la mort du
cinéma comme on a dit autrefois, le cinéma entraînera la mort du théâtre. On dit encore
que la télévision est un obstacle et un danger pour la lecture comme on a fait autrefois
des remarques analogues pour la radio.
D'abord, c'est simplifier abusivement le problème en oubliant notamment des conditions
de vie astreignantes, un manque de temps à consacrer aux loisirs et à la culture - ce
temps de vivre après lequel nous courons légitimement -, en somme, des difficultés de
vie - manque d'argent, maigreur ou mauvais emplois des crédits, manque de temps -
qui conditionnent primordialement nos possibilités de culture. En période de détente, de
vacances, nous savons fort bien allier ces divers moyens de distraction ou
d'enrichissement culturel: nous lisons, nous écoutons un disque, nous suivons un
reportage à la télévision, nous allons au cinéma...
Si tant de travailleurs de nos banlieues urbaines demeurent, le soir, devant leurs postes
de télévision, ce n'est pas tellement parce que la télévision a gagné sur le théâtre, c'est
parce qu'il est souvent impossible après une journée de travail et de transport, de faire
l'effort physique d'aller au théâtre ou au concert. Sans parler d'une éducation théâtrale
ou musicale insuffisante, mais cette insuffisance date parfois d'avant la télévision, et on
ne saurait en accuser le développement de cette dernière.
Au lieu de considérer les divers moyens de communication et de culture dans des
rapports de concurrence, on peut les considérer dans des rapports mutuels de
collaboration, et pour ainsi dire, d'accumulation. On voit alors qu'ils peuvent s'appuyer
l'un l'autre au lieu de se détruire.
P. GAMARRA, La lecture pour quoi faire?
Je sais, il y a des gens qui disent, enivrés par nos petits bonds dans le cosmos: «
Eh bien, quand l'homme aura épuisé le capital nourricier de sa planète, quand il aura
pillé tous les magasins terrestres, quand il se sera rendu son logis inhabitable avec ses
ordures radioactives, avec ses pétroles, avec sa chimie, il émigrera sur un autre globe,
qu'il mettra à sac et souillera à son tour. »
N'y comptons pas trop... En attendant que ces rêves prennent corps, conduisons-nous
en bons « terricoles ». Respectons cette petite boule qui nous supporte.
Locataires consciencieux, ne dégradons pas les lieux où nous respirons. L'humanité
n'est pas une passante. Un poète a dit : naître, vivre et mourir dans la même maison...
Il y a apparence que le sort de l 'homme est de naître, de vivre et de mourir sur la
même planète.
J. ROSTAND
!EXERCICE 4
Thèse et Concession
!!1. Cherchez les phrases ou membres de phrases qui expriment la concession
face à l’adversaire
!!2.Quels mots de liaison marquent cette concession ?
!!3.Quelle thèse défend l’auteur ?
Aujourd'hui, nous sommes entrés dans l'époque de la culture de masse, de la culture
présente dans tous les foyers grâce à la télévision et à l'audiovisuel individuel. Mais si
ces appareils sont porteurs de création, s'ils ont enrichi notre patrimoine de films de
cinéma et de télévision qui n'ont rien à envier aux chefs-d'œuvre des autres arts, ils
sont avant tout des moyens de diffusion; cela signifie que, pour l'essentiel, les sources
de la culture sont ailleurs qu'en eux : dans les sciences, dans la littérature, dans les arts,
dans l'Histoire, pour l'exploration de la condition humaine, et dans la vie sociale, pour
l'ensemble des pré tiques culturelles. La culture étant l'effort d l'homme pour
comprendre le monde e s'adapter à lui, l'audiovisuel est le témoignage offert à tous de
cet effort. Mais cette offre n constitue pas à elle seule un accès à la culture : elle est un
pas de géant qui ne débouche sur rien s'il n'y a pas apprentissage préalable ou
concomitant. C'est la raison pour laquelle il faut se résigner à accepter le fait que la
télévision par elle-même ne changera jamais dans des proportions importantes le niveau
de culture des téléspectateurs.
G. MONTASSIER
L'ordinateur, s'il facilite et accélère la recherche des informations, a indexé, fiché,
numéroté l'individu, a, somme toute, restreint la liberté individuelle par la centralisation
à laquelle il aboutit, en resserrant autour de chacun les mailles d'un filet au travers des-
quelles il ne peut même plus se faufiler. Le téléphone, en rendant la communication
facile et rapide, l'a, simultanément, rendue superficielle. La télévision, en pénétrant dans
les foyers, uniformise les loisirs, standardise la pensée, transforme l'individu en
récepteur passif et tue l'échange.
C. ZYLERBERG
J'ai entendu rappeler à de jeunes lauréats du Concours général qu'ils devaient leur
succès à la chance - celle des dons et celle de l'environnement. De telles formules sont
déprimantes, et surtout très injustes. Certes il faut, là comme partout, des conditions
premières, à commencer par la santé et par un milieu familial propice - c'est-à-dire qui
ait, non pas de l'argent, mais le respect du travail. De même, il faut avoir la santé pour
jouer au tennis, et des parents qui vous aient donné l'idée du jeu, et permis de
commencer tôt. Pourtant, cela ne suffit pas. Et les petites écolières, je peux vous le dire,
ne sauraient réussir qu'en travaillant.
J. DE ROMILLY
Les sciences même partagent cette double puissance: esclavage et libération. Certes,
elles forment un appui solide dans le combat pour les libertés. Toute libération est lutte
contre la méconnaissance. Les sciences sont recherche, enseignement, production de
solutions. Elles facilitent nos travaux et nos jours, clarifient notre monde, aident à guérir
la maladie et à lutter contre la mort. Elles sont une conquête progressive sur la
nécessité. Il est donc hors de question de les délaisser, ces sciences pour lesquelles nos
pères ont lutté, et qui, contre-pouvoir d'une société d'ignorance, portent une grande
partie de nos espoirs.
Mais (...) elles préparent aussi de plus en plus des instruments de domination et de
destruction qui mettent en péril nos libertés. Physique nucléaire, mais aussi
informatique, biologie, génétique, psychiatrie, voire mathématiques, participent à cette
menace. Notre espace est en danger. Notre histoire est en danger. Et l'angoisse née de
ces risques est aussi un moyen d'asservir les peuples et de réduire les libertés.
Collectif LIBERTÉS
Textes et questions faites par RENAULT JP., disponibles (mais je ne connais pas la licence...) à l'adresse: sites.univ-provence.fr/wfcup/site/IMG/pdf/FRjrEX01-2.pdf
Séquence 8: Diffuser de la grammaire
Séance 1: Mise en place
Objectif de la séquence: créer un audioblog sur le thème de la « grammaire »
Un blog, c'est une publication sur Internet, régulièrement mise à jour (comme un journal personnel): l'article publié se nomme un « post ».
Un audioblog ne délivre pas des « posts » écrits, mais audio.
Par deux, vous allez créer un 'post' sur la grammaire: d'abord, il vous faudra le composer, puis l'enregistrer.
Diffuser, ça nécessite de définir son destinataire: à qui on s'adresse?
Choisir un thème:
La grammaire, c'est la description du fonctionnement de la langue: c'est quoi un verbe ? Où se placent les adjectifs ? Comment on pose une question ?
/***
|Name|AutoOpenTiddlersPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#AutoOpenTiddlersPlugin|
|Version|0.21|
|Requires|~TW2.x|
!!!Description:
Open a user defined number of recent tiddlers automatically when the TW loads.
You can also specify a tag and only load tiddlers that have that tag.
To change the number of tiddlers automatically opened, or define a tag to use, ed the config.autoOpenTiddlers part of the code below.
!!!To Do
*add an option to exclude tiddlers with a particular tag
!!!Code
***/
//{{{
//edit this section to change the default settings
config.autoOpenTiddlers =
{
count: 5, //number of tiddlers opened.
tag: undefined //change if you want to open tiddlers with a specific tag, eg: 'DefaultTiddlers'
}
config.autoOpenTiddlers.handler = function()
{
if (this.tag == undefined)
var newTiddlers = store.getTiddlers("modified");
else
var newTiddlers = store.getTaggedTiddlers(this.tag,"modified");
var newTiddlers = newTiddlers.reverse();
var max = Math.min(this.count,newTiddlers.length-1);
for (var i=max; i>=0; i--)
{ story.displayTiddler(null,newTiddlers[i].title);}
}
window.old_lewcid_autoOpenTiddlers_restart = restart;
restart = function ()
{
window.old_lewcid_autoOpenTiddlers_restart();
config.autoOpenTiddlers.handler();
}
//}}}
(trouvés sur Internet; seule trace dans ~OOo: collège de vinci)
!EXERCICES
!!1. Voici des titres d'ouvrages appartenant au genre autobiographique, D'après le titre, dîtes s'il s'agit de confession, d'essai, d'autobiographie, de mémoires...
1. ~Jean-Jacques Rousseau, les Confessions.
2. Marcel Pagnol, La Gloire de mon père.
3. ~Pierre-Jakez Hélios, Le Cheval d'orgueil. Mémoires d'un Breton du pays bigouden.
4. Pierre Pachet, Autobiographie de mon père.
5. Maryse Condé, Moi, Tituba sorcière.
6. ~François-René de Chateaubriand, René.
7. ~Gabrielle-Sidonie Colette, Sido.
8. Oscar Lewis, Les Enfants de Sanchez. Autobiographie d'une famille mexicaine.
9. Roland Barthes, Barthes par lui-même.
10. Michel Foucault, Moi, Pierre Rivière, ayant égorgé ma mère, ma soeur et mon frère...
11. Georges Perec, W ou Le souvenir d'enfance.
!!2. Lisez ces premières phrases d'oeuvres littéraires. Dites si elles annoncent un projet autobiographique ou si elles renvoient à un univers de fiction. Justifiez vos réponses avec précision.
1. Je suis né le 16 avril 1899, à huit heures du soir dans East Lane, à Walworth. (Charles Chaplin, Histoire de ma vie) - 2. Si vous voulez vraiment que je vous dise, alors sûrement la première chose que vous allez me demander c'est où je suis né, et à quoi ça a ressemblé, ma saloperie d'enfance, et ce que faisaient mes parents avant de m'avoir, et toutes ces conneries à la David Copperfield. mais j'ai pas envie de raconter ça et tout. (Salinger. L'attrape-coeurs) - 3. Sur l'immense empire carolingien s'étend la forêt. (Paul Zumthor. Charles le Chauve. Le petit-fils de Charlemagne) - 4. Tu es l'ainée et c'est toi qui t'occupes d'elles. (Charles Juliet. Lambeaux) - 5. Je naquis au Havre un vingt et un février en mil neuf cent et trois. (Raymond Queneau. Chéne et Chien) - 6. J'ai commencé à écrire mon journal l'été de mes quinze ans. (Femme de 24 ans. Cher cahier) - 7. 11 était une fois... , Un roi ! - vont s'écrier mes petits lecteurs. (Collodi. Pinocchio) - S. Ici repose celui dont le nom était écrit sur l'eau. (Keats. Épitaphe)-9. Les familles heureuses se ressemblent toutes les familles malheureuses sont malheureuses chacune à leur façon. (Tolstoï. Anna Karénine) - 10. La voix au téléphone semblait coupante et péremptoire. mais je n'entendais pas trop bien ce quelle disait - d'abord parce que je n'étais qu' à moitié réveillé et ensuite parce que je tenais le récepteur à l'envers. (Raymond Chandler. Charades pour écroulés) - 11. Jadis. si je me souviens bien ma vie était un festin où s'ouvraient tous les coeurs. où tous les vins croulaient. (Rimbaud. Une saison en enfer) - 12. Deviendrais-je le héros de ma propre vie, ou bien sera-t-elle occupée par quelqu'un d'autre ? (Dickens. David Copperfield).
L'AUTOBIOGRAPHIE : par où commencer?
!!Texte 1
C'est ici un livre de bonne foi , lecteur. Il t'avertit dès l'entrée que je ne m'y suis proposé aucune fin, que domestique et privée. Je n'y ai eu nulle considération de ton service, ni de ma gloire. Mes forces ne sont pas capables d'un tel dessein. Je l'ai voué à la commodité particulière de mes parents et amis : à ce que m'ayant perdu (ce qu'ils ont à faire bientôt) ils y puissent retrouver aucuns traits de mes conditions et humeurs, ce que par ce moyen ils nourrissent plus entière et plus vive la connaissance qu'ils ont eu de moi. Si c'eût été pour rechercher la faveur du monde, je me fusse mieux paré et me présenterais en une marche étudiée. Je veut qu'on m'y voie en ma façon simple, naturelle et ordinaire, sans contention et artifice : car c'est moi que je peins. Mes défauts s'y liront au vif, et ma forme naïve, autant que la révérence publique me l'a permis. Que si j'eusse été entre ces nations qu'on dit vivre encore sous la douce liberté des premières lois de nature, je t'assure que je m'y fusse très volontiers peint tout entier, et tout nu. Ainsi, lecteur, je suis moi-même la matière de mon livre : ce n'est pas raison que tu emploies ton loisir en un sujet si frivole et si vain : adieu donc.
De Montaigne, ce premier de mars mille cinq cent quatre-vingt.
//Montaigne, Essais.//
!!Texte 2
Je forme une entreprise qui n'eut jamais d'exemple et dont l'exécution n'aura point d'imitateur. Je veux montrer à mes semblables un homme dans toute la vérité de la nature ; et cet homme ce sera moi.
Moi seul.
Je sens mon cœur et je connais les hommes. Je ne suis fait comme aucun de ceux que j'ai vus ; j'ose croire n'être fait comme aucun de ceux qui existent. Si je ne vaux pas mieux, au moins je suis autre. Si la nature a bien ou mal fait de briser le moule dans lequel elle m'a jeté, c'est ce dont on ne peut juger qu'après m'avoir lu.
//~Jean-Jacques Rousseau, Les confessions, I,1, Publication posthume//
!!Texte 3
Que m'importe ce qui n'importe qu'à moi ? Presque tous les écrivains que je connais aiment leur enfance, je déteste la mienne. J'ai peu et mal appris à me créer moi-même, si se créer, c'est s'accommoder de cette auberge sans routes qui s'appelle la vie. J'ai su quelque fois agir, mais l'intérêt de l'action, sauf lorsqu'elle s'élève à l'histoire, est dans ce qu'on fait et non dans ce qu'on dit. Je ne m'intéresse guère.
//A.Malraux, Antimémoires, I. //
!!Texte 4
Je n'écris ni un roman ni l'histoire d'un personnage illustre. Digne ou indigne, ma vie est ma matière et ma matière est ma vie. Ayant vécu sans jamais penser que l'envie pût un jour me venir de l'écrire, elle aura peut-être un caractère intéressant qu'elle n'aurait pas, sans doute, si j'avais vécu dans l'intention de l'écrire dans mes vieux ans et, qui plus est, de la publier.
A l'âge de soixante-douze ans, en 1797, lorsque je puis dire vixi, quoique je vive encore, il me serait difficile de me créer un amusement plus agréable que celui de m'entretenir de mes propres affaires, et de fournir un beau sujet de rire à la bonne compagnie qui m'écoute et qui m'a toujours donné des preuves d'amitié et que j'ai toujours fréquentées. Pour bien écrire, je n'ai qu'à imaginer qu'elle me lira.
Quant-aux profanes que je pourrai empêcher de lire, il me suffit de savoir que ce n'est point pour eux que j'écris,
En me rappelant les plaisirs que j'ai eus, je les renouvelle, j'en jouis une seconde fois, et je ris des peines que j'ai endurées et que je ne sens plus.
//Casanova, Mémoires, préface., Publication posthume.//
!!Texte 5
En faits de détails atroces, mon livre n'ajoutera rien à ce que les lecteurs du monde entier savent déjà sur l'inquiétante question des camps d'extermination. Je ne l'ai pas écrit dans le but d'avancer de nouveaux chefs d'accusation, mais plutôt pour fournir des documents à une étude dépassionnée de certains aspects de l'âme humaine. Beaucoup d'entre nous, individus ou peuples, sont à la merci de cette idée, consciente ou inconsciente, que « l'étranger, c'est l'ennemi. ». Le plus souvent, cette conviction sommeille dans les esprits, comme une infection latente : elle ne se manifeste que par des actes isolés, sans lien entre eux, elle ne se fonde pas sur un système. Mais lorsque cela se produit, lorsque le dogme informulé est promu au rang de prémisse majeure d'un syllogisme, alors, au bout de la chaîne logique, il y a le « Lager », c'est à dire, le produit d'une conception du monde poussée à des plus extrêmes conséquences avec une cohérence rigoureuse ; tant que la conception a cours, les conséquences nous menacent. Puisse l'histoire des camps de concentration retentir pour tous comme un sinistre signal d'alarme.
//Primo Levi, Si c'est un homme, préface//
Et s'il était à refaire
Je referais ce chemin
Une voix monte des fers
Et parle des lendemains
On dit que dans sa cellule
Deux hommes cette nuit-là
Lui murmuraient "Capitule
De cette vie es-tu las
Tu peux vivre tu peux vivre
Tu peux vivre comme nous
Dis le mot qui te délivre
Et tu peux vivre à genoux"
Et s'il était à refaire
Je referais ce chemin
La voix qui monte des fers
Parle pour les lendemains
Rien qu'un mot la porte cède
S'ouvre et tu sors Rien qu'un mot
Le bourreau se dépossède
Sésame Finis tes maux
Rien qu'un mot rien qu'un mensonge
Pour transformer ton destin
Songe songe songe songe
A la douceur des matins
Et si c'était à refaire
Je referais ce chemin
La voix qui monte des fers
Parle aux hommes de demain
J'ai tout dit ce qu'on peut dire
L'exemple du Roi Henri
Un cheval pour mon empire
Une messe pour Paris
Rien à faire Alors qu'ils partent
Sur lui retombe son sang
C'était son unique carte
Périsse cet innocent
Et si c'était à refaire
Referait-il ce chemin
La voix qui monte des fers
Dit je le ferai demain
Je meurs et France demeure
Mon amour et mon refus
O mes amis si je meurs
Vous saurez pour quoi ce fut
Ils sont venus pour le prendre
Ils parlent en allemand
L'un traduit Veux-tu te rendre
Il répète calmement
Et si c'était à refaire
Je referais ce chemin
Sous vos coups chargés de fers
Que chantent les lendemains
Il chantait lui sous les balles
Des mots sanglant est levé
D'une seconde rafale
Il a fallu l'achever
Une autre chanson française
A ses lèvres est montée
Finissant la Marseillaise
Pour toute l'humanité
/***
|Name|BetterTimelineMacro|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#BetterTimelineMacro|
|Version|0.5 beta|
|Requires|~TW2.x|
!!!Description:
A replacement for the core timeline macro that offers more features:
*list tiddlers with only specfic tag
*exclude tiddlers with a particular tag
*limit entries to any number of days, for example one week
*specify a start date for the timeline, only tiddlers after that date will be listed.
!!!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Edit the ViewTemplate to add the fullscreen command to the toolbar.
!!!Syntax:
{{{<<timeline better:true>>}}}
''the param better:true enables the advanced features, without it you will get the old timeline behaviour.''
additonal params:
(use only the ones you want)
{{{<<timeline better:true onlyTag:Tag1 excludeTag:Tag2 sortBy:modified/created firstDay:YYYYMMDD maxDays:7 maxEntries:30>>}}}
''explanation of syntax:''
onlyTag: only tiddlers with this tag will be listed. Default is to list all tiddlers.
excludeTag: tiddlers with this tag will not be listed.
sortBy: sort tiddlers by date modified or date created. Possible values are modified or created.
firstDay: useful for starting timeline from a specific date. Example: 20060701 for 1st of July, 2006
maxDays: limits timeline to include only tiddlers from the specified number of days. If you use a value of 7 for example, only tiddlers from the last 7 days will be listed.
maxEntries: limit the total number of entries in the timeline.
!!!History:
*28-07-06: ver 0.5 beta, first release
!!!Code
***/
//{{{
// Return the tiddlers as a sorted array
TiddlyWiki.prototype.getTiddlers = function(field,excludeTag,includeTag)
{
var results = [];
this.forEachTiddler(function(title,tiddler)
{
if(excludeTag == undefined || tiddler.tags.find(excludeTag) == null)
if(includeTag == undefined || tiddler.tags.find(includeTag)!=null)
results.push(tiddler);
});
if(field)
results.sort(function (a,b) {if(a[field] == b[field]) return(0); else return (a[field] < b[field]) ? -1 : +1; });
return results;
}
//this function by Udo
function getParam(params, name, defaultValue)
{
if (!params)
return defaultValue;
var p = params[0][name];
return p ? p[0] : defaultValue;
}
window.old_timeline_handler= config.macros.timeline.handler;
config.macros.timeline.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
var args = paramString.parseParams("list",null,true);
var betterMode = getParam(args, "better", "false");
if (betterMode == 'true')
{
var sortBy = getParam(args,"sortBy","modified");
var excludeTag = getParam(args,"excludeTag",undefined);
var includeTag = getParam(args,"onlyTag",undefined);
var tiddlers = store.getTiddlers(sortBy,excludeTag,includeTag);
var firstDayParam = getParam(args,"firstDay",undefined);
var firstDay = (firstDayParam!=undefined)? firstDayParam: "00010101";
var lastDay = "";
var field= sortBy;
var maxDaysParam = getParam(args,"maxDays",undefined);
var maxDays = (maxDaysParam!=undefined)? maxDaysParam*24*60*60*1000: (new Date()).getTime() ;
var maxEntries = getParam(args,"maxEntries",undefined);
var last = (maxEntries!=undefined) ? tiddlers.length-Math.min(tiddlers.length,parseInt(maxEntries)) : 0;
for(var t=tiddlers.length-1; t>=last; t--)
{
var tiddler = tiddlers[t];
var theDay = tiddler[field].convertToLocalYYYYMMDDHHMM().substr(0,8);
if ((theDay>=firstDay)&& (tiddler[field].getTime()> (new Date()).getTime() - maxDays))
{
if(theDay != lastDay)
{
var theDateList = document.createElement("ul");
place.appendChild(theDateList);
createTiddlyElement(theDateList,"li",null,"listTitle",tiddler[field].formatString(this.dateFormat));
lastDay = theDay;
}
var theDateListItem = createTiddlyElement(theDateList,"li",null,"listLink",null);
theDateListItem.appendChild(createTiddlyLink(place,tiddler.title,true));
}
}
}
else
{
window.old_timeline_handler.apply(this,arguments);
}
}
//}}}
[[Liens pour Blade Runner]]
/***
BreadcrumbsPlugin
author: Alan Hecht (with 2.0 update from 'jack' and revisions by Bram Chen)
source: http://groups.google.com/group/TiddlyWikiDev/msg/c23edb5f3c0d8b7e
***/
//{{{
version.extensions.breadCrumbs = {major: 1, minor: 0, revision: 1,
date: new Date("Feb 4, 2006")};
config.breadCrumbs = [];
window.onClickTiddlerLink_orig_breadCrumbs = window.onClickTiddlerLink;
window.onClickTiddlerLink = function(e){
window.onClickTiddlerLink_orig_breadCrumbs(e);
addCrumb(e);
}
function addCrumb(e){
if (!e) var e = window.event;
var thisCrumb = "[[" + resolveTarget(e).getAttribute("tiddlyLink") + "]]";
var ind = config.breadCrumbs.find(thisCrumb);
if(ind == null)
config.breadCrumbs.push(thisCrumb);
else
config.breadCrumbs.length = ind++;
refreshCrumbs();
}
function refreshCrumbs(){
var crumbArea = document.getElementById("breadCrumbs");
if (!crumbArea) {
var crumbArea = document.createElement("div");
crumbArea.id = "breadCrumbs";
crumbArea.style.visibility= "hidden";
var targetArea = document.getElementById("tiddlerDisplay");
targetArea.parentNode.insertBefore(crumbArea,targetArea);
}
crumbArea.style.visibility = "visible";
removeChildren(crumbArea);
createTiddlyButton(crumbArea,"Accueil",null,restartHome);
wikify(" || " + config.breadCrumbs.join(' > '),crumbArea)
}
function restartHome(){
story.closeAllTiddlers();
restart();
config.breadCrumbs = [];
var crumbArea = document.getElementById("breadCrumbs");
crumbArea.style.visibility = "hidden";
}
//}}}
Dans la description d'un paysage ou d'un lieu, les CCL tiennent une place très importante: ils organisent le lieu et permettent au lecteur de s'en faire une image.
Ex: « sous la digue, une petite anse abritait une plage »
Le CCL:
répond à la question « Où +le verbe conjugué de la phrase » (ici: où + abritait)
peut se supprimer (et la phrase reste correcte)
est séparé du reste par des virgules
« CCL »: c'est une fonction, ça indique à quoi servent ces mots.
Les CCL peuvent avoir des NATURES différentes:
« //sous la digue//, une petite anse abritait une plage » → Groupe Nominal
« //là//, une petite anse abritait une plage » → Pronoms
Les groupes nominaux sont introduits par des prépositions (sur, vers, sous, à côté...)
Les pronoms (là, ici, en, y) remplacent des noms.
(je vais à l'école → j'y vais)
!!1. Classez les termes suivants selon qu'ils expriment la joie ou la surprise:
l'allégresse – le bonheur – la bonne humeur – la consternation – la déception – l'effarement – l'entrain – l'émerveillement – l'enthousiasme – l'étonnement – l'exaltation – la gaieté – le plaisir – le ravissement – la réjouissance – le saisissement – la satisfaction – le soulagement – la stupéfaction – la stupeur
!!2.Classez les termes suivants selon qu'ils expriment la tristesse, la colère ou la peur:
l'affolement – l'agacement – l'affliction – l'angoisse – l'appréhension – le cafard – le chagrin – la crainte – l'effroi – l'emportement – l'énervement – l'ennui – l'épouvante – l'exaspération – la frayeur – la fureur – l'inquiétude – l'irritation – la mélancolie – la morosité – la panique – la peine – la rage – la rogne – la terreur
!!3.Trouvez les adjectifs qualificatifs et/ou les verbes ou locution verbales correspondant aux exercices 2 et 3
ex : le cafard --> avoir le cafard la consternation--> être consterné la rogne -> être en rogne
!!4.Classez ces expressions en deux colonnes selon qu'elles expriment la joie ou la surprise, A quel registre de langue appartiennent-elles?
Avoir le coeur qui bat la chamade - boire du petit lait - en rester comme deux ronds de flan - être aux anges- être bien dans sa peau - être gai comme un pinson - être heureux comme un poisson dans l'eau - Ne pas en croire ses oreilles - ne pas en revenir - ouvrir des yeux ronds - rester clouer sur place - s'en donner à coeur joie - se frotter les mains - tomber des nues - mettre du baume au coeur
!!5. Classez ces expressions en trois colonnes selon qu'elles expriment la tristesse, la colère ou la peur, A quel registre de langue appartiennent-elles? ''joie surprise tristesse colère peur''
Avoir les larmes aux yeux – avoir des sueurs froides – avoir le coeur serré – avoir la gorge sèche, l'estomac noué – avoir la mort dans l'âme – avoir le moral à zéro – broyer du noir – claquer des dents – décharger sa bile – échauffer les oreilles – la moutarde lui monte au nez – être triste comme un bonnet de nuit – être au trente-sixième dessous – être plus mort que vif – faire grise mine, un drôle de nez – faire la tête (la gueule, la tronche), une tête d'enterrement – monter sur ses ergots, ses grands chevaux – trembler comme une feuille.
!!6. En vous aidant du tableau suivant, classez ces verbes selon ce qu'ils expriment. Créez 5 phrases les utilisant,
abasourdir – déconcerter – décevoir – ébahir – éberluer – éblouir – effarer – épater – époustoufler – estomaquer – étonner – frapper – impressionner – méduser – pétrifier – renverser – stupéfier – surprendre – tétaniser
Une surprise (bonne ou mauvaise, on ne le sait pas)
Une surprise agréable
Une surprise désagréable
!!7. Précisez le sens des mots de cette liste. Complétez les phrases avec le terme qui convient (plusieurs solutions sont parfois possibles ). Relevez les autres termes ou expressions évoquant la tristesse,
abattement – amertume – affliction – consternation – découragement – désolation – désespoir – langueur – morosité – nostalgie – vague à l'âme
a. Ce nouvel échec nous plongea dans un tel ..................... qu'il mit longtemps à retrouver le désir de se battre.
b. La sécheresse avait transformé la campagne naguère verdoyante en une terre de ......................
c. Nul ne peut dire la ...................... qui se lut sur tous les visages à la nouvelle que ce champion jugé exemplaire était suspecté de dopage. Lui, songeait avec ...................... à tous les efforts anéantis par cette accusation injuste,
d. La mort de sa femme lui avait brisé le coeur ; depuis lors, le vieil homme restait inconsolable, prostré dans un état de total ......................
e. Pourquoi rit-on devant le ...................... d'Harpagon privé de son trésor?
f. Le sort semble s'acharner sur cette famille ; ce deuil va s'ajouter à son ......................
g. Dans la grisaille des jours d'automne, Emma glissait dans un état de ...................... qu'elle ne trouvait pas sans charme. Elle cultivait cette humeur rêveuse, ce ......................mélancolique où affleuraient de vagues désirs, elle s'abandonnait à la ...................... des beaux jours disparus,
!!8. Précisez le sens des verbes et des expressions suivants et classez les selon le degré de colère qu'ils expriment, Les quels sont familiers?
Bisquer – se courroucer – se déchaîner – éclater – s'emporter – s'énerver – enrager – s'exaspérer – s'exciter – exploser- se fâcher tout rouge – se froisser – fulminer – s'impatienter – s'irriter – se mettre en rogne – piquer une colère (une crise) – râler – se rebiffer – se révolter – se vexer – voir rouge.
!!9. Précisez le sens des termes suivants et classez les selon le degré de joie qu'ils expriment.
L'allégresse – le consentement – l'enthousiasme – l'enchantement – l'euphorie – l'exaltation – la griserie – la jubilation – la liesse – le ravissement
!!10. Complétez les phrases suivantes avec les mots qui conviennent. Faites les accords nécessaires :
désopilant – émoustillé – enjoué – folâtre – guilleret – hilare – jovial – radieux – ravi – réjoui
a. Ce matin-là, Perrette se sentait toute ...................... et d'humeur ......................
b. Joe était ...................... de n'avoir rien à faire.
c. A son retour, Thierry arborait un visage si ......................, une mine si ...................... que l'on comprit aussitôt qu'il avait eut son permis.
d. Le visage ......................, l'oeil ......................, Jean riait d'avance de l'histoire ...................... qu'il allait raconter.
e. C'était un compagnon agréable, toujours ...................... et souriant, la parole ...................... et chaleureuse.
*Séquence 6: [[Sensations dans les textes et la peinture]]
*Séquence 7: [[Décrire un lieu 2]]
![[Troisième 5]]
![[Troisième 7]]
/***
!! CollapseTiddlersPlugin
^^Author: Bradley Meck^^
^^Source: http://gensoft.revhost.net/Collapse.html^^
^^Traduction @@color(lightgray):Mail to@@ ''jacques.turbe@@color(black):@gm@@ail.com''^^
|ELS 2/24/2006: added fallback to "CollapsedTemplate if "WebCollapsedTemplate" is not found |
|ELS 2/6/2006: added check for 'readOnly' flag to use alternative "WebCollapsedTemplate" |
***/
config.commands.collapseTiddler = {
text: "plier",
tooltip: "Réduire cet élément à son titre",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
if(e.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if (!store.tiddlerExists(t)) { alert(" 'CollapsedTemplate' non trouvé"); return; }
if(e.getAttribute("template") != t ){
e.setAttribute("oldTemplate",e.getAttribute("template"));
story.displayTiddler(null,title,t);
}
}
}
}
config.commands.expandTiddler = {
text: "déplier",
tooltip: "Afficher le contenu de cet élément",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
story.displayTiddler(null,title,e.getAttribute("oldTemplate"));
}
}
config.macros.collapseAll = {
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,"plier tout","",function(){
story.forEachTiddler(function(title,tiddler){
if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE])
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if (!store.tiddlerExists(t)) { alert("'CollapsedTemplate' non trouvé"); return; }
story.displayTiddler(null,title,t);
})})
}
}
config.macros.expandAll = {
handler: function(place,macroName,params,wikifier,paramString,tiddler){
createTiddlyButton(place,"déplier tout","",function(){
story.forEachTiddler(function(title,tiddler){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if (!store.tiddlerExists(t)) { alert("'CollapsedTemplate' non trouvé"); return; }
if(tiddler.getAttribute("template") == t) story.displayTiddler(null,title,tiddler.getAttribute("oldTemplate"));
})})
}
}
config.commands.collapseOthers = {
text: "focus",
tooltip: "Afficher cet élément en réduisant tous les autres",
handler: function(event,src,title)
{
var e = story.findContainingTiddler(src);
story.forEachTiddler(function(title,tiddler){
if(tiddler.getAttribute("template") != config.tiddlerTemplates[DEFAULT_EDIT_TEMPLATE]){
var t = (readOnly&&store.tiddlerExists("WebCollapsedTemplate"))?"WebCollapsedTemplate":"CollapsedTemplate";
if (!store.tiddlerExists(t)) { alert("'CollapsedTemplate' non trouvé"); return; }
if (e==tiddler) t=e.getAttribute("oldTemplate");
//////////
// ELS 2006.02.22 - removed this line. if t==null, then the *current* view template, not the default "ViewTemplate", will be used.
// if (!t||!t.length) t=!readOnly?"ViewTemplate":"WebViewTemplate";
//////////
story.displayTiddler(null,title,t);
}
})
}
}
<div class='toolbar' macro='toolbar expandTiddler collapseOthers -closeTiddler closeOthers +editTiddler permalink references jump'></div>
<div class='title' macro='view title'></div>
!Comment un locuteur fait « passer » sa subjectivité ?
« Subjectif » appartient à la famille de « sujet », au sens de personne particulière (avec ses goûts, ses opinions).
Subjectif s'oppose à « objectif ».
*Les « modalisateurs »
Sont des termes qui révèle la position du locuteur par rapport à ce qu'il énonce.
Ex: Les Martiens ont débarqué. Les Martiens //auraient// (Conditionnel) débarqué. //(Dans le 2nd, le locuteur n'assume pas l'énoncé)//
Les modalisateurs peuvent être des signes de ponctuation, des verbes ( il paraît, il semble), des subordonnées (si on croit que...), des GN (selon certaines sources, d'après les témoins...), des adjectifs (possible, probable, certain....), des adverbes (peut-être, sûrement...)
''Tout dans la langue peut « modaliser »'', il faut donc être attentif
* Mélioratif, péjoratif
Deux mots qui ont la même « dénotation », comme voiture et bagnole, n'ont pas la même « dénotation » (= révèle l'avis du locuteur)
!Ces questions contiennent la plus grande partie de ce qui vous sera demandé au Brevet: retenez-len les réponses.
Prenons les, sans les questions elles-mêmes, comme des rappels nécessaires de leçons.
# Le narrateur n'est pas un personnage de l'histoire, on appelle cela un //narrateur extradiégétique//. Mais ce n'est pas ce qu'on vous demande ici. Son statut est ici son ''point de vue'': "''omniscient''" ou "''interne''". Ici ce sont les deux: manifestement, le narrateur sait tout, mais quand il adopte un point de vue, il privilégie celui d'Hamilcar.
# Le résumé qu'on vous demande est celui du ''texte, pas du paratexte'' ... cette erreur est récurrente dans vos copies.
# Idem. Le texte abonde de mots qui montrent que cela se passe en ''Afrique'', dans l'''Antiquité''.
# Comment le début de la scène est-il raconté clairement du point de vue d'Hamilcar. A une question similaire, il faut observer:
## Les verbes et leurs sujets: ici les verbes sont des verbes de perceptions (et c'est Hamilcar qui perçoit), et leurs sujets est soit Hamilcar (évidemment) soit "une voix" ( l'article indéfini prend son sens par rapport à Hamilcar).
## Les adjectifs, souvent chargés d'//évaluation//, reflète les points de vues (du narrateur ou du personnage): //"misérable", "abjecte"//
#
## Les procédés grammaticaux d'insertion du dialogue dans le récit sont les deux compères: Discours Direct et Discours Indirect (parfois, ils s'adjoignent les services d'un troisième larron: Discours Indirect Libre).
## Réponse automatique à la question de l'utilité des dialogues (DD) ou des pensées (DI): Cela permet de révéler les sentiments profonds des personnages et les motifs qui les animent.
# Les personnages sont Hamilcar (qui est le Suffète), l'esclave et les 3 prêtres. Finalement on compte 3 personnages, parce que les prêtres fonctionnent comme 1 seul homme; l'enfant porté dans les bras n'"//agit//" pas: on ne le considère pas comme un personnage (Retenez: un personnage agit).
# Réponse propre au texte: on la corrige en classe. Question qui valait le plus de points.
# Réponse propre au texte: on la corrige en classe.
#
## ''Accumulation'' de ''phrases nominales'': cela fait un effet de supplication.
## Phrases exclamatives et impératives.
## Les pronoms sont COD , ils sont en position d'//objet//. L'enfant est soumis aux prêtres, Hamilcar s'y soumet aussi.
#
## Le lecteur n'est pas étonné: il sait contrairement aux prêtres que Hamilcar simule. Comme au théâtre, il en sait plus que certains personnages.
## Les descriptions permettraient de faire des didascalies, les paroles d'Hamilcar sont comme un monologue, les phrases exclamatives sont déjà un jeu d'acteur.
# ''Passé simple et imparfait'': à chaque question sur les deux ensemble, il faut répondre "le ps marque une action de premier plan, alors que l'imparfait marque une action d'arrière plan". Même si ça //colle// mal, on vous le comptera juste, parce que ce n'est pas complètement faux.
# ~CE2 et Sixième
# Il refuse d'y retourner: c'est moins intéressant que de jouer
# Il a aimé les nombreuses activités manuelles.
# Elle se prénommait Marie.
# Grégoire Dubosc.
# Son grand-père compte pour lui, car jamais il ne le "dispute" pour ses notes et ils bricolent ensemble.
# C'est la première fois que son grand-père se fâche contre lui.
# Son grand-père aimait l'école: il a fait Polytechnique.
# Il travaille pour M. Martineau.
# Il cache ses 200 € dans la sarbacane de son Action Man
# Le lycée Grand-champs
# Il est hospitalisé et dans le coma
# Il réussit à monter en haut de la corde à noeud, pour que son grand-père se réveille.
!TEXTE
Condamné au bagne pour avoir volé un pain, Jean Valjean a purgé sa peine et vient d'être
libéré. Il s'arrête dans une auberge.
Pendant que le nouveau venu se chauffait, le dos tourné, le digne aubergiste Jacquin Labarre tira un crayon de sa poche, puis il déchira le coin d'un vieux journal qui traînait sur une petite table près de la
fenêtre. Sur la marge blanche il écrivit une ligne ou deux, plia sans cacheter et remit ce chiffon de papier à un enfant qui paraissait lui servir tout à la fois de marmiton et de laquais. L'aubergiste dit un mot à l'oreille du marmiton, et l'enfant partit en courant en direction de la mairie.
Le voyageur n'avait rien vu de tout cela.
Il demanda encore une fois :
- Dîne-t-on bientôt ?
– Tout à l'heure, dit l'hôte.
L'enfant revint. Il rapportait le papier. L'hôte le déplia avec empressement, comme quelqu'un qui attend une réponse. Il parut lire attentivement, puis hocha la tête, et resta un moment pensif. Enfin il fit un pas vers le voyageur qui semblait plongé dans des réflexions peu sereines.
– Monsieur, dit-il, je ne puis vous recevoir.
L'homme se dressa à demi sur son séant.
– Comment ! Avez-vous peur que je ne paye pas ! Voulez-vous que je paye d'avance ? J'ai de l'argent, vous dis-je.
– Ce n'est pas cela.
– Quoi donc ?
– Vous avez de l'argent...
– Oui, dit l'homme.
– Et moi, dit l'hôte, je n'ai pas de chambre.
L'homme reprit tranquillement : -Mettez-moi à l'écurie.
– Je ne puis.
– Pourquoi ?
– Les chevaux prennent toute la place.
– Et bien, repartit l'homme, un coin dans le grenier. Une botte de paille. Nous verrons cela après dîner.
– Je ne puis vous donner à dîner.
Cette déclaration, faite d'un ton mesuré, mais ferme, parut grave à l'étranger. Il se leva.
– Ah bah ! Mais je meurs de faim, moi. J'ai marché dès le soleil levé. J'ai fait douze lieues. Je paye. Je veux manger.
– Je n'ai rien, dit l'hôte.
L'homme éclata de rire et se tourna vers la cheminée et les fourneaux.
– Rien ! Et tout cela ?
– Tout cela m'est retenu.
– Par qui ?
– Par ces messieurs les rouliers.
– Combien sont-ils ?
– Douze.
– Il y a là à manger pour vingt.
– Ils ont tout retenu et tout payé d'avance.
L'homme se rassit et dit sans hausser la voix :
– Je suis à l'auberge, j'ai faim, et je reste.
L'hôte alors se pencha à son oreille, et lui dit d'un accent qui le fit tressaillir :
– Allez-vous en !
Le voyageur était courbé en cet instant et poussait quelques braises dans le feu avec le bout ferré de son bâton, il se retourna vivement, et, comme il ouvrait la bouche pour répliquer, l'hôte le regarda fixement et ajouta toujours à voix basse : - Tenez, assez de paroles comme cela.
Voulez-vous que je vous dise votre nom ? Vous vous appelez Jean Valjean. Maintenant voulez-vous que je vous dise qui vous êtes ? En vous voyant entrer, je me suis douté de quelque chose, j'ai envoyé à la mairie, et voici ce qu'on m'a répondu. Savez-vous lire ?
Victor Hugo, Les Misérables (1862), Le livre de poche
1. marmiton : apprenti au service de la cuisine dans un restaurant. 2. laquais : valet
!QUESTIONS (15 POINTS)
Toutes vos réponses devront être rédigées
!!I/ Un aubergiste singulier (5 points)
1.
a) Quelle est la valeur de l'imparfait de la première ligne et des passés simples des lignes 1 à 5 ? (1 point)
b) Sur quel personnage l'emploi de ces temps attire-t-il l'attention ? (0,5 point)
2.
a) Dans le reste du texte, quel nom reprend le terme d'"aubergiste" ? (0,5 point)
b) Quelle qualité peut-on attendre du personnage ainsi désigné ? (0,5 point)
3.
a) De la ligne 20 à 27 : quelle forme de phrase l'aubergiste emploie-t-il le plus souvent ?
b) De la ligne 28 à la fin : relevez les trois expressions du texte qui caractérisent la manière dont l'aubergiste parle au voyageur. (1 point)
4. En confrontant l'ensemble de vos réponses, dites si Jacquin Labarre vous semble vraiment être un "digne aubergiste". Justifiez votre réponse. (1 point)
!!II/ Un voyageur indésirable (5 points)
1. Quelles sont les raisons que donne le voyageur pour justifier sa présence à l'auberge ?
Vous paraissent-elles justes ? Développer votre réponse. (1 point).
2. « Je suis à l'auberge, j'ai faim, et je reste. »
Quelle est la relation logique exprimée par la conjonction de coordination « et » (0.5 point)
3. Dans la phrase : « Mais je meurs de faim, moi. » (ligne 29), relevez le terme mis en relief et commentez l'effet produit. (1 point)
4. En vous appuyant sur les réponses aux questions précédentes, qualifiez l'attitude du voyageur. (0,5 point)
5. Dans l'ensemble du texte, relevez les noms et groupes nominaux utilisés pour désigner le "voyageur"
a) par le narrateur (0,5 point)
b) par l'aubergiste (0,5 point)
c) En quoi la dernière désignation est-elle essentielle pour le "voyageur" ? (1 point)
!!III/ Le face à face (5 points)
1. Quel est l'enjeu du débat pour chaque personnage ? (1 point)
2. Dans les lignes 32 à 40 :
a) Jean Valjean se laisse-t-il faire par l'aubergiste ? (0,5 point)
b) Justifiez votre réponse en vous appuyant sur le type de phrase qu'il emploie le plus souvent. (1 point)
3. Donner l'infinitif, le mode et le temps de "Allez-vous-en".
En quoi cette phrase est-elle importante ? (1,5 points)
4. En quoi les propos de l'aubergiste trahissent-ils sa mauvaise foi ? (1 point)
!RÉÉCRITURE (4 POINTS)
Ligne 49-50, "En vous voyant...répondu" : Réécrivez le passage au plus que parfait en passant de la première personne du singulier à la troisième personne du pluriel.
!DICTEE (6 POINTS)
L'homme baissa la tête, ramassa le sac qu'il avait déposé à terre, et s'en alla.
Il prit la grande rue. Il marchait devant lui au hasard, rasant de près les maisons, comme un homme humilié et triste. Il ne se retourna pas une seule fois. S'il s'était retourné, il aurait vu l'aubergiste de La Croix-de-Colbas sur le seuil de sa porte, entouré de tous les voyageurs de son auberge et de tous les passants de la rue, parlant vivement et le désignant du doigt, et, aux regards de défiance et d'effroi du groupe, il aurait deviné qu'avant peu son arrivée serait l'événement de toute la ville.
Victor Hugo, Les Misérables.
S1: L'île de Robinson
Une description est organisée avec des CCL.( « au nord », « à l'Ouest »)
Les verbes de la description sont à l' imparfait. (Les actions sont au passé simple: « Robinson s'arrêta »).
Avant la description, le personnage s'immobilise, puis regarde.
Ici, ''__le thème de la description__'' est l'île.
[[texte|L'île de Robinson, Tournier]]
Partir sur la différence
# Fermer la porte (la porte est à "fermer")
# La porte fermée: "Fermée, la porte, j'ai dit"
Ou avec OUVRIR
__Caractéristiques du « texte explicatif ».__
#Pas de narrateur, mais un énonciateur
#Point de vue objectif :neutre, sans avis personnel (c'est le contraire du « texte argumentatif »).
#Temps principalement utilisé est le présent, avec sa valeur de « présent de vérité générale » (utilisation du présent pour un fait toujours valable: « la terre tourne autour du soleil »).
#Vocabulaire précis et spécifique
#Des causes et des conséquences du phénomène (car, donc, ainsi, c'est pourquoi...etc)
L'énonciateur s'adapte à son destinataire. (songer à la différence d'explication de la reproduction...)
__Caractéristiques du texte narratif__
#Un personnage (et son action)
#Temps: passé simple (ou le présent avec la valeur de « présent de narration ».
#Présence d'un narrateur
#Enoncé coupé de sa situation d'énonciation (peu importe de savoir où et quand a été écrit le texte, cela n'est pas nécessaire pour le comprendre.
/***
<<tiddler DividedListsPluginDocumentation>>
!Code
***/
//{{{
version.extensions.DividedListsPlugin = { major: 1, minor: 1, revision: 0, date: new Date(2006,17,3),
source: "http://yann.perrin.googlepages.com/twkd.html#DividedListsPlugin"
};
//}}}
/***
// //Partial Tiddler List
***/
//{{{
config.macros.listPart = {};
config.macros.listPart.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var type = params[0] ? params[0] : "all";
var theList = document.createElement("ul");
place.appendChild(theList);
if(config.macros.list[type].prompt)
createTiddlyElement(theList,"li",null,"listTitle",config.macros.list[type].prompt);
var results;
if(config.macros.list[type].handler)
results = config.macros.list[type].handler(params);
var model = new RegExp("^["+params[1]+"]","i");
for (var t = 0; t < results.length; t++)
{
var theListItem = document.createElement("li")
if(typeof results[t] == "string")
{
if (model.test(results[t]))
{
theList.appendChild(theListItem);
createTiddlyLink(theListItem,results[t],true);
}
}
else
{
if (model.test(results[t].title))
{
theList.appendChild(theListItem);
createTiddlyLink(theListItem,results[t].title,true);
}
}
}
}
//}}}
// //Partial Tag List
//{{{
config.macros.tagListPart = {};
config.macros.tagListPart.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var model = new RegExp("^["+params[0]+"]","i");
var tags = store.getTags();
var theDateList = createTiddlyElement(place,"ul",null,null,null);
if(tags.length == 0)
createTiddlyElement(theDateList,"li",null,"listTitle",config.macros.allTags.noTags);
for (var t=0; t<tags.length; t++) {
if (model.test(tags[t])) {
var theListItem =createTiddlyElement(theDateList,"li",null,null,null);
var theTag = createTiddlyButton(theListItem,tags[t][0] + " (" + tags[t][1] + ")",config.macros.allTags.tooltip.format([tags[t][0]]),onClickTag);
theTag.setAttribute("tag",tags[t][0]);
}
}
}
//}}}
/***
// //Defining shadow tiddlers
***/
//{{{
function defineTabShadow (listType,tabsTitle,containerTitle)
{
var tabdef = "<<tabs txtTabbedList" + listType + " ";
for (var t = 0; t < tabsTitle.length; t++)
{
tabdef += tabsTitle[t] + " 'Tiddlers in " + tabsTitle[t] +"' " + listType.toUpperCase()+tabsTitle[t] + " ";
if (containerTitle != 'TabTags')
config.shadowTiddlers[listType.toUpperCase()+tabsTitle[t]]="<<listPart " + listType + " " + tabsTitle[t] + ">>";
else
config.shadowTiddlers[listType.toUpperCase()+tabsTitle[t]]="<<tagListPart " + tabsTitle[t] + ">>";
}
tabdef += ">>";
config.shadowTiddlers[containerTitle]=tabdef;
}
tabs=['a-e','f-j','k-o','p-s','t-z','\\W'];
defineTabShadow('all',tabs,'TabAll');
defineTabShadow('tags',tabs,'TabTags');
defineTabShadow('missing',tabs,'TabMoreMissing');
defineTabShadow('orphans',tabs,'TabMoreOrphans');
defineTabShadow('shadowed',tabs,'TabMoreShadowed');
config.shadowTiddlers.DividedListsPluginDocumentation = "Documentation for this plugin is available [[here|" + version.extensions.DividedListsPlugin.source +"Documentation]]";
//}}}
// // Optionally replace timeline by a calendar
//{{{
if (config.macros.calendar!=undefined)
{
if (config.options.chkCalendarAsTimeline==undefined)
config.options.chkCalendarAsTimeline=false;
config.shadowTiddlers.AdvancedOptions +="\n<<option chkCalendarAsTimeline>> Replace timeline with a calendar of the current month";
if (config.options.chkCalendarAsTimeline)
config.shadowTiddlers.TabTimeline = "<<calendar thismonth>>";
}
//}}}
|Name|DividedListsPlugin|
|Author|YannPerrin|
|Location|http://yann.perrin.googlepages.com/twkd.html#DividedListsPlugin|
|Version|1.1.0|
|Requires|~TW2.x|
!Description
This plugin defines two macros (listPart and tagListPart) and uses them to provide tabbed lists of tiddlers and tags in SideBarTabs
!Installation
*import (or copy/paste in edit mode) the following tiddlers into your document:<<br>>DividedListsPlugin (tagged with systemConfig)
*if you want to have offline access to this plugin documentation, import (or copy/paste in edit mode) the following tiddlers into your document:<<br>>DividedListsPluginDocumentation
!Usage
''Once properly installed'' (see above), this plugin should significantly decrease the height of SideBarTabs lists.
If CalendarPlugin (by [[Steve Rumsby]]) is installed it also provides an option to replace the timeline with a calendar (see AdvancedOptions)
If you want to have this option turned on by default, createa tiddler tagged with <<tag systemConfig>> and include in it these lines :
{{{
if (config.options.chkCalendarAsTimeline==undefined)
config.options.chkCalendarAsTimeline=true;
}}}
The title of such a tiddler should be before DividedListsPlugin in alphabetical order
It may be interesting as most screens are wider than tall.
And with the help of CalendarPlugin or [[ArchivedTimeline|http://ptw.sourceforge.net/include/ArchivedTimeline.js]] (by [[Bram Chen]]) and a little StyleSheet tweak, you could obtain a fairly usable FixedSidebar.
!Revision History
2006.17.03-1.1.0
>added an option to replace the timeline with a calendar if CalendarPlugin is installed
2006.16.03-1.0.0
>Initial release
1. A quelle occasion le narrateur et C. Auguste Dupin ont-ils fait connaissance ?
2. Quelle faculté peu fréquente Dupin possède-t-il ?
3. Racontez brièvement le spectacle que découvrent les voisins et les gendarmes en entrant dans la maison de Madame l’Espanaye.
4. Quelle est la particularité d’une des deux voix entendues dans la maison pendant le meurtre ?
5. Pr quelle issue le meurtrier est-il passé pour s’enfuir ? Donnez des détails sur cette issue.
6. Pourquoi l’intérêt financier ne peut-il constituer le mobile du crime ?
7. Quel indice, trouvé entre les doigts de Madame l’Espanaye, vient apporter des précisions sur l’identité du meurtrier ?
8. Comment Dupin s’y prend-il pour attirer le marin chez lui ?
9.Que devient finalement le meurtrier ?
A quelle époque a vécu l'auteur?
<html>
<tbody>
<tr>
<td style="text-align: center;"><span style="font-weight: bold;">1ère déclinaison </span><br/></td>
</tr>
</tbody>
</table></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top;"><br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;">Singulier<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;">Pluriel<br/></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">N.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">a</span><br/></td>
<td style="text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">ae</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center; font-weight: bold;">V.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">a</span><br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">ae</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center; font-weight: bold;">Acc.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">am</span></span></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">as</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center; font-weight: bold;">G.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">ae</span></span></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">arum</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; text-align: center; font-weight: bold;">D.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">ae</span></span></span></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">is</span></span></span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">Abl.<br/></td>
<td style="vertical-align: top; text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">a</span></span></span></td>
<td style="text-align: center; font-weight: bold;"><span style="font-weight: bold;"><span style="font-weight: bold;">ros<span style="color: rgb(255, 0, 0);">is</span></span></span></td>
</tr>
</tbody>
</table><br/></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="font-weight: bold; text-align: center;">2ème déclinaison<br/></td>
</tr>
</tbody>
</table></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top; text-align: center;"><span style="font-weight: bold;"><span style="color: rgb(255, 255, 255);">___</span></span><br/></td>
<td style="text-align: center; font-weight: bold;">Masculin/Feminin<br/></td>
<td style="text-align: center; font-weight: bold;"><span style="color: rgb(255, 255, 255);">llM-</span>Neutre<span style="color: rgb(255, 255, 255);">MM_</span><br/></td>
</tr>
</tbody>
</table></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><br/></td>
<td style="font-weight: bold; text-align: center;">Singulier<br/></td>
<td style="font-weight: bold; text-align: center;">Pluriel<br/></td>
<td style="font-weight: bold; text-align: center;">Singulier<br/></td>
<td style="font-weight: bold; text-align: center;">Pluriel<br/></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">N.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">domin<span style="color: rgb(255, 0, 0);">us</span><br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">i</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">templ<span style="color: rgb(255, 0, 0);">um</span><br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">a</span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">V.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">e</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">i</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">um</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">a</span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Acc.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">um</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">os</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">um</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">a</span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">G.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">i</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">orum</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">i</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">orum</span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">D.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">o</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">is</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">o</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">is</span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Abl.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">o</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">domin<span style="color: rgb(255, 0, 0);">is</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">o</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">templ<span style="color: rgb(255, 0, 0);">is</span></span></td>
</tr>
</tbody>
</table><br/></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="font-weight: bold; text-align: center;">3ème déclinaison<br/></td>
</tr>
</tbody>
</table></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top;"><span style="font-weight: bold;"><span style="font-weight: bold;"><span style="color: rgb(255, 255, 255);">___</span></span></span></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;">Masculin/Feminin</span></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="color: rgb(255, 255, 255);">llM-</span>Neutre<span style="color: rgb(255, 255, 255);">MM_</span></span></td>
</tr>
</tbody>
</table></span><span style="font-weight: bold;"><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Singulier<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Pluriel<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Singulier<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Pluriel<br/></td>
</tr>
<tr>
<td style="font-weight: bold; text-align: center;">N.</td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">consul<br/></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">es</span></span></span></td>
<td style="font-weight: bold; text-align: center;">corpus<br/></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">a</span></span></span></td>
</tr>
<tr>
<td style="font-weight: bold; text-align: center;">V.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">consul</span></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">es</span></span></span></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;">corpus</span></td>
<td style="font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">a</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Acc.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">em</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">es</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">corpus</span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">a</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">G.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">is</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">um</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">is</span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">um</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">D.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">i</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">ibus</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">i</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">ibus</span></span></span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Abl.<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">e</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">consul<span style="color: rgb(255, 0, 0);">ibus</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">e</span></span></span></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><span style="font-weight: bold;"><span style="font-weight: bold;">corpor<span style="color: rgb(255, 0, 0);">ibus</span></span></span></td>
</tr>
</tbody>
</table><br/></span><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="font-weight: bold; text-align: center;">4ème déclinaison<br/></td>
</tr>
</tbody>
</table>
<table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;"><br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Singulier<br/></td>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Pluriel<br/></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">N.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span><br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">V.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Acc.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">um</span></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">G.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">us</span></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">uum</span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">D.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">ui</span></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">ibus</span></td>
</tr>
<tr>
<td style="vertical-align: top; font-weight: bold; text-align: center;">Abl.<br/></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">u</span></td>
<td style="font-weight: bold; text-align: center;">man<span style="color: rgb(255, 0, 0);">ibus</span></td>
</tr>
</tbody>
</table>
<br/><table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="text-align: center;"><span style="font-weight: bold;">5ème déclinaison </span><br/></td>
</tr>
</tbody>
</table>
<table border="1" style="width: 100%;">
<tbody>
<tr>
<td style="text-align: center; font-weight: bold;"><br/></td>
<td style="text-align: center; font-weight: bold;">Singulier<br/></td>
<td style="text-align: center; font-weight: bold;">Pluriel<br/></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">N.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">es</span><br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">es</span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">V.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">es</span></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">es</span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">Acc.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">em</span></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">es</span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">G.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">ei</span></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">erum</span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">D.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">ei</span></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">ebus</span></td>
</tr>
<tr>
<td style="text-align: center; font-weight: bold;">Abl.<br/></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">e</span></td>
<td style="text-align: center; font-weight: bold;">r<span style="color: rgb(255, 0, 0);">ebus</span></td>
</tr>
</tbody>
</html>
S1: [[Description de l'île de Robinson]]
# Un jeu d'échecs qui "visualise" la réflexion de son moteur: http://turbulence.org/spotlight/thinking/chess.html
# un site pour des parties longues (plusieurs jours): http://www.timeforchess.com/ On peut observer les parties en cours
# des variantes du jeu d'échecs : http://www.chessvariants.org/Gindex.html
# des leçons: http://www.tomschess.com/
# pour apprendre le déplacement du cavalier: [[Crazy Chess]]
# des échecs et des maths ( jeu de mots facile...): http://www.echecsetmaths.com/
# Progresser par des problèmes d'échecs: http://www.chessproblems.com/
# Une école d'échecs: http://perso.orange.fr/ust.echecs/Ecole/index.htm
# Une page de jeu : http://www.ludochess.com/
<!---
| Name:|~TagglyTaggingEditTemplate |
| Version:|1.1 (12-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingEditTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
-->
<!--{{{-->
<div class='toolbar' macro='toolbar wikibar +saveTiddler -cancelTiddler deleteTiddler'></div>
<div class='toolbar' macro='toolbar slice '></div>
<div class='title' macro='view title'></div>
<div class='editLabel'>Title</div><div class='editor' macro='edit title'></div>
<div class='editLabel'>Tags</div><div class='editor' macro='edit tags'></div>
<div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>
<div class='editor' macro='edit text'></div>
<br>
<!--}}}-->
/***
<<tiddler EncryptionPluginDocumentation>>
!Code
***/
//{{{
version.extensions.EncryptionPlugin = { major: 1, minor: 0, revision: 1, date: new Date(2006,18,3),
source: "http://yann.perrin.googlepages.com/twkd.html#EncryptionPlugin"
};
//}}}
/***
// // Encrypt Command Definition
***/
//{{{
config.macros.encrypt = {
label: '§',
tooltip: 'Encrypt this tiddler',
getkeydialog: 'Enter encryption key',
cryptedtag: 'crypted',
donotcrypttag: 'EncryptionPlugin'
};
config.macros.encrypt.action = function(tiddler) {
var key = prompt(this.getkeydialog,'');
if (key)
{
tiddler.text = TEAencrypt(tiddler.text,key);
tiddler.tags.push(this.cryptedtag);
if (version.major < 2)
store.tiddlers[tiddler.title] = tiddler;
else
store.addTiddler(tiddler);
story.refreshTiddler(tiddler.title,1,true);
store.notifyAll();
}
};
config.macros.encrypt.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
if (tiddler.tags.find(this.cryptedtag)==null && tiddler.tags.find(this.donotcrypttag)==null)
createTiddlyButton(place, this.label, this.tooltip, function () {config.macros.encrypt.action(tiddler); return false;}, null, null, null);
}
//}}}
// // Decrypt Command Definition
//{{{
config.macros.decrypt = {
label: '-§-',
tooltip: 'Decrypt this tiddler',
cryptedtag:'crypted',
donotdecrypttag:'EncryptionPlugin',
getkeydialog: 'Enter encryption key'
};
config.macros.decrypt.action = function(tiddler) {
var key = prompt(this.getkeydialog,'');
if (key)
{
tiddler.text = TEAdecrypt(tiddler.text,key);
tiddler.tags.splice(tiddler.tags.find(this.cryptedtag),1);
if (version.major < 2)
store.tiddlers[tiddler.title] = tiddler;
else
store.addTiddler(tiddler);
story.refreshTiddler(tiddler.title,1,true);
store.notifyAll();
}
};
config.macros.decrypt.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
if (tiddler.tags.find(this.cryptedtag)!=null && tiddler.tags.find(this.donotdecrypttag)==null)
createTiddlyButton(place, this.label, this.tooltip, function () {config.macros.decrypt.action(tiddler); return false;}, null, null, null);
}
//}}}
// //Shadow tiddlers definition
//{{{
config.shadowTiddlers.ViewTemplate="<div class='toolbar' macro='toolbar -closeTiddler closeOthers +editTiddler permalink references jump'><span macro='encrypt'></span><span macro='decrypt'></span></div>\n<div class='title' macro='view title'></div>\n<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (created <span macro='view created date [[DD MMM YYYY]]'></span>)</div>\n<div class='tagging' macro='tagging'></div>\n<div class='tagged' macro='tags'></div>\n<div class='viewer' macro='view text wikified'></div>\n<div class='tagClear'></div>";
config.shadowTiddlers.EncryptionPluginDocumentation="Documentation for this plugin is available [[here|" + version.extensions.EncryptionPlugin.source +"Documentation]]";
//}}}
|Name|EncryptionPlugin|
|Author|YannPerrin|
|Location|http://yann.perrin.googlepages.com/twkd.html#EncryptionPlugin|
|Version|1.0.1|
|Requires|~TW2.x|
!Description
This plugin allow you to encrypt and decrypt individual tiddlers.
!Installation
*import (or copy/paste in edit mode) the following tiddlers into your document:<<br>>EncryptionPlugin<<br>>[[TEA]] (tag them with systemConfig)
*if you want to have offline access to this plugin documentation, import (or copy/paste in edit mode) the following tiddlers into your document:<<br>>EncryptionPluginDocumentation
*if your ViewTemplate isn't a ShadowTiddler anymore, you will have to add
{{{
<span macro='encrypt'></span><span macro='decrypt'></span>
}}}
inside the 'toolbar' div
!Usage
''Once properly installed'' (see above), this plugin should add a '§' command to the toolbar. Clicking on it will ask for a key and then trigger the tiddler encryption.
Crypted tiddler will have the '-§-' command instead. It will trigger tiddler decryption once clicked.
''an invalid decription key will destroy your tiddler data, so be carefull !''
!Revision History
2006.18.03-1.0.1
>added empty key detection
2006.18.03-1.0.0
>Initial release
THE SONG OF THE HAPPY SHEPHERD
by: William Butler Yeats (1865-1939)
The woods of Arcady are dead,
And over is their antique joy;
Of old the world on dreaming fed;
Grey Truth is now her painted toy;
Yet still she turns her restless head:
But O, sick children of the world,
Of all the many changing things
In dreary dancing past us whirled,
To the cracked tune that Chronos sings,
Words alone are certain good.
Where are now the warring kings,
Word be-mockers? -- By the Rood,
Where are now the warring kings?
An idle word is now their glory,
By the stammering schoolboy said,
Reading some entangled story:
The kings of the old time are dead;
The wandering earth herself may be
Only a sudden flaming word,
In clanging space a moment heard,
Troubling the endless reverie.
Then nowise worship dusty deeds,
Nor seek, for this is also sooth,
To hunger fiercely after truth,
Lest all thy toiling only breeds
New dreams, new dreams; there is no truth
Saving in thine own heart. Seek, then,
No learning from the starry men,
Who follow with the optic glass
The whirling ways of stars that pass
Seek, then, for this is also sooth,
No word of theirs...the cold star-bane
Has cloven and rent their hearts in twain,
And dead is all their human truth.
Go gather by the humming sea
Some twisted, echo-harbouring shell,
And to its lips thy story tell,
And they thy comforters will be,
Rewording in melodious guile
Thy fretful words a little while,
Till they shall singing fade in ruth
And die a pearly brotherhood;
For words alone are certain good:
Sing, then, for this is also sooth.
I must be gone: there is a grave
Where daffodil and lily wave,
And I would please the hapless faun,
Buried under the sleepy ground,
With mirthful songs before the dawn.
His shouting days with mirth were crowned;
And still I dream he treads the lawn,
Walking ghostly in the dew,
Pierced by my glad singing through,
My songs of old earth's dreamy youth:
But ah! she dreams not now; dream thou!
For fair are poppies on the brow:
Dream, dream, for this is also sooth.
Texte dont est tiré la citation liminaire. Déploration sur le passé.
Mais qui est le Bifrost qui commente en quatrième ?
# Connaître le genre et le caractériser: lecture et coix collectifs de "Le Manoir de l'Enfer" (1h)
# Ecrire un début de roman: à l'ordinateur, réinvestissement (1h) _ Echec, séance inutile, les élèves ont imité généralement le texte ou refait le texte de leur média (idée à développer)
# Déterminer les lieux, surtout un plan: celui du collège pour un château.
# Imaginer un monstre et son repère. Le décrire.
# Lecture de ses textes
# Utiliser le Wiki
A faire
Distribution des secteurs d'écriture
Qui écrira le premier paragraphe ? UI le dernier ?
S1: [[Préface de Le dernier jour d'un condamné, extrait]]
Correction du contrôle de lecture ponses (0.5 point par réponse)
1. Dans le métro londonien (p. 1 1).
2. Thierry a noté sur le coupon de métro l'adresse de la boutique de j'eux dans laquelle ils se rendent. Or le coupon est repris par le contrôleur (p. 11).
3. Ils ont quitté le groupe scolaire en visite à Westminster ou au Parlement britannique pour se rendre dans un magasin de jeux vidéo (p. 15).
4. En suivant l'envol d'un papier (p. 23).
5. Il contient des jeux qui ne sont pas censés être encore sortis en Europe et la boutique n'est pas même pas informatisée (p. 27).
6. Doom, le jeu ayant le niveau maximum de violence (p. 30).
7. Un insigne métallique d'Andréas, un emblème nazi (pp. 36 et 165).
8. Un tatouage au creux de l'avant-bras (p. 36).
9. Un jeu poussiéreux, avec la recommandation d'y jouer avec Andréas (p. 39).
10. Entre la télévision, les cachets, les magazines, sans jamais sortir. Elle est dépressive (pp. 52 et 63).
11. L'Espoir, d'André Malraux (p. 61).
12. De. Bosnie (p. 61).
13. En insérant la disquette de jeu du vendeur, il semble avoir mis en panne l'ordinateur de son frère (p65)
14. Une explosion.
15.Une image de combats qui défilent en suivant la chronologie du temps. L'Expérience ultime (p. 80).
16. La conception des images n'est pas en rapport avec la disquette. De plus, il semble que le jeu n'existe pas, même installé. II n'est pas pris en compte dans la mémoire (p. 85).
17. Verdun et le Vietnam (p. 92).
18.Il appartient à un parti d'extrême-droite et a des responsabilités politiques (pp. 98, 170 et 223).
19. La vue de son visage, qui est le sien mais à soixante ans (p. 105).
20. Il est passé de l'autre côté de l'écran (p. 106). .
21.Thierry a un malaise (p. 110). .
22.Elena(p. 115).
23.C'est une Serbe envoyée par son père en France en attendant la fin de la guerre (p. 125).
24.Le Jeu déroule des images où des personnages parlent le serbe. Elena identifie alors son père et deux de ses amis et les voit assassiner des civils. Elle prend conscience que les parties de chasse ne sont que des mensonges (pp. 129 et 142).
25.Elle s'enfuit (p. 132).
26. II active le Jeu (p. 133).
27. Il passe en mode multijoueur et se retrouve opposé à Andréas (p136) 28. Guemica(p. 145).
29. Ilse voit en train de donner le signal d'exécution d'un peloton d'hommes qui se sont mutinés 146).
30. Picasso. Il a peint un tableau intitulé Guernica (p. 164).
31.La légion Condor venait prêter main forte aux franquistes contre les républicains. Les Allemands taient ainsi leur matériel (p. 164).
32.S'il ne veut plus jouer, il s'en prendra à Elena (p. 178).
33.Boadilla del Monte (p. 194).
34.Il faut qu'il tue le personnage dans lequel Andréas s'est incarné(p203) 35. Esmond Romilly (p.203).
35.Dans une église (p.. 204).
36.Son personnage est tué au lance-flammes (p. 218).
37.Il a un malaise dans sa chambre et se sent humilié(p. 221).
38.Une bombe (p. 224).
39.Le jeu s'active seul. Il se retrouve en 1942 et il aperçoit un jeune garçon qui lui semble être le vendeur de la boutique de jeux. Au même moment, alors qu'il a choisi d'être un SS, il est pris pour un juif et emporté, ce qui, psychologiquement, l'humilie, pour ensuite le terrifier (pp226 et suivantes)
40.Avis personnel
!Éviter les répétitions
Pour éviter de répéter un mot ou un groupe de mots dans tes rédactions, tu peux utiliser des reprises nominales et des reprises pronominales.
!!Les reprises nominales
Tu as le choix entre différentes reprises nominales :
• les synonymes sont des mots de sens voisin. Ils ont toujours la même nature :
//la tête inclinée / penchée//
• les mots génériques sont des termes dont le sens englobe toute une catégorie de personnes ou d'objets :
//Rongeur désigne la catégorie à laquelle appartiennent souris, rat, mulot//.
• la périphrase est une expression qui désigne une personne ou une chose à travers certaines de ses caractéristiques. La désignation est alors moins précise qu'avec le nom approprié mais elle apporte une information complémentaire :
//Le petit animal gris aux longues moustaches est une périphrase de la souri//s.
Tu peux également utiliser :
• des mots de la même famille (ayant le même radical) qui reprennent l'idée énoncée auparavant :
//Ce petit jeu aurait pu durer encore longtemps si personne n'était venu l'interrompre : cette interruption fut très brutale//.
• la reprise de certains mots complétés :
Le petit garçon imitait la souris. Ce très étonnant petit garçon pouvait même lui parler.
!!Les reprises pronominales
N'hésite pas à employer aussi :
• des pronoms personnels (il, elle, la, lui, les...) ou adverbiaux (en, y) ;
• des pronoms démonstratifs (ceci, celles-ci, ceux-là, cela...) ;
• des pronoms possessifs (le mien, la tienne, les siens, le nôtre, les vôtres, la leur...).
!A) Les synonymes
!!1. Remplace les mots en gras par des synonymes que tu choisiras dans la liste suivante :
//'' provoquer au combat - s'adresser - voir - désirer -mener - retirer - délivrer - sembler''//
Don Quichotte et Sancho Panca parcourent lu campagne à cheval, en quête d'aventure.
C'est alors qu'ils découvrirent dans la plaine trente ou quarante moulins à vent ; dès que Don Quichotte les ''aperçut'', il ''dit ''à son écuyer :
"La chance ''conduit ''nos affaires mieux que nous ne pourrions le ''souhaiter''. Vois-tu là-bas, Sancho, cette bonne trentaine de géants démesurés ? Eh bien, je m'en vais les ''défier ''l'un après l'autre et leur ''ôter ''à tous la vie. Nous commencerons à nous enrichir de leurs dépouilles, ce qui ''est ''de bonne guerre ; d'ailleurs, c'est servir Dieu que de ''débarrasser ''la face de la terre de cette ivraie."
!!2. Rends à chaque mot son synonyme:
épuisé
agréable
plaisant
joyeux
soucieux
varié
passionnant
exténué
inquiet
captivant
*Emploie ces couples de synonymes dans une même phrase où leur sens apparaîtra clairement
EX: « le cycliste est épuisé après avoir monté ce col, et les supporters qui l'ont suivi pour l'encourager ont exténués ! »
!! 3.A l'aide des mots suivants, forme trois groupes de trois synonymes. Consulte le dictionnaire !
enter
heurter
commander
choquer
enjoindre
attirer
ordonner
inciter
irriter
!!4. Même exercice, plus difficile :
méchant, calme, serein, courageux, vaillant, mauvais, rêveur, brave, distrait, étourdi, tranquille, malveillant
!!5. Propose un synonyme pour chacun des mots suivants. La première lettre est donnée pour t'aider. Souviens-toi que les synonymes sont des mots de même nature !
amuser : d... ; regarder : o... ; éreintant ; é...; incessamment : b... ; afin de : p... ; complet: e... ; dévaliser ; c... ; satisfait : c... ; objectif : b... ; fierté : o... ; fictif : i... ; indispensable : n... .
!!6. Trouve deux synonymes pour chaque mot en gras.
#Je vais vous relater ce qui m'est arrivé hier.
#Tout le monde sait que les dragons sont des animaux fabuleux !
#En sortant du bois, le chevalier rencontra une misérable vieille femme couverte de haillons.
#Ils ont installé une statue colossale sur la place du marché.
!!7. Évite les répétitions en utilisant un synonyme qui reprenne le sens des mots en gras.
#As-tu mangé du faisan ? Le prince noir doit adorer ce plat car il en a mangé goulûment trois !
#Ce chevalier monte très bien à cheval mais quand il a tenté de monter sur la jument du roi, elle l'a désarçonné !
#La fée Mélusine est fatiguée ces temps-ci ; hier, elle était très fatiguée.., à tel point qu'elle n'a pas pu redonner une apparence humaine au crapaud que je lui avais confié.
#Attention, un dragon s'est enfui dans les bois, il a réussi a s'enfuir par les airs de la plus haute tour.
!!8. Dans chaque groupe, quels termes pourraient être employés pour éviter la répétition du mot en gras ?
#toutou, ''molosse'', Cerbère, félin
#novice, professionnel, ''débutant'', inexpérimenté
#''quiétude'', tranquillité, paix, féerie
#péril, écueil, ''menace'', arrêt
#''tapage'', boucan, vacarme, manifestation
#action, ''passe-temps'', occupation, amusement
*Choisis, pour chaque groupe, un de ces termes et utilise-le dans une phrase qui mettra son sens en évidence.
!B) Les mots génériques
!!1. Dans ces listes de synonymes, un intrus s'est glissé : retrouve-le et explique pourquoi tu ne pourrais pas l'employer à la place des trois autres.
1. destrier- monture - cheval - palefrenier
2. maison - habitation - bureau - demeure
3. douceur - gentillesse - confiserie - bonbon
4. belligérant - opposant - ennemi -fortification
5.belliqueux - agressif - batailleur – rancunier
!!2. Dans chacune de ces listes, quel mot peut englober tous les autres ?
#cardigan - short - vêtement - jupe - chemise
#promettre - assurer - prétendre - dire - avouer î. chai - félin - guépard - lynx - lion
#mule - âne - cheval - équidé - zèbre
#pamplemousse - orange - agrume - citron - mandarine
#manoir - demeure - maison - villa – château
#pont - édifice -- château - beffroi – cathédrale
!!3. Cherche un mot générique qui reprenne et regroupe tous les mots de chaque liste.
#libellule - moustique - moucheron - mouche
#zèbre - homme - méduse - coccinelle
#merlan - anguille - truite - brocher
#piranha - lion - loup - tigre
#incisives - canines - molaires - prémolaires
*Invente une phrase où tu emploieras ce mot.
!!4. Emploie un mot générique pour éviter les répétitions.
#Son pull et son pantalon sont blancs ; je crains que ses .................... ne soient bien salissants !
#Le rugby est assez violent mais ce ...................... favorise l'esprit d'équipe.
#L'ailier droit a marqué deux buts ; ce n'est pas étonnant car c'est un excellent...
#Je préfère me déplacer à vélo plutôt qu'en voiture, même si ce ......................... est beaucoup moins rapide.
#Ces cumulonimbus ne sont pas signe de beau temps ; de toute façon, quand je vois des ..........................., je prévois toujours un parapluie !
#As-tu goûté les ................. qu'elle a rapportés ? Ces mille-feuilles sont excellents !
#Ne compte pas sur moi pour porter des vêtements rosés ou jaunes ! D'ailleurs, ces ................. sont démodées !
!!5.Dans cette fable de La Fontaine, des mots génériques ont été remplacés par d'autres termes plus précis (soulignés dans le texte), ce qui donne une allure bien étrange à cette fable. Retrouve les mots d'origine !
//Maître Corbeau, sur un __chêne__ perché,
Tenait en son bec un __comté__.
Maître Renard, par l'odeur alléché,
Lui tint à peu près ce langage :
"Hé ! bonjour, monsieur du Corbeau.
Que vous êtes joli ! Que vous me semblez beau !
Sans mentir, si votre __sifflet__
Se rapporte à votre __duvet__.
Vous êtes le phénix des hôtes de ces bois."
@@color(#000000):D'après Jean de La Fontaine, "Le corbeau et le renard",@@//
!C) Les périphrases
!!1. Voici des périphrases que tu pourras lire dans les Fables de La Fontaine : retrouve l'animal qu'elles désignent.
#Dans : "Le corbeau et le renard", qui est "le phénix des hôtes de ces bois" ?
#Dans : "La grenouille qui veut se faire aussi grosse que le boeuf", qui est "la chétive pécore" ?
#Dans : "Le lion et le rat", qui est "le roi des animaux" ? A. Dans : "La mouche et la fourmi", qui est "la fille de l'air" ?
#Dans : "Le soleil et les grenouilles", qui sont "les citoyennes des étangs" ?
#Dans : "La vieille et les deux servantes", qui est "le réveille-matin" ?
!!2.Recopie les phrases suivantes en remplaçant les mots en gras par trois des périphrases proposées dans l'exercice 14.
1.À travers la paroi du bocal, Adrien contemplait la grenouille pour laquelle il éprouvait déjà de la tendresse.
2. D'un rugissement, le lion salua le lever du soleil.
3. Voici un produit miracle pour ne plus être importuné par les mouches dès que vous ouvrez la fenêtre.
Ces périphrases sont si connues qu'elles sont devenues des expressions figées... Que désignent-elles ?
1. Le 7e art
2. Le séjour des dieux
3. L'oncle Sam
4. L'astre de la nuit
5. L'île de beauté
6. L'auteur de l'Odyssée
7. Le plancher des vaches
8. La grande bleue
b. Invente huit phrases dans lesquelles tu emploieras ces périphrases en veillant à ce que leur sens apparaisse clairement.
Inventer une périphrase pour désigner :
1. des poules
2. un coq
3. un renard
4. un chien
5. un fermier
6. la pluie
7. des nuages
b. Rédige un récit de quinze lignes dans lequel tu raconteras une mésaventure à la ferme en y insérant les sept périphrases que tu viens d'inventer.
Écris à la 3e pers. et ou présent.
Les mots de la même famille
Reprends l'idée suggérée par les termes en gras à l'aide d'un mot de la même famille (formé à partir du même radical).
1. Sur l'île de Calypso, Ulysse pleurait en contemplant la mer ; ses ... émurent Hermès.
2. Durant son périple, Ulysse eut souvent l'occasion de nager ! Heureusement que ta ... était jadis son sport favori !
3. Le roi Alkinoos fut un hôte irréprochable, Ulysse savait qu'il se souviendrait toujours de son ....
4. Près de Charybde, la mer bouillonnait ; six compagnons d'Ulysse disparurent, engloutis dans les gigantesques ....
5. Quand il retrouva enfin son palais et sa famille, Ulysse fut le plus heureux des hommes ; son ... rendit presque jaloux les dieux.
Même exercice.
l. Le chevalier attendit le combat du lendemain très calmement, à tel point que son ... impressionna beaucoup son ennemi.
2. Merlin adorait plaisanter, mais il arrivait que ses victimes n'apprécient pas ses ... !
3. On aurait pu croire que Lancelot serait fatigué après cette folle course dans la forêt, mais nulle trace de ... n'apparaissait sur son visage !
4. Un jour, une épée apparut, plantée dans Lin roc ; tous les chevaliers ne parièrent plus que cette ....
5. Arthur est resté serein quand on l'a désigné comme le futur roi. Cette ... fut considérée comme une preuve supplémentaire qu'il avait été élu par Dieu.
6.Le dragon roux tenta de s'envoler au-dessus de la tour mais il fut atteint dans son ... par les flammes du dragon blanc.
Les reprises nominales
Quelle est la nature des mots en gras ? De quel mot évitent-ils la répétition ?
1. Je ne crois pas aux fantômes ! Et vous, y croyez-vous ? -Je me contente de raconter des histoires fantastiques à mes cousines pour leur faire peur. - 3. Celles-ci les adorent ! - 4. Un soir où je venais de raconter une histoire épouvantable avec une demi-douzaine de revenants qui allaient à l'assaut d'un village, celle qui parie tout le temps, Caroline, prétendit qu'elle en avait vus dans le jardin. .. - 5. La nuit avait déjà peuplé les alentours d'ombres menaçantes quoiqu'imaginaires mais je la mis au défi de me prouver qu'elle disait vrai. - 6. Ses sœurs tremblaient... |e jetai un coup d'œil rapide dans le jardin, persuadé que cela n'était que le fruit de son imagination. - 7. Mais stupeur, ce que j'y aperçus me glaça le sang...
Remplace ces groupes nominaux par les pronoms possessifs correspondants.
Pour t'aider, observe bien les déterminants possessifs qui composent ces groupes nominaux !
1. vos lunettes... -2. votre amie... -3. ses chaussures... -4. ma préférence... -S. votre vélo ... - 6. tes dessins ... -7. mes livres... -8. leur chat ... - 9. son cheval... -10. mon bateau... - 11. nos soucis... -12. ta sœur... - 13. sa maison ... - 14. notre jardin...
Complète ces phrases à l'aide d'un pronom démonstratif qui évitera une répétition.
1. Le directeur m'a proposé un poste à Lille mais ... ne m'intéresse pas. - 2. Je n'aime pas la couleur de cette voiture, je préfère .... - 3. J'ai invité Pierre à mon anniversaire mais ... a un match de rugby le même jour ! -
4. Faire le tour du monde ? ... me plairait beaucoup ! - 5. Olivier adore jouer du piano, ... le décontracte.
Recopie les phrases suivantes en remplaçant les mots soulignés par le pronom personnel ou adverbial qui convient.
1. Le chevalier promit une récompense à son écuyer. -
2. Le chevalier promit une récompense à son écuyer. -
3. Le chevalier promit une récompense à son écuyer.
4. Le prisonnier réclame de l'eau. - 5. Le prisonnier réclame dgJleau. - 6. J'ai raconté ton secret au professeur ! - 7. j'ai raconté ton secret à tes camarades ! -8. Pauline et moi arriverons à cinq heures - 9. Pierre et Hélène sont allés au Mexique. - 10. À quelle heure Juliette et toi comptez-vous revenir de Paris ?
Recopie ces phrases en remplaçant les répétitions par le pronom qui convient.
1.Mon voisin m'a proposé de surveiller ma maison pendant les vacances mais je ne fais pas confiance à mon voisin ! - 2. Je peux t'indiquer quelques bonnes adresses à Madrid ; je reviens de Madrid. - 3. J'ai oublié mon stylo, peux-tu me prêter ton stylo ? - 4. La première fois que Simon rencontra Laurie, Latine ne daigna même pas adresser la parole à Simon. - 5. Laisse la trappe du grenier ouverte, je monte au grenier
Ces mots, groupés deux par deux, désignent la même chose mais s'emploient dans des circonstances différentes.
a. Propose à chaque fois un synonyme courant.
1. Un destrier/ Uncanasson
2. mon homme / l'homme de ma vie
3. ma moitié /mon épouse
4. félon / balance
b. Dans une rédaction, par quel genre de personnage pourrais-tu faire prononcer les substituts qui te sont proposés ?
a. Récris ce texte en évitant la répétition du mot "histoire" : tu utiliseras des reprises nominales et pronominales.
Réfléchis bien au sens du mot "histoire" ici r
Je tiens cette histoire d'un homme qui raconte des histoires. Je lui ai dit plus d'une fois que son histoire, je n'y croyais pas.
"Vous méritez, lui dis-je un jour, vous racontez des boniments, vous divaguez, vous vous fichez du monde !"
Cela ne l'impressionna pas. Il continua tranquillement son histoire, et lorsque je lui criai : "Espèce de menteur, bonimenteur, songe-creux, imposteur !" il me regarda longuement, hocha la tête, sourit d'un air triste et dit, d'une voix si basse que j'eus presque honte : "L'Amérique n'existe pas."
Peter Bichsel, Histoires enfantines.
b. Quels sont les synonymes de "menteur" dans le texte ? Invente trois phrases où tu décriras le comportement d'un menteur, en utilisant ces synonymes pour éviter toute répétition.
Remplace "j'ai mis" et "j'ai fait" par des verbes qui éviteront une répétition.
Lundi 9 mars
Journée du Commonwealth
J'ai nettoyé les W.-C, lavé le lavabo et la baignoire avant de partir faire ma tournée. Je suis rentré à la maison, j'ai préparé le petit déjeuner, mis le linge dans la machine à laver, et je suis
parti eii classe. J'ai remis à Harry Kent l'argent de son racket, je suis allé chez Bert Baxter, j'ai attendu l'assistante sociale qui n'est pas venue, je suis retourne déjeuner à l'école. J'ai eu cours d'enseignement ménager, j'ai fait une charlotte aux pommes. Je suis revenu à la maison. J'ai passé l'aspirateur dans le hall, le salon et la salle à manger. J'ai épluché les pommes de terre, émincé le chou, je me suis coupé un doigt et j'ai rincé le sang qui avait coulé sur le chou. J'ai mis les côtelettes sur le gril et j'ai regardé dans le livre de cuisine pour trouver une recette de sauce. J'ai fait la sauce. J'ai enlevé les grumeaux avec une passoire. J'ai [...] fait la vaisselle.
.Sue Towsend, Journal $ecu't d'Adrien 13 ans
© Hachette.
Repère dans le texte toutes les façons de désigner "les nains de jardin".
Haut les mains !
Cette nouvelle délinquance a commencé par un gag, ou alors par un signe d'intolérance. De l'Alsace aux pelouses méditerranéennes en passant par la Vienne et Saint-Amand-Mon rrond (Cher), l'espèce est menacée. Il ne se passe guère de jours sans qu'un mécréant ne fasse main basse sur ces figurines posées au ras des pâquerettes. Assises sur une valeur plus sentimentale que marchande. Aux couleurs pétulantes certes. En tout cas pas méchantes. Alors, quelle idée d'aller Kidnapper des nains de jardin pour les relâcher en pleine nature ?
"Perdu nains de jardin : récompense"
Le larcin de lutins fait fureur. Or, la rigolade du voleur n'a d'égale que la détresse du propriétaire floué. Et les plaintes affluent dans les maréchaussées, déjà encombrées d'attouchements suspects. Blois ne parlait-elle pas de piéger ses nains pour dissuader la vague de ravisseurs !
Il arrive que Grincheux et ses copains écopent pour des querelles de voisinage. [...]
La Nouvelle République du Centre-Ouest, 4/07/1997.
b- Les avis sont très partagés au sujet de ces lutins de plâtre... En une dizaine de lignes, donne ton avis sans jamais employer l'expression "nains de jardin".
Jésus (être)............... en Irak depuis près de six mois lorsqu'il (marcher)..................... sur une mine.
James, qui le (suivre).............................. sous le soleil de plomb de cet après-midi de juillet, (venir).................... de concocter une nouvelle blague sur les Hispano-Américains, et (s'apprêter)..................... à apostropher son ami quand celui-ci (s'immobiliser)................., (lâcher)...................... un bref juron, et (disparaître)................................ dans un nuage de poussière.
Ils (débarquer)................................. dans les faubourgs de Fallujah vers midi, et (se séparer) ...................... en petites unités de quatre soldats, progressant précautionneusement dans les ruelles parallèles qui (entourer)............................ la mosquée où, selon les informations transmises par les services de renseignement, (se retrancher).......................... une poignée d'insurgés responsables d'une récente attaque contre un convoi blindé. Deux fois déjà, en traversant une grande artère, ils (être soumis).......................... à des tirs de snipers. Corey, qui dans le civil (être).................. livreur de pizzas à Détroit, (prendre).................. une balle dans le genou, et Stan, l'infirmier, (rester).................. avec lui le temps qu'une ambulance militaire l'(évacuer)................. vers l'arrière. James et Jésus (poursuivre).....................; leur progression, sans contact radio avec le reste de l'escouade.
|!Catégories|!Adresse|!Précisions|
|Général|http://www.ccdmd.qc.ca/fr/exercices_pdf/?id=37|Le site québecois avec des [[leçons|http://www.ccdmd.qc.ca/fr/franc/Rubrique.html]] en pdf et des [[exercices interactifs|http://www.ccdmd.qc.ca/fr/franc/interactif_exercices.html]]|
|~|http://www.francaisfacile.com/index.php|Un site avec 3000 exercices|
|~|http://www.xtec.es/%7Esgirona/fle/index.htm|Un site de FLE très utile|
|~|http://users.skynet.be/courstoujours/index1.htm|Le site d'un professeur|
|Grammaire|http://www.ccdmd.qc.ca/fr/accords/|Un logiciel en Flash, qui propose des exercices de grammaire de phrase |
|~|http://platea.cnice.mecd.es/~cvera/ressources/recurfr29.htm|Un site espagnol; surtout les adjectifs|
|Leçons|http://www.ccdmd.qc.ca/fr/franc/Rubrique.html|Des leçons, complètes mais complexes|
|~|http://intra.sje.qc.ca/~francais3esje/notions.htm|simple et efficace|
|Orthographe|http://karsenti.scedu.umontreal.ca/didactique/|Orthographe grammatical|
|~|http://orthonet.sdv.fr/pages/jeux.html|Des jeux, notamment sur les terminaisons|
|~|http://www.ccdmd.qc.ca/fr/accords/|Des dictées à trous|
|Vocabulaire|http://www.b-a-ba.net/aptitude_verbale/index.php|synonymes, antonymes, paronymes...etc|
|Accord des participes passés<br>(entre autres)|http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test133.php|une page suivie d'une [[ici|http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test134.php]] et [[là|http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test135.php]]|
|Conjugaison|http://abcscolaire.free.fr/Francais.htm|vers le bas de la page, choisissez le temps que vous voulez travailler|
|~|http://www.etab.ac-caen.fr/albert-camus/ortho/|Travailler les temps, notamment les [[temps du récit|http://www.etab.ac-caen.fr/albert-camus/ortho/seq2/ver30.htm]]|
|Discours Indirect|http://www.college4vents.net/pedago/docshotpot/stdir1.htm|Et aussi [[ici|http://www.college4vents.net/pedago/docshotpot/stdir2.htm]] et [[là|http://www.college4vents.net/pedago/docshotpot/stdir3.htm]]<br>NB:"pointage"=score. La phrase doit être absolument correcte|
|~|http://users.skynet.be/courstoujours/Discours/Sommaire.htm|Du DI au DD, et inversement|
|~|http://www.romanistik.uni-mainz.de/franz/test/7_conj.htm|Une fiche simple, à destination d'élèves allemands|
|Usage des pronoms|http://www.romanistik.uni-mainz.de/franz/test/11_conj.htm|3 fiches|
|PSR|http://www.b-a-ba.net/notions_grammaire/relative/enchassee.php||
|PS|http://users.skynet.be/courstoujours/Analyse/Sommaire.htm||
|Figures de style|http://www.college4vents.net/pedago/docshotpot/tropes.htm|exercices|
|~|http://www.b-a-ba.net/figstyl/fig_styl.php|leçon|
|~|http://users.skynet.be/courstoujours/Figures/Sommaire.htm|leçon et exercices|
|Répertoire d'exercices|http://www.arts.kuleuven.be/weboscope/grammaire/e_gr0.htm||
|~|http://pages.infinit.net/cltr/langfr.html||
<HTML>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=2 STYLE="font-size: 9pt">«
Hommes et femmes, tous setfs du vigilant donjon qui surveillait le
défilé, s'échinaient à vaincre une nature rebelle. Ils voulaient
lui imposer de multiplier, au milieu du grand nombre de vicissitudes
qui ne manqueraient pas d'arriver, les maigres poignées de sarrasin
prises sur la nourriture de l'année. Dure besogne. Reins tendus,
veines gonflées sur les avant-bras épuisés, tête se refusant
d'autres pensées que l'obstination à vouloir cultiver cette lande,
les rustres s'attelaient aux troncs abattus, s'arc-boutaient pour
ébranler les rocs et mettre à nu la terre des fougères. Ils y
gagnaient une âme sauvage, un regard d'égaré et un corps
douloureux.</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=2 STYLE="font-size: 9pt">[...]
Des gamins sortirent de la futaie. Ils entourèrent le jongleur d'un
cercle hésitant. Leurs visages béats de curiosité exprimaient une
part d'enfance que le labeur n'avait pas encore entamée. »</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Times New Roman, serif"><FONT SIZE=2 STYLE="font-size: 9pt">JC
Cômes, Le voeu du paon</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=5 STYLE="font-size: 20pt"><B>Le
seigneur</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #000000; font-style: normal">
<FONT COLOR="#ffffff"><FONT FACE="Arial, sans-serif"><FONT SIZE=3 STYLE="font-size: 12pt"><B>Rappel</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3 STYLE="font-size: 11pt">Question
et exercice</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=2 STYLE="font-size: 11pt"><B>1.</B><SPAN STYLE="font-weight: normal">
</SPAN><B>Adjuvant ou opposant</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Relevé?
les éléments qui permettent de déterminer si le seigneur est un
adjuvant ou un opposant</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=2 STYLE="font-size: 11pt"><B>2.</B><SPAN STYLE="font-weight: normal">
</SPAN><B>Analyse de phrases complexes</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Voici
quelques phrases extraites du </SPAN><I>Faucon déniché. </I><SPAN STYLE="font-style: normal">Réécrivez
les différentes propositions (principale, indépendante, complétive,
relative) dans un tableau. Les subordonnants seront soulignés et les
verbes conjugués, encadrés.</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Extrait
1. </SPAN><I>Ceux qui dormaient l'entendirent du fond de leur
sommeil et le sommeil partit. Ceux qui mangeaient serrèrent contre
leur poitrine l'écuelle où restait un peu de bouillie d'orge, et
tous coururent vers le château. </I><SPAN STYLE="font-style: normal">»{p.
85)</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Extrait
2. // </SPAN><I>venait de l'apercevoir, là-bas, dans l'encoignure
que fau,mt une borne contre le mur. » </I><SPAN STYLE="font-style: normal">(p,
90)</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Extrait
3. « </SPAN><I>L'enfant se précipita et ils pleurèrent, tandis
qu'au même moment éclatait la bataille, </I><SPAN STYLE="font-style: normal">-(p.
90}</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Extrait
4. « // se </SPAN><I>glissa à travers la petite fenêtre et sauta
dans l'enclos Une haie descendait jusqu'à la palissade éventrée. »
</I><SPAN STYLE="font-style: normal">(p. 126)</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">Extrait
5. </SPAN><I>Quand elle lu! </I><SPAN STYLE="font-style: normal">sûre
</SPAN><I>qu'ils ne </I><SPAN STYLE="font-style: normal">se
</SPAN><I>retourneraient pas, elle pénétra dans l'enclos </I><SPAN STYLE="font-style: normal">»(p
127)</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
<TABLE WIDTH=584 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=3 CELLSPACING=0>
<COL WIDTH=146>
<COL WIDTH=137>
<COL WIDTH=137>
<COL WIDTH=138>
<TR VALIGN=TOP>
<TD WIDTH=146 HEIGHT=17 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
PRINCIPALE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
INDEPENDANTE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
COMPLÉTIVE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=138 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">p.
SUB. RELATIVE</FONT></FONT></FONT></P>
</TD>
</TR>
<TR>
<TD WIDTH=146 HEIGHT=83 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 VALIGN=TOP BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=138 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=146 HEIGHT=85 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=138 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=146 HEIGHT=85 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=138 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=146 HEIGHT=85 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=138 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=146 HEIGHT=84 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=137 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</TD>
<TD WIDTH=138 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
</TABLE>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3 STYLE="font-size: 11pt">Expression</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Sujet
: vous êtes l'un des soldats qui est venu rendre visite à la mère
de Martin. Vous faites votre rapport au seigneur sur cette visite.
Pour attester vos propos, vous donnerez des précisions sur le lieu
où vous l'avez vue et l'activité qu'elle menait quand elle a été
trouvée.</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Consigne
: rédigez un paragraphe avec uniquement des phrases complexes qui
auront trois propositions au maximum.</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<BR>
</P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3 STYLE="font-size: 12pt"><B>Éléments
de réponse et corrigé</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=3>Adjuvant
et opposant...</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN LANG="fr-FR"><SPAN STYLE="font-style: normal">Dans
un premier temps, chapitre </SPAN></SPAN><SPAN LANG="en-US"><SPAN STYLE="font-style: normal">VII.
</SPAN></SPAN><SPAN LANG="fr-FR"><SPAN STYLE="font-style: normal">le
seigneur, qui s'est battu vaillamment, assume sa fonction avec
bienveillance. En effet, les villageois sont appauvris mais, comme «
le </SPAN></SPAN><SPAN LANG="fr-FR"><I>château avait résisté, le
château aux greniers débordants de blé, aux barriques pleines de
vin </I></SPAN><SPAN LANG="fr-FR"><SPAN STYLE="font-style: normal">»,
p. 113. il décide immédiatement et sans aucune hésitation : « </SPAN></SPAN><SPAN LANG="fr-FR"><I>Je
ferai distribuer du pain, voilà tout ! *</I></SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt"><SPAN STYLE="font-style: normal">De
plus, dès qu'il apprend qu'un enfant est emprisonné dans ses tours,
il exige, p. 120, qu'on le relâche. Mais quand il comprend la
traîtrise du fauconnier, il manifeste de la colère car il </SPAN><I>«
n'aime pas qu'on </I><SPAN STYLE="font-style: normal">se </SPAN><I>substitue
à lui</I><SPAN STYLE="font-style: normal"> </SPAN><I>pour rendre la
justice </I><SPAN STYLE="font-style: normal">», p. 122</SPAN></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Par
conséquent, on peut affirmer que le seigneur est un adjuvant, juste
et valeureux. Il assume ses devoirs et exige légitimement que chacun
tienne son rang</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=2 STYLE="font-size: 11pt"><B>Correction
de l'exercice</B></FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">L'analyse
permet rie démonter la logique d'un propos et, par conséquent, d'en
appréhender le sens complexe.</FONT></FONT></FONT></P>
<TABLE WIDTH=442 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=3 CELLSPACING=0>
<COL WIDTH=119>
<COL WIDTH=100>
<COL WIDTH=98>
<COL WIDTH=99>
<TR VALIGN=TOP>
<TD WIDTH=119 HEIGHT=17 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
PRINCIPALE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
INDEPENDANTE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=98 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">P.
COMPLÉTIVE</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=99 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 5pt">p.
SUB. RELATIVE</FONT></FONT></FONT></P>
</TD>
</TR>
<TR>
<TD WIDTH=119 HEIGHT=68 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Extrait
1</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Ceux
L.l l'entendirent du fond de leur sommeil Ceux 1,..] serrèrent
contre leur poitrine l'êcuelle</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">et
le sommeil partit.</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">el
tous coururent vers le château</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=98 VALIGN=TOP BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=99 VALIGN=BOTTOM BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">qui
dormaient qui mangeaient où restait un peu</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">de
bouillie d'orge</FONT></FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=119 HEIGHT=41 BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Extrait
2</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">11
venait de l'apercevoir, là-bas, dans l'encoignure</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=98 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=99 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">que
faisait une borne contre ie mur</FONT></FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=119 HEIGHT=43 BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Extrait
3</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">et
ils pleurèrent</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">L'enfant
se précipita</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=98 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">tandis
qu'au même moment éclatait la bataille</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=99 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=119 HEIGHT=80 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Extrait
4</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">II
se glissa à travers</FONT></FONT></FONT></P>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">la
petite fenêtre et sauta dans l'endos Une haie descendait jusqu'à
la palissade</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">éventrée</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=98 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=99 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=119 HEIGHT=45 BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Extrait
5</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">elle
pénétra dans l'enclos.</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=100 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
<TD WIDTH=98 BGCOLOR="#ffffff">
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">Quand
elle fut sûre /</FONT></FONT></FONT></P>
<P STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT FACE="Arial, sans-serif"><FONT SIZE=1 STYLE="font-size: 7pt">qu'ils
ne se retourneraient pas</FONT></FONT></FONT></P>
</TD>
<TD WIDTH=99 BGCOLOR="#ffffff">
<P STYLE="background: #ffffff"><BR>
</P>
</TD>
</TR>
</TABLE>
<P STYLE="margin-bottom: 0cm; background: #ffffff; font-style: normal; font-weight: normal">
<BR>
</P>
</HTML>
/***
|Name|FontSizePlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#FontSizePlugin|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Resize tiddler text on the fly. The text size is remembered between sessions by use of a cookie.
You can customize the maximum and minimum allowed sizes.
(only affects tiddler content text, not any other text)
Also, you can load a TW file with a font-size specified in the url.
Eg: http://lewcid.googlepages.com/lewcid.html#font:110
!Demo:
Try using the font-size buttons in the sidebar, or in the MainMenu above.
!Installation:
Copy the contents of this tiddler to your TW, tag with systemConfig, save and reload your TW.
Then put {{{<<fontSize "font-size:">>}}} in your SideBarOptions tiddler, or anywhere else that you might like.
!Usage
{{{<<fontSize>>}}} results in <<fontSize>>
{{{<<fontSize font-size: >>}}} results in <<fontSize font-size:>>
!Customizing:
The buttons and prefix text are wrapped in a span with class fontResizer, for easy css styling.
To change the default font-size, and the maximum and minimum font-size allowed, edit the config.fontSize.settings section of the code below.
!Notes:
This plugin assumes that the initial font-size is 100% and then increases or decreases the size by 10%. This stepsize of 10% can also be customized.
!History:
*27-07-06, version 1.0 : prevented double clicks from triggering editing of containing tiddler.
*25-07-06, version 0.9
!Code
***/
//{{{
config.fontSize={};
//configuration settings
config.fontSize.settings =
{
defaultSize : 100, // all sizes in %
maxSize : 200,
minSize : 40,
stepSize : 10
};
//startup code
var fontSettings = config.fontSize.settings;
if (!config.options.txtFontSize)
{config.options.txtFontSize = fontSettings.defaultSize;
saveOptionCookie("txtFontSize");}
setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
setStylesheet("#contentWrapper .fontResizer .button {display:inline;font-size:105%; font-weight:bold; margin:0 1px; padding: 0 3px; text-align:center !important;}\n .fontResizer {margin:0 0.5em;}","fontResizerButtonStyles");
//macro
config.macros.fontSize={};
config.macros.fontSize.handler = function (place,macroName,params,wikifier,paramString,tiddler)
{
var sp = createTiddlyElement(place,"span",null,"fontResizer");
sp.ondblclick=this.onDblClick;
if (params[0])
createTiddlyText(sp,params[0]);
createTiddlyButton(sp,"+","increase font-size",this.incFont);
createTiddlyButton(sp,"=","reset font-size",this.resetFont);
createTiddlyButton(sp,"–","decrease font-size",this.decFont);
}
config.macros.fontSize.onDblClick = function (e)
{
if (!e) var e = window.event;
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
}
config.macros.fontSize.setFont = function ()
{
saveOptionCookie("txtFontSize");
setStylesheet(".tiddler .viewer {font-size:"+config.options.txtFontSize+"%;}\n","fontResizerStyles");
}
config.macros.fontSize.incFont=function()
{
if (config.options.txtFontSize < fontSettings.maxSize)
config.options.txtFontSize = (config.options.txtFontSize*1)+fontSettings.stepSize;
config.macros.fontSize.setFont();
}
config.macros.fontSize.decFont=function()
{
if (config.options.txtFontSize > fontSettings.minSize)
config.options.txtFontSize = (config.options.txtFontSize*1) - fontSettings.stepSize;
config.macros.fontSize.setFont();
}
config.macros.fontSize.resetFont=function()
{
config.options.txtFontSize=fontSettings.defaultSize;
config.macros.fontSize.setFont();
}
config.paramifiers.font =
{
onstart: function(v)
{
config.options.txtFontSize = v;
config.macros.fontSize.setFont();
}
};
//}}}
FontSizePlugin has been updated to prevent double clicks of the button from triggering editing of the containing tiddler.
Le nom des personnages:
!!Jérôme Eugène Morrow
- Jérôme: en grec « le nom sacré », celui qui ouvre à Vincent toutes les portes.
- Eugène: en grec « bien-né », avec des gènes quasi parfaits
- Morrow: vient sans doute du roman L'île du Dr Moreau , de Wells (Moreau y est un savant qui croisent les espèces).
!!Vincent Anton Freeman
- Freeman: les parents ont choisi d'avoir un enfant hors des règles.
- Vincent: en latin « le vainqueur » qui dépasse tous les obstacles.
- Anton: nom refusé à Vincent par son père. Soit de(Marc)-Antoine, qui était le second de Jules César, soit de St Antoine (de Padoue) qui parlaient aux animaux (qui abolit les frontières des espèces).
!!Iréne (en grec « paix ») Cassini (astronome italien du 17ème S)
Les noms sont choisis soit par étymologie soit pour apparenter à quelqu'un qui l'a porté
Un nom indique un caractère ou un rôle (vincent) et il raccroche le personnage à une culture (Moreau, c'est un livre de SF).
<<closeAll>><<permaview>><<newTiddler>><<upload >>UploadForm<<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Change TiddlyWiki advanced options'>>
/***
|Name:|HideWhenMacro|
|Author:|SimonBaird|
|Source:|http://tiddlyspot.com/mptw/#HideWhenMacro|
|Version:|1.0.1|
|Date:|30-Jul-2006|
!Description
Implements hideWhen and showWhen macros for use in ViewTemplate
!Example
{{{<div macro="showWhen tiddler.tags.contains('Task')">[[TaskToolbar]]</div>}}}
***/
//{{{
merge(config.macros,{
hideWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
if (eval(paramString)) {
removeChildren(place);
place.parentNode.removeChild(place);
}
}},
showWhen: { handler: function (place,macroName,params,wikifier,paramString,tiddler) {
config.macros.hideWhen.handler(place,macroName,params,wikifier,'!('+paramString+')',tiddler);
}}
});
//}}}
How to Build a Universe That Doesn't Fall Apart Two Days Later
Philip K. Dick, 1978
First, before I begin to bore you with the usual sort of things science fiction writers say in speeches, let me bring you official greetings from Disneyland. I consider myself a spokesperson for Disneyland because I live just a few miles from it — and, as if that were not enough, I once had the honour of being interviewed there by Paris TV.
For several weeks after the interview, I was really ill and confined to bed. I think it was the whirling teacups that did it. Elizabeth Antebi, who was the producer of the film, wanted to have me whirling around in one of the giant teacups while discussing the rise of fascism with Norman Spinrad... an old friend of mine who writes excellent science fiction. We also discussed Watergate, but we did that on the deck of Captain Hook's pirate ship. Little children wearing Mickey Mouse hats — those black hats with the ears — kept running up and bumping against us as the cameras whirred away and Elizabeth asked unexpected questions. Norman and I, being preoccupied with tossing little children about, said some extraordinarily stupid things that day. Today, however, I will have to accept full blame for what I tell you, since none of you are wearing Mickey Mouse hats and trying to climb up on me under the impression that I am part of the rigging of a pirate ship.
Science fiction writers, I am sorry to say, really do not know anything. We can't talk about science, because our knowledge of it is limited and unofficial, and usually our fiction is dreadful. A few years ago, no college or university would ever have considered inviting one of us to speak. We were mercifully confined to lurid pulp magazines, impressing no one. In those days, friends would say me, "But are you writing anything serious?" meaning "Are you writing anything other than science fiction?" We longed to be accepted. We yearned to be noticed. Then, suddenly, the academic world noticed us, we were invited to give speeches and appear on panels — and immediately we made idiots of ourselves. The problem is simply this: What does a science fiction writer know about? On what topic is he an authority?
It reminds me of a headline that appeared in a California newspaper just before I flew here. SCIENTISTS SAY THAT MICE CANNOT BE MADE TO LOOK LIKE HUMAN BEINGS. It was a federally funded research program, I suppose. Just think: Someone in this world is an authority on the topic of whether mice can or cannot put on two-tone shoes, derby hats, pinstriped shirts, and Dacron pants, and pass as humans.
Well, I will tell you what interests me, what I consider important. I can't claim to be an authority on anything, but I can honestly say that certain matters absolutely fascinate me, and that I write about them all the time. The two basic topics which fascinate me are "What is reality?" and "What constitutes the authentic human being?" Over the twenty-seven years in which I have published novels and stories I have investigated these two interrelated topics over and over again. I consider them important topics. What are we? What is it which surrounds us, that we call the not-me, or the empirical or phenomenal world?
In 1951, when I sold my first story, I had no idea that such fundamental issues could be pursued in the science fiction field. I began to pursue them unconsciously. My first story had to do with a dog who imagined that the garbagemen who came every Friday morning were stealing valuable food which the family had carefully stored away in a safe metal container. Every day, members of the family carried out paper sacks of nice ripe food, stuffed them into the metal container, shut the lid tightly — and when the container was full, these dreadful-looking creatures came and stole everything but the can.
Finally, in the story, the dog begins to imagine that someday the garbagemen will eat the people in the house, as well as stealing their food. Of course, the dog is wrong about this. We all know that garbagemen do not eat people. But the dog's extrapolation was in a sense logical — given the facts at his disposal. The story was about a real dog, and I used to watch him and try to get inside his head and imagine how he saw the world. Certainly, I decided, that dog sees the world quite differently than I do, or any humans do. And then I began to think, Maybe each human being lives in a unique world, a private world, a world different from those inhabited and experienced by all other humans. And that led me wonder, If reality differs from person to person, can we speak of reality singular, or shouldn't we really be talking about plural realities? And if there are plural realities, are some more true (more real) than others? What about the world of a schizophrenic? Maybe, it's as real as our world. Maybe we cannot say that we are in touch with reality and he is not, but should instead say, His reality is so different from ours that he can't explain his to us, and we can't explain ours to him. The problem, then, is that if subjective worlds are experienced too differently, there occurs a breakdown of communication... and there is the real illness.
I once wrote a story about a man who was injured and taken to a hospital. When they began surgery on him, they discovered that he was an android, not a human, but that he did not know it. They had to break the news to him. Almost at once, Mr. Garson Poole discovered that his reality consisted of punched tape passing from reel to reel in his chest. Fascinated, he began to fill in some of the punched holes and add new ones. Immediately, his world changed. A flock of ducks flew through the room when he punched one new hole in the tape. Finally he cut the tape entirely, whereupon the world disappeared. However, it also disappeared for the other characters in the story... which makes no sense, if you think about it. Unless the other characters were figments of his punched- tape fantasy. Which I guess is what they were.
It was always my hope, in writing novels and stories which asked the question "What is reality?", to someday get an answer. This was the hope of most of my readers, too. Years passed. I wrote over thirty novels and over a hundred stories, and still I could not figure out what was real. One day a girl college student in Canada asked me to define reality for her, for a paper she was writing for her philosophy class. She wanted a one-sentence answer. I thought about it and finally said, "Reality is that which, when you stop believing in it, doesn't go away." That's all I could come up with. That was back in 1972. Since then I haven't been able to define reality any more lucidly.
But the problem is a real one, not a mere intellectual game. Because today we live in a society in which spurious realities are manufactured by the media, by governments, by big corporations, by religious groups, political groups — and the electronic hardware exists by which to deliver these pseudo-worlds right into the heads of the reader, the viewer, the listener. Sometimes when I watch my eleven-year-old daughter watch TV, I wonder what she is being taught. The problem of miscuing; consider that. A TV program produced for adults is viewed by a small child. Half of what is said and done in the TV drama is probably misunderstood by the child. Maybe it's all misunderstood. And the thing is, Just how authentic is the information anyhow, even if the child correctly understood it? What is the relationship between the average TV situation comedy to reality? What about the cop shows? Cars are continually swerving out of control, crashing, and catching fire. The police are always good and they always win. Do not ignore that point: The police always win. What a lesson that is. You should not fight authority, and even if you do, you will lose. The message here is, Be passive. And — cooperate. If Officer Baretta asks you for information, give it to him, because Officer Baretta is a good man and to be trusted. He loves you, and you should love him.
So I ask, in my writing, What is real? Because unceasingly we are bombarded with pseudo-realities manufactured by very sophisticated people using very sophisticated electronic mechanisms. I do not distrust their motives; I distrust their power. They have a lot of it. And it is an astonishing power: that of creating whole universes, universes of the mind. I ought to know. I do the same thing. It is my job to create universes, as the basis of one novel after another. And I have to build them in such a way that they do not fall apart two days later. Or at least that is what my editors hope. However, I will reveal a secret to you: I like to build universes which do fall apart. I like to see them come unglued, and I like to see how the characters in the novels cope with this problem. I have a secret love of chaos. There should be more of it. Do not believe — and I am dead serious when I say this — do not assume that order and stability are always good, in a society or in a universe. The old, the ossified, must always give way to new life and the birth of new things. Before the new things can be born the old must perish. This is a dangerous realization, because it tells us that we must eventually part with much of what is familiar to us. And that hurts. But that is part of the script of life. Unless we can psychologically accommodate change, we ourselves begin to die, inwardly. What I am saying is that objects, customs, habits, and ways of life must perish so that the authentic human being can live. And it is the authentic human being who matters most, the viable, elastic organism which can bounce back, absorb, and deal with the new.
Of course, I would say this, because I live near Disneyland, and they are always adding new rides and destroying old ones. Disneyland is an evolving organism. For years they had the Lincoln Simulacrum, like Lincoln himself, was only a temporary form which matter and energy take and then lose. The same is true of each of us, like it or not.
The pre-Socratic Greek philosopher Parmenides taught that the only things that are real are things which never change... and the pre-Socratic Greek philosopher Heraclitus taught that everything changes. If you superimpose their two views, you get this result: Nothing is real. There is a fascinating next step to this line of thinking: Parmenides could never have existed because he grew old and died and disappeared, so, according to his own philosophy, he did not exist. And Heraclitus may have been right — let's not forget that; so if Heraclitus was right, then Parmenides did exist, and therefore, according to Heraclitus' philosophy, perhaps Parmenides was right, since Parmenides fulfilled the conditions, the criteria, by which Heraclitus judged things real.
I offer this merely to show that as soon as you begin to ask what is ultimately real, you right away begin talk nonsense. Zeno proved that motion was impossible (actually he only imagined that he had proved this; what he lacked was what technically is called the "theory of limits"). David Hume, the greatest skeptic of them all, once remarked that after a gathering of skeptics met to proclaim the veracity of skepticism as a philosophy, all of the members of the gathering nonetheless left by the door rather than the window. I see Hume's point. It was all just talk. The solemn philosophers weren't taking what they said seriously.
But I consider that the matter of defining what is real — that is a serious topic, even a vital topic. And in there somewhere is the other topic, the definition of the authentic human. Because the bombardment of pseudo- realities begins to produce inauthentic humans very quickly, spurious humans — as fake as the data pressing at them from all sides. My two topics are really one topic; they unite at this point. Fake realities will create fake humans. Or, fake humans will generate fake realities and then sell them to other humans, turning them, eventually, into forgeries of themselves. So we wind up with fake humans inventing fake realities and then peddling them to other fake humans. It is just a very large version of Disneyland. You can have the Pirate Ride or the Lincoln Simulacrum or Mr. Toad's Wild Ride — you can have all of them, but none is true.
In my writing I got so Interested in fakes that I finally came up with the concept of fake fakes. For example, in Disneyland there are fake birds worked by electric motors which emit caws and shrieks as you pass by them. Suppose some night all of us sneaked into the park with real birds and substituted them for the artificial ones. Imagine the horror the Disneyland officials would feet when they discovered the cruel hoax. Real birds! And perhaps someday even real hippos and lions. Consternation. The park being cunningly transmuted from the unreal to the real, by sinister forces. For instance, suppose the Matterhom turned into a genuine snow-covered mountain? What if the entire place, by a miracle of God's power and wisdom, was changed, in a moment, in the blink of an eye, into something incorruptible? They would have to close down.
In Plato's Timaeus, God does not create the universe, as does the Christian God; He simply finds it one day. It is in a state of total chaos. God sets to work to transform the chaos into order. That idea appeals to me, and I have adapted it to fit my own intellectual needs: What if our universe started out as not quite real, a sort of illusion, as the Hindu religion teaches, and God, out of love and kindness for us, is slowly transmuting it, slowly and secretly, into something real?
We would not be aware of this transformation, since we were not aware that our world was an illusion in the first place. This technically is a Gnostic idea. Gnosticism is a religion which embraced Jews, Christians, and pagans for several centuries. I have been accused of holding Gnostic ideas. I guess I do. At one time I would have been burned. But some of their ideas intrigue me. One time, when I was researching Gnosticism in the Britannica, I came across mention of a Gnostic codex called The Unreal God and the Aspects of His Nonexistent Universe, an idea which reduced me, to helpless laughter. What kind of person would write about something that he knows doesn't exist, and how can something that doesn't exist have aspects? But then I realized that I'd been writing about these matters for over twenty-five years. I guess there is a lot of latitude in what you can say when writing about a topic that does not exist. A friend of mine once published a book called Snakes of Hawaii. A number of libraries wrote him ordering copies. Well, there are no snakes in Hawaii. A11 the pages of his book were blank.
Of course, in science fiction no pretense is made that the worlds described are real. This is why we call it fiction. The reader is warned in advance not to believe what he is about to read. Equally true, the visitors to Disneyland understand that Mr. Toad does not really exist and that the pirates are animated by motors and servo-assist mechanisms, relays and electronic circuits. So no deception is taking place.
And yet the strange thing is, in some way, some real way, much of what appears under the title "science fiction" is true. It may not be literally true, I suppose. We have not really been invaded by creatures from another star system, as depicted in Close Encounters of the Third Kind. The producers of that film never intended for us to believe it. Or did they?
And, more important, if they did intend to state this, is it actually true? That is the issue: not, Does the author or producer believe it, but — Is it true? Because, quite by accident, in the pursuit of a good yarn, a science fiction author or producer or scriptwriter might stumble onto the truth... and only later on realize it.
The basic tool for the manipulation of reality is the manipulation of words. If you can control the meaning of words, you can control the people who must use the words. George Orwell made this clear in his novel 1984. But another way to control the minds of people is to control their perceptions. If you can get them to see the world as you do, they will think as you do. Comprehension follows perception. How do you get them to see the reality you see? After all, it is only one reality out of many. Images are a basic constituent: pictures. This is why the power of TV to influence young minds is so staggeringly vast. Words and pictures are synchronized. The possibility of total control of the viewer exists, especially the young viewer. TV viewing is a kind of sleep- learning. An EEG of a person watching TV shows that after about half an hour the brain decides that nothing is happening, and it goes into a hypnoidal twilight state, emitting alpha waves. This is because there is such little eye motion. In addition, much of the information is graphic and therefore passes into the right hemisphere of the brain, rather than being processed by the left, where the conscious personality is located. Recent experiments indicate that much of what we see on the TV screen is received on a subliminal basis. We only imagine that we consciously see what is there. The bulk of the messages elude our attention; literally, after a few hours of TV watching, we do not know what we have seen. Our memories are spurious, like our memories of dreams; the blanks are filled in retrospectively. And falsified. We have participated unknowingly in the creation of a spurious reality, and then we have obligingly fed it to ourselves. We have colluded in our own doom.
And — and I say this as a professional fiction writer — the producers, scriptwriters, and directors who create these video/audio worlds do not know how much of their content is true. In other words, they are victims of their own product, along with us. Speaking for myself, I do not know how much of my writing is true, or which parts (if any) are true. This is a potentially lethal situation. We have fiction mimicking truth, and truth mimicking fiction. We have a dangerous overlap, a dangerous blur. And in all probability it is not deliberate. In fact, that is part of the problem. You cannot legislate an author into correctly labeling his product, like a can of pudding whose ingredients are listed on the label... you cannot compel him to declare what part is true and what isn't if he himself does not know.
It is an eerie experience to write something into a novel, believing it is pure fiction, and to learn later on — perhaps years later — that it is true. I would like to give you an example. It is something that I do not understand. Perhaps you can come up with a theory. I can't.
In 1970 I wrote a novel called Flow My Tears, the Policeman Said. One of the characters is a nineteen-year-old girl named Kathy. Her husband's name is Jack. Kathy appears to work for the criminal underground, but later, as we read deeper into the novel, we discover that actually she is working for the police. She has a relationship going on with a police inspector. The character is pure fiction. Or at least I thought it was.
Anyhow, on Christmas Day of 1970, I met a girl named Kathy - this was after I had finished the novel, you understand. She was nineteen years old. Her boyfriend was named Jack. I soon learned that Kathy was a drug dealer. I spent months trying to get her to give up dealing drugs; I kept warning her again and again that she would get caught. Then, one evening as we were entering a restaurant together, Kathy stopped short and said, "I can't go in." Seated in the restaurant was a police inspector whom I knew. "I have to tell you the truth," Kathy said. "I have a relationship with him."
Certainly, these are odd coincidences. Perhaps I have precognition. But the mystery becomes even more perplexing; the next stage totally baffles me. It has for four years.
In 1974 the novel was published by Doubleday. One afternoon I was talking to my priest - I am an Episcopalian — and I happened to mention to him an important scene near the end of the novel in which the character Felix Buckman meets a black stranger at an all-night gas station, and they begin to talk. As I described the scene in more and more detail, my priest became progressively more agitated. At last he said, 'That is a scene from the Book of Acts, from the Bible! In Acts, the person who meets the black man on the road is named Philip - - your name." Father Rasch was so upset by the resemblance that he could not even locate the scene in his Bible. "Read Acts," he instructed me. "And you'll agree. It's the same down to specific details."
I went home and read the scene in Acts. Yes, Father Rasch was right; the scene in my novel was an obvious retelling of the scene in Acts... and I had never read Acts, I must admit. But again the puzzle became deeper. In Acts, the high Roman official who arrests and interrogates Saint Paul is named Felix — the same name as my character. And my character Felix Buckman is a high-ranking police general; in fact, in my novel he holds the same office as Felix in the Book of Acts: the final authority. There is a conversation in my novel which very closely resembles a conversation between Felix and Paul.
Well, I decided to try for any further resemblances. The main character in my novel is named Jason. I got an index to the Bible and looked to see if anyone named Jason appears anywhere in the Bible. I couldn't remember any. Well, a man named Jason appears once and only once in the Bible. It is in the Book of Acts. And, as if to plague me further with coincidences, in my novel Jason is fleeing from the authorities and takes refuge in a person's house, and in Acts the man named Jason shelters a fugitive from the law in his house - an exact inversion of the situation in my novel, as if the mysterious Spirit responsible for all this was having a sort of laugh about the whole thing.
Felix, Jason, and the meeting on the road with the black man who is a complete stranger. In Acts, the disciple Philip baptizes the black man, who then goes away rejoicing. In my novel, Felix Buckman reaches out to the black stranger for emotional support, because Felix Buckman's sister has just died and he is falling apart psychologically. The black man stirs up Buckman's spirits and although Buckman does not go away rejoicing, at least his tears have stopped falling. He had been flying home, weeping over the death of his sister, and had to reach out to someone, anyone, even a total stranger. It is an encounter between two strangers on the road which changes the life of one of them — both in my novel and in Acts. And one final quirk by the mysterious Spirit at work: the name Felix is the Latin word for "happy." Which I did not know when I wrote the novel.
A careful study of my novel shows that for reasons which I cannot even begin to explain I had managed to retell several of the basic incidents from a particular book of the Bible, and even had the right names. What could explain this? That was four years ago that I discovered all this. For four years I have tried to come up with a theory and I have not. I doubt if I ever will.
But the mystery had not ended there, as I had imagined. Two months ago I was walking up to the mailbox late at night to mail off a letter, and also to enjoy the sight of Saint Joseph's Church, which sits opposite my apartment building. I noticed a man loitering suspiciously by a parked car. It looked as if he was attempting to steal the car, or maybe something from it; as I returned from the mailbox, the man hid behind a tree. On impulse I walked up to him and asked, "Is anything the matter?"
"I'm out of gas," the man said. "And I have no money."
Incredibly, because I have never done this before, I got out my wallet, took all the money from it, and handed the money to him. He then shook hands with me and asked where I lived, so that he could later pay the money back. I returned to my apartment, and then I realized that the money would do him no good, since there was no gas station within walking distance. So I returned, in my car. The man had a metal gas can in the trunk of his car, and, together, we drove in my car to an all-night gas station. Soon we were standing there, two strangers, as the pump jockey filled the metal gas can. Suddenly I realized that this was the scene in my novel — the novel written eight years before. The all-night gas station was exactly as I had envisioned it in my inner eye when I wrote the scene — the glaring white light, the pump jockey — and now I saw something which I had not seen before. The stranger who I was helping was black. We drove back to his stalled car with the gas, shook hands, and then I returned to my apartment building. I never saw him again. He could not pay me back becauseI had not told him which of the many apartments was mine or what my name was. I was terribly shaken up by this experience. I had literally lived out a scene completely as it had appeared in my novel. Which is to say, I had lived out a sort of replica of the scene in Acts where Philip encounters the black man on the road.
What could explain all this?
The answer I have come up with may not be correct, but it is the only answer I have. It has to do with time. My theory is this: In some certain important sense, time is not real. Or perhaps it is real, but not as we experience it to be or imagine it to be. I had the acute, overwhelming certitude (and still have) that despite all the change we see, a specific permanent landscape underlies the world of change: and that this invisible underlying landscape is that of the Bible; it, specifically, is the period immediately following the death and resurrection of Christ; it is, in other words, the time period of the Book of Acts.
Parmenides would be proud of me. I have gazed at a constantly changing world and declared that underneath it lies the eternal, the unchanging, the absolutely real. but how has this come about? If the real time is circa AD S0, then why do we see AD 1978? And if we are really living in the Roman Empire, somewhere in Syria, why do we see the United States?
During the Middle Ages, a curious theory arose, which I will now present to you for what it is worth. It is the theory that the Evil One — Satan — is the "Ape of God." That he creates spurious imitations of creation, of God's authentic creation, and then interpolates them for that authentic creation. Does this odd theory help explain my experience? Are we to believe that we are occluded, that we are deceived, that it is not 1978 but AD 50... and Satan has spun a counterfeit reality to wither our faith in the return of Christ?
I can just picture myself being examined by a psychiatrist. The psychiatrist says, "What year is it?" And I reply, "AD 50." The psychiatrist blinks and then asks, "And where are you?" I reply, "In Judaea." "Where the heck is that?" the psychiatrist asks. "It's part of the Roman Empire," I would have to answer. "Do you know who is President?" the psychiatrist would ask, and I would answer, "The Procurator Felix." "You're pretty sure about this?" the psychiatrist would ask, meanwhile giving a covert signal to two very large psych techs. "Yep," I'd replay. "Unless Felix has stepped down and had been replaced by the Procurator Festus. You see, Saint Paul was held by Felix for —" "Who told you all this?" the psychiatrist would break in, irritably, and I would reply, 'The Holy Spirit." And after that I'd be in the rubber room, inside gazing out, and knowing exactly how come I was there. Everything in that conversation would be true, in a sense, although palpably not true in another. I know perfectly well that the date is 1978 and that Jimmy Carter is President and that I live in Santa Ana, California, in the United States. I even know how to get from my apartment to Disneyland, a fact I can't seem to forget. And surely no Disneyland existed backat the time of Saint Paul.
So, if I force myself to be very rational and reasonable, and all those other good things, I must admit that the existence of Disneyland (which I know is real) proves that we are not living in Judaea in AD 50. The idea of Saint Paul whirling around inthe giant teacups wile composing First Corinthians, as Paris TV films him with a telephoto lens — that just can't be. Saint Paul would never go near Disneyland. Only children, tourists, and visiting Soviet high officials ever go to Disneyland. Saints do not.
But somehow that biblical material snared my unconscious and crept into my novel, and equally true, for some reason in 1978 I relived a scene which I described back in 1970. What I am saying is this: There is internal evidence in at least one of my novels that another reality, an unchanging one, exactly as Parmenides and Plato suspected, underlies the visible phenomenal world of change, and somehow, in some way, perhaps to our surprise, we can cut through to it. Or rather, a mysterious Spirit can put us in touch with it, if it wishes us to see this permanent other landscape. Time passes, thousands of years pass, but at the same instant that we see this contemporary world, the ancient world, the world of the Bible, is concealed beneath it, still. there and still real. Eternally so.
Shall I go for broke and tell you the rest of this peculiar story? I'll do so, having gone this far already. My novel Flow My Tears, the Policeman Said was released by Doubleday in February of 1974. The week after it was released, I had two impacted wisdom teeth removed, under sodium pentathol. Later that day I found myself in intense pain. My wife phoned the oral surgeon and he phoned a pharmacy. Half an hour later there was a knock at my door: the delivery person from the pharmacy with the pain medication. Although I was bleeding and sick and weak, I felt the need to answer the knock on the door myself. When I opened the door, I found myself facing a young woman — who wore a shining gold necklace in the center of which was a gleaming gold fish. For some reason I was hypnotized by the gleaming golden fish; I forgot my pain, forgot the medication, forgot why the girl was there. I just kept staring at the fish sign.
"What does that mean?" I asked her.
The girl touched the glimmering golden fish with her hand and said, "This is a sign worn by the early Christians." She then gave me the package of medication.
In that instant, as I stared at the gleaming fish sign and heard her words, I suddenly experienced what I later learned is called anamnesis — a Greek word meaning, literally, "loss of forgetfulness." I remembered who I was and where I was. In an instant, in the twinkling of an eye, it all came back to me. And not only could I remember it but I could see it. The girl was a secret Christian and so was I. We lived in fear of detection by the Romans. We had to communicate with cryptic signs. She had just told me all this, and it was true.
For a short time, as hard as this is to believe or explain, I saw fading into view the black prison like contours of hateful Rome. But, of much more importance, I remembered Jesus, who had just recently been with us, and had gone temporarily away, and would very soon return. My emotion was one of joy. We were secretly preparing to welcome Him back. It would not be long. And the Romans did not know. They thought He was dead, forever dead. That was our great secret, our joyous knowledge. Despite all appearances, Christ was going to return, and our delight and anticipation was boundless.
Isn't it odd that this strange event, this recovery of lost memory, occurred only a week after Flow My Tears was released? And it is Flow My Tears which contains the replication of people and events from the Book of Acts, which is set at the precise moment in time — just after Jesus' death and resurrection — that I remembered, by means of the golden fish sign, as having just taken place?
If you were me, and had this happen to you, I'm sure you wouldn't be able to leave it alone. You would seek a theory that would account for it. For over four years now, I have been trying one theory after another: circular time, frozen time, timeless time, what is called "sacred" as contrasted to "mundane" time... I can't count the theories I've tried out. One constant has prevailed, though, throughout all theories. There must indeed be a mysterious Holy Spirit which has an exact and intimate relation to Christ, which can indwell in human minds, guide and inform them, and even express itself through those humans, even without their awareness.
In the writing of Flow My Tears, back in 1970, there was one unusual event which I realized at the time was not ordinary, was not a part of the regular writing process. I had a dream one night, an especially vivid dream. And when I awoke I found myself under the compulsion — the absolute necessity — of getting the dream into the text of the novel precisely as I had dreamed it. In getting the dream exactly right, I had to do eleven drafts of the final part of the manuscript, until I was satisfied.
I will now quote from the novel, as it appeared in the final, published form. See if this dream reminds you of anything.
The countryside, brown and dry, in summer, where he had lived as a child. He rode a horse, and approaching him on his left a squad of horses nearing slowly. On the horses rode men in shining robes, each a different contour; each wore a pointed helmet that sparkled in the sunlight. The slow, solemn knights passed him and as they traveled by he made out the face of one: an ancient marble face, a terribly old man with rippling cascades of white beard. What a strong nose he had. What noble features. So tired, so serious, so far beyond ordinary men. Evidently he was a king. Felix Buckman let them pass; he did not speak to them and they said nothing to him. Together, they all moved toward the house from which he had come. A man had sealed himself up inside the house, a man alone, Jason Taverner, in the silence and darkness, without windows, by himself from now on into eternity. Sitting, merely existing, inert. Felix Buckman continued on, out into the open countryside. And then he heard from behind him one dreadful single shriek. They had killed Taverner, and seeing them enter, sensing them in the shadows around him, knowing what they intended to do with him, Taverner had shrieked. Within himself Felix Buckman felt absolute and utter desolate grief. But in the dream he did not go back nor look back. There was nothing that could be done. No one could have stopped the posse of varicolored men in robes; they could not have been said no to. Anyhow, it was over. Taverner was dead.
This passage probably does not suggest any particular thing to you, except a law posse exacting judgement on someone either guilty or considered guilty. It is not clear whether Taverner has in fact committed some crime or is merely believed to have committed some crime. I had the impression that he was guilty, but that it wasa tragedy that he had to be killed, a terribly sad tragedy. In the novel, this dream causes Felix Buckman to begin to cry, and therefore he seeks out the black man at the all-night gas station.
Months after the novel was published, I found the section in the Bible to which this dream refers. It is Daniel, 7:9:
Thrones were set in place and one ancient in years took his seat. His robe was white as snow and the hair of his head like cleanest wool. Flames of fire were his throne and its wheels blazing fire; a flowing river of fire streamed out before him. Thousands upon thousands served him and myriads upon myriads attended his presence. The court sat, and the book was opened.
The white-haired old man appears again in Revelation, 1:13:
I saw... one like a son of man, robed down to his feet, with a golden girdle round his breast. The hair of his head was white as snow-white wool, and his eyes flamed like fire; his feet gleamed like burnished brass refined in a furnace, and his voice was like the sound of rushing waters.
And then 1:17:
When I saw him, I fell at his feet as though dead. But he laid his right hand upon me and said, "Do not be afraid. I am the first and the last, and I am the living one, for I was dead and now I am alive for evermore, and I hold the keys of Death and Death's domain. Write down therefore what you have seen, what is now, and what will be hereafter."
And, like John of Patmos, I faithfully wrote down what I saw and put in my novel. And it was true, although at the time I did not know who was meant by this description:
... he made out the face of one: an ancient marble face, a terribly old man with rippling cascades of white beard. What a strong nose he had. What noble features. So tired, so serious, so far beyond ordinary men. Evidently he was a king.
Indeed he was a king. He is Christ Himself returned, to pass judgement. And this is what he does in my novel: He passes judgement on the man sealed up in darkness. The man sealed up in darkness must be the Prince of Evil, the Force of Darkness. Call it whatever you wish, its time had come. It was judged and condemned. Felix Buckman could weep at the sadness of it, but he knew that the verdict could not be disputed. And so he rode on, without turning or looking back, hearing only the shriek of fear and defeat: the cry of evil destroyed.
So my novel contained material from other parts of the Bible, as well as the sections from Acts. Deciphered, my novel tells a quite different story from the surface story (which we need not go into here). The real story is simply this: the return of Christ, now king rather than suffering servant. Judge rather than victim of unfair judgement. Everything is reversed. The core message of my novel, without my knowing it, was a warning to the powerful: You will shortly be judged and condemned. Who, specifically, did it refer to? Well, I can't really say; or rather would prefer not to say. I have no certain knowledge, only an intuition. And that is not enough to go on, so I will keep my thoughts to myself. But you might ask yourselves what political events took place in this country between February 1974 and August 1974. Ask yourself who was judged and condemned, and fell like a flaming star into ruin and disgrace. The most powerful man in the world. And I feel as sorry for him now as I did when I dreamed that dream. "That poor poor man," I said once to my wife, with tears in my eyes. "Shut up in the darkness, playing the piano in the night to himself, alone and afraid, knowing what's to come." For God's sake, let us forgive him, finally. But what was done to him and all his men — "all the President's men," as it's put — had to be done. But it is over, and he should be let out into the sunlight again; no creature, no person, should be shut up in darkness forever, in fear. It is not humane.
Just about the time that Supreme Court was ruling that the Nixon tapes had to be turned over to the special prosecutor, I was eating at a Chinese restaurant in Yorba Linda, the town in California where Nixon went to school — where he grew up, worked at a grocery store, where there is a park named after him, and of course the Nixon house, simple clapboard and all that. In my fortune cookie, I got the following fortune:
DEEDS DONE IN SECRET HAVE A
WAY OF BECOMING FOUND OUT
I mailed the slip of paper to the White House, mentioning that the Chinese restaurant was located within a mile of Nixon's original house, and I said, "I think a mistake has been made; by accident I got Mr. Nixon's fortune. Does he have mine?" The White House did not answer.
Well, as I said earlier, an author of a work supposed fiction might write the truth and not know it. To quote Xenophanes another pre-Socratic: Even if a man should chance to speak the most complete truth, yet he himself does not know it; all things are wrapped in appearances (Fragment 34). And Heraclitus added to this: The nature of things is in the habit of concealing itself (Fragment 54). W. S. Gilbert, of Gilbert and Sullivan, put it: Things are seldom what they seem; skim milk masquerades as cream. The point of all that is that we cannot trust our senses and probably not even our a priori reasoning. As to our senses, I understand that people who have been blind from birth and are suddenly given sight are amazed to discover that objects appear to get smaller and smaller as they get farther away. Logically, there is no reason for this. We, of course, have come to accept this, because we're used to it. We see objects get smaller, but we know that in actuality they remain the same size. So even the common everyday pragmatic person utilises a certain amount of sophisticated discounting of what his eyes and ears tell him.
Little of what Heraclitus wrote has survived, and what we do have is obscure, but Fragment 54 is lucid and important: latent structure is master of obvious structure. This means that Heraclitus believed that a veil lay over the true landscape. He also may have suspected that time was somehow not what it seemed, because in Fragment 52 he said: Time is a child at play, playing draughts; a child's is the kingdom. This is indeed cryptic. But he also said, in Fragment 18: If one does not expect it, one will not find out the unexpected; it is not to be tracked down and no path leads us to it. Edward Hussey, in his scholarly book The Pre-Socratics, says:
If Heraclitus is to be so insistent on the lack of understanding shown by most men, it would seem only reasonable that he should offer further instructions for penetrating to the truth. The talk of riddle-guessing suggests that some kind of revelation, beyond human control, is necessary... The true wisdom, as has been seen, is closely associated with God, which suggests further that in advancing wisdom a man becomes Iike, or a part of, God.
This quote is not from a religious book or a book on theology; it is an analysis of the earliest philosophers by a Lecturer in Ancient Philosophy at the University of Oxford. Hussey makes it clear that to these early philosophers there was no distinction between philosophy and religion. The first great quantum leap in Greek theology was by Xenophanes of Colophon, born in the mid-sixth century BC Xenophanes, without resorting to any authority expect that of his own mind, says:
One god there is, in no way like mortal creatures either in bodily form or in the thought of his mind. The whole of him sees, the whole of him thinks, the whole of him hears. He stays always motionless in the same place; it is not fitting that he should move about now this way, now that.
This is a subtle and advanced concept of God, evidently without precedent among the Greek thinkers. The arguments of Parmenides seemed to show that all reality must indeed be a mind, Hussey writes, or an object of thought in a mind. Regarding Heraclitus specifically, he says, In Heraclitus it is difficult to tell how far the designs in God's mind are distinguished from the execution in the world, or indeed how far God's mind is distinguished from the world. The further leap by Anaxagoras has always fascinated me. Anaxagoras had been driven to a theory of the microstructure of matter which made it, to some extent, mysterious to human reason. Anaxagoras believed that everything was determined by Mind. These were not childish thinkers, nor primitives. They debated serious issues and studied one another's views with deft insight. It was not until the time of Aristotle that their views got reduced to what we can neatly — but wrongly — classify as crude. The summation of much pre-Socratic theology and philosophy can be stated as follows: The kosmos is not as it appears to be, and what it probably is, at its deepest level, is exactly that which the human being is at his deepest level — call it mind or soul, it is something unitary which lives and thinks, and only appears to be plural and material. Much of this view reaches us through the Logos doctrine regarding Christ. The Logos was both that which thought, and the thing which it thought: thinker and thought together. The universe, then, is thinker and thought, and since we are part of it, we as humans are, in the final analysis, thoughts of and thinkers of those thoughts.
Thus if God thinks about Rome circa AD 50, then Rome circa AD 50 is. The universe is not a windup clock and God the hand that winds it. The universe is not a battery-powered watch and God the battery. Spinoza believed that the universe is the body of God extensive in space. But long before Spinoza — two thousand years before him — Xenophanes had said, Effortlessly, he wields all things by the thought of his mind (Fragment 25).
If any of you have read my novel Ubik, you know that the mysterious entity or mind or force called Ubik starts out as a series of cheap and vulgar commercials and winds up saying:
I am Ubik. Before the universe was I am. I made the suns. I made the worlds. I created the lives and the places they inhabit; I move them here, I put them there. They go as I say, they do as I tell them. I am the word and my name is never spoken, the name which no one knows. I am called Ubik but that is not my name. I am. I shall always be.
It is obvious from this who and what Ubik is; it specifically says that it is the word, which is to say, the Logos. In the German translation, there is one of the most wonderful lapses of correct understanding that I have ever come across; God help us if the man who translated my novel Ubik into German were to do a translation from the koine Greek into German of the New Testament. He did all right until he got to the sentence "I am the word." That puzzled him. What can the author mean by that? he must have asked himself, obviously never having come across the Logos doctrine. So he did as good a job of translation as possible. In the German edition, the Absolute Entity which made the suns, made the worlds, created the lives and the places they inhabit, says of itself:
I am the brand name.
Had he translated the Gospel according to Saint John, I suppose it would have come out as:
When all things began, the brand name already was. The brand name dwelt with God, and what God was, the brand name was.
It would seem that I not only bring you greetings from Disneyland but from Mortimer Snerd. Such is the fate of an author who hoped to include theological themes in his writing. "The brand name, then, was with God at the beginning, and through him all things came to be; no single thing was created without him." So it goes with noble ambitions. Let's hope God has a sense of humour.
Or should I say, Let's hope the brand name has a sense of humour.
As I said to you earlier, my two preoccupations in my writing are "What is reality?" and "What is the authentic human?" I'm sure you can see by now that I have not been able to answer the first question. I have an abiding intuition that somehow the world of the Bible is a literally real but veiled landscape, never changing, hidden from our sight, but available to us by revelation. That is all I can come up with — a mixture of mystical experience, reasoning, and faith. I would like to say something about the traits of the authentic human, though; in this quest I have had more plausible answers.
The authentic human being is one of us who instinctively knows what he should not do, and, in addition, he will balk at doing it. He will refuse to do it, even if this brings down dread consequences to him and to those whom he loves. This, to me, is the ultimately heroic trait of ordinary people; they say no to the tyrant and they calmly take the consequences of this resistance. Their deeds may be small, and almost always unnoticed, unmarked by history. Their names are not remembered, nor did these authentic humans expect their names to be remembered. I see their authenticity in an odd way: not in their willingness to perform great heroic deeds but in their quiet refusals. In essence, they cannot be compelled to be what they are not.
The power of spurious realities battering at us today — these deliberately manufactured fakes never penetrate to the heart of true human beings. I watch the children watching TV and at first I am afraid of what they are being taught, and then I realise, They can't be corrupted or destroyed. They watch, they listen, they understand, and, then, where and when it is necessary, they reject. There is something enormously powerful in a child's ability to withstand the fraudulent. A child has the clearest eye, the steadiest hand. The hucksters, the promoters, are appealing for the allegiance of these small people in vain. True, the cereal companies may be able to market huge quantities of junk breakfasts; the hamburger and hot dog chains may sell endless numbers of unreal fast-food items to the children, but the deep heart beats firmly, unreached and unreasoned with. A child of today can detect a lie quicker than the wisest adult of two decades ago. When I want to know what is true, I ask my children. They do not ask me; I turn to them.
One day while my son Christopher, who is four, was playing in front of me and his mother, we two adults began discussing the figure of Jesus in the Synoptic Gospels. Christopher turned toward us for an instant and said, "I am a fisherman. I fish for fish." He was playing with a metal lantern which someone had given me, which I had never used... and suddenly I realised that the lantern was shaped like a fish. I wonder what thoughts were being placed in my little boy's soul at that moment — and not placed there by cereal merchants or candy peddlers. "I am a fisherman. I fish for fish." Christopher, at four, had found the sign I did not find until I was forty-five years old. Time is speeding up. And to what end? Maybe we were told that two thousand years ago. Or maybe it wasn't really that long ago; maybe it is a delusion that so much time has passed. Maybe it was a week ago, or even earlier today. Perhaps time is not only speeding up; perhaps, in addition, it is going to end.
And if it does, the rides at Disneyland are never going to be the same again. Because when time ends, the birds and hippos and lions and deer at Disneyland will no longer be simulations, and, for the first time, a real bird will sing.
[ downlode.org etext library ]
//{{{
// version: beta 1.1
//replace macro buttons with icons
// params[0] = image location
//params[1] = image width
//params[2] = image height
//params[3] = image title (optional)
config.macros.icon={};
config.macros.icon.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{
if (place.lastChild.tagName!="BR")
{
var tempTitle = place.lastChild.firstChild.title;
removeChildren(place.lastChild);
place.lastChild.className = "imgLink";
var img = createTiddlyElement(place.lastChild,"img");
img.src = params[0];
if (params[3])
img.title = params[3];
img.width= params[1];
img.height =params[2];
}
};
//use icons for toolbar commands.
// used in view template like:
// <span macro='commandIcon jump jump.bmp'></span>
//params[0] = command name
//params[1] = image location
config.macros.commandIcon={};
config.macros.commandIcon.handler = function(place,macroName,params,wikifier,paramString,tiddler)
{if(!e) var e = window.event;
var img = createTiddlyElement(place,"img",null,"toolbarImg");
img.src = params[1];
img.onclick = function(){config.commands[params[0]].handler(e,place,story.findContainingTiddler(place).getAttribute("tiddler"));};
img.title = config.commands[params[0]].tooltip;
}
setStylesheet(".toolbarImg {vertical-align: middle; cursor:pointer;}\n","commandIconStyles");
//}}}
Tentative version of IconMacro, meant to replace buttons created by macros with images. Will only work for some macros and not at all for commands.... In use in the HoverMenu on the right.
Update: commandIcon macro added, that can be used to create Image icons that launch toolbar commands
Jésus était en Irak depuis près de six mois lorsqu'il marcha sur une mine.
James, qui le suivait sous le soleil de plomb de cet après-midi de juillet, venait de concocter une nouvelle blague sur les ~Hispano-Américains, et s'apprêtait à apostropher son ami quand celui-ci s'immobilisa, lâcha un bref juron, et disparut dans un nuage de poussière.
Ils avaient débarqué dans les faubourgs de Fallujah vers midi, et s'étaient séparés en petites unités de quatre soldats, progressant précautionneusement dans les ruelles parallèles qui entouraient la mosquée où, selon les informations transmises par les services de renseignement, s'étaient retranchés une poignée d'insurgés responsables d'une récente attaque contre un convoi blindé. Deux fois déjà, en traversant une grande artère, ils avaient été soumis à des tirs de snipers. Corey, qui dans le civil était livreur de pizzas à Détroit, avait pris une balle dans le genou, et Stan, l'infirmier, était resté avec lui le temps qu'une ambulance militaire l'évacué vers l'arrière. James et Jésus avaient poursuivi leur progression, sans contact radio avec le reste de l'escouade.
James, comme Jésus, portait une veste en Kevlar et céramique, un casque en Kevlar, et tout un harnachement de munitions, de grenades, sans compter le matériel de premiers secours et deux bidons d'eau chaude. Son arme, un ~M16-A2 muni d'un double magazine, pesait près de cinq kilos.
La sueur ruisselait le long de son visage, piquant ses yeux, dessinant des coulées acides sur sa peau tannée par la poussière. La température extérieure flirtait avec les quarante-cinq degrés, à l'ombre. Mais il n'y avait pas d'ombre.
Dans les décombres d'une échoppe dévastée par un tir de mortier, James s'était arrêté un instant pour pisser. À force d'ingurgiter des rations militaires, même son urine avait maintenant une odeur de chewing-gum.
- J'espère qu'on va rapidement atteindre le boss de fin de niveau, murmura Jésus sans sourciller.
James cracha un filet de salive acide. L'habitude qu'avait gardée Jésus de leur rappeler comment ils avaient atterri en Irak ne le faisait plus même sourire. C'était un autre temps, un autre monde, et il avait parfois du mal à réaliser que ces souvenirs étaient les siens, qu'un an à peine auparavant ils avaient décidé, sur un coup de tête, de s'engager dans l'armée, par bravade. Comment avaient-ils pu être si inconscients? Cynthia, sa sœur aînée, avait piqué une colère insensée, comme la femme de Jésus, d'ailleurs. Mais ils avaient l'un et l'autre fait miroiter les avantages que leur offrait le service sous les drapeaux, et la nécessité de servir leur pays. Jésus, en particulier, y voyait l'espoir de régulariser définitivement sa situation, et peut-être même d'entamer des études.
— Et en plus, en rentrant, on se paie chacun un ordinateur d'enfer, je ne te raconte pas les parties qu'on va se faire, ma femme va être folle !
La brigade Nintendo, c'est comme ça que, en riant, leur recruteur les avait baptisés, James, Jésus, Harv et Solly.
Harv avait pris une balle dans le bas-ventre à Najaf, et vidait maintenant ses intestins dans une poche en plastique, deux fois par jour, dans un hôpital militaire à Springfield. Solly avait eu moins de chance. Après un accident au décollage d'un hélicoptère ~AH-58, il était revenu au pays dans une caisse en sapin recouverte d'un drapeau US, comme près d'un millier de ses frères d'armes, débarquant sur le tarmac de la base militaire de l'Air Force à Dover, dans le Delaware, sous couvert de la nuit, loin des discours vibrants d'émotion guerrière de leur commandant en chef et des regards des caméras, les journalistes ayant été sommés de ne pas publier les photographies des cercueils pour ne pas nuire au moral des troupes.
Le moral des troupes... Celui de James n'était plus au beau fixe depuis longtemps. Jésus, lui, tenait mieux le coup, aidé en cela par les nombreux colis que lui faisaient parvenir ses proches, et qui amélioraient leur ordinaire quand l'intendance ne suivait pas. Sans les colis de Jésus, ils n'auraient jamais pu trouver des lames de rechange pour leurs rasoirs mécaniques, ni du dentifrice. C'était impensable que l'armée, qui leur avait tant promis, se trouvait même incapable de leur fournir des produits de première nécessité, quand des sommes colossales, James en prenait graduellement conscience, étaient chaque jour englouties dans l'effort de guerre. Il allait en faire la remarque, une énième fois, à Jésus, pour le simple plaisir de voir son ami hausser les épaules et lancer un de ces proverbes obscènes qui faisaient la joie du baraquement,quand Jésus disparut dans un nuage de poussière et de shrapnel, l'envoyant rouler à une dizaine de mètres, indemne, sonné, à moitié sourd, et littéralement recouvert des restes de son meilleur ami.
Pour la dixième fois peut-être, seul dans sa chambre, Thierry avait visionné la cassette de l'émission. Ses parents dormaient dans la pièce voisine, et il avait coupé le son du vieux téléviseur qui lui servait de moniteur pour la console de jeux. Qu'importé: il connaissait par cœur le commentaire un peu larmoyant du présentateur, et les mises en garde répétées des divers adultes interviewés sur les dangers du jeu vidéo.
Si seulement ces crétins savaient, songea-t-il. Il savait qu'il était injuste, qu'aucun des médecins, des pédopsychiatres, des sociologues présents sur le plateau de télévision, ne pouvait seulement soupçonner ce qu'il avait vécu. Non. Pour concevoir ce que le Jeu Ultime leur avait fait traverser, il aurait fallu être là, avec eux, sur les plaines dévastées du Chemin des Dames en 1917 ou dans les ruelles embrasées de Guernica en 1937...
Personne, à part Éric, Andréas et lui-même, ne pouvait imaginer ce que recelait le Jeu. Et Éric refusait maintenant d'en entendre parler, tandis qu'Andréas... Andréas avait disparu, c'est tout ce qu'on pouvait déterminer avec un minimum de certitude. Andréas avait disparu du jour au lendemain, laissant derrière lui une famille éplorée, selon les journalistes, et des camarades inquiets ou stupéfaits.
Eric et Thierry avaient été questionnés par un inspecteur de police, comme certains de leurs professeurs, mais l'enquête n'avait rien donné.
La vie avait repris son cours normal, si tant est qu'il fut possible de parler de normalité après les événements qu'avaient vécus les trois garçons.
Éric et Thierry avaient poursuivi leurs études, passant ensemble dans les classes supérieures, sans grande difficulté. Ils se voyaient souvent, mais parlaient rarement, pour ainsi dire jamais, du passé.
Thierry n'avait plus accès au jeu depuis ce jour de mai 1917 où il avait été fusillé pour l'exemple. Et Eric, Éric qui avait vaincu Andréas en combat singulier dans les décombres de Boadilla Del Monte, Éric qui avait affronté le Dragon dans une église en ruine, gardait en lui une amertume et une blessure secrète que Thierry ne pouvait que deviner. Il avait bien tenté d'en discuter avec son ami, mais en vain. Tout au plus croyait-il savoir qu'Éric avait remisé l'ordinateur familial, et la fameuse disquette, dans la cave de son immeuble.
Éric ne jouait plus. Si incroyable que cela ait pu apparaître à Thierry, et surtout à leurs autres camarades de classe, ignorants de l'épreuve qu'ils avaient traversée, Éric, l'un des trois «As du Joystick», avait abandonné les jeux vidéo.
Oh, certes, de temps à autre, invité chez Thierry ou chez Khaled, Éric se laissait convaincre d'empoigner une manette de Gamecube ou de Xbox pour une course de voitures ou un pugilat entre superhéros. Mais c'était sans conviction, et Thierry voyait bien que son ami ne faisait rien pour participer au jeu, et se laissait distancer trop facilement, afin de couper court à la compétition. Quant aux jeux de rôle, aux jeux d'aventures qu'avait affectionnés Éric, il n'était plus question même de lui en parler.
<<include "http://www.cartailler.net/index08.html">>
<<include "http://www.cartailler.net/index07.html">>
<<include "http://www.cartailler.net/lecture.html">>
/***
|''Name:''|abego.IncludePlugin|
|''Version:''|1.0.0 (2007-02-08)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IncludePlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IncludePlugin Documentation|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]]|
|''Community:''|([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23IncludePlugin]]) ([[Support|http://groups.google.com/group/TiddlyWiki]])|
|''Copyright:''|© 2007 [[abego Software|http://www.abego-software.de]]|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''~CoreVersion:''|2.1.3|
|''Browser:''|Firefox 1.5.0.9 or better; Internet Explorer 6.0|
***/
/***
This plugin's source code is compressed (and hidden). Use this [[link|http://tiddlywiki.abego-software.de/archive/IncludePlugin/Plugin-Include-src.1.0.0.js]] to get the readable source code.
***/
///%
if(!window.abego){window.abego={};}var invokeLater=function(_1,_2,_3){return abego.invokeLater?abego.invokeLater(_1,_2,_3):setTimeout(_1,_2);};abego.loadFile=function(_4,_5,_6){var _7=function(_8,_9,_a,_b,_c){return _8?_5(_a,_b,_9):_5(undefined,_b,_9,"Error loading %0".format([_b]));};if(_4.search(/^((http(s)?)|(file)):/)!=0){if(_4.search(/^((.\:\\)|(\\\\)|(\/))/)==0){_4="file://"+_4;}else{var _d=document.location.toString();var i=_d.lastIndexOf("/");_4=_d.substr(0,i+1)+_4;}_4=_4.replace(/\\/mg,"/");}loadRemoteFile(_4,_7,_6);};abego.loadTiddlyWikiStore=function(_f,_10,_11,_12){var _13=function(_14,_15){if(_12){_12(_14,"abego.loadTiddlyWikiStore",_15,_f,_11);}};var _16=function(_17,_18){var _19=_18.indexOf(startSaveArea);var _1a=_18.indexOf("<!--POST-BODY-END--"+">");var _1b=_18.lastIndexOf(endSaveArea,_1a==-1?_18.length:_1a);if((_19==-1)||(_1b==-1)){return config.messages.invalidFileError.format([_f]);}var _1c="<html><body>"+_18.substring(_19,_1b+endSaveArea.length)+"</body></html>";var _1d=document.createElement("iframe");_1d.style.display="none";document.body.appendChild(_1d);var doc=_1d.document;if(_1d.contentDocument){doc=_1d.contentDocument;}else{if(_1d.contentWindow){doc=_1d.contentWindow.document;}}doc.open();doc.writeln(_1c);doc.close();var _1f=doc.getElementById("storeArea");_17.loadFromDiv(_1f,"store");_1d.parentNode.removeChild(_1d);return null;};var _20=function(_21){_13("Error when loading %0".format([_f]),"Failed");_10(undefined,_f,_11,_21);return _21;};var _22=function(_23){_13("Loaded %0".format([_f]),"Done");_10(_23,_f,_11);return null;};var _24=function(_25,_26,_27,_28){if(_25===undefined){_20(_28);return;}_13("Processing %0".format([_f]),"Processing");var _29=config.messages.invalidFileError;config.messages.invalidFileError="The file '%0' does not appear to be a valid TiddlyWiki file";try{var _2a=new TiddlyWiki();var _2b=_16(_2a,_25);if(_2b){_20(_2b);}else{_22(_2a);}}catch(ex){_20(exceptionText(ex));}finally{config.messages.invalidFileError=_29;}};_13("Start loading %0".format([_f]),"Started");abego.loadFile(_f,_24,_11);};(function(){if(abego.TiddlyWikiIncluder){return;}var _2c="waiting";var _2d="loading";var _2e=1000;var _2f=-200;var _30=-100;var _31=-300;var _32;var _33=[];var _34={};var _35=[];var _36;var _37=[];var _38;var _39=function(){if(_32===undefined){_32=config.options.chkUseInclude===undefined||config.options.chkUseInclude;}return _32;};var _3a=function(url){return "No include specified for %0".format([url]);};var _3c=function(){var _3d=_35;_35=[];if(_3d.length){for(var i=0;i<_37.length;i++){_37[i](_3d);}}};var _3f;var _40=function(){if(_36!==undefined){clearInterval(_36);}_3f=0;var _41=function(){abego.TiddlyWikiIncluder.sendProgress("","","Done");};_36=setInterval(function(){_3f++;if(_3f<=10){return;}clearInterval(_36);_36=undefined;abego.TiddlyWikiIncluder.sendProgress("Refreshing...","","");refreshDisplay();invokeLater(_41,0,_2f);},0);};var _42=function(_43){var _44;for(var i=0;i<_33.length;i++){var _46=abego.TiddlyWikiIncluder.getStore(_33[i]);if(_46&&(_44=_43(_46,_33[i]))){return _44;}}};var _47=function(){if(!window.store){return invokeLater(_47,100);}var _48=store.fetchTiddler;store.fetchTiddler=function(_49){var t=_48.apply(this,arguments);if(t){return t;}if(config.shadowTiddlers[_49]!==undefined){return undefined;}if(_49==config.macros.newTiddler.title){return undefined;}return _42(function(_4b,url){var t=_4b.fetchTiddler(_49);if(t){t.includeURL=url;}return t;});};if(_33.length){_40();}};var _4e=function(){if(!window.store){return invokeLater(_4e,100);}var _4f=store.getTiddlerText("IncludeList");if(_4f){wikify(_4f,document.createElement("div"));}};var _50=function(_51){var _52=function(){var _53=store.forEachTiddler;var _54=function(_55){var _56={};var _57;var _58=function(_59,_5a){if(_56[_59]){return;}_56[_59]=1;if(_57){_5a.includeURL=_57;}_55.apply(this,arguments);};_53.call(store,_58);for(var n in config.shadowTiddlers){_56[n]=1;}_56[config.macros.newTiddler.title]=1;_42(function(_5c,url){_57=url;_5c.forEachTiddler(_58);});};store.forEachTiddler=_54;try{return _51.apply(this,arguments);}finally{store.forEachTiddler=_53;}};return _52;};var _5e=function(_5f,_60){return _5f[_60]=_50(_5f[_60]);};abego.TiddlyWikiIncluder={};abego.TiddlyWikiIncluder.setProgressFunction=function(_61){_38=_61;};abego.TiddlyWikiIncluder.getProgressFunction=function(_62){return _38;};abego.TiddlyWikiIncluder.sendProgress=function(_63,_64,_65){if(_38){_38.apply(this,arguments);}};abego.TiddlyWikiIncluder.onError=function(url,_67){displayMessage("Error when including '%0':\n%1".format([url,_67]));};abego.TiddlyWikiIncluder.hasPendingIncludes=function(){for(var i=0;i<_33.length;i++){var _69=abego.TiddlyWikiIncluder.getState(_33[i]);if(_69==_2c||_69==_2d){return true;}}return false;};abego.TiddlyWikiIncluder.getIncludes=function(){return _33.slice();};abego.TiddlyWikiIncluder.getState=function(url){var s=_34[url];if(!s){return _3a(url);}return typeof s=="string"?s:null;};abego.TiddlyWikiIncluder.getStore=function(url){var s=_34[url];if(!s){return _3a(url);}return s instanceof TiddlyWiki?s:null;};abego.TiddlyWikiIncluder.include=function(url,_6f){if(!_39()||_34[url]){return;}var _70=this;_33.push(url);_34[url]=_2c;var _71=function(_72,_73,_74,_75){if(_72===undefined){_34[url]=_75;_70.onError(url,_75);return;}_34[url]=_72;_35.push(url);invokeLater(_3c);};var _76=function(){_34[url]=_2d;abego.loadTiddlyWikiStore(url,_71,null,_38);};if(_6f){invokeLater(_76,_6f);}else{_76();}};abego.TiddlyWikiIncluder.forReallyEachTiddler=function(_77){var _78=function(){store.forEachTiddler(_77);};_50(_78).call(store);};abego.TiddlyWikiIncluder.getFunctionUsingForReallyEachTiddler=_50;abego.TiddlyWikiIncluder.useForReallyEachTiddler=_5e;abego.TiddlyWikiIncluder.addListener=function(_79){_37.push(_79);};abego.TiddlyWikiIncluder.addListener(_40);if(config.options.chkUseInclude===undefined){config.options.chkUseInclude=true;}config.shadowTiddlers.AdvancedOptions+="\n<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])\n^^(Reload this ~TiddlyWiki to make changes become effective)^^";config.shadowTiddlers.IncludeState="<<includeState>>";var _7a=function(e,_7c,_7d){if(!anim||!abego.ShowAnimation){e.style.display=_7c?"block":"none";return;}anim.startAnimating(new abego.ShowAnimation(e,_7c,_7d));};abego.TiddlyWikiIncluder.getDefaultProgressFunction=function(){setStylesheet(".includeProgressState{\n"+"background-color:#FFCC00;\n"+"position:absolute;\n"+"right:0.2em;\n"+"top:0.2em;\n"+"width:7em;\n"+"padding-left:0.2em;\n"+"padding-right:0.2em\n"+"}\n","abegoInclude");var _7e=function(){var e=document.createElement("div");e.className="includeProgressState";e.style.display="none";document.body.appendChild(e);return e;};var _80=_7e();var _81=function(_82){removeChildren(_80);createTiddlyText(_80,_82);_7a(_80,true,0);};var _83=function(){invokeLater(function(){_7a(_80,false,_2e);},100,_30);};var _84=function(_85,_86,_87,url,_89){if(_87=="Done"||_87=="Failed"){_83();return;}if(_86=="abego.loadTiddlyWikiStore"){_3f=0;if(_87=="Processing"){_81("Including...");}}else{_81(_85);}};return _84;};abego.TiddlyWikiIncluder.setProgressFunction(abego.TiddlyWikiIncluder.getDefaultProgressFunction());config.macros.include={};config.macros.include.handler=function(_8a,_8b,_8c,_8d,_8e,_8f){_8c=_8e.parseParams("url",null,true,false,true);var _90=parseInt(getParam(_8c,"delay","0"));var _91=_8c[0]["url"];var _92=getFlag(_8c,"hide",false);if(!_92){createTiddlyText(createTiddlyElement(_8a,"code"),_8d.source.substring(_8d.matchStart,_8d.nextMatch));}for(var i=0;_91&&i<_91.length;i++){abego.TiddlyWikiIncluder.include(_91[i],_90);}};config.macros.includeState={};config.macros.includeState.handler=function(_94,_95,_96,_97,_98,_99){var _9a=function(){var s="";var _9c=abego.TiddlyWikiIncluder.getIncludes();if(!_9c.length){return "{{noIncludes{\nNo includes or 'include' is disabled (see AdvancedOptions)\n}}}\n";}s+="|!Address|!State|\n";for(var i=0;i<_9c.length;i++){var inc=_9c[i];s+="|{{{"+inc+"}}}|";var t=abego.TiddlyWikiIncluder.getState(inc);s+=t?"{{{"+t+"}}}":"included";s+="|\n";}s+="|includeState|k\n";return s;};var _a0=function(){removeChildren(div);wikify(_9a(),div);if(abego.TiddlyWikiIncluder.hasPendingIncludes()){invokeLater(_a0,500,_31);}};var div=createTiddlyElement(_94,"div");invokeLater(_a0,0,_31);};var _a2=Tiddler.prototype.isReadOnly;Tiddler.prototype.isReadOnly=function(){return _a2.apply(this,arguments)||this.isIncluded();};Tiddler.prototype.isIncluded=function(){return this.includeURL!=undefined;};Tiddler.prototype.getIncludeURL=function(){return this.includeURL;};var _a3={getMissingLinks:1,getOrphans:1,getTags:1,reverseLookup:1,updateTiddlers:1};for(var n in _a3){_5e(TiddlyWiki.prototype,n);}var _a5=function(){if(abego.IntelliTagger){_5e(abego.IntelliTagger,"assistTagging");}};_47();invokeLater(_4e,100);invokeLater(_a5,100);})();
//%/
!About the ~IncludePlugin
Include other ~TiddlyWikis in your (main) TiddlyWiki, link to included tiddlers, view them in your (main) TiddlyWiki, without opening another TiddlyWiki. Even „search“ looks for included tiddlers.
A great way to share tiddlers, to speed up "save changes" and to keep your ~TiddlyWikis small.
!Smaller ~TiddlyWikis
Other than „imported“ tiddlers, included tiddlers are not copied into your main ~TiddlyWiki. This keeps your individual ~TiddlyWikis small.
Since your TiddlyWikis will become smaller (if you reorganize your TiddlyWikis using the IncludePlugin) also "save changes" become faster. You may even consider switching on "AutoSave" or "SaveBackups" again.
!Sharing ~TiddlyWikis
You may include one ~TiddlyWiki in several other ~TiddlyWikis. Changes you make to this shared ~TiddlyWiki are automatically reflected the next time you open the other ~TiddlyWikis, without any extra „import“ step or so.
''Examples''
* you may want to have a single „~TiddlyWikiHelp“ ~TiddlyWiki that you include in all your ~TiddlyWikis. So you can quickly find help information without looking into other files, and without blowing up your ~TiddlyWikis.
* You "archive" your old journal tiddlers into an extra TiddlyWiki (e.g. one per month) and just include the archived journals in you "current month diary/blog". This way you still have access to the old information (e.g. to reference historic information) but you avoid your diary/blog will get to large.
* ...
See also:
* [[How to use the IncludePlugin]]
* [[How Tiddlers are found]]
* [[IncludePlugin Options]]
* [[The "include" Macro]]
* [[The "includeState" Macro]]
* [[Troubleshooting the IncludePlugin]]
Using the AdvancedOptions page you have an easy way to configure the IncludePlugin options.
You will find a section like this:
{{optionsBlock{
<<option chkUseInclude>> Include ~TiddlyWikis (IncludeList | IncludeState | [[help|http://tiddlywiki.abego-software.de/#%5B%5BIncludePlugin%20Documentation%5D%5D]])
^^(Reload this ~TiddlyWiki to make changes become effective)^^
}}}
* By default the IncludePlugin is enabled. If you uncheck the checkbox external TiddlyWikis are not included.
* The IncludeList is the preferred place for your {{{<<include ...>>}}} lines.
* The IncludeState page gives you can an overview what TiddlyWikis are included etc.
* The help directs you to the online documentation of the Include Plugin.
/***
|Name|InlineJavascriptPlugin|
|Source|http://www.TiddlyTools.com/#InlineJavascriptPlugin|
|Version|1.6.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|plugin|
|Requires||
|Overrides||
|Description|Insert Javascript executable code directly into your tiddler content.|
''Call directly into TW core utility routines, define new functions, calculate values, add dynamically-generated TiddlyWiki-formatted output'' into tiddler content, or perform any other programmatic actions each time the tiddler is rendered.
!!!!!Usage
<<<
When installed, this plugin adds new wiki syntax for surrounding tiddler content with {{{<script>}}} and {{{</script>}}} markers, so that it can be treated as embedded javascript and executed each time the tiddler is rendered.
''Deferred execution from an 'onClick' link''
By including a {{{label="..."}}} parameter in the initial {{{<script>}}} marker, the plugin will create a link to an 'onclick' script that will only be executed when that specific link is clicked, rather than running the script each time the tiddler is rendered. You may also include a {{{title="..."}}} parameter to specify the 'tooltip' text that will appear whenever the mouse is moved over the onClick link text
''External script source files:''
You can also load javascript from an external source URL, by including a src="..." parameter in the initial {{{<script>}}} marker (e.g., {{{<script src="demo.js"></script>}}}). This is particularly useful when incorporating third-party javascript libraries for use in custom extensions and plugins. The 'foreign' javascript code remains isolated in a separate file that can be easily replaced whenever an updated library file becomes available.
''Display script source in tiddler output''
By including the keyword parameter "show", in the initial {{{<script>}}} marker, the plugin will include the script source code in the output that it displays in the tiddler.
''Defining javascript functions and libraries:''
Although the external javascript file is loaded while the tiddler content is being rendered, any functions it defines will not be available for use until //after// the rendering has been completed. Thus, you cannot load a library and //immediately// use it's functions within the same tiddler. However, once that tiddler has been loaded, the library functions can be freely used in any tiddler (even the one in which it was initially loaded).
To ensure that your javascript functions are always available when needed, you should load the libraries from a tiddler that will be rendered as soon as your TiddlyWiki document is opened. For example, you could put your {{{<script src="..."></script>}}} syntax into a tiddler called LoadScripts, and then add {{{<<tiddler LoadScripts>>}}} in your MainMenu tiddler.
Since the MainMenu is always rendered immediately upon opening your document, the library will always be loaded before any other tiddlers that rely upon the functions it defines. Loading an external javascript library does not produce any direct output in the tiddler, so these definitions should have no impact on the appearance of your MainMenu.
''Creating dynamic tiddler content''
An important difference between this implementation of embedded scripting and conventional embedded javascript techniques for web pages is the method used to produce output that is dynamically inserted into the document:
* In a typical web document, you use the document.write() function to output text sequences (often containing HTML tags) that are then rendered when the entire document is first loaded into the browser window.
* However, in a ~TiddlyWiki document, tiddlers (and other DOM elements) are created, deleted, and rendered "on-the-fly", so writing directly to the global 'document' object does not produce the results you want (i.e., replacing the embedded script within the tiddler content), and completely replaces the entire ~TiddlyWiki document in your browser window.
* To allow these scripts to work unmodified, the plugin automatically converts all occurences of document.write() so that the output is inserted into the tiddler content instead of replacing the entire ~TiddlyWiki document.
If your script does not use document.write() to create dynamically embedded content within a tiddler, your javascript can, as an alternative, explicitly return a text value that the plugin can then pass through the wikify() rendering engine to insert into the tiddler display. For example, using {{{return "thistext"}}} will produce the same output as {{{document.write("thistext")}}}.
//Note: your script code is automatically 'wrapped' inside a function, {{{_out()}}}, so that any return value you provide can be correctly handled by the plugin and inserted into the tiddler. To avoid unpredictable results (and possibly fatal execution errors), this function should never be redefined or called from ''within'' your script code.//
''Accessing the ~TiddlyWiki DOM''
The plugin provides one pre-defined variable, 'place', that is passed in to your javascript code so that it can have direct access to the containing DOM element into which the tiddler output is currently being rendered.
Access to this DOM element allows you to create scripts that can:
* vary their actions based upon the specific location in which they are embedded
* access 'tiddler-relative' information (use findContainingTiddler(place))
* perform direct DOM manipulations (when returning wikified text is not enough)
<<<
!!!!!Examples
<<<
an "alert" message box:
><script show>
alert('InlineJavascriptPlugin: this is a demonstration message');
</script>
dynamic output:
><script show>
return (new Date()).toString();
</script>
wikified dynamic output:
><script show>
return "link to current user: [["+config.options.txtUserName+"]]";
</script>
dynamic output using 'place' to get size information for current tiddler:
><script show>
if (!window.story) window.story=window;
var title=story.findContainingTiddler(place).id.substr(7);
return title+" is using "+store.getTiddlerText(title).length+" bytes";
</script>
creating an 'onclick' button/link that runs a script:
><script label="click here" title="clicking this link will show an 'alert' box" show>
if (!window.story) window.story=window;
alert("Hello World!\nlinktext='"+place.firstChild.data+"'\ntiddler='"+story.findContainingTiddler(place).id.substr(7)+"'");
</script>
loading a script from a source url:
>http://www.TiddlyTools.com/demo.js contains:
>>{{{function demo() { alert('this output is from demo(), defined in demo.js') } }}}
>>{{{alert('InlineJavascriptPlugin: demo.js has been loaded'); }}}
><script src="demo.js" show>
return "loading demo.js..."
</script>
><script label="click to execute demo() function" show>
demo()
</script>
<<<
!!!!!Installation
<<<
import (or copy/paste) the following tiddlers into your document:
''InlineJavascriptPlugin'' (tagged with <<tag systemConfig>>)
<<<
!!!!!Revision History
<<<
''2007.02.19 [1.6.0]'' added support for title="..." to specify mouseover tooltip when using an onclick (label="...") script
''2006.10.16 [1.5.2]'' add newline before closing '}' in 'function out_' wrapper. Fixes error caused when last line of script is a comment.
''2006.06.01 [1.5.1]'' when calling wikify() on script return value, pass hightlightRegExp and tiddler params so macros that rely on these values can render properly
''2006.04.19 [1.5.0]'' added 'show' parameter to force display of javascript source code in tiddler output
''2006.01.05 [1.4.0]'' added support 'onclick' scripts. When label="..." param is present, a button/link is created using the indicated label text, and the script is only executed when the button/link is clicked. 'place' value is set to match the clicked button/link element.
''2005.12.13 [1.3.1]'' when catching eval error in IE, e.description contains the error text, instead of e.toString(). Fixed error reporting so IE shows the correct response text. Based on a suggestion by UdoBorkowski
''2005.11.09 [1.3.0]'' for 'inline' scripts (i.e., not scripts loaded with src="..."), automatically replace calls to 'document.write()' with 'place.innerHTML+=' so script output is directed into tiddler content. Based on a suggestion by BradleyMeck
''2005.11.08 [1.2.0]'' handle loading of javascript from an external URL via src="..." syntax
''2005.11.08 [1.1.0]'' pass 'place' param into scripts to provide direct DOM access
''2005.11.08 [1.0.0]'' initial release
<<<
!!!!!Credits
<<<
This feature was developed by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]]
<<<
!!!!!Code
***/
//{{{
version.extensions.inlineJavascript= {major: 1, minor: 6, revision: 0, date: new Date(2007,2,19)};
config.formatters.push( {
name: "inlineJavascript",
match: "\\<script",
lookahead: "\\<script(?: src=\\\"((?:.|\\n)*?)\\\")?(?: label=\\\"((?:.|\\n)*?)\\\")?(?: title=\\\"((?:.|\\n)*?)\\\")?( show)?\\>((?:.|\\n)*?)\\</script\\>",
handler: function(w) {
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart) {
if (lookaheadMatch[1]) { // load a script library
// make script tag, set src, add to body to execute, then remove for cleanup
var script = document.createElement("script"); script.src = lookaheadMatch[1];
document.body.appendChild(script); document.body.removeChild(script);
}
if (lookaheadMatch[5]) { // there is script code
if (lookaheadMatch[4]) // show inline script code in tiddler output
wikify("{{{\n"+lookaheadMatch[0]+"\n}}}\n",w.output);
if (lookaheadMatch[2]) { // create a link to an 'onclick' script
// add a link, define click handler, save code in link (pass 'place'), set link attributes
var link=createTiddlyElement(w.output,"a",null,"tiddlyLinkExisting",lookaheadMatch[2]);
link.onclick=function(){try{return(eval(this.code))}catch(e){alert(e.description?e.description:e.toString())}}
link.code="function _out(place){"+lookaheadMatch[5]+"\n};_out(this);"
link.setAttribute("title",lookaheadMatch[3]?lookaheadMatch[3]:"");
link.setAttribute("href","javascript:;");
link.style.cursor="pointer";
}
else { // run inline script code
var code="function _out(place){"+lookaheadMatch[5]+"\n};_out(w.output);"
code=code.replace(/document.write\(/gi,'place.innerHTML+=(');
try { var out = eval(code); } catch(e) { out = e.description?e.description:e.toString(); }
if (out && out.length) wikify(out,w.output,w.highlightRegExp,w.tiddler);
}
}
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
}
}
} )
//}}}
/***
|''Name:''|~IntelliTaggerPlugin|
|''Version:''|1.0.0 (2006-04-26)|
|''Type:''|plugin|
|''Source:''|http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin|
|''Author:''|Udo Borkowski (ub [at] abego-software [dot] de)|
|''Documentation:''|[[IntelliTaggerPlugin Documentation]]|
|''Source Code:''|[[IntelliTaggerPlugin SourceCode]]|
|''Licence:''|[[BSD open source license (abego Software)]]|
|''~TiddlyWiki:''|Version 2.0.8 or better|
|''Browser:''|Firefox 1.5.0.2 or better|
***/
// /%
if(!version.extensions.IntelliTaggerPlugin){if(!window.abego){window.abego={};}if(!abego.internal){abego.internal={};}abego.alertAndThrow=function(s){alert(s);throw s;};if(version.major<2){abego.alertAndThrow("Use TiddlyWiki 2.0.8 or better to run the IntelliTagger Plugin.");}version.extensions.IntelliTaggerPlugin={major:1,minor:0,revision:0,date:new Date(2006,3,26),type:"plugin",source:"http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin",documentation:"[[IntelliTaggerPlugin Documentation]]",sourcecode:"[[IntelliTaggerPlugin SourceCode]]",author:"Udo Borkowski (ub [at] abego-software [dot] de)",licence:"[[BSD open source license (abego Software)]]",tiddlywiki:"Version 2.0.8 or better",browser:"Firefox 1.5.0.2 or better"};abego.isPopupOpen=function(_2){return _2&&_2.parentNode==document.body;};abego.openAsPopup=function(_3){if(_3.parentNode!=document.body){document.body.appendChild(_3);}};abego.closePopup=function(_4){if(abego.isPopupOpen(_4)){document.body.removeChild(_4);}};abego.getWindowRect=function(){return {left:findScrollX(),top:findScrollY(),height:findWindowHeight(),width:findWindowWidth()};};abego.moveElement=function(_5,_6,_7){_5.style.left=_6+"px";_5.style.top=_7+"px";};abego.centerOnWindow=function(_8){if(_8.style.position!="absolute"){throw "abego.centerOnWindow: element must have absolute position";}var _9=abego.getWindowRect();abego.moveElement(_8,_9.left+(_9.width-_8.offsetWidth)/2,_9.top+(_9.height-_8.offsetHeight)/2);};abego.isDescendantOrSelf=function(_a,e){while(e){if(_a==e){return true;}e=e.parentNode;}return false;};abego.toSet=function(_c){var _d={};for(var i=0;i<_c.length;i++){_d[_c[i]]=true;}return _d;};abego.filterStrings=function(_f,_10,_11){var _12=[];for(var i=0;i<_f.length&&(_11===undefined||_12.length<_11);i++){var s=_f[i];if(s.match(_10)){_12.push(s);}}return _12;};abego.arraysAreEqual=function(a,b){var n=a.length;if(n!=b.length){return false;}for(var i=0;i<n;i++){if(a[i]!=b[i]){return false;}}return true;};abego.moveBelowAndClip=function(_19,_1a){if(!_1a){return;}var _1b=findPosX(_1a);var _1c=findPosY(_1a);var _1d=_1a.offsetHeight;var _1e=_1b;var _1f=_1c+_1d;var _20=findWindowWidth();if(_20<_19.offsetWidth){_19.style.width=(_20-100)+"px";}var _21=_19.offsetWidth;if(_1e+_21>_20){_1e=_20-_21-30;}if(_1e<0){_1e=0;}_19.style.left=_1e+"px";_19.style.top=_1f+"px";_19.style.display="block";};abego.compareStrings=function(a,b){return (a==b)?0:(a<b)?-1:1;};abego.sortIgnoreCase=function(arr){var _25=[];var n=arr.length;for(var i=0;i<n;i++){var s=arr[i];_25.push([s.toString().toLowerCase(),s]);}_25.sort(function(a,b){return (a[0]==b[0])?0:(a[0]<b[0])?-1:1;});for(i=0;i<n;i++){arr[i]=_25[i][1];}};abego.getTiddlerField=function(_2b,_2c,_2d){var _2e=document.getElementById(_2b.idPrefix+_2c);var e=null;if(_2e!=null){var _30=_2e.getElementsByTagName("*");for(var t=0;t<_30.length;t++){var c=_30[t];if(c.tagName.toLowerCase()=="input"||c.tagName.toLowerCase()=="textarea"){if(!e){e=c;}if(c.getAttribute("edit")==_2d){e=c;}}}}return e;};abego.setRange=function(_33,_34,end){if(_33.setSelectionRange){_33.setSelectionRange(_34,end);var max=0+_33.scrollHeight;var len=_33.textLength;var top=max*_34/len,bot=max*end/len;_33.scrollTop=Math.min(top,(bot+top-_33.clientHeight)/2);}else{if(_33.createTextRange!=undefined){var _39=_33.createTextRange();_39.collapse();_39.moveEnd("character",end);_39.moveStart("character",_34);_39.select();}else{_33.select();}}};abego.internal.TagManager=function(){var _3a=null;var _3b=function(){if(_3a){return;}_3a={};store.forEachTiddler(function(_3c,_3d){for(var i=0;i<_3d.tags.length;i++){var tag=_3d.tags[i];var _40=_3a[tag];if(!_40){_40=_3a[tag]={count:0,tiddlers:{}};}_40.tiddlers[_3d.title]=true;_40.count+=1;}});};var _41=TiddlyWiki.prototype.saveTiddler;TiddlyWiki.prototype.saveTiddler=function(_42,_43,_44,_45,_46,_47){var _48=this.fetchTiddler(_42);var _49=_48?_48.tags:[];var _4a=(typeof _47=="string")?_47.readBracketedList():_47;_41.apply(this,arguments);if(!abego.arraysAreEqual(_49,_4a)){abego.internal.getTagManager().reset();}};var _4b=TiddlyWiki.prototype.removeTiddler;TiddlyWiki.prototype.removeTiddler=function(_4c){var _4d=this.fetchTiddler(_4c);var _4e=_4d&&_4d.tags.length>0;_4b.apply(this,arguments);if(_4e){abego.internal.getTagManager().reset();}};this.reset=function(){_3a=null;};this.getTiddlersWithTag=function(tag){_3b();var _50=_3a[tag];return _50?_50.tiddlers:null;};this.getAllTags=function(_51){_3b();var _52=[];for(var i in _3a){_52.push(i);}for(i=0;_51&&i<_51.length;i++){_52.pushUnique(_51[i],true);}abego.sortIgnoreCase(_52);return _52;};this.getTagInfos=function(){_3b();var _54=[];for(var _55 in _3a){_54.push([_55,_3a[_55]]);}return _54;};var _56=function(a,b){var a1=a[1];var b1=b[1];var d=b[1].count-a[1].count;return d!=0?d:abego.compareStrings(a[0].toLowerCase(),b[0].toLowerCase());};this.getSortedTagInfos=function(){_3b();var _5c=this.getTagInfos();_5c.sort(_56);return _5c;};this.getPartnerRankedTags=function(_5d){var _5e={};for(var i=0;i<_5d.length;i++){var _60=this.getTiddlersWithTag(_5d[i]);for(var _61 in _60){var _62=store.getTiddler(_61);if(!(_62 instanceof Tiddler)){continue;}for(var j=0;j<_62.tags.length;j++){var tag=_62.tags[j];var c=_5e[tag];_5e[tag]=c?c+1:1;}}}var _66=abego.toSet(_5d);var _67=[];for(var n in _5e){if(!_66[n]){_67.push(n);}}_67.sort(function(a,b){var d=_5e[b]-_5e[a];return d!=0?d:abego.compareStrings(a.toLowerCase(),b.toLowerCase());});return _67;};};abego.internal.getTagManager=function(){if(!abego.internal.gTagManager){abego.internal.gTagManager=new abego.internal.TagManager();}return abego.internal.gTagManager;};(function(){var _6c=2;var _6d=1;var _6e=30;var _6f;var _70;var _71;var _72;var _73;var _74;if(!abego.IntelliTagger){abego.IntelliTagger={};}var _75=function(){return _70;};var _76=function(tag){return _73[tag];};var _78=function(s){var i=s.lastIndexOf(" ");return (i>=0)?s.substr(0,i):"";};var _7b=function(_7c){var s=_7c.value;var len=s.length;return (len>0&&s[len-1]!=" ");};var _7f=function(_80){var s=_80.value;var len=s.length;if(len>0&&s[len-1]!=" "){_80.value+=" ";}};var _83=function(tag,_85,_86){if(_7b(_85)){_85.value=_78(_85.value);}story.setTiddlerTag(_86.title,tag,0);_7f(_85);abego.IntelliTagger.assistTagging(_85,_86);};var _87=function(n){if(_74){if(_74.length>n){return _74[n];}n-=_74.length;}return (_72&&_72.length>n)?_72[n]:null;};var _89=function(n,_8b,_8c){var _8d=_87(n);if(_8d){_83(_8d,_8b,_8c);}};var _8e=function(_8f){var pos=_8f.value.lastIndexOf(" ");var _91=(pos>=0)?_8f.value.substr(++pos,_8f.value.length):_8f.value;return new RegExp(_91.escapeRegExp(),"i");};var _92=function(_93,_94){var _95=0;for(var i=0;i<_93.length;i++){if(_94[_93[i]]){_95++;}}return _95;};var _97=function(_98,_99,_9a){var _9b=1;var c=_98[_99];for(var i=_99+1;i<_98.length;i++){if(_98[i][1].count==c){if(_98[i][0].match(_9a)){_9b++;}}else{break;}}return _9b;};var _9e=function(_9f,_a0){var _a1=abego.internal.getTagManager().getSortedTagInfos();var _a2=[];var _a3=0;for(var i=0;i<_a1.length;i++){var c=_a1[i][1].count;if(c!=_a3){if(_a0&&(_a2.length+_97(_a1,i,_9f)>_a0)){break;}_a3=c;}if(c==1){break;}var s=_a1[i][0];if(s.match(_9f)){_a2.push(s);}}return _a2;};var _a7=function(_a8,_a9){return abego.filterStrings(abego.internal.getTagManager().getAllTags(_a9),_a8);};var _aa=function(){if(!_6f){return;}var _ab=store.getTiddlerText("IntelliTaggerMainTemplate");if(!_ab){_ab="<b>Tiddler IntelliTaggerMainTemplate not found</b>";}_6f.innerHTML=_ab;applyHtmlMacros(_6f,null);refreshElements(_6f,null);};var _ac=function(e){if(!e){var e=window.event;}var tag=this.getAttribute("tag");if(_71){_71.call(this,tag,e);}return false;};var _af=function(_b0,_b1,_b2,_b3){if(!_b1){return;}var _b4=_b3?abego.toSet(_b3):{};var n=_b1.length;for(var i=0;i<n;i++){var tag=_b1[i];if(_b4[tag]){continue;}if(i>0){createTiddlyElement(_b0,"span",null,"tagSeparator"," | ");}var _b8="";var _b9=_b0;if(_b2<10){_b9=createTiddlyElement(_b0,"span",null,"numberedSuggestion");_b2++;var key=_b2<10?""+(_b2):"0";createTiddlyElement(_b9,"span",null,"suggestionNumber",key+") ");var _bb=_b2==1?"Ctrl-Space or ":"";_b8=" (Shortcut: %1Alt-%0)".format([key,_bb]);}var _bc=config.views.wikified.tag.tooltip.format([tag]);var _bd=(_76(tag)?"Remove tag '%0'%1":"Add tag '%0'%1").format([tag,_b8]);var _be="%0; Shift-Click: %1".format([_bd,_bc]);var btn=createTiddlyButton(_b9,tag,_be,_ac,_76(tag)?"currentTag":null);btn.setAttribute("tag",tag);}};var _c0=function(){if(_6f){window.scrollTo(0,ensureVisible(_6f));}if(_75()){window.scrollTo(0,ensureVisible(_75()));}};var _c1=function(e){if(!e){var e=window.event;}if(!_6f){return;}var _c3=resolveTarget(e);if(_c3==_75()){return;}if(abego.isDescendantOrSelf(_6f,_c3)){return;}abego.IntelliTagger.close();};addEvent(document,"click",_c1);var _c4=Story.prototype.gatherSaveFields;Story.prototype.gatherSaveFields=function(e,_c6){_c4.apply(this,arguments);var _c7=_c6.tags;if(_c7){_c6.tags=_c7.trim();}};var _c8=function(_c9){story.focusTiddler(_c9,"tags");var _ca=abego.getTiddlerField(story,_c9,"tags");if(_ca){var len=_ca.value.length;abego.setRange(_ca,len,len);window.scrollTo(0,ensureVisible(_ca));}};var _cc=config.macros.edit.handler;config.macros.edit.handler=function(_cd,_ce,_cf,_d0,_d1,_d2){_cc.apply(this,arguments);var _d3=_cf[0];if((_d2 instanceof Tiddler)&&_d3=="tags"){var _d4=_cd.lastChild;_d4.onfocus=function(e){abego.IntelliTagger.assistTagging(_d4,_d2);setTimeout(function(){_c8(_d2.title);},100);};_d4.onkeyup=function(e){if(!e){var e=window.event;}if(e.altKey&&!e.ctrlKey&&!e.metaKey&&(e.keyCode>=48&&e.keyCode<=57)){_89(e.keyCode==48?9:e.keyCode-49,_d4,_d2);}else{if(e.ctrlKey&&e.keyCode==32){_89(0,_d4,_d2);}}setTimeout(function(){abego.IntelliTagger.assistTagging(_d4,_d2);},100);return false;};_7f(_d4);}};var _d7=function(e){if(!e){var e=window.event;}var _d9=resolveTarget(e);var _da=_d9.getAttribute("tiddler");if(_da){story.displayTiddler(_d9,_da,"IntelliTaggerEditTagsTemplate",false);_c8(_da);}return false;};var _db=config.macros.tags.handler;config.macros.tags.handler=function(_dc,_dd,_de,_df,_e0,_e1){_db.apply(this,arguments);abego.IntelliTagger.createEditTagsButton(_e1,createTiddlyElement(_dc.lastChild,"li"));};var _e2=function(){if(_6f&&_70&&!abego.isDescendantOrSelf(document,_70)){abego.IntelliTagger.close();}};setInterval(_e2,100);abego.IntelliTagger.displayTagSuggestions=function(_e3,_e4,_e5,_e6,_e7){_72=_e3;_73=abego.toSet(_e4);_74=_e5;_70=_e6;_71=_e7;if(!_6f){_6f=createTiddlyElement(document.body,"div",null,"intelliTaggerSuggestions");_6f.style.position="absolute";}_aa();abego.openAsPopup(_6f);if(_75()){var w=_75().offsetWidth;if(_6f.offsetWidth<w){_6f.style.width=(w-2*(_6c+_6d))+"px";}abego.moveBelowAndClip(_6f,_75());}else{abego.centerOnWindow(_6f);}_c0();};abego.IntelliTagger.assistTagging=function(_e9,_ea){var _eb=_8e(_e9);var s=_e9.value;if(_7b(_e9)){s=_78(s);}var _ed=s.readBracketedList();var _ee=_ed.length>0?abego.filterStrings(abego.internal.getTagManager().getPartnerRankedTags(_ed),_eb,_6e):_9e(_eb,_6e);abego.IntelliTagger.displayTagSuggestions(_a7(_eb,_ed),_ed,_ee,_e9,function(tag,e){if(e.shiftKey){onClickTag.call(this,e);}else{_83(tag,_e9,_ea);}});};abego.IntelliTagger.close=function(){abego.closePopup(_6f);_6f=null;return false;};abego.IntelliTagger.createEditTagsButton=function(_f1,_f2,_f3,_f4,_f5,id,_f7){if(!_f3){_f3="[edit]";}if(!_f4){_f4="Edit the tags";}if(!_f5){_f5="editTags";}var _f8=createTiddlyButton(_f2,_f3,_f4,_d7,_f5,id,_f7);_f8.setAttribute("tiddler",(_f1 instanceof Tiddler)?_f1.title:String(_f1));return _f8;};config.macros.intelliTagger={label:"intelliTagger",handler:function(_f9,_fa,_fb,_fc,_fd,_fe){var _ff=_fd.parseParams("list",null,true);var _100=_ff[0]["action"];for(var i=0;_100&&i<_100.length;i++){var _102=_100[i];var _103=config.macros.intelliTagger.subhandlers[_102];if(!_103){abego.alertAndThrow("Unsupported action '%0'".format([_102]));}_103(_f9,_fa,_fb,_fc,_fd,_fe);}},subhandlers:{showTags:function(_104,_105,_106,_107,_108,_109){_af(_104,_72,_74?_74.length:0,_74);},showFavorites:function(_10a,_10b,_10c,_10d,_10e,_10f){_af(_10a,_74,0);},closeButton:function(_110,_111,_112,_113,_114,_115){var _116=createTiddlyButton(_110,"close","Close the suggestions",abego.IntelliTagger.close);},version:function(_117){var t="IntelliTagger %0.%1.%2".format([version.extensions.IntelliTaggerPlugin.major,version.extensions.IntelliTaggerPlugin.minor,version.extensions.IntelliTaggerPlugin.revision]);var e=createTiddlyElement(_117,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de/#IntelliTaggerPlugin");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">"+t+"<font>";},copyright:function(_11a){var e=createTiddlyElement(_11a,"a");e.setAttribute("href","http://tiddlywiki.abego-software.de");e.innerHTML="<font color=\"black\" face=\"Arial, Helvetica, sans-serif\">© 2006 <b><font color=\"red\">abego</font></b> Software<font>";}}};})();config.shadowTiddlers["IntelliTaggerStyleSheet"]="/***\n"+"!~IntelliTagger Stylesheet\n"+"***/\n"+"/*{{{*/\n"+".intelliTaggerSuggestions {\n"+"\tposition: absolute;\n"+"\twidth: 600px;\n"+"\n"+"\tpadding: 2px;\n"+"\tlist-style: none;\n"+"\tmargin: 0;\n"+"\n"+"\tbackground: #eeeeee;\n"+"\tborder: 1px solid DarkGray;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .currentTag {\n"+"\tfont-weight: bold;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .suggestionNumber {\n"+"\tcolor: #808080;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .numberedSuggestion{\n"+"\twhite-space: nowrap;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter {\n"+"\tmargin-top: 4px;\n"+"\tborder-top-width: thin;\n"+"\tborder-top-style: solid;\n"+"\tborder-top-color: #999999;\n"+"}\n"+".intelliTaggerSuggestions .favorites {\n"+"\tborder-bottom-width: thin;\n"+"\tborder-bottom-style: solid;\n"+"\tborder-bottom-color: #999999;\n"+"\tpadding-bottom: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .normalTags {\n"+"\tpadding-top: 2px;\n"+"}\n"+"\n"+".intelliTaggerSuggestions .intelliTaggerFooter .button {\n"+"\tfont-size: 10px;\n"+"\n"+"\tpadding-left: 0.3em;\n"+"\tpadding-right: 0.3em;\n"+"}\n"+"\n"+"/*}}}*/\n";config.shadowTiddlers["IntelliTaggerMainTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class=\"favorites\" macro=\"intelliTagger action: showFavorites\"></div>\n"+"<div class=\"normalTags\" macro=\"intelliTagger action: showTags\"></div>\n"+"<!-- The Footer (with the Navigation) ============================================ -->\n"+"<table class=\"intelliTaggerFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n"+" <tr>\n"+"\t<td align=\"left\">\n"+"\t\t<span macro=\"intelliTagger action: closeButton\"></span>\n"+"\t</td>\n"+"\t<td align=\"right\">\n"+"\t\t<span macro=\"intelliTagger action: version\"></span>, <span macro=\"intelliTagger action: copyright \"></span>\n"+"\t</td>\n"+" </tr>\n"+"</tbody></table>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["IntelliTaggerEditTagsTemplate"]="<!--\n"+"{{{\n"+"-->\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='title' macro='view title'></div>\n"+"<div class='tagged' macro='tags'></div>\n"+"<div class='viewer' macro='view text wikified'></div>\n"+"<div class='toolbar' macro='toolbar +saveTiddler -cancelTiddler'></div>\n"+"<div class='editor' macro='edit tags'></div><div class='editorFooter'><span macro='message views.editor.tagPrompt'></span><span macro='tagChooser'></span></div>\n"+"<!--\n"+"}}}\n"+"-->\n";config.shadowTiddlers["BSD open source license (abego Software)"]="See [[Licence|http://tiddlywiki.abego-software.de/#%5B%5BBSD%20open%20source%20license%5D%5D]].";config.shadowTiddlers["IntelliTaggerPlugin Documentation"]="[[Documentation on abego Software website|http://tiddlywiki.abego-software.de/doc/IntelliTagger.pdf]].";config.shadowTiddlers["IntelliTaggerPlugin SourceCode"]="[[Plugin source code on abego Software website|http://tiddlywiki.abego-software.de/src/Plugin-IntelliTagger-src.js]]";setStylesheet(store.getTiddlerText("IntelliTaggerStyleSheet"),"intelliTagger");}
//%/
!Similitudes des langues romanes
!! En latin
Gallia est omnis divisa in partes tres, quarum unam incolunt Belgae, aliam Aquitani, tertiam qui ipsorum lingua Celtae, nostra Galli appellantur. Hi omnes lingua, institutis, legibus inter se differunt. Gallos ab Aquitanis Garumna flumen, a Belgis Matrona et Sequana dividit. Horum omnium fortissimi sunt Belgae, propterea quod a cultu atque humanitate provinciae longissime absunt, minimeque ad eos mercatores saepe commeant atque ea quae ad effeminandos animos pertinent important, proximique sunt Germanis, qui trans Rhenum incolunt, quibuscum continenter bellum gerunt. Qua de causa Helvetii quoque reliquos Gallos virtute praecedunt, quod fere cotidianis proeliis cum Germanis contendunt, cum aut suis finibus eos prohibent aut ipsi in eorum finibus bellum gerunt. Eorum una pars, quam Gallos obtinere dictum est, initium capit a flumine Rhodano, continetur Garumna flumine, Oceano, finibus Belgarum, attingit etiam ab Sequanis et Helvetiis flumen Rhenum, vergit ad septentriones. Belgae ab extremis Galliae finibus oriuntur, pertinent ad inferiorem partem fluminis Rheni, spectant in septentrionem et orientem solem. Aquitania a Garumna flumine ad Pyrenaeos montes et eam partem Oceani quae est ad Hispaniam pertinet; spectat inter occasum solis et septentriones
!!En italien
La Gallia nel suo complesso è divisa in tre parti: una è abitata dai Belgi, una dagli Aquitani, la terza da quelli che nella loro lingua si chiamano Celti, nella nostra Galli. Tutte queste popolazioni differiscono tra loro nella lingua, nelle istituzioni e nelle leggi. Divide i Galli dagli Aquitani il fiume Garonnna, dai Belgi la Marna e la Senna. Di tutti questi i più valorosi sono i Belgi, perché sono i più lontani dalla raffinatezza e dalla civiltà della provincia, e molto raramente i mercanti si recano da loro a portarvi quei prodotti che servono ad effeminari gli animi, e sono i più vicini ai Germani che abitano oltre Reno, con i quali sono ininterrottamente in guerra. Questa è la ragione per cui anche gli Elvezi superano nel valore gli altri Galli, perché quasi ogni giorno combattono contro i Germani, o tenendoli fuori dal proprio paese o portando essi la guerra nel loro paese. Quella parte che, come ho detto, è abitata dai Galli, inizia dal fiume Rodano; è delimitata dal fiume Garonna, dall'Oceano, dal paese dei Belgi; dalla parte dei Sequani e degli Elvezi tocca anche il fiume Reno; si stende verso settentrione. Il paese dei Belgi comincia dalla parte estrema della Gallia; tocca il corso inferiore del fiume Reno, si stende verso settentrione e oriente. L'Aquitania dal fiume Garonna si stende fino a toccare i monti Pirenei e quella parte dell'Oceano che volge verso la Spagna; si stende tra occidente e settentrione.
!!En Gaule
I.La Galia está dividida en tres partes: una que habitan los belgas, otra los aquitanos, la tercera los que en su lengua se llaman celtas y en la nuestra galos. Todos estos se diferencian entre sí en lenguaje, costumbres y leyes. A los galos separa de los aquitanos el río Carona, de los belgas el Marne y Sena. Los más valientes de todos son los belgas, porque viven muy remotos del fausto y delicadeza de nuestra provincia; y rarísima vez llegan allá los mercaderes con cosas a propósito para enflaquecer los bríos; y por estar vecinos a los germanos, que moran a la otra parte del Rin, con quienes traen continua guerra. Ésta es también la causa porque los helvecios se aventajan en valor a los otros galos, pues casi todos los días vienen a las manos con los germanos, ya cubriendo sus propias fronteras, ya invadiendo las ajenas. La parte que hemos dicho ocupan los galos comienza del río Ródano, confina con el Carona, el Océano y el país de los belgas; por el de los secuanos y helvecios toca en el Rin, inclinándose al Norte. Los belgas toman su principio de los últimos límites de la Galia, dilatándose hasta el Bajo Rin, mirando al Septentrión y al Oriente. La Aquitania entre Poniente y Norte por el río Carona se extiende hasta los montes Pirineos, y aquella parte del Océano que baña a España.
!! En Portuguais
A Gália está toda dividida em três partes, das quais uma é habitada pelos belgas, a outra pelos aquitanios, a terceira pelos que em sua língua deles se chamam celtas, na nossa gauleses. Diferem todos esses povos, uns dos outros, na língua, nos costumes, e nas leis. Extrema os gauleses dos aquitanios o rio Garona; dos belgas, o Mátrona e o Séquana. De todos eles são os belgas os mais fortes, por isso mesmo que estão mais longe da cultura e polícia da província romana, e não vão lá a miúde mercadores, nem lhes levam coisa que lhes enerve o vigor; e vizinham com os germanos, que habitam além do Rim, e com quem andam continuamente em guerra. Por esta mesma causa excedem também os helvecios em valor aos mais gauleses; pois contendem com os germanos em refregas quase quotidianas, quando ou os repelem de suas fronteiras, ou nas próprias fronteiras desses fazem a guerra, A parte ocupada pelos gauleses tem princípio no rio Rodano; limite, no Garona, no Oceano, e nas fronteiras dos belgas; toca também no Rim pelo lado dos sequanos e dos helvecios; e inclina ao setentrião. Os belgas começam nas extremas fronteiras da Gália; estendem-se até a parte inferior do Rim; e olham para o setentrião e o sol nascente. A Aquitania extende-se do rio Garona aos montes Pirineus e à parte do Oceano que beija a Espanha e olha por entre o ocaso do sol e o setentrião.
C’était fini. Splendide, étincelant, superbe,
Luisant sur la cité comme la faulx sur l’herbe,
Large acier dont le jour faisait une clarté,
Ayant je ne sais quoi dans sa tranquillité
De l’éblouissement du triangle mystique,
Pareil à la lueur au fond d’un temple antique,
Le fatal couperet relevé triomphait.
Il n’avait rien gardé de ce qu’il avait fait
Qu’une petite tache imperceptible et rouge.
Le bourreau s’en était retourné dans son bouge ;
Et la peine de mort, remmenant ses valets,
Juges, prêtres, était rentrée en son palais,
Avec son tombereau terrible dont la roue,
Silencieuse, laisse un sillon dans la boue,
Qui se remplit de sang sitôt qu’elle a passé.
La foule disait : bien ! car l’homme est insensé,
Et ceux qui suivent tout, et dont c’est la manière,
Suivent même ce char et même cette ornière.
J’étais là. Je pensais. Le couchant empourprait
Le grave hôtel de ville aux luttes toujours prêt,
Entre Hier qu’il médite et Demain dont il rêve.
L’échafaud achevait, resté seul sur la Grève,
La journée, en voyant expirer le soleil.
Le crépuscule vint, aux fantômes pareil.
Et j’étais toujours là, je regardais la hache,
La nuit, la ville immense et la petite tache.
À mesure qu’au fond du firmament obscur
L’obscurité croissait comme un effrayant mur,
L’échafaud, bloc hideux de charpentes funèbres,
S’emplissait de noirceur et devenait ténèbres ;
Les horloges sonnaient, non l’heure, mais le glas ;
Et toujours, sur l’acier, quoique le coutelas
Ne fût plus qu’une forme épouvantable et sombre,
La rougeur de la tache apparaissait dans l’ombre.
Un astre, le premier qu’on aperçoit le soir,
Pendant que je songeais montait dans le ciel noir.
Sa lumière rendait l’échafaud plus difforme.
L’astre se répétait dans le triangle énorme ;
Il y jetait, ainsi qu’en un lac, son reflet,
Lueur mystérieuse et sacrée ; il semblait
Que sur la hache horrible, aux meurtres coutumière,
L’astre laissait tomber sa larme de lumière.
Son rayon, comme un dard qui heurte et rebondit,
Frappait le fer d’un choc lumineux ; on eût dit
Qu’on voyait rejaillir l’étoile de la hache.
Comme un charbon tombant qui d’un feu se détache,
Il se répercutait dans ce miroir d’effroi ;
Sur la justice humaine et sur l’humaine loi,
De l’éternité calme auguste éclaboussure.
Est-ce au ciel que ce fer a fait une blessure ?
Pensai-je. Sur qui donc frappe l’homme hagard ?
Quel est donc ton mystère, ô glaive ? — Et mon regard
Errait, ne voyant plus rien qu’à travers un voile,
De la goutte de sang à la goutte d’étoile.
Victor Hugo — La Légende des siècles - Dernière série
!! Questions
#
## Quel est le thème du poème ?
## Que désigne le "fatal couperet". Nommez la figure de style.
## Quel effet produit: "//C'était fini//"
#
## Relevez comment on passe du jour à la nuit. Relevez les termes qui à chaque moment du jour décrivent ou qualifient l'échafaud et constatez comment il devient monstrueux.
## En quoi peut-on dire que la scène devient //fantastique// ?
#
## Qu'est-ce qui est personnifié ?
## Quel est l'effet produit ?
## Quel rapprochement faire avec la "faucheuse".
#
## Sentiments de la foule ? Où ?
## Quelle distance ?
# Poète présent, physiquement ou moralement ?
# Marques d'énonciation.
# Qui est le locuteur de ce texte ? Quelle thèse défend-il ?
# Indiquez les étapes de ce texte. Donnez leur un titre.
# Le pronom démonstratif "cela" révèle le point de vue de l'Education Nationale par les guillemets. Quelle connotation y voyez-vous ?
# Quel type de phrase domine dans le texte ? Quel est l'effet produit ?
# Relevez dans le premier paragraphe tous les connecteurs logiques et indiquez leurs valeurs. Sur quel lien logique l'auteur insiste-t-il ?
#
## Relevez les connecteurs du Troisième paragraphe et indiquez leurs valeurs
## Quels connecteurs révèlent la prudence du locuteur ?
#
## Dans le dernier paragraphe, quelle solution propose l'auteur ?
## Relevez une proposition subordonnée conjonctive complément circonstanciel de but: par quoi est-elle introduite ? Commen sont opposés les mots à nuance péjorative et méliorative ? Est-ce une argumentation efficace ?
- Qu'est-ce que ce monstre vient faire ici?
Gwynplaine se dressa, éperdu et indigné, dans une sorte de convulsion suprême. Il les regarda tous fixement.
- Ce que je viens faire ici? Je viens être terrible. Je suis un monstre, dites-vous. Non, je suis le peuple. Je suis une exception? Non, je suis tout le monde. L'exception, c'est vous. Vous êtes la chimère, et je suis la réalité. Je suis l'Homme. Je suis l'effrayant Homme qui Rit. Qui rit de quoi? De vous. De lui. De tout. Qu'est-ce que son rire? Votre crime, et son supplice. Ce crime, il vous le jette à la face; ce supplice, il vous le crache au visage. Je ris, cela veut dire: Je pleure.
Il s'arrêta. On se taisait. Les rires continuaient, mais bas. Il put croire à une certaine reprise d'attention. Il respira, et poursuivit:
- Ce rire qui est sur mon front, c'est un roi qui l'y a mis. Ce rire exprime la désolation universelle. Ce rire veut dire haine, silence contraint, rage, désespoir. Ce rire est un produit des tortures. Ce rire est un rire de force. Si Satan avait ce rire, ce rire condamnerait Dieu. Mais l'éternel ne ressemble point aux périssables; étant l'absolu, il est le juste; et Dieu hait ce que font les rois. Ah! vous me prenez pour une exception! Je suis un symbole. O tout-puissants imbéciles que vous êtes, ouvrez les yeux. J'incarne tout. Je représente l'humanité telle que ses maîtres l'ont faite. L'homme est un mutilé. Ce qu'on m'a fait, on l'a fait au genre humain. On lui a déformé le droit, la justice, la vérité, la raison, l'intelligence, comme à moi les yeux, les narines et les oreilles; comme à moi, on lui a mis au coeur un cloaque de colère et de douleur, et sur la face un masque de contentement. Où s'était posé le doigt de Dieu, s'est appuyée la griffe du roi. Monstrueuse superposition.
Évêques, pairs et princes, le peuple, c'est le souffrant profond qui rit la surface. Milords, je vous le dis, le peuple, c'est moi.
//Victor Hugo, L'homme qui rit, Livre huitième (Le capitole et son voisinage), Chapitre VII (Les tempêtes d'hommes pires que les tempêtes d'océans).//
SÉANCE 1 : l'orthographe au théâtre, un handicap social
poitrinas. - Au nom de la science ! vite ! une plume...
de l'encre ! (Il passe à la table.)
caboussat. - Tenez... là !... sur mon bureau. (Il l'installe à son bureau.)
poitrinas. - Ah ! vous vous servez de plumes d'oie !
caboussat. - Toujours ! (Avec importance.) Une habitude de quarante années !
poitrinas. - Elle est trop fendue... Vous n'auriez pas un canif ?
caboussat, lui donnant un canif. -Si... voilà !
poitrinas, tout en taillant sa plume. - Ah ! les Romains ne connaissaient pas le verre ! (Poussant un cri.) Aïe !
caboussat. - Quoi ?
poitrinas. - Je me suis coupé !
caboussat. - Attendez... dans le tiroir... un chiffon... (Lui emmaillotant le doigt.) Je vais vous arranger une petite poupée... Ne bougez pas... Là... voilà ce que c'est...
poitrinas. - Maintenant je vais vous demander un service.
caboussat. - Lequel ?
poitrinas. - C'est de tenir la plume à ma place ; je vais dicter.
caboussat, à part. - Diable ! (Haut.) Mais... c'est que...
poitrinas. - Quoi ?
caboussat. - Écrire à une académie...
poitrinas. - Puisque vous êtes membre correspondant. .. c'est pour correspondre.
caboussat, va s'asseoir à la table. - C'est juste ! (À part, s'asseyant au bureau.) Ils ont tous la rage de me
faire écrire aujourd'hui... et ma fille qui n'est pas là !
poitrinas. - Y êtes-vous ?
caboussat. - Un moment ! (À part.) Peut-être qu'avec beaucoup de pâtés...
poitrinas, dictant. - « Messieurs et chers collègues... l'archéologie vient de s'enrichir... »
caboussat, à part. - Allons, bon ! voilà qu'il me flanque des mots difficiles... Archéologie !
poitrinas. - Vous y êtes ?
caboussat. - Attendez... (À part.) Archéologie... est-ce q-u-é que ? ou k-é ? Oh ! une idée !
Eugène Labiche et Alphonse Leveaux, La Grammaire scène XV (1867).
Sans qu'on puisse dire que Caboussat c'est Labiche, l'auteur du Voyage de Monsieur Perrichon, qui ne sera élu à l'Académie qu'en 1880, n'était pas toujours très sûr de lui en matière d'orthographe. Dix ans avant La Grammaire, il avait écrit une comédie, Le Secrétaire de Madame, dont le héros était également gêné par son ignorance en ce domaine.
Questions
1. Compréhension de la scène : relevez dans les répliques des personnages des indices vous permettant de reconstituer les événements antérieurs à cette scène.
2. Quel est le problème qui se pose à Caboussat ? À votre avis, quel stratagème a-t-il en tête pour le résoudre ? Prolongez la scène par quelques répliques.
3. Relevez les indices typographiques qui permettent au premier coup d'œil d'identifier ce texte comme étant extrait d'une pièce de théâtre.
4. Analysez de quoi provient le comique dans cette scène.
5. Archéologie : s'agit-il d'un mot dérivé ou composé ? Trouvez d'autres mots utilisant l'un ou l'autre des éléments dont il est formé. De quelle langue ces éléments proviennent-ils ?
6. Expression écrite ou orale. Reconnaissez-vous dans les « stratégies » de Caboussat des pratiques qui sont aussi les vôtres quand vous vous trouvez en difficulté en matière d'orthographe ?
7.En quoi peut-on dire que la méconnaissance de l'orthographe est un handicap ?
SÉANCE 2 : un sonnet phonétique, pour ou contre la réforme de l'orthographe ?
À A. Duvigneaux,
Trop fougueux adversaire de l'orthographe phonétique
É coi vréman, bon Duvignô,
Vou zôci dou ke lé zagnô
É meïeur ke le pin con manj,
Vou metr' an ce courou zétranj
Contr (e) ce ta de brav(e) jan
O fon plus bête ke méchan
Drapan leur linguistic étic
Dan l'ortograf (e) fonétic ?
Kel ir (e) donc vou zambala ?
Vizavi de ce zoizola
Sufi d'une paroi (e) verde.
Et pour leur prouvé san déba
Kil é dé mo ke n'atin pa
Leur sistem (e), dizon-leur :...
Verlaine
Questions
1. Rappelez les caractéristiques principales du sonnet. Quel est le type de vers utilisé par Verlaine ? Établissez un schéma des rimes. Que pensez-vous de la façon dont le « poète » appelle ici la rime finale (qu'il n'a pas osé écrire en toutes lettres) ?
2. Quelles remarques pouvez-vous faire sur le système utilisé par Verlaine pour transcrire les phonèmes ? Quels graphèmes ont disparu, et par quoi sont-ils remplacés ?
3. Est-ce pour autant un système totalement logique ? Que pensez-vous de la transcription « phonétique » des liaisons?
4. Quels sont les mots qui ne sont pas altérés par l'orthographe phonétique ? Faites si possible un commentaire sur la nature de ces mots. Verlaine aurait-il pu transcrire autrement la conjonction « donc » ?
5. Repérez des expressions où Verlaine a modifié la segmentation (manière dont les mots sont coupés les uns par rapport aux autres).
6. « Kel ir(e) donc vou zambala ? » Quels sont les inconvénients de l'orthographe phonétique en ce qui concerne : a. la compréhension ; b. le décompte des syllabes dans le vers ?
7. En revanche, la transcription phonétique permet d'obtenir des « rimes pour l'œil » qui seraient impossibles avec l'orthographe habituelle ; lesquelles ?
8. Retrouvez dans le texte deux noms synonymes de « colère ». Citez-les avec leur orthographe habituelle.
9. Montrez à l'aide du texte que Verlaine fait référence à un débat qui avait cours à l'époque. Prend-il parti ?
Recherche : des débats sur l'orthographe ont-ils encore cours aujourd'hui ?
10. Retranscrivez ce sonnet en utilisant le système orthographique habituel. Le texte y perd-il ou y gagne-t-il en intérêt?
S3: L'épreuve de l'orthographe.
Nous sommes au début du XXe siècle. Les candidates au Brevet élémentaire, qui sanctionne les trois premières années de l'enseignement primaire supérieur (l'équivalent de notre collège), s'apprêtent à subir l'épreuve de dictée et viennent de remplir l'entête de leur copie.
Cette petite formalité remplie, nous attendons qu'on veuille bien nous dicter quelque chose. Je regarde autour de moi les petites figures inconnues, dont plusieurs me font pitié, tant elles sont déjà tendues et anxieuses.
On sursaute, Roubaud a parlé dans le silence :
« Épreuve d'orthographe, mesdemoiselles, veuillez écrire : je ne répète qu'une seule fois la phrase que je dicte. » II commence la dictée en se promenant dans la classe.
Grand silence recueilli [...].
Ils ont fourré des participes, tendu des embûches de pluriels équivoques, dans cette dictée qui arrive à n'avoir plus aucun sens tant ils ont tortillé et hérissé toutes les phrases. C'est enfantin !
« Un point, c'est tout. Je relis. »
Je crois bien ne pas avoir de fautes ; je n'ai qu'à veiller aux accents, car ils vous comptent des demi-fautes, des quarts de faute, pour des velléités d'accents qui traînent mal à propos au-dessus des mots. Pendant que je relis, une petite boule de papier tombe sur ma feuille ; je la déroule dans le creux de ma main, c'est la grande Anaïs qui m'écrit : « Faut-il un S à trouvés, dans la seconde phrase ? [...] Relevant la tête, je lui adresse un imperceptible « oui » et elle corrige, paisiblement.
« Vous avez cinq minutes pour relire, annonce la voix de Roubaud. L'épreuve d'écriture suivra »
Questions T3
Questions
1. Le texte comporte un indice permettant de connaître le sexe du narrateur. S'agit-il d'un indice orthographique ?
2. Pourquoi les « petites figures » dont parle Colette sont-elles « inconnues » ?
3. Le récit révèle certains traits de caractère chez la narratrice ainsi que chez « la grande Anaïs » : lesquels ?
4. Inventez des phrases où vous emploierez des homophones des mots « fois », « point », « relis », « veillez », « mots », «faut », « voix ».
5. Expliquez l'expression « des velléités d'accents ». À quelle famille de mots le nom « velléité » appartient-il ? Retrouvez dans le texte un verbe de la même famille, conjugué à deux modes différents que vous identifierez.
6. Relevez dans le texte les mots comportant des accents (aigus, graves ou circonflexes). Puis, pour chacune des affirmations suivantes, indiquez si elle vous semble vraie ou fausse :
a. La terminaison -é à la fin d'un mot signale souvent un participe passé ;
b. on ne trouve d'accent grave sur un e que quand la syllabe suivante comporte un e muet ;
c. seules les lettres a et e peuvent comporter un accent grave ;
d. la préposition à et le verbe a sont des homophones lexicaux ;
e. quand un nom féminin prononcé [te] ou [tje] se termine par -é (et non -ée), il s'agit d'un nom abstrait ;
f. « Je répète » : à certaines formes, ce verbe pourrait comporter un accent aigu sur la deuxième syllabe ;
g. « que je déroule » : à certaines formes, ce verbe pourrait comporter un accent grave sur la première syllabe ;
h. « relevant la tête » : à certaines formes, ce verbe pourrait comporter un accent grave sur la deuxième syllabe ;
i. l'accent circonflexe peut avoir une valeur étymologique et rappeler une lettre disparue que l'on retrouve dans d'autres mots de la même famille ;
j. dans ce cas, la lettre disparue est toujours un ancien -s, comme le prouve le nom « embûche » ;
k. le tréma sert à indiquer que, quand un mot comporte deux voyelles consécutives, elles doivent être prononcées séparément ;
1. le tréma se place toujours sur la seconde des deux voyelles ; dans la liste suivante : Anaïs, aiguë, Noël, maïs, nous haïssons, aucun des mots ne comporte de faute d'orthographe.
7. Pourquoi le nom « velléités » ne comporte-t-il pas de tréma ?
8. Inventez une phrase où le mot « trouvés » comporte bel et bien un -s final. Expliquez quelle règle vous avez appliquée pour que le mot s'écrive ainsi.
9. « L'épreuve d'écriture suivra » : à votre avis, de quoi s'agit-il ?
Débat (expression orale) : faut-il attacher de l'importance à l'écriture et à la lisibilité lorsqu'on produit un texte manuscrit ?
10. Dans quel état d'esprit sont les candidates ?Quelle conception de la dictée se dégage de ce récit ?
!Sur une île
//Après le naufrage de La Virginie, Robinson se réveille sur une île.//
Lorsque Robinson reprit connaissance, il était couché, la figure dans le sable. Une vague déferla sur la grève mouillée et vint lui lécher les pieds. Il se laissa rouler sur le dos. Des mouettes noires et blanches tournoyaient en gémissant dans le ciel redevenu bleu après la tempête. Robinson s'assit avec effort et ressentit une vive douleur à l'épaule gauche. La plage était jonchée de poissons morts, de coquillages brisés et d'algues noires rejetés par les flots. A l'Ouest, une falaise rocheuse s'avançait dans la mer et se prolongeait par une chaîne de récifs. C'était là que se dressait la silhouette de La. Virginie avec ses mâts arrachés et ses cordages flottant dans le vent.
*
//Le lendemain, il réfléchit à sa situation.//
En somme sa situation était loin d'être désespérée. Certes, cette île était apparemment déserte. Mais cela ne valait-il pas mieux que si elle avait été peuplée de cannibales? En outre elle paraissait assez accueillante, avec sa belle plage au nord, des prairies humides et sans doute marécageuses à l'est, sa grande forêt à l'ouest, et, en son centre, ce massif rocheux que perçait une grotte mystérieuse et qui offrait un point de vue magnifique sur tout l'horizon.
*
//Des années plus tard, Robinson décide de rester sur l'île, malgré la. visite d'un navire, le Whitebird, dont un pauvre mousse s'est échappé.//
[Robinson] s'arrêta à mi-chemin et regarda son nouvel ami. Un pâle sourire éclaira le visage maigre, semé de taches de rousseur. Il ouvrit la main et regarda la main qui y était blottie. Elle était mince, faible, mais labourée par les travaux du bord.
Du haut du piton rocheux, on voyait toute l'île qui était noyée dans la brume. Sur la plage, le canot et la pirogue commençaient à tourner, atteints par les vagues de la marée montante. Très loin au nord sur la mer, on distinguait un point blanc qui fuyait vers l'horizon : le Whitebird.
M.Tournier, Vendredi ou la vie sauvage [1971], Éd. Gallimard, coll. Folio, 1987
Exercice 1
Voici des groupes de synonymes.
1.semblable - identique - pareil -
similaire - équivalent - égal.
2.propre - net - impeccable - pur -
immaculé.
3.sûr - certain - persuadé - assuré
- convaincu.
4. juste - équitable - raisonnable -
sensé.
a. Relevez dans chaque groupe
ceux qui ne sont que masculin.
b. Donnez leur forme au féminin.
c. Parmi ces vingt mots, indiquez
les deux seuls dont on soit sûr à l'oral
qu'ils sont au masculin.
d. Trouvez vous-même un adjectif
qui pourrait aussi appartenir à cette
catégorie.
Exercice 2
1. Parmi les adjectifs de la liste sui
vante, relevez :
a. ceux qui s'écrivent pareil au masculin et au féminin ;
b. ceux qui ne s'écrivent pas pareil
au masculin et au féminin ;
c. ceux qui se prononcent pareil au masculin et au féminin ;
d. ceux qui ne se prononcent pas
pareil au masculin et au féminin.
4.Comment se terminent les adjec
tifs relevés en a. ? Qu'en déduisez-vous?
5.Quels sont ceux de la question b.
auxquels il suffit de rajouter un e pour trouver le féminin ?
6.Quels sont ceux qui redoublent
la consonne devant le e ?
7.Quels sont ceux qui subissent
d'autres transformations orthographiques ?
Liste : chauve - vert - fort - vide -aigu - menteur - terne - bleu - indiscret - bizarre - étrange - louche -curieux - âpre - étonnant - long -ancien - gros - large - public – étroit - immense - heureux - sauvage -
vieux - grêle - amer - divers - responsable - bon - faux - obligatoire -sucré - utile - consolateur – complet - hostile - honnête - doux - loquace-salé - grec - insipide - malhonnête -volubile - idiot - enchanteur - muet -nul - frais - stupide - roux - insensé -sot - supérieur - propice - pauvre -jaune - rouge - noir - blanc - gris.
Exercice 3
8.Distinguez dans la liste les
notions grammaticales con-cernées par le genre en barrant les autres.
9.Quelles sont les deux notions
grammaticales qui peuvent entraîner des changements orthographiques dans des mots qui dépendent d'elles ?
Liste : noms - auxiliaire être -auxiliaire avoir - adverbe tout -adverbe en -ment - locution adverbiale - préposition - locution prépositive - proposition principale - pronom personnel - pronom possessif -pronom démonstratif - pronom relatif (forme simple) - pronom relatif (forme composée) - participe passé -participe présent - déterminant -adjectif qualificatif - adjectif verbal -gérondif - infinitif présent - infinitif passé - impératif - indicatif présent -indicatif imparfait - indicatif passé simple — indicatif plus-que-parfait -indicatif futur - indicatif futur antérieur - indicatif passé composé - subjonctif présent - subjonctif passé -subjonctif imparfait - subjonctif plus-que-parfait - conditionnel présent -conditionnel passé - voix active -voix passive - fonction sujet - fonction complément d'objet direct -fonction complément d'objet indirect - déterminant numéral.
Exercice 4
Formez des groupes nominaux masculins en conservant les adjectifs.
1. une sœur majeure - 2. une cassure nette - 3. une voix fluette - 4. une touche légère - 5. une circulation interdite - 6. une boisson sucrée - 7. une histoire vraie - 8. une fourmi travailleuse - 9. une allure masculine -10. une silhouette élancée - 11. une victoire franche - 12. une décision cruelle - 13. une somme nulle - 14. une fille gentille - 15. une lettre vengeresse - 16. une réunion publique.
Exercice 5
Support : « La Cigale et la Fourmi » et « Le Corbeau et le Renard ».
10.Relevez toutes les marques du féminin.
11.Soulignez celles qui s'entendent.
12.Relevez toutes les marques du
masculin.
13.Relevez tous les mots qui sont
des substituts lexicaux
14.(groupes nominaux) ou grammaticaux (pronoms) mis pour les deux protagonistes ou les représentant.
15.Que constatez-vous quant à la
représentation du genre dans chaque fable ?
Exercice 6
Faites la transcription phonétique des groupes suivants en laissant un espace entre chaque « mot » retranscrit et en incluant le son de la liaison dans le mot suivant.
Modèle : les eaux : [le zo].
16.de jolies ardoises – de jolis oiseaux.
17.les hautes herbes - les hauts sommets.
18.les hauteurs - les auteurs.
19.une belle harmonie - un bel harmonica.
20.il a entendu - il l'a entendue.
21.le travail seul - il travaille seul - elle travaille seule.
Exercice 7
Parmi les mots suivants, quels sont ceux que vous identifiez immédiatement comme étant au féminin ?
Précisez leur classe grammaticale.
prends -sa- venez - dont - mais
été - dessus - elle - tout - qui -
vraiment - car - mes - à - cinquante - laquelle - huit - les -douze - la mienne -un- celui – des - du - la - lui - leur - mon - et - ton - lesquelles - son - ils - notre -
eu - votre - nos - donc - ceux – vos - tes - ses - leurs - que - où – des quels - avec - ma - quand - quel - celle.
* S1: Contrôle de lecture
* S2: [[L'incipit de ''La nuit du renard'']]
Inquiétude d’une époque qui craque et voudrait faire la pause ? “Ecoutez ! Ce coup sourd, c’est un gigantesque craquement quelque part sous terre ; ce craquement, une pomme de pin préhistorique qui tombe parmi les fougères et va pourrir là.” Regret de cet inutile que l’on a chassé (sauf parfois pour les énumérations) car il entrave le parti pris des phrases (souvent) courtes dans la presse ? “Le mécanisme se contracte, se dilate comme celui d’une horloge s’ouvre et se ferme ; on mange et on boit ; par moments, on parle.” Point rassembleur qui contourne la sécheresse du point et le souffle trop léger de la virgule ; point à la petite racine où l’on puise le respir.
Source: [[Langue sauce piquante|http://correcteurs.blog.lemonde.fr/]]
[[Progression 4]]
[[Progression 3]]
[[Vocabulaire latin]]
|!Etape du schéma narratif|!Résumé|
|Situation initiale|Andréas et Eric sont en voyage scolaire à Londres. Plutôt que de suivre leur groupe, ils se rendent dans une boutique de jeux vidéos dont ils ont appris l'existence par une publicité. Ils se retrouvent alors dans un magasin qui présente des jeux encore inédits.|
|Pertubation|À la vue de l'emblème nazi porté par Andréas, le vendeur, un homme âgé, se trouble et donne aux deux autres une disquette en leur recommandant d'y jouer avec leur ami.|
|Péripéties|De retour en France, les trois adolescents prennent conscience que la disquette présente une technologie très avancée et encore-inconnue. En fait le jeu, intitulé l'Expérience ultime, les plonge au coeur des grands conflits : guerre de 1914-1918, Vietnam, Guernica, 1942... Un peu à la manière d'une machine à remonter le temps.<br>Un rôle est attribué à chacun en fonction de sa personnalité et, bien sûr, Andréas s'identifie à un nazi. Les trois adolescents confrontés à l'histoire, sont paradoxalement devenus des adultes et doivent prendre des décisions très graves.|
|Résolution|Seule la mort de leur personnage peut les faire ressortir du jeu, ce qui n'est pas sans répercussions sur eux-mêmes. Il faudra qu'Éric et Thierry tuent, le personnage d'Andréas pour s'en débarrasser et le faire sortir du jeu.|
|Situation finale|Le roman se refermera sur Andréas lorsque celui-ci, dans le rôle d'un SS, sera de nouveau dans le jeu et pris, lors d'une partie, pour un Juif.|
<<tiddler [[Faire un résumé]]>>
/***
|''Name:''|LegacyStrikeThroughPlugin|
|''Description:''|Support for legacy (pre 2.1) strike through formatting|
|''Version:''|1.0.2|
|''Date:''|Jul 21, 2006|
|''Source:''|http://www.tiddlywiki.com/#LegacyStrikeThroughPlugin|
|''Author:''|MartinBudden (mjbudden (at) gmail (dot) com)|
|''License:''|[[BSD open source license]]|
|''CoreVersion:''|2.1.0|
***/
//{{{
// Ensure that the LegacyStrikeThrough Plugin is only installed once.
if(!version.extensions.LegacyStrikeThroughPlugin) {
version.extensions.LegacyStrikeThroughPlugin = {installed:true};
config.formatters.push(
{
name: "legacyStrikeByChar",
match: "==",
termRegExp: /(==)/mg,
element: "strike",
handler: config.formatterHelpers.createElementAndWikify
});
} //# end of "install only once"
//}}}
Tout n'est pas en français, surtout pour un livre américain... (il est temps de travailler votre anglais)
!En français
# Blade runner: brève analyse et comparaison du film et du livre: http://www.cafardcosmique.com/Blade-Runner-de-Ridley-SCOTT-1982
# l'incontournable Wikipédia (notez le titre! !): http://fr.wikipedia.org/wiki/Les_andro%C3%AFdes_r%C3%AAvent-ils_de_moutons_%C3%A9lectriques_%3F
!En anglais
# http://www.zompist.com/android.html
# site "officiel": http://www.philipkdick.com/
# essais 'académiques' sur Blade Runner: http://scribble.com/uwi/br/off-world.html
# une page présentant les couvertures des éditions en anglais: http://www.pkdickbooks.com/SFnovels/Do_Androids_Dream.php
# Il n'y a pas que wikipédia ! Sur Answers: http://www.answers.com/topic/do-androids-dream-of-electric-sheep/
* radio finnoise d'information en latin: http://www.yleradio1.fi/nuntii/audi/
* expressions de la vie quotidienne: http://linguaeterna.com/la/conv.php ethttp://en.wikibooks.org/wiki/Spoken_Latin
* des livres en podcast: http://latinum.mypodcast.com/
!Les jeux videos sont-ils dangereux ? Quelques liens
# texte d'un forum, étudié en classe: http://www.sur-la-toile.com/discussion-26034-1-dangers-des-jeux-videos.html
# reportage sur france 2: http://www.youtube.com/watch?v=H7rdnQU_LoI&a
# france 3: http://www.youtube.com/watch?v=Ietqtuai3pg&feature=related
# Un forum:http://forums.france2.fr/france2/education/parents-dangers-internet-sujet_3581_1.htm
# Double avis: http://www.unhomme.fr/page-al-dangers_jeux_videos.html
# Revue Sciences Humaines: les jeux sont bons (semblerait-il) pour le cerveau: http://www.scienceshumaines.com/index.php?lg=fr&id_article=15191
# Une page très véhémente contre les jeux videos: http://www.uniondesfamilles.org/le_danger_des_jeux_video_violents.htm
[[Troisième]] [[Cinquième]] [[Latin]] [[IDD]]<<tag Lecture>><<tag Liens>>[[MiniBrowser]]<<toggleSideBar menu tooltip hide>><<fontSize "font-size:">>
!Poe, Le masque de la mort rouge
Et de temps en temps on entend sonner l'horloge d'ébène dans la salle de velours. Et alors, pour un moment, tout s'arrête, tout se tait, excepté la voix de l'horloge. Les rêves sont glacés, paralysés dans leurs postures. Mais les échos de la sonnerie s'évanouissent, ils n'ont duré qu'un instant, et à peine ont-ils fui, qu'une hilarité légère et mal contenue circule partout. Et la musique s'enfle de nouveau, et les rêves revivent, et ils se tordent çà et là plus joyeusement que jamais, reflétant la couleur des fenêtres à travers lesquelles ruisselle le rayonnement des trépieds. Mais dans la chambre qui est là-bas tout à l'ouest aucun masque n'ose maintenant s'aventurer; car la nuit avance, et une lumière plus rouge afflue à travers les carreaux couleur de sang, et la noirceur des draperies funèbres est effrayante; et à l'étourdi qui met le pied sur le tapis funèbre l'horloge d'ébène envoie un carillon plus lourd, plus solennellement énergique que celui qui frappe les oreilles des masques tourbillonnant dans l'insouciance lointaine des autres salles.
Quant à ces pièces-là, elles fourmillent de monde, et le coeur de la vie y battait fièvreusement. Et la tête tourbillonnait toujours, lorsque s'éleva enfin le son de minuit de l'horloge. Alors, comme je l'ai dit, la musique s'arrêta; le tournoiement des valseurs fut suspendu; il se fit partout, comme naguère, une anxieuse immobilité. Mais le timbre de l'horloge avait cette fois douze coups à sonner; aussi il se peut bien que plus de pensée se soit glissée dans les méditations de ceux qui pensaient parmi cette foule festoyante. Et ce fut peut-être aussi pour cela que plusieurs personnes parmi cette foule, avant que les derniers échos du dernier coup fussent noyés dans le silence, avaient eu le temps de s'apercevoir de la présence d'un masque qui jusque-là n'avait aucunement attiré l'attention. Et, la nouvelle de cette intrusion s'étant répandue en un chuchotement à la ronde, il s'éleva de toute l'assemblée un bourdonnement, puis, finalement de terreur, d'horreur et de dégoût.
!Questions
# Proposez un découpage du texte en plusieurs parties. Justifiez-le.
# Quels sont les personnages ? En quoi s'opposent-ils ? Pourquoi peut-on dire que l'horloge est un personnage.
# A votre avis , que symbolise le masque qui apparaît en fin de texte.
# Quelles couleurs dominent dans le texte. Que symbolisent-elle ?
# Relevez tous les termes qui désignent les danseurs (pronoms indéfinis, noms collectifs): pourquoi peut-on dire que les danseurs sont presque « déjà morts ».
!Rédaction.
Sujet: Vous êtes le masque. Vous vous adressez aux danseurs pour leur dire qui vous êtes et quelles sont vos intentions.
Consigne: - ni dialogue, ni récit.
écrire au présent, écrire en « je »
utiliser un registre soutenu, par la syntaxe notamment. Interdiction d'écrire « et »
/%
|Name|MiniBrowser|
|Source|http://www.TiddlyTools.com/#MiniBrowser|
|Version|0.0.0|
|Author|Eric Shulman - ELS Design Studios|
|License|http://www.TiddlyTools.com/#LegalStatements <<br>>and [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]|
|~CoreVersion|2.1|
|Type|script|
|Requires|InlineJavascriptPlugin, MiniBrowserList|
|Overrides||
|Description|use an 'inline frame' to display another site inside a tiddler with navigation buttons and a dropdown list of favorite URLs.|
Usage:
<<tiddler MiniBrowser with: id>>
where:
id - (optional) specifies an ID to assign to the DOM element for the embedded IFRAME. If you want to have **more than one** MiniBrowser displayed at a time, you MUST provide an ID, so that each MiniBrowser can be uniquely identified within the DOM structure.
Note: MiniBrowserList can be *empty*, but must already exist for you to ADD a favorite to the list. If you don't copy the sample list from TiddlyTools, be sure to create this tiddler in your own document if you intend to use the MiniBrowser's "favorites" droplist.
%/<html><form target="browser_$1" style="margin:0;padding:0"
onsubmit="this.action=this.url.value; this.form.done.disabled=false" style="margin:0;padding:0"><nobr><!--
--><input type="button" value="<" title="back" style="font-size:8pt;width:3%"
onclick="try{window.frames['browser_$1'].history.go(-1)}catch(e){window.history.go(-1)}" ><!--
--><input type="button" value=">" title="forward" style="font-size:8pt;width:3%"
onclick="try{window.frames['browser_$1'].history.go(+1)}catch(e){window.history.go(+1)}"><!--
--><input type="button" value="+" title="refresh"style="font-size:8pt;width:3%"
onclick="window.frames['browser_$1'].location.reload()"><!--
--><input type="button" value="x" title="stop"style="font-size:8pt;width:3%"
onclick="window.stop()"><!--
--><select name="bookmarks" id="browser_bookmarks_$1" size="1" style="font-size:8pt;width:21%"
onchange="var f=document.getElementById('browser_$1'); if (!this.value.length) return window.miniBrowserResetSize(); else window.miniBrowserSetSize(this.form); this.form.url.value=this.value; this.form.action=this.value; this.form.submit(); this.form.done.disabled=false">
<option value="">bookmarks...</option>
</select><!--
--><input type="button" value="add" title="add this URL to the MiniBrowser bookmarks" style="font-size:8pt;width:5%"
onclick="window.miniBrowserAddBookmark(this.form.url);"><!--
--><input type="button" value="del" title="remove this URL from the MiniBrowser bookmarks" style="font-size:8pt;width:5%"
onclick="window.miniBrowserDeleteBookmark(this.form.bookmarks);"><!--
--><input type="button" value="edit" title="edit the MiniBrowser bookmarks list definition" style="font-size:8pt;width:5%"
onclick="story.displayTiddler(null,'MiniBrowserList',2)"><!--
--><input type="text" name="url" size="60" value="" style="font-size:8pt;width:35%"
onfocus="this.select();" onkeyup="var k=event.keyCode; if (k==13|k==10) this.form.go.click();"><!--
--><input type="button" name="go" value="go" title="view this URL" style="font-size:8pt;width:4%"
onclick="if(!this.form.url.value.length) return; window.miniBrowserSetSize(this.form); this.form.action=this.form.url.value; this.form.submit(); this.form.done.disabled=false"><!--
--><input type="button" value="open" title="open this URL in a separate window" style="font-size:8pt;width:6%"
onclick="if(this.form.url.value.length) window.open(this.form.url.value)"><!--
--><input type="button" value="done" name="done" title="stop viewing this URL" disabled style="font-size:8pt;width:6%"
onclick="this.form.url.value=''; this.form.bookmarks.selectedIndex=0; window.miniBrowserResetSize(); this.disabled=true;">
<iframe name="browser_$1" id="browser_$1" style="width:100%;height:1em;display:none;background:#fff;border:1px solid"></iframe><div id="browser_resize_$1" style="text-align:center;marginTop:2px;display:none;font-size:8pt"><!--
--> size: <input type="text" name="w" size="3" value="100%" style="font-size:8pt;"
onfocus="this.select()"><!--
-->x<input type="text" name="h" size="3" value="400" style="font-size:8pt;"
onfocus="this.select()"><!--
--> <input type="button" value="set" style="font-size:8pt;"
onclick="var w=this.form.w.value.trim(); if (!w||!w.length) w='100%'; var h=this.form.h.value.trim(); if (!h||!h.length) h='400'; if (!w.replace(/[0-9]*/,'').length) w+='px'; if (!h.replace(/[0-9]*/,'').length) h+='px'; var f=document.getElementById('browser_$1'); f.style.width=w; f.style.height=h;"><!--
--><input type="button" value="reset" style="font-size:8pt;"
onclick="var w='100%'; var h='400'; var f=document.getElementById('browser_$1'); f.style.width=w; f.style.height=h+'px'; this.form.w.value=w; this.form.h.value=h;"><!--
--><input type="button" value="fit" title="resize to fit containing window" style="font-size:8pt;"
onclick="window.miniBrowserFitSize(this)"><!--
--></div></nobr></form></html><script>
// load bookmarks droplist from HR-separated "MiniBrowserList" tiddler contents
var here=document.getElementById("browser_bookmarks_$1");
while (here.length) here.options[0]=null; // remove current list items
here.options[here.length]=new Option("bookmarks...","",true,true);
var list=store.getTiddlerText("MiniBrowserList");
if (list && list.trim().length) {
var parts=list.split("\n----\n");
for (var p=0; p<parts.length; p++) {
var lines=parts[p].split("\n");
var label=lines.shift(); // 1st line=display text
var value=lines.shift(); // 2nd line=item value
var indent=value&&value.length?"\xa0\xa0":"";
here.options[here.length]=new Option(indent+label,value,false,false);
}
}
window.miniBrowserSetSize = function(form) {
var f=document.getElementById('browser_$1');
var w=form.w.value.trim(); if (!w||!w.length) w='100%'; if (!w.replace(/[0-9]*/,'').length) w+='px';
var h=form.h.value.trim(); if (!h||!h.length) h='400'; if (!h.replace(/[0-9]*/,'').length) h+='px';
f.style.width=w; f.style.height=h; f.style.display="block";
document.getElementById('browser_resize_$1').style.display="block";
return false;
}
window.miniBrowserResetSize = function() {
var f=document.getElementById('browser_$1');
if (f.src.length) f.src="";
f.style.width='100%'; f.style.height='1em'; f.style.display="none";
document.getElementById('browser_resize_$1').style.display="none";
return false;
}
window.miniBrowserFitSize = function(place) {
var trim=88; // fudge factor for controls + padding + borders. ADJUST TO FIT LAYOUT
var t=story.findContainingTiddler(place);
if (!t) { t=place; while (t && t.className!='floatingPanel') t=t.parentNode; } if (!t) return;
var w="100%"; // horizontal stretching via CSS works, but vertical stretching doesn't... so:
var h=(t.offsetHeight-trim); // workaround: get containing panel/tiddler height and subtract "trim" height
place.form.w.value=w; place.form.h.value=h; // update width/height input fields
var f=document.getElementById('browser_$1');
f.style.width=w; f.style.height=h+"px";
}
window.miniBrowserAddBookmark = function(place) {
var v=place.value; if (!v.length) return;
var d=prompt("Please enter a description for\n"+place.value); if (!d || !d.length) return;
var t = store.getTiddler("MiniBrowserList"); t.set(null,"%0\n%1\n----\n%2".format([d,v,t.text]));
var here=story.findContainingTiddler(place);
if (here) story.refreshTiddler(here.getAttribute("tiddler"),1,true);
story.refreshTiddler("MiniBrowserList",1,true);
story.refreshTiddler("MiniBrowser",1,true);
store.setDirty(true);
}
window.miniBrowserDeleteBookmark = function(place) {
var v=place.value; if (!v.length) return;
var d=place.options[place.selectedIndex].text; if (!d.length) return;
var t = store.getTiddler("MiniBrowserList");
if (!confirm("Are you sure you want to remove this MiniBrowser bookmark?\n\n"+d+"\n"+v)) return;
var pat='%0\n%1\n----\n'.format([d.replace(/\xa0/g,''),v]); var re=new RegExp(pat,"i");
t.set(null,t.text.replace(re,""));
var here=story.findContainingTiddler(place);
if (here) story.refreshTiddler(here.getAttribute("tiddler"),1,true);
story.refreshTiddler("MiniBrowserList",1,true);
story.refreshTiddler("MiniBrowser",1,true);
store.setDirty(true);
}
</script>
GENERAL:
----
Google
http://www.google.fr/ig?hl=fr
----
Wikisource
http://fr.wikisource.org/wiki/Accueil
----
Wikipedia
http://fr.wikipedia.org/wiki/Accueil
----
Wikisource
http://fr.wikisource.org/wiki/Accueil
----
EXERCICES ET LECONS EN LIGNE:
----
Général
http://www.ccdmd.qc.ca/fr/
----
leçons
http://www.ccdmd.qc.ca/fr/documents_theoriques/?id=12
----
exercices interactifs1
http://www.ccdmd.qc.ca/fr/exercices_interactifs/
----
exercices interactifs2
http://www.francaisfacile.com/index.php
----
exercices interactifs3
http://www.xtec.es/%7Esgirona/fle/index.htm
----
exercices interactifs4
http://users.skynet.be/courstoujours/index1.htm
----
Grammaire1
http://www.ccdmd.qc.ca/fr/parcours_guides/?id=1104&action=animer
----
Grammaire2
http://platea.cnice.mecd.es/~cvera/ressources/recurfr29.htm
----
Leçons
http://intra.sje.qc.ca/~francais3esje/notions.htm
----
Orthographe1
http://karsenti.scedu.umontreal.ca/didactique/
----
Orthographe2
http://orthonet.sdv.fr/pages/jeux.html
----
Orthographe3
http://www.ccdmd.qc.ca/fr/accords/
----
Vocabulaire
http://www.b-a-ba.net/aptitude_verbale/index.php
----
Accord des participes1 http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test133.php
----
Accord des participes2
http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test134.php
----
Accord des participes3
http://www.b-a-ba.net/aptitude_verbale/grammaire/participes_passes/test135.php
----
Conjugaison1
http://abcscolaire.free.fr/Francais.htm
----
Conjugaison2
http://www.etab.ac-caen.fr/albert-camus/ortho/
----
Conjugaison3
http://www.etab.ac-caen.fr/albert-camus/ortho/seq2/ver30.htm
----
Conjugaison4
http://www.college4vents.net/pedago/docshotpot/stdir1.htm
----
Conjugaison5
http://www.college4vents.net/pedago/docshotpot/stdir2.htm
----
Conjugaison6
http://www.college4vents.net/pedago/docshotpot/stdir3.htm
----
Conjugaison7
http://users.skynet.be/courstoujours/Discours/Sommaire.htm
----
Conjugaison8
http://www.romanistik.uni-mainz.de/franz/test/7_conj.htm
----
Usage des pronoms
http://www.romanistik.uni-mainz.de/franz/test/11_conj.htm
----
PSR
http://www.b-a-ba.net/notions_grammaire/relative/enchassee.php
----
PS
http://users.skynet.be/courstoujours/Analyse/Sommaire.htm
----
Figures de style1
http://www.college4vents.net/pedago/docshotpot/tropes.htm
----
Figures de style2
http://www.b-a-ba.net/figstyl/fig_styl.php
----
Figures de style3
http://users.skynet.be/courstoujours/Figures/Sommaire.htm
----
Figures de style4
http://www.arts.kuleuven.be/weboscope/grammaire/e_gr0.htm
----
Figures de style5
http://pages.infinit.net/cltr/langfr.html
----
~TIDDLYSITES:
----
TiddlyWiki.com - official release
http://www.TiddlyWiki.com
----
TiddlyWiki.com/dev - current release notes
http://www.TiddlyWiki.com/dev/
----
TiddlyWiki.com/beta - new development pre-prelease
http://www.TiddlyWiki.com/beta/
----
TiddlyWiki.org - new development/wiki/source control
http://www.TiddlyWiki.org
----
TiddlyTools - plugins, scripts, templates, etc.
http://www.TiddlyTools.com
----
TiddlySpot - instant TiddlyWiki hosting!!
http://www.TiddlySpot.com
----
del.icio.us - find popular TiddlyWiki sites
http://del.icio.us/tag/tiddlywiki
----
Frappr - add a pin to the TiddlyWiki user map!
http://www.frappr.com/TiddlyWiki
----
!!Exercice 1 : Indique si la figure de style employée dans ces phrases est une métaphore ou une comparaison.
1/ Quand le ciel bas et lourd pèse comme un couvercle (Baudelaire)
2/ Je t'ai offert un building de tendresse.
3/ Je regardai l'or du soir qui tombait.
4/ Tel un fleuve, ce roman lui a paru long.
5/ Tout ce que j'ai pu écrire, je l'ai puisé à l'encre de tes yeux. (Cabrel)
!!Exercice 2 : Indique pour chacune des comparaisons contenues dans ces phrases, le comparant, le comparé et l'outil comparatif.
1/ C'était, dans la nuit brune, Sur le clocher jauni, La lune Comme un point sur un i. (Musset)
2/ Voici venir les temps où vibrant sur sa tige
chaque fleur s'évapore ainsi qu'un encensoir (Baudelaire)
3/ Le poète, tel le menuisier, assemble ses mots:
!!Exercice 3 : Transforme ces comparaisons en métaphores.
1/ Arnaud se bat comme un lion quand il veut obtenir quelque chose.
2/ Son cœur est triste comme une tombe.
3/ Ses yeux sont brillants comme des brasiers.
4/ Les voix des enfants sont gaies comme des chants d'oiseaux.
!!Exercice 4 : Inventez à votre tour des expressions métaphoriques pour désigner ces mots, puis employez-les dans une phrase de votre choix.
1. Le soleil. 2. Une colline. 3. Les vagues et l’écume. 4. Un beau regard. 5. Un arbre. 6. L’automne. 7. La couleur rouge. 8. Un livre.
NAVIGATEURS ET DÉCOUVEURS
TEXTE 1
L'Amiral déploya la bannière du Roi, et les deux capitaines, les deux bannières de la Croix Verte, que l'Amiral avait prises pour signe distinctif de chaque navire, et qui portaient un F et un Y, avec une couronne au-dessus de chaque lettre et le signe de la croix entre les deux initiales couronnées...
Retranscription du Journal (te bord de Christophe Colomb,
du 11 octobre 1492, par Las Casas,
m Œuvres de Christophe Colomb, MRP Gallimard, p. 00.
TEXTE 2
En conclusion, et pour ne parler que de ce qui a été obtenu dans cette première expédition, qui s'est faite hâtivement, Leurs Altesses peuvent se rendre compte que je leur donnerai autant d'or qu'elles en voudront, [...] des épices et du coton, autant que Leurs Altesses voudront donner l'ordre d'en charger ; du mastic [..,] de l'aloès, autant qu'on en voudra charger ; et des esclaves, autant qu'on en voudra prendre, et qui seront idolâtres.
Christophe Colomb, Lettre à Santangel, ibid., p. 186.
TEXTE 3
Je m'efforçai [...] de gagner leur amitié, car je me rendis compte que c'étaient des gens qui se livreraient et se convertiraient à notre sainte religion, par l'amour plutôt que par la force. Je fis donc donner à certains d'entre eux des bonnets de couleur et quelques colliers de verre qu'ils mettaient à leur cou [...] et ils nous en restèrent tellement attachés que c'était merveille (...)
On doit pouvoir en faire des hommes de peine excellents, et ils ont l'esprit éveillé, car je vois qu'ils répètent tout de suite ce que je leur dis... Si Notre-Seigneur le permet, j'en prendrai cinq ou six avec moi, au moment de partir d'ici, afin de les présenter à Vos Altesses, et pour qu'ils apprennent notre langue.
Christophe Colomb, journal de bord. 12 octobre 1492, ibiti., p. 44
TEXTE 4
AU ROI
Votre Majesté a voulu profiter du loisir de la paix pour procurer à la géographie des connaissances utiles à l'humanité. Sous vos auspices, SIRE, nous sommes entrés dans la carrière [...] des épreuves de tout genre nous attendaient à chaque pas... C'est l'histoire de nos efforts que j'ose présenter à VOTRE MAJESTÉ.
Bougainville, Voyage autour du monde (Dédicace), 1771,
Folio Classique, p 34
TEXTE 5
Nous profitâmes aussi du beau temps pour faire des observations essentielles [..,] Le 11 au matin, M. Verron établit à terre son quart de cercle et une pendule à secondes [...] 11 y avait le 13 une éclipse de soleil visible pour nous, et il fallait être en état de l'observer, si le temps le permettait. Il fut très beau, et on put voir le moment de l'immersion et celui de l'émersion. M. Verron observait avec une lunette de neuf pieds [...] Mon poste était à la pendule [.,,] Cette observation est d'autant plus importante qu'on peut enfin par son moyen [...] déterminer d'une façon sûre l'étendue en longitude du vaste océan Pacifique, jusqu'à ce jour si incertaine.
Bougainville, ibid., p. 321.
TEXTE 6
Jeudi 14 février
Le vent ne fit qu'augmenter durant la nuit, et les vagues devinrent épouvantables. Elles se heurtaient l'une contre l'autre, en secouant et en bloquant le navire, qui ne pouvait esquiver leur choc ni se dégager de leur tumulte. Il n'avait conservé que le papefigue très bas, pour essayer de se tirer tant soit peu du milieu de la tempête. Il supporta ainsi la tourmente, pendant trois heures durant lesquelles il avança d'environ 20 miles. [...]
L'Amiral ordonna que l'on tirât au sort le nom de celui qui devait aller en pèlerinage à Sainte-Marie de Guadeloupe, pour porter un cierge de cinq livres ; et tout le monde fit le vœu que celui qui serait désigné par le sort devait accomplir ce pèlerinage. Pour faire le tirage, il fit venir autant de pois chiches qu'il y avait d'hommes à bord du navire. Il en marqua un du signe de la croix fait à la pointe de son propre couteau, et il mélangea bien le tout dans un bonnet... Il dit encore qu'il était en même temps très préoccupé, à cause de ses deux fils, qu'il avait laissés à Cordoue, où ils faisaient leurs études. Ils allaient rester orphelins de père et mère en pays étranger... II prit un parchemin, sur lequel il mit par écrit tout ce qu'il pouvait dire sur ses découvertes, en priant instamment celui qui le trouverait, de le porter aux Rois. Il enveloppa ensuite ce parchemin dans une toile cirée, qu'il attacha le mieux qu'il put, et il se fit apporter un grand baril de bois. Il y plaça le parchemin... Ceci fait, il jeta le baril à l'eau.
Christophe Colomb, Journal de bord, ibid.. p. 164.
TEXTE 7
Extrait 1
La pluie fut continuelle ; aussi le scorbut se déclara-t-il sur huit ou dix matelots. L'humidité est un des principes les plus actifs de cette maladie. On leur donnait tous les jours à chacun une pinte de limonade faite avec la poudre de faciot, et nous avons eu dans ce voyage les plus grandes obligations à cette poudre.
Extrait 2
Le plus cruel de nos ennemis était à bord la faim. Je fus obligé de faire une réduction considérable sur la ration de pain et de légumes. Il fallut aussi défendre de manger le cuir dont on enveloppe les vergues et les autres vieux cuirs, cet aliment pouvant donner de funestes indigestions. Il nous restait une chèvre, compagne fidèle de nos aventures depuis notre sortie des îles Malouines où nous l'avions prise. Chaque jour elle nous donnait un peu de lait. Les estomacs affamés, dans un instant d'humeur, la condamnèrent à mourir ; je n'ai pu que la plaindre, et le boucher qui la nourrissait depuis si longtemps a arrosé de ses larmes la victime qu'il immolait à notre faim. Un jeune chien pris dans le détroit de Magellan eut le même sort peu de temps après.
Bougainville, ibid., p. 220 et 304.
TEXTE 8
Dimanche 21 octobre
[...] je me mis en devoir de visiter l'île, en compagnie de mes capitaines et de mes hommes. Celles que j'avais vues auparavant étaient en effet très belles, et verdoyantes et: fertiles ; mais celle-ci l'est bien plus avec ses grands arbres d'un vert sombre. Il y a de grandes lagunes, autour desquelles s'étend en cercle une forêt merveilleusement belle. Ici, comme partout dans l'île, tout est vert, et l'herbe est comme au mois d'avril en Andalousie. Les chants des oiseaux sont tels qu'on voudrait ne jamais abandonner cet endroit ; et il y a tant de perroquets que leurs vols obscurcissent le soleil. Il y a une telle multitude d'oiseaux, grands et petits, et si différents des nôtres, que c'est merveille. On trouve aussi des arbres de mille espèces différentes, tous avec des fruits, chacun à sa manière ; et ils embaument tous tellement que c'est un véritable plaisir.
Christophe Colomb, Journal de bord, ibid., p. 58.
TEXTE 9
J'ai plusieurs fois été [...] me promener dans l'intérieur. Je me croyais transporté dans le jardin d'Eden; nous parcourions une plaine de gazon, couverte de beaux arbres fruitiers et coupée de petites rivières qui entretiennent une fraîcheur délicieuse [...] Un peuple nombreux y jouit des trésors que la nature verse à pleines mains sur lui. Nous trouvions, des troupes d'hommes et de femmes assises à l'ombre des vergers ; tous nous saluaient avec amitié [,..] Partout nous voyions régner l'hospitalité, le
repos, une joie douce et toutes les apparences du bonheur [...] Nous leur avons semé du blé, de l'orge, de l'avoine, du riz, du maïs, des oignons et des graines potagères de toute espèce. Nous avons lieu de croire que ces plantations seront bien soignées ; car ce peuple nous a paru aimer l'agriculture, et je crois qu'on l'accoutumerait facilement à tirer parti du sol le plus fertile de l'univers.
Bougainville, ibid., p. 235.
TEXTE 10
Extrait 1
On les voyait [.,.| venir à la nage jusqu'aux barques des navires, dans lesquelles nous nous trouvions, pour nous apporter des perroquets et du fil de coton en pelotes [...] Ils prenaient tout ce qu'on leur offrait, et donnaient en échange, sans aucune hésitation, tout ce qu'ils possédaient [...] Il me sembla que c'étaient des gens très pauvres et démunis de tout. Ils allaient tous complètement nus, tels que leurs mères les avaient mis au monde, les hommes aussi bien que les femmes |...] Ils étaient bien faits, bien bâtis de corps et d'aspect agréable. Leurs cheveux étaient aussi gros que les soies d'une queue de cheval. Ils les coupaient court et les laissaient retomber par-devant jusqu'au-dessus des sourcils ; mais par-derrière, ils portaient des mèches, qu'ils laissaient pousser sans jamais les couper. Certains d'entre eux se peignaient en brun, [...] d'autres en blanc ou en rouge ou dans d'autres couleurs, selon ce qu'ils peuvent trouver. Il y en a qui se peignent le visage, et d'autres, tout le corps, ou les yeux seulement, ou bien le nez. Ils n'ont pas d'armes, et ils ne savent pas ce que c'est ; car je leur fis voir des épées, et telle était leur ignorance qu'ils les saisissaient par le tranchant, en se coupant les doigts. Ils n'ont aucun objet en fer. Leurs sagaies sont des piques sans pointe de fer ; parfois, ils en garnissent le bout d'un os de poisson [...]
Christophe Colomb, Journal de bord, ibid., p. 44
Extrait 2
Vendredi 23 novembre
Au-delà de ce promontoire, on apercevait une autre langue de terre [...] Les indiens qui accompagnaient [l'amiral] l'appelaient Bohio. Ils disaient que c'était une grande île, habitée par des hommes qui avaient un seul œil au milieu du front, et par d'autres qui s'appelaient Cannibales, et dont ils semblaient avoir une peur affreuse. Aussitôt qu'ils se rendirent compte qu'on se dirigeait vers cette terre, il dit qu'ils ne pouvaient plus parler de frayeur, car ils disaient que ces hommes-là les mangeaient...
Christophe Colomb, journal de bord, ibid., p. 84.
TEXTE 11
On voit souvent les Tahitiens nus, sans autre vêtement qu'une ceinture qui leur couvre les parties naturelles. Cependant les principaux s'enveloppent ordinairement dans une grande pièce d'étoffe qu'ils laissent tomber jusqu'aux genoux. C'est aussi là le seul habillement des femmes [...] Elles ont les traits assez délicats ; mais ce qui les distingue, c'est la beauté de leurs corps dont !es contours n'ont point été défigurés par quinze ans de torture. [Elles] se peignent d'un bleu foncé les reins et les fesses ; c'est une parure en même temps qu'un mode de distinction. Les hommes sont soumis à la même mode. Je ne sais comment ils s'impriment ces traits ineffaçables [...] Qu'ils soient chez eux ou non, jour et nuit, tes maisons sont ouvertes. Chacun cueille ses fruits sur le premier arbre qu'il rencontre, en prend dans la maison où il entre. Il paraîtrait que pour les choses absolument nécessaires à la vie, il n'y a point de propriété et que tout est à tous.
Bougainville, ibid., p. 253.
TEXTE 12
Pour en terminer avec cette infamie et cette férocité, je dirai seulement que depuis que ces tyrans ont pénétré dans ce royaume jusqu'à maintenant, c'est-à-dire en seize ans, ils ont envoyé de nombreux navires remplis d'Indiens à Santa-Maria, à l'île Espagnole, à la Jamaïque et à l'île de San Juan pour les vendre comme esclaves : plus d'un million d'Indiens.
Aujourd'hui-même, en cette année 1542, ils continuent, et le tribunal royal de l'île Espagnole, en faisant semblant de n'en rien voir, favorise ce trafic, comme tous les autres actes tyrarmiques et corrompus qu'il aurait pu entraver et empêcher [...] 11 n'y a pas eu d'autre raison pour réduire ces Indiens à l'esclavage que la volonté perverse, aveugle et obstinée de ces tyrans avides de satisfaire une curiosité insatiable. Comme tous les autres, toujours, dans toutes les Indes, ils ont enlevé ces agneaux et ces brebis à leurs maisons, ils ont pris leurs femmes et leurs enfants avec des procédés cruels et abominables déjà mentionnés et les ont marqués au fer du roi pour les vendre comme esclaves.
Las Casas. Brève Histoire de la destruction des Indes.
TEXTE 13
S'adressant à Bougainville, il ajouta : « Et toi, chef des brigands qui t'obéissent, écarte promptement ton vaisseau de notre rive : nous sommes innocents, nous sommes heureux ; et tu ne veux que nuire à notre bonheur. Nous suivons le pur instinct de la nature ; et tu as tenté d'effacer de nos âmes son caractère; ici tout est à tous ; et tu nous as prêché je ne sais quelle distinction du tien et du mien. Nos filles et nos femmes nous sont communes ; tu as partagé ce privilège avec nous ; et tu es venu allumer en elles des fureurs inconnues [...] tu as projeté au fond de ton cœur le vol de toute une contrée ! Tu n'es pas esclave : tu souffrirais plutôt la mort que de l'être, et tu veux nous asservir ! Tu crois donc que le Tahitien ne sait pas défendre sa liberté et mourir ? »
Diderot. Supplément au voyage de Bougainville.
.
TEXTE 14
Sur cette mer démontée, dont les lames déferlaient en projetant des lueurs livides, un léger bâtiment fuyait presque à sec de toile [...] Les enfants, qui avaient été renversés, purent se relever presque aussitôt.
« Gouverne-t-il, Briant ? demanda l'un d'eux.
- Oui, Gordon, répondit Briant, qui avait repris tout son sang-froid [...] La tempête redoublait de violence. Le vent soufflait en foudre, comme disent les marins [...] D'ailleurs, depuis quarante-huit heures, à demi désemparé, son grand mât rompu à quatre pieds au-dessus de l'étambrai, on n'avait pu installer une voile de cape, qui eût permis de gouverner plus sûrement. Le mât de misaine [...] tenait bon encore [...] A l'avant, les lambeaux du petit foc battaient avec des. détonations comparables à celles d'une arme à feu. Pour toute voilure, il ne restait plus que la misaine qui menaçait de se déchirer [.. .1 Si cela arrivait, le schooner ne pourrait plus être maintenu dans le lit du vent, les lames l'aborderaient par le travers, il chavirerait, il coulerait à pic, et ses passagers disparaîtraient avec lui dans l'abîme. »
Jules Verne, Deux ans de vacances.
Séance 1: Textes de Christophe Colomb.
Tous ces textes sont tirés des écrits de Colomb.
Ils racontent ce qu'il a vu: il écrit au passé simple : cela permet de raconter des événements lointains.
Remarque: Conjugaison du passé simple, 1er groupe
je mange-ai (et pas je mange-a)
tu mange-as
il mange-a
nous mange-âmes
vous mange-âtes
ils mang-èrent
(les autres verbes se conjuguent à 70 % : -is, -is, -it, -îmes, -îtes, -irent)
Séance 2: Des récits
Un récit, c'est une « histoire », réelle ou inventée. On dit parfois un texte narratif. Un récit se reconnaît:
Un personnage fait des actions.
Cette suite d'action s'appelle le schéma narratif
Les actions sont écrites au passé simple souvent, parfois au présent ou au passé composé.
Séance4: Identifier les catégories grammaticales.
Une catégorie grammaticale, c'est ce qu'est le mot, ça ne change pas.
Par exemple: « chat » est un nom, « joli » un adjectif, « courir » un verbe, « je » pronom (personnel), « longtemps » un adverbe, « car » conjonction de coordination.
Devant un nom, on met un article défini (le/la/les) ou indéfini (un/ une/des).
Un adjectif « décrit » un nom, l'identifie. S'accorde avec le nom.
Un adverbe est invariable
Une préposition: devant un groupe nominal (à, de, par, pour, sur, sous, avec, ....)
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=windows-1252">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 2.2 (Win32)">
<META NAME="AUTHOR" CONTENT="FONTAINE marjorie">
<META NAME="CREATED" CONTENT="20070402;8554800">
<META NAME="CHANGED" CONTENT="20090331;14313327">
<STYLE TYPE="text/css">
<!--
@page { size: 21cm 29.7cm; margin-left: 1.11cm; margin-right: 0.92cm; margin-top: 1.01cm; margin-bottom: 2cm }
P { margin-bottom: 0.21cm }
TD P { margin-bottom: 0cm }
-->
</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P ALIGN=CENTER STYLE="margin-bottom: 0cm">NOTATION DU DOSSIER
AUTOBIOGRAPHIQUE</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
</P>
<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
<COL WIDTH=199*>
<COL WIDTH=57*>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>La mise en page est propre</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>J'ai fait un effort sur l'orthographe</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/2</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>J'ai personnalisé mes pages
(images, écriture...)</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>J'ai choisi une image sur la couverture
qui explique qui je suis</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>J'ai mis un sommaire</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>MON CV a une présentation
correcte et est bien rempli</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78% HEIGHT=59>
<P ALIGN=LEFT><FONT SIZE=2>LE QUESTIONNAIRE DE PROUST Il est
personnalisé</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>LE PORTRAIT CHINOIS</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>J'ai répondu par des phrases
complètes, et au conditionnel.</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>Il y en a deux, un proche en a rempli
un pour moi</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
<P ALIGN=RIGHT><BR>
</P>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>LA BIOGRAPHIE IMITEE d'Annie Duperey</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>J'ai retravaillé mon texte selon
les consignes données par le professeur</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><BR>
</P>
<P ALIGN=RIGHT><FONT SIZE=2>/2</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>« JE ME SOUVIENS »
Ma série mèle souvenir personnels et publics.</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>PORTRAIT</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>Il est précis, me ressemble</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>J'ai fait un effort pour le rendre
littéraire, comme ceux étudiés en classe.</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><BR>
</P>
<P ALIGN=RIGHT><FONT SIZE=2>/0.5</FONT></P>
<P ALIGN=RIGHT><FONT SIZE=2>/2</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>MON OBJET FETICHE j'explique
précisément les raison de mon choix de manière
argumentée (les arguments sont valables)</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>PAGES LIBRES J'y ai mis des choses
personnelles</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=78%>
<P ALIGN=LEFT><FONT SIZE=2>JOURNAL DE BORD</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>il est décrit au moins une
semaine</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>je l'ai corrigé en tenant compte
des conseils du professeur.</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>IL est littéraire.</FONT></P>
<P ALIGN=LEFT><FONT SIZE=2>LETTRE A MON AVENIR</FONT></P>
</TD>
<TD WIDTH=22%>
<P ALIGN=RIGHT><BR>
</P>
<P ALIGN=RIGHT><FONT SIZE=2>/0.5</FONT></P>
<P ALIGN=RIGHT><FONT SIZE=2>/2</FONT></P>
<P ALIGN=RIGHT><BR>
</P>
<P ALIGN=RIGHT><FONT SIZE=2>/1</FONT></P>
</TD>
</TR>
</TABLE>
<P ALIGN=LEFT STYLE="margin-bottom: 0cm"><BR>
</P>
<P ALIGN=CENTER STYLE="margin-bottom: 0cm"><BR>
</P>
</BODY>
</HTML>
/***
''NestedSlidersPlugin for TiddlyWiki version 1.2.x and 2.0''
^^author: Eric Shulman
source: http://www.TiddlyTools.com/#NestedSlidersPlugin
license: [[Creative Commons Attribution-ShareAlike 2.5 License|http://creativecommons.org/licenses/by-sa/2.5/]]^^
Quickly make any tiddler content into an expandable 'slider' panel, without needing to create a separate tiddler to contain the slider content. Optional syntax allows ''default to open'', ''custom button label/tooltip'' and ''automatic blockquote formatting.''
You can also 'nest' these sliders as deep as you like (see complex nesting example below), so that expandable 'tree-like' hierarchical displays can be created. This is most useful when converting existing in-line text content to create in-line annotations, footnotes, context-sensitive help, or other subordinate information displays.
For more details, please click on a section headline below:
++++!!!!![Configuration]>
Debugging messages for 'lazy sliders' deferred rendering:
<<option chkDebugLazySliderDefer>> show debugging alert when deferring slider rendering
<<option chkDebugLazySliderRender>> show debugging alert when deferred slider is actually rendered
===
++++!!!!![Usage]>
When installed, this plugin adds new wiki syntax for embedding 'slider' panels directly into tiddler content. Use {{{+++}}} and {{{===}}} to delimit the slider content. Additional optional syntax elements let you specify
*default to open
*cookiename
*heading level
*floater
*rollover
*custom label/tooltip
*automatic blockquote
*deferred rendering
The complete syntax, using all options, is:
//{{{
++++(cookiename)!!!!!^*[label|tooltip]>...
content goes here
===
//}}}
where:
* {{{+++}}} (or {{{++++}}}) and {{{===}}}^^
marks the start and end of the slider definition, respectively. When the extra {{{+}}} is used, the slider will be open when initially displayed.^^
* {{{(cookiename)}}}^^
saves the slider opened/closed state, and restores this state whenever the slider is re-rendered.^^
* {{{!}}} through {{{!!!!!}}}^^
displays the slider label using a formatted headline (Hn) style instead of a button/link style^^
* {{{"^"}}} //(without the quotes)//^^
makes the slider 'float' on top of other content rather than shifting that content downward^^
* {{{"*"}}} //(without the quotes)//^^
automatically opens/closes slider on "rollover" as well as when clicked^^
* {{{[label]}}} or {{{[label|tooltip]}}}^^
uses custom label/tooltip. (defaults are: ">" (more) and "<" (less)^^
* {{{">"}}} //(without the quotes)//^^
automatically adds blockquote formatting to slider content^^
* {{{"..."}}} //(without the quotes)//^^
defers rendering of closed sliders until the first time they are opened. //Note: deferred rendering may produce unexpected results in some cases. Use with care.//^^
//Note: to make slider definitions easier to read and recognize when editing a tiddler, newlines immediately following the {{{+++}}} 'start slider' or preceding the {{{===}}} 'end slider' sequence are automatically supressed so that excess whitespace is eliminated from the output.//
===
++++!!!!![Examples]>
simple in-line slider:
{{{
+++
content
===
}}}
+++
content
===
----
use a custom label and tooltip:
{{{
+++[label|tooltip]
content
===
}}}
+++[label|tooltip]
content
===
----
content automatically blockquoted:
{{{
+++>
content
===
}}}
+++>
content
===
----
all options combined //(default open, cookie, heading, floater, rollover, label/tooltip, blockquoted, deferred)//
{{{
++++(testcookie)!!!^*[label|tooltip]>...
content
===
}}}
++++(testcookie)!!!^*[label|tooltip]>...
content
===
----
complex nesting example:
{{{
+++^[get info...|click for information]
put some general information here, plus a floating slider with more specific info:
+++^[view details...|click for details]
put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===
===
===
}}}
+++^[get info...|click for information]
put some general information here, plus a floating slider with more specific info:
+++^[view details...|click for details]
put some detail here, which could include a rollover with a +++^*[glossary definition]explaining technical terms===
===
===
----
nested floaters
>menu: <<tiddler NestedSlidersExample>>
(see [[NestedSlidersExample]] for definition)
----
===
+++!!!!![Installation]>
import (or copy/paste) the following tiddlers into your document:
''NestedSlidersPlugin'' (tagged with <<tag systemConfig>>)
===
+++!!!!![Revision History]>
++++[2006.02.16 - 1.7.7]
corrected deferred rendering to account for use-case where show/hide state is tracked in a cookie
===
++++[2006.02.15 - 1.7.6]
in adjustSliderPos(), ensure that floating panel is positioned completely within the browser window (i.e., does not go beyond the right edge of the browser window)
===
++++[2006.02.04 - 1.7.5]
add 'var' to unintended global variable declarations to avoid FireFox 1.5.0.1 crash bug when assigning to globals
===
++++[2006.01.18 - 1.7.4]
only define adjustSliderPos() function if it has not already been provided by another plugin. This lets other plugins 'hijack' the function even when they are loaded first.
===
++++[2006.01.16 - 1.7.3]
added adjustSliderPos(place,btn,panel,panelClass) function to permit specialized logic for placement of floating panels. While it provides improved placement for many uses of floating panels, it exhibits a relative offset positioning error when used within *nested* floating panels. Short-term workaround is to only adjust the position for 'top-level' floaters.
===
++++[2006.01.16 - 1.7.2]
added button property to slider panel elements so that slider panel can tell which button it belongs to. Also, re-activated and corrected animation handling so that nested sliders aren't clipped by hijacking Slider.prototype.stop so that "overflow:hidden" can be reset to "overflow:visible" after animation ends
===
++++[2006.01.14 - 1.7.1]
added optional "^" syntax for floating panels. Defines new CSS class, ".floatingPanel", as an alternative for standard in-line ".sliderPanel" styles.
===
++++[2006.01.14 - 1.7.0]
added optional "*" syntax for rollover handling to show/hide slider without requiring a click (Based on a suggestion by tw4efl)
===
+++[2006.01.03 - 1.6.2]
When using optional "!" heading style, instead of creating a clickable "Hn" element, create an "A" element inside the "Hn" element. (allows click-through in SlideShowPlugin, which captures nearly all click events, except for hyperlinks)
===
+++[2005.12.15 - 1.6.1]
added optional "..." syntax to invoke deferred ('lazy') rendering for initially hidden sliders
removed checkbox option for 'global' application of lazy sliders
===
+++[2005.11.25 - 1.6.0]
added optional handling for 'lazy sliders' (deferred rendering for initially hidden sliders)
===
+++[2005.11.21 - 1.5.1]
revised regular expressions: if present, a single newline //preceding// and/or //following// a slider definition will be suppressed so start/end syntax can be place on separate lines in the tiddler 'source' for improved readability. Similarly, any whitespace (newlines, tabs, spaces, etc.) trailing the 'start slider' syntax or preceding the 'end slider' syntax is also suppressed.
===
+++[2005.11.20 - 1.5.0]
added (cookiename) syntax for optional tracking and restoring of slider open/close state
===
+++[2005.11.11 - 1.4.0]
added !!!!! syntax to render slider label as a header (Hn) style instead of a button/link style
===
+++[2005.11.07 - 1.3.0]
removed alternative syntax {{{(((}}} and {{{)))}}} (so they can be used by other
formatting extensions) and simplified/improved regular expressions to trim multiple excess newlines
===
+++[2005.11.05 - 1.2.1]
changed name to NestedSlidersPlugin
more documentation
===
+++[2005.11.04 - 1.2.0]
added alternative character-mode syntax {{{(((}}} and {{{)))}}}
tweaked "eat newlines" logic for line-mode {{{+++}}} and {{{===}}} syntax
===
+++[2005.11.03 - 1.1.1]
fixed toggling of default tooltips ("more..." and "less...") when a non-default button label is used
code cleanup, added documentation
===
+++[2005.11.03 - 1.1.0]
changed delimiter syntax from {{{(((}}} and {{{)))}}} to {{{+++}}} and {{{===}}}
changed name to EasySlidersPlugin
===
+++[2005.11.03 - 1.0.0]
initial public release
===
===
+++!!!!![Credits]>
This feature was implemented by EricShulman from [[ELS Design Studios|http:/www.elsdesign.com]] with research, programming and suggestions from RodneyGomes, GeoffSlocock, and PaulPetterson
===
***/
// //+++!!!!![Code]
//{{{
version.extensions.nestedSliders = {major: 1, minor: 7, revision: 7, date: new Date(2006,2,16)};
//}}}
//{{{
// options for deferred rendering of sliders that are not initially displayed
if (config.options.chkDebugLazySliderDefer==undefined) config.options.chkDebugLazySliderDefer=false;
if (config.options.chkDebugLazySliderRender==undefined) config.options.chkDebugLazySliderRender=false;
// default styles for 'floating' class
setStylesheet(".floatingPanel { position:absolute; z-index:10; padding:0.5em; margin:0em; \
background-color:#eee; color:#000; border:1px solid #000; text-align:left; }","floatingPanelStylesheet");
//}}}
//{{{
config.formatters.push( {
name: "nestedSliders",
match: "\\n?\\+{3}",
terminator: "\\s*\\={3}\\n?",
lookahead: "\\n?\\+{3}(\\+)?(\\([^\\)]*\\))?(\\!*)?(\\^)?(\\*)?(\\[[^\\]]*\\])?(\\>)?(\\.\\.\\.)?\\s*",
handler: function(w)
{
var lookaheadRegExp = new RegExp(this.lookahead,"mg");
lookaheadRegExp.lastIndex = w.matchStart;
var lookaheadMatch = lookaheadRegExp.exec(w.source)
if(lookaheadMatch && lookaheadMatch.index == w.matchStart)
{
// location for rendering button and panel
var place=w.output;
// default to closed, no cookie
var show="none"; var title=">"; var tooltip="show"; var cookie="";
// extra "+", default to open
if (lookaheadMatch[1])
{ show="block"; title="<"; tooltip="hide"; }
// cookie, use saved open/closed state
if (lookaheadMatch[2]) {
cookie=lookaheadMatch[2].trim().substr(1,lookaheadMatch[2].length-2);
cookie="chkSlider"+cookie;
if (config.options[cookie]==undefined)
{ config.options[cookie] = (show=="block") }
if (config.options[cookie])
{ show="block"; title="<"; tooltip="hide"; }
else
{ show="none"; title=">"; tooltip="show"; }
}
// custom label/tooltip
if (lookaheadMatch[6]) {
title = lookaheadMatch[6].trim().substr(1,lookaheadMatch[6].length-2);
var pos=title.indexOf("|");
if (pos!=-1)
{ tooltip = title.substr(pos+1,title.length); title = title.substr(0,pos); }
else
{ tooltip += " "+title; }
}
// create the button
if (lookaheadMatch[3]) { // use "Hn" header format instead of button/link
var lvl=(lookaheadMatch[3].length>6)?6:lookaheadMatch[3].length;
var btn = createTiddlyElement(createTiddlyElement(place,"h"+lvl,null,null,null),"a",null,null,title);
btn.onclick=onClickNestedSlider;
btn.setAttribute("href","javascript:;");
btn.setAttribute("title",tooltip);
}
else
var btn = createTiddlyButton(place,title,tooltip,onClickNestedSlider);
btn.sliderCookie = cookie; // save the cookiename (if any) in the button object
// "non-click" MouseOver open/close slider
if (lookaheadMatch[5]) btn.onmouseover=onClickNestedSlider;
// create slider panel
var panelClass=lookaheadMatch[4]?"floatingPanel":"sliderPanel";
var panel=createTiddlyElement(place,"div",null,panelClass,null);
panel.style.display = show;
panel.button = btn; // so the slider panel know which button it belongs to
btn.sliderPanel=panel;
// render slider (or defer until shown)
w.nextMatch = lookaheadMatch.index + lookaheadMatch[0].length;
if ((show=="block")||!lookaheadMatch[8]) {
// render now if panel is supposed to be shown or NOT deferred rendering
w.subWikify(lookaheadMatch[7]?createTiddlyElement(panel,"blockquote"):panel,this.terminator);
// align slider/floater position with button
adjustSliderPos(place,btn,panel,panelClass);
}
else {
var src = w.source.substr(w.nextMatch);
var endpos=findMatchingDelimiter(src,"+++","===");
panel.setAttribute("raw",src.substr(0,endpos));
panel.setAttribute("blockquote",lookaheadMatch[7]?"true":"false");
panel.setAttribute("rendered","false");
w.nextMatch += endpos+3;
if (w.source.substr(w.nextMatch,1)=="\n") w.nextMatch++;
if (config.options.chkDebugLazySliderDefer) alert("deferred '"+title+"':\n\n"+panel.getAttribute("raw"));
}
}
}
}
)
// TBD: ignore 'quoted' delimiters (e.g., "{{{+++foo===}}}" isn't really a slider)
function findMatchingDelimiter(src,starttext,endtext) {
var startpos = 0;
var endpos = src.indexOf(endtext);
// check for nested delimiters
while (src.substring(startpos,endpos-1).indexOf(starttext)!=-1) {
// count number of nested 'starts'
var startcount=0;
var temp = src.substring(startpos,endpos-1);
var pos=temp.indexOf(starttext);
while (pos!=-1) { startcount++; pos=temp.indexOf(starttext,pos+starttext.length); }
// set up to check for additional 'starts' after adjusting endpos
startpos=endpos+endtext.length;
// find endpos for corresponding number of matching 'ends'
while (startcount && endpos!=-1) {
endpos = src.indexOf(endtext,endpos+endtext.length);
startcount--;
}
}
return (endpos==-1)?src.length:endpos;
}
//}}}
//{{{
function onClickNestedSlider(e)
{
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var theLabel = theTarget.firstChild.data;
var theSlider = theTarget.sliderPanel
var isOpen = theSlider.style.display!="none";
// if using default button labels, toggle labels
if (theLabel==">") theTarget.firstChild.data = "<";
else if (theLabel=="<") theTarget.firstChild.data = ">";
// if using default tooltips, toggle tooltips
if (theTarget.getAttribute("title")=="show")
theTarget.setAttribute("title","hide");
else if (theTarget.getAttribute("title")=="hide")
theTarget.setAttribute("title","show");
if (theTarget.getAttribute("title")=="show "+theLabel)
theTarget.setAttribute("title","hide "+theLabel);
else if (theTarget.getAttribute("title")=="hide "+theLabel)
theTarget.setAttribute("title","show "+theLabel);
// deferred rendering (if needed)
if (theSlider.getAttribute("rendered")=="false") {
if (config.options.chkDebugLazySliderRender)
alert("rendering '"+theLabel+"':\n\n"+theSlider.getAttribute("raw"));
var place=theSlider;
if (theSlider.getAttribute("blockquote")=="true")
place=createTiddlyElement(place,"blockquote");
wikify(theSlider.getAttribute("raw"),place);
theSlider.setAttribute("rendered","true");
}
// show/hide the slider
if(config.options.chkAnimate)
anim.startAnimating(new Slider(theSlider,!isOpen,e.shiftKey || e.altKey,"none"));
else
theSlider.style.display = isOpen ? "none" : "block";
if (this.sliderCookie && this.sliderCookie.length)
{ config.options[this.sliderCookie]=!isOpen; saveOptionCookie(this.sliderCookie); }
// align slider/floater position with target button
adjustSliderPos(theSlider.parentNode,theTarget,theSlider,theSlider.className);
return false;
}
// hijack animation handler 'stop' handler so overflow is visible after animation has completed
Slider.prototype.coreStop = Slider.prototype.stop;
Slider.prototype.stop = function() { this.coreStop(); this.element.style.overflow = "visible"; }
// adjust panel position based on button position
if (window.adjustSliderPos==undefined) window.adjustSliderPos=function(place,btn,panel,panelClass) {
///////////////////////////////////////////////////////////////////////////////
/// EXPERIMENTAL HACK - WORKS IN SOME CASES, NOT IN OTHERS
///////////////////////////////////////////////////////////////////////////////
// "if this panel is floating and the parent is not also a floating panel"...
if (panelClass=="floatingPanel" && place.className!="floatingPanel") {
var left=0; var top=btn.offsetHeight;
if (place.style.position!="relative") { left+=findPosX(btn); top+=findPosY(btn); }
if (left+panel.offsetWidth > getWindowWidth()) left=getWindowWidth()-panel.offsetWidth-10;
panel.style.left=left+"px"; panel.style.top=top+"px";
}
}
function getWindowWidth() {
if(document.width!=undefined)
return document.width; // moz (FF)
if(document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) )
return document.documentElement.clientWidth; // IE6
if(document.body && ( document.body.clientWidth || document.body.clientHeight ) )
return document.body.clientWidth; // IE4
if(window.innerWidth!=undefined)
return window.innerWidth; // IE - general
return 0; // unknown
}
//}}}
// //===
BetterTimelineMacro replaces the core timeline macro, and offers more features:
*optionally list only tiddlers with a particular tag
*exclude a tag of your liking
*set a start date for the timeline
*limit timeline to a certain number of days, eg: 7
*of course the old features like sorting by tiddler modified or created, and limiting to a maximum number of entries are both still there
/***
|Name|NewHereCommand|
|Source|http://simonbaird.com/mptw/#NewHereCommand|
|Version|1.0|
Code originally by ArphenLin. Small tweak by SimonBaird
http://aiddlywiki.sourceforge.net/NewHere_demo.html#NewHereCommand
To use this you must edit your ViewTemplate and add newHere to the toolbar div, eg
{{{<div class='toolbar' macro='toolbar ... newHere'></div>}}}
***/
//{{{
config.commands.newHere = {
text: 'new here',
tooltip: 'Create a new tiddler tagged as this tiddler',
handler: function(e,src,title) {
if (!readOnly) {
clearMessage();
var t=document.getElementById('tiddler'+title);
story.displayTiddler(t,config.macros.newTiddler.title,DEFAULT_EDIT_TEMPLATE);
story.setTiddlerTag(config.macros.newTiddler.title, title, 0);
story.focusTiddler(config.macros.newTiddler.title,"title");
return false;
}
}
};
config.commands.newJournalHere = {
//text: 'new journal here', // too long
text: 'new journal',
dataFormat: 'YYYY-0MM-0DD 0hh:0mm', // adjust to your preference
tooltip: 'Create a new journal tiddler tagged as this tiddler',
handler: function(e,src,title) {
if (!readOnly) {
clearMessage();
var now = new Date();
var t=document.getElementById('tiddler'+title);
var newtitle = now.formatString(this.dataFormat)
story.displayTiddler(t,newtitle,DEFAULT_EDIT_TEMPLATE);
story.setTiddlerTag(newtitle, title, 0);
story.focusTiddler(newtitle,"title");
return false;
}
}
};
//}}}
//{{{
merge(config.macros,{
newHere: {
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
wikify("<<newTiddler "+paramString+" tag:[["+tiddler.title+"]]>>",place,null,tiddler);
}
}
});
//}}}
+++[séquence 08]
* S1:[[Evaluation de lecture|Evaluation de lecture No Pasaran]]
* S2: [[Les références historiques du roman|Références historiques (No Pasaran)]]
* S3: Rechercher sur le Net des avis de lecteurs, débattre de leur opinion
* S4: Argumenter 1: identifier thème et thèse (leçon + ex p367 et 368)
* S5: Argumenter 2:+++[Trouver ses idées]
Sujet: Les jeux videos rendent les jeunes violents, idiots et renfermés sur eux-mêmes.
Discutez cette affirmation
Chercher des locuteurs, des pourquoi, des arguments et des exemples à cette thèse et sa "contre-thèse"===
* S6: Argumenter 3: Organiser ses idées
* S7: Argumenter 4: +++[A faire et ne pas faire]
Lecture de l'argumentation des élèves et discussion à partir de leurs textes
! A ne pas faire
# "Moi, je", "personnellement": votre avis doit être présenté comme objectif et valable pour tous
# Eviter de jurer sa bonne foi: vos arguments doivent suffir à convaincre; ne vous mettez pas en jeu
! A faire
# S'adresser à son interlocuteur comme s'il avait des difficultés de compréhension. Marquer son raisonnement par des jalons ("D'abord...Ensuite...Enfin" ou "....donc/car...")
# S'adresser à son interlocuteur comme s'il n'y connaissait rien: détailler son point de vue (expliquer, par exemple, les différents types de jeux qui existent)
===
* S8: Rédiger une argumentation.+++[Sujet des effets des jeux videos] (voir S4)
Notre thèse: la citation a raison.
Plan en classe (rédaction à la maison)
# Introduction
Dire le sujet. Ce que l'on en comprend. Préciser ce qui peut être obscur pour certains (c'est quoi un jeu video)
# contre-thèse
1.tous les jeux ne sont pas identiques. Ex: jeux éducatifs
2.On joue entre amis ou en réseau. Expliquer ce que ça signifie. Expliquez les relations que l'on a. Ex: adolescent qui serait seul sans jeu en réseau.
3.Les jeux ne génèrent pas plus de violence que la télévision, les films ou même la réalité. Ex d'un film, ou de l'actualité.
# La thèse que l'on défend.
1.Les adolescents abandonnent tous les autres centres d'intérêt. Avec leurs amis, ils ne parlent que de ça. Qu'est-ce qu'ils manquent?
2.Les adolescents n'ont pas de véritables amis
3.Rester devant un écran nuit à la santé et à l'intelligence.
4.La violence de certains jeux peut modifier le comportement. A force de passer bcp de temps devant le jeu, qd on sort, on y pense encore, on le reproduit.
EX: Un jeu fini, on continue à y jouer.
5.L'agressivité n'est pas défoulée, mais accrue par la violence. (Ex: des ados qui ont tués d'autres, en affirmant faire la même chose que dans les jeux.
#Conclusion
===
* S9: [[Rapporter une expérience fantastique]]
* S10: [[Le schéma narratif et le résumé du livre No Pasaran]]
===
S1: [[Première réception de No Pasaran]]
[[Liens sur le sujet ddu danger des jeux videos]]
* Sujet du film: ==inceste== > comment parler de l'inceste, ou aussi bien, comment faire valoir sa parole contre celle de son père. Voilà pourquoi ça les a passionnés.
* Caméra dans un coin du plafond, comme une caméra de surveillance. Question à toujours se poser: qui surveille ? Tous à la merci du père, de son autorité (dans l'autre sens plutôt)
*Verre d'eau/plongée dans le bain/lettre/verre/visage/lettre > réveil
* 1ère révélation du secret: la soeur le cache
* Pépé court avec les cymbales; image avec filtre (du souvenir) > qui sont les enfants ?
* Quels signes annoncent la révélation: préoccupation du grand, "je ne dors qu'avec toi", travelling sur le visage du père.
* Ce film est-il une allégorie ?
!! Etapes de la révélation
!!! 1ère réaction: silence
Aieul parle pour raconter autre chose (il est sourd)
Bilan selon Kim: rien n'a changé (rôle de "ceux de la cuisine", qui poussent, comme l'inconscient, pour faire jaillir dans le réel)
Soeur nie ce qu'elle sait une vérité.
Le père va nier au fils, en face, l'écraser de son autorité
Intermède: blague scatologique de l'aieul/aide de la cuisine / arrivée du noir (sic)
!!! 2ème réaction: toast
réaction: pause cigarette pour tous, seul Christian continue à manger
Chacun essaie de prendre la fuite de son côté, refuse cette vérité.
Demi-frère frappe Michelle
Menaces du père de révéler "qui" est Christian: un enfant violent, un adolescent interné, un frère absent.
Ch. tiendra-t-il le coup ? question après que Gbart (? le copain de la soeur) lui ait parlé.
Discours de la mère, qui condamne l'attitude de Christian > accent sur la réussite.
(la mère est pire que le père malgré ses "dehors", ce que confirme son racisme) > elle accuse son fils de folie. Christian enchaine les verres.
Tension du film vient du doute du spectateur à ce que Christian tienne le coup, de la violence de son propos et de l'apathie de l'assistance.
!! 3ème révélation: le silence complice de la mère
+ invectives et insultes
> mis à la porte par son frère/ engueulade
Intermède du roitelet, chanté par
!! 4: propos "grossiers": "tu as vu sa grosse queue se branler dans mes cheveux"
> le père le traite de fou
Il se fait cogner puis enchaîner (dans la forêt, rare espace non-humain du film)
Michael ment à sa soeur, en crise d'hystérie.
Gbartokai a le rôle de spectateur, à notre instar, il prend tout de suite parti pour Christian.
!! Parade finale
Tout est joué ? Personne dans la chenille ne semble voir Christian.
(Rôle des Prénoms ? Christian, Hélène, Michael + Mette, Michelle, Kim)
Lecture du testament
Parole qui libère est clos le "débat" est celle de la morte.
> père vraiment isolé, il perd sa contenance, sa façade de respectabilité
!! Qu'est-ce que DOGMA
* Deux hommes: Thomas Vinterberg et Laars Von Triers
* une opposition au cinéma et à ses effets narratifs: montage, musique, décor, amquillage...etc
> pas de maquillage, son direct, la caméra se place en fonction des personnes et non l'inverse, éclairage naturel
!! Etudier la "mort" de Christian et sa renaissance
Part-il avec sa soeur; elle est enfin libérée, comme un fantôme.
Michael "casse la gueule" à son père: "Ferme ta gueule", "j'en ai trop entendu", "tu ne bouges pas", "fini, la famille".
Dernière image: visage tendu de Christian, tension qui ne disparaîtra jamais
Générique: noms dans des filtres à effet d'eau (encore, après les baignoires et les verres, bonjour la psychanalyse de bazar qu'on peut faire.
Séquence 8: Ecrire un « roman dont vous êtes le héros »
S1: Lecture collective
S2: Ecriture d'un début par les élèves
S3: Premiers repères de l'histoire
« roman dont vous êtes le héros »: rdvelh
rdvelh, c'est un genre littéraire : c'est écrit à la 2ème personne (de politesse); Le « je » est réservé au narrateur. C'est écrit au présent de l'indicatif; c'est organisé en paragraphes (à la fin des paragraphes, le lecteur doit choisir sa direction)
Déterminer un lieu fermé: le collège
Déterminer un motif
Séance 4: Créer un monstre.
Imaginer une fiche d'identité d'un monstre
Caractère
Physique
Arme(s)
Lieu
Nom/type
Prof
<!--{{{-->
<div id='header' class='header'>
<div class='headerShadow'>
<span class='searchBar' macro='search'></span>
<span class='siteTitle' refresh='content' tiddler='SiteTitle'></span>
<span class='siteSubtitle' refresh='content' tiddler='SiteSubtitle'></span>
</div>
<div id='topMenu' refresh='content' tiddler='MainMenu'></div>
</div>
<div id='sidebar'>
<div id='sidebarOptions' refresh='content' tiddler='HaemoSideBarOptions'></div>
<div id='sidebarTabs' refresh='content' force='true' tiddler='SideBarTabs'></div>
</div>
<div id='displayArea'>
<div id='messageArea'></div>
<div id='tiddlerDisplay'></div>
</div>
<div id='contentFooter' refresh='content' tiddler='contentFooter'></div>
<!--}}}-->
!Séance 1: Comment avez-vous reçu ce livre ?
Ce livre plaît en général (en tout cas pour ceux qui l'ont lu).
l'action, au sens de l'histoire: comment du début on arrive à la fin (surtout comment ça se termine)
les personnages: quel est le « héros » ? (s'il y en a un)
[NB: A quoi identifie-t-on le héros (perso. Principal?
c'est celui qui a les meilleures qualités..
c'est celui qui évolue à travers le schéma narratif.
c'est celui auquel le lecteur s'identifie.
c'est celui à qui le titre fait référence.
c'est celui qui est le plus présent.
On peut souvent hésiter entre plusieurs personnages; il suffit d'une seule définition. ]
!S1: Premières remarques
Qu'est-ce qui plaît dans un livre ? Un personnage, une histoire, type d'histoire (SF, amour...) ou type d'action (bataille, bisous...).
Dans un même livre, ce n'est pas la même chose qui plaît à 2 personnes.
Rôle de l'identification à un héros: il touche le lecteur « quelque part ».
[NB: A quoi identifie-t-on le héros (perso. principal?)
c'est celui qui a les meilleures qualités.
c'est celui qui évolue à travers le schéma narratif.
c'est celui auquel le lecteur s'identifie.
c'est celui à qui le titre fait référence.
c'est celui qui est le plus présent.
.........
On peut souvent hésiter entre plusieurs personnages; il suffit d'une seule définition.
!S2: Lire le début du livre
Le début d'un livre s'appelle l' incipit. C'est un moment particulier, parce que c'est le premier contact avec l'histoire. Donc il faut que l'incipit remplisse plusieurs fonctions:
permettre au lecteur de situer l'histoire (qui ? Où ? Quand ?)
permettre au lecteur de situer le genre de l'histoire (SF, policier...)
donner envie de continuer en suscitant la curiosité du lecteur.
Ce doit être efficace.
Importance de l'ellipse (oubli, passé sous silence) et flash-back.
Ordre de l'histoire et du récit ne coïncident pas.
Remarque
Un prologue se situe avant une histoire, (étymologie : « avant-parole » = un avant-propos).
Une introduction: une présentation du thème , dans un texte argumentatif ou explicatif.
Situation Initiale: état des personnages, au seuil de l'action .
[L'incipit est dans le récit, la SI dans l'histoire]
Rédiger un incipit pour l'histoire de Cendrillon
!S6: Les titres
A quoi sert un titre.
1.A identifier le livre/chapitre.
2.Le résumer en donnant une idée du « contenu ».
3.Susciter la curiosité du lecteur.
Idées pour titrer
1.le nom du personnage principal/ qui apparaît dans le chapitre (ou un terme le désignant indirectement, pour ne rien dévoiler à l'avance).
2.Il faut prendre un mot, une phrase ou un événement marquant dans le texte.
3.La façon de « titrer » dépend de l'époque de la création de l'oeuvre (plus largement, de son contexte).
Remarques:
Existe-t-il une oeuvre dont le titre ne veuille rien dire (ex: qdfuij dfqer)
Exemple d'un titre du 16ème siècle: (Ce chapitre raconte) Comment Lazare servit un bulliste, et des choses qu’il vit avec lui (ellipse de ce qui est souligné)
Exercices:
1.Trouver un autre titre pour ce roman. Justifier son choix.
2.Titrer tous les chapitres de la cinquième partie du roman.
S1: Réfléchir au titre et au paratexte.
Ou
Partir de ce qu'ils ont aimé: quels passages, quels personnages, quelles situations ?
* Partir de leur ressenti, de l'implication du lecteur pour arriver à l'identification. Notion qui doit leur être étrangère – mais centrale (curieux, je crois que je ne l'ai jamais évoquée).
Chercher des types de lecteurs à associer à des types de lectures: Arlequins (ménagère ou midinette), roman de guerre (vieux), livre dont vous êtes le héros ou SF (ado, à l'origine). Et chercher ce qui leur plaît dans ces genres: types de personnages, valeurs diffusées....
Chercher (plus loin que les passages qu'ils ont aimé) sur quoi s'appuie leur ressenti.
Finalement, c'est le problème de l'effet du livre sur le lecteur: cible atteinte/ visée ?
Notion de destinataire d'un livre, de lecteur idéal ou imaginé par l'auteur.
Place pour l'horizon d'attente, puisque on va déboucher sur la somme des lectures ?
S2: Paratexte.
Listage de tout ce qui est « para »texte. Rôle.
Titre. Histoire: classement, résumé, puis accroche.
« Petit frère »: problème de l'énonciateur. Enonciation dans le livre.
S3: Discours Indirect + Discours Ind Libre.
Trouver un passage à convertir. Montrer les limites de la conversion. Accélérer pour le DIL.
Conditionnel présent – sub interr ind
S4: Discours explicatif (re et re)
Trouver un passage. L'avantage, c'est que les explications sont biaisées et fausses, fortement argumentatives.
S5: Rythme de la narration.
Nombreuses ellipses. Les relever. Leur Rôle ?
S6: Orthographe ???????????
S7: Eval finale ?
Texte sur le clonage.
|<<siteMap cours . sliders>>|<<siteMap orthographe . sliders>>|<<siteMap grammaire . sliders>>|<<siteMap exercices . sliders>>|<<siteMap leçons . popups>>|
|<<siteMap Lecture . sliders>> | <<siteMap séquences . sliders>>|
// --------------------------------------------------------------------
// Calendar
// --------------------------------------------------------------------
config.macros.calendar = {holidays: []};
config.macros.calendar.options = {
// day week starts from (normally 0-Su or 1-Mo)
calendarWeekStart: 1,
calendarToday: "Today",
calendarHoliday: "Holiday: ",
calendarLongDateFormat: "0MM/0DD/YYYY",
calendarShortDateFormat: "0MM/0DD",
calendarTag: ["schedule"]
};
/***************************************************************************
** Internal functions
***************************************************************************/
var cldTag;
config.macros.calendar.calendarIsHoliday = function(date) {
var cm = config.macros.calendar;
var longHoliday = date.formatString(cm.options.calendarLongDateFormat);
var shortHoliday = date.formatString(cm.options.calendarShortDateFormat);
for(var i = 0; i < cm.holidays.length; i++) {
if(cm.holidays[i][0] == longHoliday || cm.holidays[i][0] == shortHoliday) {
return cm.holidays[i];
}
}
return null;
}
config.macros.calendar.onClickOtherDay = function() {
var day = this.getAttribute('tiddlylink');
story.displayTiddler(null,day,DEFAULT_EDIT_TEMPLATE);
for(var i=0; i<cldTag.length;i++){
Story.prototype.setTiddlerTag(day, cldTag[i], 1);
}
Story.prototype.focusTiddler(day,"text");
}
config.macros.calendar.getPopupText = function(title) {
var popup_entries = store.getTiddlerText(title).split("\n");
var popup = popup_entries[0];
if(popup_entries.length>1) popup += " ...";
return popup;
}
config.macros.calendar.findCalendar = function(child) {
var parent;
while (child && child.parentNode) {
parent = child.parentNode;
if (parent.id == "calendarWrapper") {
return parent;
}
child = parent;
}
return null;
}
config.macros.calendar.selectDate = function(e) {
if (!e) var e = window.event;
var cm = config.macros.calendar;
var calendar = cm.findCalendar(this);
if (calendar) {
var d = this.getAttribute("date");
if (d != null) cm.makeCalendar(calendar, new Date(new Number(d)));
}
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
}
config.macros.calendar.makeCalendar = function(calendar, dt_current) {
var cm = config.macros.calendar;
var dt_today = new Date(new Number(calendar.getAttribute("today")));
var currentDay = new Date(new Number(calendar.getAttribute("currentDay")));
var setControls = calendar.getAttribute("setControls");
calendar.setAttribute("date", dt_current.valueOf());
while (calendar.hasChildNodes())
calendar.removeChild(calendar.firstChild);
if(setControls==1){
// get same date in the previous year
var dt_prev_year = new Date(dt_current);
dt_prev_year.setFullYear(dt_prev_year.getFullYear() - 1);
if (dt_prev_year.getDate() != dt_current.getDate())
dt_prev_year.setDate(0);
// get same date in the next year
var dt_next_year = new Date(dt_current);
dt_next_year.setFullYear(dt_next_year.getFullYear() + 1);
if (dt_next_year.getDate() != dt_current.getDate())
dt_next_year.setDate(0);
// get same date in the previous month
var dt_prev_month = new Date(dt_current);
dt_prev_month.setMonth(dt_prev_month.getMonth() - 1);
if (dt_prev_month.getDate() != dt_current.getDate())
dt_prev_month.setDate(0);
// get same date in the next month
var dt_next_month = new Date(dt_current);
dt_next_month.setMonth(dt_next_month.getMonth() + 1);
if (dt_next_month.getDate() != dt_current.getDate())
dt_next_month.setDate(0);
}
// get first day to display in the grid for current month
var dt_firstday = new Date(dt_current);
dt_firstday.setDate(1);
dt_firstday.setDate(1 - (7 + dt_firstday.getDay() - cm.options.calendarWeekStart) % 7);
var area, header;
var line, cell, i;
// 1 - calendar header table
// 2 - print weekdays titles
// 3 - calendar days table
calendar.cellPadding = 0;
calendar.cellSpacing = 0;
area = createTiddlyElement(calendar, "tbody");
// 1 - calendar header table
header = createTiddlyElement(area,"tr", "calendarHeader");
header.cellPadding = 0;
header.cellSpacing = 0;
if(setControls==1){
var headerValues = [
[ "<<", "selectYear", dt_prev_year.valueOf() ],
[ "<", "selectMonth", dt_prev_month.valueOf() ],
[ config.messages.dates.months[dt_current.getMonth()] + ' ' + dt_current.getFullYear(),
"selectToday", dt_today.valueOf() ],
[ ">", "selectMonth", dt_next_month.valueOf() ],
[ ">>", "selectYear", dt_next_year.valueOf() ]
];
for (i = 0; i < headerValues.length; ++i) {
var link = createTiddlyElement(header,"td", null, null, headerValues[i][0]);
if(i==2) link.colSpan=3;
link.onclick = cm.selectDate;
link.setAttribute("date", headerValues[i][2]);
}
} else {
var link = createTiddlyElement(header,"td", null, null,
config.messages.dates.months[dt_current.getMonth()] + ' ' + dt_current.getFullYear());
//cm.options.calendarMonths
link.colSpan=7;
}
// 2 - print weekdays titles
line = createTiddlyElement(area, "tr", "weekNames");
for (var n = 0; n < 7; ++n) {
createTiddlyElement(line, "td", null, null, config.messages.dates.shortDays[(cm.options.calendarWeekStart + n)%7]);
//cm.options.calendarWeekDays
}
// 3 - calendar days table
var dt_current_day = new Date(dt_firstday);
var day_class;
var title;
var holiday;
var popup;
var clickHandler;
while (dt_current_day.getMonth() == dt_current.getMonth() ||
dt_current_day.getMonth() == dt_firstday.getMonth()) {
// print row header
line = createTiddlyElement(area, "tr", "calendarLine", null, null);
for (var n_current_wday = 0; n_current_wday < 7; ++n_current_wday) {
title = dt_current_day.formatString(cm.options.calendarLongDateFormat);
clickHandler = cm.onClickOtherDay;
popup = null;
holiday = cm.calendarIsHoliday(dt_current_day);
if (holiday != null) {
// holidays
day_class = (holiday.length==3)? holiday[2]: "holiDay";
popup = cm.options.calendarHoliday + holiday[1];
} else if (dt_current_day.getDay() == 0 || dt_current_day.getDay() == 6) {
// weekend days
day_class = "weekDay";
} else {
// print working days of current month
day_class = "workingDay";
}
if(dt_current_day.getMonth() == dt_current.getMonth()){
if (currentDay.valueOf() == dt_current_day.valueOf()) {
// print current date
if (store.tiddlerExists(title)){
// day has a tiddler associated with it
day_class += " currentscheduledDay";
clickHandler = onClickTiddlerLink;
popup = cm.options.calendarToday + ": "+ cm.getPopupText(title);
} else {
day_class += " currentDay";
popup = cm.options.calendarToday;
}
}
if (store.tiddlerExists(title) && store.getTiddler(title).isTagged(cldTag[0]) && dt_current_day.valueOf() != dt_today.valueOf()) {
// day has a tiddler associated with it
day_class += " scheduledDay";
clickHandler = onClickTiddlerLink;
popup = cm.getPopupText(title);
}
}
// extra formatting for days of previous or next month
if (dt_current_day.getMonth() != dt_current.getMonth()) {
day_class += " otherMonthDay";
}
var text = dt_current_day.getDate();
var cell = createTiddlyElement(line, "td", null, day_class, text);
cell.onclick=clickHandler;
cell.setAttribute("date", dt_current_day.valueOf());
cell.setAttribute("tiddlyLink", title);
if(popup) cell.setAttribute("title", popup);
dt_current_day.setDate(dt_current_day.getDate()+1);
}
}
}
config.macros.calendar.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var start_date = new Array();
var date = new Date();
var cldParams = paramString.parseParams('calendarParams', null, true);
var cldYear = (cldParams[0].year)?parseFloat(cldParams[0].year[0]): date.getFullYear();
var cldMonth = (cldParams[0].month)?parseFloat(cldParams[0].month[0]): date.getMonth();
var n_months = (cldParams[0].numberMonths)?parseFloat(cldParams[0].numberMonths[0]): 1;
var n_cols = (cldParams[0].numberColumns)?parseFloat(cldParams[0].numberColumns[0]): 3;
cldTag = (cldParams[0].tag)?cldParams[0].tag[0].split("#"): config.macros.calendar.options.calendarTag;
for(var i = 0; i < n_months; i++){
start_date[i] = new Date(cldYear, cldMonth+i, 1);
}
var n_rows = Math.max(1,Math.ceil(n_months/n_cols));
n_cols = Math.min(n_cols,n_months);
var setControls=(n_months>1)? 0: 1;
var currentDay = new Date();
currentDay = new Date(currentDay.getFullYear(), currentDay.getMonth(), currentDay.getDate());
var holder = createTiddlyElement(place, "table", null,"calendarHolder");
var holderTable = createTiddlyElement(holder, "tbody");
for(var i = 0; i < n_rows; i++){
var holderLine = createTiddlyElement(holderTable, "tr");
for(var j = 0; j < n_cols; j++){
var holderCell = createTiddlyElement(holderLine, "td");
if(n_cols*i+j+1<=n_months){
var calendar = createTiddlyElement(holderCell, "table", "calendarWrapper");
calendar.setAttribute("name", "calendarWrapper");
calendar.setAttribute("setControls", setControls);
calendar.setAttribute("today", start_date[n_cols*i+j].valueOf());
calendar.setAttribute("currentDay", currentDay.valueOf());
config.macros.calendar.makeCalendar(calendar, start_date[n_cols*i+j]);
}
}
}
}
function refreshCalendars(hint) {
var calendars = document.getElementsByName("calendarWrapper");
var i, c;
for (i = 0; i < calendars.length; ++i) {
c = calendars.item(i);
if (c.id == "calendarWrapper") {
config.macros.calendar.makeCalendar(c, new Date(new Number(c.getAttribute("date"))));
}
}
}
store.addNotification(null, refreshCalendars);
setStylesheet("/***\n!Calendar Styles\n***/\n/*{{{*/\n .viewer .calendarHolder {\n margin-left: auto;\n margin-right: auto;\n border: none;\n}\n\n .viewer .calendarHolder table {\n border: none;\n margin: 0;\n}\n\n .viewer .calendarHolder tr {\n border: none;\n vertical-align: top;\n}\n\n .viewer .calendarHolder td {\n border: none;\n vertical-align: top;\n}\n\n .viewer #calendarWrapper {\n width: 21em;\n border: 2px solid #4682b4;\n cursor: pointer;\n}\n\n #calendarWrapper #calendarLine td {\n height: 2.5em;\n}\n\n #calendarWrapper tr {\n border:none;\n}\n\n #calendarWrapper td {\n text-align: center;\n vertical-align: middle;\n width: 14.28%;\n border:none;\n}\n\n #calendarWrapper #calendarHeader td{\n color: #0044BB;\n background-color: #FFF;\n height: 2em;\n}\n\n #calendarWrapper #weekNames td {\n color: #0044BB;\n background-color: #FFF;\n height: 2em;\n}\n\n #calendarWrapper .weekDay {\n background-color: #FFF;\n}\n\n #calendarWrapper .holiDay {\n background-color: #0044BB;\n}\n\n #calendarWrapper .currentDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .currentscheduledDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .workingDay {\n background-color: #FFF;\n}\n\n #calendarWrapper .scheduledDay {\n border: solid orange 2px;\n}\n\n #calendarWrapper .otherMonthDay {\n background-color: #0044BB;\n}\n\n/*}}}*/","CalendarStyles");
!POMPÉI
Ensevelie lors d’une éruption du Vésuve en 79 après J.-C., Pompéi est le document le plus important que l’on possède sur la vie et l’aspect d’une ville de moyenne importance de l’Antiquité romaine. Elle montre la civilisation d’un centre commercial et agricole dont la situation économique était florissante et constitue une source incomparable pour la connaissance de la vie quotidienne à l’époque romaine et de son artisanat. Des vestiges de la culture italique qui a précédé la domination de Rome s’y trouvent unis aux témoignages de la vie romaine du premier siècle de l’Empire, profondément imprégnés de l’héritage de la culture hellénistique. Dans le voisinage immédiat de la ville antique est née, au XIXe siècle, une petite ville moderne autour d’un sanctuaire (la Madone-du-Rosaire) fondé en 1876. Un observatoire destiné à la volcanologie et un musée du Vésuve s’y trouvent aussi. Pompéi fait partie de la province de Naples et est située à 25 kilomètres de cette ville.
!!1. Histoire de la ville antique
!!!Fondation et extensions
Les noms latin Pompeii et grec Pomp´¨cíoi ne donnent pas d’indications sur les origines de la ville. La recherche archéologique a distingué un premier noyau habité établi sur une ancienne langue de lave constituant un haut plateau escarpé sur trois côtés. Au sud, il dominait la mer, que les apports successifs de matériaux éruptifs et alluvionnaires ont éloignée maintenant de 4 kilomètres environ. Il semble avoir été fondé par les Osques, qui dominaient la Campanie au VIIe siècle avant J.-C. Le centre de ce noyau correspond au forum des époques postérieures. Une extension vers l’est et une régularisation urbanistique eurent lieu au VIe siècle, sous l’influence étrusque. Sur le forum de Pompéi, le temple dédié à Apollon est reconnu comme le plus ancien. Érigé au VIe siècle, à l’emplacement d’une aire sacrée où s’élevait un autel, ce temple montre dans son style l’influence exercée par la communauté grecque de Cumes, aussi bien avant qu’après la domination des Étrusques. Des dédicaces portant des inscriptions en langue étrusque ont été retrouvées dans la zone du temple.
Un troisième et définitif agrandissement de la ville s’effectua suivant un plan d’urbanisation préétabli, à partir de la grande voie (la «voie de Stabies» ) qui traverse l’agglomération de la «porte du Vésuve» à la «porte de Stabies». Au VIe siècle, la superficie de la ville était de 7,5 hectares environ (le noyau le plus ancien de Rome, sur le Palatin, comptait, lui, environ 10 hectares), et à l’intérieur des murs, à l’époque du troisième agrandissement de la ville, cette superficie atteignit à peu près 66 hectares. Mais, même au temps de son plus grand développement, environ 44 hectares seulement étaient couverts d’habitations, le reste étant occupé par des jardins et, en particulier au nord de la «voie de l’Abondance», par des jardins potagers et des champs. Les avis sont partagés quant à l’époque à laquelle aurait eu lieu le troisième agrandissement de la ville, le plus important. Certaines études paraissent donner raison à ceux qui ont estimé qu’il n’était pas antérieur mais postérieur à la conquête de la ville par les Samnites. Ces derniers étaient descendus des montagnes de l’intérieur en 425 avant J.-C. et avaient constitué dans la Campanie du Sud une fédération ayant pour capitale Nocera (Nuceria). Selon les recherches des années 1960, le grand développement urbanistique de Pompéi remonterait au IIIe siècle et non pas au début du Ve; il porterait donc une empreinte samnite et non pas étrusque. L’aire enclose entre les murs n’était pas entièrement construite. Le quartier sud-est, orienté vers l’amphithéâtre, semble ne s’être développé qu’avec la colonisation romaine. On ne peut évaluer que de façon incertaine la population à l’époque de la plus grande extension de la ville. Selon les différents spécialistes, ce nombre oscille entre 8 000 et 16 000 à 20 000, et, sur le territoire, qui comprenait des villas et des fermes, entre 30 000 et 40 000; ce sont les chiffres les plus bas qui paraissent aujourd’hui les plus vraisemblables. Il ressort des inscriptions que, dès la période samnite, il existait des fonctionnaires (aediles) chargés de réglementer le développement de l’urbanisme et la circulation dans les rues pour les piétons et pour les bêtes de somme. Les grosses pierres qui permettaient la traversée des chaussées sont une caractéristique des rues de Pompéi, due à la hauteur des trottoirs, elle-même nécessaire parce qu’il n’existait pas d’égouts pour l’écoulement des eaux de pluie. Les sources manquant, le problème de l’approvisionnement en eau avait été résolu grâce à des citernes destinées à recueillir l’eau de pluie coulant des toits des maisons. Pendant la période romaine, sous Auguste, on construisit un aqueduc partant du fleuve Serinus, qui débouchait dans une centrale de distribution située près de la porte du Vésuve. C’est de cette centrale que, par des conduites souterraines de plomb et de terre cuite, l’eau était amenée aux thermes, à la palestre et aux fontaines publiques disséminées dans la ville, ainsi qu’aux fontaines privées, dans les jardins des maisons particulières les plus riches. Le débit de l’eau était réglé par des piliers élévateurs, répartis dans les différents quartiers.
Il est établi que la ville fut habitée par des Osques, des Étrusques et des Samnites, ce qui confirme ce qu’avait écrit, à la fin du Ier siècle avant J.-C., le géographe grec Strabon (V, 247), qui atteste la navigabilité du fleuve Sarnus. Il considère Pompéi comme le port de Nola, Nuceria et Acerra, situées plus à l’intérieur. Il n’est question de la ville que dans la première des trois guerres de Rome contre les Samnites, guerre au cours de laquelle elle repoussa une incursion de marins et de soldats en 310 avant J.-C. (Tite-Live, IX, XXXVIII, 2-3). Après la troisième guerre (290 av. J.-C.), les Samnites furent obligés de contracter une «alliance» avec Rome, qui incluait l’acceptation de la politique étrangère romaine, la fourniture de troupes sur sa demande, l’obligation de vivre en paix avec les peuples voisins. Il ne semble pas que Pompéi, bien qu’elle fût restée fidèle à Rome, ait subi de dommages au cours de la guerre désastreuse qui suivit la descente d’Hannibal en Italie (218-201). Plus d’un siècle s’était écoulé lorsque les alliés italiques s’unirent contre Rome (Guerre sociale), non pas pour reconquérir leur indépendance, mais pour obtenir davantage de droits pour leurs groupes dominants, surtout le droit de cité romain. Pompéi fut occupée alors par les troupes italiques et assiégée par l’armée romaine (89 av. J.-C.). Conquise, elle ne fut pas punie par la destruction, comme ce fut le cas de Stabies, mais seulement par une occupation militaire. Par la suite, transformée en colonie, elle s’appela colonia Veneria Cornelia, du nom du dictateur L. Cornelius Sylla et de celui de la Vénus pompéienne. Des vétérans et des citoyens romains s’y établirent (cf. Cicéron, Pro Sulla).
!!!La destruction et les fouilles
En 62 après J.-C. (63 selon certaines sources), Pompéi fut secouée par un tremblement de terre qui détruisit quelques édifices et rendit nécessaires des réparations dans presque toutes les maisons. Ces réparations n’étaient pas toutes terminées lorsque, en l’année 79, eut lieu l’éruption du Vésuve, que l’on considérait éteint pour toujours. Cette éruption débuta le 24 août, selon la tradition littéraire, et se poursuivit pendant trois jours. Mais certaines observations botaniques amènent à proposer une correction des textes et font supposer qu’elle se produisit en novembre. Pompéi ne fut pas atteinte par la lave (comme Herculanum), mais fut ensevelie sous une couche de lapilli et de cendres d’une épaisseur de 4 à 6 mètres. Une description de cette éruption a été donnée dans une lettre de Pline le Jeune à Tacite (Ep., VI, 16), relatant la mort de son oncle, Pline l’Ancien. Ce dernier, accouru avec les navires de la flotte de Misène placée sous son commandement, fut victime de sa curiosité scientifique. La ville fut abandonnée et on perdit le souvenir de son emplacement. Les fouilles des ruines débutèrent au printemps de 1748, dix ans après la découverte d’Herculanum ; mais c’est plus tard qu’on eut la certitude qu’il s’agissait effectivement de Pompéi. Les fouilles se poursuivirent irrégulièrement, surtout dans le but de découvrir des objets et des œuvres d’art. Ce n’est qu’après 1870 qu’elles furent entreprises de façon régulière et continue. On établit alors une nomenclature des maisons, des rues et des quartiers. À partir de 1924, on commença à effectuer des fouilles stratigraphiques qui permettent, en commençant par le toit, la reconstruction des maisons, en laissant à leur place originelle les objets et la décoration murale. Dans les années 1950, les murs des fortifications et les nécropoles ont été mis au jour.
!!2. Architecture
!!!Édifices publics
La zone du forum, dans le secteur ouest de la ville, était située au centre de la cité la plus ancienne. Au moment de la destruction, outre l’ancien temple d’Apollon, on y trouvait encore le temple des divinités capitolines (capitolium), l’édifice où avait lieu l’élection des magistrats annuels (comitium), le bâtiment destiné aux édiles, la tribune des discours publics, la basilique pour l’administration de la justice, le marché couvert (macellum), le marché aux légumes et l’édifice (portant le nom d’une femme: Eumachia) consacré à l’industrie des étoffes de laine; on peut en déduire que la ville était particulièrement florissante. De chaque côté du temple capitolin, deux arcs commémoratifs donnaient accès au forum, qui était interdit aux véhicules. On pense qu’une horloge publique réglée par écoulement d’eau avait été installée à proximité. Dans le secteur sud de la ville se trouve une autre zone de monuments appelée le forum triangulaire. Au temps de la ville primitive, il avait dû constituer une espèce d’acropole. Sur cette aire triangulaire, bordée d’un portique sur les trois côtés, s’élevait un temple. À partir du IIe siècle avant J.-C., l’aire adjacente fut occupée par des bâtiments destinés aux spectacles, mais on y trouvait aussi les petits temples d’Isis et de Zeus Melichios. La proximité d’édifices religieux et d’édifices destinés aux sports et aux spectacles est un reflet persistant de la culture grecque. Un théâtre et, plus tard, un odéon (théâtre couvert pour la musique), une palestre et la caserne des gladiateurs avec un grand espace intérieur entouré de portiques y furent édifiés. Dans la partie est de la ville fut prévu puis réalisé un amphithéâtre, dont les promoteurs furent les magistrats mêmes qui avaient fait construire l’odéon. Cet amphithéâtre, qui remonte au Ier siècle avant J.-C., est le plus ancien du monde romain .
Il y avait à Pompéi trois établissements thermaux, dont les thermes de Stabies, les plus anciens et les plus vastes. Nombre de grandes maisons particulières possédaient de petites installations thermales. Les thermes de Pompéi n’avaient pas de somptueuses façades extérieures, car ces façades étaient occupées par des boutiques dont le revenu contribuait à l’entretien des installations. Les thermes de Stabies sont situés au croisement des deux rues principales et, dès le IIe siècle avant J.-C., les pièces étaient spacieuses et agréables, couvertes de voûtes construites au moyen de mortiers liants. À l’époque romaine, postérieurement à l’année 80 avant J.-C., ces thermes furent agrandis et, plus tard, décorés de stucs et de peintures.
!!!Maisons particulières
Ce sont les maisons particulières qui, à Pompéi, offrent la documentation la plus intéressante. Il existe des vestiges de maisons du IVe siècle avant J.-C.; mais les témoignages les plus évidents appartiennent au Ier siècle avant J.-C. et au Ier siècle après J.-C. À partir de l’époque samnite, le type fondamental de la maison pompéienne est caractérisé par une pièce, parfois de très grande dimension, dite atrium, à laquelle on accède par un couloir d’entrée. De plan rectangulaire, l’atrium avait presque toujours, au centre, un bassin, dans lequel tombait l’eau de pluie du toit. Celui-ci, présentant quatre plans inclinés vers l’intérieur, était muni de larmiers en terre cuite artistiquement décorés. Du bassin, l’eau tombait dans la citerne. Les plans inclinés du toit étaient soutenus aux angles par de robustes poutres (atrium tuscanicum) ou par quatre pilastres ou colonnes. On avait ainsi, au centre de la maison, une pièce spacieuse éclairée uniquement par l’ouverture centrale et égayée par un bassin: une espèce de patio. Par les deux côtés les plus longs de cette pièce on accédait aux chambres. Le côté le plus petit, en face de l’entrée, était occupé par une pièce appelée tablinum, qui était à l’origine le centre de la vie familiale, autour du foyer et de la table, avec l’autel des divinités de la maison, les lares. De chaque côté du tablinum, deux pièces, destinées primitivement aux archives familiales et au culte des ancêtres. Dans les demeures patriciennes, leurs images y étaient conservées. Derrière le mur du tablinum se trouvait, originairement, un jardin potager, entouré de hauts murs. À une époque plus tardive, en revanche, on y accédait par une cour, entourée d’un portique (peristilium) emprunté à l’architecture hellénistique, dont le centre était planté de fleurs et souvent agrémenté d’une fontaine. Parfois, un véritable jardin y faisait suite, orné de statues et de jeux d’eau (maison des Amours dorés, maison de Loreius Tiburtinus, par exemple), ou bien un autre péristyle plus grand (comme dans la maison du Faune, la plus grandiose et la plus hellénistique).
Autour du noyau central de la maison, décrit ici, d’autres pièces, avec de nombreuses variantes, étaient à usage aussi bien utilitaire (cuisine, salle de bains, etc.) que de séjour (appartements pour les invités, appartements des femmes).
Quoi qu’il en soit, la maison conserva toujours cette caractéristique de donner complètement sur l’intérieur , ce qui créait une atmosphère intime et recueillie qui s’est en partie maintenue dans les habitations du monde arabe.
À l’extérieur de la maison, près de la porte d’entrée, donnaient des boutiques qui, en règle générale, ne communiquaient pas du tout avec l’intérieur, ou, à défaut de boutiques, des magasins appartenant à la maison. Les maisons les plus anciennes, les maisons samnites, étaient entièrement construites en pierre calcaire locale très granuleuse. Sous la République romaine (Ier siècle av. J.-C.), on utilisa une pierre tufière. Puis l’influence du monde gréco-hellénistique amena à employer le marbre dans toutes les parties ornementales, tandis que pour les structures se répandit l’usage de la brique, très en vogue à Rome. Enfin, au cours de la dernière période de la vie de Pompéi, la classe des marchands, considérablement enrichie, résolut le problème de maisons plus vastes qui lui étaient devenues nécessaires en réunissant, par des passages intérieurs, plusieurs maisons du type traditionnel. On ajouta aussi des pièces à l’étage, de préférence au-dessus des parties les moins importantes de la maison, destinées aux esclaves. Aux lisières sud et ouest de la ville, où il existait de fortes dénivellations de terrain, les maisons sont disposées sur les pentes et ont des terrasses panoramiques, des loggias, des salles de séjour reliées entre elles par des rampes ou des escaliers (maison de Fabius Rufus, fouilles de 1962-1968). Certaines familles qui s’étaient particulièrement enrichies voulurent donner à leurs habitations, sous des formes modestes ou en remplaçant la réalité architectonique par des trompe-l’œil picturaux, l’illusion des palais des souverains hellénistiques de Pergame et d’Alexandrie.
!!!Les villas
Aux environs de Pompéi se trouvaient, dès le IIe siècle avant J.-C., des villas du type maison rustique, mais aussi des demeures résidentielles. La vallée du fleuve Sangro était fertile et riante. C’est d’une villa proche de la localité de Boscotrecase que proviennent les grandes peintures de paysage conservées au Metropolitan Museum de New York. Nous savons que certaines de ces villas appartinrent à des personnes de la famille impériale ou à leurs affranchis. Cicéron en possédait une aussi; au XVIIIe siècle, on crut l’avoir retrouvée au-delà de la porte d’Herculanum, mais elle fut ensuite réensevelie (des fragments de gracieuses peintures ornementales et de mosaïques en sont conservés). Dans le voisinage immédiat de la ville, au-delà de cette même porte, se trouve la «villa des Mystères», qui appartenait à la famille des Istacides. Elle est célèbre pour son grand cycle de peintures, adaptation faite à l’époque d’Auguste de peintures qui devaient exister dans quelque centre grec qui nous est inconnu. Elles représentent des épisodes de l’initiation d’une femme aux mystères dionysiaques. Malgré leur splendeur, elles se révèlent à l’examen critique être des œuvres de seconde main, non des créations originales. Le plan de la villa des Mystères est d’une conception particulière, l’entrée donnant immédiatement sur le portique (peristilium) entouré de plusieurs pièces utilitaires. Du portique, on passe dans l’atrium qui, par deux portes, conduit au tablinum donnant sur une grande terrasse en forme de loggia semi-circulaire (exèdre) qui ouvre à son tour sur le jardin; celui-ci, surélevé par rapport au niveau de la campagne, est soutenu par de solides maçonneries de substruction.
!!3. Décoration et objets d’art
!!!Peinture
Pompéi offre la documentation la plus vaste et la plus variée qui existe sur la peinture de l’Antiquité. Pour interpréter d’une façon exacte cette documentation, selon sa valeur historique et artistique, des distinctions et des classifications doivent être établies. Il faut se rappeler qu’il s’agit d’œuvres de peintres artisans, décorateurs de murs, et non de grandes personnalités artistiques, même si cet artisanat fait preuve, dans son ensemble, d’une très haute qualité. Si l’on ne fait pas cette remarque préalable, on peut commettre des erreurs fondamentales d’estimation historique. Il faut, en outre, faire une distinction entre les systèmes de décoration pariétale, qui forment une unité ornementale pièce par pièce et mur par mur, et chacune des compositions insérées dans cette décoration. Les systèmes de décoration présentent un développement qui leur est propre. Certains spécialistes considèrent ce développement comme tout à fait original et autonome. D’autres estiment au contraire qu’il a été en grande partie déterminé par les productions de la capitale. Dans Rome, hélas, la documentation picturale de cette époque est presque complètement perdue; mais le peu qu’on en conserve est de qualité nettement supérieure. À Pompéi, les éléments ornementaux de la décoration pariétale ont toujours été exécutés avec une grande fraîcheur. Les peintres pompéiens donnent le meilleur d’eux-mêmes dans la peinture ornementale, où ils font preuve d’une extraordinaire légèreté de touche et d’une grâce d’invention telles qu’on ne les retrouvera, en Europe, qu’au XVIIIe siècle. À l’intérieur des systèmes de décoration, les compositions insérées s’inspirent le plus souvent de la grande peinture grecque. Ces copies ou variantes de tableaux ou de fresques des IVe, IIIe et IIe siècles avant J.-C. sont de qualité très inégale. Il y en a d’excellentes (pour la plupart détachées des murs et conservées au musée national de Naples), et beaucoup de médiocres. Elles doivent être comprises soit comme des peintures de leur temps, soit comme de précieux documents de la grande peinture grecque de chevalet. Dans la décoration figurent aussi deux autres catégories de peintures, qui trouvent des expressions originales: les compositions de fleurs, de fruits et d’animaux, morts ou vivants (xenia), et les paysages. Certains paysages champêtres et mythologiques, et des vues de villas au bord de la mer comportent des éléments réalistes. D’autres, en revanche, sont purement imaginaires, avec beaucoup de fantaisie; ils ont la grâce des paysages japonais. On a de bonnes raisons de penser que cette peinture est un développement de l’art hellénistique, d’Alexandrie d’Égypte et des cités raffinées d’Asie Mineure en particulier. Mais les spécialistes ne sont pas d’accord; certains préfèrent y voir une nouveauté du milieu romain. Certes, ces décorations correspondent, surtout après les cinquante premières années de l’Empire, à un goût de la culture romaine. Mais celle-ci était, comme le prouve également la littérature, imprégnée de formes hellénistiques.
Les décorations de la dernière phase de construction de Pompéi, caractérisée par les réédifications et les restaurations occasionnées par le tremblement de terre de l’année 62, sont marquées («quatrième style») par une orientation fantastique particulière. Les motifs perspectifs des fausses architectures («deuxième style») et les motifs ornementaux menus et gracieux où sont intercalés de petits tableaux («troisième style») sont repris et accentués. La technique de la peinture devient de plus en plus «impressionniste». Les architectures fantaisistes sont parfois animées de figures, placées à différentes hauteurs, empruntées aux grandes compositions traditionnelles. Certains spécialistes ont vu dans ces tendances une recherche de l’évasion, un penchant pour le rêve et l’utopie. Mais les écrivains romains de cette époque ne permettent absolument pas ces interprétations subjectives. Ils parlent, eux, de nouveaux riches rivalisant de luxe et de la décadence de la peinture de chevalet.
La technique de la peinture pompéienne est encore discutée. Les indications fournies par les sources littéraires antiques manquent de clarté. Elles parlent soit de peinture à fresque (couleurs liquides sur chaux fraîche), soit de peinture à l’encaustique (couleurs dissoutes dans de la cire et appliquées à chaud).
À Pompéi, on a des effets de couleur liquide comme de l’aquarelle, mais aussi des superpositions de couleurs et un brillant qui ne s’obtiennent pas avec la fresque. En dissolvant des couleurs dans de la «cire punique», obtenue avec de la cire vierge dans une solution de soude (natron), et en chauffant ensuite la peinture finie, E. Schiavi est parvenu à des résultats très semblables à la peinture pompéienne.
!!!Mosaïques
Dans la phase la plus ancienne, les pavements des maisons sont en aggloméré de chaux avec des fragments de terre cuite et de pierres ou de marbres de couleur. Sous l’influence hellénistique (fin du IIe siècle av. J.-C.) se répand l’usage du pavement de mosaïque, composé soit de petites tesselles de marbres, soit de marqueteries de marbres taillés de différentes formes (opus sectile; parmi les plus anciens, celui de la cella du temple d’Apollon). Dans les pavements de tesselles blanches et noires sont insérées des mosaïques figurées en couleurs, qui imitent presque toujours des peintures. La mosaïque n’atteindra son autonomie figurative qu’à une époque bien postérieure à la destruction de Pompéi. Parmi les mosaïques qui imitent des peintures, il faut mentionner les deux célèbres compositions signées par Dioscoride de Samos , provenant de ce qu’on appelle la «villa de Cicéron», ainsi que la célèbre mosaïque de la Bataille d’Alexandre . Cette dernière s’inspire d’une peinture souvent mentionnée, de Philoxenos d’Érétrie (fin du IVe s. av. J.-C.). Elle décorait une salle ouverte (exèdre) située entre deux salles à manger et donnant sur le grand portique de la somptueuse «maison du Faune». Des sondages effectués dans cette maison ont révélé cinq phases de construction antérieures à celle qui reste visible aujourd’hui. À Pompéi ont été retrouvées aussi des mosaïques ornementales qui revêtaient les murs en particulier sur les façades de fontaines ou de niches. Certains vestiges attestent l’existence de mosaïques en tesselles de verre sur les plafonds en voûte.
!!!Sculptures
Dans le domaine de la sculpture, Pompéi a donné une importante série de copies d’originaux grecs (dont la copie de la tête du Doryphore de Polyclète signée d’Apollonios d’Archias, un Athénien). Les plus typiques sont quelques remarquables exemplaires de statues imitant des modèles classiques et adaptées à des fonctions pratiques (telles les statues d’éphèbes destinées à porter des lampes).
Grâce à Pompéi, de nombreuses sculptures en bronze ont été conservées, qui, ailleurs, auraient été fondues, le Moyen Âge, à ses débuts, ayant eu un besoin insatiable de métal. C’est ainsi qu’on a la preuve de la prédominance de la sculpture de bronze sur la sculpture de marbre pour les œuvres de plus grande valeur et les objets décoratifs. Dans certaines maisons, on a retrouvé d’excellents portraits en bronze (comme celui du banquier L. Caecilius Iocundus). Mais la particularité la plus marquante est constituée par le plus grand nombre de petites sculptures de caractère ornemental. Celles-ci, en marbre ou en bronze, embellissaient les jardins et les portiques de sujets idylliques ou théâtraux. On doit y ajouter les bas-reliefs (appelés oscilla) en forme de boucliers, travaillés des deux côtés et destinés à être suspendus dans les portiques entre deux colonnes.
Ameublement
La documentation concernant les objets d’ameublement est particulièrement riche. Contrairement à ce qui se passe à Herculanum, Pompéi ne nous a pas fourni de restes de meubles en bois, mais on a de petites tables et des trépieds de bronze, de petites tables de marbre, souvent cerclées de bronze damasquiné d’argent. C’est selon cette même technique que sont travaillées des «appliques» pour les lits et pour d’autres meubles en bois. Également en bronze, d’élégants objets destinés au chauffage (braseros, poêles, chauffe-plats) de formes diverses, des lampes suspendues ou posées sur les meubles, des candélabres ornés de figures de Silènes, d’Amours, d’acrobates, autant de variantes de motifs hellénistiques, pour la plupart amusants. La riche vaisselle, de bronze et d’argent elle aussi, ornée en relief ou avec des appliques figuratives, est tout imprégnée des formes et des motifs décoratifs qui proviennent encore du grand artisanat artistico-industriel de la Grèce hellénistique. Les vases de verre qui ont été conservés ne sont pas très nombreux, mais ils sont d’une grande finesse. Parmi les curiosités, il faut mentionner une statuette indienne en ivoire, représentant probablement la déesse Laksmi et provenant du Gandhara, qui confirme l’existence de contacts commerciaux avec l’Asie centrale et l’Orient. Ces contacts s’établissaient peut-être par l’intermédiaire de la communauté des Arabes Nabatéens, attestée par des inscriptions remontant à l’année 40 avant J.-C., trouvées dans un de leurs lieux de culte à Pouzzoles.
___________________________________
© 2000 Encyclopædia Universalis France S.A. Tous droits de propriété intellectuelle et industrielle réservés.
Le DD s'utilise dans les dialogues (qui sont des « scènes »).
Mais quand un personnage parle, sans réponse immédiate ?
!!Ex:
>Il leur cria de se taire
>Il leur cria: « Taisez-vous !»
>Il leur cria: « Vos gueules ! »
Dans un texte littéraire, les paroles du personnage sont là pour créer une image du personnage, pour le caractériser.
''Exercice:'' Ecouter et transcrire quatre façons « particulières » de parler de votre entourage. Imiter leur discours.
Séance 1: Première réception
« No pasaran »: « ils ne passeront pas » en espagnol.
La phrase espagnole ¡No pasarán!, signifiant « Ils ne passeront pas ! », a été prononcée par les partisans de la Seconde République Espagnole (1936-1939) en lutte contre les rebelles nationalistes commandés par le général Franco, dont le soulèvement déclencha la guerre civile espagnole (Wikipédia).
La quatrième de couverture annonce une histoire fantastique.
Ceux qui jugent et qui condamnent disent la peine de mort nécessaire. D’abord, – parce qu’il importe de retrancher de la communauté sociale un membre qui lui a déjà nui et qui pourrait lui nuire encore. – S’il ne s’agissait que de cela, la prison perpétuelle suffirait. À quoi bon la mort ? Vous objectez qu’on peut s’échapper d’une prison ? Faites mieux votre ronde. Si vous ne croyez pas à la solidité des barreaux de fer, comment osez-vous avoir des ménageries ?
Pas de bourreau où le geôlier suffit.
Mais, reprend-on, – il faut que la société se venge, que la société punisse. – Ni l’un, ni l’autre. Se venger est de l’individu, punir est de Dieu.
La société est entre deux. Le châtiment est au-dessus d’elle, la vengeance au-dessous. Rien de si grand et de si petit ne lui sied. Elle ne doit pas “punir pour se venger” ; elle doit corriger pour améliorer. Transformez de cette façon la formule des criminalistes, nous la comprenons et nous y adhérons.
Reste la troisième et dernière raison, la théorie de l’exemple. – Il faut faire des exemples! il faut épouvanter par le spectacle du sort réservé aux criminels ceux qui seraient tentés de les imiter ! – Voilà bien à peu près textuellement la phrase éternelle dont tous les réquisitoires des cinq cents parquets de France ne sont que des variations plus ou moins sonores. Eh bien ! nous nions d’abord qu’il y ait exemple. Nous nions que le spectacle des supplices produise l’effet qu’on en attend. Loin d’édifier le peuple, il le démoralise, et ruine en lui toute sensibilité, partant toute vertu. Les preuves abondent, et encombreraient notre raisonnement si nous voulions en citer. Nous signalerons pourtant un fait entre mille, parce qu’il est le plus récent. Au moment où nous écrivons, il n’a que dix jours de date. Il est du 5 mars, dernier jour du carnaval. À Saint-Pol, immédiatement après l’exécution d’un incendiaire nommé Louis Camus, une troupe de masques est venue danser autour de l’échafaud encore fumant. Faites donc des exemples ! le mardi gras vous rit au nez.
La situation d'énonciation
- Quel est le pronom personnel dominant ? Pourquoi apparaît-il si souvent ?
- Quels sont les destinataires des confessions ? Quels mots les désignent (noms et pronoms) ?
- Quel est le niveau de langage (appuyez-vous sur le lexique, le rythme des phrases, les figures de style) ? Quel est l'effet produit sur le lecteur ?
Le pacte autobiographique
1- Quel est le projet du narrateur ? Souligne en rouge dans le texte la phrase qui au début du texte le résume.
2- Dans le troisième paragraphe, quelle difficulté évoque-t-il ?
3- À quoi s'engage Rousseau vis à vis de ses lecteurs (quel pacte leur propose-t-iI)?
4- « j'ai pu supposer vrai ce que je savais avoir pu l'être, jamais ce que je savais être faux » Quelle raison invoque-t-il pour expliquer les éventuelles inexactitudes ?
/***
| Name:|QuickOpenTagPlugin|
| Purpose:|Makes tag links into a Taggly style open tag plus a normal style drop down menu|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#QuickOpenTagPlugin|
| Requires:|TW 2.x|
| Version|1.1.1 (19-May-06)|
!History
* Version 1.1.1 (19/05/2006)
** Added a little more CSS so the tags look good in standard main menus and normal tiddlers
* Version 1.1 (07/02/2006)
** Fix Firefox 1.5.0.1 crashes
** Updated by ~BidiX[at]~BidiX.info
* Version 1.0 (?/01/2006)
** First release
***/
//{{{
//⊻ ⊽ ⋁ ▼
window.createTagButton_orig_mptw = createTagButton;
window.createTagButton = function(place,tag,excludeTiddler) {
var sp = createTiddlyElement(place,"span",null,"quickopentag");
createTiddlyLink(sp,tag,true,"button");
var theTag = createTiddlyButton(sp,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tag]),onClickTag);
theTag.setAttribute("tag",tag);
if(excludeTiddler)
theTag.setAttribute("tiddler",excludeTiddler);
return(theTag);
};
config.macros.miniTag = {handler:function(place,macroName,params,wikifier,paramString,tiddler) {
var tagged = store.getTaggedTiddlers(tiddler.title);
if (tagged.length > 0) {
var theTag = createTiddlyButton(place,config.macros.miniTag.dropdownchar,config.views.wikified.tag.tooltip.format([tiddler.title]),onClickTag);
theTag.setAttribute("tag",tiddler.title);
theTag.className = "miniTag";
}
}};
config.macros.miniTag.dropdownchar = (document.all?"▼":"▾"); // the fat one is the only one that works in IE
config.macros.allTags.handler = function(place,macroName,params)
{
var tags = store.getTags();
var theDateList = createTiddlyElement(place,"ul",null,null,null);
if(tags.length === 0)
createTiddlyElement(theDateList,"li",null,"listTitle",this.noTags);
for (var t=0; t<tags.length; t++)
{
var theListItem =createTiddlyElement(theDateList,"li",null,null,null);
var theLink = createTiddlyLink(theListItem,tags[t][0],true);
var theCount = " (" + tags[t][1] + ")";
theLink.appendChild(document.createTextNode(theCount));
var theDropDownBtn = createTiddlyButton(theListItem," "+config.macros.miniTag.dropdownchar,this.tooltip.format([tags[t][0]]),onClickTag);
theDropDownBtn.setAttribute("tag",tags[t][0]);
}
};
// probably could redo these styles a bit cleaner..
setStylesheet(
".tagglyTagged .quickopentag, .tagged .quickopentag \n"+
" { margin-right:1.2em; border:1px solid #eee; padding:2px; padding-right:0px; padding-left:1px; }\n"+
".quickopentag .tiddlyLink { padding:2px; padding-left:3px; }\n"+
".quickopentag a.button { padding:1px; padding-left:2px; padding-right:2px;}\n"+
// extra specificity to make it work?
"#displayArea .viewer .quickopentag a.button, \n"+
"#displayArea .viewer .quickopentag a.tiddyLink, \n"+
"#mainMenu .quickopentag a.tiddyLink, \n"+
"#mainMenu .quickopentag a.tiddyLink \n"+
" { border:0px solid black; }\n"+
"#displayArea .viewer .quickopentag a.button, \n"+
"#mainMenu .quickopentag a.button \n"+
"{ margin-left:0px; padding-left:2px; }\n"+
"#displayArea .viewer .quickopentag a.tiddlyLink, \n"+
"#mainMenu .quickopentag a.tiddlyLink \n"+
" { margin-right:0px; padding-right:0px; padding-left:0px; margin-left:0px; }\n"+
"a.miniTag {font-size:150%;} \n"+
"#mainMenu .quickopentag a.button \n"+
"{ margin-left:0px; padding-left:2px; margin-right:0px; padding-right:0px; }\n"+ // looks better in right justified main menus
"",
"QuickOpenTagStyles");
//}}}
/***
<html>⊻ ⊽ ⋁ ▼ ▾</html>
***/
The main goals of RSSExtensions are :
*to generate an RSSFeed with plaintext, html and TiddlyWiki content
*to provide a builtin RSSReader (by extending BramChen's RssNewsMacro for):
**HTML support when RSSFeed uses HTML formatting
**TiddlyWikiNamespace support for direct viewing and possibly import a tiddler from an RSSFeed
>Try these <<tag RSSFeeds>>
*to generate a kind of frontpage for a TiddlyWiki from an RSSFeed
RSSExtensions contains :
*TiddlyWikiNamespace: define the TiddlyWikiNamespace
*GenerateRssHijack: hijack the core generateRSS
*RSSReaderPlugin: provides the RSSReaderMacro for TiddlyWiki
*[[news.php]]: this php script display an RSSFeed
*[[proxy.php]]: when located on the TiddlyWiki site provides OtherSites access
/***
|''Name:''|RSSReaderPlugin|
|''Description:''|This plugin provides a RSSReader for TiddlyWiki|
|''Version:''|0.3.0|
|''Date:''|Aug 24, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#RSSReaderPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#RSSReaderPluginDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''Credit:''|BramChen for RssNewsMacro|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|none|
|''Require:''|none|
***/
//{{{
version.extensions.RSSReaderPlugin = {
major: 0, minor: 3, revision: 0,
date: new Date("Aug 24, 2006"),
author: "BidiX",
credit: "BramChen for RssNewsMacro",
source: "http://TiddlyWiki.bidix.info/#RSSReaderPlugin",
documentation : "http://TiddlyWiki.bidix.info/#RSSReaderPluginDoc",
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.0.0',
browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};
config.macros.rssReader = {
dateFormat: "DDD, DD MMM YYYY",
itemStyle: "display: block;border: 1px solid black;padding: 5px;margin: 5px;", //useed '@@'+itemStyle+itemText+'@@'
msg:{
permissionDenied: "Permission to read preferences was denied.",
noRSSFeed: "No RSS Feed at this address %0",
urlNotAccessible: " Access to %0 is not allowed"
},
cache: [], // url => request
desc: "noDesc",
// feedURL: "",
place:"",
handler: function(place,macroName,params,wikifier,paramString,tiddler){
var desc = params[0];
var feedURL = params[1];
// var toFilter = (params[2] ? params[2] : false);
var toFilter = false;
var filterString;
if (params[2] != undefined) {
toFilter = true;
if (params[2].match(/\w+/))
filterString = params[2];
else
filterString = tiddler.title;
}
var place = createTiddlyElement(place, "div", "RSSReader");
wikify("^^<<rssFeedUpdate "+feedURL+" [[" + tiddler.title + "]]>>^^\n",place);
if (this.cache[feedURL]) {
this.processResponse(this.cache[feedURL], feedURL, place, desc, toFilter, filterString);
}
else {
this.asyncGet(feedURL, place, desc, toFilter, filterString);
}
},
asyncGet: function (feedURL, place, desc, toFilter, filterString){
var xmlhttp;
try {xmlhttp=new XMLHttpRequest();}
catch (e) {
try {xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) {
try {xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");}
catch (e) { displayMessage(e.description?e.description:e.toString());}
}
}
if (!xmlhttp){
return;
}
if (window.netscape){
try {
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
}
catch (e) { displayMessage(e.description?e.description:e.toString()); }
}
xmlhttp.onreadystatechange=function (){
if (xmlhttp.readyState==4) {
if (xmlhttp.status==200 || xmlhttp.status===0) {
config.macros.rssReader.processResponse(xmlhttp, feedURL, place, desc, toFilter, filterString);
}
else {
displayMessage("Problem retrieving XML data:" + xmlhttp.statusText);
}
}
};
try {
xmlhttp.open("GET",feedURL,true);
if (config.browser.isIE) {
xmlhttp.send();
}
else {
xmlhttp.send(null);
}
}
catch (e) {
wikify(e.toString()+this.urlNotAccessible.format([feedURL]), place);
}
},
processResponse: function(xmlhttp, feedURL, place, desc, toFilter, filterString){
if (window.netscape){
try {
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
}
catch (e) { displayMessage(e.description?e.description:e.toString()); }
}
if (xmlhttp.responseXML){
this.cache[feedURL] = xmlhttp;
this.genRssNews(xmlhttp.responseXML, place, feedURL, desc, toFilter, filterString);
}
else {
var dom = (new DOMParser()).parseFromString(xmlhttp.responseText, "text/xml");
if (dom) {
this.cache[feedURL] = xmlhttp;
this.genRssNews(dom, place, feedURL, desc, toFilter, filterString);
}
else {
wikify("<html>"+xmlhttp.responseText+"</html>", place);
displayMessage(this.msg.noRSSFeed.format([feedURL]));
}
}
},
genRssNews: function(xml, place, feedURL, desc, toFilter, filterString){
// Channel
var chanelNode = xml.getElementsByTagName('channel').item(0);
var chanelTitleElement = (chanelNode ? chanelNode.getElementsByTagName('title').item(0) : null);
var chanelTitle = "";
if ((chanelTitleElement) && (chanelTitleElement.firstChild)) chanelTitle = chanelTitleElement.firstChild.nodeValue;
var chanelLinkElement = (chanelNode ? chanelNode.getElementsByTagName('link').item(0) : null);
var chanelLink = "";
if (chanelLinkElement) chanelLink = chanelLinkElement.firstChild.nodeValue;
var titleTxt = "!![["+chanelTitle+"|"+chanelLink+"]]\n";
var title = createTiddlyElement(place,"div",null,"ChanelTitle",null);
wikify(titleTxt,title);
// ItemList
var itemList = xml.getElementsByTagName('item');
var article = createTiddlyElement(place,"ul",null,null,null);
var lastDate;
var re;
if (toFilter)
re = new RegExp(filterString.escapeRegExp());
for (var i=0; i<itemList.length; i++){
var titleElm = itemList[i].getElementsByTagName('title').item(0);
var titleText = (titleElm ? titleElm.firstChild.nodeValue : '');
if (toFilter && ! titleText.match(re)) {
continue;
}
var descText = '';
var isWikitext = false;
var descElem = itemList[i].getElementsByTagName('wikitext').item(0);
if (descElem){
try{
isWikitext = true;
descText = "\n"+descElem.firstChild.nodeValue;}
catch(e){}
}
else {
descElem = itemList[i].getElementsByTagName('encoded').item(0);
if (descElem){
try{descText = descElem.firstChild.nodeValue;}
catch(e){}
descText = "<html>"+descText+"</html>";
}
else {
descElem = itemList[i].getElementsByTagName('description').item(0);
if (descElem){
try{descText = descElem.firstChild.nodeValue;}
catch(e){}
descText = descText.replace(/<br \/>/g,'\n');
if (desc == "asHtml")
descText = "<html>"+descText+"</html>";
}
}
}
var linkElm = itemList[i].getElementsByTagName("link").item(0);
var linkURL = linkElm.firstChild.nodeValue;
var pubElm = itemList[i].getElementsByTagName('pubDate').item(0);
var pubDate;
if (!pubElm) {
pubElm = itemList[i].getElementsByTagName('date').item(0); // for del.icio.us
if (pubElm) {
pubDate = pubElm.firstChild.nodeValue;
pubDate = this.formatDateString(this.dateFormat, pubDate);
}
else {
pubDate = '0';
}
}
else {
pubDate = (pubElm ? pubElm.firstChild.nodeValue : 0);
pubDate = this.formatString(this.dateFormat, pubDate);
}
titleText = titleText.replace(/\[|\]/g,'');
var rssText = '** '+'[[' + titleText + '|' + linkURL + ']]' + '\n' ;
if ((desc != "noDesc") && descText){
if (version.extensions.nestedSliders){
rssText = rssText.replace(/\n/g,' ');
descText = '+++[...]\n'
+(isWikitext ? '\n<<rssFeedImportTiddler '+ feedURL + ' [['+titleText+']]>>':'')
+'@@'+this.itemStyle+descText+'\n@@\n'
+'===';
}
rssText = rssText + descText + '\n\n';
}
var story;
if ((lastDate != pubDate) && ( pubDate != '0')) {
story = createTiddlyElement(article,"li",null,"RSSItem",pubDate);
lastDate = pubDate;
}
else {
lastDate = pubDate;
}
story = createTiddlyElement(article,"div",null,"RSSItem",null);
wikify(rssText,story);
}
},
formatString: function(template, theDate){
var dateString = new Date(theDate);
template = template.replace(/hh|mm|ss/g,'');
return dateString.formatString(template);
},
formatDateString: function(template, theDate){
var dateString = new Date(theDate.substr(0,4), theDate.substr(5,2) - 1, theDate.substr(8,2)
/*, theDate.substr(11,2), theDate.substr(14,2), theDate.substr(17,2)*/
);
return dateString.formatString(template);
}
};
//}}}
//{{{
config.macros.rssFeedUpdate = {
label: "Update",
prompt: "Clear the cache and redisplay this RssFeed",
handler: function(place,macroName,params) {
var feedURL = params[0];
var tiddlerTitle = params[1];
createTiddlyButton(place, this.label, this.prompt,
function () {
if (config.macros.rssReader.cache[feedURL]) {
config.macros.rssReader.cache[feedURL] = null;
//story.refreshTiddler(tiddlerTitle,null, true);
}
story.refreshTiddler(tiddlerTitle,null, true);
return false;});
}
};
//}}}
//{{{
config.macros.rssFeedImportTiddler = {
label: "Import",
prompt: "Import this tiddler in this TiddlyWiki",
askReplaceMsg: "Tiddler already exists, replace it ?",
handler: function(place,macroName,params) {
var feedUrl = params[0];
var tiddlerTitle = params[1];
createTiddlyButton(place, this.label, this.prompt,
function () {
if (feedUrl && config.macros.rssReader.cache[feedUrl]) {
var tiddler = config.macros.rssFeedImportTiddler.parseRssNews(config.macros.rssReader.cache[feedUrl].responseXML, tiddlerTitle);
if (tiddler && (! store.getTiddler(tiddlerTitle) || confirm(config.macros.rssFeedImportTiddler.askReplaceMsg))) {
store.addTiddler(tiddler);
store.notify(tiddler.title, true);
store.setDirty(true);
}
}
return false;});
},
// parse a RssFeed for retrieving a Tiddler with title
parseRssNews: function(xml, title) {
// ItemList
if (document.location.protocol.indexOf("http") == -1) {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
var itemList = xml.getElementsByTagName('item');
for (var i=0; i<itemList.length; i++){
var titleElm = itemList[i].getElementsByTagName('title').item(0);
var titleText = titleElm.firstChild.nodeValue;
if (titleText == title) {
// <tiddlywiki:title>
// titleText
titleText = titleText.htmlDecode();
// <tiddlywiki:wikitext>
var elem = itemList[i].getElementsByTagName('wikitext').item(0);
var text = elem ? elem.firstChild.nodeValue.htmlDecode() : "";
// <tiddlywiki:modifier>
elem = itemList[i].getElementsByTagName('modifier').item(0);
var modifier = elem ? elem.firstChild.nodeValue : "";
// <tiddlywiki:modified>
elem = itemList[i].getElementsByTagName('modified').item(0);
var modified = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";
// <tiddlywiki:created>
elem = itemList[i].getElementsByTagName('created').item(0);
var created = elem ? Date.convertFromYYYYMMDDHHMM(elem.firstChild.nodeValue) : "";
// <tiddlywiki:links>
// Links ?
// <tiddlywiki:tags>
elem = itemList[i].getElementsByTagName('tags').item(0);
var tags = elem ? elem.firstChild.nodeValue.htmlDecode() : "";
var tiddler = new Tiddler();
tiddler.assign(titleText,text,modifier,modified,tags,created);
return tiddler;
}
}
// not found
alert("Tiddler \[[" + title +"]] notFound.");
return null;
}
};
//}}}
//last update: RSSReaderPlugin v 0.3.0//
!Description
This plugin provides a RSSReader for TiddlyWiki
* It accesses asynchronously an RSSFeed
*Depending on the chanel item format, each item could be written as :
**simple text wikified
**html
*If item contains content:encoded element, the text is displayed as html
*If item contains tiddlywiki:wikitext using [[TiddlyWikiNamespace]], the tiddler could then be imported.
!Usage
{{{
<<rssReader noDesc|asHtml|asText rssUrl ['filtering string']>>
noDesc: only title of item is printed
asHtml: if you know that description contain html (links, img ...),
the text is enclosed with <html> </html>
asText: if the description should not be interpreted as html the
description is wikified
rssUrl: the rssFeed url that could be accessed.
'filtering string': if present, the rssfeed item title must contained
this string to be displayed.
If 'filering string' contained space characters only, the tiddler
title is used for filtering.
}}}
For security reasons, if the TiddlyWiki is accessed from http, a ProxyService shaould be used to access an rssFeed from an other site. See examples for different cases.
!examples
| !reader | !RSSFeed type | !working from | !importTiddler |
| BidiXTWRSS |TiddlyWikiNamespace | file: or tiddlywiki.bidix.info | yes |
| [[Le Monde]] | Description asText | file: or tiddlywiki.bidix.info using proxy | no |
| YahooNewsSport | Description asHtml | file: or tiddlywiki.bidix.info using proxy | no |
| TiddlyForgeRSS | content:encoded | file: or tiddlywiki.bidix.info using proxy | no |
| TiddlyWikiRSS | Description asText | file: or tiddlywiki.bidix.info using proxy | no |
| [[Libération]] | noDesc | file: or tiddlywiki.bidix.info using proxy | no |
| [[TestComment]] | asText and filters | file: or tiddlywiki.bidix.info using proxy | no |
!Revision history
* v0.3.0 (24/08/2006)
** Filter on RSS item title
** Place to display redefined for asynchronous processing
* v0.2.2 (22/08/2006)
**Haloscan feed has no pubDate.
* v0.2.1 (08/05/2006)
* v0.2.0 (01/05/2006)
**Small adapations for del.icio.us feed
* v0.1.1 (28/04/2006)
**Bug : Channel without title
* v0.1.0 (24/04/2006)
** initial release
S9: Rapporter une expérience
Dans No pasaran, les personnages rentrent des jeux video.
C'est un phénomène « fantastique ». Le fantastique, c'est une réalité très proche de la nôtre, mais déréglée.
Dans le roman, sont fantastiques:
*le vieux vendeur (habituellement, c'est un jeune)
*le bout de papier qui les mène à la boutique alors qu'ils sont perdus.
*Le jeu qui marche avec très peu de mémoire (512 Ko)
*le jeu qui marche seul, sans être installé
__Sujet de rédaction__: Vous jouez à un jeu, dans votre chambre. Soudain, vous vous retrouvez plongé à l'intérieur... Racontez ce que vous y sentez. Rapporter ses sensations (5sens) et vos sentiments.
Relire les pages 78 ,79 – 99 et sq – 143 et sq, 205 à 219
''__Constantes du fantastique__''
*le personnage ne sait s'il est réveillé ou endormi
*sensation auditive diminuée.
*Utilisation du conditionnel (on dirait, ce serait...)
*utilisation de comparaison ou de métaphore ( pour essayer de faire comprendre ce qui ne l'est pas...)
*point de vue interne; ponctuation expressive (! ? marque l'intériorité du personnage.
L'ECRITURE AUTOBIOGRAPHIQUE
Pour chacun des textes :
1.indiquez de quel genre de texte il s'agit
2.précisez pour quelles raisons l'auteur rédige son autobiographie
vous indiquerez sur quels éléments du texte vous vous êtes appuyés.
Texte 1 :
Je naquis au Havre un vingt et un février
en mil neuf cent et trois.
Ma mère était mercière et mon père mercier :
ils trépignaient de joie.
Inexplicablement je connus l’injustice
et fus mis un matin
chez une femme avide et bête, une nourrice,
qui me tendit son sein.
De cette outre de lait j’ai de la peine à croire
que j’en tirais festin
en pressant de ma lèvre une sorte de poire,
organe féminin.
Chène et Chien, Raymond Queneau
Texte2:
Partie en voyages pour quelques jours, Victor Hugo écrit à sa femme, Adèle, restée à Paris.
Meulan, 23 juillet - 8h. 1/2 du matin.
La fantaisie a tourné, mon Adèle, je suis à Meulan, charmante petite ville du bord de la Seine, pleine de ruines et de vieilles femmes. Il y a deux belles églises, l'une est la Halle au blé, l'autre le grenier à sel. Il y a aussi le fort d'Olivier-le-Daim, mais sans tours et sans portes, et tout déshonoré par les restaurations. C'est égal. L'ensemble de la ville est ravissant, la situation délicieuse au bord de l'eau, dans les îles, les arbres et les galiotes. Je te voudrais là, avec moi, mon pauvre ange !
La diligence de Rouen passe à dix heures. Si j'y trouve une place, je la prendrai. Dans ce cas-là, je ne serais à Paris que vendredi dans la journée. Tu sais quelle rage j'ai de voir Rouen.
Quant à la Roche-Guyon, à Montlhéry et à Soissons, ce sera pour une autre occasion. A vendredi donc au plus tard, embrasse pour moi toute la petite couvée. Je pense que l'hospitalité des Roches aura toujours été excellente pour toi. A bientôt donc, pense à moi qui t'aime et aime-moi. Tu es ma joie.
Ton Victor.
Texte 3 :
vendredi 9 octobre 1942
Chère Kitty,
Aujourd'hui je n'ai que des nouvelles déprimantes à t'annoncer. Beaucoup de nos amis juifs sont petit à petit embarqués par la Gestapo, qui ne les ménage pas, loin de là. Ils sont transportés dans des fourgons à bétail à Westerbork, au grand camp pour les Juifs, dans la Drente. Westerbork doit être un cauchemar ; des centaines et des centaines sont obligées de se laver dans une seule pièce, et les w.-c. manquent. On dort sans dessus dessous, pêle-mêle. […] Impossible de fuir. […]
Si cela se produit en Hollande, qu'est-ce que ce doit être dans les régions lointaines et barbares dont Westerbork n'est que l'antichambre ? Nous n'ignorons pas que ces pauvres gens seront massacrés. La radio anglaise parle de chambre à gaz. (,,,)”
A toi,
Anne.
Journal d'Anne Franck
Texte 4 :
«Je n'ai pas de souvenir d'enfance. Jusqu'à ma douzième année à peu près, mon histoire tient en quelques lignes : j'ai perdu mon père à quatre ans, ma mère à six ; j'ai passé la guerre dans diverses pensions de Villard-de-Lans. En 1945, la sœur de mon père et son mari m'adoptèrent.
Cette absence d'histoire m'a longtemps rassuré : sa sécheresse objective, son évidence apparence, son innocence, me protégeaient, mais de quoi me protégeaient-elles, sinon précisément de mon histoire vécue, de mon histoire réelle, de mon histoire à moi qui, on peut le supposer, n'était ni sèche, ni objective, ni apparemment évidente, ni évidemment innocente.
"Je n'ai pas de souvenirs d'enfance" : je posais cette affirmation avec assurance, avec presque une sorte de défi. L'on n'avait pas à m'interroger sur cette question. Elle n'était pas inscrite à mon programme. J'en étais dispensé : une autre histoire, la Grande, l'Histoire avec sa grande hache, avait déjà répondu à ma place : la guerre, les camps.»
W ou le Souvenir d'enfance, George PEREC
Texte 5 :
J'étais le premier, l'incomparable dans mon île aérienne; je tombai au dernier rang quand on me soumit aux règles communes.
Mon grand-père avait décidé de m'inscrire au Lycée Montaigne. Un matin, il m'emmena chez le proviseur et lui vanta mes mérites : je n'avais que le défaut d'être trop avancé pour mon âge. Le proviseur donna les mains à tout : on me fit entrer en huitième et je pus croire que j'allais fréquenter les enfants de mon âge. Mais non : après la première dictée, mon grand père fut convoqué en hâte par l'administration ; il revint enragé, tira de sa serviette un méchant papier couvert de gribouillis, de taches et le jeta sur la table c'était la copie que j'avais remise. On avait attiré son attention sur l'orthographe - « le lapen çovache ême le ten », - et tenté de lui faire comprendre que ma place était en dixième préparatoire. Devant « lapen çovache » ma mère prit le fou rire ; mon grandpère l'arrêta d'un regard terrible. Il commença par m'accuser de mauvaise volonté et par me gronder pour la première fois de ma vie, puis il déclara qu'on m'avait méconnu ; dès le lendemain, il me relirait du lycée et se brouillait avec le proviseur.
Je n'avais rien compris à cette affaire et mon échec ne m'avait pas affecté : j'étais un enfant prodige qui ne savait pas l'orthographe, voilà tout. Et puis, je retrouvai sans ennui ma solitude : j'aimais mon mal.
Jean-Paul Sartre, Les mots, Folio
Texte 6:
Je ranime la flamme. Depuis le 14 juin 1940, nul n'avait pu le faire qu'en présence de l'envahisseur. Puis, je quitte la, voûte et le terre plein. Les assistants s'écartent. Devant moi, les Champs Élysées !
Ah ! C'est la mer l Une foule immense est massée de part et d'autre de la chaussée. Peut être deux millions d'âmes. Les toits aussi sont noirs de monde. A toutes les fenêtres s'entassent des groupes compacts, pêle mêle avec des drapeaux. Des grappes humaines sont accrochées à des échelles, des mâts, des réverbères. Si loin que porte ma vue, ce n'est qu'une houle vivante, dans le soleil, sous le tricolore.
Je vais à pied. Ce n'est pas le jour de passer une revue où brillent les armes et sonnent les fanfares. Il s'agit, aujourd'hui, de rendre à lui même, par le spectacle de sa joie et l'évidence de sa liberté, un peuple qui fut, hier, écrasé par la défaite et dispersé par la servitude. Puisque chacun de ceux qui sont là a, dans son coeur, choisi Charles de Gaulle comme recours de sa peine et symbole de son espérance, il s'agit qu'il le voie, familier et fraternel, et qu'à cette vue resplendisse l'unité nationale. Il est vrai que des états majors se demandent si l'irruption d'engins blindés ennemis ou le passage d'une escadrille jetant des bombes ou mitraillant le sol ne vont pas décimer cette masse et y déchaîner la panique. Mais moi, ce soir, je crois à la fortune de la France.
Charles de Gaulle. Mémoires de guerre
Texte 7 :
J'étudiais un jour seul ma leçon dans la chambre contiguë à la cuisine. La servante avait mis sécher à la plaque les peignes de Mlle Lambercier. Quand elle revint les prendre, il s'en trouva un dont tout un côté de dents était brisé. A qui s'en prendre de ce dégât ? personne autre que moi n'était entré dans la chambre. On m'interroge : je nie d'avoir touché au peigne. M. et Mlle Lambercier se réunissent, m'exhortent, me pressent, me menacent ; je persiste avec opiniâtreté ; mais la conviction était trop forte, elle l'emporta sur toutes mes protestations, quoique ce fût la première fois qu'on m'eût trouvé tant d'audace à mentir. La chose fut prise au sérieux ; elle méritait de l'être. La méchanceté, le mensonge l'obstination parurent également dignes de punition ; mais pour le coup ce ne fut pas par Mlle Lambercier qu'elle me fut infligée. On écrivit à mon oncle Bernard ; il vint. Mon pauvre cousin était chargé d'un autre délit, non moins grave : nous fûmes enveloppés dans la même exécution. Elle fut terrible (...)
Jean Jacques Rousseau, Les Confession
/***
|''Name:''|ReminderPlugin|
|''Version:''|2.3.8 (Mar 9, 2006)|
|''Source:''|http://www.geocities.com/allredfaq/reminderMacros.html|
|''Author:''|Jeremy Sheeley(pop1280 [at] excite [dot] com)|
|''Licence:''|[[BSD open source license]]|
|''Macros:''|reminder, showreminders, displayTiddlersWithReminders, newReminder|
|''TiddlyWiki:''|2.0+|
|''Browser:''|Firefox 1.0.4+; InternetExplorer 6.0|
!Description
This plugin provides macros for tagging a date with a reminder. Use the {{{reminder}}} macro to do this. The {{{showReminders}}} and {{{displayTiddlersWithReminder}}} macros automatically search through all available tiddlers looking for upcoming reminders.
!Installation
* Create a new tiddler in your tiddlywiki titled ReminderPlugin and give it the {{{systemConfig}}} tag. The tag is important because it tells TW that this is executable code.
* Double click this tiddler, and copy all the text from the tiddler's body.
* Paste the text into the body of the new tiddler in your TW.
* Save and reload your TW.
* You can copy some examples into your TW as well. See [[Simple examples]], [[Holidays]], [[showReminders]] and [[Personal Reminders]]
!Syntax:
|>|See [[ReminderSyntax]] and [[showRemindersSyntax]]|
!Revision history
* v2.3.8 (Mar 9, 2006)
**Bug fix: A global variable had snuck in, which was killing FF 1.5.0.1
**Feature: You can now use TIDDLER and TIDDLERNAME in a regular reminder format
* v2.3.6 (Mar 1, 2006)
**Bug fix: Reminders for today weren't being matched sometimes.
**Feature: Solidified integration with DatePlugin and CalendarPlugin
**Feature: Recurring reminders will now return multiple hits in showReminders and the calendar.
**Feature: Added TIDDLERNAME to the replacements for showReminders format, for plugins that need the title without brackets.
* v2.3.5 (Feb 8, 2006)
**Bug fix: Sped up reminders lots. Added a caching mechanism for reminders that have already been matched.
* v2.3.4 (Feb 7, 2006)
**Bug fix: Cleaned up code to hopefully prevent the Firefox 1.5.0.1 crash that was causing lots of plugins
to crash Firefox. Thanks to http://www.jslint.com
* v2.3.3 (Feb 2, 2006)
**Feature: newReminder now has drop down lists instead of text boxes.
**Bug fix: A trailing space in a title would trigger an infinite loop.
**Bug fix: using tag:"birthday !reminder" would filter differently than tag:"!reminder birthday"
* v2.3.2 (Jan 21, 2006)
**Feature: newReminder macro, which will let you easily add a reminder to a tiddler. Thanks to Eric Shulman (http://www.elsdesign.com) for the code to do this.
** Bug fix: offsetday was not working sometimes
** Bug fix: when upgrading to 2.0, I included a bit to exclude tiddlers tagged with excludeSearch. I've reverted back to searching through all tiddlers
* v2.3.1 (Jan 7, 2006)
**Feature: 2.0 compatibility
**Feature AlanH sent some code to make sure that showReminders prints a message if no reminders are found.
* v2.3.0 (Jan 3, 2006)
** Bug Fix: Using "Last Sunday (-0)" as a offsetdayofweek wasn't working.
** Bug Fix: Daylight Savings time broke offset based reminders (for example year:2005 month:8 day:23 recurdays:7 would match Monday instead of Tuesday during DST.
!Code
***/
//{{{
//============================================================================
//============================================================================
// ReminderPlugin
//============================================================================
//============================================================================
version.extensions.ReminderPlugin = {major: 2, minor: 3, revision: 8, date: new Date(2006,3,9), source: "http://www.geocities.com/allredfaq/reminderMacros.html"};
//============================================================================
// Configuration
// Modify this section to change the defaults for
// leadtime and display strings
//============================================================================
config.macros.reminders = {};
config.macros["reminder"] = {};
config.macros["newReminder"] = {};
config.macros["showReminders"] = {};
config.macros["displayTiddlersWithReminders"] = {};
config.macros.reminders["defaultLeadTime"] = [0,6000];
config.macros.reminders["defaultReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY";
config.macros.reminders["defaultShowReminderMessage"] = "DIFF: TITLE on DATE ANNIVERSARY -- TIDDLER";
config.macros.reminders["defaultAnniversaryMessage"] = "(DIFF)";
config.macros.reminders["untitledReminder"] = "Untitled Reminder";
config.macros.reminders["noReminderFound"] = "Couldn't find a match for TITLE in the next LEADTIMEUPPER days."
config.macros.reminders["todayString"] = "Today";
config.macros.reminders["tomorrowString"] = "Tomorrow";
config.macros.reminders["ndaysString"] = "DIFF days";
config.macros.reminders["emtpyShowRemindersString"] = "There are no upcoming events";
//============================================================================
// Code
// You should not need to edit anything
// below this. Make sure to edit this tiddler and copy
// the code from the text box, to make sure that
// tiddler rendering doesn't interfere with the copy
// and paste.
//============================================================================
// This line is to preserve 1.2 compatibility
if (!story) var story=window;
//this object will hold the cache of reminders, so that we don't
//recompute the same reminder over again.
var reminderCache = {};
config.macros.showReminders.handler = function showReminders(place,macroName,params)
{
var now = new Date().getMidnight();
var paramHash = {};
var leadtime = [0,14];
paramHash = getParamsForReminder(params);
var bProvidedDate = (paramHash["year"] != null) ||
(paramHash["month"] != null) ||
(paramHash["day"] != null) ||
(paramHash["dayofweek"] != null);
if (paramHash["leadtime"] != null)
{
leadtime = paramHash["leadtime"];
if (bProvidedDate)
{
//If they've entered a day, we need to make
//sure to find it. We'll reset the
//leadtime a few lines down.
paramHash["leadtime"] = [-10000, 10000];
}
}
var matchedDate = now;
if (bProvidedDate)
{
var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);
var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);
matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);
}
var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);
var elem = createTiddlyElement(place,"span",null,null, null);
var mess = "";
if (arr.length == 0)
{
mess += config.macros.reminders.emtpyShowRemindersString;
}
for (var j = 0; j < arr.length; j++)
{
if (paramHash["format"] != null)
{
arr[j]["params"]["format"] = paramHash["format"];
}
else
{
arr[j]["params"]["format"] = config.macros.reminders["defaultShowReminderMessage"];
}
mess += getReminderMessageForDisplay(arr[j]["diff"], arr[j]["params"], arr[j]["matchedDate"], arr[j]["tiddler"]);
mess += "\n";
}
wikify(mess, elem, null, null);
};
config.macros.displayTiddlersWithReminders.handler = function displayTiddlersWithReminders(place,macroName,params)
{
var now = new Date().getMidnight();
var paramHash = {};
var leadtime = [0,14];
paramHash = getParamsForReminder(params);
var bProvidedDate = (paramHash["year"] != null) ||
(paramHash["month"] != null) ||
(paramHash["day"] != null) ||
(paramHash["dayofweek"] != null);
if (paramHash["leadtime"] != null)
{
leadtime = paramHash["leadtime"];
if (bProvidedDate)
{
//If they've entered a day, we need to make
//sure to find it. We'll reset the leadtime
//a few lines down.
paramHash["leadtime"] = [-10000,10000];
}
}
var matchedDate = now;
if (bProvidedDate)
{
var leadTimeLowerBound = new Date().getMidnight().addDays(paramHash["leadtime"][0]);
var leadTimeUpperBound = new Date().getMidnight().addDays(paramHash["leadtime"][1]);
matchedDate = findDateForReminder(paramHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);
}
var arr = findTiddlersWithReminders(matchedDate, leadtime, paramHash["tag"], paramHash["limit"]);
for (var j = 0; j < arr.length; j++)
{
displayTiddler(null, arr[j]["tiddler"], 0, null, false, false, false);
}
};
config.macros.reminder.handler = function reminder(place,macroName,params)
{
var dateHash = getParamsForReminder(params);
if (dateHash["hidden"] != null)
{
return;
}
var leadTime = dateHash["leadtime"];
if (leadTime == null)
{
leadTime = config.macros.reminders["defaultLeadTime"];
}
var leadTimeLowerBound = new Date().getMidnight().addDays(leadTime[0]);
var leadTimeUpperBound = new Date().getMidnight().addDays(leadTime[1]);
var matchedDate = findDateForReminder(dateHash, new Date().getMidnight(), leadTimeLowerBound, leadTimeUpperBound);
if (!window.story)
{
window.story=window;
}
if (!store.getTiddler)
{
store.getTiddler=function(title) {return this.tiddlers[title];};
}
var title = window.story.findContainingTiddler(place).id.substr(7);
if (matchedDate != null)
{
var diff = matchedDate.getDifferenceInDays(new Date().getMidnight());
var elem = createTiddlyElement(place,"span",null,null, null);
var mess = getReminderMessageForDisplay(diff, dateHash, matchedDate, title);
wikify(mess, elem, null, null);
}
else
{
createTiddlyElement(place,"span",null,null, config.macros.reminders["noReminderFound"].replace("TITLE", dateHash["title"]).replace("LEADTIMEUPPER", leadTime[1]).replace("LEADTIMELOWER", leadTime[0]).replace("TIDDLERNAME", title).replace("TIDDLER", "[[" + title + "]]") );
}
};
config.macros.newReminder.handler = function newReminder(place,macroName,params)
{
var today=new Date().getMidnight();
var formstring = '<html><form>Year: <select name="year"><option value="">Every year</option>';
for (var i = 0; i < 5; i++)
{
formstring += '<option' + ((i == 0) ? ' selected' : '') + ' value="' + (today.getFullYear() +i) + '">' + (today.getFullYear() + i) + '</option>';
}
formstring += '</select> Month:<select name="month"><option value="">Every month</option>';
for (i = 0; i < 12; i++)
{
formstring += '<option' + ((i == today.getMonth()) ? ' selected' : '') + ' value="' + (i+1) + '">' + config.messages.dates.months[i] + '</option>';
}
formstring += '</select> Day:<select name="day"><option value="">Every day</option>';
for (i = 1; i < 32; i++)
{
formstring += '<option' + ((i == (today.getDate() )) ? ' selected' : '') + ' value="' + i + '">' + i + '</option>';
}
formstring += '</select> Reminder Title:<input type="text" size="40" name="title" value="please enter a title" onfocus="this.select();"><input type="button" value="ok" onclick="addReminderToTiddler(this.form)"></form></html>';
var panel = config.macros.slider.createSlider(place,null,"New Reminder","Open a form to add a new reminder to this tiddler");
wikify(formstring ,panel,null,store.getTiddler(params[1]));
};
// onclick: process input and insert reminder at 'marker'
window.addReminderToTiddler = function(form) {
if (!window.story)
{
window.story=window;
}
if (!store.getTiddler)
{
store.getTiddler=function(title) {return this.tiddlers[title];};
}
var title = window.story.findContainingTiddler(form).id.substr(7);
var tiddler=store.getTiddler(title);
var txt='\n<<reminder ';
if (form.year.value != "")
txt += 'year:'+form.year.value + ' ';
if (form.month.value != "")
txt += 'month:'+form.month.value + ' ';
if (form.day.value != "")
txt += 'day:'+form.day.value + ' ';
txt += 'title:"'+form.title.value+'" ';
txt +='>>';
tiddler.set(null,tiddler.text + txt);
window.story.refreshTiddler(title,1,true);
store.setDirty(true);
};
function hasTag(tiddlerTags, tagFilters)
{
//Make sure we respond well to empty tiddlerTaglists or tagFilterlists
if (tagFilters.length==0 || tiddlerTags.length==0)
{
return true;
}
var bHasTag = false;
/*bNoPos says: "'till now there has been no check using a positive filter"
Imagine a filterlist consisting of 1 negative filter:
If the filter isn't matched, we want hasTag to be true.
Yet bHasTag is still false ('cause only positive filters cause bHasTag to change)
If no positive filters are present bNoPos is true, and no negative filters are matched so we have not returned false
Thus: hasTag returns true.
If at any time a positive filter is encountered, we want at least one of the tags to match it, so we turn bNoPos to false, which
means bHasTag must be true for hasTag to return true*/
var bNoPos=true;
for (var t3 = 0; t3 < tagFilters.length; t3++)
{
for(var t2=0; t2<tiddlerTags.length; t2++)
{
if (tagFilters[t3].length > 1 && tagFilters[t3].charAt(0) == '!')
{
if (tiddlerTags[t2] == tagFilters[t3].substring(1))
{
//If at any time a negative filter is matched, we return false
return false;
}
}
else
{
if (bNoPos)
{
//We encountered the first positive filter
bNoPos=false;
}
if (tiddlerTags[t2] == tagFilters[t3])
{
//A positive filter is matched. As long as no negative filter is matched, hasTag will return true
bHasTag=true;
}
}
}
}
return (bNoPos || bHasTag);
};
//This function searches all tiddlers for the reminder //macro. It is intended that other plugins (like //calendar) will use this function to query for
//upcoming reminders.
//The arguments to this function filter out reminders //based on when they will fire.
//
//ARGUMENTS:
//baseDate is the date that is used as "now".
//leadtime is a two element int array, with leadtime[0]
// as the lower bound and leadtime[1] as the
// upper bound. A reasonable default is [0,14]
//tags is a space-separated list of tags to use to filter
// tiddlers. If a tag name begins with an !, then
// only tiddlers which do not have that tag will
// be considered. For example "examples holidays"
// will search for reminders in any tiddlers that
// are tagged with examples or holidays and
// "!examples !holidays" will search for reminders
// in any tiddlers that are not tagged with
// examples or holidays. Pass in null to search
// all tiddlers.
//limit. If limit is null, individual reminders can
// override the leadtime specified earlier.
// Pass in 1 in order to override that behavior.
window.findTiddlersWithReminders = function findTiddlersWithReminders(baseDate, leadtime, tags, limit)
{
//function(searchRegExp,sortField,excludeTag)
// var macroPattern = "<<([^>\\]+)(?:\\*)([^>]*)>>";
var macroPattern = "<<(reminder)(.*)>>";
var macroRegExp = new RegExp(macroPattern,"mg");
var matches = store.search(macroRegExp,"title","");
var arr = [];
var tagsArray = null;
if (tags != null)
{
tagsArray = tags.split(" ");
}
for(var t=matches.length-1; t>=0; t--)
{
if (tagsArray != null)
{
//If they specified tags to filter on, and this tiddler doesn't
//match, skip it entirely.
if ( ! hasTag(matches[t].tags, tagsArray))
{
continue;
}
}
var targetText = matches[t].text;
do {
// Get the next formatting match
var formatMatch = macroRegExp.exec(targetText);
if(formatMatch && formatMatch[1] != null && formatMatch[1].toLowerCase() == "reminder")
{
//Find the matching date.
var params = formatMatch[2] != null ? formatMatch[2].readMacroParams() : {};
var dateHash = getParamsForReminder(params);
if (limit != null || dateHash["leadtime"] == null)
{
if (leadtime == null)
dateHash["leadtime"] = leadtime;
else
{
dateHash["leadtime"] = [];
dateHash["leadtime"][0] = leadtime[0];
dateHash["leadtime"][1] = leadtime[1];
}
}
if (dateHash["leadtime"] == null)
dateHash["leadtime"] = config.macros.reminders["defaultLeadTime"];
var leadTimeLowerBound = baseDate.addDays(dateHash["leadtime"][0]);
var leadTimeUpperBound = baseDate.addDays(dateHash["leadtime"][1]);
var matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);
while (matchedDate != null)
{
var hash = {};
hash["diff"] = matchedDate.getDifferenceInDays(baseDate);
hash["matchedDate"] = new Date(matchedDate.getFullYear(), matchedDate.getMonth(), matchedDate.getDate(), 0, 0);
hash["params"] = cloneParams(dateHash);
hash["tiddler"] = matches[t].title;
hash["tags"] = matches[t].tags;
arr.pushUnique(hash);
if (dateHash["recurdays"] != null || (dateHash["year"] == null))
{
leadTimeLowerBound = leadTimeLowerBound.addDays(matchedDate.getDifferenceInDays(leadTimeLowerBound)+ 1);
matchedDate = findDateForReminder(dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound);
}
else matchedDate = null;
}
}
}while(formatMatch);
}
if(arr.length > 1) //Sort the array by number of days remaining.
{
arr.sort(function (a,b) {if(a["diff"] == b["diff"]) {return(0);} else {return (a["diff"] < b["diff"]) ? -1 : +1; } });
}
return arr;
};
//This function takes the reminder macro parameters and
//generates the string that is used for display.
//This function is not intended to be called by
//other plugins.
window.getReminderMessageForDisplay= function getReminderMessageForDisplay(diff, params, matchedDate, tiddlerTitle)
{
var anniversaryString = "";
var reminderTitle = params["title"];
if (reminderTitle == null)
{
reminderTitle = config.macros.reminders["untitledReminder"];
}
if (params["firstyear"] != null)
{
anniversaryString = config.macros.reminders["defaultAnniversaryMessage"].replace("DIFF", (matchedDate.getFullYear() - params["firstyear"]));
}
var mess = "";
var diffString = "";
if (diff == 0)
{
diffString = config.macros.reminders["todayString"];
}
else if (diff == 1)
{
diffString = config.macros.reminders["tomorrowString"];
}
else
{
diffString = config.macros.reminders["ndaysString"].replace("DIFF", diff);
}
var format = config.macros.reminders["defaultReminderMessage"];
if (params["format"] != null)
{
format = params["format"];
}
mess = format;
//HACK! -- Avoid replacing DD in TIDDLER with the date
mess = mess.replace(/TIDDLER/g, "TIDELER");
mess = matchedDate.formatStringDateOnly(mess);
mess = mess.replace(/TIDELER/g, "TIDDLER");
if (tiddlerTitle != null)
{
mess = mess.replace(/TIDDLERNAME/g, tiddlerTitle);
mess = mess.replace(/TIDDLER/g, "[[" + tiddlerTitle + "]]");
}
mess = mess.replace("DIFF", diffString).replace("TITLE", reminderTitle).replace("DATE", matchedDate.formatString("DDD MMM DD, YYYY")).replace("ANNIVERSARY", anniversaryString);
return mess;
};
// Parse out the macro parameters into a hashtable. This
// handles the arguments for reminder, showReminders and
// displayTiddlersWithReminders.
window.getParamsForReminder = function getParamsForReminder(params)
{
var dateHash = {};
var type = "";
var num = 0;
var title = "";
for(var t=0; t<params.length; t++)
{
var split = params[t].split(":");
type = split[0].toLowerCase();
var value = split[1];
for (var i=2; i < split.length; i++)
{
value += ":" + split[i];
}
if (type == "nolinks" || type == "limit" || type == "hidden")
{
num = 1;
}
else if (type == "leadtime")
{
var leads = value.split("...");
if (leads.length == 1)
{
leads[1]= leads[0];
leads[0] = 0;
}
leads[0] = parseInt(leads[0], 10);
leads[1] = parseInt(leads[1], 10);
num = leads;
}
else if (type == "offsetdayofweek")
{
if (value.substr(0,1) == "-")
{
dateHash["negativeOffsetDayOfWeek"] = 1;
value = value.substr(1);
}
num = parseInt(value, 10);
}
else if (type != "title" && type != "tag" && type != "format")
{
num = parseInt(value, 10);
}
else
{
title = value;
t++;
while (title.substr(0,1) == '"' && title.substr(title.length - 1,1) != '"' && params[t] != undefined)
{
title += " " + params[t++];
}
//Trim off the leading and trailing quotes
if (title.substr(0,1) == "\"" && title.substr(title.length - 1,1)== "\"")
{
title = title.substr(1, title.length - 2);
t--;
}
num = title;
}
dateHash[type] = num;
}
//date is synonymous with day
if (dateHash["day"] == null)
{
dateHash["day"] = dateHash["date"];
}
return dateHash;
};
//This function finds the date specified in the reminder
//parameters. It will return null if no match can be
//found. This function is not intended to be used by
//other plugins.
window.findDateForReminder= function findDateForReminder( dateHash, baseDate, leadTimeLowerBound, leadTimeUpperBound)
{
if (baseDate == null)
{
baseDate = new Date().getMidnight();
}
var hashKey = baseDate.convertToYYYYMMDDHHMM();
for (var k in dateHash)
{
hashKey += "," + k + "|" + dateHash[k];
}
hashKey += "," + leadTimeLowerBound.convertToYYYYMMDDHHMM();
hashKey += "," + leadTimeUpperBound.convertToYYYYMMDDHHMM();
if (reminderCache[hashKey] == null)
{
//If we don't find a match in this run, then we will
//cache that the reminder can't be matched.
reminderCache[hashKey] = false;
}
else if (reminderCache[hashKey] == false)
{
//We've already tried this date and failed
return null;
}
else
{
return reminderCache[hashKey];
}
var bOffsetSpecified = dateHash["offsetyear"] != null ||
dateHash["offsetmonth"] != null ||
dateHash["offsetday"] != null ||
dateHash["offsetdayofweek"] != null ||
dateHash["recurdays"] != null;
// If we are matching the base date for a dayofweek offset, look for the base date a
//little further back.
var tmp1leadTimeLowerBound = leadTimeLowerBound;
if ( dateHash["offsetdayofweek"] != null)
{
tmp1leadTimeLowerBound = leadTimeLowerBound.addDays(-6);
}
var matchedDate = baseDate.findMatch(dateHash, tmp1leadTimeLowerBound, leadTimeUpperBound);
if (matchedDate != null)
{
var newMatchedDate = matchedDate;
if (dateHash["recurdays"] != null)
{
while (newMatchedDate.getTime() < leadTimeLowerBound.getTime())
{
newMatchedDate = newMatchedDate.addDays(dateHash["recurdays"]);
}
}
else if (dateHash["offsetyear"] != null ||
dateHash["offsetmonth"] != null ||
dateHash["offsetday"] != null ||
dateHash["offsetdayofweek"] != null)
{
var tmpdateHash = cloneParams(dateHash);
tmpdateHash["year"] = dateHash["offsetyear"];
tmpdateHash["month"] = dateHash["offsetmonth"];
tmpdateHash["day"] = dateHash["offsetday"];
tmpdateHash["dayofweek"] = dateHash["offsetdayofweek"];
var tmpleadTimeLowerBound = leadTimeLowerBound;
var tmpleadTimeUpperBound = leadTimeUpperBound;
if (tmpdateHash["offsetdayofweek"] != null)
{
if (tmpdateHash["negativeOffsetDayOfWeek"] == 1)
{
tmpleadTimeLowerBound = matchedDate.addDays(-6);
tmpleadTimeUpperBound = matchedDate;
}
else
{
tmpleadTimeLowerBound = matchedDate;
tmpleadTimeUpperBound = matchedDate.addDays(6);
}
}
newMatchedDate = matchedDate.findMatch(tmpdateHash, tmpleadTimeLowerBound, tmpleadTimeUpperBound);
//The offset couldn't be matched. return null.
if (newMatchedDate == null)
{
return null;
}
}
if (newMatchedDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))
{
reminderCache[hashKey] = newMatchedDate;
return newMatchedDate;
}
}
return null;
};
//This does much the same job as findDateForReminder, but
//this one doesn't deal with offsets or recurring
//reminders.
Date.prototype.findMatch = function findMatch(dateHash, leadTimeLowerBound, leadTimeUpperBound)
{
var bSpecifiedYear = (dateHash["year"] != null);
var bSpecifiedMonth = (dateHash["month"] != null);
var bSpecifiedDay = (dateHash["day"] != null);
var bSpecifiedDayOfWeek = (dateHash["dayofweek"] != null);
if (bSpecifiedYear && bSpecifiedMonth && bSpecifiedDay)
{
return new Date(dateHash["year"], dateHash["month"]-1, dateHash["day"], 0, 0);
}
var bMatchedYear = !bSpecifiedYear;
var bMatchedMonth = !bSpecifiedMonth;
var bMatchedDay = !bSpecifiedDay;
var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;
if (bSpecifiedDay && bSpecifiedMonth && !bSpecifiedYear && !bSpecifiedDayOfWeek)
{
//Shortcut -- First try this year. If it's too small, try next year.
var tmpMidnight = this.getMidnight();
var tmpDate = new Date(this.getFullYear(), dateHash["month"]-1, dateHash["day"], 0,0);
if (tmpDate.getTime() < leadTimeLowerBound.getTime())
{
tmpDate = new Date((this.getFullYear() + 1), dateHash["month"]-1, dateHash["day"], 0,0);
}
if ( tmpDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))
{
return tmpDate;
}
else
{
return null;
}
}
var newDate = leadTimeLowerBound;
while (newDate.isBetween(leadTimeLowerBound, leadTimeUpperBound))
{
var tmp = testDate(newDate, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek);
if (tmp != null)
return tmp;
newDate = newDate.addDays(1);
}
};
function testDate(testMe, dateHash, bSpecifiedYear, bSpecifiedMonth, bSpecifiedDay, bSpecifiedDayOfWeek)
{
var bMatchedYear = !bSpecifiedYear;
var bMatchedMonth = !bSpecifiedMonth;
var bMatchedDay = !bSpecifiedDay;
var bMatchedDayOfWeek = !bSpecifiedDayOfWeek;
if (bSpecifiedYear)
{
bMatchedYear = (dateHash["year"] == testMe.getFullYear());
}
if (bSpecifiedMonth)
{
bMatchedMonth = ((dateHash["month"] - 1) == testMe.getMonth() );
}
if (bSpecifiedDay)
{
bMatchedDay = (dateHash["day"] == testMe.getDate());
}
if (bSpecifiedDayOfWeek)
{
bMatchedDayOfWeek = (dateHash["dayofweek"] == testMe.getDay());
}
if (bMatchedYear && bMatchedMonth && bMatchedDay && bMatchedDayOfWeek)
{
return testMe;
}
};
//Returns true if the date is in between two given dates
Date.prototype.isBetween = function isBetween(lowerBound, upperBound)
{
return (this.getTime() >= lowerBound.getTime() && this.getTime() <= upperBound.getTime());
}
//Return a new date, with the time set to midnight (0000)
Date.prototype.getMidnight = function getMidnight()
{
return new Date(this.getFullYear(), this.getMonth(), this.getDate(), 0, 0);
};
// Add the specified number of days to a date.
Date.prototype.addDays = function addDays(numberOfDays)
{
return new Date(this.getFullYear(), this.getMonth(), this.getDate() + numberOfDays, 0, 0);
};
//Return the number of days between two dates.
Date.prototype.getDifferenceInDays = function getDifferenceInDays(otherDate)
{
//I have to do it this way, because this way ignores daylight savings
var tmpDate = this.addDays(0);
if (this.getTime() > otherDate.getTime())
{
var i = 0;
for (i = 0; tmpDate.getTime() > otherDate.getTime(); i++)
{
tmpDate = tmpDate.addDays(-1);
}
return i;
}
else
{
var i = 0;
for (i = 0; tmpDate.getTime() < otherDate.getTime(); i++)
{
tmpDate = tmpDate.addDays(1);
}
return i * -1;
}
return 0;
};
function cloneParams(what) {
var tmp = {};
for (var i in what) {
tmp[i] = what[i];
}
return tmp;
}
// Substitute date components into a string
Date.prototype.formatStringDateOnly = function formatStringDateOnly(template)
{
template = template.replace("YYYY",this.getFullYear());
template = template.replace("YY",String.zeroPad(this.getFullYear()-2000,2));
template = template.replace("MMM",config.messages.dates.months[this.getMonth()]);
template = template.replace("0MM",String.zeroPad(this.getMonth()+1,2));
template = template.replace("MM",this.getMonth()+1);
template = template.replace("DDD",config.messages.dates.days[this.getDay()]);
template = template.replace("0DD",String.zeroPad(this.getDate(),2));
template = template.replace("DD",this.getDate());
return template;
};
//}}}
/***
| Name:|RenameTagsPlugin|
| Purpose:|Allows you to easily rename tags|
| Creator:|SimonBaird|
| Source:|http://simonbaird.com/mptw/#RenameTagsPlugin|
| Version:|1.0.1 (5-Mar-06)|
!Description
If you rename a tiddler/tag that is tagging other tiddlers this plugin will ask you if you want to rename the tag in each tiddler where it is used. This is essential if you use tags and ever want to rename them. To use it, open the tag you want to rename as a tiddler (it's the last option in the tag popup menu), edit it, rename it and click done. You will asked if you want to rename the tag. Click OK to rename the tag in the tiddlers that use it. Click Cancel to not rename the tag.
!Example
Try renaming [[Plugins]] or [[CSS]] on this site.
!History
* 1.0.1 (5-Mar-06) - Added feature to allow renaming of tags without side-effect of creating a tiddler
* 1.0.0 (5-Mar-06) - First working version
!Code
***/
//{{{
version.extensions.RenameTagsPlugin = {
major: 1, minor: 0, revision: 0,
date: new Date(2006,3,5),
source: "http://simonbaird.com/mptw/#RenameTagsPlugin"
};
config.macros.RenameTagsPlugin = {};
config.macros.RenameTagsPlugin.prompt = "Rename the tag '%0' to '%1' in %2 tidder%3?";
// these are very useful, perhaps they should be in the core
if (!store.addTag) {
store.addTag = function(title,tag) {
var t=this.getTiddler(title); if (!t || !t.tags) return;
t.tags.push(tag);
};
};
if (!store.removeTag) {
store.removeTag = function(title,tag) {
var t=this.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);
};
};
store.saveTiddler_orig_tagrename = store.saveTiddler;
store.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags) {
if (title != newTitle && this.getTaggedTiddlers(title).length > 0) {
// then we are renaming a tag
var tagged = this.getTaggedTiddlers(title);
if (confirm(config.macros.RenameTagsPlugin.prompt.format([title,newTitle,tagged.length,tagged.length>1?"s":""]))) {
for (var i=0;i<tagged.length;i++) {
store.removeTag(tagged[i].title,title);
store.addTag(tagged[i].title,newTitle);
// if tiddler is visible refresh it to show updated tag
story.refreshTiddler(tagged[i].title,false,true);
}
}
if (!this.tiddlerExists(title) && newBody == "") {
// dont create unwanted tiddler
return null;
}
}
return this.saveTiddler_orig_tagrename(title,newTitle,newBody,modifier,modified,tags);
}
//}}}
/***
Intended for use in ViewTemplate
!Examples
|{{{<<runMacroIfTagged [[Groceries]] toggleTag Buy>>}}}|<<runMacroIfTagged [[Groceries]] toggleTag Buy>>|
|{{{<<runMacroIfTagged Plugins toggleTag systemConfig>>}}}|<<runMacroIfTagged Plugins toggleTag systemConfig>>|
***/
//{{{
// This function contributed by Eric Shulman
function toggleTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)==null) t.tags.push(tag)
else t.tags.splice(t.tags.find(tag),1)
}
// This function contributed by Eric Shulman
function isTagged(title,tag) {
var t=store.getTiddler(title); if (!t) return false;
return (t.tags.find(tag)!=null);
}
config.macros.runMacroIfTagged = {};
config.macros.runMacroIfTagged.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
if (isTagged(tiddler.title,params[0]))
config.macros[params[1]].handler(place,params[1],params.slice(2),wikifier,paramString/*fixme*/,tiddler);
}
//}}}
/***
!Todo
* paramString needs to have the first word removed from the front of it at fixme above
***/
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.0 (Linux)">
<META NAME="AUTHOR" CONTENT="cartailler">
<META NAME="CREATED" CONTENT="20090109;22273200">
<META NAME="CHANGEDBY" CONTENT="cartailler">
<META NAME="CHANGED" CONTENT="20090109;22280600">
<STYLE TYPE="text/css">
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
TD P { margin-bottom: 0cm }
TH P { margin-bottom: 0cm; font-style: italic }
-->
</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<TABLE WIDTH=618 BORDER=1 BORDERCOLOR="#000000" CELLPADDING=3 CELLSPACING=0 STYLE="page-break-before: always">
<COL WIDTH=86>
<COL WIDTH=517>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=26 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>Pages</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 6.13cm; background: #ffffff; font-style: normal">
<FONT COLOR="#000000"><FONT SIZE=2>Extraits</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=47 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>36</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 0.22cm; margin-right: 2.26cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>«... le tatouage qui dépassait
de sa manche, an creux de l'avant-bras. Quelques lettres noires
perdues dans une foret dépolis blanchis par les ans »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=15 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>92</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 0.23cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>«
la guerre du Vietnam » <SPAN STYLE="font-style: normal">et </SPAN>«
Verdun »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=32 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>92-93</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-right: 0.01cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>«J'ai
passé une heure dans les rizières, enfoncé dans la boue
jusqu'aux, genoux, sous un déluge de flammes, d'explosions.
C'était absolument magnifique...»</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=31 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>93</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 0.24cm; margin-right: 0.06cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>«je dirige plusieurs
bataillons français lors d<SUP>{</SUP>une action de reconquête
de terrain à Verdun, en novembre 1916 »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=223 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>99
à 106</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-right: 0cm; margin-bottom: 0cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>« entre Verdun etMontmédy »
; « Général Boisdeffre » <SPAN STYLE="font-style: normal">;
</SPAN>«Le capitaine deMarigny » « Thierry se demandait s'il n
avait pas fait une grossière erreur, la veille au soir, en
remerciant le général Pétain le 8 avril 1916 pour confier les
rênes de la contre-attaque sur le front ouest au général
Nivelle »</FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-right: 0cm; margin-bottom: 0cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>« Sans le succès inespéré
de l'offensive britannique sur la Somme fin juin 1916, qui voit
contraint l'adversaire allemand, à y expédier plusieurs
divisions et à affaiblir momentanément ses positions
autour de Verdun, le front aurait été enfoncé depuis
longtemps. Pourtant Nivelle rendait régulièrement visite à ses
hommes sur la lign.e de feu, répétant à qui voulait l'entendre
»...</FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-right: 0cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>«
mai 1917 Thierry avait commandé une attaque massive sur le front
de l'Aisne, à l'ouest de Verdun. [... 1 cette offensive risquée
avait eu des conséquences déplorables sur le moral des soldats.
Des unités combattantes, de chaque côté de la ligne de front,
avaient cessé le feu pendant plusieurs jours, puis certaines d
'entre elles avaient même parcouru en arborant un drapeau blanc
le no man 's land qui les séparait pour fraterniser »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=25 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>128
à 132</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>La
Serbie</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=26 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>134</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>Eglise
de Santa Maria</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=25 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>144</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>Guernica</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=26 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>145</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>La
légion Condor</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=232 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>156-160</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-right: 0.04cm; margin-bottom: 0cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>« On le lui avait bien
expliqué en haut lieu, à Paris, avant son départ pour le front
-Les troupes étaient à bout, devaient se sentir soutenues,
reprises en main. Le général Nivelle avait enregistré trop
d'échecs pour rester en place plus longtemps. Pétain, écarté
l'an dernier, avait gardé parmi les hommes une image de chef, de
père sévère mais juste. Il fallait pour rétablir son autorité,
que Boisdeffre, qui représentait pour le gros des troupes le haut
commandement le gouvernement, l'État français dans toute sa
splendeur, soit présent pendant cette cérémonie d'expiation »</FONT></FONT></P>
<P ALIGN=LEFT STYLE="margin-right: 0.04cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>«
Ils avaient failli, collectivement sur toute cette ligne de front
autour de Laon. Avaient déposé leurs fusils pour fraterniser
avec l<SUP>f</SUP> ennemi. Avaient selon les termes du rapport
que Thierry., lui-même avait contresigné, " refusé d'obéir
aux ordres <SPAN STYLE="font-style: normal">". </SPAN><I>Il</I><SPAN STYLE="font-style: normal">
</SPAN>avait fallu faire venir de nouvelles troupes de l'arrière,
incarcérer les mutins les plus obstinés, pour permette aux
combats de reprendre. Mais ils étaient trop nombreux, la faute
collective était trop grande, pour qu'on pût imaginer les
fusiller tous. Aussi avait-il été décidé, en guise de
punition, que seraient tirés au sort parmi les mutins ceux qui
seraient fusillés pour l'exemple. Et que leurs frères d'armes
eux-mêmes seraient chargés de cette besogne »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TH WIDTH=86 HEIGHT=61 BGCOLOR="#ffffff">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT SIZE=2>P163- 164</FONT></FONT></P>
</TH>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-top: 0.07cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>«
Guernica », « avril- 1937 <SPAN STYLE="font-style: normal">», </SPAN>«
l'aviation allemande l'a réduite en cendres », « le pays était
pleine g<FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>en
pleine guerre civile, entre républicains-et franquistes, et (que)
le</I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>
général Franco avait </I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>demandé
à Hitler une aide matérielle, dont cette fameuse légion Condor,
qui a bombardé </I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>Guernica ».</I></SPAN></FONT></FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=23 BGCOLOR="#ffffff" SDVAL="173" SDNUM="1036;">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal; font-weight: normal">
<FONT COLOR="#000000"><FONT SIZE=2>173</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-right: 0.04cm; background: #ffffff"><FONT COLOR="#000000"><FONT SIZE=2>« No
Pasaran »</FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=44 BGCOLOR="#ffffff" SDVAL="200" SDNUM="1036;">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>200</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 0.22cm; margin-right: 0.05cm; margin-top: 0.13cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>«
Franco a décidé de reprendre Boadilla, parce que c'est la
dernière route qui permet aux </I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>troupes
républicaines d'approvisionner Madrid assiégée. Si Boadilla
tombe Madrid </I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><I>tombera...
</I></SPAN></FONT><FONT FACE="Times New Roman, serif"><SPAN LANG="fr-FR"><SPAN STYLE="font-style: normal">»</SPAN></SPAN></FONT></FONT></FONT></P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=86 HEIGHT=22 BGCOLOR="#ffffff" SDVAL="228" SDNUM="1036;">
<P ALIGN=CENTER STYLE="background: #ffffff; font-style: normal"><FONT COLOR="#000000"><FONT SIZE=2>228</FONT></FONT></P>
</TD>
<TD WIDTH=517 BGCOLOR="#ffffff">
<P ALIGN=LEFT STYLE="margin-left: 0.22cm; margin-right: 0.05cm; margin-top: 0.13cm; background: #ffffff">
<FONT COLOR="#000000"><FONT SIZE=2>« 16 juillet 1942 »</FONT></FONT></P>
</TD>
</TR>
</TABLE>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
</BODY>
</HTML>
<<search>><<closeAll>><<permaview>><<newTiddler tag:cours>> <<saveChanges>><<upload >>UploadForm<<slider chkSliderOptionsPanel OptionsPanel "options »" "Change TiddlyWiki advanced options">>
<<tabs txtMainTab Chrono 'Affichage chronologique' TabTimeline Alpha 'Liste alphabétique des éléments' TabAll Index 'Liste des index' TabTags Suite 'Autres listes' TabMore>>
(See also SliderSiteMap)
|<<siteMap crédits>><<siteMap FunStuff>><<siteMap Todo . . . . Done>>|<<siteMap TagglyTagging>><<siteMap More... 2>>|<<siteMap Plugins 2>>|
|noBorder threeCol|k|
/***
| Name:|SiteMapMacro|
| Author:|Simon Baird|
| Location:|http://simonbaird.com/mptw/#SiteMapMacro|
| Version:|1.0.3, 15-Mar-06|
!!Examples
See SiteMap and SliderSiteMap for example usage.
!!Parameters
* Name of tiddler to start at
* Max depth (a number)
* Format (eg, nested, see formats below)
* Don't show root flag (anything other than null turns it on)
* Tags - a string containing a bracketed list of tags that we are interested in
!!History
* 1.0.3 (15-Mar-06)
** added tag filtering
* 1.0.2 (15-Mar-06)
** Added json format and dontshowroot option
* 1.0.1 (9-Mar-06)
** Added selectable formats and fixed nested slider format
* 1.0.0 (8-Mar-06)
** first release
***/
//{{{
version.extensions.SiteMapMacro = {
major: 1,
minor: 0,
revision: 3,
date: new Date(2006,3,15),
source: "http://simonbaird.com/mptw/#SiteMapMacro"
};
config.macros.siteMap = {
formats: {
bullets: {
formatString: "%0[[%1]]\n%2",
indentString: "*"
},
// put this in your StyleSheet to make it look good.
// .sliderPanel { margin-left: 2em; }
sliders: {
formatString: "[[%1]]+++\n%2===\n\n",
formatStringLeaf: "[[%1]]\n"
},
openSliders: {
formatString: "[[%1]]++++\n%2===\n\n",
formatStringLeaf: "[[%1]]\n"
},
popups: {
formatString: "[[%1]]+++^\n%2===\n\n",
formatStringLeaf: "[[%1]]\n"
},
// these don't work too well
openPopups: {
formatString: "[[%1]]++++^\n%2===\n\n",
formatStringLeaf: "[[%1]]\n"
},
// this is a little nuts but it works
json: {
formatString: '\n%0{"%1":[%2\n%0]}',
formatStringLeaf: '\n%0"%1"',
indentString: " ",
separatorString: ","
}
},
defaultFormat: "bullets",
treeTraverse: function(title,depth,maxdepth,format,dontshowroot,tags,excludetags) {
var tiddler = store.getTiddler(title);
var tagging = store.getTaggedTiddlers(title);
if (dontshowroot)
depth = 0;
var indent = "";
if (this.formats[format].indentString)
for (var j=0;j<depth;j++)
indent += this.formats[format].indentString;
var childOutput = "";
if (!maxdepth || depth < parseInt(maxdepth))
for (var i=0;i<tagging.length;i++)
if (tagging[i].title != title) {
if (this.formats[format].separatorString && i != 0)
childOutput += this.formats[format].separatorString;
childOutput += this.treeTraverse(tagging[i].title,depth+1,maxdepth,format,null,tags,excludetags);
}
if (childOutput == "" && (
(tags && tags != "" && !tiddler.tags.containsAll(tags.readBracketedList())) ||
(excludetags && excludetags != "" && tiddler.tags.containsAny(excludetags.readBracketedList()))
)
) {
// so prune it cos it doesn't have the right tags and neither do any of it's children
return "";
}
if (dontshowroot)
return childOutput;
if (this.formats[format].formatStringLeaf && childOutput == "") {
// required for nestedSliders
return this.formats[format].formatStringLeaf.format([indent,title,childOutput]);
}
return this.formats[format].formatString.format([indent,title,childOutput]);
},
handler: function (place,macroName,params,wikifier,paramString,tiddler) {
wikify(this.treeTraverse(
params[0] && params[0] != '.' ? params[0] : tiddler.title, 1,
params[1] && params[1] != '.' ? params[1] : null, // maxdepth
params[2] && params[2] != '.' ? params[2] : this.defaultFormat, // format
params[3] && params[3] != '.' ? params[3] : null, // dontshowroot
params[4] && params[4] != '.' ? params[4] : null, // tags
params[5] && params[5] != '.' ? params[5] : null // excludetags
),place);
}
}
//}}}
==N.B. This works with Paulo Soares' SlideShowPlugin; it doesn't (yet?) work with my set-up here, which uses the SelectStylesheetPlugin. There's some kind of conflict, because right now if you click on any of the links below you still see title header and rhs tags, which is to say that it's still using the default PageTemplate, not Paulo's SlideShowPageTemplate.==
Now fixed (Nov.14th)
<<slideShow>> - A simple slide show that keeps the TW style
<<slideShow style:'MySSStyleSheet' clock:'+'>> - A themed slide show with a clock showing the presentation elapsed time
<<slideShow repeat clock:'-20'>> - A looping slide show with a 20 minutes countdown clock
<<slideShow slidePause:1000>> - A timed slideshow that runs once
<<slideShow slidePause:1000 repeat>> - A timed looping slideshow
-s-
!The [[SlideShowPlugin]]
Press F11 to go fullscreen and adjust the font sizes with Ctrl++ Ctrl+- (or Ctrl+mousewheel).
This plugin was developed by Paulo Soares and Clint Checketts.
{{Comment{This block is not shown in the slide show.
@@Don't show me!!!@@}}}
-s-
!How slides are separated
In a tiddler, you start each slide with the markup {{{-s-}}}
-s-
Slides don't have to have titles like this poor one
-s-
!A slide with subsections and a long title
Check to TOC below to see how this slide title is abbreviated.
!!Section 1
This is a section
!!!Subsection 1.1
This is a subsection
!!!Subsection 1.2
This is another subsection
!!!!Subsubsection 1.2.1
This is a subsubsection
-s-
!Using the keyboard
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
-s-
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
-s-
!Overlays
To see how incremental display works use the left and right mouse buttons.
{{Overlay1{You can}}} {{Overlay2{present things}}} {{Overlay1{in an arbitrary order!!!}}}
{{Overlay3{Its a bit harder with lists but it works:}}}
<html>
<ol>
<li class="Overlay4">First item</li>
<li class="Overlay5">Second item</li>
<li class="Overlay4">Last item</li>
</ol>
</html>
{{Comment{You can hide comments on a slide that won't display in the slide show}}}
<!--{{{-->
<div id='displayArea'>
<div id='tiddlerDisplay'></div>
</div>
<!--}}}-->
/***
|''Name:''|SlideShowPlugin|
|''Description:''|Creates a simple slide show type display|
|''Version:''|1.5.1|
|''Date:''|Nov 10, 2006|
|''Source:''|http://www.math.ist.utl.pt/~psoares/addons.html|
|''Author:''|Paulo Soares (psoares (at) math (dot) ist (dot) utl (dot) pt) and [[Clint Checketts|http://www.checkettsweb.com]]|
|''License:''|[[BSD open source license]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; InternetExplorer 6.0|
<<tiddler SlideShowPluginDoc>>
!Code
***/
//{{{
config.macros.slideShow = {label: "slide show", maxTOCLength: 30};
config.macros.slideShow.messages = {gotoLabel: "Go to slide:"};
config.views.wikified.slideShow = {text: "slide show", tooltip: "Start slide show"};
config.views.wikified.slideShow.quit = {text: "end", tooltip: "Quit the slide show"};
config.views.wikified.slideShow.firstSlide = {text: "<<", tooltip: "first slide"};
config.views.wikified.slideShow.previousSlide = {text: "<", tooltip: "previous slide"};
config.views.wikified.slideShow.nextSlide = {text: ">", tooltip: "next slide"};
config.views.wikified.slideShow.lastSlide = {text: ">>", tooltip: "last slide"};
config.views.wikified.slideShow.resetClock = {text: " ", tooltip: "reset"};
config.formatters.push( {
name: "SlideSeparator",
match: "^-s-+$\\n?",
handler: function(w)
{
createTiddlyElement(w.output,"hr",null,'slideSeparator');
}
}
)
function changeStyleSheet(tiddlerName) {
if (tiddlerName == null) tiddlerName = "StyleSheet";
setStylesheet(store.getRecursiveTiddlerText("StyleSheetColors"),"StyleSheetColors");
setStylesheet(store.getRecursiveTiddlerText("StyleSheetLayout"),"StyleSheetLayout");
var theCSS = store.getRecursiveTiddlerText(tiddlerName,"");
setStylesheet(theCSS,"StyleSheet");
}
//Excellent (and versatile) reparser created by Paul Petterson for parsing the paramString in a macro
function reparse( params ) {
var re = /([^:\s]+)(?:\:((?:\d+)|(?:["'](?:[^"']+)["']))|\s|$)/g;
var ret = new Array() ;
var m ;
while( (m = re.exec( params )) != null ) ret[ m[1] ] = m[2]?m[2]:true ;
return ret ;
}
function getElementsByClass(searchClass,node,tag) {
var classElements = new Array();
if ( node == null ) node = document;
if ( tag == null ) tag = '*';
var els = node.getElementsByTagName(tag);
var elsLen = els.length;
var pattern = new RegExp("(^|\\s)"+searchClass+"(\\s|$)");
var j=0;
for (var i = 0; i < elsLen; i++) {
if ( pattern.test(els[i].className) ) {
classElements[j] = els[i];
j++;
}
}
return classElements;
}
// 'keys' code adapted from S5 which in turn was adapted from MozPoint (http://mozpoint.mozdev.org/)
function keys(key) {
if (document.getElementById('contentWrapper').className == "slideShowMode"){
if (!key) {
key = event;
key.which = key.keyCode;
}
switch (key.which) {
case 32: // spacebar
if(time>0){
if(autoAdvance){
clearInterval(autoAdvance);
autoAdvance = null;
} else {
autoAdvance=setInterval("GoToSlide(1)", time);
}
}
break;
case 34: // page down
case 39: // rightkey
GoToSlide("n");
break;
case 40: // downkey
GoToSlide(-1);
break;
case 33: // page up
case 37: // leftkey
GoToSlide("p");
break;
case 38: // upkey
GoToSlide(1);
break;
case 36: // home
GoToSlide("f");
break;
case 35: // end
GoToSlide("l");
break;
case 27: // escape
endSlideShow();
break;
}
}
return false;
}
function clicker(e) {
if (!e) var e = window.event;
var target = resolveTarget(e);
//Whenever something is clicked that won't advance the slide make sure that the table of contents gets hidden
if (target.getAttribute('href') != null || isParentOrSelf(target, 'toc') || isParentOrSelf(target,'embed') || isParentOrSelf(target,'object') || isParentOrSelf(target, 'pageFooter') || isParentOrSelf(target, 'navigator')){
//Don't hide the TOC if the indexNumbers (which trigger the index) is clicked
if(isParentOrSelf(target,'indexNumbers') || isParentOrSelf(target,'jumpInput')){
return true;
}
showHideTOC('none');
return true;
}
//Advance a slide if the TOC is visible otherwise make sure that the TOC gets hidden
if ((!e.which && e.button == 1) || e.which == 1) {
if (document.getElementById('toc').style.display != 'block'){
GoToSlide("n");
} else {
showHideTOC('none');
}
}
if ((!e.which && e.button == 2) || e.which == 3) {
if (document.getElementById('toc').style.display != 'block'){
GoToSlide("p");
} else {
showHideTOC('none');
}
return false;
}
}
function isParentOrSelf(element, id) {
if (element == null || element.nodeName=='BODY') return false;
else if (element.id == id) return true;
else return isParentOrSelf(element.parentNode, id);
}
GoToSlide=function(step) {
var new_pos;
var slideHolder = document.getElementById('slideContainer');
//The parse float ensures that the attribute is returned as a number and not a string.
var cur_pos = parseFloat(slideHolder.getAttribute('currentslide'));
var numberSlides = parseFloat(slideHolder.getAttribute('numberSlides'));
switch (step) {
case "f":
new_pos=0;
break;
case "l":
new_pos=numberSlides-1;
break;
case "n":
var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
if(numberOverlays==0 || currentOverlay==numberOverlays){
new_pos=cur_pos+1;
} else {
var className="Overlay"+currentOverlay;
var overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(var i=0; i<overlay.length; i++) {overlay[i].className=className+' previousOverlay';}
currentOverlay++;
slideHolder.setAttribute('currentOverlay',currentOverlay);
className="Overlay"+currentOverlay;
overlay=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(i=0; i<overlay.length; i++) {overlay[i].className=className+' currentOverlay';}
return false;
}
break;
case "p":
var numberOverlays = parseFloat(slideHolder.childNodes[cur_pos].getAttribute('numberOverlays'));
var currentOverlay = parseFloat(slideHolder.getAttribute('currentOverlay'));
if(numberOverlays==0 || currentOverlay==0){
new_pos=cur_pos-1;
} else {
var className="Overlay"+currentOverlay;
var overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(var i=0; i<overlays.length; i++) {overlays[i].className=className+' nextOverlay';}
currentOverlay--;
className="Overlay"+currentOverlay;
overlays=getElementsByClass(className,slideHolder.childNodes[cur_pos]);
for(i=0; i<overlays.length; i++) {overlays[i].className=className+' currentOverlay';}
slideHolder.setAttribute('currentOverlay',currentOverlay);
return false;
}
break;
default:
new_pos=cur_pos+step;
}
if(slideShowCircularMode && new_pos == numberSlides) new_pos=0;
if(slideShowCircularMode && new_pos<0) new_pos=(numberSlides - 1);
if(step!=0 && new_pos>=0 && new_pos<numberSlides) {
slideHolder.childNodes[cur_pos].style.display='none';
slideHolder.childNodes[new_pos].style.display='block';
slideHolder.setAttribute('currentslide',new_pos);
var numberOverlays = parseFloat(slideHolder.childNodes[new_pos].getAttribute('numberOverlays'));
if(step=="p"){
var currentOverlay=numberOverlays;
var state=' previousOverlay';
} else {
var currentOverlay=0;
var state=' nextOverlay';
}
slideHolder.setAttribute('currentOverlay',currentOverlay);
if(numberOverlays>0) {
for(var i=1; i<=numberOverlays; i++){
var className="Overlay"+i;
var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
for(var j=0; j<overlays.length; j++) {overlays[j].className=className+state;}
}
if(step=="p"){
var className="Overlay"+numberOverlays;
var overlays=getElementsByClass(className,slideHolder.childNodes[new_pos]);
for(var j=0; j<overlays.length; j++) {overlays[j].className=className+' currentOverlay';}
}
}
new_pos++;
var indexNumbers = document.getElementById('indexNumbers');
indexNumbers.firstChild.data = new_pos+'/'+numberSlides;
if((new_pos==numberSlides) && !slideShowCircularMode && autoAdvance) clearInterval(autoAdvance);
return true;
}
return false;
}
function tocShowSlide(e) {
if (!e) var e = window.event;
var target = resolveTarget(e);
var slide = target.getAttribute('slideNumber');
var cur_pos = document.getElementById('slideContainer').getAttribute('currentslide');
var step = slide-cur_pos;
if(step!=0) GoToSlide(step);
showHideTOC('none');
return;
}
//Toggle the display of the table of contents
function showHideTOC(display){
var toc = document.getElementById('toc');
//Reset the input box
document.getElementById('jumpInput').value = "";
if (display == null || display.length == null){
if (toc.style.display == 'none' || toc.style.display == ''){
toc.style.display = 'block';
document.getElementById('jumpInput').focus();
} else {
toc.style.display = 'none';
}
} else {
toc.style.display = display;
if (display == 'block')
document.getElementById('jumpInput').focus();
}
}
function makeSignature(title,params){
var signature = title+store.getTiddler(title).modified;
if(params['style']) signature += params['style'];
if(params['repeat']) signature += "repeat";
if(params['slidePause'] > 0) signature += params['slidePause'];
if(params['autostart']) signature += "autostart";
if(params['clock']) signature += params['clock'];
if(params['noOverlays']) signature += "noOverlays";
return signature;
}
function padZero(x){
return (x>=10 || x<0 ? "" : "0")+x;
}
setClock=function(){
var actualTime = new Date();
var newTime = actualTime.getTime() - clockStartTime;
newTime = clockMultiplier*newTime+clockInterval+clockCorrection;
actualTime.setTime(newTime);
newTime = padZero(actualTime.getHours()) + ":" + padZero(actualTime.getMinutes())+ ":" + padZero(actualTime.getSeconds());
var clock = document.getElementById('slideClock');
clock.firstChild.nodeValue = newTime;
}
resetClock=function(){
var time = new Date(0);
if(clockStartTime>time){
var startTime = new Date();
clockStartTime=startTime.getTime();
}
}
var title;
var place;
var autoAdvance=null;
var autoStart=null;
var slideClock=null;
var noOverlays=false;
var time = 0;
var slideShowCircularMode;
var slideShowStyleSheet;
var slideShowParams;
var clockMultiplier;
var clockInterval;
var clockCorrection=0;
var clockStartTime;
var openTiddlers;
config.macros.slideShow.handler = function(aPlace,macroName,params,wikifier,paramString,tiddler){
if(tiddler instanceof Tiddler){
var lingo = config.views.wikified.slideShow;
var autostart = false;
if (!e) var e = window.event;
place = aPlace;
title = tiddler.title;
params = reparse(paramString);
var onclick = function(){config.macros.slideShow.onClickSlideShow(params);};
createTiddlyButton(aPlace,lingo.text,lingo.tooltip,onclick);
var slideShowHolder = document.getElementById('slideShowWrapper');
//If no show exist previously, create it
if(params['autostart']){
if(slideShowHolder != null){
var signature = slideShowHolder.getAttribute('showSignature');
if(signature.indexOf("autostart")==-1) autostart = true;
} else {autostart = true;}
if(autostart){
slideShowParams = params;
setTimeout(config.macros.slideShow.onClickSlideShow,100);
}
}
}
}
var disableFunction = function(e){return false;}
var enableFunction = function(e){}
config.macros.slideShow.onClickSlideShow = function(newParams) {
if(typeof(newParams)=="number") newParams=slideShowParams;
openTiddlers = new Array;
var viewer=document.getElementById('tiddlerDisplay');
for(var i=0; i<viewer.childNodes.length; i++){
var name = viewer.childNodes[i].getAttribute('tiddler');
openTiddlers.push(name);
}
document.oncontextmenu = disableFunction;
clockMultiplier = 1;
clockInterval = 0;
var startTime = new Date(0);
slideShowCircularMode = false;
time = 0;
slideShowStyleSheet = null;
if(newParams['style']){
slideShowStyleSheet = eval(newParams['style']);
}
if(newParams['repeat']){
slideShowCircularMode = true;
}
if(newParams['slidePause'] > 0){
time = newParams['slidePause'];
}
if(newParams['clock']){
clockCorrection=startTime.getTimezoneOffset()*60000;
startTime = new Date();
var clockType= eval(newParams['clock']);
if(clockType != '+') {
clockMultiplier = -1;
clockInterval = -clockType*60000;
}
}
clockStartTime=startTime.getTime();
if(newParams['noOverlays']){
noOverlays = true;
}
var contentWrapper = document.getElementById('contentWrapper');
if (contentWrapper.className != "slideShowMode"){
clearMessage();
//Attach the key and mouse listeners
document.onkeyup = keys;
document.onmouseup = clicker;
var slideShowHolder = document.getElementById('slideShowWrapper');
story.refreshTiddler(title,"SlideShowViewTemplate",true);
//If no show exist previously, create it
if(slideShowHolder == null){
createSlides(newParams);
//If there was once waiting in the background and it matches the one we just started, resume it
} else if (slideShowHolder.getAttribute('showSignature') == makeSignature(title,newParams)){
//Remove dblClick on edit function
var theTiddler = document.getElementById("tiddler"+title);
theTiddler.ondblclick = function() {};
// Grab the 'viewer' element and give it a signature so the show can be resumed if stopped
var tiddlerElements = theTiddler.childNodes;
var viewer;
for (var i = 0; i < tiddlerElements.length; i++){
if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];
}
theTiddler.insertBefore(slideShowHolder,viewer);
theTiddler.removeChild(viewer);
slideShowHolder.style.display = 'block';
document.getElementById("pageFooter").className = "pageFooterOff";
//If the show we started it totally new than the resumable one, create the new one and kill the resumable one
} else {
slideShowHolder.parentNode.removeChild(slideShowHolder);
createSlides(newParams);
}
slideClock=setInterval("setClock()", 1000);
if(time>0) autoAdvance=setInterval("GoToSlide(1)", time);
story.closeAllTiddlers(title);
toggleSlideStyles();
} else {
endSlideShow();
}
return ;
}
function endSlideShow(){
//Set aside show so it can be resumed later
var showHolder = document.getElementById('slideShowWrapper');
showHolder.style.display = 'none';
document.getElementById('contentWrapper').parentNode.appendChild(showHolder);
document.oncontextmenu = enableFunction;
if(autoAdvance) clearInterval(autoAdvance);
if(slideClock) clearInterval(slideClock);
story.refreshTiddler(title,null,true);
story.closeAllTiddlers();
toggleSlideStyles();
story.displayTiddlers(null,openTiddlers,DEFAULT_VIEW_TEMPLATE);
document.onmouseup = function(){};
}
function isInteger(s){
var i;
for (i = 0; i < s.length; i++){
// Check that current character is number.
var c = s.charAt(i);
if (((c < "0") || (c > "9"))) return false;
}
// All characters are numbers.
return true;
}
function jumpInputToSlide(e){
if (!e) {
e = window.event;
e.which = e.keyCode;
}
if(e.which==13){
var jumpInput= document.getElementById("jumpInput").value;
if(isInteger(jumpInput)){
var step=jumpInput-document.getElementById('slideContainer').getAttribute('currentslide')-1;
if (GoToSlide(step)){
showHideTOC('none');
}
}
}
return;
}
//Used to shorten the TOC fields
function abbreviateLabel(label){
var maxTOCLength = config.macros.slideShow.maxTOCLength;
if(label.length>maxTOCLength) {
var temp = new Array();
temp = label.split(' ');
label = temp[0];
for(var j=1; j<temp.length; j++){
if((label.length+temp[j].length)<=maxTOCLength){
label += " " + temp[j];
} else {
label += " ...";
break;
}
}
}
return label;
}
createSlides = function(newParams){
var lingo = config.views.wikified.slideShow;
//Remove dblClick on edit function
var theTiddler = document.getElementById("tiddler"+title);
theTiddler.ondblclick = function() {};
// Grab the 'viewer' element and give it a signature so the show can be resumed if stopped
var tiddlerElements = theTiddler.childNodes;
var viewer;
for (var i = 0; i < tiddlerElements.length; i++){
if (tiddlerElements[i].className == "viewer") viewer = tiddlerElements[i];
}
viewer.id = 'slideShowWrapper';
viewer.setAttribute("showSignature",makeSignature(title,newParams));
//Hide the text that comes before the first H1 element (I think I may put this into a cover page type thing)
while(viewer.childNodes.length > 0 && viewer.firstChild.nodeName.toUpperCase() != "HR" && viewer.firstChild.className!="slideSeparator") {
viewer.removeChild(viewer.firstChild);
}
//Cycle through the content and each time you hit an H1 begin a new slide div
var slideNumber = 0;
var slideHolder = document.createElement('DIV');
slideHolder.id = "slideContainer";
while(viewer.childNodes.length > 0){
//Create a new slide a append it to the slide holder
if (viewer.firstChild.nodeName.toUpperCase() == "HR" && viewer.firstChild.className=="slideSeparator"){
slideNumber++;
var slide = document.createElement('DIV');
slide.id = "slideNumber"+slideNumber;
slide.className = "slide";
if (slideNumber > 1) {
slideHolder.setAttribute('currentslide',0);
slide.style.display='none';
} else {
slide.style.display='block';
}
slideHolder.appendChild(slide);
viewer.removeChild(viewer.firstChild);
} else {
if(viewer.firstChild.nodeName=="SPAN" && viewer.firstChild.className=="" && viewer.firstChild.hasChildNodes()) {
var anchor=viewer.firstChild.nextSibling;
for (var ii=0;ii<viewer.firstChild.childNodes.length;ii++) {
var clone=viewer.firstChild.childNodes[ii].cloneNode(true);
viewer.insertBefore(clone,anchor);
}
viewer.removeChild(viewer.firstChild);
} else {
slide.appendChild(viewer.firstChild);
}
}
}
//Stick the slides back into the viewer
viewer.appendChild(slideHolder);
slideHolder.setAttribute('numberSlides',slideNumber);
//Create the navigation bar
var pagefooter = createTiddlyElement(viewer,"DIV","pageFooter","pageFooterOff");
var navigator = createTiddlyElement(pagefooter,"SPAN","navigator");
//Make it so that when the footer is hovered over the class will change to make it visible
pagefooter.onmouseover = function () {pagefooter.className = "pageFooterOn"};
pagefooter.onmouseout = function () {pagefooter.className = "pageFooterOff"};
//Create the control button for the navigation
var onClickQuit = function(){endSlideShow();};
createTiddlyButton(navigator,lingo.quit.text,lingo.quit.tooltip,onClickQuit);
createTiddlyButton(navigator,lingo.firstSlide.text,lingo.firstSlide.tooltip,first_slide);
createTiddlyButton(navigator,lingo.previousSlide.text,lingo.previousSlide.tooltip,previous_slide);
createTiddlyButton(navigator,lingo.nextSlide.text,lingo.nextSlide.tooltip,next_slide);
createTiddlyButton(navigator,lingo.lastSlide.text,lingo.lastSlide.tooltip,last_slide);
createTiddlyButton(navigator,lingo.resetClock.text,lingo.resetClock.tooltip,resetClock,"button","slideClock");
var indexNumbers = createTiddlyElement(pagefooter,"SPAN","indexNumbers","indexNumbers","1/"+slideNumber)
indexNumbers.onclick = showHideTOC;
var toc = createTiddlyElement(pagefooter,"UL","toc");
var ovl=1;
for (var i=0;i<slideHolder.childNodes.length;i++) {
if(!noOverlays) {
var ovl=1;
while(1){
var className="Overlay"+ovl;
var overlays=getElementsByClass(className,slideHolder.childNodes[i]);
if(overlays.length>0){
for(var j=0; j<overlays.length; j++) {overlays[j].className+=' nextOverlay';}
ovl++;
} else {break;}
}
}
slideHolder.childNodes[i].setAttribute("numberOverlays",ovl-1);
slideHolder.setAttribute("currentOverlay",0);
//Loop through each slide and check the header's content
var tocLabel = null;
for (var j=0;j<slideHolder.childNodes[i].childNodes.length;j++) {
var node = slideHolder.childNodes[i].childNodes[j];
if(node.nodeName=="H1" || node.nodeName=="H2" || node.nodeName=="H3" || node.nodeName=="H4") {
var htstring = node.innerHTML;
var stripped = htstring.replace(/(<([^>]+)>)/ig,"");
tocLabel = abbreviateLabel(stripped);
var tocLevel="tocLevel"+node.nodeName.charAt(1);
var tocItem = createTiddlyElement(toc,"LI",null,tocLevel);
var tocLink = createTiddlyElement(tocItem,"A",null,"tocItem",tocLabel);
tocLink.setAttribute("slideNumber",i);
tocLink.onclick=tocShowSlide;
}
}
}
//Input box to jump to s specific slide
var tocItem = createTiddlyElement(toc,"LI",null,"tocJumpItem",config.macros.slideShow.messages.gotoLabel);
var tocJumpInput = createTiddlyElement(tocItem,"INPUT","jumpInput");
tocJumpInput.type="text";
tocJumpInput.onkeyup=jumpInputToSlide;
}
var next_slide= function(e){GoToSlide(1);}
var first_slide= function(e){GoToSlide("f");}
var previous_slide= function(e){GoToSlide(-1);}
var last_slide= function(e){GoToSlide("l");}
function toggleSlideStyles(){
var contentWrapper = document.getElementById('contentWrapper');
if (contentWrapper.className == "slideShowMode"){
contentWrapper.className = "";
window.applyPageTemplate();
if(slideShowStyleSheet) changeStyleSheet();
} else{
contentWrapper.className = "slideShowMode";
window.applyPageTemplate("SlideShowPageTemplate");
if(slideShowStyleSheet) changeStyleSheet(slideShowStyleSheet);
}
}
setStylesheet("/***\n!Slide Mode Styles\n***/\n/*{{{*/\n#contentWrapper.slideShowMode #slideContainer{\n display: block;\n}\n\n#contentWrapper.slideShowMode .Comment{\n display: none;\n}\n\n#contentWrapper.slideShowMode .nextOverlay{\n visibility: hidden;\n}\n\n#contentWrapper.slideShowMode .currentOverlay{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode .previousOverlay{\n visibility: visible;\n}\n\n#jump{\n text-align: right;\n}\n\n.pageFooterOff #navigator{\n visibility: hidden;\n}\n\n.pageFooterOn #navigator{\n visibility: visible;\n}\n\n#contentWrapper.slideShowMode #slideClock{\n cursor: pointer; margin: 0 5px 0 5px; border: 1px solid #db4\n}\n\n#contentWrapper.slideShowMode,\n #contentWrapper.slideShowMode #displayArea{\n width: 100%;\n font-size: 1.5em;\n margin: 0 !important;\n padding: 0;\n}\n\n#slideContainer{\n display: none;\n}\n\n.indexNumbers{\n cursor: pointer;\n}\n\n#navigator{\n visibility: hidden;\n bottom: 0;\n}\n\n#toc{\n display: none;\n position: absolute;\n font-size: .75em;\n bottom: 2em;\n right: 0;\n background: #fff;\n border: 1px solid #000;\n text-align: left;\n}\n\nul#toc, #toc li{\n margin: 0;\n padding: 0;\n list-style: none;\n line-height: 1em;\n}\n\n.tocJumpItem{\n margin-right: 2em;\n}\n\n.tocJumpItem input{\nmargin-right: 1em;\n border: 0;\n}\n\n#toc a,\n#toc a.button{\n display: block;\n padding: .1em;\n}\n\n#toc .tocLevel1{\nfont-size: .8em;\n}\n\n#toc .tocLevel2{\n margin-left: 1em;\n font-size: .75em;\n}\n\n#toc .tocLevel3{\n margin-left: 2em;\nfont-size: .75em;\n}\n\n#toc .tocLevel4{\n margin-left: 3em;\nfont-size: .65em;\n}\n\n#toc a{\n cursor: pointer;\n}\n\nh1{\n min-height: 1em;\n}\n\n.slide h1{\n min-height: 0;\n}\n\n/* The '>' selector is ignored by IE6 and earlier so the proper rules are given */\n#pageFooter{\n position: fixed;\n bottom: 2px;\n right: 2px;\n width: 100%;\n text-align: right;\n}\n\n/* This is a hack to trick IE6 and earlier to put the navbar on the bottom of the page */\n* html #pageFooter {\n position: absolute;\n width: 100%;\n text-align: right;\n right: auto; bottom: auto;\n left: expression( ( -20 - pageFooter.offsetWidth + ( document.documentElement.clientWidth ? document.documentElement.clientWidth : document.body.clientWidth ) + ( ignoreMe2 = document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft ) ) + 'px' );\n top: expression( ( -10 - pageFooter.offsetHeight + ( document.documentElement.clientHeight ? document.documentElement.clientHeight : document.body.clientHeight ) + ( ignoreMe = document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop ) ) + 'px' );\n}\n\n\n\n/*}}}*/","slideShowStyles");
//}}}
!Description
This plugin turns a TiddlyWiki tiddler into a simple slide show type display. Most features that are usually found in presentation software are available. It should work in a way that does not interfere with TiddlyWiki. When you close the slide show you get back to your good old TW.
This plugin has been tested in Firefox and Internet Explorer. Let me know if something seems broken.
!Usage
To use this plugin you //must// be using TiddlyWiki 2.0. Some optional features (as the incremental display) require version 2.0.8 or higher. To install the plugin copy the tiddlers SlideShowPlugin, SlideShowPageTemplate and SlideShowViewTemplate to your TW, label the first one with the //systemConfig// tag, save the TW and refresh the browser.
To make a slide show simply drop {{{<<slideShow>>}}} at the beginning of a tiddler and use {{{--s--}}} to start each slide.
If you move your mouse over the bottom of the browser window you will see a few navigation buttons, a clock and a table of contents that shows up when you click the slide number.
Any block of text marked as {{{{{Comment{For my eyes only!}}}}}} will not be displayed in the slide show.
See these and other features in this [[SlideShowExample]].
!Incremental display
A succession of overlays (or layers) can be defined in each slide by marking blocks of text with {{{{{Overlay1{...some text...}}}}}}, {{{{{Overlay2{...some text...}}}}}}, {{{{{Overlay3{...some text...}}}}}}, ...
To costumize the way overlays are shown you can redefine the following CSS classes
*contentWrapper.slideShowMode .previousOverlay
*contentWrapper.slideShowMode .currentOverlay
*contentWrapper.slideShowMode .nextOverlay
in a ~StyleSheet. The default style simply hides the next overlays and shows the current and the previous ones as normal text.
!Slide show parameters
*The slide show can be themed by providing a ~StyleSheet ({{{<<slideShow style:'MyStyleSheet'>>}}})
*By default, there is a clock at bottom of the browser window that displays the current time. This clock can also show the presentation elapsed time with {{{<<slideShow clock:'+'>>}}} or a countdown clock with {{{<<slideShow clock:'-20'>>}}} (for 20 minutes). In these two cases, if you click on the clock display it will be restarted
*The slide show can be set to loop ({{{<<slideShow repeat>>}}})
*You can set it so each slide changes after X milliseconds ({{{<<slideShow slidePause:X>>}}}) (auto advance mode)
*Use auto start mode to begin the slideshow the moment the tiddler is opened ({{{<<slideShow autostart>>>}}})
*You can disable overlays with {{{<<slideShow noOverlays>>}}}
*These parameters can be mixed and matched in any order: {{{<<slideShow slidePause:1000 repeat>>}}} is the same as {{{<<slideShow repeat slidePause:1000>>}}}
!Slide show navigation
You can navigate through a slide show using the keyboard or the mouse. To quickly move to titled sections you can use the table of contents.
!!Mouse navigation
Left (right) clicking on a slide jumps to the next (previous) overlay. To move to the beginning of the next or previous slide you must use the navigation bar at the bottom of the browser's window. If there are no overlays defined both operations are equivalent.
!!Keyboard navigation
The following keys are defined:
*Left arrow - previous overlay
*Down arrow - previous slide
*Right arrow - next overlay
*Up arrow - next slide
*Home - first slide
*End - last slide
*Escape - exit slide show
*Spacebar - pause/resume slide show in auto advance mode
!Revision history
*1.5.1 10/11/2006
**added SlideShowPageTemplate and SlideShowViewTemplate. This way, the plugin no longer requires a standard TW layout. Thanks to Andrew Lister for the idea.
*1.5.0 18/09/2006
**fixed restoring stylesheet on exit
**changed (again!) the way how slides are separated (slide shows prepared for previous versions must be fixed)
*1.4.0 20/04/2006
**changed the way how slides are separated (slide shows prepared for previous versions must be fixed)
**now works with content included with the {{{<<tiddler>>}}} macro
**added incremental display (overlays)
**improved documentation
**assorted small fixes
*1.3.1 10/03/2006
**removed empty slide titles
**fixed wrong numberSlides when slides have div's
**fixed wrong time in Windows
*1.3.0 26/02/2006
**restore open tiddlers on exit
**fixed problem with markup in headers (should work with NestedSlidersPlugin)
**added slide comments (blocks of text in the tiddler that don't show up in the presentation)
*1.2.1 28/01/2006
**pause timed slideshow with spacebar
**added clock with 3 different modes
**fixed bugs with style and abbreviation options
**general cleanup
*1.2.0 07/01/2006
**added a resume feature
**added themes support
*1.1.5 14/12/2005
**added mouse support
**cleaned up navbar generation
*1.1.0 12/12/2005
**added support for IE
**added key listeners
*1.0.0 11/12/2005
**initial release
!Todo
*Time code is still very hackerish and unreliable.
<!--{{{-->
<div class='title' macro='view title'></div>
<div class='viewer' macro='view text wikified'></div>
<!--}}}-->
/*{{{*/
/*Haemoglobin Theme for TiddlyWiki*/
/*Design and CSS by Saq Imtiaz*/
/*Version 1.0*/
/*}}}*/
/*{{{*/
#sidebarTabs {font-family:arial,helvetica;}
body
{background:#fefefe;}
#contentWrapper {
font-family: Verdana, Arial, Tahoma, Sans-Serif;
color: #555555;
margin:1.9em auto 1em ; width:800px;}
#header {background:#fefefe;}
.headerShadow { padding: 1.4em 0em 0.5em 1em; }
.siteTitle {
font-family: 'Trebuchet MS' sans-serif;
font-weight: bold;
font-size: 36px;
color: #0044BB;
background-color: #FFF;
}
.siteSubtitle {
font-size: 1.0em;
display: block;
margin: .5em 3em; color: #999;
}
.clearAll {clear:both;}
.tagClear {clear:none;}
#sidebar {position:relative; float:right; display:inline; right:0;}
a{
color:#0044BB;
text-decoration: none; font-weight:normal;
}
a:hover{
color:#0044BB;
background-color: #fefefe;
border-bottom:1px solid #0044BB;
}
.viewer .button, .editorFooter .button{
color: #555;
border: 1px solid #0044BB;
}
.viewer .button:hover,
.editorFooter .button:hover{
color: #fff;
background: #0044BB;
border-color: #0044BB;
}
.viewer .button:active, .viewer .highlight,.editorFooter .button:active, .editorFooter .highlight{color:#fff; background:#9F1313;border-color:#9F1313;}
#topMenu br {display:none;}
#topMenu {padding:0.45em 1em; background:#0044BB;}
#topMenu a, #topMenu .tiddlyLink, #topMenu .button {color:#f1f1f1; padding:0.3em 0.45em; margin:0 4px;font-size:120%;font-weight:normal;font-variant: small-caps; border:none; background:#0044BB; text-decoration:none; }
#topMenu a:hover, #topMenu .tiddlyLink:hover, #topMenu .button:hover, #topMenu .button:active, #topMenu .highlight {color:#fff;text-decoration:none; background:#9F1313; }
#displayArea{margin:0 17em 2em 0.5em;}
.tiddler {padding-left:0;}
.title {color:#0044BB; border-bottom:1px solid#0044BB; }
.subtitle, .subtitle a { color: #999999; font-size: 1.0em;margin:0.2em;}
.shadow .title{color:#999;}
.toolbar {font-size:85%;}
.selected .toolbar a {color:#999999;}
.selected .toolbar a:hover {color:#333; background:transparent;border:1px solid #fff;}
.toolbar .button:hover, .toolbar .highlight, .toolbar .marked, .toolbar a.button:active{color:#333; background:transparent;border:1px solid #fff;}
* html .viewer pre {
margin-left: 0em;
}
* html .editor textarea, * html .editor input {
width: 98%;
}
/***
!Sidebar
***/
#sidebar {position:relative;float:right; line-height: 1.4em; border-left:0px solid#000; display:inline; background:#fefefe; right:0; margin-bottom:2em !important; margin-bottom:1em;
width: 16em;}
/***
!SidebarOptions
***/
#sidebarOptions {padding-left:0.5em; padding-top:2em;}
#sidebarOptions a {
color:#999;
text-decoration: none;}
#sidebarOptions a:hover, #sidebarOptions a:active {
color:#CC0000;
background-color:#f5f5f5;border:1px solid #f5f5f5;
}
#sidebarOptions input {border:1px solid #999; }
.listTitle {color:#888;}
#sidebarTabs .tabContents {background:#fefefe;}
#sidebarTabs .tabContents .tiddlyLink, #sidebarTabs .tabContents .button{color:#999;}
#sidebarTabs .tabContents .tiddlyLink:hover,#sidebarTabs .tabContents .button:hover{color:#CC0000;background:#fefefe; text-decoration:none;border:none;}
#sidebarTabs .tabContents .button:hover, #sidebarTabs .tabContents .highlight, #sidebarTabs .tabContents .marked, #sidebarTabs .tabContents a.button:active{color:#CC0000;background:#fefefe}
.tabSelected{color:#fefefe; background:#999;}
.tabSelected, .tabSelected:hover {
color: #555;
background: #fefefe;
border: solid 1px #ccc;
}
#sidebarTabs .tabUnselected:hover { border-bottom: none;padding-bottom:3px;color:#999;}
.tabUnselected {
color: #999;
background: #eee;
border: solid 1px #ccc;
}
.tabUnselected:hover {text-decoration:none; border:1px solid #ccc;}
#sidebarTabs .tabUnselected { border-bottom: none;padding-bottom:3px;}
#sidebarTabs .tabSelected{padding-bottom:3px;}
#sidebarOptions .sliderPanel {
background: #eee; border:1px solid#ccc;
font-size: .9em;
}
#sidebarOptions .sliderPanel input {border:1px solid #999;}
#sidebarOptions .sliderPanel .txtOptionInput {border:1px solid #999;width:9em;}
#sidebarOptions .sliderPanel a {font-weight:normal; color:#555;background-color: #eee; border-bottom:1px dotted #333;}
#sidebarOptions .sliderPanel a:hover {
color:#111;
background-color: #eee;
border:none;
border-bottom:1px dotted #111;
}
.tabContents {background:#fefefe;}
.tagging, .tagged {
border: 1px solid #eee;
background-color: #F7F7F7;
}
.selected .tagging, .selected .tagged {
background-color: #f7f7f7;
border: 1px solid #ccc;
}
.tagging .listTitle, .tagged .listTitle {
color: #bbb;
}
.selected .tagging .listTitle, .selected .tagged .listTitle {
color: #666;
}
.tagging .button, .tagged .button {
color:#ccc;
}
.selected .tagging .button, .selected .tagged .button {
color:#aaa;
}
.highlight, .marked {background:transparent; color:#111; border:none; text-decoration:underline;}
.tagging .button:hover, .tagged .button:hover, .tagging .button:active, .tagged .button:active {
border: none; background:transparent; text-decoration:underline; color:#333;
}
.popup {
background: #0044BB;
border: 1px solid #0044BB;
}
.popup li.disabled {
color: #000;
}
.popup li a, .popup li a:visited {
color: #eee;
border: none;
}
.popup li a:hover {
background: #bf1717;
color: #fff;
border: none;
}
#messageArea {
border: 4px solid #0044BB;
background: #fefefe;
color: #555;
font-size:90%;
}
#messageArea a:hover { background:#f5f5f5; border:none;}
#messageArea .button{
color: #666;
border: 1px solid #0044BB;
}
#messageArea .button:hover {
color: #fff;
background: #0044BB;
border-color: #0044BB;
}
#contentFooter {background:#0044BB; color:#DF7D7D; clear: both; padding: 0.5em 1em; }
#contentFooter a {
color: #DF7D7D;
border-bottom: 1px dotted #DF7D7D; font-weight:normal;text-decoration:none;
}
#contentFooter a:hover {
color: #FFFFFF;
background-color:transparent;
border-bottom: 1px dotted #fff; text-decoration:none;
}
.searchBar {float:right;font-size: 1.0em;position:relative; margin-top:1.3em;}
.searchBar .button {color:#999;display:block;}
.searchBar .button:hover {border:1px solid #fefefe;color:#4F4B45;}
.searchBar input {
background-color: #fefefe;
color: #999999;
border: 1px solid #CCC; margin-right:3px;
}
.tiddler {padding-bottom:10px;}
.viewer blockquote {
border-left: 5px solid #0044BB;
}
.viewer table, .viewer td {
border: 1px solid #0044BB;
}
.viewer th, thead td {
background: #0044BB;
border: 1px solid #0044BB;
color: #fff;
}
.viewer pre {
border: 1px solid #ccc;
background: #f5f5f5;
}
.viewer code {
color: #111; background:#f5f5f5;
}
.viewer hr {
border-top: dashed 1px #555;
}
.editor input {
border: 1px solid #888; margin-top:5px;
}
.editor textarea {
border: 1px solid #888;
}
h1,h2,h3,h4,h5 { color: #0044BB; background: transparent; padding-bottom:2px; font-family: Arial, Helvetica, sans-serif; }
h1 {font-size:18px;}
h2 {font-size:16px;}
h3 {font-size: 14px;}
/*}}}*/
@media print {#mainMenu {display: none ! important;}}
@media print {#sidebar {display: none ! important;}}
@media print {#messageArea {display: none ! important;}}
@media print {#toolbar {display: none ! important;}}
@media print {.header {display: none ! important;}}
@media print {#displayArea {margin: 1em 1em 0em 1em;}}
TEXTE – sujet de brevet 2002 (académie de Bordeaux, Caen, Clermont-Ferrand, Limoges, Nantes, Orléans-Tours, Poitiers, Rennes)
En regardant des photographies, Anny Duperey cherche à retrouver les souvenirs de sa petite enfance perdus à la suite d'un grave choc émotionnel.
Les maillots qui grattent
Oh ! Une réminiscence ! Un vague, très vague souvenir d'une sensation d'enfance : les maillots tricotés main qui grattent partout lorsqu'ils sont mouillés... Ce n'est pas le plus agréable des souvenirs mais qu'importe, c'en est au moins un.
Et je suis frappée de constater encore une fois, en regardant sur ces photos les vêtements que nous portons ma mère et moi, que tout, absolument tout, à part nos chaussures et les chapeaux de paille, était fait à la maison. Jusqu'aux maillots de bain.
Que d'attention, que d'heures de travail pour me vêtir ainsi de la tête aux pieds. Que d'amour dans les mains qui prenaient mes mesures, tricotaient sans relâche. Est-ce pour me consoler d'avoir perdu tout cela, pour me rassurer que je passai des années à fabriquer mes propres vêtements, plus tard ?
Et puis qu'importe ces histoires de vêtements, de maniaquerie couturière, et qu'importe cette si vague réminiscence des maillots qui grattent, si fugitive que déjà je doute de l'avoir retrouvée un instant... Ce qui me fascine sur cette photo, m'émeut aux larmes, c'est la main de mon père sur ma jambe. La manière si tendre dont elle entoure mon genou, légère mais prête à parer toute chute, et ma petite main à moi abandonnée sur son cou. Ces deux mains, l'une qui soutient et l'autre qui se repose sur lui.
Après la photo il a dû resserrer son étreinte, m'amener à plier les genoux, j'ai dû me laisser aller contre lui, confiante, et il a dû me faire descendre du bateau en disant "hop là ! ", comme le font tous les pères en emportant leur enfant dans leurs bras pour sauter un obstacle.
Nous avons dû gaiement rejoindre ma mère qui rangeait l'appareil photo et marcher tous les trois sur la plage. J'ai dû vivre cela, oui...
La photo me dit qu'il faisait beau, qu'il y avait du vent dans mes cheveux, que la lumière de la côte normande devait être magnifique ce jour-là.
Et entre mes deux parents à moi, si naturellement et si complètement à moi pour quelque temps encore, j'ai dû me plaindre des coquillages qui piquent les pieds, comme le font tous les enfants ignorants de leurs richesses.
Anny DUPEREY, Le voile noir
QUESTIONS (15 POINTS)
I. L'IRRUPTION DU SOUVENIR (4 POINTS)
1. a. Dans les lignes 1 et 2, relevez les différents signes de ponctuation. (0,5 point)
b. Que constatez-vous dans le rythme de ces phrases ? (1 point)
c. Quel effet l'auteur cherche-t-il à produire ? (1 point)
2. a. Dans le premier paragraphe, relevez deux termes appartenant au champ lexical de la mémoire. (1 point)
b. Quelle différence de sens faites-vous entre eux ? (1 point)
II. LE Rôle DE LA PHOTOGRAPHIE (3 POINTS)
3. a. A partir de la ligne 12, par quel détail de la photographie le regard d'Anny Duperey est-il arrêté? (0,5 point)
b. Relevez un procédé mettant en valeur ce détail. (0,5 point)
c. Pourquoi Anny Duperey est-elle émue "aux larmes" (lignes 14 - 15) ? Justifiez votre réponse à l'aide de citations. (1 point)
4. Quelle est la représentation du père qui se dégage de la scène décrite? (1 point)
III. LA RECOMPOSITION DU PASSÉ (8 POINTS)
5. De la ligne 18 à la fin du texte, le verbe "devoir" est employé à plusieurs reprises.
a. Relevez deux expressions où on le rencontre à deux temps différents que vous nommerez. (1 point)
b. Réécrivez les deux expressions relevées en supprimant "devoir" et en opérant les transformations grammaticales nécessaires. (1 point)
c. Quelle modification de sens cela entraîne-t-il? (1 point)
6. "Ce qui me fascine ..." (l. 14)
" ... comme le font tous les enfants ..." (1. 28)
a. Quelles sont les valeurs respectives du présent dans ces deux expressions ? (1 point)
b. Quels sont les temps verbaux utilisés pour évoquer le passé ? (1 point) c. Pourquoi sont-ils employés en complément du présent ? (1 point)
7. Que veut nous faire comprendre Anny Duperey à travers le titre de ce chapitre "Les maillots qui grattent"? (1 point)
8. En vous appuyant sur vos réponses précédentes dites à quel genre littéraire appartient ce texte. (1 point)
RÉÉCRITURE (4,5 POINTS)
Réécrivez les lignes 4 à 7 de "Et je suis frappée" ... à "de la tête aux pieds" en remplaçant "je" par "les deux sueurs" et le présent par l'imparfait.
Les fautes de copie seront pénalisées.
Sommaire
1 TEXTE
2 QUESTIONS (15 POINTS)
3 RÉÉCRITURE (4 POINTS)
4 DICTEE (6 POINTS)
TEXTE
Condamné au bagne pour avoir volé un pain, Jean Valjean a purgé sa peine et vient d'être
libéré. Il s'arrête dans une auberge.
Pendant que le nouveau venu se chauffait, le dos tourné, le digne aubergiste Jacquin Labarre tira un crayon de sa poche, puis il déchira le coin d'un vieux journal qui traînait sur une petite table près de la
fenêtre. Sur la marge blanche il écrivit une ligne ou deux, plia sans cacheter et remit ce chiffon de papier à un enfant qui paraissait lui servir tout à la fois de marmiton et de laquais. L'aubergiste dit un mot à l'oreille du marmiton, et l'enfant partit en courant en direction de la mairie.
Le voyageur n'avait rien vu de tout cela.
Il demanda encore une fois :
- Dîne-t-on bientôt ?
– Tout à l'heure, dit l'hôte.
L'enfant revint. Il rapportait le papier. L'hôte le déplia avec empressement, comme quelqu'un qui attend une réponse. Il parut lire attentivement, puis hocha la tête, et resta un moment pensif. Enfin il fit un pas vers le voyageur qui semblait plongé dans des réflexions peu sereines.
– Monsieur, dit-il, je ne puis vous recevoir.
L'homme se dressa à demi sur son séant.
– Comment ! Avez-vous peur que je ne paye pas ! Voulez-vous que je paye d'avance ? J'ai de l'argent, vous dis-je.
– Ce n'est pas cela.
– Quoi donc ?
– Vous avez de l'argent...
– Oui, dit l'homme.
– Et moi, dit l'hôte, je n'ai pas de chambre.
L'homme reprit tranquillement : -Mettez-moi à l'écurie.
– Je ne puis.
– Pourquoi ?
– Les chevaux prennent toute la place.
– Et bien, repartit l'homme, un coin dans le grenier. Une botte de paille. Nous verrons cela après dîner.
– Je ne puis vous donner à dîner.
Cette déclaration, faite d'un ton mesuré, mais ferme, parut grave à l'étranger. Il se leva.
– Ah bah ! Mais je meurs de faim, moi. J'ai marché dès le soleil levé. J'ai fait douze lieues. Je paye. Je veux manger.
– Je n'ai rien, dit l'hôte.
L'homme éclata de rire et se tourna vers la cheminée et les fourneaux.
– Rien ! Et tout cela ?
– Tout cela m'est retenu.
– Par qui ?
– Par ces messieurs les rouliers.
– Combien sont-ils ?
– Douze.
– Il y a là à manger pour vingt.
– Ils ont tout retenu et tout payé d'avance.
L'homme se rassit et dit sans hausser la voix :
– Je suis à l'auberge, j'ai faim, et je reste.
L'hôte alors se pencha à son oreille, et lui dit d'un accent qui le fit tressaillir :
– Allez-vous en !
Le voyageur était courbé en cet instant et poussait quelques braises dans le feu avec le bout ferré de son bâton, il se retourna vivement, et, comme il ouvrait la bouche pour répliquer, l'hôte le regarda fixement et ajouta toujours à voix basse : - Tenez, assez de paroles comme cela.
Voulez-vous que je vous dise votre nom ? Vous vous appelez Jean Valjean. Maintenant voulez-vous que je vous dise qui vous êtes ? En vous voyant entrer, je me suis douté de quelque chose, j'ai envoyé à la mairie, et voici ce qu'on m'a répondu. Savez-vous lire ?
Victor Hugo, Les Misérables (1862), Le livre de poche
1. marmiton : apprenti au service de la cuisine dans un restaurant.
2. laquais : valet
QUESTIONS (15 POINTS)
Toutes vos réponses devront être rédigées
I/ Un aubergiste singulier (5 points)
1.
a) Quelle est la valeur de l'imparfait de la première ligne et des passés simples des lignes 1 à 5 ? (1 point)
b) Sur quel personnage l'emploi de ces temps attire-t-il l'attention ? (0,5 point)
2.
a) Dans le reste du texte, quel nom reprend le terme d'"aubergiste" ? (0,5 point)
b) Quelle qualité peut-on attendre du personnage ainsi désigné ? (0,5 point)
3.
a) De la ligne 20 à 27 : quelle forme de phrase l'aubergiste emploie-t-il le plus souvent ?
b) De la ligne 28 à la fin : relevez les trois expressions du texte qui caractérisent la manière dont l'aubergiste parle au voyageur. (1 point)
4. En confrontant l'ensemble de vos réponses, dites si Jacquin Labarre vous semble vraiment être un "digne aubergiste". Justifiez votre réponse. (1 point)
II/ Un voyageur indésirable (5 points)
1. Quelles sont les raisons que donne le voyageur pour justifier sa présence à l'auberge ?
Vous paraissent-elles justes ? Développer votre réponse. (1 point).
2. « Je suis à l'auberge, j'ai faim, et je reste. »
Quelle est la relation logique exprimée par la conjonction de coordination « et » (0.5 point)
3. Dans la phrase : « Mais je meurs de faim, moi. » (ligne 29), relevez le terme mis en relief et commentez l'effet produit. (1 point)
4. En vous appuyant sur les réponses aux questions précédentes, qualifiez l'attitude du voyageur. (0,5 point)
5. Dans l'ensemble du texte, relevez les noms et groupes nominaux utilisés pour désigner le "voyageur"
a) par le narrateur (0,5 point)
b) par l'aubergiste (0,5 point)
c) En quoi la dernière désignation est-elle essentielle pour le "voyageur" ? (1 point)
III/ Le face à face (5 points)
1. Quel est l'enjeu du débat pour chaque personnage ? (1 point)
2. Dans les lignes 32 à 40 :
a) Jean Valjean se laisse-t-il faire par l'aubergiste ? (0,5 point)
b) Justifiez votre réponse en vous appuyant sur le type de phrase qu'il emploie le plus souvent. (1 point)
3. Donner l'infinitif, le mode et le temps de "Allez-vous-en".
En quoi cette phrase est-elle importante ? (1,5 points)
4. En quoi les propos de l'aubergiste trahissent-ils sa mauvaise foi ? (1 point)
RÉÉCRITURE (4 POINTS)
Ligne 49-50, "En vous voyant...répondu" : Réécrivez le passage au plus que parfait en passant de la première personne du singulier à la troisième personne du pluriel.
DICTEE (6 POINTS)
L'homme baissa la tête, ramassa le sac qu'il avait déposé à terre, et s'en alla.
Il prit la grande rue. Il marchait devant lui au hasard, rasant de près les maisons, comme un homme humilié et triste. Il ne se retourna pas une seule fois. S'il s'était retourné, il aurait vu l'aubergiste de La Croix-de-Colbas sur le seuil de sa porte, entouré de tous les voyageurs de son auberge et de tous les passants de la rue, parlant vivement et le désignant du doigt, et, aux regards de défiance et d'effroi du groupe, il aurait deviné qu'avant peu son arrivée serait l'événement de toute la ville.
Victor Hugo, Les Misérables.
S3: Le masque de la Mort Rouge
1.Proposez un découpage du texte en plusieurs parties. Justifiez-le.
2.Quels sont les personnages ? En quoi s'opposent-ils ? Pourquoi peut-on dire que l'horloge est un personnage.
3.A votre avis , que symbolise le masque qui apparaît en fin de texte.
4.Quelles couleurs dominent dans le texte. Que symbolisent-elle ?
5.Relevez tous les termes qui désignent les danseurs (pronoms indéfinis, noms collectifs): pourquoi peut-on dire que les danseurs sont presque « déjà morts ».
Rédaction.
Sujet: Vous êtes le masque. Vous vous adressez aux danseurs pour leur dire qui vous êtes et quelles sont vos intentions.
Consigne: - hgni dialogue, ni récit.
écrire au présent, écrire en « je »
utiliser un registre soutenu, par la syntaxe notamment. Interdiction d'écrire « et »
Le voeu du paon de ~Jean-Côme Nogues
- Hou ! le Gril..
Les cris s'arrêtèrent d'un coup. Les enfants venaient de se rendre compte que le Grillot pouvait, lui aussi, avoir du chagrin. À l'aube, on avait descendu dans la fosse des pauvres gens la sorcière qui l'avait recueilli. Car c'était bien une sorcière, de cela on ne pouvait douter. Sinon, pourquoi aurait-elle vécu dans une chaumine à l'écart du village ? Pourquoi l'aurait-on rencontrée, les nuits de grand vent, sur le chemin des bois ? Et quand la pleine lune éclairait presque comme en plein jour, combien de fois l'avait-on vue s'en aller vers le marais en marmottant des mots qu'un chrétien ne pouvait comprendre ?
Un soir, Roucaud, le bûcheron, l'avait suivie, tremblant de peur et de curiosité. II l'avait surprise à lancer des cailloux gros autant que des oeufs de poule dans l'eau endormie. Aussitôt, la lumière s'était propagée à la surface. Une lumière comme jamais, de mémoire de manant, on n'en avait connue. Bleue. Ou bien verte, il ne savait plus. Avec des éclairs. Au même moment, trois chouettes avaient crié dans la futaie. Trois, il en était sûr. Et la lune s'était cachée derrière un nuage. Du moins d'après ce qu'il racontait. Chacun le croyait, car la vieille Ragonne n'était pas comme tout le monde. Comment pouvait-elle être sourde à ce point ? Il n'y avait au village personne qui fût sourd de pareille façon. On disait que c'était parce qu'elle avait entendu rire le Diable et en avait eu les oreilles déchirées. Et cet enfant ramassé par elle, un jour, près de la fontaine, d'où venait-il ? Les enfants abandonnés, certes, ne manquaient pas. On en découvrait maintes fois, au matin, dans un coin de grange ou devant le four banal. Mais aucun ne ressemblait à celui-là. D'abord, ils mouraient le plus souvent. On les oubliait et cela faisait autant de bouches qu'on n'avait plus à nourrir. Lui, il avait survécu. On lui trouvait un regard farouche. On ne comprenait pas son entêtement à passer des jours quasiment entiers dans les arbres.
« Il serait le fils du Malin que ça ne m'étonnerait pas. », chuchotait-on autour de l'âtre quand, la porte barrée, on craignait, moins la nuit.
La sorcière était morte, à présent. Nul ne la regrettait.
- Hou ! le Gril...lot ! Hou ! le Gril...lot !
Les cris reprirent derrière l'enfant qui courait vers la masure maintenant, vide. Il ne pleurait pas. Oh non, il ne pleurait pas. Il avait trop de rage au coeur pour cela, et aussi trop de peine.
Jean-Côme Noguès, Le Vœu dit paon, © Éditions Gallimard, chap. 1, 2002.
!Temps de la fiction et temps de la narration
#Si l'on classe les événements dans l'ordre où ils se sont réellement déroulés, où trouve-t on la suite immédiate de « le Grillot pouvait, lui aussi, avoir du chagrin » (I.4) ? Relevez dans chacun des passages une expression qui montre bien qu'ils se suivent chronologiquement.
#Quel est le rôle du long passage situé entre les deux extraits délimités dans la première question ? Les événements sont-ils racontés chronologiquement ? Pour répondre à cette question, relevez les principales étapes et leurs marques temporelles.
#Quels sont les deux temps les plus utilisés dans ce passage ? Donnez-en plusieurs exemples et justifiez leur emploi. Qu'en concluez-vous sur la gestion du temps dans tout ce texte ? (Les faits sont-ils racontés dans l'ordre où ils se sont déroulés ?)
#À quel moment du roman pensez-vous que se situe cet extrait ? Justifiez votre réponse.
#Comment expliquez-vous les points de suspension utilisés dans le premier passage au discours direct ? et dans le dernier passage ?
!Le poids du contexte
#Relevez des éléments caractéristiques de la vie au Moyen Âge.
#Relevez des mots ou expressions caractérisant les croyances de l'époque.
#Qu'est-ce qui, dans son comportement, a fait que l'on a pris Ragonne pour une sorcière ( Ier §) ? Par quel type de phrase ces soupçons sont-ils marqués ?
#Relevez une phrase qui traduit le point de vue des villageois.
#Le narrateur partage-t-il le point de vue de Roucaud ? Relevez une phrase qui le montre.
#Quelles sont, dans les deuxième et troisième paragraphes, les deux autres questions des villageois ? Quelles réponses y apportent-ils ? Que pensez-vous de ces réponses ?
#Relevez un passage qui marque particulièrement bien la crainte qu'inspirait la nuit à cette époque.
#De quelle manière désigne-t-on le plus souvent les villageois ? Relevez quelques exemples et justifiez ce procédé.
#Relevez différents procédés utilisés pour rapporter les paroles des villageois. Donnez un exemple pour chacun et justifiez le choix du procédé utilisé.
#En conclusion, essayez de dire ce qui est la raison principale de cette attitude coupable des villageois.
!Exercice d'écriture
« Un soir, Roucaud, le bûcheron, l'avait suivie ». De retour au village, Roucaud raconte ce qu'il prétend avoir vu. Expansez cette scène en une vingtaine clé lignes en faisant alterner discours direct et indirect.
<<calendar thismonth>>
<<timeline better:true onlyTag:cours sortBy:modified maxEntries:15>>
/***
|Name|TagglyListPlugin|
|Created by|SimonBaird|
|Location|http://simonbaird.com/mptw/#TagglyListPlugin|
|Version|1.1.2 25-Apr-06|
|Requires|See TagglyTagging|
!History
* 1.1.2 (25-Apr-2006) embedded TagglyTaggingStyles. No longer need separated tiddler for styles.
* 1.1.1 (6-Mar-2006) fixed bug with refreshAllVisible closing tiddlers being edited. Thanks Luke Blanshard.
***/
/***
!Setup and config
***/
//{{{
version.extensions.TagglyListPlugin = {
major: 1, minor: 1, revision: 2,
date: new Date(2006,4,25),
source: "http://simonbaird.com/mptw/#TagglyListPlugin"
};
config.macros.tagglyList = {};
config.macros.tagglyListByTag = {};
config.macros.tagglyListControl = {};
config.macros.tagglyListWithSort = {};
config.macros.hideSomeTags = {};
// change this to your preference
config.macros.tagglyListWithSort.maxCols = 6;
config.macros.tagglyList.label = "Tagged as %0:";
// the default sort options. set these to your preference
config.macros.tagglyListWithSort.defaults = {
sortBy:"title", // title|created|modified
sortOrder: "asc", // asc|desc
hideState: "show", // show|hide
groupState: "nogroup", // nogroup|group
numCols: 1
};
// these tags will be ignored by the grouped view
config.macros.tagglyListByTag.excludeTheseTags = [
"systemConfig",
"TiddlerTemplates"
];
config.macros.tagglyListControl.tags = {
title:"sortByTitle",
modified: "sortByModified",
created: "sortByCreated",
asc:"sortAsc",
desc:"sortDesc",
hide:"hideTagged",
show:"showTagged",
nogroup:"noGroupByTag",
group:"groupByTag",
cols1:"list1Cols",
cols2:"list2Cols",
cols3:"list3Cols",
cols4:"list4Cols",
cols5:"list5Cols",
cols6:"list6Cols",
cols7:"list7Cols",
cols8:"list8Cols",
cols9:"list9Cols"
}
// note: should match config.macros.tagglyListControl.tags
config.macros.hideSomeTags.tagsToHide = [
"sortByTitle",
"sortByCreated",
"sortByModified",
"sortDesc",
"sortAsc",
"hideTagged",
"showTagged",
"noGroupByTag",
"groupByTag",
"list1Cols",
"list2Cols",
"list3Cols",
"list4Cols",
"list5Cols",
"list6Cols",
"list7Cols",
"list8Cols",
"list9Cols"
];
//}}}
/***
!Utils
***/
//{{{
// from Eric
function isTagged(title,tag) {
var t=store.getTiddler(title); if (!t) return false;
return (t.tags.find(tag)!=null);
}
// from Eric
function toggleTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)==null) t.tags.push(tag);
else t.tags.splice(t.tags.find(tag),1);
}
function addTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
t.tags.push(tag);
}
function removeTag(title,tag) {
var t=store.getTiddler(title); if (!t || !t.tags) return;
if (t.tags.find(tag)!=null) t.tags.splice(t.tags.find(tag),1);
}
// from Udo
Array.prototype.indexOf = function(item) {
for (var i = 0; i < this.length; i++) {
if (this[i] == item) {
return i;
}
}
return -1;
};
Array.prototype.contains = function(item) {
return (this.indexOf(item) >= 0);
}
//}}}
/***
!tagglyList
displays a list of tagged tiddlers.
parameters are sortField and sortOrder
***/
//{{{
// not used at the moment...
function sortedListOfOtherTags(tiddler,thisTag) {
var list = tiddler.tags.concat(); // so we are working on a clone..
for (var i=0;i<config.macros.hideSomeTags.tagsToHide.length;i++) {
if (list.find(config.macros.hideSomeTags.tagsToHide[i]) != null)
list.splice(list.find(config.macros.hideSomeTags.tagsToHide[i]),1); // remove hidden ones
}
for (var i=0;i<config.macros.tagglyListByTag.excludeTheseTags.length;i++) {
if (list.find(config.macros.tagglyListByTag.excludeTheseTags[i]) != null)
list.splice(list.find(config.macros.tagglyListByTag.excludeTheseTags[i]),1); // remove excluded ones
}
list.splice(list.find(thisTag),1); // remove thisTag
return '[[' + list.sort().join("]] [[") + ']]';
}
function sortHelper(a,b) {
if (a == b) return 0;
else if (a < b) return -1;
else return +1;
}
config.macros.tagglyListByTag.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var sortBy = params[0] ? params[0] : "title";
var sortOrder = params[1] ? params[1] : "asc";
var result = store.getTaggedTiddlers(tiddler.title,sortBy);
if (sortOrder == "desc")
result = result.reverse();
var leftOvers = []
for (var i=0;i<result.length;i++) {
leftOvers.push(result[i].title);
}
var allTagsHolder = {};
for (var i=0;i<result.length;i++) {
for (var j=0;j<result[i].tags.length;j++) {
if (
result[i].tags[j] != tiddler.title // not this tiddler
&& config.macros.hideSomeTags.tagsToHide.find(result[i].tags[j]) == null // not a hidden one
&& config.macros.tagglyListByTag.excludeTheseTags.find(result[i].tags[j]) == null // not excluded
) {
if (!allTagsHolder[result[i].tags[j]])
allTagsHolder[result[i].tags[j]] = "";
allTagsHolder[result[i].tags[j]] += "**[["+result[i].title+"]]\n";
if (leftOvers.find(result[i].title) != null)
leftOvers.splice(leftOvers.find(result[i].title),1); // remove from leftovers. at the end it will contain the leftovers...
}
}
}
var allTags = [];
for (var t in allTagsHolder)
allTags.push(t);
allTags.sort(function(a,b) {
var tidA = store.getTiddler(a);
var tidB = store.getTiddler(b);
if (sortBy == "title") return sortHelper(a,b);
else if (!tidA && !tidB) return 0;
else if (!tidA) return -1;
else if (!tidB) return +1;
else return sortHelper(tidA[sortBy],tidB[sortBy]);
});
var markup = "";
if (sortOrder == "desc") {
allTags.reverse();
}
else {
// leftovers first...
for (var i=0;i<leftOvers.length;i++)
markup += "*[["+leftOvers[i]+"]]\n";
}
for (var i=0;i<allTags.length;i++)
markup += "*[["+allTags[i]+"]]\n" + allTagsHolder[allTags[i]];
if (sortOrder == "desc") {
// leftovers last...
for (var i=0;i<leftOvers.length;i++)
markup += "*[["+leftOvers[i]+"]]\n";
}
wikify(markup,place);
}
config.macros.tagglyList.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var sortBy = params[0] ? params[0] : "title";
var sortOrder = params[1] ? params[1] : "asc";
var numCols = params[2] ? params[2] : 1;
var result = store.getTaggedTiddlers(tiddler.title,sortBy);
if (sortOrder == "desc")
result = result.reverse();
var listSize = result.length;
var colSize = listSize/numCols;
var remainder = listSize % numCols;
var upperColsize;
var lowerColsize;
if (colSize != Math.floor(colSize)) {
// it's not an exact fit so..
lowerColsize = Math.floor(colSize);
upperColsize = Math.floor(colSize) + 1;
}
else {
lowerColsize = colSize;
upperColsize = colSize;
}
var markup = "";
var c=0;
var newTaggedTable = createTiddlyElement(place,"table");
var newTaggedBody = createTiddlyElement(newTaggedTable,"tbody");
var newTaggedTr = createTiddlyElement(newTaggedBody,"tr");
for (var j=0;j<numCols;j++) {
var foo = "";
var thisSize;
if (j<remainder)
thisSize = upperColsize;
else
thisSize = lowerColsize;
for (var i=0;i<thisSize;i++)
foo += ( "*[[" + result[c++].title + "]]\n"); // was using splitList.shift() but didn't work in IE;
var newTd = createTiddlyElement(newTaggedTr,"td",null,"tagglyTagging");
wikify(foo,newTd);
}
};
/* snip for later.....
//var groupBy = params[3] ? params[3] : "t.title.substr(0,1)";
//var groupBy = params[3] ? params[3] : "sortedListOfOtherTags(t,tiddler.title)";
//var groupBy = params[3] ? params[3] : "t.modified";
var groupBy = null; // for now. groupBy here is working but disabled for now.
var prevGroup = "";
var thisGroup = "";
if (groupBy) {
result.sort(function(a,b) {
var t = a; var aSortVal = eval(groupBy); var aSortVal2 = eval("t".sortBy);
var t = b; var bSortVal = eval(groupBy); var bSortVal2 = eval("t".sortBy);
var t = b; var bSortVal2 = eval(groupBy);
return (aSortVal == bSortVal ?
(aSortVal2 == bSortVal2 ? 0 : (aSortVal2 < bSortVal2 ? -1 : +1)) // yuck
: (aSortVal < bSortVal ? -1 : +1));
});
}
if (groupBy) {
thisGroup = eval(groupBy);
if (thisGroup != prevGroup)
markup += "*[["+thisGroup+']]\n';
markup += "**[["+t.title+']]\n';
prevGroup = thisGroup;
}
*/
//}}}
/***
!tagglyListControl
Use to make the sort control buttons
***/
//{{{
function getSortBy(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.sortBy;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["title"])) return "title";
else if (tiddler.tags.contains(usetags["modified"])) return "modified";
else if (tiddler.tags.contains(usetags["created"])) return "created";
else return defaultVal;
}
function getSortOrder(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.sortOrder;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["asc"])) return "asc";
else if (tiddler.tags.contains(usetags["desc"])) return "desc";
else return defaultVal;
}
function getHideState(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.hideState;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["hide"])) return "hide";
else if (tiddler.tags.contains(usetags["show"])) return "show";
else return defaultVal;
}
function getGroupState(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.groupState;
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
if (tiddler.tags.contains(usetags["group"])) return "group";
else if (tiddler.tags.contains(usetags["nogroup"])) return "nogroup";
else return defaultVal;
}
function getNumCols(title) {
var tiddler = store.getTiddler(title);
var defaultVal = config.macros.tagglyListWithSort.defaults.numCols; // an int
if (!tiddler) return defaultVal;
var usetags = config.macros.tagglyListControl.tags;
for (var i=1;i<=config.macros.tagglyListWithSort.maxCols;i++)
if (tiddler.tags.contains(usetags["cols"+i])) return i;
return defaultVal;
}
function getSortLabel(title,which) {
// TODO. the strings here should be definable in config
var by = getSortBy(title);
var order = getSortOrder(title);
var hide = getHideState(title);
var group = getGroupState(title);
if (which == "hide") return (hide == "show" ? "−" : "+"); // 0x25b8;
else if (which == "group") return (group == "group" ? "normal" : "grouped");
else if (which == "cols") return "cols±"; // ±
else if (by == which) return which + (order == "asc" ? "↓" : "↑"); // ↑ ↓
else return which;
}
function handleSortClick(title,which) {
var currentSortBy = getSortBy(title);
var currentSortOrder = getSortOrder(title);
var currentHideState = getHideState(title);
var currentGroupState = getGroupState(title);
var currentNumCols = getNumCols(title);
var tags = config.macros.tagglyListControl.tags;
// if it doesn't exist, lets create it..
if (!store.getTiddler(title))
store.saveTiddler(title,title,"",config.options.txtUserName,new Date(),null);
if (which == "hide") {
// toggle hide state
var newHideState = (currentHideState == "hide" ? "show" : "hide");
removeTag(title,tags[currentHideState]);
if (newHideState != config.macros.tagglyListWithSort.defaults.hideState)
toggleTag(title,tags[newHideState]);
}
else if (which == "group") {
// toggle hide state
var newGroupState = (currentGroupState == "group" ? "nogroup" : "group");
removeTag(title,tags[currentGroupState]);
if (newGroupState != config.macros.tagglyListWithSort.defaults.groupState)
toggleTag(title,tags[newGroupState]);
}
else if (which == "cols") {
// toggle num cols
var newNumCols = currentNumCols + 1; // confusing. currentNumCols is an int
if (newNumCols > config.macros.tagglyListWithSort.maxCols || newNumCols > store.getTaggedTiddlers(title).length)
newNumCols = 1;
removeTag(title,tags["cols"+currentNumCols]);
if (("cols"+newNumCols) != config.macros.tagglyListWithSort.defaults.groupState)
toggleTag(title,tags["cols"+newNumCols]);
}
else if (currentSortBy == which) {
// toggle sort order
var newSortOrder = (currentSortOrder == "asc" ? "desc" : "asc");
removeTag(title,tags[currentSortOrder]);
if (newSortOrder != config.macros.tagglyListWithSort.defaults.sortOrder)
toggleTag(title,tags[newSortOrder]);
}
else {
// change sortBy only
removeTag(title,tags["title"]);
removeTag(title,tags["created"]);
removeTag(title,tags["modified"]);
if (which != config.macros.tagglyListWithSort.defaults.sortBy)
toggleTag(title,tags[which]);
}
store.setDirty(true); // save is required now.
story.refreshTiddler(title,false,true); // force=true
}
config.macros.tagglyListControl.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
var onclick = function(e) {
if (!e) var e = window.event;
handleSortClick(tiddler.title,params[0]);
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
};
createTiddlyButton(place,getSortLabel(tiddler.title,params[0]),"Click to change sort options",onclick,params[0]=="hide"?"hidebutton":"button");
}
//}}}
/***
!tagglyListWithSort
put it all together..
***/
//{{{
config.macros.tagglyListWithSort.handler = function (place,macroName,params,wikifier,paramString,tiddler) {
if (tiddler && store.getTaggedTiddlers(tiddler.title).length > 0)
// todo make this readable
wikify(
"<<tagglyListControl hide>>"+
(getHideState(tiddler.title) != "hide" ?
'<html><span class="tagglyLabel">'+config.macros.tagglyList.label.format([tiddler.title])+' </span></html>'+
"<<tagglyListControl title>><<tagglyListControl modified>><<tagglyListControl created>><<tagglyListControl group>>"+(getGroupState(tiddler.title)=="group"?"":"<<tagglyListControl cols>>")+"\n" +
"<<tagglyList" + (getGroupState(tiddler.title)=="group"?"ByTag ":" ") + getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+" "+getNumCols(tiddler.title)+">>" // hacky
// + \n----\n" +
//"<<tagglyList "+getSortBy(tiddler.title)+" "+getSortOrder(tiddler.title)+">>"
: ""),
place,null,tiddler);
}
config.macros.tagglyTagging = { handler: config.macros.tagglyListWithSort.handler };
//}}}
/***
!hideSomeTags
So we don't see the sort tags.
(note, they are still there when you edit. Will that be too annoying?
***/
//{{{
// based on tags.handler
config.macros.hideSomeTags.handler = function(place,macroName,params,wikifier,paramString,tiddler) {
var theList = createTiddlyElement(place,"ul");
if(params[0] && store.tiddlerExists[params[0]])
tiddler = store.getTiddler(params[0]);
var lingo = config.views.wikified.tag;
var prompt = tiddler.tags.length == 0 ? lingo.labelNoTags : lingo.labelTags;
createTiddlyElement(theList,"li",null,"listTitle",prompt.format([tiddler.title]));
for(var t=0; t<tiddler.tags.length; t++)
if (!this.tagsToHide.contains(tiddler.tags[t])) // this is the only difference from tags.handler...
createTagButton(createTiddlyElement(theList,"li"),tiddler.tags[t],tiddler.title);
}
//}}}
/***
!Refresh everything when we save a tiddler. So the tagged lists never get stale. Is this too slow???
***/
//{{{
function refreshAllVisible() {
story.forEachTiddler(function(title,element) {
if (element.getAttribute("dirty") != "true")
story.refreshTiddler(title,false,true);
});
}
story.saveTiddler_orig_mptw = story.saveTiddler;
story.saveTiddler = function(title,minorUpdate) {
var result = this.saveTiddler_orig_mptw(title,minorUpdate);
refreshAllVisible();
return result;
}
store.removeTiddler_orig_mptw = store.removeTiddler;
store.removeTiddler = function(title) {
this.removeTiddler_orig_mptw(title);
refreshAllVisible();
}
config.shadowTiddlers.TagglyTaggingStyles = "/***\nTo use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.\n***/\n/*{{{*/\n.tagglyTagged li.listTitle { display:none;}\n.tagglyTagged li { display: inline; font-size:90%; }\n.tagglyTagged ul { margin:0px; padding:0px; }\n.tagglyTagging { padding-top:0.5em; }\n.tagglyTagging li.listTitle { display:none;}\n.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }\n\n/* .tagglyTagging .tghide { display:inline; } */\n\n.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }\n.tagglyTagging table { margin:0px; padding:0px; }\n\n\n.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }\n.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}\n.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }\n.selected .tagglyTagging .button { display:inline; }\n\n.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */\n.selected .tagglyTagging .hidebutton { color:#aaa }\n\n.tagglyLabel { color:#aaa; font-size:90%; }\n\n.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }\n.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}\n.tagglyTagging ul ul li {margin-left:0.5em; }\n\n.editLabel { font-size:90%; padding-top:0.5em; }\n/*}}}*/\n";
refreshStyles("TagglyTaggingStyles");
//}}}
// // <html>▸▾−±</html>
/***
To use, add {{{[[TagglyTaggingStyles]]}}} to your StyleSheet tiddler, or you can just paste the CSS in directly. See also ViewTemplate, EditTemplate and TagglyTagging.
***/
/*{{{*/
.tagglyTagged li.listTitle { display:none;}
.tagglyTagged li { display: inline; font-size:90%; }
.tagglyTagged ul { margin:0px; padding:0px; }
.tagglyTagging { padding-top:0.5em; }
.tagglyTagging li.listTitle { display:none;}
.tagglyTagging ul { margin-top:0px; padding-top:0.5em; padding-left:2em; margin-bottom:0px; padding-bottom:0px; }
/* .tagglyTagging .tghide { display:inline; } */
.tagglyTagging { vertical-align: top; margin:0px; padding:0px; }
.tagglyTagging table { margin:0px; padding:0px; }
.tagglyTagging .button { display:none; margin-left:3px; margin-right:3px; }
.tagglyTagging .button, .tagglyTagging .hidebutton { color:#aaa; font-size:90%; border:0px; padding-left:0.3em;padding-right:0.3em;}
.tagglyTagging .button:hover, .hidebutton:hover { background:#eee; color:#888; }
.selected .tagglyTagging .button { display:inline; }
.tagglyTagging .hidebutton { color:white; } /* has to be there so it takes up space. tweak if you're not using a white tiddler bg */
.selected .tagglyTagging .hidebutton { color:#aaa }
.tagglyLabel { color:#aaa; font-size:90%; }
.tagglyTagging ul {padding-top:0px; padding-bottom:0.5em; margin-left:1em; }
.tagglyTagging ul ul {list-style-type:disc; margin-left:-1em;}
.tagglyTagging ul ul li {margin-left:0.5em; }
.editLabel { font-size:90%; padding-top:0.5em; }
/*}}}*/
Quelques questions pour vérifier la lecture et récompenser ceux qui ont fait l'effort de lire.
#Qu'est ce qu'un blade runner ?
#Le héros se voit confier une mission parce qu'un autre blade runner a échoué et a été abattu par un réplicant. Comment s'appelait ce premier blade runner ?
#Comment se nomme le commissaire qui fait appel à Deckard?
#Comment se nomme le test utilisé pour démasquer un réplicant ? Qu'évalue ce test ?
#Comment se nomme l'entreprise dans laquelle travaille Isidore ? Quelle est son activité ?
#Isidore est considéré comme un spécial. Pourquoi ?
#Qui emménage dans le même appartement que lui ?
#Qui est Rachel ? Y a-t-il une histoire d'amour dans le roman ?
#Deckard doit travailler avec un russe, Polokov, qui est en fait un réplicant: quel est son vrai nom ?
#Deckard va chercher Luba à son lieu de travaille ? Qui est Luba ? Quel est son travail ?
#Quand Luba appelle la police, que se passe-t-il ?
#Qui est Phil Resch ? Pourquoi Deckard le déteste-t-il rapidement ?
#Où Deckard retire-t-il les trois derniers réplicants ?
#Deckard trouve un crapaud qu'il croit être le seul rescapé de son espèce: se trompe-t-il ou non ?
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.0 (Linux)">
<META NAME="AUTHOR" CONTENT="m cartailler">
<META NAME="CREATED" CONTENT="20081208;10561100">
<META NAME="CHANGEDBY" CONTENT="cartailler">
<META NAME="CHANGED" CONTENT="20090107;23073800">
<META NAME="Info 1" CONTENT="">
<META NAME="Info 2" CONTENT="">
<META NAME="Info 3" CONTENT="">
<META NAME="Info 4" CONTENT="">
<STYLE TYPE="text/css">
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
TD P { margin-bottom: 0cm }
TH P { margin-bottom: 0cm; font-style: italic }
-->
</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">S6:
Synthèse</FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">En
relisant les notes de cours et les textes, compléter le tableau</FONT></P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">« A
quoi reconnaître un texte fantastique ? »</FONT></P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
<COL WIDTH=75*>
<COL WIDTH=181*>
<THEAD>
<TR VALIGN=TOP>
<TH WIDTH=29%>
<P><BR>
</P>
</TH>
<TH WIDTH=71%>
<P><BR>
</P>
</TH>
</TR>
</THEAD>
<TBODY>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Enonciation</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P>Narrateur omniscient (T1 – T4)</P>
<LI><P>Narrateur au point de vue interne: narrateur personnage,
narrateur-témoin</P>
</UL>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Expression de la peur et du doute</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P>Champs lexical de la peur</P>
<LI><P>Perception troublée (ce qui est vu/ entendu est-il réel
)</P>
<LI><P>Comparaison (métaphore)</P>
<LI><P>Utilisation des modalisateurs</P>
</UL>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Apparition du phénomène fantastique</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P> Apparition d'un phénomène: masque, l'horloge</P>
<LI><P>Personnage: cocher</P>
<LI><P>Rituel : baptême de Marguerite</P>
<LI><P>Regard halluciné du narrateur</P>
</UL>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Personnage victime du phénomène</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P>Seul: singulier/ pluriel, absence de dialogue</P>
<LI><P>Victime: tournure passive</P>
<LI><P>Victime collective: personne n'est singularisé</P>
</UL>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Espace</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P>Espace labyrintique, lieux interdits</P>
<LI><P>Eléments maléfiques</P>
<LI><P>Avertissements</P>
</UL>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=29%>
<P>Temps</P>
</TD>
<TD WIDTH=71%>
<UL>
<LI><P>Date indéterminée</P>
<LI><P>L'heure: autour de minuit</P>
</UL>
</TD>
</TR>
</TBODY>
</TABLE>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">Jeudi:
Réfléchir et commencer à écrire</FONT></P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">Sujet
1: Un personnage se réveille un matin dans son lit, transformé (ou
en train de se transformer) en insecte.</FONT></P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 16pt">Sujet
2: Un honnête citoyen se métamorphose en « quelque
chose d'autre » la nuit à son insu.</FONT></P>
</BODY>
</HTML>
<HTML>
<HEAD>
<META HTTP-EQUIV="CONTENT-TYPE" CONTENT="text/html; charset=utf-8">
<TITLE></TITLE>
<META NAME="GENERATOR" CONTENT="OpenOffice.org 3.0 (Linux)">
<META NAME="AUTHOR" CONTENT="m cartailler">
<META NAME="CREATED" CONTENT="20081125;10401000">
<META NAME="CHANGEDBY" CONTENT="cartailler">
<META NAME="CHANGED" CONTENT="20090107;22531200">
<META NAME="Info 1" CONTENT="">
<META NAME="Info 2" CONTENT="">
<META NAME="Info 3" CONTENT="">
<META NAME="Info 4" CONTENT="">
<STYLE TYPE="text/css">
<!--
@page { margin: 2cm }
P { margin-bottom: 0.21cm }
TD P { margin-bottom: 0cm }
TH P { margin-bottom: 0cm; font-style: italic }
-->
</STYLE>
</HEAD>
<BODY LANG="fr-FR" DIR="LTR">
<P STYLE="margin-bottom: 0cm"><FONT SIZE=4 STYLE="font-size: 15pt">Séance
1: Tableau récapitulatif des textes</FONT></P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<TABLE WIDTH=100% BORDER=1 BORDERCOLOR="#000000" CELLPADDING=4 CELLSPACING=0>
<COL WIDTH=20*>
<COL WIDTH=85*>
<COL WIDTH=38*>
<COL WIDTH=39*>
<COL WIDTH=73*>
<THEAD>
<TR VALIGN=TOP>
<TH WIDTH=8%>
<P>Texte</P>
</TH>
<TH WIDTH=33%>
<P>Lieu (espace)</P>
</TH>
<TH WIDTH=15%>
<P>Date</P>
</TH>
<TH WIDTH=15%>
<P>Nuit</P>
</TH>
<TH WIDTH=29%>
<P>Point de vue</P>
</TH>
</TR>
</THEAD>
<TBODY>
<TR VALIGN=TOP>
<TD WIDTH=8%>
<P>1</P>
</TD>
<TD WIDTH=33%>
<P>Intérieur: nombreuses salles de velours, chambres.
</P>
<P>Bal</P>
</TD>
<TD WIDTH=15%>
<P>Indéterminée</P>
</TD>
<TD WIDTH=15%>
<P>Douze coups</P>
</TD>
<TD WIDTH=29%>
<P>Omniscient (le narrateur ne suit personne en particulier, mais
sait ce que les « danseurs » font là)</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=8%>
<P>2</P>
</TD>
<TD WIDTH=33%>
<P>Extérieur: de la Bastille à la Madeleine, pavés de la rue</P>
</TD>
<TD WIDTH=15%>
<P> indéterminée</P>
</TD>
<TD WIDTH=15%>
<P>Minuit</P>
</TD>
<TD WIDTH=29%>
<P>Interne (« je »)</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=8%>
<P>3</P>
</TD>
<TD WIDTH=33%>
<P>Extérieur: forêt, cols</P>
</TD>
<TD WIDTH=15%>
<P>Indéterminée</P>
</TD>
<TD WIDTH=15%>
<P>Près de minuit</P>
</TD>
<TD WIDTH=29%>
<P>Interne (« je »)</P>
</TD>
</TR>
<TR VALIGN=TOP>
<TD WIDTH=8%>
<P>4</P>
</TD>
<TD WIDTH=33%>
<P>Intérieur: salle de bain avec grand bassin, lit de cristal.</P>
<P>Bal</P>
</TD>
<TD WIDTH=15%>
<P>Indéterminée</P>
</TD>
<TD WIDTH=15%>
<P>Minuit approchait</P>
</TD>
<TD WIDTH=29%>
<P>Omniscient</P>
</TD>
</TR>
</TBODY>
</TABLE>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
<P STYLE="margin-bottom: 0cm"><BR>
</P>
</BODY>
</HTML>
/***
{{fr{
<<tiddler TiddlerSlicerDocumentation_fr>>}}}{{en{
<<tiddler TiddlerSlicerDocumentation_en>>}}}
/%dependencies TWkdLib %/
!Code
***/
// //version information
//{{{
version.extensions.TiddlerSlicer = { major: 1, minor: 2, revision: 0, date: new Date(2006,10,5),
source: "http://yann.perrin.googlepages.com/twkd.html#TiddlerSlicer"
};
//}}}
// //slicing function
//{{{
slicing = function(e){
var modeandtitle=this.getAttribute('Id');
modeandtitle=modeandtitle.split('|');
var mode=modeandtitle[0];
var title=modeandtitle[1];
var selection = getSelection(title);
var newtitle=askForTitle();
if(!newtitle)
{
displayMessage(config.commands.slice.cancel);
return(false);
}
if (mode!="part"&&mode!="nestedSlider")
{
// creation of the new tiddler
newTWkdLibTiddler(newtitle,selection.content,title,config.commands.slice.askForTags);
}
// replacement of selection with a reference to the newly created tiddler
switch(mode) {
case "nestedSlider":
putInPlace("+++["+newtitle+"]\n"+selection.content+"\n===",selection);
break;
case "part":
putInPlace("<part "+newtitle+">"+selection.content+"</part>",selection);
break;
case "link":
putInPlace("[["+newtitle+"]]",selection);
break;
case "slider":
putInPlace('<<slider chkSlice [['+newtitle+']] "'+newtitle+'" "'+config.commands.slice.sliderTooltip+newtitle+'">>',selection);
break;
default:
putInPlace("<<tiddler [["+newtitle+"]]>>",selection);
break;
}
} // close slicing function definition
//}}}
// // command definition
//{{{
config.commands.slice = {
text:"8<",
tooltip:"create new microcontent from selection",
cancel:"slicing cancelled",
tiddlercreated:" tiddler created",
sliderTooltip:"content of ",
askForTags:true,
wikeditposition:3
}
config.commands.slice.handler = function(event,src,title) {
var availablesModes = ["tiddler","slider","link"];
if (version.extensions.PartTiddlerPlugin)
availablesModes.push("part");
if (version.extensions.nestedSliders)
availablesModes.push("nestedSlider");
var popup = Popup.create(src);
if(popup)
{
for (var i=0; i<availablesModes.length; i++)
{
createTiddlyButton(createTiddlyElement(popup,"li"), availablesModes[i], availablesModes[i], slicing, null, availablesModes[i]+'|'+title, null);
}
Popup.show(popup,false);
event.cancelBubble = true;
if (event.stopPropagation) event.stopPropagation();
return false;
}
}
//}}}
// // shadow links to documentation
//{{{
config.shadowTiddlers.TiddlerSlicerDocumentation_en = "Documentation for this plugin is available [[here|" + version.extensions.TiddlerSlicer.source +"Documentation_en]]";
config.shadowTiddlers.TiddlerSlicerDocumentation_fr = "La documentation de ce plugin est disponible [[ici|" + version.extensions.TiddlerSlicer.source +"Documentation_fr]]";
//}}}
|Non|TiddlerSlicer|
|Auteur|YannPerrin|
|Source|http://yann.perrin.googlepages.com/twkd.html#TiddlerSlicer ([[del.icio.us|http://del.icio.us/post?url=http://yann.perrin.googlepages.com/twkd.html%23TiddlerSlicer]])|
|Version|1.2.0|
|Requiert|~TW2.0.7+|
!Description
La commande "slice" crée de petits tiddlers en découpant les gros.
Elle transforme le texte selectionné en un nouveau tiddler indépendant, et le remplace dans le tiddler d'origine par une référence au tiddler nouvellement créé.
!Installation
*importez (ou copiez/collez en mode édition) les tiddlers suivants dans votre document:<<br>>TiddlerSlicer<<br>>TWkdLib<<br>>(indexez les : <<tag systemConfig>>)
*afin de voir la commande, il reste encore à l'installer dans votre EditTemplate en l'intégrant dans le div qui définit la barre d'outil, comme ceci :
{{{
<div class='toolbar' macro='toolbar slice +saveTiddler -cancelTiddler deleteTiddler'></div>
}}}
*si vous souhaitez accéder hors-ligne à cette documentation, importez (ou copiez/collez en mode édition) le tiddler suivant dans votre document:<<br>>TiddlerSlicerDocumentation_fr
*enfin, sauvegardez les changements et rechargez le document.
!Usage
''Une fois correctement installée'' (voir ci-dessus), vous devriez voir une nouvelle commande intitulée 'slice' lors de l'édition d'un tiddler.
Pour l'utiliser :
*d'abord, selectionnez le texte à extraire
*puis, cliquez sur la commande "slice"
*selectionnez le mode de votre choix
*entrez un titre pour le nouveau tiddler, cliquez sur ok
*eventuellement entrez les index pour le nouveau tiddler
et c'est tout.
Le nouveau tiddler a été créé (si nécessaire), avec le texte selectionné comme contenu, le titre choisi, et les index choisis (ou le titre du tiddler original comme index). Il est déjà référencé dans le tiddler d'origine à la place du texte selectionné. Cette réference correspond au mode choisi, c'est à dire {{{<<tiddler>>}}}, {{{<<slider>>}}}, {{{[[link]]}}} ou encore {{{part}}} ou bien {{{nestedSlider}}} si les plugins additionnels correspondants sont installés.
!Historique des Révisions
2006.10.05-1.2.0
>ajout de la dépendance à TWkdLib afin d'éviter la duplication inutile de code commun avec d'autres plugins
>ajout du réferencement dans [[Wikedit]]
>changement du libellé par défaut pour {{{8<}}}
2006.21.04-1.1.0
>ajout d'une popup pour choisir le mode
>ajout de modes additionnels si PartTiddlerPlugin et/ou NestedSlidersPlugin sont installés
>ajout d'une boite de saisie d'index optionnelle pour le nouveau tiddler
2006.20.04-1.0.0
>Première version publique
>renommé ''~LightSaber'' en TiddlerSlicer
!Remerciements
à :
*[[Jeremy Ruston]] pour TiddlyWiki
*[[Jacques Turbé]] pour l'idée
/***
|Name|TiddlerWithEditPlugin|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#TiddlerWithEditPlugin|
|Version|0.2|
|Requires|~TW2.x|
!Description:
Adds 'doubleclick to edit source' capabilites to the core {{{<<tiddler>>}}} macro.
!Notes:
*because of the rewrite, only clicking on actual embedded text opens the source tiddler for editing. Clicking on any white space opens the containing tiddler for editing.
!History
*29-04-06, version 0.2, rewritten after input from Udo.
*28-04-06, version 0.1, working.
!Code
***/
//{{{
config.macros.tiddler.onTiddlerMacroDblClick = function(e){
if (!e) var e = window.event;
var theTarget = resolveTarget(e);
var title= this.getAttribute("source");
if ((version.extensions.PartTiddlerPlugin)&&(title.indexOf("/")!=-1))
{if (!oldFetchTiddler.call(this, [title]))
{title=title.slice(0,title.lastIndexOf("/"))}}
story.displayTiddler(theTarget,title,2,false,null)
e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();
return false;
}
var oldTiddlerHandler=config.macros.tiddler.handler;
config.macros.tiddler.handler = function(place,macroName,params){
oldTiddlerHandler.apply(this,arguments);
place.lastChild.setAttribute("source",params[0]);
place.lastChild.ondblclick = this.onTiddlerMacroDblClick;
}
//}}}
/***
|Name|ToggleSideBarMacro|
|Created by|SaqImtiaz|
|Location|http://lewcid.googlepages.com/lewcid.html#ToggleSideBarMacro|
|Version|1.0|
|Requires|~TW2.x|
!Description:
Provides a button for toggling visibility of the SideBar. You can choose whether the SideBar should initially be hidden or displayed.
!Demo
<<toggleSideBar "Toggle Sidebar">>
!Usage:
{{{<<toggleSideBar>>}}} <<toggleSideBar>>
additional options:
{{{<<toggleSideBar label tooltip show/hide>>}}} where:
label = custom label for the button,
tooltip = custom tooltip for the button,
show/hide = use one or the other, determines whether the sidebar is shown at first or not.
(default is to show the sidebar)
You can add it to your tiddler toolbar, your MainMenu, or where you like really.
If you are using a horizontal MainMenu and want the button to be right aligned, put the following in your StyleSheet:
{{{ .HideSideBarButton {float:right;} }}}
!History
*23-07-06: version 1.0: completely rewritten, now works with custom stylesheets too, and easier to customize start behaviour.
*20-07-06: version 0.11
*27-04-06: version 0.1: working.
!Code
***/
//{{{
config.macros.toggleSideBar={};
config.macros.toggleSideBar.settings={
styleHide : "#sidebar { display: none;}\n"+"#contentWrapper #displayArea { margin-right: 1em;}\n"+"",
styleShow : " ",
arrow1: "«",
arrow2: "»"
};
config.macros.toggleSideBar.handler=function (place,macroName,params,wikifier,paramString,tiddler)
{
var tooltip= params[1]||'toggle sidebar';
var mode = (params[2] && params[2]=="hide")? "hide":"show";
var arrow = (mode == "hide")? this.settings.arrow1:this.settings.arrow2;
var label= (params[0]&¶ms[0]!='.')?params[0]+" "+arrow:arrow;
var theBtn = createTiddlyButton(place,label,tooltip,this.onToggleSideBar,"button HideSideBarButton");
if (mode == "hide")
{
(document.getElementById("sidebar")).setAttribute("toggle","hide");
setStylesheet(this.settings.styleHide,"ToggleSideBarStyles");
}
};
config.macros.toggleSideBar.onToggleSideBar = function(){
var sidebar = document.getElementById("sidebar");
var settings = config.macros.toggleSideBar.settings;
if (sidebar.getAttribute("toggle")=='hide')
{
setStylesheet(settings.styleShow,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","show");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow1,settings.arrow2);
}
else
{
setStylesheet(settings.styleHide,"ToggleSideBarStyles");
sidebar.setAttribute("toggle","hide");
this.firstChild.data= (this.firstChild.data).replace(settings.arrow2,settings.arrow1);
}
return false;
}
setStylesheet(".HideSideBarButton .button {font-weight:bold; padding: 0 5px;}\n","ToggleSideBarButtonStyles");
//}}}
ToggleSideBarMacro has been completely rewritten. Now works flawlessly with custom stylesheets too, and is easier to customize. You can specify whether the sidebar is hidden or displayed to start off with.
*TroisièmeCinq
*TroisièmeSix
*TroisièmeSept
* Séquence 1: [[Raconter la guerre]]
* Séquence 2: [[Des fleurs pour Algernon]]
* Hors séquences: [[Slam]]
* Séquence 1: [[Raconter la guerre]]
* Séquence 2: [[No Pasaran]]
* Séquence 6 : [[groupement de textes fantastiques]]
* Séquence 7: [[Blade Runner]]
* Séquence 8 : [[La poésie engagée]]
* Séquence 6 : [[groupement de textes fantastiques]]
* Séquence 7: [[No Pasaran]]
* Séquence 8: [[La nuit du renard]]
* Séquence 9 : [[Images Publicitaires]]
* Séquence 10: [[Etude de l'argumentation]]
UploadPlugin with <<tag UploadService>> extend TiddlyWiki with @@upload@@ and @@save to web@@ commands.
See [[HowToUpload]].
!!Todo
*Better UploadLog
*limit the number of backup files
[[Upload]] is... <<tagging Upload>>
//last update: UploadPlugin v 3.4.4//
!Description
UploadPlugin with <<tag UploadService>> extend TiddlyWiki with @@upload@@ and @@save to web@@ commands.
UploadPlugin uses Username and Password from UploadOptions stored in cookies to authenticate itself to [[store.php]] or [[store.cgi]].
French translation available as a separate tiddler UploadPluginMsgFR
!!UploadPlugin
*If the TiddlyWiki is viewed from @@local disk@@ :
**{{{<<saveChanges>>}}}
***display as ''save to disk''
***work as usual
**{{{<<upload>>}}}
***display as ''upload''
***after saving to disk, upload in the storeUrl directory.
*If the TiddlyWiki is viewed from @@website@@ and is @@readOnly@@ (in core TiddlyWiki since 2.0.6) :
**{{{<<saveChanges>>}}}
***print nothing
***has been disabled
**{{{<<upload>>}}}
***display as '''save to web''
***save in the uploadDir directory.
*If GenerateAnRssFeed in AdvancedOptions is set :
**generate the content of the RSSFeed
**upload the RssFile in uploadDir directory
**Caution : use the SiteUrl tiddler to specify the right url of the TiddlyWiki in the generated RssFile
*DisplayMessage
*Log upload action in UploadLog
hint : if UploadLog is the first tiddler in the Timeline Tab, no tiddler has been updated since last upload.
!![[store.php]]
*UserVariables to set :
//{{{
$AUTHENTICATE_USER = true; // true | false
$USERS = array(
'UserName1'=>'Password1',
'UserName2'=>'Password2',
'UserName3'=>'Password3'); // set usernames and strong passwords
$DEBUG = false; // true | false
//}}}
*method GET
**display an information page
*method POST
**if $~AUTHENTICATE_USER is ''true''
***presence and value of user and password are checked with $USER and $PASSWORD
**if toFilename already exists and backDir parameter specified
***rename toFilename to backupDir/toFilename.AAAAMMDD.HHSS.html
**copy temporaryUploadedFile to toFilename
** return status
!![[store.cgi]]
*UserVariables to set :
//{{{
CONFIG = {
:users => {
'UserName1'=>'Password1',
'UserName2'=>'Password2',
'UserName3'=>'Password3')
},
:authenticateUser => true,
:backupExistingFile => true,
:withUploadDir => true
}
//}}}
*same processing as store.php above
!Usage :
{{{
<<upload>>
uses UploadOptions saved in cookies :
txtUploadUserName: username
pasUploadPassword : password
txtUploadStoreUrl : store script
txtUploadDir : relative path for upload directory
txtUploadFilename : upload filename
txtUploadBackupDir : relative path for backup directory
<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
Optional positional parameters can be passed to overwrite
UploadOptions.
}}}
Install the {{{<<upload ... >>}}} macro in SideBarOptions just below {{{<<saveChanges>>}}} macro.
!User manual
See HowToUpload
!Installation :
*Install the UploadPlugin as usual
*Upload the [[store.php]] file on your php aware webserver in your TiddlyWiki directory
*Protect your server against malicious upload. Two approaches :
**set $~AUTHENTICATE_USER to true in the [[store.php]] script
***configure $USER and $PASSWORD in the [[store.php]] script on your webserver
***set UploadOptions in conformity with [[store.php]]
**Use server protection :
***for Apache web server ([[for detail see Apache documentation|http://httpd.apache.org/docs/1.3/howto/htaccess.html]]) :
****configure and upload the [[.htaccess]] [[.passwd]]
***for other web servers see the appropriate documentation
*Configure an upload button, for example in the SideBarOptions
!Suppported Browser
*Firefox and Gecko based browser: tested Ok
*Internet Explorer : tested Ok
*Safari : tested ok on OS X
*Others : Not tested, please report status.
!Revision history
*V 3.4.4 (30/09/2006)
**PasswordTweak V 1.0.3
***add class attribute specific on each option input (thanks to ClintChecketts)
**UploadOptions width set by styleSheet
*V 3.4.3 (19/09/2006)
**Add classname to input for options (thanks to ClintChecketts)
**Force checkAutoSave to false
**Alert if password is empty before Uploading
*V 3.4.2 (04/09/2006)
**add functions to format displayMessages (thanks to LucDeschenaux)
**take return values from store.cgi of destfile and backupfile for displayMessages
*V 3.4.1 (19/08/2006)
**Error management improvement
*V 3.4.0 (25/07/2006)
**Manage Lock parameters for GroupAuthoring
**Small code refactoring for new PluginFormat in TW 2.1
+++[previous revisions]
*V 3.3.3 (30/06/2006)
**reinstall saveChanges Hijacking
*V 3.3.2 (26/06/2006)
** make "save to disk" disappear when TiddlyWiki is located on the web
** small reformatting of post headers for store.cgi compatibility
*V 3.3.1 (30/03/2006)
**bug in backup folder when uploading rssfile fixed
*V 3.3.0 (12/03/2006)
**Code refactoring
**suppress saveChanges hijacking
*V3.2.2 (25/02/2006)
**Use PasswordTweak 1.0.1
**uploaddir is a relative path
**backupdir is a relative path
*V3.2.1 (13/02/2006)
**name and password added to open.request (Thanks to TedPavlic)
*V3.2.0 (14/02/2006)
**Use PassworDTweak (http://tiddlyWiki.bidix.info/#PasswordTweak) for password
*V3.1.0 (12/02/2006)
**UploadOptions in Cookies
**Username and password from UploadOptions pass to store.php script for authentification check
*V3.0.3 (03/02/2006)
**Firefox 1.5.0.1 crashes due to global var fixed
*V3.0.2 (25-Jan-2006)
**HTTPS compatible
*V3.0.1 (18-Jan-2006)
**UTF8toUnicode conversion problem in Firefox
*V3.0.0 (15-Jan-2006)
**Asynchronous upload
**Synchronous upload before unload of the page
**All strings extracted in macro config
**Compatibility checked with TW 2.0.2 & TW 1.2.39 for both FF 1.5 and IE 6
*V2.0.2 (8-Jan-2006)
**conversion of SiteTitle and SiteSubtitle in web page Title
*V2.0.1 (8-Jan-2006)
**Compatibilty with TiddlyWiki 2.0.1
*V2.0.0 (3-Jan-2006)
**Save to web
**Compatibilty with TiddlyWiki 1.2.39 and TiddlyWiki 2.0.0 Beta 6
*v1.1.0 (27-Dec-2005)
**Upload RSS File
*v1.0.3 (26-Dec-2005)
**UploadLog tiddler
*v1.0.2 (24-Dec-2005)
**Optional parameter toFilename
**Optional parameter backupDir
*v1.0.1 (23-Dec-2005)
**reformatting code
* v1.0.0 (17-Dec-2005)
** first public working version
===
This form upload any file with an UploadService describe in [[Upload]]
----
<html><center>
<form enctype="multipart/form-data" action="http://cartailler.free.fr/tableau/store.php" method="post" target="_blank">
<input type="hidden" name="MAX_FILE_SIZE" value="3000000" />
This file : <input name="userfile" type="file" /><p>
Options* : <input type="text" name="UploadPlugin" size=70 value="backupDir=sauv;user=cartawiki;password=UPLOAD_PASSWORD;" /><p>
<input type="submit" value="Upload" />
</form></center>
</html>
----
* Substitute BACKUP_DIR, UPLOAD_USER and UPLOAD_PASSWORD with your values. See UploadPlugin for option details.
For security reason, don't save your password in a tiddler.
| 19/10/2007 12:27:45 | MathieuCartailler | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index.html | sauv | Ok |
| 19/10/2007 12:28:57 | MathieuCartailler | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index.html | sauv |
| 19/10/2007 14:39:29 | MathieuCartailler | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index.html | sauv |
| 22/10/2007 12:4:13 | MathieuCartailler | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.cgi|http://cartawiki.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 19/11/2007 15:54:5 | YourName | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index.html | sauv |
| 11/3/2008 14:10:40 | YourName | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | sauv | index.html | | Ok |
| 28/3/2008 11:55:30 | YourName | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | sauv | index.html | | Ok |
| 7/4/2008 15:49:36 | YourName | [[index.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | sauv | index.html | |
| 5/6/2008 15:9:5 | YourName | [[index.html|file:///E:/TW/index.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index.html | |
| 15/9/2008 11:17:17 | YourName | [[index08.html|file:///F:/index08.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index08.html | sauv |
| 26/2/2009 9:46:53 | Cartailler | [[index09.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/index09.html]] | [[store.php|http://cartailler.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 9:47:32 | Cartailler | [[index09.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 9:47:57 | Cartailler | [[index09.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv | Ok |
| 26/2/2009 13:21:2 | Cartailler | [[index09.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 16:1:51 | Cartailler | [[index09.html|file:///H:/Documents%20and%20Settings/cartailler/Bureau/WIKI/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 17:38:21 | Cartailler | [[index09.html|file:///home/cartailler/cours/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 17:39:20 | Cartailler | [[index09.html|file:///home/cartailler/cours/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv | Ok |
| 26/2/2009 21:42:41 | Cartailler | [[index09.html|file:///home/cartailler/cours/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 26/2/2009 23:23:10 | Cartailler | [[index09.html|file:///home/cartailler/cours/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 27/2/2009 15:18:32 | YourName | [[index09.html|file:///H:/Documents%20and%20Settings/Administrateur/Bureau/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv | Ok |
| 27/2/2009 16:2:35 | YourName | [[index09.html|file:///H:/Documents%20and%20Settings/Administrateur/Bureau/index09.html]] | [[store.php|http://cartawiki.free.fr/store.php]] | | index09.html | sauv |
| 22/3/2009 16:17:56 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[www.cartailler.net|http://www.cartailler.net]] | | index09.html | sauv |
| 22/3/2009 16:18:35 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 24/3/2009 11:34:2 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 24/3/2009 11:34:29 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 25/3/2009 10:50:25 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 25/3/2009 18:30:14 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 25/3/2009 22:4:17 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv | Ok |
| 25/3/2009 22:21:11 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv | Ok |
| 25/3/2009 22:24:3 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 26/3/2009 9:23:31 | YourName | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv | Ok |
| 26/3/2009 9:24:24 | YourName | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 27/3/2009 13:51:33 | YourName | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 27/3/2009 15:11:59 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 31/3/2009 14:2:10 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 31/3/2009 15:6:56 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html#]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 2/4/2009 11:38:12 | YourName | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv | Ok |
| 2/4/2009 11:52:49 | YourName | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 2/4/2009 15:9:29 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html#]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 2/4/2009 17:16:24 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 2/4/2009 17:55:48 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.cgi|http://cartawiki.tiddlyspot.com/store.cgi]] | . | index.html | . |
| 2/4/2009 17:56:23 | Cartailler | [[index09.html|http://www.cartailler.net/index09.html]] | [[store.php|http://www.cartailler.net/store.php]] | | index09.html | sauv |
| 2/4/2009 17:58:51 | Cartailler | [[index09.html|file:///home/cartailler/sites/TW_pour_cours/index09.html]] | [[store.cgi|http://cartawiki.tiddlyspot.com/store.cgi]] | . | index.html | . |
!Options used by UploadPlugin
Username: <<option txtUploadUserName>>
Password: <<option pasUploadPassword>>
Url of the UploadService script^^(1)^^: <<option txtUploadStoreUrl 50>>
Relative Directory where to store the file^^(2)^^: <<option txtUploadDir 50>>
Filename of the uploaded file^^(3)^^: <<option txtUploadFilename 40>>
Directory to backup file on webserver^^(4)^^: <<option txtUploadBackupDir>>
^^(1)^^Mandatory either in UploadOptions or in macro parameter
^^(2)^^If empty stores in the script directory
^^(3)^^If empty takes the actual filename
^^(4)^^If empty existing file with same name on webserver will be overwritten
<<upload>> with these options.
!Upload Macro parameters
{{{
<<upload [storeUrl [toFilename [backupDir [uploadDir [username]]]]]>>
Optional positional parameters can be passed to overwrite
UploadOptions.
}}}
/***
|''Name:''|UploadPlugin|
|''Description:''|Save to web a TiddlyWiki|
|''Version:''|3.4.4|
|''Date:''|Sep 30, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPlugin|
|''Documentation:''|http://tiddlywiki.bidix.info/#UploadDoc|
|''Author:''|BidiX (BidiX (at) bidix (dot) info)|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''~CoreVersion:''|2.0.0|
|''Browser:''|Firefox 1.5; InternetExplorer 6.0; Safari|
|''Include:''|config.lib.file; config.lib.log; config.lib.options; PasswordTweak|
|''Require:''|[[UploadService|http://tiddlywiki.bidix.info/#UploadService]]|
***/
//{{{
version.extensions.UploadPlugin = {
major: 3, minor: 4, revision: 4,
date: new Date(2006,8,30),
source: 'http://tiddlywiki.bidix.info/#UploadPlugin',
documentation: 'http://tiddlywiki.bidix.info/#UploadDoc',
author: 'BidiX (BidiX (at) bidix (dot) info',
license: '[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D]]',
coreVersion: '2.0.0',
browser: 'Firefox 1.5; InternetExplorer 6.0; Safari'
};
//}}}
////+++!![config.lib.file]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.file) config.lib.file= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.file.dirname = function (filePath) {
var lastpos;
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(0, lastpos);
} else {
return filePath.substring(0, filePath.lastIndexOf("\\"));
}
};
config.lib.file.basename = function (filePath) {
var lastpos;
if ((lastpos = filePath.lastIndexOf("#")) != -1)
filePath = filePath.substring(0, lastpos);
if ((lastpos = filePath.lastIndexOf("/")) != -1) {
return filePath.substring(lastpos + 1);
} else
return filePath.substring(filePath.lastIndexOf("\\")+1);
};
window.basename = function() {return "@@deprecated@@";};
//}}}
////===
////+++!![config.lib.log]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.log) config.lib.log= {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 1},
date: new Date(2006,8,19)
};
config.lib.Log = function(tiddlerTitle, logHeader) {
if (version.major < 2)
this.tiddler = store.tiddlers[tiddlerTitle];
else
this.tiddler = store.getTiddler(tiddlerTitle);
if (!this.tiddler) {
this.tiddler = new Tiddler();
this.tiddler.title = tiddlerTitle;
this.tiddler.text = "| !date | !user | !location |" + logHeader;
this.tiddler.created = new Date();
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[tiddlerTitle] = this.tiddler;
else
store.addTiddler(this.tiddler);
}
return this;
};
config.lib.Log.prototype.newLine = function (line) {
var now = new Date();
var newText = "| ";
newText += now.getDate()+"/"+(now.getMonth()+1)+"/"+now.getFullYear() + " ";
newText += now.getHours()+":"+now.getMinutes()+":"+now.getSeconds()+" | ";
newText += config.options.txtUserName + " | ";
var location = document.location.toString();
var filename = config.lib.file.basename(location);
if (!filename) filename = '/';
newText += "[["+filename+"|"+location + "]] |";
this.tiddler.text = this.tiddler.text + "\n" + newText;
this.addToLine(line);
};
config.lib.Log.prototype.addToLine = function (text) {
this.tiddler.text = this.tiddler.text + text;
this.tiddler.modifier = config.options.txtUserName;
this.tiddler.modified = new Date();
if (version.major < 2)
store.tiddlers[this.tiddler.tittle] = this.tiddler;
else {
store.addTiddler(this.tiddler);
story.refreshTiddler(this.tiddler.title);
store.notify(this.tiddler.title, true);
}
if (version.major < 2)
store.notifyAll();
};
//}}}
////===
////+++!![config.lib.options]
//{{{
if (!config.lib) config.lib = {};
if (!config.lib.options) config.lib.options = {
author: 'BidiX',
version: {major: 0, minor: 1, revision: 0},
date: new Date(2006,3,9)
};
config.lib.options.init = function (name, defaultValue) {
if (!config.options[name]) {
config.options[name] = defaultValue;
saveOptionCookie(name);
}
};
//}}}
////===
////+++!![PasswordTweak]
//{{{
version.extensions.PasswordTweak = {
major: 1, minor: 0, revision: 3, date: new Date(2006,8,30),
type: 'tweak',
source: 'http://tiddlywiki.bidix.info/#PasswordTweak'
};
//}}}
/***
!!config.macros.option
***/
//{{{
config.macros.option.passwordCheckboxLabel = "Save this password on this computer";
config.macros.option.passwordType = "password"; // password | text
config.macros.option.onChangeOption = function(e)
{
var opt = this.getAttribute("option");
var elementType,valueField;
if(opt) {
switch(opt.substr(0,3)) {
case "txt":
elementType = "input";
valueField = "value";
break;
case "pas":
elementType = "input";
valueField = "value";
break;
case "chk":
elementType = "input";
valueField = "checked";
break;
}
config.options[opt] = this[valueField];
saveOptionCookie(opt);
var nodes = document.getElementsByTagName(elementType);
for(var t=0; t<nodes.length; t++)
{
var optNode = nodes[t].getAttribute("option");
if (opt == optNode)
nodes[t][valueField] = this[valueField];
}
}
return(true);
};
config.macros.option.handler = function(place,macroName,params)
{
var opt = params[0];
if(config.options[opt] === undefined) {
return;}
var c;
switch(opt.substr(0,3)) {
case "txt":
c = document.createElement("input");
c.onkeyup = this.onChangeOption;
c.setAttribute ("option",opt);
c.className = "txtOptionInput "+opt;
place.appendChild(c);
c.value = config.options[opt];
break;
case "pas":
// input password
c = document.createElement ("input");
c.setAttribute("type",config.macros.option.passwordType);
c.onkeyup = this.onChangeOption;
c.setAttribute("option",opt);
c.className = "pasOptionInput "+opt;
place.appendChild(c);
c.value = config.options[opt];
// checkbox link with this password "save this password on this computer"
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option","chk"+opt);
c.className = "chkOptionInput "+opt;
place.appendChild(c);
c.checked = config.options["chk"+opt];
// text savePasswordCheckboxLabel
place.appendChild(document.createTextNode(config.macros.option.passwordCheckboxLabel));
break;
case "chk":
c = document.createElement("input");
c.setAttribute("type","checkbox");
c.onclick = this.onChangeOption;
c.setAttribute("option",opt);
c.className = "chkOptionInput "+opt;
place.appendChild(c);
c.checked = config.options[opt];
break;
}
};
//}}}
/***
!! Option cookie stuff
***/
//{{{
window.loadOptionsCookie_orig_PasswordTweak = window.loadOptionsCookie;
window.loadOptionsCookie = function()
{
var cookies = document.cookie.split(";");
for(var c=0; c<cookies.length; c++) {
var p = cookies[c].indexOf("=");
if(p != -1) {
var name = cookies[c].substr(0,p).trim();
var value = cookies[c].substr(p+1).trim();
switch(name.substr(0,3)) {
case "txt":
config.options[name] = unescape(value);
break;
case "pas":
config.options[name] = unescape(value);
break;
case "chk":
config.options[name] = value == "true";
break;
}
}
}
};
window.saveOptionCookie_orig_PasswordTweak = window.saveOptionCookie;
window.saveOptionCookie = function(name)
{
var c = name + "=";
switch(name.substr(0,3)) {
case "txt":
c += escape(config.options[name].toString());
break;
case "chk":
c += config.options[name] ? "true" : "false";
// is there an option link with this chk ?
if (config.options[name.substr(3)]) {
saveOptionCookie(name.substr(3));
}
break;
case "pas":
if (config.options["chk"+name]) {
c += escape(config.options[name].toString());
} else {
c += "";
}
break;
}
c += "; expires=Fri, 1 Jan 2038 12:00:00 UTC; path=/";
document.cookie = c;
};
//}}}
/***
!! Initializations
***/
//{{{
// define config.options.pasPassword
if (!config.options.pasPassword) {
config.options.pasPassword = 'defaultPassword';
window.saveOptionCookie('pasPassword');
}
// since loadCookies is first called befor password definition
// we need to reload cookies
window.loadOptionsCookie();
//}}}
////===
////+++!![config.macros.upload]
//{{{
config.macros.upload = {
accessKey: "U",
formName: "UploadPlugin",
contentType: "text/html;charset=UTF-8",
defaultStoreScript: "store.php"
};
// only this two configs need to be translated
config.macros.upload.messages = {
aboutToUpload: "About to upload TiddlyWiki to %0",
backupFileStored: "Previous file backuped in %0",
crossDomain: "Certainly a cross-domain isue: access to an other site isn't allowed",
errorDownloading: "Error downloading",
errorUploadingContent: "Error uploading content",
fileLocked: "Files is locked: You are not allowed to Upload",
fileNotFound: "file to upload not found",
fileNotUploaded: "File %0 NOT uploaded",
mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
passwordEmpty: "Unable to upload, your password is empty",
urlParamMissing: "url param missing",
rssFileNotUploaded: "RssFile %0 NOT uploaded",
rssFileUploaded: "Rss File uploaded to %0"
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.upload.handler = function(place,macroName,params){
// parameters initialization
var storeUrl = params[0];
var toFilename = params[1];
var backupDir = params[2];
var uploadDir = params[3];
var username = params[4];
var password; // for security reason no password as macro parameter
var label;
if (document.location.toString().substr(0,4) == "http")
label = this.label.saveLabel;
else
label = this.label.uploadLabel;
var prompt;
if (storeUrl) {
prompt = this.label.promptParamMacro.toString().format([this.toDirUrl(storeUrl, uploadDir, username)]);
}
else {
prompt = this.label.promptOption;
}
createTiddlyButton(place, label, prompt,
function () {
config.macros.upload.upload(storeUrl, toFilename, uploadDir, backupDir, username, password);
return false;},
null, null, this.accessKey);
};
config.macros.upload.UploadLog = function() {
return new config.lib.Log('UploadLog', " !storeUrl | !uploadDir | !toFilename | !backupdir | !origin |" );
};
config.macros.upload.UploadLog.prototype = config.lib.Log.prototype;
config.macros.upload.UploadLog.prototype.startUpload = function(storeUrl, toFilename, uploadDir, backupDir) {
var line = " [[" + config.lib.file.basename(storeUrl) + "|" + storeUrl + "]] | ";
line += uploadDir + " | " + toFilename + " | " + backupDir + " |";
this.newLine(line);
};
config.macros.upload.UploadLog.prototype.endUpload = function() {
this.addToLine(" Ok |");
};
config.macros.upload.basename = config.lib.file.basename;
config.macros.upload.dirname = config.lib.file.dirname;
config.macros.upload.toRootUrl = function (storeUrl, username)
{
return root = (this.dirname(storeUrl)?this.dirname(storeUrl):this.dirname(document.location.toString()));
}
config.macros.upload.toDirUrl = function (storeUrl, uploadDir, username)
{
var root = this.toRootUrl(storeUrl, username);
if (uploadDir && uploadDir != '.')
root = root + '/' + uploadDir;
return root;
}
config.macros.upload.toFileUrl = function (storeUrl, toFilename, uploadDir, username)
{
return this.toDirUrl(storeUrl, uploadDir, username) + '/' + toFilename;
}
config.macros.upload.upload = function(storeUrl, toFilename, uploadDir, backupDir, username, password)
{
// parameters initialization
storeUrl = (storeUrl ? storeUrl : config.options.txtUploadStoreUrl);
toFilename = (toFilename ? toFilename : config.options.txtUploadFilename);
backupDir = (backupDir ? backupDir : config.options.txtUploadBackupDir);
uploadDir = (uploadDir ? uploadDir : config.options.txtUploadDir);
username = (username ? username : config.options.txtUploadUserName);
password = config.options.pasUploadPassword; // for security reason no password as macro parameter
if (!password || password === '') {
alert(config.macros.upload.messages.passwordEmpty);
return;
}
if (storeUrl === '') {
storeUrl = config.macros.upload.defaultStoreScript;
}
if (config.lib.file.dirname(storeUrl) === '') {
storeUrl = config.lib.file.dirname(document.location.toString())+'/'+storeUrl;
}
if (toFilename === '') {
toFilename = config.lib.file.basename(document.location.toString());
}
clearMessage();
// only for forcing the message to display
if (version.major < 2)
store.notifyAll();
if (!storeUrl) {
alert(config.macros.upload.messages.urlParamMissing);
return;
}
// Check that file is not locked
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
if (BidiX.GroupAuthoring.lock.isLocked() && !BidiX.GroupAuthoring.lock.isMyLock()) {
alert(config.macros.upload.messages.fileLocked);
return;
}
}
var log = new this.UploadLog();
log.startUpload(storeUrl, toFilename, uploadDir, backupDir);
if (document.location.toString().substr(0,5) == "file:") {
saveChanges();
}
var toDir = config.macros.upload.toDirUrl(storeUrl, toFilename, uploadDir, username);
displayMessage(config.macros.upload.messages.aboutToUpload.format([toDir]), toDir);
this.uploadChanges(storeUrl, toFilename, uploadDir, backupDir, username, password);
if(config.options.chkGenerateAnRssFeed) {
//var rssContent = convertUnicodeToUTF8(generateRss());
var rssContent = generateRss();
var rssPath = toFilename.substr(0,toFilename.lastIndexOf(".")) + ".xml";
this.uploadContent(rssContent, storeUrl, rssPath, uploadDir, '', username, password,
function (responseText) {
if (responseText.substring(0,1) != '0') {
displayMessage(config.macros.upload.messages.rssFileNotUploaded.format([rssPath]));
}
else {
var toFileUrl = config.macros.upload.toFileUrl(storeUrl, rssPath, uploadDir, username);
displayMessage(config.macros.upload.messages.rssFileUploaded.format(
[toFileUrl]), toFileUrl);
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
});
}
return;
};
config.macros.upload.uploadChanges = function(storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var original;
if (document.location.toString().substr(0,4) == "http") {
original = this.download(storeUrl, toFilename, uploadDir, backupDir, username, password);
return;
}
else {
// standard way : Local file
original = loadFile(getLocalPath(document.location.toString()));
if(window.Components) {
// it's a mozilla browser
try {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
var converter = Components.classes["@mozilla.org/intl/scriptableunicodeconverter"]
.createInstance(Components.interfaces.nsIScriptableUnicodeConverter);
converter.charset = "UTF-8";
original = converter.ConvertToUnicode(original);
}
catch(e) {
}
}
}
//DEBUG alert(original);
this.uploadChangesFrom(original, storeUrl, toFilename, uploadDir, backupDir,
username, password);
};
config.macros.upload.uploadChangesFrom = function(original, storeUrl, toFilename, uploadDir, backupDir,
username, password) {
var startSaveArea = '<div id="' + 'storeArea">'; // Split up into two so that indexOf() of this source doesn't find it
var endSaveArea = '</d' + 'iv>';
// Locate the storeArea div's
var posOpeningDiv = original.indexOf(startSaveArea);
var posClosingDiv = original.lastIndexOf(endSaveArea);
if((posOpeningDiv == -1) || (posClosingDiv == -1))
{
alert(config.messages.invalidFileError.format([document.location.toString()]));
return;
}
var revised = original.substr(0,posOpeningDiv + startSaveArea.length) +
allTiddlersAsHtml() + "\n\t\t" +
original.substr(posClosingDiv);
var newSiteTitle;
if(version.major < 2){
newSiteTitle = (getElementText("siteTitle") + " - " + getElementText("siteSubtitle")).htmlEncode();
} else {
newSiteTitle = (wikifyPlain ("SiteTitle") + " - " + wikifyPlain ("SiteSubtitle")).htmlEncode();
}
revised = revised.replaceChunk("<title"+">","</title"+">"," " + newSiteTitle + " ");
revised = revised.replaceChunk("<!--PRE-HEAD-START--"+">","<!--PRE-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPreHead","") + "\n");
revised = revised.replaceChunk("<!--POST-HEAD-START--"+">","<!--POST-HEAD-END--"+">","\n" + store.getTiddlerText("MarkupPostHead","") + "\n");
revised = revised.replaceChunk("<!--PRE-BODY-START--"+">","<!--PRE-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPreBody","") + "\n");
revised = revised.replaceChunk("<!--POST-BODY-START--"+">","<!--POST-BODY-END--"+">","\n" + store.getTiddlerText("MarkupPostBody","") + "\n");
var response = this.uploadContent(revised, storeUrl, toFilename, uploadDir, backupDir,
username, password, function (responseText) {
if (responseText.substring(0,1) != '0') {
alert(responseText);
displayMessage(config.macros.upload.messages.fileNotUploaded.format([getLocalPath(document.location.toString())]));
}
else {
if (uploadDir !== '') {
toFilename = uploadDir + "/" + config.macros.upload.basename(toFilename);
} else {
toFilename = config.macros.upload.basename(toFilename);
}
var toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
if (responseText.indexOf("destfile:") > 0) {
var destfile = responseText.substring(responseText.indexOf("destfile:")+9,
responseText.indexOf("\n", responseText.indexOf("destfile:")));
toFileUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + destfile;
}
else {
toFileUrl = config.macros.upload.toFileUrl(storeUrl, toFilename, uploadDir, username);
}
displayMessage(config.macros.upload.messages.mainFileUploaded.format(
[toFileUrl]), toFileUrl);
if (backupDir && responseText.indexOf("backupfile:") > 0) {
var backupFile = responseText.substring(responseText.indexOf("backupfile:")+11,
responseText.indexOf("\n", responseText.indexOf("backupfile:")));
toBackupUrl = config.macros.upload.toRootUrl(storeUrl, username) + '/' + backupFile;
displayMessage(config.macros.upload.messages.backupFileStored.format(
[toBackupUrl]), toBackupUrl);
}
var log = new config.macros.upload.UploadLog();
log.endUpload();
store.setDirty(false);
// erase local lock
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
BidiX.GroupAuthoring.lock.eraseLock();
// change mtime with new mtime after upload
var mtime = responseText.substr(responseText.indexOf("mtime:")+6);
BidiX.GroupAuthoring.lock.mtime = mtime;
}
}
// for debugging store.php uncomment last line
//DEBUG alert(responseText);
}
);
};
config.macros.upload.uploadContent = function(content, storeUrl, toFilename, uploadDir, backupDir,
username, password, callbackFn) {
var boundary = "---------------------------"+"AaB03x";
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
if (window.netscape){
try {
if (document.location.toString().substr(0,4) != "http") {
netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');}
}
catch (e) {}
}
//DEBUG alert("user["+config.options.txtUploadUserName+"] password[" + config.options.pasUploadPassword + "]");
// compose headers data
var sheader = "";
sheader += "--" + boundary + "\r\nContent-disposition: form-data; name=\"";
sheader += config.macros.upload.formName +"\"\r\n\r\n";
sheader += "backupDir="+backupDir
+";user=" + username
+";password=" + password
+";uploaddir=" + uploadDir;
// add lock attributes to sheader
if (window.BidiX && BidiX.GroupAuthoring && BidiX.GroupAuthoring.lock) {
var l = BidiX.GroupAuthoring.lock.myLock;
sheader += ";lockuser=" + l.user
+ ";mtime=" + l.mtime
+ ";locktime=" + l.locktime;
}
sheader += ";;\r\n";
sheader += "\r\n" + "--" + boundary + "\r\n";
sheader += "Content-disposition: form-data; name=\"userfile\"; filename=\""+toFilename+"\"\r\n";
sheader += "Content-Type: " + config.macros.upload.contentType + "\r\n";
sheader += "Content-Length: " + content.length + "\r\n\r\n";
// compose trailer data
var strailer = new String();
strailer = "\r\n--" + boundary + "--\r\n";
//strailer = "--" + boundary + "--\r\n";
var data;
data = sheader + content + strailer;
//request.open("POST", storeUrl, true, username, password);
try {
request.open("POST", storeUrl, true);
}
catch(e) {
alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
exit;
}
request.onreadystatechange = function () {
if (request.readyState == 4) {
if (request.status == 200)
callbackFn(request.responseText);
else
alert(config.macros.upload.messages.errorUploadingContent + "\nStatus: "+request.status.statusText);
}
};
request.setRequestHeader("Content-Length",data.length);
request.setRequestHeader("Content-Type","multipart/form-data; boundary="+boundary);
request.send(data);
};
config.macros.upload.download = function(uploadUrl, uploadToFilename, uploadDir, uploadBackupDir,
username, password) {
var request;
try {
request = new XMLHttpRequest();
}
catch (e) {
request = new ActiveXObject("Msxml2.XMLHTTP");
}
try {
if (uploadUrl.substr(0,4) == "http") {
netscape.security.PrivilegeManager.enablePrivilege("UniversalBrowserRead");
}
else {
netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
}
} catch (e) { }
//request.open("GET", document.location.toString(), true, username, password);
try {
request.open("GET", document.location.toString(), true);
}
catch(e) {
alert(config.macros.upload.messages.crossDomain + "\nError:" +e);
exit;
}
request.onreadystatechange = function () {
if (request.readyState == 4) {
if(request.status == 200) {
config.macros.upload.uploadChangesFrom(request.responseText, uploadUrl,
uploadToFilename, uploadDir, uploadBackupDir, username, password);
}
else
alert(config.macros.upload.messages.errorDownloading.format(
[document.location.toString()]) + "\nStatus: "+request.status.statusText);
}
};
request.send(null);
};
//}}}
////===
////+++!![Initializations]
//{{{
config.lib.options.init('txtUploadStoreUrl','store.php');
config.lib.options.init('txtUploadFilename','');
config.lib.options.init('txtUploadDir','');
config.lib.options.init('txtUploadBackupDir','');
config.lib.options.init('txtUploadUserName',config.options.txtUserName);
config.lib.options.init('pasUploadPassword','');
setStylesheet(
".pasOptionInput {width: 11em;}\n"+
".txtOptionInput.txtUploadStoreUrl {width: 25em;}\n"+
".txtOptionInput.txtUploadFilename {width: 25em;}\n"+
".txtOptionInput.txtUploadDir {width: 25em;}\n"+
".txtOptionInput.txtUploadBackupDir {width: 25em;}\n"+
"",
"UploadOptionsStyles");
config.shadowTiddlers.UploadDoc = "[[Full Documentation|http://tiddlywiki.bidix.info/l#UploadDoc ]]\n";
config.options.chkAutoSave = false; saveOptionCookie('chkAutoSave');
//}}}
////===
////+++!![Core Hijacking]
//{{{
config.macros.saveChanges.label_orig_UploadPlugin = config.macros.saveChanges.label;
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;
config.macros.saveChanges.handler_orig_UploadPlugin = config.macros.saveChanges.handler;
config.macros.saveChanges.handler = function(place)
{
if ((!readOnly) && (document.location.toString().substr(0,4) != "http"))
createTiddlyButton(place,this.label,this.prompt,this.onClick,null,null,this.accessKey);
};
//}}}
////===
/***
|''Name:''|UploadPluginMsgEN|
|''Description:''|English Translation|
|''Date:''|Sep 20, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPluginMsgEN|
|''Author:''|BidiX (BidiX (at) bidix (dot) info) with modifications by YannPerrin|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''Include:''|none|
|''Require:''|UploadPlugin 3.4.3|
***/
/***
!Usage :
For an english translation of UploadPlugin Message when using PolyGlotPlugin, import this tiddler in the TiddlyWiki. Make sure it is tagged with {{{en}}} and {{{linguo}}}.
Comments and suggestions are welcome.
***/
//{{{
config.macros.upload.messages = {
aboutToUpload: "About to upload TiddlyWiki to %0",
backupFileStored: "Previous file backuped in %0",
crossDomain: "Certainly a cross-domain issue: access to an other site isn't allowed",
errorDownloading: "Error downloading",
errorUploadingContent: "Error uploading content",
fileLocked: "Files is locked: You are not allowed to Upload",
fileNotFound: "file to upload not found",
fileNotUploaded: "File %0 NOT uploaded",
mainFileUploaded: "Main TiddlyWiki file uploaded to %0",
passwordEmpty: "Unable to upload, your password is empty",
urlParamMissing: "url param missing",
rssFileNotUploaded: "RssFile %0 NOT uploaded",
rssFileUploaded: "Rss File uploaded to %0"
};
config.macros.upload.label = {
promptOption: "Save and Upload this TiddlyWiki with UploadOptions",
promptParamMacro: "Save and Upload this TiddlyWiki in %0",
saveLabel: "save to web",
saveToDisk: "save to disk",
uploadLabel: "upload"
};
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;
//}}}
/***
|''Name:''|UploadPluginMsgFR|
|''Description:''|French Translation|
|''Date:''|Sep 20, 2006|
|''Source:''|http://tiddlywiki.bidix.info/#UploadPluginMsgEN|
|''Author:''|BidiX (BidiX (at) bidix (dot) info) with modifications by YannPerrin|
|''License:''|[[BSD open source license|http://tiddlywiki.bidix.info/#%5B%5BBSD%20open%20source%20license%5D%5D ]]|
|''Include:''|none|
|''Require:''|UploadPlugin 3.4.3|
***/
/***
!Usage :
For a french translation of UploadPlugin Message when using PolyGlotPlugin, import this tiddler in the TiddlyWiki. Make sure it is tagged with {{{fr}}} and {{{linguo}}}.
Comments and suggestions are welcome.
***/
//{{{
config.macros.upload.messages = {
aboutToUpload: "Préparation du téléchargement le TiddlyWiki vers %0",
backupFileStored: "Fichier précedent sauvegardé dans %0",
crossDomain: "Certainement un problème d'accès cross-domaine: l'accès à un autre site n'est pas autorisé",
errorDownloading: "Erreur de téléchargement de %0 depuis le serveur",
errorUploadingContent: "Erreur de téléchargement vers le serveur du contenu",
fileLocked: "Fichier est réservé: vous n'êtes pas autorisé à le mettre à jour",
fileNotFound: "Fichier à télécharger vers le serveur non trouvé",
fileNotUploaded: "Le fichier %0 N'A PAS été téléchargé vers le serveur",
mainFileUploaded: "Le fichier TiddlyWiki a été téléchargé vers le serveur %0",
passwordEmpty: "Impossible de télécharger, vous n'avez pas fourni de mot de passe.",
urlParamMissing: "Paramètre URL manquant",
rssFileNotUploaded: "Le fichier Rss %0 N'A PAS été téléchargé vers le serveur",
rssFileUploaded: "Le fichier RSS a été téléchargé vers %0"
};
config.macros.upload.label = {
promptOption: "Sauvegarde et télécharge ce TiddlyWiki avec les UploadOptions",
promptParamMacro: "Sauvegarde et télécharge ce TiddlyWiki vers %0",
saveLabel: "sauvegarde sur le web",
saveToDisk: "sauvegarde sur le disque",
uploadLabel: "Télécharge vers le web"
};
config.macros.saveChanges.label = config.macros.upload.label.saveToDisk;
//}}}
* file
o store.cgi
o store.php
* GroupAuthoring
o store.cgi
* Upload
o store.cgi
o store.php
//last update: UploadToFileMacro v 1.4.0//
!Description
Upload a tiddler as a file using UploadPlugin context.
Used with the SimonBaird's RunMacroIfTagged in [[ViewTemplate]] provides a new command in the tiddler toolbar.
!Usage
{{{
<<uploadToFile>>
<<uploadTofile [filename [tiddlerTitle]]>>
tiddlerTitle: if omitted the title of the current tiddler
filename: if omitted the title of the current tiddler
}}}
!Revision history
* v1.0.0 (14/03/2006)
** initial release
<!---
| Name:|~TagglyTaggingViewTemplate |
| Version:|1.2 (16-Jan-2006)|
| Source:|http://simonbaird.com/mptw/#TagglyTaggingViewTemplate|
| Purpose:|See TagglyTagging for more info|
| Requires:|You need the CSS in TagglyTaggingStyles to make it look right|
!History
* 16-Jan-06, version 1.2, added tagglyListWithSort
* 12-Jan-06, version 1.1, first version
!Notes
Remove the miniTag if you don't like it or you don't use QuickOpenTagPlugin
--->
<!--{{{-->
<div class="toolbar" macro="toolbar -closeTiddler closeOthers +editTiddler references jump newHere"><span style="padding-right:0.75em;" class='fakeButton' macro="runMacroIfTagged file uploadToFile"><span macro='encrypt'></span><span macro='decrypt'></span></div>
<div class="tagglyTagged" macro="hideSomeTags"></span></div>
<div><span class="title" macro="view title"></span><span class="miniTag" macro="miniTag"></span></div>
<div class='subtitle'><span macro='view modifier link'></span>, <span macro='view modified date [[DD MMM YYYY]]'></span> (<span macro='message views.wikified.createdPrompt'></span> <span macro='view created date [[DD MMM YYYY]]'></span>)</div>
<!--<div class="viewer" macro="view text wikified"></div>-->
<div macro="hideWhen tiddler.tags.containsAny(['css','html','pre','systemConfig','file'])&&!tiddler.text.match('{{'+'{')">
<div class='viewer' macro='view text wikified'></div>
</div>
<div macro="showWhen tiddler.tags.containsAny(['css','html','pre','systemConfig','file'])&&!tiddler.text.match('{{'+'{')">
<div class='viewer'><pre macro='view text'></pre></div>
</div>
<div class="tagglyTagging" macro="tagglyTagging"></div>
<!--}}}-->
|!4|!3|
|Amicus: ami<br>habeo: avoir<br>debeo: devoir<br>servus: esclave<br>mitto: envoyer<br>ludus: jeu <br>paro: préparer<br>puella: jeune fille non mariée<br>recuso: refuser<br>timeo: craindre<br>vero: mais<br>cupio: désirer<br>cum+ABL: avec<br>pugna: bataille<br>moneo: avertir, prévenir<br>femina: femme<br>capio: prendre<br>nam: car<br>ad+ACC: vers, chez <br>audio||
Here are some examples that show the usage of the whereClause in the ForEachTiddlerMacro.
<<forEachTiddler
where
'tiddler.tags.contains("whereClauseExample")'
>>
See also ForEachTiddlerExamples.
/***
|''Name:''|WikiBar|
|''Version:''|2.0.0 beta3|
|''Source:''|[[AiddlyWiki|http://aiddlywiki.sourceforge.net]]|
|''Author:''|[[Arphen Lin|mailto:arphenlin@gmail.com]]|
|''Type:''|toolbar macro command extension|
|''Required:''|TiddlyWiki 2.0.0 beta6|
!Description
WikiBar is a toolbar that gives access to most of TiddlyWiki's formatting features with a few clicks. It's a handy tool for people who are not familiar with TiddlyWiki syntax.
Besides, with WikiBar-addons, users can extend the power of WikiBar.
!Support browser
*Firefox 1.5
!Revision history
*v2.0.0 beta3 (2005/12/30)
** remove macros (replaced by TWMacro addon)
** add wikibar command in toolbar automatically
** rename DOIT to HANDLER
** rename TIP to TOOLTIP
*v2.0.0 beta2 (2005/12/21)
** re-design Wikibar addon framework
*v2.0.0 beta1 (2005/12/14)
** Note:
*** WikiBarPlugin is renamed to WikiBar
** New Features:
*** support TiddlyWiki 2.0.0 template mechanism
*** new wikibar data structure
*** new wikibar-addon framework for developers
**** support dynamic popup menu generator
*** support most new macros added in TiddlyWiki 2.0.0
*** multi-level popup menu
*** fix wikibar tab stop
*** remove paletteSelector
** Known Bugs:
*** popup-menu and color-picker can't be closed correctly
*** some macros can't be displayed correctly in previewer
*** text in previewer will be displayed italic
*v1.2.0 (2005/11/21)
**New Features:
***User defined color palettes supported
####Get color palettes from [[ColorZilla Palettes|http://www.iosart.com/firefox/colorzilla/palettes.html]].
####Save the palette file(*.gpl) as a new tiddler and tag it with 'ColorPalettes', then you can use it in WikiBar.
***WikiBar style sheet supported
***Click on document to close current colorPicker, paletteSelector or aboutWikibar
*v1.1.1 (2005/11/03)
**Bugs fixed:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.1.0 (2005/11/01)
**Bugs fixed:
***WikiBar overruns (reported by by GeoffS <gslocock@yahoo.co.uk>)
**New features:
***Insert a color code at the cursor. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Enable gradient macro. (Thanks to RunningUtes <RunningUtes@gmail.com>)
***Insert tiddler comment tags {{{/% ... %/}}}. (new feature supported by TiddlyWiki 1.2.37)
***Insert DateFormatString for {{{<<today>>}}} macro. (new feature supported by TiddlyWiki 1.2.37)
**Enhanced:
***Allow optional parameters in syntax.
**Bugs:
***'Not enough parameters!' message is displayed when the parameter includes '%+number', ex: 'hello%20world!'
*v1.0.0 (2005/10/30)
**Initial release
!Code
***/
//{{{
config.macros.wikibar = {major: 2, minor: 0, revision: 0, beta: 3, date: new Date(2005,12,30)};
config.macros.wikibar.handler = function(place,macroName,params,wikifier,paramString,tiddler){
if(!(tiddler instanceof Tiddler)) {return;}
story.setDirty(tiddler.title,true);
place.id = 'wikibar'+tiddler.title;
place.className = 'toolbar wikibar';
};
function wikibar_install(){
config.commands.wikibar = {
text: 'wikibar',
tooltip: 'wikibar on/off',
handler: function(e,src,title) {
if(!e){ e = window.event; }
var theButton = resolveTarget(e);
theButton.id = 'wikibarButton'+title;
wikibarPopup.remove();
wikibar_installAddons(theButton, title);
wikibar_createWikibar(title);
return(false);
}
};
config.shadowTiddlers['EditTemplate'] = wikibar_addWikibarCommand(config.shadowTiddlers['EditTemplate']);
var tiddler = store.getTiddler('EditTemplate');
if(tiddler){
tiddler.text = wikibar_addWikibarCommand(tiddler.text);
}
}
function wikibar_installAddons(theButton, title){
var tiddlers = store.getTaggedTiddlers('wikibarAddons');
if(!tiddlers) { return; }
theButton.addons=[];
for(var i=0; i<tiddlers.length; i++){
try{
eval(tiddlers[i].text);
try{
wikibar_addonInstall(title);
wikibar_addonInstall = null;
theButton.addons.push({ok:true, name:tiddlers[i].title});
}catch(ex){
theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
}
}catch(ex){
theButton.addons.push({ok:false, name:tiddlers[i].title, error:ex});
}
}
}
function wikibar_addWikibarCommand(tiddlerText){
var div = document.createElement('div');
div.style.display = 'none';
div.innerHTML = tiddlerText;
for(var i=0; i<div.childNodes.length; i++){
var o=div.childNodes[i];
if(o.tagName==='DIV'){
if(o.className=='toolbar'){
var macroText = o.getAttribute('macro').trim();
if(macroText.search('wikibar')<=0){
macroText += ' wikibar';
o.setAttribute('macro', macroText);
}
break;
}
}
}
return div.innerHTML.replace(/\"/g, "\'");
}
function wikibar_processSyntaxParams(theSyntax, params){
try{
var pcr = 'AplWikibarPcr';
var rx=null;
var allParams=null;
if(params){
if(typeof(params)=='object'){
for(var i=0; i<params.length; i++){
if(params[i]){
params[i] = params[i].replace(new RegExp('%','g'), pcr).trim();
rx = '(\\[%'+(i+1)+'\\])' + '|' + '(%'+(i+1)+')';
theSyntax = theSyntax.replace(new RegExp(rx,'g'), params[i] );
}
}
allParams = params.join(' ').trim();
}else{
allParams = params.replace(new RegExp('%','g'), pcr).trim();
rx = /(\[%1{1}\])|(%1{1})/g;
theSyntax = theSyntax.replace(rx, allParams);
}
}
if(allParams){
theSyntax = theSyntax.replace(new RegExp('%N{1}','g'), allParams);
}
rx=/\[%(([1-9]{1,}[0-9]{0,})|(N{1}))\]/g;
theSyntax = theSyntax.replace(rx, '');
rx=/%(([1-9]{1,}[0-9]{0,})|(N{1}))/g;
if( theSyntax.match(rx) ){
throw 'Not enough parameters! ' + theSyntax;
}
theSyntax=theSyntax.replace(new RegExp(pcr,'g'), '%');
return theSyntax;
} catch(ex){
return null;
}
}
function wikibar_resolveEditItem(tiddlerWrapper, itemName){
if(tiddlerWrapper.hasChildNodes()){
var c=tiddlerWrapper.childNodes;
for(var i=0; i<c.length; i++){
var txt=wikibar_resolveEditItem(c[i], itemName);
if(!txt){
continue;
}else{
return txt;
}
}
}
return ((tiddlerWrapper.getAttribute && tiddlerWrapper.getAttribute('edit')==itemName)? tiddlerWrapper : null);
}
function wikibar_resolveEditItemValue(tiddlerWrapper, itemName){
var o = wikibar_resolveEditItem(tiddlerWrapper, itemName);
return (o? o.value.replace(/\r/mg,'') : null);
}
function wikibar_resolveTiddlerEditorWrapper(obj){
if(obj.id=='tiddlerDisplay'){return null;}
if((obj.getAttribute && obj.getAttribute('macro')=='edit text')){return obj;}
return wikibar_resolveTiddlerEditorWrapper(obj.parentNode);
}
function wikibar_resolveTiddlerEditor(obj){
if(obj.hasChildNodes()){
var c = obj.childNodes;
for(var i=0; i<c.length; i++){
var o=wikibar_resolveTiddlerEditor(c[i]);
if(o){ return o;}
}
}
return ((obj.getAttribute && obj.getAttribute('edit')=='text')? obj : null);
}
function wikibar_resolveTargetButton(obj){
if(obj.id && obj.id.substring(0,7)=='wikibar'){ return null; }
if(obj.tiddlerTitle){
return obj;
}else{
return wikibar_resolveTargetButton(obj.parentNode);
}
}
function wikibar_isValidMenuItem(tool){
if(!tool){ return false; }
if(tool.TYPE=='MENU' || tool.TYPE=='MAIN_MENU'){
for(var key in tool){
if(key.substring(0,8)=='DYNAITEM'){ return true; }
if(wikibar_isValidMenuItem(tool[key])){ return true; }
}
return false;
}else{
return (tool.HANDLER? true : false);
}
}
function wikibar_editFormat(param){
var editor = param.button.editor;
var params = param.params;
clearMessage();
if(!editor){ return; }
var repText = wikibar_processSyntaxParams(this.syntax, params);
if(repText===null){ return; }
var st = editor.scrollTop;
var ss = editor.selectionStart;
var se = editor.selectionEnd;
var frontText= '';
var endText = '';
var fullText = editor.value;
if(se>ss && ss>=0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
}
else if(ss===0 && (se===0 || se == fullText.length) ){
endText = fullText;
}
else if(se==ss && ss>0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
}
if(repText.indexOf('user_text')>=0 && this.hint){
repText = repText.replace('user_text', this.hint);
}
editor.value = frontText + repText + endText;
editor.selectionStart = ss;
editor.selectionEnd = ss + repText.length;
editor.scrollTop = st;
editor.focus();
}
function wikibar_editFormatByWord(param){
var editor = param.button.editor;
var params = param.params;
clearMessage();
if(!editor){return;}
var repText = wikibar_processSyntaxParams(this.syntax, params);
if(repText===null){ return; }
var st = editor.scrollTop;
var ss = editor.selectionStart;
var se = editor.selectionEnd;
var frontText= '';
var selText = '';
var endText = '';
var fullText = editor.value;
if(se>ss && ss>=0){
frontText = fullText.substring(0, ss);
selText = fullText.substring(ss,se);
endText = fullText.substring(se, fullText.length);
}
else if(ss===0 && (se===0 || se == fullText.length) ){
endText = fullText;
}
else if(se==ss && ss>0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
if(!( fullText.charAt(ss-1).match(/\W/gi) || fullText.charAt(ss).match(/\W/gi) )){
var m = frontText.match(/\W/gi);
if(m){
ss = frontText.lastIndexOf(m[m.length-1])+1;
}
else{
ss = 0;
}
m = endText.match(/\W/gi);
if(m){
se += endText.indexOf(m[0]);
}
else{
se = fullText.length;
}
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
selText = fullText.substring(ss,se);
}
}
if(selText.length>0){
repText = repText.replace('user_text', selText);
}
if(repText.indexOf('user_text')>=0 && this.hint){
repText = repText.replace('user_text', this.hint);
}
editor.value = frontText + repText + endText;
editor.selectionStart = ss;
editor.selectionEnd = ss + repText.length;
editor.scrollTop = st;
editor.focus();
}
function wikibar_editFormatByCursor(param){
var editor = param.button.editor;
var params = param.params;
clearMessage();
if(!editor){ return; }
var repText = wikibar_processSyntaxParams(this.syntax, params);
if(repText===null){ return; }
var st = editor.scrollTop;
var ss = editor.selectionStart;
var se = editor.selectionEnd;
var frontText= '';
var endText = '';
var fullText = editor.value;
if(se>ss && ss>=0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
}
else if(ss===0 && (se===0 || se == fullText.length) ){
endText = fullText;
}
else if(se==ss && ss>0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
}
if(repText.indexOf('user_text')>=0 && this.hint){
repText = repText.replace('user_text', this.hint);
}
editor.value = frontText + repText + endText;
editor.selectionStart = ss;
editor.selectionEnd = ss + repText.length;
editor.scrollTop = st;
editor.focus();
}
function wikibar_editFormatByLine(param){
var editor = param.button.editor;
var params = param.params;
clearMessage();
if(!editor){ return; }
var repText = wikibar_processSyntaxParams(this.syntax, params);
if(repText===null){ return; }
var st = editor.scrollTop;
var ss = editor.selectionStart;
var se = editor.selectionEnd;
var frontText= '';
var selText = '';
var endText = '';
var fullText = editor.value;
if(se>ss && ss>=0){
if(this.byBlock){
frontText = fullText.substring(0, ss);
selText = fullText.substring(ss,se);
endText = fullText.substring(se, fullText.length);
}
else{
se = ss;
}
}
if(ss===0 && (se===0 || se == fullText.length) ){
var m=fullText.match(/(\n|\r)/g);
if(m){
se = fullText.indexOf(m[0]);
}else{
se = fullText.length;
}
selText = fullText.substring(0, se);
endText = fullText.substring(se, fullText.length);
}
else if(se==ss && ss>0){
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
m = frontText.match(/(\n|\r)/g);
if(m){
ss = frontText.lastIndexOf(m[m.length-1])+1;
}
else{
ss = 0;
}
m = endText.match(/(\n|\r)/g);
if(m){
se += endText.indexOf(m[0]);
}
else{
se = fullText.length;
}
frontText = fullText.substring(0, ss);
selText = fullText.substring(ss,se);
endText = fullText.substring(se, fullText.length);
}
if(selText.length>0){
repText = repText.replace('user_text', selText);
}
if(repText.indexOf('user_text')>=0 && this.hint){
repText = repText.replace('user_text', this.hint);
}
if(this.byBlock){
if( (frontText.charAt(frontText.length-1)!='\n') && ss>0 ){
repText = '\n' + repText;
}
if( (endText.charAt(0)!='\n') || se==fullText.length){
repText += '\n';
}
}
editor.value = frontText + repText + endText;
editor.selectionStart = ss;
editor.selectionEnd = ss + repText.length;
editor.scrollTop = st;
editor.focus();
}
function wikibar_editFormatByTableCell(param){
var editor = param.button.editor;
var params = param.params;
clearMessage();
if(!editor){ return; }
var repText = wikibar_processSyntaxParams(this.syntax, params);
if(repText===null){ return; }
var st = editor.scrollTop;
var ss = editor.selectionStart;
var se = editor.selectionEnd;
var frontText= '';
var selText = '';
var endText = '';
var fullText = editor.value;
if(ss===0 || ss==fullText.length){
throw 'not valid cell!';
}
se=ss;
frontText = fullText.substring(0, ss);
endText = fullText.substring(se, fullText.length);
i=frontText.lastIndexOf('\n');
j=frontText.lastIndexOf('|');
if(i>j || j<0){
throw 'not valid cell!';
}
ss = j+1;
i=endText.indexOf('\n');
j=endText.indexOf('|');
if(i<j || j<0){
throw 'not valid cell!';
}
se += j;
frontText = fullText.substring(0, ss-1);
selText = fullText.substring(ss,se);
endText = fullText.substring(se+1, fullText.length);
if(this.key.substring(0,5)=='align'){
selText = selText.trim();
if( selText=='>' || selText=='~' || selText.substring(0,8)=='bgcolor(') {return; }
}
if(selText.length>0){
repText = repText.replace('user_text', selText);
}
if(repText.indexOf('user_text')>=0 && this.hint){
repText = repText.replace('user_text', this.hint);
}
editor.value = frontText + repText + endText;
editor.selectionStart = ss;
editor.selectionEnd = ss + repText.length - 2;
editor.scrollTop = st;
editor.focus();
}
function wikibar_editSelectAll(param){
var editor = param.button.editor;
editor.selectionStart = 0;
editor.selectionEnd = editor.value.length;
editor.scrollTop = 0;
editor.focus();
}
function wikibar_doPreview(param){
var theButton = param.button;
var editor = param.button.editor;
var wikibar = theButton.parentNode;
if(!wikibar) { return; }
title = theButton.tiddlerTitle;
var editorWrapper = wikibar_resolveTiddlerEditorWrapper(editor);
var tiddlerWrapper = editorWrapper.parentNode;
var previewer = document.getElementById('previewer'+title);
if(previewer){
previewer.parentNode.removeChild(previewer);
editorWrapper.style.display = 'block';
visible=true;
}else{
previewer = document.createElement('div');
previewer.id = 'previewer'+title;
previewer.className = 'viewer previewer';
previewer.style.height = (editor.offsetHeight) + 'px';
wikify(editor.value, previewer);
tiddlerWrapper.insertBefore(previewer, editorWrapper);
editorWrapper.style.display = 'none';
visible=false;
}
var pv=null;
for(var i=0; i<wikibar.childNodes.length; i++){
try{
var btn = wikibar.childNodes[i];
if(btn.toolItem.key == 'preview'){ pv=btn; }
if(btn.toolItem.key != 'preview'){
btn.style.display = visible ? '': 'none';
}
}catch(ex){}
}
if(!pv) { return; }
if(visible){
pv.innerHTML = '<font face=\"verdana\">∞</font>';
pv.title = 'preview current tiddler';
}
else{
pv.innerHTML = '<font face=\"verdana\">←</font>';
pv.title = 'back to editor';
}
}
function wikibar_doListAddons(param){
clearMessage();
var title = param.button.tiddlerTitle;
var wikibarButton = document.getElementById('wikibarButton'+title);
var ok=0, fail=0;
for(var i=0; i<wikibarButton.addons.length; i++){
var addon=wikibarButton.addons[i];
if(addon.ok){
displayMessage('[ o ] '+addon.name);
ok++;
}
else{
displayMessage('[ x ] '+addon.name + ': ' + addon.error);
fail++;
}
}
displayMessage('---------------------------------');
displayMessage(ok + ' ok ; ' + fail + ' failed');
}
function wikibar_getColorCode(param){
var cbOnPickColor = function(colorCode, param){
param.params = colorCode;
param.button.toolItem.doMore(param);
};
wikibarColorTool.openColorPicker(param.button, cbOnPickColor, param);
}
function wikibar_getLinkUrl(param){
var url= prompt('Please enter the link target', (this.param? this.param : ''));
if (url && url.trim().length>0){
param.params = url;
this.doMore(param);
}
}
function wikibar_getTableRowCol(param){
var rc= prompt('Please enter (rows x cols) of the table', '2 x 3');
if (!rc || (rc.trim()).length<=0){ return; }
var arr = rc.toUpperCase().split('X');
if(arr.length != 2) { return; }
for(var i=0; i<arr.length; i++){
if(isNaN(arr[i].trim())) { return; }
}
var rows = parseInt(arr[0].trim(), 10);
var cols = parseInt(arr[1].trim(), 10);
var txtTable='';
for(var r=0; r<rows; r++){
for(var c=0; c<=cols; c++){
if(c===0){
txtTable += '|';
}else{
txtTable += ' |';
}
}
txtTable += '\n';
}
if(txtTable.trim().length>0){
param.params = txtTable.trim();
this.doMore(param);
}
}
function wikibar_getMacroParam(param){
var p = prompt('Please enter the parameters of macro \"' + this.key + '\":' +
'\nSyntax: ' + this.syntax +
'\n\nNote: '+
'\n%1,%2,... - parameter needed'+
'\n[%1] - optional parameter'+
'\n%N - more than one parameter(1~n)'+
'\n[%N] - any number of parameters(0~n)'+
'\n\nPS:'+
'\n1. Parameters should be seperated with space character'+
'\n2. Use \" to wrap the parameter that includes space character, ex: \"hello world\"'+
'\n3. Input the word(null) for the optional parameter ignored',
(this.param? this.param : '') );
if(!p) { return; }
p=p.readMacroParams();
for(var i=0; i<p.length; i++){
var s=p[i].trim();
if(s.indexOf(' ')>0){ p[i]="'"+s+"'"; }
if(s.toLowerCase()=='null'){ p[i]=null; }
}
param.params = p;
this.doMore(param);
}
function wikibar_getMorePalette(unused){
clearMessage();
displayMessage('Get more color palettes(*.gpl) from ColorZilla Palettes site', 'http:\/\/www.iosart.com/firefox/colorzilla/palettes.html');
displayMessage('Save it as a new tiddler with \"ColorPalettes\" tag');
}
function wikibar_createWikibar(title){
var theWikibar = document.getElementById('wikibar' + title);
if(theWikibar){
if(theWikibar.hasChildNodes()){
theWikibar.style.display = (theWikibar.style.display=='block'? 'none':'block');
return;
}
}
var tiddlerWrapper = document.getElementById('tiddler'+title);
var theTextarea = wikibar_resolveTiddlerEditor(tiddlerWrapper);
if(!theTextarea){
clearMessage();
displayMessage('WikiBar only works in tiddler edit mode now');
return;
}else{
if(!theTextarea.id){ theTextarea.id = 'editor'+title; }
if(!theTextarea.parentNode.id){ theTextarea.parentNode.id='editorWrapper'+title; }
}
if(theWikibar){
theWikibar = document.getElementById('wikibar'+title);
}else{
var editorWrapper = wikibar_resolveTiddlerEditorWrapper(theTextarea);
theWikibar = createTiddlyElement(tiddlerWrapper, 'div', 'wikibar'+title, 'toolbar');
addClass(theWikibar, 'wikibar');
var previewer = document.getElementById('previewer'+title);
if(previewer){
tiddlerWrapper.insertBefore(theWikibar, previewer);
}else{
tiddlerWrapper.insertBefore(theWikibar, editorWrapper);
}
}
wikibar_createMenu(theWikibar,wikibarStore,title,theTextarea);
if(config.options['chkWikibarSetEditorHeight'] && config.options['txtWikibarEditorRows']){
theTextarea.rows = config.options['txtWikibarEditorRows'];
}
setStylesheet(
'.wikibar{text-align:left;visibility:visible;margin:2px;padding:1px;}.previewer{overflow:auto;display:block;border:1px solid;}#colorPicker{position:absolute;display:none;z-index:10;margin:0px;padding:0px;}#colorPicker table{margin:0px;padding:0px;border:2px solid #000;border-spacing:0px;border-collapse:collapse;}#colorPicker td{margin:0px;padding:0px;border:1px solid;font-size:11px;text-align:center;cursor:auto;}#colorPicker .header{background-color:#fff;}#colorPicker .button{background-color:#fff;cursor:pointer;cursor:hand;}#colorPicker .button:hover{padding-top:3px;padding-bottom:3px;color:#fff;background-color:#136;}#colorPicker .cell{padding:4px;font-size:7px;cursor:crosshair;}#colorPicker .cell:hover{padding:10px;}.wikibarPopup{position:absolute;z-index:10;border:1px solid #014;color:#014;background-color:#cef;}.wikibarPopup table{margin:0;padding:0;border:0;border-spacing:0;border-collapse:collapse;}.wikibarPopup .button:hover{color:#eee;background-color:#014;}.wikibarPopup .disabled{color:#888;}.wikibarPopup .disabled:hover{color:#888;background-color:#cef;}.wikibarPopup tr .seperator hr{margin:0;padding:0;background-color:#cef;width:100%;border:0;border-top:1px dashed #014;}.wikibarPopup tr .icon{font-family:verdana;font-weight:bolder;}.wikibarPopup tr .marker{font-family:verdana;font-weight:bolder;}.wikibarPopup td{font-size:0.9em;padding:2px;}.wikibarPopup input{border:0;border-bottom:1px solid #014;margin:0;padding:0;font-family:arial;font-size:100%;background-color:#fff;}',
'WikiBarStyleSheet');
}
function wikibar_createMenu(place,toolset,title,editor){
if(!wikibar_isValidMenuItem(toolset)){return;}
if(!(toolset.TYPE=='MAIN_MENU' || toolset.TYPE=='MENU')){ return; }
for(var key in toolset){
if(key.substring(0,9)=='SEPERATOR'){
wikibar_createMenuSeperator(place);
continue;
}
if(key.substring(0,8)=='DYNAITEM'){
var dynaTools = toolset[key](title,editor);
if(dynaTools.TYPE && dynaTools.TYPE=='MENU'){
wikibar_createMenuItem(place,dynaTools,null,editor,title);
}else{
dynaTools.TYPE = 'MENU';
wikibar_createMenu(place, dynaTools, title, editor);
}
continue;
}
if((toolset[key].TYPE!='MENU' && toolset[key].TYPE!='MAIN_MENU') && !toolset[key].HANDLER){continue;}
wikibar_createMenuItem(place,toolset,key,editor,title);
}
}
function wikibar_createMenuItem(place,toolset,key,editor,title){
if(!key){
var tool = toolset;
}else{
tool = toolset[key];
tool.key = key;
}
if(!wikibar_isValidMenuItem(tool)){return;}
var toolIsOnMainMenu = (toolset.TYPE=='MAIN_MENU');
var toolIsMenu = (tool.TYPE=='MENU');
var theButton;
if(toolIsOnMainMenu){
theButton = createTiddlyButton(
place,
'',
(tool.TOOLTIP? tool.TOOLTIP : ''),
(toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem),
'button');
theButton.innerHTML = (tool.CAPTION? tool.CAPTION : key);
theButton.isOnMainMenu = true;
addClass(theButton, (toolIsMenu? 'menu' : 'item'));
place.appendChild( document.createTextNode('\n') );
if(!toolIsMenu){
if(config.options['chkWikibarPopmenuOnMouseOver']){
theButton.onmouseover = function(e){ wikibarPopup.remove(); };
}
}
}else{
theButton=createTiddlyElement(place, 'tr',key,'button');
theButton.title = (tool.TOOLTIP? tool.TOOLTIP : '');
theButton.onclick = (toolIsMenu? wikibar_onClickMenuItem : wikibar_onClickItem);
var tdL = createTiddlyElement(theButton, 'td','','marker');
var td = createTiddlyElement(theButton, 'td');
var tdR = createTiddlyElement(theButton, 'td','','marker');
td.innerHTML = (tool.CAPTION? tool.CAPTION : key);
if(toolIsMenu){
tdR.innerHTML=' ›';
}
if(tool.SELECTED){
tdL.innerHTML = '√ ';
addClass(theButton, 'selected');
}
if(tool.DISABLED){
addClass(theButton, 'disabled');
}
}
theButton.tiddlerTitle = title;
theButton.toolItem = tool;
theButton.editor = editor;
theButton.tabIndex = 999;
if(toolIsMenu){
if(config.options['chkWikibarPopmenuOnMouseOver']){
theButton.onmouseover = wikibar_onClickMenuItem;
}
}
}
function wikibar_createMenuSeperator(place){
if(place.id.substring(0,7)=='wikibar') { return; }
var onclickSeperator=function(e){
if(!e){ e = window.event; }
e.cancelBubble = true;
if (e.stopPropagation){ e.stopPropagation(); }
return(false);
};
var theButton=createTiddlyElement(place,'tr','','seperator');
var td = createTiddlyElement(theButton, 'td','','seperator');
td.colSpan=3;
theButton.onclick=onclickSeperator;
td.innerHTML = '<hr>';
}
function wikibar_genWikibarAbout(){
var toolset={};
toolset.version = {
CAPTION: '<center>WikiBar ' +
config.macros.wikibar.major + '.' +
config.macros.wikibar.minor + '.' +
config.macros.wikibar.revision +
(config.macros.wikibar.beta? ' beta '+config.macros.wikibar.beta : '') +
'</center>',
HANDLER: function(){}
};
toolset.SEPERATOR = {};
toolset.author = {
CAPTION: '<center>Arphen Lin<br>arphenlin@gmail.com</center>',
TOOLTIP: 'send mail to the author',
HANDLER: function(){ window.open('mailto:arphenlin@gmail.com'); }
};
toolset.website = {
CAPTION: '<center>aiddlywiki.sourceforge.net</center>',
TOOLTIP: 'go to the web site of WikiBar',
HANDLER: function(){ window.open('http:\/\/aiddlywiki.sourceforge.net/'); }
};
return toolset;
}
function wikibar_genWikibarOptions(title, editor){
var toolset={};
toolset.popOnMouseOver = {
CAPTION:'popup menu on mouse over',
SELECTED: config.options['chkWikibarPopmenuOnMouseOver'],
HANDLER: function(param){
config.options['chkWikibarPopmenuOnMouseOver'] = !config.options['chkWikibarPopmenuOnMouseOver'];
saveOptionCookie('chkWikibarPopmenuOnMouseOver');
var title = param.button.tiddlerTitle;
var wikibar = document.getElementById('wikibar'+title);
if(wikibar){ wikibar.parentNode.removeChild(wikibar); }
wikibar_createWikibar(title);
}
};
toolset.setEditorSize = {
CAPTION:'set editor height: <input id=\"txtWikibarEditorRows\" type=text size=1 MAXLENGTH=3 value=\"' +
(config.options['txtWikibarEditorRows']? config.options['txtWikibarEditorRows']:editor.rows) + '\"> ok',
HANDLER: function(param){
var input = document.getElementById('txtWikibarEditorRows');
if(input){
var rows = parseInt(input.value, 10);
if(!isNaN(rows)){
var editor = param.button.editor;
editor.rows = rows;
}else{
rows=config.maxEditRows;
}
config.options['txtWikibarEditorRows'] = rows;
saveOptionCookie('txtWikibarEditorRows');
config.maxEditRows = rows;
}
}
};
toolset.setEditorSizeOnLoadingWikibar = {
CAPTION:'set editor height on loading wikibar',
SELECTED: config.options['chkWikibarSetEditorHeight'],
HANDLER: function(param){
config.options['chkWikibarSetEditorHeight'] = !config.options['chkWikibarSetEditorHeight'];
saveOptionCookie('chkWikibarSetEditorHeight');
if(config.options['chkWikibarSetEditorHeight']){
var rows = config.options['txtWikibarEditorRows'];
if(!isNaN(rows)){ rows = 15; }
var editor = param.button.editor;
editor.rows = rows;
config.options['txtWikibarEditorRows'] = rows;
saveOptionCookie('txtWikibarEditorRows');
}
}
};
toolset.SEPERATOR = {};
toolset.update = {
CAPTION: 'check for updates',
DISABLED: true,
HANDLER: function(){}
};
return toolset;
}
function wikibar_genPaletteSelector(){
try{
var cpTiddlers = store.getTaggedTiddlers('ColorPalettes');
if(!cpTiddlers) { return; }
var palettes=[];
palettes.push(wikibarColorTool.defaultPaletteName);
for(var i=0; i<cpTiddlers.length; i++){
palettes.push(cpTiddlers[i].title.trim());
}
var toolset={};
for(i=0; i<palettes.length; i++){
toolset[palettes[i]] = {
TOOLTIP: palettes[i],
SELECTED: (palettes[i]==wikibarColorTool.paletteName),
HANDLER: wikibar_doSelectPalette
};
}
return toolset;
}catch(ex){ return null; }
}
function wikibar_onClickItem(e){
if(!e){ e = window.event; }
var theTarget = resolveTarget(e);
if(theTarget.tagName=='INPUT'){
e.cancelBubble = true;
if (e.stopPropagation){ e.stopPropagation(); }
return;
}
var theButton = wikibar_resolveTargetButton(theTarget);
if(!theButton){ return(false); }
var o = theButton.toolItem;
if(!o) { return; }
var param = {
event: e,
button: theButton
};
if(o.HANDLER){ o.HANDLER(param); }
if(o.DISABLED){
e.cancelBubble = true;
if (e.stopPropagation){ e.stopPropagation(); }
}
return(false);
}
function wikibar_onClickMenuItem(e){
if(!e){ e = window.event; }
var theButton = wikibar_resolveTargetButton(resolveTarget(e));
if(!theButton){ return(false); }
e.cancelBubble = true;
if (e.stopPropagation){ e.stopPropagation(); }
var title = theButton.tiddlerTitle;
var editor = theButton.editor;
var tool = theButton.toolItem;
if(!tool) { return; }
var popup = wikibarPopup.create(this);
if(popup){
wikibar_createMenu(popup,tool,title,editor);
if(!popup.hasChildNodes()){
wikibarPopup.remove();
}else{
wikibarPopup.show(popup, false);
}
}
return(false);
}
var wikibarColorTool = {
defaultPaletteName : 'default',
defaultColumns : 16,
defaultPalette : [
'#FFF','#DDD','#CCC','#BBB','#AAA','#999','#666','#333','#111','#000','#FC0','#F90','#F60','#F30','#C30','#C03',
'#9C0','#9D0','#9E0','#E90','#D90','#C90','#FC3','#FC6','#F96','#F63','#600','#900','#C00','#F00','#F36','#F03',
'#CF0','#CF3','#330','#660','#990','#CC0','#FF0','#C93','#C63','#300','#933','#C33','#F33','#C36','#F69','#F06',
'#9F0','#CF6','#9C3','#663','#993','#CC3','#FF3','#960','#930','#633','#C66','#F66','#903','#C39','#F6C','#F09',
'#6F0','#9F6','#6C3','#690','#996','#CC6','#FF6','#963','#630','#966','#F99','#F39','#C06','#906','#F3C','#F0C',
'#3F0','#6F3','#390','#6C0','#9F3','#CC9','#FF9','#C96','#C60','#C99','#F9C','#C69','#936','#603','#C09','#303',
'#0C0','#3C0','#360','#693','#9C6','#CF9','#FFC','#FC9','#F93','#FCC','#C9C','#969','#939','#909','#636','#606',
'#060','#3C3','#6C6','#0F0','#3F3','#6F6','#9F9','#CFC','#9CF','#FCF','#F9F','#F6F','#F3F','#F0F','#C6C','#C3C',
'#030','#363','#090','#393','#696','#9C9','#CFF','#39F','#69C','#CCF','#C9F','#96C','#639','#306','#90C','#C0C',
'#0F3','#0C3','#063','#396','#6C9','#9FC','#9CC','#06C','#369','#99F','#99C','#93F','#60C','#609','#C3F','#C0F',
'#0F6','#3F6','#093','#0C6','#3F9','#9FF','#699','#036','#039','#66F','#66C','#669','#309','#93C','#C6F','#90F',
'#0F9','#6F9','#3C6','#096','#6FF','#6CC','#366','#069','#36C','#33F','#33C','#339','#336','#63C','#96F','#60F',
'#0FC','#6FC','#3C9','#3FF','#3CC','#399','#033','#39C','#69F','#00F','#00C','#009','#006','#003','#63F','#30F',
'#0C9','#3FC','#0FF','#0CC','#099','#066','#3CF','#6CF','#09C','#36F','#0CF','#09F','#06F','#03F','#03C','#30C'
],
colorPicker : null,
pickColorHandler: null,
userData: null
};
wikibarColorTool.paletteName = wikibarColorTool.defaultPaletteName;
wikibarColorTool.columns = wikibarColorTool.defaultColumns;
wikibarColorTool.palette = wikibarColorTool.defaultPalette;
wikibarColorTool.onPickColor = function(e){
if (!e){ e = window.event; }
var theCell = resolveTarget(e);
if(!theCell){ return(false); }
color = theCell.bgColor.toLowerCase();
if(!color) { return; }
wikibarColorTool.displayColorPicker(false);
if(wikibarColorTool.pickColorHandler){
wikibarColorTool.pickColorHandler(color, wikibarColorTool.userData);
}
return(false);
};
wikibarColorTool.onMouseOver = function(e){
if (!e){ e = window.event; }
var theButton = resolveTarget(e);
if(!theButton){ return(false); }
if(!wikibarColorTool) { return; }
color = theButton.bgColor.toUpperCase();
if(!color) { return; }
td=document.getElementById('colorPickerInfo');
if(!td) { return; }
td.bgColor = color;
td.innerHTML = '<span style=\"color:#000;\">'+color+'</span> ' +
'<span style=\"color:#fff;\">'+color+'</span>';
e.cancelBubble = true;
if (e.stopPropagation){ e.stopPropagation(); }
return(false);
};
wikibarColorTool.openColorPicker = function(theTarget, pickColorHandler, userData){
wikibarColorTool.skipClickDocumentEvent = true;
wikibarColorTool.pickColorHandler = pickColorHandler;
wikibarColorTool.userData = userData;
wikibarColorTool.moveColorPicker(theTarget);
};
wikibarColorTool.convert3to6HexColor = function(c){
c=c.trim();
var rx=/^\#(\d|[a-f])(\d|[a-f])(\d|[a-f])$/gi;
return (rx.test(c)? c.replace(rx, '#$1$1$2$2$3$3') : c);
};
wikibarColorTool.numToHexColor = function (n){
if(typeof(n)=='number' && (n>=0 && n<=255)) {
s = n.toString(16).toLowerCase();
return ((s.length==1)? '0'+s : s);
}else{
return null;
}
};
wikibarColorTool.renderColorPalette = function(){
if(wikibarColorTool.paletteName==wikibarColorTool.defaultPaletteName){
wikibarColorTool.palette=wikibarColorTool.defaultPalette;
wikibarColorTool.columns=wikibarColorTool.defaultColumns;
return;
}
tiddlerText = (store.getTiddlerText(wikibarColorTool.paletteName, '')).trim();
if(tiddlerText.length<=0) { return; }
var cpContents = tiddlerText.split('\n');
var colors=[];
columns = wikibarColorTool.defaultColumns;
var tmpArray=null;
errCount=0;
for(var i=0; i<cpContents.length; i++){
cpLine=cpContents[i].trim();
if( (!cpLine) || (cpLine.length<=0) || (cpLine.charAt(0) == '#') ){ continue; }
if(cpLine.substring(0,8).toLowerCase()=='columns:'){
tmpArray = cpLine.split(':');
try{
columns = parseInt(tmpArray[1],10);
}catch(ex){
columns = wikibarColorTool.defaultColumns;
}
}else{
tmpArray = cpLine.replace('\t', ' ').split(/[ ]{1,}/);
try{
color='';
for(var j=0; j<3; j++){
c=parseInt(tmpArray[j].trim(), 10);
if(isNaN(c)){
break;
}else{
c=wikibarColorTool.numToHexColor(c);
if(!c) {break;}
color+=c;
}
}
if(color.length==6){
colors.push('#'+color);
} else {
throw 'error';
}
}catch(ex){
}
}
}
if(colors.length>0){
wikibarColorTool.palette = colors;
wikibarColorTool.columns = columns;
}else{
throw 'renderColorPalette(): No color defined in the palette.';
}
};
wikibarColorTool.displayColorPicker = function(visible){
if(wikibarColorTool.colorPicker){
wikibarColorTool.colorPicker.style.display = (visible? 'block' : 'none');
}
};
wikibarColorTool.moveColorPicker = function(theTarget){
if(!wikibarColorTool.colorPicker){
wikibarColorTool.createColorPicker();
}
var cp = wikibarColorTool.colorPicker;
var rootLeft = findPosX(theTarget);
var rootTop = findPosY(theTarget);
var popupLeft = rootLeft;
var popupTop = rootTop;
var popupWidth = cp.offsetWidth;
var winWidth = findWindowWidth();
if(popupLeft + popupWidth > winWidth){
popupLeft = winWidth - popupWidth;
}
cp.style.left = popupLeft + 'px';
cp.style.top = popupTop + 'px';
wikibarColorTool.displayColorPicker(true);
};
wikibarColorTool.createColorPicker = function(unused, palette){
if(palette){ wikibarColorTool.paletteName=palette; }
wikibarColorTool.renderColorPalette();
wikibarColorTool.colorPicker = document.createElement('div');
wikibarColorTool.colorPicker.id = 'colorPicker';
document.body.appendChild(wikibarColorTool.colorPicker);
var theTable = document.createElement('table');
wikibarColorTool.colorPicker.appendChild(theTable);
var theTR = document.createElement('tr');
theTable.appendChild(theTR);
var theTD = document.createElement('td');
theTD.className = 'header';
theTD.colSpan = wikibarColorTool.columns;
theTD.innerHTML = wikibarColorTool.paletteName;
theTR.appendChild(theTD);
for(var i=0; i<wikibarColorTool.palette.length; i++){
if((i%wikibarColorTool.columns)===0){
theTR = document.createElement('tr');
theTable.appendChild(theTR);
}
theTD = document.createElement('td');
theTD.className = 'cell';
theTD.bgColor = wikibarColorTool.convert3to6HexColor(wikibarColorTool.palette[i]);
theTD.onclick = wikibarColorTool.onPickColor;
theTD.onmouseover = wikibarColorTool.onMouseOver;
theTR.appendChild(theTD);
}
rest = wikibarColorTool.palette.length % wikibarColorTool.columns;
if(rest>0){
theTD = document.createElement('td');
theTD.colSpan = wikibarColorTool.columns-rest;
theTD.bgColor = '#000000';
theTR.appendChild(theTD);
}
theTR = document.createElement('tr');
theTable.appendChild(theTR);
theTD = document.createElement('td');
theTD.colSpan = wikibarColorTool.columns;
theTD.id = 'colorPickerInfo';
theTR.appendChild(theTD);
};
wikibarColorTool.onDocumentClick = function(e){
if (!e){ e = window.event; }
if(wikibarColorTool.skipClickDocumentEvent) {
wikibarColorTool.skipClickDocumentEvent = false;
return true;
}
if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
wikibarColorTool.displayColorPicker(false);
}
return true;
};
function wikibar_doSelectPalette(param){
clearMessage();
var theButton = param.button;
if(!theButton.toolItem.key) { return; }
var palette = theButton.toolItem.key;
var oldPaletteName = wikibarColorTool.paletteName;
if(oldPaletteName != palette){
try{
wikibarColorTool.createColorPicker(theButton, palette);
displayMessage('Palette \"'+palette+'\" ('+ wikibarColorTool.palette.length +' colors) is selected');
}catch(ex){
errMsg = ex;
if(errMsg.substring(0,18)=='renderColorPalette'){
displayMessage('Invalid palette \"' + palette + '\", please check it out!');
wikibarColorTool.createColorPicker(theButton, oldPaletteName);
}
}
}
}
var wikibarPopup = {
skipClickDocumentEvent: false,
stack: []
};
wikibarPopup.resolveRootPopup = function(o){
if(o.isOnMainMenu){ return null; }
if(o.className.substring(0,12)=='wikibarPopup'){ return o;}
return wikibarPopup.resolveRootPopup(o.parentNode);
};
wikibarPopup.create = function(root){
for(var i=0; i<wikibarPopup.stack.length; i++){
var p=wikibarPopup.stack[i];
if(p.root==root){
wikibarPopup.removeFrom(i+1);
return null;
}
}
var rootPopup = wikibarPopup.resolveRootPopup(root);
if(!rootPopup){
wikibarPopup.remove();
}else{
wikibarPopup.removeFromRootPopup(rootPopup);
}
var popup = createTiddlyElement(document.body,'div','wikibarPopup'+root.toolItem.key,'wikibarPopup');
var pop = createTiddlyElement(popup,'table','','');
wikibarPopup.stack.push({rootPopup: rootPopup, root: root, popup: popup});
return pop;
};
wikibarPopup.show = function(unused,slowly){
var curr = wikibarPopup.stack[wikibarPopup.stack.length-1];
var overlayWidth = 1;
var rootLeft, rootTop, rootWidth, rootHeight, popupLeft, popupTop, popupWidth;
if(curr.rootPopup){
rootLeft = findPosX(curr.rootPopup);
rootTop = findPosY(curr.root);
rootWidth = curr.rootPopup.offsetWidth;
popupLeft = rootLeft + rootWidth - overlayWidth;
popupTop = rootTop;
}else{
rootLeft = findPosX(curr.root);
rootTop = findPosY(curr.root);
rootHeight = curr.root.offsetHeight;
popupLeft = rootLeft;
popupTop = rootTop + rootHeight;
}
var winWidth = findWindowWidth();
popupWidth = curr.popup.offsetWidth;
if(popupLeft + popupWidth > winWidth){
popupLeft = rootLeft - popupWidth + overlayWidth;
}
curr.popup.style.left = popupLeft + 'px';
curr.popup.style.top = popupTop + 'px';
curr.popup.style.display = 'block';
addClass(curr.root, 'highlight');
if(config.options.chkAnimate){
anim.startAnimating(new Scroller(curr.popup,slowly));
}else{
window.scrollTo(0,ensureVisible(curr.popup));
}
};
wikibarPopup.remove = function(){
if(wikibarPopup.stack.length > 0){
wikibarPopup.removeFrom(0);
}
};
wikibarPopup.removeFrom = function(from){
for(var t=wikibarPopup.stack.length-1; t>=from; t--){
var p = wikibarPopup.stack[t];
removeClass(p.root,'highlight');
p.popup.parentNode.removeChild(p.popup);
}
wikibarPopup.stack = wikibarPopup.stack.slice(0,from);
};
wikibarPopup.removeFromRootPopup = function(from){
for(var t=0; t<wikibarPopup.stack.length; t++){
var p = wikibarPopup.stack[t];
if(p.rootPopup==from){
wikibarPopup.removeFrom(t);
break;
}
}
};
wikibarPopup.onDocumentClick = function(e){
if (!e){ e = window.event; }
if(wikibarPopup.skipClickDocumentEvent){
wikibarPopup.skipClickDocumentEvent=false;
return true;
}
if((!e.eventPhase) || e.eventPhase == Event.BUBBLING_PHASE || e.eventPhase == Event.AT_TARGET){
wikibarPopup.remove();
}
return true;
};
var wikibarStore = {
TYPE: 'MAIN_MENU',
help:{
TYPE:'MENU',
CAPTION: '<font face=\"verdana\">?</font>',
TOOLTIP: 'about WikiBar',
options:{
TYPE:'MENU',
DYNAITEM: wikibar_genWikibarOptions
},
about:{
TYPE:'MENU',
DYNAITEM: wikibar_genWikibarAbout
}
},
preview:{
TOOLTIP: 'preview this tiddler',
CAPTION: '<font face=\"verdana\">∞</font>',
HANDLER: wikibar_doPreview
},
line:{
TOOLTIP: 'horizontal line',
CAPTION: '<font face=\"verdana\">—</font>',
syntax: '\n----\n',
HANDLER: wikibar_editFormatByCursor
},
crlf:{
TOOLTIP: 'new line',
CAPTION: '<font face=\"verdana\">¶</font>',
syntax: '\n',
HANDLER: wikibar_editFormatByCursor
},
selectAll:{
TOOLTIP: 'select all',
CAPTION: '<font face=\"verdana\">§</font>',
HANDLER: wikibar_editSelectAll
},
deleteSelected:{
TOOLTIP: 'delete selected',
CAPTION: '<font face=\"verdana\">×</font>',
syntax: '',
HANDLER: wikibar_editFormat
},
textFormat:{
TYPE: 'MENU',
CAPTION: 'text',
TOOLTIP: 'text formatters',
ignore:{
TOOLTIP: 'ignore wiki word',
CAPTION: 'ignore wikiWord',
syntax: '~user_text',
hint: 'wiki_word',
HANDLER: wikibar_editFormatByWord
},
bolder:{
TOOLTIP: 'bolder text',
CAPTION: '<strong>bolder</strong>',
syntax: "''user_text''",
hint: 'bold_text',
HANDLER: wikibar_editFormatByWord
},
italic:{
TOOLTIP: 'italic text',
CAPTION: '<em>italic</em>',
syntax: '\/\/user_text\/\/',
hint: 'italic_text',
HANDLER: wikibar_editFormatByWord
},
underline:{
TOOLTIP: 'underline text',
CAPTION: '<u>underline</u>',
syntax: '__user_text__',
hint: 'underline_text',
HANDLER: wikibar_editFormatByWord
},
strikethrough:{
TOOLTIP: 'strikethrough text',
CAPTION: '<strike>strikethrough</strike>',
syntax: '==user_text==',
hint: 'strikethrough_text',
HANDLER: wikibar_editFormatByWord
},
superscript:{
TOOLTIP: 'superscript text',
CAPTION: 'X<sup>superscript</sup>',
syntax: '^^user_text^^',
hint: 'superscript_text',
HANDLER: wikibar_editFormatByWord
},
subscript:{
TOOLTIP: 'subscript text',
CAPTION: 'X<sub>subscript</sub>',
syntax: '~~user_text~~',
hint: 'subscript_text',
HANDLER: wikibar_editFormatByWord
},
comment:{
TOOLTIP: 'comment text',
CAPTION: 'comment text',
syntax: '/%user_text%/',
hint: 'comment_text',
HANDLER: wikibar_editFormatByWord
},
monospaced:{
TOOLTIP: 'monospaced text',
CAPTION: '<code>monospaced</code>',
syntax: '{{{user_text}}}',
hint: 'monospaced_text',
HANDLER: wikibar_editFormatByWord
}
},
paragraph:{
TYPE: 'MENU',
TOOLTIP: 'paragarph formatters',
list:{
TYPE: 'MENU',
TOOLTIP: 'list tools',
bullet:{
TOOLTIP: 'bullet point',
syntax: '*user_text',
hint: 'bullet_text',
HANDLER: wikibar_editFormatByLine
},
numbered:{
TOOLTIP: 'numbered list',
syntax: '#user_text',
hint: 'numbered_text',
HANDLER: wikibar_editFormatByLine
}
},
heading:{
TYPE: 'MENU',
heading1:{
CAPTION:'<h1>Heading 1</h1>',
TOOLTIP: 'Heading 1',
syntax: '!user_text',
hint: 'heading_1',
HANDLER: wikibar_editFormatByLine
},
heading2:{
CAPTION:'<h2>Heading 2<h2>',
TOOLTIP: 'Heading 2',
syntax: '!!user_text',
hint: 'heading_2',
HANDLER: wikibar_editFormatByLine
},
heading3:{
CAPTION:'<h3>Heading 3</h3>',
TOOLTIP: 'Heading 3',
syntax: '!!!user_text',
hint: 'heading_3',
HANDLER: wikibar_editFormatByLine
},
heading4:{
CAPTION:'<h4>Heading 4</h4>',
TOOLTIP: 'Heading 4',
syntax: '!!!!user_text',
hint: 'heading_4',
HANDLER: wikibar_editFormatByLine
},
heading5:{
CAPTION:'<h5>Heading 5</h5>',
TOOLTIP: 'Heading 5',
syntax: '!!!!!user_text',
hint: 'heading_5',
HANDLER: wikibar_editFormatByLine
}
},
comment:{
TYPE: 'MENU',
commentByLine:{
CAPTION:'comment by line',
TOOLTIP: 'line comment',
syntax: '/%user_text%/',
hint: 'comment_text',
HANDLER: wikibar_editFormatByLine
},
commentByBlock:{
CAPTION:'comment by block',
TOOLTIP: 'block comment',
syntax: '/%\nuser_text\n%/',
hint: 'comment_text',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
},
monospaced:{
TYPE: 'MENU',
monosByLine:{
CAPTION: 'monospaced by line',
TOOLTIP: 'line monospaced',
syntax: '{{{\nuser_text\n}}}',
hint: 'monospaced_text',
HANDLER: wikibar_editFormatByLine
},
monosByBlock:{
CAPTION: 'monospaced by block',
TOOLTIP: 'block monospaced',
syntax: '{{{\nuser_text\n}}}',
hint: 'monospaced_text',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
},
quote:{
TYPE: 'MENU',
quoteByLine:{
CAPTION: 'quote by line',
TOOLTIP: 'line quote',
syntax: '>user_text',
hint: 'quote_text',
HANDLER: wikibar_editFormatByLine
},
quoteByBlcok:{
CAPTION: 'quote by block',
TOOLTIP: 'block quote',
syntax: '<<<\nuser_text\n<<<',
hint: 'quote_text',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
},
plugin:{
TYPE: 'MENU',
code:{
CAPTION: 'code area',
TOOLTIP: 'block monospaced for plugin',
syntax: '\n\/\/{{{\nuser_text\n\/\/}}}\n',
hint: 'monospaced_plugin_code',
byBlock: true,
HANDLER: wikibar_editFormatByLine
},
commentByLine:{
CAPTION: 'comment by line',
TOOLTIP: 'line comment',
syntax: '\/\/user_text',
hint: 'plugin_comment',
HANDLER: wikibar_editFormatByLine
},
commentByBlock:{
CAPTION: 'comment by block',
TOOLTIP: 'block comment',
syntax: '\/\***\nuser_text\n***\/',
hint: 'plugin_comment',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
},
css:{
TYPE: 'MENU',
code:{
CAPTION: 'code area',
TOOLTIP: 'block monospaced for css',
syntax: '\n\nuser_text\n\n',
hint: 'monospaced_css_code',
byBlock: true,
HANDLER: wikibar_editFormatByLine
},
commentByLine:{
CAPTION: 'comment by line',
TOOLTIP: 'line comment',
syntax: '',
hint: 'css_comment',
HANDLER: wikibar_editFormatByLine
},
commentByBlock:{
CAPTION: 'comment by block',
TOOLTIP: 'block comment',
syntax: '',
hint: 'css_comment',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
}
},
color:{
TYPE: 'MENU',
TOOLTIP: 'color tools',
highlight:{
CAPTION:'highlight text',
TOOLTIP: 'highlight text',
syntax: '@@user_text@@',
hint: 'highlight_text',
HANDLER: wikibar_editFormatByWord
},
color:{
CAPTION:'text color',
TOOLTIP: 'text color',
hint: 'your_text',
syntax: '@@color(%1):user_text@@',
HANDLER: wikibar_getColorCode,
doMore: wikibar_editFormatByWord
},
bgcolor:{
CAPTION:'background color',
TOOLTIP: 'background color',
hint: 'your_text',
syntax: '@@bgcolor(%1):user_text@@',
HANDLER: wikibar_getColorCode,
doMore: wikibar_editFormatByWord
},
colorcode:{
CAPTION:'color code',
TOOLTIP: 'insert color code',
syntax: '%1',
HANDLER: wikibar_getColorCode,
doMore: wikibar_editFormatByCursor
},
'color palette':{
TYPE:'MENU',
DYNAITEM: wikibar_genPaletteSelector,
SEPERATOR:{},
morePalette:{
CAPTION:'more palettes',
TOOLTIP:'get more palettes',
HANDLER: wikibar_getMorePalette
}
}
},
link:{
TYPE: 'MENU',
TOOLTIP: 'insert link',
wiki:{
CAPTION:'wiki link',
TOOLTIP: 'wiki link',
syntax: '[[user_text]]',
hint: 'wiki_word',
HANDLER: wikibar_editFormatByWord
},
pretty:{
CAPTION: 'pretty link',
TOOLTIP: 'pretty link',
syntax: '[[user_text|%1]]',
hint: 'pretty_word',
param: 'PrettyLink Target',
HANDLER: wikibar_getLinkUrl,
doMore: wikibar_editFormatByWord
},
url:{
TOOLTIP: 'url link',
syntax: '[[user_text|%1]]',
hint: 'your_text',
param: 'http:\/\/...',
HANDLER: wikibar_getLinkUrl,
doMore: wikibar_editFormatByWord
},
image:{
TOOLTIP: 'image link',
syntax: '[img[user_text|%1]]',
hint: 'alt_text',
param: 'image/icon.jpg',
HANDLER: wikibar_getLinkUrl,
doMore: wikibar_editFormatByWord
}
},
macro:{},
more:{
TYPE: 'MENU',
TOOLTIP: 'more tools',
table:{
TYPE: 'MENU',
TOOLTIP: 'table',
table:{
CAPTION:'create table',
TOOLTIP: 'create a new table',
syntax: '\n%1\n',
HANDLER: wikibar_getTableRowCol,
doMore: wikibar_editFormatByWord
},
header:{
TOOLTIP: 'table header text',
syntax: '|user_text|c',
hint: 'table_header',
HANDLER: wikibar_editFormatByWord
},
cell:{
TOOLTIP: 'create a tabel cell',
syntax: '|user_text|',
hint: 'your_text',
HANDLER: wikibar_editFormatByWord
},
columnHeader:{
CAPTION:'column header',
TOOLTIP: 'create a column header cell',
syntax: '|!user_text|',
hint: 'column_header',
HANDLER: wikibar_editFormatByWord
},
cell:{
TYPE: 'MENU',
CAPTION: 'cell options',
bgcolor:{
CAPTION: 'background color',
TOOLTIP: 'cell bgcolor',
syntax: '|bgcolor(%1):user_text|',
hint: 'your_text',
HANDLER: wikibar_getColorCode,
doMore: wikibar_editFormatByTableCell
},
alignLeft:{
CAPTION: 'align left',
TOOLTIP: 'left align cell text',
syntax: '|user_text|',
hint: 'your_text',
HANDLER: wikibar_editFormatByTableCell
},
alignCenter:{
CAPTION: 'align center',
TOOLTIP: 'center align cell text',
syntax: '| user_text |',
hint: 'your_text',
HANDLER: wikibar_editFormatByTableCell
},
alignRight:{
CAPTION: 'align right',
TOOLTIP: 'right align cell text',
syntax: '| user_text|',
hint: 'your_text',
HANDLER: wikibar_editFormatByTableCell
}
}
},
html:{
TYPE: 'MENU',
html:{
CAPTION: '<html>',
TOOLTIP: 'html tag',
syntax: '<html>\nuser_text\n</html>',
hint: 'html_content',
byBlock: true,
HANDLER: wikibar_editFormatByLine
}
}
},
addon:{
TYPE: 'MENU',
TOOLTIP:'3rd party tools',
'about addons':{
TOOLTIP: 'list loaded addons',
HANDLER: wikibar_doListAddons
},
SEPERATOR:{}
}
};
addEvent(document, 'click', wikibarColorTool.onDocumentClick);
addEvent(document, 'click', wikibarPopup.onDocumentClick);
wikibar_install();
//}}}
/***
|''Name:''|YourSearchPlugin|
|''Version:''|2.1.0 (2006-10-12)|
|''Source:''|http://tiddlywiki.abego-software.de/#YourSearchPlugin ([[del.icio.us|http://del.icio.us/post?url=http://tiddlywiki.abego-software.de/index.html%23YourSearchPlugin]])|
|''Author:''|UdoBorkowski (ub [at] abego-software [dot] de)|
|''Licence:''|[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]|
|''Copyright:''|© 2005-2006 [[abego Software|http://www.abego-software.de]]|
|''~CoreVersion:''|2.1.0|
|''Browser:''|Firefox 1.0.4+; Firefox 1.5; ~InternetExplorer 6.0|
!About YourSearch
YourSearch gives you a bunch of new features to simplify and speed up your daily searches in TiddlyWiki. It seamlessly integrates into the standard TiddlyWiki search: just start typing into the 'search' field and explore!
For more information see [[Help|YourSearch Help]].
!Compatibility
This plugin requires TiddlyWiki 2.1.
Check the [[archive|http://tiddlywiki.abego-software.de/archive]] for ~YourSearchPlugins supporting older versions of TiddlyWiki.
!Revision history
* v2.1.0 (2006-10-12)
** Release version with TiddlyWiki 2.1 support
*** Support (Extended) Field search
*** Support parenthesis in Boolean Search
*** Support direct regular expression input
*** Support JavaScript Expressions for filtering
*** "new tiddler" feature (create tiddler based on search text)
* v2.0.2 (2006-02-13)
** Bugfix for Firefox 1.5.0.1 related to the "Show prefix" checkbox. Thanks to Ted Pavlic for reporting and to BramChen for fixing.
** Internal
*** Make "JSLint" conform
* v2.0.1 (2006-02-05)
** Support "Exact Word Match" (use '=' to prefix word)
** Support default filter settings (when no filter flags are given in search term)
** Rework on the "less than 3 chars search text" feature (thanks to EricShulman)
** Better support SinglePageMode when doing "Open all tiddlers" (thanks to EricShulman)
** Support Firefox 1.5.0.1
** Bug: Fixed a hilite bug in "classic search mode" (thanks to EricShulman)
* v2.0.0 (2006-01-16)
** Add User Interface
* v1.0.1 (2006-01-06)
** Support TiddlyWiki 2.0
* v1.0.0 (2005-12-28)
** initial version
!Source Code
***/
//{{{
//============================================================================
//============================================================================
// YourSearchPlugin
//============================================================================
//============================================================================
// Ensure that the Plugin is only installed once.
//
if (!version.extensions.YourSearchPlugin) {
version.extensions.YourSearchPlugin = {
major: 2, minor: 1, revision: 0,
source: "http://tiddlywiki.abego-software.de/#YourSearchPlugin",
licence: "[[BSD open source license (abego Software)|http://www.abego-software.de/legal/apl-v10.html]]",
copyright: "Copyright (c) abego Software GmbH, 2005-2006 (www.abego-software.de)"
};
if (!window.abego) window.abego = {};
// define the Array forEach when not yet defined (e.g. by Mozilla)
if (!Array.forEach) {
Array.forEach = function(obj, callback, thisObj) {
for (var i = 0,len = obj.length; i < len; i++)
callback.call(thisObj, obj[i], i, obj);
};
Array.prototype.forEach = function(callback, thisObj) {
for (var i = 0,len = this.length; i < len; i++)
callback.call(thisObj, this[i], i, this);
};
}
abego.toInt = function(s, defaultValue) {
if (!s) return defaultValue;
var n = parseInt(s);
return (n == NaN) ? defaultValue : n;
};
abego.createEllipsis = function(place) {
var e = createTiddlyElement(place,"span");
e.innerHTML = "…";
};
//#concept Object
//
abego.shallowCopy = function(object) {
if (!object)
return object;
var result = {};
for (var n in object)
result[n] = object[n];
return result;
};
// Returns a shallow copy of the options, or a new, empty object if options is null/undefined.
//
// @param options [may be null/undefined]
//
//#concept Object, Options
//#import abego.shallowCopy
//
abego.copyOptions = function(options) {
return !options ? {} : abego.shallowCopy(options);
};
//#import abego.define-namespace
// returns the number of occurances of s in the text
abego.countStrings = function(text, s) {
if (!s)
return 0;
var len = s.length;
var n = 0;
var lastIndex = 0;
while (1) {
var i = text.indexOf(s, lastIndex);
if (i < 0)
return n;
n++;
lastIndex = i+len;
}
return n;
};// Returns the content of the first "braced" text {...}
// Also takes care of nested braces
//
// Returns undefined when no braced text is found or it is not properly nested
//
// @param [optional] when defined and a braced text is found lastIndexRef.lastIndex will contain the index of the char following the (final) closing brace on return.
//
abego.getBracedText = function(text, offset,lastIndexRef) {
if (!offset) offset = 0;
var re = /\{([^\}]*)\}/gm;
re.lastIndex = offset;
var m = re.exec(text);
if (m) {
// The matching stopped at the first closing brace.
// But if the matched text contains opening braces
// this is not the final closing brace.
// Handle this case specially, find the "corresponding" closing brace
var s = m[1];
var nExtraOpenBrace = abego.countStrings(s,"{");
if (!nExtraOpenBrace) {
if (lastIndexRef)
lastIndexRef.lastIndex = re.lastIndex;
// simple case: no nested braces
return s;
}
// special case: "nested braces"
var len = text.length;
for (var i = re.lastIndex; i < len && nExtraOpenBrace; i++) {
var c = text.charAt(i);
if (c == "{")
nExtraOpenBrace++;
else if (c == "}")
nExtraOpenBrace--;
}
if (!nExtraOpenBrace) {
// found the corresponding "}".
if (lastIndexRef)
lastIndexRef.lastIndex = i-1;
return text.substring(m.index+1, i-1);
}
}
// no return means: return undefined;
};
// Returns an array with those items from the array that pass the given test
//
// @param test an one-arg boolean function that returns true when the item should be added.
// @param testObj [optional] the receiver for the test function (global if undefined or null)
// @param result [optional] an array. When define the selected items are added to this array, otherwise a new array is used.
//
//#import Array.prototype.forEach
//
abego.select = function(array,test,testObj,result) {
if (!result) result = [];
array.forEach(function(t) {
if (test.call(testObj,t))
result.push(t);
});
return result;
};
// Class abego.TiddlerFilterTerm =================================================================
//
// Used to check if a tiddler contains a given text.
//
// A list of fields (standard and/or extended) may be specified to restrict the search to certain fields.
//
// When no explicit fields are given the fields defined by defaultFields are checked, plus all extended
// fields (when options.withExtendedFields is true).
//
// @param options [may be null/undefined]
// options.fields @seeParam abego.MultiFieldRegExpTester.fields
// options.withExtendedFields @seeParam abego.MultiFieldRegExpTester.withExtendedFields
// options.caseSensitive [Default: false]
// options.fullWordMatch [Default: false]
// options.textIsRegExp [Default: false] when true the given text is already a regExp
//
//#import abego.MultiFieldRegExpTester
//
abego.TiddlerFilterTerm = function(text,options) {
if (!options) options = {};
var reText = text;
if (!options.textIsRegExp) {
reText = text.escapeRegExp();
if (options.fullWordMatch)
reText = "\\b"+reText+"\\b";
}
var regExp = new RegExp(reText, "m"+(options.caseSensitive ? "" : "i"));
this.tester = new abego.MultiFieldRegExpTester(regExp, options.fields, options.withExtendedFields);
}
abego.TiddlerFilterTerm.prototype.test = function(tiddler) {
return this.tester.test(tiddler);
}
//#import abego.define-namespace
// Recognize a string like
// "Some Title. Some content text #Tag1 #Tag2 Tag3"
// with the tags and the text being optional.
// Also the period at the end of the title is optional when no content text is specified)
//
// Returns the result in an object with properties "title" and "params",
// with "params" following the parseParams format, containing the "tag" and "text" arguments.
//
abego.parseNewTiddlerCommandLine = function(s) {
var m = /(.*?)\.(?:\s+|$)([^#]*)(#.*)?/.exec(s);
if (!m)
m = /([^#]*)()(#.*)?/.exec(s);
if (m) {
var r;
if (m[3]) {
var s2 = m[3].replace(/#/g,"");
r = s2.parseParams("tag");
} else
r = [[]];
// add the text parameter
var text = m[2]?m[2].trim():"";
r.push({name: "text", value: text});
r[0].text = [text];
return {title: m[1].trim(), params: r};
} else
return {title: s.trim(),params: [[]]};
}
// options.defaultFields [@seeOptionDefault abego.TiddlerFilterTerm.fields] fields to check when no fields are explicitly specified in queryText.
// options.withExtendedFields [@seeOptionDefault abego.TiddlerFilterTerm.withExtendedFields] when true and no fields are explicitly specified in queryText also the extended fields are considered (in addition to the ones in defaultFields).
// @seeOptions abego.TiddlerFilterTerm (-fields -fullWordMatch -withExtendedFields)
//
//#import abego.getBracedText
//#import abego.copyOptions
//#import abego.TiddlerFilterTerm
//
abego.parseTiddlerFilterTerm = function(queryText,offset,options) {
// group 1: {...} (JavaScript expression)
// group 2: '=' (full word match (optional))
// group 3: [!%#] (field selection short cuts)
// group 4: fieldName ':'
// group 5: String literal "..."
// group 6: RegExp literal /.../
// group 7: scheme '://' nonSpaceChars
// group 8: word
var re = /\s*(?:(?:\{([^\}]*)\})|(?:(=)|([#%!])|(?:(\w+)\s*\:(?!\/\/))|(?:(?:("(?:(?:\\")|[^"])+")|(?:\/((?:(?:\\\/)|[^\/])+)\/)|(\w+\:\/\/[^\s]+)|([^\s\)\-\"]+)))))/mg;
var shortCuts = {'!':'title','%':'text','#':'tags'};
var fieldNames = {};
var fullWordMatch;
re.lastIndex = offset;
while (1) {
var i = re.lastIndex;
var m = re.exec(queryText);
if (!m || m.index != i)
throw "Word or String literal expected";
if (m[1]) {
var lastIndexRef = {};
var code = abego.getBracedText(queryText,0,lastIndexRef);
if (!code)
throw "Invalid {...} syntax";
var f = Function("tiddler","return ("+code+");");
return {func: f,
lastIndex:lastIndexRef.lastIndex,
markRE: null};
}
if (m[2])
fullWordMatch = true;
else if (m[3])
fieldNames[shortCuts[m[3]]] = 1;
else if (m[4])
fieldNames[m[4]] = 1;
else {
var textIsRegExp = m[6];
var text = m[5] ? window.eval(m[5]) : m[6] ? m[6] : m[7] ? m[7] : m[8];
var options = abego.copyOptions(options);
options.fullWordMatch = fullWordMatch;
options.textIsRegExp = textIsRegExp;
var fields = [];
for (var n in fieldNames)
fields.push(n);
if (fields.length == 0) {
options.fields = options.defaultFields;
} else {
options.fields = fields;
options.withExtendedFields = false;
}
var term = new abego.TiddlerFilterTerm(text,options);
var markREText = textIsRegExp ? text : text.escapeRegExp();
if (markREText && fullWordMatch)
markREText = "\\b"+markREText+"\\b";
return {func: function(tiddler) {return term.test(tiddler);},
lastIndex:re.lastIndex,
markRE: markREText ? "(?:"+markREText+")" : null};
}
}
};
// Class abego.BoolExp =================================================================
//
// Allows the execution/evaluation of a boolean expression, according to this syntax:
//
// boolExpression : unaryExpression (("AND"|"OR"|"&&"|"||")? unaryExpression)*
// ;
//
// unaryExpression : ("not"|"-")? primaryExpression
// ;
//
// primaryExpression : "(" boolExpression ")"
// | Term
// ;
//
// For flexibility the Term syntax is defined by a separate parse function.
//
// Notice that there is no precedence between "AND" and "OR" operators, i.e. they are evaluated from left to right.
//
// To evaluate the expression in a given context use code like this:
//
// var be = new abego.BoolExp(s, termParseFunc);
// var result = be.exec(context);
//
// @param s the text defining the expression
// @param parseTermFunc a Function(text,offset,options) that parses the text starting at offset for a "Term" and returns an object with properties {func: Function(context), lastIndex: ...}. func is the function to be used to evaluate the term in the given context.
// @param options [may be null/undefined] (is also passed to the parseTermFunc)
// options.defaultOperationIs_OR [Default: false] When true the concatenation of unaryExpressions (without an operator) is interpreted as an "OR", otherwise as an "AND".
// options.caseSensitive [default: false]
//
abego.BoolExp = function(s, parseTermFunc, options) {
this.s = s;
var defaultOperationIs_OR = options && options.defaultOperationIs_OR;
var reStart = /\s*(?:(\-|not)|(\())/gi; // group 1: NOT, group2 "("
var reCloseParenthesis = /\s*\)/g; // match )
var reAndOr = /\s*(?:(and|\&\&)|(or|\|\|))/gi; // group 1: AND, group 2: OR
var reNonWhiteSpace = /\s*[^\)\s]/g;
var reNot_Parenthesis = /\s*(\-|not)?(\s*\()?/gi;
var parseUnaryExpression = function(offset) {
reNot_Parenthesis.lastIndex = offset;
var m = reNot_Parenthesis.exec(s);
var negate;
var result;
if (m && m.index == offset) {
offset = reNot_Parenthesis.lastIndex;
negate = m[1];
if (m[2]) {
// case: (...)
var e = parseBoolExpression(offset);
reCloseParenthesis.lastIndex = e.lastIndex;
if (!reCloseParenthesis.exec(s))
throw "Missing ')'";
result = {func: e.func, lastIndex: reCloseParenthesis.lastIndex};
}
}
if (!result)
result = parseTermFunc(s,offset,options);
if (negate) {
result.func = (function(f){return function(context) {return !f(context);}})(result.func);
// don't mark patterns that are negated
// (This is essential since the marking may also be used to calculate "ranks". If we
// would also count the negated matches (i.e. that should not exist) the rank may get too high)
result.markRE = null;
}
return result;
};
var parseBoolExpression = function(offset) {
var result = parseUnaryExpression(offset);
while (1) {
var l = result.lastIndex;
reAndOr.lastIndex = l;
var m = reAndOr.exec(s);
var isOrCase;
var nextExp;
if (m && m.index == l) {
isOrCase = !m[1];
nextExp = parseUnaryExpression(reAndOr.lastIndex);
} else {
// no "AND" or "OR" found.
// Maybe it is a concatenations of parseUnaryExpression without operators
try {
nextExp = parseUnaryExpression(l);
} catch (e) {
// no unary expression follows. We are done
return result;
}
isOrCase = defaultOperationIs_OR;
}
result.func = (function(func1, func2, isOrCase) {
return isOrCase
? function(context) {return func1(context) || func2(context);}
: function(context) {return func1(context) && func2(context);};
})(result.func,nextExp.func,isOrCase);
result.lastIndex = nextExp.lastIndex;
if (!result.markRE)
result.markRE = nextExp.markRE;
else if (nextExp.markRE)
result.markRE = result.markRE + "|" + nextExp.markRE;
}
};
var expr = parseBoolExpression(0);
this.evalFunc = expr.func;
if (expr.markRE)
this.markRegExp = new RegExp(expr.markRE, options.caseSensitive ? "mg" : "img");
}
abego.BoolExp.prototype.exec = function() {
return this.evalFunc.apply(this,arguments);
};
abego.BoolExp.prototype.getMarkRegExp = function() {
return this.markRegExp;
};
abego.BoolExp.prototype.toString = function() {
return this.s;
};
// Class abego.MultiFieldRegExpTester ==================================================================
//
// @param fields [optional; Default: ["title","text","tags"]] array of names of fields to be considered
// @param withExtendedFields [optional; Default: false] when true also extended fields are considered (in addition to the ones given in 'fields')
//
abego.MultiFieldRegExpTester = function(re, fields, withExtendedFields) {
this.re = re;
this.fields = fields ? fields : ["title","text","tags"];
this.withExtendedFields = withExtendedFields;
}
// Returns the name of the first field found that value succeeds the given test,
// or null when no such field is found
//
abego.MultiFieldRegExpTester.prototype.test = function(tiddler) {
var re = this.re;
// Check the fields explicitly specified
for (var i = 0; i < this.fields.length; i++) {
var s = store.getValue(tiddler, this.fields[i]);
if (typeof s == "string" && re.test(s))
return this.fields[i];
}
// Check the extended fields (if required)
if (this.withExtendedFields)
return store.forEachField(
tiddler,
function(tiddler, fieldName, value) {
return typeof value == "string" && re.test(value)?fieldName:null;
}, true);
return null;
}
// Class abego.TiddlerQuery ==================================================================
//
//#import abego.select
//#import abego.MultiFieldRegExpTester
//
abego.TiddlerQuery = function(queryText,caseSensitive,useRegExp,defaultFields,withExtendedFields) {
if (useRegExp) {
this.regExp = new RegExp(queryText, caseSensitive ? "mg" : "img");
this.tester = new abego.MultiFieldRegExpTester(this.regExp, defaultFields, withExtendedFields);
} else {
this.expr = new abego.BoolExp(
queryText,
abego.parseTiddlerFilterTerm, {
defaultFields: defaultFields,
caseSensitive: caseSensitive,
withExtendedFields: withExtendedFields});
}
this.getQueryText = function() {
return queryText;
};
this.getUseRegExp = function() {
return useRegExp;
};
this.getCaseSensitive = function() {
return caseSensitive;
};
this.getDefaultFields = function() {
return defaultFields;
};
this.getWithExtendedFields = function() {
return withExtendedFields;
};
}
// Returns true iff the query includes the given tiddler
//
// @param tiddler [may be null/undefined]
//
abego.TiddlerQuery.prototype.test = function(tiddler) {
if (!tiddler) return false;
if (this.regExp) {
return this.tester.test(tiddler);
}
return this.expr.exec(tiddler);
};
// Returns an array with those tiddlers from the tiddlers array that match the query.
//
abego.TiddlerQuery.prototype.filter = function(tiddlers) {
return abego.select(tiddlers,this.test,this);
};
abego.TiddlerQuery.prototype.getMarkRegExp = function() {
if (this.regExp) {
// Only use the regExp for marking when it does not match the empty string.
return "".search(this.regExp) >= 0 ? null : this.regExp;
}
return this.expr.getMarkRegExp();
};
abego.TiddlerQuery.prototype.toString = function() {
return (this.regExp ? this.regExp : this.expr).toString();
};
// Class abego.PageWiseRenderer ================================================
//
// Subclass or instance must implement getItemsPerPage function;
// They should also implement onPageChanged and refresh the container of the
// PageWiseRenderer on that event.
//
//#import abego.toInt
//
abego.PageWiseRenderer = function() {
this.firstIndexOnPage = 0; // The index of the first item of the lastResults list displayed on the search result page
};
merge(abego.PageWiseRenderer.prototype, {
setItems: function(items) {
this.items = items;
this.setFirstIndexOnPage(0);
},
// Maximum number of pages listed in the navigation bar (before or after the current page)
//
getMaxPagesInNavigation: function() {
return 10;
},
getItemsCount: function(items) {
return this.items ? this.items.length : 0;
},
getCurrentPageIndex: function() {
return Math.floor(this.firstIndexOnPage / this.getItemsPerPage());
},
getLastPageIndex: function() {
return Math.floor((this.getItemsCount()-1) / this.getItemsPerPage())
},
setFirstIndexOnPage: function(index) {
this.firstIndexOnPage = Math.min(Math.max(0, index), this.getItemsCount()-1);
},
getFirstIndexOnPage: function() {
// Ensure that the firstIndexOnPage is really a page start.
// This may have become violated when getItemsPerPage has changed,
// (e.g. when switching between previewText and simple mode.)
this.firstIndexOnPage = Math.floor(this.firstIndexOnPage / this.getItemsPerPage()) * this.getItemsPerPage();
return this.firstIndexOnPage;
},
getLastIndexOnPage: function() {
return Math.min(this.getFirstIndexOnPage()+this.getItemsPerPage()-1, this.getItemsCount()-1);
},
onPageChanged: function(pageIndex,oldPageIndex) {
},
renderPage: function(itemRenderer) {
if (itemRenderer.beginRendering)
itemRenderer.beginRendering(this);
try {
// When there are items found add them to the result page (pagewise)
if (this.getItemsCount()) {
// Add the items of the current page
var lastIndex = this.getLastIndexOnPage();
var iInPage = -1;
for (var i=this.getFirstIndexOnPage(); i <= lastIndex; i++) {
iInPage++;
itemRenderer.render(this,this.items[i],i,iInPage);
}
}
} finally {
if (itemRenderer.endRendering)
itemRenderer.endRendering(this);
}
},
addPageNavigation: function(place) {
if (!this.getItemsCount()) return;
var self = this;
var onNaviButtonClick = function(e) {
if (!e) var e = window.event;
var pageIndex = abego.toInt(this.getAttribute("page"),0);
var oldPageIndex = self.getCurrentPageIndex();
if (pageIndex == oldPageIndex)
return;
var index = pageIndex * self.getItemsPerPage();
self.setFirstIndexOnPage(index);
self.onPageChanged(pageIndex,oldPageIndex);
};
var button;
var currentPageIndex = this.getCurrentPageIndex();
var lastPageIndex = this.getLastPageIndex();
if (currentPageIndex > 0) {
button = createTiddlyButton(place, "Previous", "Go to previous page (Shortcut: Alt-'<')", onNaviButtonClick, "prev");
button.setAttribute("page",(currentPageIndex-1).toString());
button.setAttribute("accessKey","<");
}
for (var i = -this.getMaxPagesInNavigation(); i < this.getMaxPagesInNavigation(); i++) {
var pageIndex = currentPageIndex+i;
if (pageIndex < 0) continue;
if (pageIndex > lastPageIndex) break;
var pageNo = (i+currentPageIndex+1).toString();
var buttonClass = pageIndex == currentPageIndex ? "currentPage" : "otherPage";
button = createTiddlyButton(place, pageNo, "Go to page %0".format([pageNo]), onNaviButtonClick, buttonClass);
button.setAttribute("page",(pageIndex).toString());
}
if (currentPageIndex < lastPageIndex) {
button = createTiddlyButton(place, "Next", "Go to next page (Shortcut: Alt-'>')", onNaviButtonClick, "next");
button.setAttribute("page",(currentPageIndex+1).toString());
button.setAttribute("accessKey",">");
}
}
});
// Class abego.LimitedTextRenderer ===========================================================
//
// Renders a given text, ensuring that a given limit of number of characters
// is not exceeded.
//
// A "markRegExp" may be specified. Substring matching this regular expression
// ("matched strings") are rendered with the class "marked".
//
// if the given text is longer than the limit the matched strings are preferred
// to be included in the rendered text (with some leading and trailing "context text").
//
// Example:
// var renderer = new abego.LimitedTextRenderer();
//
// var place = ... // a DOM element that should contain the rendered (limited) text
// var s = "This is another 'Hello World' example, as saying 'Hello' is always nice. So let's say it again: >Hello!<";
// var maxLen = 50;
// var markRE = /hello/gi;
// renderer.render(place,s,maxLen,markRE);
//
//#import abego.createEllipsis
//
abego.LimitedTextRenderer = function() {
var minMatchWithContextSize = 40;
var maxMovementForWordCorrection = 4; // When a "match" context starts or end on a word the context borders may be changed to at most this amount to include or exclude the word.
//----------------------------------------------------------------------------
//
// Ranges
//
// Objects with a "start" and "end" property (not a specific class).
//
// In a corresponding "Ranges array" these objects are sorted by their start
// and no Range object intersects/touches any other in the array.
//
//----------------------------------------------------------------------------
// Adds the Range [startIndex,endIndex[ to the ranges, ensuring that the Ranges
// in the array are sorted by their start and no Range object
// intersects/touches any other in the array (i.e. possibly the new Range is
// "merged" with existing ranges)
//
// @param ranges array of Range objects
//
var addRange = function(ranges, startIndex, endIndex) {
var n = ranges.length;
// When there are no ranges in ranges, just add it.
if (n == 0) {
ranges.push({start: startIndex, end: endIndex});
return;
}
var i = 0;
for (; i < n; i++) {
var range = ranges[i];
// find the first range that intersects or "touches" [startIndex, endIndex[
if (range.start <= endIndex && startIndex <= range.end) {
// Found.
var r;
// find the first range behind the new range that does not interfere
var rIndex = i+1;
for (; rIndex < n; rIndex++) {
r = ranges[rIndex];
if (r.start > endIndex || startIndex > range.end) {
break;
}
}
// Replace the ranges i to rIndex-1 with the union of the new range with these ranges.
var unionStart = startIndex;
var unionEnd = endIndex;
for (var j = i; j < rIndex; j++) {
r = ranges[j];
unionStart = Math.min(unionStart, r.start);
unionEnd = Math.max(unionEnd, r.end);
}
ranges.splice(i, rIndex-i, {start: unionStart, end: unionEnd});
return;
}
// if we found a range R that is right of the new range there is no
// intersection and we can insert the new range before R.
if (range.start > endIndex) {
break;
}
}
// When we are here the new range does not interfere with any range in ranges and
// i is the index of the first range right to it (or ranges.length, when the new range
// becomes the right most range).
ranges.splice(i, 0, {start: startIndex, end: endIndex});
};
// Returns the total size of all Ranges in ranges
//
var getTotalRangesSize = function(ranges) {
var totalRangeSize = 0;
for (var i=0; i < ranges.length; i++) {
var range = ranges[i];
totalRangeSize += range.end-range.start;
}
return totalRangeSize;
};
//----------------------------------------------------------------------------
var isWordChar = function(c) {
return (c >= "a" && c <= "z") || (c >= "A" && c <= "Z") || c == "_";
};
// Returns the bounds of the word in s around offset as a {start: , end:} object.
//
// Returns null when the char at offset is not a word char.
//
var getWordBounds = function(s, offset) {
// Handle the "offset is not in word" case
if (!isWordChar(s[offset])) return null;
for (var i = offset-1; i >= 0 && isWordChar(s[i]); i--)
{/*empty*/}
var startIndex = i+1;
var n = s.length;
for (i = offset+1; i < n && isWordChar(s[i]); i++)
{/*empty*/}
return {start: startIndex, end: i};
};
var moveToWordBorder = function(s, offset, isStartOffset) {
var wordBounds;
if (isStartOffset) {
wordBounds = getWordBounds(s, offset);
} else {
if (offset <= 0) return offset;
wordBounds = getWordBounds(s, offset-1);
}
if (!wordBounds) return offset;
if (isStartOffset) {
if (wordBounds.start >= offset-maxMovementForWordCorrection) return wordBounds.start;
if (wordBounds.end <= offset+maxMovementForWordCorrection) return wordBounds.end;
} else {
if (wordBounds.end <= offset+maxMovementForWordCorrection) return wordBounds.end;
if (wordBounds.start >= offset-maxMovementForWordCorrection) return wordBounds.start;
}
return offset;
};
// Splits s into a sequence of "matched" and "unmatched" substrings, using the
// matchRegExp to do the matching.
//
// Returns an array of objects with a "text" property containing the substring text.
// Substrings that are "matches" also contain a boolean "isMatch" property set to true.
//
// @param matchRegExp [may be null] when null no matching is performed and the returned
// array just contains one item with s as its text
//
var getTextAndMatchArray = function(s, matchRegExp) {
var result = [];
if (matchRegExp) {
var startIndex = 0;
var n = s.length;
var currentLen = 0;
do {
matchRegExp.lastIndex = startIndex;
var match = matchRegExp.exec(s);
if (match) {
if (startIndex < match.index) {
var t = s.substring(startIndex, match.index);
result.push({text:t});
}
result.push({text:match[0], isMatch:true});
startIndex = match.index + match[0].length;
} else {
result.push({text: s.substr(startIndex)});
break;
}
} while (true);
} else {
result.push({text: s});
}
return result;
};
var getMatchedTextCount = function(textAndMatches) {
var result = 0;
for (var i=0; i < textAndMatches.length; i++) {
if (textAndMatches[i].isMatch) {
result++;
}
}
return result;
};
var getContextRangeAround = function(s, startIndex, endIndex, matchCount, maxLen) {
// Partition the available space into equal sized areas for each match and one
// for the text start.
// But the size should not go below a certain limit
var size = Math.max(Math.floor(maxLen/(matchCount+1)), minMatchWithContextSize);
// Substract the size of the range to get the size of the context.
var contextSize = Math.max(size-(endIndex-startIndex), 0);
// Two thirds of the context should be before the match, one third after.
var contextEnd = Math.min(Math.floor(endIndex+contextSize/3), s.length);
var contextStart = Math.max(contextEnd - size, 0);
// If the contextStart/End is inside a word and the end of the word is
// close move the pointers accordingly to make the text more readable.
contextStart = moveToWordBorder(s, contextStart, true);
contextEnd = moveToWordBorder(s, contextEnd, false);
return {start: contextStart, end: contextEnd};
};
// Get all ranges around matched substrings with their contexts
//
var getMatchedTextWithContextRanges = function(textAndMatches, s, maxLen) {
var ranges = [];
var matchCount = getMatchedTextCount(textAndMatches);
var pos = 0;
for (var i=0; i < textAndMatches.length; i++) {
var t = textAndMatches[i];
var text = t.text;
if (t.isMatch) {
var range = getContextRangeAround(s, pos, pos+text.length, matchCount, maxLen);
addRange(ranges, range.start, range.end);
}
pos += text.length;
}
return ranges;
};
var fillUpRanges = function(s, ranges, maxLen) {
var remainingLen = maxLen - getTotalRangesSize(ranges);
while (remainingLen > 0) {
if (ranges.length == 0) {
// No matches added yet. Make one large range.
addRange(ranges, 0, moveToWordBorder(s, maxLen, false));
return;
} else {
var range = ranges[0];
var startIndex;
var maxEndIndex;
if (range.start == 0) {
// The first range already starts at the beginning of the string.
// When there is a second range fill to the next range start or to the maxLen.
startIndex = range.end;
if (ranges.length > 1) {
maxEndIndex = ranges[1].start;
} else {
// Only one range. Add a range after that with the complete remaining len
// (corrected to "beautify" the output)
addRange(ranges, startIndex, moveToWordBorder(s, startIndex+remainingLen, false));
return;
}
} else {
// There is unused space between the start of the text and the first range.
startIndex = 0;
maxEndIndex = range.start;
}
var endIndex = Math.min(maxEndIndex, startIndex+remainingLen);
addRange(ranges, startIndex, endIndex);
remainingLen -= (endIndex-startIndex);
}
}
};
// Write the given ranges of s, using textAndMatches for marking portions of the text.
//
var writeRanges = function(place, s, textAndMatches, ranges, maxLen) {
if (ranges.length == 0) return;
// Processes the text between startIndex and endIndex of the textAndMatches
// "writes" them (as DOM elements) at the given place, possibly as "marked" text.
//
// When endIndex is not the end of the full text an ellisis is appended.
//
var writeTextAndMatchRange = function(place, s, textAndMatches, startIndex, endIndex) {
var t;
var text;
// find the first text item to write
var pos = 0;
var i = 0;
var offset = 0;
for (;i < textAndMatches.length; i++) {
t = textAndMatches[i];
text = t.text;
if (startIndex < pos+text.length) {
offset = startIndex - pos;
break;
}
pos += text.length;
}
var remainingLen = endIndex - startIndex;
for (; i < textAndMatches.length && remainingLen > 0; i++) {
t = textAndMatches[i];
text = t.text.substr(offset);
offset = 0;
if (text.length > remainingLen) text = text.substr(0,remainingLen);
if (t.isMatch) {
createTiddlyElement(place,"span",null,"marked",text);
} else {
createTiddlyText(place, text);
}
remainingLen -= text.length;
}
if (endIndex < s.length) {
abego.createEllipsis(place);
}
};
// When the first range is not at the start of the text write an ellipsis("...")
// (Ellipses between ranges are written in the writeTextAndMatchRange method)
if (ranges[0].start > 0) abego.createEllipsis(place);
var remainingLen = maxLen;
for (var i = 0; i < ranges.length && remainingLen > 0; i++) {
var range = ranges[i];
var len = Math.min(range.end - range.start, remainingLen);
writeTextAndMatchRange(place, s, textAndMatches, range.start, range.start+len);
remainingLen -= len;
}
};
this.render = function(place,s,maxLen,markRegExp) {
if (s.length < maxLen) maxLen = s.length;
var textAndMatches = getTextAndMatchArray(s, markRegExp);
var ranges = getMatchedTextWithContextRanges(textAndMatches, s, maxLen);
// When the maxLen is not yet reached add more ranges
// starting from the beginning until either maxLen or
// the end of the string is reached.
fillUpRanges(s, ranges, maxLen);
writeRanges(place, s, textAndMatches, ranges, maxLen);
};
};
(function() {
function alertAndThrow(msg) {
alert(msg);
throw msg;
};
if (version.major < 2 || (version.major == 2 && version.minor < 1))
alertAndThrow("YourSearchPlugin requires TiddlyWiki 2.1 or newer.\n\nCheck the archive for YourSearch plugins\nsupporting older versions of TiddlyWiki.\n\nArchive: http://tiddlywiki.abego-software.de/archive");
abego.YourSearch = {};
//----------------------------------------------------------------------------
// The Search Core
//----------------------------------------------------------------------------
// Model Variables
var lastResults; // Array of tiddlers that matched the last search
var lastQuery; // The last Search query (TiddlerQuery)
var setLastResults = function(array) {
lastResults = array;
};
var getLastResults = function() {
return lastResults ? lastResults : [];
};
var getLastResultsCount = function() {
return lastResults ? lastResults.length : 0;
};
// Standard Ranking Weights
var matchInTitleWeight = 4;
var precisionInTitleWeight = 10;
var matchInTagsWeight = 2;
var getMatchCount = function(s, re) {
var m = s.match(re);
return m ? m.length : 0;
};
var standardRankFunction = function(tiddler, query) {
// Count the matches in the title and the tags
var markRE = query.getMarkRegExp();
if (!markRE) return 1;
var matchesInTitle = tiddler.title.match(markRE);
var nMatchesInTitle = matchesInTitle ? matchesInTitle.length : 0;
var nMatchesInTags = getMatchCount(tiddler.getTags(), markRE);
// Calculate the "precision" of the matches in the title as the ratio of
// the length of the matches to the total length of the title.
var lengthOfMatchesInTitle = matchesInTitle ? matchesInTitle.join("").length : 0;
var precisionInTitle = tiddler.title.length > 0 ? lengthOfMatchesInTitle/tiddler.title.length : 0;
// calculate a weighted score
var rank= nMatchesInTitle * matchInTitleWeight
+ nMatchesInTags * matchInTagsWeight
+ precisionInTitle * precisionInTitleWeight
+ 1;
return rank;
};
// @return Tiddler[]
//
var findMatches = function(store, searchText,caseSensitive,useRegExp,sortField,excludeTag) {
lastQuery = null;
var candidates = store.reverseLookup("tags",excludeTag,false);
try {
var defaultFields = [];
if (config.options.chkSearchInTitle) defaultFields.push("title");
if (config.options.chkSearchInText) defaultFields.push("text");
if (config.options.chkSearchInTags) defaultFields.push("tags");
lastQuery = new abego.TiddlerQuery(
searchText,caseSensitive, useRegExp,defaultFields,config.options.chkSearchExtendedFields);
} catch (e) {
// when an invalid query is given no tiddlers are matched
return [];
}
var results = lastQuery.filter(candidates);
// Rank the results
var rankFunction = abego.YourSearch.getRankFunction();
for (var i = 0; i < results.length; i++) {
var tiddler = results[i];
var rank = rankFunction(tiddler, lastQuery);
// Add the rank information to the tiddler.
// This is used during the sorting, but it may also
// be used in the result, e.g. to display some "relevance"
// information in the result
tiddler.searchRank = rank;
}
// sort the result, taking care of the rank and the sortField
if(!sortField) {
sortField = "title";
}
var sortFunction = function (a,b) {
var searchRankDiff = a.searchRank - b.searchRank;
if (searchRankDiff == 0) {
if (a[sortField] == b[sortField]) {
return(0);
} else {
return (a[sortField] < b[sortField]) ? -1 : +1;
}
} else {
return (searchRankDiff > 0) ? -1 : +1;
}
};
results.sort(sortFunction);
return results;
};
//----------------------------------------------------------------------------
// The Search UI (Result page)
//----------------------------------------------------------------------------
// Visual appearance of the result page
var maxCharsInTitle = 80;
var maxCharsInTags = 50;
var maxCharsInText = 250;
var maxCharsInField = 50;
var itemsPerPageDefault = 25; // Default maximum number of items on one search result page
var itemsPerPageWithPreviewDefault = 10; // Default maximum number of items on one search result page when PreviewText is on
// DOM IDs
var yourSearchResultID = "yourSearchResult";
var yourSearchResultItemsID = "yourSearchResultItems";
var lastSearchText; // The last search text, as passed to findMatches
var resultElement; // The (popup) DOM element containing the search result [may be null]
var searchInputField; // The "search" input field
var searchButton; // The "search" button
var lastNewTiddlerButton;
var initStylesheet = function() {
if (version.extensions.YourSearchPlugin.styleSheetInited)
return;
version.extensions.YourSearchPlugin.styleSheetInited = true;
setStylesheet(store.getTiddlerText("YourSearchStyleSheet"),"yourSearch");
}
var isResultOpen = function() {
return resultElement != null && resultElement.parentNode == document.body;
};
var closeResult = function() {
if (isResultOpen()) {
document.body.removeChild(resultElement);
}
};
// Closes the Search Result window and displays the tiddler
// defined by the "tiddlyLink" attribute of this element
//
var closeResultAndDisplayTiddler = function(e)
{
closeResult();
var title = this.getAttribute("tiddlyLink");
if(title) {
var withHilite = this.getAttribute("withHilite");
var oldHighlightHack = highlightHack;
if (withHilite && withHilite=="true" && lastQuery) {
highlightHack = lastQuery.getMarkRegExp();
}
story.displayTiddler(this,title);
highlightHack = oldHighlightHack;
}
return(false);
};
// Adjusts the resultElement's size and position, relative to the search input field.
//
var adjustResultPositionAndSize = function() {
if (!searchInputField) return;
var root = searchInputField;
// Position the result below the root and resize it if necessary.
var rootLeft = findPosX(root);
var rootTop = findPosY(root);
var rootHeight = root.offsetHeight;
var popupLeft = rootLeft;
var popupTop = rootTop + rootHeight;
// Make sure the result is not wider than the window
var winWidth = findWindowWidth();
if (winWidth < resultElement.offsetWidth) {
resultElement.style.width = (winWidth - 100)+"px";
winWidth = findWindowWidth();
}
// Ensure that the left and right of the result are not
// clipped by the window. Move it to the left or right, if necessary.
var popupWidth = resultElement.offsetWidth;
if(popupLeft + popupWidth > winWidth)
popupLeft = winWidth - popupWidth-30;
if (popupLeft < 0) popupLeft = 0;
// Do the actual moving
resultElement.style.left = popupLeft + "px";
resultElement.style.top = popupTop + "px";
resultElement.style.display = "block";
};
var scrollVisible = function() {
// Scroll the window to make the result page (and the search Input field) visible.
if (resultElement) window.scrollTo(0,ensureVisible(resultElement));
if (searchInputField) window.scrollTo(0,ensureVisible(searchInputField));
};
// Makes sure the result page has a good size and position and visible
// (may scroll the window)
//
var ensureResultIsDisplayedNicely = function() {
adjustResultPositionAndSize();
scrollVisible();
};
var indexInPage; // The index (in the current page) of the tiddler currently rendered.
var currentTiddler; // While rendering the page the tiddler that is currently rendered.
var pager = new abego.PageWiseRenderer();
var MyItemRenderer = function(parent) {
// Load the template how to display the items that represent a found tiddler
this.itemHtml = store.getTiddlerText("YourSearchItemTemplate");
if (!this.itemHtml) alertAndThrow("YourSearchItemTemplate not found");
// Locate the node that shall contain the list of found tiddlers
this.place = document.getElementById(yourSearchResultItemsID);
if(!this.place)
this.place = createTiddlyElement(parent,"div",yourSearchResultItemsID);
};
merge(MyItemRenderer.prototype,{
render: function(pager,object,index,indexOnPage) {
// Define global variables, referenced by macros during applyHtmlMacros
indexInPage = indexOnPage;
currentTiddler = object;
var item = createTiddlyElement(this.place,"div",null, "yourSearchItem");
item.innerHTML = this.itemHtml;
applyHtmlMacros(item,null);
refreshElements(item,null);
},
endRendering: function(pager) {
// The currentTiddler must only be defined while rendering the found tiddlers
currentTiddler = null;
}
});
// Refreshes the content of the result with the current search result
// of the selected page.
//
// Assumes that the result is already open.
//
var refreshResult = function() {
if (!resultElement || !searchInputField) return;
// Load the template for the YourSearchResult
var html = store.getTiddlerText("YourSearchResultTemplate");
if (!html) html = "<b>Tiddler YourSearchResultTemplate not found</b>";
resultElement.innerHTML = html;
// Expand the template macros etc.
applyHtmlMacros(resultElement,null);
refreshElements(resultElement,null);
var itemRenderer = new MyItemRenderer(resultElement);
pager.renderPage(itemRenderer);
ensureResultIsDisplayedNicely();
};
pager.getItemsPerPage = function() {
var n = (config.options.chkPreviewText)
? abego.toInt(config.options.txtItemsPerPageWithPreview, itemsPerPageWithPreviewDefault)
: abego.toInt(config.options.txtItemsPerPage, itemsPerPageDefault);
return (n > 0) ? n : 1;
};
pager.onPageChanged = function() {
refreshResult();
};
var showResult = function() {
if (!resultElement) {
resultElement = createTiddlyElement(document.body,"div",yourSearchResultID,"yourSearchResult");
} else if (resultElement.parentNode != document.body) {
document.body.appendChild(resultElement);
}
refreshResult();
};
var reopenResultIfApplicable = function() {
if (searchInputField == null || !config.options.chkUseYourSearch) return;
if ((searchInputField.value == lastSearchText) && lastSearchText && !isResultOpen()) {
// For speedup we check re-use the previously created resultElement, if possible.
if (resultElement && (resultElement.parentNode != document.body)) {
document.body.appendChild(resultElement);
ensureResultIsDisplayedNicely();
} else {
showResult();
}
}
};
var invalidateResult = function() {
closeResult();
resultElement = null;
lastSearchText = null;
};
//-------------------------------------------------------------------------
// Close the search result page when the user clicks on the document
// (and not into the searchInputField, on the search button or in the result)
// or presses the ESC key
// Returns true if e is either self or a descendant (child, grandchild,...) of self.
//
// @param self DOM:Element
// @param e DOM:Element or null
//
var isDescendantOrSelf = function(self, e) {
while (e != null) {
if (self == e) return true;
e = e.parentNode;
}
return false;
};
var onDocumentClick = function(e) {
if (e.target == searchInputField) return;
if (e.target == searchButton) return;
if (resultElement && isDescendantOrSelf(resultElement, e.target)) return;
closeResult();
};
var onDocumentKeyup = function(e) {
// Close the search result page when the user presses "ESC"
if (e.keyCode == 27) closeResult();
};
addEvent(document,"click",onDocumentClick);
addEvent(document,"keyup",onDocumentKeyup);
// Our Search Macro Hijack Function ==========================================
// Helper
var myStorySearch = function(text,useCaseSensitive,useRegExp)
{
lastSearchText = text;
setLastResults(findMatches(store, text,useCaseSensitive,useRegExp,"title","excludeSearch"));
highlightHack = lastQuery ? lastQuery.getMarkRegExp() : null;
pager.setItems(getLastResults());
showResult();
highlightHack = null;
};
var myMacroSearchHandler = function(place,macroName,params,wikifier,paramString,tiddler)
{
initStylesheet();
lastSearchText = "";
var searchTimeout = null;
var doSearch = function(txt)
{
if (config.options.chkUseYourSearch)
myStorySearch(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
else
story.search(txt.value,config.options.chkCaseSensitiveSearch,config.options.chkRegExpSearch);
lastSearchText = txt.value;
};
var clickHandler = function(e)
{
doSearch(searchInputField);
return false;
};
var keyHandler = function(e)
{
if (!e) var e = window.event;
searchInputField = this;
switch(e.keyCode)
{
case 13:
if (e.ctrlKey && lastNewTiddlerButton && isResultOpen())
lastNewTiddlerButton.onclick.apply(lastNewTiddlerButton,[e]);
else
doSearch(this);
break;
case 27:
// When the result is open, close it,
// otherwise clear the content of the input field
if (isResultOpen()) {
closeResult();
} else {
this.value = "";
clearMessage();
}
break;
}
if (String.fromCharCode(e.keyCode) == this.accessKey || e.altKey)
{
reopenResultIfApplicable();
}
if(this.value.length<3 && searchTimeout) clearTimeout(searchTimeout);
if(this.value.length > 2)
{
if (this.value != lastSearchText)
{
if (!config.options.chkUseYourSearch || config.options.chkSearchAsYouType)
{
if(searchTimeout)
clearTimeout(searchTimeout);
var txt = this;
searchTimeout = setTimeout(function() {doSearch(txt);},500);
}
}
else
{
if(searchTimeout)
clearTimeout(searchTimeout);
}
};
if (this.value.length == 0)
{
closeResult();
}
};
var focusHandler = function(e)
{
this.select();
clearMessage();
reopenResultIfApplicable();
};
var args = paramString.parseParams("list",null,true);
var buttonAtRight = getFlag(args, "buttonAtRight");
var sizeTextbox = getParam(args, "sizeTextbox", this.sizeTextbox);
var btn;
if (!buttonAtRight)
btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
var txt = createTiddlyElement(place,"input",null,null,null);
if(params[0])
txt.value = params[0];
txt.onkeyup = keyHandler;
txt.onfocus = focusHandler;
txt.setAttribute("size",sizeTextbox);
txt.setAttribute("accessKey",this.accessKey);
txt.setAttribute("autocomplete","off");
if(config.browser.isSafari)
{
txt.setAttribute("type","search");
txt.setAttribute("results","5");
}
else
txt.setAttribute("type","text");
if (buttonAtRight)
btn = createTiddlyButton(place,this.label,this.prompt,clickHandler);
searchInputField = txt;
searchButton = btn;
};
//----------------------------------------------------------------------------
// Support for Macros
//----------------------------------------------------------------------------
var openAllFoundTiddlers = function() {
closeResult();
var results = getLastResults();
var n = results.length;
if (n) {
var titles=[];
for(var i = 0; i<n; i++)
titles.push(results[i].title);
story.displayTiddlers(null,titles);
}
};
var createOptionWithRefresh = function(place, optionParams, wikifier,tiddler) {
invokeMacro(place,"option",optionParams,wikifier,tiddler);
// The option macro appended the component at the end of the place.
var elem = place.lastChild;
var oldOnClick = elem.onclick;
elem.onclick = function(e) {
var result = oldOnClick.apply(this, arguments);
refreshResult();
return result;
};
return elem;
};
var removeTextDecoration = function(s) {
var removeThis = ["''", "{{{", "}}}", "//", "<<<", "/***", "***/"];
var reText = "";
for (var i = 0; i < removeThis.length; i++) {
if (i != 0) reText += "|";
reText += "("+removeThis[i].escapeRegExp()+")";
}
return s.replace(new RegExp(reText, "mg"), "").trim();
};
// Returns the "shortcut number" of the currentTiddler.
// I.e. When the user presses Alt-n the given tiddler is opened/display.
//
// @return 0-9 or -1 when no number is defined
//
var getShortCutNumber = function() {
var i = indexInPage;
return (i >= 0 && i <= 9)
? (i < 9 ? (i+1) : 0)
: -1;
};
var limitedTextRenderer = new abego.LimitedTextRenderer();
var renderLimitedText = function(place, s, maxLen) {
limitedTextRenderer.render(place,s,maxLen,lastQuery.getMarkRegExp())
}
// When any tiddler are changed reset the result.
//
var oldTiddlyWikiSaveTiddler = TiddlyWiki.prototype.saveTiddler;
TiddlyWiki.prototype.saveTiddler = function(title,newTitle,newBody,modifier,modified,tags,fields) {
oldTiddlyWikiSaveTiddler.apply(this, arguments);
invalidateResult();
};
var oldTiddlyWikiRemoveTiddler = TiddlyWiki.prototype.removeTiddler;
TiddlyWiki.prototype.removeTiddler = function(title) {
oldTiddlyWikiRemoveTiddler.apply(this, arguments);
invalidateResult();
};
//----------------------------------------------------------------------------
// Macros
//----------------------------------------------------------------------------
// ====Macro yourSearch ================================================
config.macros.yourSearch = {
// Standard Properties
label: "yourSearch",
prompt: "Gives access to the current/last YourSearch result",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
if (params.length == 0) return;
var name = params[0];
var func = config.macros.yourSearch.funcs[name];
if (func) func(place,macroName,params,wikifier,paramString,tiddler);
},
tests: {
"true" : function() {return true;},
"false" : function() {return false;},
"found" : function() {return getLastResultsCount() > 0;},
"previewText" : function() {return config.options.chkPreviewText;}
},
funcs: {
itemRange: function(place) {
if (getLastResultsCount()) {
var lastIndex = pager.getLastIndexOnPage();
var s = "%0 - %1".format([pager.getFirstIndexOnPage()+1,lastIndex+1]);
createTiddlyText(place, s);
}
},
count: function(place) {
createTiddlyText(place, getLastResultsCount().toString());
},
query: function(place) {
if (lastQuery) {
createTiddlyText(place, lastQuery.toString());
}
},
version: function(place) {
var t = "YourSearch %0.%1.%2".format(
[version.extensions.YourSearchPlugin.major,
version.extensions.YourSearchPlugin.minor,
version.extensions.YourSearchPlugin.revision]);
var e = createTiddlyElement(place, "a");
e.setAttribute("href", "http://tiddlywiki.abego-software.de/#YourSearchPlugin");
e.innerHTML = '<font color="black" face="Arial, Helvetica, sans-serif">'+t+'<font>';
},
copyright: function(place) {
var e = createTiddlyElement(place, "a");
e.setAttribute("href", "http://www.abego-software.de");
e.innerHTML = '<font color="black" face="Arial, Helvetica, sans-serif">© 2005-2006 <b><font color="red">abego</font></b> Software<font>';
},
newTiddlerButton: function(place) {
if (lastQuery) {
var r = abego.parseNewTiddlerCommandLine(lastQuery.getQueryText());
var btn = config.macros.newTiddler.createNewTiddlerButton(place,r.title,r.params,"new tiddler","Create a new tiddler based on search text. (Shortcut: Ctrl-Enter; Separators: '.', '#')",null,"text");
// Close the result before the new tiddler is created.
var oldOnClick = btn.onclick;
btn.onclick = function() {
closeResult();
oldOnClick.apply(this,arguments);
}
lastNewTiddlerButton = btn;
}
},
linkButton: function(place,macroName,params,wikifier,paramString,tiddler) {
if (params < 2) return;
var tiddlyLink = params[1];
var text = params < 3 ? tiddlyLink : params[2];
var tooltip = params < 4 ? text : params[3];
var accessKey = params < 5 ? null : params[4];
var btn = createTiddlyButton(place,text,tooltip,closeResultAndDisplayTiddler,null,null, accessKey);
btn.setAttribute("tiddlyLink",tiddlyLink);
},
closeButton: function(place,macroName,params,wikifier,paramString,tiddler) {
var button = createTiddlyButton(place, "close", "Close the Search Results (Shortcut: ESC)", closeResult);
},
openAllButton: function(place,macroName,params,wikifier,paramString,tiddler) {
var n = getLastResultsCount();
if (n == 0) return;
var title = n == 1 ? "open tiddler" : "open all %0 tiddlers".format([n]);
var button = createTiddlyButton(place, title, "Open all found tiddlers (Shortcut: Alt-O)", openAllFoundTiddlers);
button.setAttribute("accessKey","O");
},
naviBar: function(place,macroName,params,wikifier,paramString,tiddler) {
pager.addPageNavigation(place);
},
"if": function(place,macroName,params,wikifier,paramString,tiddler) {
if (params.length < 2) return;
var testName = params[1];
var negate = (testName == "not");
if (negate) {
if (params.length < 3) return;
testName = params[2];
}
var test = config.macros.yourSearch.tests[testName];
var showIt = false;
try {
if (test) {
showIt = test(place,macroName,params,wikifier,paramString,tiddler) != negate;
} else {
// When no predefined test is specified try to evaluate it as a JavaScript expression.
showIt = (!eval(testName)) == negate;
}
} catch (ex) {
}
if (!showIt) {
place.style.display="none";
}
},
chkPreviewText: function(place,macroName,params,wikifier,paramString,tiddler) {
var optionParams = params.slice(1).join(" ");
var elem = createOptionWithRefresh(place, "chkPreviewText", wikifier,tiddler);
elem.setAttribute("accessKey", "P");
elem.title = "Show text preview of found tiddlers (Shortcut: Alt-P)";
return elem;
}
}
};
// ====Macro foundTiddler ================================================
config.macros.foundTiddler = {
// Standard Properties
label: "foundTiddler",
prompt: "Provides information on the tiddler currently processed on the YourSearch result page",
handler: function(place,macroName,params,wikifier,paramString,tiddler) {
var name = params[0];
var func = config.macros.foundTiddler.funcs[name];
if (func) func(place,macroName,params,wikifier,paramString,tiddler);
},
funcs: {
title: function(place,macroName,params,wikifier,paramString,tiddler) {
if (!currentTiddler) return;
var shortcutNumber = getShortCutNumber();
var tooltip = shortcutNumber >= 0
? "Open tiddler (Shortcut: Alt-%0)".format([shortcutNumber.toString()])
: "Open tiddler";
var btn = createTiddlyButton(place,null,tooltip,closeResultAndDisplayTiddler,null);
btn.setAttribute("tiddlyLink",currentTiddler.title);
btn.setAttribute("withHilite","true");
renderLimitedText(btn, currentTiddler.title, maxCharsInTitle);
if (shortcutNumber >= 0) {
btn.setAttribute("accessKey",shortcutNumber.toString());
}
},
tags: function(place,macroName,params,wikifier,paramString,tiddler) {
if (!currentTiddler) return;
renderLimitedText(place, currentTiddler.getTags(), maxCharsInTags);
},
text: function(place,macroName,params,wikifier,paramString,tiddler) {
if (!currentTiddler) return;
renderLimitedText(place, removeTextDecoration(currentTiddler.text), maxCharsInText);
},
field: function(place,macroName,params,wikifier,paramString,tiddler) {
if (!currentTiddler) return;
var name = params[1];
var len = params.length > 2 ? abego.toInt(params[2],maxCharsInField) : maxCharsInField;
var v = store.getValue(currentTiddler,name);
if (v)
renderLimitedText(place, removeTextDecoration(v), len);
},
// Renders the "shortcut number" of the current tiddler, to indicate to the user
// what number to "Alt-press" to open the tiddler.
//
number: function(place,macroName,params,wikifier,paramString,tiddler) {
var numberToDisplay = getShortCutNumber();
if (numberToDisplay >= 0) {
var text = "%0)".format([numberToDisplay.toString()]);
createTiddlyElement(place,"span",null,"shortcutNumber",text);
}
}
}
};
//----------------------------------------------------------------------------
// Configuration Stuff
//----------------------------------------------------------------------------
var opts = {chkUseYourSearch:true,
chkPreviewText:true,
chkSearchAsYouType:true,
chkSearchInTitle:true,
chkSearchInText:true,
chkSearchInTags:true,
chkSearchExtendedFields:true,
txtItemsPerPage:itemsPerPageDefault,
txtItemsPerPageWithPreview:itemsPerPageWithPreviewDefault};
for (var n in opts)
if (config.options[n] == undefined) config.options[n] = opts[n];
//----------------------------------------------------------------------------
// Shadow Tiddlers
//----------------------------------------------------------------------------
config.shadowTiddlers.AdvancedOptions += "\n<<option chkUseYourSearch>> Use 'Your Search' //([[more options|YourSearch Options]]) ([[help|YourSearch Help]])// ";
config.shadowTiddlers["YourSearch Help"] =
"!Field Search\nWith the Field Search you can restrict your search to certain fields of a tiddler, e.g"+
" only search the tags or only the titles. The general form is //fieldname//'':''//textToSearch// (e."+
"g. {{{title:intro}}}). In addition one-character shortcuts are also supported for the standard field"+
"s {{{title}}}, {{{text}}} and {{{tags}}}:\n|!What you want|!What you type|!Example|\n|Search ''titles "+
"only''|start word with ''!''|{{{!jonny}}} (shortcut for {{{title:jonny}}})|\n|Search ''contents/text "+
"only''|start word with ''%''|{{{%football}}} (shortcut for {{{text:football}}})|\n|Search ''tags only"+
"''|start word with ''#''|{{{#Plugin}}} (shortcut for {{{tags:Plugin}}})|\n\nUsing this feature you may"+
" also search the extended fields (\"Metadata\") introduced with TiddlyWiki 2.1, e.g. use {{{priority:1"+
"}}} to find all tiddlers with the priority field set to \"1\".\n\nYou may search a word in more than one"+
" field. E.g. {{{!#Plugin}}} (or {{{title:tags:Plugin}}} in the \"long form\") finds tiddlers containin"+
"g \"Plugin\" either in the title or in the tags (but does not look for \"Plugin\" in the text). \n\n!Boole"+
"an Search\nThe Boolean Search is useful when searching for multiple words.\n|!What you want|!What you "+
"type|!Example|\n|''All words'' must exist|List of words|{{{jonny jeremy}}} (or {{{jonny and jeremy}}}"+
")|\n|''At least one word'' must exist|Separate words by ''or''|{{{jonny or jeremy}}}|\n|A word ''must "+
"not exist''|Start word with ''-''|{{{-jonny}}} (or {{{not jonny}}})|\n\n''Note:'' When you specify two"+
" words, separated with a space, YourSearch finds all tiddlers that contain both words, but not neces"+
"sarily next to each other. If you want to find a sequence of word, e.g. '{{{John Brown}}}', you need"+
" to put the words into quotes. I.e. you type: {{{\"john brown\"}}}.\n\nUsing parenthesis you may change "+
"the default \"left to right\" evaluation of the boolean search. E.g. {{{not (jonny or jeremy)}}} finds"+
" all tiddlers that contain neither \"jonny\" nor \"jeremy. In contrast to this {{{not jonny or jeremy}}"+
"} (i.e. without parenthesis) finds all tiddlers that either don't contain \"jonny\" or that contain \"j"+
"eremy\".\n\n!'Exact Word' Search\nBy default a search result all matches that 'contain' the searched tex"+
"t. E.g. if you search for {{{Task}}} you will get all tiddlers containing 'Task', but also '~Complet"+
"edTask', '~TaskForce' etc.\n\nIf you only want to get the tiddlers that contain 'exactly the word' you"+
" need to prefix it with a '='. E.g. typing '=Task' will find the tiddlers that contain the word 'Tas"+
"k', ignoring words that just contain 'Task' as a substring.\n\n!~CaseSensitiveSearch and ~RegExpSearch"+
"\nThe standard search options ~CaseSensitiveSearch and ~RegExpSearch are fully supported by YourSearc"+
"h. However when ''~RegExpSearch'' is on Filtered and Boolean Search are disabled.\n\nIn addition you m"+
"ay do a \"regular expression\" search even with the ''~RegExpSearch'' set to false by directly enterin"+
"g the regular expression into the search field, framed with {{{/.../}}}. \n\nExample: {{{/m[ae][iy]er/"+
"}}} will find all tiddlers that contain either \"maier\", \"mayer\", \"meier\" or \"meyer\".\n\n!~JavaScript E"+
"xpression Filtering\nIf you are familiar with JavaScript programming and know some TiddlyWiki interna"+
"ls you may also use JavaScript expression for the search. Just enter a JavaScript boolean expression"+
" into the search field, framed with {{{ { ... } }}}. In the code refer to the variable tiddler and e"+
"valuate to {{{true}}} when the given tiddler should be included in the result. \n\nExample: {{{ { tidd"+
"ler.modified > new Date(\"Jul 4, 2005\")} }}} returns all tiddler modified after July 4th, 2005.\n\n!Com"+
"bined Search\nYou are free to combine the various search options. \n\n''Examples''\n|!What you type|!Res"+
"ult|\n|{{{!jonny !jeremy -%football}}}|all tiddlers with both {{{jonny}}} and {{{jeremy}}} in its tit"+
"les, but no {{{football}}} in content.|\n|{{{#=Task}}}|All tiddlers tagged with 'Task' (the exact wor"+
"d). Tags named '~CompletedTask', '~TaskForce' etc. are not considered.|\n\n!Access Keys\nYou are encour"+
"aged to use the access keys (also called \"shortcut\" keys) for the most frequently used operations. F"+
"or quick reference these shortcuts are also mentioned in the tooltip for the various buttons etc.\n\n|"+
"!Key|!Operation|\n|{{{Alt-F}}}|''The most important keystroke'': It moves the cursor to the search in"+
"put field so you can directly start typing your query. Pressing {{{Alt-F}}} will also display the pr"+
"evious search result. This way you can quickly display multiple tiddlers using \"Press {{{Alt-F}}}. S"+
"elect tiddler.\" sequences.|\n|{{{ESC}}}|Closes the [[YourSearch Result]]. When the [[YourSearch Resul"+
"t]] is already closed and the cursor is in the search input field the field's content is cleared so "+
"you start a new query.|\n|{{{Alt-1}}}, {{{Alt-2}}},... |Pressing these keys opens the first, second e"+
"tc. tiddler from the result list.|\n|{{{Alt-O}}}|Opens all found tiddlers.|\n|{{{Alt-P}}}|Toggles the "+
"'Preview Text' mode.|\n|{{{Alt-'<'}}}, {{{Alt-'>'}}}|Displays the previous or next page in the [[Your"+
"Search Result]].|\n|{{{Return}}}|When you have turned off the 'as you type' search mode pressing the "+
"{{{Return}}} key actually starts the search (as does pressing the 'search' button).|\n\n//If some of t"+
"hese shortcuts don't work for you check your browser if you have other extensions installed that alr"+
"eady \"use\" these shortcuts.//";
config.shadowTiddlers["YourSearch Options"] =
"|>|!YourSearch Options|\n|>|<<option chkUseYourSearch>> Use 'Your Search'|\n|!|<<option chkPreviewText"+
">> Show Text Preview|\n|!|<<option chkSearchAsYouType>> 'Search As You Type' Mode (No RETURN required"+
" to start search)|\n|!|Default Search Filter:<<option chkSearchInTitle>>Title ('!') <<option chk"+
"SearchInText>>Text ('%') <<option chkSearchInTags>>Tags ('#') <<option chkSearchExtendedFiel"+
"ds>>Extended Fields<html><br><font size=\"-2\">The fields of a tiddlers that are searched when you don"+
"'t explicitly specify a filter in the search text <br>(Explictly specify fields using one or more '!"+
"', '%', '#' or 'fieldname:' prefix before the word/text to find).</font></html>|\n|!|Number of items "+
"on search result page: <<option txtItemsPerPage>>|\n|!|Number of items on search result page with pre"+
"view text: <<option txtItemsPerPageWithPreview>>|\n";
config.shadowTiddlers["YourSearchStyleSheet"] =
"/***\n!~YourSearchResult Stylesheet\n***/\n/*{{{*/\n.yourSearchResult {\n\tposition: absolute;\n\twidth: 800"+
"px;\n\n\tpadding: 0.2em;\n\tlist-style: none;\n\tmargin: 0;\n\n\tbackground: #ffd;\n\tborder: 1px solid DarkGra"+
"y;\n}\n\n/*}}}*/\n/***\n!!Summary Section\n***/\n/*{{{*/\n.yourSearchResult .summary {\n\tborder-bottom-width:"+
" thin;\n\tborder-bottom-style: solid;\n\tborder-bottom-color: #999999;\n\tpadding-bottom: 4px;\n}\n\n.yourSea"+
"rchRange, .yourSearchCount, .yourSearchQuery {\n\tfont-weight: bold;\n}\n\n.yourSearchResult .summary ."+
"button {\n\tfont-size: 10px;\n\n\tpadding-left: 0.3em;\n\tpadding-right: 0.3em;\n}\n\n.yourSearchResult .summa"+
"ry .chkBoxLabel {\n\tfont-size: 10px;\n\n\tpadding-right: 0.3em;\n}\n\n/*}}}*/\n/***\n!!Items Area\n***/\n/*{{{*"+
"/\n.yourSearchResult .marked {\n\tbackground: none;\n\tfont-weight: bold;\n}\n\n.yourSearchItem {\n\tmargin-to"+
"p: 2px;\n}\n\n.yourSearchNumber {\n\tcolor: #808080;\n}\n\n\n.yourSearchTags {\n\tcolor: #008000;\n}\n\n.yourSearc"+
"hText {\n\tcolor: #808080;\n\tmargin-bottom: 6px;\n}\n\n/*}}}*/\n/***\n!!Footer\n***/\n/*{{{*/\n.yourSearchFoote"+
"r {\n\tmargin-top: 8px;\n\tborder-top-width: thin;\n\tborder-top-style: solid;\n\tborder-top-color: #999999;"+
"\n}\n\n.yourSearchFooter a:hover{\n\tbackground: none;\n\tcolor: none;\n}\n/*}}}*/\n/***\n!!Navigation Bar\n***/"+
"\n/*{{{*/\n.yourSearchNaviBar a {\n\tfont-size: 16px;\n\tmargin-left: 4px;\n\tmargin-right: 4px;\n\tcolor: bla"+
"ck;\n\ttext-decoration: underline;\n}\n\n.yourSearchNaviBar a:hover {\n\tbackground-color: none;\n}\n\n.yourSe"+
"archNaviBar .prev {\n\tfont-weight: bold;\n\tcolor: blue;\n}\n\n.yourSearchNaviBar .currentPage {\n\tcolor: #"+
"0044BB;\n\tfont-weight: bold;\n\ttext-decoration: none;\n}\n\n.yourSearchNaviBar .next {\n\tfont-weight: bold"+
";\n\tcolor: blue;\n}\n/*}}}*/\n";
config.shadowTiddlers["YourSearchResultTemplate"] =
"<!--\n{{{\n-->\n<span macro=\"yourSearch if found\">\n<!-- The Summary Header ============================"+
"================ -->\n<table class=\"summary\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\">"+
"<tbody>\n <tr>\n\t<td align=\"left\">\n\t\tYourSearch Result <span class=\"yourSearchRange\" macro=\"yourSearc"+
"h itemRange\"></span>\n\t\t of <span class=\"yourSearchCount\" macro=\"yourSearch count\"></span>\n"+
"\t\tfor <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>\n\t</td>\n\t<td class=\"yourSea"+
"rchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch chkPreviewText\"></span><span class=\"chkBoxLabel"+
"\">preview text</span>\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch openAllButton\"></span>\n\t\t<span macro=\"yourSearch lin"+
"kButton 'YourSearch Options' options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkB"+
"utton 'YourSearch Help' help 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch clo"+
"seButton\"></span>\n\t</td>\n </tr>\n</tbody></table>\n\n<!-- The List of Found Tiddlers ================="+
"=========================== -->\n<div id=\"yourSearchResultItems\" itemsPerPage=\"25\" itemsPerPageWithPr"+
"eview=\"10\"></div>\n\n<!-- The Footer (with the Navigation) ==========================================="+
"= -->\n<table class=\"yourSearchFooter\" border=\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody"+
">\n <tr>\n\t<td align=\"left\">\n\t\tResult page: <span class=\"yourSearchNaviBar\" macro=\"yourSearch naviBar"+
"\"></span>\n\t</td>\n\t<td align=\"right\"><span macro=\"yourSearch version\"></span>, <span macro=\"yourSearc"+
"h copyright\"></span>\n\t</td>\n </tr>\n</tbody></table>\n<!-- end of the 'tiddlers found' case ========="+
"================================== -->\n</span>\n\n\n<!-- The \"No tiddlers found\" case ================="+
"========================== -->\n<span macro=\"yourSearch if not found\">\n<table class=\"summary\" border="+
"\"0\" width=\"100%\" cellspacing=\"0\" cellpadding=\"0\"><tbody>\n <tr>\n\t<td align=\"left\">\n\t\tYourSearch Resu"+
"lt: No tiddlers found for <span class=\"yourSearchQuery\" macro=\"yourSearch query\"></span>.\n\t</td>\n\t<t"+
"d class=\"yourSearchButtons\" align=\"right\">\n\t\t<span macro=\"yourSearch newTiddlerButton\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Options'"+
" options 'Configure YourSearch'\"></span>\n\t\t<span macro=\"yourSearch linkButton 'YourSearch Help' help"+
" 'Get help how to use YourSearch'\"></span>\n\t\t<span macro=\"yourSearch closeButton\"></span>\n\t</td>\n <"+
"/tr>\n</tbody></table>\n</span>\n\n\n<!--\n}}}\n-->\n";
config.shadowTiddlers["YourSearchItemTemplate"] =
"<!--\n{{{\n-->\n<span class='yourSearchNumber' macro='foundTiddler number'></span>\n<span class='yourSea"+
"rchTitle' macro='foundTiddler title'/></span> - \n<span class='yourSearchTags' macro='found"+
"Tiddler field tags 50'/></span>\n<span macro=\"yourSearch if previewText\"><div class='yourSearchText' macro='fo"+
"undTiddler field text 250'/></div></span>\n<!--\n}}}\n-->";
config.shadowTiddlers["YourSearch"] = "<<tiddler [[YourSearch Help]]>>";
config.shadowTiddlers["YourSearch Result"] = "The popup-like window displaying the result of a YourSearch query.";
//----------------------------------------------------------------------------
// Install YourSearch
//----------------------------------------------------------------------------
// Overwrite the TiddlyWiki search handler and verify after a while
// that nobody else has overwritten it.
config.macros.search.handler = myMacroSearchHandler;
var checkForOtherHijacker = function() {
// Check that still our search handler is installed
if (config.macros.search.handler != myMacroSearchHandler) {
alert(
"Message from YourSearchPlugin:\n\n\nAnother plugin has disabled the 'Your Search' features.\n\n\nYou may "+
"disable the other plugin or change the load order of \nthe plugins (by changing the names of the tidd"+
"lers)\nto enable the 'Your Search' features.");
}
};
setTimeout(checkForOtherHijacker, 5000);
// === Public API =================================
abego.YourSearch.getStandardRankFunction = function() {
return standardRankFunction;
};
abego.YourSearch.getRankFunction = function() {
return abego.YourSearch.getStandardRankFunction();
};
abego.YourSearch.getCurrentTiddler = function() {
return currentTiddler;
};
abego.YourSearch.closeResult = function() {
closeResult();
}
})();
} // of "install only once"
// Used Globals (for JSLint) ==============
// ... JavaScript Core
/*global alert,clearTimeout,confirm */
// ... TiddlyWiki Core
/*global Tiddler, applyHtmlMacros, clearMessage, createTiddlyElement, createTiddlyButton, createTiddlyText, ensureVisible ,findPosX, highlightHack, findPosY,findWindowWidth, invokeMacro, saveChanges, refreshElements, story */
//}}}
/***
!Licence and Copyright
Copyright (c) abego Software ~GmbH, 2005-2006 ([[www.abego-software.de|http://www.abego-software.de]])
Redistribution and use in source and binary forms, with or without modification,
are permitted provided that the following conditions are met:
Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.
Redistributions in binary form must reproduce the above copyright notice, this
list of conditions and the following disclaimer in the documentation and/or other
materials provided with the distribution.
Neither the name of abego Software nor the names of its contributors may be
used to endorse or promote products derived from this software without specific
prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY
EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT
SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR
BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
***/
Extrait de « Les yeux ouverts » de Marguerite Yourcenar - Entretiens avec Matthieu Galley_- 1993 – Livre de poche.
La première idée qu'on s'en est faite en France remonte à une lettre que j'ai publiée dans Le Monde, je crois, au sujet du massacre des phoques. En réalité, ma participation constante à ce genre d'efforts a commencé beaucoup plus tôt, mais ''le massacre des phoques nouveau-nés a justement frappé l'imagination des masses. C'est devenu l'un des symboles de notre brutalité envers la nature, pour des raisons futiles et indéfendables. On voit les profiteurs de ces atrocités : quelques compagnies canadiennes et norvégiennes, opérant autour de ~Saint-Pierre-et-Miquelon, de ~Terre-Neuve et dans le Labrador — depuis qu'heureusement la baie de Fundy a été close aux bouchers; quelques compagnies américaines, dans les Pribiloff, vendant aux femmes et quelquefois aux hommes des jaquettes de fourrure qu'ils ne devraient pas acheter, ou d'horribles babioles représentant des petits trolls, des petits animaux plus ou moins comiques, faits d'une touffe de fourrure des bêtes massacrées; il paraît aussi que l'huile de phoque dénaturée entre comme crypto-élément dans certaines margarines. On nous dit que la population locale, qui va assommer les phoques nouveau-nés sur la glace, et parfois les écorche et les découpe à demi vivants (les bêtes épouvantées « font le mort » comme on sait), a besoin de ces sanglants profits pour vivre; qu'on lui trouve donc d'autres industries locales non polluantes : on n'a pas le droit de combiner les maux de l'âge atomique et la sauvagerie de l'âge de la pierre. Nous avons au moins réussi à ce que ni l'Italie, ni l'Allemagne, ni la Hollande n'achètent désormais de fourrures de phoques, et j'espère que la même chose se fera en France, si ce n'est déjà fait. Je trouve atroce d'avoir à penser chaque année, vers la fin de l'hiver, au moment où les mères phoques mettent bas sur la banquise, que ce grand travail naturel s'accomplit au profit d'immédiats massacres, tout comme je ne nourris pas les tourterelles dans mon bois sans penser que soixante millions d'entre elles tomberont cet automne sous les coups des chasseurs. Il faut « limiter la prolifération des espèces », comme disent les gens qui ne songent jamais à limiter la leur. Jusqu'à un certain point, nous sommes tous d'accord, mais je songe aux millions de pigeons migrateurs (passenger pigeons) qui couvraient de leur vol le ciel des ~Etats-Unis : c'est une espèce aujourd'hui éteinte, dont il ne subsiste qu'un misérable spécimen empaillé, dans un musée de la ~Nouvelle-Angleterre, le reste s'étant changé en fricassées et en plumes de chapeaux..
Je me dis souvent que si nous n'avions pas accepté, depuis des générations, de voir étouffer les animaux dans des wagons à bestiaux, ou s'y briser les pattes comme il arrive à tant de vaches ou de chevaux, envoyés à l'abattoir dans des conditions absolument inhumaines, personne, pas même les soldats chargés de les convoyer, n'aurait supporté les wagons plombés des années 1940-1945.'' Si nous étions capables d'entendre le hurlement des bêtes prises à la trappe (toujours pour leurs fourrures) et se rongeant les pattes pour essayer d'échapper, nous ferions sans doute plus attention à l'immense et dérisoire détresse des prisonniers de droit commun — dérisoire parce qu'elle va à l'encontre du but, qui serait de les améliorer, de les rééduquer, de faire d'eux des êtres humains. Et sous les splendides couleurs de l'automne, quand je vois sortir de sa voiture, à la lisière d'un bois pour s'épargner la peine de marcher, un individu chaudement enveloppé dans un vêtement imperméable, avec une « pint » de whisky dans la poche du pantalon et une carabine à lunette pour mieux épier les animaux dont il rapportera le soir la dépouille sanglante, attachée sur son capot, je nie dis que ce brave homme, peut-être bon mari, bon père ou bon fils, se prépare sans le savoir aux « Mylaï » de l'avenir(1). En tout cas, ce n'est plus un homo sapiens.
Le mariage, Agnès, n'est pas un badinage:
A d'austères devoirs le rang de femme engage;
Et vous n'y montez pas, à ce que je prétends,
Pour être libertine et prendre du bon temps.
Votre sexe n'est là que pour la dépendance:
Du côté de la barbe est la toute-puissance.
Bien qu'on soit deux moitiés de la société,
Ces deux moitiés pourtant n'ont point d'égalité;
L'une est moitié suprême, et l'autre subalterne;
L'une en tout est soumise à l'autre, qui gouverne;
Et ce que le soldat, dans son devoir instruit,
Montre d'obéissance au chef qui le conduit,
Le valet à son maître, un enfant à son père,
A son supérieur le moindre petit frère,
N'approche point encor de la docilité,
Et de l'obéissance, et de l'humilité,
Et du profond respect où la femme doit être
Pour son mari, son chef, son seigneur et son maître.
Lorsqu'il jette sur elle un regard sérieux,
Son devoir aussitôt est de baisser les yeux,
Et de n'oser jamais le regarder en face
Que quand d'un doux regard il lui veut faire grâce.
C'est ce qu'entendent mal les femmes d'aujourd'hui;
Mais ne vous gâtez pas sur l'exemple d'autrui.
Gardez-vous d'imiter ces coquettes vilaines
Dont par toute la ville on chante les fredaines,
Et de vous laisser prendre aux assauts du malin,
C'est-à-dire d'ouïr aucun jeune blondin.
Songez qu'en vous faisant moitié de ma personne,
C'est mon honneur, Agnès, que je vous abandonne,
Que cet honneur est tendre et se blesse de peu,
Que sur un tel sujet il ne faut point de jeu;
Et qu'il est aux enfers des chaudières bouillantes
Où l'on plonge à jamais les femmes mal vivantes.
setStylesheet("/***\n!Calendar Styles\n***/\n/**/\n .viewer .calendarHolder {\n margin-left: auto;\n margin-right: auto;\n border: none;\n}\n\n .viewer .calendarHolder table {\n border: none;\n margin: 0;\n}\n\n .viewer .calendarHolder tr {\n border: none;\n vertical-align: top;\n}\n\n .viewer .calendarHolder td {\n border: none;\n vertical-align: top;\n}\n\n .viewer #calendarWrapper {\n width: 21em;\n border: 2px solid #4682b4;\n cursor: pointer;\n}\n\n #calendarWrapper #calendarLine td {\n height: 2.5em;\n}\n\n #calendarWrapper tr {\n border:none;\n}\n\n #calendarWrapper td {\n text-align: center;\n vertical-align: middle;\n width: 14.28%;\n border:none;\n}\n\n #calendarWrapper #calendarHeader td{\n color: #0044BB;\n background-color: #FFF;\n height: 2em;\n}\n\n #calendarWrapper #weekNames td {\n color: #0044BB;\n background-color: #FFF;\n height: 2em;\n}\n\n #calendarWrapper .weekDay {\n background-color: #FFF;\n}\n\n #calendarWrapper .holiDay {\n background-color: #0044BB;\n}\n\n #calendarWrapper .currentDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .currentscheduledDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .workingDay {\n background-color: #FFF;\n}\n\n #calendarWrapper .scheduledDay {\n border: solid orange 2px;\n}\n\n #calendarWrapper .otherMonthDay {\n background-color: #0044BB;\n}\n\n/**/","CalendarStyles");
etStylesheet("/***\n!Calendar Styles\n***/\n/**/\n .viewer .calendarHolder {\n margin-left: auto;\n margin-right: auto;\n border: none;\n}\n\n .viewer .calendarHolder table {\n border: none;\n margin: 0;\n}\n\n .viewer .calendarHolder tr {\n border: none;\n vertical-align: top;\n}\n\n .viewer .calendarHolder td {\n border: none;\n vertical-align: top;\n}\n\n .viewer #calendarWrapper {\n width: 21em;\n border: 2px solid #4682b4;\n cursor: pointer;\n}\n\n #calendarWrapper #calendarLine td {\n height: 2.5em;\n}\n\n #calendarWrapper tr {\n border:none;\n}\n\n #calendarWrapper td {\n text-align: center;\n vertical-align: middle;\n width: 14.28%;\n border:none;\n}\n\n #calendarWrapper #calendarHeader td{\n color: #ffffff;\n background-color: #666;\n height: 2em;\n}\n\n #calendarWrapper #weekNames td {\n color: #ffffff;\n background-color: #87cefa;\n height: 2em;\n}\n\n #calendarWrapper .weekDay {\n background-color: #ccff99;\n}\n\n #calendarWrapper .holiDay {\n background-color: #9acd32;\n}\n\n #calendarWrapper .currentDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .currentscheduledDay {\n border: solid #ff0000 2px;\n font-weight: bold;\n}\n\n #calendarWrapper .workingDay {\n background-color: #999;\n}\n\n #calendarWrapper .scheduledDay {\n border: solid orange 2px;\n}\n\n #calendarWrapper .otherMonthDay {\n background-color: #014;\n}\n\n/**/","CalendarStyles");
# Mon moteur a grillé, __@@color(#3399ff):donc@@ je suis en panne__ (la conséquence est ici exprimée)
# Je suis en panne, __ @@color(#3399ff):car@@ mon moteur a grillé,__ (la cause est ici exprimée)
Le même événement est rapporté. Cependant, les énoncés n'auront pas la même utilisation: au dépanneur qui viendra, on dira la seconde.
Copyright [[Osmosoft|http://www.tiddlywiki.com]]
À la hauteur de l’ergastule, sous un palmier, une voix s’éleva, une voix lamentable et suppliante. Elle murmurait : – « Maître ! oh ! Maître ! »
Hamilcar se retourna, et il aperçut à ses côtés un homme d’apparence abjecte, un de ces misérables vivant au hasard dans la maison.
– « Que veux-tu ? » dit le Suffète.
L’esclave, qui tremblait horriblement, balbutia :
– « Je suis son père ! »
Hamilcar marchait toujours ; l’autre le suivait, les reins courbés, les jarrets fléchis, la tête en avant. Son visage était convulsé par une angoisse indicible, et les sanglots qu’il retenait l’étouffaient, tant il avait envie tout à la fois de le questionner et de lui crier : – « Grâce ! »
Enfin il osa le toucher d’un doigt, sur le coude, légèrement.
« Est-ce que tu vas le... ? » Il n’eut pas la force d’achever, et Hamilcar s’arrêta, ébahi de cette douleur.
Il n’avait jamais pensé, – tant l’abîme les séparant l’un de l’autre se trouvait immense, – qu’il pût y avoir entre eux rien de commun. Cela lui parut même une sorte d’outrage et comme un empiétement sur ses privilèges. Il répondit par un regard plus froid et plus lourd que la hache d’un bourreau ; l’esclave s’évanouissant tomba dans la poussière, à ses pieds. Hamilcar enjamba par-dessus.
Les trois hommes en robes noires l’attendaient dans la grande salle, debout contre le disque de pierre. Tout de suite il déchira ses vêtements et il se roulait sur les dalles en poussant des cris aigus :
– « Ah ! pauvre petit Hannibal ! oh ! mon fils ! ma consolation ! mon espoir ! ma vie ! Tuez-moi aussi ! emportez-moi ! Malheur ! malheur ! » Il se labourait la face avec ses ongles, s’arrachait les cheveux et hurlait comme les pleureuses des funérailles. « Emmenez-le donc ! je souffre trop ! allez-vous-en ! tuez-moi comme lui. » Les serviteurs de Moloch s’étonnaient que le grand Hamilcar eût le cœur si faible. Ils en étaient presque attendris.
*[[Textes fantastiques: tableau]]
*[[Sujet de rédaction sur le Masque de la Mort Rouge]]
*[[séances sur les "Textes fantastiques"]]
*[[Masque de la mort rouge]]
* http://www.thanatorama.com : une aventure interactive (plutôt pour adultes)
* http://www.amnesie.net : se joue en ligne, littérairement pauvre, moche.
* http://pagesperso-orange.fr/livresdontvousetesleheros/ : présentation de la collection, solutions
* http://kenny81110.free.fr/: présentation de la collection, détail des mondes, fiches
* http://www.bibliotheque-des-aventuriers.com/ : très bien organisé
* http://www.mongoosepublishing.com/home/detail.php?qsID=357&qsSeries=24 : des feuilles
* http://www.projectaon.org/ : mise en ligne des livres de la collection (anglais, espagnol)
* http://users.skynet.be/fa301409/ldvelhportail/f02-hlja.htm#SIT : historique
* http://www.dmoz.org/World/Fran%C3%A7ais/Jeux/Jeux_de_r%C3%B4le/Livres_dont_vous_%C3%AAtes_le_h%C3%A9ros/ : liens sur dmoz
* http://planete-ldvelh.com/page/ : avec des amateurs
/***
''Version 2.1.0 3/10/06 ''
!Traduction française des messages intégrés dans le TiddlyWiki de base de JeremyRuston, à jour avec la version 2.1.0
__NDT:__
^^Toute traduction peut-être discutée. Celle-ci a été faite en pensant à un utilisateur non spécialiste.
D'où les choix :
| //tiddler -> élément<<br>>tag, to tag -> index, indexer<<br>>plugin -> extension<<br>>empty file template -> fichier de base "empty.html"//<<br>>Mais :<<br>>//backup -> backup//<<br>>(traduire ce terme consacré introduirait des confusions) |
//Traduction// Jacques Turbé : http://avm.free.fr//TiddlyWiki-fr.html ^^
Avec la version 2.1.0 de TiddlyWiki apparaissent deux nouvelles fonctions intégrées :
''Importations'' et ''Extensions'' : Les boutons d'appel correspondants sont ajoutés au bas de votre OptionPanel par le code suivant : {{{[[Importations|ImportTiddlers]]}}} et {{{[[Extensions|PluginManager]]}}}
!!!Script de fusion des textes //''pour les versions antérieures à 2.0.11''//
***/
/*{{{*/
if(window.merge == undefined)
{
merge = function(dst,src)
{
for (p in src)
dst[p] = src[p];
return dst;
}
}
/*}}}*/
/***
!!!Chaînes traduites
***/
/*{{{*/
// Messages
merge(config.messages,{
customConfigError: "Problème rencontré pour charger des extensions. Activer le menu 'Extensions' pour les détails",
pluginError: "Erreur: %0",
pluginDisabled: "Extension désactivée en raison de l'index 'systemConfigDisable' tag",
pluginForced: "Exécution forcée en raison de l'index 'systemConfigForce' tag",
pluginVersionError: "Cette extension ne peut être exécutée car elle nécessite une version plus récente de TiddlyWiki",
nothingSelected: "Pas de sélection faite. Il faut sélectionner au moins un item d'abord",
savedSnapshotError: "Cet exemplaire de TiddlyWiki ne semble pas conforme. Reportez-vous à http://www.tiddlywiki.com/#DownloadSoftware",
subtitleUnknown: "(inconnu)",
undefinedTiddlerToolTip: "L'élément '%0' n'est pas encore créé",
shadowedTiddlerToolTip: "L'élément '%0' n'est pas encore créé, mais a un contenu par défaut.",
tiddlerLinkTooltip: "%0 - %1, %2",
externalLinkTooltip: "%0",
noTags: "Il n'y a pas d'éléments indexés",
notFileUrlError: "Les données entrées sont mémorisées pendant cette session. Pour les conserver, il faudra faire une sauvegarde avant de quitter",
cantSaveError: "Sauvegarde impossible : soit votre navigateur ne permet pas de sauvegarder les changements (préférez FireFox si possible), soit l'adresse de votre fichier contient des caractères invalides.",
invalidFileError: "Le fichier '%0' choisi ne semble pas être un TiddlyWiki valide",
backupSaved: "Sauvegarde effectuée",
backupFailed: "Echec de l'enregistrement du backup",
rssSaved: "Flux RSS sauvegardé",
rssFailed: "Echec de l'enregistrement du flux RSS",
emptySaved: "Fichier de base 'empty.html' enregistré",
emptyFailed: "Echec de l'enregistrement du fichier neuf 'empty'",
mainSaved: "Mise à jour du fichier TiddlyWiki enregistrée",
mainFailed: "Echec de l'enregistrement du nouveau fichier TiddlyWiki. Vos modifications ne sont pas enregistrées",
macroError: "Erreur dans la macro <<%0>>",
macroErrorDetails: "Erreur d'exécution de la macro <<%0>>:\n%1",
missingMacro: "Macro non trouvée",
overwriteWarning: "Il y a déjà un élément nommé '%0'. Confirmez pour le remplacer",
unsavedChangesWarning: "ATTENTION! Les dernières modifications de ce TiddlyWiki n'ont pas été enregistrées.\n\nOK pour les enregistrer\nANNULER pour les abandonner",
confirmExit: "--------------------------------\n\nSi vous quittez maintenant vous perdrez les modifications qui n'ont pas été sauvegardées.\n\n--------------------------------",
saveInstructions: "Sauvegarder"});
merge(config.messages.messageClose,{
text: "fermer",
tooltip: "ferme cette zône messages"});
config.messages.dates.months = ["janvier", "février", "mars", "avril", "mai", "juin", "juillet", "août", "septembre", "octobre", "novembre","décembre"];
config.messages.dates.days = ["dimanche", "lundi","mardi", "mercredi", "jeudi", "vendredi", "samedi"];
merge(config.views.wikified.tag,{
labelNoTags: "non indexé",
labelTags: "Index : ",
openTag: "Ouvrir '%0'",
tooltip: "Afficher les éléments indexés avec '%0'",
openAllText: "Ouvrir tous",
openAllTooltip: "Ouvrir tous les éléments de cet index",
popupNone: "Pas d'autres éléments indexés avec '%0'"});
merge(config.views.wikified,{
defaultText: "'%0' n'a pas encore été créé. Double-cliquez pour entrer un texte.",
defaultModifier: "(absent)",
shadowModifier: "(défaut)"});
merge(config.views.editor,{
tagPrompt: "Séparez les index avec un espace (doubles crochets si besoin), ou sélectionnez un index existant",
defaultText: "Entrez le texte de '%0'"});
merge(config.views.editor.tagChooser,{
text: "index",
tooltip: "Sélectionner les index existants à associer à cet élément",
popupNone: "Pas d'index déjà définis",
tagTooltip: "Associer à l'index '%0'"});
merge(config.macros.search,{
label: "chercher",
prompt: "Rechercher dans ce TiddlyWiki",
accessKey: "F",
successMsg: "%0 éléments correspondent à %1",
failureMsg: "Aucun élément ne correspond à %0"});
merge(config.macros.tagging,{
label: "éléments indexés:",
labelNotTag: "pas d'index",
tooltip: "Lister les éléments indexés '%0'"});
merge(config.macros.timeline,{
dateFormat: "DD MMM YYYY"});
merge(config.macros.allTags,{
tooltip: "Afficher les éléments indexés '%0'",
noTags: "Pas d'éléments indexés"});
config.macros.list.all.prompt = "Tous les éléments par ordre alphabétique";
config.macros.list.missing.prompt = "Eléments désignés par un lien mais non créés";
config.macros.list.orphans.prompt = "Eléments ne faisant l'objet d'aucun lien";
config.macros.list.shadowed.prompt = "Eléments ayant un contenu par défaut";
merge(config.macros.closeAll,{
label: "page blanche",
prompt: "Retirer tous les éléments de l'affichage (sauf ceux en cours d'édition)"});
merge(config.macros.permaview,{
label: "permavue",
prompt: "URL de la page actuellement constituée"});
merge(config.macros.saveChanges,{
label: "sauvegarde sur le disque",
prompt: "Créer le fichier TiddlyWiki avec tous les éléments mis à jour - Raccourci : 'S'"});
merge(config.macros.newTiddler,{
label: "nouveau",
prompt: "Créer un nouvel élément",
title: "EntréeNouvelle",
accessKey: "N"});
merge(config.macros.importTiddlers,{
defaultPath: "http://www.tiddlywiki.com/index.html",
fetchLabel: "Accéder",
fetchPrompt: "Accèder au fichier tiddlywiki",
fetchError: "Problèmes rencontrés pour accéder au fichier tiddlywiki",
confirmOverwriteText: "Confirmez l'écrasement de ces éléments :\n\n%0",
wizardTitle: "Importation d'éléments depuis un autre fichier TiddlyWiki",
step1: "Etape 1: Identification du fichier TiddlyWiki",
step1prompt: "Saisir l'URL ou le chemin d'accès: ",
step1promptFile: "...parcourez les fichiers: ",
step1promptFeeds: "...ou sélectionnez une importation prédéfinie: ",
step1feedPrompt: "Choisir...",
step2: "Etape 2: Chargement des éléments du fichier TiddlyWiki",
step2Text: "Patientez pendant le chargement des éléments de: %0",
step3: "Etape 3: Choix des éléments à importer",
step4: "%0 élément(s) importés",
step5: "Terminé",
listViewTemplate: {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Title', field: 'title', title: "Plugin", type: 'String'},
{name: 'Snippet', field: 'text', title: "Extrait", type: 'String'},
{name: 'Tags', field: 'tags', title: "Index", type: 'Tags'}
],
rowClasses: [
],
actions: [
{caption: "Autres actions...", name: ''},
{caption: "Importer ces éléments", name: 'import'}
]}
});
merge(config.macros.newJournal,{
label: "journal",
prompt: "Créer une nouvelle entrée ayant pour titre la date et l'heure",
accessKey: "J"});
merge(config.macros.plugins,{
skippedText: "(Extension non exécutée car ajoutée depuis le début de cette session)",
noPluginText: "Il n'y a pas d'extensions installées",
confirmDeleteText: "Confirmez-vous la suppression de ces éléments:\n\n%0",
listViewTemplate : {
columns: [
{name: 'Selected', field: 'Selected', rowName: 'title', type: 'Selector'},
{name: 'Title', field: 'title', tiddlerLink: 'title', title: "Extension", type: 'TiddlerLink'},
{name: 'Forced', field: 'forced', title: "Forcée", tag: 'systemConfigForce', type: 'TagCheckbox'},
{name: 'Disabled', field: 'disabled', title: "Désactivée", tag: 'systemConfigDisable', type: 'TagCheckbox'},
{name: 'Executed', field: 'executed', title: "Chargée", type: 'Boolean', trueText: "Yes", falseText: "No"},
{name: 'Error', field: 'error', title: "Etat", type: 'Boolean', trueText: "Error", falseText: "OK"},
{name: 'Log', field: 'log', title: "Log", type: 'StringList'}
],
rowClasses: [
{className: 'error', field: 'error'},
{className: 'warning', field: 'warning'}
],
actions: [
{caption: "Autres actions...", name: ''},
{caption: "Supprimer l'index systemConfig", name: 'remove'},
{caption: "Supprimer définitivement ces extensions", name: 'delete'}
]}
});
merge(config.commands.closeTiddler,{
text: "fermer",
tooltip: "Retirer cet élément de l'affichage"});
merge(config.commands.closeOthers,{
text: "isoler",
tooltip: "Refermer tous les autres éléments"});
merge(config.commands.editTiddler,{
text: "éditer",
tooltip: "Editer cet élément",
readOnlyText: "voir",
readOnlyTooltip: "Montrer le texte source de cet élément"});
merge(config.commands.saveTiddler,{
text: "valider",
tooltip: "Enregistrer les modifications apportées à cet élément"});
merge(config.commands.cancelTiddler,{
text: "annuler",
tooltip: "Abandonner les modifications apportées à cet élément",
warning: "Confirmez-vous l'abandon des modifications de '%0'?",
readOnlyText: "retour",
readOnlyTooltip: "Revenir à l'affichage normal de cet élément"});
merge(config.commands.deleteTiddler,{
text: "supprimer",
tooltip: "Supprimer cet élément du fichier TiddlyWiki",
warning: "Confirmez-vous la suppression de '%0'?"});
merge(config.commands.permalink,{
text: "permalien",
tooltip: "Permalien de cet élément"});
merge(config.commands.references,{
text: "référents",
tooltip: "Lister les éléments faisant référence à celui-ci",
popupNone: "Pas de référents"});
merge(config.commands.jump,{
text: "atteindre",
tooltip: "Positionner l'affichage sur un autre élément déjà ouvert"});
merge(config.shadowTiddlers,{
DefaultTiddlers: "PourCommencer",
MainMenu: "PourCommencer",
SiteTitle: "Mon TiddlyWiki",
SiteSubtitle: "organiseur personnel web interactif",
SiteUrl: "http://www.tiddlywiki.com/",
PourCommencer: "Pour utiliser ce carnet TiddlyWiki, commencez par modifier les éléments suivants (//tiddlers// dans le jargon TiddlyWiki) :\n\n* SiteTitle & SiteSubtitle: Le titre et le sous-titre ci-dessus (après sauvegarde et rafraîchissement ils deviendront votre titre de page, qui s'affichera aussi dans la barre titre du navigateur)\n* MainMenu: Le menu (généralement à gauche)\n* DefaultTiddlers: Liste les noms des éléments que vous voulez voir s'afficher à l'ouverture de votre TiddlyWiki. \n\nEntrez également le nom utilisateur avec lequel seront signées chacune de vos entrées : <<option txtUserName>>",
SideBarOptions: "<<search>><<closeAll>><<permaview>><<newTiddler>><<newJournal 'DD MMM YYYY'>><<saveChanges>><<slider chkSliderOptionsPanel OptionsPanel 'options »' 'Modifier les options avancées de ce TiddlyWiki'>>",
OptionsPanel: "Vos options de configuration de TiddlyWiki sont sauvegardées par votre navigateur (cookies).\n\nNom d'utilisateur pour signer vos entrées : entrez-le sous la forme d'un nom Wiki (par exemple RaymondQueneau).<<option txtUserName>>\n<<option chkSaveBackups>>Backup de chaque version\n<<option chkAutoSave>>Sauvegarde automatique après chaque entrée validée>>\n<<option chkRegExpSearch>>Expression régulières dans les recherches\n<<option chkCaseSensitiveSearch>>Respecter la casse dans les recherches\n<<option chkAnimate>>Ouverture animée des éléments\n-----\n[[Importations|ImportTiddlers]]\n[[Extensions|PluginManager]]\n[[Options complémentaires|AdvancedOptions]]",
AdvancedOptions: "<<option chkGenerateAnRssFeed>> Création flux RSS\n<<option chkOpenInNewWindow>> Ouverture des liens externes dans une nouvelle fenêtre\n<<option chkSaveEmptyTemplate>> Sauvegarde du fichier de base 'empty.html' de la dernière version\n<<option chkToggleLinks>> Recliquer sur un lien ferme l'élément qu'il a ouvert\n^^(hors fonction en appuyant sur la touche Ctrl)^^\n<<option chkHttpReadOnly>> Masque les fonctions d'édition lorsque le fichier est accédé depuis le Web\n<<option chkForceMinorUpdate>> L'entrée d'une modification ne modifie pas la date et l'heure déjà enregistrées pour l'élément\n^^(hors fonction en cliquant 'valider' avecla touche Maj enfoncée, ou en appuyant Ctrl-Maj-Entrée^^\n<<option chkConfirmDelete>> Confirmations avant suppressions\nNombre maximum de lignes de la fenêtre d'édition: <<option txtMaxEditRows>>\nRépertoire des backups : <<option txtBackupFolder>>\n",
SideBarTabs: "<<tabs txtMainTab Chrono 'Affichage chronologique' TabTimeline Alpha 'Liste alphabétique des éléments' TabAll Index 'Liste des index' TabTags Suite 'Autres listes' TabMore>>",
TabTimeline: "<<timeline>>",
TabAll: "<<list all>>",
TabTags: "<<allTags>>",
TabMore: "<<tabs txtMoreTab Manquants 'Eléments désignés par un lien mais non créés' TabMoreMissing Orphelins 'Eléments sans liens pour les appeler' TabMoreOrphans Défauts 'Eléments ayant un contenu par défaut' TabMoreShadowed>>",
TabMoreMissing: "<<list missing>>",
TabMoreOrphans: "<<list orphans>>",
TabMoreShadowed: "<<list shadowed>>"});
/*}}}*/
<html>
<iframe src="http://www.google.com/calendar/embed?src=n341o8oln68pam7lt7ihdog6hk%40group.calendar.google.com&ctz=Europe/Paris" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>
</html>
[[Ballade de celui qui chanta dans les supplices, Louis Aragon]]
version.extensions.smileyMacro = {major: 0, minor: 1, revision: 0, date: new Date(2005,7,20)};
//Author: Alan Hecht
config.macros.smiley = {}
config.macros.smiley.handler = function(place,macroName,params)
{
var palette = ["transparent","#000000","#1a1507","#352e18","#464646","#666666","#a3141e","#b06b63","#cc9900","#dd9030","#dddddd","#e89d00","#edc32a","#f3cb3c","#fdf201","#fdf526","#ff3149","#ffac00","#ffbf06","#ffc846","#ffcc66","#ffd758","#ffdd01","#ffea7b","#ffed55","#ffffff"];
var data = params;
var imageMap = null;
if(data[0] == ":-)" || data[0] == ":)")
imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyffyffuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwboooowwwbllbbwwwboooowbrllbacwwwbbbbbrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";
else if(data[0] == ":-(" || data[0] == ":(")
imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyyyyyyuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwoooooowwrllbbwwwwbbbbbsrllbacwwbwwwwsbllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";
else if(data[0] == ";-)" || data[0] == ";)")
imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyxxxxxuujbaadyyyxxxeetttdabppphddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwboooowwwbllbbwwwboooowbrllbacwwwbbbbbrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";
else if(data[0] == ":-|" || data[0] == ":|")
imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyffyffuujbaadyyyeeyeetttdabppppddyddpmmlbbwoooooooowsrlbbwwpooooowwmrlbbwwoooooowwrllbbwwwwbbbbbsrllbacwwwwwwwsrllcaablswwwwsrrlibaaablsssrrllibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";
else if(data[0] == ":-D" || data[0] == ":D")
imageMap = "aaaaabbbbbaaaaaaaabdtyyvtdbaaaaabnyxxxxxujbaaabmyyeeyeeuujbaadyyyeeyeetttdabppppyyyyypmmlbbwbbbbbbbbbbblbbwbkzzzzzzzkbwbbwbfzzzzzzzfbwbbwbkzzzzzzzkbwbacwbkzzzzzkblcaablsbkzzzkblibaaablsbbbbblibaaaaabcrrlllcbaaaaaaaabbbbbaaaaa";
else
createTiddlyElement(place,"span",null,"errorNoSuchMacro","unknown smiley");
if(imageMap)
{
var box = createTiddlyElement(place,"span",null,"smiley",String.fromCharCode(160));
box.style.position = "relative";
box.style.width = "15px";
box.style.height = "15px";
box.style.marginLeft = "1px";
box.style.marginRight = "1px";
box.style.paddingRight = "12px";
box.style.verticalAlign = "top";
//now divide into 15x15 grid and create each pixel
// rows
for(r=0; r<15; r++)
{
// columns
for(c=0; c<15; c++)
{
//create each pixel with the correct background
var pix = document.createElement("img");
pix.className = "smileyPixel";
pix.style.position = "absolute";
pix.border = 0;
pix.style.top = r + "px";
pix.style.left = c + "px";
pix.style.width = "1px";
pix.style.height = "1px";
pix.style.backgroundColor = palette[imageMap.charCodeAt((r*15)+c)-97];
pix.src = "data:image/gif,GIF89a%01%00%01%00%91%FF%00%FF%FF%FF%00%00%00%C0%C0%C0%00%00%00!%F9%04%01%00%00%02%00%2C%00%00%00%00%01%00%01%00%40%02%02T%01%00%3B";
box.appendChild(pix);
}
}
}
}
S2: Le Maître et Marguerite.
(Dans ce texte, on passe du champs lexical de la féérie à celui de l'étrangeté)
Il existe 2 genres littéraires apparentés: le merveilleux et le fantastique.
Les deux présentent des actions, des événements irréels.
Mais les événements « fantastiques » surprennent et effraient les personnages et les lecteurs: ils rompent la normalité.
Dans le « merveilleux », ces événements sont normaux.
Séance 3: Le masque de la Mort Rouge.
Le ps marque une action achevée (qui a une fin). On dit souvent que c'est une action brève ou unique.
L'imparfait marque une action « inachevée » (dont le début et la fin n'intéressent pas).
Les deux dans le même texte: l'imparfait marque les actions « d'arrière plan », le ps les actions « de premier plan »→ description/ récit
Le passé simple marque une action brève et unique.
Irruption de l'action est toujours au ps (dans un récit au passé).
On repère l' Elément Déclencheur
Le 1er § est écrit au présent avec une valeur de « présent de narration » ( dans un récit au passé, il est utilisé au lieu du ps et de l'impft, pour « actualiser » l'action)
Symboliques
La couleur noire connote la mort
La couleur rouge connote la passion ou le sang.
La chambre est située à l'Ouest, pays des morts.
Mettre le 1er § du texte au passé: impft ou au ps ?
Le passé simple marque une action « datée ».
Exemple: Le général attaqua l'armée qui s'enfuyait.
→ Le général attaqua l'armée qui s'enfuit (la fuite est la consq de l'attaque)
S5: Dracula
Pourquoi ce texte est-il fantastique ?
la forme du texte: journal du narrateur. Cela induit un point de vue interne. Accent sur ses impressions. Pas de dialogues (→ cela laisse la place à ses pensées et à ses peurs).
Minuit
Un personnage, le cocher, qui est mystérieux: le narrateur ne voit pas son visage; il semble parler aux animaux dans leur langue (il n'est pas seulement humain)
Evénements étranges: la couverture semble se mettre seule.
« Une couverture fut jetée »: tournure passive – sans complément d'agent (par qui ?). C'est comme la couverture se mouvait d'elle-même (animée).
Signes d'un passage dans un autre monde: avertissements.
Les hurlements des chiens qui laissent place aux hurlements des loups.
Champs lexical de l'inquiétude
Signes qu'il rentre dans un autre univers: déjà, il est dans un labyrinthe.
He's drinking (a glass of wine)
Présent à valeur d'énonciation: ce qu'il fait au moment où je parle
he drinks (wine)
présent de vérité générale: ce qu'il a l'habitude de faire
présent de narration (serait utilisé dans un récit au passé...)
|indicatif présent| >>>> |indicatif imparfait|
|indicatif passé composé| >>>> |indicatif plus-que-parfait|
|indicatiff futur simple | >>>> |conditionnel présent|
|indicatif futur antérieur| >>>> |conditionnel passé|
|subjonctif présent| >>>> |subjonctif imparfait|
|subjonctif imparfait| >>>> |subjonctif plus-que-parfait|
!!Eugène Pottier, Jean Misère — Chants révolutionnaires
À Henri ROCHEFORT
Décharné, de haillons vêtu,
Fou de fièvre, au coin d’un impasse,
Jean Misère s’est abattu.
« Douleur, dit-il, n’es-tu pas lasse ? »
Ah ! mais...
Ça ne finira donc jamais ?...
Pas un astre et pas un ami !
La place est déserte et perdue.
S’il faisait sec, j’aurais dormi,
Il pleut de la neige fondue.
Ah ! mais...
Ça ne finira donc jamais ?...
Est-ce la fin, mon vieux pavé ?
Tu vois : ni gîte, ni pitance,
Ah ! la poche au fiel a crevé ;
Je voudrais vomir l’existence.
Ah ! mais...
Ça ne finira donc jamais ?...
Je fus bon ouvrier tailleur.
Vieux, que suis-je ? une loque immonde.
C’est l’histoire du travailleur,
Depuis que notre monde est monde.
Ah ! mais...
Ça ne finira donc jamais ?...
Maigre salaire et nul repos,
Il faut qu’on s’y fasse ou qu’on crève,
Bonnets carrés et chassepots
Ne se mettent jamais en grève.
Ah ! mais...
Ça ne finira donc jamais ?...
Malheur ! ils nous font la leçon,
Ils prêchent l’ordre et la famille ;
Leur guerre a tué mon garçon,
Leur luxe a débauché ma fille !
Ah ! mais...
Ça ne finira donc jamais ?...
De ces détrousseurs inhumains,
L’Église bénit les sacoches ;
Et leur bon Dieu nous tient les mains
Pendant qu’on fouille dans nos poches.
Ah ! mais...
Ça ne finira donc jamais ?...
Un jour, le Ciel s’est éclairé,
Le soleiil a lui dans mon bouge ;
J’ai pris l’arme d’un fédéré
Et j’ai suivi le drapeau rouge.
Ah ! mais...
Ça ne finira donc jamais ?...
Mais, par mille on nous coucha bas ;
C’était sinistre au clair de lune ;
Quand on m’a retiré du tas,
J’ai crié : Vive la Commune !
Ah ! mais...
Ça ne finira donc jamais ?...
Adieu, martyrs de Satory,
Adieu, nos châteaux en Espagne !
Ah ! mourons !... ce monde est pourri ;
On en sort comme on sort d’un bagne.
Ah ! mais...
Ça ne finira donc jamais ?...
A la morgue on coucha son corps,
Et tous les jours, dalles de pierre,
Vous étalez de nouveaux morts :
Les Otages de la misère !
Ah ! mais...
Ça ne finira donc jamais ?...
Paris, 1880.
!!Souvenir de la nuit du 4, Hugo
Est-ce que ce n'est pas une chose qui navre !
Cria-t-elle ; monsieur, il n'avait pas huit ans !
Ses maîtres, il allait en classe, étaient contents.
Monsieur, quand il fallait que je fisse une lettre,
C'est lui qui l'écrivait. Est-ce qu'on va se mettre
A tuer les enfants maintenant ? Ah ! mon Dieu !
On est donc des brigands ! Je vous demande un peu,
Il jouait ce matin, là, devant la fenêtre !
Dire qu'ils m'ont tué ce pauvre petit être !
Il passait dans la rue, ils ont tiré dessus.
Monsieur, il était bon et doux comme un Jésus.
Moi je suis vieille, il est tout simple que je parte ;
Cela n'aurait rien fait à monsieur Bonaparte
De me tuer au lieu de tuer mon enfant ! -
Elle s'interrompit, les sanglots l'étouffant,
Puis elle dit, et tous pleuraient près de l'aïeule :
- Que vais-je devenir à présent toute seule ?
Expliquez-moi cela, vous autres, aujourd'hui.
Hélas ! je n'avais plus de sa mère que lui.
Pourquoi l'a-t-on tué ? Je veux qu'on me l'explique.
L'enfant n'a pas crié vive la République. -
Nous nous taisions, debout et graves, chapeau bas,
Tremblant devant ce deuil qu'on ne console pas.
!!Les oiseaux de passage
Oh ! vie heureuse des bourgeois ! Qu'avril bourgeonne
Ou que décembre gèle, ils sont fiers et contents.
Ce pigeon est aimé trois jours par sa pigeonne ;
Ca lui suffit, il sait que l'amour n'a qu'un temps.
Ce dindon a toujours béni sa destinée.
Et quand vient le moment de mourir il faut voir
Cette jeune oie en pleurs : " C'est là que je suis née ;
Je meurs près de ma mère et j'ai fait mon devoir. "
Elle a fait son devoir ! C'est à dire que oncque
Elle n'eut de souhait impossible, elle n'eut
Aucun rêve de lune, aucun désir de jonque
L'emportant sans rameurs sur un fleuve inconnu.
Elle ne sentit pas lui courir sous la plume
De ces grands souffles fous qu'on a dans le sommeil,
pour aller voir la nuit comment le ciel s'allume
Et mourir au matin sur le coeur du soleil.
Et tous sont ainsi faits ! Vivre la même vie
Toujours pour ces gens-là cela n'est point hideux
Ce canard n'a qu'un bec, et n'eut jamais envie
Ou de n'en plus avoir ou bien d'en avoir deux.
Aussi, comme leur vie est douce, bonne et grasse !
Qu'ils sont patriarcaux, béats, vermillonnés,
Cinq pour cent ! Quel bonheur de dormir dans sa crasse,
De ne pas voir plus loin que le bout de son nez !
N'avoir aucun besoin de baiser sur les lèvres,
Et, loin des songes vains, loin des soucis cuisants,
Posséder pour tout cœur un viscère sans fièvres,
Un coucou régulier et garanti dix ans !
Oh ! les gens bienheureux !... Tout à coup, dans l'espace,
Si haut qu'il semble aller lentement, un grand vol
En forme de triangle arrive, plane et passe.
Où vont-ils ? Qui sont-ils ? Comme ils sont loin du sol !
Les pigeons, le bec droit, poussent un cri de flûte
Qui brise les soupirs de leur col redressé,
Et sautent dans le vide avec une culbute.
Les dindons d'une voix tremblotante ont gloussé.
Les poules picorant ont relevé la tête.
Le coq, droit sur l'ergot, les deux ailes pendant,
Clignant de l'œil en l'air et secouant la crête,
Vers les hauts pèlerins pousse un appel strident.
Qu'est-ce que vous avez, bourgeois ? soyez donc calmes.
Pourquoi les appeler, sot ? Ils n'entendront pas.
Et d'ailleurs, eux qui vont vers le pays des palmes,
Crois-tu que ton fumier ait pour eux des appas ?
Regardez-les passer ! Eux, ce sont les sauvages.
Ils vont où leur désir le veut, par-dessus monts,
Et bois, et mers, et vents, et loin des esclavages.
L'air qu'ils boivent feraient éclater vos poumons.
Regardez-les ! Avant d'atteindre sa chimère,
Plus d'un, l'aile rompue et du sang plein les yeux,
Mourra. Ces pauvres gens ont aussi femme et mère,
Et savent les aimer aussi bien que vous, mieux.
Pour choyer cette femme et nourrir cette mère,
Ils pouvaient devenir volaille comme vous.
Mais ils sont avant tout les fils de la chimère,
Des assoiffés d'azur, des poètes, des fous.
Ils sont maigres, meurtris, las, harassés. Qu'importe !
Là-haut chante pour eux un mystère profond.
A l'haleine du vent inconnu qui les porte
Ils ont ouvert sans peur leurs deux ailes. Ils vont.
La bise contre leur poitrail siffle avec rage.
L'averse les inonde et pèse sur leur dos.
Eux, dévorent l'abîme et chevauchent l'orage.
Ils vont, loin de la terre, au dessus des badauds.
Ils vont, par l'étendue ample, rois de l'espace.
Là-bas, ils trouveront de l'amour, du nouveau.
Là-bas, un bon soleil chauffera leur carcasse
Et fera se gonfler leur cœur et leur cerveau.
Là-bas, c'est le pays de l'étrange et du rêve,
C'est l'horizon perdu par delà les sommets,
C'est le bleu paradis, c'est la lointaine grève
Où votre espoir banal n'abordera jamais.
Regardez-les, vieux coq, jeune oie édifiante !
Rien de vous ne pourra monter aussi haut qu'eux.
Et le peu qui viendra d'eux à vous, c'est leur fiente.
Les bourgeois sont troublés de voir passer les gueux.
| tiddlyspot password:|<<option pasUploadPassword>>|
| site management:|<<upload http://cartawiki.tiddlyspot.com/store.cgi index.html . . >>//(requires tiddlyspot password)//<<br>>[[control panel|http://cartawiki.tiddlyspot.com/controlpanel]], [[download (go offline)|http://cartawiki.tiddlyspot.com/download]]|
| links:|[[tiddlyspot.com|http://tiddlyspot.com/]], [[FAQs|http://faq.tiddlyspot.com/]], [[announcements|http://announce.tiddlyspot.com/]], [[blog|http://tiddlyspot.com/blog/]], email [[support|mailto:support@tiddlyspot.com]] & [[feedback|mailto:feedback@tiddlyspot.com]], [[donate|http://tiddlyspot.com/?page=donate]]|
Le passé simple marque une action achevée (qui a une fin). On dit souvent que c'est une action brève ou unique.
L'imparfait marque une action « inachevée » (dont le début et la fin n'intéressent pas).
Les deux dans le même texte: l'imparfait marque les actions « d'arrière plan », le passé simple les actions « de premier plan » → description/ récit
This tag flags tiddlers that Wikibar will attempt to install as Add-Ons
« Aurea prima sata est aetas… » -
« En premier apparut l’âge d’or… »
Aurea prima sata est aetas […]
Ipsa quoque immunis rastroque intacta nec ullis
saucia vomeribus per se dabat omnia tellus ;
contentique cibis nullo cogente creatis
arbuteos fetus montanaque fraga legebant
cornaque et in duris haerentia mora rubetis
et quae deciderant patula Jovis arbore glandes.
Ovide, Les Métamorphoses
Un clic gauche sur le lien, puis sélection de "enregistrer la page sous..."
Carnet de 2008-09: http://cartawiki.free.fr/index09.html (en cours)
Carnet de 2007-08: http://cartawiki.free.fr/index08.html (très incomplet)
Carnet de 2006-07: http://cartawiki.free.fr/index07.html (bien fini)