#! /usr/bin/perl ################################################################################ # # # help.cgi # # -------- # # INDIW-2000 / Futurama-prosjektet # # # ################################################################################ # # # This file is © Arne Sommer - rev. 10. May 2000. # # # ################################################################################ use FindBin; use lib "$FindBin::Bin/mylib"; # Get the directory where the program resides, and add the 'mylib' # # subdirectory to the library lookup table. # use CGI; require "lib/misc.pl"; require "lib/cookies.pl"; require "lib/config.pl"; require "lib/language.pl"; ## Language Specific ########################################################### my($lang) = language(); # Get the user's prefered language. # ## Set up the document ######################################################### $q = new CGI; my($header, $user_id) = cookie_header($q); # Set up (parse and maintain) the cookie. # print $header; print start_doc($q, "indifu $h_title{$lang}"); print $q->h2($h_title{$lang}); ## Help topics ################################################################# $h_topic{"en gen"} = "General"; $h_topic{"no gen"} = "Generelt"; $h_topic{"en main"} = "The Main Page"; $h_topic{"no main"} = "Hovedsiden"; $h_topic{"en lang"} = "Language"; $h_topic{"no lang"} = "Språk"; $h_topic{"en col"} = "Colours"; $h_topic{"no col"} = "Farvebruk"; $h_topic{"en reg"} = "Registration"; $h_topic{"no reg"} = "Registrering"; $h_topic{"en story"} = "Reading"; $h_topic{"no story"} = "Lesing"; $h_topic{"en write"} = "Writing"; $h_topic{"no write"} = "Skriving"; $h_topic{"en vote"} = "Voting"; $h_topic{"no vote"} = "Avstemninger"; $h_topic{"en adm"} = "Administration"; $h_topic{"no adm"} = "Administrasjon"; $h_topic{"en back"} = "Background"; $h_topic{"no back"} = "Bakgrunn"; $h_topic{"en logout"} = "Logout"; $h_topic{"no logout"} = "Logge ut"; ## General ##################################################################### # Located in 'lib/language.pl', so that 'index.cgi' can get hold of it. # ## Main ######################################################################## $h_help{"en main"} = < The user can choose to view all the stories (default), or just the stories in english, norwegian, french or german. Future visits will remember this language selection (cookie).

The story table has the following elements:

Then som explaining lines of text are shown, together with the comments links (mailto).

The page ends with general links; 'Add a new story' if the user is one of the super users, 'Logout' which one normally should leave alone, and 'Help' which is the entry point to the help system. END $h_help{"no main"} = < Man kan velge mellom å se alle historiene (default), eller bare å se historier på engelsk, norsk, fransk eller tysk. Fremtidige besøk på siden vil huske språkvalget (cookie).

Tabellen over historiene inneholder følgende elementer:

Deretter kommer noen forklarende tekstlinjer og tilbakemeldingslinker (mailto).

Til slutt kommer generelle linker; 'Legg inn ny historie' hvis man er superbruker, 'Logge ut' som man normal ikke skal bruke, og 'Hjelp' som er inngangen til hjelpeteksten. END ## Language #################################################################### $h_help{"en lang"} = < Preferences -> Navigator -> Languages.)

Tha available languages are:

English is used if the language selction is unused, or if the chosen language(s) are unsupported by indifu. END $h_help{"no lang"}= < Preferences -> Navigator -> Languages.)

Tilgjengelige språk:

Engelsk blir brukt om språkvalget ikke er brukt, eller om valgene ikke støttes av indifu. END ## Colour Usage ################################################################ $h_help{"en col"} = < Otherwise is the colour coding used to highlight important informastion;
Red is used in error messages.
Yellow is used in warnings, e.g. when the system has done something the user did not anticipate. This is not really an error.
Green is used to confirm that the required action went well.
Grey is used to highlight some state reports and warnings.
(The exception to this rule is the administration program, used by the story owners, that shows the status messages for the alternatives to the next part in green if they are authorized for voting, and in red if they are disabled.)

All the links are shown in the colours chosen by the browser, and all links to contents (reading of a story, administration of a story, voting on an alternative to the next part of a story) are url-encoded so that they also are shown in the colouring scheme used on traditional links to static documents.

The pages have white background, and we have used three images in the system, all of them using a blue line; it has been given the "INDIFU Story Site" text on the top of the pages, and acts as a logo. The line on the bottom of the page is ended with a copyright notice. We have also used an unaltered version of the line in some cases to separate different types of contents. END $h_help{"no col"} = < Ellers er farvekoding benyttet for å utheve viktig informasjon;
Rødt brukes for å gi feilmeldinger.
Gult brukes i advarsler, f.eks. når systemet har gjort noe brukeren ikke hadde forventet, uten at det egentlig er noe feil.
Grønt brukes som bekreftelse på at handlingen gikk bra.
Grått brukes til å utheve en del tilstandsmeldinger og advarsler.
(Unntaket fra denne regelen er administrasjonsprogrammet, som brukes av redaktørene, som viser forslag til fortsettelse med grønn statuskode om de er godkjent for avstemning, og i rødt om de er sperret.)

Alle linker vises i de farver browseren er satt opp til å vise dem i, og alle linker til innhold (lesing av historie, administrasjon av historie, stemme på forslag til fortsettelse av historie) er url-kodet slik at de også vil få den samme farvekodingen som tradisjonelle linker til statiske dokumenter.

Vi har benyttet hvit bakgrunn, og tre bilder i systemet, alle bestående av en linje i blått; øverst på siden er den gitt teksten "INDIFU Story Site", og fungerer som logo. Nederst på siden er linjen avsluttet av en liten copyright notis. I tillegg benyttes en ubesudlet variant av linjen i en del sammenhenger for å skille mellom ulike typer innhold. END ## Registration ################################################################ $h_help{"en reg"}= < The system registers the last access time for every user for each story, primarily to give personalisation; the users are only presented with unread parts of the stories. The alternatives for the parts of the stories are registered with the user who submited the text, as is the votes.

Voting and writing requires registration. This is done by giving the system your email address, and entering the password received by email. This registration is done only once, unless the three month time limit is exceeded. This situation can be fixed by entering the email address and the received password in the registration form at the same time. It is also possible just to enter the email address, and the system will send you a new password.

Why Registration?

There are two reasons for this design choice:
  • The user's know that their writings are joined with their names (email address) will reduce the urge to 'tagging' and write irresponsible texts.
  • This ensures that the users only can enter one vote for each part of the story. (This is almost true!)
END $h_help{"no reg"} = < Systemet registrerer siste tidspunkt for aksess av hver historie for alle brukerne. Dette gjøres primært for å gi personalisering; man blir kun presentert for de delene av historiene man ikke har lest før.

For å få tilgang til avstemning og innskriving av fortsettelse må man registreres. Dette skjer ved at man oppgir emailadressen sin til systemet, som så sender et passord tilbake som epost. Dette passordet tastes så inn, og man er registrert. Denne registreringen gjøres kun en gang, med mindre man lar det gå mer enn tre måneder mellom besøkene til sidene. I så fall må man logge seg på på nytt ved å skrive inn emailadressen og det tilsendte passordet samtidig i registreringsskjemaet. Eventuelt kan man oppgi emailadressen, og få tilsendt et nytt passord.

Hvorfor registrering?

Det er to grunner til dette designvalget:
  • Det at brukerne vet at det de skriver sammenholdes mot navnet deres (emailadressen) vil redusere lysten til 'tagging' og useriøse tekster.
  • Det sikrer at brukerne bare kan legge in en stemme for hver del av historien. (Dette er nesten sant!)
END ## Reading ##################################################################### $h_help{"en story"} = < The form to enter an alternative for the next part of the story is shown if the story is in writng mode, and the alternatives to vote on are shown if it is in voting mode. Nothing is shown if the story is suspended or finished. END $h_help{"no story"} = < Feltet for å skrive inn et forslag til fortsettelse vises hvis historien er i skrivemodus, og alternativene som man kan stemme over vises om Hvis historien er åpen for å skrive fortsettelse vil linken 'Skriv fortsettelsen' vises, mens linken 'Stem på en fortsettelse' vises om den er i stemmemodus. Ingenting vises om historien er pauset eller avsluttet. END ## Writing ##################################################################### $h_help{"en write"} = < The last part of the story is shown unless shown initially, so that the twist of the story can be followed easily. Use the 'Compute the number of characters' button (which only works if javascript is supported by your browser) to get the lenght of the text before submitting it. An error message is given if the text is longer than the upper limit (both javascript and cgi), but the text remains. Edit it down to a suitable size.

It is possible to download plain text files, but binary files (such as MS Word are not supported).

  • Click on 'Browse'.
  • Select a file name in the file selctor, and click on 'OK'.
  • The file is now shown in the text field.
  • Edit the text, if required.
Uploading is done with a click on the 'Send' button.

It is possible to submit a new proposal for the same part of the story. The old text is shown initially in the text field. Note that it will invalidate the old text.

All submited text is © the individual authors. They have granted us permission to show the stories, in whole or partially, in this system by sending it to us. All other use of the texts requires permission from the individual authors. END $h_help{"no write"} = < Siste del av historien blir vist hvis den ikke allerede er vist, slik at man kan følge nerven i historien. Bruk 'Beregn antall tegn' knappen (som kun virker om javascript støttes av browseren din) til å få lengden på teksten før den sendes inn. Hvis inntastet forslag til tekst er lengre enn tillatt maksimallengde får man en feilmelding (javascript og cgi), men teksten forsvinner ikke. Rediger den så ned til passende størrelse.

Det er også mulig å laste ned rene tekstfiler, men binærfiler (som f.eks. MS Word) er ikke støttet.

  • Klikk på 'Browse'.
  • Velg et filnavn i filvelgeren som dukker opp, og klikk 'OK'.
  • Filen er nå vist i inntastingsskjemaet.
  • Foreta eventuelle redigeringer.
Opplasting skjer ved å klikke på 'Send' knapppen.

Det er mulig å sende inn et nytt forslag til den samme delen av historien. Den gamle teksten vises da i inntastinsskjemaet. Merk at den nye teksten vil overskrive det gamle forslaget.

All innskrevet tekst er © de respektive forfatterne. Ved å sende oss teksten gis vi tillatelse retten til visning av historier i dette systemet, helt eller delvis. All annen utnyttelse av tekstene krever godkjennelse av enkeltforfatterne. END ## Voting ###################################################################### $h_help{"en vote"} = < The alternatives for the part that the editor has chosen for voting are shown. Click on the voting link for the alternative you wish to vote on.

Any former vote is shown. It is possible to vote again on the same part of a story, but the new vote will cancel the previous one. END $h_help{"no vote"} = < Her vises de forslagene til fortsettelse av historien som redaktøren har valgt ut. Klikk på avstemningslinken for den teksten du vil stemme på.

En eventuelt tidligere stemme vises. Det er mulig å stemme på nytt på en del til en historie. Den nye stemmen erstatter da den gamle. END ## Administration ############################################################## $h_help{"en adm"} = <Super usersEditors The editor for a story can be freely chosen among the registered users of the system on creation of a story (by a super user). The editor decides when a story goes from writing mode to voting mode, and selects the alternatives to vote over. The editor can terminate the voting at will, and can also stop (terminate) a story.

Note that stopping the voting for a story with registered votes will result in a winner, and the winning entry is added as a new part of the story. END $h_help{"no adm"} = <Superbrukere Superbrukere er spesielle brukere som har adgang til å opprette (legge inn) nye historier i systemet. De har ingen andre spesielle rettigheter, med mindre de eksplisitt er valgt som redaktør for en historie.

Redaktører

Når en historie opprettes (av en superbruker) kan man fritt velge hvem som skal være redaktør i mengden av registrerte brukere av systemet. Redaktøren bestemmer når historien går fra skrivemodus til avstemning, og velger ut hvilke alternativer som det kan stemmes over. Vedkommende bestemmer også når avstemningen skal avsluttes, og om en historie skal avsluttes (dvs. at det ikke blir lagt til mere tekst i den).

Merk at avslutning av stemmegivning for en historie med registrerte stemmer vil føre til at det vinnende forslaget bli lagt til som en ny del av historien. END ## Background ################################################################## $h_help{"en back"} = < It is a part of the spring 2000 indiw course at IFI. Our case is Futurama, but we chose to implement our system locally at IFI as they did not have a system in place.

The system is written as cgi-scripts in perl running on an Apache Web server, communicating with a MySQL database with perl's database independent DBI interface. The system uses a couple of javascript procedures, but it will function without problems from a browser without javascript support. END $h_help{"no back"} = < Det er en del av kurset indiw våren 2000 ved IFI. Vårt case er Futurama, men siden de ikke hadde et oppegående system da vi skulle sette i gang med vårt bidrag valgte vi å implementere historiesystemet lokalt på IFI.

Systemet er programmert som cgi-skripts i perl på en Apache Web-server, og kommuniserer mot en MySQL database via perls databaseuavhengige DBI grensesnitt. Systemet benyttet et par javascript-prosedyrer, men fungerer uten problemer fra en browser uten støtte for javascript. END $h_help{"en logout"} = <not required if you have logged in to the computer you are using, and have your own user configuration files!

The User ID is stored locally in your browser, and you should only need to remove it if you use a joint account, e.g. a cybercafé. This will prevent the next user from entering text with you as the writer.

Do you wish to remove the user ID, so that the next user of the account (computer) does not inherit your permissions? END $h_help{"no logout"} = <ikke nødvendig om du har logget deg inn på datamaskinen du bruker, og har dine egne konfigurasjonsfiler!

Bruker ID'en lagres lokalt i browseren din, og den eneste grunnen til at du skulle ha behov for å slette den er om du bruker en maskin (konto) som brukes av flere brukere, f.eks. en cybercafé. Dette forhindrer at neste bruker kan legge inn tekst med deg som avsender!

Ønsker du å slette bruker ID'en, slik at neste bruker av maskinen (kontoen) ikke arver rettighetene dine? END ################################################################################ my($topic) = $q->url_param("help") || "gen"; my(@topics) = ('gen', 'main', 'lang', 'col', 'reg', 'story', 'write', 'vote', 'adm', 'back', 'logout'); my(@links); foreach (@topics) { ($_ ne $topic) ? push(@links, $q->a({-href=>"help.cgi?help=$_"}, $h_topic{"$lang $_"})) : push(@links, $q->b($h_topic{"$lang $_"})); } print $q->p, join(" | ", @links), $q->p; @links = (); print $h_help{"$lang $topic"}; # Print the help text itself. # ################################################################################ push(@links, $q->a({-href=>"index.cgi"}, $i_main{$lang})); print $q->p, join(" | ", @links), $q->p; print bottom_line(), $q->end_html(); ################################################################################